summaryrefslogtreecommitdiffstats
path: root/Mac/Modules/Nav.c
blob: 9fbd2b0994fb6c72835b6ae5f4304049775dcdc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
/***********************************************************
Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
The Netherlands.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the names of Stichting Mathematisch
Centrum or CWI or Corporation for National Research Initiatives or
CNRI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.

While CWI is the initial source for this software, a modified version
is made available by the Corporation for National Research Initiatives
(CNRI) at the Internet address ftp://ftp.python.org.

STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

******************************************************************/

#include "Python.h"
#include "macglue.h"
#include "pymactoolbox.h"
#ifdef WITHOUT_FRAMEWORKS
#include <Navigation.h>
#else
#include <Carbon/Carbon.h>
#endif

static PyObject *ErrorObject;

static NavEventUPP my_eventProcUPP;
static NavPreviewUPP my_previewProcUPP;
static NavObjectFilterUPP my_filterProcUPP;

/* Callback functions */
static pascal void
my_eventProc(NavEventCallbackMessage callBackSelector,
			 NavCBRecPtr callBackParms,
			 NavCallBackUserData callbackUD)
{
	PyObject *dict = (PyObject *)callbackUD;
	PyObject *pyfunc;
	PyObject *rv;
	
	if (!dict) return;
	if ( (pyfunc = PyDict_GetItemString(dict, "eventProc")) == NULL ) {
		PyErr_Print();
		return;
	}
	if ( pyfunc == Py_None ) {
#if !TARGET_API_MAC_OSX
		/* Special case: give update events to the Python event handling code */
		if ( callBackSelector == kNavCBEvent && 
				callBackParms->eventData.eventDataParms.event->what == updateEvt)
			PyMac_HandleEvent(callBackParms->eventData.eventDataParms.event);
		/* Ignore others */
#endif
		return;
	}
	rv = PyObject_CallFunction(pyfunc, "ls#", (long)callBackSelector,
			(void *)callBackParms, sizeof(NavCBRec));
	if ( rv )
		Py_DECREF(rv);
	else {
		PySys_WriteStderr("Nav: exception in eventProc callback\n");
		PyErr_Print();
	}
}

static pascal Boolean
my_previewProc(NavCBRecPtr callBackParms,
			   NavCallBackUserData callbackUD)
{
	PyObject *dict = (PyObject *)callbackUD;
	PyObject *pyfunc;
	PyObject *rv;
	Boolean c_rv = false;
	
	if (!dict) return false;
	if ( (pyfunc = PyDict_GetItemString(dict, "previewProc")) == NULL ) {
		PyErr_Print();
		return false;
	}
	rv = PyObject_CallFunction(pyfunc, "s#", (void *)callBackParms, sizeof(NavCBRec));
	if ( rv ) {
		c_rv = PyObject_IsTrue(rv);
		Py_DECREF(rv);
	} else {
		PySys_WriteStderr("Nav: exception in previewProc callback\n");
		PyErr_Print();
	}
	return c_rv;
}

static pascal Boolean
my_filterProc(AEDesc *theItem, void *info,
			  NavCallBackUserData callbackUD,
			  NavFilterModes filterMode)
{
	PyObject *dict = (PyObject *)callbackUD;
	PyObject *pyfunc;
	PyObject *rv;
	Boolean c_rv = false;
	
	if (!dict) return false;
	if ( (pyfunc = PyDict_GetItemString(dict, "filterProc")) == NULL ) {
		PyErr_Print();
		return false;
	}
	rv = PyObject_CallFunction(pyfunc, "O&s#h",
		AEDesc_NewBorrowed, theItem, info, sizeof(NavFileOrFolderInfo), (short)filterMode);
	if ( rv ) {
		c_rv = PyObject_IsTrue(rv);
		Py_DECREF(rv);
	} else {
		PySys_WriteStderr("Nav: exception in filterProc callback\n");
		PyErr_Print();
	}
	return c_rv;
}

/* ----------------------------------------------------- */
static int
filldialogoptions(PyObject *d,
		AEDesc **defaultLocationP,
		NavDialogOptions *opt,
		NavEventUPP *eventProcP,
		NavPreviewUPP *previewProcP,
		NavObjectFilterUPP *filterProcP,
		NavTypeListHandle *typeListP,
		OSType *fileTypeP,
		OSType *fileCreatorP)
{
	int pos = 0;
	PyObject *key, *value;
	char *keystr;
	AEDesc *defaultLocation_storage;
	
	NavGetDefaultDialogOptions(opt);

	while ( PyDict_Next(d, &pos, &key, &value) ) {
		if ( !key || !value || !PyString_Check(key) ) {
			PyErr_SetString(ErrorObject, "DialogOption has non-string key");
			return 0;
		}
		keystr = PyString_AsString(key);
		if( strcmp(keystr, "defaultLocation") == 0 ) {
			if ( (defaultLocation_storage = PyMem_NEW(AEDesc, 1)) == NULL ) {
				PyErr_NoMemory();
				return 0;
			}
			if ( !PyArg_Parse(value, "O&", AEDesc_Convert, defaultLocation_storage) ) {
				PyMem_DEL(defaultLocation_storage);
				return 0;
			}
			*defaultLocationP = defaultLocation_storage;
		} else if( strcmp(keystr, "version") == 0 ) {
			if ( !PyArg_Parse(value, "h", &opt->version) )
				return 0;
		} else if( strcmp(keystr, "dialogOptionFlags") == 0 ) {
			if ( !PyArg_Parse(value, "l", &opt->dialogOptionFlags) )
				return 0;
		} else if( strcmp(keystr, "location") == 0 ) {
			if ( !PyArg_Parse(value, "O&", PyMac_GetPoint, &opt->location) )
				return 0;
		} else if( strcmp(keystr, "clientName") == 0 ) {
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->clientName) )
				return 0;
		} else if( strcmp(keystr, "windowTitle") == 0 ) {
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->windowTitle) )
				return 0;
		} else if( strcmp(keystr, "actionButtonLabel") == 0 ) {
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->actionButtonLabel) )
				return 0;
		} else if( strcmp(keystr, "cancelButtonLabel") == 0 ) {
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->cancelButtonLabel) )
				return 0;
		} else if( strcmp(keystr, "savedFileName") == 0 ) {
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->savedFileName) )
				return 0;
		} else if( strcmp(keystr, "message") == 0 ) {
			if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->message) )
				return 0;
		} else if( strcmp(keystr, "preferenceKey") == 0 ) {
			if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, &opt->preferenceKey) )
				return 0;
		} else if( strcmp(keystr, "popupExtension") == 0 ) {
			if ( !PyArg_Parse(value, "O&", ResObj_Convert, &opt->popupExtension) )
				return 0;
		} else if( eventProcP && strcmp(keystr, "eventProc") == 0 ) {
			*eventProcP = my_eventProcUPP;
		} else if( previewProcP && strcmp(keystr, "previewProc") == 0 ) {
			*previewProcP = my_previewProcUPP;
		} else if( filterProcP && strcmp(keystr, "filterProc") == 0 ) {
			*filterProcP = my_filterProcUPP;
		} else if( typeListP && strcmp(keystr, "typeList") == 0 ) {
			if ( !PyArg_Parse(value, "O&", ResObj_Convert, typeListP) )
				return 0;
		} else if( fileTypeP && strcmp(keystr, "fileType") == 0 ) {
			if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, fileTypeP) )
				return 0;
		} else if( fileCreatorP && strcmp(keystr, "fileCreator") == 0 ) {
			if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, fileCreatorP) )
				return 0;
		} else {
			PyErr_Format(ErrorObject, "Unknown DialogOption key: %s", keystr);
			return 0;
		}
	}
	return 1;
}

/* ----------------------------------------------------- */

/* Declarations for objects of type NavReplyRecord */

typedef struct {
	PyObject_HEAD
	NavReplyRecord itself;
} navrrobject;

static PyTypeObject Navrrtype;



/* ---------------------------------------------------------------- */

static char nav_NavTranslateFile__doc__[] =
"(NavTranslationOptions)->None"
;

static PyObject *
nav_NavTranslateFile(navrrobject *self, PyObject *args)
{
	NavTranslationOptions howToTranslate;
	OSErr err;

	if (!PyArg_ParseTuple(args, "l", &howToTranslate))
		return NULL;
	err = NavTranslateFile(&self->itself, howToTranslate);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	Py_INCREF(Py_None);
	return Py_None;
}

static char nav_NavCompleteSave__doc__[] =
"(NavTranslationOptions)->None"
;

static PyObject *
nav_NavCompleteSave(navrrobject *self, PyObject *args)
{
	NavTranslationOptions howToTranslate;
	OSErr err;

	if (!PyArg_ParseTuple(args, "l", &howToTranslate))
		return NULL;
	err = NavCompleteSave(&self->itself, howToTranslate);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	Py_INCREF(Py_None);
	return Py_None;
}


static struct PyMethodDef navrr_methods[] = {
 {"NavTranslateFile",	(PyCFunction)nav_NavTranslateFile,	METH_VARARGS,	nav_NavTranslateFile__doc__},
 {"NavCompleteSave",	(PyCFunction)nav_NavCompleteSave,	METH_VARARGS,	nav_NavCompleteSave__doc__},
	
	{NULL,		NULL}		/* sentinel */
};

/* ---------- */


static navrrobject *
newnavrrobject(NavReplyRecord *itself)
{
	navrrobject *self;
	
	self = PyObject_NEW(navrrobject, &Navrrtype);
	if (self == NULL)
		return NULL;
	self->itself = *itself;
	return self;
}


static void
navrr_dealloc(navrrobject *self)
{
	NavDisposeReply(&self->itself);
	PyObject_DEL(self);
}

static PyObject *
navrr_getattr(navrrobject *self, char *name)
{
	FSSpec fss;
	FSRef fsr;
	
	if( strcmp(name, "__members__") == 0 )
		return Py_BuildValue("ssssssssss", "version", "validRecord", "replacing",
			"isStationery", "translationNeeded", "selection", "selection_fsr",
			"fileTranslation", "keyScript", "saveFileName");
	if( strcmp(name, "version") == 0 )
		return Py_BuildValue("h", self->itself.version);
	if( strcmp(name, "validRecord") == 0 )
		return Py_BuildValue("l", (long)self->itself.validRecord);
	if( strcmp(name, "replacing") == 0 )
		return Py_BuildValue("l", (long)self->itself.replacing);
	if( strcmp(name, "isStationery") == 0 )
		return Py_BuildValue("l", (long)self->itself.isStationery);
	if( strcmp(name, "translationNeeded") == 0 )
		return Py_BuildValue("l", (long)self->itself.translationNeeded);
	if( strcmp(name, "selection") == 0 ) {
		SInt32 i, count;
		OSErr err;
		PyObject *rv, *rvitem;
		AEDesc desc;
		
		if ((err=AECountItems(&self->itself.selection, &count))) {
			PyErr_Mac(ErrorObject, err);
			return NULL;
		}
		if ( (rv=PyList_New(count)) == NULL )
			return NULL;
		for(i=0; i<count; i++) {
			desc.dataHandle = NULL;
			if ((err=AEGetNthDesc(&self->itself.selection, i+1, typeFSS, NULL, &desc))) {
				Py_DECREF(rv);
				PyErr_Mac(ErrorObject, err);
				return NULL;
			}
			if ((err=AEGetDescData(&desc, &fss, sizeof(FSSpec)))) {
				Py_DECREF(rv);
				PyErr_Mac(ErrorObject, err);
				return NULL;
			}
			rvitem = PyMac_BuildFSSpec(&fss);
			PyList_SetItem(rv, i, rvitem);
			AEDisposeDesc(&desc);
		}
		return rv;
	}
	if( strcmp(name, "selection_fsr") == 0 ) {
		SInt32 i, count;
		OSErr err;
		PyObject *rv, *rvitem;
		AEDesc desc;
		
		if ((err=AECountItems(&self->itself.selection, &count))) {
			PyErr_Mac(ErrorObject, err);
			return NULL;
		}
		if ( (rv=PyList_New(count)) == NULL )
			return NULL;
		for(i=0; i<count; i++) {
			desc.dataHandle = NULL;
			if ((err=AEGetNthDesc(&self->itself.selection, i+1, typeFSRef, NULL, &desc))) {
				Py_DECREF(rv);
				PyErr_Mac(ErrorObject, err);
				return NULL;
			}
			if ((err=AEGetDescData(&desc, &fsr, sizeof(FSRef)))) {
				Py_DECREF(rv);
				PyErr_Mac(ErrorObject, err);
				return NULL;
			}
			rvitem = PyMac_BuildFSRef(&fsr);
			PyList_SetItem(rv, i, rvitem);
			AEDisposeDesc(&desc);
		}
		return rv;
	}
	if( strcmp(name, "fileTranslation") == 0 )
		return ResObj_New((Handle)self->itself.fileTranslation);
	if( strcmp(name, "keyScript") == 0 )
		return Py_BuildValue("h", (short)self->itself.keyScript);
	if( strcmp(name, "saveFileName") == 0 )
		return Py_BuildValue("O&", CFStringRefObj_New, self->itself.saveFileName);


	return Py_FindMethod(navrr_methods, (PyObject *)self, name);
}

static int
navrr_setattr(navrrobject *self, char *name, PyObject *v)
{
	/* Set attribute 'name' to value 'v'. v==NULL means delete */
	
	/* XXXX Add your own setattr code here */
	return -1;
}

static char Navrrtype__doc__[] = 
"Record containing result of a Nav file selection call. Use dir() for member names."
;

static PyTypeObject Navrrtype = {
	PyObject_HEAD_INIT(&PyType_Type)
	0,				/*ob_size*/
	"Nav.NavReplyRecord",			/*tp_name*/
	sizeof(navrrobject),		/*tp_basicsize*/
	0,				/*tp_itemsize*/
	/* methods */
	(destructor)navrr_dealloc,	/*tp_dealloc*/
	(printfunc)0,		/*tp_print*/
	(getattrfunc)navrr_getattr,	/*tp_getattr*/
	(setattrfunc)navrr_setattr,	/*tp_setattr*/
	(cmpfunc)0,		/*tp_compare*/
	(reprfunc)0,		/*tp_repr*/
	0,			/*tp_as_number*/
	0,		/*tp_as_sequence*/
	0,		/*tp_as_mapping*/
	(hashfunc)0,		/*tp_hash*/
	(ternaryfunc)0,		/*tp_call*/
	(reprfunc)0,		/*tp_str*/

	/* Space for future expansion */
	0L,0L,0L,0L,
	Navrrtype__doc__ /* Documentation string */
};

/* End of code for NavReplyRecord objects */
		
/* ----------------------------------------------------- */

static char nav_NavGetFile__doc__[] =
"(DialogOptions dict or kwargs+defaultLocation,eventProc,previewProc,filterProc,typeList) -> NavReplyRecord"
;

static PyObject *
nav_NavGetFile(PyObject *self, PyObject *args, PyObject *kw)
{
	PyObject *dict;
	AEDesc	*defaultLocation = NULL;
	NavReplyRecord reply;
	NavDialogOptions dialogOptions;
	NavEventUPP eventProc = NULL;
	NavPreviewUPP previewProc = NULL;
	NavObjectFilterUPP filterProc = NULL;
	NavTypeListHandle typeList = NULL;
	OSErr err;

	if ( kw && PyObject_IsTrue(kw) ) {
		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
			return NULL;
		dict = kw;
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
		return NULL;
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, &previewProc, &filterProc, &typeList, NULL, NULL))
		return NULL;
	err = NavGetFile(defaultLocation, &reply, &dialogOptions,
			eventProc, previewProc, filterProc, typeList, (void *)dict);
	PyMem_DEL(defaultLocation);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return (PyObject *)newnavrrobject(&reply);
}

static char nav_NavPutFile__doc__[] =
"(DialogOptions dict or kwargs+defaultLocation,eventProc,fileCreator,fileType) -> NavReplyRecord"
;

static PyObject *
nav_NavPutFile(PyObject *self, PyObject *args, PyObject *kw)
{
	PyObject *dict;
	AEDesc	*defaultLocation = NULL;
	NavReplyRecord reply;
	NavDialogOptions dialogOptions;
	NavEventUPP eventProc = NULL;
	OSType fileType;
	OSType fileCreator;
	OSErr err;

	if ( kw && PyObject_IsTrue(kw) ) {
		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
			return NULL;
		dict = kw;
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
		return NULL;
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, NULL, NULL, &fileType, &fileCreator))
		return NULL;
	err = NavPutFile(defaultLocation, &reply, &dialogOptions,
			eventProc, fileType, fileCreator, (void *)dict);
	PyMem_DEL(defaultLocation);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return (PyObject *)newnavrrobject(&reply);
}

static char nav_NavAskSaveChanges__doc__[] =
"(NavAskSaveChangesAction, DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult"

;

static PyObject *
nav_NavAskSaveChanges(PyObject *self, PyObject *args, PyObject *kw)
{
	PyObject *dict;
	NavDialogOptions dialogOptions;
	NavAskSaveChangesAction action;
	NavAskSaveChangesResult reply;
	NavEventUPP eventProc = NULL;
	OSErr err;

	if ( kw && PyObject_IsTrue(kw) ) {
		if (!PyArg_ParseTuple(args, "l", &action))
			return NULL;
		dict = kw;
	} else if (!PyArg_ParseTuple(args, "lO!", &action, &PyDict_Type, &dict))
		return NULL;
	if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
		return NULL;
	err = NavAskSaveChanges(&dialogOptions, action, &reply, eventProc, (void *)dict);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return Py_BuildValue("l", (long)reply);
}

static char nav_NavCustomAskSaveChanges__doc__[] =
"(DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult"
;

static PyObject *
nav_NavCustomAskSaveChanges(PyObject *self, PyObject *args, PyObject *kw)
{
	PyObject *dict;
	NavDialogOptions dialogOptions;
	NavAskSaveChangesResult reply;
	NavEventUPP eventProc = NULL;
	OSErr err;

	if ( kw && PyObject_IsTrue(kw) ) {
		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
			return NULL;
		dict = kw;
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
		return NULL;
	if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
		return NULL;
	err = NavCustomAskSaveChanges(&dialogOptions, &reply, eventProc, (void *)dict);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return Py_BuildValue("l", (long)reply);
}

static char nav_NavAskDiscardChanges__doc__[] =
"(DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult"
;

static PyObject *
nav_NavAskDiscardChanges(PyObject *self, PyObject *args, PyObject *kw)
{
	PyObject *dict;
	NavDialogOptions dialogOptions;
	NavAskSaveChangesResult reply;
	NavEventUPP eventProc = NULL;
	OSErr err;

	if ( kw && PyObject_IsTrue(kw) ) {
		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
			return NULL;
		dict = kw;
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
		return NULL;
	if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
		return NULL;
	err = NavAskDiscardChanges(&dialogOptions, &reply, eventProc, (void *)dict);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return Py_BuildValue("l", (long)reply);
}

static char nav_NavChooseFile__doc__[] =
"(DialogOptions dict or kwargs+defaultLocation,eventProc,previewProc,filterProc,typeList) -> NavReplyRecord"
;

static PyObject *
nav_NavChooseFile(PyObject *self, PyObject *args, PyObject *kw)
{
	PyObject *dict;
	AEDesc	*defaultLocation = NULL;
	NavReplyRecord reply;
	NavDialogOptions dialogOptions;
	NavEventUPP eventProc = NULL;
	NavPreviewUPP previewProc = NULL;
	NavObjectFilterUPP filterProc = NULL;
	NavTypeListHandle typeList = NULL;
	OSErr err;

	if ( kw && PyObject_IsTrue(kw) ) {
		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
			return NULL;
		dict = kw;
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
		return NULL;
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, &previewProc, &filterProc, &typeList, NULL, NULL))
		return NULL;
	err = NavChooseFile(defaultLocation, &reply, &dialogOptions,
			eventProc, previewProc, filterProc, typeList, (void *)dict);
	PyMem_DEL(defaultLocation);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return (PyObject *)newnavrrobject(&reply);
}

static char nav_NavChooseFolder__doc__[] =
"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord"
;

static PyObject *
nav_NavChooseFolder(PyObject *self, PyObject *args, PyObject *kw)
{
	PyObject *dict;
	AEDesc	*defaultLocation = NULL;
	NavReplyRecord reply;
	NavDialogOptions dialogOptions;
	NavEventUPP eventProc = NULL;
	NavObjectFilterUPP filterProc = NULL;
	OSErr err;

	if ( kw && PyObject_IsTrue(kw) ) {
		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
			return NULL;
		dict = kw;
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
		return NULL;
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL))
		return NULL;
	err = NavChooseFolder(defaultLocation, &reply, &dialogOptions,
			eventProc, filterProc, (void *)dict);
	PyMem_DEL(defaultLocation);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return (PyObject *)newnavrrobject(&reply);
}

static char nav_NavChooseVolume__doc__[] =
"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord"
;

static PyObject *
nav_NavChooseVolume(PyObject *self, PyObject *args, PyObject *kw)
{
	PyObject *dict;
	AEDesc	*defaultLocation = NULL;
	NavReplyRecord reply;
	NavDialogOptions dialogOptions;
	NavEventUPP eventProc = NULL;
	NavObjectFilterUPP filterProc = NULL;
	OSErr err;

	if ( kw && PyObject_IsTrue(kw) ) {
		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
			return NULL;
		dict = kw;
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
		return NULL;
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL))
		return NULL;
	err = NavChooseVolume(defaultLocation, &reply, &dialogOptions,
			eventProc, filterProc, (void *)dict);
	PyMem_DEL(defaultLocation);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return (PyObject *)newnavrrobject(&reply);
}

static char nav_NavChooseObject__doc__[] =
"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord"
;

static PyObject *
nav_NavChooseObject(PyObject *self, PyObject *args, PyObject *kw)
{
	PyObject *dict;
	AEDesc	*defaultLocation = NULL;
	NavReplyRecord reply;
	NavDialogOptions dialogOptions;
	NavEventUPP eventProc = NULL;
	NavObjectFilterUPP filterProc = NULL;
	OSErr err;

	if ( kw && PyObject_IsTrue(kw) ) {
		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
			return NULL;
		dict = kw;
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
		return NULL;
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL))
		return NULL;
	err = NavChooseObject(defaultLocation, &reply, &dialogOptions,
			eventProc, filterProc, (void *)dict);
	PyMem_DEL(defaultLocation);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return (PyObject *)newnavrrobject(&reply);
}

static char nav_NavNewFolder__doc__[] =
"(DialogOptions dict or kwargs+defaultLocation,eventProc) -> NavReplyRecord"
;

static PyObject *
nav_NavNewFolder(PyObject *self, PyObject *args, PyObject *kw)
{
	PyObject *dict;
	AEDesc	*defaultLocation = NULL;
	NavReplyRecord reply;
	NavDialogOptions dialogOptions;
	NavEventUPP eventProc = NULL;
	OSErr err;

	if ( kw && PyObject_IsTrue(kw) ) {
		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
			return NULL;
		dict = kw;
	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
		return NULL;
	if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL))
		return NULL;
	err = NavNewFolder(defaultLocation, &reply, &dialogOptions, eventProc, (void *)dict);
	PyMem_DEL(defaultLocation);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return (PyObject *)newnavrrobject(&reply);
}

#if 0
/* XXXX I don't know what to do with the void * argument */
static char nav_NavCustomControl__doc__[] =
""
;


static PyObject *
nav_NavCustomControl(PyObject *self, PyObject *args)
{

	if (!PyArg_ParseTuple(args, ""))
		return NULL;
	Py_INCREF(Py_None);
	return Py_None;
}
#endif

static char nav_NavServicesCanRun__doc__[] =
"()->int"
;

static PyObject *
nav_NavServicesCanRun(PyObject *self, PyObject *args)
{
	Boolean rv;
	if (!PyArg_ParseTuple(args, ""))
		return NULL;
	rv = NavServicesCanRun();
	return Py_BuildValue("l", (long)rv);
}

static char nav_NavServicesAvailable__doc__[] =
"()->int"
;

static PyObject *
nav_NavServicesAvailable(PyObject *self, PyObject *args)
{
	Boolean rv;
	
	if (!PyArg_ParseTuple(args, ""))
		return NULL;
	rv = NavServicesAvailable();
	return Py_BuildValue("l", (long)rv);
}
/* XX */
static char nav_NavLoad__doc__[] =
"()->None"
;

static PyObject *
nav_NavLoad(PyObject *self, PyObject *args)
{

	if (!PyArg_ParseTuple(args, ""))
		return NULL;
	NavLoad();
	Py_INCREF(Py_None);
	return Py_None;
}

static char nav_NavUnload__doc__[] =
"()->None"
;

static PyObject *
nav_NavUnload(PyObject *self, PyObject *args)
{

	if (!PyArg_ParseTuple(args, ""))
		return NULL;
	NavUnload();
	Py_INCREF(Py_None);
	return Py_None;
}

static char nav_NavLibraryVersion__doc__[] =
"()->int"
;

static PyObject *
nav_NavLibraryVersion(PyObject *self, PyObject *args)
{
	UInt32 rv;
	
	if (!PyArg_ParseTuple(args, ""))
		return NULL;
	rv = NavLibraryVersion();
	return Py_BuildValue("l", (long)rv);
}

static char nav_NavGetDefaultDialogOptions__doc__[] =
"()->dict\nPass dict or keyword args with same names to other calls."
;

static PyObject *
nav_NavGetDefaultDialogOptions(PyObject *self, PyObject *args)
{
	NavDialogOptions dialogOptions;
	OSErr err;
	
	err = NavGetDefaultDialogOptions(&dialogOptions);
	if ( err ) {
		PyErr_Mac(ErrorObject, err);
		return NULL;
	}
	return Py_BuildValue("{s:h,s:l,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&}",
		"version", dialogOptions.version,
		"dialogOptionFlags", dialogOptions.dialogOptionFlags,
		"location", PyMac_BuildPoint, dialogOptions.location,
		"clientName", PyMac_BuildStr255, &dialogOptions.clientName,
		"windowTitle", PyMac_BuildStr255, &dialogOptions.windowTitle,
		"actionButtonLabel", PyMac_BuildStr255, &dialogOptions.actionButtonLabel,
		"cancelButtonLabel", PyMac_BuildStr255, &dialogOptions.cancelButtonLabel,
		"savedFileName", PyMac_BuildStr255, &dialogOptions.savedFileName,
		"message", PyMac_BuildStr255, &dialogOptions.message,
		"preferenceKey", PyMac_BuildOSType, dialogOptions.preferenceKey,
		"popupExtension", OptResObj_New, dialogOptions.popupExtension);
}

/* List of methods defined in the module */

static struct PyMethodDef nav_methods[] = {
	{"NavGetFile",	(PyCFunction)nav_NavGetFile,	METH_VARARGS|METH_KEYWORDS,	nav_NavGetFile__doc__},
 {"NavPutFile",	(PyCFunction)nav_NavPutFile,	METH_VARARGS|METH_KEYWORDS,	nav_NavPutFile__doc__},
 {"NavAskSaveChanges",	(PyCFunction)nav_NavAskSaveChanges,	METH_VARARGS|METH_KEYWORDS,	nav_NavAskSaveChanges__doc__},
 {"NavCustomAskSaveChanges",	(PyCFunction)nav_NavCustomAskSaveChanges,	METH_VARARGS|METH_KEYWORDS,	nav_NavCustomAskSaveChanges__doc__},
 {"NavAskDiscardChanges",	(PyCFunction)nav_NavAskDiscardChanges,	METH_VARARGS|METH_KEYWORDS,	nav_NavAskDiscardChanges__doc__},
 {"NavChooseFile",	(PyCFunction)nav_NavChooseFile,	METH_VARARGS|METH_KEYWORDS,	nav_NavChooseFile__doc__},
 {"NavChooseFolder",	(PyCFunction)nav_NavChooseFolder,	METH_VARARGS|METH_KEYWORDS,	nav_NavChooseFolder__doc__},
 {"NavChooseVolume",	(PyCFunction)nav_NavChooseVolume,	METH_VARARGS|METH_KEYWORDS,	nav_NavChooseVolume__doc__},
 {"NavChooseObject",	(PyCFunction)nav_NavChooseObject,	METH_VARARGS|METH_KEYWORDS,	nav_NavChooseObject__doc__},
 {"NavNewFolder",	(PyCFunction)nav_NavNewFolder,	METH_VARARGS|METH_KEYWORDS,	nav_NavNewFolder__doc__},
#if 0
 {"NavCustomControl",	(PyCFunction)nav_NavCustomControl,	METH_VARARGS,	nav_NavCustomControl__doc__},
#endif
 {"NavServicesCanRun",	(PyCFunction)nav_NavServicesCanRun,	METH_VARARGS,	nav_NavServicesCanRun__doc__},
 {"NavServicesAvailable",	(PyCFunction)nav_NavServicesAvailable,	METH_VARARGS,	nav_NavServicesAvailable__doc__},
 {"NavLoad",	(PyCFunction)nav_NavLoad,	METH_VARARGS,	nav_NavLoad__doc__},
 {"NavUnload",	(PyCFunction)nav_NavUnload,	METH_VARARGS,	nav_NavUnload__doc__},
 {"NavLibraryVersion",	(PyCFunction)nav_NavLibraryVersion,	METH_VARARGS,	nav_NavLibraryVersion__doc__},
 {"NavGetDefaultDialogOptions",	(PyCFunction)nav_NavGetDefaultDialogOptions,	METH_VARARGS,	nav_NavGetDefaultDialogOptions__doc__},
	{NULL,	 (PyCFunction)NULL, 0, NULL}		/* sentinel */
};


/* Initialization function for the module (*must* be called initNav) */

static char Nav_module_documentation[] = 
"Interface to Navigation Services\n"
"Most calls accept a NavDialogOptions dictionary or keywords with the same names, pass {}\n"
"if you want the default options.\n"
"Use NavGetDefaultDialogOptions() to find out common option names.\n"
"See individual docstrings for additional keyword args/dictentries supported by each call.\n"
"Pass None as eventProc to get movable-modal dialogs that process updates through the standard Python mechanism."
;

void
initNav(void)
{
	PyObject *m, *d;

	/* Test that we have NavServices */
	if ( !NavServicesAvailable() ) {
		PyErr_SetString(PyExc_ImportError, "Navigation Services not available");
		return;
	}
	/* Create the module and add the functions */
	m = Py_InitModule4("Nav", nav_methods,
		Nav_module_documentation,
		(PyObject*)NULL,PYTHON_API_VERSION);

	/* Add some symbolic constants to the module */
	d = PyModule_GetDict(m);
	ErrorObject = PyString_FromString("Nav.error");
	PyDict_SetItemString(d, "error", ErrorObject);

	/* XXXX Add constants here */
	
	/* Set UPPs */
	my_eventProcUPP = NewNavEventUPP(my_eventProc);
	my_previewProcUPP = NewNavPreviewUPP(my_previewProc);
	my_filterProcUPP = NewNavObjectFilterUPP(my_filterProc);
	
}

avaScriptCore/wtf/OwnPtr.h?id=fb6775d423f1ebe7e624951edf39d79ca0433d4a&id2=9c7c859647771d5d2fa466b0a3ff9d408edecd38'>src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtr.h93
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtrCommon.h58
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/PassOwnPtr.h177
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/PassRefPtr.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h131
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/PtrAndFlags.h53
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.cpp47
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.h8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumberSeed.h9
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/RefCounted.h35
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/RetainPtr.h11
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/StdLibExtras.h25
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/StringExtras.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/TCPageMap.h33
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.cpp56
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.h8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecific.h59
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecificWin.cpp17
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Threading.cpp24
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h84
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingGtk.cpp244
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingNone.cpp7
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp139
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingWin.cpp355
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.cpp120
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.h339
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/VMTags.h55
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h25
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/VectorTraits.h19
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.cpp900
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.h3
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/qt/MainThreadQt.cpp5
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/qt/ThreadingQt.cpp (renamed from src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingQt.cpp)20
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/unicode/Unicode.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp214
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h238
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h69
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h11
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/unicode/qt4/UnicodeQt4.h17
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexCompiler.cpp728
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexCompiler.h45
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.cpp1638
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.h337
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.cpp1390
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.h91
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexParser.h854
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexPattern.h356
-rw-r--r--src/3rdparty/webkit/VERSION4
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog55084
-rw-r--r--src/3rdparty/webkit/WebCore/DerivedSources.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/Debugger.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/DebuggerActivation.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/DebuggerCallFrame.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/interpreter/CallFrame.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/interpreter/Interpreter.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/jit/JITCode.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/masm/X86Assembler.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/Parser.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/SourceCode.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/SourceProvider.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/pcre/pcre.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/Profile.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/ProfileNode.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/Profiler.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ArgList.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ArrayPrototype.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/BooleanObject.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ByteArray.h1
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CallData.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Collector.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CollectorHeapIterator.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Completion.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ConstructData.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/DateInstance.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/DateMath.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Error.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/FunctionConstructor.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/FunctionPrototype.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Identifier.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/InitializeThreading.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/InternalFunction.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSArray.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSByteArray.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSFunction.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSGlobalData.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSGlobalObject.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSLock.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSNumberCell.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSObject.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSString.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSValue.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Lookup.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ObjectPrototype.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Operations.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PropertyMap.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PropertyNameArray.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Protect.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PrototypeFunction.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringObject.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringObjectThatMasqueradesAsUndefined.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringPrototype.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Structure.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/SymbolTable.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/UString.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wrec/WREC.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ASCIICType.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/AlwaysInline.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Assertions.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ByteArray.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/CrossThreadRefCounted.h1
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/CurrentTime.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Deque.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/DisallowCType.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/FastMalloc.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Forward.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/GetPtr.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashCountedSet.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashFunctions.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashMap.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashSet.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashTable.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashTraits.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ListHashSet.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ListRefPtr.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Locker.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MainThread.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MathExtras.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MessageQueue.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Noncopyable.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/NotFound.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnArrayPtr.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnFastMallocPtr.h1
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnPtr.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnPtrCommon.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PassOwnPtr.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PassRefPtr.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Platform.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PtrAndFlags.h5
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RandomNumber.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefCounted.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefCountedLeakCounter.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefPtr.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RetainPtr.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/StdLibExtras.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/StringExtras.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ThreadSpecific.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Threading.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/TypeTraits.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/UnusedParam.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/VMTags.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Vector.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/VectorTraits.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/dtoa.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/Collator.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/UTF8.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/Unicode.h3
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/icu/UnicodeIcu.h3
-rw-r--r--src/3rdparty/webkit/WebCore/Info.plist2
-rw-r--r--src/3rdparty/webkit/WebCore/Resources/panIcon.pngbin0 -> 175 bytes-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.LP64.exp12
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.NPAPI.exp7
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.VideoProxy.exp4
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.order34327
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.pro531
-rw-r--r--src/3rdparty/webkit/WebCore/WebCorePrefix.h10
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AXObjectCache.cpp (renamed from src/3rdparty/webkit/WebCore/page/AXObjectCache.cpp)138
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AXObjectCache.h (renamed from src/3rdparty/webkit/WebCore/page/AXObjectCache.h)29
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGrid.cpp154
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGrid.h60
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridCell.cpp96
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridCell.h55
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridRow.cpp75
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridRow.h50
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityImageMapLink.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityImageMapLink.cpp)10
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityImageMapLink.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityImageMapLink.h)3
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityList.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityList.cpp)18
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityList.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityList.h)6
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBox.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityListBox.cpp)20
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBox.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityListBox.h)0
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBoxOption.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityListBoxOption.cpp)6
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBoxOption.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityListBoxOption.h)0
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityObject.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityObject.cpp)35
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityObject.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityObject.h)16
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityRenderObject.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityRenderObject.cpp)496
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityRenderObject.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityRenderObject.h)16
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTable.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityTable.cpp)46
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTable.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityTable.h)17
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableCell.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityTableCell.cpp)25
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableCell.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityTableCell.h)10
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableColumn.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityTableColumn.cpp)26
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableColumn.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityTableColumn.h)0
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityTableHeaderContainer.cpp)0
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableHeaderContainer.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityTableHeaderContainer.h)0
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableRow.cpp (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityTableRow.cpp)20
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableRow.h (renamed from src/3rdparty/webkit/WebCore/page/AccessibilityTableRow.h)8
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/qt/AccessibilityObjectQt.cpp (renamed from src/3rdparty/webkit/WebCore/page/qt/AccessibilityObjectQt.cpp)0
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/GCController.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSAttrCustom.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.h6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCDATASectionCustom.cpp43
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCSSRuleCustom.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCSSValueCustom.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp200
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSClipboardCustom.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSConsoleCustom.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCoordinatesCustom.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.h4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.h4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.h4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.h5
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.h2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.h2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMApplicationCacheCustom.cpp64
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.cpp167
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h53
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.h35
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMStringListCustom.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp631
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.h37
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp461
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.h51
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.h14
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDatabaseCustom.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDocumentCustom.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSElementCustom.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventCustom.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.cpp281
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.h98
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.h3
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventTargetBase.h92
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSGeolocationCustom.cpp49
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAllCollection.h2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAppletElementCustom.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCollectionCustom.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLDocumentCustom.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLEmbedElementCustom.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFormElementCustom.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameSetElementCustom.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLIFrameElementCustom.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLInputElementCustom.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLObjectElementCustom.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLSelectElementCustom.h2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHistoryCustom.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.h6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSImageDataCustom.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.h6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.h6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSInspectorControllerCustom.cpp298
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSJavaScriptCallFrameCustom.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.cpp129
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.h56
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSLocationCustom.cpp141
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSMessageChannelConstructor.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSMessageChannelConstructor.h7
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSMessagePortCustom.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSMimeTypeArrayCustom.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNamedNodeMapCustom.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNamedNodesCollection.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNamedNodesCollection.h10
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNavigatorCustom.cpp86
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeCustom.cpp77
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeFilterCondition.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeFilterCondition.h6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeFilterCustom.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeIteratorCustom.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeListCustom.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSOptionConstructor.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSOptionConstructor.h6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSPluginArrayCustom.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSPluginCustom.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSPluginElementFunctions.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSPluginElementFunctions.h6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.cpp49
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.h18
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSRGBColor.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSRGBColor.h8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSQLResultSetRowListCustom.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSQLTransactionCustom.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSVGElementInstanceCustom.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSVGLengthCustom.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSVGMatrixCustom.cpp84
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSVGPODTypeWrapper.h1
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSVGPathSegCustom.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSVGPathSegListCustom.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSVGPointListCustom.cpp36
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSVGTransformListCustom.cpp36
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSStorageCustom.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSStyleSheetCustom.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSStyleSheetListCustom.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSTextCustom.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSTreeWalkerCustom.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWebKitCSSMatrixConstructor.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWebKitCSSMatrixConstructor.h46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWebKitPointConstructor.cpp (renamed from src/3rdparty/webkit/WebCore/bindings/js/JSEventTargetNodeCustom.cpp)59
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWebKitPointConstructor.h46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWorkerConstructor.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWorkerContextBase.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWorkerContextBase.h6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWorkerContextCustom.cpp97
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWorkerCustom.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSXMLHttpRequestConstructor.h7
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp87
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSXMLHttpRequestUploadCustom.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSXSLTProcessorConstructor.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSXSLTProcessorCustom.cpp46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScheduledAction.cpp126
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScheduledAction.h29
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptCachedFrameData.cpp (renamed from src/3rdparty/webkit/WebCore/bindings/js/ScriptCachedPageData.cpp)22
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptCachedFrameData.h (renamed from src/3rdparty/webkit/WebCore/bindings/js/ScriptCachedPageData.h)17
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptCallFrame.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptCallFrame.h2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptCallStack.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptController.cpp133
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptController.h21
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptControllerMac.mm14
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptEventListener.cpp90
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptEventListener.h49
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptFunctionCall.cpp176
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptFunctionCall.h77
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptObject.cpp154
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptObject.h72
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptObjectQuarantine.cpp122
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptObjectQuarantine.h59
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptState.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptState.h9
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptString.h5
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptValue.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptValue.h12
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/WorkerScriptController.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/WorkerScriptController.h4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/CodeGenerator.pm8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorCOM.pm13
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorJS.pm331
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorObjC.pm464
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/InFilesParser.pm14
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/IdentifierRep.cpp111
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/IdentifierRep.h74
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/NP_jsobject.cpp109
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/c/c_class.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/c/c_class.h1
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/c/c_instance.cpp84
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/c/c_instance.h34
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/c/c_runtime.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/c/c_runtime.h9
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/c/c_utility.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/c/c_utility.h22
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_class.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_class.h4
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_instance.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_instance.h14
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_jsobject.h7
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_jsobject.mm44
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_objc.mm2
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_runtime.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_runtime.h16
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_utility.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_utility.h4
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/npapi.h49
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/npruntime.cpp96
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_class.h2
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp104
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.h23
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp139
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.h29
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime.h50
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_array.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_array.h14
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_method.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_method.h8
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_object.cpp51
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_object.h21
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/testbindings.mm2
-rw-r--r--src/3rdparty/webkit/WebCore/config.h24
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSCanvasValue.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSCanvasValue.h5
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSCharsetRule.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSComputedStyleDeclaration.cpp346
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSComputedStyleDeclaration.h1
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSCursorImageValue.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSFontFaceSource.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSFontSelector.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSGrammar.y27
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSMutableStyleDeclaration.cpp241
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSMutableStyleDeclaration.h4
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSParser.cpp253
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSParser.h12
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSParserValues.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSParserValues.h2
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPrimitiveValue.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPrimitiveValue.h2
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPrimitiveValue.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPrimitiveValueMappings.h25
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPropertyLonghand.cpp213
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPropertyLonghand.h53
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPropertyNames.in15
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSRule.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSSelector.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSSelector.h4
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSSelectorList.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSStyleDeclaration.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSStyleDeclaration.h1
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSStyleSelector.cpp832
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSStyleSelector.h19
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSStyleSheet.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSValue.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSValueKeywords.in15
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSVariablesDeclaration.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSVariablesDeclaration.h2
-rw-r--r--src/3rdparty/webkit/WebCore/css/MediaFeatureNames.h4
-rw-r--r--src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp65
-rw-r--r--src/3rdparty/webkit/WebCore/css/MediaQueryExp.h6
-rw-r--r--src/3rdparty/webkit/WebCore/css/RGBColor.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/css/SVGCSSComputedStyleDeclaration.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/css/SVGCSSParser.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/css/SVGCSSStyleSelector.cpp121
-rw-r--r--src/3rdparty/webkit/WebCore/css/StyleSheet.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/css/WebKitCSSMatrix.cpp186
-rw-r--r--src/3rdparty/webkit/WebCore/css/WebKitCSSMatrix.h159
-rw-r--r--src/3rdparty/webkit/WebCore/css/WebKitCSSMatrix.idl86
-rw-r--r--src/3rdparty/webkit/WebCore/css/WebKitCSSTransformValue.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/css/WebKitCSSTransformValue.h12
-rw-r--r--src/3rdparty/webkit/WebCore/css/WebKitCSSTransformValue.idl10
-rw-r--r--src/3rdparty/webkit/WebCore/css/html4.css7
-rw-r--r--src/3rdparty/webkit/WebCore/css/maketokenizer7
-rw-r--r--src/3rdparty/webkit/WebCore/css/mediaControls.css23
-rw-r--r--src/3rdparty/webkit/WebCore/css/mediaControlsChromium.css165
-rw-r--r--src/3rdparty/webkit/WebCore/css/mediaControlsQT.css133
-rw-r--r--src/3rdparty/webkit/WebCore/css/themeWin.css38
-rw-r--r--src/3rdparty/webkit/WebCore/css/themeWinQuirks.css2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Attr.h2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Attr.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Attribute.h4
-rw-r--r--src/3rdparty/webkit/WebCore/dom/CharacterData.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/dom/CharacterData.h8
-rw-r--r--src/3rdparty/webkit/WebCore/dom/CharacterData.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/CheckedRadioButtons.cpp86
-rw-r--r--src/3rdparty/webkit/WebCore/dom/CheckedRadioButtons.h (renamed from src/3rdparty/webkit/WebCore/rendering/RenderLegend.cpp)35
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ClassNames.h2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ClientRect.cpp (renamed from src/3rdparty/webkit/WebCore/dom/WorkerTask.cpp)16
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ClientRect.h59
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ClientRect.idl (renamed from src/3rdparty/webkit/WebCore/dom/WorkerTask.h)34
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ClientRectList.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ClientRectList.h57
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ClientRectList.idl38
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Clipboard.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ContainerNode.cpp217
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ContainerNode.h17
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DOMCoreException.idl9
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DOMImplementation.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DOMImplementation.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Document.cpp946
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Document.h209
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Document.idl45
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DocumentFragment.idl7
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DocumentMarker.h6
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Element.cpp281
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Element.h56
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Element.idl20
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ElementRareData.h13
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Event.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Event.h2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Event.idl10
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventException.idl5
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventListener.h21
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventListener.idl1
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventNames.h9
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventTarget.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventTarget.h8
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventTarget.idl6
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventTargetNode.cpp1166
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventTargetNode.h206
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventTargetNode.idl84
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ExceptionCode.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ExceptionCode.h8
-rw-r--r--src/3rdparty/webkit/WebCore/dom/InputElement.cpp304
-rw-r--r--src/3rdparty/webkit/WebCore/dom/InputElement.h123
-rw-r--r--src/3rdparty/webkit/WebCore/dom/KeyboardEvent.idl6
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessagePort.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessagePort.h21
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessagePort.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessagePortProxy.h54
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MouseEvent.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MouseEvent.h11
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MouseEvent.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MouseRelatedEvent.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MouseRelatedEvent.h11
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NamedAttrMap.cpp64
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NamedAttrMap.h74
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NamedMappedAttrMap.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NamedMappedAttrMap.h24
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NamedNodeMap.h65
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Node.cpp1349
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Node.h206
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Node.idl73
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NodeFilter.h1
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NodeIterator.h1
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NodeRareData.h12
-rw-r--r--src/3rdparty/webkit/WebCore/dom/OptionElement.cpp150
-rw-r--r--src/3rdparty/webkit/WebCore/dom/OptionElement.h78
-rw-r--r--src/3rdparty/webkit/WebCore/dom/OptionGroupElement.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/dom/OptionGroupElement.h (renamed from src/3rdparty/webkit/WebCore/dom/FormControlElement.h)22
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Position.cpp338
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Position.h121
-rw-r--r--src/3rdparty/webkit/WebCore/dom/PositionIterator.cpp110
-rw-r--r--src/3rdparty/webkit/WebCore/dom/PositionIterator.h22
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ProcessingInstruction.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/QualifiedName.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/dom/QualifiedName.h34
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Range.cpp110
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Range.h8
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Range.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/RangeBoundaryPoint.h116
-rw-r--r--src/3rdparty/webkit/WebCore/dom/RangeException.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/RegisteredEventListener.h22
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ScriptElement.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ScriptElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ScriptExecutionContext.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ScriptExecutionContext.h21
-rw-r--r--src/3rdparty/webkit/WebCore/dom/SelectElement.cpp928
-rw-r--r--src/3rdparty/webkit/WebCore/dom/SelectElement.h176
-rw-r--r--src/3rdparty/webkit/WebCore/dom/StyleElement.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/dom/StyledElement.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/dom/StyledElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Text.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Text.h1
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Tokenizer.h2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/TreeWalker.h1
-rw-r--r--src/3rdparty/webkit/WebCore/dom/WheelEvent.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/dom/WheelEvent.h6
-rw-r--r--src/3rdparty/webkit/WebCore/dom/WheelEvent.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizer.cpp80
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizer.h15
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizerLibxml2.cpp237
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp124
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizerScope.cpp68
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizerScope.h (renamed from src/3rdparty/webkit/WebCore/page/chromium/AccessibilityObjectWrapper.h)44
-rwxr-xr-xsrc/3rdparty/webkit/WebCore/dom/make_names.pl251
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ApplyStyleCommand.cpp385
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ApplyStyleCommand.h11
-rw-r--r--src/3rdparty/webkit/WebCore/editing/BreakBlockquoteCommand.cpp61
-rw-r--r--src/3rdparty/webkit/WebCore/editing/CompositeEditCommand.cpp158
-rw-r--r--src/3rdparty/webkit/WebCore/editing/CompositeEditCommand.h6
-rw-r--r--src/3rdparty/webkit/WebCore/editing/CreateLinkCommand.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/editing/DeleteButtonController.cpp112
-rw-r--r--src/3rdparty/webkit/WebCore/editing/DeleteButtonController.h4
-rw-r--r--src/3rdparty/webkit/WebCore/editing/DeleteSelectionCommand.cpp107
-rw-r--r--src/3rdparty/webkit/WebCore/editing/DeleteSelectionCommand.h8
-rw-r--r--src/3rdparty/webkit/WebCore/editing/EditCommand.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/editing/EditCommand.h14
-rw-r--r--src/3rdparty/webkit/WebCore/editing/Editor.cpp855
-rw-r--r--src/3rdparty/webkit/WebCore/editing/Editor.h38
-rw-r--r--src/3rdparty/webkit/WebCore/editing/EditorCommand.cpp103
-rw-r--r--src/3rdparty/webkit/WebCore/editing/FormatBlockCommand.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/editing/IndentOutdentCommand.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertLineBreakCommand.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertListCommand.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertListCommand.h7
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertParagraphSeparatorCommand.cpp128
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertTextCommand.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ModifySelectionListLevel.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/editing/MoveSelectionCommand.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/editing/RemoveCSSPropertyCommand.h1
-rw-r--r--src/3rdparty/webkit/WebCore/editing/RemoveFormatCommand.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/editing/RemoveNodeAttributeCommand.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/editing/RemoveNodeAttributeCommand.h1
-rw-r--r--src/3rdparty/webkit/WebCore/editing/RemoveNodePreservingChildrenCommand.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ReplaceNodeWithSpanCommand.cpp87
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ReplaceNodeWithSpanCommand.h62
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ReplaceSelectionCommand.cpp196
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ReplaceSelectionCommand.h11
-rw-r--r--src/3rdparty/webkit/WebCore/editing/SelectionController.cpp230
-rw-r--r--src/3rdparty/webkit/WebCore/editing/SelectionController.h28
-rw-r--r--src/3rdparty/webkit/WebCore/editing/SmartReplaceCF.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/editing/SplitElementCommand.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/editing/TextAffinity.h14
-rw-r--r--src/3rdparty/webkit/WebCore/editing/TextIterator.cpp136
-rw-r--r--src/3rdparty/webkit/WebCore/editing/TextIterator.h21
-rw-r--r--src/3rdparty/webkit/WebCore/editing/TypingCommand.cpp178
-rw-r--r--src/3rdparty/webkit/WebCore/editing/TypingCommand.h4
-rw-r--r--src/3rdparty/webkit/WebCore/editing/VisiblePosition.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/editing/VisiblePosition.h8
-rw-r--r--src/3rdparty/webkit/WebCore/editing/VisibleSelection.cpp (renamed from src/3rdparty/webkit/WebCore/editing/Selection.cpp)200
-rw-r--r--src/3rdparty/webkit/WebCore/editing/VisibleSelection.h (renamed from src/3rdparty/webkit/WebCore/editing/Selection.h)77
-rw-r--r--src/3rdparty/webkit/WebCore/editing/android/EditorAndroid.cpp (renamed from src/3rdparty/webkit/WebCore/platform/qt/SystemTimeQt.cpp)23
-rw-r--r--src/3rdparty/webkit/WebCore/editing/chromium/EditorChromium.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/editing/gtk/SelectionControllerGtk.cpp (renamed from src/3rdparty/webkit/WebCore/rendering/ListMarkerBox.cpp)38
-rw-r--r--src/3rdparty/webkit/WebCore/editing/htmlediting.cpp163
-rw-r--r--src/3rdparty/webkit/WebCore/editing/htmlediting.h13
-rw-r--r--src/3rdparty/webkit/WebCore/editing/markup.cpp190
-rw-r--r--src/3rdparty/webkit/WebCore/editing/qt/EditorQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/editing/visible_units.cpp469
-rw-r--r--src/3rdparty/webkit/WebCore/editing/visible_units.h3
-rw-r--r--src/3rdparty/webkit/WebCore/generated/ArrayPrototype.lut.h9
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSGrammar.cpp2361
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSGrammar.h231
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp1251
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.h359
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c2804
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.h412
-rw-r--r--src/3rdparty/webkit/WebCore/generated/DatePrototype.lut.h7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/Grammar.cpp1701
-rw-r--r--src/3rdparty/webkit/WebCore/generated/Grammar.h109
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLElementFactory.cpp546
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLElementFactory.h56
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLNames.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLNames.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSAttr.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSAttr.h35
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSBarInfo.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSBarInfo.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCDATASection.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCDATASection.h12
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSCharsetRule.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSCharsetRule.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSFontFaceRule.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSFontFaceRule.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSImportRule.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSImportRule.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSMediaRule.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSMediaRule.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSPageRule.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSPageRule.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSPrimitiveValue.cpp128
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSPrimitiveValue.h81
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSRule.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSRule.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.cpp114
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleRule.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleRule.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleSheet.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleSheet.h27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSValue.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSValue.h33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSValueList.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSValueList.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.cpp78
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSVariablesRule.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSVariablesRule.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasGradient.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasGradient.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasPattern.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasPattern.h9
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.cpp511
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.h197
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCharacterData.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCharacterData.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClientRect.cpp200
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClientRect.h78
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClientRectList.cpp222
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClientRectList.h84
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClipboard.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClipboard.h47
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSComment.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSComment.h11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSConsole.cpp109
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSConsole.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCoordinates.cpp174
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCoordinates.h91
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCounter.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCounter.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMApplicationCache.cpp219
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMApplicationCache.h79
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMCoreException.cpp116
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMCoreException.h64
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMImplementation.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMImplementation.h27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMParser.cpp36
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMParser.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMSelection.cpp231
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMSelection.h65
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMStringList.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMStringList.h27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp2765
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h1081
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMWindowBase.lut.h31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDatabase.cpp35
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDatabase.h28
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocument.cpp504
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocument.h179
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocumentFragment.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocumentFragment.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocumentType.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocumentType.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSElement.cpp331
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSElement.h129
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEntity.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEntity.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEntityReference.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEntityReference.h11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEvent.cpp124
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEvent.h91
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEventException.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEventException.h27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEventTargetNode.cpp944
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEventTargetNode.h162
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSFile.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSFile.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSFileList.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSFileList.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSGeolocation.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSGeolocation.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSGeoposition.cpp84
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSGeoposition.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAnchorElement.cpp106
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAnchorElement.h77
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAppletElement.cpp75
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAppletElement.h61
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAreaElement.cpp78
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAreaElement.h55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAudioElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAudioElement.h11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBRElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBRElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBaseElement.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBaseElement.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBaseFontElement.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBaseFontElement.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBlockquoteElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBlockquoteElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBodyElement.cpp96
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBodyElement.h43
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLButtonElement.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLButtonElement.h43
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLCanvasElement.cpp52
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLCanvasElement.h27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.cpp51
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.h33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDListElement.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDListElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDirectoryElement.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDirectoryElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDivElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDivElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDocument.cpp122
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDocument.h89
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLElement.cpp146
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLElement.h73
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLEmbedElement.cpp57
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLEmbedElement.h45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFieldSetElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFieldSetElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFontElement.cpp35
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFontElement.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.cpp90
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.h58
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFrameElement.cpp85
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFrameElement.h65
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFrameSetElement.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFrameSetElement.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHRElement.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHRElement.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHeadElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHeadElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHeadingElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHeadingElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHtmlElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHtmlElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLIFrameElement.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLIFrameElement.h63
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLImageElement.cpp110
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLImageElement.h75
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLInputElement.cpp207
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLInputElement.h122
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLIsIndexElement.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLIsIndexElement.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLIElement.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLIElement.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLabelElement.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLabelElement.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLegendElement.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLegendElement.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLinkElement.cpp70
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLinkElement.h51
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMapElement.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMapElement.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMarqueeElement.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMarqueeElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMediaElement.cpp319
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMediaElement.h113
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMenuElement.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMenuElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMetaElement.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMetaElement.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLModElement.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLModElement.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOListElement.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOListElement.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLObjectElement.cpp118
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLObjectElement.h89
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptGroupElement.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptGroupElement.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptionElement.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptionElement.h43
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptionsCollection.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptionsCollection.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLParagraphElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLParagraphElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLParamElement.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLParamElement.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLPreElement.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLPreElement.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLQuoteElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLQuoteElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLScriptElement.cpp57
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLScriptElement.h41
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.cpp120
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.h71
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLSourceElement.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLSourceElement.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLStyleElement.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLStyleElement.h27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableCaptionElement.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableCaptionElement.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableCellElement.cpp99
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableCellElement.h71
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableColElement.cpp52
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableColElement.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableElement.cpp138
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableElement.h83
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableRowElement.cpp70
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableRowElement.h45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableSectionElement.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableSectionElement.h39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTextAreaElement.cpp112
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTextAreaElement.h69
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTitleElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTitleElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLUListElement.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLUListElement.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLVideoElement.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLVideoElement.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHistory.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHistory.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSImageData.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSImageData.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSInspectorController.cpp773
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSInspectorController.h138
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSJavaScriptCallFrame.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSJavaScriptCallFrame.h42
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSKeyboardEvent.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSKeyboardEvent.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSLocation.cpp86
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSLocation.h85
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMediaError.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMediaError.h26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMediaList.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMediaList.h33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessageChannel.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessageChannel.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessageEvent.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessageEvent.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessagePort.cpp101
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessagePort.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMimeType.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMimeType.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.h27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMouseEvent.cpp105
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMouseEvent.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMutationEvent.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMutationEvent.h31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.cpp101
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNavigator.cpp69
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNavigator.h46
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNode.cpp1165
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNode.h224
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeFilter.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeFilter.h53
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeIterator.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeIterator.h39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeList.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeList.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNotation.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNotation.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSOverflowEvent.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSOverflowEvent.h27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPlugin.cpp57
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPlugin.h33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPluginArray.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPluginArray.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPositionError.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPositionError.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSProcessingInstruction.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSProcessingInstruction.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSProgressEvent.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSProgressEvent.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRGBColor.lut.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRange.cpp244
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRange.h91
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRangeException.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRangeException.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRect.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRect.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLError.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLError.h20
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLResultSet.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLResultSet.h22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLResultSetRowList.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLResultSetRowList.h24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLTransaction.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLTransaction.h20
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAElement.cpp107
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAElement.h53
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAltGlyphElement.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAltGlyphElement.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAngle.cpp75
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAngle.h47
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateColorElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateColorElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateTransformElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateTransformElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedAngle.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedAngle.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedBoolean.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedBoolean.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedEnumeration.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedEnumeration.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedInteger.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedInteger.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedLength.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedLength.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedLengthList.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedLengthList.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedNumber.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedNumber.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedNumberList.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedNumberList.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedPreserveAspectRatio.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedPreserveAspectRatio.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedRect.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedRect.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedString.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedString.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedTransformList.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedTransformList.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimationElement.cpp87
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimationElement.h35
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGCircleElement.cpp110
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGCircleElement.h55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGClipPathElement.cpp104
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGClipPathElement.h51
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGColor.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGColor.h31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGComponentTransferFunctionElement.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGComponentTransferFunctionElement.h43
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGCursorElement.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGCursorElement.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDefinitionSrcElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDefinitionSrcElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDefsElement.cpp101
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDefsElement.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDescElement.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDescElement.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDocument.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDocument.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElement.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElement.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementInstance.cpp624
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementInstance.h203
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementInstanceList.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementInstanceList.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementWrapperFactory.cpp184
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGEllipseElement.cpp113
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGEllipseElement.h57
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGException.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGException.h31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEBlendElement.cpp73
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEBlendElement.h51
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEColorMatrixElement.cpp71
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEColorMatrixElement.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEComponentTransferElement.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEComponentTransferElement.h31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFECompositeElement.cpp87
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFECompositeElement.h61
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDiffuseLightingElement.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDiffuseLightingElement.h39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDisplacementMapElement.cpp77
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDisplacementMapElement.h53
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDistantLightElement.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDistantLightElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFloodElement.cpp106
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFloodElement.h32
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncAElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncAElement.h9
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncBElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncBElement.h9
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncGElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncGElement.h9
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncRElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncRElement.h9
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEGaussianBlurElement.cpp62
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEGaussianBlurElement.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEImageElement.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEImageElement.h43
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEMergeElement.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEMergeElement.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEMergeNodeElement.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEMergeNodeElement.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEOffsetElement.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEOffsetElement.h35
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEPointLightElement.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEPointLightElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFESpecularLightingElement.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFESpecularLightingElement.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFESpotLightElement.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFESpotLightElement.h27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFETileElement.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFETileElement.h31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFETurbulenceElement.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFETurbulenceElement.h57
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFilterElement.cpp84
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFilterElement.h51
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceFormatElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceFormatElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceNameElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceNameElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceSrcElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceSrcElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceUriElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceUriElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGForeignObjectElement.cpp113
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGForeignObjectElement.h57
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGElement.cpp101
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGElement.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGlyphElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGlyphElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGradientElement.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGradientElement.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGHKernElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGHKernElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGImageElement.cpp119
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGImageElement.h61
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLength.cpp84
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLength.h63
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLengthList.cpp83
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLengthList.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLineElement.cpp113
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLineElement.h57
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLinearGradientElement.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLinearGradientElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMarkerElement.cpp103
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMarkerElement.h65
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMaskElement.cpp80
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMaskElement.h47
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMatrix.cpp189
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMatrix.h74
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMetadataElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMetadataElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMissingGlyphElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMissingGlyphElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGNumber.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGNumber.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGNumberList.cpp83
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGNumberList.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPaint.cpp64
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPaint.h41
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathElement.cpp390
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathElement.h103
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSeg.cpp69
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSeg.h61
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegArcAbs.cpp61
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegArcAbs.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegArcRel.cpp61
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegArcRel.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegClosePath.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegClosePath.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicAbs.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicAbs.h33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicRel.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicRel.h33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicSmoothAbs.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicSmoothAbs.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicSmoothRel.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicSmoothRel.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticAbs.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticAbs.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticRel.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticRel.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticSmoothAbs.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticSmoothRel.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticSmoothRel.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoAbs.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoAbs.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoHorizontalAbs.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoHorizontalAbs.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoHorizontalRel.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoHorizontalRel.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoRel.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoRel.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoVerticalAbs.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoVerticalAbs.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoVerticalRel.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoVerticalRel.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegList.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegList.h43
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegMovetoAbs.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegMovetoAbs.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegMovetoRel.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegMovetoRel.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPatternElement.cpp92
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPatternElement.h55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPoint.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPoint.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPointList.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPointList.h43
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPolygonElement.cpp107
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPolygonElement.h53
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPolylineElement.cpp107
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPolylineElement.h53
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPreserveAspectRatio.cpp69
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPreserveAspectRatio.h55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRadialGradientElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRadialGradientElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRect.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRect.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRectElement.cpp119
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRectElement.h61
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRenderingIntent.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRenderingIntent.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSVGElement.cpp339
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSVGElement.h141
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGScriptElement.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGScriptElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSetElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSetElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStopElement.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStopElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStringList.cpp83
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStringList.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStyleElement.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStyleElement.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSwitchElement.cpp101
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSwitchElement.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSymbolElement.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSymbolElement.h31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTRefElement.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTRefElement.h9
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTSpanElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTSpanElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextContentElement.cpp194
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextContentElement.h67
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextElement.cpp49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextElement.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextPathElement.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextPathElement.h33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextPositioningElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextPositioningElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTitleElement.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTitleElement.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTransform.cpp98
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTransform.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTransformList.cpp71
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTransformList.h47
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGUnitTypes.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGUnitTypes.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGUseElement.cpp122
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGUseElement.h63
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGViewElement.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGViewElement.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGZoomEvent.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGZoomEvent.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSScreen.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSScreen.h27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStorage.cpp69
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStorage.h35
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStorageEvent.cpp73
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStorageEvent.h26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStyleSheet.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStyleSheet.h33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSText.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSText.h20
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTextEvent.cpp36
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTextEvent.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTextMetrics.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTextMetrics.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTimeRanges.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTimeRanges.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTreeWalker.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTreeWalker.h59
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSUIEvent.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSUIEvent.h33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSVoidCallback.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSVoidCallback.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitAnimationEvent.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitAnimationEvent.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframeRule.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframeRule.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSMatrix.cpp556
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSMatrix.h130
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSTransformValue.cpp121
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSTransformValue.h47
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitPoint.cpp137
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitPoint.h75
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitTransitionEvent.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitTransitionEvent.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWheelEvent.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWheelEvent.h41
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorker.cpp78
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorker.h37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerContext.cpp186
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerContext.h57
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerContextBase.lut.h18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerLocation.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerLocation.h35
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerNavigator.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerNavigator.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequest.cpp226
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequest.h99
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestException.cpp61
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestException.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestProgressEvent.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestProgressEvent.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestUpload.cpp134
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestUpload.h49
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLSerializer.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLSerializer.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathEvaluator.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathEvaluator.h23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathException.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathException.h29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathExpression.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathExpression.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathNSResolver.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathNSResolver.h13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathResult.cpp87
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathResult.h55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXSLTProcessor.cpp177
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXSLTProcessor.h89
-rw-r--r--src/3rdparty/webkit/WebCore/generated/Lexer.lut.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/MathObject.lut.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/NumberConstructor.lut.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/RegExpConstructor.lut.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/RegExpObject.lut.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/SVGElementFactory.cpp484
-rw-r--r--src/3rdparty/webkit/WebCore/generated/SVGElementFactory.h3
-rw-r--r--src/3rdparty/webkit/WebCore/generated/SVGNames.cpp94
-rw-r--r--src/3rdparty/webkit/WebCore/generated/SVGNames.h55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/StringPrototype.lut.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheets.h4
-rw-r--r--src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheetsData.cpp690
-rw-r--r--src/3rdparty/webkit/WebCore/generated/XLinkNames.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/XMLNames.h5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/XPathGrammar.cpp422
-rw-r--r--src/3rdparty/webkit/WebCore/generated/XPathGrammar.h64
-rw-r--r--src/3rdparty/webkit/WebCore/history/BackForwardList.h32
-rw-r--r--src/3rdparty/webkit/WebCore/history/BackForwardListChromium.cpp143
-rw-r--r--src/3rdparty/webkit/WebCore/history/CachedFrame.cpp158
-rw-r--r--src/3rdparty/webkit/WebCore/history/CachedFrame.h80
-rw-r--r--src/3rdparty/webkit/WebCore/history/CachedFramePlatformData.h (renamed from src/3rdparty/webkit/WebCore/history/CachedPagePlatformData.h)10
-rw-r--r--src/3rdparty/webkit/WebCore/history/CachedPage.cpp117
-rw-r--r--src/3rdparty/webkit/WebCore/history/CachedPage.h44
-rw-r--r--src/3rdparty/webkit/WebCore/history/HistoryItem.cpp214
-rw-r--r--src/3rdparty/webkit/WebCore/history/HistoryItem.h53
-rw-r--r--src/3rdparty/webkit/WebCore/history/PageCache.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/history/cf/HistoryPropertyList.cpp156
-rw-r--r--src/3rdparty/webkit/WebCore/history/cf/HistoryPropertyList.h (renamed from src/3rdparty/webkit/WebCore/page/win/AccessibilityObjectWrapperWin.h)57
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasGradient.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasGradient.h5
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasPixelArray.cpp (renamed from src/3rdparty/webkit/WebCore/storage/SQLStatementErrorCallback.idl)21
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasPixelArray.h64
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasPixelArray.idl (renamed from src/3rdparty/webkit/WebCore/storage/SQLTransactionErrorCallback.idl)16
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasRenderingContext2D.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasRenderingContext2D.h3
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasStyle.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/html/CollectionCache.cpp88
-rw-r--r--src/3rdparty/webkit/WebCore/html/CollectionCache.h64
-rw-r--r--src/3rdparty/webkit/WebCore/html/CollectionType.h67
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAnchorElement.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAnchorElement.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAppletElement.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAppletElement.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAreaElement.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAreaElement.h27
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAreaElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAttributeNames.in8
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLBRElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLBaseElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLBaseFontElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLBaseFontElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLBodyElement.cpp65
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLBodyElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLBodyElement.idl6
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLButtonElement.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLButtonElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCollection.cpp74
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCollection.h90
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCollection.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLDivElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLDocument.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLDocument.h1
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLDocument.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLElement.cpp130
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLElement.h4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLElement.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLElementFactory.cpp509
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLElementFactory.h47
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLElementsAllInOne.cpp101
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLEmbedElement.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLEmbedElement.idl10
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFieldSetElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFieldSetElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFontElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormCollection.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormCollection.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormControlElement.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormControlElement.h31
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormElement.cpp176
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormElement.h28
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormElement.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameElement.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameElement.idl6
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameElementBase.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameElementBase.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameOwnerElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameOwnerElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameSetElement.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLHRElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLHtmlElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLIFrameElement.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLIFrameElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLIFrameElement.idl6
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLImageElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLImageElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLImageLoader.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp579
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLInputElement.h96
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLInputElement.idl13
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLIsIndexElement.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLKeygenElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLKeygenElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLIElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLabelElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLegendElement.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLegendElement.h3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLinkElement.cpp70
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLinkElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLinkElement.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLMapElement.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLMarqueeElement.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLMarqueeElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp1418
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLMediaElement.h199
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLMediaElement.idl46
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLMetaElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLNameCollection.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLNameCollection.h4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLNoScriptElement.cpp85
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLNoScriptElement.h (renamed from src/3rdparty/webkit/WebCore/rendering/RenderLegend.h)36
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOListElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLObjectElement.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLObjectElement.idl8
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptGroupElement.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptGroupElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptionElement.cpp97
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptionElement.h26
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptionElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptionsCollection.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLParagraphElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLParamElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLParser.cpp446
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLParser.h35
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLParserQuirks.h49
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLPlugInElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLPreElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLQuoteElement.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLQuoteElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLScriptElement.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLScriptElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLSelectElement.cpp881
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLSelectElement.h164
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLSelectElement.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLSourceElement.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLSourceElement.h9
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLStyleElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLStyleElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTableCaptionElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTableCellElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTableColElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTableElement.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTablePartElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTableRowElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTableRowsCollection.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTableSectionElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTagNames.in46
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTextAreaElement.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTextAreaElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTokenizer.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTokenizer.h6
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLUListElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLVideoElement.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLVideoElement.h3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLViewSourceDocument.cpp35
-rw-r--r--src/3rdparty/webkit/WebCore/html/ImageData.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/ImageData.h8
-rw-r--r--src/3rdparty/webkit/WebCore/html/ImageData.idl5
-rw-r--r--src/3rdparty/webkit/WebCore/html/MediaError.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/MediaError.idl1
-rw-r--r--src/3rdparty/webkit/WebCore/html/PreloadScanner.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/html/TimeRanges.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/html/TimeRanges.h40
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/ConsoleMessage.cpp119
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/ConsoleMessage.h68
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorClient.h2
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorController.cpp2474
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorController.h173
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorController.idl94
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorDOMStorageResource.cpp83
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorDOMStorageResource.h76
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorDatabaseResource.cpp78
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorDatabaseResource.h72
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorFrontend.cpp298
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorFrontend.h105
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorResource.cpp325
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorResource.h163
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JSONObject.cpp95
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JSONObject.h60
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptCallFrame.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptCallFrame.h8
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptCallFrame.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugListener.h5
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.h4
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptProfile.cpp125
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptProfile.h6
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptProfileNode.cpp51
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptProfileNode.h6
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/BottomUpProfileDataGridTree.js252
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Console.js223
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DOMStorage.js72
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DOMStorageDataGrid.js103
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DOMStorageItemsView.js108
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DataGrid.js79
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DatabaseQueryView.js2
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DatabaseTableView.js20
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DatabasesPanel.js199
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ElementsTreeOutline.js4
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/domStorage.pngbin0 -> 442 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/radioDot.pngbin0 -> 235 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/userInputResultIcon.pngbin0 -> 259 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/PanelEnablerView.js21
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ProfileDataGridTree.js398
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ProfileView.js382
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ProfilesPanel.js16
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ResourcesPanel.js59
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js56
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/SourceFrame.js31
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/SourceView.js13
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/StylesSidebarPane.js4
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/TopDownProfileDataGridTree.js111
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/WebKit.qrc9
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/inspector.css172
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/inspector.html6
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/inspector.js148
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/utilities.js38
-rw-r--r--src/3rdparty/webkit/WebCore/loader/Cache.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedCSSStyleSheet.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedFont.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedFont.h3
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedImage.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedImage.h6
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedResource.cpp84
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedResource.h22
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedScript.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedScript.h4
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CrossOriginAccessControl.cpp116
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CrossOriginAccessControl.h41
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CrossOriginPreflightResultCache.cpp173
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CrossOriginPreflightResultCache.h78
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocLoader.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocLoader.h6
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocumentLoader.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocumentLoader.h20
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocumentThreadableLoader.cpp199
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocumentThreadableLoader.h83
-rw-r--r--src/3rdparty/webkit/WebCore/loader/EmptyClients.h74
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FTPDirectoryDocument.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FTPDirectoryParser.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FormState.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FormState.h16
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp1788
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FrameLoader.h271
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FrameLoaderClient.cpp92
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FrameLoaderClient.h44
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FrameLoaderTypes.h8
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ImageDocument.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ImageLoader.cpp136
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ImageLoader.h31
-rw-r--r--src/3rdparty/webkit/WebCore/loader/MainResourceLoader.cpp75
-rw-r--r--src/3rdparty/webkit/WebCore/loader/MainResourceLoader.h21
-rw-r--r--src/3rdparty/webkit/WebCore/loader/MediaDocument.cpp89
-rw-r--r--src/3rdparty/webkit/WebCore/loader/MediaDocument.h6
-rw-r--r--src/3rdparty/webkit/WebCore/loader/NetscapePlugInStreamLoader.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/loader/PluginDocument.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ProgressTracker.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ResourceLoader.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ResourceLoader.h6
-rw-r--r--src/3rdparty/webkit/WebCore/loader/SubresourceLoader.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/loader/SubresourceLoader.h2
-rw-r--r--src/3rdparty/webkit/WebCore/loader/SubresourceLoaderClient.h4
-rw-r--r--src/3rdparty/webkit/WebCore/loader/TextDocument.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/loader/TextResourceDecoder.cpp152
-rw-r--r--src/3rdparty/webkit/WebCore/loader/TextResourceDecoder.h36
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ThreadableLoader.cpp72
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ThreadableLoader.h80
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ThreadableLoaderClient.h57
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ThreadableLoaderClientWrapper.h117
-rw-r--r--src/3rdparty/webkit/WebCore/loader/WorkerThreadableLoader.cpp261
-rw-r--r--src/3rdparty/webkit/WebCore/loader/WorkerThreadableLoader.h147
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCache.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCache.h7
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheGroup.cpp756
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheGroup.h78
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheResource.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheResource.h2
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheStorage.cpp116
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheStorage.h11
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/DOMApplicationCache.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/DOMApplicationCache.h8
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/DOMApplicationCache.idl8
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ManifestParser.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/loader/archive/cf/LegacyWebArchive.cpp152
-rw-r--r--src/3rdparty/webkit/WebCore/loader/archive/cf/LegacyWebArchive.h27
-rw-r--r--src/3rdparty/webkit/WebCore/loader/archive/cf/LegacyWebArchiveMac.mm20
-rw-r--r--src/3rdparty/webkit/WebCore/loader/cf/ResourceLoaderCFNet.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/loader/icon/IconDatabase.cpp122
-rw-r--r--src/3rdparty/webkit/WebCore/loader/icon/IconDatabase.h10
-rw-r--r--src/3rdparty/webkit/WebCore/loader/icon/IconDatabaseNone.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/loader/icon/IconFetcher.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/loader/icon/IconLoader.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/loader/icon/IconRecord.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/loader/loader.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/loader/loader.h6
-rwxr-xr-xsrc/3rdparty/webkit/WebCore/make-generated-sources.sh2
-rw-r--r--src/3rdparty/webkit/WebCore/page/BarInfo.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/page/BarInfo.h3
-rw-r--r--src/3rdparty/webkit/WebCore/page/Chrome.cpp112
-rw-r--r--src/3rdparty/webkit/WebCore/page/Chrome.h9
-rw-r--r--src/3rdparty/webkit/WebCore/page/ChromeClient.h46
-rw-r--r--src/3rdparty/webkit/WebCore/page/Console.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/page/Console.h13
-rw-r--r--src/3rdparty/webkit/WebCore/page/Console.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/page/ContextMenuController.cpp62
-rw-r--r--src/3rdparty/webkit/WebCore/page/Coordinates.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/page/Coordinates.h88
-rw-r--r--src/3rdparty/webkit/WebCore/page/Coordinates.idl41
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMSelection.cpp103
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMSelection.h8
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMSelection.idl40
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMTimer.cpp (renamed from src/3rdparty/webkit/WebCore/bindings/js/DOMTimer.cpp)22
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMTimer.h (renamed from src/3rdparty/webkit/WebCore/bindings/js/DOMTimer.h)7
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.cpp969
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.h139
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.idl207
-rw-r--r--src/3rdparty/webkit/WebCore/page/DragController.cpp162
-rw-r--r--src/3rdparty/webkit/WebCore/page/DragController.h33
-rw-r--r--src/3rdparty/webkit/WebCore/page/EditorClient.h44
-rw-r--r--src/3rdparty/webkit/WebCore/page/EventHandler.cpp684
-rw-r--r--src/3rdparty/webkit/WebCore/page/EventHandler.h76
-rw-r--r--src/3rdparty/webkit/WebCore/page/FocusController.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/page/Frame.cpp778
-rw-r--r--src/3rdparty/webkit/WebCore/page/Frame.h127
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameLoadRequest.h7
-rw-r--r--src/3rdparty/webkit/WebCore/page/FramePrivate.h99
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameTree.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameTree.h4
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameView.cpp871
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameView.h137
-rw-r--r--src/3rdparty/webkit/WebCore/page/Geolocation.cpp95
-rw-r--r--src/3rdparty/webkit/WebCore/page/Geolocation.h41
-rw-r--r--src/3rdparty/webkit/WebCore/page/Geoposition.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/page/Geoposition.h31
-rw-r--r--src/3rdparty/webkit/WebCore/page/Geoposition.idl10
-rw-r--r--src/3rdparty/webkit/WebCore/page/History.idl9
-rw-r--r--src/3rdparty/webkit/WebCore/page/Location.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/page/Location.idl23
-rw-r--r--src/3rdparty/webkit/WebCore/page/Navigator.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/page/Navigator.idl5
-rw-r--r--src/3rdparty/webkit/WebCore/page/NavigatorBase.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/page/Page.cpp130
-rw-r--r--src/3rdparty/webkit/WebCore/page/Page.h26
-rw-r--r--src/3rdparty/webkit/WebCore/page/PageGroupLoadDeferrer.cpp72
-rw-r--r--src/3rdparty/webkit/WebCore/page/PageGroupLoadDeferrer.h (renamed from src/3rdparty/webkit/WebCore/rendering/ListMarkerBox.h)32
-rw-r--r--src/3rdparty/webkit/WebCore/page/PositionOptions.h8
-rw-r--r--src/3rdparty/webkit/WebCore/page/PrintContext.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/page/Screen.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/page/Screen.h2
-rw-r--r--src/3rdparty/webkit/WebCore/page/SecurityOrigin.cpp35
-rw-r--r--src/3rdparty/webkit/WebCore/page/SecurityOrigin.h6
-rw-r--r--src/3rdparty/webkit/WebCore/page/Settings.cpp69
-rw-r--r--src/3rdparty/webkit/WebCore/page/Settings.h67
-rw-r--r--src/3rdparty/webkit/WebCore/page/WebKitPoint.h63
-rw-r--r--src/3rdparty/webkit/WebCore/page/WebKitPoint.idl33
-rw-r--r--src/3rdparty/webkit/WebCore/page/android/DragControllerAndroid.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/page/android/EventHandlerAndroid.cpp129
-rw-r--r--src/3rdparty/webkit/WebCore/page/android/InspectorControllerAndroid.cpp106
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/AnimationBase.cpp420
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/AnimationBase.h44
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/AnimationController.cpp379
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/AnimationController.h27
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/AnimationControllerPrivate.h135
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/CompositeAnimation.cpp638
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/CompositeAnimation.h47
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/ImplicitAnimation.cpp89
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/ImplicitAnimation.h9
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/KeyframeAnimation.cpp190
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/KeyframeAnimation.h13
-rw-r--r--src/3rdparty/webkit/WebCore/page/qt/FrameQt.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/page/win/FrameCGWin.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/page/win/FrameWin.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Arena.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ContentType.cpp73
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ContentType.h (renamed from src/3rdparty/webkit/WebCore/platform/mac/WebCoreTextRenderer.h)35
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ContextMenu.cpp133
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ContextMenu.h1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ContextMenuItem.h15
-rw-r--r--src/3rdparty/webkit/WebCore/platform/CookieJar.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/CrossThreadCopier.cpp62
-rw-r--r--src/3rdparty/webkit/WebCore/platform/CrossThreadCopier.h109
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Cursor.h7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/DeprecatedPtrListImpl.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/FileSystem.h11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/GeolocationService.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/GeolocationService.h12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/HostWindow.h7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/KURL.cpp185
-rw-r--r--src/3rdparty/webkit/WebCore/platform/KURL.h40
-rw-r--r--src/3rdparty/webkit/WebCore/platform/KURLGoogle.cpp962
-rw-r--r--src/3rdparty/webkit/WebCore/platform/KURLGooglePrivate.h115
-rw-r--r--src/3rdparty/webkit/WebCore/platform/KeyboardCodes.h (renamed from src/3rdparty/webkit/WebCore/platform/qt/KeyboardCodes.h)13
-rw-r--r--src/3rdparty/webkit/WebCore/platform/LocalizedStrings.h13
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Logging.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Logging.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.cpp120
-rw-r--r--src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/NotImplemented.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/PlatformMouseEvent.h71
-rw-r--r--src/3rdparty/webkit/WebCore/platform/PlatformWheelEvent.h71
-rw-r--r--src/3rdparty/webkit/WebCore/platform/PopupMenuStyle.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/RunLoopTimer.h79
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollView.cpp186
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollView.h17
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Scrollbar.cpp69
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Scrollbar.h8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollbarTheme.h1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/SharedBuffer.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/SharedTimer.h43
-rw-r--r--src/3rdparty/webkit/WebCore/platform/SuddenTermination.h43
-rw-r--r--src/3rdparty/webkit/WebCore/platform/SystemTime.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ThemeTypes.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ThreadCheck.h14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ThreadGlobalData.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ThreadGlobalData.h11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ThreadTimers.cpp158
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ThreadTimers.h69
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Timer.cpp177
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Timer.h18
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Widget.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/android/ClipboardAndroid.cpp105
-rw-r--r--src/3rdparty/webkit/WebCore/platform/android/ClipboardAndroid.h (renamed from src/3rdparty/webkit/WebCore/platform/text/TextDecoder.h)58
-rw-r--r--src/3rdparty/webkit/WebCore/platform/animation/Animation.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/platform/animation/Animation.h25
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/BitmapImage.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/BitmapImage.h26
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Color.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Color.h7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FloatPoint.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FloatPoint3D.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FloatPoint3D.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FloatQuad.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FloatQuad.h8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Font.cpp71
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Font.h36
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FontCache.cpp43
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FontCache.h43
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FontDescription.h6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FontFallbackList.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FontFallbackList.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FontFastPath.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GeneratedImage.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GlyphBuffer.h14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GlyphPageTreeNode.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GlyphPageTreeNode.h67
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GlyphWidthMap.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GlyphWidthMap.h43
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Gradient.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Gradient.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsContext.cpp85
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsContext.h72
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsContextPrivate.h18
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayer.cpp545
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayer.h409
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayerClient.h69
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsTypes.h8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Image.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Image.h29
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/ImageBuffer.h14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/ImageSource.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/IntPoint.h1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/IntSize.h6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/MediaPlayer.cpp282
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/MediaPlayer.h103
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/MediaPlayerPrivate.h98
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Path.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Path.h17
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Pattern.h6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/SegmentedFontData.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/SegmentedFontData.h12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/SimpleFontData.cpp86
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/SimpleFontData.h52
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/WidthIterator.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/WidthIterator.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEBlend.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEBlend.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEColorMatrix.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEColorMatrix.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEComponentTransfer.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEComponentTransfer.h11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEComposite.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEComposite.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/Filter.h52
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FilterEffect.cpp (renamed from src/3rdparty/webkit/WebCore/svg/FilterEffect.cpp)8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FilterEffect.h81
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/SourceAlpha.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/SourceAlpha.h (renamed from src/3rdparty/webkit/WebCore/svg/graphics/qt/SVGResourceMaskerQt.cpp)35
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/SourceGraphic.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/SourceGraphic.h (renamed from src/3rdparty/webkit/WebCore/svg/Filter.h)40
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/opentype/OpenTypeUtilities.cpp408
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/opentype/OpenTypeUtilities.h58
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontPlatformDataQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/GradientQt.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp80
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/IconQt.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageSourceQt.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.h43
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/PatternQt.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/SimpleFontDataQt.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/TransformationMatrixQt.cpp167
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/Matrix3DTransformOperation.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/Matrix3DTransformOperation.h72
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/MatrixTransformOperation.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/MatrixTransformOperation.h19
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.h71
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/RotateTransformOperation.cpp61
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/RotateTransformOperation.h29
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/ScaleTransformOperation.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/ScaleTransformOperation.h23
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformOperation.h26
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformOperations.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.cpp1076
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.h300
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/TranslateTransformOperation.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/TranslateTransformOperation.h25
-rw-r--r--src/3rdparty/webkit/WebCore/platform/image-decoders/ImageDecoder.h270
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/ClipboardMac.mm129
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/CookieJar.mm5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/DragDataMac.mm2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/DragImageMac.mm31
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/FoundationExtras.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/GeolocationServiceMac.h75
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/GeolocationServiceMac.mm219
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/LocalCurrentGraphicsContext.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/LocalizedStringsMac.mm104
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/PasteboardMac.mm23
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/PlatformMouseEventMac.mm40
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/PlatformScreenMac.mm6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/RuntimeApplicationChecks.h (renamed from src/3rdparty/webkit/WebCore/storage/SQLTransactionCallback.idl)23
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/RuntimeApplicationChecks.mm (renamed from src/3rdparty/webkit/WebCore/storage/SQLStatementCallback.idl)29
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/ScrollbarThemeMac.mm28
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/SharedBufferMac.mm10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/SharedTimerMac.mm10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/SuddenTermination.mm45
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/SystemTimeMac.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/ThreadCheck.mm62
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/WebCoreKeyGenerator.m9
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/WebCoreObjCExtras.mm3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/WebCoreSystemInterface.h21
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/WebCoreSystemInterface.mm14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/WebCoreTextRenderer.mm93
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/WebFontCache.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/WebFontCache.mm24
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/WheelEventMac.mm18
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/WidgetMac.mm26
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/FormData.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/FormData.h9
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/HTTPHeaderMap.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/HTTPHeaderMap.h14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/HTTPParsers.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceErrorBase.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceErrorBase.h7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceHandle.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceHandle.h21
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceHandleClient.h8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceHandleInternal.h25
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceRequestBase.cpp104
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceRequestBase.h46
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceResponseBase.cpp261
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceResponseBase.h102
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/chromium/ResourceResponse.h83
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.h1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/ResourceHandleQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/posix/FileSystemPOSIX.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/ContextMenuQt.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/CookieJarQt.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/DragDataQt.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/FileSystemQt.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/KURLQt.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/MenuEventProxy.h54
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/PlatformMouseEventQt.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/QWebPopup.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/ScrollViewQt.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/SharedTimerQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/TemporaryLinkStubs.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/AtomicString.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/AtomicString.h20
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/Base64.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/BidiContext.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/BidiContext.h33
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/BidiResolver.h21
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/CString.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/CString.h17
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/CharacterNames.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/PlatformString.h19
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/RegularExpression.cpp121
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/RegularExpression.h14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/String.cpp98
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/StringBuilder.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/StringImpl.cpp253
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/StringImpl.h72
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextBoundaries.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextBoundariesICU.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextBreakIterator.h12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextBreakIteratorICU.cpp116
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextCodec.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextCodecICU.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextCodecICU.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextCodecLatin1.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextCodecUTF16.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextCodecUserDefined.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextDecoder.cpp129
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextEncoding.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextEncoding.h27
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextEncodingDetector.h48
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextEncodingDetectorICU.cpp129
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextEncodingDetectorNone.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextEncodingRegistry.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextEncodingRegistry.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextStream.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextStream.h1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/cf/StringImplCF.cpp131
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/mac/ShapeArabic.c9
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/mac/StringImplMac.mm8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/mac/StringMac.mm1
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/mac/TextBoundaries.mm2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/mac/TextCodecMac.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/qt/TextBreakIteratorQt.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/qt/TextCodecQt.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/win/TextBreakIteratorInternalICUWin.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/win/SystemTimeWin.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginDataNone.cpp (renamed from src/3rdparty/webkit/WebCore/page/win/AccessibilityObjectWin.cpp)20
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginPackage.cpp86
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginPackage.h1
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginPackageNone.cpp (renamed from src/3rdparty/webkit/WebCore/page/win/AXObjectCacheWin.cpp)52
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginStream.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginView.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginView.h25
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp156
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/mac/PluginPackageMac.cpp73
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/npfunctions.h9
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/qt/PluginContainerQt.cpp149
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/qt/PluginContainerQt.h63
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp72
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp149
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/win/PluginPackageWin.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp160
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/EllipsisBox.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/EllipsisBox.h11
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/FixedTableLayout.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/HitTestRequest.h34
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/HitTestResult.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/HitTestResult.h1
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineBox.cpp81
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineBox.h124
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineFlowBox.cpp570
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineFlowBox.h62
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineTextBox.cpp344
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineTextBox.h59
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/LayoutState.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/LayoutState.h11
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/MediaControlElements.cpp146
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/MediaControlElements.h36
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/OverlapTestRequestClient.h (renamed from src/3rdparty/webkit/WebCore/page/chromium/AccessibilityObjectChromium.cpp)20
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/PointerEventsHitRules.h2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderApplet.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderApplet.h9
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderArena.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBR.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBR.h8
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBlock.cpp2006
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBlock.h234
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp1611
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBox.h298
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp1177
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.h135
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderButton.cpp36
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderButton.h22
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderContainer.cpp701
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderContainer.h75
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderCounter.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderCounter.h1
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFieldset.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFieldset.h5
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFileUploadControl.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFileUploadControl.h2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFlexibleBox.cpp248
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFlexibleBox.h4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFlow.cpp883
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFlow.h146
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderForeignObject.cpp95
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderForeignObject.h19
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFrame.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFrame.h14
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFrameSet.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFrameSet.h12
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderHTMLCanvas.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderImage.cpp91
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderImage.h16
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderImageGeneratedContent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderInline.cpp876
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderInline.h129
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp1481
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayer.h220
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayerBacking.cpp1023
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayerBacking.h172
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp827
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.h145
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLineBoxList.cpp333
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLineBoxList.h86
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListBox.cpp121
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListBox.h9
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListItem.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListItem.h2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListMarker.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListMarker.h10
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMarquee.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMarquee.h3
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMedia.cpp180
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMedia.h27
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMediaControls.cpp152
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMediaControls.h43
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMenuList.cpp138
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMenuList.h15
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp2386
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderObject.h775
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderObjectChildList.cpp426
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderObjectChildList.h67
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderPart.cpp86
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderPart.h24
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderPartObject.cpp158
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderPartObject.h10
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderPath.cpp186
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderPath.h46
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderReplaced.cpp140
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderReplaced.h16
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderReplica.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderReplica.h2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGBlock.h3
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGContainer.cpp356
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGContainer.h78
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGGradientStop.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGGradientStop.h16
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGHiddenContainer.cpp36
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGHiddenContainer.h29
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGImage.cpp103
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGImage.h38
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGInline.cpp57
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGInline.h18
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGInlineText.cpp92
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGInlineText.h17
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGModelObject.cpp97
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGModelObject.h71
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGRoot.cpp305
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGRoot.h53
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGTSpan.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGTSpan.h11
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGText.cpp145
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGText.h37
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGTextPath.cpp51
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGTextPath.h2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGTransformableContainer.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGTransformableContainer.h15
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGViewportContainer.cpp126
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGViewportContainer.h23
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderScrollbar.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderScrollbar.h15
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderScrollbarPart.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderScrollbarPart.h5
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSelectionInfo.h104
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSlider.cpp395
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSlider.h39
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTable.cpp233
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTable.h39
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableCell.cpp174
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableCell.h43
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableCol.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableCol.h14
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableRow.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableRow.h17
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableSection.cpp263
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableSection.h34
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderText.cpp428
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderText.h74
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControl.cpp175
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControl.h42
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControlMultiLine.cpp49
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControlMultiLine.h1
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControlSingleLine.cpp268
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControlSingleLine.h23
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextFragment.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTheme.cpp172
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTheme.h66
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumLinux.cpp607
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumLinux.h138
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumMac.h215
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumMac.mm1997
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumSkia.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumSkia.h2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumWin.cpp930
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumWin.h158
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeMac.h18
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeSafari.cpp109
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeWin.cpp298
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeWin.h21
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTreeAsText.cpp124
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderVideo.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderView.cpp281
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderView.h151
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderWidget.cpp146
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderWidget.h48
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RootInlineBox.cpp120
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RootInlineBox.h44
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGCharacterLayoutInfo.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGInlineFlowBox.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGInlineFlowBox.h9
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGInlineTextBox.cpp93
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGInlineTextBox.h12
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGRenderSupport.cpp112
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGRenderSupport.h53
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGRenderTreeAsText.cpp202
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGRenderTreeAsText.h6
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGRootInlineBox.cpp128
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGRootInlineBox.h7
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/ScrollBehavior.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/ScrollBehavior.h78
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/TextControlInnerElements.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/TransformState.cpp169
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/TransformState.h133
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/bidi.cpp546
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/bidi.h2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/break_lines.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/ContentData.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/ContentData.h50
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/CounterContent.h8
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/RenderStyle.cpp324
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/RenderStyle.h177
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/RenderStyleConstants.h53
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/SVGRenderStyle.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/StyleGeneratedImage.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/StyleInheritedData.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/StyleRareInheritedData.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/StyleRareNonInheritedData.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/StyleRareNonInheritedData.h13
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/StyleTransformData.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/StyleTransformData.h1
-rw-r--r--src/3rdparty/webkit/WebCore/storage/ChangeVersionWrapper.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/storage/ChangeVersionWrapper.h4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/Database.cpp61
-rw-r--r--src/3rdparty/webkit/WebCore/storage/Database.h17
-rw-r--r--src/3rdparty/webkit/WebCore/storage/Database.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseAuthorizer.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseAuthorizer.h8
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseDetails.h4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseTask.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseTask.h2
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseThread.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseThread.h9
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseTracker.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseTracker.h3
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseTrackerClient.h4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/LocalStorage.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/storage/LocalStorage.h2
-rw-r--r--src/3rdparty/webkit/WebCore/storage/LocalStorageArea.cpp100
-rw-r--r--src/3rdparty/webkit/WebCore/storage/LocalStorageArea.h9
-rw-r--r--src/3rdparty/webkit/WebCore/storage/LocalStorageThread.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/storage/OriginQuotaManager.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/OriginQuotaManager.h4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/OriginUsageRecord.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/OriginUsageRecord.h4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLError.h4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLError.idl6
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLResultSet.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLResultSet.h4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLResultSet.idl8
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLResultSetRowList.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLResultSetRowList.h4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLResultSetRowList.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLStatement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLStatement.h10
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLStatementCallback.h6
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLStatementErrorCallback.h6
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransaction.cpp43
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransaction.h5
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransaction.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransactionCallback.h4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransactionErrorCallback.h6
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SessionStorageArea.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageArea.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageEvent.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageEvent.h21
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageEvent.idl7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/Filter.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/svg/FilterEffect.h48
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAElement.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAllInOne.cpp152
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAnimateMotionElement.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAnimateTransformElement.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAnimatedProperty.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAnimationElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGCircleElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGClipPathElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGComponentTransferFunctionElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGComponentTransferFunctionElement.h4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGComponentTransferFunctionElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGCursorElement.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGElement.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGElementInstance.cpp164
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGElementInstance.h3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGElementInstance.idl86
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGEllipseElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGException.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGExternalResourcesRequired.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEBlendElement.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEBlendElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEBlendElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEColorMatrixElement.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEColorMatrixElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEColorMatrixElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEComponentTransferElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEComponentTransferElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEComponentTransferElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFECompositeElement.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFECompositeElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFECompositeElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEDiffuseLightingElement.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEDiffuseLightingElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEDiffuseLightingElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEDisplacementMapElement.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEDisplacementMapElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEDisplacementMapElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEDistantLightElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEDistantLightElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEDistantLightElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFloodElement.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFloodElement.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFloodElement.idl6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncAElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncAElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncAElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncBElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncBElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncBElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncGElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncGElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncGElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncRElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncRElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFuncRElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEGaussianBlurElement.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEGaussianBlurElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEGaussianBlurElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEImageElement.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEImageElement.h6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEImageElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFELightElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFELightElement.h4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMergeElement.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMergeElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMergeElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMergeNodeElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMergeNodeElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMergeNodeElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEOffsetElement.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEOffsetElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEOffsetElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEPointLightElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEPointLightElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEPointLightElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFESpecularLightingElement.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFESpecularLightingElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFESpecularLightingElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFESpotLightElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFESpotLightElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFESpotLightElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFETileElement.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFETileElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFETileElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFETurbulenceElement.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFETurbulenceElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFETurbulenceElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFilterElement.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFilterElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFilterElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h11
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFitToViewBox.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFont.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFontFaceElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFontFaceUriElement.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFontFaceUriElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGForeignObjectElement.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGGlyphElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGGlyphElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGGradientElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGHKernElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGImageElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGImageLoader.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGLangSpace.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGLength.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGLineElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGLinearGradientElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGList.h6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGLocatable.cpp70
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGMarkerElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGMaskElement.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGMaskElement.h3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGMatrix.idl18
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGParserUtilities.cpp111
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPathElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPathSeg.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPathSegCurvetoCubicSmooth.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPathSegList.idl14
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPatternElement.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPointList.idl14
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPolyElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPreserveAspectRatio.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGRadialGradientElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGRectElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGSVGElement.cpp57
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGScriptElement.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGScriptElement.h3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGStopElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGStyleElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGStyledElement.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGStyledTransformableElement.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTests.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTextContentElement.cpp51
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTextContentElement.h16
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTextContentElement.idl16
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTextElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTextPathElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTextPositioningElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTransform.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTransformDistance.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTransformList.idl14
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTransformable.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGURIReference.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGUseElement.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGViewElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGViewSpec.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/animation/SMILTime.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/animation/SMILTimeContainer.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/animation/SVGSMILElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGImage.cpp117
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGImage.h14
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGPaintServer.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGPaintServer.h6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGPaintServerGradient.cpp101
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGPaintServerGradient.h5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGPaintServerPattern.cpp100
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGPaintServerPattern.h11
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGPaintServerSolid.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGPaintServerSolid.h1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGResourceClipper.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGResourceFilter.cpp98
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGResourceFilter.h51
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGResourceMarker.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGResourceMasker.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGDistantLightSource.h4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEConvolveMatrix.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEConvolveMatrix.h10
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEDiffuseLighting.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEDiffuseLighting.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEDisplacementMap.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEDisplacementMap.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEFlood.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEFlood.h14
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEGaussianBlur.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEGaussianBlur.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEImage.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEImage.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEMerge.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEMerge.h10
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEMorphology.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEMorphology.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEOffset.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEOffset.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFESpecularLighting.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFESpecularLighting.h11
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFETile.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFETile.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFETurbulence.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFETurbulence.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilter.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilter.h53
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilterBuilder.h (renamed from src/3rdparty/webkit/WebCore/svg/FilterBuilder.h)35
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilterEffect.cpp133
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilterEffect.h99
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGLightSource.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGLightSource.h4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGPointLightSource.h4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGSpotLightSource.h4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/qt/RenderPathQt.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/qt/SVGPaintServerPatternQt.cpp90
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/qt/SVGPaintServerQt.cpp72
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/qt/SVGResourceFilterQt.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/svg/svgattrs.in4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/svgtags.in8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/xlinkattrs.in2
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLAElement.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLAccessElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLAttributeNames.in2
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLBRElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLCardElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLCardElement.h4
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLDoElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLDocument.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLDocument.h2
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLElement.h3
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLEventHandlingElement.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLEventHandlingElement.h16
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLFieldSetElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLFormControlElement.cpp80
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLFormControlElement.h53
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLGoElement.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLImageElement.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLImageLoader.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLInputElement.cpp507
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLInputElement.h110
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLInsertedLegendElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLInsertedLegendElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLMetaElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLNoopElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLOnEventElement.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLOptGroupElement.cpp175
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLOptGroupElement.h69
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLOptionElement.cpp163
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLOptionElement.h69
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLPElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLPostfieldElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLSelectElement.cpp224
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLSelectElement.h94
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLSetvarElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTableElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTagNames.in11
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTemplateElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTemplateElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTimerElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/workers/GenericWorkerTask.h415
-rw-r--r--src/3rdparty/webkit/WebCore/workers/Worker.cpp (renamed from src/3rdparty/webkit/WebCore/dom/Worker.cpp)68
-rw-r--r--src/3rdparty/webkit/WebCore/workers/Worker.h (renamed from src/3rdparty/webkit/WebCore/dom/Worker.h)16
-rw-r--r--src/3rdparty/webkit/WebCore/workers/Worker.idl (renamed from src/3rdparty/webkit/WebCore/dom/Worker.idl)0
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerContext.cpp (renamed from src/3rdparty/webkit/WebCore/dom/WorkerContext.cpp)157
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerContext.h (renamed from src/3rdparty/webkit/WebCore/dom/WorkerContext.h)56
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerContext.idl (renamed from src/3rdparty/webkit/WebCore/dom/WorkerContext.idl)41
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerContextProxy.h64
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerImportScriptsClient.cpp96
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerImportScriptsClient.h77
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerLocation.cpp (renamed from src/3rdparty/webkit/WebCore/dom/WorkerLocation.cpp)4
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerLocation.h (renamed from src/3rdparty/webkit/WebCore/dom/WorkerLocation.h)0
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerLocation.idl (renamed from src/3rdparty/webkit/WebCore/dom/WorkerLocation.idl)0
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerMessagingProxy.cpp (renamed from src/3rdparty/webkit/WebCore/dom/WorkerMessagingProxy.cpp)119
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerMessagingProxy.h (renamed from src/3rdparty/webkit/WebCore/dom/WorkerMessagingProxy.h)51
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerObjectProxy.h64
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerRunLoop.cpp210
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerRunLoop.h82
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerThread.cpp (renamed from src/3rdparty/webkit/WebCore/dom/WorkerThread.cpp)33
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerThread.h (renamed from src/3rdparty/webkit/WebCore/dom/WorkerThread.h)21
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequest.cpp539
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequest.h54
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequest.idl5
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequestException.idl5
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequestProgressEvent.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequestUpload.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequestUpload.h2
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequestUpload.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathException.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathExpression.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathExpressionNode.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathExpressionNode.h32
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathFunctions.cpp131
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathFunctions.h12
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathGrammar.y4
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathNodeSet.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathNodeSet.h16
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathPath.cpp92
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathPath.h14
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathPredicate.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathPredicate.h16
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathResult.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathResult.h22
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathStep.cpp283
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathStep.h41
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathUtil.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathValue.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathVariableReference.h4
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLStyleSheet.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLTExtensions.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLTProcessor.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLTUnicodeSort.cpp54
-rw-r--r--src/3rdparty/webkit/WebKit.pri7
-rw-r--r--src/3rdparty/webkit/WebKit/ChangeLog317
-rw-r--r--src/3rdparty/webkit/WebKit/StringsNotToBeLocalized.txt179
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/headers.pri3
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp20
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp1603
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebelement.h153
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp279
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.h17
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe_p.h10
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebkitglobal.h22
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp177
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h30
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage_p.h5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp23
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp74
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h8
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp121
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebview.h9
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog1469
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Plugins/ICOHandler.cpp1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp25
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h16
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/DragClientQt.cpp1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditCommandQt.cpp1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp15
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.h1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp59
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h11
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.h2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webelement/main.cpp69
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webelement/webelement.pro5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebelement/qwebelement.pro7
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebelement/qwebelement.qrc6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebelement/style.css1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebelement/style2.css1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp882
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebframe/qwebframe.qrc1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebframe/style.css1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp63
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/frametest/frame_a.html2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/frametest/index.html4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/qwebpage.pro1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp99
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.qrc7
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebview/.gitignore1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebview/qwebview.pro6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp165
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/tests.pro2
-rw-r--r--src/activeqt/container/qaxbase.cpp2
-rw-r--r--src/activeqt/container/qaxbase.h2
-rw-r--r--src/activeqt/container/qaxdump.cpp2
-rw-r--r--src/activeqt/container/qaxobject.cpp2
-rw-r--r--src/activeqt/container/qaxobject.h2
-rw-r--r--src/activeqt/container/qaxscript.cpp2
-rw-r--r--src/activeqt/container/qaxscript.h2
-rw-r--r--src/activeqt/container/qaxscriptwrapper.cpp2
-rw-r--r--src/activeqt/container/qaxselect.cpp2
-rw-r--r--src/activeqt/container/qaxselect.h2
-rw-r--r--src/activeqt/container/qaxselect.ui2
-rw-r--r--src/activeqt/container/qaxwidget.cpp2
-rw-r--r--src/activeqt/container/qaxwidget.h2
-rw-r--r--src/activeqt/control/qaxaggregated.h2
-rw-r--r--src/activeqt/control/qaxbindable.cpp2
-rw-r--r--src/activeqt/control/qaxbindable.h2
-rw-r--r--src/activeqt/control/qaxfactory.cpp2
-rw-r--r--src/activeqt/control/qaxfactory.h2
-rw-r--r--src/activeqt/control/qaxmain.cpp2
-rw-r--r--src/activeqt/control/qaxserver.cpp2
-rw-r--r--src/activeqt/control/qaxserverbase.cpp2
-rw-r--r--src/activeqt/control/qaxserverdll.cpp2
-rw-r--r--src/activeqt/control/qaxservermain.cpp2
-rw-r--r--src/activeqt/shared/qaxtypes.cpp2
-rw-r--r--src/activeqt/shared/qaxtypes.h2
-rw-r--r--src/corelib/animation/qabstractanimation.cpp4
-rw-r--r--src/corelib/animation/qabstractanimation.h4
-rw-r--r--src/corelib/animation/qabstractanimation_p.h4
-rw-r--r--src/corelib/animation/qanimationgroup.cpp4
-rw-r--r--src/corelib/animation/qanimationgroup.h4
-rw-r--r--src/corelib/animation/qanimationgroup_p.h4
-rw-r--r--src/corelib/animation/qparallelanimationgroup.cpp4
-rw-r--r--src/corelib/animation/qparallelanimationgroup.h4
-rw-r--r--src/corelib/animation/qparallelanimationgroup_p.h4
-rw-r--r--src/corelib/animation/qpauseanimation.cpp4
-rw-r--r--src/corelib/animation/qpauseanimation.h4
-rw-r--r--src/corelib/animation/qpropertyanimation.cpp5
-rw-r--r--src/corelib/animation/qpropertyanimation.h4
-rw-r--r--src/corelib/animation/qpropertyanimation_p.h4
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.cpp4
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.h4
-rw-r--r--src/corelib/animation/qsequentialanimationgroup_p.h4
-rw-r--r--src/corelib/animation/qvariantanimation.cpp4
-rw-r--r--src/corelib/animation/qvariantanimation.h4
-rw-r--r--src/corelib/animation/qvariantanimation_p.h4
-rw-r--r--src/corelib/arch/arm/qatomic_arm.cpp4
-rw-r--r--src/corelib/arch/generic/qatomic_generic_unix.cpp4
-rw-r--r--src/corelib/arch/generic/qatomic_generic_windows.cpp4
-rw-r--r--src/corelib/arch/parisc/qatomic_parisc.cpp4
-rw-r--r--src/corelib/arch/qatomic_alpha.h4
-rw-r--r--src/corelib/arch/qatomic_arch.h4
-rw-r--r--src/corelib/arch/qatomic_arm.h4
-rw-r--r--src/corelib/arch/qatomic_armv6.h4
-rw-r--r--src/corelib/arch/qatomic_avr32.h4
-rw-r--r--src/corelib/arch/qatomic_bfin.h4
-rw-r--r--src/corelib/arch/qatomic_bootstrap.h4
-rw-r--r--src/corelib/arch/qatomic_generic.h4
-rw-r--r--src/corelib/arch/qatomic_i386.h4
-rw-r--r--src/corelib/arch/qatomic_ia64.h4
-rw-r--r--src/corelib/arch/qatomic_macosx.h4
-rw-r--r--src/corelib/arch/qatomic_mips.h4
-rw-r--r--src/corelib/arch/qatomic_parisc.h4
-rw-r--r--src/corelib/arch/qatomic_powerpc.h4
-rw-r--r--src/corelib/arch/qatomic_s390.h4
-rw-r--r--src/corelib/arch/qatomic_sh.h4
-rw-r--r--src/corelib/arch/qatomic_sh4a.h4
-rw-r--r--src/corelib/arch/qatomic_sparc.h4
-rw-r--r--src/corelib/arch/qatomic_windows.h4
-rw-r--r--src/corelib/arch/qatomic_windowsce.h4
-rw-r--r--src/corelib/arch/qatomic_x86_64.h4
-rw-r--r--src/corelib/arch/sh/qatomic_sh.cpp4
-rw-r--r--src/corelib/arch/sparc/qatomic_sparc.cpp4
-rw-r--r--src/corelib/codecs/qfontlaocodec.cpp4
-rw-r--r--src/corelib/codecs/qfontlaocodec_p.h4
-rw-r--r--src/corelib/codecs/qiconvcodec.cpp4
-rw-r--r--src/corelib/codecs/qiconvcodec_p.h4
-rw-r--r--src/corelib/codecs/qisciicodec.cpp4
-rw-r--r--src/corelib/codecs/qisciicodec_p.h4
-rw-r--r--src/corelib/codecs/qlatincodec.cpp4
-rw-r--r--src/corelib/codecs/qlatincodec_p.h4
-rw-r--r--src/corelib/codecs/qsimplecodec.cpp7
-rw-r--r--src/corelib/codecs/qsimplecodec_p.h4
-rw-r--r--src/corelib/codecs/qtextcodec.cpp4
-rw-r--r--src/corelib/codecs/qtextcodec.h4
-rw-r--r--src/corelib/codecs/qtextcodec_p.h4
-rw-r--r--src/corelib/codecs/qtextcodecplugin.cpp4
-rw-r--r--src/corelib/codecs/qtextcodecplugin.h4
-rw-r--r--src/corelib/codecs/qtsciicodec.cpp4
-rw-r--r--src/corelib/codecs/qtsciicodec_p.h4
-rw-r--r--src/corelib/codecs/qutfcodec.cpp7
-rw-r--r--src/corelib/codecs/qutfcodec_p.h4
-rw-r--r--src/corelib/concurrent/qfuture.cpp4
-rw-r--r--src/corelib/concurrent/qfuture.h4
-rw-r--r--src/corelib/concurrent/qfutureinterface.cpp4
-rw-r--r--src/corelib/concurrent/qfutureinterface.h4
-rw-r--r--src/corelib/concurrent/qfutureinterface_p.h4
-rw-r--r--src/corelib/concurrent/qfuturesynchronizer.cpp4
-rw-r--r--src/corelib/concurrent/qfuturesynchronizer.h4
-rw-r--r--src/corelib/concurrent/qfuturewatcher.cpp4
-rw-r--r--src/corelib/concurrent/qfuturewatcher.h4
-rw-r--r--src/corelib/concurrent/qfuturewatcher_p.h4
-rw-r--r--src/corelib/concurrent/qrunnable.cpp4
-rw-r--r--src/corelib/concurrent/qrunnable.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentcompilertest.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentexception.cpp4
-rw-r--r--src/corelib/concurrent/qtconcurrentexception.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentfilter.cpp4
-rw-r--r--src/corelib/concurrent/qtconcurrentfilter.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentfilterkernel.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentfunctionwrappers.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentiteratekernel.cpp4
-rw-r--r--src/corelib/concurrent/qtconcurrentiteratekernel.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentmap.cpp4
-rw-r--r--src/corelib/concurrent/qtconcurrentmap.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentmapkernel.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentmedian.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentreducekernel.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentresultstore.cpp4
-rw-r--r--src/corelib/concurrent/qtconcurrentresultstore.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentrun.cpp4
-rw-r--r--src/corelib/concurrent/qtconcurrentrun.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentrunbase.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentstoredfunctioncall.h4
-rw-r--r--src/corelib/concurrent/qtconcurrentthreadengine.cpp4
-rw-r--r--src/corelib/concurrent/qtconcurrentthreadengine.h4
-rw-r--r--src/corelib/concurrent/qthreadpool.cpp4
-rw-r--r--src/corelib/concurrent/qthreadpool.h4
-rw-r--r--src/corelib/concurrent/qthreadpool_p.h4
-rw-r--r--src/corelib/global/qconfig-dist.h4
-rw-r--r--src/corelib/global/qconfig-large.h4
-rw-r--r--src/corelib/global/qconfig-medium.h4
-rw-r--r--src/corelib/global/qconfig-minimal.h4
-rw-r--r--src/corelib/global/qconfig-small.h4
-rw-r--r--src/corelib/global/qendian.h4
-rw-r--r--src/corelib/global/qfeatures.h4
-rw-r--r--src/corelib/global/qglobal.cpp4
-rw-r--r--src/corelib/global/qglobal.h4
-rw-r--r--src/corelib/global/qlibraryinfo.cpp6
-rw-r--r--src/corelib/global/qlibraryinfo.h4
-rw-r--r--src/corelib/global/qmalloc.cpp4
-rw-r--r--src/corelib/global/qnamespace.h8
-rw-r--r--src/corelib/global/qnumeric.cpp4
-rw-r--r--src/corelib/global/qnumeric.h4
-rw-r--r--src/corelib/global/qnumeric_p.h4
-rw-r--r--src/corelib/global/qt_pch.h4
-rw-r--r--src/corelib/global/qt_windows.h4
-rw-r--r--src/corelib/io/qabstractfileengine.cpp6
-rw-r--r--src/corelib/io/qabstractfileengine.h7
-rw-r--r--src/corelib/io/qabstractfileengine_p.h4
-rw-r--r--src/corelib/io/qbuffer.cpp4
-rw-r--r--src/corelib/io/qbuffer.h4
-rw-r--r--src/corelib/io/qdatastream.cpp4
-rw-r--r--src/corelib/io/qdatastream.h4
-rw-r--r--src/corelib/io/qdebug.cpp4
-rw-r--r--src/corelib/io/qdebug.h4
-rw-r--r--src/corelib/io/qdir.cpp4
-rw-r--r--src/corelib/io/qdir.h4
-rw-r--r--src/corelib/io/qdiriterator.cpp121
-rw-r--r--src/corelib/io/qdiriterator.h4
-rw-r--r--src/corelib/io/qfile.cpp6
-rw-r--r--src/corelib/io/qfile.h4
-rw-r--r--src/corelib/io/qfile_p.h4
-rw-r--r--src/corelib/io/qfileinfo.cpp11
-rw-r--r--src/corelib/io/qfileinfo.h4
-rw-r--r--src/corelib/io/qfileinfo_p.h9
-rw-r--r--src/corelib/io/qfilesystemwatcher.cpp4
-rw-r--r--src/corelib/io/qfilesystemwatcher.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_dnotify.cpp4
-rw-r--r--src/corelib/io/qfilesystemwatcher_dnotify_p.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify.cpp4
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify_p.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue.cpp4
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue_p.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_p.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_win.cpp4
-rw-r--r--src/corelib/io/qfilesystemwatcher_win_p.h4
-rw-r--r--src/corelib/io/qfsfileengine.cpp4
-rw-r--r--src/corelib/io/qfsfileengine.h4
-rw-r--r--src/corelib/io/qfsfileengine_iterator.cpp4
-rw-r--r--src/corelib/io/qfsfileengine_iterator_p.h4
-rw-r--r--src/corelib/io/qfsfileengine_iterator_unix.cpp4
-rw-r--r--src/corelib/io/qfsfileengine_iterator_win.cpp4
-rw-r--r--src/corelib/io/qfsfileengine_p.h4
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp4
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp4
-rw-r--r--src/corelib/io/qiodevice.cpp8
-rw-r--r--src/corelib/io/qiodevice.h4
-rw-r--r--src/corelib/io/qiodevice_p.h4
-rw-r--r--src/corelib/io/qnoncontiguousbytedevice.cpp4
-rw-r--r--src/corelib/io/qnoncontiguousbytedevice_p.h4
-rw-r--r--src/corelib/io/qprocess.cpp4
-rw-r--r--src/corelib/io/qprocess.h4
-rw-r--r--src/corelib/io/qprocess_p.h4
-rw-r--r--src/corelib/io/qprocess_unix.cpp4
-rw-r--r--src/corelib/io/qprocess_win.cpp4
-rw-r--r--src/corelib/io/qresource.cpp4
-rw-r--r--src/corelib/io/qresource.h4
-rw-r--r--src/corelib/io/qresource_iterator.cpp4
-rw-r--r--src/corelib/io/qresource_iterator_p.h4
-rw-r--r--src/corelib/io/qresource_p.h4
-rw-r--r--src/corelib/io/qsettings.cpp4
-rw-r--r--src/corelib/io/qsettings.h4
-rw-r--r--src/corelib/io/qsettings_mac.cpp4
-rw-r--r--src/corelib/io/qsettings_p.h4
-rw-r--r--src/corelib/io/qsettings_win.cpp4
-rw-r--r--src/corelib/io/qtemporaryfile.cpp4
-rw-r--r--src/corelib/io/qtemporaryfile.h4
-rw-r--r--src/corelib/io/qtextstream.cpp4
-rw-r--r--src/corelib/io/qtextstream.h4
-rw-r--r--src/corelib/io/qurl.cpp4
-rw-r--r--src/corelib/io/qurl.h4
-rw-r--r--src/corelib/io/qwindowspipewriter.cpp4
-rw-r--r--src/corelib/io/qwindowspipewriter_p.h4
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.cpp4
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.h4
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher_p.h4
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp4
-rw-r--r--src/corelib/kernel/qabstractitemmodel.h4
-rw-r--r--src/corelib/kernel/qabstractitemmodel_p.h4
-rw-r--r--src/corelib/kernel/qbasictimer.cpp4
-rw-r--r--src/corelib/kernel/qbasictimer.h4
-rw-r--r--src/corelib/kernel/qcore_mac.cpp4
-rw-r--r--src/corelib/kernel/qcore_mac_p.h4
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp4
-rw-r--r--src/corelib/kernel/qcoreapplication.h4
-rw-r--r--src/corelib/kernel/qcoreapplication_mac.cpp4
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h4
-rw-r--r--src/corelib/kernel/qcoreapplication_win.cpp4
-rw-r--r--src/corelib/kernel/qcorecmdlineargs_p.h4
-rw-r--r--src/corelib/kernel/qcoreevent.cpp4
-rw-r--r--src/corelib/kernel/qcoreevent.h4
-rw-r--r--src/corelib/kernel/qcoreglobaldata.cpp4
-rw-r--r--src/corelib/kernel/qcoreglobaldata_p.h4
-rw-r--r--src/corelib/kernel/qcrashhandler.cpp4
-rw-r--r--src/corelib/kernel/qcrashhandler_p.h4
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib.cpp4
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib_p.h4
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix.cpp4
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix_p.h4
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp4
-rw-r--r--src/corelib/kernel/qeventdispatcher_win_p.h4
-rw-r--r--src/corelib/kernel/qeventloop.cpp4
-rw-r--r--src/corelib/kernel/qeventloop.h4
-rw-r--r--src/corelib/kernel/qfunctions_p.h4
-rw-r--r--src/corelib/kernel/qfunctions_wince.cpp4
-rw-r--r--src/corelib/kernel/qfunctions_wince.h4
-rw-r--r--src/corelib/kernel/qmath.h4
-rw-r--r--src/corelib/kernel/qmetaobject.cpp4
-rw-r--r--src/corelib/kernel/qmetaobject.h4
-rw-r--r--src/corelib/kernel/qmetaobject_p.h4
-rw-r--r--src/corelib/kernel/qmetatype.cpp4
-rw-r--r--src/corelib/kernel/qmetatype.h4
-rw-r--r--src/corelib/kernel/qmimedata.cpp4
-rw-r--r--src/corelib/kernel/qmimedata.h4
-rw-r--r--src/corelib/kernel/qobject.cpp4
-rw-r--r--src/corelib/kernel/qobject.h4
-rw-r--r--src/corelib/kernel/qobject_p.h4
-rw-r--r--src/corelib/kernel/qobjectcleanuphandler.cpp4
-rw-r--r--src/corelib/kernel/qobjectcleanuphandler.h4
-rw-r--r--src/corelib/kernel/qobjectdefs.h4
-rw-r--r--src/corelib/kernel/qpointer.cpp4
-rw-r--r--src/corelib/kernel/qpointer.h4
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp4
-rw-r--r--src/corelib/kernel/qsharedmemory.h4
-rw-r--r--src/corelib/kernel/qsharedmemory_p.h4
-rw-r--r--src/corelib/kernel/qsharedmemory_unix.cpp4
-rw-r--r--src/corelib/kernel/qsharedmemory_win.cpp4
-rw-r--r--src/corelib/kernel/qsignalmapper.cpp4
-rw-r--r--src/corelib/kernel/qsignalmapper.h4
-rw-r--r--src/corelib/kernel/qsocketnotifier.cpp4
-rw-r--r--src/corelib/kernel/qsocketnotifier.h4
-rw-r--r--src/corelib/kernel/qsystemsemaphore.cpp4
-rw-r--r--src/corelib/kernel/qsystemsemaphore.h4
-rw-r--r--src/corelib/kernel/qsystemsemaphore_p.h4
-rw-r--r--src/corelib/kernel/qsystemsemaphore_unix.cpp4
-rw-r--r--src/corelib/kernel/qsystemsemaphore_win.cpp4
-rw-r--r--src/corelib/kernel/qtimer.cpp4
-rw-r--r--src/corelib/kernel/qtimer.h4
-rw-r--r--src/corelib/kernel/qtranslator.cpp4
-rw-r--r--src/corelib/kernel/qtranslator.h4
-rw-r--r--src/corelib/kernel/qtranslator_p.h4
-rw-r--r--src/corelib/kernel/qvariant.cpp4
-rw-r--r--src/corelib/kernel/qvariant.h4
-rw-r--r--src/corelib/kernel/qvariant_p.h4
-rw-r--r--src/corelib/kernel/qwineventnotifier_p.cpp4
-rw-r--r--src/corelib/kernel/qwineventnotifier_p.h4
-rw-r--r--src/corelib/plugin/qfactoryinterface.h4
-rw-r--r--src/corelib/plugin/qfactoryloader.cpp4
-rw-r--r--src/corelib/plugin/qfactoryloader_p.h4
-rw-r--r--src/corelib/plugin/qlibrary.cpp4
-rw-r--r--src/corelib/plugin/qlibrary.h4
-rw-r--r--src/corelib/plugin/qlibrary_p.h4
-rw-r--r--src/corelib/plugin/qlibrary_unix.cpp4
-rw-r--r--src/corelib/plugin/qlibrary_win.cpp4
-rw-r--r--src/corelib/plugin/qplugin.h4
-rw-r--r--src/corelib/plugin/qpluginloader.cpp4
-rw-r--r--src/corelib/plugin/qpluginloader.h4
-rw-r--r--src/corelib/plugin/quuid.cpp4
-rw-r--r--src/corelib/plugin/quuid.h4
-rw-r--r--src/corelib/statemachine/qabstractstate.cpp4
-rw-r--r--src/corelib/statemachine/qabstractstate.h7
-rw-r--r--src/corelib/statemachine/qabstractstate_p.h4
-rw-r--r--src/corelib/statemachine/qabstracttransition.cpp19
-rw-r--r--src/corelib/statemachine/qabstracttransition.h10
-rw-r--r--src/corelib/statemachine/qabstracttransition_p.h5
-rw-r--r--src/corelib/statemachine/qeventtransition.cpp4
-rw-r--r--src/corelib/statemachine/qeventtransition.h4
-rw-r--r--src/corelib/statemachine/qeventtransition_p.h4
-rw-r--r--src/corelib/statemachine/qfinalstate.cpp4
-rw-r--r--src/corelib/statemachine/qfinalstate.h4
-rw-r--r--src/corelib/statemachine/qhistorystate.cpp4
-rw-r--r--src/corelib/statemachine/qhistorystate.h4
-rw-r--r--src/corelib/statemachine/qhistorystate_p.h4
-rw-r--r--src/corelib/statemachine/qsignalevent.h4
-rw-r--r--src/corelib/statemachine/qsignaleventgenerator_p.h4
-rw-r--r--src/corelib/statemachine/qsignaltransition.cpp4
-rw-r--r--src/corelib/statemachine/qsignaltransition.h4
-rw-r--r--src/corelib/statemachine/qsignaltransition_p.h4
-rw-r--r--src/corelib/statemachine/qstate.cpp4
-rw-r--r--src/corelib/statemachine/qstate.h4
-rw-r--r--src/corelib/statemachine/qstate_p.h4
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp9
-rw-r--r--src/corelib/statemachine/qstatemachine.h4
-rw-r--r--src/corelib/statemachine/qstatemachine_p.h4
-rw-r--r--src/corelib/statemachine/qwrappedevent.h4
-rw-r--r--src/corelib/thread/qatomic.cpp4
-rw-r--r--src/corelib/thread/qatomic.h4
-rw-r--r--src/corelib/thread/qbasicatomic.h4
-rw-r--r--src/corelib/thread/qmutex.cpp4
-rw-r--r--src/corelib/thread/qmutex.h4
-rw-r--r--src/corelib/thread/qmutex_p.h4
-rw-r--r--src/corelib/thread/qmutex_unix.cpp4
-rw-r--r--src/corelib/thread/qmutex_win.cpp4
-rw-r--r--src/corelib/thread/qmutexpool.cpp4
-rw-r--r--src/corelib/thread/qmutexpool_p.h4
-rw-r--r--src/corelib/thread/qorderedmutexlocker_p.h4
-rw-r--r--src/corelib/thread/qreadwritelock.cpp4
-rw-r--r--src/corelib/thread/qreadwritelock.h4
-rw-r--r--src/corelib/thread/qreadwritelock_p.h4
-rw-r--r--src/corelib/thread/qsemaphore.cpp4
-rw-r--r--src/corelib/thread/qsemaphore.h4
-rw-r--r--src/corelib/thread/qthread.cpp4
-rw-r--r--src/corelib/thread/qthread.h4
-rw-r--r--src/corelib/thread/qthread_p.h4
-rw-r--r--src/corelib/thread/qthread_unix.cpp4
-rw-r--r--src/corelib/thread/qthread_win.cpp4
-rw-r--r--src/corelib/thread/qthreadstorage.cpp4
-rw-r--r--src/corelib/thread/qthreadstorage.h4
-rw-r--r--src/corelib/thread/qwaitcondition.h4
-rw-r--r--src/corelib/thread/qwaitcondition_unix.cpp4
-rw-r--r--src/corelib/thread/qwaitcondition_win.cpp4
-rw-r--r--src/corelib/tools/qalgorithms.h4
-rw-r--r--src/corelib/tools/qbitarray.cpp4
-rw-r--r--src/corelib/tools/qbitarray.h4
-rw-r--r--src/corelib/tools/qbytearray.cpp4
-rw-r--r--src/corelib/tools/qbytearray.h4
-rw-r--r--src/corelib/tools/qbytearraymatcher.cpp4
-rw-r--r--src/corelib/tools/qbytearraymatcher.h4
-rw-r--r--src/corelib/tools/qcache.h4
-rw-r--r--src/corelib/tools/qchar.cpp4
-rw-r--r--src/corelib/tools/qchar.h4
-rw-r--r--src/corelib/tools/qcontainerfwd.h4
-rw-r--r--src/corelib/tools/qcontiguouscache.cpp4
-rw-r--r--src/corelib/tools/qcontiguouscache.h4
-rw-r--r--src/corelib/tools/qcryptographichash.cpp4
-rw-r--r--src/corelib/tools/qcryptographichash.h4
-rw-r--r--src/corelib/tools/qdatetime.cpp4
-rw-r--r--src/corelib/tools/qdatetime.h4
-rw-r--r--src/corelib/tools/qdatetime_p.h4
-rw-r--r--src/corelib/tools/qeasingcurve.cpp4
-rw-r--r--src/corelib/tools/qeasingcurve.h4
-rw-r--r--src/corelib/tools/qharfbuzz.cpp4
-rw-r--r--src/corelib/tools/qharfbuzz_p.h4
-rw-r--r--src/corelib/tools/qhash.cpp4
-rw-r--r--src/corelib/tools/qhash.h4
-rw-r--r--src/corelib/tools/qiterator.h4
-rw-r--r--src/corelib/tools/qline.cpp4
-rw-r--r--src/corelib/tools/qline.h4
-rw-r--r--src/corelib/tools/qlinkedlist.cpp4
-rw-r--r--src/corelib/tools/qlinkedlist.h4
-rw-r--r--src/corelib/tools/qlist.h4
-rw-r--r--src/corelib/tools/qlistdata.cpp4
-rw-r--r--src/corelib/tools/qlocale.cpp10
-rw-r--r--src/corelib/tools/qlocale.h4
-rw-r--r--src/corelib/tools/qlocale_data_p.h4
-rw-r--r--src/corelib/tools/qlocale_p.h4
-rw-r--r--src/corelib/tools/qmap.cpp4
-rw-r--r--src/corelib/tools/qmap.h4
-rw-r--r--src/corelib/tools/qpair.h4
-rw-r--r--src/corelib/tools/qpodlist_p.h4
-rw-r--r--src/corelib/tools/qpoint.cpp4
-rw-r--r--src/corelib/tools/qpoint.h4
-rw-r--r--src/corelib/tools/qqueue.cpp4
-rw-r--r--src/corelib/tools/qqueue.h4
-rw-r--r--src/corelib/tools/qrect.cpp4
-rw-r--r--src/corelib/tools/qrect.h4
-rw-r--r--src/corelib/tools/qregexp.cpp4
-rw-r--r--src/corelib/tools/qregexp.h4
-rw-r--r--src/corelib/tools/qringbuffer_p.h4
-rw-r--r--src/corelib/tools/qset.h4
-rw-r--r--src/corelib/tools/qshareddata.cpp4
-rw-r--r--src/corelib/tools/qshareddata.h4
-rw-r--r--src/corelib/tools/qsharedpointer.cpp4
-rw-r--r--src/corelib/tools/qsharedpointer.h4
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h4
-rw-r--r--src/corelib/tools/qsize.cpp4
-rw-r--r--src/corelib/tools/qsize.h4
-rw-r--r--src/corelib/tools/qstack.cpp4
-rw-r--r--src/corelib/tools/qstack.h4
-rw-r--r--src/corelib/tools/qstring.cpp92
-rw-r--r--src/corelib/tools/qstring.h7
-rw-r--r--src/corelib/tools/qstringbuilder.cpp60
-rw-r--r--src/corelib/tools/qstringbuilder.h15
-rw-r--r--src/corelib/tools/qstringlist.cpp4
-rw-r--r--src/corelib/tools/qstringlist.h4
-rw-r--r--src/corelib/tools/qstringmatcher.cpp4
-rw-r--r--src/corelib/tools/qstringmatcher.h4
-rw-r--r--src/corelib/tools/qtextboundaryfinder.cpp4
-rw-r--r--src/corelib/tools/qtextboundaryfinder.h4
-rw-r--r--src/corelib/tools/qtimeline.cpp4
-rw-r--r--src/corelib/tools/qtimeline.h4
-rw-r--r--src/corelib/tools/qtools_p.h4
-rw-r--r--src/corelib/tools/qunicodetables.cpp4
-rw-r--r--src/corelib/tools/qunicodetables_p.h4
-rw-r--r--src/corelib/tools/qvarlengtharray.h4
-rw-r--r--src/corelib/tools/qvector.cpp4
-rw-r--r--src/corelib/tools/qvector.h4
-rw-r--r--src/corelib/tools/qvsnprintf.cpp4
-rw-r--r--src/corelib/xml/qxmlstream.cpp4
-rw-r--r--src/corelib/xml/qxmlstream.g4
-rw-r--r--src/corelib/xml/qxmlstream.h4
-rw-r--r--src/corelib/xml/qxmlstream_p.h4
-rw-r--r--src/corelib/xml/qxmlutils.cpp4
-rw-r--r--src/corelib/xml/qxmlutils_p.h4
-rw-r--r--src/dbus/qdbus_symbols.cpp4
-rw-r--r--src/dbus/qdbus_symbols_p.h4
-rw-r--r--src/dbus/qdbusabstractadaptor.cpp4
-rw-r--r--src/dbus/qdbusabstractadaptor.h4
-rw-r--r--src/dbus/qdbusabstractadaptor_p.h4
-rw-r--r--src/dbus/qdbusabstractinterface.cpp4
-rw-r--r--src/dbus/qdbusabstractinterface.h4
-rw-r--r--src/dbus/qdbusabstractinterface_p.h4
-rw-r--r--src/dbus/qdbusargument.cpp4
-rw-r--r--src/dbus/qdbusargument.h4
-rw-r--r--src/dbus/qdbusargument_p.h4
-rw-r--r--src/dbus/qdbusconnection.cpp4
-rw-r--r--src/dbus/qdbusconnection.h4
-rw-r--r--src/dbus/qdbusconnection_p.h4
-rw-r--r--src/dbus/qdbusconnectioninterface.cpp4
-rw-r--r--src/dbus/qdbusconnectioninterface.h4
-rw-r--r--src/dbus/qdbuscontext.cpp4
-rw-r--r--src/dbus/qdbuscontext.h4
-rw-r--r--src/dbus/qdbuscontext_p.h4
-rw-r--r--src/dbus/qdbusdemarshaller.cpp4
-rw-r--r--src/dbus/qdbuserror.cpp4
-rw-r--r--src/dbus/qdbuserror.h4
-rw-r--r--src/dbus/qdbusextratypes.cpp4
-rw-r--r--src/dbus/qdbusextratypes.h4
-rw-r--r--src/dbus/qdbusintegrator.cpp4
-rw-r--r--src/dbus/qdbusintegrator_p.h4
-rw-r--r--src/dbus/qdbusinterface.cpp4
-rw-r--r--src/dbus/qdbusinterface.h4
-rw-r--r--src/dbus/qdbusinterface_p.h4
-rw-r--r--src/dbus/qdbusinternalfilters.cpp4
-rw-r--r--src/dbus/qdbusintrospection.cpp4
-rw-r--r--src/dbus/qdbusintrospection_p.h4
-rw-r--r--src/dbus/qdbusmacros.h4
-rw-r--r--src/dbus/qdbusmarshaller.cpp4
-rw-r--r--src/dbus/qdbusmessage.cpp4
-rw-r--r--src/dbus/qdbusmessage.h4
-rw-r--r--src/dbus/qdbusmessage_p.h4
-rw-r--r--src/dbus/qdbusmetaobject.cpp4
-rw-r--r--src/dbus/qdbusmetaobject_p.h4
-rw-r--r--src/dbus/qdbusmetatype.cpp4
-rw-r--r--src/dbus/qdbusmetatype.h4
-rw-r--r--src/dbus/qdbusmetatype_p.h4
-rw-r--r--src/dbus/qdbusmisc.cpp4
-rw-r--r--src/dbus/qdbuspendingcall.cpp4
-rw-r--r--src/dbus/qdbuspendingcall.h4
-rw-r--r--src/dbus/qdbuspendingcall_p.h4
-rw-r--r--src/dbus/qdbuspendingreply.cpp4
-rw-r--r--src/dbus/qdbuspendingreply.h4
-rw-r--r--src/dbus/qdbusreply.cpp4
-rw-r--r--src/dbus/qdbusreply.h4
-rw-r--r--src/dbus/qdbusserver.cpp4
-rw-r--r--src/dbus/qdbusserver.h4
-rw-r--r--src/dbus/qdbusthread.cpp4
-rw-r--r--src/dbus/qdbusthreaddebug_p.h4
-rw-r--r--src/dbus/qdbusutil.cpp4
-rw-r--r--src/dbus/qdbusutil_p.h4
-rw-r--r--src/dbus/qdbusxmlgenerator.cpp4
-rw-r--r--src/dbus/qdbusxmlparser.cpp4
-rw-r--r--src/dbus/qdbusxmlparser_p.h4
-rw-r--r--src/gui/accessible/qaccessible.cpp4
-rw-r--r--src/gui/accessible/qaccessible.h4
-rw-r--r--src/gui/accessible/qaccessible2.cpp4
-rw-r--r--src/gui/accessible/qaccessible2.h4
-rw-r--r--src/gui/accessible/qaccessible_mac.mm4
-rw-r--r--src/gui/accessible/qaccessible_mac_carbon.cpp4
-rw-r--r--src/gui/accessible/qaccessible_mac_p.h4
-rw-r--r--src/gui/accessible/qaccessible_unix.cpp4
-rw-r--r--src/gui/accessible/qaccessible_win.cpp4
-rw-r--r--src/gui/accessible/qaccessiblebridge.cpp4
-rw-r--r--src/gui/accessible/qaccessiblebridge.h4
-rw-r--r--src/gui/accessible/qaccessibleobject.cpp4
-rw-r--r--src/gui/accessible/qaccessibleobject.h4
-rw-r--r--src/gui/accessible/qaccessibleplugin.cpp4
-rw-r--r--src/gui/accessible/qaccessibleplugin.h4
-rw-r--r--src/gui/accessible/qaccessiblewidget.cpp4
-rw-r--r--src/gui/accessible/qaccessiblewidget.h4
-rw-r--r--src/gui/animation/qguivariantanimation.cpp4
-rw-r--r--src/gui/dialogs/qabstractpagesetupdialog.cpp4
-rw-r--r--src/gui/dialogs/qabstractpagesetupdialog.h4
-rw-r--r--src/gui/dialogs/qabstractpagesetupdialog_p.h4
-rw-r--r--src/gui/dialogs/qabstractprintdialog.cpp4
-rw-r--r--src/gui/dialogs/qabstractprintdialog.h4
-rw-r--r--src/gui/dialogs/qabstractprintdialog_p.h4
-rw-r--r--src/gui/dialogs/qcolordialog.cpp4
-rw-r--r--src/gui/dialogs/qcolordialog.h4
-rw-r--r--src/gui/dialogs/qcolordialog_mac.mm4
-rw-r--r--src/gui/dialogs/qcolordialog_p.h4
-rw-r--r--src/gui/dialogs/qdialog.cpp4
-rw-r--r--src/gui/dialogs/qdialog.h4
-rw-r--r--src/gui/dialogs/qdialog_p.h4
-rw-r--r--src/gui/dialogs/qdialogsbinarycompat_win.cpp4
-rw-r--r--src/gui/dialogs/qerrormessage.cpp4
-rw-r--r--src/gui/dialogs/qerrormessage.h4
-rw-r--r--src/gui/dialogs/qfiledialog.cpp4
-rw-r--r--src/gui/dialogs/qfiledialog.h4
-rw-r--r--src/gui/dialogs/qfiledialog.ui4
-rw-r--r--src/gui/dialogs/qfiledialog_mac.mm4
-rw-r--r--src/gui/dialogs/qfiledialog_p.h7
-rw-r--r--src/gui/dialogs/qfiledialog_win.cpp4
-rw-r--r--src/gui/dialogs/qfiledialog_wince.ui2
-rw-r--r--src/gui/dialogs/qfileinfogatherer.cpp4
-rw-r--r--src/gui/dialogs/qfileinfogatherer_p.h4
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp4
-rw-r--r--src/gui/dialogs/qfilesystemmodel.h4
-rw-r--r--src/gui/dialogs/qfilesystemmodel_p.h4
-rw-r--r--src/gui/dialogs/qfontdialog.cpp15
-rw-r--r--src/gui/dialogs/qfontdialog.h4
-rw-r--r--src/gui/dialogs/qfontdialog_mac.mm4
-rw-r--r--src/gui/dialogs/qfontdialog_p.h4
-rw-r--r--src/gui/dialogs/qinputdialog.cpp12
-rw-r--r--src/gui/dialogs/qinputdialog.h4
-rw-r--r--src/gui/dialogs/qmessagebox.cpp4
-rw-r--r--src/gui/dialogs/qmessagebox.h4
-rw-r--r--src/gui/dialogs/qnspanelproxy_mac.mm4
-rw-r--r--src/gui/dialogs/qpagesetupdialog.cpp4
-rw-r--r--src/gui/dialogs/qpagesetupdialog.h4
-rw-r--r--src/gui/dialogs/qpagesetupdialog_mac.mm4
-rw-r--r--src/gui/dialogs/qpagesetupdialog_unix.cpp4
-rw-r--r--src/gui/dialogs/qpagesetupdialog_unix_p.h4
-rw-r--r--src/gui/dialogs/qpagesetupdialog_win.cpp4
-rw-r--r--src/gui/dialogs/qprintdialog.h4
-rw-r--r--src/gui/dialogs/qprintdialog_mac.mm4
-rw-r--r--src/gui/dialogs/qprintdialog_qws.cpp4
-rw-r--r--src/gui/dialogs/qprintdialog_unix.cpp4
-rw-r--r--src/gui/dialogs/qprintdialog_win.cpp4
-rw-r--r--src/gui/dialogs/qprintpreviewdialog.cpp4
-rw-r--r--src/gui/dialogs/qprintpreviewdialog.h4
-rw-r--r--src/gui/dialogs/qprogressdialog.cpp4
-rw-r--r--src/gui/dialogs/qprogressdialog.h4
-rw-r--r--src/gui/dialogs/qsidebar.cpp4
-rw-r--r--src/gui/dialogs/qsidebar_p.h4
-rw-r--r--src/gui/dialogs/qwizard.cpp4
-rw-r--r--src/gui/dialogs/qwizard.h4
-rw-r--r--src/gui/dialogs/qwizard_win.cpp4
-rw-r--r--src/gui/dialogs/qwizard_win_p.h4
-rw-r--r--src/gui/embedded/qcopchannel_qws.cpp4
-rw-r--r--src/gui/embedded/qcopchannel_qws.h4
-rw-r--r--src/gui/embedded/qdecoration_qws.cpp4
-rw-r--r--src/gui/embedded/qdecoration_qws.h4
-rw-r--r--src/gui/embedded/qdecorationdefault_qws.cpp4
-rw-r--r--src/gui/embedded/qdecorationdefault_qws.h4
-rw-r--r--src/gui/embedded/qdecorationfactory_qws.cpp4
-rw-r--r--src/gui/embedded/qdecorationfactory_qws.h4
-rw-r--r--src/gui/embedded/qdecorationplugin_qws.cpp4
-rw-r--r--src/gui/embedded/qdecorationplugin_qws.h4
-rw-r--r--src/gui/embedded/qdecorationstyled_qws.cpp4
-rw-r--r--src/gui/embedded/qdecorationstyled_qws.h4
-rw-r--r--src/gui/embedded/qdecorationwindows_qws.cpp4
-rw-r--r--src/gui/embedded/qdecorationwindows_qws.h4
-rw-r--r--src/gui/embedded/qdirectpainter_qws.cpp4
-rw-r--r--src/gui/embedded/qdirectpainter_qws.h4
-rw-r--r--src/gui/embedded/qkbd_defaultmap_qws_p.h4
-rw-r--r--src/gui/embedded/qkbd_qws.cpp4
-rw-r--r--src/gui/embedded/qkbd_qws.h4
-rw-r--r--src/gui/embedded/qkbd_qws_p.h4
-rw-r--r--src/gui/embedded/qkbddriverfactory_qws.cpp4
-rw-r--r--src/gui/embedded/qkbddriverfactory_qws.h4
-rw-r--r--src/gui/embedded/qkbddriverplugin_qws.cpp4
-rw-r--r--src/gui/embedded/qkbddriverplugin_qws.h4
-rw-r--r--src/gui/embedded/qkbdlinuxinput_qws.cpp4
-rw-r--r--src/gui/embedded/qkbdlinuxinput_qws.h4
-rw-r--r--src/gui/embedded/qkbdsl5000_qws.cpp4
-rw-r--r--src/gui/embedded/qkbdsl5000_qws.h4
-rw-r--r--src/gui/embedded/qkbdtty_qws.cpp4
-rw-r--r--src/gui/embedded/qkbdtty_qws.h4
-rw-r--r--src/gui/embedded/qkbdum_qws.cpp4
-rw-r--r--src/gui/embedded/qkbdum_qws.h4
-rw-r--r--src/gui/embedded/qkbdvfb_qws.cpp4
-rw-r--r--src/gui/embedded/qkbdvfb_qws.h4
-rw-r--r--src/gui/embedded/qkbdvr41xx_qws.cpp4
-rw-r--r--src/gui/embedded/qkbdvr41xx_qws.h4
-rw-r--r--src/gui/embedded/qkbdyopy_qws.cpp4
-rw-r--r--src/gui/embedded/qkbdyopy_qws.h4
-rw-r--r--src/gui/embedded/qlock.cpp4
-rw-r--r--src/gui/embedded/qlock_p.h4
-rw-r--r--src/gui/embedded/qmouse_qws.cpp4
-rw-r--r--src/gui/embedded/qmouse_qws.h4
-rw-r--r--src/gui/embedded/qmousebus_qws.cpp4
-rw-r--r--src/gui/embedded/qmousebus_qws.h4
-rw-r--r--src/gui/embedded/qmousedriverfactory_qws.cpp4
-rw-r--r--src/gui/embedded/qmousedriverfactory_qws.h4
-rw-r--r--src/gui/embedded/qmousedriverplugin_qws.cpp4
-rw-r--r--src/gui/embedded/qmousedriverplugin_qws.h4
-rw-r--r--src/gui/embedded/qmouselinuxtp_qws.cpp4
-rw-r--r--src/gui/embedded/qmouselinuxtp_qws.h4
-rw-r--r--src/gui/embedded/qmousepc_qws.cpp4
-rw-r--r--src/gui/embedded/qmousepc_qws.h4
-rw-r--r--src/gui/embedded/qmousetslib_qws.cpp4
-rw-r--r--src/gui/embedded/qmousetslib_qws.h4
-rw-r--r--src/gui/embedded/qmousevfb_qws.cpp4
-rw-r--r--src/gui/embedded/qmousevfb_qws.h4
-rw-r--r--src/gui/embedded/qmousevr41xx_qws.cpp4
-rw-r--r--src/gui/embedded/qmousevr41xx_qws.h4
-rw-r--r--src/gui/embedded/qmouseyopy_qws.cpp4
-rw-r--r--src/gui/embedded/qmouseyopy_qws.h4
-rw-r--r--src/gui/embedded/qscreen_qws.cpp4
-rw-r--r--src/gui/embedded/qscreen_qws.h4
-rw-r--r--src/gui/embedded/qscreendriverfactory_qws.cpp4
-rw-r--r--src/gui/embedded/qscreendriverfactory_qws.h4
-rw-r--r--src/gui/embedded/qscreendriverplugin_qws.cpp4
-rw-r--r--src/gui/embedded/qscreendriverplugin_qws.h4
-rw-r--r--src/gui/embedded/qscreenlinuxfb_qws.cpp4
-rw-r--r--src/gui/embedded/qscreenlinuxfb_qws.h4
-rw-r--r--src/gui/embedded/qscreenmulti_qws.cpp4
-rw-r--r--src/gui/embedded/qscreenmulti_qws_p.h4
-rw-r--r--src/gui/embedded/qscreenproxy_qws.cpp4
-rw-r--r--src/gui/embedded/qscreenproxy_qws.h4
-rw-r--r--src/gui/embedded/qscreentransformed_qws.cpp4
-rw-r--r--src/gui/embedded/qscreentransformed_qws.h4
-rw-r--r--src/gui/embedded/qscreenvfb_qws.cpp4
-rw-r--r--src/gui/embedded/qscreenvfb_qws.h4
-rw-r--r--src/gui/embedded/qsoundqss_qws.cpp4
-rw-r--r--src/gui/embedded/qsoundqss_qws.h4
-rw-r--r--src/gui/embedded/qtransportauth_qws.cpp4
-rw-r--r--src/gui/embedded/qtransportauth_qws.h4
-rw-r--r--src/gui/embedded/qtransportauth_qws_p.h4
-rw-r--r--src/gui/embedded/qtransportauthdefs_qws.h4
-rw-r--r--src/gui/embedded/qunixsocket.cpp4
-rw-r--r--src/gui/embedded/qunixsocket_p.h4
-rw-r--r--src/gui/embedded/qunixsocketserver.cpp4
-rw-r--r--src/gui/embedded/qunixsocketserver_p.h4
-rw-r--r--src/gui/embedded/qvfbhdr.h4
-rw-r--r--src/gui/embedded/qwindowsystem_p.h4
-rw-r--r--src/gui/embedded/qwindowsystem_qws.cpp4
-rw-r--r--src/gui/embedded/qwindowsystem_qws.h4
-rw-r--r--src/gui/embedded/qwscommand_qws.cpp4
-rw-r--r--src/gui/embedded/qwscommand_qws_p.h4
-rw-r--r--src/gui/embedded/qwscursor_qws.cpp4
-rw-r--r--src/gui/embedded/qwscursor_qws.h4
-rw-r--r--src/gui/embedded/qwsdisplay_qws.h4
-rw-r--r--src/gui/embedded/qwsdisplay_qws_p.h4
-rw-r--r--src/gui/embedded/qwsembedwidget.cpp4
-rw-r--r--src/gui/embedded/qwsembedwidget.h4
-rw-r--r--src/gui/embedded/qwsevent_qws.cpp4
-rw-r--r--src/gui/embedded/qwsevent_qws.h4
-rw-r--r--src/gui/embedded/qwslock.cpp4
-rw-r--r--src/gui/embedded/qwslock_p.h4
-rw-r--r--src/gui/embedded/qwsmanager_p.h4
-rw-r--r--src/gui/embedded/qwsmanager_qws.cpp4
-rw-r--r--src/gui/embedded/qwsmanager_qws.h4
-rw-r--r--src/gui/embedded/qwsproperty_qws.cpp4
-rw-r--r--src/gui/embedded/qwsproperty_qws.h4
-rw-r--r--src/gui/embedded/qwsprotocolitem_qws.h4
-rw-r--r--src/gui/embedded/qwssharedmemory.cpp4
-rw-r--r--src/gui/embedded/qwssharedmemory_p.h4
-rw-r--r--src/gui/embedded/qwssignalhandler.cpp4
-rw-r--r--src/gui/embedded/qwssignalhandler_p.h4
-rw-r--r--src/gui/embedded/qwssocket_qws.cpp4
-rw-r--r--src/gui/embedded/qwssocket_qws.h4
-rw-r--r--src/gui/embedded/qwsutils_qws.h4
-rw-r--r--src/gui/graphicsview/qgraphicsgridlayout.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsgridlayout.h4
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp39
-rw-r--r--src/gui/graphicsview/qgraphicsitem.h4
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h42
-rw-r--r--src/gui/graphicsview/qgraphicsitemanimation.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsitemanimation.h4
-rw-r--r--src/gui/graphicsview/qgraphicslayout.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicslayout.h4
-rw-r--r--src/gui/graphicsview/qgraphicslayout_p.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicslayout_p.h4
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.h4
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem_p.h4
-rw-r--r--src/gui/graphicsview/qgraphicslinearlayout.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicslinearlayout.h4
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.h4
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget_p.h4
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp161
-rw-r--r--src/gui/graphicsview/qgraphicsscene.h4
-rw-r--r--src/gui/graphicsview/qgraphicsscene_bsp.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsscene_bsp_p.h4
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h9
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.h4
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp83
-rw-r--r--src/gui/graphicsview/qgraphicsview.h4
-rw-r--r--src/gui/graphicsview/qgraphicsview_p.h8
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicswidget.h4
-rw-r--r--src/gui/graphicsview/qgraphicswidget_p.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicswidget_p.h4
-rw-r--r--src/gui/graphicsview/qgridlayoutengine.cpp4
-rw-r--r--src/gui/graphicsview/qgridlayoutengine_p.h4
-rw-r--r--src/gui/image/qbitmap.cpp4
-rw-r--r--src/gui/image/qbitmap.h4
-rw-r--r--src/gui/image/qbmphandler.cpp4
-rw-r--r--src/gui/image/qbmphandler_p.h4
-rw-r--r--src/gui/image/qicon.cpp4
-rw-r--r--src/gui/image/qicon.h4
-rw-r--r--src/gui/image/qiconengine.cpp4
-rw-r--r--src/gui/image/qiconengine.h4
-rw-r--r--src/gui/image/qiconengineplugin.cpp4
-rw-r--r--src/gui/image/qiconengineplugin.h4
-rw-r--r--src/gui/image/qimage.cpp21
-rw-r--r--src/gui/image/qimage.h4
-rw-r--r--src/gui/image/qimage_p.h4
-rw-r--r--src/gui/image/qimageiohandler.cpp4
-rw-r--r--src/gui/image/qimageiohandler.h4
-rw-r--r--src/gui/image/qimagereader.cpp4
-rw-r--r--src/gui/image/qimagereader.h4
-rw-r--r--src/gui/image/qimagewriter.cpp4
-rw-r--r--src/gui/image/qimagewriter.h4
-rw-r--r--src/gui/image/qmovie.cpp4
-rw-r--r--src/gui/image/qmovie.h4
-rw-r--r--src/gui/image/qnativeimage.cpp4
-rw-r--r--src/gui/image/qnativeimage_p.h4
-rw-r--r--src/gui/image/qpaintengine_pic.cpp4
-rw-r--r--src/gui/image/qpaintengine_pic_p.h4
-rw-r--r--src/gui/image/qpicture.cpp4
-rw-r--r--src/gui/image/qpicture.h4
-rw-r--r--src/gui/image/qpicture_p.h4
-rw-r--r--src/gui/image/qpictureformatplugin.cpp4
-rw-r--r--src/gui/image/qpictureformatplugin.h4
-rw-r--r--src/gui/image/qpixmap.cpp19
-rw-r--r--src/gui/image/qpixmap.h10
-rw-r--r--src/gui/image/qpixmap_mac.cpp9
-rw-r--r--src/gui/image/qpixmap_mac_p.h5
-rw-r--r--src/gui/image/qpixmap_qws.cpp4
-rw-r--r--src/gui/image/qpixmap_raster.cpp18
-rw-r--r--src/gui/image/qpixmap_raster_p.h4
-rw-r--r--src/gui/image/qpixmap_win.cpp4
-rw-r--r--src/gui/image/qpixmap_x11.cpp14
-rw-r--r--src/gui/image/qpixmap_x11_p.h6
-rw-r--r--src/gui/image/qpixmapcache.cpp4
-rw-r--r--src/gui/image/qpixmapcache.h4
-rw-r--r--src/gui/image/qpixmapcache_p.h4
-rw-r--r--src/gui/image/qpixmapdata.cpp16
-rw-r--r--src/gui/image/qpixmapdata_p.h17
-rw-r--r--src/gui/image/qpixmapdatafactory.cpp4
-rw-r--r--src/gui/image/qpixmapdatafactory_p.h4
-rw-r--r--src/gui/image/qpixmapfilter.cpp4
-rw-r--r--src/gui/image/qpixmapfilter_p.h4
-rw-r--r--src/gui/image/qpnghandler.cpp4
-rw-r--r--src/gui/image/qpnghandler_p.h4
-rw-r--r--src/gui/image/qppmhandler.cpp4
-rw-r--r--src/gui/image/qppmhandler_p.h4
-rw-r--r--src/gui/image/qxbmhandler.cpp4
-rw-r--r--src/gui/image/qxbmhandler_p.h4
-rw-r--r--src/gui/image/qxpmhandler.cpp4
-rw-r--r--src/gui/image/qxpmhandler_p.h4
-rw-r--r--src/gui/inputmethod/qinputcontext.cpp10
-rw-r--r--src/gui/inputmethod/qinputcontext.h4
-rw-r--r--src/gui/inputmethod/qinputcontext_p.h4
-rw-r--r--src/gui/inputmethod/qinputcontextfactory.cpp4
-rw-r--r--src/gui/inputmethod/qinputcontextfactory.h4
-rw-r--r--src/gui/inputmethod/qinputcontextplugin.cpp4
-rw-r--r--src/gui/inputmethod/qinputcontextplugin.h4
-rw-r--r--src/gui/inputmethod/qmacinputcontext_mac.cpp4
-rw-r--r--src/gui/inputmethod/qmacinputcontext_p.h4
-rw-r--r--src/gui/inputmethod/qwininputcontext_p.h4
-rw-r--r--src/gui/inputmethod/qwininputcontext_win.cpp4
-rw-r--r--src/gui/inputmethod/qwsinputcontext_p.h4
-rw-r--r--src/gui/inputmethod/qwsinputcontext_qws.cpp4
-rw-r--r--src/gui/inputmethod/qximinputcontext_p.h4
-rw-r--r--src/gui/inputmethod/qximinputcontext_x11.cpp4
-rw-r--r--src/gui/itemviews/qabstractitemdelegate.cpp4
-rw-r--r--src/gui/itemviews/qabstractitemdelegate.h4
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp14
-rw-r--r--src/gui/itemviews/qabstractitemview.h4
-rw-r--r--src/gui/itemviews/qabstractitemview_p.h4
-rw-r--r--src/gui/itemviews/qabstractproxymodel.cpp4
-rw-r--r--src/gui/itemviews/qabstractproxymodel.h4
-rw-r--r--src/gui/itemviews/qabstractproxymodel_p.h4
-rw-r--r--src/gui/itemviews/qbsptree.cpp4
-rw-r--r--src/gui/itemviews/qbsptree_p.h4
-rw-r--r--src/gui/itemviews/qcolumnview.cpp4
-rw-r--r--src/gui/itemviews/qcolumnview.h4
-rw-r--r--src/gui/itemviews/qcolumnview_p.h4
-rw-r--r--src/gui/itemviews/qcolumnviewgrip.cpp4
-rw-r--r--src/gui/itemviews/qcolumnviewgrip_p.h4
-rw-r--r--src/gui/itemviews/qdatawidgetmapper.cpp4
-rw-r--r--src/gui/itemviews/qdatawidgetmapper.h4
-rw-r--r--src/gui/itemviews/qdirmodel.cpp4
-rw-r--r--src/gui/itemviews/qdirmodel.h4
-rw-r--r--src/gui/itemviews/qfileiconprovider.cpp4
-rw-r--r--src/gui/itemviews/qfileiconprovider.h4
-rw-r--r--src/gui/itemviews/qheaderview.cpp4
-rw-r--r--src/gui/itemviews/qheaderview.h4
-rw-r--r--src/gui/itemviews/qheaderview_p.h4
-rw-r--r--src/gui/itemviews/qitemdelegate.cpp4
-rw-r--r--src/gui/itemviews/qitemdelegate.h4
-rw-r--r--src/gui/itemviews/qitemeditorfactory.cpp20
-rw-r--r--src/gui/itemviews/qitemeditorfactory.h4
-rw-r--r--src/gui/itemviews/qitemeditorfactory_p.h4
-rw-r--r--src/gui/itemviews/qitemselectionmodel.cpp4
-rw-r--r--src/gui/itemviews/qitemselectionmodel.h4
-rw-r--r--src/gui/itemviews/qitemselectionmodel_p.h4
-rw-r--r--src/gui/itemviews/qlistview.cpp6
-rw-r--r--src/gui/itemviews/qlistview.h4
-rw-r--r--src/gui/itemviews/qlistview_p.h4
-rw-r--r--src/gui/itemviews/qlistwidget.cpp4
-rw-r--r--src/gui/itemviews/qlistwidget.h4
-rw-r--r--src/gui/itemviews/qlistwidget_p.h4
-rw-r--r--src/gui/itemviews/qproxymodel.cpp4
-rw-r--r--src/gui/itemviews/qproxymodel.h4
-rw-r--r--src/gui/itemviews/qproxymodel_p.h4
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp4
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.h4
-rw-r--r--src/gui/itemviews/qstandarditemmodel.cpp4
-rw-r--r--src/gui/itemviews/qstandarditemmodel.h4
-rw-r--r--src/gui/itemviews/qstandarditemmodel_p.h4
-rw-r--r--src/gui/itemviews/qstringlistmodel.cpp4
-rw-r--r--src/gui/itemviews/qstringlistmodel.h4
-rw-r--r--src/gui/itemviews/qstyleditemdelegate.cpp4
-rw-r--r--src/gui/itemviews/qstyleditemdelegate.h4
-rw-r--r--src/gui/itemviews/qtableview.cpp4
-rw-r--r--src/gui/itemviews/qtableview.h4
-rw-r--r--src/gui/itemviews/qtableview_p.h4
-rw-r--r--src/gui/itemviews/qtablewidget.cpp4
-rw-r--r--src/gui/itemviews/qtablewidget.h4
-rw-r--r--src/gui/itemviews/qtablewidget_p.h4
-rw-r--r--src/gui/itemviews/qtreeview.cpp4
-rw-r--r--src/gui/itemviews/qtreeview.h4
-rw-r--r--src/gui/itemviews/qtreeview_p.h4
-rw-r--r--src/gui/itemviews/qtreewidget.cpp4
-rw-r--r--src/gui/itemviews/qtreewidget.h4
-rw-r--r--src/gui/itemviews/qtreewidget_p.h4
-rw-r--r--src/gui/itemviews/qtreewidgetitemiterator.cpp4
-rw-r--r--src/gui/itemviews/qtreewidgetitemiterator.h4
-rw-r--r--src/gui/itemviews/qtreewidgetitemiterator_p.h4
-rw-r--r--src/gui/itemviews/qwidgetitemdata_p.h4
-rw-r--r--src/gui/kernel/qaction.cpp4
-rw-r--r--src/gui/kernel/qaction.h4
-rw-r--r--src/gui/kernel/qaction_p.h4
-rw-r--r--src/gui/kernel/qactiongroup.cpp4
-rw-r--r--src/gui/kernel/qactiongroup.h4
-rw-r--r--src/gui/kernel/qapplication.cpp91
-rw-r--r--src/gui/kernel/qapplication.h4
-rw-r--r--src/gui/kernel/qapplication_mac.mm4
-rw-r--r--src/gui/kernel/qapplication_p.h8
-rw-r--r--src/gui/kernel/qapplication_qws.cpp8
-rw-r--r--src/gui/kernel/qapplication_win.cpp4
-rw-r--r--src/gui/kernel/qapplication_x11.cpp239
-rw-r--r--src/gui/kernel/qboxlayout.cpp4
-rw-r--r--src/gui/kernel/qboxlayout.h4
-rw-r--r--src/gui/kernel/qclipboard.cpp4
-rw-r--r--src/gui/kernel/qclipboard.h4
-rw-r--r--src/gui/kernel/qclipboard_mac.cpp4
-rw-r--r--src/gui/kernel/qclipboard_p.h4
-rw-r--r--src/gui/kernel/qclipboard_qws.cpp4
-rw-r--r--src/gui/kernel/qclipboard_win.cpp4
-rw-r--r--src/gui/kernel/qclipboard_x11.cpp18
-rw-r--r--src/gui/kernel/qcocoaapplication_mac.mm4
-rw-r--r--src/gui/kernel/qcocoaapplication_mac_p.h4
-rw-r--r--src/gui/kernel/qcocoaapplicationdelegate_mac.mm4
-rw-r--r--src/gui/kernel/qcocoaapplicationdelegate_mac_p.h4
-rw-r--r--src/gui/kernel/qcocoamenuloader_mac.mm4
-rw-r--r--src/gui/kernel/qcocoamenuloader_mac_p.h4
-rw-r--r--src/gui/kernel/qcocoapanel_mac.mm4
-rw-r--r--src/gui/kernel/qcocoapanel_mac_p.h4
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm6
-rw-r--r--src/gui/kernel/qcocoaview_mac_p.h4
-rw-r--r--src/gui/kernel/qcocoawindow_mac.mm4
-rw-r--r--src/gui/kernel/qcocoawindow_mac_p.h4
-rw-r--r--src/gui/kernel/qcocoawindowcustomthemeframe_mac.mm4
-rw-r--r--src/gui/kernel/qcocoawindowcustomthemeframe_mac_p.h4
-rw-r--r--src/gui/kernel/qcocoawindowdelegate_mac.mm4
-rw-r--r--src/gui/kernel/qcocoawindowdelegate_mac_p.h4
-rw-r--r--src/gui/kernel/qcursor.cpp4
-rw-r--r--src/gui/kernel/qcursor.h7
-rw-r--r--src/gui/kernel/qcursor_mac.mm6
-rw-r--r--src/gui/kernel/qcursor_p.h5
-rw-r--r--src/gui/kernel/qcursor_qws.cpp4
-rw-r--r--src/gui/kernel/qcursor_win.cpp4
-rw-r--r--src/gui/kernel/qcursor_x11.cpp4
-rw-r--r--src/gui/kernel/qdesktopwidget.h4
-rw-r--r--src/gui/kernel/qdesktopwidget_mac.mm4
-rw-r--r--src/gui/kernel/qdesktopwidget_mac_p.h10
-rw-r--r--src/gui/kernel/qdesktopwidget_qws.cpp4
-rw-r--r--src/gui/kernel/qdesktopwidget_win.cpp4
-rw-r--r--src/gui/kernel/qdesktopwidget_x11.cpp4
-rw-r--r--src/gui/kernel/qdnd.cpp4
-rw-r--r--src/gui/kernel/qdnd_mac.mm4
-rw-r--r--src/gui/kernel/qdnd_p.h4
-rw-r--r--src/gui/kernel/qdnd_qws.cpp4
-rw-r--r--src/gui/kernel/qdnd_win.cpp4
-rw-r--r--src/gui/kernel/qdnd_x11.cpp4
-rw-r--r--src/gui/kernel/qdrag.cpp4
-rw-r--r--src/gui/kernel/qdrag.h4
-rw-r--r--src/gui/kernel/qevent.cpp4
-rw-r--r--src/gui/kernel/qevent.h4
-rw-r--r--src/gui/kernel/qevent_p.h4
-rw-r--r--src/gui/kernel/qeventdispatcher_glib_qws.cpp4
-rw-r--r--src/gui/kernel/qeventdispatcher_glib_qws_p.h4
-rw-r--r--src/gui/kernel/qeventdispatcher_mac.mm4
-rw-r--r--src/gui/kernel/qeventdispatcher_mac_p.h4
-rw-r--r--src/gui/kernel/qeventdispatcher_qws.cpp4
-rw-r--r--src/gui/kernel/qeventdispatcher_qws_p.h4
-rw-r--r--src/gui/kernel/qeventdispatcher_x11.cpp4
-rw-r--r--src/gui/kernel/qeventdispatcher_x11_p.h4
-rw-r--r--src/gui/kernel/qformlayout.cpp4
-rw-r--r--src/gui/kernel/qformlayout.h4
-rw-r--r--src/gui/kernel/qgridlayout.cpp4
-rw-r--r--src/gui/kernel/qgridlayout.h4
-rw-r--r--src/gui/kernel/qguieventdispatcher_glib.cpp4
-rw-r--r--src/gui/kernel/qguieventdispatcher_glib_p.h4
-rw-r--r--src/gui/kernel/qguifunctions_wince.cpp4
-rw-r--r--src/gui/kernel/qguifunctions_wince.h4
-rw-r--r--src/gui/kernel/qguivariant.cpp4
-rw-r--r--src/gui/kernel/qkeymapper.cpp4
-rw-r--r--src/gui/kernel/qkeymapper_mac.cpp4
-rw-r--r--src/gui/kernel/qkeymapper_p.h4
-rw-r--r--src/gui/kernel/qkeymapper_qws.cpp4
-rw-r--r--src/gui/kernel/qkeymapper_win.cpp4
-rw-r--r--src/gui/kernel/qkeymapper_x11.cpp4
-rw-r--r--src/gui/kernel/qkeymapper_x11_p.cpp4
-rw-r--r--src/gui/kernel/qkeysequence.cpp4
-rw-r--r--src/gui/kernel/qkeysequence.h4
-rw-r--r--src/gui/kernel/qkeysequence_p.h4
-rw-r--r--src/gui/kernel/qlayout.cpp4
-rw-r--r--src/gui/kernel/qlayout.h4
-rw-r--r--src/gui/kernel/qlayout_p.h4
-rw-r--r--src/gui/kernel/qlayoutengine.cpp4
-rw-r--r--src/gui/kernel/qlayoutengine_p.h4
-rw-r--r--src/gui/kernel/qlayoutitem.cpp4
-rw-r--r--src/gui/kernel/qlayoutitem.h4
-rw-r--r--src/gui/kernel/qmacdefines_mac.h4
-rw-r--r--src/gui/kernel/qmime.cpp4
-rw-r--r--src/gui/kernel/qmime.h4
-rw-r--r--src/gui/kernel/qmime_mac.cpp4
-rw-r--r--src/gui/kernel/qmime_win.cpp4
-rw-r--r--src/gui/kernel/qmotifdnd_x11.cpp4
-rw-r--r--src/gui/kernel/qnsframeview_mac_p.h4
-rw-r--r--src/gui/kernel/qnsthemeframe_mac_p.h4
-rw-r--r--src/gui/kernel/qnstitledframe_mac_p.h4
-rw-r--r--src/gui/kernel/qole_win.cpp4
-rw-r--r--src/gui/kernel/qpalette.cpp4
-rw-r--r--src/gui/kernel/qpalette.h4
-rw-r--r--src/gui/kernel/qsessionmanager.h4
-rw-r--r--src/gui/kernel/qsessionmanager_qws.cpp4
-rw-r--r--src/gui/kernel/qshortcut.cpp4
-rw-r--r--src/gui/kernel/qshortcut.h4
-rw-r--r--src/gui/kernel/qshortcutmap.cpp4
-rw-r--r--src/gui/kernel/qshortcutmap_p.h4
-rw-r--r--src/gui/kernel/qsizepolicy.h4
-rw-r--r--src/gui/kernel/qsound.cpp4
-rw-r--r--src/gui/kernel/qsound.h4
-rw-r--r--src/gui/kernel/qsound_mac.mm4
-rw-r--r--src/gui/kernel/qsound_p.h4
-rw-r--r--src/gui/kernel/qsound_qws.cpp4
-rw-r--r--src/gui/kernel/qsound_win.cpp4
-rw-r--r--src/gui/kernel/qsound_x11.cpp4
-rw-r--r--src/gui/kernel/qstackedlayout.cpp4
-rw-r--r--src/gui/kernel/qstackedlayout.h4
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac.mm4
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac_p.h4
-rw-r--r--src/gui/kernel/qt_gui_pch.h4
-rw-r--r--src/gui/kernel/qt_mac.cpp4
-rw-r--r--src/gui/kernel/qt_mac_p.h4
-rw-r--r--src/gui/kernel/qt_x11_p.h5
-rw-r--r--src/gui/kernel/qtooltip.cpp4
-rw-r--r--src/gui/kernel/qtooltip.h4
-rw-r--r--src/gui/kernel/qwhatsthis.cpp4
-rw-r--r--src/gui/kernel/qwhatsthis.h4
-rw-r--r--src/gui/kernel/qwidget.cpp6
-rw-r--r--src/gui/kernel/qwidget.h4
-rw-r--r--src/gui/kernel/qwidget_mac.mm4
-rw-r--r--src/gui/kernel/qwidget_p.h4
-rw-r--r--src/gui/kernel/qwidget_qws.cpp4
-rw-r--r--src/gui/kernel/qwidget_win.cpp4
-rw-r--r--src/gui/kernel/qwidget_wince.cpp4
-rw-r--r--src/gui/kernel/qwidget_x11.cpp4
-rw-r--r--src/gui/kernel/qwidgetaction.cpp4
-rw-r--r--src/gui/kernel/qwidgetaction.h4
-rw-r--r--src/gui/kernel/qwidgetaction_p.h4
-rw-r--r--src/gui/kernel/qwidgetcreate_x11.cpp4
-rw-r--r--src/gui/kernel/qwindowdefs.h4
-rw-r--r--src/gui/kernel/qwindowdefs_win.h4
-rw-r--r--src/gui/kernel/qx11embed_x11.cpp4
-rw-r--r--src/gui/kernel/qx11embed_x11.h4
-rw-r--r--src/gui/kernel/qx11info_x11.cpp4
-rw-r--r--src/gui/kernel/qx11info_x11.h4
-rw-r--r--src/gui/math3d/qgenericmatrix.cpp4
-rw-r--r--src/gui/math3d/qgenericmatrix.h4
-rw-r--r--src/gui/math3d/qmatrix4x4.cpp4
-rw-r--r--src/gui/math3d/qmatrix4x4.h4
-rw-r--r--src/gui/math3d/qquaternion.cpp4
-rw-r--r--src/gui/math3d/qquaternion.h4
-rw-r--r--src/gui/math3d/qvector2d.cpp4
-rw-r--r--src/gui/math3d/qvector2d.h4
-rw-r--r--src/gui/math3d/qvector3d.cpp4
-rw-r--r--src/gui/math3d/qvector3d.h4
-rw-r--r--src/gui/math3d/qvector4d.cpp4
-rw-r--r--src/gui/math3d/qvector4d.h4
-rw-r--r--src/gui/painting/qbackingstore.cpp4
-rw-r--r--src/gui/painting/qbackingstore_p.h4
-rw-r--r--src/gui/painting/qbezier.cpp4
-rw-r--r--src/gui/painting/qbezier_p.h4
-rw-r--r--src/gui/painting/qblendfunctions.cpp4
-rw-r--r--src/gui/painting/qbrush.cpp10
-rw-r--r--src/gui/painting/qbrush.h6
-rw-r--r--src/gui/painting/qcolor.cpp4
-rw-r--r--src/gui/painting/qcolor.h4
-rw-r--r--src/gui/painting/qcolor_p.cpp4
-rw-r--r--src/gui/painting/qcolor_p.h4
-rw-r--r--src/gui/painting/qcolormap.h4
-rw-r--r--src/gui/painting/qcolormap_mac.cpp4
-rw-r--r--src/gui/painting/qcolormap_qws.cpp4
-rw-r--r--src/gui/painting/qcolormap_win.cpp4
-rw-r--r--src/gui/painting/qcolormap_x11.cpp4
-rw-r--r--src/gui/painting/qcssutil.cpp4
-rw-r--r--src/gui/painting/qcssutil_p.h4
-rw-r--r--src/gui/painting/qcups.cpp4
-rw-r--r--src/gui/painting/qcups_p.h4
-rw-r--r--src/gui/painting/qdatabuffer_p.h4
-rw-r--r--src/gui/painting/qdrawhelper.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_iwmmxt.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_mmx.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_mmx3dnow.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_mmx_p.h4
-rw-r--r--src/gui/painting/qdrawhelper_p.h4
-rw-r--r--src/gui/painting/qdrawhelper_sse.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_sse2.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_sse3dnow.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_sse_p.h4
-rw-r--r--src/gui/painting/qdrawhelper_x86_p.h4
-rw-r--r--src/gui/painting/qdrawutil.cpp4
-rw-r--r--src/gui/painting/qdrawutil.h20
-rw-r--r--src/gui/painting/qemulationpaintengine.cpp4
-rw-r--r--src/gui/painting/qemulationpaintengine_p.h4
-rw-r--r--src/gui/painting/qfixed_p.h4
-rw-r--r--src/gui/painting/qgraphicssystem.cpp4
-rw-r--r--src/gui/painting/qgraphicssystem_mac.cpp4
-rw-r--r--src/gui/painting/qgraphicssystem_mac_p.h4
-rw-r--r--src/gui/painting/qgraphicssystem_p.h4
-rw-r--r--src/gui/painting/qgraphicssystem_qws.cpp4
-rw-r--r--src/gui/painting/qgraphicssystem_qws_p.h4
-rw-r--r--src/gui/painting/qgraphicssystem_raster.cpp4
-rw-r--r--src/gui/painting/qgraphicssystem_raster_p.h4
-rw-r--r--src/gui/painting/qgraphicssystemfactory.cpp4
-rw-r--r--src/gui/painting/qgraphicssystemfactory_p.h4
-rw-r--r--src/gui/painting/qgraphicssystemplugin.cpp4
-rw-r--r--src/gui/painting/qgraphicssystemplugin_p.h4
-rw-r--r--src/gui/painting/qgrayraster.c2
-rw-r--r--src/gui/painting/qgrayraster_p.h4
-rw-r--r--src/gui/painting/qimagescale.cpp4
-rw-r--r--src/gui/painting/qimagescale_p.h4
-rw-r--r--src/gui/painting/qmath_p.h4
-rw-r--r--src/gui/painting/qmatrix.cpp19
-rw-r--r--src/gui/painting/qmatrix.h16
-rw-r--r--src/gui/painting/qmemrotate.cpp4
-rw-r--r--src/gui/painting/qmemrotate_p.h4
-rw-r--r--src/gui/painting/qoutlinemapper.cpp4
-rw-r--r--src/gui/painting/qoutlinemapper_p.h4
-rw-r--r--src/gui/painting/qpaintdevice.h4
-rw-r--r--src/gui/painting/qpaintdevice_mac.cpp4
-rw-r--r--src/gui/painting/qpaintdevice_qws.cpp4
-rw-r--r--src/gui/painting/qpaintdevice_win.cpp4
-rw-r--r--src/gui/painting/qpaintdevice_x11.cpp4
-rw-r--r--src/gui/painting/qpaintengine.cpp7
-rw-r--r--src/gui/painting/qpaintengine.h4
-rw-r--r--src/gui/painting/qpaintengine_alpha.cpp4
-rw-r--r--src/gui/painting/qpaintengine_alpha_p.h4
-rw-r--r--src/gui/painting/qpaintengine_mac.cpp24
-rw-r--r--src/gui/painting/qpaintengine_mac_p.h4
-rw-r--r--src/gui/painting/qpaintengine_p.h4
-rw-r--r--src/gui/painting/qpaintengine_preview.cpp4
-rw-r--r--src/gui/painting/qpaintengine_preview_p.h4
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp6
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h4
-rw-r--r--src/gui/painting/qpaintengine_x11.cpp4
-rw-r--r--src/gui/painting/qpaintengine_x11_p.h5
-rw-r--r--src/gui/painting/qpaintengineex.cpp7
-rw-r--r--src/gui/painting/qpaintengineex_p.h4
-rw-r--r--src/gui/painting/qpainter.cpp4
-rw-r--r--src/gui/painting/qpainter.h4
-rw-r--r--src/gui/painting/qpainter_p.h4
-rw-r--r--src/gui/painting/qpainterpath.cpp4
-rw-r--r--src/gui/painting/qpainterpath.h4
-rw-r--r--src/gui/painting/qpainterpath_p.h4
-rw-r--r--src/gui/painting/qpathclipper.cpp73
-rw-r--r--src/gui/painting/qpathclipper_p.h4
-rw-r--r--src/gui/painting/qpdf.cpp7
-rw-r--r--src/gui/painting/qpdf_p.h4
-rw-r--r--src/gui/painting/qpen.cpp4
-rw-r--r--src/gui/painting/qpen.h4
-rw-r--r--src/gui/painting/qpen_p.h4
-rw-r--r--src/gui/painting/qpolygon.cpp4
-rw-r--r--src/gui/painting/qpolygon.h4
-rw-r--r--src/gui/painting/qpolygonclipper_p.h4
-rw-r--r--src/gui/painting/qprintengine.h4
-rw-r--r--src/gui/painting/qprintengine_mac.mm4
-rw-r--r--src/gui/painting/qprintengine_mac_p.h4
-rw-r--r--src/gui/painting/qprintengine_pdf.cpp4
-rw-r--r--src/gui/painting/qprintengine_pdf_p.h4
-rw-r--r--src/gui/painting/qprintengine_ps.cpp4
-rw-r--r--src/gui/painting/qprintengine_ps_p.h4
-rw-r--r--src/gui/painting/qprintengine_qws.cpp4
-rw-r--r--src/gui/painting/qprintengine_qws_p.h4
-rw-r--r--src/gui/painting/qprintengine_win.cpp10
-rw-r--r--src/gui/painting/qprintengine_win_p.h4
-rw-r--r--src/gui/painting/qprinter.cpp4
-rw-r--r--src/gui/painting/qprinter.h4
-rw-r--r--src/gui/painting/qprinter_p.h4
-rw-r--r--src/gui/painting/qprinterinfo.h4
-rw-r--r--src/gui/painting/qprinterinfo_mac.cpp4
-rw-r--r--src/gui/painting/qprinterinfo_unix.cpp4
-rw-r--r--src/gui/painting/qprinterinfo_unix_p.h4
-rw-r--r--src/gui/painting/qprinterinfo_win.cpp4
-rw-r--r--src/gui/painting/qrasterdefs_p.h4
-rw-r--r--src/gui/painting/qrasterizer.cpp6
-rw-r--r--src/gui/painting/qrasterizer_p.h4
-rw-r--r--src/gui/painting/qregion.cpp8
-rw-r--r--src/gui/painting/qregion.h4
-rw-r--r--src/gui/painting/qregion_mac.cpp4
-rw-r--r--src/gui/painting/qregion_qws.cpp4
-rw-r--r--src/gui/painting/qregion_win.cpp4
-rw-r--r--src/gui/painting/qregion_wince.cpp4
-rw-r--r--src/gui/painting/qregion_x11.cpp4
-rw-r--r--src/gui/painting/qrgb.h4
-rw-r--r--src/gui/painting/qstroker.cpp4
-rw-r--r--src/gui/painting/qstroker_p.h4
-rw-r--r--src/gui/painting/qstylepainter.cpp4
-rw-r--r--src/gui/painting/qstylepainter.h4
-rw-r--r--src/gui/painting/qtessellator.cpp4
-rw-r--r--src/gui/painting/qtessellator_p.h4
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp4
-rw-r--r--src/gui/painting/qtextureglyphcache_p.h4
-rw-r--r--src/gui/painting/qtransform.cpp63
-rw-r--r--src/gui/painting/qtransform.h19
-rw-r--r--src/gui/painting/qvectorpath_p.h4
-rw-r--r--src/gui/painting/qwindowsurface.cpp4
-rw-r--r--src/gui/painting/qwindowsurface_mac.cpp4
-rw-r--r--src/gui/painting/qwindowsurface_mac_p.h4
-rw-r--r--src/gui/painting/qwindowsurface_p.h4
-rw-r--r--src/gui/painting/qwindowsurface_qws.cpp4
-rw-r--r--src/gui/painting/qwindowsurface_qws_p.h4
-rw-r--r--src/gui/painting/qwindowsurface_raster.cpp4
-rw-r--r--src/gui/painting/qwindowsurface_raster_p.h4
-rw-r--r--src/gui/painting/qwindowsurface_x11.cpp4
-rw-r--r--src/gui/painting/qwindowsurface_x11_p.h4
-rw-r--r--src/gui/painting/qwmatrix.h4
-rw-r--r--src/gui/statemachine/qbasickeyeventtransition.cpp4
-rw-r--r--src/gui/statemachine/qbasickeyeventtransition_p.h4
-rw-r--r--src/gui/statemachine/qbasicmouseeventtransition.cpp4
-rw-r--r--src/gui/statemachine/qbasicmouseeventtransition_p.h4
-rw-r--r--src/gui/statemachine/qguistatemachine.cpp4
-rw-r--r--src/gui/statemachine/qkeyeventtransition.cpp4
-rw-r--r--src/gui/statemachine/qkeyeventtransition.h4
-rw-r--r--src/gui/statemachine/qmouseeventtransition.cpp4
-rw-r--r--src/gui/statemachine/qmouseeventtransition.h4
-rw-r--r--src/gui/styles/gtksymbols.cpp4
-rw-r--r--src/gui/styles/gtksymbols_p.h4
-rw-r--r--src/gui/styles/qcdestyle.cpp4
-rw-r--r--src/gui/styles/qcdestyle.h4
-rw-r--r--src/gui/styles/qcleanlooksstyle.cpp155
-rw-r--r--src/gui/styles/qcleanlooksstyle.h4
-rw-r--r--src/gui/styles/qcleanlooksstyle_p.h4
-rw-r--r--src/gui/styles/qcommonstyle.cpp543
-rw-r--r--src/gui/styles/qcommonstyle.h4
-rw-r--r--src/gui/styles/qcommonstyle_p.h4
-rw-r--r--src/gui/styles/qcommonstylepixmaps_p.h4
-rw-r--r--src/gui/styles/qgtkpainter.cpp4
-rw-r--r--src/gui/styles/qgtkpainter_p.h4
-rw-r--r--src/gui/styles/qgtkstyle.cpp140
-rw-r--r--src/gui/styles/qgtkstyle.h4
-rw-r--r--src/gui/styles/qmacstyle_mac.h4
-rw-r--r--src/gui/styles/qmacstyle_mac.mm96
-rw-r--r--src/gui/styles/qmacstylepixmaps_mac_p.h4
-rw-r--r--src/gui/styles/qmotifstyle.cpp160
-rw-r--r--src/gui/styles/qmotifstyle.h4
-rw-r--r--src/gui/styles/qmotifstyle_p.h4
-rw-r--r--src/gui/styles/qplastiquestyle.cpp109
-rw-r--r--src/gui/styles/qplastiquestyle.h4
-rw-r--r--src/gui/styles/qproxystyle.cpp420
-rw-r--r--src/gui/styles/qproxystyle.h114
-rw-r--r--src/gui/styles/qproxystyle_p.h79
-rw-r--r--src/gui/styles/qstyle.cpp63
-rw-r--r--src/gui/styles/qstyle.h9
-rw-r--r--src/gui/styles/qstyle_p.h18
-rw-r--r--src/gui/styles/qstylefactory.cpp4
-rw-r--r--src/gui/styles/qstylefactory.h4
-rw-r--r--src/gui/styles/qstylehelper.cpp4
-rw-r--r--src/gui/styles/qstylehelper_p.h4
-rw-r--r--src/gui/styles/qstyleoption.cpp4
-rw-r--r--src/gui/styles/qstyleoption.h4
-rw-r--r--src/gui/styles/qstyleplugin.cpp4
-rw-r--r--src/gui/styles/qstyleplugin.h4
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp4
-rw-r--r--src/gui/styles/qstylesheetstyle_default.cpp4
-rw-r--r--src/gui/styles/qstylesheetstyle_p.h4
-rw-r--r--src/gui/styles/qwindowscestyle.cpp4
-rw-r--r--src/gui/styles/qwindowscestyle.h4
-rw-r--r--src/gui/styles/qwindowscestyle_p.h4
-rw-r--r--src/gui/styles/qwindowsmobilestyle.cpp4
-rw-r--r--src/gui/styles/qwindowsmobilestyle.h4
-rw-r--r--src/gui/styles/qwindowsmobilestyle_p.h4
-rw-r--r--src/gui/styles/qwindowsstyle.cpp98
-rw-r--r--src/gui/styles/qwindowsstyle.h4
-rw-r--r--src/gui/styles/qwindowsstyle_p.h4
-rw-r--r--src/gui/styles/qwindowsvistastyle.cpp80
-rw-r--r--src/gui/styles/qwindowsvistastyle.h4
-rw-r--r--src/gui/styles/qwindowsvistastyle_p.h4
-rw-r--r--src/gui/styles/qwindowsxpstyle.cpp148
-rw-r--r--src/gui/styles/qwindowsxpstyle.h4
-rw-r--r--src/gui/styles/qwindowsxpstyle_p.h4
-rw-r--r--src/gui/styles/styles.pri4
-rw-r--r--src/gui/text/qabstractfontengine_p.h4
-rw-r--r--src/gui/text/qabstractfontengine_qws.cpp4
-rw-r--r--src/gui/text/qabstractfontengine_qws.h4
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.cpp4
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.h4
-rw-r--r--src/gui/text/qabstracttextdocumentlayout_p.h4
-rw-r--r--src/gui/text/qcssparser.cpp4
-rw-r--r--src/gui/text/qcssparser_p.h4
-rw-r--r--src/gui/text/qcssscanner.cpp4
-rw-r--r--src/gui/text/qfont.cpp4
-rw-r--r--src/gui/text/qfont.h4
-rw-r--r--src/gui/text/qfont_mac.cpp4
-rw-r--r--src/gui/text/qfont_p.h4
-rw-r--r--src/gui/text/qfont_qws.cpp4
-rw-r--r--src/gui/text/qfont_win.cpp4
-rw-r--r--src/gui/text/qfont_x11.cpp4
-rw-r--r--src/gui/text/qfontdatabase.cpp4
-rw-r--r--src/gui/text/qfontdatabase.h4
-rw-r--r--src/gui/text/qfontdatabase_mac.cpp4
-rw-r--r--src/gui/text/qfontdatabase_qws.cpp4
-rw-r--r--src/gui/text/qfontdatabase_win.cpp4
-rw-r--r--src/gui/text/qfontdatabase_x11.cpp4
-rw-r--r--src/gui/text/qfontengine.cpp13
-rw-r--r--src/gui/text/qfontengine_ft.cpp4
-rw-r--r--src/gui/text/qfontengine_ft_p.h4
-rw-r--r--src/gui/text/qfontengine_mac.mm4
-rw-r--r--src/gui/text/qfontengine_p.h4
-rw-r--r--src/gui/text/qfontengine_qpf.cpp4
-rw-r--r--src/gui/text/qfontengine_qpf_p.h4
-rw-r--r--src/gui/text/qfontengine_qws.cpp4
-rw-r--r--src/gui/text/qfontengine_win.cpp4
-rw-r--r--src/gui/text/qfontengine_win_p.h4
-rw-r--r--src/gui/text/qfontengine_x11.cpp4
-rw-r--r--src/gui/text/qfontengine_x11_p.h4
-rw-r--r--src/gui/text/qfontengineglyphcache_p.h4
-rw-r--r--src/gui/text/qfontinfo.h4
-rw-r--r--src/gui/text/qfontmetrics.cpp4
-rw-r--r--src/gui/text/qfontmetrics.h4
-rw-r--r--src/gui/text/qfontsubset.cpp4
-rw-r--r--src/gui/text/qfontsubset_p.h4
-rw-r--r--src/gui/text/qfragmentmap.cpp4
-rw-r--r--src/gui/text/qfragmentmap_p.h4
-rw-r--r--src/gui/text/qpfutil.cpp4
-rw-r--r--src/gui/text/qsyntaxhighlighter.cpp4
-rw-r--r--src/gui/text/qsyntaxhighlighter.h4
-rw-r--r--src/gui/text/qtextcontrol.cpp4
-rw-r--r--src/gui/text/qtextcontrol_p.h4
-rw-r--r--src/gui/text/qtextcontrol_p_p.h4
-rw-r--r--src/gui/text/qtextcursor.cpp4
-rw-r--r--src/gui/text/qtextcursor.h4
-rw-r--r--src/gui/text/qtextcursor_p.h4
-rw-r--r--src/gui/text/qtextdocument.cpp4
-rw-r--r--src/gui/text/qtextdocument.h4
-rw-r--r--src/gui/text/qtextdocument_p.cpp4
-rw-r--r--src/gui/text/qtextdocument_p.h4
-rw-r--r--src/gui/text/qtextdocumentfragment.cpp4
-rw-r--r--src/gui/text/qtextdocumentfragment.h4
-rw-r--r--src/gui/text/qtextdocumentfragment_p.h4
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp40
-rw-r--r--src/gui/text/qtextdocumentlayout_p.h4
-rw-r--r--src/gui/text/qtextdocumentwriter.cpp4
-rw-r--r--src/gui/text/qtextdocumentwriter.h4
-rw-r--r--src/gui/text/qtextengine.cpp4
-rw-r--r--src/gui/text/qtextengine_mac.cpp4
-rw-r--r--src/gui/text/qtextengine_p.h4
-rw-r--r--src/gui/text/qtextformat.cpp4
-rw-r--r--src/gui/text/qtextformat.h4
-rw-r--r--src/gui/text/qtextformat_p.h4
-rw-r--r--src/gui/text/qtexthtmlparser.cpp4
-rw-r--r--src/gui/text/qtexthtmlparser_p.h4
-rw-r--r--src/gui/text/qtextimagehandler.cpp4
-rw-r--r--src/gui/text/qtextimagehandler_p.h4
-rw-r--r--src/gui/text/qtextlayout.cpp4
-rw-r--r--src/gui/text/qtextlayout.h4
-rw-r--r--src/gui/text/qtextlist.cpp4
-rw-r--r--src/gui/text/qtextlist.h4
-rw-r--r--src/gui/text/qtextobject.cpp4
-rw-r--r--src/gui/text/qtextobject.h4
-rw-r--r--src/gui/text/qtextobject_p.h4
-rw-r--r--src/gui/text/qtextodfwriter.cpp4
-rw-r--r--src/gui/text/qtextodfwriter_p.h4
-rw-r--r--src/gui/text/qtextoption.cpp4
-rw-r--r--src/gui/text/qtextoption.h4
-rw-r--r--src/gui/text/qtexttable.cpp4
-rw-r--r--src/gui/text/qtexttable.h4
-rw-r--r--src/gui/text/qtexttable_p.h4
-rw-r--r--src/gui/text/qzip.cpp4
-rw-r--r--src/gui/text/qzipreader_p.h4
-rw-r--r--src/gui/text/qzipwriter_p.h4
-rw-r--r--src/gui/util/qcompleter.cpp10
-rw-r--r--src/gui/util/qcompleter.h4
-rw-r--r--src/gui/util/qcompleter_p.h4
-rw-r--r--src/gui/util/qdesktopservices.cpp4
-rw-r--r--src/gui/util/qdesktopservices.h4
-rw-r--r--src/gui/util/qdesktopservices_mac.cpp4
-rw-r--r--src/gui/util/qdesktopservices_qws.cpp4
-rw-r--r--src/gui/util/qdesktopservices_win.cpp4
-rw-r--r--src/gui/util/qdesktopservices_x11.cpp4
-rw-r--r--src/gui/util/qsystemtrayicon.cpp4
-rw-r--r--src/gui/util/qsystemtrayicon.h4
-rw-r--r--src/gui/util/qsystemtrayicon_mac.mm4
-rw-r--r--src/gui/util/qsystemtrayicon_p.h4
-rw-r--r--src/gui/util/qsystemtrayicon_qws.cpp4
-rw-r--r--src/gui/util/qsystemtrayicon_win.cpp4
-rw-r--r--src/gui/util/qsystemtrayicon_x11.cpp4
-rw-r--r--src/gui/util/qundogroup.cpp4
-rw-r--r--src/gui/util/qundogroup.h4
-rw-r--r--src/gui/util/qundostack.cpp4
-rw-r--r--src/gui/util/qundostack.h4
-rw-r--r--src/gui/util/qundostack_p.h4
-rw-r--r--src/gui/util/qundoview.cpp4
-rw-r--r--src/gui/util/qundoview.h4
-rw-r--r--src/gui/widgets/qabstractbutton.cpp4
-rw-r--r--src/gui/widgets/qabstractbutton.h4
-rw-r--r--src/gui/widgets/qabstractbutton_p.h4
-rw-r--r--src/gui/widgets/qabstractscrollarea.cpp4
-rw-r--r--src/gui/widgets/qabstractscrollarea.h4
-rw-r--r--src/gui/widgets/qabstractscrollarea_p.h4
-rw-r--r--src/gui/widgets/qabstractslider.cpp4
-rw-r--r--src/gui/widgets/qabstractslider.h4
-rw-r--r--src/gui/widgets/qabstractslider_p.h4
-rw-r--r--src/gui/widgets/qabstractspinbox.cpp4
-rw-r--r--src/gui/widgets/qabstractspinbox.h4
-rw-r--r--src/gui/widgets/qabstractspinbox_p.h4
-rw-r--r--src/gui/widgets/qbuttongroup.cpp4
-rw-r--r--src/gui/widgets/qbuttongroup.h4
-rw-r--r--src/gui/widgets/qcalendartextnavigator_p.h4
-rw-r--r--src/gui/widgets/qcalendarwidget.cpp4
-rw-r--r--src/gui/widgets/qcalendarwidget.h4
-rw-r--r--src/gui/widgets/qcheckbox.cpp4
-rw-r--r--src/gui/widgets/qcheckbox.h4
-rw-r--r--src/gui/widgets/qcocoamenu_mac.mm4
-rw-r--r--src/gui/widgets/qcocoamenu_mac_p.h4
-rw-r--r--src/gui/widgets/qcocoatoolbardelegate_mac.mm4
-rw-r--r--src/gui/widgets/qcocoatoolbardelegate_mac_p.h4
-rw-r--r--src/gui/widgets/qcombobox.cpp4
-rw-r--r--src/gui/widgets/qcombobox.h4
-rw-r--r--src/gui/widgets/qcombobox_p.h4
-rw-r--r--src/gui/widgets/qcommandlinkbutton.cpp4
-rw-r--r--src/gui/widgets/qcommandlinkbutton.h4
-rw-r--r--src/gui/widgets/qdatetimeedit.cpp4
-rw-r--r--src/gui/widgets/qdatetimeedit.h4
-rw-r--r--src/gui/widgets/qdatetimeedit_p.h4
-rw-r--r--src/gui/widgets/qdial.cpp4
-rw-r--r--src/gui/widgets/qdial.h4
-rw-r--r--src/gui/widgets/qdialogbuttonbox.cpp4
-rw-r--r--src/gui/widgets/qdialogbuttonbox.h4
-rw-r--r--src/gui/widgets/qdockarealayout.cpp4
-rw-r--r--src/gui/widgets/qdockarealayout_p.h4
-rw-r--r--src/gui/widgets/qdockwidget.cpp4
-rw-r--r--src/gui/widgets/qdockwidget.h4
-rw-r--r--src/gui/widgets/qdockwidget_p.h4
-rw-r--r--src/gui/widgets/qeffects.cpp4
-rw-r--r--src/gui/widgets/qeffects_p.h4
-rw-r--r--src/gui/widgets/qfocusframe.cpp4
-rw-r--r--src/gui/widgets/qfocusframe.h4
-rw-r--r--src/gui/widgets/qfontcombobox.cpp4
-rw-r--r--src/gui/widgets/qfontcombobox.h4
-rw-r--r--src/gui/widgets/qframe.cpp4
-rw-r--r--src/gui/widgets/qframe.h4
-rw-r--r--src/gui/widgets/qframe_p.h4
-rw-r--r--src/gui/widgets/qgroupbox.cpp4
-rw-r--r--src/gui/widgets/qgroupbox.h4
-rw-r--r--src/gui/widgets/qlabel.cpp4
-rw-r--r--src/gui/widgets/qlabel.h4
-rw-r--r--src/gui/widgets/qlabel_p.h4
-rw-r--r--src/gui/widgets/qlcdnumber.cpp4
-rw-r--r--src/gui/widgets/qlcdnumber.h4
-rw-r--r--src/gui/widgets/qlineedit.cpp4
-rw-r--r--src/gui/widgets/qlineedit.h4
-rw-r--r--src/gui/widgets/qlineedit_p.h4
-rw-r--r--src/gui/widgets/qmaccocoaviewcontainer_mac.h4
-rw-r--r--src/gui/widgets/qmaccocoaviewcontainer_mac.mm4
-rw-r--r--src/gui/widgets/qmacnativewidget_mac.h4
-rw-r--r--src/gui/widgets/qmacnativewidget_mac.mm4
-rw-r--r--src/gui/widgets/qmainwindow.cpp4
-rw-r--r--src/gui/widgets/qmainwindow.h4
-rw-r--r--src/gui/widgets/qmainwindowlayout.cpp4
-rw-r--r--src/gui/widgets/qmainwindowlayout_mac.mm4
-rw-r--r--src/gui/widgets/qmainwindowlayout_p.h4
-rw-r--r--src/gui/widgets/qmdiarea.cpp4
-rw-r--r--src/gui/widgets/qmdiarea.h4
-rw-r--r--src/gui/widgets/qmdiarea_p.h4
-rw-r--r--src/gui/widgets/qmdisubwindow.cpp4
-rw-r--r--src/gui/widgets/qmdisubwindow.h4
-rw-r--r--src/gui/widgets/qmdisubwindow_p.h4
-rw-r--r--src/gui/widgets/qmenu.cpp4
-rw-r--r--src/gui/widgets/qmenu.h4
-rw-r--r--src/gui/widgets/qmenu_mac.mm63
-rw-r--r--src/gui/widgets/qmenu_p.h9
-rw-r--r--src/gui/widgets/qmenu_wince.cpp4
-rw-r--r--src/gui/widgets/qmenu_wince_resource_p.h4
-rw-r--r--src/gui/widgets/qmenubar.cpp7
-rw-r--r--src/gui/widgets/qmenubar.h4
-rw-r--r--src/gui/widgets/qmenubar_p.h4
-rw-r--r--src/gui/widgets/qmenudata.cpp4
-rw-r--r--src/gui/widgets/qmenudata.h4
-rw-r--r--src/gui/widgets/qplaintextedit.cpp10
-rw-r--r--src/gui/widgets/qplaintextedit.h4
-rw-r--r--src/gui/widgets/qplaintextedit_p.h4
-rw-r--r--src/gui/widgets/qprintpreviewwidget.cpp4
-rw-r--r--src/gui/widgets/qprintpreviewwidget.h4
-rw-r--r--src/gui/widgets/qprogressbar.cpp4
-rw-r--r--src/gui/widgets/qprogressbar.h4
-rw-r--r--src/gui/widgets/qpushbutton.cpp4
-rw-r--r--src/gui/widgets/qpushbutton.h4
-rw-r--r--src/gui/widgets/qpushbutton_p.h4
-rw-r--r--src/gui/widgets/qradiobutton.cpp4
-rw-r--r--src/gui/widgets/qradiobutton.h4
-rw-r--r--src/gui/widgets/qrubberband.cpp4
-rw-r--r--src/gui/widgets/qrubberband.h4
-rw-r--r--src/gui/widgets/qscrollarea.cpp4
-rw-r--r--src/gui/widgets/qscrollarea.h4
-rw-r--r--src/gui/widgets/qscrollarea_p.h4
-rw-r--r--src/gui/widgets/qscrollbar.cpp4
-rw-r--r--src/gui/widgets/qscrollbar.h4
-rw-r--r--src/gui/widgets/qsizegrip.cpp4
-rw-r--r--src/gui/widgets/qsizegrip.h4
-rw-r--r--src/gui/widgets/qslider.cpp4
-rw-r--r--src/gui/widgets/qslider.h4
-rw-r--r--src/gui/widgets/qspinbox.cpp4
-rw-r--r--src/gui/widgets/qspinbox.h4
-rw-r--r--src/gui/widgets/qsplashscreen.cpp4
-rw-r--r--src/gui/widgets/qsplashscreen.h4
-rw-r--r--src/gui/widgets/qsplitter.cpp4
-rw-r--r--src/gui/widgets/qsplitter.h4
-rw-r--r--src/gui/widgets/qsplitter_p.h4
-rw-r--r--src/gui/widgets/qstackedwidget.cpp4
-rw-r--r--src/gui/widgets/qstackedwidget.h4
-rw-r--r--src/gui/widgets/qstatusbar.cpp4
-rw-r--r--src/gui/widgets/qstatusbar.h4
-rw-r--r--src/gui/widgets/qtabbar.cpp4
-rw-r--r--src/gui/widgets/qtabbar.h4
-rw-r--r--src/gui/widgets/qtabbar_p.h4
-rw-r--r--src/gui/widgets/qtabwidget.cpp4
-rw-r--r--src/gui/widgets/qtabwidget.h4
-rw-r--r--src/gui/widgets/qtextbrowser.cpp4
-rw-r--r--src/gui/widgets/qtextbrowser.h4
-rw-r--r--src/gui/widgets/qtextedit.cpp5
-rw-r--r--src/gui/widgets/qtextedit.h4
-rw-r--r--src/gui/widgets/qtextedit_p.h4
-rw-r--r--src/gui/widgets/qtoolbar.cpp4
-rw-r--r--src/gui/widgets/qtoolbar.h4
-rw-r--r--src/gui/widgets/qtoolbar_p.h4
-rw-r--r--src/gui/widgets/qtoolbararealayout.cpp4
-rw-r--r--src/gui/widgets/qtoolbararealayout_p.h4
-rw-r--r--src/gui/widgets/qtoolbarextension.cpp4
-rw-r--r--src/gui/widgets/qtoolbarextension_p.h4
-rw-r--r--src/gui/widgets/qtoolbarlayout.cpp4
-rw-r--r--src/gui/widgets/qtoolbarlayout_p.h4
-rw-r--r--src/gui/widgets/qtoolbarseparator.cpp4
-rw-r--r--src/gui/widgets/qtoolbarseparator_p.h4
-rw-r--r--src/gui/widgets/qtoolbox.cpp4
-rw-r--r--src/gui/widgets/qtoolbox.h4
-rw-r--r--src/gui/widgets/qtoolbutton.cpp4
-rw-r--r--src/gui/widgets/qtoolbutton.h4
-rw-r--r--src/gui/widgets/qvalidator.cpp4
-rw-r--r--src/gui/widgets/qvalidator.h4
-rw-r--r--src/gui/widgets/qwidgetanimator.cpp4
-rw-r--r--src/gui/widgets/qwidgetanimator_p.h4
-rw-r--r--src/gui/widgets/qwidgetresizehandler.cpp4
-rw-r--r--src/gui/widgets/qwidgetresizehandler_p.h4
-rw-r--r--src/gui/widgets/qworkspace.cpp4
-rw-r--r--src/gui/widgets/qworkspace.h4
-rw-r--r--src/network/access/qabstractnetworkcache.cpp4
-rw-r--r--src/network/access/qabstractnetworkcache.h4
-rw-r--r--src/network/access/qabstractnetworkcache_p.h4
-rw-r--r--src/network/access/qftp.cpp4
-rw-r--r--src/network/access/qftp.h4
-rw-r--r--src/network/access/qhttp.cpp12
-rw-r--r--src/network/access/qhttp.h4
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp42
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h4
-rw-r--r--src/network/access/qhttpnetworkheader.cpp4
-rw-r--r--src/network/access/qhttpnetworkheader_p.h4
-rw-r--r--src/network/access/qhttpnetworkreply.cpp4
-rw-r--r--src/network/access/qhttpnetworkreply_p.h4
-rw-r--r--src/network/access/qhttpnetworkrequest.cpp4
-rw-r--r--src/network/access/qhttpnetworkrequest_p.h4
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp4
-rw-r--r--src/network/access/qnetworkaccessbackend_p.h4
-rw-r--r--src/network/access/qnetworkaccesscache.cpp4
-rw-r--r--src/network/access/qnetworkaccesscache_p.h7
-rw-r--r--src/network/access/qnetworkaccesscachebackend.cpp4
-rw-r--r--src/network/access/qnetworkaccesscachebackend_p.h4
-rw-r--r--src/network/access/qnetworkaccessdatabackend.cpp4
-rw-r--r--src/network/access/qnetworkaccessdatabackend_p.h4
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend.cpp4
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend_p.h4
-rw-r--r--src/network/access/qnetworkaccessfilebackend.cpp4
-rw-r--r--src/network/access/qnetworkaccessfilebackend_p.h4
-rw-r--r--src/network/access/qnetworkaccessftpbackend.cpp22
-rw-r--r--src/network/access/qnetworkaccessftpbackend_p.h8
-rw-r--r--src/network/access/qnetworkaccesshttpbackend.cpp24
-rw-r--r--src/network/access/qnetworkaccesshttpbackend_p.h8
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp28
-rw-r--r--src/network/access/qnetworkaccessmanager.h4
-rw-r--r--src/network/access/qnetworkaccessmanager_p.h16
-rw-r--r--src/network/access/qnetworkcookie.cpp4
-rw-r--r--src/network/access/qnetworkcookie.h4
-rw-r--r--src/network/access/qnetworkcookie_p.h4
-rw-r--r--src/network/access/qnetworkdiskcache.cpp4
-rw-r--r--src/network/access/qnetworkdiskcache.h4
-rw-r--r--src/network/access/qnetworkdiskcache_p.h4
-rw-r--r--src/network/access/qnetworkreply.cpp4
-rw-r--r--src/network/access/qnetworkreply.h4
-rw-r--r--src/network/access/qnetworkreply_p.h4
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp4
-rw-r--r--src/network/access/qnetworkreplyimpl_p.h4
-rw-r--r--src/network/access/qnetworkrequest.cpp4
-rw-r--r--src/network/access/qnetworkrequest.h4
-rw-r--r--src/network/access/qnetworkrequest_p.h4
-rw-r--r--src/network/kernel/qauthenticator.cpp4
-rw-r--r--src/network/kernel/qauthenticator.h4
-rw-r--r--src/network/kernel/qauthenticator_p.h4
-rw-r--r--src/network/kernel/qhostaddress.cpp4
-rw-r--r--src/network/kernel/qhostaddress.h4
-rw-r--r--src/network/kernel/qhostaddress_p.h4
-rw-r--r--src/network/kernel/qhostinfo.cpp4
-rw-r--r--src/network/kernel/qhostinfo.h4
-rw-r--r--src/network/kernel/qhostinfo_p.h4
-rw-r--r--src/network/kernel/qhostinfo_unix.cpp4
-rw-r--r--src/network/kernel/qhostinfo_win.cpp4
-rw-r--r--src/network/kernel/qnetworkinterface.cpp4
-rw-r--r--src/network/kernel/qnetworkinterface.h4
-rw-r--r--src/network/kernel/qnetworkinterface_p.h4
-rw-r--r--src/network/kernel/qnetworkinterface_unix.cpp4
-rw-r--r--src/network/kernel/qnetworkinterface_win.cpp4
-rw-r--r--src/network/kernel/qnetworkinterface_win_p.h4
-rw-r--r--src/network/kernel/qnetworkproxy.cpp4
-rw-r--r--src/network/kernel/qnetworkproxy.h4
-rw-r--r--src/network/kernel/qnetworkproxy_generic.cpp4
-rw-r--r--src/network/kernel/qnetworkproxy_mac.cpp4
-rw-r--r--src/network/kernel/qnetworkproxy_win.cpp4
-rw-r--r--src/network/kernel/qurlinfo.cpp4
-rw-r--r--src/network/kernel/qurlinfo.h4
-rw-r--r--src/network/socket/qabstractsocket.cpp8
-rw-r--r--src/network/socket/qabstractsocket.h4
-rw-r--r--src/network/socket/qabstractsocket_p.h4
-rw-r--r--src/network/socket/qabstractsocketengine.cpp4
-rw-r--r--src/network/socket/qabstractsocketengine_p.h4
-rw-r--r--src/network/socket/qhttpsocketengine.cpp4
-rw-r--r--src/network/socket/qhttpsocketengine_p.h4
-rw-r--r--src/network/socket/qlocalserver.cpp4
-rw-r--r--src/network/socket/qlocalserver.h4
-rw-r--r--src/network/socket/qlocalserver_p.h4
-rw-r--r--src/network/socket/qlocalserver_tcp.cpp4
-rw-r--r--src/network/socket/qlocalserver_unix.cpp4
-rw-r--r--src/network/socket/qlocalserver_win.cpp4
-rw-r--r--src/network/socket/qlocalsocket.cpp4
-rw-r--r--src/network/socket/qlocalsocket.h4
-rw-r--r--src/network/socket/qlocalsocket_p.h4
-rw-r--r--src/network/socket/qlocalsocket_tcp.cpp4
-rw-r--r--src/network/socket/qlocalsocket_unix.cpp4
-rw-r--r--src/network/socket/qlocalsocket_win.cpp4
-rw-r--r--src/network/socket/qnativesocketengine.cpp4
-rw-r--r--src/network/socket/qnativesocketengine_p.h4
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp4
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp4
-rw-r--r--src/network/socket/qsocks5socketengine.cpp4
-rw-r--r--src/network/socket/qsocks5socketengine_p.h4
-rw-r--r--src/network/socket/qtcpserver.cpp4
-rw-r--r--src/network/socket/qtcpserver.h4
-rw-r--r--src/network/socket/qtcpsocket.cpp4
-rw-r--r--src/network/socket/qtcpsocket.h4
-rw-r--r--src/network/socket/qtcpsocket_p.h4
-rw-r--r--src/network/socket/qudpsocket.cpp4
-rw-r--r--src/network/socket/qudpsocket.h4
-rw-r--r--src/network/ssl/qssl.cpp4
-rw-r--r--src/network/ssl/qssl.h4
-rw-r--r--src/network/ssl/qsslcertificate.cpp33
-rw-r--r--src/network/ssl/qsslcertificate.h4
-rw-r--r--src/network/ssl/qsslcertificate_p.h4
-rw-r--r--src/network/ssl/qsslcipher.cpp4
-rw-r--r--src/network/ssl/qsslcipher.h4
-rw-r--r--src/network/ssl/qsslcipher_p.h4
-rw-r--r--src/network/ssl/qsslconfiguration.cpp4
-rw-r--r--src/network/ssl/qsslconfiguration.h4
-rw-r--r--src/network/ssl/qsslconfiguration_p.h4
-rw-r--r--src/network/ssl/qsslerror.cpp4
-rw-r--r--src/network/ssl/qsslerror.h4
-rw-r--r--src/network/ssl/qsslkey.cpp4
-rw-r--r--src/network/ssl/qsslkey.h4
-rw-r--r--src/network/ssl/qsslkey_p.h4
-rw-r--r--src/network/ssl/qsslsocket.cpp6
-rw-r--r--src/network/ssl/qsslsocket.h4
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp11
-rw-r--r--src/network/ssl/qsslsocket_openssl_p.h8
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols.cpp27
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols_p.h27
-rw-r--r--src/network/ssl/qsslsocket_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp4
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager.cpp15
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager_p.h12
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadersource_p.h21
-rw-r--r--src/opengl/gl2paintengineex/qglgradientcache.cpp4
-rw-r--r--src/opengl/gl2paintengineex/qglgradientcache_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp61
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h6
-rw-r--r--src/opengl/qegl.cpp4
-rw-r--r--src/opengl/qegl_p.h4
-rw-r--r--src/opengl/qegl_qws.cpp4
-rw-r--r--src/opengl/qegl_wince.cpp4
-rw-r--r--src/opengl/qegl_x11egl.cpp4
-rw-r--r--src/opengl/qgl.cpp4
-rw-r--r--src/opengl/qgl.h4
-rw-r--r--src/opengl/qgl_cl_p.h4
-rw-r--r--src/opengl/qgl_egl.cpp4
-rw-r--r--src/opengl/qgl_egl_p.h4
-rw-r--r--src/opengl/qgl_mac.mm4
-rw-r--r--src/opengl/qgl_p.h4
-rw-r--r--src/opengl/qgl_qws.cpp4
-rw-r--r--src/opengl/qgl_win.cpp4
-rw-r--r--src/opengl/qgl_wince.cpp4
-rw-r--r--src/opengl/qgl_x11.cpp16
-rw-r--r--src/opengl/qgl_x11egl.cpp4
-rw-r--r--src/opengl/qglcolormap.cpp4
-rw-r--r--src/opengl/qglcolormap.h4
-rw-r--r--src/opengl/qglextensions.cpp4
-rw-r--r--src/opengl/qglextensions_p.h4
-rw-r--r--src/opengl/qglframebufferobject.cpp10
-rw-r--r--src/opengl/qglframebufferobject.h4
-rw-r--r--src/opengl/qglpaintdevice_qws.cpp4
-rw-r--r--src/opengl/qglpaintdevice_qws_p.h4
-rw-r--r--src/opengl/qglpixelbuffer.cpp4
-rw-r--r--src/opengl/qglpixelbuffer.h4
-rw-r--r--src/opengl/qglpixelbuffer_egl.cpp4
-rw-r--r--src/opengl/qglpixelbuffer_mac.mm4
-rw-r--r--src/opengl/qglpixelbuffer_p.h4
-rw-r--r--src/opengl/qglpixelbuffer_win.cpp4
-rw-r--r--src/opengl/qglpixelbuffer_x11.cpp4
-rw-r--r--src/opengl/qglpixmapfilter.cpp4
-rw-r--r--src/opengl/qglpixmapfilter_p.h4
-rw-r--r--src/opengl/qglscreen_qws.cpp4
-rw-r--r--src/opengl/qglscreen_qws.h4
-rw-r--r--src/opengl/qglshaderprogram.cpp4
-rw-r--r--src/opengl/qglshaderprogram.h4
-rw-r--r--src/opengl/qglwindowsurface_qws.cpp4
-rw-r--r--src/opengl/qglwindowsurface_qws_p.h4
-rw-r--r--src/opengl/qgraphicssystem_gl.cpp5
-rw-r--r--src/opengl/qgraphicssystem_gl_p.h4
-rw-r--r--src/opengl/qpaintengine_opengl.cpp36
-rw-r--r--src/opengl/qpaintengine_opengl_p.h5
-rw-r--r--src/opengl/qpixmapdata_gl.cpp133
-rw-r--r--src/opengl/qpixmapdata_gl_p.h13
-rw-r--r--src/opengl/qwindowsurface_gl.cpp43
-rw-r--r--src/opengl/qwindowsurface_gl_p.h10
-rw-r--r--src/opengl/util/fragmentprograms_p.h4
-rw-r--r--src/opengl/util/generator.cpp4
-rw-r--r--src/phonon/phonon.pro2
-rw-r--r--src/plugins/accessible/compat/main.cpp4
-rw-r--r--src/plugins/accessible/compat/q3complexwidgets.cpp4
-rw-r--r--src/plugins/accessible/compat/q3complexwidgets.h4
-rw-r--r--src/plugins/accessible/compat/q3simplewidgets.cpp4
-rw-r--r--src/plugins/accessible/compat/q3simplewidgets.h4
-rw-r--r--src/plugins/accessible/compat/qaccessiblecompat.cpp4
-rw-r--r--src/plugins/accessible/compat/qaccessiblecompat.h4
-rw-r--r--src/plugins/accessible/widgets/complexwidgets.cpp4
-rw-r--r--src/plugins/accessible/widgets/complexwidgets.h4
-rw-r--r--src/plugins/accessible/widgets/main.cpp4
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.cpp4
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.h4
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.cpp4
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.h4
-rw-r--r--src/plugins/accessible/widgets/rangecontrols.cpp4
-rw-r--r--src/plugins/accessible/widgets/rangecontrols.h4
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp4
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.h4
-rw-r--r--src/plugins/codecs/cn/main.cpp4
-rw-r--r--src/plugins/codecs/cn/qgb18030codec.cpp4
-rw-r--r--src/plugins/codecs/cn/qgb18030codec.h4
-rw-r--r--src/plugins/codecs/jp/main.cpp4
-rw-r--r--src/plugins/codecs/jp/qeucjpcodec.cpp4
-rw-r--r--src/plugins/codecs/jp/qeucjpcodec.h4
-rw-r--r--src/plugins/codecs/jp/qfontjpcodec.cpp4
-rw-r--r--src/plugins/codecs/jp/qfontjpcodec.h4
-rw-r--r--src/plugins/codecs/jp/qjiscodec.cpp4
-rw-r--r--src/plugins/codecs/jp/qjiscodec.h4
-rw-r--r--src/plugins/codecs/jp/qjpunicode.cpp4
-rw-r--r--src/plugins/codecs/jp/qjpunicode.h4
-rw-r--r--src/plugins/codecs/jp/qsjiscodec.cpp4
-rw-r--r--src/plugins/codecs/jp/qsjiscodec.h4
-rw-r--r--src/plugins/codecs/kr/cp949codetbl.h4
-rw-r--r--src/plugins/codecs/kr/main.cpp4
-rw-r--r--src/plugins/codecs/kr/qeuckrcodec.cpp4
-rw-r--r--src/plugins/codecs/kr/qeuckrcodec.h4
-rw-r--r--src/plugins/codecs/tw/main.cpp4
-rw-r--r--src/plugins/codecs/tw/qbig5codec.cpp4
-rw-r--r--src/plugins/codecs/tw/qbig5codec.h4
-rw-r--r--src/plugins/decorations/default/main.cpp4
-rw-r--r--src/plugins/decorations/styled/main.cpp4
-rw-r--r--src/plugins/decorations/windows/main.cpp4
-rw-r--r--src/plugins/gfxdrivers/ahi/qscreenahi_qws.cpp4
-rw-r--r--src/plugins/gfxdrivers/ahi/qscreenahi_qws.h4
-rw-r--r--src/plugins/gfxdrivers/ahi/qscreenahiplugin.cpp4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.h4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbmouse.cpp4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbmouse.h4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp14
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp14
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp40
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp34
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.h9
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreenplugin.cpp4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp21
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h4
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybridplugin.cpp4
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybridscreen.cpp4
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybridscreen.h4
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybridsurface.cpp4
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybridsurface.h4
-rw-r--r--src/plugins/gfxdrivers/linuxfb/main.cpp4
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.c4
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.h4
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable_p.h4
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c4
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp4
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.h4
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreenplugin.cpp4
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglwindowsurface.cpp4
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglwindowsurface.h4
-rw-r--r--src/plugins/gfxdrivers/qvfb/main.cpp4
-rw-r--r--src/plugins/gfxdrivers/transformed/main.cpp4
-rw-r--r--src/plugins/gfxdrivers/vnc/main.cpp4
-rw-r--r--src/plugins/gfxdrivers/vnc/qscreenvnc_p.h4
-rw-r--r--src/plugins/gfxdrivers/vnc/qscreenvnc_qws.cpp4
-rw-r--r--src/plugins/gfxdrivers/vnc/qscreenvnc_qws.h4
-rw-r--r--src/plugins/graphicssystems/opengl/main.cpp4
-rw-r--r--src/plugins/iconengines/svgiconengine/main.cpp4
-rw-r--r--src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp4
-rw-r--r--src/plugins/iconengines/svgiconengine/qsvgiconengine.h4
-rw-r--r--src/plugins/imageformats/gif/main.cpp4
-rw-r--r--src/plugins/imageformats/gif/qgifhandler.cpp4
-rw-r--r--src/plugins/imageformats/gif/qgifhandler.h4
-rw-r--r--src/plugins/imageformats/ico/main.cpp4
-rw-r--r--src/plugins/imageformats/ico/qicohandler.cpp4
-rw-r--r--src/plugins/imageformats/ico/qicohandler.h4
-rw-r--r--src/plugins/imageformats/jpeg/main.cpp4
-rw-r--r--src/plugins/imageformats/jpeg/qjpeghandler.cpp4
-rw-r--r--src/plugins/imageformats/jpeg/qjpeghandler.h4
-rw-r--r--src/plugins/imageformats/mng/main.cpp4
-rw-r--r--src/plugins/imageformats/mng/qmnghandler.cpp4
-rw-r--r--src/plugins/imageformats/mng/qmnghandler.h4
-rw-r--r--src/plugins/imageformats/svg/main.cpp4
-rw-r--r--src/plugins/imageformats/svg/qsvgiohandler.cpp39
-rw-r--r--src/plugins/imageformats/svg/qsvgiohandler.h4
-rw-r--r--src/plugins/imageformats/tiff/main.cpp4
-rw-r--r--src/plugins/imageformats/tiff/qtiffhandler.cpp4
-rw-r--r--src/plugins/imageformats/tiff/qtiffhandler.h4
-rw-r--r--src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp4
-rw-r--r--src/plugins/inputmethods/imsw-multi/qmultiinputcontext.h4
-rw-r--r--src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp4
-rw-r--r--src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.h4
-rw-r--r--src/plugins/kbddrivers/linuxinput/main.cpp4
-rw-r--r--src/plugins/kbddrivers/sl5000/main.cpp4
-rw-r--r--src/plugins/kbddrivers/vr41xx/main.cpp4
-rw-r--r--src/plugins/kbddrivers/yopy/main.cpp4
-rw-r--r--src/plugins/mousedrivers/bus/main.cpp4
-rw-r--r--src/plugins/mousedrivers/linuxis/linuxismousedriverplugin.cpp4
-rw-r--r--src/plugins/mousedrivers/linuxis/linuxismousedriverplugin.h4
-rw-r--r--src/plugins/mousedrivers/linuxis/linuxismousehandler.cpp4
-rw-r--r--src/plugins/mousedrivers/linuxis/linuxismousehandler.h4
-rw-r--r--src/plugins/mousedrivers/linuxtp/main.cpp4
-rw-r--r--src/plugins/mousedrivers/pc/main.cpp4
-rw-r--r--src/plugins/mousedrivers/tslib/main.cpp4
-rw-r--r--src/plugins/mousedrivers/vr41xx/main.cpp4
-rw-r--r--src/plugins/mousedrivers/yopy/main.cpp4
-rw-r--r--src/plugins/script/qtdbus/main.cpp4
-rw-r--r--src/plugins/script/qtdbus/main.h4
-rw-r--r--src/plugins/sqldrivers/db2/main.cpp4
-rw-r--r--src/plugins/sqldrivers/ibase/main.cpp4
-rw-r--r--src/plugins/sqldrivers/mysql/main.cpp4
-rw-r--r--src/plugins/sqldrivers/oci/main.cpp4
-rw-r--r--src/plugins/sqldrivers/odbc/main.cpp4
-rw-r--r--src/plugins/sqldrivers/psql/main.cpp4
-rw-r--r--src/plugins/sqldrivers/sqlite/smain.cpp4
-rw-r--r--src/plugins/sqldrivers/sqlite2/smain.cpp4
-rw-r--r--src/plugins/sqldrivers/tds/main.cpp4
-rw-r--r--src/qt3support/canvas/q3canvas.cpp4
-rw-r--r--src/qt3support/canvas/q3canvas.h4
-rw-r--r--src/qt3support/dialogs/q3filedialog.cpp4
-rw-r--r--src/qt3support/dialogs/q3filedialog.h4
-rw-r--r--src/qt3support/dialogs/q3filedialog_mac.cpp4
-rw-r--r--src/qt3support/dialogs/q3filedialog_win.cpp4
-rw-r--r--src/qt3support/dialogs/q3progressdialog.cpp4
-rw-r--r--src/qt3support/dialogs/q3progressdialog.h4
-rw-r--r--src/qt3support/dialogs/q3tabdialog.cpp4
-rw-r--r--src/qt3support/dialogs/q3tabdialog.h4
-rw-r--r--src/qt3support/dialogs/q3wizard.cpp4
-rw-r--r--src/qt3support/dialogs/q3wizard.h4
-rw-r--r--src/qt3support/itemviews/q3iconview.cpp4
-rw-r--r--src/qt3support/itemviews/q3iconview.h4
-rw-r--r--src/qt3support/itemviews/q3listbox.cpp4
-rw-r--r--src/qt3support/itemviews/q3listbox.h4
-rw-r--r--src/qt3support/itemviews/q3listview.cpp4
-rw-r--r--src/qt3support/itemviews/q3listview.h4
-rw-r--r--src/qt3support/itemviews/q3table.cpp4
-rw-r--r--src/qt3support/itemviews/q3table.h4
-rw-r--r--src/qt3support/network/q3dns.cpp4
-rw-r--r--src/qt3support/network/q3dns.h4
-rw-r--r--src/qt3support/network/q3ftp.cpp4
-rw-r--r--src/qt3support/network/q3ftp.h4
-rw-r--r--src/qt3support/network/q3http.cpp4
-rw-r--r--src/qt3support/network/q3http.h4
-rw-r--r--src/qt3support/network/q3localfs.cpp4
-rw-r--r--src/qt3support/network/q3localfs.h4
-rw-r--r--src/qt3support/network/q3network.cpp4
-rw-r--r--src/qt3support/network/q3network.h4
-rw-r--r--src/qt3support/network/q3networkprotocol.cpp4
-rw-r--r--src/qt3support/network/q3networkprotocol.h4
-rw-r--r--src/qt3support/network/q3serversocket.cpp4
-rw-r--r--src/qt3support/network/q3serversocket.h4
-rw-r--r--src/qt3support/network/q3socket.cpp4
-rw-r--r--src/qt3support/network/q3socket.h4
-rw-r--r--src/qt3support/network/q3socketdevice.cpp4
-rw-r--r--src/qt3support/network/q3socketdevice.h4
-rw-r--r--src/qt3support/network/q3socketdevice_unix.cpp4
-rw-r--r--src/qt3support/network/q3socketdevice_win.cpp4
-rw-r--r--src/qt3support/network/q3url.cpp4
-rw-r--r--src/qt3support/network/q3url.h4
-rw-r--r--src/qt3support/network/q3urloperator.cpp4
-rw-r--r--src/qt3support/network/q3urloperator.h4
-rw-r--r--src/qt3support/other/q3accel.cpp4
-rw-r--r--src/qt3support/other/q3accel.h4
-rw-r--r--src/qt3support/other/q3boxlayout.cpp4
-rw-r--r--src/qt3support/other/q3boxlayout.h4
-rw-r--r--src/qt3support/other/q3dragobject.cpp4
-rw-r--r--src/qt3support/other/q3dragobject.h4
-rw-r--r--src/qt3support/other/q3dropsite.cpp4
-rw-r--r--src/qt3support/other/q3dropsite.h4
-rw-r--r--src/qt3support/other/q3gridlayout.h4
-rw-r--r--src/qt3support/other/q3membuf.cpp4
-rw-r--r--src/qt3support/other/q3membuf_p.h4
-rw-r--r--src/qt3support/other/q3mimefactory.cpp4
-rw-r--r--src/qt3support/other/q3mimefactory.h4
-rw-r--r--src/qt3support/other/q3polygonscanner.cpp4
-rw-r--r--src/qt3support/other/q3polygonscanner.h4
-rw-r--r--src/qt3support/other/q3process.cpp4
-rw-r--r--src/qt3support/other/q3process.h4
-rw-r--r--src/qt3support/other/q3process_unix.cpp4
-rw-r--r--src/qt3support/other/q3process_win.cpp4
-rw-r--r--src/qt3support/other/qiconset.h4
-rw-r--r--src/qt3support/other/qt_compat_pch.h4
-rw-r--r--src/qt3support/painting/q3paintdevicemetrics.cpp4
-rw-r--r--src/qt3support/painting/q3paintdevicemetrics.h4
-rw-r--r--src/qt3support/painting/q3paintengine_svg.cpp4
-rw-r--r--src/qt3support/painting/q3paintengine_svg_p.h4
-rw-r--r--src/qt3support/painting/q3painter.cpp4
-rw-r--r--src/qt3support/painting/q3painter.h4
-rw-r--r--src/qt3support/painting/q3picture.cpp4
-rw-r--r--src/qt3support/painting/q3picture.h4
-rw-r--r--src/qt3support/painting/q3pointarray.cpp4
-rw-r--r--src/qt3support/painting/q3pointarray.h4
-rw-r--r--src/qt3support/sql/q3databrowser.cpp4
-rw-r--r--src/qt3support/sql/q3databrowser.h4
-rw-r--r--src/qt3support/sql/q3datatable.cpp4
-rw-r--r--src/qt3support/sql/q3datatable.h4
-rw-r--r--src/qt3support/sql/q3dataview.cpp4
-rw-r--r--src/qt3support/sql/q3dataview.h4
-rw-r--r--src/qt3support/sql/q3editorfactory.cpp4
-rw-r--r--src/qt3support/sql/q3editorfactory.h4
-rw-r--r--src/qt3support/sql/q3sqlcursor.cpp4
-rw-r--r--src/qt3support/sql/q3sqlcursor.h4
-rw-r--r--src/qt3support/sql/q3sqleditorfactory.cpp4
-rw-r--r--src/qt3support/sql/q3sqleditorfactory.h4
-rw-r--r--src/qt3support/sql/q3sqlfieldinfo.h4
-rw-r--r--src/qt3support/sql/q3sqlform.cpp4
-rw-r--r--src/qt3support/sql/q3sqlform.h4
-rw-r--r--src/qt3support/sql/q3sqlmanager_p.cpp4
-rw-r--r--src/qt3support/sql/q3sqlmanager_p.h4
-rw-r--r--src/qt3support/sql/q3sqlpropertymap.cpp4
-rw-r--r--src/qt3support/sql/q3sqlpropertymap.h4
-rw-r--r--src/qt3support/sql/q3sqlrecordinfo.h4
-rw-r--r--src/qt3support/sql/q3sqlselectcursor.cpp4
-rw-r--r--src/qt3support/sql/q3sqlselectcursor.h4
-rw-r--r--src/qt3support/text/q3multilineedit.cpp4
-rw-r--r--src/qt3support/text/q3multilineedit.h4
-rw-r--r--src/qt3support/text/q3richtext.cpp4
-rw-r--r--src/qt3support/text/q3richtext_p.cpp4
-rw-r--r--src/qt3support/text/q3richtext_p.h4
-rw-r--r--src/qt3support/text/q3simplerichtext.cpp4
-rw-r--r--src/qt3support/text/q3simplerichtext.h4
-rw-r--r--src/qt3support/text/q3stylesheet.cpp4
-rw-r--r--src/qt3support/text/q3stylesheet.h4
-rw-r--r--src/qt3support/text/q3syntaxhighlighter.cpp4
-rw-r--r--src/qt3support/text/q3syntaxhighlighter.h4
-rw-r--r--src/qt3support/text/q3syntaxhighlighter_p.h4
-rw-r--r--src/qt3support/text/q3textbrowser.cpp4
-rw-r--r--src/qt3support/text/q3textbrowser.h4
-rw-r--r--src/qt3support/text/q3textedit.cpp4
-rw-r--r--src/qt3support/text/q3textedit.h4
-rw-r--r--src/qt3support/text/q3textstream.cpp4
-rw-r--r--src/qt3support/text/q3textstream.h4
-rw-r--r--src/qt3support/text/q3textview.cpp4
-rw-r--r--src/qt3support/text/q3textview.h4
-rw-r--r--src/qt3support/tools/q3asciicache.h4
-rw-r--r--src/qt3support/tools/q3asciidict.h4
-rw-r--r--src/qt3support/tools/q3cache.h4
-rw-r--r--src/qt3support/tools/q3cleanuphandler.h4
-rw-r--r--src/qt3support/tools/q3cstring.cpp4
-rw-r--r--src/qt3support/tools/q3cstring.h4
-rw-r--r--src/qt3support/tools/q3deepcopy.cpp4
-rw-r--r--src/qt3support/tools/q3deepcopy.h4
-rw-r--r--src/qt3support/tools/q3dict.h4
-rw-r--r--src/qt3support/tools/q3garray.cpp4
-rw-r--r--src/qt3support/tools/q3garray.h4
-rw-r--r--src/qt3support/tools/q3gcache.cpp4
-rw-r--r--src/qt3support/tools/q3gcache.h4
-rw-r--r--src/qt3support/tools/q3gdict.cpp4
-rw-r--r--src/qt3support/tools/q3gdict.h4
-rw-r--r--src/qt3support/tools/q3glist.cpp4
-rw-r--r--src/qt3support/tools/q3glist.h4
-rw-r--r--src/qt3support/tools/q3gvector.cpp4
-rw-r--r--src/qt3support/tools/q3gvector.h4
-rw-r--r--src/qt3support/tools/q3intcache.h4
-rw-r--r--src/qt3support/tools/q3intdict.h4
-rw-r--r--src/qt3support/tools/q3memarray.h4
-rw-r--r--src/qt3support/tools/q3objectdict.h4
-rw-r--r--src/qt3support/tools/q3ptrcollection.cpp4
-rw-r--r--src/qt3support/tools/q3ptrcollection.h4
-rw-r--r--src/qt3support/tools/q3ptrdict.h4
-rw-r--r--src/qt3support/tools/q3ptrlist.h4
-rw-r--r--src/qt3support/tools/q3ptrqueue.h4
-rw-r--r--src/qt3support/tools/q3ptrstack.h4
-rw-r--r--src/qt3support/tools/q3ptrvector.h4
-rw-r--r--src/qt3support/tools/q3semaphore.cpp4
-rw-r--r--src/qt3support/tools/q3semaphore.h4
-rw-r--r--src/qt3support/tools/q3shared.cpp4
-rw-r--r--src/qt3support/tools/q3shared.h4
-rw-r--r--src/qt3support/tools/q3signal.cpp4
-rw-r--r--src/qt3support/tools/q3signal.h4
-rw-r--r--src/qt3support/tools/q3sortedlist.h4
-rw-r--r--src/qt3support/tools/q3strlist.h4
-rw-r--r--src/qt3support/tools/q3strvec.h4
-rw-r--r--src/qt3support/tools/q3tl.h4
-rw-r--r--src/qt3support/tools/q3valuelist.h4
-rw-r--r--src/qt3support/tools/q3valuestack.h4
-rw-r--r--src/qt3support/tools/q3valuevector.h4
-rw-r--r--src/qt3support/widgets/q3action.cpp4
-rw-r--r--src/qt3support/widgets/q3action.h4
-rw-r--r--src/qt3support/widgets/q3button.cpp4
-rw-r--r--src/qt3support/widgets/q3button.h4
-rw-r--r--src/qt3support/widgets/q3buttongroup.cpp4
-rw-r--r--src/qt3support/widgets/q3buttongroup.h4
-rw-r--r--src/qt3support/widgets/q3combobox.cpp4
-rw-r--r--src/qt3support/widgets/q3combobox.h4
-rw-r--r--src/qt3support/widgets/q3datetimeedit.cpp4
-rw-r--r--src/qt3support/widgets/q3datetimeedit.h4
-rw-r--r--src/qt3support/widgets/q3dockarea.cpp4
-rw-r--r--src/qt3support/widgets/q3dockarea.h4
-rw-r--r--src/qt3support/widgets/q3dockwindow.cpp4
-rw-r--r--src/qt3support/widgets/q3dockwindow.h4
-rw-r--r--src/qt3support/widgets/q3frame.cpp4
-rw-r--r--src/qt3support/widgets/q3frame.h4
-rw-r--r--src/qt3support/widgets/q3grid.cpp4
-rw-r--r--src/qt3support/widgets/q3grid.h4
-rw-r--r--src/qt3support/widgets/q3gridview.cpp4
-rw-r--r--src/qt3support/widgets/q3gridview.h4
-rw-r--r--src/qt3support/widgets/q3groupbox.cpp4
-rw-r--r--src/qt3support/widgets/q3groupbox.h4
-rw-r--r--src/qt3support/widgets/q3hbox.cpp4
-rw-r--r--src/qt3support/widgets/q3hbox.h4
-rw-r--r--src/qt3support/widgets/q3header.cpp4
-rw-r--r--src/qt3support/widgets/q3header.h4
-rw-r--r--src/qt3support/widgets/q3hgroupbox.cpp4
-rw-r--r--src/qt3support/widgets/q3hgroupbox.h4
-rw-r--r--src/qt3support/widgets/q3mainwindow.cpp4
-rw-r--r--src/qt3support/widgets/q3mainwindow.h4
-rw-r--r--src/qt3support/widgets/q3mainwindow_p.h4
-rw-r--r--src/qt3support/widgets/q3popupmenu.cpp4
-rw-r--r--src/qt3support/widgets/q3popupmenu.h4
-rw-r--r--src/qt3support/widgets/q3progressbar.cpp4
-rw-r--r--src/qt3support/widgets/q3progressbar.h4
-rw-r--r--src/qt3support/widgets/q3rangecontrol.cpp4
-rw-r--r--src/qt3support/widgets/q3rangecontrol.h4
-rw-r--r--src/qt3support/widgets/q3scrollview.cpp4
-rw-r--r--src/qt3support/widgets/q3scrollview.h4
-rw-r--r--src/qt3support/widgets/q3spinwidget.cpp4
-rw-r--r--src/qt3support/widgets/q3titlebar.cpp4
-rw-r--r--src/qt3support/widgets/q3titlebar_p.h4
-rw-r--r--src/qt3support/widgets/q3toolbar.cpp4
-rw-r--r--src/qt3support/widgets/q3toolbar.h4
-rw-r--r--src/qt3support/widgets/q3vbox.cpp4
-rw-r--r--src/qt3support/widgets/q3vbox.h4
-rw-r--r--src/qt3support/widgets/q3vgroupbox.cpp4
-rw-r--r--src/qt3support/widgets/q3vgroupbox.h4
-rw-r--r--src/qt3support/widgets/q3whatsthis.cpp4
-rw-r--r--src/qt3support/widgets/q3whatsthis.h4
-rw-r--r--src/qt3support/widgets/q3widgetstack.cpp4
-rw-r--r--src/qt3support/widgets/q3widgetstack.h4
-rw-r--r--src/script/qscript.g12
-rw-r--r--src/script/qscriptable.cpp4
-rw-r--r--src/script/qscriptable.h4
-rw-r--r--src/script/qscriptable_p.h4
-rw-r--r--src/script/qscriptarray_p.h4
-rw-r--r--src/script/qscriptasm.cpp4
-rw-r--r--src/script/qscriptasm_p.h4
-rw-r--r--src/script/qscriptast.cpp4
-rw-r--r--src/script/qscriptast_p.h4
-rw-r--r--src/script/qscriptastfwd_p.h4
-rw-r--r--src/script/qscriptastvisitor.cpp4
-rw-r--r--src/script/qscriptastvisitor_p.h4
-rw-r--r--src/script/qscriptbuffer_p.h4
-rw-r--r--src/script/qscriptclass.cpp4
-rw-r--r--src/script/qscriptclass.h4
-rw-r--r--src/script/qscriptclass_p.h4
-rw-r--r--src/script/qscriptclassdata.cpp4
-rw-r--r--src/script/qscriptclassdata_p.h4
-rw-r--r--src/script/qscriptclassinfo_p.h4
-rw-r--r--src/script/qscriptclasspropertyiterator.cpp4
-rw-r--r--src/script/qscriptclasspropertyiterator.h4
-rw-r--r--src/script/qscriptclasspropertyiterator_p.h4
-rw-r--r--src/script/qscriptcompiler.cpp4
-rw-r--r--src/script/qscriptcompiler_p.h4
-rw-r--r--src/script/qscriptcontext.cpp4
-rw-r--r--src/script/qscriptcontext.h4
-rw-r--r--src/script/qscriptcontext_p.cpp4
-rw-r--r--src/script/qscriptcontext_p.h4
-rw-r--r--src/script/qscriptcontextfwd_p.h4
-rw-r--r--src/script/qscriptcontextinfo.cpp4
-rw-r--r--src/script/qscriptcontextinfo.h4
-rw-r--r--src/script/qscriptcontextinfo_p.h4
-rw-r--r--src/script/qscriptecmaarray.cpp4
-rw-r--r--src/script/qscriptecmaarray_p.h4
-rw-r--r--src/script/qscriptecmaboolean.cpp4
-rw-r--r--src/script/qscriptecmaboolean_p.h4
-rw-r--r--src/script/qscriptecmacore.cpp4
-rw-r--r--src/script/qscriptecmacore_p.h4
-rw-r--r--src/script/qscriptecmadate.cpp4
-rw-r--r--src/script/qscriptecmadate_p.h4
-rw-r--r--src/script/qscriptecmaerror.cpp4
-rw-r--r--src/script/qscriptecmaerror_p.h4
-rw-r--r--src/script/qscriptecmafunction.cpp4
-rw-r--r--src/script/qscriptecmafunction_p.h4
-rw-r--r--src/script/qscriptecmaglobal.cpp4
-rw-r--r--src/script/qscriptecmaglobal_p.h4
-rw-r--r--src/script/qscriptecmamath.cpp4
-rw-r--r--src/script/qscriptecmamath_p.h4
-rw-r--r--src/script/qscriptecmanumber.cpp4
-rw-r--r--src/script/qscriptecmanumber_p.h4
-rw-r--r--src/script/qscriptecmaobject.cpp4
-rw-r--r--src/script/qscriptecmaobject_p.h4
-rw-r--r--src/script/qscriptecmaregexp.cpp4
-rw-r--r--src/script/qscriptecmaregexp_p.h4
-rw-r--r--src/script/qscriptecmastring.cpp4
-rw-r--r--src/script/qscriptecmastring_p.h4
-rw-r--r--src/script/qscriptengine.cpp4
-rw-r--r--src/script/qscriptengine.h4
-rw-r--r--src/script/qscriptengine_p.cpp4
-rw-r--r--src/script/qscriptengine_p.h4
-rw-r--r--src/script/qscriptengineagent.cpp4
-rw-r--r--src/script/qscriptengineagent.h4
-rw-r--r--src/script/qscriptengineagent_p.h4
-rw-r--r--src/script/qscriptenginefwd_p.h4
-rw-r--r--src/script/qscriptextensioninterface.h4
-rw-r--r--src/script/qscriptextensionplugin.cpp4
-rw-r--r--src/script/qscriptextensionplugin.h4
-rw-r--r--src/script/qscriptextenumeration.cpp4
-rw-r--r--src/script/qscriptextenumeration_p.h4
-rw-r--r--src/script/qscriptextqobject.cpp4
-rw-r--r--src/script/qscriptextqobject_p.h4
-rw-r--r--src/script/qscriptextvariant.cpp4
-rw-r--r--src/script/qscriptextvariant_p.h4
-rw-r--r--src/script/qscriptfunction.cpp4
-rw-r--r--src/script/qscriptfunction_p.h4
-rw-r--r--src/script/qscriptgc_p.h4
-rw-r--r--src/script/qscriptglobals_p.h4
-rw-r--r--src/script/qscriptgrammar.cpp4
-rw-r--r--src/script/qscriptgrammar_p.h4
-rw-r--r--src/script/qscriptlexer.cpp4
-rw-r--r--src/script/qscriptlexer_p.h4
-rw-r--r--src/script/qscriptmember_p.h4
-rw-r--r--src/script/qscriptmemberfwd_p.h4
-rw-r--r--src/script/qscriptmemorypool_p.h4
-rw-r--r--src/script/qscriptnameid_p.h4
-rw-r--r--src/script/qscriptnodepool_p.h4
-rw-r--r--src/script/qscriptobject_p.h4
-rw-r--r--src/script/qscriptobjectdata_p.h4
-rw-r--r--src/script/qscriptobjectfwd_p.h4
-rw-r--r--src/script/qscriptparser.cpp4
-rw-r--r--src/script/qscriptparser_p.h4
-rw-r--r--src/script/qscriptprettypretty.cpp4
-rw-r--r--src/script/qscriptprettypretty_p.h4
-rw-r--r--src/script/qscriptrepository_p.h4
-rw-r--r--src/script/qscriptstring.cpp4
-rw-r--r--src/script/qscriptstring.h4
-rw-r--r--src/script/qscriptstring_p.h4
-rw-r--r--src/script/qscriptsyntaxchecker.cpp4
-rw-r--r--src/script/qscriptsyntaxchecker_p.h4
-rw-r--r--src/script/qscriptsyntaxcheckresult_p.h4
-rw-r--r--src/script/qscriptvalue.cpp4
-rw-r--r--src/script/qscriptvalue.h4
-rw-r--r--src/script/qscriptvalue_p.h4
-rw-r--r--src/script/qscriptvaluefwd_p.h4
-rw-r--r--src/script/qscriptvalueimpl.cpp4
-rw-r--r--src/script/qscriptvalueimpl_p.h4
-rw-r--r--src/script/qscriptvalueimplfwd_p.h4
-rw-r--r--src/script/qscriptvalueiterator.cpp4
-rw-r--r--src/script/qscriptvalueiterator.h4
-rw-r--r--src/script/qscriptvalueiterator_p.h4
-rw-r--r--src/script/qscriptvalueiteratorimpl.cpp4
-rw-r--r--src/script/qscriptvalueiteratorimpl_p.h4
-rw-r--r--src/script/qscriptxmlgenerator.cpp4
-rw-r--r--src/script/qscriptxmlgenerator_p.h4
-rw-r--r--src/scripttools/debugging/debugging.pri6
-rw-r--r--src/scripttools/debugging/qscriptbreakpointdata.cpp4
-rw-r--r--src/scripttools/debugging/qscriptbreakpointdata_p.h4
-rw-r--r--src/scripttools/debugging/qscriptbreakpointsmodel.cpp4
-rw-r--r--src/scripttools/debugging/qscriptbreakpointsmodel_p.h4
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidget.cpp4
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidget_p.h4
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidgetinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidgetinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidgetinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptcompletionproviderinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptcompletiontask.cpp210
-rw-r--r--src/scripttools/debugging/qscriptcompletiontask_p.h13
-rw-r--r--src/scripttools/debugging/qscriptcompletiontaskinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscriptcompletiontaskinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptcompletiontaskinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebugger.cpp259
-rw-r--r--src/scripttools/debugging/qscriptdebugger_p.h45
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerbackend.cpp47
-rw-r--r--src/scripttools/debugging/qscriptdebuggerbackend_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerbackend_p_p.h10
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodefinderwidget.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodefinderwidget_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodefinderwidgetinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodefinderwidgetinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodefinderwidgetinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeview.cpp7
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeview_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeviewinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeviewinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeviewinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodewidget.cpp17
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodewidget_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodewidgetinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodewidgetinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodewidgetinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommand.cpp24
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommand_p.h9
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp112
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandexecutor_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerfrontend.cpp15
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerfrontend_p.h7
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerjob.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerjob_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerjob_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsole.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsole_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommand.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommand_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommand_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandgroupdata.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandgroupdata_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandjob.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandjob_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandjob_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandmanager.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandmanager_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsoleglobalobject_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolehistorianinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidget.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidget_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidgetinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidgetinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidgetinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerevent.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerevent_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggereventhandlerinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerfrontend.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerfrontend_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerfrontend_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerjob.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerjob_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerjob_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerjobschedulerinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalsmodel.cpp20
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalsmodel_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidget_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidgetinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidgetinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidgetinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerobjectsnapshotdelta_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerresponse.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerresponse_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerresponsehandlerinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptsmodel.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptsmodel_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptswidget.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptswidget_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptswidgetinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptswidgetinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptswidgetinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackmodel.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackmodel_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackwidget.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackwidget_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackwidgetinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackwidgetinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackwidgetinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstandardwidgetfactory.cpp109
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstandardwidgetfactory_p.h85
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalue.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalue_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalueproperty.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalueproperty_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerwidgetfactoryinterface_p.h14
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidget.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidget_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidgetinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidgetinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidgetinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptedit.cpp4
-rw-r--r--src/scripttools/debugging/qscriptedit_p.h4
-rw-r--r--src/scripttools/debugging/qscriptenginedebugger.cpp220
-rw-r--r--src/scripttools/debugging/qscriptenginedebugger.h11
-rw-r--r--src/scripttools/debugging/qscriptenginedebuggerfrontend.cpp4
-rw-r--r--src/scripttools/debugging/qscriptenginedebuggerfrontend_p.h4
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidget.cpp4
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidget_p.h4
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidgetinterface.cpp4
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidgetinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidgetinterface_p_p.h4
-rw-r--r--src/scripttools/debugging/qscriptmessagehandlerinterface_p.h4
-rw-r--r--src/scripttools/debugging/qscriptobjectsnapshot.cpp4
-rw-r--r--src/scripttools/debugging/qscriptobjectsnapshot_p.h4
-rw-r--r--src/scripttools/debugging/qscriptscriptdata.cpp4
-rw-r--r--src/scripttools/debugging/qscriptscriptdata_p.h4
-rw-r--r--src/scripttools/debugging/qscriptstdmessagehandler.cpp4
-rw-r--r--src/scripttools/debugging/qscriptstdmessagehandler_p.h4
-rw-r--r--src/scripttools/debugging/qscriptsyntaxhighlighter.cpp4
-rw-r--r--src/scripttools/debugging/qscriptsyntaxhighlighter_p.h4
-rw-r--r--src/scripttools/debugging/qscripttooltipproviderinterface_p.h9
-rw-r--r--src/scripttools/debugging/qscriptvalueproperty.cpp4
-rw-r--r--src/scripttools/debugging/qscriptvalueproperty_p.h4
-rw-r--r--src/scripttools/debugging/qscriptxmlparser.cpp4
-rw-r--r--src/scripttools/debugging/qscriptxmlparser_p.h4
-rw-r--r--src/sql/drivers/db2/qsql_db2.cpp81
-rw-r--r--src/sql/drivers/db2/qsql_db2.h4
-rw-r--r--src/sql/drivers/ibase/qsql_ibase.cpp20
-rw-r--r--src/sql/drivers/ibase/qsql_ibase.h4
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.cpp34
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.h5
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp284
-rw-r--r--src/sql/drivers/oci/qsql_oci.h4
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp67
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.h4
-rw-r--r--src/sql/drivers/psql/qsql_psql.cpp57
-rw-r--r--src/sql/drivers/psql/qsql_psql.h4
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.cpp31
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.h4
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.cpp11
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.h4
-rw-r--r--src/sql/drivers/tds/qsql_tds.cpp25
-rw-r--r--src/sql/drivers/tds/qsql_tds.h4
-rw-r--r--src/sql/kernel/qsql.h4
-rw-r--r--src/sql/kernel/qsqlcachedresult.cpp4
-rw-r--r--src/sql/kernel/qsqlcachedresult_p.h4
-rw-r--r--src/sql/kernel/qsqldatabase.cpp58
-rw-r--r--src/sql/kernel/qsqldatabase.h6
-rw-r--r--src/sql/kernel/qsqldriver.cpp31
-rw-r--r--src/sql/kernel/qsqldriver.h7
-rw-r--r--src/sql/kernel/qsqldriverplugin.cpp4
-rw-r--r--src/sql/kernel/qsqldriverplugin.h4
-rw-r--r--src/sql/kernel/qsqlerror.cpp4
-rw-r--r--src/sql/kernel/qsqlerror.h4
-rw-r--r--src/sql/kernel/qsqlfield.cpp4
-rw-r--r--src/sql/kernel/qsqlfield.h4
-rw-r--r--src/sql/kernel/qsqlindex.cpp4
-rw-r--r--src/sql/kernel/qsqlindex.h4
-rw-r--r--src/sql/kernel/qsqlnulldriver_p.h4
-rw-r--r--src/sql/kernel/qsqlquery.cpp27
-rw-r--r--src/sql/kernel/qsqlquery.h4
-rw-r--r--src/sql/kernel/qsqlrecord.cpp4
-rw-r--r--src/sql/kernel/qsqlrecord.h4
-rw-r--r--src/sql/kernel/qsqlresult.cpp21
-rw-r--r--src/sql/kernel/qsqlresult.h5
-rw-r--r--src/sql/models/qsqlquerymodel.cpp4
-rw-r--r--src/sql/models/qsqlquerymodel.h4
-rw-r--r--src/sql/models/qsqlquerymodel_p.h4
-rw-r--r--src/sql/models/qsqlrelationaldelegate.cpp4
-rw-r--r--src/sql/models/qsqlrelationaldelegate.h4
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.cpp4
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.h4
-rw-r--r--src/sql/models/qsqltablemodel.cpp24
-rw-r--r--src/sql/models/qsqltablemodel.h4
-rw-r--r--src/sql/models/qsqltablemodel_p.h4
-rw-r--r--src/svg/qgraphicssvgitem.cpp4
-rw-r--r--src/svg/qgraphicssvgitem.h4
-rw-r--r--src/svg/qsvgfont.cpp4
-rw-r--r--src/svg/qsvgfont_p.h4
-rw-r--r--src/svg/qsvggenerator.cpp4
-rw-r--r--src/svg/qsvggenerator.h4
-rw-r--r--src/svg/qsvggraphics.cpp4
-rw-r--r--src/svg/qsvggraphics_p.h4
-rw-r--r--src/svg/qsvghandler.cpp5
-rw-r--r--src/svg/qsvghandler_p.h4
-rw-r--r--src/svg/qsvgnode.cpp4
-rw-r--r--src/svg/qsvgnode_p.h4
-rw-r--r--src/svg/qsvgrenderer.cpp4
-rw-r--r--src/svg/qsvgrenderer.h4
-rw-r--r--src/svg/qsvgstructure.cpp4
-rw-r--r--src/svg/qsvgstructure_p.h4
-rw-r--r--src/svg/qsvgstyle.cpp4
-rw-r--r--src/svg/qsvgstyle_p.h4
-rw-r--r--src/svg/qsvgtinydocument.cpp4
-rw-r--r--src/svg/qsvgtinydocument_p.h4
-rw-r--r--src/svg/qsvgwidget.cpp4
-rw-r--r--src/svg/qsvgwidget.h4
-rw-r--r--src/testlib/qabstracttestlogger.cpp4
-rw-r--r--src/testlib/qabstracttestlogger_p.h4
-rw-r--r--src/testlib/qasciikey.cpp4
-rw-r--r--src/testlib/qbenchmark.cpp4
-rw-r--r--src/testlib/qbenchmark.h4
-rw-r--r--src/testlib/qbenchmark_p.h4
-rw-r--r--src/testlib/qbenchmarkevent.cpp4
-rw-r--r--src/testlib/qbenchmarkevent_p.h4
-rw-r--r--src/testlib/qbenchmarkmeasurement.cpp4
-rw-r--r--src/testlib/qbenchmarkmeasurement_p.h4
-rw-r--r--src/testlib/qbenchmarkvalgrind.cpp4
-rw-r--r--src/testlib/qbenchmarkvalgrind_p.h4
-rw-r--r--src/testlib/qplaintestlogger.cpp4
-rw-r--r--src/testlib/qplaintestlogger_p.h4
-rw-r--r--src/testlib/qsignaldumper.cpp4
-rw-r--r--src/testlib/qsignaldumper_p.h4
-rw-r--r--src/testlib/qsignalspy.h4
-rw-r--r--src/testlib/qtest.h4
-rw-r--r--src/testlib/qtest_global.h4
-rw-r--r--src/testlib/qtest_gui.h4
-rw-r--r--src/testlib/qtestaccessible.h4
-rw-r--r--src/testlib/qtestassert.h4
-rw-r--r--src/testlib/qtestbasicstreamer.cpp4
-rw-r--r--src/testlib/qtestbasicstreamer.h4
-rw-r--r--src/testlib/qtestcase.cpp4
-rw-r--r--src/testlib/qtestcase.h4
-rw-r--r--src/testlib/qtestcoreelement.h4
-rw-r--r--src/testlib/qtestcorelist.h4
-rw-r--r--src/testlib/qtestdata.cpp4
-rw-r--r--src/testlib/qtestdata.h4
-rw-r--r--src/testlib/qtestelement.cpp4
-rw-r--r--src/testlib/qtestelement.h4
-rw-r--r--src/testlib/qtestelementattribute.cpp64
-rw-r--r--src/testlib/qtestelementattribute.h4
-rw-r--r--src/testlib/qtestevent.h4
-rw-r--r--src/testlib/qtesteventloop.h4
-rw-r--r--src/testlib/qtestfilelogger.cpp4
-rw-r--r--src/testlib/qtestfilelogger.h4
-rw-r--r--src/testlib/qtestkeyboard.h4
-rw-r--r--src/testlib/qtestlightxmlstreamer.cpp4
-rw-r--r--src/testlib/qtestlightxmlstreamer.h4
-rw-r--r--src/testlib/qtestlog.cpp4
-rw-r--r--src/testlib/qtestlog_p.h4
-rw-r--r--src/testlib/qtestlogger.cpp4
-rw-r--r--src/testlib/qtestlogger_p.h4
-rw-r--r--src/testlib/qtestmouse.h4
-rw-r--r--src/testlib/qtestresult.cpp4
-rw-r--r--src/testlib/qtestresult_p.h4
-rw-r--r--src/testlib/qtestspontaneevent.h4
-rw-r--r--src/testlib/qtestsystem.h4
-rw-r--r--src/testlib/qtesttable.cpp4
-rw-r--r--src/testlib/qtesttable_p.h4
-rw-r--r--src/testlib/qtestxmlstreamer.cpp4
-rw-r--r--src/testlib/qtestxmlstreamer.h4
-rw-r--r--src/testlib/qtestxunitstreamer.cpp4
-rw-r--r--src/testlib/qtestxunitstreamer.h4
-rw-r--r--src/testlib/qxmltestlogger.cpp4
-rw-r--r--src/testlib/qxmltestlogger_p.h4
-rw-r--r--src/tools/idc/main.cpp7
-rw-r--r--src/tools/moc/generator.cpp4
-rw-r--r--src/tools/moc/generator.h4
-rw-r--r--src/tools/moc/keywords.cpp4
-rw-r--r--src/tools/moc/main.cpp4
-rw-r--r--src/tools/moc/moc.cpp4
-rw-r--r--src/tools/moc/moc.h4
-rw-r--r--src/tools/moc/mwerks_mac.cpp4
-rw-r--r--src/tools/moc/mwerks_mac.h4
-rw-r--r--src/tools/moc/outputrevision.h4
-rw-r--r--src/tools/moc/parser.cpp4
-rw-r--r--src/tools/moc/parser.h4
-rw-r--r--src/tools/moc/ppkeywords.cpp4
-rw-r--r--src/tools/moc/preprocessor.cpp4
-rw-r--r--src/tools/moc/preprocessor.h4
-rw-r--r--src/tools/moc/symbols.h4
-rw-r--r--src/tools/moc/token.cpp4
-rw-r--r--src/tools/moc/token.h4
-rw-r--r--src/tools/moc/util/generate_keywords.cpp4
-rw-r--r--src/tools/moc/util/licenseheader.txt4
-rw-r--r--src/tools/moc/utils.h4
-rw-r--r--src/tools/rcc/main.cpp4
-rw-r--r--src/tools/rcc/rcc.cpp4
-rw-r--r--src/tools/rcc/rcc.h4
-rw-r--r--src/tools/uic/cpp/cppextractimages.cpp4
-rw-r--r--src/tools/uic/cpp/cppextractimages.h4
-rw-r--r--src/tools/uic/cpp/cppwritedeclaration.cpp4
-rw-r--r--src/tools/uic/cpp/cppwritedeclaration.h4
-rw-r--r--src/tools/uic/cpp/cppwriteicondata.cpp4
-rw-r--r--src/tools/uic/cpp/cppwriteicondata.h4
-rw-r--r--src/tools/uic/cpp/cppwriteicondeclaration.cpp4
-rw-r--r--src/tools/uic/cpp/cppwriteicondeclaration.h4
-rw-r--r--src/tools/uic/cpp/cppwriteiconinitialization.cpp4
-rw-r--r--src/tools/uic/cpp/cppwriteiconinitialization.h4
-rw-r--r--src/tools/uic/cpp/cppwriteincludes.cpp4
-rw-r--r--src/tools/uic/cpp/cppwriteincludes.h4
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.cpp26
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.h4
-rw-r--r--src/tools/uic/customwidgetsinfo.cpp4
-rw-r--r--src/tools/uic/customwidgetsinfo.h4
-rw-r--r--src/tools/uic/databaseinfo.cpp4
-rw-r--r--src/tools/uic/databaseinfo.h4
-rw-r--r--src/tools/uic/driver.cpp4
-rw-r--r--src/tools/uic/driver.h4
-rw-r--r--src/tools/uic/globaldefs.h4
-rw-r--r--src/tools/uic/main.cpp4
-rw-r--r--src/tools/uic/option.h4
-rw-r--r--src/tools/uic/treewalker.cpp4
-rw-r--r--src/tools/uic/treewalker.h4
-rw-r--r--src/tools/uic/ui4.cpp4
-rw-r--r--src/tools/uic/ui4.h4
-rw-r--r--src/tools/uic/uic.cpp4
-rw-r--r--src/tools/uic/uic.h4
-rw-r--r--src/tools/uic/utils.h4
-rw-r--r--src/tools/uic/validator.cpp4
-rw-r--r--src/tools/uic/validator.h4
-rw-r--r--src/tools/uic3/converter.cpp21
-rw-r--r--src/tools/uic3/deps.cpp4
-rw-r--r--src/tools/uic3/domtool.cpp4
-rw-r--r--src/tools/uic3/domtool.h4
-rw-r--r--src/tools/uic3/embed.cpp4
-rw-r--r--src/tools/uic3/form.cpp4
-rw-r--r--src/tools/uic3/main.cpp4
-rw-r--r--src/tools/uic3/object.cpp4
-rw-r--r--src/tools/uic3/parser.cpp4
-rw-r--r--src/tools/uic3/parser.h4
-rw-r--r--src/tools/uic3/qt3to4.cpp4
-rw-r--r--src/tools/uic3/qt3to4.h4
-rw-r--r--src/tools/uic3/subclassing.cpp4
-rw-r--r--src/tools/uic3/ui3reader.cpp4
-rw-r--r--src/tools/uic3/ui3reader.h4
-rw-r--r--src/tools/uic3/uic.cpp4
-rw-r--r--src/tools/uic3/uic.h4
-rw-r--r--src/tools/uic3/widgetinfo.cpp4
-rw-r--r--src/tools/uic3/widgetinfo.h4
-rw-r--r--src/winmain/qtmain_win.cpp2
-rw-r--r--src/xml/dom/qdom.cpp4
-rw-r--r--src/xml/dom/qdom.h4
-rw-r--r--src/xml/sax/qxml.cpp4
-rw-r--r--src/xml/sax/qxml.h4
-rw-r--r--src/xml/stream/qxmlstream.h4
-rw-r--r--src/xmlpatterns/Mainpage.dox4
-rw-r--r--src/xmlpatterns/acceltree/qacceliterators.cpp4
-rw-r--r--src/xmlpatterns/acceltree/qacceliterators_p.h4
-rw-r--r--src/xmlpatterns/acceltree/qacceltree.cpp4
-rw-r--r--src/xmlpatterns/acceltree/qacceltree_p.h4
-rw-r--r--src/xmlpatterns/acceltree/qacceltreebuilder.cpp4
-rw-r--r--src/xmlpatterns/acceltree/qacceltreebuilder_p.h4
-rw-r--r--src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp4
-rw-r--r--src/xmlpatterns/acceltree/qacceltreeresourceloader_p.h4
-rw-r--r--src/xmlpatterns/acceltree/qcompressedwhitespace.cpp4
-rw-r--r--src/xmlpatterns/acceltree/qcompressedwhitespace_p.h4
-rw-r--r--src/xmlpatterns/api/qabstractmessagehandler.cpp4
-rw-r--r--src/xmlpatterns/api/qabstractmessagehandler.h4
-rw-r--r--src/xmlpatterns/api/qabstracturiresolver.cpp4
-rw-r--r--src/xmlpatterns/api/qabstracturiresolver.h4
-rw-r--r--src/xmlpatterns/api/qabstractxmlforwarditerator.cpp4
-rw-r--r--src/xmlpatterns/api/qabstractxmlforwarditerator_p.h4
-rw-r--r--src/xmlpatterns/api/qabstractxmlnodemodel.cpp4
-rw-r--r--src/xmlpatterns/api/qabstractxmlnodemodel.h4
-rw-r--r--src/xmlpatterns/api/qabstractxmlnodemodel_p.h4
-rw-r--r--src/xmlpatterns/api/qabstractxmlreceiver.cpp4
-rw-r--r--src/xmlpatterns/api/qabstractxmlreceiver.h4
-rw-r--r--src/xmlpatterns/api/qabstractxmlreceiver_p.h4
-rw-r--r--src/xmlpatterns/api/qdeviceresourceloader_p.h4
-rw-r--r--src/xmlpatterns/api/qiodevicedelegate.cpp4
-rw-r--r--src/xmlpatterns/api/qiodevicedelegate_p.h4
-rw-r--r--src/xmlpatterns/api/qnetworkaccessdelegator.cpp4
-rw-r--r--src/xmlpatterns/api/qnetworkaccessdelegator_p.h4
-rw-r--r--src/xmlpatterns/api/qreferencecountedvalue_p.h4
-rw-r--r--src/xmlpatterns/api/qresourcedelegator.cpp4
-rw-r--r--src/xmlpatterns/api/qresourcedelegator_p.h4
-rw-r--r--src/xmlpatterns/api/qsimplexmlnodemodel.cpp4
-rw-r--r--src/xmlpatterns/api/qsimplexmlnodemodel.h4
-rw-r--r--src/xmlpatterns/api/qsourcelocation.cpp4
-rw-r--r--src/xmlpatterns/api/qsourcelocation.h4
-rw-r--r--src/xmlpatterns/api/quriloader.cpp4
-rw-r--r--src/xmlpatterns/api/quriloader_p.h4
-rw-r--r--src/xmlpatterns/api/qvariableloader.cpp4
-rw-r--r--src/xmlpatterns/api/qvariableloader_p.h4
-rw-r--r--src/xmlpatterns/api/qxmlformatter.cpp4
-rw-r--r--src/xmlpatterns/api/qxmlformatter.h4
-rw-r--r--src/xmlpatterns/api/qxmlname.cpp4
-rw-r--r--src/xmlpatterns/api/qxmlname.h4
-rw-r--r--src/xmlpatterns/api/qxmlnamepool.cpp4
-rw-r--r--src/xmlpatterns/api/qxmlnamepool.h4
-rw-r--r--src/xmlpatterns/api/qxmlquery.cpp4
-rw-r--r--src/xmlpatterns/api/qxmlquery.h4
-rw-r--r--src/xmlpatterns/api/qxmlquery_p.h4
-rw-r--r--src/xmlpatterns/api/qxmlresultitems.cpp4
-rw-r--r--src/xmlpatterns/api/qxmlresultitems.h4
-rw-r--r--src/xmlpatterns/api/qxmlresultitems_p.h4
-rw-r--r--src/xmlpatterns/api/qxmlserializer.cpp4
-rw-r--r--src/xmlpatterns/api/qxmlserializer.h4
-rw-r--r--src/xmlpatterns/api/qxmlserializer_p.h4
-rw-r--r--src/xmlpatterns/data/qabstractdatetime.cpp4
-rw-r--r--src/xmlpatterns/data/qabstractdatetime_p.h4
-rw-r--r--src/xmlpatterns/data/qabstractduration.cpp4
-rw-r--r--src/xmlpatterns/data/qabstractduration_p.h4
-rw-r--r--src/xmlpatterns/data/qabstractfloat.cpp4
-rw-r--r--src/xmlpatterns/data/qabstractfloat_p.h4
-rw-r--r--src/xmlpatterns/data/qabstractfloatcasters.cpp4
-rw-r--r--src/xmlpatterns/data/qabstractfloatcasters_p.h4
-rw-r--r--src/xmlpatterns/data/qabstractfloatmathematician.cpp4
-rw-r--r--src/xmlpatterns/data/qabstractfloatmathematician_p.h4
-rw-r--r--src/xmlpatterns/data/qanyuri.cpp4
-rw-r--r--src/xmlpatterns/data/qanyuri_p.h4
-rw-r--r--src/xmlpatterns/data/qatomiccaster.cpp4
-rw-r--r--src/xmlpatterns/data/qatomiccaster_p.h4
-rw-r--r--src/xmlpatterns/data/qatomiccasters.cpp4
-rw-r--r--src/xmlpatterns/data/qatomiccasters_p.h4
-rw-r--r--src/xmlpatterns/data/qatomiccomparator.cpp4
-rw-r--r--src/xmlpatterns/data/qatomiccomparator_p.h4
-rw-r--r--src/xmlpatterns/data/qatomiccomparators.cpp4
-rw-r--r--src/xmlpatterns/data/qatomiccomparators_p.h4
-rw-r--r--src/xmlpatterns/data/qatomicmathematician.cpp4
-rw-r--r--src/xmlpatterns/data/qatomicmathematician_p.h4
-rw-r--r--src/xmlpatterns/data/qatomicmathematicians.cpp4
-rw-r--r--src/xmlpatterns/data/qatomicmathematicians_p.h4
-rw-r--r--src/xmlpatterns/data/qatomicstring.cpp4
-rw-r--r--src/xmlpatterns/data/qatomicstring_p.h4
-rw-r--r--src/xmlpatterns/data/qatomicvalue.cpp4
-rw-r--r--src/xmlpatterns/data/qbase64binary.cpp4
-rw-r--r--src/xmlpatterns/data/qbase64binary_p.h4
-rw-r--r--src/xmlpatterns/data/qboolean.cpp4
-rw-r--r--src/xmlpatterns/data/qboolean_p.h4
-rw-r--r--src/xmlpatterns/data/qcommonvalues.cpp4
-rw-r--r--src/xmlpatterns/data/qcommonvalues_p.h4
-rw-r--r--src/xmlpatterns/data/qdate.cpp4
-rw-r--r--src/xmlpatterns/data/qdate_p.h4
-rw-r--r--src/xmlpatterns/data/qdaytimeduration.cpp4
-rw-r--r--src/xmlpatterns/data/qdaytimeduration_p.h4
-rw-r--r--src/xmlpatterns/data/qdecimal.cpp4
-rw-r--r--src/xmlpatterns/data/qdecimal_p.h4
-rw-r--r--src/xmlpatterns/data/qderivedinteger_p.h4
-rw-r--r--src/xmlpatterns/data/qderivedstring_p.h4
-rw-r--r--src/xmlpatterns/data/qduration.cpp4
-rw-r--r--src/xmlpatterns/data/qduration_p.h4
-rw-r--r--src/xmlpatterns/data/qgday.cpp4
-rw-r--r--src/xmlpatterns/data/qgday_p.h4
-rw-r--r--src/xmlpatterns/data/qgmonth.cpp4
-rw-r--r--src/xmlpatterns/data/qgmonth_p.h4
-rw-r--r--src/xmlpatterns/data/qgmonthday.cpp4
-rw-r--r--src/xmlpatterns/data/qgmonthday_p.h4
-rw-r--r--src/xmlpatterns/data/qgyear.cpp4
-rw-r--r--src/xmlpatterns/data/qgyear_p.h4
-rw-r--r--src/xmlpatterns/data/qgyearmonth.cpp4
-rw-r--r--src/xmlpatterns/data/qgyearmonth_p.h4
-rw-r--r--src/xmlpatterns/data/qhexbinary.cpp4
-rw-r--r--src/xmlpatterns/data/qhexbinary_p.h4
-rw-r--r--src/xmlpatterns/data/qinteger.cpp4
-rw-r--r--src/xmlpatterns/data/qinteger_p.h4
-rw-r--r--src/xmlpatterns/data/qitem.cpp4
-rw-r--r--src/xmlpatterns/data/qitem_p.h4
-rw-r--r--src/xmlpatterns/data/qnodebuilder.cpp4
-rw-r--r--src/xmlpatterns/data/qnodebuilder_p.h4
-rw-r--r--src/xmlpatterns/data/qnodemodel.cpp4
-rw-r--r--src/xmlpatterns/data/qqnamevalue.cpp4
-rw-r--r--src/xmlpatterns/data/qqnamevalue_p.h4
-rw-r--r--src/xmlpatterns/data/qresourceloader.cpp4
-rw-r--r--src/xmlpatterns/data/qresourceloader_p.h4
-rw-r--r--src/xmlpatterns/data/qschemadatetime.cpp4
-rw-r--r--src/xmlpatterns/data/qschemadatetime_p.h4
-rw-r--r--src/xmlpatterns/data/qschemanumeric.cpp4
-rw-r--r--src/xmlpatterns/data/qschemanumeric_p.h4
-rw-r--r--src/xmlpatterns/data/qschematime.cpp4
-rw-r--r--src/xmlpatterns/data/qschematime_p.h4
-rw-r--r--src/xmlpatterns/data/qsequencereceiver.cpp4
-rw-r--r--src/xmlpatterns/data/qsequencereceiver_p.h4
-rw-r--r--src/xmlpatterns/data/qsorttuple.cpp4
-rw-r--r--src/xmlpatterns/data/qsorttuple_p.h4
-rw-r--r--src/xmlpatterns/data/quntypedatomic.cpp4
-rw-r--r--src/xmlpatterns/data/quntypedatomic_p.h4
-rw-r--r--src/xmlpatterns/data/qvalidationerror.cpp4
-rw-r--r--src/xmlpatterns/data/qvalidationerror_p.h4
-rw-r--r--src/xmlpatterns/data/qyearmonthduration.cpp4
-rw-r--r--src/xmlpatterns/data/qyearmonthduration_p.h4
-rw-r--r--src/xmlpatterns/documentationGroups.dox4
-rw-r--r--src/xmlpatterns/environment/createReportContext.xsl8
-rw-r--r--src/xmlpatterns/environment/qcurrentitemcontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qcurrentitemcontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qdelegatingdynamiccontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qdelegatingdynamiccontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qdelegatingstaticcontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qdelegatingstaticcontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qdynamiccontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qdynamiccontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qfocus.cpp4
-rw-r--r--src/xmlpatterns/environment/qfocus_p.h4
-rw-r--r--src/xmlpatterns/environment/qgenericdynamiccontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qgenericdynamiccontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qgenericstaticcontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qgenericstaticcontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qreceiverdynamiccontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qreceiverdynamiccontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qreportcontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qreportcontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qstackcontextbase.cpp4
-rw-r--r--src/xmlpatterns/environment/qstackcontextbase_p.h4
-rw-r--r--src/xmlpatterns/environment/qstaticbaseuricontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qstaticbaseuricontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qstaticcompatibilitycontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qstaticcompatibilitycontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qstaticcontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qstaticcontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qstaticcurrentcontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qstaticcurrentcontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qstaticfocuscontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qstaticfocuscontext_p.h4
-rw-r--r--src/xmlpatterns/environment/qstaticnamespacecontext.cpp4
-rw-r--r--src/xmlpatterns/environment/qstaticnamespacecontext_p.h4
-rw-r--r--src/xmlpatterns/expr/qandexpression.cpp4
-rw-r--r--src/xmlpatterns/expr/qandexpression_p.h4
-rw-r--r--src/xmlpatterns/expr/qapplytemplate.cpp4
-rw-r--r--src/xmlpatterns/expr/qapplytemplate_p.h4
-rw-r--r--src/xmlpatterns/expr/qargumentreference.cpp4
-rw-r--r--src/xmlpatterns/expr/qargumentreference_p.h4
-rw-r--r--src/xmlpatterns/expr/qarithmeticexpression.cpp4
-rw-r--r--src/xmlpatterns/expr/qarithmeticexpression_p.h4
-rw-r--r--src/xmlpatterns/expr/qattributeconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qattributeconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qattributenamevalidator.cpp4
-rw-r--r--src/xmlpatterns/expr/qattributenamevalidator_p.h4
-rw-r--r--src/xmlpatterns/expr/qaxisstep.cpp4
-rw-r--r--src/xmlpatterns/expr/qaxisstep_p.h4
-rw-r--r--src/xmlpatterns/expr/qcachecells_p.h4
-rw-r--r--src/xmlpatterns/expr/qcallsite.cpp4
-rw-r--r--src/xmlpatterns/expr/qcallsite_p.h4
-rw-r--r--src/xmlpatterns/expr/qcalltargetdescription.cpp4
-rw-r--r--src/xmlpatterns/expr/qcalltargetdescription_p.h4
-rw-r--r--src/xmlpatterns/expr/qcalltemplate.cpp4
-rw-r--r--src/xmlpatterns/expr/qcalltemplate_p.h4
-rw-r--r--src/xmlpatterns/expr/qcastableas.cpp4
-rw-r--r--src/xmlpatterns/expr/qcastableas_p.h4
-rw-r--r--src/xmlpatterns/expr/qcastas.cpp4
-rw-r--r--src/xmlpatterns/expr/qcastas_p.h4
-rw-r--r--src/xmlpatterns/expr/qcastingplatform.cpp4
-rw-r--r--src/xmlpatterns/expr/qcastingplatform_p.h4
-rw-r--r--src/xmlpatterns/expr/qcollationchecker.cpp4
-rw-r--r--src/xmlpatterns/expr/qcollationchecker_p.h4
-rw-r--r--src/xmlpatterns/expr/qcombinenodes.cpp4
-rw-r--r--src/xmlpatterns/expr/qcombinenodes_p.h4
-rw-r--r--src/xmlpatterns/expr/qcommentconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qcommentconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qcomparisonplatform.cpp4
-rw-r--r--src/xmlpatterns/expr/qcomparisonplatform_p.h4
-rw-r--r--src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qcomputednamespaceconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qcontextitem.cpp4
-rw-r--r--src/xmlpatterns/expr/qcontextitem_p.h4
-rw-r--r--src/xmlpatterns/expr/qcopyof.cpp4
-rw-r--r--src/xmlpatterns/expr/qcopyof_p.h4
-rw-r--r--src/xmlpatterns/expr/qcurrentitemstore.cpp4
-rw-r--r--src/xmlpatterns/expr/qcurrentitemstore_p.h4
-rw-r--r--src/xmlpatterns/expr/qdocumentconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qdocumentconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qdocumentcontentvalidator.cpp4
-rw-r--r--src/xmlpatterns/expr/qdocumentcontentvalidator_p.h4
-rw-r--r--src/xmlpatterns/expr/qdynamiccontextstore.cpp4
-rw-r--r--src/xmlpatterns/expr/qdynamiccontextstore_p.h4
-rw-r--r--src/xmlpatterns/expr/qelementconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qelementconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qemptycontainer.cpp4
-rw-r--r--src/xmlpatterns/expr/qemptycontainer_p.h4
-rw-r--r--src/xmlpatterns/expr/qemptysequence.cpp4
-rw-r--r--src/xmlpatterns/expr/qemptysequence_p.h4
-rw-r--r--src/xmlpatterns/expr/qevaluationcache.cpp4
-rw-r--r--src/xmlpatterns/expr/qevaluationcache_p.h4
-rw-r--r--src/xmlpatterns/expr/qexpression.cpp4
-rw-r--r--src/xmlpatterns/expr/qexpression_p.h4
-rw-r--r--src/xmlpatterns/expr/qexpressiondispatch_p.h4
-rw-r--r--src/xmlpatterns/expr/qexpressionfactory.cpp4
-rw-r--r--src/xmlpatterns/expr/qexpressionfactory_p.h4
-rw-r--r--src/xmlpatterns/expr/qexpressionsequence.cpp4
-rw-r--r--src/xmlpatterns/expr/qexpressionsequence_p.h4
-rw-r--r--src/xmlpatterns/expr/qexpressionvariablereference.cpp4
-rw-r--r--src/xmlpatterns/expr/qexpressionvariablereference_p.h4
-rw-r--r--src/xmlpatterns/expr/qexternalvariableloader.cpp4
-rw-r--r--src/xmlpatterns/expr/qexternalvariableloader_p.h4
-rw-r--r--src/xmlpatterns/expr/qexternalvariablereference.cpp4
-rw-r--r--src/xmlpatterns/expr/qexternalvariablereference_p.h4
-rw-r--r--src/xmlpatterns/expr/qfirstitempredicate.cpp4
-rw-r--r--src/xmlpatterns/expr/qfirstitempredicate_p.h4
-rw-r--r--src/xmlpatterns/expr/qforclause.cpp4
-rw-r--r--src/xmlpatterns/expr/qforclause_p.h4
-rw-r--r--src/xmlpatterns/expr/qgeneralcomparison.cpp4
-rw-r--r--src/xmlpatterns/expr/qgeneralcomparison_p.h4
-rw-r--r--src/xmlpatterns/expr/qgenericpredicate.cpp4
-rw-r--r--src/xmlpatterns/expr/qgenericpredicate_p.h4
-rw-r--r--src/xmlpatterns/expr/qifthenclause.cpp4
-rw-r--r--src/xmlpatterns/expr/qifthenclause_p.h4
-rw-r--r--src/xmlpatterns/expr/qinstanceof.cpp4
-rw-r--r--src/xmlpatterns/expr/qinstanceof_p.h4
-rw-r--r--src/xmlpatterns/expr/qletclause.cpp4
-rw-r--r--src/xmlpatterns/expr/qletclause_p.h4
-rw-r--r--src/xmlpatterns/expr/qliteral.cpp4
-rw-r--r--src/xmlpatterns/expr/qliteral_p.h4
-rw-r--r--src/xmlpatterns/expr/qliteralsequence.cpp4
-rw-r--r--src/xmlpatterns/expr/qliteralsequence_p.h4
-rw-r--r--src/xmlpatterns/expr/qnamespaceconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qnamespaceconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qncnameconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qncnameconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qnodecomparison.cpp4
-rw-r--r--src/xmlpatterns/expr/qnodecomparison_p.h4
-rw-r--r--src/xmlpatterns/expr/qnodesort.cpp4
-rw-r--r--src/xmlpatterns/expr/qnodesort_p.h4
-rw-r--r--src/xmlpatterns/expr/qoperandsiterator_p.h4
-rw-r--r--src/xmlpatterns/expr/qoptimizationpasses.cpp4
-rw-r--r--src/xmlpatterns/expr/qoptimizationpasses_p.h4
-rw-r--r--src/xmlpatterns/expr/qoptimizerblocks.cpp4
-rw-r--r--src/xmlpatterns/expr/qoptimizerblocks_p.h4
-rw-r--r--src/xmlpatterns/expr/qoptimizerframework.cpp4
-rw-r--r--src/xmlpatterns/expr/qoptimizerframework_p.h4
-rw-r--r--src/xmlpatterns/expr/qorderby.cpp4
-rw-r--r--src/xmlpatterns/expr/qorderby_p.h4
-rw-r--r--src/xmlpatterns/expr/qorexpression.cpp4
-rw-r--r--src/xmlpatterns/expr/qorexpression_p.h4
-rw-r--r--src/xmlpatterns/expr/qpaircontainer.cpp4
-rw-r--r--src/xmlpatterns/expr/qpaircontainer_p.h4
-rw-r--r--src/xmlpatterns/expr/qparentnodeaxis.cpp4
-rw-r--r--src/xmlpatterns/expr/qparentnodeaxis_p.h4
-rw-r--r--src/xmlpatterns/expr/qpath.cpp4
-rw-r--r--src/xmlpatterns/expr/qpath_p.h4
-rw-r--r--src/xmlpatterns/expr/qpositionalvariablereference.cpp4
-rw-r--r--src/xmlpatterns/expr/qpositionalvariablereference_p.h4
-rw-r--r--src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qprocessinginstructionconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qqnameconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qqnameconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qquantifiedexpression.cpp4
-rw-r--r--src/xmlpatterns/expr/qquantifiedexpression_p.h4
-rw-r--r--src/xmlpatterns/expr/qrangeexpression.cpp4
-rw-r--r--src/xmlpatterns/expr/qrangeexpression_p.h4
-rw-r--r--src/xmlpatterns/expr/qrangevariablereference.cpp4
-rw-r--r--src/xmlpatterns/expr/qrangevariablereference_p.h4
-rw-r--r--src/xmlpatterns/expr/qreturnorderby.cpp4
-rw-r--r--src/xmlpatterns/expr/qreturnorderby_p.h4
-rw-r--r--src/xmlpatterns/expr/qsimplecontentconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qsimplecontentconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qsinglecontainer.cpp4
-rw-r--r--src/xmlpatterns/expr/qsinglecontainer_p.h4
-rw-r--r--src/xmlpatterns/expr/qsourcelocationreflection.cpp4
-rw-r--r--src/xmlpatterns/expr/qsourcelocationreflection_p.h4
-rw-r--r--src/xmlpatterns/expr/qstaticbaseuristore.cpp4
-rw-r--r--src/xmlpatterns/expr/qstaticbaseuristore_p.h4
-rw-r--r--src/xmlpatterns/expr/qstaticcompatibilitystore.cpp4
-rw-r--r--src/xmlpatterns/expr/qstaticcompatibilitystore_p.h4
-rw-r--r--src/xmlpatterns/expr/qtemplate.cpp4
-rw-r--r--src/xmlpatterns/expr/qtemplate_p.h4
-rw-r--r--src/xmlpatterns/expr/qtemplateinvoker.cpp4
-rw-r--r--src/xmlpatterns/expr/qtemplateinvoker_p.h4
-rw-r--r--src/xmlpatterns/expr/qtemplatemode.cpp4
-rw-r--r--src/xmlpatterns/expr/qtemplatemode_p.h4
-rw-r--r--src/xmlpatterns/expr/qtemplateparameterreference.cpp4
-rw-r--r--src/xmlpatterns/expr/qtemplateparameterreference_p.h4
-rw-r--r--src/xmlpatterns/expr/qtemplatepattern_p.h4
-rw-r--r--src/xmlpatterns/expr/qtextnodeconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qtextnodeconstructor_p.h4
-rw-r--r--src/xmlpatterns/expr/qtreatas.cpp4
-rw-r--r--src/xmlpatterns/expr/qtreatas_p.h4
-rw-r--r--src/xmlpatterns/expr/qtriplecontainer.cpp4
-rw-r--r--src/xmlpatterns/expr/qtriplecontainer_p.h4
-rw-r--r--src/xmlpatterns/expr/qtruthpredicate.cpp4
-rw-r--r--src/xmlpatterns/expr/qtruthpredicate_p.h4
-rw-r--r--src/xmlpatterns/expr/qunaryexpression.cpp4
-rw-r--r--src/xmlpatterns/expr/qunaryexpression_p.h4
-rw-r--r--src/xmlpatterns/expr/qunlimitedcontainer.cpp4
-rw-r--r--src/xmlpatterns/expr/qunlimitedcontainer_p.h4
-rw-r--r--src/xmlpatterns/expr/qunresolvedvariablereference.cpp4
-rw-r--r--src/xmlpatterns/expr/qunresolvedvariablereference_p.h4
-rw-r--r--src/xmlpatterns/expr/quserfunction.cpp4
-rw-r--r--src/xmlpatterns/expr/quserfunction_p.h4
-rw-r--r--src/xmlpatterns/expr/quserfunctioncallsite.cpp4
-rw-r--r--src/xmlpatterns/expr/quserfunctioncallsite_p.h4
-rw-r--r--src/xmlpatterns/expr/qvalidate.cpp4
-rw-r--r--src/xmlpatterns/expr/qvalidate_p.h4
-rw-r--r--src/xmlpatterns/expr/qvaluecomparison.cpp4
-rw-r--r--src/xmlpatterns/expr/qvaluecomparison_p.h4
-rw-r--r--src/xmlpatterns/expr/qvariabledeclaration.cpp4
-rw-r--r--src/xmlpatterns/expr/qvariabledeclaration_p.h4
-rw-r--r--src/xmlpatterns/expr/qvariablereference.cpp4
-rw-r--r--src/xmlpatterns/expr/qvariablereference_p.h4
-rw-r--r--src/xmlpatterns/expr/qwithparam_p.h4
-rw-r--r--src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp4
-rw-r--r--src/xmlpatterns/expr/qxsltsimplecontentconstructor_p.h4
-rw-r--r--src/xmlpatterns/functions/qabstractfunctionfactory.cpp4
-rw-r--r--src/xmlpatterns/functions/qabstractfunctionfactory_p.h4
-rw-r--r--src/xmlpatterns/functions/qaccessorfns.cpp4
-rw-r--r--src/xmlpatterns/functions/qaccessorfns_p.h4
-rw-r--r--src/xmlpatterns/functions/qaggregatefns.cpp4
-rw-r--r--src/xmlpatterns/functions/qaggregatefns_p.h4
-rw-r--r--src/xmlpatterns/functions/qaggregator.cpp4
-rw-r--r--src/xmlpatterns/functions/qaggregator_p.h4
-rw-r--r--src/xmlpatterns/functions/qassemblestringfns.cpp4
-rw-r--r--src/xmlpatterns/functions/qassemblestringfns_p.h4
-rw-r--r--src/xmlpatterns/functions/qbooleanfns.cpp4
-rw-r--r--src/xmlpatterns/functions/qbooleanfns_p.h4
-rw-r--r--src/xmlpatterns/functions/qcomparescaseaware.cpp4
-rw-r--r--src/xmlpatterns/functions/qcomparescaseaware_p.h4
-rw-r--r--src/xmlpatterns/functions/qcomparestringfns.cpp4
-rw-r--r--src/xmlpatterns/functions/qcomparestringfns_p.h4
-rw-r--r--src/xmlpatterns/functions/qcomparingaggregator.cpp4
-rw-r--r--src/xmlpatterns/functions/qcomparingaggregator_p.h4
-rw-r--r--src/xmlpatterns/functions/qconstructorfunctionsfactory.cpp4
-rw-r--r--src/xmlpatterns/functions/qconstructorfunctionsfactory_p.h4
-rw-r--r--src/xmlpatterns/functions/qcontextfns.cpp4
-rw-r--r--src/xmlpatterns/functions/qcontextfns_p.h4
-rw-r--r--src/xmlpatterns/functions/qcontextnodechecker.cpp4
-rw-r--r--src/xmlpatterns/functions/qcontextnodechecker_p.h4
-rw-r--r--src/xmlpatterns/functions/qcurrentfn.cpp4
-rw-r--r--src/xmlpatterns/functions/qcurrentfn_p.h4
-rw-r--r--src/xmlpatterns/functions/qdatetimefn.cpp4
-rw-r--r--src/xmlpatterns/functions/qdatetimefn_p.h4
-rw-r--r--src/xmlpatterns/functions/qdatetimefns.cpp4
-rw-r--r--src/xmlpatterns/functions/qdatetimefns_p.h4
-rw-r--r--src/xmlpatterns/functions/qdeepequalfn.cpp4
-rw-r--r--src/xmlpatterns/functions/qdeepequalfn_p.h4
-rw-r--r--src/xmlpatterns/functions/qdocumentfn.cpp4
-rw-r--r--src/xmlpatterns/functions/qdocumentfn_p.h4
-rw-r--r--src/xmlpatterns/functions/qelementavailablefn.cpp4
-rw-r--r--src/xmlpatterns/functions/qelementavailablefn_p.h4
-rw-r--r--src/xmlpatterns/functions/qerrorfn.cpp4
-rw-r--r--src/xmlpatterns/functions/qerrorfn_p.h4
-rw-r--r--src/xmlpatterns/functions/qfunctionargument.cpp4
-rw-r--r--src/xmlpatterns/functions/qfunctionargument_p.h4
-rw-r--r--src/xmlpatterns/functions/qfunctionavailablefn.cpp4
-rw-r--r--src/xmlpatterns/functions/qfunctionavailablefn_p.h4
-rw-r--r--src/xmlpatterns/functions/qfunctioncall.cpp4
-rw-r--r--src/xmlpatterns/functions/qfunctioncall_p.h4
-rw-r--r--src/xmlpatterns/functions/qfunctionfactory.cpp4
-rw-r--r--src/xmlpatterns/functions/qfunctionfactory_p.h4
-rw-r--r--src/xmlpatterns/functions/qfunctionfactorycollection.cpp4
-rw-r--r--src/xmlpatterns/functions/qfunctionfactorycollection_p.h4
-rw-r--r--src/xmlpatterns/functions/qfunctionsignature.cpp4
-rw-r--r--src/xmlpatterns/functions/qfunctionsignature_p.h4
-rw-r--r--src/xmlpatterns/functions/qgenerateidfn.cpp4
-rw-r--r--src/xmlpatterns/functions/qgenerateidfn_p.h4
-rw-r--r--src/xmlpatterns/functions/qnodefns.cpp4
-rw-r--r--src/xmlpatterns/functions/qnodefns_p.h4
-rw-r--r--src/xmlpatterns/functions/qnumericfns.cpp4
-rw-r--r--src/xmlpatterns/functions/qnumericfns_p.h4
-rw-r--r--src/xmlpatterns/functions/qpatternmatchingfns.cpp4
-rw-r--r--src/xmlpatterns/functions/qpatternmatchingfns_p.h4
-rw-r--r--src/xmlpatterns/functions/qpatternplatform.cpp4
-rw-r--r--src/xmlpatterns/functions/qpatternplatform_p.h4
-rw-r--r--src/xmlpatterns/functions/qqnamefns.cpp4
-rw-r--r--src/xmlpatterns/functions/qqnamefns_p.h4
-rw-r--r--src/xmlpatterns/functions/qresolveurifn.cpp4
-rw-r--r--src/xmlpatterns/functions/qresolveurifn_p.h4
-rw-r--r--src/xmlpatterns/functions/qsequencefns.cpp4
-rw-r--r--src/xmlpatterns/functions/qsequencefns_p.h4
-rw-r--r--src/xmlpatterns/functions/qsequencegeneratingfns.cpp4
-rw-r--r--src/xmlpatterns/functions/qsequencegeneratingfns_p.h4
-rw-r--r--src/xmlpatterns/functions/qstaticbaseuricontainer_p.h4
-rw-r--r--src/xmlpatterns/functions/qstaticnamespacescontainer.cpp4
-rw-r--r--src/xmlpatterns/functions/qstaticnamespacescontainer_p.h4
-rw-r--r--src/xmlpatterns/functions/qstringvaluefns.cpp4
-rw-r--r--src/xmlpatterns/functions/qstringvaluefns_p.h4
-rw-r--r--src/xmlpatterns/functions/qsubstringfns.cpp4
-rw-r--r--src/xmlpatterns/functions/qsubstringfns_p.h4
-rw-r--r--src/xmlpatterns/functions/qsystempropertyfn.cpp4
-rw-r--r--src/xmlpatterns/functions/qsystempropertyfn_p.h4
-rw-r--r--src/xmlpatterns/functions/qtimezonefns.cpp4
-rw-r--r--src/xmlpatterns/functions/qtimezonefns_p.h4
-rw-r--r--src/xmlpatterns/functions/qtracefn.cpp4
-rw-r--r--src/xmlpatterns/functions/qtracefn_p.h4
-rw-r--r--src/xmlpatterns/functions/qtypeavailablefn.cpp4
-rw-r--r--src/xmlpatterns/functions/qtypeavailablefn_p.h4
-rw-r--r--src/xmlpatterns/functions/qunparsedentitypublicidfn.cpp4
-rw-r--r--src/xmlpatterns/functions/qunparsedentitypublicidfn_p.h4
-rw-r--r--src/xmlpatterns/functions/qunparsedentityurifn.cpp4
-rw-r--r--src/xmlpatterns/functions/qunparsedentityurifn_p.h4
-rw-r--r--src/xmlpatterns/functions/qunparsedtextavailablefn.cpp4
-rw-r--r--src/xmlpatterns/functions/qunparsedtextavailablefn_p.h4
-rw-r--r--src/xmlpatterns/functions/qunparsedtextfn.cpp4
-rw-r--r--src/xmlpatterns/functions/qunparsedtextfn_p.h4
-rw-r--r--src/xmlpatterns/functions/qxpath10corefunctions.cpp4
-rw-r--r--src/xmlpatterns/functions/qxpath10corefunctions_p.h4
-rw-r--r--src/xmlpatterns/functions/qxpath20corefunctions.cpp4
-rw-r--r--src/xmlpatterns/functions/qxpath20corefunctions_p.h4
-rw-r--r--src/xmlpatterns/functions/qxslt20corefunctions.cpp4
-rw-r--r--src/xmlpatterns/functions/qxslt20corefunctions_p.h4
-rw-r--r--src/xmlpatterns/iterators/qcachingiterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qcachingiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qdeduplicateiterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qdeduplicateiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qdistinctiterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qdistinctiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qemptyiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qexceptiterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qexceptiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qindexofiterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qindexofiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qinsertioniterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qinsertioniterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qintersectiterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qintersectiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qitemmappingiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qrangeiterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qrangeiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qremovaliterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qremovaliterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qsequencemappingiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qsingletoniterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qsubsequenceiterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qsubsequenceiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qtocodepointsiterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qtocodepointsiterator_p.h4
-rw-r--r--src/xmlpatterns/iterators/qunioniterator.cpp4
-rw-r--r--src/xmlpatterns/iterators/qunioniterator_p.h4
-rw-r--r--src/xmlpatterns/janitors/qargumentconverter.cpp4
-rw-r--r--src/xmlpatterns/janitors/qargumentconverter_p.h4
-rw-r--r--src/xmlpatterns/janitors/qatomizer.cpp4
-rw-r--r--src/xmlpatterns/janitors/qatomizer_p.h4
-rw-r--r--src/xmlpatterns/janitors/qcardinalityverifier.cpp4
-rw-r--r--src/xmlpatterns/janitors/qcardinalityverifier_p.h4
-rw-r--r--src/xmlpatterns/janitors/qebvextractor.cpp4
-rw-r--r--src/xmlpatterns/janitors/qebvextractor_p.h4
-rw-r--r--src/xmlpatterns/janitors/qitemverifier.cpp4
-rw-r--r--src/xmlpatterns/janitors/qitemverifier_p.h4
-rw-r--r--src/xmlpatterns/janitors/quntypedatomicconverter.cpp4
-rw-r--r--src/xmlpatterns/janitors/quntypedatomicconverter_p.h4
-rw-r--r--src/xmlpatterns/parser/TokenLookup.gperf4
-rw-r--r--src/xmlpatterns/parser/qmaintainingreader.cpp4
-rw-r--r--src/xmlpatterns/parser/qmaintainingreader_p.h4
-rw-r--r--src/xmlpatterns/parser/qparsercontext.cpp4
-rw-r--r--src/xmlpatterns/parser/qparsercontext_p.h4
-rw-r--r--src/xmlpatterns/parser/qquerytransformparser.cpp8
-rw-r--r--src/xmlpatterns/parser/qquerytransformparser_p.h4
-rw-r--r--src/xmlpatterns/parser/qtokenizer_p.h4
-rw-r--r--src/xmlpatterns/parser/qtokenrevealer.cpp4
-rw-r--r--src/xmlpatterns/parser/qtokenrevealer_p.h4
-rw-r--r--src/xmlpatterns/parser/qtokensource.cpp4
-rw-r--r--src/xmlpatterns/parser/qtokensource_p.h4
-rw-r--r--src/xmlpatterns/parser/querytransformparser.ypp8
-rw-r--r--src/xmlpatterns/parser/qxquerytokenizer.cpp4
-rw-r--r--src/xmlpatterns/parser/qxquerytokenizer_p.h4
-rw-r--r--src/xmlpatterns/parser/qxslttokenizer.cpp4
-rw-r--r--src/xmlpatterns/parser/qxslttokenizer_p.h4
-rw-r--r--src/xmlpatterns/parser/qxslttokenlookup.cpp4
-rw-r--r--src/xmlpatterns/parser/qxslttokenlookup.xml4
-rw-r--r--src/xmlpatterns/parser/qxslttokenlookup_p.h4
-rw-r--r--src/xmlpatterns/parser/trolltechHeader.txt4
-rw-r--r--src/xmlpatterns/projection/qdocumentprojector.cpp4
-rw-r--r--src/xmlpatterns/projection/qdocumentprojector_p.h4
-rw-r--r--src/xmlpatterns/projection/qprojectedexpression_p.h4
-rw-r--r--src/xmlpatterns/qtokenautomaton/exampleFile.xml4
-rw-r--r--src/xmlpatterns/type/qabstractnodetest.cpp4
-rw-r--r--src/xmlpatterns/type/qabstractnodetest_p.h4
-rw-r--r--src/xmlpatterns/type/qanyitemtype.cpp4
-rw-r--r--src/xmlpatterns/type/qanyitemtype_p.h4
-rw-r--r--src/xmlpatterns/type/qanynodetype.cpp4
-rw-r--r--src/xmlpatterns/type/qanynodetype_p.h4
-rw-r--r--src/xmlpatterns/type/qanysimpletype.cpp4
-rw-r--r--src/xmlpatterns/type/qanysimpletype_p.h4
-rw-r--r--src/xmlpatterns/type/qanytype.cpp4
-rw-r--r--src/xmlpatterns/type/qanytype_p.h4
-rw-r--r--src/xmlpatterns/type/qatomiccasterlocator.cpp4
-rw-r--r--src/xmlpatterns/type/qatomiccasterlocator_p.h4
-rw-r--r--src/xmlpatterns/type/qatomiccasterlocators.cpp4
-rw-r--r--src/xmlpatterns/type/qatomiccasterlocators_p.h4
-rw-r--r--src/xmlpatterns/type/qatomiccomparatorlocator.cpp4
-rw-r--r--src/xmlpatterns/type/qatomiccomparatorlocator_p.h4
-rw-r--r--src/xmlpatterns/type/qatomiccomparatorlocators.cpp4
-rw-r--r--src/xmlpatterns/type/qatomiccomparatorlocators_p.h4
-rw-r--r--src/xmlpatterns/type/qatomicmathematicianlocator.cpp4
-rw-r--r--src/xmlpatterns/type/qatomicmathematicianlocator_p.h4
-rw-r--r--src/xmlpatterns/type/qatomicmathematicianlocators.cpp4
-rw-r--r--src/xmlpatterns/type/qatomicmathematicianlocators_p.h4
-rw-r--r--src/xmlpatterns/type/qatomictype.cpp4
-rw-r--r--src/xmlpatterns/type/qatomictype_p.h4
-rw-r--r--src/xmlpatterns/type/qatomictypedispatch_p.h4
-rw-r--r--src/xmlpatterns/type/qbasictypesfactory.cpp4
-rw-r--r--src/xmlpatterns/type/qbasictypesfactory_p.h4
-rw-r--r--src/xmlpatterns/type/qbuiltinatomictype.cpp4
-rw-r--r--src/xmlpatterns/type/qbuiltinatomictype_p.h4
-rw-r--r--src/xmlpatterns/type/qbuiltinatomictypes.cpp4
-rw-r--r--src/xmlpatterns/type/qbuiltinatomictypes_p.h4
-rw-r--r--src/xmlpatterns/type/qbuiltinnodetype.cpp4
-rw-r--r--src/xmlpatterns/type/qbuiltinnodetype_p.h4
-rw-r--r--src/xmlpatterns/type/qbuiltintypes.cpp4
-rw-r--r--src/xmlpatterns/type/qbuiltintypes_p.h4
-rw-r--r--src/xmlpatterns/type/qcardinality.cpp4
-rw-r--r--src/xmlpatterns/type/qcardinality_p.h4
-rw-r--r--src/xmlpatterns/type/qcommonsequencetypes.cpp4
-rw-r--r--src/xmlpatterns/type/qcommonsequencetypes_p.h4
-rw-r--r--src/xmlpatterns/type/qebvtype.cpp4
-rw-r--r--src/xmlpatterns/type/qebvtype_p.h4
-rw-r--r--src/xmlpatterns/type/qemptysequencetype.cpp4
-rw-r--r--src/xmlpatterns/type/qemptysequencetype_p.h4
-rw-r--r--src/xmlpatterns/type/qgenericsequencetype.cpp4
-rw-r--r--src/xmlpatterns/type/qgenericsequencetype_p.h4
-rw-r--r--src/xmlpatterns/type/qitemtype.cpp4
-rw-r--r--src/xmlpatterns/type/qitemtype_p.h4
-rw-r--r--src/xmlpatterns/type/qlocalnametest.cpp4
-rw-r--r--src/xmlpatterns/type/qlocalnametest_p.h4
-rw-r--r--src/xmlpatterns/type/qmultiitemtype.cpp4
-rw-r--r--src/xmlpatterns/type/qmultiitemtype_p.h4
-rw-r--r--src/xmlpatterns/type/qnamespacenametest.cpp4
-rw-r--r--src/xmlpatterns/type/qnamespacenametest_p.h4
-rw-r--r--src/xmlpatterns/type/qnonetype.cpp4
-rw-r--r--src/xmlpatterns/type/qnonetype_p.h4
-rw-r--r--src/xmlpatterns/type/qnumerictype.cpp4
-rw-r--r--src/xmlpatterns/type/qnumerictype_p.h4
-rw-r--r--src/xmlpatterns/type/qprimitives_p.h4
-rw-r--r--src/xmlpatterns/type/qqnametest.cpp4
-rw-r--r--src/xmlpatterns/type/qqnametest_p.h4
-rw-r--r--src/xmlpatterns/type/qschemacomponent.cpp4
-rw-r--r--src/xmlpatterns/type/qschemacomponent_p.h4
-rw-r--r--src/xmlpatterns/type/qschematype.cpp4
-rw-r--r--src/xmlpatterns/type/qschematype_p.h4
-rw-r--r--src/xmlpatterns/type/qschematypefactory.cpp4
-rw-r--r--src/xmlpatterns/type/qschematypefactory_p.h4
-rw-r--r--src/xmlpatterns/type/qsequencetype.cpp4
-rw-r--r--src/xmlpatterns/type/qsequencetype_p.h4
-rw-r--r--src/xmlpatterns/type/qtypechecker.cpp4
-rw-r--r--src/xmlpatterns/type/qtypechecker_p.h4
-rw-r--r--src/xmlpatterns/type/quntyped.cpp4
-rw-r--r--src/xmlpatterns/type/quntyped_p.h4
-rw-r--r--src/xmlpatterns/type/qxsltnodetest.cpp4
-rw-r--r--src/xmlpatterns/type/qxsltnodetest_p.h4
-rw-r--r--src/xmlpatterns/utils/qautoptr.cpp4
-rw-r--r--src/xmlpatterns/utils/qautoptr_p.h4
-rw-r--r--src/xmlpatterns/utils/qcommonnamespaces_p.h4
-rw-r--r--src/xmlpatterns/utils/qcppcastinghelper_p.h4
-rw-r--r--src/xmlpatterns/utils/qdebug_p.h4
-rw-r--r--src/xmlpatterns/utils/qdelegatingnamespaceresolver.cpp4
-rw-r--r--src/xmlpatterns/utils/qdelegatingnamespaceresolver_p.h4
-rw-r--r--src/xmlpatterns/utils/qgenericnamespaceresolver.cpp4
-rw-r--r--src/xmlpatterns/utils/qgenericnamespaceresolver_p.h4
-rw-r--r--src/xmlpatterns/utils/qnamepool.cpp4
-rw-r--r--src/xmlpatterns/utils/qnamepool_p.h4
-rw-r--r--src/xmlpatterns/utils/qnamespacebinding_p.h4
-rw-r--r--src/xmlpatterns/utils/qnamespaceresolver.cpp4
-rw-r--r--src/xmlpatterns/utils/qnamespaceresolver_p.h4
-rw-r--r--src/xmlpatterns/utils/qnodenamespaceresolver.cpp4
-rw-r--r--src/xmlpatterns/utils/qnodenamespaceresolver_p.h4
-rw-r--r--src/xmlpatterns/utils/qoutputvalidator.cpp4
-rw-r--r--src/xmlpatterns/utils/qoutputvalidator_p.h4
-rw-r--r--src/xmlpatterns/utils/qpatternistlocale.cpp4
-rw-r--r--src/xmlpatterns/utils/qpatternistlocale_p.h4
-rw-r--r--src/xmlpatterns/utils/qxpathhelper.cpp4
-rw-r--r--src/xmlpatterns/utils/qxpathhelper_p.h4
5899 files changed, 246945 insertions, 100949 deletions
diff --git a/src/3rdparty/phonon/phonon/volumeslider.cpp b/src/3rdparty/phonon/phonon/volumeslider.cpp
index b59f689..1888cb6 100644
--- a/src/3rdparty/phonon/phonon/volumeslider.cpp
+++ b/src/3rdparty/phonon/phonon/volumeslider.cpp
@@ -85,7 +85,7 @@ VolumeSlider::~VolumeSlider()
bool VolumeSlider::isMuteVisible() const
{
- return k_ptr->muteButton.isVisible();
+ return !k_ptr->muteButton.isHidden();
}
void VolumeSlider::setMuteVisible(bool visible)
diff --git a/src/3rdparty/phonon/qt7/quicktimevideoplayer.mm b/src/3rdparty/phonon/qt7/quicktimevideoplayer.mm
index 9a3c811..23c76e3 100644
--- a/src/3rdparty/phonon/qt7/quicktimevideoplayer.mm
+++ b/src/3rdparty/phonon/qt7/quicktimevideoplayer.mm
@@ -1106,7 +1106,8 @@ NSString* QuickTimeVideoPlayer::pathToCompactDisc()
{
PhononAutoReleasePool pool;
NSArray *devices = [[NSWorkspace sharedWorkspace] mountedRemovableMedia];
- for (NSString *dev in devices) {
+ for (unsigned int i=0; i<[devices count]; ++i) {
+ NSString *dev = [devices objectAtIndex:i];
if (isCompactDisc(dev))
return [dev retain];
}
diff --git a/src/3rdparty/sha1/sha1.cpp b/src/3rdparty/sha1/sha1.cpp
index d270c60..03c2773 100644
--- a/src/3rdparty/sha1/sha1.cpp
+++ b/src/3rdparty/sha1/sha1.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
+** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Toolkit.
**
@@ -34,7 +34,7 @@
** met: http://www.gnu.org/copyleft/gpl.html.
**
** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
+** contact the sales department at http://www.qtsoftware.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog
index 76cfc80..1946d56 100644
--- a/src/3rdparty/webkit/ChangeLog
+++ b/src/3rdparty/webkit/ChangeLog
@@ -1,3 +1,303 @@
+2009-05-29 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Jan Alonzo.
+
+ Add a test-case for our HTTP backend, currently checking the
+ ref-counting of the SoupMessage.
+
+ * GNUmakefile.am:
+
+2009-05-28 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Enable the new build flag --filters for Gtk. More details in WebCore/ChangeLog.
+
+ * configure.ac:
+
+2009-05-19 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo and Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25415
+ [GTK][ATK] Please implement support for get_text_at_offset
+
+ Add new test file for ATK.
+
+ * GNUmakefile.am:
+
+2009-05-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Xan Lopez.
+
+ Fix webkitgtk_cleanfiles to clean gtk-doc-related files in the
+ correct directory, so that we pass make distcheck.
+
+ * GNUmakefile.am:
+
+2009-05-28 Xan Lopez <xlopez@igalia.com>
+
+ Bump version numbers in preparation for 1.1.8 release.
+
+ * configure.ac:
+
+2009-05-23 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Unreviewed build fix. Add gstreamer-video-0.10 libs to
+ GSTREAMER_LIBS to resolve an undefined reference to gst_video_get_size
+ - symbol used in MediaPlayerPrivateGstreamer.
+
+ * configure.ac:
+
+2009-05-23 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Refactor library LIBS. Move third-party libs in libwebkit instead
+ of libWebCore.
+
+ * GNUmakefile.am:
+
+2009-05-22 Antonio Gomes <antonio.gomes@openbossa.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Make Gtk build not bail out if gtk-doc-tools is not installed.
+
+ Warning message shown instead.
+
+ * autogen.sh:
+
+2009-05-22 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Add big warnings about the glib unicode backend being slow and
+ incomplete, since it is a work in progress.
+
+ * autotools/webkit.m4:
+ * configure.ac:
+
+2009-05-22 Dominik Röttsches <dominik.roettsches@access-company.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15914
+ [GTK] Implement Unicode functionality using GLib
+
+ Initial version of this patch by Jürg Billeter.
+
+ Adding options for --with-unicode-backend=icu|glib
+ and checking for pango version >= 1.21.0 if GLib backend
+ is selected. Temporarily, until remaining parts of
+ this patch are committed, introduce WTF_USE_GLIB_ICU_UNICODE_HYBRID
+ macro to allow for a mixed compilation with WTF Unicode
+ backend based on GLib while text codecs and TextBreakIterator
+ remain ICU dependent.
+
+ * GNUmakefile.am:
+ * configure.ac:
+
+2009-05-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Gavin Barraclough.
+
+ Enable YARR, and disable WREC for GTK+.
+
+ * configure.ac:
+
+2009-05-18 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Add support for running unit tests. Also run the tests whenever
+ the 'check' target runs.
+
+ * GNUmakefile.am:
+
+2009-05-18 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Style fixes
+
+ * GNUmakefile.am:
+
+2009-05-18 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Add -no-install and -no-fast-install to programs and tests that we
+ don't install. Also remove -O2 since this is already handled at
+ configure time.
+
+ * GNUmakefile.am:
+
+2009-05-17 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Refactor library cflags
+
+ * GNUmakefile.am:
+
+2009-05-15 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Jan Alonzo.
+
+ Use AC_CANONICAL_HOST instead of AC_CANONICAL_SYSTEM, since
+ the JIT compiler is not a cross-compiler
+
+ * configure.ac:
+
+2009-05-13 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed: bump versions in preparation for 1.1.7 release.
+
+ * configure.ac:
+
+2009-05-13 Xan Lopez <xlopez@igalia.com>
+
+ Rubber-stamped by Gustavo Noronha.
+
+ Revert commit r43563, since it breaks WebKitGTK+ when compiled
+ with gcc 4.4.
+
+ * GNUmakefile.am:
+
+2009-05-12 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Refactor use of CFLAGS, CXXFLAGS, LIBADD and LDFLAGS.
+
+ * GNUmakefile.am:
+
+2009-05-09 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Gustavo Noronha.
+
+ WebKit-r43163 won't build for gtk-directfb
+ https://bugs.webkit.org/show_bug.cgi?id=25538
+
+ Move the ENCHANT check out of the with_target conditional since it
+ applies to all targets
+
+ * configure.ac:
+
+2009-05-09 Mike Hommey <glandium@debian.org>
+
+ Reviewed by Geoffrey Garen. Landed by Jan Alonzo.
+
+ Enable JIT on x86-64 gtk+
+ https://bugs.webkit.org/show_bug.cgi?id=24724
+
+ * configure.ac:
+
+2009-05-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Ship the gtk-doc.make file, so as to not depend on gtkdoc-tools.
+
+ * GNUmakefile.am:
+ * autogen.sh:
+
+2009-05-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Build QtWebKit as a framework on Mac
+
+ This implies both debug and release build by default, unless
+ one of the --debug or --release config options are passed to
+ the build-webkit script.
+
+ Frameworks can be disabled by passing CONFIG+=webkit_no_framework
+ to the build-webkit script.
+
+ To be able to build both debug and release targets in parallel
+ we have to use separate output directories for the generated
+ sources, which is not optimal, but required to avoid race conditions.
+
+ An optimization would be to only require this spit-up on Mac.
+
+ * WebKit.pri:
+
+2009-04-30 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Unreviewed build GTK build fix
+
+ * configure.ac: typo fix - javascript_debugger should be enable_javascript_debugger
+
+2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25470
+ Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler.
+
+ * configure.ac: Add autoconfig options, missed in the first commit.
+
+2009-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed: bump versions in preparation for 1.1.6 release.
+
+ * configure.ac:
+
+2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Error reporting
+ https://bugs.webkit.org/show_bug.cgi?id=18344
+
+ Add webkiterror to the build.
+
+ * GNUmakefile.am:
+
+2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Error reporting
+ https://bugs.webkit.org/show_bug.cgi?id=18344
+
+ Add the default error page for installation.
+
+ * GNUmakefile.am:
+
+2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15616
+ [GTK] Add spell checking
+
+ Add enchant support for spell-checking-languages property to work
+ properly.
+
+ * GNUmakefile.am:
+ * configure.ac:
+
2009-04-24 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Ariya Hidayat.
@@ -6,6 +306,375 @@
* WebKit.pro: Include docs.pri for "make docs" target.
+2009-04-14 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed version bump in preparation for 1.1.5 release.
+
+ * configure.ac:
+
+2009-04-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Sam Weinig.
+
+ Added rules to maintain the localization support. We cannot simply
+ use whatever gettextize gives us because our build system is
+ non-recursive.
+
+ * GNUmakefile.am:
+ * configure.ac:
+
+2009-04-05 Mike Hommey <glandium@debian.org>
+
+ Reviewed by Holger Freyther.
+
+ Filter out all C++ symbols
+ https://bugs.webkit.org/show_bug.cgi?id=24960
+
+ Considering the public API is all C, we can just filter out all
+ C++ mangled symbols, which will avoid exporting symbols in some
+ corner cases such as gcc bugs on specific architectures, etc.
+
+ * autotools/symbols.filter:
+
+2009-04-03 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ Require GTK+ >= 2.10; 2.8 is already very old, and some very
+ useful APIs are only available since 2.10.
+
+ * configure.ac:
+
+2009-04-01 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ Unit test WebKitDownload
+ http://bugs.webkit.org/show_bug.cgi?id=24844
+
+ * GNUmakefile.am: Add a unit test for downloading.
+
+2009-04-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed build fix. Fix make distcheck, after the gtk-doc
+ integration.
+
+ * GNUmakefile.am:
+
+2009-03-30 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ Integrate gtk-doc into the Gtk+ buildsystem.
+
+ * autogen.sh:
+ * configure.ac:
+
+2009-03-30 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed: bump version to 1.1.4 for release.
+
+ * configure.ac:
+
+2009-03-21 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ Require gnome-keyring 2.26.0, since we were depending on an
+ unreleased trunk revision between 2.25.91 and 2.26.0.
+
+ * configure.ac:
+
+2009-03-20 Jan Michael Alonzo <jmalonzo@gmail.com>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] Misc patches for WebKitWebHistoryItem
+ https://bugs.webkit.org/show_bug.cgi?id=24493
+
+ Added build support for build the WebKitWebHistoryItem unit test.
+
+ * GNUmakefile.am:
+
+2009-03-20 Jan Michael Alonzo <jmalonzo@gmail.com>
+
+ Reviewed by Holger Freyther.
+
+ Separate gtk unit tests
+ https://bugs.webkit.org/show_bug.cgi?id=24039
+
+ Build the unit tests accordingly.
+
+ * GNUmakefile.am:
+
+2009-03-17 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ Enable HTML5 media elements support by default in the GTK+ port.
+
+ * configure.ac:
+
+2009-03-17 Mike Hommey <glandium@debian.org>
+
+ Reviewed by Holger Freyther.
+
+ Do not export cti* symbols.
+ See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=519924.
+
+ * autotools/symbols.filter:
+
+2009-03-15 Xan Lopez <xlopez@igalia.com>
+
+ Bump version to 1.1.3 for release and fix soversion
+ calculation (oops). Thanks to Frederik Himpe for pointing this
+ out.
+
+ * configure.ac:
+
+2009-03-15 Xan Lopez <xlopez@igalia.com>
+
+ Bump version and libtool version for release.
+
+ * configure.ac:
+
+2009-03-14 Xan Lopez <xlopez@igalia.com>
+
+ No review, build fix.
+
+ Split clean rules to make distcheck pass.
+
+ * GNUmakefile.am:
+
+2009-03-13 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Remove rarely used Makefile targets from the Makefile.
+
+ There are many situations in which the targets don't work as expected,
+ and their primary use is addressed by having the build system default
+ to building the appropriate architecture.
+
+ * Makefile.shared:
+
+2009-03-11 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [Gtk] Fix make clean targets
+ https://bugs.webkit.org/show_bug.cgi?id=24450
+
+ Fix 'make' clean targets. We shouldn't be removing DerivedSources
+ if it's only clean. Only remove it if it's distclean or
+ maintainer-clean. Also remove build-related auxillary files on
+ dist/maintainer clean.
+
+ * GNUmakefile.am:
+
+2009-03-11 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther
+
+ [GTK]DumpRenderTree doesn't compile for non-X11 GTK ports anymore
+ https://bugs.webkit.org/show_bug.cgi?id=2260
+
+ pangoft2 is also used in directfb builds so use it for all targets
+
+ * configure.ac:
+
+2009-03-02 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24287
+ [GTK] Move auth dialog feature to WebKit/
+
+ Add WebKitSoupAuthDialog files to build.
+
+ * GNUmakefile.am:
+
+2009-03-03 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16826
+ [Gtk] Implement WebKitDownload
+
+ Adding new files related to WebKitDownload to the GTK+ port.
+
+ * GNUmakefile.am:
+
+2009-03-02 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed build fix; adding missing files to EXTRA_DIST, so that
+ they show up in the tarball.
+
+ * GNUmakefile.am:
+
+2009-03-01 Christian Dywan <christian@twotoasts.de>
+
+ * configure.ac: Bump GTK port version to 1.1.1.
+
+2009-02-27 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed build fix. Adding the WebKit/gtk/webkitmarshal.list
+ file to EXTRA_DIST to fix make dist.
+
+ * GNUmakefile.am:
+
+2009-02-26 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16947
+ [GTK] Missing HTTP Auth challenge
+
+ Add HTTP authentication dialog with optional GNOME Keyring
+ storage.
+
+ * GNUmakefile.am:
+ * configure.ac:
+
+2009-02-26 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16947
+ [GTK] Missing HTTP Auth challenge
+
+ Take marshallers to be built from a manually maintained list
+ instead of grepping the sources.
+
+ It's much faster, especially so now that we want to add
+ marshallers from WebCore too. A system to only take into account
+ the modified files when generating the marshallers from sources
+ could be hacked, but I think it's overkill considering how rarely
+ a new marshaller is added.
+
+ * GNUmakefile.am:
+
+2009-02-24 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ [Gtk] add options for 3D transforms and HTML5 channel messaging to the build
+ https://bugs.webkit.org/show_bug.cgi?id=24072
+
+ Add options for toggling 3D transforms and HTML5 channel messaging
+ support on or off.
+
+ Also fix the web-workers option. It should be web-workers and not workers.
+
+ * configure.ac:
+
+2009-02-23 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22624
+ [SOUP][GTK] Need API to get SoupSession from WebKit.
+
+ Remove CURL support, the only supported HTTP backend is SOUP now.
+
+ * GNUmakefile.am:
+ * configure.ac:
+
+2009-02-19 Christian Dywan <christian@twotoasts.de>
+
+ Rubber-stamped by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=22811
+ Underlinking in Programs_UnitTests (GTK+ build)
+
+ * GNUmakefile.am: Add GLIB_LIBS to unit test library flags.
+
+2009-02-18 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Fix symbols.filter location, and add other missing files to the
+ autotools build, so that make dist works.
+
+ * GNUmakefile.am:
+
+2009-02-17 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23939
+ Release build being built with debugging symbols
+
+ * configure.ac: Revert change done in revision 40790, since we
+ already have a AC_PROG_CXX macro call as part of WEBKIT_INIT
+
+2009-02-12 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Eric Seidel.
+
+ * configure.ac: Make soup the default HTTP backend for the Gtk port.
+
+2009-02-09 Calvin Walton <calvin.walton@gmail.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23823
+
+ [Gtk] Fix build with recent autotools
+
+ Current versions of automake/libtool don't assume you want C++ enabled
+ by default any more, so explicitly check for a C++ compiler.
+
+ * configure.ac: Add AC_PROG_CXX macro
+
+2009-02-02 Christian Dywan <christian@twotoasts.de>
+
+ Rubber-stamped by Holger Freyther.
+
+ Don't require Geolocation by default.
+
+ * configure.ac:
+
+2009-01-30 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ [Gtk] Refactor autoconf/configure.ac in preparation for jsc and webkit build splits
+ https://bugs.webkit.org/show_bug.cgi?id=22136
+
+ * GNUmakefile.am:
+ * acinclude.m4: Removed.
+ * autogen.sh:
+ * autotools/acinclude.m4: Added.
+ * autotools/dolt.m4: Added.
+ * autotools/symbols.filter: Renamed from symbols.filter.
+ * autotools/webkit.m4: Added.
+ * configure.ac:
+
+2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ [GTK] Implement GeolocationService using the Geoclue library
+
+ https://bugs.webkit.org/show_bug.cgi?id=22022
+
+ Untested implementation of the GeolocationService using the geoclue
+ library. Velocity handling is completely missing and the accuracy
+ handling might be wrong.
+
+ * GNUmakefile.am:
+ * configure.ac:
+
+2009-01-11 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Bump version to 1.1.0 since we are breaking ABI and adding new
+ major features.
+
+ * configure.ac:
+
2008-12-19 Marco Barisione <marco.barisione@collabora.co.uk>
Reviewed by Holger Freyther.
@@ -203,7 +872,7 @@
2008-11-16 Geoffrey Garen <ggaren@apple.com>
Not reviewed.
-
+
Try to fix gtk build.
* configure.ac:
@@ -801,7 +1470,7 @@
Reviewed by Mark.
Add x86_64 rule.
-
+
* Makefile:
2008-05-09 Simon Hausmann <hausmann@webkit.org>
@@ -809,11 +1478,11 @@
Reviewed by Holger.
Removed explicit linkage against libxml and libxslt on Qt/Mac builds.
-
+
This dependency is completely unnecessary here and creates only problems by
propagating through WebCore.pro over libQtWebKit.prl right now customer
applications.
-
+
* WebKit.pri:
@@ -822,7 +1491,7 @@
Reviewed by Mark.
Add an "x86_64" make rule.
-
+
* Makefile.shared:
2008-05-02 Jan Michael Alonzo <jmalonzo@unpluggable.com>
@@ -973,7 +1642,7 @@
http://bugs.webkit.org/show_bug.cgi?id=16476
Add support for multiple http backends, and add soup backend (off by default).
-
+
* GNUmakefile.am:
* configure.ac:
@@ -1060,7 +1729,7 @@
Add separator '\' after libJavaScriptCore_la_LIBADD and cleanup
whitespaces introduced in the previous commit.
- * GNUmakefile.am:
+ * GNUmakefile.am:
2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com>
@@ -2452,7 +3121,7 @@
Reviewed by Lars.
Don't compile the ICO plugin when building against Qt >= 4.4
-
+
* WebKit.pro:
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/APICast.h b/src/3rdparty/webkit/JavaScriptCore/API/APICast.h
index d356bca..762a15e 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/APICast.h
+++ b/src/3rdparty/webkit/JavaScriptCore/API/APICast.h
@@ -26,7 +26,10 @@
#ifndef APICast_h
#define APICast_h
+#include "JSNumberCell.h"
#include "JSValue.h"
+#include <wtf/Platform.h>
+#include <wtf/UnusedParam.h>
namespace JSC {
class ExecState;
@@ -34,7 +37,6 @@ namespace JSC {
class JSGlobalData;
class JSObject;
class JSValue;
- class JSValuePtr;
}
typedef const struct OpaqueJSContextGroup* JSContextGroupRef;
@@ -56,9 +58,18 @@ inline JSC::ExecState* toJS(JSGlobalContextRef c)
return reinterpret_cast<JSC::ExecState*>(c);
}
-inline JSC::JSValuePtr toJS(JSValueRef v)
+inline JSC::JSValue toJS(JSC::ExecState* exec, JSValueRef v)
{
- return JSC::JSValuePtr::decode(reinterpret_cast<JSC::JSValueEncodedAsPointer*>(const_cast<OpaqueJSValue*>(v)));
+ JSC::JSValue jsValue = JSC::JSValue::decode(reinterpret_cast<JSC::EncodedJSValue>(const_cast<OpaqueJSValue*>(v)));
+#if USE(ALTERNATE_JSIMMEDIATE)
+ UNUSED_PARAM(exec);
+#else
+ if (jsValue && jsValue.isNumber()) {
+ ASSERT(jsValue.isAPIMangledNumber());
+ return JSC::jsNumber(exec, jsValue.uncheckedGetNumber());
+ }
+#endif
+ return jsValue;
}
inline JSC::JSObject* toJS(JSObjectRef o)
@@ -76,14 +87,17 @@ inline JSC::JSGlobalData* toJS(JSContextGroupRef g)
return reinterpret_cast<JSC::JSGlobalData*>(const_cast<OpaqueJSContextGroup*>(g));
}
-inline JSValueRef toRef(JSC::JSValuePtr v)
+inline JSValueRef toRef(JSC::ExecState* exec, JSC::JSValue v)
{
- return reinterpret_cast<JSValueRef>(JSC::JSValuePtr::encode(v));
-}
-
-inline JSValueRef* toRef(JSC::JSValuePtr* v)
-{
- return reinterpret_cast<JSValueRef*>(v);
+#if USE(ALTERNATE_JSIMMEDIATE)
+ UNUSED_PARAM(exec);
+#else
+ if (v && v.isNumber()) {
+ ASSERT(!v.isAPIMangledNumber());
+ return reinterpret_cast<JSValueRef>(JSC::JSValue::encode(JSC::jsAPIMangledNumber(exec, v.uncheckedGetNumber())));
+ }
+#endif
+ return reinterpret_cast<JSValueRef>(JSC::JSValue::encode(v));
}
inline JSObjectRef toRef(JSC::JSObject* o)
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSBase.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSBase.cpp
index 2ffe345..fc3d0fe 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSBase.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSBase.cpp
@@ -55,15 +55,15 @@ JSValueRef JSEvaluateScript(JSContextRef ctx, JSStringRef script, JSObjectRef th
if (completion.complType() == Throw) {
if (exception)
- *exception = toRef(completion.value());
+ *exception = toRef(exec, completion.value());
return 0;
}
-
+
if (completion.value())
- return toRef(completion.value());
+ return toRef(exec, completion.value());
// happens, for example, when the only statement is an empty (';') statement
- return toRef(jsUndefined());
+ return toRef(exec, jsUndefined());
}
bool JSCheckScriptSyntax(JSContextRef ctx, JSStringRef script, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception)
@@ -76,7 +76,7 @@ bool JSCheckScriptSyntax(JSContextRef ctx, JSStringRef script, JSStringRef sourc
Completion completion = checkSyntax(exec->dynamicGlobalObject()->globalExec(), source);
if (completion.complType() == Throw) {
if (exception)
- *exception = toRef(completion.value());
+ *exception = toRef(exec, completion.value());
return false;
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSBase.h b/src/3rdparty/webkit/JavaScriptCore/API/JSBase.h
index f44d4ad..6f012ca 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSBase.h
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSBase.h
@@ -65,14 +65,20 @@ typedef struct OpaqueJSValue* JSObjectRef;
/* JavaScript symbol exports */
#undef JS_EXPORT
-#if defined(__GNUC__)
+#if defined(BUILDING_WX__)
+ #define JS_EXPORT
+#elif defined(__GNUC__)
#define JS_EXPORT __attribute__((visibility("default")))
#elif defined(WIN32) || defined(_WIN32)
/*
* TODO: Export symbols with JS_EXPORT when using MSVC.
* See http://bugs.webkit.org/show_bug.cgi?id=16227
*/
- #define JS_EXPORT
+ #if defined(BUILDING_JavaScriptCore) || defined(BUILDING_WTF)
+ #define JS_EXPORT __declspec(dllexport)
+ #else
+ #define JS_EXPORT __declspec(dllimport)
+ #endif
#else
#define JS_EXPORT
#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSBasePrivate.h b/src/3rdparty/webkit/JavaScriptCore/API/JSBasePrivate.h
index 6beacda..befa316 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSBasePrivate.h
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSBasePrivate.h
@@ -43,7 +43,7 @@ owns a large non-GC memory region. Calling this function will encourage the
garbage collector to collect soon, hoping to reclaim that large non-GC memory
region.
*/
-JS_EXPORT void JSReportExtraMemoryCost(JSContextRef ctx, size_t size) AVAILABLE_AFTER_WEBKIT_VERSION_3_1;
+JS_EXPORT void JSReportExtraMemoryCost(JSContextRef ctx, size_t size) AVAILABLE_IN_WEBKIT_VERSION_4_0;
#ifdef __cplusplus
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.cpp
index e10733e..64c83cb 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.cpp
@@ -61,10 +61,17 @@ static JSObject* constructJSCallback(ExecState* exec, JSObject* constructor, con
int argumentCount = static_cast<int>(args.size());
Vector<JSValueRef, 16> arguments(argumentCount);
for (int i = 0; i < argumentCount; i++)
- arguments[i] = toRef(args.at(exec, i));
-
- JSLock::DropAllLocks dropAllLocks(exec);
- return toJS(callback(ctx, constructorRef, argumentCount, arguments.data(), toRef(exec->exceptionSlot())));
+ arguments[i] = toRef(exec, args.at(i));
+
+ JSValueRef exception = 0;
+ JSObjectRef result;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ result = callback(ctx, constructorRef, argumentCount, arguments.data(), &exception);
+ }
+ if (exception)
+ exec->setException(toJS(exec, exception));
+ return toJS(result);
}
return toJS(JSObjectMake(ctx, static_cast<JSCallbackConstructor*>(constructor)->classRef(), 0));
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.h b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.h
index cb8307f..1f06249 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.h
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.h
@@ -39,7 +39,7 @@ public:
JSObjectCallAsConstructorCallback callback() const { return m_callback; }
static const ClassInfo info;
- static PassRefPtr<Structure> createStructure(JSValuePtr proto)
+ static PassRefPtr<Structure> createStructure(JSValue proto)
{
return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance | HasStandardGetOwnPropertySlot));
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.cpp
index b82932e..1b3217b 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.cpp
@@ -46,19 +46,27 @@ JSCallbackFunction::JSCallbackFunction(ExecState* exec, JSObjectCallAsFunctionCa
{
}
-JSValuePtr JSCallbackFunction::call(ExecState* exec, JSObject* functionObject, JSValuePtr thisValue, const ArgList& args)
+JSValue JSCallbackFunction::call(ExecState* exec, JSObject* functionObject, JSValue thisValue, const ArgList& args)
{
JSContextRef execRef = toRef(exec);
JSObjectRef functionRef = toRef(functionObject);
- JSObjectRef thisObjRef = toRef(thisValue->toThisObject(exec));
+ JSObjectRef thisObjRef = toRef(thisValue.toThisObject(exec));
int argumentCount = static_cast<int>(args.size());
Vector<JSValueRef, 16> arguments(argumentCount);
for (int i = 0; i < argumentCount; i++)
- arguments[i] = toRef(args.at(exec, i));
+ arguments[i] = toRef(exec, args.at(i));
- JSLock::DropAllLocks dropAllLocks(exec);
- return toJS(static_cast<JSCallbackFunction*>(functionObject)->m_callback(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), toRef(exec->exceptionSlot())));
+ JSValueRef exception = 0;
+ JSValueRef result;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ result = static_cast<JSCallbackFunction*>(functionObject)->m_callback(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), &exception);
+ }
+ if (exception)
+ exec->setException(toJS(exec, exception));
+
+ return toJS(exec, result);
}
CallType JSCallbackFunction::getCallData(CallData& callData)
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.h b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.h
index 46f6fcc..7dd87b5 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.h
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.h
@@ -39,7 +39,7 @@ public:
// InternalFunction mish-mashes constructor and function behavior -- we should
// refactor the code so this override isn't necessary
- static PassRefPtr<Structure> createStructure(JSValuePtr proto)
+ static PassRefPtr<Structure> createStructure(JSValue proto)
{
return Structure::create(proto, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot));
}
@@ -48,7 +48,7 @@ private:
virtual CallType getCallData(CallData&);
virtual const ClassInfo* classInfo() const { return &info; }
- static JSValuePtr call(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+ static JSValue JSC_HOST_CALL call(ExecState*, JSObject*, JSValue, const ArgList&);
JSObjectCallAsFunctionCallback m_callback;
};
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h
index 9001c43..9d22ad9 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h
@@ -48,7 +48,7 @@ public:
JSClassRef classRef() const { return m_callbackObjectData->jsClass; }
bool inherits(JSClassRef) const;
- static PassRefPtr<Structure> createStructure(JSValuePtr proto)
+ static PassRefPtr<Structure> createStructure(JSValue proto)
{
return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance | OverridesHasInstance));
}
@@ -59,12 +59,12 @@ private:
virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
virtual bool getOwnPropertySlot(ExecState*, unsigned, PropertySlot&);
- virtual void put(ExecState*, const Identifier&, JSValuePtr, PutPropertySlot&);
+ virtual void put(ExecState*, const Identifier&, JSValue, PutPropertySlot&);
virtual bool deleteProperty(ExecState*, const Identifier&);
virtual bool deleteProperty(ExecState*, unsigned);
- virtual bool hasInstance(ExecState* exec, JSValuePtr value, JSValuePtr proto);
+ virtual bool hasInstance(ExecState* exec, JSValue value, JSValue proto);
virtual void getPropertyNames(ExecState*, PropertyNameArray&);
@@ -77,14 +77,14 @@ private:
void init(ExecState*);
- static JSCallbackObject* asCallbackObject(JSValuePtr);
+ static JSCallbackObject* asCallbackObject(JSValue);
- static JSValuePtr call(ExecState*, JSObject* functionObject, JSValuePtr thisValue, const ArgList&);
+ static JSValue JSC_HOST_CALL call(ExecState*, JSObject* functionObject, JSValue thisValue, const ArgList&);
static JSObject* construct(ExecState*, JSObject* constructor, const ArgList&);
- static JSValuePtr staticValueGetter(ExecState*, const Identifier&, const PropertySlot&);
- static JSValuePtr staticFunctionGetter(ExecState*, const Identifier&, const PropertySlot&);
- static JSValuePtr callbackGetter(ExecState*, const Identifier&, const PropertySlot&);
+ static JSValue staticValueGetter(ExecState*, const Identifier&, const PropertySlot&);
+ static JSValue staticFunctionGetter(ExecState*, const Identifier&, const PropertySlot&);
+ static JSValue callbackGetter(ExecState*, const Identifier&, const PropertySlot&);
struct JSCallbackObjectData {
JSCallbackObjectData(void* privateData, JSClassRef jsClass)
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h
index fdbafbc..987c59f 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h
@@ -40,7 +40,7 @@
namespace JSC {
template <class Base>
-inline JSCallbackObject<Base>* JSCallbackObject<Base>::asCallbackObject(JSValuePtr value)
+inline JSCallbackObject<Base>* JSCallbackObject<Base>::asCallbackObject(JSValue value)
{
ASSERT(asObject(value)->inherits(&info));
return static_cast<JSCallbackObject*>(asObject(value));
@@ -99,7 +99,7 @@ template <class Base>
UString JSCallbackObject<Base>::className() const
{
UString thisClassName = classRef()->className();
- if (!thisClassName.isNull())
+ if (!thisClassName.isEmpty())
return thisClassName;
return Base::className();
@@ -125,9 +125,19 @@ bool JSCallbackObject<Base>::getOwnPropertySlot(ExecState* exec, const Identifie
} else if (JSObjectGetPropertyCallback getProperty = jsClass->getProperty) {
if (!propertyNameRef)
propertyNameRef = OpaqueJSString::create(propertyName.ustring());
- JSLock::DropAllLocks dropAllLocks(exec);
- if (JSValueRef value = getProperty(ctx, thisRef, propertyNameRef.get(), toRef(exec->exceptionSlot()))) {
- slot.setValue(toJS(value));
+ JSValueRef exception = 0;
+ JSValueRef value;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ value = getProperty(ctx, thisRef, propertyNameRef.get(), &exception);
+ }
+ exec->setException(toJS(exec, exception));
+ if (value) {
+ slot.setValue(toJS(exec, value));
+ return true;
+ }
+ if (exception) {
+ slot.setValue(jsUndefined());
return true;
}
}
@@ -157,19 +167,25 @@ bool JSCallbackObject<Base>::getOwnPropertySlot(ExecState* exec, unsigned proper
}
template <class Base>
-void JSCallbackObject<Base>::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void JSCallbackObject<Base>::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
JSContextRef ctx = toRef(exec);
JSObjectRef thisRef = toRef(this);
RefPtr<OpaqueJSString> propertyNameRef;
- JSValueRef valueRef = toRef(value);
+ JSValueRef valueRef = toRef(exec, value);
for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) {
if (JSObjectSetPropertyCallback setProperty = jsClass->setProperty) {
if (!propertyNameRef)
propertyNameRef = OpaqueJSString::create(propertyName.ustring());
- JSLock::DropAllLocks dropAllLocks(exec);
- if (setProperty(ctx, thisRef, propertyNameRef.get(), valueRef, toRef(exec->exceptionSlot())))
+ JSValueRef exception = 0;
+ bool result;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ result = setProperty(ctx, thisRef, propertyNameRef.get(), valueRef, &exception);
+ }
+ exec->setException(toJS(exec, exception));
+ if (result || exception)
return;
}
@@ -180,8 +196,14 @@ void JSCallbackObject<Base>::put(ExecState* exec, const Identifier& propertyName
if (JSObjectSetPropertyCallback setProperty = entry->setProperty) {
if (!propertyNameRef)
propertyNameRef = OpaqueJSString::create(propertyName.ustring());
- JSLock::DropAllLocks dropAllLocks(exec);
- if (setProperty(ctx, thisRef, propertyNameRef.get(), valueRef, toRef(exec->exceptionSlot())))
+ JSValueRef exception = 0;
+ bool result;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ result = setProperty(ctx, thisRef, propertyNameRef.get(), valueRef, &exception);
+ }
+ exec->setException(toJS(exec, exception));
+ if (result || exception)
return;
} else
throwError(exec, ReferenceError, "Attempt to set a property that is not settable.");
@@ -212,8 +234,14 @@ bool JSCallbackObject<Base>::deleteProperty(ExecState* exec, const Identifier& p
if (JSObjectDeletePropertyCallback deleteProperty = jsClass->deleteProperty) {
if (!propertyNameRef)
propertyNameRef = OpaqueJSString::create(propertyName.ustring());
- JSLock::DropAllLocks dropAllLocks(exec);
- if (deleteProperty(ctx, thisRef, propertyNameRef.get(), toRef(exec->exceptionSlot())))
+ JSValueRef exception = 0;
+ bool result;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ result = deleteProperty(ctx, thisRef, propertyNameRef.get(), &exception);
+ }
+ exec->setException(toJS(exec, exception));
+ if (result || exception)
return true;
}
@@ -266,9 +294,15 @@ JSObject* JSCallbackObject<Base>::construct(ExecState* exec, JSObject* construct
int argumentCount = static_cast<int>(args.size());
Vector<JSValueRef, 16> arguments(argumentCount);
for (int i = 0; i < argumentCount; i++)
- arguments[i] = toRef(args.at(exec, i));
- JSLock::DropAllLocks dropAllLocks(exec);
- return toJS(callAsConstructor(execRef, constructorRef, argumentCount, arguments.data(), toRef(exec->exceptionSlot())));
+ arguments[i] = toRef(exec, args.at(i));
+ JSValueRef exception = 0;
+ JSObject* result;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ result = toJS(callAsConstructor(execRef, constructorRef, argumentCount, arguments.data(), &exception));
+ }
+ exec->setException(toJS(exec, exception));
+ return result;
}
}
@@ -277,15 +311,21 @@ JSObject* JSCallbackObject<Base>::construct(ExecState* exec, JSObject* construct
}
template <class Base>
-bool JSCallbackObject<Base>::hasInstance(ExecState* exec, JSValuePtr value, JSValuePtr)
+bool JSCallbackObject<Base>::hasInstance(ExecState* exec, JSValue value, JSValue)
{
JSContextRef execRef = toRef(exec);
JSObjectRef thisRef = toRef(this);
for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) {
if (JSObjectHasInstanceCallback hasInstance = jsClass->hasInstance) {
- JSLock::DropAllLocks dropAllLocks(exec);
- return hasInstance(execRef, thisRef, toRef(value), toRef(exec->exceptionSlot()));
+ JSValueRef exception = 0;
+ bool result;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ result = hasInstance(execRef, thisRef, toRef(exec, value), &exception);
+ }
+ exec->setException(toJS(exec, exception));
+ return result;
}
}
return false;
@@ -304,25 +344,31 @@ CallType JSCallbackObject<Base>::getCallData(CallData& callData)
}
template <class Base>
-JSValuePtr JSCallbackObject<Base>::call(ExecState* exec, JSObject* functionObject, JSValuePtr thisValue, const ArgList& args)
+JSValue JSCallbackObject<Base>::call(ExecState* exec, JSObject* functionObject, JSValue thisValue, const ArgList& args)
{
JSContextRef execRef = toRef(exec);
JSObjectRef functionRef = toRef(functionObject);
- JSObjectRef thisObjRef = toRef(thisValue->toThisObject(exec));
+ JSObjectRef thisObjRef = toRef(thisValue.toThisObject(exec));
for (JSClassRef jsClass = static_cast<JSCallbackObject<Base>*>(functionObject)->classRef(); jsClass; jsClass = jsClass->parentClass) {
if (JSObjectCallAsFunctionCallback callAsFunction = jsClass->callAsFunction) {
int argumentCount = static_cast<int>(args.size());
Vector<JSValueRef, 16> arguments(argumentCount);
for (int i = 0; i < argumentCount; i++)
- arguments[i] = toRef(args.at(exec, i));
- JSLock::DropAllLocks dropAllLocks(exec);
- return toJS(callAsFunction(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), toRef(exec->exceptionSlot())));
+ arguments[i] = toRef(exec, args.at(i));
+ JSValueRef exception = 0;
+ JSValue result;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ result = toJS(exec, callAsFunction(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), &exception));
+ }
+ exec->setException(toJS(exec, exception));
+ return result;
}
}
ASSERT_NOT_REACHED(); // getCallData should prevent us from reaching here
- return noValue();
+ return JSValue();
}
template <class Base>
@@ -376,9 +422,17 @@ double JSCallbackObject<Base>::toNumber(ExecState* exec) const
for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass)
if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) {
- JSLock::DropAllLocks dropAllLocks(exec);
- if (JSValueRef value = convertToType(ctx, thisRef, kJSTypeNumber, toRef(exec->exceptionSlot())))
- return toJS(value)->getNumber();
+ JSValueRef exception = 0;
+ JSValueRef value;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ value = convertToType(ctx, thisRef, kJSTypeNumber, &exception);
+ }
+ exec->setException(toJS(exec, exception));
+ if (value) {
+ double dValue;
+ return toJS(exec, value).getNumber(dValue) ? dValue : NaN;
+ }
}
return Base::toNumber(exec);
@@ -392,13 +446,17 @@ UString JSCallbackObject<Base>::toString(ExecState* exec) const
for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass)
if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) {
+ JSValueRef exception = 0;
JSValueRef value;
{
JSLock::DropAllLocks dropAllLocks(exec);
- value = convertToType(ctx, thisRef, kJSTypeString, toRef(exec->exceptionSlot()));
+ value = convertToType(ctx, thisRef, kJSTypeString, &exception);
}
+ exec->setException(toJS(exec, exception));
if (value)
- return toJS(value)->getString();
+ return toJS(exec, value).getString();
+ if (exception)
+ return "";
}
return Base::toString(exec);
@@ -427,7 +485,7 @@ bool JSCallbackObject<Base>::inherits(JSClassRef c) const
}
template <class Base>
-JSValuePtr JSCallbackObject<Base>::staticValueGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSCallbackObject<Base>::staticValueGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
JSCallbackObject* thisObj = asCallbackObject(slot.slotBase());
@@ -440,16 +498,24 @@ JSValuePtr JSCallbackObject<Base>::staticValueGetter(ExecState* exec, const Iden
if (JSObjectGetPropertyCallback getProperty = entry->getProperty) {
if (!propertyNameRef)
propertyNameRef = OpaqueJSString::create(propertyName.ustring());
- JSLock::DropAllLocks dropAllLocks(exec);
- if (JSValueRef value = getProperty(toRef(exec), thisRef, propertyNameRef.get(), toRef(exec->exceptionSlot())))
- return toJS(value);
+ JSValueRef exception = 0;
+ JSValueRef value;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ value = getProperty(toRef(exec), thisRef, propertyNameRef.get(), &exception);
+ }
+ exec->setException(toJS(exec, exception));
+ if (value)
+ return toJS(exec, value);
+ if (exception)
+ return jsUndefined();
}
return throwError(exec, ReferenceError, "Static value property defined with NULL getProperty callback.");
}
template <class Base>
-JSValuePtr JSCallbackObject<Base>::staticFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSCallbackObject<Base>::staticFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
JSCallbackObject* thisObj = asCallbackObject(slot.slotBase());
@@ -474,7 +540,7 @@ JSValuePtr JSCallbackObject<Base>::staticFunctionGetter(ExecState* exec, const I
}
template <class Base>
-JSValuePtr JSCallbackObject<Base>::callbackGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSCallbackObject<Base>::callbackGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
JSCallbackObject* thisObj = asCallbackObject(slot.slotBase());
@@ -485,9 +551,17 @@ JSValuePtr JSCallbackObject<Base>::callbackGetter(ExecState* exec, const Identif
if (JSObjectGetPropertyCallback getProperty = jsClass->getProperty) {
if (!propertyNameRef)
propertyNameRef = OpaqueJSString::create(propertyName.ustring());
- JSLock::DropAllLocks dropAllLocks(exec);
- if (JSValueRef value = getProperty(toRef(exec), thisRef, propertyNameRef.get(), toRef(exec->exceptionSlot())))
- return toJS(value);
+ JSValueRef exception = 0;
+ JSValueRef value;
+ {
+ JSLock::DropAllLocks dropAllLocks(exec);
+ value = getProperty(toRef(exec), thisRef, propertyNameRef.get(), &exception);
+ }
+ exec->setException(toJS(exec, exception));
+ if (value)
+ return toJS(exec, value);
+ if (exception)
+ return jsUndefined();
}
return throwError(exec, ReferenceError, "hasProperty callback returned true for a property that doesn't exist.");
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSClassRef.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSClassRef.cpp
index 77a33f0..afde7ce 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSClassRef.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSClassRef.cpp
@@ -111,7 +111,7 @@ PassRefPtr<OpaqueJSClass> OpaqueJSClass::createNoAutomaticPrototype(const JSClas
return adoptRef(new OpaqueJSClass(definition, 0));
}
-void clearReferenceToPrototype(JSObjectRef prototype)
+static void clearReferenceToPrototype(JSObjectRef prototype)
{
OpaqueJSClassContextData* jsClassData = static_cast<OpaqueJSClassContextData*>(JSObjectGetPrivate(prototype));
ASSERT(jsClassData);
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.cpp
index 40c45d3..a3bdc69 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.cpp
@@ -44,6 +44,7 @@ using namespace JSC;
JSContextGroupRef JSContextGroupCreate()
{
+ initializeThreading();
return toRef(JSGlobalData::create().releaseRef());
}
@@ -60,6 +61,7 @@ void JSContextGroupRelease(JSContextGroupRef group)
JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass)
{
+ initializeThreading();
#if PLATFORM(DARWIN)
// When running on Tiger or Leopard, or if the application was linked before JSGlobalContextCreate was changed
// to use a unique JSGlobalData, we use a shared one for compatibility.
@@ -95,7 +97,7 @@ JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClass
JSGlobalObject* globalObject = new (globalData.get()) JSCallbackObject<JSGlobalObject>(globalObjectClass);
ExecState* exec = globalObject->globalExec();
- JSValuePtr prototype = globalObjectClass->prototype(exec);
+ JSValue prototype = globalObjectClass->prototype(exec);
if (!prototype)
prototype = jsNull();
globalObject->resetPrototype(prototype);
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.h b/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.h
index bc89511..c5c8a71 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.h
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.h
@@ -48,7 +48,7 @@ extern "C" {
synchronization is required.
@result The created JSContextGroup.
*/
-JS_EXPORT JSContextGroupRef JSContextGroupCreate() AVAILABLE_AFTER_WEBKIT_VERSION_3_1;
+JS_EXPORT JSContextGroupRef JSContextGroupCreate() AVAILABLE_IN_WEBKIT_VERSION_4_0;
/*!
@function
@@ -56,14 +56,14 @@ JS_EXPORT JSContextGroupRef JSContextGroupCreate() AVAILABLE_AFTER_WEBKIT_VERSIO
@param group The JSContextGroup to retain.
@result A JSContextGroup that is the same as group.
*/
-JS_EXPORT JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group) AVAILABLE_AFTER_WEBKIT_VERSION_3_1;
+JS_EXPORT JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group) AVAILABLE_IN_WEBKIT_VERSION_4_0;
/*!
@function
@abstract Releases a JavaScript context group.
@param group The JSContextGroup to release.
*/
-JS_EXPORT void JSContextGroupRelease(JSContextGroupRef group) AVAILABLE_AFTER_WEBKIT_VERSION_3_1;
+JS_EXPORT void JSContextGroupRelease(JSContextGroupRef group) AVAILABLE_IN_WEBKIT_VERSION_4_0;
/*!
@function
@@ -92,7 +92,7 @@ JS_EXPORT JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass)
@result A JSGlobalContext with a global object of class globalObjectClass and a context
group equal to group.
*/
-JS_EXPORT JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClassRef globalObjectClass) AVAILABLE_AFTER_WEBKIT_VERSION_3_1;
+JS_EXPORT JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClassRef globalObjectClass) AVAILABLE_IN_WEBKIT_VERSION_4_0;
/*!
@function
@@ -123,7 +123,7 @@ JS_EXPORT JSObjectRef JSContextGetGlobalObject(JSContextRef ctx);
@param ctx The JSContext whose group you want to get.
@result ctx's group.
*/
-JS_EXPORT JSContextGroupRef JSContextGetGroup(JSContextRef ctx) AVAILABLE_AFTER_WEBKIT_VERSION_3_1;
+JS_EXPORT JSContextGroupRef JSContextGetGroup(JSContextRef ctx) AVAILABLE_IN_WEBKIT_VERSION_4_0;
#ifdef __cplusplus
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.cpp
index c08b8b0..50ee635 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.cpp
@@ -32,6 +32,7 @@
#include "ErrorConstructor.h"
#include "FunctionConstructor.h"
#include "Identifier.h"
+#include "InitializeThreading.h"
#include "JSArray.h"
#include "JSCallbackConstructor.h"
#include "JSCallbackFunction.h"
@@ -52,6 +53,7 @@ using namespace JSC;
JSClassRef JSClassCreate(const JSClassDefinition* definition)
{
+ initializeThreading();
RefPtr<OpaqueJSClass> jsClass = (definition->attributes & kJSClassAttributeNoAutomaticPrototype)
? OpaqueJSClass::createNoAutomaticPrototype(definition)
: OpaqueJSClass::create(definition);
@@ -103,10 +105,10 @@ JSObjectRef JSObjectMakeConstructor(JSContextRef ctx, JSClassRef jsClass, JSObje
exec->globalData().heap.registerThread();
JSLock lock(exec);
- JSValuePtr jsPrototype = jsClass
- ? jsClass->prototype(exec)
- : exec->lexicalGlobalObject()->objectPrototype();
-
+ JSValue jsPrototype = jsClass ? jsClass->prototype(exec) : 0;
+ if (!jsPrototype)
+ jsPrototype = exec->lexicalGlobalObject()->objectPrototype();
+
JSCallbackConstructor* constructor = new (exec) JSCallbackConstructor(exec->lexicalGlobalObject()->callbackConstructorStructure(), jsClass, callAsConstructor);
constructor->putDirect(exec->propertyNames().prototype, jsPrototype, DontEnum | DontDelete | ReadOnly);
return toRef(constructor);
@@ -120,7 +122,7 @@ JSObjectRef JSObjectMakeFunction(JSContextRef ctx, JSStringRef name, unsigned pa
Identifier nameID = name ? name->identifier(&exec->globalData()) : Identifier(exec, "anonymous");
- ArgList args;
+ MarkedArgumentBuffer args;
for (unsigned i = 0; i < parameterCount; i++)
args.append(jsString(exec, parameterNames[i]->ustring()));
args.append(jsString(exec, body->ustring()));
@@ -128,7 +130,7 @@ JSObjectRef JSObjectMakeFunction(JSContextRef ctx, JSStringRef name, unsigned pa
JSObject* result = constructFunction(exec, args, nameID, sourceURL->ustring(), startingLineNumber);
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
result = 0;
}
@@ -143,9 +145,9 @@ JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSVa
JSObject* result;
if (argumentCount) {
- ArgList argList;
+ MarkedArgumentBuffer argList;
for (size_t i = 0; i < argumentCount; ++i)
- argList.append(toJS(arguments[i]));
+ argList.append(toJS(exec, arguments[i]));
result = constructArray(exec, argList);
} else
@@ -153,7 +155,7 @@ JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSVa
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
result = 0;
}
@@ -167,14 +169,14 @@ JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSVal
exec->globalData().heap.registerThread();
JSLock lock(exec);
- ArgList argList;
+ MarkedArgumentBuffer argList;
for (size_t i = 0; i < argumentCount; ++i)
- argList.append(toJS(arguments[i]));
+ argList.append(toJS(exec, arguments[i]));
JSObject* result = constructDate(exec, argList);
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
result = 0;
}
@@ -188,14 +190,14 @@ JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, const JSVa
exec->globalData().heap.registerThread();
JSLock lock(exec);
- ArgList argList;
+ MarkedArgumentBuffer argList;
for (size_t i = 0; i < argumentCount; ++i)
- argList.append(toJS(arguments[i]));
+ argList.append(toJS(exec, arguments[i]));
JSObject* result = constructError(exec, argList);
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
result = 0;
}
@@ -209,14 +211,14 @@ JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSV
exec->globalData().heap.registerThread();
JSLock lock(exec);
- ArgList argList;
+ MarkedArgumentBuffer argList;
for (size_t i = 0; i < argumentCount; ++i)
- argList.append(toJS(arguments[i]));
+ argList.append(toJS(exec, arguments[i]));
JSObject* result = constructRegExp(exec, argList);
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
result = 0;
}
@@ -224,18 +226,26 @@ JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSV
return toRef(result);
}
-JSValueRef JSObjectGetPrototype(JSContextRef, JSObjectRef object)
+JSValueRef JSObjectGetPrototype(JSContextRef ctx, JSObjectRef object)
{
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
JSObject* jsObject = toJS(object);
- return toRef(jsObject->prototype());
+ return toRef(exec, jsObject->prototype());
}
-void JSObjectSetPrototype(JSContextRef, JSObjectRef object, JSValueRef value)
+void JSObjectSetPrototype(JSContextRef ctx, JSObjectRef object, JSValueRef value)
{
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
JSObject* jsObject = toJS(object);
- JSValuePtr jsValue = toJS(value);
+ JSValue jsValue = toJS(exec, value);
- jsObject->setPrototype(jsValue->isObject() ? jsValue : jsNull());
+ jsObject->setPrototype(jsValue.isObject() ? jsValue : jsNull());
}
bool JSObjectHasProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName)
@@ -257,13 +267,13 @@ JSValueRef JSObjectGetProperty(JSContextRef ctx, JSObjectRef object, JSStringRef
JSObject* jsObject = toJS(object);
- JSValuePtr jsValue = jsObject->get(exec, propertyName->identifier(&exec->globalData()));
+ JSValue jsValue = jsObject->get(exec, propertyName->identifier(&exec->globalData()));
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
}
- return toRef(jsValue);
+ return toRef(exec, jsValue);
}
void JSObjectSetProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef value, JSPropertyAttributes attributes, JSValueRef* exception)
@@ -274,7 +284,7 @@ void JSObjectSetProperty(JSContextRef ctx, JSObjectRef object, JSStringRef prope
JSObject* jsObject = toJS(object);
Identifier name(propertyName->identifier(&exec->globalData()));
- JSValuePtr jsValue = toJS(value);
+ JSValue jsValue = toJS(exec, value);
if (attributes && !jsObject->hasProperty(exec, name))
jsObject->putWithAttributes(exec, name, jsValue, attributes);
@@ -285,7 +295,7 @@ void JSObjectSetProperty(JSContextRef ctx, JSObjectRef object, JSStringRef prope
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
}
}
@@ -298,13 +308,13 @@ JSValueRef JSObjectGetPropertyAtIndex(JSContextRef ctx, JSObjectRef object, unsi
JSObject* jsObject = toJS(object);
- JSValuePtr jsValue = jsObject->get(exec, propertyIndex);
+ JSValue jsValue = jsObject->get(exec, propertyIndex);
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
}
- return toRef(jsValue);
+ return toRef(exec, jsValue);
}
@@ -315,12 +325,12 @@ void JSObjectSetPropertyAtIndex(JSContextRef ctx, JSObjectRef object, unsigned p
JSLock lock(exec);
JSObject* jsObject = toJS(object);
- JSValuePtr jsValue = toJS(value);
+ JSValue jsValue = toJS(exec, value);
jsObject->put(exec, propertyIndex, jsValue);
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
}
}
@@ -336,7 +346,7 @@ bool JSObjectDeleteProperty(JSContextRef ctx, JSObjectRef object, JSStringRef pr
bool result = jsObject->deleteProperty(exec, propertyName->identifier(&exec->globalData()));
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
}
return result;
@@ -387,19 +397,19 @@ JSValueRef JSObjectCallAsFunction(JSContextRef ctx, JSObjectRef object, JSObject
if (!jsThisObject)
jsThisObject = exec->globalThisValue();
- ArgList argList;
+ MarkedArgumentBuffer argList;
for (size_t i = 0; i < argumentCount; i++)
- argList.append(toJS(arguments[i]));
+ argList.append(toJS(exec, arguments[i]));
CallData callData;
CallType callType = jsObject->getCallData(callData);
if (callType == CallTypeNone)
return 0;
- JSValueRef result = toRef(call(exec, jsObject, callType, callData, jsThisObject, argList));
+ JSValueRef result = toRef(exec, call(exec, jsObject, callType, callData, jsThisObject, argList));
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
result = 0;
}
@@ -426,13 +436,13 @@ JSObjectRef JSObjectCallAsConstructor(JSContextRef ctx, JSObjectRef object, size
if (constructType == ConstructTypeNone)
return 0;
- ArgList argList;
+ MarkedArgumentBuffer argList;
for (size_t i = 0; i < argumentCount; i++)
- argList.append(toJS(arguments[i]));
+ argList.append(toJS(exec, arguments[i]));
JSObjectRef result = toRef(construct(exec, jsObject, constructType, constructData, argList));
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
result = 0;
}
@@ -465,7 +475,7 @@ JSPropertyNameArrayRef JSObjectCopyPropertyNames(JSContextRef ctx, JSObjectRef o
jsObject->getPropertyNames(exec, array);
size_t size = array.size();
- propertyNames->array.reserveCapacity(size);
+ propertyNames->array.reserveInitialCapacity(size);
for (size_t i = 0; i < size; ++i)
propertyNames->array.append(JSRetainPtr<JSStringRef>(Adopt, OpaqueJSString::create(array[i].ustring()).releaseRef()));
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h b/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h
index 461764c..3e8b0eb 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.h
@@ -441,7 +441,7 @@ JS_EXPORT JSObjectRef JSObjectMakeConstructor(JSContextRef ctx, JSClassRef jsCla
@discussion The behavior of this function does not exactly match the behavior of the built-in Array constructor. Specifically, if one argument
is supplied, this function returns an array with one element.
*/
-JS_EXPORT JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_AFTER_WEBKIT_VERSION_3_1;
+JS_EXPORT JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0;
/*!
@function
@@ -452,7 +452,7 @@ JS_EXPORT JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount,
@param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
@result A JSObject that is a Date.
*/
-JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_AFTER_WEBKIT_VERSION_3_1;
+JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0;
/*!
@function
@@ -463,7 +463,7 @@ JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, c
@param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
@result A JSObject that is a Error.
*/
-JS_EXPORT JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_AFTER_WEBKIT_VERSION_3_1;
+JS_EXPORT JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0;
/*!
@function
@@ -474,7 +474,7 @@ JS_EXPORT JSObjectRef JSObjectMakeError(JSContextRef ctx, size_t argumentCount,
@param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
@result A JSObject that is a RegExp.
*/
-JS_EXPORT JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_AFTER_WEBKIT_VERSION_3_1;
+JS_EXPORT JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) AVAILABLE_IN_WEBKIT_VERSION_4_0;
/*!
@function
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSStringRef.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSStringRef.cpp
index 6452ffc..8e236e4 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSStringRef.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSStringRef.cpp
@@ -26,6 +26,7 @@
#include "config.h"
#include "JSStringRef.h"
+#include "InitializeThreading.h"
#include "OpaqueJSString.h"
#include <wtf/unicode/UTF8.h>
@@ -34,11 +35,13 @@ using namespace WTF::Unicode;
JSStringRef JSStringCreateWithCharacters(const JSChar* chars, size_t numChars)
{
+ initializeThreading();
return OpaqueJSString::create(chars, numChars).releaseRef();
}
JSStringRef JSStringCreateWithUTF8CString(const char* string)
{
+ initializeThreading();
if (string) {
size_t length = strlen(string);
Vector<UChar, 1024> buffer(length);
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSStringRefCF.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSStringRefCF.cpp
index 65edd09..d1f6fe3 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSStringRefCF.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSStringRefCF.cpp
@@ -27,6 +27,7 @@
#include "JSStringRefCF.h"
#include "APICast.h"
+#include "InitializeThreading.h"
#include "JSStringRef.h"
#include "OpaqueJSString.h"
#include <runtime/UString.h>
@@ -35,7 +36,11 @@
JSStringRef JSStringCreateWithCFString(CFStringRef string)
{
- CFIndex length = CFStringGetLength(string);
+ JSC::initializeThreading();
+
+ // We cannot use CFIndex here since CFStringGetLength can return values larger than
+ // it can hold. (<rdar://problem/6806478>)
+ size_t length = CFStringGetLength(string);
if (length) {
OwnArrayPtr<UniChar> buffer(new UniChar[length]);
CFStringGetCharacters(string, CFRangeMake(0, length), buffer.get());
@@ -44,7 +49,7 @@ JSStringRef JSStringCreateWithCFString(CFStringRef string)
} else {
return OpaqueJSString::create(0, 0).releaseRef();
}
- }
+}
CFStringRef JSStringCopyCFString(CFAllocatorRef alloc, JSStringRef string)
{
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/JSValueRef.cpp b/src/3rdparty/webkit/JavaScriptCore/API/JSValueRef.cpp
index 351a105..2207181 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/JSValueRef.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/API/JSValueRef.cpp
@@ -41,66 +41,99 @@
#include <algorithm> // for std::min
-JSType JSValueGetType(JSContextRef, JSValueRef value)
+JSType JSValueGetType(JSContextRef ctx, JSValueRef value)
{
- JSC::JSValuePtr jsValue = toJS(value);
- if (jsValue->isUndefined())
+ JSC::ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSC::JSLock lock(exec);
+
+ JSC::JSValue jsValue = toJS(exec, value);
+
+ if (jsValue.isUndefined())
return kJSTypeUndefined;
- if (jsValue->isNull())
+ if (jsValue.isNull())
return kJSTypeNull;
- if (jsValue->isBoolean())
+ if (jsValue.isBoolean())
return kJSTypeBoolean;
- if (jsValue->isNumber())
+ if (jsValue.isNumber())
return kJSTypeNumber;
- if (jsValue->isString())
+ if (jsValue.isString())
return kJSTypeString;
- ASSERT(jsValue->isObject());
+ ASSERT(jsValue.isObject());
return kJSTypeObject;
}
using namespace JSC; // placed here to avoid conflict between JSC::JSType and JSType, above.
-bool JSValueIsUndefined(JSContextRef, JSValueRef value)
+bool JSValueIsUndefined(JSContextRef ctx, JSValueRef value)
{
- JSValuePtr jsValue = toJS(value);
- return jsValue->isUndefined();
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ JSValue jsValue = toJS(exec, value);
+ return jsValue.isUndefined();
}
-bool JSValueIsNull(JSContextRef, JSValueRef value)
+bool JSValueIsNull(JSContextRef ctx, JSValueRef value)
{
- JSValuePtr jsValue = toJS(value);
- return jsValue->isNull();
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ JSValue jsValue = toJS(exec, value);
+ return jsValue.isNull();
}
-bool JSValueIsBoolean(JSContextRef, JSValueRef value)
+bool JSValueIsBoolean(JSContextRef ctx, JSValueRef value)
{
- JSValuePtr jsValue = toJS(value);
- return jsValue->isBoolean();
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ JSValue jsValue = toJS(exec, value);
+ return jsValue.isBoolean();
}
-bool JSValueIsNumber(JSContextRef, JSValueRef value)
+bool JSValueIsNumber(JSContextRef ctx, JSValueRef value)
{
- JSValuePtr jsValue = toJS(value);
- return jsValue->isNumber();
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ JSValue jsValue = toJS(exec, value);
+ return jsValue.isNumber();
}
-bool JSValueIsString(JSContextRef, JSValueRef value)
+bool JSValueIsString(JSContextRef ctx, JSValueRef value)
{
- JSValuePtr jsValue = toJS(value);
- return jsValue->isString();
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ JSValue jsValue = toJS(exec, value);
+ return jsValue.isString();
}
-bool JSValueIsObject(JSContextRef, JSValueRef value)
+bool JSValueIsObject(JSContextRef ctx, JSValueRef value)
{
- JSValuePtr jsValue = toJS(value);
- return jsValue->isObject();
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ JSValue jsValue = toJS(exec, value);
+ return jsValue.isObject();
}
-bool JSValueIsObjectOfClass(JSContextRef, JSValueRef value, JSClassRef jsClass)
+bool JSValueIsObjectOfClass(JSContextRef ctx, JSValueRef value, JSClassRef jsClass)
{
- JSValuePtr jsValue = toJS(value);
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ JSValue jsValue = toJS(exec, value);
- if (JSObject* o = jsValue->getObject()) {
+ if (JSObject* o = jsValue.getObject()) {
if (o->inherits(&JSCallbackObject<JSGlobalObject>::info))
return static_cast<JSCallbackObject<JSGlobalObject>*>(o)->inherits(jsClass);
else if (o->inherits(&JSCallbackObject<JSObject>::info))
@@ -115,25 +148,28 @@ bool JSValueIsEqual(JSContextRef ctx, JSValueRef a, JSValueRef b, JSValueRef* ex
exec->globalData().heap.registerThread();
JSLock lock(exec);
- JSValuePtr jsA = toJS(a);
- JSValuePtr jsB = toJS(b);
+ JSValue jsA = toJS(exec, a);
+ JSValue jsB = toJS(exec, b);
- bool result = equal(exec, jsA, jsB); // false if an exception is thrown
+ bool result = JSValue::equal(exec, jsA, jsB); // false if an exception is thrown
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
}
return result;
}
-bool JSValueIsStrictEqual(JSContextRef, JSValueRef a, JSValueRef b)
+bool JSValueIsStrictEqual(JSContextRef ctx, JSValueRef a, JSValueRef b)
{
- JSValuePtr jsA = toJS(a);
- JSValuePtr jsB = toJS(b);
-
- bool result = strictEqual(jsA, jsB);
- return result;
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ JSValue jsA = toJS(exec, a);
+ JSValue jsB = toJS(exec, b);
+
+ return JSValue::strictEqual(jsA, jsB);
}
bool JSValueIsInstanceOfConstructor(JSContextRef ctx, JSValueRef value, JSObjectRef constructor, JSValueRef* exception)
@@ -142,32 +178,45 @@ bool JSValueIsInstanceOfConstructor(JSContextRef ctx, JSValueRef value, JSObject
exec->globalData().heap.registerThread();
JSLock lock(exec);
- JSValuePtr jsValue = toJS(value);
+ JSValue jsValue = toJS(exec, value);
+
JSObject* jsConstructor = toJS(constructor);
if (!jsConstructor->structure()->typeInfo().implementsHasInstance())
return false;
bool result = jsConstructor->hasInstance(exec, jsValue, jsConstructor->get(exec, exec->propertyNames().prototype)); // false if an exception is thrown
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
}
return result;
}
-JSValueRef JSValueMakeUndefined(JSContextRef)
+JSValueRef JSValueMakeUndefined(JSContextRef ctx)
{
- return toRef(jsUndefined());
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ return toRef(exec, jsUndefined());
}
-JSValueRef JSValueMakeNull(JSContextRef)
+JSValueRef JSValueMakeNull(JSContextRef ctx)
{
- return toRef(jsNull());
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ return toRef(exec, jsNull());
}
-JSValueRef JSValueMakeBoolean(JSContextRef, bool value)
+JSValueRef JSValueMakeBoolean(JSContextRef ctx, bool value)
{
- return toRef(jsBoolean(value));
+ ExecState* exec = toJS(ctx);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ return toRef(exec, jsBoolean(value));
}
JSValueRef JSValueMakeNumber(JSContextRef ctx, double value)
@@ -176,7 +225,7 @@ JSValueRef JSValueMakeNumber(JSContextRef ctx, double value)
exec->globalData().heap.registerThread();
JSLock lock(exec);
- return toRef(jsNumber(exec, value));
+ return toRef(exec, jsNumber(exec, value));
}
JSValueRef JSValueMakeString(JSContextRef ctx, JSStringRef string)
@@ -185,14 +234,17 @@ JSValueRef JSValueMakeString(JSContextRef ctx, JSStringRef string)
exec->globalData().heap.registerThread();
JSLock lock(exec);
- return toRef(jsString(exec, string->ustring()));
+ return toRef(exec, jsString(exec, string->ustring()));
}
bool JSValueToBoolean(JSContextRef ctx, JSValueRef value)
{
ExecState* exec = toJS(ctx);
- JSValuePtr jsValue = toJS(value);
- return jsValue->toBoolean(exec);
+ exec->globalData().heap.registerThread();
+ JSLock lock(exec);
+
+ JSValue jsValue = toJS(exec, value);
+ return jsValue.toBoolean(exec);
}
double JSValueToNumber(JSContextRef ctx, JSValueRef value, JSValueRef* exception)
@@ -201,12 +253,12 @@ double JSValueToNumber(JSContextRef ctx, JSValueRef value, JSValueRef* exception
exec->globalData().heap.registerThread();
JSLock lock(exec);
- JSValuePtr jsValue = toJS(value);
+ JSValue jsValue = toJS(exec, value);
- double number = jsValue->toNumber(exec);
+ double number = jsValue.toNumber(exec);
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
number = NaN;
}
@@ -219,12 +271,12 @@ JSStringRef JSValueToStringCopy(JSContextRef ctx, JSValueRef value, JSValueRef*
exec->globalData().heap.registerThread();
JSLock lock(exec);
- JSValuePtr jsValue = toJS(value);
+ JSValue jsValue = toJS(exec, value);
- RefPtr<OpaqueJSString> stringRef(OpaqueJSString::create(jsValue->toString(exec)));
+ RefPtr<OpaqueJSString> stringRef(OpaqueJSString::create(jsValue.toString(exec)));
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
stringRef.clear();
}
@@ -237,12 +289,12 @@ JSObjectRef JSValueToObject(JSContextRef ctx, JSValueRef value, JSValueRef* exce
exec->globalData().heap.registerThread();
JSLock lock(exec);
- JSValuePtr jsValue = toJS(value);
+ JSValue jsValue = toJS(exec, value);
- JSObjectRef objectRef = toRef(jsValue->toObject(exec));
+ JSObjectRef objectRef = toRef(jsValue.toObject(exec));
if (exec->hadException()) {
if (exception)
- *exception = toRef(exec->exception());
+ *exception = toRef(exec, exec->exception());
exec->clearException();
objectRef = 0;
}
@@ -255,7 +307,7 @@ void JSValueProtect(JSContextRef ctx, JSValueRef value)
exec->globalData().heap.registerThread();
JSLock lock(exec);
- JSValuePtr jsValue = toJS(value);
+ JSValue jsValue = toJS(exec, value);
gcProtect(jsValue);
}
@@ -265,6 +317,6 @@ void JSValueUnprotect(JSContextRef ctx, JSValueRef value)
exec->globalData().heap.registerThread();
JSLock lock(exec);
- JSValuePtr jsValue = toJS(value);
+ JSValue jsValue = toJS(exec, value);
gcUnprotect(jsValue);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/API/WebKitAvailability.h b/src/3rdparty/webkit/JavaScriptCore/API/WebKitAvailability.h
index 1273360..8402528 100644
--- a/src/3rdparty/webkit/JavaScriptCore/API/WebKitAvailability.h
+++ b/src/3rdparty/webkit/JavaScriptCore/API/WebKitAvailability.h
@@ -38,6 +38,7 @@
#define WEBKIT_VERSION_2_0 0x0200
#define WEBKIT_VERSION_3_0 0x0300
#define WEBKIT_VERSION_3_1 0x0310
+#define WEBKIT_VERSION_4_0 0x0400
#define WEBKIT_VERSION_LATEST 0x9999
#ifdef __APPLE__
@@ -640,123 +641,123 @@
/*
- * AVAILABLE_AFTER_WEBKIT_VERSION_3_1
+ * AVAILABLE_IN_WEBKIT_VERSION_4_0
*
- * Used on declarations introduced after WebKit 3.1
+ * Used on declarations introduced in WebKit 4.0
*/
#if WEBKIT_VERSION_MAX_ALLOWED < WEBKIT_VERSION_LATEST
- #define AVAILABLE_AFTER_WEBKIT_VERSION_3_1 UNAVAILABLE_ATTRIBUTE
+ #define AVAILABLE_IN_WEBKIT_VERSION_4_0 UNAVAILABLE_ATTRIBUTE
#elif WEBKIT_VERSION_MIN_REQUIRED < WEBKIT_VERSION_LATEST
- #define AVAILABLE_AFTER_WEBKIT_VERSION_3_1 WEAK_IMPORT_ATTRIBUTE
+ #define AVAILABLE_IN_WEBKIT_VERSION_4_0 WEAK_IMPORT_ATTRIBUTE
#else
- #define AVAILABLE_AFTER_WEBKIT_VERSION_3_1
+ #define AVAILABLE_IN_WEBKIT_VERSION_4_0
#endif
/*
- * AVAILABLE_AFTER_WEBKIT_VERSION_3_1_BUT_DEPRECATED
+ * AVAILABLE_IN_WEBKIT_VERSION_4_0_BUT_DEPRECATED
*
- * Used on declarations introduced after WebKit 3.1,
- * and deprecated after WebKit 3.1
+ * Used on declarations introduced in WebKit 4.0,
+ * and deprecated in WebKit 4.0
*/
#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST
- #define AVAILABLE_AFTER_WEBKIT_VERSION_3_1_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+ #define AVAILABLE_IN_WEBKIT_VERSION_4_0_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
#else
- #define AVAILABLE_AFTER_WEBKIT_VERSION_3_1_BUT_DEPRECATED AVAILABLE_AFTER_WEBKIT_VERSION_3_1
+ #define AVAILABLE_IN_WEBKIT_VERSION_4_0_BUT_DEPRECATED AVAILABLE_IN_WEBKIT_VERSION_4_0
#endif
/*
- * AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1
+ * AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0
*
* Used on declarations introduced in WebKit 1.0,
- * but later deprecated after WebKit 3.1
+ * but later deprecated in WebKit 4.0
*/
#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST
- #define AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE
+ #define AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE
#else
- #define AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER
+ #define AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER
#endif
/*
- * AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1
+ * AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0
*
* Used on declarations introduced in WebKit 1.1,
- * but later deprecated after WebKit 3.1
+ * but later deprecated in WebKit 4.0
*/
#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST
- #define AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE
+ #define AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE
#else
- #define AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER
+ #define AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER
#endif
/*
- * AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1
+ * AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0
*
* Used on declarations introduced in WebKit 1.2,
- * but later deprecated after WebKit 3.1
+ * but later deprecated in WebKit 4.0
*/
#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST
- #define AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE
+ #define AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE
#else
- #define AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER
+ #define AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER
#endif
/*
- * AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1
+ * AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0
*
* Used on declarations introduced in WebKit 1.3,
- * but later deprecated after WebKit 3.1
+ * but later deprecated in WebKit 4.0
*/
#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST
- #define AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE
+ #define AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE
#else
- #define AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER
+ #define AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER
#endif
/*
- * AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1
+ * AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0
*
* Used on declarations introduced in WebKit 2.0,
- * but later deprecated after WebKit 3.1
+ * but later deprecated in WebKit 4.0
*/
#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST
- #define AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE
+ #define AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE
#else
- #define AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER
+ #define AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER
#endif
/*
- * AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1
+ * AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0
*
* Used on declarations introduced in WebKit 3.0,
- * but later deprecated after WebKit 3.1
+ * but later deprecated in WebKit 4.0
*/
#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST
- #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE
+ #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE
#else
- #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER
+ #define AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER
#endif
/*
- * AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1
+ * AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0
*
* Used on declarations introduced in WebKit 3.1,
- * but later deprecated after WebKit 3.1
+ * but later deprecated in WebKit 4.0
*/
#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST
- #define AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE
+ #define AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE
#else
- #define AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_3_1 AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER
+ #define AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0 AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER
#endif
/*
- * DEPRECATED_AFTER_WEBKIT_VERSION_3_1
+ * DEPRECATED_IN_WEBKIT_VERSION_4_0
*
- * Used on types deprecated after WebKit 3.1
+ * Used on types deprecated in WebKit 4.0
*/
#if WEBKIT_VERSION_MIN_REQUIRED >= WEBKIT_VERSION_LATEST
- #define DEPRECATED_AFTER_WEBKIT_VERSION_3_1 DEPRECATED_ATTRIBUTE
+ #define DEPRECATED_IN_WEBKIT_VERSION_4_0 DEPRECATED_ATTRIBUTE
#else
- #define DEPRECATED_AFTER_WEBKIT_VERSION_3_1
+ #define DEPRECATED_IN_WEBKIT_VERSION_4_0
#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
index 3321570..fbda515 100644
--- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog
+++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
@@ -1,59 +1,10236 @@
-2009-01-22 Oliver Hunt <oliver@apple.com>
+2009-06-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Use $QMAKE_PATH_SEP instead of hardcoded / to fix Windows build
+
+ * JavaScriptCore.pri:
+ * JavaScriptCore.pro:
+ * jsc.pro:
+
+2009-06-07 Gavin Barraclough <barraclough@apple.com>
+
+ RS by Sam Weinig.
+
+ Remove bonus bogus \n from last commit.
+
+ * jit/JITStubs.cpp:
+ (JSC::):
+
+2009-06-07 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Change the implementation of op_throw so the stub function always modifies its
+ return address - if it doesn't find a 'catch' it will switch to a trampoline
+ to force a return from JIT execution. This saves memory, by avoiding the need
+ for a unique return for every op_throw.
+
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_throw):
+ JITStubs::cti_op_throw now always changes its return address,
+ remove return code generated after the stub call (this is now
+ handled by ctiOpThrowNotCaught).
+ * jit/JITStubs.cpp:
+ (JSC::):
+ Add ctiOpThrowNotCaught definitions.
+ (JSC::JITStubs::DEFINE_STUB_FUNCTION):
+ Change cti_op_throw to always change its return address.
+ * jit/JITStubs.h:
+ Add ctiOpThrowNotCaught declaration.
+
+2009-06-05 Gavin Barraclough <barraclough@apple.com>
+
+ Rudder stamped by Sam Weinig.
+
+ Add missing ASSERT.
+
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::getRelocatedAddress):
+
+2009-06-05 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Switch storePtrWithPatch to take the initial immediate value as an argument.
+
+ * assembler/MacroAssemblerX86.h:
+ (JSC::MacroAssemblerX86::storePtrWithPatch):
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::storePtrWithPatch):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jsr):
+
+2009-06-05 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Remove patchLength..tByIdExternalLoadPrefix magic numbers from JIT.h.
+
+ These aren't really suitable values to be tracking within common code
+ of the JIT, since they are not (and realistically cannot) be checked
+ by ASSERTs, as the other repatch offsets are. Move this functionality
+ (skipping the REX prefix when patching load instructions to LEAs on
+ x86-64) into the X86Assembler.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::CodeLocationInstruction::repatchLoadPtrToLEA):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::repatchLoadPtrToLEA):
+ * jit/JIT.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::patchPutByIdReplace):
+
+2009-06-05 Shinichiro Hamaji <hamaji@chromium.org>
+
+ Bug 26160: Compile fails in MacOSX when GNU fileutils are installed
+
+ <https://bugs.webkit.org/show_bug.cgi?id=26160>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Use /bin/ln instead of ln for cases where this command is used with -h option.
+ As this option is not supported by GNU fileutils, this change helps users
+ who have GNU fileutils in their PATH.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+
+2009-06-05 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Remove DoubleNotEqual floating point comparison condition for now -
+ it is not used, and it is unclear the semantics are correct (I think
+ this comparison would actually give you not-equal-or-unordered, which
+ might be what is wanted... we can revisit this interface & get it
+ right when required).
+
+ Also, fix asserts in branchArith32 ops. All adds & subs can check
+ for Signed, multiply only sets OF so can only check for overflow.
+
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::):
+ (JSC::MacroAssemblerX86Common::branchAdd32):
+ (JSC::MacroAssemblerX86Common::branchMul32):
+ (JSC::MacroAssemblerX86Common::branchSub32):
+
+2009-06-05 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Minor tidy up in JITStubs.
+
+ * jit/JITStubs.cpp:
+ (JSC::StackHack::StackHack):
+ * jit/JITStubs.h:
+
+2009-06-05 Koen Kooi <koen@dominion.thruhere.net>
+
+ Reviewed by Xan Lopez.
+
+ Build fix for glib unicode backend.
+
+ * wtf/unicode/glib/UnicodeMacrosFromICU.h:
+
+2009-06-05 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ 3 tiny cleanups:
+
+ * assembler/MacroAssemblerX86.h:
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::storePtrWithPatch):
+ store*() methods should take an ImplicitAddress, rather than an Address.
+ * assembler/X86Assembler.h:
+ Make patchPointer private.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_ret):
+ Remove empty line at end of function.
+
+2009-06-05 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Encapsulate many uses of void* in the assembler & jit with types that provide
+ more semantic information. The new types are:
+
+ * MacroAssemblerCodePtr - this wraps a pointer into JIT generated code.
+ * FunctionPtr - this wraps a pointer to a C/C++ function in JSC.
+ * ReturnAddressPtr - this wraps a return address resulting from a 'call' instruction.
+
+ Wrapping these types allows for stronger type-checking than is possible with everything
+ represented a void*. For example, it is now enforced by the type system that near
+ calls can only be linked to JIT code and not to C functions in JSC (this was previously
+ required, but could not be enforced on the interface).
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::CodeLocationCommon::CodeLocationCommon):
+ (JSC::AbstractMacroAssembler::CodeLocationCommon::dataLocation):
+ (JSC::AbstractMacroAssembler::CodeLocationCommon::executableAddress):
+ (JSC::AbstractMacroAssembler::CodeLocationCommon::reset):
+ (JSC::AbstractMacroAssembler::CodeLocationInstruction::repatchLoadToLEA):
+ (JSC::AbstractMacroAssembler::CodeLocationInstruction::CodeLocationInstruction):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForSwitch):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForExceptionHandler):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForJSR):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::operator!):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::reset):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::CodeLocationLabel):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::getJumpDestination):
+ (JSC::AbstractMacroAssembler::CodeLocationJump::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationJump::CodeLocationJump):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::calleeReturnAddressValue):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::CodeLocationCall):
+ (JSC::AbstractMacroAssembler::CodeLocationNearCall::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationNearCall::calleeReturnAddressValue):
+ (JSC::AbstractMacroAssembler::CodeLocationNearCall::CodeLocationNearCall):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::CodeLocationDataLabel32):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToTrampoline):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkNearCallerToTrampoline):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::addressForLookup):
+ (JSC::AbstractMacroAssembler::trampolineAt):
+ (JSC::AbstractMacroAssembler::PatchBuffer::link):
+ (JSC::AbstractMacroAssembler::PatchBuffer::performFinalization):
+ (JSC::::CodeLocationCommon::instructionAtOffset):
+ (JSC::::CodeLocationCommon::labelAtOffset):
+ (JSC::::CodeLocationCommon::jumpAtOffset):
+ (JSC::::CodeLocationCommon::callAtOffset):
+ (JSC::::CodeLocationCommon::nearCallAtOffset):
+ (JSC::::CodeLocationCommon::dataLabelPtrAtOffset):
+ (JSC::::CodeLocationCommon::dataLabel32AtOffset):
+ * assembler/MacroAssemblerCodeRef.h:
+ (JSC::FunctionPtr::FunctionPtr):
+ (JSC::FunctionPtr::value):
+ (JSC::FunctionPtr::executableAddress):
+ (JSC::ReturnAddressPtr::ReturnAddressPtr):
+ (JSC::ReturnAddressPtr::value):
+ (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
+ (JSC::MacroAssemblerCodePtr::executableAddress):
+ (JSC::MacroAssemblerCodePtr::dataLocation):
+ (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::patchPointerForCall):
+ * jit/JIT.cpp:
+ (JSC::ctiPatchNearCallByReturnAddress):
+ (JSC::ctiPatchCallByReturnAddress):
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ (JSC::JIT::compileCTIMachineTrampolines):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ * jit/JITCode.h:
+ (JSC::JITCode::operator !):
+ (JSC::JITCode::addressForCall):
+ (JSC::JITCode::offsetOf):
+ (JSC::JITCode::execute):
+ (JSC::JITCode::size):
+ (JSC::JITCode::HostFunction):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitNakedCall):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::patchPutByIdReplace):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdChain):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::JITThunks):
+ (JSC::JITThunks::tryCachePutByID):
+ (JSC::JITThunks::tryCacheGetByID):
+ (JSC::JITStubs::DEFINE_STUB_FUNCTION):
+ * jit/JITStubs.h:
+ (JSC::JITThunks::ctiArrayLengthTrampoline):
+ (JSC::JITThunks::ctiStringLengthTrampoline):
+ (JSC::JITThunks::ctiVirtualCallPreLink):
+ (JSC::JITThunks::ctiVirtualCallLink):
+ (JSC::JITThunks::ctiVirtualCall):
+ (JSC::JITThunks::ctiNativeCallThunk):
+ * yarr/RegexJIT.h:
+ (JSC::Yarr::RegexCodeBlock::operator!):
+ (JSC::Yarr::RegexCodeBlock::execute):
+
+2009-06-05 Antti Koivisto <antti@apple.com>
+
+ Try to unbreak Windows build.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-06-03 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Dave Kilzer.
+
+ https://bugs.webkit.org/show_bug.cgi?id=13128
+ Safari not obeying cache header
+
+ Export JSC::parseDate()
+
+ * JavaScriptCore.exp:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+
+2009-06-04 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Bug in property caching of getters and setters.
+
+ Make sure that the transition logic accounts for getters and setters.
+ If we don't we end up screwing up the transition tables so that some
+ transitions will start incorrectly believing that they need to check
+ for getters and setters.
+
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::defineGetter):
+ (JSC::JSObject::defineSetter):
+ * runtime/JSObject.h:
+ (JSC::):
+ * runtime/Structure.h:
+
+2009-06-04 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Minor tweak to PatchBuffer, change it so it no longer holds a CodeRef, and instead
+ holds a separate code pointer and executable pool. Since it now always holds its
+ own copy of the code size, and to simplify the construction sequence, it's neater
+ this way.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::PatchBuffer::PatchBuffer):
+ (JSC::AbstractMacroAssembler::PatchBuffer::finalizeCode):
+ (JSC::AbstractMacroAssembler::PatchBuffer::code):
+ (JSC::AbstractMacroAssembler::PatchBuffer::performFinalization):
+
+2009-06-04 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Remove 'JIT_STUB_ARGUMENT_STACK' this is unused and untested.
+
+ This just leaves JIT_STUB_ARGUMENT_REGISTER and JIT_STUB_ARGUMENT_VA_LIST.
+ Since JIT_STUB_ARGUMENT_REGISTER is the sensible configuration on most platforms,
+ remove this define and make this the default behaviour.
+ Platforms must now define JIT_STUB_ARGUMENT_VA_LIST to get crazy va_list voodoo,
+ if they so desire.
+
+ (Refactoring of #ifdefs only, no functional change, no performance impact.)
+
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::restoreArgumentReference):
+ (JSC::JIT::restoreArgumentReferenceForTrampoline):
+ * jit/JITStubs.cpp:
+ (JSC::):
+ * jit/JITStubs.h:
+ * wtf/Platform.h:
+
+2009-06-04 Gavin Barraclough <barraclough@apple.com>
+
+ Rubber stamped by Sam Weinig.
+
+ * jit/JITArithmetic.cpp:
+ Remove some redundant typedefs, unused since arithmetic was added to the MacroAssembler interface.
+
+2009-06-04 Brent Fulgham <bfulgham@webkit.org>
+
+ Build fix due to header include problem.
+
+ * interpreter/Interpreter.h: Remove wtf from includes so that
+ compile can find the headers in expected places.
+
+2009-06-04 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
+
+ Reviewed by Darin Adler.
+
+ HashTable class (JavaScriptCore/wtf/HashTable.h) doesn't instantiated by 'new', so
+ inheritance was removed. HashTable struct has been instantiated by operator new in
+ JSGlobalData.cpp:106.
+ HashTable couldn't inherited from FastAllocBase since struct with inheritance is
+ no longer POD, so HashTable struct has been instantiated by fastNew, destroyed by
+ fastDelete.
+
+ * interpreter/Interpreter.h:
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ (JSC::JSGlobalData::~JSGlobalData):
+ * wtf/HashTable.h:
+
+2009-06-04 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Wrap the code that plants pushes/pops planted by JIT in explanatorily named
+ methods; move property storage reallocation into a standard stub function.
+
+ ~No performance impact (possible <1% progression on x86-64, likely just noise).
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ Wrap calls to push/pop.
+ * jit/JIT.h:
+ Declare the new wrapper methods.
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::preverveReturnAddressAfterCall):
+ (JSC::JIT::restoreReturnAddressBeforeReturn):
+ Define the new wrapper methods.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_end):
+ (JSC::JIT::emit_op_ret):
+ Wrap calls to push/pop.
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompilePutByIdTransition):
+ Move property storage reallocation into a standard stub function.
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::DEFINE_STUB_FUNCTION):
+ * jit/JITStubs.h:
+ (JSC::JITStubs::):
+
+2009-06-04 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Ariya Hidayat.
+
+ [Qt] Single-threaded QtWebKit configuration
+ <https://bugs.webkit.org/show_bug.cgi?id=26015>
+
+ * JavaScriptCore.pri: Use ThreadingNone.cpp instead of
+ ThreadingQt.cpp and make sure ENABLE_JSC_MULTIPLE_THREADS is turned off
+ when ENABLE_SINGLE_THREADED is tuned on
+ * wtf/ThreadingNone.cpp:
+ (WTF::ThreadCondition::wait): Fix compilation warning.
+ (WTF::ThreadCondition::timedWait): Ditto.
+
+2009-06-02 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ Remove workaround that was added to address <rdar://problem/5488678> as it no longer affects our Tiger builds.
+
+ * Configurations/Base.xcconfig:
+
+2009-06-02 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Sam Weinig.
+
+ Use C-style comments in Platform.h so it can be included from C
+ files.
+
+ * wtf/Platform.h:
+
+2009-06-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Rubber-stamped by Simon Hausmann.
+
+ Use File::Spec->tmpdir instead of hardcoded paths for tempfile() dir
+
+ This fixes the Windows-build if the user does not have a /tmp directory.
+
+ * pcre/dftables:
+
+2009-06-02 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver ">>" Hunt.
+
+ emitSlow_op_rshift is linking the wrong number of slow cases, if !supportsFloatingPoint().
+ Fixerate, and refactor/comment the code a little to make it clearer what is going on.
+
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_rshift):
+ (JSC::JIT::emitSlow_op_rshift):
+
+2009-06-01 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by NOBODY - speculative windows build fix (errm, for the other patch!).
+
+ * jit/JITStubs.cpp:
+ (JSC::):
+
+2009-06-01 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by NOBODY - speculative windows build fix.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::::CodeLocationCall::CodeLocationCall):
+ (JSC::::CodeLocationNearCall::CodeLocationNearCall):
+
+2009-06-01 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Olliej Hunt.
+
+ Change JITStub functions from being static members on the JITStub class to be
+ global extern "C" functions, and switch their the function signature declaration
+ in the definition of the functions to be C-macro generated. This makes it easier
+ to work with the stub functions from assembler code (since the names no longer
+ require mangling), and by delaring the functions with a macro we can look at
+ also auto-generating asm thunks to wrap the JITStub functions to perform the
+ work currently in 'restoreArgumentReference' (as a memory saving).
+
+ Making this change also forces us to be a bit more realistic about what is private
+ on the Register and CallFrame objects. Presently most everything on these classes
+ is private, and the classes have plenty of friends. We could befriend all the
+ global functions to perpetuate the delusion of encapsulation, but using friends is
+ a bit of a sledgehammer solution here - since friends can poke around with all of
+ the class's privates, and since all the major classes taht operate on Regsiters are
+ currently friends, right there is currently in practice very little protection at
+ all. Better to start removing friend delclarations, and exposing just the parts
+ that need to be exposed.
+
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::returnPC):
+ (JSC::ExecState::setCallerFrame):
+ (JSC::ExecState::returnValueRegister):
+ (JSC::ExecState::setArgumentCount):
+ (JSC::ExecState::setCallee):
+ (JSC::ExecState::setCodeBlock):
+ * interpreter/Interpreter.h:
+ * interpreter/Register.h:
+ (JSC::Register::Register):
+ (JSC::Register::i):
+ * jit/JITStubs.cpp:
+ (JSC::):
+ (JSC::JITThunks::JITThunks):
+ (JSC::JITThunks::tryCachePutByID):
+ (JSC::JITThunks::tryCacheGetByID):
+ (JSC::JITStubs::DEFINE_STUB_FUNCTION):
+ * jit/JITStubs.h:
+ (JSC::JITStubs::):
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::nativeFunction):
+ (JSC::JSFunction::classInfo):
+ * runtime/JSGlobalData.h:
+
+2009-06-01 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Tidy up the literal parser.
+
+ Make the number lexing in the LiteralParser exactly match the JSON spec, which
+ makes us cover more cases, but also more strict. Also made string lexing only
+ allow double-quoted strings.
+
+ * runtime/LiteralParser.cpp:
+ (JSC::LiteralParser::Lexer::lex):
+ (JSC::LiteralParser::Lexer::lexString):
+ (JSC::LiteralParser::Lexer::lexNumber):
+
+2009-06-01 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Sam "WX" Weinig.
+
+ Allow the JIT to operate without relying on use of RWX memory, on platforms where this is supported.
+
+ This patch adds a switch to Platform.h (ENABLE_ASSEMBLER_WX_EXCLUSIVE) which enables this mode of operation.
+ When this flag is set, all executable memory will be allocated RX, and switched to RW only whilst being
+ modified. Upon completion of code generation the protection is switched back to RX to allow execution.
+
+ Further optimization will be required before it is desirable to enable this mode of operation by default;
+ enabling this presently incurs a 5%-10% regression.
+
+ (Submitting disabled - no performance impact).
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::CodeLocationInstruction::repatchLoadToLEA):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::fromFunctionPointer):
+ (JSC::AbstractMacroAssembler::CodeLocationJump::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationNearCall::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToTrampoline):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkNearCallerToTrampoline):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkNearCallerToFunction):
+ (JSC::AbstractMacroAssembler::PatchBuffer::PatchBuffer):
+ (JSC::AbstractMacroAssembler::PatchBuffer::~PatchBuffer):
+ (JSC::AbstractMacroAssembler::PatchBuffer::link):
+ (JSC::AbstractMacroAssembler::PatchBuffer::patch):
+ (JSC::AbstractMacroAssembler::PatchBuffer::performFinalization):
+ (JSC::::CodeLocationCommon::nearCallAtOffset):
+ (JSC::::CodeLocationCall::CodeLocationCall):
+ (JSC::::CodeLocationNearCall::CodeLocationNearCall):
+ * assembler/AssemblerBuffer.h:
+ (JSC::AssemblerBuffer::executableCopy):
+ * assembler/X86Assembler.h:
+ (JSC::CAN_SIGN_EXTEND_U32_64):
+ (JSC::X86Assembler::linkJump):
+ (JSC::X86Assembler::linkCall):
+ (JSC::X86Assembler::patchPointer):
+ (JSC::X86Assembler::relinkJump):
+ (JSC::X86Assembler::relinkCall):
+ (JSC::X86Assembler::repatchInt32):
+ (JSC::X86Assembler::repatchPointer):
+ (JSC::X86Assembler::repatchLoadToLEA):
+ (JSC::X86Assembler::patchInt32):
+ (JSC::X86Assembler::patchRel32):
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::):
+ (JSC::ExecutableAllocator::makeWritable):
+ (JSC::ExecutableAllocator::makeExecutable):
+ * jit/ExecutableAllocatorFixedVMPool.cpp:
+ (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
+ * jit/ExecutableAllocatorPosix.cpp:
+ (JSC::ExecutablePool::systemAlloc):
+ (JSC::ExecutablePool::systemRelease):
+ (JSC::ExecutableAllocator::reprotectRegion):
+ * jit/ExecutableAllocatorWin.cpp:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::patchPutByIdReplace):
+ * wtf/Platform.h:
+
+2009-05-29 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
+
+ Reviewed by Darin Adler.
+
+ Inherits Interpreter class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/JSGlobalData.cpp.
+
+ * interpreter/Interpreter.h:
+
+2009-06-01 David Levin <levin@chromium.org>
+
+ Reviewed by NOBODY (windows build fix).
+
+ Add exports for windows (corresponding to the JavaScriptCore.exp modification
+ in the previous change).
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-06-01 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Alder and Maciej Stachowiak.
+
+ Bug 26057: StringImpl should share buffers with UString.
+ https://bugs.webkit.org/show_bug.cgi?id=26057
+
+ * JavaScriptCore.exp:
+ * runtime/UString.cpp:
+ (JSC::UString::Rep::create):
+ (JSC::UString::BaseString::sharedBuffer): Only do the sharing when
+ the buffer exceeds a certain size. The size was tuned by running
+ various dom benchmarks with numbers ranging from 20 to 800 and finding
+ a place that seemed to do the best overall.
+ * runtime/UString.h:
+
+2009-05-31 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Olliej "you just need to change NativeFunctionWrapper.h" Hunt.
+
+ Add ENABLE_JIT_OPTIMIZE_NATIVE_CALL switch to allow JIT to operate without native call optimizations.
+
+ * runtime/NativeFunctionWrapper.h:
+ * wtf/Platform.h:
+
+2009-05-30 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ <rdar://problem/6935193> REGRESSION (r42734): Celtic Kane JavaScript benchmark does not run:
+ "Maximum call stack size exceeded"
+
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncToString): Use the same recursion limit as the other recursion checks.
+ We need a limit of at least 100 to run the benchmark above.
+ (JSC::arrayProtoFuncToLocaleString): Ditto.
+ (JSC::arrayProtoFuncJoin): Ditto.
+
+2009-05-28 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Added new build flag --filters for Mac. More details in WebCore/ChangeLog.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2009-05-27 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ <rdar://problem/6928025> Stack overflow in JSC::stringProtoFuncReplace() running jsFunFuzz
+
+ We should always check for exceptions after creating a CachedCall, this wasn't being done in
+ the string replace logic.
+
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+
+2009-05-27 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed (make distcheck) build fix; adding missing headers.
+
+ * GNUmakefile.am:
+
+2009-05-27 Jessie Berlin <jberlin@apple.com>
+
+ Reviewed by Adam Roben
+
+ Fix the Windows build.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-27 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Gustavo Noronha.
+
+ When building on Windows, consider Windows specific files.
+
+ * GNUmakefile.am:
+
+2009-05-27 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Maciej Stachowiak.
+
+ When building with MinGW, don't use the __declspec(dl{import,export})
+ decorations and rely on the linker to use its nifty auto-import feature.
+ It is extremely hard to get the decorations right with MinGW in general
+ and impossible in WebKit, where the resulting shared library is linking
+ together some static libraries.
+
+ * config.h:
+
+2009-05-26 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25613
+
+ Be able to use GOwnPtr for GHashTable as well. The assumption
+ is that the hash table has been created with g_hash_table_new_full
+ and has proper destruction functions.
+
+ * wtf/GOwnPtr.cpp:
+ (WTF::GHashTable):
+ * wtf/GOwnPtr.h:
+
+2009-05-26 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ <rdar://problem/6924033> REGRESSION: Assertion failure due to forward references
+
+ Add a pattern type for forward references to ensure that we don't confuse the
+ quantifier alternatives assertion.
+
+ * yarr/RegexCompiler.cpp:
+ (JSC::Yarr::RegexPatternConstructor::atomBackReference):
+ (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets):
+ * yarr/RegexInterpreter.cpp:
+ (JSC::Yarr::ByteCompiler::emitDisjunction):
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generateTerm):
+ * yarr/RegexPattern.h:
+ (JSC::Yarr::PatternTerm::):
+ (JSC::Yarr::PatternTerm::PatternTerm):
+ (JSC::Yarr::PatternTerm::ForwardReference):
+
+2009-05-26 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for: <rdar://problem/6918095> REGRESSION: jQuery load() issue (25981),
+ and also an ASSERT failure on http://ihasahotdog.com/.
+
+ When overwriting a property on a dictionary with a cached specific value,
+ clear the cache if new value being written is different.
+
+ * JavaScriptCore.exp:
+ Export the new symbols.
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_get_by_id_method_check_second):
+ Close dictionary prototypes upon caching a method access, as would happen when caching
+ a regular get_by_id.
+ * runtime/JSObject.h:
+ (JSC::JSObject::propertyStorage):
+ (JSC::JSObject::locationForOffset):
+ Make these methods private.
+ (JSC::JSObject::putDirectInternal):
+ When overwriting a property on a dictionary with a cached specific value,
+ clear the cache if new value being written is different.
+ * runtime/Structure.cpp:
+ (JSC::Structure::despecifyDictionaryFunction):
+ Reset the specific value field for a given property in a dictionary.
+ (JSC::Structure::despecifyFunctionTransition):
+ Rename of 'changeFunctionTransition' (this was already internally refered to as a despecification).
+ * runtime/Structure.h:
+ Declare new method.
+
+2009-05-26 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver "pieces of eight" Hunt.
+
+ When reseting RegexPattern class, should fully reset the class, not just bits of it.
+ In particular, we delete the cached character classes (for wordchars, etc), but do
+ not reset the set of pointers to the cached classes. In the case of a repeated parse
+ due to an illegal back-reference we will continue to use the deleted character class.
+
+ * yarr/RegexPattern.h:
+ (JSC::Yarr::RegexPattern::reset):
+
+2009-05-26 Brent Fulgham <bfulgham@webkit.org>
+
+ Build fix to correct r44161.
+
+ * wtf/FastAllocBase.h:
+
+2009-05-26 Zoltan Horvath <horvath.zoltan.6@stud.u-szeged.hu>
+
+ Reviewed by Maciej Stachowiak.
+
+ Inherite HashTable from FastAllocBase, because it has been instantiated by
+ 'new' in JavaScriptCore/runtime/JSGlobalData.cpp.
+
+ * wtf/HashTable.h:
+ * wtf/FastAllocBase.h: Remove 'wtf' path from TypeTraits.h to allow use outside of wtf.
+
+2009-05-25 David Levin <levin@chromium.org>
+
+ Reviewed by Maciej Stachowiak and Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25126
+ Allow the buffer underlying UString to be shared.
+
+ In order to not grow the underlying size of any structure,
+ there is a union in the Rep string which holds
+ + m_sharedBuffer -- a pointer to the shared ref counted buffer
+ if the class is BaseString and the buffer is being shared OR
+ + m_baseString -- the BaseString if the class is only UString::Rep
+ but not a UString::BaseString
+
+ Ideally, m_sharedBuffer would be a RefPtr, but it cannot be because
+ it is in a union.
+
+ No change in sunspider perf.
+
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/UString.cpp:
+ (JSC::UString::Rep::share):
+ (JSC::UString::Rep::destroy):
+ (JSC::UString::BaseString::sharedBuffer):
+ (JSC::UString::BaseString::setSharedBuffer):
+ (JSC::UString::BaseString::slowIsBufferReadOnly):
+ (JSC::expandCapacity):
+ (JSC::UString::Rep::reserveCapacity):
+ (JSC::UString::expandPreCapacity):
+ (JSC::concatenate):
+ (JSC::UString::append):
+ * runtime/UString.h:
+ (JSC::UString::Rep::Rep):
+ (JSC::UString::Rep::):
+ (JSC::UString::BaseString::isShared):
+ (JSC::UString::BaseString::isBufferReadOnly):
+ (JSC::UString::Rep::baseString):
+ * wtf/CrossThreadRefCounted.h:
+ (WTF::CrossThreadRefCounted::isShared):
+ * wtf/OwnFastMallocPtr.h: Added.
+ (WTF::OwnFastMallocPtr::OwnFastMallocPtr):
+ (WTF::OwnFastMallocPtr::~OwnFastMallocPtr):
+ (WTF::OwnFastMallocPtr::get):
+ (WTF::OwnFastMallocPtr::release):
+
+2009-05-25 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Re-add interpreter logic to jit-enabled builds as GCC mysteriously regresses without it
+
+ * wtf/Platform.h:
+
+2009-05-25 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Maciej Stachowiak.
+
+ The functions written in assembly need to have a leading
+ underscore on Windows too.
+
+ * jit/JITStubs.cpp:
+
+2009-05-24 Steve Falkenburg <sfalken@apple.com>
+
+ Build fix for experimental PGO Windows target.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+
+2009-05-23 David Kilzer <ddkilzer@apple.com>
+
+ Part 1 of 2: Bug 25495: Implement PassOwnPtr and replace uses of std::auto_ptr
+
+ <https://bugs.webkit.org/show_bug.cgi?id=25495>
+
+ Reviewed by Oliver Hunt.
+
+ * GNUmakefile.am: Added OwnPtrCommon.h and PassOwnPtr.h.
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
+
+ * wtf/OwnPtr.h:
+ (WTF::OwnPtr::OwnPtr): Added constructors that take a
+ PassOwnPtr. Also added a copy constructor declaration that's
+ required when assigning a PassOwnPtr to a stack-based OwnPtr.
+ (WTF::operator=): Added assignment operator methods that take a
+ PassOwnPtr.
+ (WTF::swap): Reformatted.
+ (WTF::operator==): Whitespace changes.
+ (WTF::operator!=): Ditto.
+
+ * wtf/OwnPtrCommon.h: Added.
+ (WTF::deleteOwnedPtr):
+
+ * wtf/PassOwnPtr.h: Added.
+ (WTF::PassOwnPtr::PassOwnPtr):
+ (WTF::PassOwnPtr::~PassOwnPtr):
+ (WTF::PassOwnPtr::get):
+ (WTF::PassOwnPtr::clear):
+ (WTF::PassOwnPtr::release):
+ (WTF::PassOwnPtr::operator*):
+ (WTF::PassOwnPtr::operator->):
+ (WTF::PassOwnPtr::operator!):
+ (WTF::PassOwnPtr::operator UnspecifiedBoolType):
+ (WTF::::operator):
+ (WTF::operator==):
+ (WTF::operator!=):
+ (WTF::static_pointer_cast):
+ (WTF::const_pointer_cast):
+ (WTF::getPtr):
+
+2009-05-23 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Remove interpreter specific logic from the JIT builds.
+
+ This saves ~100k in JSC release builds.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * interpreter/Interpreter.h:
+ * wtf/Platform.h:
+
+2009-05-22 Mark Rowe <mrowe@apple.com>
+
+ Part two of an attempted Windows build fix.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-22 Mark Rowe <mrowe@apple.com>
+
+ Part one of an attempted Windows build fix.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-21 Gavin Barraclough <barraclough@apple.com>
Reviewed by Geoff Garen.
- <rdar://problem/6516853> (r39682-r39736) JSFunFuzz: crash on "(function(){({ x2: x }), })()"
- <https://bugs.webkit.org/show_bug.cgi?id=23479>
+ op_method_check
+
+ Optimize method calls, by caching specific function values within the Structure.
+ The new opcode is used almost like an x86 opcode prefix byte to optimize op_get_by_id,
+ where the property access is being used to read a function to be passed to op-call (i.e.
+ 'foo.bar();'). This patch modifies the Structure class such that when a property is
+ put to an object for the first time we will check if the value is a function. If it is,
+ we will cache the function value on the Structure. A Structure in such a state guarantees
+ that not only does a property with the given identifier exist on the object, but also that
+ its value is unchanged. Upon any further attempt to put a property with the same identifier
+ (but a different value) to the object, it will transition back to a normal Structure (where
+ it will guarantee the presence but not the value of the property).
+
+ op_method_check makes use of the new information made available by the Structure, by
+ augmenting the functionality of op_get_by_id. Upon generating a FunctionCallDotNode a
+ check will be emitted prior to the property access reading the function value, and the JIT
+ will generate an extra (initially unlinked but patchable) set of checks prior to the regular
+ JIT code for get_by_id. The new code will do inline structure and prototype structure check
+ (unlike a regular get_by_id, which can only handle 'self' accesses inline), and then performs
+ an immediate load of the function value, rather than using memory accesses to load the value
+ from the obejct's property storage array. If the method check fails it will revert, or if
+ the access is polymorphic, the op_get_by_id will continue to operate - and optimize itself -
+ just as any other regular op_get_by_id would.
+
+ ~2.5% on v8-tests, due to a ~9% progression on richards.
- Automatic semicolon insertion was resulting in this being accepted in the initial
- nodeless parsing, but subsequent reparsing for code generation would fail, leading
- to a crash. The solution is to ensure that reparsing a function performs parsing
- in the same state as the initial parse. We do this by modifying the saved source
- ranges to include rather than exclude the opening and closing braces.
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::put):
+ (JSC::::staticFunctionGetter):
+ * API/JSObjectRef.cpp:
+ (JSObjectMakeConstructor):
+ * JavaScriptCore.exp:
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::differenceBetween):
+ * assembler/MacroAssemblerX86.h:
+ (JSC::MacroAssemblerX86::moveWithPatch):
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ * bytecode/CodeBlock.h:
+ (JSC::getMethodCallLinkInfoReturnLocation):
+ (JSC::CodeBlock::getMethodCallLinkInfo):
+ (JSC::CodeBlock::addMethodCallLinkInfos):
+ (JSC::CodeBlock::methodCallLinkInfo):
+ * bytecode/Opcode.h:
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitMethodCheck):
+ * bytecompiler/BytecodeGenerator.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ (JSC::JIT::privateCompile):
+ * jit/JIT.h:
+ (JSC::MethodCallCompilationInfo::MethodCallCompilationInfo):
+ * jit/JITOpcodes.cpp:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_method_check):
+ (JSC::JIT::emitSlow_op_method_check):
+ (JSC::JIT::emit_op_get_by_id):
+ (JSC::JIT::emitSlow_op_get_by_id):
+ (JSC::JIT::emit_op_put_by_id):
+ (JSC::JIT::emitSlow_op_put_by_id):
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compileGetByIdSlowCase):
+ (JSC::JIT::patchMethodCallProto):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_get_by_id_method_check):
+ (JSC::JITStubs::cti_op_get_by_id_method_check_second):
+ * jit/JITStubs.h:
+ * jsc.cpp:
+ (GlobalObject::GlobalObject):
+ * parser/Nodes.cpp:
+ (JSC::FunctionCallDotNode::emitBytecode):
+ * runtime/Arguments.cpp:
+ (JSC::Arguments::put):
+ * runtime/ArrayConstructor.cpp:
+ (JSC::ArrayConstructor::ArrayConstructor):
+ * runtime/BooleanConstructor.cpp:
+ (JSC::BooleanConstructor::BooleanConstructor):
+ * runtime/DateConstructor.cpp:
+ (JSC::DateConstructor::DateConstructor):
+ * runtime/ErrorConstructor.cpp:
+ (JSC::ErrorConstructor::ErrorConstructor):
+ (JSC::constructError):
+ * runtime/ErrorPrototype.cpp:
+ (JSC::ErrorPrototype::ErrorPrototype):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::FunctionConstructor::FunctionConstructor):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::FunctionPrototype::FunctionPrototype):
+ * runtime/InternalFunction.cpp:
+ (JSC::InternalFunction::InternalFunction):
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::put):
+ (JSC::JSActivation::putWithAttributes):
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::JSByteArray):
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::JSFunction):
+ (JSC::JSFunction::getOwnPropertySlot):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::putWithAttributes):
+ (JSC::JSGlobalObject::reset):
+ (JSC::JSGlobalObject::mark):
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
+ (JSC::JSGlobalObject::methodCallDummy):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::put):
+ (JSC::JSObject::putWithAttributes):
+ (JSC::JSObject::deleteProperty):
+ (JSC::JSObject::defineGetter):
+ (JSC::JSObject::defineSetter):
+ (JSC::JSObject::getPropertyAttributes):
+ (JSC::JSObject::getPropertySpecificFunction):
+ (JSC::JSObject::putDirectFunction):
+ (JSC::JSObject::putDirectFunctionWithoutTransition):
+ * runtime/JSObject.h:
+ (JSC::getJSFunction):
+ (JSC::JSObject::getDirectLocation):
+ (JSC::JSObject::putDirect):
+ (JSC::JSObject::putDirectWithoutTransition):
+ * runtime/LiteralParser.cpp:
+ (JSC::LiteralParser::parseObject):
+ * runtime/Lookup.cpp:
+ (JSC::setUpStaticFunctionSlot):
+ * runtime/Lookup.h:
+ (JSC::lookupPut):
+ * runtime/MathObject.cpp:
+ (JSC::MathObject::MathObject):
+ * runtime/NativeErrorConstructor.cpp:
+ (JSC::NativeErrorConstructor::NativeErrorConstructor):
+ (JSC::NativeErrorConstructor::construct):
+ * runtime/NativeErrorPrototype.cpp:
+ (JSC::NativeErrorPrototype::NativeErrorPrototype):
+ * runtime/NumberConstructor.cpp:
+ (JSC::NumberConstructor::NumberConstructor):
+ * runtime/ObjectConstructor.cpp:
+ (JSC::ObjectConstructor::ObjectConstructor):
+ * runtime/PropertyMapHashTable.h:
+ (JSC::PropertyMapEntry::PropertyMapEntry):
+ * runtime/PrototypeFunction.cpp:
+ (JSC::PrototypeFunction::PrototypeFunction):
+ * runtime/PutPropertySlot.h:
+ (JSC::PutPropertySlot::):
+ (JSC::PutPropertySlot::PutPropertySlot):
+ (JSC::PutPropertySlot::setNewProperty):
+ (JSC::PutPropertySlot::setDespecifyFunctionProperty):
+ (JSC::PutPropertySlot::isCacheable):
+ (JSC::PutPropertySlot::cachedOffset):
+ * runtime/RegExpConstructor.cpp:
+ (JSC::RegExpConstructor::RegExpConstructor):
+ * runtime/StringConstructor.cpp:
+ (JSC::StringConstructor::StringConstructor):
+ * runtime/StringPrototype.cpp:
+ (JSC::StringPrototype::StringPrototype):
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure):
+ (JSC::Structure::~Structure):
+ (JSC::Structure::materializePropertyMap):
+ (JSC::Structure::addPropertyTransitionToExistingStructure):
+ (JSC::Structure::addPropertyTransition):
+ (JSC::Structure::changeFunctionTransition):
+ (JSC::Structure::addPropertyWithoutTransition):
+ (JSC::Structure::get):
+ (JSC::Structure::despecifyFunction):
+ (JSC::Structure::put):
+ (JSC::Structure::remove):
+ * runtime/Structure.h:
+ (JSC::Structure::get):
+ (JSC::Structure::specificFunction):
+ * runtime/StructureTransitionTable.h:
+ (JSC::StructureTransitionTableHashTraits::emptyValue):
+ * wtf/Platform.h:
+
+2009-05-22 Brent Fulgham <bfulgham@webkit.org>
+ Reviewed by Steve Falkenburg.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25950
+ JavaScriptCore Fails to build on Windows (Cairo) due to CoreFoundation
+ link requirement.
+
+ Modify project to add new Debug_CFLite and Release_CFLite targets. These
+ use the new JavaScriptCoreCFLite.vsprops to link against CFLite.dll.
+ Existing projects are changed to use the new JavaScriptCoreCF.vsprops
+ to link against CoreFoundation.dll.
+
+ The JavaScriptCoreCommon.vsprops is modified to remove the link
+ against CoreFoundation.dll.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Added.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Added.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+
+2009-05-22 Dominik Röttsches <dominik.roettsches@access-company.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15914
+ [GTK] Implement Unicode functionality using GLib
+
+ Original patch by Jürg Billeter and Naiem Shaik.
+ Implementing WTF Unicode functionality based on GLib.
+
+ * GNUmakefile.am:
+ * wtf/unicode/Unicode.h:
+ * wtf/unicode/glib: Added.
+ * wtf/unicode/glib/UnicodeGLib.cpp: Added.
+ (WTF::Unicode::foldCase):
+ (WTF::Unicode::toLower):
+ (WTF::Unicode::toUpper):
+ (WTF::Unicode::direction):
+ (WTF::Unicode::umemcasecmp):
+ * wtf/unicode/glib/UnicodeGLib.h: Added.
+ (WTF::Unicode::):
+ (WTF::Unicode::toLower):
+ (WTF::Unicode::toUpper):
+ (WTF::Unicode::toTitleCase):
+ (WTF::Unicode::isArabicChar):
+ (WTF::Unicode::isFormatChar):
+ (WTF::Unicode::isSeparatorSpace):
+ (WTF::Unicode::isPrintableChar):
+ (WTF::Unicode::isDigit):
+ (WTF::Unicode::isPunct):
+ (WTF::Unicode::mirroredChar):
+ (WTF::Unicode::category):
+ (WTF::Unicode::isLower):
+ (WTF::Unicode::digitValue):
+ (WTF::Unicode::combiningClass):
+ (WTF::Unicode::decompositionType):
+ * wtf/unicode/glib/UnicodeMacrosFromICU.h: Added.
+
+2009-05-21 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed build fix.
+
+ Add MacroAssemblerCodeRef.h to file list.
+
+ * GNUmakefile.am:
+
+2009-05-21 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Darin Adler.
+ Addition of MacroAssemblerCodeRef.h rubber stamped by Geoff Garen.
+
+ Refactor JIT code-handle objects. The representation of generated code is currently
+ a bit of a mess. We have a class JITCode which wraps the pointer to a block of
+ generated code, but this object does not reference the executable pool meaning that
+ external events (the pool being derefed) could make the pointer become invalid.
+ To overcome this both the JIT and Yarr implement further (and similar) objects to
+ wrap the code pointer with a RefPtr to the pool. To add to the mire, as well as the
+ CodeBlock containing a handle onto the code the FunctionBodyNode also contains a
+ copy of the code pointer which is used almost (but not entirely) uniquely to access
+ the JIT code for a function.
+
+ Rationalization of all this:
+
+ * Add a new type 'MacroAssembler::CodeRef' as a handle for a block of JIT generated code.
+ * Change the JIT & Yarr to internally handle code using CodeRefs.
+ * Move the CodeRef (formerly anow defunct JITCodeRef) from CodeBlock to its owner node.
+ * Remove the (now) redundant code pointer from FunctionBodyNode.
+
+ While tidying this up I've made the PatchBuffer return code in new allocations using a CodeRef,
+ and have enforced an interface that the PatchBuffer will always be used, and 'finalizeCode()' or
+ 'finalizeCodeAddendum()' will always be called exactly once on the PatchBuffer to complete code generation.
+
+ This gives us a potentially useful hook ('PatchBuffer::performFinalization()') at the end of generation,
+ which may have a number of uses. It may be helpful should we wish to switch our generation
+ model to allow RW/RX exclusive memory, and it may be useful on non-cache-coherent platforms to
+ give us an oportunity to cache flush as necessary.
+
+ No performance impact.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToTrampoline):
+ (JSC::AbstractMacroAssembler::CodeRef::CodeRef):
+ (JSC::AbstractMacroAssembler::CodeRef::trampolineAt):
+ (JSC::AbstractMacroAssembler::PatchBuffer::PatchBuffer):
+ (JSC::AbstractMacroAssembler::PatchBuffer::~PatchBuffer):
+ (JSC::AbstractMacroAssembler::PatchBuffer::link):
+ (JSC::AbstractMacroAssembler::PatchBuffer::linkTailRecursive):
+ (JSC::AbstractMacroAssembler::PatchBuffer::patch):
+ (JSC::AbstractMacroAssembler::PatchBuffer::complete):
+ (JSC::AbstractMacroAssembler::PatchBuffer::finalize):
+ (JSC::AbstractMacroAssembler::PatchBuffer::entry):
* bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): add an assertion for successful recompile
- * parser/Lexer.h:
- (JSC::Lexer::sourceCode): include rather than exclude braces.
+ (JSC::CodeBlock::CodeBlock):
+ (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
+ (JSC::CodeBlock::setJITCode):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::getBytecodeIndex):
+ (JSC::CodeBlock::executablePool):
+ * interpreter/CallFrameClosure.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+ (JSC::Interpreter::prepareForRepeatCall):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ (JSC::JIT::linkCall):
+ * jit/JIT.h:
+ * jit/JITCode.h:
+ (JSC::JITCode::JITCode):
+ (JSC::JITCode::operator bool):
+ (JSC::JITCode::addressForCall):
+ (JSC::JITCode::offsetOf):
+ (JSC::JITCode::execute):
+ (JSC::JITCode::size):
+ (JSC::JITCode::executablePool):
+ (JSC::JITCode::HostFunction):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdSelfList):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_vm_dontLazyLinkCall):
+ (JSC::JITStubs::cti_vm_lazyLinkCall):
+ * parser/Nodes.cpp:
+ (JSC::ProgramNode::generateJITCode):
+ (JSC::EvalNode::generateJITCode):
+ (JSC::FunctionBodyNode::FunctionBodyNode):
+ (JSC::FunctionBodyNode::createNativeThunk):
+ (JSC::FunctionBodyNode::generateJITCode):
* parser/Nodes.h:
- (JSC::FunctionBodyNode::toSourceString): No need to append braces anymore.
+ (JSC::ScopeNode::generatedJITCode):
+ (JSC::ScopeNode::getExecutablePool):
+ (JSC::ScopeNode::setJITCode):
+ (JSC::ProgramNode::jitCode):
+ (JSC::EvalNode::jitCode):
+ (JSC::FunctionBodyNode::jitCode):
+ * runtime/RegExp.cpp:
+ (JSC::RegExp::match):
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::compile):
+ (JSC::Yarr::jitCompileRegex):
+ (JSC::Yarr::executeRegex):
+ * yarr/RegexJIT.h:
+ (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
+ (JSC::Yarr::RegexCodeBlock::pcreFallback):
+ (JSC::Yarr::RegexCodeBlock::setFallback):
+ (JSC::Yarr::RegexCodeBlock::operator bool):
+ (JSC::Yarr::RegexCodeBlock::set):
+ (JSC::Yarr::RegexCodeBlock::execute):
+
+2009-05-21 Oliver Hunt <oliver@apple.com>
-2009-01-21 Alexey Proskuryakov <ap@webkit.org>
+ Reviewed by Maciej Stachowiak.
- Suggested by Oliver Hunt. Reviewed by Oliver Hunt.
+ <rdar://problem/6910264> REGRESSION: Cached DOM global object property access fails in browser (25921)
+ <https://bugs.webkit.org/show_bug.cgi?id=25921>
- https://bugs.webkit.org/show_bug.cgi?id=23456
- Function argument names leak
+ When caching properties on the global object we need to ensure that we're
+ not attempting to cache through a shell object.
- * parser/Nodes.cpp: (JSC::FunctionBodyNode::~FunctionBodyNode): Destruct parameter names.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::resolveGlobal):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_resolve_global):
-2009-01-22 Beth Dakin <bdakin@apple.com>
+2009-05-21 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix.
+
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
+
+2009-05-21 Cameron Zwarich <zwarich@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Bug 25945: Add support for MADV_FREE to TCMalloc
+ <https://bugs.webkit.org/show_bug.cgi?id=25945>
+ <rdar://problem/6910754>
+
+ Add support for MADV_FREE to TCMalloc_SystemRelease for platforms that
+ don't also support MADV_FREE_REUSE. The code is identical to the MADV_DONTNEED
+ case except for the advice passed to madvise(), so combining the two cases
+ makes the most sense.
+
+ * wtf/Platform.h: Only define HAVE_MADV_FREE when not building on Tiger or
+ Leopard, because while it is defined on these platforms it actually does
+ nothing.
+ * wtf/TCSystemAlloc.cpp:
+ (TCMalloc_SystemRelease): use MADV_FREE if it is available; otherwise use
+ MADV_DONTNEED.
+
+2009-05-21 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix <https://bugs.webkit.org/show_bug.cgi?id=25917> / <rdar://problem/6910066>.
+ Bug 25917: REGRESSION (r43559?): Javascript debugger crashes when pausing page
+
+ The debugger currently retrieves the arguments object from an activation rather than pulling
+ it from a call frame. This is unreliable to due to the recent optimization to lazily create
+ the arguments object. In the long-term it should stop doing that (<rdar://problem/6911886>),
+ but for now we force eager creation of the arguments object when debugging.
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+
+2009-05-21 Cameron Zwarich <zwarich@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Bug 25912: Harden NumberPrototype.cpp by removing use of strcpy()
+ <https://bugs.webkit.org/show_bug.cgi?id=25912>
+
+ This causes no change on SunSpider.
+
+ * runtime/NumberPrototype.cpp:
+ (JSC::integerPartNoExp): replace strcpy() with memcpy(), ASSERT that the
+ temporary buffer has sufficient space to store the result, and move the
+ explicit null-termination closer to the memcpy() for easier visual inspection
+ of the code.
+ (JSC::fractionalPartToString): replace strcpy() with memcpy(), and ASSERT
+ that the temporary buffer has sufficient space to store the result. There
+ is no explicit null-termination because this is done by the caller. The
+ same is already true for exponentialPartToString().
+ (JSC::numberProtoFuncToExponential): replace strcpy() with memcpy(), explicitly
+ null-terminate the result, and ASSERT that the temporary buffer has sufficient
+ space to store the result.
+
+2009-05-20 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Cameron Zwarich.
+
+ Cleanup the JSGlobalData when exiting early with the usage statement in jsc.
+
+ * jsc.cpp:
+ (printUsageStatement):
+ (parseArguments):
+ (jscmain):
+
+2009-05-20 Stephanie Lewis <slewis@apple.com>
+
+ Update the order files. <rdar://problem/6881750> Generate new order files.
+
+ * JavaScriptCore.order:
+
+2009-05-19 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Simon Hausmann.
+
+ Replace WREC with YARR + YARR_JIT for the Qt port. This is only
+ used when compiled with JIT support for now, so it is a drop-in
+ replacement for the WREC usage. Still including the wrec headers
+ as they are being referred from RegExp.h, though the contents of
+ that header it protected by "#if ENABLE(WREC)".
+
+ * JavaScriptCore.pri:
+
+2009-05-20 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Eric Seidel.
+
+ Fix GTK debug build.
+
+ The function dumpDisjunction, compiled with debug enabled, uses
+ printf, which needs stdio.h to be included.
+
+ * yarr/RegexInterpreter.cpp:
+
+2009-05-20 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by George Staikos.
+
+ BUG 25843: [Qt] Remove qt-port build flag
+ <https://bugs.webkit.org/show_bug.cgi?id=25843>
+
+ * JavaScriptCore.pro:
+
+
+2009-05-19 Geoffrey Garen <ggaren@apple.com>
+
+ Windows build fix.
+
+ * interpreter/RegisterFile.cpp:
+ (JSC::RegisterFile::releaseExcessCapacity): Copy-paste typo.
+
+2009-05-19 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
+
+ Fixed <rdar://problem/6885680> CrashTracer: [USER] 1 crash in Install
+ Mac OS X at <unknown binary> • 0x9274241c
+
+ (Original patch by Joe Sokol and Ronnie Misra.)
+
+ SunSpider says 1.004x faster.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=23461 LayoutTests/
- fast/js/numeric-conversion.html is broken, and corresponding
- <rdar://problem/6514842>
+ * interpreter/RegisterFile.cpp:
+ (JSC::RegisterFile::releaseExcessCapacity): Instead of doing complicated
+ math that sometimes used to overflow, just release the full range of the
+ register file.
- The basic problem here is that parseInt(Infinity) should be NaN,
- but we were returning 0. NaN matches Safari 3.2.1 and Firefox.
+ * interpreter/RegisterFile.h:
+ (JSC::isPageAligned):
+ (JSC::RegisterFile::RegisterFile): Added ASSERTs to verify that it's
+ safe to release the full range of the register file.
+
+ (JSC::RegisterFile::shrink): No need to releaseExcessCapacity() if the
+ new end is not smaller than the old end. (Also, doing so used to cause
+ numeric overflow, unmapping basically the whole process from memory.)
+
+2009-05-19 Oliver Hunt <oliver@apple.com>
+
+ RS=Mark Rowe.
+
+ <rdar://problem/6888393> REGRESSION: Start Debugging JavaScript crashes browser (nightly builds only?)
+ <https://bugs.webkit.org/show_bug.cgi?id=25717>
+
+ Remove JSC_FAST_CALL as it wasn't gaining us anything, and was
+ resulting in weird bugs in the nightly builds.
+
+ * parser/Nodes.cpp:
+ * parser/Nodes.h:
+ (JSC::ExpressionNode::isNumber):
+ (JSC::ExpressionNode::isString):
+ (JSC::ExpressionNode::isNull):
+ (JSC::ExpressionNode::isPure):
+ (JSC::ExpressionNode::isLocation):
+ (JSC::ExpressionNode::isResolveNode):
+ (JSC::ExpressionNode::isBracketAccessorNode):
+ (JSC::ExpressionNode::isDotAccessorNode):
+ (JSC::ExpressionNode::isFuncExprNode):
+ (JSC::ExpressionNode::isSimpleArray):
+ (JSC::ExpressionNode::isAdd):
+ (JSC::ExpressionNode::resultDescriptor):
+ (JSC::StatementNode::firstLine):
+ (JSC::StatementNode::lastLine):
+ (JSC::StatementNode::isEmptyStatement):
+ (JSC::StatementNode::isReturnNode):
+ (JSC::StatementNode::isExprStatement):
+ (JSC::StatementNode::isBlock):
+ (JSC::NullNode::isNull):
+ (JSC::BooleanNode::isPure):
+ (JSC::NumberNode::value):
+ (JSC::NumberNode::setValue):
+ (JSC::NumberNode::isNumber):
+ (JSC::NumberNode::isPure):
+ (JSC::StringNode::isPure):
+ (JSC::StringNode::isString):
+ (JSC::ResolveNode::identifier):
+ (JSC::ResolveNode::isLocation):
+ (JSC::ResolveNode::isResolveNode):
+ (JSC::BracketAccessorNode::isLocation):
+ (JSC::BracketAccessorNode::isBracketAccessorNode):
+ (JSC::DotAccessorNode::base):
+ (JSC::DotAccessorNode::identifier):
+ (JSC::DotAccessorNode::isLocation):
+ (JSC::DotAccessorNode::isDotAccessorNode):
+ (JSC::TypeOfResolveNode::identifier):
+ (JSC::AddNode::isAdd):
+ (JSC::BlockNode::isBlock):
+ (JSC::EmptyStatementNode::isEmptyStatement):
+ (JSC::ExprStatementNode::isExprStatement):
+ (JSC::ReturnNode::isReturnNode):
+ (JSC::ScopeNode::sourceURL):
+ (JSC::ProgramNode::bytecode):
+ (JSC::EvalNode::bytecode):
+ (JSC::FunctionBodyNode::parameters):
+ (JSC::FunctionBodyNode::toSourceString):
+ (JSC::FunctionBodyNode::bytecode):
+ (JSC::FuncExprNode::isFuncExprNode):
+
+2009-05-19 Maciej Stachowiak <mjs@apple.com>
+ Reviewed by Gavin Barraclough.
+
+ - speed up string comparison, especially for short strings
+
+ ~1% on SunSpider
+
+ * JavaScriptCore.exp:
+ * runtime/UString.cpp:
+ * runtime/UString.h:
+ (JSC::operator==): Inline UString's operator==, since it is called from
+ hot places in the runtime. Also, specialize 2-char strings in a similar way to
+ 1-char, since we're taking the hit of a switch anyway.
+
+2009-05-18 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ - for polymorphic prototype lookups, increase the number of slots from 4 to 8
+
+ ~4% faster on v8 raytrace benchmark
+
+ * bytecode/Instruction.h:
+
+2009-05-18 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ - tighten up the code for the load_varargs stub
+
+ ~1-2% on v8-raytrace
+
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_load_varargs): Hoist some loop invariants that
+ the compiler didn't feel like hoisting for us. Remove unneeded exception check.
+
+2009-05-18 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ - Improve code generation for access to prototype properties
+
+ ~0.4% speedup on SunSpider.
+
+ Based on a suggestion from Geoff Garen.
+
+ * jit/JIT.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compileGetDirectOffset):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+
+2009-05-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Gavin Barraclough.
+
+ Enable YARR, and disable WREC for GTK+.
+
+ * GNUmakefile.am:
+ * yarr/RegexParser.h:
+
+2009-05-18 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Add -no-install and -no-fast-install to programs and tests that we
+ don't install. Also remove -O2 since this is already handled at
+ configure time.
+
+ * GNUmakefile.am:
+
+2009-05-17 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Add JavaScriptCore/ to JSC include path only since it's not
+ required when building WebCore.
+
+ * GNUmakefile.am:
+
+2009-05-17 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix
+
+ * JavaScriptCore.vcproj/JavaScriptCore.make:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+
+2009-05-15 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Looking like MSVC doesn't like static variables in inline methods?
+ Make the state of the SSE2 check a static variable on the class
+ MacroAssemblerX86Common as a speculative build fix for Windows.
+
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
+ (JSC::MacroAssemblerX86Common::branchDouble):
+ (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32):
+ (JSC::MacroAssemblerX86Common::isSSE2Present):
+ (JSC::MacroAssemblerX86Common::):
+ * jit/JIT.cpp:
+
+2009-05-15 Adam Roben <aroben@apple.com>
+
+ Add some assembler headers to JavaScriptCore.vcproj
+
+ This is just a convenience for Windows developers.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+
+2009-05-15 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Add FP support to the MacroAssembler, port JITArithmetic over to make use of this. Also add
+ API to determine whether FP support is available 'MacroAssembler::supportsFloatingPoint()',
+ FP is presently only supported on SSE2 platforms, not x87. On platforms where a suitable
+ hardware FPU is not available 'supportsFloatingPoint()' may simply return false, and all
+ other methods ASSERT_NOT_REACHED().
+
+ * assembler/AbstractMacroAssembler.h:
+ * assembler/MacroAssemblerX86.h:
+ (JSC::MacroAssemblerX86::MacroAssemblerX86):
+ (JSC::MacroAssemblerX86::branch32):
+ (JSC::MacroAssemblerX86::branchPtrWithPatch):
+ (JSC::MacroAssemblerX86::supportsFloatingPoint):
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::):
+ (JSC::MacroAssemblerX86Common::loadDouble):
+ (JSC::MacroAssemblerX86Common::storeDouble):
+ (JSC::MacroAssemblerX86Common::addDouble):
+ (JSC::MacroAssemblerX86Common::subDouble):
+ (JSC::MacroAssemblerX86Common::mulDouble):
+ (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
+ (JSC::MacroAssemblerX86Common::branchDouble):
+ (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32):
+ (JSC::MacroAssemblerX86Common::branch32):
+ (JSC::MacroAssemblerX86Common::branch16):
+ (JSC::MacroAssemblerX86Common::branchTest32):
+ (JSC::MacroAssemblerX86Common::branchAdd32):
+ (JSC::MacroAssemblerX86Common::branchMul32):
+ (JSC::MacroAssemblerX86Common::branchSub32):
+ (JSC::MacroAssemblerX86Common::set32):
+ (JSC::MacroAssemblerX86Common::setTest32):
+ (JSC::MacroAssemblerX86Common::x86Condition):
+ (JSC::MacroAssemblerX86Common::isSSE2Present):
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::movePtrToDouble):
+ (JSC::MacroAssemblerX86_64::moveDoubleToPtr):
+ (JSC::MacroAssemblerX86_64::setPtr):
+ (JSC::MacroAssemblerX86_64::branchPtr):
+ (JSC::MacroAssemblerX86_64::branchTestPtr):
+ (JSC::MacroAssemblerX86_64::branchAddPtr):
+ (JSC::MacroAssemblerX86_64::branchSubPtr):
+ (JSC::MacroAssemblerX86_64::supportsFloatingPoint):
+ * assembler/X86Assembler.h:
+ * jit/JIT.cpp:
+ (JSC::JIT::JIT):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_rshift):
+ (JSC::JIT::emitSlow_op_rshift):
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emitSlow_op_jnlesseq):
+ (JSC::JIT::compileBinaryArithOp):
+ (JSC::JIT::compileBinaryArithOpSlowCase):
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emitSlow_op_add):
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emitSlow_op_mul):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompilePutByIdTransition):
+
+2009-05-15 Francisco Tolmasky <francisco@280north.com>
+
+ BUG 25467: JavaScript debugger should use function.displayName as the function's name in the call stack
+ <https://bugs.webkit.org/show_bug.cgi?id=25467>
+
+ Reviewed by Adam Roben.
+
+ * JavaScriptCore.exp: Added calculatedFunctionName
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Added calculatedFunctionName
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added calculatedFunctionName
+ * debugger/DebuggerCallFrame.cpp: Added calculatedFunctionName to match existing one in ProfileNode.
+ (JSC::DebuggerCallFrame::calculatedFunctionName):
+ * debugger/DebuggerCallFrame.h: Added calculatedFunctionName to match existing one in ProfileNode.
+
+2009-05-14 Gavin Barraclough <barraclough@apple.com>
+
+ Build fix, not reviewed.
+
+ Quick fixes for JIT builds with OPTIMIZE flags disabled.
+
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compilePutByIdHotPath):
+
+2009-05-14 Steve Falkenburg <sfalken@apple.com>
+
+ Back out incorrect Windows build fix
+
+ * JavaScriptCore.vcproj/JavaScriptCore.make:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+
+2009-05-14 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix
+
+ * JavaScriptCore.vcproj/JavaScriptCore.make:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+
+2009-05-14 Adam Roben <aroben@apple.com>
+
+ Windows jsc build fix
+
+ r43648 modified jsc.vcproj's post-build event not to try to copy files
+ that aren't present. Then r43661 mistakenly un-did that modification.
+ This patch restores the modification from r43648, but puts the code in
+ jscCommon.vsprops (where it should have been added in r43648).
+
+ * JavaScriptCore.vcproj/jsc/jsc.vcproj: Restored empty
+ VCPostBuildEventTool tags.
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Modified the post-build
+ event command line to match the one in jsc.vcproj from r43648.
+
+2009-05-14 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25325
+
+ Make sure pthread_self() is declared before it gets called in Collector.cpp
+
+ * runtime/Collector.cpp: Include pthread.h in most Unix-like platforms
+ (not just for OPENBSD)
+
+2009-05-14 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix <https://bugs.webkit.org/show_bug.cgi?id=25785>.
+ Bug 25785: Segfault in mark when using JSObjectMakeConstructor
+
+ * API/JSObjectRef.cpp:
+ (JSObjectMakeConstructor): OpaqueJSClass::prototype can return 0. We need to use the default object prototype when it does.
+ * API/tests/testapi.c:
+ (main): Add a test case.
+ * runtime/JSObject.h:
+ (JSC::JSObject::putDirect): Add a clearer assertion for a null value. The assertion on the next line does catch this,
+ but the cause of the failure is not clear from the assertion itself.
+
+2009-05-14 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Darin Adler.
+
+ <rdar://problem/6681868> When building with Xcode 3.1.3 should be using gcc 4.2
+
+ The meaning of XCODE_VERSION_ACTUAL is more sensible in newer versions of Xcode.
+ Update our logic to select the compiler version to use the more appropriate XCODE_VERSION_MINOR
+ if the version of Xcode supports it, and fall back to XCODE_VERSION_ACTUAL if not.
+
+ * Configurations/Base.xcconfig:
+
+2009-05-14 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Checking register file bounds should be a ptr comparison (m_end is a Register*).
+ Also, the compare should be unsigned, pointers don'ts go negative.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompile):
+
+2009-05-13 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix <rdar://problem/6882919> REGRESSION: page at Metroauto site crashes in cti_op_loop_if_less (25730)
+
+ op_loop_if_less (imm < op) was loading op into regT1, but in the slow path spills regT0.
+ This leads to bad happen.
+
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_less):
+ (JSC::JIT::emitSlow_op_loop_if_less):
+
+2009-05-13 Dmitry Titov <dimich@chromium.org>
+
+ Rubber-stamped by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25746
+ Revert http://trac.webkit.org/changeset/43507 which caused crash in PPC nightlies with Safari 4.
+
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ * bytecode/SamplingTool.cpp:
+ (JSC::SamplingThread::start):
+ (JSC::SamplingThread::stop):
+ * bytecode/SamplingTool.h:
+ * wtf/CrossThreadRefCounted.h:
+ (WTF::CrossThreadRefCounted::CrossThreadRefCounted):
+ (WTF::::ref):
+ (WTF::::deref):
+ * wtf/Threading.h:
+ * wtf/ThreadingNone.cpp:
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::threadMapMutex):
+ (WTF::initializeThreading):
+ (WTF::threadMap):
+ (WTF::identifierByPthreadHandle):
+ (WTF::establishIdentifierForPthreadHandle):
+ (WTF::pthreadHandleForIdentifier):
+ (WTF::clearPthreadHandleForIdentifier):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::detachThread):
+ (WTF::currentThread):
+ * wtf/ThreadingWin.cpp:
+ (WTF::threadMapMutex):
+ (WTF::initializeThreading):
+ (WTF::threadMap):
+ (WTF::storeThreadHandleByIdentifier):
+ (WTF::threadHandleForIdentifier):
+ (WTF::clearThreadHandleForIdentifier):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::detachThread):
+ (WTF::currentThread):
+ * wtf/gtk/ThreadingGtk.cpp:
+ (WTF::threadMapMutex):
+ (WTF::initializeThreading):
+ (WTF::threadMap):
+ (WTF::identifierByGthreadHandle):
+ (WTF::establishIdentifierForThread):
+ (WTF::threadForIdentifier):
+ (WTF::clearThreadForIdentifier):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::currentThread):
+ * wtf/qt/ThreadingQt.cpp:
+ (WTF::threadMapMutex):
+ (WTF::threadMap):
+ (WTF::identifierByQthreadHandle):
+ (WTF::establishIdentifierForThread):
+ (WTF::clearThreadForIdentifier):
+ (WTF::threadForIdentifier):
+ (WTF::initializeThreading):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::currentThread):
+
+2009-05-13 Darin Adler <darin@apple.com>
+
+ Revert the parser arena change. It was a slowdown, not a speedup.
+ Better luck next time (I'll break it up into pieces).
+
+2009-05-13 Darin Adler <darin@apple.com>
+
+ Tiger build fix.
+
+ * parser/Grammar.y: Add back empty code blocks, needed by older
+ versions of bison on certain rules.
+
+2009-05-13 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix.
+
+ * JavaScriptCore.vcproj/jsc/jsc.vcproj:
+
+2009-05-13 Adam Roben <aroben@apple.com>
+
+ Windows build fixes after r43642
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ Updated.
+
+ * debugger/Debugger.cpp:
+ * runtime/ArrayConstructor.cpp:
+ * runtime/JSArray.cpp:
+ * runtime/RegExp.cpp:
+ * runtime/RegExpConstructor.cpp:
+ * runtime/RegExpPrototype.cpp:
+ * runtime/StringPrototype.cpp:
+ Added missing #includes.
+
+2009-05-13 Darin Adler <darin@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Bug 25674: syntax tree nodes should use arena allocation
+ https://bugs.webkit.org/show_bug.cgi?id=25674
+
+ Step 3: Add some actual arena allocation. About 1% SunSpider speedup.
+
+ * JavaScriptCore.exp: Updated.
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack
+ contains const Identifier* now.
+ (JSC::BytecodeGenerator::emitPushNewScope): Updated to take a const
+ Identifier&.
+ * bytecompiler/BytecodeGenerator.h: Ditto
+
+ * bytecompiler/SegmentedVector.h: Added isEmpty.
+
+ * debugger/Debugger.cpp:
+ (JSC::Debugger::recompileAllJSFunctions): Moved this function here from
+ WebCore so WebCore doesn't need the details of FunctionBodyNode.
+ * debugger/Debugger.h: Ditto.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute): Updated since VarStack contains const
+ Identifier* now.
+
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_vm_lazyLinkCall): Call isHostFunction on the body
+ rather than on the function object, since we can't easily have inlined
+ access to the FunctionBodyNode in JSFunction.h since WebCore needs
+ access to that header.
+ (JSC::JITStubs::cti_op_construct_JSConstruct): Ditto.
+ * profiler/Profiler.cpp:
+ (JSC::Profiler::createCallIdentifier): Ditto.
+
+ * parser/Grammar.y: Use JSGlobalData* to pass the global data pointer
+ around whenever possible instead of using void*. Changed
+ SET_EXCEPTION_LOCATION from a macro to an inline function. Marked
+ the structure-creating functions inline. Changed the VarStack to use
+ identifier pointers instead of actual identifiers. This takes
+ advantage of the fact that all identifier pointers come from the
+ arena and avoids reference count churn. Changed Identifier* to
+ const Identifier* to make sure we don't modify any by accident.
+ Used identifiers for regular expression strings too, using the new
+ scanRegExp that has out parameters instead of the old one that relied
+ on side effects in the Lexer. Move the creation of numeric identifiers
+ out of this file and into the PropertyNode constructor.
+
+ * parser/Lexer.cpp:
+ (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers.
+ (JSC::Lexer::makeIdentifier): Changed return type to const Identifier*
+ and changed to call ParserArena.
+ (JSC::Lexer::scanRegExp): Added out arguments that are const Identifier*
+ as well as a prefix character argument so we can handle the /= case
+ without a string append.
+ (JSC::Lexer::skipRegExp): Added. Skips a regular expression without
+ allocating Identifier objects.
+ (JSC::Lexer::clear): Removed the code to manage m_identifiers, m_pattern,
+ and m_flags, and added code to set m_arena to 0.
+ * parser/Lexer.h: Updated for changes above.
+
+ * parser/NodeConstructors.h:
+ (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable
+ on the arena.
+ (JSC::ParserArenaDeletable::operator new): Changed to call the
+ allocateDeletable function on the arena instead of deleteWithArena.
+ (JSC::RegExpNode::RegExpNode): Changed arguments to Identifier instead
+ of UString since these come from the parser which makes identifiers.
+ (JSC::PropertyNode::PropertyNode): Added new constructor that makes
+ numeric identifiers. Some day we might want to optimize this for
+ integers so it doesn't create a string for each one.
+ (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier
+ since it's now a const Identifier& so it can't be left uninitialized.
+ (JSC::BreakNode::BreakNode): Ditto.
+ (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements*
+ to keep track of the statements rather than a separate statement vector.
+ (JSC::BlockNode::BlockNode): Ditto.
+ (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier.
+
+ * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here.
+ It seemed strangely out of place in the header.
+ (JSC::ThrowableExpressionData::emitThrowError): Added an overload for
+ UString as well as Identifier.
+ (JSC::SourceElements::singleStatement): Added.
+ (JSC::SourceElements::lastStatement): Added.
+ (JSC::RegExpNode::emitBytecode): Updated since the pattern and flags
+ are now Identifier instead of UString. Also changed the throwError code
+ to use the substitution mechanism instead of doing a string append.
+ (JSC::SourceElements::emitBytecode): Added. Replaces the old
+ statementListEmitCode function, since we now keep the SourceElements
+ objects around.
+ (JSC::BlockNode::lastStatement): Added.
+ (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of
+ statementListEmitCode.
+ (JSC::CaseClauseNode::emitBytecode): Added.
+ (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode
+ instead of statementListEmitCode.
+ (JSC::ScopeNodeData::ScopeNodeData): Changed to store the
+ SourceElements* instead of using releaseContentsIntoVector.
+ (JSC::ScopeNode::emitStatementsBytecode): Added.
+ (JSC::ScopeNode::singleStatement): Added.
+ (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead
+ of statementListEmitCode.
+ (JSC::EvalNode::emitBytecode): Ditto.
+ (JSC::EvalNode::generateBytecode): Removed code to clear the children
+ vector. This optimization is no longer possible since everything is in
+ a single arena.
+ (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode
+ insetad of statementListEmitCode and check for the return node using
+ the new functions.
+
+ * parser/Nodes.h: Changed VarStack to store const Identifier* instead
+ of Identifier and rely on the arena to control lifetime. Added a new
+ ParserArenaFreeable class. Made ParserArenaDeletable inherit from
+ FastAllocBase instead of having its own operator new. Base the Node
+ class on ParserArenaFreeable. Changed the various Node classes
+ to use const Identifier& instead of Identifier to avoid the need to
+ call their destructors and allow them to function as "freeable" in the
+ arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions.
+ Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode,
+ CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable
+ as a base class since they do not descend from Node. Eliminated the
+ StatementVector type and instead have various classes use SourceElements*
+ instead of StatementVector. This prevents those classes from having th
+ use ParserArenaDeletable to make sure the vector destructor is called.
+
+ * parser/Parser.cpp:
+ (JSC::Parser::parse): Pass the arena to the lexer.
+
+ * parser/Parser.h: Added an include of ParserArena.h, which is no longer
+ included by Nodes.h.
+
+ * parser/ParserArena.cpp:
+ (JSC::ParserArena::ParserArena): Added. Initializes the new members,
+ m_freeableMemory, m_freeablePoolEnd, and m_identifiers.
+ (JSC::ParserArena::freeablePool): Added. Computes the pool pointer,
+ since we store only the current pointer and the end of pool pointer.
+ (JSC::ParserArena::deallocateObjects): Added. Contains the common
+ memory-deallocation logic used by both the destructor and the
+ reset function.
+ (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects.
+ (JSC::ParserArena::reset): Ditto. Also added code to zero out the
+ new structures, and switched to use clear() instead of shrink(0) since
+ we don't really reuse arenas.
+ (JSC::ParserArena::makeNumericIdentifier): Added.
+ (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool
+ is empty.
+ (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine
+ since this is used only for assertions at the moment.
+
+ * parser/ParserArena.h: Added an actual arena of "freeable" objects,
+ ones that don't need destructors to be called. Also added the segmented
+ vector of identifiers that used to be in the Lexer.
+
+ * runtime/FunctionConstructor.cpp:
+ (JSC::extractFunctionBody): Use singleStatement function rather than
+ getting at a StatementVector.
+
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncToString): Call isHostFunction on the body
+ rather than the function object.
+
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::JSFunction): Moved the structure version of this in
+ here from the header. It's not hot enough that it needs to be inlined.
+ (JSC::JSFunction::isHostFunction): Moved this in here from the header.
+ It's now a helper to be used only within the class.
+ (JSC::JSFunction::setBody): Moved this in here. It's not hot enough that
+ it needs to be inlined, and we want to be able to compile the header
+ without the definition of FunctionBodyNode.
+
+ * runtime/JSFunction.h: Eliminated the include of "Nodes.h". This was
+ exposing too much JavaScriptCore dependency to WebCore. Because of this
+ change and some changes made to WebCore, we could now export a lot fewer
+ headers from JavaScriptCore, but I have not done that yet in this check-in.
+ Made a couple functions non-inline. Removes some isHostFunction() assertions.
+
+ * wtf/FastAllocBase.h: Added the conventional using statements we use in
+ WTF so we can use identifiers from the WTF namespace without explicit
+ namespace qualification or namespace directive. This is the usual WTF style,
+ although it's unconventional in the C++ world. We use the namespace primarily
+ for link-time disambiguation, not compile-time.
+
+ * wtf/FastMalloc.cpp: Fixed an incorrect comment.
+
+2009-05-13 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed build fix: add JITStubCall.h to files list.
+
+ * GNUmakefile.am:
+
+2009-05-13 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Unreviewed build fix, as suggested by Yael Aharon <yael.aharon@nokia.com>.
+
+ * wtf/qt/ThreadingQt.cpp:
+ (WTF::waitForThreadCompletion): renamed IsValid to isValid.
+
+2009-05-13 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Revert r43562 - [Gtk] WTF_USE_JSC is already defined in
+ WebCore/config.h.
+
+ * wtf/Platform.h:
+
+2009-05-12 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Add SamplingCounter tool to provide a simple mechanism for counting events in JSC
+ (enabled using ENABLE(SAMPLING_COUNTERS)). To count events within a single function
+ use the class 'SamplingCounter', where the counter may be incremented from multiple
+ functions 'GlobalSamplingCounter' may be convenient; all other counters (stack or
+ heap allocated, rather than statically declared) should use the DeletableSamplingCounter.
+ Further description of these classes is provided alongside their definition in
+ SamplingTool.h.
+
+ Counters may be incremented from c++ by calling the 'count()' method on the counter,
+ or may be incremented by JIT code by using the 'emitCount()' method within the JIT.
+
+ This patch also fixes CODEBLOCK_SAMPLING, which was missing a null pointer check.
+
+ * JavaScriptCore.exp:
+ * assembler/MacroAssemblerX86.h:
+ (JSC::MacroAssemblerX86::addWithCarry32):
+ (JSC::MacroAssemblerX86::and32):
+ (JSC::MacroAssemblerX86::or32):
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::and32):
+ (JSC::MacroAssemblerX86Common::or32):
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::and32):
+ (JSC::MacroAssemblerX86_64::or32):
+ (JSC::MacroAssemblerX86_64::addPtr):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::):
+ (JSC::X86Assembler::adcl_im):
+ (JSC::X86Assembler::addq_im):
+ (JSC::X86Assembler::andl_im):
+ (JSC::X86Assembler::orl_im):
+ * bytecode/SamplingTool.cpp:
+ (JSC::AbstractSamplingCounter::dump):
+ * bytecode/SamplingTool.h:
+ (JSC::AbstractSamplingCounter::count):
+ (JSC::GlobalSamplingCounter::name):
+ (JSC::SamplingCounter::SamplingCounter):
+ * jit/JIT.h:
+ * jit/JITCall.cpp:
+ (JSC::):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::setSamplingFlag):
+ (JSC::JIT::clearSamplingFlag):
+ (JSC::JIT::emitCount):
+ * jsc.cpp:
+ (runWithScripts):
+ * parser/Nodes.cpp:
+ (JSC::ScopeNode::ScopeNode):
+ * wtf/Platform.h:
+
+2009-05-13 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix.
+
+ * JavaScriptCore.vcproj/JavaScriptCore.make:
+
+2009-05-12 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix.
+
+ * JavaScriptCore.vcproj/JavaScriptCore.make:
+
+2009-05-12 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ <rdar://problem/6881457> Crash occurs at JSC::Interpreter::execute() when loading http://www.sears.com
+
+ We created the arguments objects before an op_push_scope but not
+ before op_push_new_scope, this meant a null arguments object could
+ be resolved inside catch blocks.
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitPushNewScope):
+
+2009-05-12 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ <rdar://problem/6879881> Crash occurs at JSC::JSActivation::mark() when loading http://www.monster.com; http://www.cnet.com
+ <https://bugs.webkit.org/show_bug.cgi?id=25736> Crash loading www.google.dk/ig (and other igoogle's as well)
+
+ Following on from the lazy arguments creation patch, it's now
+ possible for an activation to to have a null register in the callframe
+ so we can't just blindly mark the local registers in an activation,
+ and must null check first instead.
+
+ * API/tests/testapi.c:
+ (functionGC):
+ * API/tests/testapi.js:
+ (bludgeonArguments.return.g):
+ (bludgeonArguments):
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::mark):
+
+2009-05-12 Gavin Barraclough <barraclough@apple.com>
+
+ Rubber stamped by Geoff Garen.
+
+ WTF_USE_CTI_REPATCH_PIC is no longer used, remove.
+
+ * jit/JIT.h:
+ * jit/JITStubCall.h:
+
+2009-05-12 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ We've run into some problems where changing the size of the class JIT leads to
+ performance fluctuations. Try forcing alignment in an attempt to stabalize this.
+
+ * jit/JIT.h:
+
+2009-05-12 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix. Add ParserArena.cpp to the build.
+
+ * JavaScriptCoreSources.bkl:
+
+2009-05-12 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Unsigned underflow on 64bit cannot be treated as a negative number
+
+ This code included some placeswhere we deliberately create negative offsets
+ from unsigned values, on 32bit this is "safe", but in 64bit builds much
+ badness occurs. Solution is to use signed types as nature intended.
+
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_load_varargs):
+
+2009-05-12 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Define WTF_USE_JSC for the Gtk port.
+
+ * wtf/Platform.h:
+
+2009-05-12 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ - allow all of strictEqual to be inlined into cti_op_stricteq once again
+
+ We had this optimization once but accidentally lost it at some point.
+
+ * runtime/Operations.h:
+ (JSC::JSValue::strictEqualSlowCaseInline):
+ (JSC::JSValue::strictEqual):
+
+2009-05-12 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ instanceof should throw if the constructor being tested does not implement
+ 'HasInstance" (i.e. is a function). Instead we were returning false.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::isInvalidParamForIn):
+ (JSC::isInvalidParamForInstanceOf):
+ (JSC::Interpreter::privateExecute):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_instanceof):
+ * tests/mozilla/ecma_2/instanceof/instanceof-003.js:
+ Fix broken test case.
+ * tests/mozilla/ecma_2/instanceof/regress-7635.js:
+ Remove broken test case (was an exact duplicate of a test in instanceof-003.js).
+
+2009-05-12 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Improve function call forwarding performance
+
+ Make creation of the Arguments object occur lazily, so it
+ is not necessarily created for every function that references
+ it. Then add logic to Function.apply to allow it to avoid
+ allocating the Arguments object at all. Helps a lot with
+ the function forwarding/binding logic in jQuery, Prototype,
+ and numerous other JS libraries.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ * bytecode/Opcode.h:
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+ (JSC::BytecodeGenerator::registerFor):
+ (JSC::BytecodeGenerator::willResolveToArguments):
+ (JSC::BytecodeGenerator::uncheckedRegisterForArguments):
+ (JSC::BytecodeGenerator::createArgumentsIfNecessary):
+ (JSC::BytecodeGenerator::emitCallEval):
+ (JSC::BytecodeGenerator::emitPushScope):
+ * bytecompiler/BytecodeGenerator.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::retrieveArguments):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JIT.h:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_create_arguments):
+ (JSC::JIT::emit_op_init_arguments):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_tear_off_arguments):
+ (JSC::JITStubs::cti_op_load_varargs):
+ * parser/Nodes.cpp:
+ (JSC::ApplyFunctionCallDotNode::emitBytecode):
+
+2009-05-11 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Enable use of SamplingFlags directly from JIT code.
+
+ * bytecode/SamplingTool.h:
+ * jit/JIT.h:
+ (JSC::JIT::sampleCodeBlock):
+ (JSC::JIT::sampleInstruction):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::setSamplingFlag):
+ (JSC::JIT::clearSamplingFlag):
+
+2009-05-11 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Implement JIT generation for instanceof for non-objects (always returns false).
+ Also fixes the sequencing of the prototype and value isObject checks, to no match the spec.
+
+ 0.5% progression on v8 tests overall, due to 3.5% on early-boyer.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::hasInstance):
+ * runtime/TypeInfo.h:
+ (JSC::TypeInfo::TypeInfo):
+
+2009-05-11 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ A little more JIT refactoring.
+
+ Rearranged code to more clearly indicate what's conditionally compiled
+ and why. Now, all shared code is at the top of our JIT files, and all
+ #if'd code is at the bottom. #if'd code is delineated by large comments.
+
+ Moved functions that relate to the JIT but don't explicitly do codegen
+ into JIT.cpp. Refactored SSE2 check to store its result as a data member
+ in the JIT.
+
+ * jit/JIT.cpp:
+ (JSC::isSSE2Present):
+ (JSC::JIT::JIT):
+ (JSC::JIT::unlinkCall):
+ (JSC::JIT::linkCall):
+ * jit/JIT.h:
+ (JSC::JIT::isSSE2Present):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_mod):
+ (JSC::JIT::emitSlow_op_mod):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallVarargs):
+ (JSC::JIT::compileOpCallVarargsSlowCase):
+
+2009-05-11 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Build fix.
+
+ * JavaScriptCore.pri: Build the new JITOpcodes.cpp
+
+2009-05-11 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ More re-factoring of JIT code generation. Use a macro to
+ forward the main switch-statement cases to the helper functions.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+
+2009-05-11 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ More re-factoring of JIT code generation to move opcode generation
+ to helper functions outside the main switch-statement and gave those
+ helper functions standardized names. This patch covers the remaining
+ slow cases.
+
+ * jit/JIT.cpp:
+ * jit/JIT.h:
+ * jit/JITOpcodes.cpp:
+
+2009-05-11 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * GNUmakefile.am: Added JITOpcodes.cpp and JITStubCall.h to the project.
+
+2009-05-11 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added
+ JITOpcodes.cpp and JITStubCall.h to the project.
+
+2009-05-11 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Some JIT refactoring.
+
+ Moved JITStubCall* into its own header.
+
+ Modified JITStubCall to ASSERT that its return value is handled correctly.
+ Also, replaced function template with explicit instantiations to resolve
+ some confusion.
+
+ Replaced all uses of emit{Get,Put}CTIArgument with explicit peeks, pokes,
+ and calls to killLastResultRegister().
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompile):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ * jit/JITCall.cpp:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::restoreArgumentReference):
+ * jit/JITPropertyAccess.cpp:
+ * jit/JITStubCall.h: Copied from jit/JIT.h.
+ (JSC::JITStubCall::JITStubCall):
+ (JSC::JITStubCall::addArgument):
+ (JSC::JITStubCall::call):
+ (JSC::JITStubCall::):
+
+2009-05-11 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Start re-factoring JIT code generation to move opcode generation
+ to helper functions outside the main switch-statement and gave those
+ helper functions standardized names. This patch only covers the main
+ pass and all the arithmetic opcodes in the slow path.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ * jit/JITOpcodes.cpp: Copied from jit/JIT.cpp.
+ * jit/JITPropertyAccess.cpp:
+
+2009-05-11 Steve Falkenburg <sfalken@apple.com>
+
+ Re-add experimental PGO configs.
+
+ Reviewed by Adam Roben.
+
+ * JavaScriptCore.vcproj/JavaScriptCore.make:
+ * JavaScriptCore.vcproj/JavaScriptCore.sln:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
+ * JavaScriptCore.vcproj/jsc/jsc.vcproj:
+
+2009-05-11 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey "1" Garen.
+
+ Rip out the !USE(CTI_REPATCH_PIC) code. It was untested and unused.
+
+ * jit/JIT.h:
+ (JSC::JIT::compileGetByIdChainList):
+ (JSC::JIT::compileGetByIdChain):
+ (JSC::JIT::compileCTIMachineTrampolines):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::tryCachePutByID):
+ (JSC::JITStubs::tryCacheGetByID):
+
+2009-05-11 Dmitry Titov <dimich@chromium.org>
+
+ GTK build fix - the deprecated waitForThreadCompletion is not needed on GTK.
+
+ * wtf/ThreadingPthreads.cpp: used #ifdef PLATFORM(DARWIN) around waitForThreadCompletion().
+
+2009-05-11 Adam Roben <aroben@apple.com>
+
+ Build fix for newer versions of GCC
+
+ * wtf/ThreadingPthreads.cpp: Added a declaration of
+ waitForThreadCompletion before its definition to silence a warning.
+
+2009-05-11 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov and Adam Roben.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25348
+ Change WTF::ThreadIdentifier to be an actual (but wrapped) thread id, remove ThreadMap.
+
+ * wtf/Threading.h:
+ (WTF::ThreadIdentifier::ThreadIdentifier):
+ (WTF::ThreadIdentifier::isValid):
+ (WTF::ThreadIdentifier::invalidate):
+ (WTF::ThreadIdentifier::platformId):
+ ThreadIdentifier is now a class, containing a PlatformThreadIdentifier and
+ methods that are used across the code on thread ids: construction, comparisons,
+ check for 'valid' state etc. '0' is used as invalid id, which happens to just work
+ with all platform-specific thread id implementations.
+
+ All the following files repeatedly reflect the new ThreadIdentifier for each platform.
+ We remove ThreadMap and threadMapMutex from all of them, remove the functions that
+ populated/searched/cleared the map and add platform-specific comparison operators
+ for ThreadIdentifier.
+
+ There are specific temporary workarounds for Safari 4 beta on OSX and Win32 since the
+ public build uses WTF threading functions with old type of ThreadingIdentifier.
+ The next time Safari 4 is rebuilt, it will 'automatically' pick up the new type and new
+ functions so the deprecated ones can be removed.
+
+ * wtf/gtk/ThreadingGtk.cpp:
+ (WTF::ThreadIdentifier::operator==):
+ (WTF::ThreadIdentifier::operator!=):
+ (WTF::initializeThreading):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::currentThread):
+
+ * wtf/ThreadingNone.cpp:
+ (WTF::ThreadIdentifier::operator==):
+ (WTF::ThreadIdentifier::operator!=):
+
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::ThreadIdentifier::operator==):
+ (WTF::ThreadIdentifier::operator!=):
+ (WTF::initializeThreading):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::detachThread):
+ (WTF::currentThread):
+ (WTF::waitForThreadCompletion): This is a workaround for Safari 4 beta on Mac.
+ Safari 4 is linked against old definition of ThreadIdentifier so it treats it as uint32_t.
+ This 'old' variant of waitForThreadCompletion takes uint32_t and has the old decorated name, so Safari can
+ load it from JavaScriptCore library. The other functions (CurrentThread() etc) happen to match their previous
+ decorated names and, while they return pthread_t now, it is a pointer which round-trips through a uint32_t.
+ This function will be removed as soon as Safari 4 will release next public build.
+
+ * wtf/qt/ThreadingQt.cpp:
+ (WTF::ThreadIdentifier::operator==):
+ (WTF::ThreadIdentifier::operator!=):
+ (WTF::initializeThreading):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::currentThread):
+
+ * wtf/ThreadingWin.cpp:
+ (WTF::ThreadIdentifier::operator==):
+ (WTF::ThreadIdentifier::operator!=):
+ (WTF::initializeThreading):
+ (WTF::createThreadInternal): All the platforms (except Windows) used a sequential
+ counter as a thread ID and mapped it into platform ID. Windows was using native thread
+ id and mapped it into thread handle. Since we can always obtain a thread handle
+ by thread id, createThread now closes the handle.
+ (WTF::waitForThreadCompletion): obtains another one using OpenThread(id) API. If can not obtain a handle,
+ it means the thread already exited.
+ (WTF::detachThread):
+ (WTF::currentThread):
+ (WTF::detachThreadDeprecated): old function, renamed (for Win Safari 4 beta which uses it for now).
+ (WTF::waitForThreadCompletionDeprecated): same.
+ (WTF::currentThreadDeprecated): same.
+ (WTF::createThreadDeprecated): same.
+
+ * bytecode/SamplingTool.h:
+ * bytecode/SamplingTool.cpp: Use DEFINE_STATIC_LOCAL for a static ThreadIdentifier variable, to avoid static constructor.
+
+ * JavaScriptCore.exp: export lists - updated decorated names of the WTF threading functions
+ since they now take a different type as a parameter.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: ditto for Windows, plus added "deprecated" functions
+ that take old parameter type - turns out public beta of Safari 4 uses those, so they need to be kept along for a while.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: ditto.
+
+2009-05-11 Darin Adler <darin@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 25560: REGRESSION (r34821): "string value".__proto__ gets the wrong object.
+ https://bugs.webkit.org/show_bug.cgi?id=25560
+ rdar://problem/6861069
+
+ I missed this case back a year ago when I sped up handling
+ of JavaScript wrappers. Easy to fix.
+
+ * runtime/JSObject.h:
+ (JSC::JSValue::get): Return the prototype itself if the property name
+ is __proto__.
+ * runtime/JSString.cpp:
+ (JSC::JSString::getOwnPropertySlot): Ditto.
+
+2009-05-09 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Rename emitGetFromCallFrameHeader to emitGetFromCallFrameHeaderPtr
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitGetFromCallFrameHeaderPtr):
+ (JSC::JIT::emitGetFromCallFrameHeader32):
+
+2009-05-11 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build fix. Build ParserAreana.cpp for Qt
+
+ * JavaScriptCore.pri:
+
+2009-05-11 Norbert Leser <norbert.leser@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24536
+
+ Symbian compilers cannot resolve WTF::PassRefPtr<JSC::Profile>
+ unless Profile.h is included.
+
+ * profiler/ProfileGenerator.h:
+
+2009-05-11 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24284
+
+ * JavaScriptCore.pri: coding style modified
+ * jsc.pro: duplicated values removed from INCLUDEPATH, DEFINES
+
+2009-05-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by NOBODY (build fix).
+
+ Also add ParserArena, in addition to AllInOne, for release builds,
+ since adding it to AllInOne breaks Mac.
+
+ * GNUmakefile.am:
+
+2009-05-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed build fix. Adding ParserArena to the autotools build.
+
+ * GNUmakefile.am:
+
+2009-05-11 Adam Roben <aroben@apple.com>
+
+ More Windows build fixes after r43479
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ Export ParserArena::reset.
+
+2009-05-11 Adam Roben <aroben@apple.com>
+
+ Windows build fixes after r43479
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added
+ ParserArena to the project.
+
+ * parser/NodeConstructors.h: Added a missing include.
+ (JSC::ParserArenaDeletable::operator new): Marked these as inline.
+
+2009-05-10 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ - fixed REGRESSION(r43432): Many JavaScriptCore tests crash in 64-bit
+ https://bugs.webkit.org/show_bug.cgi?id=25680
+
+ Accound for the 64-bit instruction prefix when rewriting mov to lea on 64-bit.
+
+ * jit/JIT.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::patchPutByIdReplace):
+
+2009-05-10 Darin Adler <darin@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Bug 25674: syntax tree nodes should use arena allocation
+ https://bugs.webkit.org/show_bug.cgi?id=25674
+
+ Part two: Remove reference counting from most nodes.
+
+ * JavaScriptCore.exp: Updated.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj: Added ParserArena.h and .cpp.
+
+ * parser/Grammar.y: Replaced uses of ParserRefCountedData with uses of
+ ParserArenaData. Took out now-nonfunctional code that tries to manually
+ release declaration list. Changed the new calls that create FuncDeclNode
+ and FuncExprNode so that they use the proper version of operator new for
+ the reference-counted idiom, not the deletion idiom.
+
+ * parser/NodeConstructors.h:
+ (JSC::ParserArenaDeletable::operator new): Added.
+ (JSC::ParserArenaRefCounted::ParserArenaRefCounted): Added.
+ (JSC::Node::Node): Removed ParserRefCounted initializer.
+ (JSC::ElementNode::ElementNode): Ditto.
+ (JSC::PropertyNode::PropertyNode): Ditto.
+ (JSC::ArgumentsNode::ArgumentsNode): Ditto.
+ (JSC::SourceElements::SourceElements): Ditto.
+ (JSC::ParameterNode::ParameterNode): Ditto.
+ (JSC::FuncExprNode::FuncExprNode): Added ParserArenaRefCounted initializer.
+ (JSC::FuncDeclNode::FuncDeclNode): Ditto.
+ (JSC::CaseClauseNode::CaseClauseNode): Removed ParserRefCounted initializer.
+ (JSC::ClauseListNode::ClauseListNode): Ditto.
+ (JSC::CaseBlockNode::CaseBlockNode): Ditto.
+
+ * parser/NodeInfo.h: Replaced uses of ParserRefCountedData with uses of
+ ParserArenaData.
+
+ * parser/Nodes.cpp:
+ (JSC::ScopeNode::ScopeNode): Added ParserArenaRefCounted initializer.
+ (JSC::ProgramNode::create): Use the proper version of operator new for
+ the reference-counted idiom, not the deletion idiom. Use the arena
+ contains function instead of the vecctor find function.
+ (JSC::EvalNode::create): Use the proper version of operator new for
+ the reference-counted idiom, not the deletion idiom. Use the arena
+ reset function instead of the vector shrink function.
+ (JSC::FunctionBodyNode::createNativeThunk): Use the proper version
+ of operator new for the reference-counted idiom, not the deletion idiom.
+ (JSC::FunctionBodyNode::create): More of the same.
+
+ * parser/Nodes.h: Added ParserArenaDeletable and ParserArenaRefCounted
+ to replace ParserRefCounted. Fixed inheritance so only the classes that
+ need reference counting inherit from ParserArenaRefCounted.
+
+ * parser/Parser.cpp:
+ (JSC::Parser::parse): Set m_sourceElements to 0 since it now starts
+ uninitialized. Just set it to 0 again in the failure case, since it's
+ now just a raw pointer, not an owning one.
+ (JSC::Parser::reparseInPlace): Removed now-unneeded get() function.
+ (JSC::Parser::didFinishParsing): Replaced uses of ParserRefCountedData
+ with uses of ParserArenaData.
+
+ * parser/Parser.h: Less RefPtr, more arena.
+
+ * parser/ParserArena.cpp: Added.
+ * parser/ParserArena.h: Added.
+
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::~JSGlobalData): Removed arena-related code, since it's
+ now in the Parser.
+ (JSC::JSGlobalData::createLeaked): Removed unneeded #ifndef.
+ (JSC::JSGlobalData::createNativeThunk): Tweaked #if a bit.
+
+ * runtime/JSGlobalData.h: Removed parserArena, which is now in Parser.
+
+ * wtf/RefCounted.h: Added deletionHasBegun function, for use in
+ assertions to catch deletion not done by the deref function.
+
+2009-05-10 David Kilzer <ddkilzer@apple.com>
+
+ Part 2: Try to fix the Windows build by adding a symbol which is really just a re-mangling of a changed method signature
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-10 David Kilzer <ddkilzer@apple.com>
+
+ Try to fix the Windows build by removing an unknown symbol
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-10 David Kilzer <ddkilzer@apple.com>
+
+ Touch Nodes.cpp to try to fix Windows build
+
+ * parser/Nodes.cpp: Removed whitespace.
+
+2009-05-10 Darin Adler <darin@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Quick fix for failures seen on buildbot. Maciej plans a better fix later.
+
+ * wtf/dtoa.cpp: Change the hardcoded number of 32-bit words in a BigInt
+ from 32 to 64. Parsing "1e500", for example, requires more than 32 words.
+
+2009-05-10 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 25674: syntax tree nodes should use arena allocation
+ Part one: Change lifetimes so we won't have to use reference
+ counting so much, but don't eliminate the reference counts
+ entirely yet.
+
+ * JavaScriptCore.exp: Updated.
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator): Update for use of raw pointers
+ instead of RefPtr.
+ (JSC::BytecodeGenerator::emitCall): Ditto.
+ (JSC::BytecodeGenerator::emitConstruct): Ditto.
+
+ * parser/Grammar.y: Update node creating code to use new (JSGlobalData*)
+ instead of the plain new. At the moment this is just a hook for future
+ arena allocation; it's inline and JSGlobalData* is not used.
+
+ * parser/NodeConstructors.h: Updated for name change of parserObjects to
+ parserArena. Also added explicit initialization for raw pointers that used
+ to be RefPtr. Also removed some uses of get() that aren't needed now that
+ the pointers are raw pointers. Also eliminated m_parameter from FuncExprNode
+ and FuncDeclNode. Also changed node-creating code to use new (JSGlobalData*)
+ as above.
+
+ * parser/Nodes.cpp: Eliminated NodeReleaser and all use of it.
+ (JSC::ParserRefCounted::ParserRefCounted): Updated for name change of
+ parserObjects to parserArena.
+ (JSC::SourceElements::append): Use raw pointers.
+ (JSC::ArrayNode::emitBytecode): Ditto.
+ (JSC::ArrayNode::isSimpleArray): Ditto.
+ (JSC::ArrayNode::toArgumentList): Ditto.
+ (JSC::ObjectLiteralNode::emitBytecode): Ditto.
+ (JSC::PropertyListNode::emitBytecode): Ditto.
+ (JSC::BracketAccessorNode::emitBytecode): Ditto.
+ (JSC::DotAccessorNode::emitBytecode): Ditto.
+ (JSC::ArgumentListNode::emitBytecode): Ditto.
+ (JSC::NewExprNode::emitBytecode): Ditto.
+ (JSC::EvalFunctionCallNode::emitBytecode): Ditto.
+ (JSC::FunctionCallValueNode::emitBytecode): Ditto.
+ (JSC::FunctionCallResolveNode::emitBytecode): Ditto.
+ (JSC::FunctionCallBracketNode::emitBytecode): Ditto.
+ (JSC::FunctionCallDotNode::emitBytecode): Ditto.
+ (JSC::CallFunctionCallDotNode::emitBytecode): Ditto.
+ (JSC::ApplyFunctionCallDotNode::emitBytecode): Ditto.
+ (JSC::PostfixBracketNode::emitBytecode): Ditto.
+ (JSC::PostfixDotNode::emitBytecode): Ditto.
+ (JSC::DeleteBracketNode::emitBytecode): Ditto.
+ (JSC::DeleteDotNode::emitBytecode): Ditto.
+ (JSC::DeleteValueNode::emitBytecode): Ditto.
+ (JSC::VoidNode::emitBytecode): Ditto.
+ (JSC::TypeOfValueNode::emitBytecode): Ditto.
+ (JSC::PrefixBracketNode::emitBytecode): Ditto.
+ (JSC::PrefixDotNode::emitBytecode): Ditto.
+ (JSC::UnaryOpNode::emitBytecode): Ditto.
+ (JSC::BinaryOpNode::emitStrcat): Ditto.
+ (JSC::BinaryOpNode::emitBytecode): Ditto.
+ (JSC::EqualNode::emitBytecode): Ditto.
+ (JSC::StrictEqualNode::emitBytecode): Ditto.
+ (JSC::ReverseBinaryOpNode::emitBytecode): Ditto.
+ (JSC::ThrowableBinaryOpNode::emitBytecode): Ditto.
+ (JSC::InstanceOfNode::emitBytecode): Ditto.
+ (JSC::LogicalOpNode::emitBytecode): Ditto.
+ (JSC::ConditionalNode::emitBytecode): Ditto.
+ (JSC::ReadModifyResolveNode::emitBytecode): Ditto.
+ (JSC::AssignResolveNode::emitBytecode): Ditto.
+ (JSC::AssignDotNode::emitBytecode): Ditto.
+ (JSC::ReadModifyDotNode::emitBytecode): Ditto.
+ (JSC::AssignBracketNode::emitBytecode): Ditto.
+ (JSC::ReadModifyBracketNode::emitBytecode): Ditto.
+ (JSC::CommaNode::emitBytecode): Ditto.
+ (JSC::ConstDeclNode::emitCodeSingle): Ditto.
+ (JSC::ConstDeclNode::emitBytecode): Ditto.
+ (JSC::ConstStatementNode::emitBytecode): Ditto.
+ (JSC::statementListEmitCode): Ditto.
+ (JSC::BlockNode::emitBytecode): Ditto.
+ (JSC::ExprStatementNode::emitBytecode): Ditto.
+ (JSC::VarStatementNode::emitBytecode): Ditto.
+ (JSC::IfNode::emitBytecode): Ditto.
+ (JSC::IfElseNode::emitBytecode): Ditto.
+ (JSC::DoWhileNode::emitBytecode): Ditto.
+ (JSC::WhileNode::emitBytecode): Ditto.
+ (JSC::ForNode::emitBytecode): Ditto.
+ (JSC::ForInNode::emitBytecode): Ditto.
+ (JSC::ReturnNode::emitBytecode): Ditto.
+ (JSC::WithNode::emitBytecode): Ditto.
+ (JSC::CaseBlockNode::tryOptimizedSwitch): Ditto.
+ (JSC::CaseBlockNode::emitBytecodeForBlock): Ditto.
+ (JSC::SwitchNode::emitBytecode): Ditto.
+ (JSC::LabelNode::emitBytecode): Ditto.
+ (JSC::ThrowNode::emitBytecode): Ditto.
+ (JSC::TryNode::emitBytecode): Ditto.
+ (JSC::ScopeNodeData::ScopeNodeData): Use swap to transfer ownership
+ of the arena, varStack and functionStack.
+ (JSC::ScopeNode::ScopeNode): Pass in the arena when creating the
+ ScopeNodeData.
+ (JSC::ProgramNode::ProgramNode): Made this inline since it's used
+ in only one place.
+ (JSC::ProgramNode::create): Changed this to return a PassRefPtr since
+ we plan to have the scope nodes be outside the arena, so they will need
+ some kind of ownership transfer (maybe auto_ptr instead of PassRefPtr
+ in the future, though). Remove the node from the newly-created arena to
+ avoid a circular reference. Later we'll keep the node out of the arena
+ by using a different operator new, but for now it's the ParserRefCounted
+ constructor that puts the node into the arena, and there's no way to
+ bypass that.
+ (JSC::EvalNode::EvalNode): Ditto.
+ (JSC::EvalNode::create): Ditto.
+ (JSC::FunctionBodyNode::FunctionBodyNode): Ditto.
+ (JSC::FunctionBodyNode::createNativeThunk): Moved the code that
+ reseets the arena here instead of the caller.
+ (JSC::FunctionBodyNode::create): Same change as the other create
+ functions above.
+ (JSC::FunctionBodyNode::emitBytecode): Use raw pointers.
+
+ * parser/Nodes.h: Removed NodeReleaser. Changed FunctionStack to
+ use raw pointers. Removed the releaseNodes function. Added an override
+ of operator new that takes a JSGlobalData* to prepare for future arena use.
+ Use raw pointers instead of RefPtr everywhere possible.
+
+ * parser/Parser.cpp:
+ (JSC::Parser::reparseInPlace): Pass the arena in.
+
+ * parser/Parser.h:
+ (JSC::Parser::parse): Updated for name change of parserObjects to parserArena.
+ (JSC::Parser::reparse): Ditto.
+ * runtime/FunctionConstructor.cpp:
+ (JSC::extractFunctionBody): Ditto.
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::~JSGlobalData): Ditto.
+ (JSC::JSGlobalData::createNativeThunk): Moved arena manipulation into the
+ FunctionBodyNode::createNativeThunk function.
+
+ * runtime/JSGlobalData.h: Tweaked formatting and renamed parserObjects to
+ parserArena.
+
+ * wtf/NotFound.h: Added the usual "using WTF" to this header to match the
+ rest of WTF.
+
+2009-05-10 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Geoffrey Garen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25670
+ Remove no longer valid chunk of code from dtoa.
+
+ * wtf/dtoa.cpp:
+ (WTF::dtoa): Removed invalid code.
+
+2009-05-10 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Geoff Garen.
+
+ "Class const *" is the same as "const Class*", use the latter syntax consistently.
+
+ See <http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.9>.
+
+ * pcre/pcre_compile.cpp:
+ (calculateCompiledPatternLength):
+ * runtime/JSObject.h:
+ (JSC::JSObject::offsetForLocation):
+ (JSC::JSObject::locationForOffset):
+
+2009-05-10 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ - speedup dtoa/strtod
+
+ Added a bunch of inlining, and replaced malloc with stack allocation.
+
+ 0.5% SunSpider speedup (7% on string-tagcloud).
+
+ * runtime/NumberPrototype.cpp:
+ (JSC::integerPartNoExp):
+ (JSC::numberProtoFuncToExponential):
+ * runtime/UString.cpp:
+ (JSC::concatenate):
+ (JSC::UString::from):
+ * wtf/dtoa.cpp:
+ (WTF::BigInt::BigInt):
+ (WTF::BigInt::operator=):
+ (WTF::Balloc):
+ (WTF::Bfree):
+ (WTF::multadd):
+ (WTF::s2b):
+ (WTF::i2b):
+ (WTF::mult):
+ (WTF::pow5mult):
+ (WTF::lshift):
+ (WTF::cmp):
+ (WTF::diff):
+ (WTF::b2d):
+ (WTF::d2b):
+ (WTF::ratio):
+ (WTF::strtod):
+ (WTF::quorem):
+ (WTF::freedtoa):
+ (WTF::dtoa):
+ * wtf/dtoa.h:
+
+2009-05-09 Mike Hommey <glandium@debian.org>
+
+ Reviewed by Geoffrey Garen. Landed by Jan Alonzo.
+
+ Enable JIT on x86-64 gtk+
+ https://bugs.webkit.org/show_bug.cgi?id=24724
+
+ * GNUmakefile.am:
+
+2009-05-09 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Removed the last non-call-related manually managed JIT stub call.
+
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArithSlow_op_rshift): Fully use the JITStubCall
+ abstraction, instead of emitPutJITStubArg.
+
+2009-05-09 Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25653
+ PLATFORM(X86_64) inherits ia64
+
+ __ia64__ is defined by gcc in an IA64 arch and has completely
+ nothing in common with X86-64 exept both are from Intel and have
+ an 64bit address space. That's it. Since code seems to expect x86
+ here, ia64 has to go.
+
+ * wtf/Platform.h:
+
+2009-05-09 Gustavo Noronha Silva <gns@gnome.org>
+
+ Suggested by Geoffrey Garen.
+
+ Assume SSE2 is present on X86-64 and on MAC X86-32. This fixes a
+ build breakage on non-Mac X86-64 when JIT is enabled.
+
+ * jit/JITArithmetic.cpp:
+
+2009-05-09 Gustavo Noronha Silva <gns@gnome.org>
+
+ Build fix, adding missing files to make dist.
+
+ * GNUmakefile.am:
+
+2009-05-09 Geoffrey Garen <ggaren@apple.com>
+
+ Windows build fix.
+
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::patchLoadToLEA):
+
+2009-05-09 Geoffrey Garen <ggaren@apple.com>
+
+ Windows build fix.
+
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::patchLoadToLEA):
+
+2009-05-09 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Original patch by John McCall. Updated by Cameron Zwarich. Further refined by me.
+
+ - Assorted speedups to property access
+
+ ~.3%-1% speedup on SunSpider
+
+ 1) When we know from the structure ID that an object is using inline storage, plant direct
+ loads and stores against it; no need to indirect through storage pointer.
+
+ 2) Also because of the above, union the property storage pointer with the first inline property
+ slot and add an extra inline property slot.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::CodeLocationInstruction::CodeLocationInstruction):
+ (JSC::AbstractMacroAssembler::CodeLocationInstruction::patchLoadToLEA):
+ (JSC::::CodeLocationCommon::instructionAtOffset):
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::storePtr):
+ * assembler/MacroAssemblerX86.h:
+ (JSC::MacroAssemblerX86::store32):
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::storePtr):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::movq_EAXm):
+ (JSC::X86Assembler::movl_rm):
+ (JSC::X86Assembler::patchLoadToLEA):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JIT.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compilePutByIdHotPath):
+ (JSC::JIT::compilePutDirectOffset):
+ (JSC::JIT::compileGetDirectOffset):
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::patchPutByIdReplace):
+ (JSC::JIT::privateCompileGetByIdSelf):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdSelfList):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+ (JSC::JIT::privateCompilePutByIdReplace):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::mark):
+ (JSC::JSObject::removeDirect):
+ * runtime/JSObject.h:
+ (JSC::JSObject::propertyStorage):
+ (JSC::JSObject::getDirect):
+ (JSC::JSObject::getOffset):
+ (JSC::JSObject::offsetForLocation):
+ (JSC::JSObject::locationForOffset):
+ (JSC::JSObject::getDirectOffset):
+ (JSC::JSObject::putDirectOffset):
+ (JSC::JSObject::isUsingInlineStorage):
+ (JSC::JSObject::):
+ (JSC::JSObject::JSObject):
+ (JSC::JSObject::~JSObject):
+ (JSC::Structure::isUsingInlineStorage):
+ (JSC::JSObject::putDirect):
+ (JSC::JSObject::putDirectWithoutTransition):
+ (JSC::JSObject::allocatePropertyStorageInline):
+ * runtime/Structure.h:
+
+2009-05-09 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Changed all our JIT stubs so that they return a maximum of 1 JS value or
+ two non-JS pointers, and do all other value returning through out
+ parameters, in preparation for 64bit JS values on a 32bit system.
+
+ Stubs that used to return two JSValues now return one JSValue and take
+ and out parameter specifying where in the register array the second
+ value should go.
+
+ SunSpider reports no change.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArithSlow_op_post_inc):
+ (JSC::JIT::compileFastArithSlow_op_post_dec):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_call_arityCheck):
+ (JSC::JITStubs::cti_op_resolve_func):
+ (JSC::JITStubs::cti_op_post_inc):
+ (JSC::JITStubs::cti_op_resolve_with_base):
+ (JSC::JITStubs::cti_op_post_dec):
+ * jit/JITStubs.h:
+ (JSC::):
+
+2009-05-08 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Fixed <rdar://problem/6634956> CrashTracer: [REGRESSION] >400 crashes
+ in Safari at com.apple.JavaScriptCore • JSC::BytecodeGenerator::emitComplexJumpScopes + 468
+ https://bugs.webkit.org/show_bug.cgi?id=25658
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitComplexJumpScopes): Guard the whole loop
+ with a bounds check. The old loop logic would decrement and read topScope
+ without a bounds check, which could cause crashes on page boundaries.
+
+2009-05-08 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by NOBODY (BuildFix).
+
+ Gtk fix: add LiteralParser to the build script per r43424.
+
+ Add LiteralParser to the Qt and Wx build scripts too.
+
+ * GNUmakefile.am:
+ * JavaScriptCore.pri:
+ * JavaScriptCoreSources.bkl:
+
+2009-05-08 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough and Darin Adler.
+
+ Add a limited literal parser for eval to handle object and array literals fired at eval
+
+ This is a simplified parser and lexer that we can throw at strings passed to eval
+ in case a site is using eval to parse JSON (eg. json2.js). The lexer is intentionally
+ limited (in effect it's whitelisting a limited "common" subset of the JSON grammar)
+ as this decreases the likelihood of us wating time attempting to parse any significant
+ amount of non-JSON content.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::callEval):
* runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncEval):
+ * runtime/LiteralParser.cpp: Added.
+ (JSC::isStringCharacter):
+ (JSC::LiteralParser::Lexer::lex):
+ (JSC::LiteralParser::Lexer::lexString):
+ (JSC::LiteralParser::Lexer::lexNumber):
+ (JSC::LiteralParser::parseStatement):
+ (JSC::LiteralParser::parseExpression):
+ (JSC::LiteralParser::parseArray):
+ (JSC::LiteralParser::parseObject):
+ (JSC::LiteralParser::StackGuard::StackGuard):
+ (JSC::LiteralParser::StackGuard::~StackGuard):
+ (JSC::LiteralParser::StackGuard::isSafe):
+ * runtime/LiteralParser.h: Added.
+ (JSC::LiteralParser::LiteralParser):
+ (JSC::LiteralParser::attemptJSONParse):
+ (JSC::LiteralParser::):
+ (JSC::LiteralParser::Lexer::Lexer):
+ (JSC::LiteralParser::Lexer::next):
+ (JSC::LiteralParser::Lexer::currentToken):
+ (JSC::LiteralParser::abortParse):
+
+2009-05-08 Geoffrey Garen <ggaren@apple.com>
+
+ Not reviewed.
+
+ Restored a Mozilla JS test I accidentally gutted.
+
+ * tests/mozilla/ecma/Array/15.4.4.2.js:
+ (getTestCases):
+ (test):
+
+2009-05-08 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ More abstraction for JITStub calls from JITed code.
+
+ Added a JITStubCall class that automatically handles things like assigning
+ arguments to different stack slots and storing return values. Deployed
+ the class in about a billion places. A bunch more places remain to be
+ fixed up, but this is a good stopping point for now.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::emitTimeoutCheck):
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ (JSC::JIT::privateCompile):
+ * jit/JIT.h:
+ (JSC::JIT::JSRInfo::JSRInfo):
+ (JSC::JITStubCall::JITStubCall):
+ (JSC::JITStubCall::addArgument):
+ (JSC::JITStubCall::call):
+ (JSC::JITStubCall::):
+ (JSC::CallEvalJITStub::CallEvalJITStub):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArithSlow_op_lshift):
+ (JSC::JIT::compileFastArithSlow_op_rshift):
+ (JSC::JIT::compileFastArithSlow_op_jnless):
+ (JSC::JIT::compileFastArithSlow_op_bitand):
+ (JSC::JIT::compileFastArithSlow_op_mod):
+ (JSC::JIT::compileFastArith_op_mod):
+ (JSC::JIT::compileFastArithSlow_op_post_inc):
+ (JSC::JIT::compileFastArithSlow_op_post_dec):
+ (JSC::JIT::compileFastArithSlow_op_pre_inc):
+ (JSC::JIT::compileFastArithSlow_op_pre_dec):
+ (JSC::JIT::compileFastArith_op_add):
+ (JSC::JIT::compileFastArith_op_mul):
+ (JSC::JIT::compileFastArith_op_sub):
+ (JSC::JIT::compileBinaryArithOpSlowCase):
+ (JSC::JIT::compileFastArithSlow_op_add):
+ (JSC::JIT::compileFastArithSlow_op_mul):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ (JSC::):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compilePutByIdHotPath):
+ (JSC::JIT::compileGetByIdSlowCase):
+ (JSC::JIT::compilePutByIdSlowCase):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_resolve_func):
+ (JSC::JITStubs::cti_op_resolve_with_base):
+
+2009-05-08 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Maciej Stachowiak.
+
+ Add a new opcode jnlesseq, and optimize its compilation in the JIT using
+ techniques similar to what were used to optimize jnless in r43363.
+
+ This gives a 0.7% speedup on SunSpider, particularly on the tests 3d-cube,
+ control-flow-recursive, date-format-xparb, and string-base64.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump): Add support for dumping op_jnlesseq.
+ * bytecode/Opcode.h: Add op_jnlesseq to the list of opcodes.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitJumpIfFalse): Add a peephole optimization
+ for op_jnlesseq when emitting lesseq followed by a jump.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute): Add case for op_jnlesseq.
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass): Add case for op_jnlesseq.
+ (JSC::JIT::privateCompileSlowCases): Add case for op_jnlesseq.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_jnlesseq): Added.
+ (JSC::JIT::compileFastArithSlow_op_jnlesseq): Added.
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_jlesseq): Added.
+ * jit/JITStubs.h:
+
+2009-05-08 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ - fix test failures on 64-bit
+
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArithSlow_op_jnless): Avoid accidentaly treating an
+ immediate int as an immediate float in the 64-bit value representation.
+
+2009-05-08 Gavin Barraclough <barraclough@apple.com>
+
+ Rubber stamped by Oliver Hunt.
+
+ Removing an empty constructor and an uncalled, empty function seems to be a
+ pretty solid 1% regeression on my machine, so I'm going to put them back.
+ Um. Yeah, this this pretty pointles and makes no sense at all. I officially
+ lose the will to live in 3... 2...
+
+ * bytecode/SamplingTool.cpp:
+ (JSC::SamplingTool::notifyOfScope):
+ * bytecode/SamplingTool.h:
+ (JSC::SamplingTool::~SamplingTool):
+
+2009-05-08 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver "I see lots of ifdefs" Hunt.
+
+ Fix (kinda) for sampling tool breakage. The codeblock sampling tool has become
+ b0rked due to recent changes in native function calling. The initialization of
+ a ScopeNode appears to now occur before the sampling tool (or possibly the
+ interpreter has been brought into existence, wihich leads to crashyness).
+
+ This patch doesn't fix the problem. The crash occurs when tracking a Scope, but
+ we shouldn't need to track scopes when we're just sampling opcodes, not
+ codeblocks. Not retaining Scopes when just opcode sampling will reduce sampling
+ overhead reducing any instrumentation skew, which is a good thing. As a side
+ benefit this patch also gets the opcode sampling going again, albeit in a bit of
+ a lame way. Will come back later with a proper fix from codeblock sampling.
+
+ * JavaScriptCore.exp:
+ * bytecode/SamplingTool.cpp:
+ (JSC::compareLineCountInfoSampling):
+ (JSC::SamplingTool::dump):
+ * bytecode/SamplingTool.h:
+ (JSC::SamplingTool::SamplingTool):
+ * parser/Nodes.cpp:
+ (JSC::ScopeNode::ScopeNode):
+
+2009-05-07 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Oliver Hunt.
+
+ Fix <https://bugs.webkit.org/show_bug.cgi?id=25640>.
+ Bug 25640: Crash on quit in r43384 nightly build on Leopard w/ Safari 4 beta installed
+
+ Roll out r43366 as it removed symbols that Safari 4 Beta uses.
+
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ * bytecode/SamplingTool.cpp:
+ (JSC::SamplingThread::start):
+ (JSC::SamplingThread::stop):
+ * bytecode/SamplingTool.h:
+ * wtf/CrossThreadRefCounted.h:
+ (WTF::CrossThreadRefCounted::CrossThreadRefCounted):
+ (WTF::::ref):
+ (WTF::::deref):
+ * wtf/Threading.h:
+ * wtf/ThreadingNone.cpp:
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::threadMapMutex):
+ (WTF::initializeThreading):
+ (WTF::threadMap):
+ (WTF::identifierByPthreadHandle):
+ (WTF::establishIdentifierForPthreadHandle):
+ (WTF::pthreadHandleForIdentifier):
+ (WTF::clearPthreadHandleForIdentifier):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::detachThread):
+ (WTF::currentThread):
+ * wtf/ThreadingWin.cpp:
+ (WTF::threadMapMutex):
+ (WTF::initializeThreading):
+ (WTF::threadMap):
+ (WTF::storeThreadHandleByIdentifier):
+ (WTF::threadHandleForIdentifier):
+ (WTF::clearThreadHandleForIdentifier):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::detachThread):
+ (WTF::currentThread):
+ * wtf/gtk/ThreadingGtk.cpp:
+ (WTF::threadMapMutex):
+ (WTF::initializeThreading):
+ (WTF::threadMap):
+ (WTF::identifierByGthreadHandle):
+ (WTF::establishIdentifierForThread):
+ (WTF::threadForIdentifier):
+ (WTF::clearThreadForIdentifier):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::currentThread):
+ * wtf/qt/ThreadingQt.cpp:
+ (WTF::threadMapMutex):
+ (WTF::threadMap):
+ (WTF::identifierByQthreadHandle):
+ (WTF::establishIdentifierForThread):
+ (WTF::clearThreadForIdentifier):
+ (WTF::threadForIdentifier):
+ (WTF::initializeThreading):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::currentThread):
+
+2009-05-07 Gustavo Noronha Silva <gns@gnome.org>
+
+ Suggested by Oliver Hunt.
+
+ Also check for Linux for the special-cased calling convention.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * wtf/Platform.h:
+
+2009-05-07 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Previously, when appending to an existing string and growing the underlying buffer,
+ we would actually allocate 110% of the required size in order to give us some space
+ to expand into. Now we treat strings differently based on their size:
+
+ Small Strings (up to 4 pages):
+ Expand the allocation size to 112.5% of the amount requested. This is largely sicking
+ to our previous policy, however 112.5% is cheaper to calculate.
+
+ Medium Strings (up to 128 pages):
+ For pages covering multiple pages over-allocation is less of a concern - any unused
+ space will not be paged in if it is not used, so this is purely a VM overhead. For
+ these strings allocate 2x the requested size.
+
+ Large Strings (to infinity and beyond!):
+ Revert to our 112.5% policy - probably best to limit the amount of unused VM we allow
+ any individual string be responsible for.
+
+ Additionally, round small allocations up to a multiple of 16 bytes, and medium and
+ large allocations up to a multiple of page size.
+
+ ~1.5% progression on Sunspider, due to 5% improvement on tagcloud & 15% on validate.
+
+ * runtime/UString.cpp:
+ (JSC::expandedSize):
+
+2009-05-07 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Fixed a minor sequencing error introduced by recent Parser speedups.
+
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::createNativeThunk): Missed a spot in my last patch.
+
+2009-05-07 Geoffrey Garen <ggaren@apple.com>
+
+ Not reviewed.
+
+ * wtf/Platform.h: Reverted an accidental (and performance-catastrophic)
+ change.
+
+2009-05-07 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Fixed a minor sequencing error introduced by recent Parser speedups.
+
+ * parser/Parser.cpp:
+ (JSC::Parser::reparseInPlace): Missed a spot in my last patch.
+
+2009-05-07 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Fixed a minor sequencing error introduced by recent Parser speedups.
+
+ * parser/Parser.cpp:
+ (JSC::Parser::parse):
+ * parser/Parser.h:
+ (JSC::Parser::parse):
+ (JSC::Parser::reparse): Shrink the parsedObjects vector after allocating
+ the root node, to avoid leaving a stray node in the vector, since that's
+ a slight memory leak, and it causes problems during JSGlobalData teardown.
+
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::~JSGlobalData): ASSERT that we're not being torn
+ down while we think we're still parsing, since that would cause lots of
+ bad memory references during our destruction.
+
+2009-05-07 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Replaced two more macros with references to the JITStackFrame structure.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::restoreArgumentReference):
+ * jit/JITStubs.cpp:
+ (JSC::):
+ * jit/JITStubs.h:
+
+2009-05-07 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Improve native call performance
+
+ Fix the windows build by adding calling convention declarations everywhere,
+ chose fastcall as that seemed most sensible given we were having to declare
+ the convention explicitly. In addition switched to fastcall on mac in the
+ deluded belief that documented fastcall behavior on windows would match
+ actual its actual behavior.
+
+ * API/JSCallbackFunction.h:
+ * API/JSCallbackObject.h:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::argumentCount):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jsc.cpp:
+ (functionPrint):
+ (functionDebug):
+ (functionGC):
+ (functionVersion):
+ (functionRun):
+ (functionLoad):
+ (functionSetSamplingFlags):
+ (functionClearSamplingFlags):
+ (functionReadline):
+ (functionQuit):
+ * runtime/ArrayConstructor.cpp:
+ (JSC::callArrayConstructor):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncToString):
+ (JSC::arrayProtoFuncToLocaleString):
+ (JSC::arrayProtoFuncJoin):
+ (JSC::arrayProtoFuncConcat):
+ (JSC::arrayProtoFuncPop):
+ (JSC::arrayProtoFuncPush):
+ (JSC::arrayProtoFuncReverse):
+ (JSC::arrayProtoFuncShift):
+ (JSC::arrayProtoFuncSlice):
+ (JSC::arrayProtoFuncSort):
+ (JSC::arrayProtoFuncSplice):
+ (JSC::arrayProtoFuncUnShift):
+ (JSC::arrayProtoFuncFilter):
+ (JSC::arrayProtoFuncMap):
+ (JSC::arrayProtoFuncEvery):
+ (JSC::arrayProtoFuncForEach):
+ (JSC::arrayProtoFuncSome):
+ (JSC::arrayProtoFuncReduce):
+ (JSC::arrayProtoFuncReduceRight):
+ (JSC::arrayProtoFuncIndexOf):
+ (JSC::arrayProtoFuncLastIndexOf):
+ * runtime/BooleanConstructor.cpp:
+ (JSC::callBooleanConstructor):
+ * runtime/BooleanPrototype.cpp:
+ (JSC::booleanProtoFuncToString):
+ (JSC::booleanProtoFuncValueOf):
+ * runtime/CallData.h:
+ * runtime/DateConstructor.cpp:
+ (JSC::callDate):
+ (JSC::dateParse):
+ (JSC::dateNow):
+ (JSC::dateUTC):
+ * runtime/DatePrototype.cpp:
+ (JSC::dateProtoFuncToString):
+ (JSC::dateProtoFuncToUTCString):
+ (JSC::dateProtoFuncToDateString):
+ (JSC::dateProtoFuncToTimeString):
+ (JSC::dateProtoFuncToLocaleString):
+ (JSC::dateProtoFuncToLocaleDateString):
+ (JSC::dateProtoFuncToLocaleTimeString):
+ (JSC::dateProtoFuncGetTime):
+ (JSC::dateProtoFuncGetFullYear):
+ (JSC::dateProtoFuncGetUTCFullYear):
+ (JSC::dateProtoFuncToGMTString):
+ (JSC::dateProtoFuncGetMonth):
+ (JSC::dateProtoFuncGetUTCMonth):
+ (JSC::dateProtoFuncGetDate):
+ (JSC::dateProtoFuncGetUTCDate):
+ (JSC::dateProtoFuncGetDay):
+ (JSC::dateProtoFuncGetUTCDay):
+ (JSC::dateProtoFuncGetHours):
+ (JSC::dateProtoFuncGetUTCHours):
+ (JSC::dateProtoFuncGetMinutes):
+ (JSC::dateProtoFuncGetUTCMinutes):
+ (JSC::dateProtoFuncGetSeconds):
+ (JSC::dateProtoFuncGetUTCSeconds):
+ (JSC::dateProtoFuncGetMilliSeconds):
+ (JSC::dateProtoFuncGetUTCMilliseconds):
+ (JSC::dateProtoFuncGetTimezoneOffset):
+ (JSC::dateProtoFuncSetTime):
+ (JSC::dateProtoFuncSetMilliSeconds):
+ (JSC::dateProtoFuncSetUTCMilliseconds):
+ (JSC::dateProtoFuncSetSeconds):
+ (JSC::dateProtoFuncSetUTCSeconds):
+ (JSC::dateProtoFuncSetMinutes):
+ (JSC::dateProtoFuncSetUTCMinutes):
+ (JSC::dateProtoFuncSetHours):
+ (JSC::dateProtoFuncSetUTCHours):
+ (JSC::dateProtoFuncSetDate):
+ (JSC::dateProtoFuncSetUTCDate):
+ (JSC::dateProtoFuncSetMonth):
+ (JSC::dateProtoFuncSetUTCMonth):
+ (JSC::dateProtoFuncSetFullYear):
+ (JSC::dateProtoFuncSetUTCFullYear):
+ (JSC::dateProtoFuncSetYear):
+ (JSC::dateProtoFuncGetYear):
+ * runtime/ErrorConstructor.cpp:
+ (JSC::callErrorConstructor):
+ * runtime/ErrorPrototype.cpp:
+ (JSC::errorProtoFuncToString):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::callFunctionConstructor):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::callFunctionPrototype):
+ (JSC::functionProtoFuncToString):
+ (JSC::functionProtoFuncApply):
+ (JSC::functionProtoFuncCall):
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::nativeFunction):
+ (JSC::JSFunction::setScopeChain):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncEval):
(JSC::globalFuncParseInt):
+ (JSC::globalFuncParseFloat):
+ (JSC::globalFuncIsNaN):
+ (JSC::globalFuncIsFinite):
+ (JSC::globalFuncDecodeURI):
+ (JSC::globalFuncDecodeURIComponent):
+ (JSC::globalFuncEncodeURI):
+ (JSC::globalFuncEncodeURIComponent):
+ (JSC::globalFuncEscape):
+ (JSC::globalFuncUnescape):
+ (JSC::globalFuncJSCPrint):
+ * runtime/JSGlobalObjectFunctions.h:
+ * runtime/MathObject.cpp:
+ (JSC::mathProtoFuncAbs):
+ (JSC::mathProtoFuncACos):
+ (JSC::mathProtoFuncASin):
+ (JSC::mathProtoFuncATan):
+ (JSC::mathProtoFuncATan2):
+ (JSC::mathProtoFuncCeil):
+ (JSC::mathProtoFuncCos):
+ (JSC::mathProtoFuncExp):
+ (JSC::mathProtoFuncFloor):
+ (JSC::mathProtoFuncLog):
+ (JSC::mathProtoFuncMax):
+ (JSC::mathProtoFuncMin):
+ (JSC::mathProtoFuncPow):
+ (JSC::mathProtoFuncRandom):
+ (JSC::mathProtoFuncRound):
+ (JSC::mathProtoFuncSin):
+ (JSC::mathProtoFuncSqrt):
+ (JSC::mathProtoFuncTan):
+ * runtime/NativeErrorConstructor.cpp:
+ (JSC::callNativeErrorConstructor):
+ * runtime/NativeFunctionWrapper.h:
+ * runtime/NumberConstructor.cpp:
+ (JSC::callNumberConstructor):
+ * runtime/NumberPrototype.cpp:
+ (JSC::numberProtoFuncToString):
+ (JSC::numberProtoFuncToLocaleString):
+ (JSC::numberProtoFuncValueOf):
+ (JSC::numberProtoFuncToFixed):
+ (JSC::numberProtoFuncToExponential):
+ (JSC::numberProtoFuncToPrecision):
+ * runtime/ObjectConstructor.cpp:
+ (JSC::callObjectConstructor):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::objectProtoFuncValueOf):
+ (JSC::objectProtoFuncHasOwnProperty):
+ (JSC::objectProtoFuncIsPrototypeOf):
+ (JSC::objectProtoFuncDefineGetter):
+ (JSC::objectProtoFuncDefineSetter):
+ (JSC::objectProtoFuncLookupGetter):
+ (JSC::objectProtoFuncLookupSetter):
+ (JSC::objectProtoFuncPropertyIsEnumerable):
+ (JSC::objectProtoFuncToLocaleString):
+ (JSC::objectProtoFuncToString):
+ * runtime/ObjectPrototype.h:
+ * runtime/RegExpConstructor.cpp:
+ (JSC::callRegExpConstructor):
+ * runtime/RegExpObject.cpp:
+ (JSC::callRegExpObject):
+ * runtime/RegExpPrototype.cpp:
+ (JSC::regExpProtoFuncTest):
+ (JSC::regExpProtoFuncExec):
+ (JSC::regExpProtoFuncCompile):
+ (JSC::regExpProtoFuncToString):
+ * runtime/StringConstructor.cpp:
+ (JSC::stringFromCharCode):
+ (JSC::callStringConstructor):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+ (JSC::stringProtoFuncToString):
+ (JSC::stringProtoFuncCharAt):
+ (JSC::stringProtoFuncCharCodeAt):
+ (JSC::stringProtoFuncConcat):
+ (JSC::stringProtoFuncIndexOf):
+ (JSC::stringProtoFuncLastIndexOf):
+ (JSC::stringProtoFuncMatch):
+ (JSC::stringProtoFuncSearch):
+ (JSC::stringProtoFuncSlice):
+ (JSC::stringProtoFuncSplit):
+ (JSC::stringProtoFuncSubstr):
+ (JSC::stringProtoFuncSubstring):
+ (JSC::stringProtoFuncToLowerCase):
+ (JSC::stringProtoFuncToUpperCase):
+ (JSC::stringProtoFuncLocaleCompare):
+ (JSC::stringProtoFuncBig):
+ (JSC::stringProtoFuncSmall):
+ (JSC::stringProtoFuncBlink):
+ (JSC::stringProtoFuncBold):
+ (JSC::stringProtoFuncFixed):
+ (JSC::stringProtoFuncItalics):
+ (JSC::stringProtoFuncStrike):
+ (JSC::stringProtoFuncSub):
+ (JSC::stringProtoFuncSup):
+ (JSC::stringProtoFuncFontcolor):
+ (JSC::stringProtoFuncFontsize):
+ (JSC::stringProtoFuncAnchor):
+ (JSC::stringProtoFuncLink):
+ * wtf/Platform.h:
-2009-01-13 Beth Dakin <bdakin@apple.com>
+2009-05-07 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Darin Adler and Oliver Hunt.
+ Not reviewed.
+
+ Rolled out a portion of r43352 because it broke 64bit.
- <rdar://problem/6489314> REGRESSION: Business widget's front side
- fails to render correctly when flipping widget
+ * jit/JITStubs.h:
- The problem here is that parseInt was parsing NaN as 0. This patch
- corrects that by parsing NaN as NaN. This matches our old behavior
- and Firefox.
+2009-05-07 Kevin Ollivier <kevino@theolliviers.com>
+
+ Build fix for functions reaturning ThreadIdentifier.
+
+ * wtf/ThreadingNone.cpp:
+ (WTF::createThreadInternal):
+ (WTF::currentThread):
+
+2009-05-07 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by John Honeycutt.
+
+ - enable optimization case im the last patch that I accidentally had disabled.
+
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArithSlow_op_jnless):
+
+2009-05-07 Dmitry Titov <dimich@chromium.org>
+
+ Attempt to fix Win build.
+
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArithSlow_op_jnless):
+
+2009-05-07 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov and Adam Roben.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25348
+ Change WTF::ThreadIdentifier to be an actual (but wrapped) thread id, remove ThreadMap.
+
+ * wtf/Threading.h:
+ (WTF::ThreadIdentifier::ThreadIdentifier):
+ (WTF::ThreadIdentifier::isValid):
+ (WTF::ThreadIdentifier::invalidate):
+ (WTF::ThreadIdentifier::platformId):
+ ThreadIdentifier is now a class, containing a PlatformThreadIdentifier and
+ methods that are used across the code on thread ids: construction, comparisons,
+ check for 'valid' state etc. '0' is used as invalid id, which happens to just work
+ with all platform-specific thread id implementations.
+
+ All the following files repeatedly reflect the new ThreadIdentifier for each platform.
+ We remove ThreadMap and threadMapMutex from all of them, remove the functions that
+ populated/searched/cleared the map and add platform-specific comparison operators
+ for ThreadIdentifier.
+
+ * wtf/gtk/ThreadingGtk.cpp:
+ (WTF::ThreadIdentifier::operator==):
+ (WTF::ThreadIdentifier::operator!=):
+ (WTF::initializeThreading):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::currentThread):
+
+ * wtf/ThreadingNone.cpp:
+ (WTF::ThreadIdentifier::operator==):
+ (WTF::ThreadIdentifier::operator!=):
+
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::ThreadIdentifier::operator==):
+ (WTF::ThreadIdentifier::operator!=):
+ (WTF::initializeThreading):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::detachThread):
+ (WTF::currentThread):
+
+ * wtf/qt/ThreadingQt.cpp:
+ (WTF::ThreadIdentifier::operator==):
+ (WTF::ThreadIdentifier::operator!=):
+ (WTF::initializeThreading):
+ (WTF::createThreadInternal):
+ (WTF::waitForThreadCompletion):
+ (WTF::currentThread):
+
+ * wtf/ThreadingWin.cpp:
+ (WTF::ThreadIdentifier::operator==):
+ (WTF::ThreadIdentifier::operator!=):
+ (WTF::initializeThreading):
+ (WTF::createThreadInternal): All the platforms (except Windows) used a sequential
+ counter as a thread ID and mapped it into platform ID. Windows was using native thread
+ id and mapped it into thread handle. Since we can always obtain a thread handle
+ by thread id, createThread now closes the handle.
+ (WTF::waitForThreadCompletion): obtains another one using OpenThread(id) API. If can not obtain a handle,
+ it means the thread already exited.
+ (WTF::detachThread):
+ (WTF::currentThread):
+ (WTF::detachThreadDeprecated): old function, renamed (for Win Safari 4 beta which uses it for now).
+ (WTF::waitForThreadCompletionDeprecated): same.
+ (WTF::currentThreadDeprecated): same.
+ (WTF::createThreadDeprecated): same.
+
+ * bytecode/SamplingTool.h:
+ * bytecode/SamplingTool.cpp: Use DEFINE_STATIC_LOCAL for a static ThreadIdentifier variable, to avoid static constructor.
+
+ * JavaScriptCore.exp: export lists - updated the WTF threading functions decorated names
+ since they now take a different type as a parameter.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: ditto for Windows, plus added "deprecated" functions
+ that take old parameter type - turns out public beta of Safari 4 uses those, so they need to be kept along for a while.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: ditto.
+
+2009-05-07 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - optimize various cases of branch-fused less
+
+ 1% speedup on SunSpider overall
+ 13% speedup on math-cordic
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ op_loop_if_less: Optimize case of constant as first operand, just as case of constant as
+ second operand.
+ op_jnless: Factored out into compileFastArith_op_jnless.
+ (JSC::JIT::privateCompileSlowCases):
+ op_jnless: Factored out into compileFastArithSlow_op_jnless.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_jnless): Factored out from main compile loop.
+ - Generate inline code for comparison of constant immediate int as first operand to another
+ immediate int, as for loop_if_less
+
+ (JSC::JIT::compileFastArithSlow_op_jnless):
+ - Generate inline code for comparing two floating point numbers.
+ - Generate code for both cases of comparing a floating point number to a constant immediate
+ int.
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump): Fix dumping of op_jnless (tangentially related bugfix).
+
+2009-05-07 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Added the return address of a stub function to the JITStackFrame abstraction.
+
+ * jit/JIT.cpp:
+ * jit/JIT.h:
+ * jit/JITStubs.cpp:
+ (JSC::):
+ (JSC::StackHack::StackHack):
+ (JSC::StackHack::~StackHack):
+ (JSC::returnToThrowTrampoline):
+ (JSC::JITStubs::cti_op_convert_this):
+ (JSC::JITStubs::cti_op_end):
+ (JSC::JITStubs::cti_op_add):
+ (JSC::JITStubs::cti_op_pre_inc):
+ (JSC::JITStubs::cti_timeout_check):
+ (JSC::JITStubs::cti_register_file_check):
+ (JSC::JITStubs::cti_op_loop_if_less):
+ (JSC::JITStubs::cti_op_loop_if_lesseq):
+ (JSC::JITStubs::cti_op_new_object):
+ (JSC::JITStubs::cti_op_put_by_id_generic):
+ (JSC::JITStubs::cti_op_get_by_id_generic):
+ (JSC::JITStubs::cti_op_put_by_id):
+ (JSC::JITStubs::cti_op_put_by_id_second):
+ (JSC::JITStubs::cti_op_put_by_id_fail):
+ (JSC::JITStubs::cti_op_get_by_id):
+ (JSC::JITStubs::cti_op_get_by_id_second):
+ (JSC::JITStubs::cti_op_get_by_id_self_fail):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list_full):
+ (JSC::JITStubs::cti_op_get_by_id_proto_fail):
+ (JSC::JITStubs::cti_op_get_by_id_array_fail):
+ (JSC::JITStubs::cti_op_get_by_id_string_fail):
+ (JSC::JITStubs::cti_op_instanceof):
+ (JSC::JITStubs::cti_op_del_by_id):
+ (JSC::JITStubs::cti_op_mul):
+ (JSC::JITStubs::cti_op_new_func):
+ (JSC::JITStubs::cti_op_call_JSFunction):
+ (JSC::JITStubs::cti_op_call_arityCheck):
+ (JSC::JITStubs::cti_vm_dontLazyLinkCall):
+ (JSC::JITStubs::cti_vm_lazyLinkCall):
+ (JSC::JITStubs::cti_op_push_activation):
+ (JSC::JITStubs::cti_op_call_NotJSFunction):
+ (JSC::JITStubs::cti_op_create_arguments):
+ (JSC::JITStubs::cti_op_create_arguments_no_params):
+ (JSC::JITStubs::cti_op_tear_off_activation):
+ (JSC::JITStubs::cti_op_tear_off_arguments):
+ (JSC::JITStubs::cti_op_profile_will_call):
+ (JSC::JITStubs::cti_op_profile_did_call):
+ (JSC::JITStubs::cti_op_ret_scopeChain):
+ (JSC::JITStubs::cti_op_new_array):
+ (JSC::JITStubs::cti_op_resolve):
+ (JSC::JITStubs::cti_op_construct_JSConstruct):
+ (JSC::JITStubs::cti_op_construct_NotJSConstruct):
+ (JSC::JITStubs::cti_op_get_by_val):
+ (JSC::JITStubs::cti_op_get_by_val_string):
+ (JSC::JITStubs::cti_op_get_by_val_byte_array):
+ (JSC::JITStubs::cti_op_resolve_func):
+ (JSC::JITStubs::cti_op_sub):
+ (JSC::JITStubs::cti_op_put_by_val):
+ (JSC::JITStubs::cti_op_put_by_val_array):
+ (JSC::JITStubs::cti_op_put_by_val_byte_array):
+ (JSC::JITStubs::cti_op_lesseq):
+ (JSC::JITStubs::cti_op_loop_if_true):
+ (JSC::JITStubs::cti_op_load_varargs):
+ (JSC::JITStubs::cti_op_negate):
+ (JSC::JITStubs::cti_op_resolve_base):
+ (JSC::JITStubs::cti_op_resolve_skip):
+ (JSC::JITStubs::cti_op_resolve_global):
+ (JSC::JITStubs::cti_op_div):
+ (JSC::JITStubs::cti_op_pre_dec):
+ (JSC::JITStubs::cti_op_jless):
+ (JSC::JITStubs::cti_op_not):
+ (JSC::JITStubs::cti_op_jtrue):
+ (JSC::JITStubs::cti_op_post_inc):
+ (JSC::JITStubs::cti_op_eq):
+ (JSC::JITStubs::cti_op_lshift):
+ (JSC::JITStubs::cti_op_bitand):
+ (JSC::JITStubs::cti_op_rshift):
+ (JSC::JITStubs::cti_op_bitnot):
+ (JSC::JITStubs::cti_op_resolve_with_base):
+ (JSC::JITStubs::cti_op_new_func_exp):
+ (JSC::JITStubs::cti_op_mod):
+ (JSC::JITStubs::cti_op_less):
+ (JSC::JITStubs::cti_op_neq):
+ (JSC::JITStubs::cti_op_post_dec):
+ (JSC::JITStubs::cti_op_urshift):
+ (JSC::JITStubs::cti_op_bitxor):
+ (JSC::JITStubs::cti_op_new_regexp):
+ (JSC::JITStubs::cti_op_bitor):
+ (JSC::JITStubs::cti_op_call_eval):
+ (JSC::JITStubs::cti_op_throw):
+ (JSC::JITStubs::cti_op_get_pnames):
+ (JSC::JITStubs::cti_op_next_pname):
+ (JSC::JITStubs::cti_op_push_scope):
+ (JSC::JITStubs::cti_op_pop_scope):
+ (JSC::JITStubs::cti_op_typeof):
+ (JSC::JITStubs::cti_op_is_undefined):
+ (JSC::JITStubs::cti_op_is_boolean):
+ (JSC::JITStubs::cti_op_is_number):
+ (JSC::JITStubs::cti_op_is_string):
+ (JSC::JITStubs::cti_op_is_object):
+ (JSC::JITStubs::cti_op_is_function):
+ (JSC::JITStubs::cti_op_stricteq):
+ (JSC::JITStubs::cti_op_to_primitive):
+ (JSC::JITStubs::cti_op_strcat):
+ (JSC::JITStubs::cti_op_nstricteq):
+ (JSC::JITStubs::cti_op_to_jsnumber):
+ (JSC::JITStubs::cti_op_in):
+ (JSC::JITStubs::cti_op_push_new_scope):
+ (JSC::JITStubs::cti_op_jmp_scopes):
+ (JSC::JITStubs::cti_op_put_by_index):
+ (JSC::JITStubs::cti_op_switch_imm):
+ (JSC::JITStubs::cti_op_switch_char):
+ (JSC::JITStubs::cti_op_switch_string):
+ (JSC::JITStubs::cti_op_del_by_val):
+ (JSC::JITStubs::cti_op_put_getter):
+ (JSC::JITStubs::cti_op_put_setter):
+ (JSC::JITStubs::cti_op_new_error):
+ (JSC::JITStubs::cti_op_debug):
+ (JSC::JITStubs::cti_vm_throw):
+ * jit/JITStubs.h:
+ (JSC::JITStackFrame::returnAddressSlot):
+
+2009-05-07 Darin Adler <darin@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ * parser/Lexer.cpp:
+ (JSC::Lexer::lex): Fix missing braces. This would make us always
+ take the slower case for string parsing and Visual Studio correctly
+ noticed unreachable code.
+
+2009-05-07 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 25589: goto instead of state machine in lexer
+ https://bugs.webkit.org/show_bug.cgi?id=25589
+
+ SunSpider is 0.8% faster.
+
+ * parser/Lexer.cpp:
+ (JSC::Lexer::currentCharacter): Added.
+ (JSC::Lexer::currentOffset): Changed to call currentCharacter for clarity.
+ (JSC::Lexer::setCode): Removed code to set now-obsolete m_skipLineEnd.
+ (JSC::Lexer::shiftLineTerminator): Added. Handles line numbers and the
+ two-character line terminators.
+ (JSC::Lexer::makeIdentifier): Changed to take characters and length rather
+ than a vector, since we now make these directly out of the source buffer
+ when possible.
+ (JSC::Lexer::lastTokenWasRestrKeyword): Added.
+ (JSC::isNonASCIIIdentStart): Broke out the non-inline part.
+ (JSC::isIdentStart): Moved here.
+ (JSC::isNonASCIIIdentPart): Broke out the non-inline part.
+ (JSC::isIdentPart): Moved here.
+ (JSC::singleEscape): Moved here, and removed some unneeded cases.
+ (JSC::Lexer::record8): Moved here.
+ (JSC::Lexer::record16): Moved here.
+ (JSC::Lexer::lex): Rewrote this whole function to use goto and not use
+ a state machine. Got rid of most of the local variables. Also rolled the
+ matchPunctuator function in here.
+ (JSC::Lexer::scanRegExp): Changed to use the new version of isLineTerminator.
+ Clear m_buffer16 after using it instead of before.
+
+ * parser/Lexer.h: Removed State enum, setDone function, nextLine function,
+ lookupKeywordFunction, one of the isLineTerminator functions, m_done data member,
+ m_skipLineEnd data member, and m_state data member. Added shiftLineTerminator
+ function, currentCharacter function, and changed the arguments to the makeIdentifier
+ function. Removed one branch from the isLineTerminator function.
+
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace): Streamlined the case where we don't replace anything.
+
+2009-05-07 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Removed a few more special constants, and replaced them with uses of
+ the JITStackFrame struct.
+
+ Removed one of the two possible definitions of VoidPtrPair. The Mac
+ definition was more elegant, but SunSpider doesn't think it's any
+ faster, and it's net less elegant to have two ways of doing things.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompile):
+ * jit/JITStubs.h:
+ (JSC::):
+
+2009-05-07 Darin Adler <darin@apple.com>
+
+ * runtime/ScopeChain.h:
+ (JSC::ScopeChainNode::~ScopeChainNode): Tweak formatting.
+
+2009-05-07 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ Fix the build thread stack base determination build on Symbian,
+ by moving the code block before PLATFORM(UNIX), which is also
+ enabled on Symbian builds.
+
+ * runtime/Collector.cpp:
+ (JSC::currentThreadStackBase):
+
+2009-05-07 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Fix crash due to incorrectly using an invalid scopechain
+
+ stringProtoFuncReplace was checking for an exception on a CachedCall
+ by asking for the cached callframes exception. Unfortunately this
+ could crash in certain circumstances as CachedCall does not guarantee
+ a valid callframe following a call. Even more unfortunately the check
+ was entirely unnecessary as there is only a single exception slot per
+ global data, so it was already checked via the initial exec->hadException()
+ check.
+
+ To make bugs like this more obvious, i've added a debug only destructor
+ to ScopeChainNode that 0's all of its fields. This exposed a crash in
+ the standard javascriptcore tests.
+
+ * runtime/ScopeChain.h:
+ (JSC::ScopeChainNode::~ScopeChainNode):
+ (JSC::ScopeChain::~ScopeChain):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+
+2009-05-07 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Enable op_strcat across += assignments. This patch allows the lhs of a read/modify node
+ to be included within the concatenation operation, and also modifies the implementation
+ of the concatenation to attempt to reuse and cat onto the leftmost string, rather than
+ always allocating a new empty output string to copy into (as was previously the behaviour).
+
+ ~0.5% progression, due to a 3%-3.5% progression on the string tests (particularly validate).
+
+ * parser/Nodes.cpp:
+ (JSC::BinaryOpNode::emitStrcat):
+ (JSC::emitReadModifyAssignment):
+ (JSC::ReadModifyResolveNode::emitBytecode):
+ (JSC::ReadModifyDotNode::emitBytecode):
+ (JSC::ReadModifyBracketNode::emitBytecode):
+ * parser/Nodes.h:
+ * runtime/Operations.h:
+ (JSC::concatenateStrings):
+ * runtime/UString.cpp:
+ (JSC::UString::reserveCapacity):
+ * runtime/UString.h:
+
+2009-05-07 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix the build on Windows without JIT: interpreter/RegisterFile.h needs
+ roundUpAllocationSize, which is protected by #if ENABLED(ASSEMBLER).
+ Moved the #ifdef down and always offer the function.
+
+ * jit/ExecutableAllocator.h:
+
+2009-05-06 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Gavin "++" Barraclough.
+
+ Added some abstraction around the JIT stub calling convention by creating
+ a struct to represent the persistent stack frame JIT code shares with
+ JIT stubs.
+
+ SunSpider reports no change.
+
+ * jit/JIT.h:
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_convert_this):
+ (JSC::JITStubs::cti_op_end):
+ (JSC::JITStubs::cti_op_add):
+ (JSC::JITStubs::cti_op_pre_inc):
+ (JSC::JITStubs::cti_timeout_check):
+ (JSC::JITStubs::cti_register_file_check):
+ (JSC::JITStubs::cti_op_loop_if_less):
+ (JSC::JITStubs::cti_op_loop_if_lesseq):
+ (JSC::JITStubs::cti_op_new_object):
+ (JSC::JITStubs::cti_op_put_by_id_generic):
+ (JSC::JITStubs::cti_op_get_by_id_generic):
+ (JSC::JITStubs::cti_op_put_by_id):
+ (JSC::JITStubs::cti_op_put_by_id_second):
+ (JSC::JITStubs::cti_op_put_by_id_fail):
+ (JSC::JITStubs::cti_op_get_by_id):
+ (JSC::JITStubs::cti_op_get_by_id_second):
+ (JSC::JITStubs::cti_op_get_by_id_self_fail):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list_full):
+ (JSC::JITStubs::cti_op_get_by_id_proto_fail):
+ (JSC::JITStubs::cti_op_get_by_id_array_fail):
+ (JSC::JITStubs::cti_op_get_by_id_string_fail):
+ (JSC::JITStubs::cti_op_instanceof):
+ (JSC::JITStubs::cti_op_del_by_id):
+ (JSC::JITStubs::cti_op_mul):
+ (JSC::JITStubs::cti_op_new_func):
+ (JSC::JITStubs::cti_op_call_JSFunction):
+ (JSC::JITStubs::cti_op_call_arityCheck):
+ (JSC::JITStubs::cti_vm_dontLazyLinkCall):
+ (JSC::JITStubs::cti_vm_lazyLinkCall):
+ (JSC::JITStubs::cti_op_push_activation):
+ (JSC::JITStubs::cti_op_call_NotJSFunction):
+ (JSC::JITStubs::cti_op_create_arguments):
+ (JSC::JITStubs::cti_op_create_arguments_no_params):
+ (JSC::JITStubs::cti_op_tear_off_activation):
+ (JSC::JITStubs::cti_op_tear_off_arguments):
+ (JSC::JITStubs::cti_op_profile_will_call):
+ (JSC::JITStubs::cti_op_profile_did_call):
+ (JSC::JITStubs::cti_op_ret_scopeChain):
+ (JSC::JITStubs::cti_op_new_array):
+ (JSC::JITStubs::cti_op_resolve):
+ (JSC::JITStubs::cti_op_construct_JSConstruct):
+ (JSC::JITStubs::cti_op_construct_NotJSConstruct):
+ (JSC::JITStubs::cti_op_get_by_val):
+ (JSC::JITStubs::cti_op_get_by_val_string):
+ (JSC::JITStubs::cti_op_get_by_val_byte_array):
+ (JSC::JITStubs::cti_op_resolve_func):
+ (JSC::JITStubs::cti_op_sub):
+ (JSC::JITStubs::cti_op_put_by_val):
+ (JSC::JITStubs::cti_op_put_by_val_array):
+ (JSC::JITStubs::cti_op_put_by_val_byte_array):
+ (JSC::JITStubs::cti_op_lesseq):
+ (JSC::JITStubs::cti_op_loop_if_true):
+ (JSC::JITStubs::cti_op_load_varargs):
+ (JSC::JITStubs::cti_op_negate):
+ (JSC::JITStubs::cti_op_resolve_base):
+ (JSC::JITStubs::cti_op_resolve_skip):
+ (JSC::JITStubs::cti_op_resolve_global):
+ (JSC::JITStubs::cti_op_div):
+ (JSC::JITStubs::cti_op_pre_dec):
+ (JSC::JITStubs::cti_op_jless):
+ (JSC::JITStubs::cti_op_not):
+ (JSC::JITStubs::cti_op_jtrue):
+ (JSC::JITStubs::cti_op_post_inc):
+ (JSC::JITStubs::cti_op_eq):
+ (JSC::JITStubs::cti_op_lshift):
+ (JSC::JITStubs::cti_op_bitand):
+ (JSC::JITStubs::cti_op_rshift):
+ (JSC::JITStubs::cti_op_bitnot):
+ (JSC::JITStubs::cti_op_resolve_with_base):
+ (JSC::JITStubs::cti_op_new_func_exp):
+ (JSC::JITStubs::cti_op_mod):
+ (JSC::JITStubs::cti_op_less):
+ (JSC::JITStubs::cti_op_neq):
+ (JSC::JITStubs::cti_op_post_dec):
+ (JSC::JITStubs::cti_op_urshift):
+ (JSC::JITStubs::cti_op_bitxor):
+ (JSC::JITStubs::cti_op_new_regexp):
+ (JSC::JITStubs::cti_op_bitor):
+ (JSC::JITStubs::cti_op_call_eval):
+ (JSC::JITStubs::cti_op_throw):
+ (JSC::JITStubs::cti_op_get_pnames):
+ (JSC::JITStubs::cti_op_next_pname):
+ (JSC::JITStubs::cti_op_push_scope):
+ (JSC::JITStubs::cti_op_pop_scope):
+ (JSC::JITStubs::cti_op_typeof):
+ (JSC::JITStubs::cti_op_is_undefined):
+ (JSC::JITStubs::cti_op_is_boolean):
+ (JSC::JITStubs::cti_op_is_number):
+ (JSC::JITStubs::cti_op_is_string):
+ (JSC::JITStubs::cti_op_is_object):
+ (JSC::JITStubs::cti_op_is_function):
+ (JSC::JITStubs::cti_op_stricteq):
+ (JSC::JITStubs::cti_op_to_primitive):
+ (JSC::JITStubs::cti_op_strcat):
+ (JSC::JITStubs::cti_op_nstricteq):
+ (JSC::JITStubs::cti_op_to_jsnumber):
+ (JSC::JITStubs::cti_op_in):
+ (JSC::JITStubs::cti_op_push_new_scope):
+ (JSC::JITStubs::cti_op_jmp_scopes):
+ (JSC::JITStubs::cti_op_put_by_index):
+ (JSC::JITStubs::cti_op_switch_imm):
+ (JSC::JITStubs::cti_op_switch_char):
+ (JSC::JITStubs::cti_op_switch_string):
+ (JSC::JITStubs::cti_op_del_by_val):
+ (JSC::JITStubs::cti_op_put_getter):
+ (JSC::JITStubs::cti_op_put_setter):
+ (JSC::JITStubs::cti_op_new_error):
+ (JSC::JITStubs::cti_op_debug):
+ (JSC::JITStubs::cti_vm_throw):
+ * jit/JITStubs.h:
+ (JSC::):
+
+2009-05-06 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Maciej Stachowiak & Darin Adler.
+
+ Improve string concatenation (as coded in JS as a sequence of adds).
+
+ Detect patterns corresponding to string concatenation, and change the bytecode
+ generation to emit a new op_strcat instruction. By handling the full set of
+ additions within a single function we do not need allocate JSString wrappers
+ for intermediate results, and we can calculate the size of the output string
+ prior to allocating storage, in order to prevent reallocation of the buffer.
+
+ 1.5%-2% progression on Sunspider, largely due to a 30% progression on date-format-xparb.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ Add new opcodes.
+ * bytecode/Opcode.h:
+ Add new opcodes.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitStrcat):
+ (JSC::BytecodeGenerator::emitToPrimitive):
+ Add generation of new opcodes.
+ * bytecompiler/BytecodeGenerator.h:
+ Add generation of new opcodes.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ Add implmentation of new opcodes.
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ Add implmentation of new opcodes.
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_to_primitive):
+ (JSC::JITStubs::cti_op_strcat):
+ Add implmentation of new opcodes.
+ * jit/JITStubs.h:
+ Add implmentation of new opcodes.
+ * parser/Nodes.cpp:
+ (JSC::BinaryOpNode::emitStrcat):
+ (JSC::BinaryOpNode::emitBytecode):
+ (JSC::ReadModifyResolveNode::emitBytecode):
+ Add generation of new opcodes.
+ * parser/Nodes.h:
+ (JSC::ExpressionNode::):
+ (JSC::AddNode::):
+ Add methods to allow identification of add nodes.
+ * parser/ResultType.h:
+ (JSC::ResultType::definitelyIsString):
+ (JSC::ResultType::forAdd):
+ Fix error in detection of adds that will produce string results.
+ * runtime/Operations.h:
+ (JSC::concatenateStrings):
+ Add implmentation of new opcodes.
+ * runtime/UString.cpp:
+ (JSC::UString::appendNumeric):
+ Add methods to append numbers to an existing string.
+ * runtime/UString.h:
+ (JSC::UString::Rep::createEmptyBuffer):
+ (JSC::UString::BaseString::BaseString):
+ Add support for creating an empty string with a non-zero capacity available in the BaseString.
+
+2009-05-06 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Made RefCounted::m_refCount private.
+
+ * runtime/Structure.h: Removed addressOfCount.
+ * wtf/RefCounted.h: Made m_refCount private.
+ Added addressOfCount.
+
+2009-05-06 Darin Adler <darin@apple.com>
+
+ Fixed assertion seen a lot!
+
+ * parser/Nodes.cpp:
+ (JSC::FunctionBodyNode::~FunctionBodyNode): Removed now-bogus assertion.
+
+2009-05-06 Darin Adler <darin@apple.com>
+
+ Working with Sam Weinig.
+
+ Redo parse tree constructor optimization without breaking the Windows
+ build the way I did yesterday. The previous try broke the build by adding
+ an include of Lexer.h and all its dependencies that had to work outside
+ the JavaScriptCore project.
+
+ * GNUmakefile.am: Added NodeConstructors.h.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+ Removed byteocde directory -- we no longer are trying to include Lexer.h
+ outside JavaScriptCore.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj: Change SegmentedVector.h
+ and Lexer.h back to internal files. Added NodeConstructors.h.
+
+ * parser/Grammar.y: Added include of NodeConstructors.h.
+ Changed use of ConstDeclNode to use public functions.
+
+ * parser/NodeConstructors.h: Copied from parser/Nodes.h.
+ Just contains the inlined constructors now.
+
+ * parser/Nodes.cpp: Added include of NodeConstructors.h.
+ Moved node constructors into the header.
+ (JSC::FunctionBodyNode::FunctionBodyNode): Removed m_refCount
+ initialization.
+
+ * parser/Nodes.h: Removed all the constructor definitions, and also
+ removed the JSC_FAST_CALL from them since these are all inlined, so the
+ calling convention is irrelevant. Made more things private. Used a data
+ member for operator opcodes instead of a virtual function. Removed the
+ special FunctionBodyNode::ref/deref functions since the default functions
+ are now just as fast.
+
+ * runtime/FunctionConstructor.cpp:
+ (JSC::extractFunctionBody): Fixed types here so we don't typecast until
+ after we do type checking.
+
+2009-05-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Ariya Hidayat.
+
+ Fix the Qt build on Windows.
+
+ * JavaScriptCore.pri: Define BUILDING_JavaScriptCore/WTF to get the meaning
+ of the JS_EXPORTDATA macros correct
+
+2009-05-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Ariya Hidayat.
+
+ Enable the JIT for the Qt build on Windows.
+
+ * JavaScriptCore.pri:
+
+2009-05-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ Tweak JavaScriptCore.pri for being able to override the generated sources dir for the
+ generated_files target.
+
+ * JavaScriptCore.pri:
+
+2009-05-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Build QtWebKit as a framework on Mac
+
+ This implies both debug and release build by default, unless
+ one of the --debug or --release config options are passed to
+ the build-webkit script.
+
+ Frameworks can be disabled by passing CONFIG+=webkit_no_framework
+ to the build-webkit script.
+
+ To be able to build both debug and release targets in parallel
+ we have to use separate output directories for the generated
+ sources, which is not optimal, but required to avoid race conditions.
+
+ An optimization would be to only require this spit-up on Mac.
+
+ * JavaScriptCore.pri:
+ * JavaScriptCore.pro:
+ * jsc.pro:
+
+2009-05-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Use $$GENERATED_SOURCES_DIR as output when running bison
+
+ A couple of the generators left the bison output file in the source
+ tree, and then moved it into $$GENERATED_SOURCES_DIR, which did not
+ work well when building release and debug configurations in parallel.
+
+ * JavaScriptCore.pri:
+
+2009-05-05 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Simplified a bit of codegen.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+
+2009-05-05 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Moved all the JIT stub related code into one place.
+
+ * jit/JIT.cpp:
+ * jit/JIT.h:
+ * jit/JITCode.h:
+ * jit/JITStubs.cpp:
+ (JSC::):
+ * jit/JITStubs.h:
+
+2009-05-05 Sam Weinig <sam@webkit.org>
+
+ Try to fix Windows build.
+
+ Move Node constructor to the .cpp file.
+
+ * parser/Nodes.cpp:
+ * parser/Nodes.h:
+
+2009-05-05 Darin Adler <darin@apple.com>
+
+ Try to fix Windows build.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+ Try to fix Mac build.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj: Made SegmentedVector.h private.
+
+2009-05-05 Darin Adler <darin@apple.com>
+
+ Try to fix Mac build.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj: Made Lexer.h private.
+
+2009-05-05 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 25569: make ParserRefCounted use conventional reference counting
+ https://bugs.webkit.org/show_bug.cgi?id=25569
+
+ SunSpider speedup of about 1.6%.
+
+ * JavaScriptCore.exp: Updated.
+
+ * parser/Nodes.cpp:
+ (JSC::NodeReleaser::releaseAllNodes): ALWAYS_INLINE.
+ (JSC::NodeReleaser::adopt): Ditto.
+ (JSC::ParserRefCounted::ParserRefCounted): Removed most of the code.
+ Add the object to a Vector<RefPtr> that gets cleared after parsing.
+ (JSC::ParserRefCounted::~ParserRefCounted): Removed most of the code.
+
+ * parser/Nodes.h: Made ParserRefCounted inherit from RefCounted and
+ made inline versions of the constructor and destructor. Made the
+ Node constructor inline.
+
+ * parser/Parser.cpp:
+ (JSC::Parser::parse): Call globalData->parserObjects.shrink(0) after
+ parsing, where it used to call ParserRefCounted::deleteNewObjects.
+
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData): Eliminated code to manage the
+ newParserObjects and parserObjectExtraRefCounts.
+ (JSC::JSGlobalData::~JSGlobalData): Ditto.
+
+ * runtime/JSGlobalData.h: Replaced the HashSet and HashCountedSet
+ with a Vector.
+
+ * wtf/PassRefPtr.h:
+ (WTF::PassRefPtr::~PassRefPtr): The most common thing to do with a
+ PassRefPtr in hot code is to pass it and then destroy it once it's
+ set to zero. Help the optimizer by telling it that's true.
+
+2009-05-05 Xan Lopez <xlopez@igalia.com> and Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Oliver Hunt.
+
+ Disable the NativeFunctionWrapper for all non-Mac ports for now,
+ as it is also crashing on Linux/x86.
+
+ * runtime/NativeFunctionWrapper.h:
+
+2009-05-05 Steve Falkenburg <sfalken@apple.com>
+
+ Fix build.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Expose toThisObject for the DOM Window
+
+ * JavaScriptCore.exp:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Make windows go again until i work out the
+ accursed calling convention).
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * jit/JIT.cpp:
+ * runtime/NativeFunctionWrapper.h:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Fix windows debug builds).
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Hopefully the last fix).
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Fix the build fix caused by a different build fix).
+
+ * parser/Nodes.cpp:
+ * parser/Nodes.h:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (No idea how my changes could have broken these).
+
+ * runtime/DatePrototype.cpp:
+ * runtime/RegExpObject.cpp:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Why should i expect msvc to list all the errors in a file?).
+
+ * parser/Nodes.cpp:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Fix warning, and another missing include).
+
+ * jit/JIT.cpp:
+ * parser/Nodes.h:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (More build fixes).
+
+ * runtime/ErrorPrototype.cpp:
+ * runtime/JSGlobalObject.cpp:
+ * runtime/NumberPrototype.cpp:
+ * runtime/ObjectPrototype.cpp:
+ * runtime/StringConstructor.cpp:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Will the fixes never end?).
+
+ * runtime/FunctionPrototype.h:
+ * runtime/Lookup.cpp:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (More build fixes).
+
+ * jit/JIT.cpp:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (More build fixing).
+
+ * runtime/CallData.h:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ * runtime/ArrayConstructor.cpp:
+ * runtime/BooleanPrototype.cpp:
+ * runtime/DateConstructor.cpp:
+ * runtime/Error.cpp:
+ * runtime/ObjectConstructor.cpp:
+ * runtime/RegExpPrototype.cpp:
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Buildfix).
+
+ Add missing file
+
+ * runtime/NativeFunctionWrapper.h: Copied from JavaScriptCore/jit/ExecutableAllocator.cpp.
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Bug 25559: Improve native function call performance
+ <https://bugs.webkit.org/show_bug.cgi?id=25559>
+
+ In order to cache calls to native functions we now make the standard
+ prototype functions use a small assembly thunk that converts the JS
+ calling convention into the native calling convention. As this is
+ only beneficial in the JIT we use the NativeFunctionWrapper typedef
+ to alternate between PrototypeFunction and JSFunction to keep the
+ code sane. This change from PrototypeFunction to NativeFunctionWrapper
+ is the bulk of this patch.
+
+ * JavaScriptCore.exp:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::call):
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::addPtr):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::leaq_mr):
+ (JSC::X86Assembler::call_m):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+ (JSC::Interpreter::prepareForRepeatCall):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ (JSC::JIT::compileCTIMachineTrampolines):
+ * jit/JITCall.cpp:
+ (JSC::JIT::linkCall):
+ (JSC::JIT::compileOpCallInitializeCallFrame):
+ (JSC::JIT::compileOpCall):
+ * jit/JITCode.h:
+ (JSC::JITCode::operator bool):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitGetFromCallFrameHeader):
+ (JSC::JIT::emitGetFromCallFrameHeader32):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::JITStubs):
+ (JSC::JITStubs::cti_op_call_JSFunction):
+ (JSC::JITStubs::cti_vm_dontLazyLinkCall):
+ (JSC::JITStubs::cti_vm_lazyLinkCall):
+ (JSC::JITStubs::cti_op_construct_JSConstruct):
+ * jit/JITStubs.h:
+ (JSC::JITStubs::ctiNativeCallThunk):
+ * jsc.cpp:
+ (GlobalObject::GlobalObject):
+ * parser/Nodes.cpp:
+ (JSC::FunctionBodyNode::FunctionBodyNode):
+ (JSC::FunctionBodyNode::createNativeThunk):
+ (JSC::FunctionBodyNode::generateJITCode):
+ * parser/Nodes.h:
+ (JSC::FunctionBodyNode::):
+ (JSC::FunctionBodyNode::generatedJITCode):
+ (JSC::FunctionBodyNode::jitCode):
+ * profiler/Profiler.cpp:
+ (JSC::Profiler::createCallIdentifier):
+ * runtime/ArgList.h:
+ * runtime/ArrayPrototype.cpp:
+ (JSC::isNumericCompareFunction):
+ * runtime/BooleanPrototype.cpp:
+ (JSC::BooleanPrototype::BooleanPrototype):
+ * runtime/DateConstructor.cpp:
+ (JSC::DateConstructor::DateConstructor):
+ * runtime/ErrorPrototype.cpp:
+ (JSC::ErrorPrototype::ErrorPrototype):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::FunctionPrototype::addFunctionProperties):
+ (JSC::functionProtoFuncToString):
+ * runtime/FunctionPrototype.h:
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::JSFunction):
+ (JSC::JSFunction::~JSFunction):
+ (JSC::JSFunction::mark):
+ (JSC::JSFunction::getCallData):
+ (JSC::JSFunction::call):
+ (JSC::JSFunction::argumentsGetter):
+ (JSC::JSFunction::callerGetter):
+ (JSC::JSFunction::lengthGetter):
+ (JSC::JSFunction::getOwnPropertySlot):
+ (JSC::JSFunction::put):
+ (JSC::JSFunction::deleteProperty):
+ (JSC::JSFunction::getConstructData):
+ (JSC::JSFunction::construct):
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::JSFunction):
+ (JSC::JSFunction::setScope):
+ (JSC::JSFunction::scope):
+ (JSC::JSFunction::isHostFunction):
+ (JSC::JSFunction::scopeChain):
+ (JSC::JSFunction::clearScopeChain):
+ (JSC::JSFunction::setScopeChain):
+ (JSC::JSFunction::nativeFunction):
+ (JSC::JSFunction::setNativeFunction):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::~JSGlobalData):
+ (JSC::JSGlobalData::createNativeThunk):
+ * runtime/JSGlobalData.h:
+ (JSC::JSGlobalData::nativeFunctionThunk):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::reset):
+ * runtime/JSGlobalObject.h:
+ * runtime/Lookup.cpp:
+ (JSC::setUpStaticFunctionSlot):
+ * runtime/Lookup.h:
+ * runtime/NumberPrototype.cpp:
+ (JSC::NumberPrototype::NumberPrototype):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::ObjectPrototype::ObjectPrototype):
+ * runtime/RegExpPrototype.cpp:
+ (JSC::RegExpPrototype::RegExpPrototype):
+ * runtime/StringConstructor.cpp:
+ (JSC::StringConstructor::StringConstructor):
+
+2009-05-05 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ For convenience, let the sampling flags tool clear multiple flags at once.
+
+ * jsc.cpp:
+ (GlobalObject::GlobalObject):
+ (functionSetSamplingFlags):
+ (functionClearSamplingFlags):
+
+2009-05-04 Maciej Stachowiak <mjs@apple.com>
+
+ Rubber stamped by Gavin.
+
+ - inline Vector::resize for a ~1.5% speedup on string-tagcloud
+
+ * wtf/Vector.h:
+ (WTF::Vector::resize): Inline
+
+2009-05-03 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix.
+
+ * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
+
+2009-05-03 Mark Rowe <mrowe@apple.com>
+
+ Fix the 64-bit build.
+
+ * API/APICast.h:
+ (toJS):
+ (toRef):
+ * runtime/JSNumberCell.cpp:
+ (JSC::jsAPIMangledNumber):
+ * runtime/JSNumberCell.h:
+
+2009-05-02 Sam Weinig <sam@webkit.org>
+
+ Roll JSC API number marshaling back in one last time (I hope).
+
+2009-05-03 Sam Weinig <sam@webkit.org>
+
+ Roll JSC API number marshaling back out. It still breaks windows.
+
+2009-05-03 Sam Weinig <sam@webkit.org>
+
+ Roll JSC API number marshaling back in.
+
+2009-05-02 Darin Adler <darin@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Bug 25519: streamline lexer by handling BOMs differently
+ https://bugs.webkit.org/show_bug.cgi?id=25519
+
+ Roughly 1% faster SunSpider.
+
+ * parser/Grammar.y: Tweak formatting a bit.
+
+ * parser/Lexer.cpp:
+ (JSC::Lexer::Lexer): Remove unnnecessary initialization of data members
+ that are set up by setCode.
+ (JSC::Lexer::currentOffset): Added. Used where the old code would look at
+ m_currentOffset.
+ (JSC::Lexer::shift1): Replaces the old shift function. No longer does anything
+ to handle BOM characters.
+ (JSC::Lexer::shift2): Ditto.
+ (JSC::Lexer::shift3): Ditto.
+ (JSC::Lexer::shift4): Ditto.
+ (JSC::Lexer::setCode): Updated for name change from yylineno to m_line.
+ Removed now-unused m_eatNextIdentifier, m_stackToken, and m_restrKeyword.
+ Replaced m_skipLF and m_skipCR with m_skipLineEnd. Replaced the old
+ m_length with m_codeEnd and m_currentOffset with m_codeStart. Added code
+ to scan for a BOM character and call copyCodeWithoutBOMs() if we find any.
+ (JSC::Lexer::copyCodeWithoutBOMs): Added.
+ (JSC::Lexer::nextLine): Updated for name change from yylineno to m_line.
+ (JSC::Lexer::makeIdentifier): Moved up higher in the file.
+ (JSC::Lexer::matchPunctuator): Moved up higher in the file and changed to
+ use a switch statement instead of just if statements.
+ (JSC::Lexer::isLineTerminator): Moved up higher in the file and changed to
+ have fewer branches.
+ (JSC::Lexer::lastTokenWasRestrKeyword): Added. This replaces the old
+ m_restrKeyword boolean.
+ (JSC::Lexer::isIdentStart): Moved up higher in the file. Changed to use
+ fewer branches in the ASCII but not identifier case.
+ (JSC::Lexer::isIdentPart): Ditto.
+ (JSC::Lexer::singleEscape): Moved up higher in the file.
+ (JSC::Lexer::convertOctal): Moved up higher in the file.
+ (JSC::Lexer::convertHex): Moved up higher in the file. Changed to use
+ toASCIIHexValue instead of rolling our own here.
+ (JSC::Lexer::convertUnicode): Ditto.
+ (JSC::Lexer::record8): Moved up higher in the file.
+ (JSC::Lexer::record16): Moved up higher in the file.
+ (JSC::Lexer::lex): Changed type of stringType to int. Replaced m_skipLF
+ and m_skipCR with m_skipLineEnd, which requires fewer branches in the
+ main lexer loop. Use currentOffset instead of m_currentOffset. Removed
+ unneeded m_stackToken. Use isASCIIDigit instead of isDecimalDigit.
+ Split out the two cases for InIdentifierOrKeyword and InIdentifier.
+ Added special case tight loops for identifiers and other simple states.
+ Removed a branch from the code that sets m_atLineStart to false using goto.
+ Streamlined the number-handling code so we don't check for the same types
+ twice for non-numeric cases and don't add a null to m_buffer8 when it's
+ not being used. Removed m_eatNextIdentifier, which wasn't working anyway,
+ and m_restrKeyword, which is redundant with m_lastToken. Set the
+ m_delimited flag without using a branch.
+ (JSC::Lexer::scanRegExp): Tweaked style a bit.
+ (JSC::Lexer::clear): Clear m_codeWithoutBOMs so we don't use memory after
+ parsing. Clear out UString objects in the more conventional way.
+ (JSC::Lexer::sourceCode): Made this no-longer inline since it has more
+ work to do in the case where we stripped BOMs.
+
+ * parser/Lexer.h: Renamed yylineno to m_lineNumber. Removed convertHex
+ function, which is the same as toASCIIHexValue. Removed isHexDigit
+ function, which is the same as isASCIIHedDigit. Replaced shift with four
+ separate shift functions. Removed isWhiteSpace function that passes
+ m_current, instead just passing m_current explicitly. Removed isOctalDigit,
+ which is the same as isASCIIOctalDigit. Eliminated unused arguments from
+ matchPunctuator. Added copyCoodeWithoutBOMs and currentOffset. Moved the
+ makeIdentifier function out of the header. Added lastTokenWasRestrKeyword
+ function. Added new constants for m_skipLineEnd. Removed unused yycolumn,
+ m_restrKeyword, m_skipLF, m_skipCR, m_eatNextIdentifier, m_stackToken,
+ m_position, m_length, m_currentOffset, m_nextOffset1, m_nextOffset2,
+ m_nextOffset3. Added m_skipLineEnd, m_codeStart, m_codeEnd, and
+ m_codeWithoutBOMs.
+
+ * parser/SourceProvider.h: Added hasBOMs function. In the future this can
+ be used to tell the lexer about strings known not to have BOMs.
+
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncUnescape): Changed to use isASCIIHexDigit.
+
+ * wtf/ASCIICType.h: Added using statements to match the design of the
+ other WTF headers.
+
+2009-05-02 Ada Chan <adachan@apple.com>
+
+ Fix windows build (when doing a clean build)
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-02 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+ Simplified null-ish JSValues.
+
+ Replaced calls to noValue() with calls to JSValue() (which is what
+ noValue() returned). Removed noValue().
+
+ Replaced almost all uses of jsImpossibleValue() with uses of JSValue().
+ Its one remaining use is for construction of hash table deleted values.
+ For that specific task, I made a new, private constructor with a special
+ tag. Removed jsImpossibleValue().
+
+ Removed "JSValue()" initialiazers, since default construction happens...
+ by default.
+
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::call):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitLoad):
+ * bytecompiler/BytecodeGenerator.h:
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::evaluate):
+ * debugger/DebuggerCallFrame.h:
+ (JSC::DebuggerCallFrame::DebuggerCallFrame):
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::clearException):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::retrieveLastCaller):
+ * interpreter/Register.h:
+ (JSC::Register::Register):
+ * jit/JITCall.cpp:
+ (JSC::JIT::unlinkCall):
+ (JSC::JIT::compileOpCallInitializeCallFrame):
+ (JSC::JIT::compileOpCall):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_call_eval):
+ (JSC::JITStubs::cti_vm_throw):
+ * profiler/Profiler.cpp:
+ (JSC::Profiler::willExecute):
+ (JSC::Profiler::didExecute):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::getProperty):
+ * runtime/Completion.cpp:
+ (JSC::evaluate):
+ * runtime/Completion.h:
+ (JSC::Completion::Completion):
+ * runtime/GetterSetter.cpp:
+ (JSC::GetterSetter::getPrimitiveNumber):
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::putSlowCase):
+ (JSC::JSArray::deleteProperty):
+ (JSC::JSArray::increaseVectorLength):
+ (JSC::JSArray::setLength):
+ (JSC::JSArray::pop):
+ (JSC::JSArray::sort):
+ (JSC::JSArray::compactForSorting):
+ * runtime/JSCell.cpp:
+ (JSC::JSCell::getJSNumber):
+ * runtime/JSCell.h:
+ (JSC::JSValue::getJSNumber):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSImmediate.h:
+ (JSC::JSImmediate::fromNumberOutsideIntegerRange):
+ (JSC::JSImmediate::from):
+ * runtime/JSNumberCell.cpp:
+ (JSC::jsNumberCell):
+ * runtime/JSObject.cpp:
+ (JSC::callDefaultValueFunction):
+ * runtime/JSObject.h:
+ (JSC::JSObject::getDirect):
+ * runtime/JSPropertyNameIterator.cpp:
+ (JSC::JSPropertyNameIterator::toPrimitive):
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::JSPropertyNameIterator::next):
+ * runtime/JSValue.h:
+ (JSC::JSValue::):
+ (JSC::JSValueHashTraits::constructDeletedValue):
+ (JSC::JSValueHashTraits::isDeletedValue):
+ (JSC::JSValue::JSValue):
+ * runtime/JSWrapperObject.h:
+ (JSC::JSWrapperObject::JSWrapperObject):
+ * runtime/Operations.h:
+ (JSC::resolveBase):
+ * runtime/PropertySlot.h:
+ (JSC::PropertySlot::clearBase):
+ (JSC::PropertySlot::clearValue):
+
+2009-05-02 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ - speed up the lexer in various ways
+
+ ~2% command-line SunSpider speedup
+
+ * parser/Lexer.cpp:
+ (JSC::Lexer::setCode): Moved below shift() so it can inline.
+ (JSC::Lexer::scanRegExp): Use resize(0) instead of clear() on Vectors, since the intent
+ here is not to free the underlying buffer.
+ (JSC::Lexer::lex): ditto; also, change the loop logic a bit for the main lexing loop
+ to avoid branching on !m_done twice per iteration. Now we only check it once.
+ (JSC::Lexer::shift): Make this ALWAYS_INLINE and tag an unusual branch as UNLIKELY
+ * parser/Lexer.h:
+ (JSC::Lexer::makeIdentifier): force to be ALWAYS_INLINE
+ * wtf/Vector.h:
+ (WTF::::append): force to be ALWAYS_INLINE (may have helped in ways other than parsing but it wasn't
+ getting inlined in a hot code path in the lexer)
+
+2009-05-01 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix.
+
+ * JavaScriptCore.vcproj/JavaScriptCore.make:
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Fix 64bit build.
+
+ * runtime/JSNumberCell.h:
+ (JSC::JSValue::JSValue):
+ * runtime/JSValue.h:
+ (JSC::jsNumber):
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Roll out JavaScriptCore API number marshaling.
+
+ * API/APICast.h:
+ (toJS):
+ (toRef):
+ * API/JSBase.cpp:
+ (JSEvaluateScript):
+ (JSCheckScriptSyntax):
+ * API/JSCallbackConstructor.cpp:
+ (JSC::constructJSCallback):
+ * API/JSCallbackFunction.cpp:
+ (JSC::JSCallbackFunction::call):
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::getOwnPropertySlot):
+ (JSC::::put):
+ (JSC::::deleteProperty):
+ (JSC::::construct):
+ (JSC::::hasInstance):
+ (JSC::::call):
+ (JSC::::toNumber):
+ (JSC::::toString):
+ (JSC::::staticValueGetter):
+ (JSC::::callbackGetter):
+ * API/JSObjectRef.cpp:
+ (JSObjectMakeFunction):
+ (JSObjectMakeArray):
+ (JSObjectMakeDate):
+ (JSObjectMakeError):
+ (JSObjectMakeRegExp):
+ (JSObjectGetPrototype):
+ (JSObjectSetPrototype):
+ (JSObjectGetProperty):
+ (JSObjectSetProperty):
+ (JSObjectGetPropertyAtIndex):
+ (JSObjectSetPropertyAtIndex):
+ (JSObjectDeleteProperty):
+ (JSObjectCallAsFunction):
+ (JSObjectCallAsConstructor):
+ * API/JSValueRef.cpp:
+ (JSValueGetType):
+ (JSValueIsUndefined):
+ (JSValueIsNull):
+ (JSValueIsBoolean):
+ (JSValueIsNumber):
+ (JSValueIsString):
+ (JSValueIsObject):
+ (JSValueIsObjectOfClass):
+ (JSValueIsEqual):
+ (JSValueIsStrictEqual):
+ (JSValueIsInstanceOfConstructor):
+ (JSValueMakeUndefined):
+ (JSValueMakeNull):
+ (JSValueMakeBoolean):
+ (JSValueMakeNumber):
+ (JSValueMakeString):
+ (JSValueToBoolean):
+ (JSValueToNumber):
+ (JSValueToStringCopy):
+ (JSValueToObject):
+ (JSValueProtect):
+ (JSValueUnprotect):
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ * runtime/JSNumberCell.cpp:
+ * runtime/JSNumberCell.h:
+ * runtime/JSValue.h:
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Fix windows build.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Fix the build.
+
+ * JavaScriptCore.exp:
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey "Too Far!" Garen.
+
+ Move JS number construction into JSValue.
+
+ * runtime/JSImmediate.h:
+ * runtime/JSNumberCell.h:
+ (JSC::JSValue::JSValue):
+ * runtime/JSValue.h:
+ (JSC::jsNumber):
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoff "The Minneapolis" Garen.
+
+ Add mechanism to vend heap allocated JS numbers to JavaScriptCore API clients with a
+ representation that is independent of the number representation in the VM.
+ - Numbers leaving the interpreter are converted to a tagged JSNumberCell.
+ - The numbers coming into the interpreter (asserted to be the tagged JSNumberCell) are
+ converted back to the VM's internal number representation.
+
+ * API/APICast.h:
+ (toJS):
+ (toRef):
+ * API/JSBase.cpp:
+ (JSEvaluateScript):
+ (JSCheckScriptSyntax):
+ * API/JSCallbackConstructor.cpp:
+ (JSC::constructJSCallback):
+ * API/JSCallbackFunction.cpp:
+ (JSC::JSCallbackFunction::call):
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::getOwnPropertySlot):
+ (JSC::::put):
+ (JSC::::deleteProperty):
+ (JSC::::construct):
+ (JSC::::hasInstance):
+ (JSC::::call):
+ (JSC::::toNumber):
+ (JSC::::toString):
+ (JSC::::staticValueGetter):
+ (JSC::::callbackGetter):
+ * API/JSObjectRef.cpp:
+ (JSObjectMakeFunction):
+ (JSObjectMakeArray):
+ (JSObjectMakeDate):
+ (JSObjectMakeError):
+ (JSObjectMakeRegExp):
+ (JSObjectGetPrototype):
+ (JSObjectSetPrototype):
+ (JSObjectGetProperty):
+ (JSObjectSetProperty):
+ (JSObjectGetPropertyAtIndex):
+ (JSObjectSetPropertyAtIndex):
+ (JSObjectDeleteProperty):
+ (JSObjectCallAsFunction):
+ (JSObjectCallAsConstructor):
+ * API/JSValueRef.cpp:
+ (JSValueGetType):
+ (JSValueIsUndefined):
+ (JSValueIsNull):
+ (JSValueIsBoolean):
+ (JSValueIsNumber):
+ (JSValueIsString):
+ (JSValueIsObject):
+ (JSValueIsObjectOfClass):
+ (JSValueIsEqual):
+ (JSValueIsStrictEqual):
+ (JSValueIsInstanceOfConstructor):
+ (JSValueMakeUndefined):
+ (JSValueMakeNull):
+ (JSValueMakeBoolean):
+ (JSValueMakeNumber):
+ (JSValueMakeString):
+ (JSValueToBoolean):
+ (JSValueToNumber):
+ (JSValueToStringCopy):
+ (JSValueToObject):
+ (JSValueProtect):
+ (JSValueUnprotect):
+ * runtime/JSNumberCell.cpp:
+ (JSC::jsAPIMangledNumber):
+ * runtime/JSNumberCell.h:
+ (JSC::JSNumberCell::isAPIMangledNumber):
+ (JSC::JSNumberCell::):
+ (JSC::JSNumberCell::JSNumberCell):
+ (JSC::JSValue::isAPIMangledNumber):
+ * runtime/JSValue.h:
+
+2009-05-01 Geoffrey Garen <ggaren@apple.com>
+
+ Windows build fix take 6.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+
+2009-05-01 Geoffrey Garen <ggaren@apple.com>
+
+ Windows build fix take 5.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-01 Geoffrey Garen <ggaren@apple.com>
+
+ Windows build fix take 4.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-01 Geoffrey Garen <ggaren@apple.com>
+
+ Windows build fix take 3.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-01 Geoffrey Garen <ggaren@apple.com>
+
+ Windows build fix take 2.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+
+2009-05-01 Geoffrey Garen <ggaren@apple.com>
+
+ Windows build fix take 1.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-05-01 Geoffrey Garen <ggaren@apple.com>
+
+ Rubber Stamped by Sam Weinig.
+
+ Renamed JSValuePtr => JSValue.
+
+ * API/APICast.h:
+ (toJS):
+ (toRef):
+ * API/JSCallbackConstructor.h:
+ (JSC::JSCallbackConstructor::createStructure):
+ * API/JSCallbackFunction.cpp:
+ (JSC::JSCallbackFunction::call):
+ * API/JSCallbackFunction.h:
+ (JSC::JSCallbackFunction::createStructure):
+ * API/JSCallbackObject.h:
+ (JSC::JSCallbackObject::createStructure):
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::asCallbackObject):
+ (JSC::::put):
+ (JSC::::hasInstance):
+ (JSC::::call):
+ (JSC::::staticValueGetter):
+ (JSC::::staticFunctionGetter):
+ (JSC::::callbackGetter):
+ * API/JSContextRef.cpp:
+ * API/JSObjectRef.cpp:
+ (JSObjectMakeConstructor):
+ (JSObjectSetPrototype):
+ (JSObjectGetProperty):
+ (JSObjectSetProperty):
+ (JSObjectGetPropertyAtIndex):
+ (JSObjectSetPropertyAtIndex):
+ * API/JSValueRef.cpp:
+ (JSValueGetType):
+ (JSValueIsUndefined):
+ (JSValueIsNull):
+ (JSValueIsBoolean):
+ (JSValueIsNumber):
+ (JSValueIsString):
+ (JSValueIsObject):
+ (JSValueIsObjectOfClass):
+ (JSValueIsEqual):
+ (JSValueIsStrictEqual):
+ (JSValueIsInstanceOfConstructor):
+ (JSValueToBoolean):
+ (JSValueToNumber):
+ (JSValueToStringCopy):
+ (JSValueToObject):
+ (JSValueProtect):
+ (JSValueUnprotect):
+ * JavaScriptCore.exp:
+ * bytecode/CodeBlock.cpp:
+ (JSC::valueToSourceString):
+ (JSC::constantName):
+ (JSC::CodeBlock::dump):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::getConstant):
+ (JSC::CodeBlock::addUnexpectedConstant):
+ (JSC::CodeBlock::unexpectedConstant):
+ * bytecode/EvalCodeCache.h:
+ (JSC::EvalCodeCache::get):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::addConstant):
+ (JSC::BytecodeGenerator::addUnexpectedConstant):
+ (JSC::BytecodeGenerator::emitLoad):
+ (JSC::BytecodeGenerator::emitGetScopedVar):
+ (JSC::BytecodeGenerator::emitPutScopedVar):
+ (JSC::BytecodeGenerator::emitNewError):
+ (JSC::keyForImmediateSwitch):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue):
+ (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue):
+ * debugger/Debugger.cpp:
+ (JSC::evaluateInGlobalCallFrame):
+ * debugger/Debugger.h:
+ * debugger/DebuggerActivation.cpp:
+ (JSC::DebuggerActivation::put):
+ (JSC::DebuggerActivation::putWithAttributes):
+ (JSC::DebuggerActivation::lookupGetter):
+ (JSC::DebuggerActivation::lookupSetter):
+ * debugger/DebuggerActivation.h:
+ (JSC::DebuggerActivation::createStructure):
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::evaluate):
+ * debugger/DebuggerCallFrame.h:
+ (JSC::DebuggerCallFrame::DebuggerCallFrame):
+ (JSC::DebuggerCallFrame::exception):
+ * interpreter/CachedCall.h:
+ (JSC::CachedCall::CachedCall):
+ (JSC::CachedCall::call):
+ (JSC::CachedCall::setThis):
+ (JSC::CachedCall::setArgument):
+ * interpreter/CallFrame.cpp:
+ (JSC::CallFrame::thisValue):
+ (JSC::CallFrame::dumpCaller):
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::setException):
+ (JSC::ExecState::exception):
+ (JSC::ExecState::exceptionSlot):
+ * interpreter/CallFrameClosure.h:
+ (JSC::CallFrameClosure::setArgument):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::resolve):
+ (JSC::Interpreter::resolveSkip):
+ (JSC::Interpreter::resolveGlobal):
+ (JSC::Interpreter::resolveBase):
+ (JSC::Interpreter::resolveBaseAndProperty):
+ (JSC::Interpreter::resolveBaseAndFunc):
+ (JSC::isNotObject):
+ (JSC::Interpreter::callEval):
+ (JSC::Interpreter::unwindCallFrame):
+ (JSC::Interpreter::throwException):
+ (JSC::Interpreter::execute):
+ (JSC::Interpreter::prepareForRepeatCall):
+ (JSC::Interpreter::createExceptionScope):
+ (JSC::Interpreter::tryCachePutByID):
+ (JSC::Interpreter::tryCacheGetByID):
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::retrieveArguments):
+ (JSC::Interpreter::retrieveCaller):
+ (JSC::Interpreter::retrieveLastCaller):
+ * interpreter/Interpreter.h:
+ * interpreter/Register.h:
+ (JSC::Register::):
+ (JSC::Register::Register):
+ (JSC::Register::jsValue):
+ * jit/JIT.cpp:
+ (JSC::):
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_mod):
+ * jit/JITCall.cpp:
+ (JSC::JIT::unlinkCall):
+ (JSC::JIT::compileOpCallInitializeCallFrame):
+ (JSC::JIT::compileOpCall):
+ * jit/JITCode.h:
+ (JSC::):
+ (JSC::JITCode::execute):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitGetVirtualRegister):
+ (JSC::JIT::getConstantOperand):
+ (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
+ (JSC::JIT::emitInitRegister):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::patchPutByIdReplace):
+ (JSC::JIT::privateCompileGetByIdSelf):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdSelfList):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+ (JSC::JIT::privateCompilePutByIdReplace):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::tryCachePutByID):
+ (JSC::JITStubs::tryCacheGetByID):
+ (JSC::JITStubs::cti_op_convert_this):
+ (JSC::JITStubs::cti_op_add):
+ (JSC::JITStubs::cti_op_pre_inc):
+ (JSC::JITStubs::cti_op_loop_if_less):
+ (JSC::JITStubs::cti_op_loop_if_lesseq):
+ (JSC::JITStubs::cti_op_get_by_id_generic):
+ (JSC::JITStubs::cti_op_get_by_id):
+ (JSC::JITStubs::cti_op_get_by_id_second):
+ (JSC::JITStubs::cti_op_get_by_id_self_fail):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list_full):
+ (JSC::JITStubs::cti_op_get_by_id_proto_fail):
+ (JSC::JITStubs::cti_op_get_by_id_array_fail):
+ (JSC::JITStubs::cti_op_get_by_id_string_fail):
+ (JSC::JITStubs::cti_op_instanceof):
+ (JSC::JITStubs::cti_op_del_by_id):
+ (JSC::JITStubs::cti_op_mul):
+ (JSC::JITStubs::cti_op_call_NotJSFunction):
+ (JSC::JITStubs::cti_op_resolve):
+ (JSC::JITStubs::cti_op_construct_NotJSConstruct):
+ (JSC::JITStubs::cti_op_get_by_val):
+ (JSC::JITStubs::cti_op_get_by_val_string):
+ (JSC::JITStubs::cti_op_get_by_val_byte_array):
+ (JSC::JITStubs::cti_op_resolve_func):
+ (JSC::JITStubs::cti_op_sub):
+ (JSC::JITStubs::cti_op_put_by_val):
+ (JSC::JITStubs::cti_op_put_by_val_array):
+ (JSC::JITStubs::cti_op_put_by_val_byte_array):
+ (JSC::JITStubs::cti_op_lesseq):
+ (JSC::JITStubs::cti_op_loop_if_true):
+ (JSC::JITStubs::cti_op_load_varargs):
+ (JSC::JITStubs::cti_op_negate):
+ (JSC::JITStubs::cti_op_resolve_base):
+ (JSC::JITStubs::cti_op_resolve_skip):
+ (JSC::JITStubs::cti_op_resolve_global):
+ (JSC::JITStubs::cti_op_div):
+ (JSC::JITStubs::cti_op_pre_dec):
+ (JSC::JITStubs::cti_op_jless):
+ (JSC::JITStubs::cti_op_not):
+ (JSC::JITStubs::cti_op_jtrue):
+ (JSC::JITStubs::cti_op_post_inc):
+ (JSC::JITStubs::cti_op_eq):
+ (JSC::JITStubs::cti_op_lshift):
+ (JSC::JITStubs::cti_op_bitand):
+ (JSC::JITStubs::cti_op_rshift):
+ (JSC::JITStubs::cti_op_bitnot):
+ (JSC::JITStubs::cti_op_resolve_with_base):
+ (JSC::JITStubs::cti_op_mod):
+ (JSC::JITStubs::cti_op_less):
+ (JSC::JITStubs::cti_op_neq):
+ (JSC::JITStubs::cti_op_post_dec):
+ (JSC::JITStubs::cti_op_urshift):
+ (JSC::JITStubs::cti_op_bitxor):
+ (JSC::JITStubs::cti_op_bitor):
+ (JSC::JITStubs::cti_op_call_eval):
+ (JSC::JITStubs::cti_op_throw):
+ (JSC::JITStubs::cti_op_next_pname):
+ (JSC::JITStubs::cti_op_typeof):
+ (JSC::JITStubs::cti_op_is_undefined):
+ (JSC::JITStubs::cti_op_is_boolean):
+ (JSC::JITStubs::cti_op_is_number):
+ (JSC::JITStubs::cti_op_is_string):
+ (JSC::JITStubs::cti_op_is_object):
+ (JSC::JITStubs::cti_op_is_function):
+ (JSC::JITStubs::cti_op_stricteq):
+ (JSC::JITStubs::cti_op_nstricteq):
+ (JSC::JITStubs::cti_op_to_jsnumber):
+ (JSC::JITStubs::cti_op_in):
+ (JSC::JITStubs::cti_op_switch_imm):
+ (JSC::JITStubs::cti_op_switch_char):
+ (JSC::JITStubs::cti_op_switch_string):
+ (JSC::JITStubs::cti_op_del_by_val):
+ (JSC::JITStubs::cti_op_new_error):
+ (JSC::JITStubs::cti_vm_throw):
+ * jit/JITStubs.h:
+ * jsc.cpp:
+ (functionPrint):
+ (functionDebug):
+ (functionGC):
+ (functionVersion):
+ (functionRun):
+ (functionLoad):
+ (functionSetSamplingFlag):
+ (functionClearSamplingFlag):
+ (functionReadline):
+ (functionQuit):
+ * parser/Nodes.cpp:
+ (JSC::processClauseList):
+ * profiler/ProfileGenerator.cpp:
+ (JSC::ProfileGenerator::addParentForConsoleStart):
+ * profiler/Profiler.cpp:
+ (JSC::Profiler::willExecute):
+ (JSC::Profiler::didExecute):
+ (JSC::Profiler::createCallIdentifier):
+ * profiler/Profiler.h:
+ * runtime/ArgList.cpp:
+ (JSC::MarkedArgumentBuffer::slowAppend):
+ * runtime/ArgList.h:
+ (JSC::MarkedArgumentBuffer::at):
+ (JSC::MarkedArgumentBuffer::append):
+ (JSC::ArgList::ArgList):
+ (JSC::ArgList::at):
+ * runtime/Arguments.cpp:
+ (JSC::Arguments::put):
+ * runtime/Arguments.h:
+ (JSC::Arguments::createStructure):
+ (JSC::asArguments):
+ * runtime/ArrayConstructor.cpp:
+ (JSC::callArrayConstructor):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::getProperty):
+ (JSC::putProperty):
+ (JSC::arrayProtoFuncToString):
+ (JSC::arrayProtoFuncToLocaleString):
+ (JSC::arrayProtoFuncJoin):
+ (JSC::arrayProtoFuncConcat):
+ (JSC::arrayProtoFuncPop):
+ (JSC::arrayProtoFuncPush):
+ (JSC::arrayProtoFuncReverse):
+ (JSC::arrayProtoFuncShift):
+ (JSC::arrayProtoFuncSlice):
+ (JSC::arrayProtoFuncSort):
+ (JSC::arrayProtoFuncSplice):
+ (JSC::arrayProtoFuncUnShift):
+ (JSC::arrayProtoFuncFilter):
+ (JSC::arrayProtoFuncMap):
+ (JSC::arrayProtoFuncEvery):
+ (JSC::arrayProtoFuncForEach):
+ (JSC::arrayProtoFuncSome):
+ (JSC::arrayProtoFuncReduce):
+ (JSC::arrayProtoFuncReduceRight):
+ (JSC::arrayProtoFuncIndexOf):
+ (JSC::arrayProtoFuncLastIndexOf):
+ * runtime/BooleanConstructor.cpp:
+ (JSC::callBooleanConstructor):
+ (JSC::constructBooleanFromImmediateBoolean):
+ * runtime/BooleanConstructor.h:
+ * runtime/BooleanObject.h:
+ (JSC::asBooleanObject):
+ * runtime/BooleanPrototype.cpp:
+ (JSC::booleanProtoFuncToString):
+ (JSC::booleanProtoFuncValueOf):
+ * runtime/CallData.cpp:
+ (JSC::call):
+ * runtime/CallData.h:
+ * runtime/Collector.cpp:
+ (JSC::Heap::protect):
+ (JSC::Heap::unprotect):
+ (JSC::Heap::heap):
+ * runtime/Collector.h:
+ * runtime/Completion.cpp:
+ (JSC::evaluate):
+ * runtime/Completion.h:
+ (JSC::Completion::Completion):
+ (JSC::Completion::value):
+ (JSC::Completion::setValue):
+ * runtime/ConstructData.cpp:
+ (JSC::construct):
+ * runtime/ConstructData.h:
+ * runtime/DateConstructor.cpp:
+ (JSC::constructDate):
+ (JSC::callDate):
+ (JSC::dateParse):
+ (JSC::dateNow):
+ (JSC::dateUTC):
+ * runtime/DateInstance.h:
+ (JSC::asDateInstance):
+ * runtime/DatePrototype.cpp:
+ (JSC::dateProtoFuncToString):
+ (JSC::dateProtoFuncToUTCString):
+ (JSC::dateProtoFuncToDateString):
+ (JSC::dateProtoFuncToTimeString):
+ (JSC::dateProtoFuncToLocaleString):
+ (JSC::dateProtoFuncToLocaleDateString):
+ (JSC::dateProtoFuncToLocaleTimeString):
+ (JSC::dateProtoFuncGetTime):
+ (JSC::dateProtoFuncGetFullYear):
+ (JSC::dateProtoFuncGetUTCFullYear):
+ (JSC::dateProtoFuncToGMTString):
+ (JSC::dateProtoFuncGetMonth):
+ (JSC::dateProtoFuncGetUTCMonth):
+ (JSC::dateProtoFuncGetDate):
+ (JSC::dateProtoFuncGetUTCDate):
+ (JSC::dateProtoFuncGetDay):
+ (JSC::dateProtoFuncGetUTCDay):
+ (JSC::dateProtoFuncGetHours):
+ (JSC::dateProtoFuncGetUTCHours):
+ (JSC::dateProtoFuncGetMinutes):
+ (JSC::dateProtoFuncGetUTCMinutes):
+ (JSC::dateProtoFuncGetSeconds):
+ (JSC::dateProtoFuncGetUTCSeconds):
+ (JSC::dateProtoFuncGetMilliSeconds):
+ (JSC::dateProtoFuncGetUTCMilliseconds):
+ (JSC::dateProtoFuncGetTimezoneOffset):
+ (JSC::dateProtoFuncSetTime):
+ (JSC::setNewValueFromTimeArgs):
+ (JSC::setNewValueFromDateArgs):
+ (JSC::dateProtoFuncSetMilliSeconds):
+ (JSC::dateProtoFuncSetUTCMilliseconds):
+ (JSC::dateProtoFuncSetSeconds):
+ (JSC::dateProtoFuncSetUTCSeconds):
+ (JSC::dateProtoFuncSetMinutes):
+ (JSC::dateProtoFuncSetUTCMinutes):
+ (JSC::dateProtoFuncSetHours):
+ (JSC::dateProtoFuncSetUTCHours):
+ (JSC::dateProtoFuncSetDate):
+ (JSC::dateProtoFuncSetUTCDate):
+ (JSC::dateProtoFuncSetMonth):
+ (JSC::dateProtoFuncSetUTCMonth):
+ (JSC::dateProtoFuncSetFullYear):
+ (JSC::dateProtoFuncSetUTCFullYear):
+ (JSC::dateProtoFuncSetYear):
+ (JSC::dateProtoFuncGetYear):
+ * runtime/DatePrototype.h:
+ (JSC::DatePrototype::createStructure):
+ * runtime/ErrorConstructor.cpp:
+ (JSC::callErrorConstructor):
+ * runtime/ErrorPrototype.cpp:
+ (JSC::errorProtoFuncToString):
+ * runtime/ExceptionHelpers.cpp:
+ (JSC::createInterruptedExecutionException):
+ (JSC::createError):
+ (JSC::createStackOverflowError):
+ (JSC::createUndefinedVariableError):
+ (JSC::createErrorMessage):
+ (JSC::createInvalidParamError):
+ (JSC::createNotAConstructorError):
+ (JSC::createNotAFunctionError):
+ * runtime/ExceptionHelpers.h:
+ * runtime/FunctionConstructor.cpp:
+ (JSC::callFunctionConstructor):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::callFunctionPrototype):
+ (JSC::functionProtoFuncToString):
+ (JSC::functionProtoFuncApply):
+ (JSC::functionProtoFuncCall):
+ * runtime/FunctionPrototype.h:
+ (JSC::FunctionPrototype::createStructure):
+ * runtime/GetterSetter.cpp:
+ (JSC::GetterSetter::toPrimitive):
+ (JSC::GetterSetter::getPrimitiveNumber):
+ * runtime/GetterSetter.h:
+ (JSC::asGetterSetter):
+ * runtime/InternalFunction.cpp:
+ (JSC::InternalFunction::displayName):
+ * runtime/InternalFunction.h:
+ (JSC::InternalFunction::createStructure):
+ (JSC::asInternalFunction):
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::getOwnPropertySlot):
+ (JSC::JSActivation::put):
+ (JSC::JSActivation::putWithAttributes):
+ (JSC::JSActivation::argumentsGetter):
+ * runtime/JSActivation.h:
+ (JSC::JSActivation::createStructure):
+ (JSC::asActivation):
+ * runtime/JSArray.cpp:
+ (JSC::storageSize):
+ (JSC::JSArray::JSArray):
+ (JSC::JSArray::getOwnPropertySlot):
+ (JSC::JSArray::put):
+ (JSC::JSArray::putSlowCase):
+ (JSC::JSArray::deleteProperty):
+ (JSC::JSArray::setLength):
+ (JSC::JSArray::pop):
+ (JSC::JSArray::push):
+ (JSC::JSArray::mark):
+ (JSC::compareNumbersForQSort):
+ (JSC::JSArray::sortNumeric):
+ (JSC::JSArray::sort):
+ (JSC::JSArray::compactForSorting):
+ (JSC::JSArray::checkConsistency):
+ (JSC::constructArray):
+ * runtime/JSArray.h:
+ (JSC::JSArray::getIndex):
+ (JSC::JSArray::setIndex):
+ (JSC::JSArray::createStructure):
+ (JSC::asArray):
+ (JSC::isJSArray):
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::createStructure):
+ (JSC::JSByteArray::put):
+ * runtime/JSByteArray.h:
+ (JSC::JSByteArray::getIndex):
+ (JSC::JSByteArray::setIndex):
+ (JSC::asByteArray):
+ (JSC::isJSByteArray):
+ * runtime/JSCell.cpp:
+ (JSC::JSCell::put):
+ (JSC::JSCell::getJSNumber):
+ * runtime/JSCell.h:
+ (JSC::asCell):
+ (JSC::JSValue::asCell):
+ (JSC::JSValue::isString):
+ (JSC::JSValue::isGetterSetter):
+ (JSC::JSValue::isObject):
+ (JSC::JSValue::getString):
+ (JSC::JSValue::getObject):
+ (JSC::JSValue::getCallData):
+ (JSC::JSValue::getConstructData):
+ (JSC::JSValue::getUInt32):
+ (JSC::JSValue::getTruncatedInt32):
+ (JSC::JSValue::getTruncatedUInt32):
+ (JSC::JSValue::mark):
+ (JSC::JSValue::marked):
+ (JSC::JSValue::toPrimitive):
+ (JSC::JSValue::getPrimitiveNumber):
+ (JSC::JSValue::toBoolean):
+ (JSC::JSValue::toNumber):
+ (JSC::JSValue::toString):
+ (JSC::JSValue::toObject):
+ (JSC::JSValue::toThisObject):
+ (JSC::JSValue::needsThisConversion):
+ (JSC::JSValue::toThisString):
+ (JSC::JSValue::getJSNumber):
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::call):
+ (JSC::JSFunction::argumentsGetter):
+ (JSC::JSFunction::callerGetter):
+ (JSC::JSFunction::lengthGetter):
+ (JSC::JSFunction::getOwnPropertySlot):
+ (JSC::JSFunction::put):
+ (JSC::JSFunction::construct):
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::createStructure):
+ (JSC::asFunction):
+ * runtime/JSGlobalData.h:
+ * runtime/JSGlobalObject.cpp:
+ (JSC::markIfNeeded):
+ (JSC::JSGlobalObject::put):
+ (JSC::JSGlobalObject::putWithAttributes):
+ (JSC::JSGlobalObject::reset):
+ (JSC::JSGlobalObject::resetPrototype):
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::createStructure):
+ (JSC::JSGlobalObject::GlobalPropertyInfo::GlobalPropertyInfo):
+ (JSC::asGlobalObject):
+ (JSC::Structure::prototypeForLookup):
+ (JSC::Structure::prototypeChain):
+ (JSC::Structure::isValid):
* runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::encode):
+ (JSC::decode):
+ (JSC::globalFuncEval):
(JSC::globalFuncParseInt):
+ (JSC::globalFuncParseFloat):
+ (JSC::globalFuncIsNaN):
+ (JSC::globalFuncIsFinite):
+ (JSC::globalFuncDecodeURI):
+ (JSC::globalFuncDecodeURIComponent):
+ (JSC::globalFuncEncodeURI):
+ (JSC::globalFuncEncodeURIComponent):
+ (JSC::globalFuncEscape):
+ (JSC::globalFuncUnescape):
+ (JSC::globalFuncJSCPrint):
+ * runtime/JSGlobalObjectFunctions.h:
+ * runtime/JSImmediate.cpp:
+ (JSC::JSImmediate::toThisObject):
+ (JSC::JSImmediate::toObject):
+ (JSC::JSImmediate::prototype):
+ (JSC::JSImmediate::toString):
+ * runtime/JSImmediate.h:
+ (JSC::JSImmediate::isImmediate):
+ (JSC::JSImmediate::isNumber):
+ (JSC::JSImmediate::isIntegerNumber):
+ (JSC::JSImmediate::isDoubleNumber):
+ (JSC::JSImmediate::isPositiveIntegerNumber):
+ (JSC::JSImmediate::isBoolean):
+ (JSC::JSImmediate::isUndefinedOrNull):
+ (JSC::JSImmediate::isEitherImmediate):
+ (JSC::JSImmediate::areBothImmediate):
+ (JSC::JSImmediate::areBothImmediateIntegerNumbers):
+ (JSC::JSImmediate::makeValue):
+ (JSC::JSImmediate::makeInt):
+ (JSC::JSImmediate::makeDouble):
+ (JSC::JSImmediate::makeBool):
+ (JSC::JSImmediate::makeUndefined):
+ (JSC::JSImmediate::makeNull):
+ (JSC::JSImmediate::doubleValue):
+ (JSC::JSImmediate::intValue):
+ (JSC::JSImmediate::uintValue):
+ (JSC::JSImmediate::boolValue):
+ (JSC::JSImmediate::rawValue):
+ (JSC::JSImmediate::trueImmediate):
+ (JSC::JSImmediate::falseImmediate):
+ (JSC::JSImmediate::undefinedImmediate):
+ (JSC::JSImmediate::nullImmediate):
+ (JSC::JSImmediate::zeroImmediate):
+ (JSC::JSImmediate::oneImmediate):
+ (JSC::JSImmediate::impossibleValue):
+ (JSC::JSImmediate::toBoolean):
+ (JSC::JSImmediate::getTruncatedUInt32):
+ (JSC::JSImmediate::fromNumberOutsideIntegerRange):
+ (JSC::JSImmediate::from):
+ (JSC::JSImmediate::getTruncatedInt32):
+ (JSC::JSImmediate::toDouble):
+ (JSC::JSImmediate::getUInt32):
+ (JSC::JSValue::JSValue):
+ (JSC::JSValue::isUndefinedOrNull):
+ (JSC::JSValue::isBoolean):
+ (JSC::JSValue::getBoolean):
+ (JSC::JSValue::toInt32):
+ (JSC::JSValue::toUInt32):
+ (JSC::JSValue::isCell):
+ (JSC::JSValue::isInt32Fast):
+ (JSC::JSValue::getInt32Fast):
+ (JSC::JSValue::isUInt32Fast):
+ (JSC::JSValue::getUInt32Fast):
+ (JSC::JSValue::makeInt32Fast):
+ (JSC::JSValue::areBothInt32Fast):
+ (JSC::JSFastMath::canDoFastBitwiseOperations):
+ (JSC::JSFastMath::equal):
+ (JSC::JSFastMath::notEqual):
+ (JSC::JSFastMath::andImmediateNumbers):
+ (JSC::JSFastMath::xorImmediateNumbers):
+ (JSC::JSFastMath::orImmediateNumbers):
+ (JSC::JSFastMath::canDoFastRshift):
+ (JSC::JSFastMath::canDoFastUrshift):
+ (JSC::JSFastMath::rightShiftImmediateNumbers):
+ (JSC::JSFastMath::canDoFastAdditiveOperations):
+ (JSC::JSFastMath::addImmediateNumbers):
+ (JSC::JSFastMath::subImmediateNumbers):
+ (JSC::JSFastMath::incImmediateNumber):
+ (JSC::JSFastMath::decImmediateNumber):
+ * runtime/JSNotAnObject.cpp:
+ (JSC::JSNotAnObject::toPrimitive):
+ (JSC::JSNotAnObject::getPrimitiveNumber):
+ (JSC::JSNotAnObject::put):
+ * runtime/JSNotAnObject.h:
+ (JSC::JSNotAnObject::createStructure):
+ * runtime/JSNumberCell.cpp:
+ (JSC::JSNumberCell::toPrimitive):
+ (JSC::JSNumberCell::getPrimitiveNumber):
+ (JSC::JSNumberCell::getJSNumber):
+ (JSC::jsNumberCell):
+ * runtime/JSNumberCell.h:
+ (JSC::JSNumberCell::createStructure):
+ (JSC::isNumberCell):
+ (JSC::asNumberCell):
+ (JSC::jsNumber):
+ (JSC::JSValue::isDoubleNumber):
+ (JSC::JSValue::getDoubleNumber):
+ (JSC::JSValue::isNumber):
+ (JSC::JSValue::uncheckedGetNumber):
+ (JSC::jsNaN):
+ (JSC::JSValue::toJSNumber):
+ (JSC::JSValue::getNumber):
+ (JSC::JSValue::numberToInt32):
+ (JSC::JSValue::numberToUInt32):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::mark):
+ (JSC::JSObject::put):
+ (JSC::JSObject::putWithAttributes):
+ (JSC::callDefaultValueFunction):
+ (JSC::JSObject::getPrimitiveNumber):
+ (JSC::JSObject::defaultValue):
+ (JSC::JSObject::defineGetter):
+ (JSC::JSObject::defineSetter):
+ (JSC::JSObject::lookupGetter):
+ (JSC::JSObject::lookupSetter):
+ (JSC::JSObject::hasInstance):
+ (JSC::JSObject::toNumber):
+ (JSC::JSObject::toString):
+ (JSC::JSObject::fillGetterPropertySlot):
+ * runtime/JSObject.h:
+ (JSC::JSObject::getDirect):
+ (JSC::JSObject::getDirectLocation):
+ (JSC::JSObject::offsetForLocation):
+ (JSC::JSObject::locationForOffset):
+ (JSC::JSObject::getDirectOffset):
+ (JSC::JSObject::putDirectOffset):
+ (JSC::JSObject::createStructure):
+ (JSC::asObject):
+ (JSC::JSObject::prototype):
+ (JSC::JSObject::setPrototype):
+ (JSC::JSValue::isObject):
+ (JSC::JSObject::inlineGetOwnPropertySlot):
+ (JSC::JSObject::getOwnPropertySlotForWrite):
+ (JSC::JSObject::getPropertySlot):
+ (JSC::JSObject::get):
+ (JSC::JSObject::putDirect):
+ (JSC::JSObject::putDirectWithoutTransition):
+ (JSC::JSObject::toPrimitive):
+ (JSC::JSValue::get):
+ (JSC::JSValue::put):
+ (JSC::JSObject::allocatePropertyStorageInline):
+ * runtime/JSPropertyNameIterator.cpp:
+ (JSC::JSPropertyNameIterator::toPrimitive):
+ (JSC::JSPropertyNameIterator::getPrimitiveNumber):
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::JSPropertyNameIterator::create):
+ (JSC::JSPropertyNameIterator::next):
+ * runtime/JSStaticScopeObject.cpp:
+ (JSC::JSStaticScopeObject::put):
+ (JSC::JSStaticScopeObject::putWithAttributes):
+ * runtime/JSStaticScopeObject.h:
+ (JSC::JSStaticScopeObject::JSStaticScopeObject):
+ (JSC::JSStaticScopeObject::createStructure):
+ * runtime/JSString.cpp:
+ (JSC::JSString::toPrimitive):
+ (JSC::JSString::getPrimitiveNumber):
+ (JSC::JSString::getOwnPropertySlot):
+ * runtime/JSString.h:
+ (JSC::JSString::createStructure):
+ (JSC::asString):
+ (JSC::isJSString):
+ (JSC::JSValue::toThisJSString):
+ * runtime/JSValue.cpp:
+ (JSC::JSValue::toInteger):
+ (JSC::JSValue::toIntegerPreserveNaN):
+ * runtime/JSValue.h:
+ (JSC::JSValue::makeImmediate):
+ (JSC::JSValue::asValue):
+ (JSC::noValue):
+ (JSC::jsImpossibleValue):
+ (JSC::jsNull):
+ (JSC::jsUndefined):
+ (JSC::jsBoolean):
+ (JSC::operator==):
+ (JSC::operator!=):
+ (JSC::JSValue::encode):
+ (JSC::JSValue::decode):
+ (JSC::JSValue::JSValue):
+ (JSC::JSValue::operator bool):
+ (JSC::JSValue::operator==):
+ (JSC::JSValue::operator!=):
+ (JSC::JSValue::isUndefined):
+ (JSC::JSValue::isNull):
+ * runtime/JSVariableObject.h:
+ (JSC::JSVariableObject::symbolTablePut):
+ (JSC::JSVariableObject::symbolTablePutWithAttributes):
+ * runtime/JSWrapperObject.h:
+ (JSC::JSWrapperObject::internalValue):
+ (JSC::JSWrapperObject::setInternalValue):
+ * runtime/Lookup.cpp:
+ (JSC::setUpStaticFunctionSlot):
+ * runtime/Lookup.h:
+ (JSC::lookupPut):
+ * runtime/MathObject.cpp:
+ (JSC::mathProtoFuncAbs):
+ (JSC::mathProtoFuncACos):
+ (JSC::mathProtoFuncASin):
+ (JSC::mathProtoFuncATan):
+ (JSC::mathProtoFuncATan2):
+ (JSC::mathProtoFuncCeil):
+ (JSC::mathProtoFuncCos):
+ (JSC::mathProtoFuncExp):
+ (JSC::mathProtoFuncFloor):
+ (JSC::mathProtoFuncLog):
+ (JSC::mathProtoFuncMax):
+ (JSC::mathProtoFuncMin):
+ (JSC::mathProtoFuncPow):
+ (JSC::mathProtoFuncRandom):
+ (JSC::mathProtoFuncRound):
+ (JSC::mathProtoFuncSin):
+ (JSC::mathProtoFuncSqrt):
+ (JSC::mathProtoFuncTan):
+ * runtime/MathObject.h:
+ (JSC::MathObject::createStructure):
+ * runtime/NativeErrorConstructor.cpp:
+ (JSC::callNativeErrorConstructor):
+ * runtime/NumberConstructor.cpp:
+ (JSC::numberConstructorNaNValue):
+ (JSC::numberConstructorNegInfinity):
+ (JSC::numberConstructorPosInfinity):
+ (JSC::numberConstructorMaxValue):
+ (JSC::numberConstructorMinValue):
+ (JSC::callNumberConstructor):
+ * runtime/NumberConstructor.h:
+ (JSC::NumberConstructor::createStructure):
+ * runtime/NumberObject.cpp:
+ (JSC::NumberObject::getJSNumber):
+ (JSC::constructNumber):
+ * runtime/NumberObject.h:
+ * runtime/NumberPrototype.cpp:
+ (JSC::numberProtoFuncToString):
+ (JSC::numberProtoFuncToLocaleString):
+ (JSC::numberProtoFuncValueOf):
+ (JSC::numberProtoFuncToFixed):
+ (JSC::numberProtoFuncToExponential):
+ (JSC::numberProtoFuncToPrecision):
+ * runtime/ObjectConstructor.cpp:
+ (JSC::constructObject):
+ (JSC::callObjectConstructor):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::objectProtoFuncValueOf):
+ (JSC::objectProtoFuncHasOwnProperty):
+ (JSC::objectProtoFuncIsPrototypeOf):
+ (JSC::objectProtoFuncDefineGetter):
+ (JSC::objectProtoFuncDefineSetter):
+ (JSC::objectProtoFuncLookupGetter):
+ (JSC::objectProtoFuncLookupSetter):
+ (JSC::objectProtoFuncPropertyIsEnumerable):
+ (JSC::objectProtoFuncToLocaleString):
+ (JSC::objectProtoFuncToString):
+ * runtime/ObjectPrototype.h:
+ * runtime/Operations.cpp:
+ (JSC::JSValue::equalSlowCase):
+ (JSC::JSValue::strictEqualSlowCase):
+ (JSC::throwOutOfMemoryError):
+ (JSC::jsAddSlowCase):
+ (JSC::jsTypeStringForValue):
+ (JSC::jsIsObjectType):
+ (JSC::jsIsFunctionType):
+ * runtime/Operations.h:
+ (JSC::JSValue::equal):
+ (JSC::JSValue::equalSlowCaseInline):
+ (JSC::JSValue::strictEqual):
+ (JSC::JSValue::strictEqualSlowCaseInline):
+ (JSC::jsLess):
+ (JSC::jsLessEq):
+ (JSC::jsAdd):
+ (JSC::countPrototypeChainEntriesAndCheckForProxies):
+ (JSC::resolveBase):
+ * runtime/PropertySlot.cpp:
+ (JSC::PropertySlot::functionGetter):
+ * runtime/PropertySlot.h:
+ (JSC::PropertySlot::PropertySlot):
+ (JSC::PropertySlot::getValue):
+ (JSC::PropertySlot::putValue):
+ (JSC::PropertySlot::setValueSlot):
+ (JSC::PropertySlot::setValue):
+ (JSC::PropertySlot::setCustom):
+ (JSC::PropertySlot::setCustomIndex):
+ (JSC::PropertySlot::slotBase):
+ (JSC::PropertySlot::setBase):
+ (JSC::PropertySlot::):
+ * runtime/Protect.h:
+ (JSC::gcProtect):
+ (JSC::gcUnprotect):
+ (JSC::ProtectedPtr::operator JSValue):
+ (JSC::ProtectedJSValue::ProtectedJSValue):
+ (JSC::ProtectedJSValue::get):
+ (JSC::ProtectedJSValue::operator JSValue):
+ (JSC::ProtectedJSValue::operator->):
+ (JSC::ProtectedJSValue::~ProtectedJSValue):
+ (JSC::ProtectedJSValue::operator=):
+ (JSC::operator==):
+ (JSC::operator!=):
+ * runtime/RegExpConstructor.cpp:
+ (JSC::RegExpConstructor::getBackref):
+ (JSC::RegExpConstructor::getLastParen):
+ (JSC::RegExpConstructor::getLeftContext):
+ (JSC::RegExpConstructor::getRightContext):
+ (JSC::regExpConstructorDollar1):
+ (JSC::regExpConstructorDollar2):
+ (JSC::regExpConstructorDollar3):
+ (JSC::regExpConstructorDollar4):
+ (JSC::regExpConstructorDollar5):
+ (JSC::regExpConstructorDollar6):
+ (JSC::regExpConstructorDollar7):
+ (JSC::regExpConstructorDollar8):
+ (JSC::regExpConstructorDollar9):
+ (JSC::regExpConstructorInput):
+ (JSC::regExpConstructorMultiline):
+ (JSC::regExpConstructorLastMatch):
+ (JSC::regExpConstructorLastParen):
+ (JSC::regExpConstructorLeftContext):
+ (JSC::regExpConstructorRightContext):
+ (JSC::RegExpConstructor::put):
+ (JSC::setRegExpConstructorInput):
+ (JSC::setRegExpConstructorMultiline):
+ (JSC::constructRegExp):
+ (JSC::callRegExpConstructor):
+ * runtime/RegExpConstructor.h:
+ (JSC::RegExpConstructor::createStructure):
+ (JSC::asRegExpConstructor):
+ * runtime/RegExpMatchesArray.h:
+ (JSC::RegExpMatchesArray::put):
+ * runtime/RegExpObject.cpp:
+ (JSC::regExpObjectGlobal):
+ (JSC::regExpObjectIgnoreCase):
+ (JSC::regExpObjectMultiline):
+ (JSC::regExpObjectSource):
+ (JSC::regExpObjectLastIndex):
+ (JSC::RegExpObject::put):
+ (JSC::setRegExpObjectLastIndex):
+ (JSC::RegExpObject::test):
+ (JSC::RegExpObject::exec):
+ (JSC::callRegExpObject):
+ * runtime/RegExpObject.h:
+ (JSC::RegExpObject::createStructure):
+ (JSC::asRegExpObject):
+ * runtime/RegExpPrototype.cpp:
+ (JSC::regExpProtoFuncTest):
+ (JSC::regExpProtoFuncExec):
+ (JSC::regExpProtoFuncCompile):
+ (JSC::regExpProtoFuncToString):
+ * runtime/StringConstructor.cpp:
+ (JSC::stringFromCharCodeSlowCase):
+ (JSC::stringFromCharCode):
+ (JSC::callStringConstructor):
+ * runtime/StringObject.cpp:
+ (JSC::StringObject::put):
+ * runtime/StringObject.h:
+ (JSC::StringObject::createStructure):
+ (JSC::asStringObject):
+ * runtime/StringObjectThatMasqueradesAsUndefined.h:
+ (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+ (JSC::stringProtoFuncToString):
+ (JSC::stringProtoFuncCharAt):
+ (JSC::stringProtoFuncCharCodeAt):
+ (JSC::stringProtoFuncConcat):
+ (JSC::stringProtoFuncIndexOf):
+ (JSC::stringProtoFuncLastIndexOf):
+ (JSC::stringProtoFuncMatch):
+ (JSC::stringProtoFuncSearch):
+ (JSC::stringProtoFuncSlice):
+ (JSC::stringProtoFuncSplit):
+ (JSC::stringProtoFuncSubstr):
+ (JSC::stringProtoFuncSubstring):
+ (JSC::stringProtoFuncToLowerCase):
+ (JSC::stringProtoFuncToUpperCase):
+ (JSC::stringProtoFuncLocaleCompare):
+ (JSC::stringProtoFuncBig):
+ (JSC::stringProtoFuncSmall):
+ (JSC::stringProtoFuncBlink):
+ (JSC::stringProtoFuncBold):
+ (JSC::stringProtoFuncFixed):
+ (JSC::stringProtoFuncItalics):
+ (JSC::stringProtoFuncStrike):
+ (JSC::stringProtoFuncSub):
+ (JSC::stringProtoFuncSup):
+ (JSC::stringProtoFuncFontcolor):
+ (JSC::stringProtoFuncFontsize):
+ (JSC::stringProtoFuncAnchor):
+ (JSC::stringProtoFuncLink):
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure):
+ (JSC::Structure::changePrototypeTransition):
+ * runtime/Structure.h:
+ (JSC::Structure::create):
+ (JSC::Structure::setPrototypeWithoutTransition):
+ (JSC::Structure::storedPrototype):
+
+2009-05-01 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam "That doesn't look like what I thought it looks like" Weinig.
+
+ Beefed up the JSValuePtr class and removed some non-JSValuePtr dependencies
+ on JSImmediate, in prepapration for making JSImmediate an implementation
+ detail of JSValuePtr.
+
+ SunSpider reports no change.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_mod):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncParseInt): Updated for interface changes.
+
+ * runtime/JSImmediate.h:
+ (JSC::JSValuePtr::JSValuePtr):
+ * runtime/JSValue.h:
+ (JSC::JSValuePtr::):
+ (JSC::jsImpossibleValue):
+ (JSC::jsNull):
+ (JSC::jsUndefined):
+ (JSC::jsBoolean):
+ (JSC::JSValuePtr::encode):
+ (JSC::JSValuePtr::decode):
+ (JSC::JSValuePtr::JSValuePtr):
+ (JSC::JSValuePtr::operator bool):
+ (JSC::JSValuePtr::operator==):
+ (JSC::JSValuePtr::operator!=):
+ (JSC::JSValuePtr::isUndefined):
+ (JSC::JSValuePtr::isNull): Changed jsImpossibleValue(), jsNull(),
+ jsUndefined(), and jsBoolean() to operate in terms of JSValuePtr instead
+ of JSImmediate.
+
+ * wtf/StdLibExtras.h:
+ (WTF::bitwise_cast): Fixed up for clarity.
+
+2009-04-30 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Bug fix for rdar:/6845379. If a case-insensitive regex contains
+ a character class containing a range with an upper bound of \uFFFF
+ the parser will infinite-loop whist adding other-case characters
+ for characters in the range that do have another case.
+
+ * yarr/RegexCompiler.cpp:
+ (JSC::Yarr::CharacterClassConstructor::putRange):
+
+2009-04-30 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ OPCODE_SAMPLING without CODEBLOCK_SAMPLING is currently broken,
+ since SamplingTool::Sample::isNull() checks the m_codeBlock
+ member (which is always null without CODEBLOCK_SAMPLING).
+
+ Restructure the checks so make this work again.
+
+ * bytecode/SamplingTool.cpp:
+ (JSC::SamplingTool::doRun):
+ * bytecode/SamplingTool.h:
+ (JSC::SamplingTool::Sample::isNull):
+
+2009-04-30 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ - Concatenate final three strings in simple replace case at one go
+
+ ~0.2% SunSpider speedup
+
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace): Use new replaceRange helper instead of
+ taking substrings and concatenating three strings.
+ * runtime/UString.cpp:
+ (JSC::UString::replaceRange): New helper function.
+ * runtime/UString.h:
+
+2009-04-30 Geoffrey Garen <ggaren@apple.com>
+
+ Rubber Stamped by Gavin Barraclough.
+
+ Changed JSValueEncodedAsPtr* => EncodedJSValuePtr to support a non-pointer
+ encoding for JSValuePtrs.
+
+ * API/APICast.h:
+ (toJS):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue):
+ (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue):
+ * interpreter/Register.h:
+ (JSC::Register::):
+ * jit/JIT.cpp:
+ (JSC::):
+ * jit/JIT.h:
+ * jit/JITCode.h:
+ (JSC::):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_add):
+ (JSC::JITStubs::cti_op_pre_inc):
+ (JSC::JITStubs::cti_op_get_by_id_generic):
+ (JSC::JITStubs::cti_op_get_by_id):
+ (JSC::JITStubs::cti_op_get_by_id_second):
+ (JSC::JITStubs::cti_op_get_by_id_self_fail):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list_full):
+ (JSC::JITStubs::cti_op_get_by_id_proto_fail):
+ (JSC::JITStubs::cti_op_get_by_id_array_fail):
+ (JSC::JITStubs::cti_op_get_by_id_string_fail):
+ (JSC::JITStubs::cti_op_instanceof):
+ (JSC::JITStubs::cti_op_del_by_id):
+ (JSC::JITStubs::cti_op_mul):
+ (JSC::JITStubs::cti_op_call_NotJSFunction):
+ (JSC::JITStubs::cti_op_resolve):
+ (JSC::JITStubs::cti_op_construct_NotJSConstruct):
+ (JSC::JITStubs::cti_op_get_by_val):
+ (JSC::JITStubs::cti_op_get_by_val_string):
+ (JSC::JITStubs::cti_op_get_by_val_byte_array):
+ (JSC::JITStubs::cti_op_sub):
+ (JSC::JITStubs::cti_op_lesseq):
+ (JSC::JITStubs::cti_op_negate):
+ (JSC::JITStubs::cti_op_resolve_base):
+ (JSC::JITStubs::cti_op_resolve_skip):
+ (JSC::JITStubs::cti_op_resolve_global):
+ (JSC::JITStubs::cti_op_div):
+ (JSC::JITStubs::cti_op_pre_dec):
+ (JSC::JITStubs::cti_op_not):
+ (JSC::JITStubs::cti_op_eq):
+ (JSC::JITStubs::cti_op_lshift):
+ (JSC::JITStubs::cti_op_bitand):
+ (JSC::JITStubs::cti_op_rshift):
+ (JSC::JITStubs::cti_op_bitnot):
+ (JSC::JITStubs::cti_op_mod):
+ (JSC::JITStubs::cti_op_less):
+ (JSC::JITStubs::cti_op_neq):
+ (JSC::JITStubs::cti_op_urshift):
+ (JSC::JITStubs::cti_op_bitxor):
+ (JSC::JITStubs::cti_op_bitor):
+ (JSC::JITStubs::cti_op_call_eval):
+ (JSC::JITStubs::cti_op_throw):
+ (JSC::JITStubs::cti_op_next_pname):
+ (JSC::JITStubs::cti_op_typeof):
+ (JSC::JITStubs::cti_op_is_undefined):
+ (JSC::JITStubs::cti_op_is_boolean):
+ (JSC::JITStubs::cti_op_is_number):
+ (JSC::JITStubs::cti_op_is_string):
+ (JSC::JITStubs::cti_op_is_object):
+ (JSC::JITStubs::cti_op_is_function):
+ (JSC::JITStubs::cti_op_stricteq):
+ (JSC::JITStubs::cti_op_nstricteq):
+ (JSC::JITStubs::cti_op_to_jsnumber):
+ (JSC::JITStubs::cti_op_in):
+ (JSC::JITStubs::cti_op_del_by_val):
+ (JSC::JITStubs::cti_vm_throw):
+ * jit/JITStubs.h:
+ * runtime/JSValue.h:
+ (JSC::JSValuePtr::encode):
+ (JSC::JSValuePtr::decode):
+
+2009-04-30 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver "Abandon Ship!" Hunt.
+
+ Fix a leak in Yarr.
+
+ All Disjunctions should be recorded in RegexPattern::m_disjunctions,
+ so that they can be freed at the end of compilation - copyDisjunction
+ is failing to do so.
+
+ * yarr/RegexCompiler.cpp:
+ (JSC::Yarr::RegexPatternConstructor::copyDisjunction):
+
+2009-04-30 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Add function to CallFrame for dumping the current JS caller
+
+ Added debug only method CallFrame::dumpCaller() that provide the call location
+ of the deepest currently executing JS function.
+
+ * interpreter/CallFrame.cpp:
+ (JSC::CallFrame::dumpCaller):
+ * interpreter/CallFrame.h:
+
+2009-04-30 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ - make BaseStrings have themselves as a base, instead of nothing, to remove common branches
+
+ ~0.7% SunSpider speedup
+
+ * runtime/UString.h:
+ (JSC::UString::Rep::Rep): For the constructor without a base, set self as base instead of null.
+ (JSC::UString::Rep::baseString): Just read m_baseString - no more branching.
+
+2009-04-30 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Two quick improvements to SamplingFlags mechanism.
+
+ SamplingFlags::ScopedFlag class to provide support for automagically
+ clearing a flag as it goes out of scope, and add a little more detail
+ to the output generated by the tool.
+
+ * bytecode/SamplingTool.cpp:
+ (JSC::SamplingFlags::stop):
+ * bytecode/SamplingTool.h:
+ (JSC::SamplingFlags::ScopedFlag::ScopedFlag):
+ (JSC::SamplingFlags::ScopedFlag::~ScopedFlag):
+
+2009-04-30 Adam Roben <aroben@apple.com>
+
+ Restore build event steps that were truncated in r43082
+
+ Rubber-stamped by Steve Falkenburg.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
+ * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
+ Re-copied the command lines for the build events from the pre-r43082
+ .vcproj files.
+
+ * JavaScriptCore.vcproj/jsc/jsc.vcproj: Removed an unnecessary
+ attribute.
+
+2009-04-30 Adam Roben <aroben@apple.com>
+
+ Move settings from .vcproj files to .vsprops files within the
+ JavaScriptCore directory
+
+ Moving the settings to a .vsprops file means that we will only have to
+ change a single setting to affect all configurations, instead of one
+ setting per configuration.
+
+ Reviewed by Steve Falkenburg.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ * JavaScriptCore.vcproj/jsc/jsc.vcproj:
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj:
+ Moved settings from these files to the new .vsprops files. Note that
+ testapi.vcproj had a lot of overrides of default settings that were
+ the same as the defaults, which I've removed.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Added.
+ * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Added.
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added.
+ * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Added.
+
+2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25470
+ Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler.
+
+ * Configurations/FeatureDefines.xcconfig: Added ENABLE_JAVASCRIPT_DEBUGGER define.
+
+2009-04-30 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ - speed up string concatenation by reorganizing some simple cases
+
+ 0.7% SunSpider speedup
+
+ * runtime/UString.cpp:
+ (JSC::concatenate): Put fast case for appending a single character
+ before the empty string special cases; streamline code a bit to
+ delay computing values that are not needed in the fast path.
+
+2009-04-30 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Add SamplingFlags mechanism.
+
+ This mechanism allows fine-grained JSC and JavaScript program aware
+ performance measurement. The mechanism provides a set of 32 flags,
+ numbered #1..#32. Flag #16 is initially set, and all other flags
+ are cleared. Flags may be set and cleared from within
+
+ Enable by setting ENABLE_SAMPLING_FLAGS to 1 in wtf/Platform.h.
+ Disabled by default, no performance impact. Flags may be modified
+ by calling SamplingFlags::setFlag() and SamplingFlags::clearFlag()
+ from within JSC implementation, or by calling setSamplingFlag() and
+ clearSamplingFlag() from JavaScript.
+
+ The flags are sampled with a frequency of 10000Hz, and the highest
+ set flag in recorded, allowing multiple events to be measured (with
+ the highest flag number representing the highest priority).
+
+ Disabled by default; no performance impact.
+
+ * JavaScriptCore.exp:
+ * bytecode/SamplingTool.cpp:
+ (JSC::SamplingFlags::sample):
+ (JSC::SamplingFlags::start):
+ (JSC::SamplingFlags::stop):
+ (JSC::SamplingThread::threadStartFunc):
+ (JSC::SamplingThread::start):
+ (JSC::SamplingThread::stop):
+ (JSC::ScopeSampleRecord::sample):
+ (JSC::SamplingTool::doRun):
+ (JSC::SamplingTool::sample):
+ (JSC::SamplingTool::start):
+ (JSC::SamplingTool::stop):
+ * bytecode/SamplingTool.h:
+ (JSC::SamplingFlags::setFlag):
+ (JSC::SamplingFlags::clearFlag):
+ (JSC::SamplingTool::SamplingTool):
+ * jsc.cpp:
+ (GlobalObject::GlobalObject):
+ (functionSetSamplingFlag):
+ (functionClearSamplingFlag):
+ (runWithScripts):
+ * wtf/Platform.h:
+
+2009-04-29 Sam Weinig <sam@webkit.org>
+
+ Another attempt to fix the windows build.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-04-29 Sam Weinig <sam@webkit.org>
+
+ Try and fix the windows build.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-04-29 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver "Peg-Leg" Hunt.
+
+ Coallesce input checking and reduce futzing with the index position
+ between alternatives and iterations of the main loop of a regex,
+ when run in YARR.
+
+ Consider the following regex: /foo|bar/
+
+ Prior to this patch, this will be implemented something like this pseudo-code description:
+
+ loop:
+ check_for_available_input(3) // this increments the index by 3, for the first alterantive.
+ if (available) { test "foo" }
+ decrement_index(3)
+ check_for_available_input(3) // this increments the index by 3, for the second alterantive.
+ if (available) { test "bar" }
+ decrement_index(3)
+ check_for_available_input(1) // can we loop again?
+ if (available) { goto loop }
+
+ With these changes it will look more like this:
+
+ check_for_available_input(3) // this increments the index by 3, for the first alterantive.
+ if (!available) { goto fail }
+ loop:
+ test "foo"
+ test "bar"
+ check_for_available_input(1) // can we loop again?
+ if (available) { goto loop }
+ fail:
+
+
+ This gives about a 5% gain on v8-regex, no change on Sunspider.
+
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracksTo):
+ (JSC::Yarr::RegexGenerator::generateDisjunction):
+
+2009-04-29 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Clean up ArgList to be a trivial type
+
+ Separate out old ArgList logic to handle buffering and marking arguments
+ into a distinct MarkedArgumentBuffer type. ArgList becomes a trivial
+ struct of a pointer and length.
+
+ * API/JSObjectRef.cpp:
+ (JSObjectMakeFunction):
+ (JSObjectMakeArray):
+ (JSObjectMakeDate):
+ (JSObjectMakeError):
+ (JSObjectMakeRegExp):
+ (JSObjectCallAsFunction):
+ (JSObjectCallAsConstructor):
+ * JavaScriptCore.exp:
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::emptyList):
+ * runtime/ArgList.cpp:
+ (JSC::ArgList::getSlice):
+ (JSC::MarkedArgumentBuffer::markLists):
+ (JSC::MarkedArgumentBuffer::slowAppend):
+ * runtime/ArgList.h:
+ (JSC::MarkedArgumentBuffer::MarkedArgumentBuffer):
+ (JSC::MarkedArgumentBuffer::~MarkedArgumentBuffer):
+ (JSC::ArgList::ArgList):
+ (JSC::ArgList::at):
+ (JSC::ArgList::isEmpty):
+ (JSC::ArgList::size):
+ (JSC::ArgList::begin):
+ (JSC::ArgList::end):
+ * runtime/Arguments.cpp:
+ (JSC::Arguments::fillArgList):
+ * runtime/Arguments.h:
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncConcat):
+ (JSC::arrayProtoFuncPush):
+ (JSC::arrayProtoFuncSort):
+ (JSC::arrayProtoFuncFilter):
+ (JSC::arrayProtoFuncMap):
+ (JSC::arrayProtoFuncEvery):
+ (JSC::arrayProtoFuncForEach):
+ (JSC::arrayProtoFuncSome):
+ (JSC::arrayProtoFuncReduce):
+ (JSC::arrayProtoFuncReduceRight):
+ * runtime/Collector.cpp:
+ (JSC::Heap::collect):
+ * runtime/Collector.h:
+ (JSC::Heap::markListSet):
+ * runtime/CommonIdentifiers.h:
+ * runtime/Error.cpp:
+ (JSC::Error::create):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncApply):
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::JSArray):
+ (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
+ (JSC::JSArray::fillArgList):
+ (JSC::constructArray):
+ * runtime/JSArray.h:
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSGlobalData.h:
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::put):
+ * runtime/StringConstructor.cpp:
+ (JSC::stringFromCharCodeSlowCase):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+ (JSC::stringProtoFuncConcat):
+ (JSC::stringProtoFuncMatch):
+
+2009-04-29 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25334
+
+ Fix Qt build when ENABLE_JIT is explicitly set to 1
+ to overrule defaults.
+
+ * JavaScriptCore.pri:
+
+2009-04-29 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Steve Falkenburg.
+
+ Crash in profiler due to incorrect assuming displayName would be a string.
+
+ Fixed by adding a type guard.
+
+ * runtime/InternalFunction.cpp:
+ (JSC::InternalFunction::displayName):
+
+2009-04-28 Geoffrey Garen <ggaren@apple.com>
+
+ Rubber stamped by Beth Dakin.
+
+ Removed scaffolding supporting dynamically converting between 32bit and
+ 64bit value representations.
+
+ * API/JSCallbackConstructor.cpp:
+ (JSC::constructJSCallback):
+ * API/JSCallbackFunction.cpp:
+ (JSC::JSCallbackFunction::call):
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::construct):
+ (JSC::::call):
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::getConstant):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitEqualityOp):
+ * interpreter/CallFrame.cpp:
+ (JSC::CallFrame::thisValue):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::callEval):
+ (JSC::Interpreter::throwException):
+ (JSC::Interpreter::createExceptionScope):
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::retrieveArguments):
+ * interpreter/Register.h:
+ (JSC::Register::):
+ (JSC::Register::Register):
+ (JSC::Register::jsValue):
+ (JSC::Register::marked):
+ (JSC::Register::mark):
+ (JSC::Register::i):
+ (JSC::Register::activation):
+ (JSC::Register::arguments):
+ (JSC::Register::callFrame):
+ (JSC::Register::codeBlock):
+ (JSC::Register::function):
+ (JSC::Register::propertyNameIterator):
+ (JSC::Register::scopeChain):
+ (JSC::Register::vPC):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_call_NotJSFunction):
+ (JSC::JITStubs::cti_op_load_varargs):
+ (JSC::JITStubs::cti_op_call_eval):
+ * jsc.cpp:
+ (functionPrint):
+ (functionDebug):
+ (functionRun):
+ (functionLoad):
+ * runtime/ArgList.h:
+ (JSC::ArgList::at):
+ * runtime/Arguments.cpp:
+ (JSC::Arguments::copyToRegisters):
+ (JSC::Arguments::fillArgList):
+ (JSC::Arguments::getOwnPropertySlot):
+ * runtime/ArrayConstructor.cpp:
+ (JSC::constructArrayWithSizeQuirk):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncJoin):
+ (JSC::arrayProtoFuncConcat):
+ (JSC::arrayProtoFuncPush):
+ (JSC::arrayProtoFuncSlice):
+ (JSC::arrayProtoFuncSort):
+ (JSC::arrayProtoFuncSplice):
+ (JSC::arrayProtoFuncUnShift):
+ (JSC::arrayProtoFuncFilter):
+ (JSC::arrayProtoFuncMap):
+ (JSC::arrayProtoFuncEvery):
+ (JSC::arrayProtoFuncForEach):
+ (JSC::arrayProtoFuncSome):
+ (JSC::arrayProtoFuncReduce):
+ (JSC::arrayProtoFuncReduceRight):
+ (JSC::arrayProtoFuncIndexOf):
+ (JSC::arrayProtoFuncLastIndexOf):
+ * runtime/BooleanConstructor.cpp:
+ (JSC::constructBoolean):
+ (JSC::callBooleanConstructor):
+ * runtime/DateConstructor.cpp:
+ (JSC::constructDate):
+ (JSC::dateParse):
+ (JSC::dateUTC):
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
+ (JSC::fillStructuresUsingTimeArgs):
+ (JSC::fillStructuresUsingDateArgs):
+ (JSC::dateProtoFuncSetTime):
+ (JSC::dateProtoFuncSetYear):
+ * runtime/ErrorConstructor.cpp:
+ (JSC::constructError):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncApply):
+ (JSC::functionProtoFuncCall):
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::JSArray):
+ (JSC::constructArray):
+ * runtime/JSArray.h:
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::encode):
+ (JSC::decode):
+ (JSC::globalFuncEval):
+ (JSC::globalFuncParseInt):
+ (JSC::globalFuncParseFloat):
+ (JSC::globalFuncIsNaN):
+ (JSC::globalFuncIsFinite):
+ (JSC::globalFuncEscape):
+ (JSC::globalFuncUnescape):
+ (JSC::globalFuncJSCPrint):
+ * runtime/MathObject.cpp:
+ (JSC::mathProtoFuncAbs):
+ (JSC::mathProtoFuncACos):
+ (JSC::mathProtoFuncASin):
+ (JSC::mathProtoFuncATan):
+ (JSC::mathProtoFuncATan2):
+ (JSC::mathProtoFuncCeil):
+ (JSC::mathProtoFuncCos):
+ (JSC::mathProtoFuncExp):
+ (JSC::mathProtoFuncFloor):
+ (JSC::mathProtoFuncLog):
+ (JSC::mathProtoFuncMax):
+ (JSC::mathProtoFuncMin):
+ (JSC::mathProtoFuncPow):
+ (JSC::mathProtoFuncRound):
+ (JSC::mathProtoFuncSin):
+ (JSC::mathProtoFuncSqrt):
+ (JSC::mathProtoFuncTan):
+ * runtime/NativeErrorConstructor.cpp:
+ (JSC::NativeErrorConstructor::construct):
+ * runtime/NumberConstructor.cpp:
+ (JSC::constructWithNumberConstructor):
+ (JSC::callNumberConstructor):
+ * runtime/NumberPrototype.cpp:
+ (JSC::numberProtoFuncToString):
+ (JSC::numberProtoFuncToFixed):
+ (JSC::numberProtoFuncToExponential):
+ (JSC::numberProtoFuncToPrecision):
+ * runtime/ObjectConstructor.cpp:
+ (JSC::constructObject):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::objectProtoFuncHasOwnProperty):
+ (JSC::objectProtoFuncIsPrototypeOf):
+ (JSC::objectProtoFuncDefineGetter):
+ (JSC::objectProtoFuncDefineSetter):
+ (JSC::objectProtoFuncLookupGetter):
+ (JSC::objectProtoFuncLookupSetter):
+ (JSC::objectProtoFuncPropertyIsEnumerable):
+ * runtime/PropertySlot.h:
+ (JSC::PropertySlot::getValue):
+ * runtime/RegExpConstructor.cpp:
+ (JSC::constructRegExp):
+ * runtime/RegExpObject.cpp:
+ (JSC::RegExpObject::match):
+ * runtime/RegExpPrototype.cpp:
+ (JSC::regExpProtoFuncCompile):
+ * runtime/StringConstructor.cpp:
+ (JSC::stringFromCharCodeSlowCase):
+ (JSC::stringFromCharCode):
+ (JSC::constructWithStringConstructor):
+ (JSC::callStringConstructor):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+ (JSC::stringProtoFuncCharAt):
+ (JSC::stringProtoFuncCharCodeAt):
+ (JSC::stringProtoFuncConcat):
+ (JSC::stringProtoFuncIndexOf):
+ (JSC::stringProtoFuncLastIndexOf):
+ (JSC::stringProtoFuncMatch):
+ (JSC::stringProtoFuncSearch):
+ (JSC::stringProtoFuncSlice):
+ (JSC::stringProtoFuncSplit):
+ (JSC::stringProtoFuncSubstr):
+ (JSC::stringProtoFuncSubstring):
+ (JSC::stringProtoFuncLocaleCompare):
+ (JSC::stringProtoFuncFontcolor):
+ (JSC::stringProtoFuncFontsize):
+ (JSC::stringProtoFuncAnchor):
+ (JSC::stringProtoFuncLink):
+
+2009-04-28 David Kilzer <ddkilzer@apple.com>
+
+ A little more hardening for UString
+
+ Reviewed by Maciej Stachowiak.
+
+ Revised fix for <rdar://problem/5861045> in r42644.
+
+ * runtime/UString.cpp:
+ (JSC::newCapacityWithOverflowCheck): Added.
+ (JSC::concatenate): Used newCapacityWithOverflowCheck().
+ (JSC::UString::append): Ditto.
+
+2009-04-28 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Bring back r42969, this time with correct codegen
+
+ Add logic to the codegen for right shift to avoid jumping to a helper function
+ when shifting a small floating point value.
+
+ * jit/JITArithmetic.cpp:
+ (isSSE2Present):
+ (JSC::JIT::compileFastArith_op_rshift):
+ (JSC::JIT::compileFastArithSlow_op_rshift):
+
+2009-04-28 Kevin Ollivier <kevino@theolliviers.com>
+
+ wxMSW build fix. Switch JSCore build back to static.
+
+ * API/JSBase.h:
+ * config.h:
+ * jscore.bkl:
+
+2009-04-28 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ Roll out r42969, due to hangs in build bot.
+
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_rshift):
+ (JSC::JIT::compileFastArithSlow_op_rshift):
+ (JSC::isSSE2Present):
+
+2009-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed: fix distcheck build, add (even more) missing files to list.
+
+ * GNUmakefile.am:
+
+2009-04-28 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Improve performance of string indexing
+
+ Add a cti_get_by_val_string function to specialise indexing into a string object.
+ This gives us a slight performance win on a number of string tests.
+
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_get_by_val):
+ (JSC::JITStubs::cti_op_get_by_val_string):
+ * jit/JITStubs.h:
+
+2009-04-28 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Improve performance of right shifts of large or otherwise floating point values.
+
+ Add logic to the codegen for right shift to avoid jumping to a helper function
+ when shifting a small floating point value.
+
+ * jit/JITArithmetic.cpp:
+ (isSSE2Present): Moved to the head of file.
+ (JSC::JIT::compileFastArith_op_rshift):
+ (JSC::JIT::compileFastArithSlow_op_rshift):
+
+2009-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed: fix distcheck build, add (more) missing files to list.
+
+ * GNUmakefile.am:
+
+2009-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed: fix distcheck build, add missing header to file list.
+
+ * GNUmakefile.am:
+
+2009-04-28 Gavin Barraclough <barraclough@apple.com>
+
+ Rubber stamped by Maciej "Henry Morgan" Stachowiak.
+
+ Enable YARR.
+ (Again.)
+
+ * wtf/Platform.h:
+
+2009-04-27 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Tweak a loop condition to keep GCC happy,
+ some GCCs seem to be having issues with this. :-/
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::breakTarget):
+ * wtf/Platform.h:
+
+2009-04-27 Adam Roben <aroben@apple.com>
+
+ Windows Debug build fix
+
+ Not sure why the buildbots weren't affected by this problem.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS
+ re-order the file list, and added JavaScriptCore[_debug].def to the
+ project. This was not necessary for the fix, but made making the fix
+ easier.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ Removed a function that no longer exists.
+
+2009-04-26 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Weinig Sam.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=25416
+ "Cached prototype accesses unsafely hoist property storage load above structure checks."
+
+ Do not hoist the load of the pointer to the property storage array.
+
+ No performance impact.
+
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+
+2009-04-26 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoffrey "Gaffe or energy?" Garen.
+
+ Randomize address requested by ExecutableAllocatorFixedVMPool.
+
+ * jit/ExecutableAllocatorFixedVMPool.cpp:
+ (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
+
+2009-04-26 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Remove scons-based build system.
+
+ * JavaScriptCore.scons: Removed.
+
+2009-04-25 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Buildfix).
+
+ Make HAVE_MADV_FREE darwin only for now
+
+ * wtf/Platform.h:
+
+2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Gtk build fix - check if we have MADV_FREE before using it.
+
+ * interpreter/RegisterFile.cpp:
+ (JSC::RegisterFile::releaseExcessCapacity):
+ * wtf/Platform.h:
+
+2009-04-24 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix. Switching JSCore from a static lib to a dynamic lib
+ to match the Apple build and fix symbol exports.
+
+ * jscore.bkl:
+
+2009-04-24 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Rubber-stamped by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25337
+ Move ThreadingQt.cpp under the qt directory.
+
+ * JavaScriptCore.pri:
+ * wtf/ThreadingQt.cpp: Removed.
+ * wtf/qt/ThreadingQt.cpp: Copied from JavaScriptCore/wtf/ThreadingQt.cpp.
+
+2009-04-24 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Rubber-stamped by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25338
+ Move ThreadingGtk.cpp under the gtk directory.
+
+ * GNUmakefile.am:
+ * wtf/ThreadingGtk.cpp: Removed.
+ * wtf/gtk/ThreadingGtk.cpp: Copied from JavaScriptCore/wtf/ThreadingGtk.cpp.
+
+2009-04-24 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Sam "Wesley" Weinig.
+
+ Improve performance to YARR interpreter.
+ (From about 3x slower than PCRE on regex-dna to about 30% slower).
+
+ * yarr/RegexCompiler.cpp:
+ (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets):
+ * yarr/RegexInterpreter.cpp:
+ (JSC::Yarr::Interpreter::checkCharacter):
+ (JSC::Yarr::Interpreter::checkCasedCharacter):
+ (JSC::Yarr::Interpreter::backtrackPatternCharacter):
+ (JSC::Yarr::Interpreter::backtrackPatternCasedCharacter):
+ (JSC::Yarr::Interpreter::matchParentheticalAssertionBegin):
+ (JSC::Yarr::Interpreter::matchParentheticalAssertionEnd):
+ (JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin):
+ (JSC::Yarr::Interpreter::backtrackParentheticalAssertionEnd):
+ (JSC::Yarr::Interpreter::matchDisjunction):
+ (JSC::Yarr::Interpreter::interpret):
+ (JSC::Yarr::ByteCompiler::atomPatternCharacter):
+ (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
+ (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
+ (JSC::Yarr::ByteCompiler::closeAlternative):
+ (JSC::Yarr::ByteCompiler::closeBodyAlternative):
+ (JSC::Yarr::ByteCompiler::atomParenthesesEnd):
+ (JSC::Yarr::ByteCompiler::regexBegin):
+ (JSC::Yarr::ByteCompiler::regexEnd):
+ (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction):
+ (JSC::Yarr::ByteCompiler::alterantiveDisjunction):
+ (JSC::Yarr::ByteCompiler::emitDisjunction):
+ * yarr/RegexInterpreter.h:
+ (JSC::Yarr::ByteTerm::):
+ (JSC::Yarr::ByteTerm::ByteTerm):
+ (JSC::Yarr::ByteTerm::BodyAlternativeBegin):
+ (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction):
+ (JSC::Yarr::ByteTerm::BodyAlternativeEnd):
+ (JSC::Yarr::ByteTerm::AlternativeBegin):
+ (JSC::Yarr::ByteTerm::AlternativeDisjunction):
+ (JSC::Yarr::ByteTerm::AlternativeEnd):
+ (JSC::Yarr::ByteTerm::SubpatternBegin):
+ (JSC::Yarr::ByteTerm::SubpatternEnd):
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generateParentheticalAssertion):
+ * yarr/RegexPattern.h:
+
+2009-04-24 Rob Raguet-Schofield <ragfield@gmail.com>
+
+ Rubber-stamped by Mark Rowe.
+
+ * wtf/CurrentTime.h: Fix a typo in a comment.
+
+2009-04-24 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ Add reinterpret_cast
+
+ * interpreter/RegisterFile.cpp:
+ (JSC::RegisterFile::releaseExcessCapacity):
+
+2009-04-23 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ <rdar://problem/6050421> JavaScript register file should remap to release physical pages accumulated during deep recursion
+
+ We now track the maximum extent of the RegisterFile, and when we reach the final
+ return from JS (so the stack portion of the registerfile becomes empty) we see
+ if that extent is greater than maxExcessCapacity. If it is we use madvise or
+ VirtualFree to release the physical pages that were backing the excess.
+
+ * interpreter/RegisterFile.cpp:
+ (JSC::RegisterFile::releaseExcessCapacity):
+ * interpreter/RegisterFile.h:
+ (JSC::RegisterFile::RegisterFile):
+ (JSC::RegisterFile::shrink):
+ (JSC::RegisterFile::grow):
+
+2009-04-23 Mark Rowe <mrowe@apple.com>
+
+ With great sadness and a heavy heart I switch us back from YARR to WREC in
+ order to restore greenness to the world once more.
+
+ * wtf/Platform.h:
+
+2009-04-23 Mark Rowe <mrowe@apple.com>
+
+ More Windows build fixage.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+
+2009-04-23 Mark Rowe <mrowe@apple.com>
+
+ Attempt to fix the Windows build.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove a symbol that no longer exists.
+
+2009-04-23 Francisco Tolmasky <francisco@280north.com>
+
+ BUG 24604: WebKit profiler reports incorrect total times
+ <https://bugs.webkit.org/show_bug.cgi?id=24604>
+
+ Reviewed by Timothy Hatcher and Kevin McCullough.
+
+ * JavaScriptCore.exp:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * profiler/CallIdentifier.h:
+ (JSC::CallIdentifier::Hash::hash):
+ (JSC::CallIdentifier::Hash::equal):
+ (JSC::CallIdentifier::hash):
+ (WTF::):
+ * profiler/HeavyProfile.cpp: Removed.
+ * profiler/HeavyProfile.h: Removed.
+ * profiler/Profile.cpp: No more need for TreeProfile/HeavyProfile
+ (JSC::Profile::create):
+ * profiler/Profile.h:
+ * profiler/ProfileNode.cpp:
+ * profiler/ProfileNode.h:
+ * profiler/TreeProfile.cpp: Removed.
+ * profiler/TreeProfile.h: Removed.
+
+2009-04-23 Gavin Barraclough <barraclough@apple.com>
+
+ Not Reviewed.
+
+ Speculative Windows build fix II.
+
+ * yarr/RegexInterpreter.cpp:
+
+2009-04-23 Gavin Barraclough <barraclough@apple.com>
+
+ Not Reviewed.
+
+ Speculative Windows build fix.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * runtime/RegExp.cpp:
+
+2009-04-23 Gavin Barraclough <barraclough@apple.com>
+
+ Rubber stamped by salty sea dogs Sam & Geoff.
+
+ Enable YARR_JIT by default (where supported), replacing WREC.
+
+ * wtf/Platform.h:
+
+2009-04-23 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff "Dread Pirate Roberts" Garen.
+
+ Various small fixes to YARR JIT, in preparation for enabling it by default.
+
+ * Correctly index into the callframe when storing restart addresses for
+ nested alternatives.
+ * Allow backtracking back into matched alternatives of parentheses.
+ * Fix callframe offset calculation for parenthetical assertions.
+ * When a set of parenthese are quantified with a fixed and variable portion,
+ and the variable portion is quantified once, this should not reset the
+ pattern match on failure to match (the last match from the firxed portion
+ should be preserved).
+ * Up the pattern size limit to match PCRE's new limit.
+ * Unlclosed parentheses should be reported with the message "missing )".
+
+ * wtf/Platform.h:
+ * yarr/RegexCompiler.cpp:
+ (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
+ (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets):
+ * yarr/RegexInterpreter.cpp:
+ (JSC::Yarr::Interpreter::matchParentheses):
+ (JSC::Yarr::Interpreter::backtrackParentheses):
+ (JSC::Yarr::ByteCompiler::emitDisjunction):
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::loadFromFrameAndJump):
+ (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction):
+ (JSC::Yarr::RegexGenerator::generateParentheticalAssertion):
+ (JSC::Yarr::RegexGenerator::generateTerm):
+ (JSC::Yarr::executeRegex):
+ * yarr/RegexParser.h:
+ (JSC::Yarr::Parser::):
+ (JSC::Yarr::Parser::parseTokens):
+ (JSC::Yarr::Parser::parse):
+ * yarr/RegexPattern.h:
+ (JSC::Yarr::PatternTerm::):
+ (JSC::Yarr::PatternTerm::PatternTerm):
+
+2009-04-22 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Gavin Barraclough.
+
+ Add the m_ prefix on FixedVMPoolAllocator's member variables, and fix typos in a few comments.
+
+ * jit/ExecutableAllocatorFixedVMPool.cpp:
+ (JSC::FixedVMPoolAllocator::addToFreeList):
+ (JSC::FixedVMPoolAllocator::coalesceFreeSpace):
+ (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
+ (JSC::FixedVMPoolAllocator::alloc):
+ (JSC::FixedVMPoolAllocator::free):
+ (JSC::FixedVMPoolAllocator::isWithinVMPool):
+
+2009-04-22 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Gavin Barraclough.
+
+ Add some assertions to FixedVMPoolAllocator to guard against cases where we
+ attempt to free memory that didn't originate from the pool, or we attempt to
+ hand out a bogus address from alloc.
+
+ * jit/ExecutableAllocatorFixedVMPool.cpp:
+ (JSC::FixedVMPoolAllocator::release):
+ (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
+ (JSC::FixedVMPoolAllocator::alloc):
+ (JSC::FixedVMPoolAllocator::free):
+ (JSC::FixedVMPoolAllocator::isWithinVMPool):
+
+2009-04-22 Gavin Barraclough <barraclough@apple.com>
+
+ Rubber stamped by Sam "Blackbeard" Weinig.
+
+ Although pirates do spell the word 'generate' as 'genertate',
+ webkit developers do not. Fixertate.
+
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generateAssertionBOL):
+ (JSC::Yarr::RegexGenerator::generateAssertionEOL):
+ (JSC::Yarr::RegexGenerator::generateAssertionWordBoundary):
+ (JSC::Yarr::RegexGenerator::generatePatternCharacterSingle):
+ (JSC::Yarr::RegexGenerator::generatePatternCharacterPair):
+ (JSC::Yarr::RegexGenerator::generatePatternCharacterFixed):
+ (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy):
+ (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy):
+ (JSC::Yarr::RegexGenerator::generateCharacterClassSingle):
+ (JSC::Yarr::RegexGenerator::generateCharacterClassFixed):
+ (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy):
+ (JSC::Yarr::RegexGenerator::generateCharacterClassNonGreedy):
+ (JSC::Yarr::RegexGenerator::generateTerm):
+
+2009-04-22 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Sam "Blackbeard" Weinig.
+
+ Improvements to YARR JIT. This patch expands support in three key areas:
+ * Add (temporary) support for falling back to PCRE for expressions not supported.
+ * Add support for x86_64 and Windows.
+ * Add support for singly quantified parentheses (? and ??), alternatives within
+ parentheses, and parenthetical assertions.
+
+ * runtime/RegExp.cpp:
+ (JSC::RegExp::match):
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::storeToFrame):
+ (JSC::Yarr::RegexGenerator::storeToFrameWithPatch):
+ (JSC::Yarr::RegexGenerator::loadFromFrameAndJump):
+ (JSC::Yarr::RegexGenerator::AlternativeBacktrackRecord::AlternativeBacktrackRecord):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::resetTerm):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::plantJumpToBacktrackIfExists):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::addBacktrackJump):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracks):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::propagateBacktrackingFrom):
+ (JSC::Yarr::RegexGenerator::genertateAssertionBOL):
+ (JSC::Yarr::RegexGenerator::genertateAssertionEOL):
+ (JSC::Yarr::RegexGenerator::matchAssertionWordchar):
+ (JSC::Yarr::RegexGenerator::genertateAssertionWordBoundary):
+ (JSC::Yarr::RegexGenerator::genertatePatternCharacterSingle):
+ (JSC::Yarr::RegexGenerator::genertatePatternCharacterPair):
+ (JSC::Yarr::RegexGenerator::genertatePatternCharacterFixed):
+ (JSC::Yarr::RegexGenerator::genertatePatternCharacterGreedy):
+ (JSC::Yarr::RegexGenerator::genertatePatternCharacterNonGreedy):
+ (JSC::Yarr::RegexGenerator::genertateCharacterClassSingle):
+ (JSC::Yarr::RegexGenerator::genertateCharacterClassFixed):
+ (JSC::Yarr::RegexGenerator::genertateCharacterClassGreedy):
+ (JSC::Yarr::RegexGenerator::genertateCharacterClassNonGreedy):
+ (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction):
+ (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
+ (JSC::Yarr::RegexGenerator::generateParentheticalAssertion):
+ (JSC::Yarr::RegexGenerator::generateTerm):
+ (JSC::Yarr::RegexGenerator::generateDisjunction):
+ (JSC::Yarr::RegexGenerator::generateEnter):
+ (JSC::Yarr::RegexGenerator::generateReturn):
+ (JSC::Yarr::RegexGenerator::RegexGenerator):
+ (JSC::Yarr::RegexGenerator::generate):
+ (JSC::Yarr::RegexGenerator::compile):
+ (JSC::Yarr::RegexGenerator::generationFailed):
+ (JSC::Yarr::jitCompileRegex):
+ (JSC::Yarr::executeRegex):
+ * yarr/RegexJIT.h:
+ (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
+ (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
+
+2009-04-22 Sam Weinig <sam@webkit.org>
+
+ Rubber-stamped by Darin Adler.
+
+ Fix for <rdar://problem/6816957>
+ Turn off Geolocation by default
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2009-04-22 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Buildfix).
+
+ * interpreter/CachedCall.h:
+
+2009-04-21 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ * runtime/StringPrototype.cpp:
+
+2009-04-21 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Improve String.replace performance slightly
+
+ Apply our vm reentry caching logic to String.replace with global
+ regexes.
+
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+
+2009-04-21 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich and Oliver Hunt.
+
+ Re-Fixed <rdar://problem/6406045> REGRESSION: Stack overflow on PowerPC on
+ fast/workers/use-machine-stack.html (22531)
+
+ SunSpider reports no change.
+
+ Use a larger recursion limit on the main thread (because we can, and
+ there's some evidence that it may improve compatibility), and a smaller
+ recursion limit on secondary threads (because they tend to have smaller
+ stacks).
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+ (JSC::Interpreter::prepareForRepeatCall):
+ * interpreter/Interpreter.h:
+ (JSC::): Ditto. I wrote the recursion test slightly funny, so that the
+ common case remains a simple compare to constant.
+
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncToString):
+ (JSC::arrayProtoFuncToLocaleString):
+ (JSC::arrayProtoFuncJoin): Conservatively, set the array recursion limits
+ to the lower, secondary thread limit. We can do something fancier if
+ compatibility moves us, but this seems sufficient for now.
+
+2009-04-21 Geoffrey Garen <ggaren@apple.com>
+
+ Rubber-stamped by Adam Roben.
+
+ Disabled one more Mozilla JS test because it fails intermittently on Windows.
+ (See https://bugs.webkit.org/show_bug.cgi?id=25160.)
+
+ * tests/mozilla/expected.html:
+
+2009-04-21 Adam Roben <aroben@apple.com>
+
+ Rename JavaScriptCore_debug.dll to JavaScriptCore.dll in the Debug
+ configuration
+
+ This matches the naming scheme for WebKit.dll, and will be necessary
+ once Safari links against JavaScriptCore.dll. This change also causes
+ run-safari not to fail (because the launcher printed by FindSafari was
+ always looking for JavaScriptCore.dll, never
+ JavaScriptCore_debug.dll).
+
+ Part of Bug 25305: can't run safari or drt on windows
+ <https://bugs.webkit.org/show_bug.cgi?id=25305>
+
+ Reviewed by Steve Falkenburg and Sam Weinig.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.vcproj/jsc/jsc.vcproj:
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj:
+ Use $(WebKitDLLConfigSuffix) for naming JavaScriptCore.{dll,lib}.
+
+2009-04-21 Adam Roben <aroben@apple.com>
+
+ Fix JavaScriptCore build on VC++ Express
+
+ Reviewed by Steve Falkenburg and Sam Weinig.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Link
+ explicitly against gdi32.lib and oleaut32.lib.
+
+2009-04-21 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Tiger crash fix: Put VM tags in their own header file, and fixed up the
+ #ifdefs so they're not used on Tiger.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * interpreter/RegisterFile.h:
+ (JSC::RegisterFile::RegisterFile):
+ * jit/ExecutableAllocatorFixedVMPool.cpp:
+ (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
+ * jit/ExecutableAllocatorPosix.cpp:
+ (JSC::ExecutablePool::systemAlloc):
+ * runtime/Collector.cpp:
+ (JSC::allocateBlock):
+ * wtf/VMTags.h: Added.
+
+2009-04-20 Steve Falkenburg <sfalken@apple.com>
+
+ More Windows build fixes.
+
+ * JavaScriptCore.vcproj/JavaScriptCore.make: Copy DLLs, PDBs.
+ * JavaScriptCore.vcproj/JavaScriptCore.resources: Added.
+ * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: Added.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Added.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add version stamping, resource copying.
+
+2009-04-20 Steve Falkenburg <sfalken@apple.com>
+
+ Separate JavaScriptCore.dll from WebKit.dll.
+ Slight performance improvement or no change on benchmarks.
+
+ Allows us to break a circular dependency between CFNetwork and WebKit on Windows,
+ and simplifies standalone JavaScriptCore builds.
+
+ Reviewed by Oliver Hunt.
+
+ * API/JSBase.h: Export symbols with JS_EXPORT when using MSVC.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj: Build JavaScriptCore as a DLL instead of a static library.
+ * config.h: Specify __declspec(dllexport/dllimport) appropriately when exporting data.
+ * runtime/InternalFunction.h: Specify JS_EXPORTDATA on exported data.
+ * runtime/JSArray.h: Specify JS_EXPORTDATA on exported data.
+ * runtime/JSFunction.h: Specify JS_EXPORTDATA on exported data.
+ * runtime/StringObject.h: Specify JS_EXPORTDATA on exported data.
+ * runtime/UString.h: Specify JS_EXPORTDATA on exported data.
+
+2009-04-20 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Kevin McCullough.
+
+ Always tag mmaped memory on darwin and clean up #defines
+ now that they are a little bigger.
+
+ * interpreter/RegisterFile.h:
+ (JSC::RegisterFile::RegisterFile):
+ * jit/ExecutableAllocatorFixedVMPool.cpp:
+ (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
+ * jit/ExecutableAllocatorPosix.cpp:
+ (JSC::ExecutablePool::systemAlloc):
+ * runtime/Collector.cpp:
+ (JSC::allocateBlock):
+
+2009-04-20 Sam Weinig <sam@webkit.org>
+
+ Rubber-stamped by Tim Hatcher.
+
+ Add licenses for xcconfig files.
+
+ * Configurations/Base.xcconfig:
+ * Configurations/DebugRelease.xcconfig:
+ * Configurations/FeatureDefines.xcconfig:
+ * Configurations/JavaScriptCore.xcconfig:
+ * Configurations/Version.xcconfig:
+
+2009-04-20 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Build fix for Qt port (after r42646). Not reviewed.
+
+ * wtf/unicode/qt4/UnicodeQt4.h: Added U16_PREV.
+
+2009-04-19 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Better fix for JSStringCreateWithCFString hardening.
+
+ * API/JSStringRefCF.cpp:
+ (JSStringCreateWithCFString):
+
+2009-04-19 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for <rdar://problem/5860954>
+ Harden JSStringCreateWithCFString against malformed CFStringRefs.
+
+ * API/JSStringRefCF.cpp:
+ (JSStringCreateWithCFString):
+
+2009-04-19 David Kilzer <ddkilzer@apple.com>
+
+ Make FEATURE_DEFINES completely dynamic
+
+ Reviewed by Darin Adler.
+
+ Make FEATURE_DEFINES depend on individual ENABLE_FEATURE_NAME
+ variables for each feature, making it possible to remove all
+ knowledge of FEATURE_DEFINES from build-webkit.
+
+ * Configurations/FeatureDefines.xcconfig: Extract a variable
+ from FEATURE_DEFINES for each feature setting.
+
+2009-04-18 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix typo. s/VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE/VM_MEMORY_JAVASCRIPT_CORE/
+
+ * runtime/Collector.cpp:
+ (JSC::allocateBlock): Fix bozo typo.
+
+2009-04-18 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Fix for <rdar://problem/6801555> Tag JavaScript memory on SnowLeopard
+
+ * interpreter/RegisterFile.h:
+ (JSC::RegisterFile::RegisterFile):
+ * jit/ExecutableAllocatorFixedVMPool.cpp:
+ (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
+ * jit/ExecutableAllocatorPosix.cpp:
+ (JSC::ExecutablePool::systemAlloc):
+ * runtime/Collector.cpp:
+ (JSC::allocateBlock):
+
+2009-04-18 Drew Wilson <amw@apple.com>
+
+ <rdar://problem/6781407> VisiblePosition.characterAfter should return UChar32
+
+ Reviewed by Dan Bernstein.
+
+ * wtf/unicode/icu/UnicodeIcu.h:
+ (WTF::Unicode::hasLineBreakingPropertyComplexContextOrIdeographic): Added.
+
+2009-04-18 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Fix for <rdar://problem/5861045>
+ A little bit of hardening for UString.
+
+ * runtime/UString.cpp:
+ (JSC::concatenate):
+ (JSC::UString::append):
+
+2009-04-18 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe and Dan Bernstein.
+
+ Fix for <rdar://problem/5861188>
+ A little bit of hardening for Vector.
+
+ * wtf/Vector.h:
+ (WTF::Vector<T, inlineCapacity>::append):
+ (WTF::Vector<T, inlineCapacity>::insert):
+
+2009-04-17 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ On x86_64, make all JIT-code allocations from a new heap, managed
+ by FixedVMPoolAllocator. This class allocates a single large (2Gb)
+ pool of virtual memory from which all further allocations take place.
+ Since all JIT code is allocated from this pool, we can continue to
+ safely assume (as is already asserted) that it will always be possible
+ to link any JIT-code to JIT-code jumps and calls.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ Add new file.
+ * jit/ExecutableAllocatorFixedVMPool.cpp: Added.
+ (JSC::FreeListEntry::FreeListEntry):
+ (JSC::AVLTreeAbstractorForFreeList::get_less):
+ (JSC::AVLTreeAbstractorForFreeList::set_less):
+ (JSC::AVLTreeAbstractorForFreeList::get_greater):
+ (JSC::AVLTreeAbstractorForFreeList::set_greater):
+ (JSC::AVLTreeAbstractorForFreeList::get_balance_factor):
+ (JSC::AVLTreeAbstractorForFreeList::set_balance_factor):
+ (JSC::AVLTreeAbstractorForFreeList::null):
+ (JSC::AVLTreeAbstractorForFreeList::compare_key_key):
+ (JSC::AVLTreeAbstractorForFreeList::compare_key_node):
+ (JSC::AVLTreeAbstractorForFreeList::compare_node_node):
+ (JSC::sortFreeListEntriesByPointer):
+ (JSC::sortCommonSizedAllocations):
+ (JSC::FixedVMPoolAllocator::release):
+ (JSC::FixedVMPoolAllocator::reuse):
+ (JSC::FixedVMPoolAllocator::addToFreeList):
+ (JSC::FixedVMPoolAllocator::coalesceFreeSpace):
+ (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
+ (JSC::FixedVMPoolAllocator::alloc):
+ (JSC::FixedVMPoolAllocator::free):
+ (JSC::ExecutableAllocator::intializePageSize):
+ (JSC::ExecutablePool::systemAlloc):
+ (JSC::ExecutablePool::systemRelease):
+ The new 2Gb heap class!
+ * jit/ExecutableAllocatorPosix.cpp:
+ Disable use of this implementation on x86_64.
+ * wtf/AVLTree.h:
+ Add missing variable initialization.
+ (WTF::::remove):
+
+2009-04-17 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix bug where the VM reentry cache would not correctly unroll the cached callframe
+
+ Fix a check that was intended to mark a cached call as invalid when the callframe could
+ not be constructed. Instead it was just checking that there was a place to put the
+ exception. This eventually results in a non-recoverable RegisterFile starvation.
+
+ * interpreter/CachedCall.h:
+ (JSC::CachedCall::CachedCall):
+ (JSC::CachedCall::call): add assertion to ensure we don't use a bad callframe
+
+2009-04-17 David Kilzer <ddkilzer@apple.com>
+
+ Simplify FEATURE_DEFINES definition
+
+ Reviewed by Darin Adler.
+
+ This moves FEATURE_DEFINES and its related ENABLE_FEATURE_NAME
+ variables to their own FeatureDefines.xcconfig file. It also
+ extracts a new ENABLE_GEOLOCATION variable so that
+ FEATURE_DEFINES only needs to be defined once.
+
+ * Configurations/FeatureDefines.xcconfig: Added.
+ * Configurations/JavaScriptCore.xcconfig: Removed definition of
+ ENABLE_SVG_DOM_OBJC_BINDINGS and FEATURE_DEFINES. Added include
+ of FeatureDefines.xcconfig.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Added
+ FeatureDefines.xcconfig file.
+
+2009-04-08 Mihnea Ovidenie <mihnea@adobe.com>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 25027: JavaScript parseInt wrong on negative numbers
+ <https://bugs.webkit.org/show_bug.cgi?id=25027>
+
+ When dealing with negative numbers, parseInt should use ceil instead of floor.
+
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncParseInt):
+
+2009-04-16 Stephanie Lewis <slewis@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ <rdar://problem/6744652> 32-bit to 64-bit: Javascript hash tables double in size
+
+ Remove perfect hash optimization which removes 1 MB of overhead on 32-bit and almost 2 MB on 64-bit. Removing the optimization was not a regression on SunSpider and the acid 3 test still passes.
+
+ * create_hash_table:
+ * runtime/Lookup.cpp:
+ (JSC::HashTable::createTable):
+ (JSC::HashTable::deleteTable):
+ * runtime/Lookup.h:
+ (JSC::HashEntry::initialize):
+ (JSC::HashEntry::next):
+ (JSC::HashTable::entry):
+ * runtime/Structure.cpp:
+ (JSC::Structure::getEnumerableNamesFromClassInfoTable):
+
+2009-04-16 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Fix subtle error in optimised VM reentry in Array.sort
+
+ Basically to ensure we don't accidentally invalidate the cached callframe
+ we should be using the cached callframe rather than our own exec state.
+ While the old behaviour was wrong i have been unable to actually create a
+ test case where anything actually ends up going wrong.
+
+ * interpreter/CachedCall.h:
+ (JSC::CachedCall::newCallFrame):
+ * runtime/JSArray.cpp:
+ (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
+
+2009-04-16 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Optimise op_resolve_base
+
+ If we can statically find a property we are trying to resolve
+ the base of, the base is guaranteed to be the global object.
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitResolveBase):
+
+2009-04-16 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Improve performance of read-write-modify operators
+
+ Implement cross scope optimisation for read-write-modify
+ operators, to avoid unnecessary calls to property resolve
+ helper functions.
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+ (JSC::BytecodeGenerator::emitLoadGlobalObject):
+ (JSC::BytecodeGenerator::emitResolveWithBase):
+ * bytecompiler/BytecodeGenerator.h:
+
+2009-04-16 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Improve performance of remaining array enumeration functions
+
+ Make use of function entry cache for remaining Array enumeration functions.
+
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncMap):
+ (JSC::arrayProtoFuncEvery):
+ (JSC::arrayProtoFuncForEach):
+ (JSC::arrayProtoFuncSome):
+
+2009-04-15 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Improve performance of Array.sort
+
+ Cache the VM entry for Array.sort when using a JS comparison function.
+
+ * runtime/JSArray.cpp:
+ (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
+ (JSC::JSArray::sort):
+
+2009-04-15 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Bug 25229: Need support for Array.prototype.reduceRight
+ <https://bugs.webkit.org/show_bug.cgi?id=25229>
+
+ Implement Array.reduceRight
+
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncReduceRight):
+
+2009-04-15 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Bug 25227: Array.filter triggers an assertion when the target array shrinks while being filtered
+ <https://bugs.webkit.org/show_bug.cgi?id=25227>
+
+ We correct this simply by making the fast array path fall back on the slow path if
+ we ever discover the fast access is unsafe.
+
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncFilter):
+
+2009-04-13 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Bug 25159: Support Array.prototype.reduce
+ <https://bugs.webkit.org/show_bug.cgi?id=25159>
+
+ Implement Array.prototype.reduce
+
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncReduce):
+
+2009-04-15 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ Move CallFrameClosure from inside the Interpreter class to its own file.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * interpreter/CachedCall.h:
+ * interpreter/CallFrameClosure.h: Copied from JavaScriptCore/yarr/RegexJIT.h.
+ (JSC::CallFrameClosure::setArgument):
+ (JSC::CallFrameClosure::resetCallFrame):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::prepareForRepeatCall):
+ * interpreter/Interpreter.h:
+
+2009-04-14 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Bug 25202: Improve performance of repeated callbacks into the VM
+
+ Add the concept of a CachedCall to native code for use in Array
+ prototype and similar functions where a single callback function
+ is called repeatedly with the same number of arguments.
+
+ Used Array.prototype.filter as the test function and got a 50% win
+ over a naive non-caching specialised version. This makes the native
+ implementation of Array.prototype.filter faster than the JS one once
+ more.
+
+ * JavaScriptCore.vcproj/JavaScriptCore.sln:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * interpreter/CachedCall.h: Added.
+ (JSC::CachedCall::CachedCall):
+ (JSC::CachedCall::call):
+ (JSC::CachedCall::setThis):
+ (JSC::CachedCall::setArgument):
+ (JSC::CachedCall::~CachedCall):
+ CachedCall is a wrapper that automates the calling and teardown
+ for a CallFrameClosure
+ * interpreter/CallFrame.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::prepareForRepeatCall):
+ Create the basic entry closure for a function
+ (JSC::Interpreter::execute):
+ A new ::execute method to enter the interpreter from a closure
+ (JSC::Interpreter::endRepeatCall):
+ Clear the entry closure
+ * interpreter/Interpreter.h:
+ (JSC::Interpreter::CallFrameClosure::setArgument):
+ (JSC::Interpreter::CallFrameClosure::resetCallFrame):
+ Helper functions to simplify setting up the closure's callframe
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncFilter):
+
+2009-04-14 Xan Lopez <xlopez@igalia.com>
+
+ Fix the build.
+
+ Add the yarr headers (and only the headers) to the build, so that
+ RegExp.cpp can compile. The headers are ifdefed out with yarr
+ disabled, so we don't need anything else for now.
+
+ * GNUmakefile.am:
+
+2009-04-14 Adam Roben <aroben@apple.com>
+
+ Remove support for profile-guided optimization on Windows
+
+ Rubber-stamped by Steve Falkenburg.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed
+ the Release_PGO configuration. Also let VS re-order the source files
+ list.
+
+2009-04-14 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed build fix.
+
+ * GNUmakefile.am:
+
+2009-04-14 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Gtk build fix when building minidom. Not reviewed.
+
+ Use C-style comment instead of C++ style since autotools builds
+ minidom using gcc and not g++.
+
+ * wtf/Platform.h:
+
+2009-04-14 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by NOBODY - speculative build fix.
+
+ * runtime/RegExp.h:
+
+2009-04-13 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Cap'n Geoff Garen.
+
+ Yarr!
+ (Yet another regex runtime).
+
+ Currently disabled by default since the interpreter, whilst awesomely
+ functional, has not been optimized and is likely slower than PCRE, and
+ the JIT, whilst faster than WREC, is presently incomplete and does not
+ fallback to using an interpreter for the cases it cannot handle.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::move):
+ (JSC::MacroAssemblerX86Common::swap):
+ (JSC::MacroAssemblerX86Common::signExtend32ToPtr):
+ (JSC::MacroAssemblerX86Common::zeroExtend32ToPtr):
+ (JSC::MacroAssemblerX86Common::branch32):
+ (JSC::MacroAssemblerX86Common::branch16):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::cmpw_im):
+ (JSC::X86Assembler::testw_rr):
+ (JSC::X86Assembler::X86InstructionFormatter::immediate16):
+ * runtime/RegExp.cpp:
+ (JSC::RegExp::RegExp):
+ (JSC::RegExp::~RegExp):
+ (JSC::RegExp::create):
+ (JSC::RegExp::compile):
+ (JSC::RegExp::match):
+ * runtime/RegExp.h:
+ * wtf/Platform.h:
+ * yarr: Added.
+ * yarr/RegexCompiler.cpp: Added.
+ (JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor):
+ (JSC::Yarr::CharacterClassConstructor::reset):
+ (JSC::Yarr::CharacterClassConstructor::append):
+ (JSC::Yarr::CharacterClassConstructor::putChar):
+ (JSC::Yarr::CharacterClassConstructor::isUnicodeUpper):
+ (JSC::Yarr::CharacterClassConstructor::isUnicodeLower):
+ (JSC::Yarr::CharacterClassConstructor::putRange):
+ (JSC::Yarr::CharacterClassConstructor::charClass):
+ (JSC::Yarr::CharacterClassConstructor::addSorted):
+ (JSC::Yarr::CharacterClassConstructor::addSortedRange):
+ (JSC::Yarr::newlineCreate):
+ (JSC::Yarr::digitsCreate):
+ (JSC::Yarr::spacesCreate):
+ (JSC::Yarr::wordcharCreate):
+ (JSC::Yarr::nondigitsCreate):
+ (JSC::Yarr::nonspacesCreate):
+ (JSC::Yarr::nonwordcharCreate):
+ (JSC::Yarr::RegexPatternConstructor::RegexPatternConstructor):
+ (JSC::Yarr::RegexPatternConstructor::~RegexPatternConstructor):
+ (JSC::Yarr::RegexPatternConstructor::reset):
+ (JSC::Yarr::RegexPatternConstructor::assertionBOL):
+ (JSC::Yarr::RegexPatternConstructor::assertionEOL):
+ (JSC::Yarr::RegexPatternConstructor::assertionWordBoundary):
+ (JSC::Yarr::RegexPatternConstructor::atomPatternCharacter):
+ (JSC::Yarr::RegexPatternConstructor::atomBuiltInCharacterClass):
+ (JSC::Yarr::RegexPatternConstructor::atomCharacterClassBegin):
+ (JSC::Yarr::RegexPatternConstructor::atomCharacterClassAtom):
+ (JSC::Yarr::RegexPatternConstructor::atomCharacterClassRange):
+ (JSC::Yarr::RegexPatternConstructor::atomCharacterClassBuiltIn):
+ (JSC::Yarr::RegexPatternConstructor::atomCharacterClassEnd):
+ (JSC::Yarr::RegexPatternConstructor::atomParenthesesSubpatternBegin):
+ (JSC::Yarr::RegexPatternConstructor::atomParentheticalAssertionBegin):
+ (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
+ (JSC::Yarr::RegexPatternConstructor::atomBackReference):
+ (JSC::Yarr::RegexPatternConstructor::copyDisjunction):
+ (JSC::Yarr::RegexPatternConstructor::copyTerm):
+ (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
+ (JSC::Yarr::RegexPatternConstructor::disjunction):
+ (JSC::Yarr::RegexPatternConstructor::regexBegin):
+ (JSC::Yarr::RegexPatternConstructor::regexEnd):
+ (JSC::Yarr::RegexPatternConstructor::regexError):
+ (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets):
+ (JSC::Yarr::RegexPatternConstructor::setupDisjunctionOffsets):
+ (JSC::Yarr::RegexPatternConstructor::setupOffsets):
+ (JSC::Yarr::compileRegex):
+ * yarr/RegexCompiler.h: Added.
+ * yarr/RegexInterpreter.cpp: Added.
+ (JSC::Yarr::Interpreter::appendParenthesesDisjunctionContext):
+ (JSC::Yarr::Interpreter::popParenthesesDisjunctionContext):
+ (JSC::Yarr::Interpreter::DisjunctionContext::DisjunctionContext):
+ (JSC::Yarr::Interpreter::DisjunctionContext::operator new):
+ (JSC::Yarr::Interpreter::allocDisjunctionContext):
+ (JSC::Yarr::Interpreter::freeDisjunctionContext):
+ (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext):
+ (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::operator new):
+ (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::restoreOutput):
+ (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::getDisjunctionContext):
+ (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
+ (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
+ (JSC::Yarr::Interpreter::InputStream::InputStream):
+ (JSC::Yarr::Interpreter::InputStream::next):
+ (JSC::Yarr::Interpreter::InputStream::rewind):
+ (JSC::Yarr::Interpreter::InputStream::read):
+ (JSC::Yarr::Interpreter::InputStream::readChecked):
+ (JSC::Yarr::Interpreter::InputStream::reread):
+ (JSC::Yarr::Interpreter::InputStream::prev):
+ (JSC::Yarr::Interpreter::InputStream::getPos):
+ (JSC::Yarr::Interpreter::InputStream::setPos):
+ (JSC::Yarr::Interpreter::InputStream::atStart):
+ (JSC::Yarr::Interpreter::InputStream::atEnd):
+ (JSC::Yarr::Interpreter::InputStream::checkInput):
+ (JSC::Yarr::Interpreter::InputStream::uncheckInput):
+ (JSC::Yarr::Interpreter::testCharacterClass):
+ (JSC::Yarr::Interpreter::tryConsumeCharacter):
+ (JSC::Yarr::Interpreter::checkCharacter):
+ (JSC::Yarr::Interpreter::tryConsumeCharacterClass):
+ (JSC::Yarr::Interpreter::checkCharacterClass):
+ (JSC::Yarr::Interpreter::tryConsumeBackReference):
+ (JSC::Yarr::Interpreter::matchAssertionBOL):
+ (JSC::Yarr::Interpreter::matchAssertionEOL):
+ (JSC::Yarr::Interpreter::matchAssertionWordBoundary):
+ (JSC::Yarr::Interpreter::matchPatternCharacter):
+ (JSC::Yarr::Interpreter::backtrackPatternCharacter):
+ (JSC::Yarr::Interpreter::matchCharacterClass):
+ (JSC::Yarr::Interpreter::backtrackCharacterClass):
+ (JSC::Yarr::Interpreter::matchBackReference):
+ (JSC::Yarr::Interpreter::backtrackBackReference):
+ (JSC::Yarr::Interpreter::recordParenthesesMatch):
+ (JSC::Yarr::Interpreter::resetMatches):
+ (JSC::Yarr::Interpreter::resetAssertionMatches):
+ (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
+ (JSC::Yarr::Interpreter::matchParenthesesOnceBegin):
+ (JSC::Yarr::Interpreter::matchParenthesesOnceEnd):
+ (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin):
+ (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
+ (JSC::Yarr::Interpreter::matchParentheticalAssertionOnceBegin):
+ (JSC::Yarr::Interpreter::matchParentheticalAssertionOnceEnd):
+ (JSC::Yarr::Interpreter::backtrackParentheticalAssertionOnceBegin):
+ (JSC::Yarr::Interpreter::backtrackParentheticalAssertionOnceEnd):
+ (JSC::Yarr::Interpreter::matchParentheses):
+ (JSC::Yarr::Interpreter::backtrackParentheses):
+ (JSC::Yarr::Interpreter::matchTerm):
+ (JSC::Yarr::Interpreter::backtrackTerm):
+ (JSC::Yarr::Interpreter::matchAlternative):
+ (JSC::Yarr::Interpreter::matchDisjunction):
+ (JSC::Yarr::Interpreter::matchNonZeroDisjunction):
+ (JSC::Yarr::Interpreter::interpret):
+ (JSC::Yarr::Interpreter::Interpreter):
+ (JSC::Yarr::ByteCompiler::ParenthesesStackEntry::ParenthesesStackEntry):
+ (JSC::Yarr::ByteCompiler::ByteCompiler):
+ (JSC::Yarr::ByteCompiler::compile):
+ (JSC::Yarr::ByteCompiler::checkInput):
+ (JSC::Yarr::ByteCompiler::assertionBOL):
+ (JSC::Yarr::ByteCompiler::assertionEOL):
+ (JSC::Yarr::ByteCompiler::assertionWordBoundary):
+ (JSC::Yarr::ByteCompiler::atomPatternCharacter):
+ (JSC::Yarr::ByteCompiler::atomCharacterClass):
+ (JSC::Yarr::ByteCompiler::atomBackReference):
+ (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
+ (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
+ (JSC::Yarr::ByteCompiler::popParenthesesStack):
+ (JSC::Yarr::ByteCompiler::dumpDisjunction):
+ (JSC::Yarr::ByteCompiler::closeAlternative):
+ (JSC::Yarr::ByteCompiler::atomParenthesesEnd):
+ (JSC::Yarr::ByteCompiler::regexBegin):
+ (JSC::Yarr::ByteCompiler::regexEnd):
+ (JSC::Yarr::ByteCompiler::alterantiveDisjunction):
+ (JSC::Yarr::ByteCompiler::emitDisjunction):
+ (JSC::Yarr::byteCompileRegex):
+ (JSC::Yarr::interpretRegex):
+ * yarr/RegexInterpreter.h: Added.
+ (JSC::Yarr::ByteTerm::):
+ (JSC::Yarr::ByteTerm::ByteTerm):
+ (JSC::Yarr::ByteTerm::BOL):
+ (JSC::Yarr::ByteTerm::CheckInput):
+ (JSC::Yarr::ByteTerm::EOL):
+ (JSC::Yarr::ByteTerm::WordBoundary):
+ (JSC::Yarr::ByteTerm::BackReference):
+ (JSC::Yarr::ByteTerm::AlternativeBegin):
+ (JSC::Yarr::ByteTerm::AlternativeDisjunction):
+ (JSC::Yarr::ByteTerm::AlternativeEnd):
+ (JSC::Yarr::ByteTerm::PatternEnd):
+ (JSC::Yarr::ByteTerm::invert):
+ (JSC::Yarr::ByteTerm::capture):
+ (JSC::Yarr::ByteDisjunction::ByteDisjunction):
+ (JSC::Yarr::BytecodePattern::BytecodePattern):
+ (JSC::Yarr::BytecodePattern::~BytecodePattern):
+ * yarr/RegexJIT.cpp: Added.
+ (JSC::Yarr::RegexGenerator::optimizeAlternative):
+ (JSC::Yarr::RegexGenerator::matchCharacterClassRange):
+ (JSC::Yarr::RegexGenerator::matchCharacterClass):
+ (JSC::Yarr::RegexGenerator::jumpIfNoAvailableInput):
+ (JSC::Yarr::RegexGenerator::jumpIfAvailableInput):
+ (JSC::Yarr::RegexGenerator::checkInput):
+ (JSC::Yarr::RegexGenerator::atEndOfInput):
+ (JSC::Yarr::RegexGenerator::notAtEndOfInput):
+ (JSC::Yarr::RegexGenerator::jumpIfCharEquals):
+ (JSC::Yarr::RegexGenerator::jumpIfCharNotEquals):
+ (JSC::Yarr::RegexGenerator::readCharacter):
+ (JSC::Yarr::RegexGenerator::storeToFrame):
+ (JSC::Yarr::RegexGenerator::loadFromFrame):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::alternativeValid):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::nextAlternative):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::alternative):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::resetTerm):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::termValid):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::nextTerm):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::term):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::lookaheadTerm):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::isSinglePatternCharacterLookaheadTerm):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::inputOffset):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack):
+ (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackGenerated):
+ (JSC::Yarr::RegexGenerator::jumpToBacktrackCheckEmitPending):
+ (JSC::Yarr::RegexGenerator::genertateAssertionBOL):
+ (JSC::Yarr::RegexGenerator::genertateAssertionEOL):
+ (JSC::Yarr::RegexGenerator::matchAssertionWordchar):
+ (JSC::Yarr::RegexGenerator::genertateAssertionWordBoundary):
+ (JSC::Yarr::RegexGenerator::genertatePatternCharacterSingle):
+ (JSC::Yarr::RegexGenerator::genertatePatternCharacterPair):
+ (JSC::Yarr::RegexGenerator::genertatePatternCharacterFixed):
+ (JSC::Yarr::RegexGenerator::genertatePatternCharacterGreedy):
+ (JSC::Yarr::RegexGenerator::genertatePatternCharacterNonGreedy):
+ (JSC::Yarr::RegexGenerator::genertateCharacterClassSingle):
+ (JSC::Yarr::RegexGenerator::genertateCharacterClassFixed):
+ (JSC::Yarr::RegexGenerator::genertateCharacterClassGreedy):
+ (JSC::Yarr::RegexGenerator::genertateCharacterClassNonGreedy):
+ (JSC::Yarr::RegexGenerator::generateParenthesesSingleDisjunctionOneAlternative):
+ (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
+ (JSC::Yarr::RegexGenerator::generateTerm):
+ (JSC::Yarr::RegexGenerator::generateDisjunction):
+ (JSC::Yarr::RegexGenerator::RegexGenerator):
+ (JSC::Yarr::RegexGenerator::generate):
+ (JSC::Yarr::jitCompileRegex):
+ (JSC::Yarr::executeRegex):
+ * yarr/RegexJIT.h: Added.
+ (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
+ * yarr/RegexParser.h: Added.
+ (JSC::Yarr::):
+ (JSC::Yarr::Parser::):
+ (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate):
+ (JSC::Yarr::Parser::CharacterClassParserDelegate::begin):
+ (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacterUnescaped):
+ (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter):
+ (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass):
+ (JSC::Yarr::Parser::CharacterClassParserDelegate::end):
+ (JSC::Yarr::Parser::CharacterClassParserDelegate::assertionWordBoundary):
+ (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBackReference):
+ (JSC::Yarr::Parser::CharacterClassParserDelegate::flush):
+ (JSC::Yarr::Parser::CharacterClassParserDelegate::):
+ (JSC::Yarr::Parser::Parser):
+ (JSC::Yarr::Parser::parseEscape):
+ (JSC::Yarr::Parser::parseAtomEscape):
+ (JSC::Yarr::Parser::parseCharacterClassEscape):
+ (JSC::Yarr::Parser::parseCharacterClass):
+ (JSC::Yarr::Parser::parseParenthesesBegin):
+ (JSC::Yarr::Parser::parseParenthesesEnd):
+ (JSC::Yarr::Parser::parseQuantifier):
+ (JSC::Yarr::Parser::parseTokens):
+ (JSC::Yarr::Parser::parse):
+ (JSC::Yarr::Parser::saveState):
+ (JSC::Yarr::Parser::restoreState):
+ (JSC::Yarr::Parser::atEndOfPattern):
+ (JSC::Yarr::Parser::peek):
+ (JSC::Yarr::Parser::peekIsDigit):
+ (JSC::Yarr::Parser::peekDigit):
+ (JSC::Yarr::Parser::consume):
+ (JSC::Yarr::Parser::consumeDigit):
+ (JSC::Yarr::Parser::consumeNumber):
+ (JSC::Yarr::Parser::consumeOctal):
+ (JSC::Yarr::Parser::tryConsume):
+ (JSC::Yarr::Parser::tryConsumeHex):
+ (JSC::Yarr::parse):
+ * yarr/RegexPattern.h: Added.
+ (JSC::Yarr::CharacterRange::CharacterRange):
+ (JSC::Yarr::):
+ (JSC::Yarr::PatternTerm::):
+ (JSC::Yarr::PatternTerm::PatternTerm):
+ (JSC::Yarr::PatternTerm::BOL):
+ (JSC::Yarr::PatternTerm::EOL):
+ (JSC::Yarr::PatternTerm::WordBoundary):
+ (JSC::Yarr::PatternTerm::invert):
+ (JSC::Yarr::PatternTerm::capture):
+ (JSC::Yarr::PatternTerm::quantify):
+ (JSC::Yarr::PatternAlternative::PatternAlternative):
+ (JSC::Yarr::PatternAlternative::lastTerm):
+ (JSC::Yarr::PatternAlternative::removeLastTerm):
+ (JSC::Yarr::PatternDisjunction::PatternDisjunction):
+ (JSC::Yarr::PatternDisjunction::~PatternDisjunction):
+ (JSC::Yarr::PatternDisjunction::addNewAlternative):
+ (JSC::Yarr::RegexPattern::RegexPattern):
+ (JSC::Yarr::RegexPattern::~RegexPattern):
+ (JSC::Yarr::RegexPattern::reset):
+ (JSC::Yarr::RegexPattern::containsIllegalBackReference):
+ (JSC::Yarr::RegexPattern::newlineCharacterClass):
+ (JSC::Yarr::RegexPattern::digitsCharacterClass):
+ (JSC::Yarr::RegexPattern::spacesCharacterClass):
+ (JSC::Yarr::RegexPattern::wordcharCharacterClass):
+ (JSC::Yarr::RegexPattern::nondigitsCharacterClass):
+ (JSC::Yarr::RegexPattern::nonspacesCharacterClass):
+ (JSC::Yarr::RegexPattern::nonwordcharCharacterClass):
+
+2009-04-13 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Missed code from last patch).
+
+ * runtime/InternalFunction.cpp:
+ (JSC::InternalFunction::displayName):
+ (JSC::InternalFunction::calculatedDisplayName):
+ * runtime/InternalFunction.h:
+
+2009-04-13 Francisco Tolmasky <francisco@280north.com>
+
+ Reviewed by Oliver Hunt.
+
+ BUG 25171: It should be possible to manually set the name of an anonymous function
+ <https://bugs.webkit.org/show_bug.cgi?id=25171>
+
+ This change adds the displayName property to functions, which when set overrides the
+ normal name when appearing in the console.
+
+ * profiler/Profiler.cpp:
+ (JSC::createCallIdentifierFromFunctionImp): Changed call to InternalFunction::name to InternalFunction::calculatedDisplayName
+ * runtime/CommonIdentifiers.h: Added displayName common identifier.
+ * runtime/InternalFunction.cpp:
+ (JSC::InternalFunction::displayName): Access to user settable displayName property
+ (JSC::InternalFunction::calculatedDisplayName): Returns displayName if it exists, if not then the natural name
+
+2009-04-13 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Disabled another JavaScriptCore test because it fails on Windows but
+ not Mac, so it makes the bots red.
+
+ * tests/mozilla/expected.html:
+
+2009-04-13 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Disabled two JavaScriptCore tests because they fail on Window or Mac but
+ not both, so they make the bots red.
+
+ * tests/mozilla/expected.html: Updated expected results.
+
+2009-04-09 Ben Murdoch <benm@google.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25091
+ The Android platform requires threads to be registered with the VM.
+ This patch implements this behaviour inside ThreadingPthreads.cpp.
+
+ * wtf/ThreadingPthreads.cpp: Add a level above threadEntryPoint that takes care of (un)registering threads with the VM.
+ (WTF::runThreadWithRegistration): register the thread and run entryPoint. Unregister the thread afterwards.
+ (WTF::createThreadInternal): call runThreadWithRegistration instead of entryPoint directly.
+
+2009-04-09 David Kilzer <ddkilzer@apple.com>
+
+ Reinstating <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings
+
+ Rolled r42345 back in. The build failure was caused by an
+ internal script which had not been updated the same way that
+ build-webkit was updated.
+
+ * Configurations/JavaScriptCore.xcconfig:
+
+2009-04-09 Alexey Proskuryakov <ap@webkit.org>
+
+ Reverting <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings.
+ It broke Mac build, and I don't know how to fix it.
+
+ * Configurations/JavaScriptCore.xcconfig:
+
+2009-04-09 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed build fix.
+
+ Checking for __GLIBCXX__ being bigger than some date is not enough
+ to get std::tr1, C++0x has to be in use too. Add another check for
+ __GXX_EXPERIMENTAL_CXX0X__.
+
+ * wtf/TypeTraits.h:
+
+2009-04-08 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Adam Roben.
+
+ Fix assertion failure in function.apply
+
+ The result of excess arguments to function.apply is irrelevant
+ so we don't need to provide a result register. We were providing
+ temporary result register but not ref'ing it resulting in an
+ assertion failure.
+
+ * parser/Nodes.cpp:
+ (JSC::ApplyFunctionCallDotNode::emitBytecode):
+
+2009-04-08 David Kilzer <ddkilzer@apple.com>
+
+ <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings
+
+ Reviewed by Darin Adler and Maciej Stachowiak.
+
+ Introduce the ENABLE_SVG_DOM_OBJC_BINDINGS feature define so
+ that SVG DOM Objective-C bindings may be optionally disabled.
+
+ * Configurations/JavaScriptCore.xcconfig: Added
+ ENABLE_SVG_DOM_OBJC_BINDINGS variable and use it in
+ FEATURE_DEFINES.
+
+2009-04-08 Paul Pedriana <ppedriana@ea.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20422
+ Allow custom memory allocation control.
+
+ * wtf/FastAllocBase.h:
+ New added file. Implements allocation base class.
+ * wtf/TypeTraits.h:
+ Augments existing type traits support as needed by FastAllocBase.
+ * wtf/FastMalloc.h:
+ Changed to support FastMalloc match validation.
+ * wtf/FastMalloc.cpp:
+ Changed to support FastMalloc match validation.
+ * wtf/Platform.h:
+ Added ENABLE_FAST_MALLOC_MATCH_VALIDATION; defaults to 0.
+ * GNUmakefile.am:
+ Updated to include added FastAllocBase.h.
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ Updated to include added FastAllocBase.h.
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ Updated to include added FastAllocBase.h.
+
+2009-04-07 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Improve function.apply performance
+
+ Jump through a few hoops to improve performance of function.apply in the general case.
+
+ In the case of zero or one arguments, or if there are only two arguments and the
+ second is an array literal we treat function.apply as function.call.
+
+ Otherwise we use the new opcodes op_load_varargs and op_call_varargs to do the .apply call
+ without re-entering the virtual machine.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ * bytecode/Opcode.h:
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
+ (JSC::BytecodeGenerator::emitLoadVarargs):
+ (JSC::BytecodeGenerator::emitCallVarargs):
+ * bytecompiler/BytecodeGenerator.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallSetupArgs):
+ (JSC::JIT::compileOpCallVarargsSetupArgs):
+ (JSC::JIT::compileOpCallVarargs):
+ (JSC::JIT::compileOpCallVarargsSlowCase):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_load_varargs):
+ * jit/JITStubs.h:
+ * parser/Grammar.y:
+ * parser/Nodes.cpp:
+ (JSC::ArrayNode::isSimpleArray):
+ (JSC::ArrayNode::toArgumentList):
+ (JSC::CallFunctionCallDotNode::emitBytecode):
+ (JSC::ApplyFunctionCallDotNode::emitBytecode):
+ * parser/Nodes.h:
+ (JSC::ExpressionNode::):
+ (JSC::ApplyFunctionCallDotNode::):
+ * runtime/Arguments.cpp:
+ (JSC::Arguments::copyToRegisters):
+ (JSC::Arguments::fillArgList):
+ * runtime/Arguments.h:
+ (JSC::Arguments::numProvidedArguments):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::FunctionPrototype::addFunctionProperties):
+ * runtime/FunctionPrototype.h:
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::copyToRegisters):
+ * runtime/JSArray.h:
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::reset):
+ (JSC::JSGlobalObject::mark):
+ * runtime/JSGlobalObject.h:
+
+2009-04-08 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25073
+ JavaScriptCore tests don't run if time zone is not PST
+
+ * API/tests/testapi.c:
+ (timeZoneIsPST): Added a function that checks whether the time zone is PST, using the same
+ method as functions in DateMath.cpp do for formatting the result.
+ (main): Skip date string format test if the time zone is not PST.
+
+2009-04-07 David Levin <levin@chromium.org>
+
+ Reviewed by Sam Weinig and Geoff Garen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25039
+ UString refactoring to support UChar* sharing.
+
+ No change in sunspider perf.
+
+ * runtime/SmallStrings.cpp:
+ (JSC::SmallStringsStorage::SmallStringsStorage):
+ * runtime/UString.cpp:
+ (JSC::initializeStaticBaseString):
+ (JSC::initializeUString):
+ (JSC::UString::BaseString::isShared):
+ Encapsulate the meaning behind the refcount == 1 checks because
+ this needs to do slightly more when sharing is added.
+ (JSC::concatenate):
+ (JSC::UString::append):
+ (JSC::UString::operator=):
+ * runtime/UString.h:
+ Make m_baseString part of a union to get rid of casts, but make it protected because
+ it is tricky to use it correctly since it is only valid when the Rep is not a BaseString.
+ The void* will be filled in when sharing is added.
+
+ Add constructors due to the making members protected and it make ensuring proper
+ initialization work better (like in SmallStringsStorage).
+ (JSC::UString::Rep::create):
+ (JSC::UString::Rep::Rep):
+ (JSC::UString::Rep::):
+ (JSC::UString::BaseString::BaseString):
+ (JSC::UString::Rep::setBaseString):
+ (JSC::UString::Rep::baseString):
+
+2009-04-04 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25033
+ dtoa.cpp segfaults with g++ 4.4.0
+
+ g++ 4.4.0 seems to be more strict about aliasing rules, so it
+ produces incorrect code if dtoa.cpp is compiled with
+ -fstrict-aliasing (it also emits a ton of warnings, so fair enough
+ I guess). The problem was that we were only casting variables to
+ union types in order to do type punning, but GCC and the C
+ standard require that we actually use a union to store the value.
+
+ This patch does just that, the code is mostly copied from the dtoa
+ version in GCC:
+ http://gcc.gnu.org/viewcvs/trunk/libjava/classpath/native/fdlibm/dtoa.c?view=markup.
+
+ * wtf/dtoa.cpp:
+ (WTF::ulp):
+ (WTF::b2d):
+ (WTF::ratio):
+ (WTF::hexnan):
+ (WTF::strtod):
+ (WTF::dtoa):
+
+2009-04-04 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix for Win port. Build the assembler sources to get missing functions.
+
+ * JavaScriptCoreSources.bkl:
+ * jscore.bkl:
+ * wtf/Platform.h:
+
+2009-04-02 Darin Adler <darin@apple.com>
+
+ Reviewed by Kevin Decker.
+
+ <rdar://problem/6744471> crash in GC due to uninitialized callFunction pointer
+
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): Initialize
+ callFunction as we do the other data members that are used in the mark function.
+
+2009-04-02 Yael Aharon <yael.aharon@nokia.com>
+
+ Reviewed by Simon Hausmann
+
+ https://bugs.webkit.org/show_bug.cgi?id=24490
+
+ Implement WTF::ThreadSpecific in the Qt build using
+ QThreadStorage.
+
+ * wtf/ThreadSpecific.h:
+
+2009-04-01 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24990
+ Put SECTORDER_FLAGS into xcconfig files.
+
+ * Configurations/Base.xcconfig:
+ * Configurations/DebugRelease.xcconfig:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+
+2009-03-27 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ Fix non-AllInOneFile builds.
+
+ * bytecompiler/BytecodeGenerator.cpp:
+
+2009-03-27 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Improve performance of Function.prototype.call
+ <https://bugs.webkit.org/show_bug.cgi?id=24907>
+
+ Optimistically assume that expression.call(..) is going to be a call to
+ Function.prototype.call, and handle it specially to attempt to reduce the
+ degree of VM reentrancy.
+
+ When everything goes right this removes the vm reentry improving .call()
+ by around a factor of 10.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ * bytecode/Opcode.h:
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
+ * bytecompiler/BytecodeGenerator.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * parser/Grammar.y:
+ * parser/Nodes.cpp:
+ (JSC::CallFunctionCallDotNode::emitBytecode):
+ * parser/Nodes.h:
+ (JSC::CallFunctionCallDotNode::):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::FunctionPrototype::addFunctionProperties):
+ * runtime/FunctionPrototype.h:
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::reset):
+ (JSC::JSGlobalObject::mark):
+ * runtime/JSGlobalObject.h:
+
+2009-03-27 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 24884: Include strings.h for strcasecmp()
+ https://bugs.webkit.org/show_bug.cgi?id=24884
+
+ * runtime/DateMath.cpp: Reversed previous change including strings.h
+ * wtf/StringExtras.h: Include strings.h here is available
+
+2009-03-26 Adam Roben <aroben@apple.com>
+
+ Copy testapi.js to $WebKitOutputDir on Windows
+
+ Part of Bug 24856: run-javascriptcore-tests should run testapi on
+ Windows
+ <https://bugs.webkit.org/show_bug.cgi?id=24856>
+
+ This matches what Mac does, which will help once we enable running
+ testapi from run-javascriptcore-tests on Windows.
+
+ Reviewed by Steve Falkenburg.
+
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj: Copy testapi.js next
+ to testapi.exe.
+
+2009-03-25 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Fix exception handling for instanceof in the interpreter.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+
+2009-03-25 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Fixed <rdar://problem/6724011> Write to freed memory in JSC::Label::deref
+ when reloading http://helpme.att.net/speedtest/
+
+ * bytecompiler/BytecodeGenerator.h: Reversed the declaration order for
+ m_labelScopes and m_labels to reverse their destruction order.
+ m_labelScopes has references to memory within m_labels, so its destructor
+ needs to run first.
+
+2009-03-24 Eli Fidler <eli.fidler@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Correct warnings which in some environments are treated as errors.
+
+ * wtf/dtoa.cpp:
+ (WTF::b2d):
+ (WTF::d2b):
+ (WTF::strtod):
+ (WTF::dtoa):
+
+2009-03-24 Kevin Ollivier <kevino@theolliviers.com>
+
+ Reviewed by Darin Adler.
+
+ Explicitly define HAVE_LANGINFO_H on Darwin. Fixes the wx build bot jscore
+ test failure.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24780
+
+ * wtf/Platform.h:
+
+2009-03-23 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Fix className() for API defined class
+
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::className):
+ * API/tests/testapi.c:
+ (EmptyObject_class):
+ (main):
+ * API/tests/testapi.js:
+
+2009-03-23 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Make testapi assertions run in release builds, so that testapi actually
+ works in a release build.
+
+ Many of the testapi assertions have side effects that are necessary, and
+ given testapi is a testing program, perf impact of an assertion is not
+ important, so it makes sense to apply the assertions in release builds
+ anyway.
+
+ * API/tests/testapi.c:
+ (EvilExceptionObject_hasInstance):
+
+2009-03-23 David Kilzer <ddkilzer@apple.com>
+
+ Provide JavaScript exception information after slow script timeout
+
+ Reviewed by Oliver Hunt.
+
+ * runtime/Completion.cpp:
+ (JSC::evaluate): Set the exception object as the Completion
+ object's value for slow script timeouts. This is used in
+ WebCore when reporting the exception.
+ * runtime/ExceptionHelpers.cpp:
+ (JSC::InterruptedExecutionError::toString): Added. Provides a
+ description message for the exception when it is reported.
+
+2009-03-23 Gustavo Noronha Silva <gns@gnome.org> and Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+
+ Reviewed by Adam Roben.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24674
+ Crashes in !PLATFORM(MAC)'s formatLocaleDate, in very specific situations
+
+ Make sure strftime never returns 2-digits years to avoid ambiguity
+ and a crash. We wrap this new code option in HAVE_LANGINFO_H,
+ since it is apparently not available in all platforms.
+
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
+ * wtf/Platform.h:
+
+2009-03-22 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Fix exception handling in API
+
+ We can't just use the ExecState exception slot for returning exceptions
+ from class introspection functions provided through the API as many JSC
+ functions will explicitly clear the ExecState exception when returning.
+
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::JSCallbackObject<Base>::getOwnPropertySlot):
+ (JSC::JSCallbackObject<Base>::put):
+ (JSC::JSCallbackObject<Base>::deleteProperty):
+ (JSC::JSCallbackObject<Base>::construct):
+ (JSC::JSCallbackObject<Base>::hasInstance):
+ (JSC::JSCallbackObject<Base>::call):
+ (JSC::JSCallbackObject<Base>::toNumber):
+ (JSC::JSCallbackObject<Base>::toString):
+ (JSC::JSCallbackObject<Base>::staticValueGetter):
+ (JSC::JSCallbackObject<Base>::callbackGetter):
+ * API/tests/testapi.c:
+ (MyObject_hasProperty):
+ (MyObject_getProperty):
+ (MyObject_setProperty):
+ (MyObject_deleteProperty):
+ (MyObject_callAsFunction):
+ (MyObject_callAsConstructor):
+ (MyObject_hasInstance):
+ (EvilExceptionObject_hasInstance):
+ (EvilExceptionObject_convertToType):
+ (EvilExceptionObject_class):
+ (main):
+ * API/tests/testapi.js:
+ (EvilExceptionObject.hasInstance):
+ (EvilExceptionObject.toNumber):
+ (EvilExceptionObject.toStringExplicit):
+
+2009-03-21 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 20049: testapi failure: MyObject - 0 should be NaN but instead is 1.
+ <https://bugs.webkit.org/show_bug.cgi?id=20049>
+ <rdar://problem/6079127>
+
+ In this case, the test is wrong. According to the ECMA spec, subtraction
+ uses ToNumber, not ToPrimitive. Change the test to match the spec.
+
+ * API/tests/testapi.js:
+
+2009-03-21 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Ensure that JSObjectMakeFunction doesn't produce incorrect line numbers.
+
+ Also make test api correctly propagate failures.
+
+ * API/tests/testapi.c:
+ (main):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+
+2009-03-21 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Improve testapi by making it report failures in a way we can pick up
+ from our test scripts.
+
+ * API/tests/testapi.c:
+ (assertEqualsAsBoolean):
+ (assertEqualsAsNumber):
+ (assertEqualsAsUTF8String):
+ (assertEqualsAsCharactersPtr):
+ (main):
+ * API/tests/testapi.js:
+ (pass):
+ (fail):
+ (shouldBe):
+ (shouldThrow):
+
+2009-03-20 Norbert Leser <norbert.leser@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24535
+
+ Fixes missing line terminator character (;) after macro call.
+ It is common practice to add the trailing ";" where macros are substituted
+ and not where they are defined with #define.
+ This change is consistent with other macro declarations across webkit,
+ and it also solves compilation failure with symbian compilers.
+
+ * runtime/UString.cpp:
+ * wtf/Assertions.h:
+
+2009-03-20 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fixed a JavaScriptCore crash on the Windows buildbot.
+
+ * bytecompiler/BytecodeGenerator.h: Reduced the AST recursion limit.
+ Apparently, Windows has small stacks.
+
+2009-03-20 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ A little cleanup in the RegisterFile code.
+
+ Moved large inline functions out of the class declaration, to make it
+ more readable.
+
+ Switched over to using the roundUpAllocationSize function to avoid
+ duplicate code and subtle bugs.
+
+ Renamed m_maxCommitted to m_commitEnd, to match m_end.
+
+ Renamed allocationSize to commitSize because it's the chunk size for
+ committing memory, not allocating memory.
+
+ SunSpider reports no change.
+
+ * interpreter/RegisterFile.h:
+ (JSC::RegisterFile::RegisterFile):
+ (JSC::RegisterFile::shrink):
+ (JSC::RegisterFile::grow):
+ * jit/ExecutableAllocator.h:
+ (JSC::roundUpAllocationSize):
+
+2009-03-19 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fixed <rdar://problem/6033712> -- a little bit of hardening in the Collector.
+
+ SunSpider reports no change. I also verified in the disassembly that
+ we end up with a single compare to constant.
+
+ * runtime/Collector.cpp:
+ (JSC::Heap::heapAllocate):
+
+2009-03-19 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich and Oliver Hunt.
+
+ Fixed <rdar://problem/6406045> REGRESSION: Stack overflow on PowerPC on
+ fast/workers/use-machine-stack.html (22531)
+
+ Dialed down the re-entry allowance to 64 (from 128).
+
+ On a 512K stack, this leaves about 64K for other code on the stack while
+ JavaScript is running. Not perfect, but it solves our crash on PPC.
+
+ Different platforms may want to dial this down even more.
+
+ Also, substantially shrunk BytecodeGenerator. Since we allocate one on
+ the stack in order to throw a stack overflow exception -- well, let's
+ just say the old code had an appreciation for irony.
+
+ SunSpider reports no change.
+
+ * bytecompiler/BytecodeGenerator.h:
+ * interpreter/Interpreter.h:
+ (JSC::):
+
+2009-03-19 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 24350: REGRESSION: Safari 4 breaks SPAW wysiwyg editor multiple instances
+ <https://bugs.webkit.org/show_bug.cgi?id=24350>
+ <rdar://problem/6674182>
+
+ The SPAW editor's JavaScript assumes that toString() on a function
+ constructed with the Function constructor produces a function with
+ a newline after the opening brace.
+
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction): Add a newline after the opening brace of the
+ function's source code.
+
+2009-03-19 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Geoff Garen.
+
+ Bug 23771: REGRESSION (r36016): JSObjectHasProperty freezes on global class without kJSClassAttributeNoAutomaticPrototype
+ <https://bugs.webkit.org/show_bug.cgi?id=23771>
+ <rdar://problem/6561016>
+
+ * API/tests/testapi.c:
+ (main): Add a test for this bug.
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::resetPrototype): Don't set the prototype of the
+ last object in the prototype chain to the object prototype when the
+ object prototype is already the last object in the prototype chain.
+
+2009-03-19 Timothy Hatcher <timothy@apple.com>
+
+ <rdar://problem/6687342> -[WebView scheduleInRunLoop:forMode:] has no affect on timers
+
+ Reviewed by Darin Adler.
+
+ * wtf/Platform.h: Added HAVE_RUNLOOP_TIMER for PLATFORM(MAC).
+
+2009-03-19 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fixed <rdar://problem/6279213> Regular expression run-time complexity
+ limit too low for long inputs (21485)
+
+ I raised PCRE's "matchLimit" (limit on backtracking) by an order of
+ magnitude. This fixes all the reported examples of timing out on legitimate
+ regular expression matches.
+
+ In my testing on a Core Duo MacBook Pro, the longest you can get stuck
+ trying to match a string is still under 1s, so this seems like a safe change.
+
+ I can think of a number of better solutions that are more complicated,
+ but this is a good improvement for now.
+
+ * pcre/pcre_exec.cpp:
+
+2009-03-19 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fixed <rdar://problem/6603562> REGRESSION (Safari 4): regular expression
+ pattern size limit lower than Safari 3.2, other browsers, breaks SAP (14873)
+
+ Bumped the pattern size limit to 1MB, and standardized it between PCRE
+ and WREC. (Empirical testing says that we can easily compile a 1MB regular
+ expression without risking a hang. Other browsers support bigger regular
+ expressions, but also hang.)
+
+ SunSpider reports no change.
+
+ I started with a patch posted to Bugzilla by Erik Corry (erikcorry@google.com).
+
+ * pcre/pcre_internal.h:
+ (put3ByteValue):
+ (get3ByteValue):
+ (put3ByteValueAndAdvance):
+ (putLinkValueAllowZero):
+ (getLinkValueAllowZero): Made PCRE's "LINK_SIZE" (the number of bytes
+ used to record jumps between bytecodes) 3, to accomodate larger potential
+ jumps. Bumped PCRE's "MAX_PATTERN_SIZE" to 1MB. (Technically, at this
+ LINK_SIZE, we can support even larger patterns, but we risk a hang during
+ compilation, and it's not clear that such large patterns are important
+ on the web.)
+
+ * wrec/WREC.cpp:
+ (JSC::WREC::Generator::compileRegExp): Match PCRE's maximum pattern size,
+ to avoid quirks between platforms.
+
+2009-03-18 Ada Chan <adachan@apple.com>
+
+ Rolling out r41818 since it broke the windows build.
+ Error: ..\..\runtime\DatePrototype.cpp(30) : fatal error C1083: Cannot open include file: 'langinfo.h': No such file or directory
+
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
+
+2009-03-17 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ <rdar://problem/6692138> REGRESSION (Safari 4): Incorrect function return value when using IE "try ... finally" memory leak work-around (24654)
+ <https://bugs.webkit.org/show_bug.cgi?id=24654>
+
+ If the return value for a function is in a local register we need
+ to copy it before executing any finalisers, otherwise it is possible
+ for the finaliser to clobber the result.
+
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::hasFinaliser):
+ * parser/Nodes.cpp:
+ (JSC::ReturnNode::emitBytecode):
+
+2009-03-17 Kevin Ollivier <kevino@theolliviers.com>
+
+ Reviewed by Mark Rowe.
+
+ Move BUILDING_ON_* defines into Platform.h to make them available to other ports.
+ Also tweak the defines so that they work with the default values set by
+ AvailabilityMacros.h.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24630
+
+ * JavaScriptCorePrefix.h:
+ * wtf/Platform.h:
+
+2009-03-15 Simon Fraser <simon.fraser@apple.com>
+
+ Revert r41718 because it broke DumpRenderTree on Tiger.
+
+ * JavaScriptCorePrefix.h:
+ * wtf/Platform.h:
+
+2009-03-15 Kevin Ollivier <kevino@theolliviers.com>
+
+ Non-Apple Mac ports build fix. Move defines for the BUILDING_ON_ macros into
+ Platform.h so that they're defined for all ports building on Mac, and tweak
+ the definitions of those macros based on Mark Rowe's suggestions to accomodate
+ cases where the values may not be <= to the .0 release for that version.
+
+ * JavaScriptCorePrefix.h:
+ * wtf/Platform.h:
+
+2009-03-13 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Dan Bernstein.
+
+ Take advantage of the ability of recent versions of Xcode to easily switch the active
+ architecture.
+
+ * Configurations/DebugRelease.xcconfig:
+
+2009-03-13 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by David Kilzer.
+
+ Prevent AllInOneFile.cpp and ProfileGenerator.cpp from rebuilding unnecessarily when
+ switching between building in Xcode and via build-webkit.
+
+ build-webkit passes FEATURE_DEFINES to xcodebuild, resulting in it being present in the
+ Derived Sources build settings. When building in Xcode, this setting isn't present so
+ Xcode reruns the script build phases. This results in a new version of TracingDtrace.h
+ being generated, and the files that include it being rebuilt.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj: Don't regenerate TracingDtrace.h if it is
+ already newer than the input file.
+
+2009-03-13 Norbert Leser <norbert.leser@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ Resolved name conflict with globally defined tzname in Symbian.
+ Replaced with different name instead of using namespace qualifier
+ (appeared to be less clumsy).
+
+ * runtime/DateMath.cpp:
+
+2009-03-12 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6548446> TCMalloc_SystemRelease should use madvise rather than re-mmaping span of pages
+
+ * wtf/FastMalloc.cpp:
+ (WTF::mergeDecommittedStates): If either of the spans has been released to the system, release the other
+ span as well so that the flag in the merged span is accurate.
+ * wtf/Platform.h:
+ * wtf/TCSystemAlloc.cpp: Track decommitted spans when using MADV_FREE_REUSABLE / MADV_FREE_REUSE.
+ (TCMalloc_SystemRelease): Use madvise with MADV_FREE_REUSABLE when it is available.
+ (TCMalloc_SystemCommit): Use madvise with MADV_FREE_REUSE when it is available.
+ * wtf/TCSystemAlloc.h:
+
+2009-03-12 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ Include string.h for strlen usage.
+
+ * wtf/Threading.cpp:
+
+2009-03-12 David Kilzer <ddkilzer@apple.com>
+
+ Add NO_RETURN attribute to runInteractive() when not using readline
+
+ Reviewed by Darin Adler.
+
+ * jsc.cpp:
+ (runInteractive): If the readline library is not used, this method
+ will never return, thus the NO_RETURN attribute is needed to prevent
+ a gcc warning.
+
+2009-03-12 Adam Roben <aroben@apple.com>
+
+ Adopt setThreadNameInternal on Windows
+
+ Also changed a Windows-only assertion about thread name length to an
+ all-platform log message.
+
+ Reviewed by Adam Treat.
+
+ * wtf/Threading.cpp:
+ (WTF::createThread): Warn if the thread name is longer than 31
+ characters, as Visual Studio will truncate names longer than that
+ length.
+
+ * wtf/ThreadingWin.cpp:
+ (WTF::setThreadNameInternal): Renamed from setThreadName and changed
+ to always operate on the current thread.
+ (WTF::initializeThreading): Changed to use setThreadNameInternal.
+ (WTF::createThreadInternal): Removed call to setThreadName. This is
+ now handled by threadEntryPoint and setThreadNameInternal.
+
+2009-03-11 David Kilzer <ddkilzer@apple.com>
+
+ Clarify comments regarding order of FEATURE_DEFINES
+
+ Rubber-stamped by Mark Rowe.
+
+ * Configurations/JavaScriptCore.xcconfig: Added warning about
+ the consequences when FEATURE_DEFINES are not kept in sync.
+
+2009-03-11 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - WTF support for fixing <rdar://problem/3919124> Thai text selection
+ in Safari is incorrect
+
+ * wtf/unicode/icu/UnicodeIcu.h:
+ (WTF::Unicode::hasLineBreakingPropertyComplexContext): Added. Returns
+ whether the character has Unicode line breaking property value SA
+ ("Complex Context").
+ * wtf/unicode/qt4/UnicodeQt4.h:
+ (WTF::Unicode::hasLineBreakingPropertyComplexContext): Added an
+ implementation that always returns false.
+
+2009-03-11 Darin Adler <darin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Give threads names on platforms with pthread_setname_np.
+
+ * wtf/Threading.cpp:
+ (WTF::NewThreadContext::NewThreadContext): Initialize thread name.
+ (WTF::threadEntryPoint): Call setThreadNameInternal.
+ (WTF::createThread): Pass thread name.
+
+ * wtf/Threading.h: Added new comments, setThreadNameInternal.
+
+ * wtf/ThreadingGtk.cpp:
+ (WTF::setThreadNameInternal): Added. Empty.
+ * wtf/ThreadingNone.cpp:
+ (WTF::setThreadNameInternal): Added. Empty.
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::setThreadNameInternal): Call pthread_setname_np when available.
+ * wtf/ThreadingQt.cpp:
+ (WTF::setThreadNameInternal): Added. Empty.
+ * wtf/ThreadingWin.cpp:
+ (WTF::setThreadNameInternal): Added. Empty.
+
+2009-03-11 Adam Roben <aroben@apple.com>
+
+ Change the Windows implementation of ThreadSpecific to use functions
+ instead of extern globals
+
+ This will make it easier to export ThreadSpecific from WebKit.
+
+ Reviewed by John Sullivan.
+
+ * API/JSBase.cpp:
+ (JSEvaluateScript):
+ Touched this file to force ThreadSpecific.h to be copied into
+ $WebKitOutputDir.
+
+ * wtf/ThreadSpecific.h: Replaced g_tls_key_count with tlsKeyCount()
+ and g_tls_keys with tlsKeys().
+
+ (WTF::::ThreadSpecific):
+ (WTF::::~ThreadSpecific):
+ (WTF::::get):
+ (WTF::::set):
+ (WTF::::destroy):
+ Updated to use the new functions.
+
+ * wtf/ThreadSpecificWin.cpp:
+ (WTF::tlsKeyCount):
+ (WTF::tlsKeys):
+ Added.
+
+ (WTF::ThreadSpecificThreadExit): Changed to use the new functions.
+
+2009-03-10 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Geoff Garen.
+
+ Bug 24291: REGRESSION (r38635): Single line JavaScript comment prevents HTML button click handler execution
+ <https://bugs.webkit.org/show_bug.cgi?id=24291>
+ <rdar://problem/6663472>
+
+ Add an extra newline to the end of the body of the program text constructed
+ by the Function constructor for parsing. This allows single line comments to
+ be handled correctly by the parser.
+
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+
+2009-03-09 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Bug 24447: REGRESSION (r41508): Google Maps does not complete initialization
+ <rdar://problem/6657774>
+
+ r41508 actually exposed a pre-existing bug where we were not invalidating the result
+ register cache at jump targets. This causes problems when condition loads occur in an
+ expression -- namely through the ?: and || operators. This patch corrects these issues
+ by marking the target of all forward jumps as being a jump target, and then clears the
+ result register cache when ever it starts generating code for a targeted instruction.
+
+ I do not believe it is possible to cause this class of failure outside of a single
+ expression, and expressions only provide forward branches, so this should resolve this
+ entire class of bug. That said i've included a test case that gets as close as possible
+ to hitting this bug with a back branch, to hopefully prevent anyone from introducing the
+ problem in future.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::Label::isUsed):
+ (JSC::AbstractMacroAssembler::Label::used):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::JmpDst::JmpDst):
+ (JSC::X86Assembler::JmpDst::isUsed):
+ (JSC::X86Assembler::JmpDst::used):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+
+2009-03-09 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Bug 23175: String and UString should be able to share a UChar* buffer.
+ <https://bugs.webkit.org/show_bug.cgi?id=23175>
+
+ Add CrossThreadRefCounted.
+
+ * wtf/CrossThreadRefCounted.h: Added.
+ (WTF::CrossThreadRefCounted::create):
+ (WTF::CrossThreadRefCounted::isShared):
+ (WTF::CrossThreadRefCounted::dataAccessMustBeThreadSafe):
+ (WTF::CrossThreadRefCounted::mayBePassedToAnotherThread):
+ (WTF::CrossThreadRefCounted::CrossThreadRefCounted):
+ (WTF::CrossThreadRefCounted::~CrossThreadRefCounted):
+ (WTF::CrossThreadRefCounted::ref):
+ (WTF::CrossThreadRefCounted::deref):
+ (WTF::CrossThreadRefCounted::release):
+ (WTF::CrossThreadRefCounted::copy):
+ (WTF::CrossThreadRefCounted::threadSafeDeref):
+ * wtf/RefCounted.h:
+ * wtf/Threading.h:
+ (WTF::ThreadSafeSharedBase::ThreadSafeSharedBase):
+ (WTF::ThreadSafeSharedBase::derefBase):
+ (WTF::ThreadSafeShared::ThreadSafeShared):
+ (WTF::ThreadSafeShared::deref):
+
+2009-03-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24353
+ Allow to overrule default build options for Qt build.
+
+ * JavaScriptCore.pri: Allow to overrule ENABLE_JIT
+
+2009-03-08 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (build fix).
+
+ Build fix.
+
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncConcat):
+
+2009-03-01 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Bug 24268: RuntimeArray is not a fully implemented JSArray
+ <https://bugs.webkit.org/show_bug.cgi?id=24268>
+
+ Don't cast a type to JSArray, just because it reportsArray as a supertype
+ in the JS type system. Doesn't appear feasible to create a testcase
+ unfortunately as setting up the failure conditions requires internal access
+ to JSC not present in DRT.
+
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncConcat):
+
+2009-03-06 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ When preforming an op_mov, preserve any existing register mapping.
+
+ ~0.5% progression on v8 tests x86-64.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+
+2009-03-05 Simone Fiorentino <simone.fiorentino@consulenti.fastweb.it>
+
+ Bug 24382: request to add SH4 platform
+
+ <https://bugs.webkit.org/show_bug.cgi?id=24382>
+
+ Reviewed by David Kilzer.
+
+ * wtf/Platform.h: Added support for SH4 platform.
+
+2009-03-05 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Writes of constant values to SF registers should be made with direct memory
+ writes where possible, rather than moving the value via a hardware register.
+
+ ~3% win on SunSpider tests on x86, ~1.5% win on v8 tests on x86-64.
+
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::storePtr):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::movq_i32m):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+
+2009-03-05 Mark Rowe <mrowe@apple.com>
+
+ Fix the build.
+
+ Sprinkle "static" around NumberConstructor.cpp in order to please the compiler.
+
+ * runtime/NumberConstructor.cpp:
+ (JSC::numberConstructorNaNValue):
+ (JSC::numberConstructorNegInfinity):
+ (JSC::numberConstructorPosInfinity):
+ (JSC::numberConstructorMaxValue):
+ (JSC::numberConstructorMinValue):
+
+2009-03-04 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ <rdar://problem/6354858> FastMallocZone's enumeration code reports fragmented administration space
+
+ The handling of MALLOC_ADMIN_REGION_RANGE_TYPE in FastMalloc's zone was incorrect. It was attempting
+ to record the memory containing and individual span as an administrative region, when all memory
+ allocated via MetaDataAlloc should in fact be recorded. This was causing memory regions allocated
+ via MetaDataAlloc to appear as "VM_ALLOCATE ?" in vmmap output. They are now correctly reported as
+ "MALLOC_OTHER" regions associated with the JavaScriptCore FastMalloc zone.
+
+ Memory is allocated via MetaDataAlloc from two locations: PageHeapAllocator, and TCMalloc_PageMap{2,3}.
+ These two cases are handled differently.
+
+ PageHeapAllocator is extended to keep a linked list of memory regions that it has allocated. The
+ first object in an allocated region contains the link to the previously allocated region. To record
+ the administrative regions of a PageHeapAllocator we can simply walk the linked list and record
+ each allocated region we encounter.
+
+ TCMalloc_PageMaps allocate memory via MetaDataAlloc to store each level of the radix tree. To record
+ the administrative regions of a TCMalloc_PageMap we walk the tree and record the storage used for nodes
+ at each position rather than the nodes themselves.
+
+ A small performance improvement is achieved by coalescing adjacent memory regions inside the PageMapMemoryUsageRecorder
+ so that fewer calls in to the range recorder are necessary. We further reduce the number of calls to the
+ range recorder by aggregating the in-use ranges of a given memory region into a local buffer before recording
+ them with a single call. A similar approach is also used by AdminRegionRecorder.
+
+ * wtf/FastMalloc.cpp:
+ (WTF::PageHeapAllocator::Init):
+ (WTF::PageHeapAllocator::New):
+ (WTF::PageHeapAllocator::recordAdministrativeRegions):
+ (WTF::TCMallocStats::FreeObjectFinder::isFreeObject):
+ (WTF::TCMallocStats::PageMapMemoryUsageRecorder::~PageMapMemoryUsageRecorder):
+ (WTF::TCMallocStats::PageMapMemoryUsageRecorder::recordPendingRegions):
+ (WTF::TCMallocStats::PageMapMemoryUsageRecorder::visit):
+ (WTF::TCMallocStats::AdminRegionRecorder::AdminRegionRecorder):
+ (WTF::TCMallocStats::AdminRegionRecorder::recordRegion):
+ (WTF::TCMallocStats::AdminRegionRecorder::visit):
+ (WTF::TCMallocStats::AdminRegionRecorder::recordPendingRegions):
+ (WTF::TCMallocStats::AdminRegionRecorder::~AdminRegionRecorder):
+ (WTF::TCMallocStats::FastMallocZone::enumerate):
+ (WTF::TCMallocStats::FastMallocZone::FastMallocZone):
+ (WTF::TCMallocStats::FastMallocZone::init):
+ * wtf/TCPageMap.h:
+ (TCMalloc_PageMap2::visitValues):
+ (TCMalloc_PageMap2::visitAllocations):
+ (TCMalloc_PageMap3::visitValues):
+ (TCMalloc_PageMap3::visitAllocations):
+
+2009-03-04 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24359
+ Repaint throttling mechanism
+
+ Set ENABLE_REPAINT_THROTTLING to 0 by default.
+
+ * wtf/Platform.h:
+
+2009-03-03 David Kilzer <ddkilzer@apple.com>
+
+ <rdar://problem/6581203> WebCore and WebKit should install the same set of headers during installhdrs phase as build phase
+
+ Reviewed by Mark Rowe.
+
+ * Configurations/Base.xcconfig: Defined REAL_PLATFORM_NAME based
+ on PLATFORM_NAME to work around the missing definition on Tiger.
+ Updated HAVE_DTRACE to use REAL_PLATFORM_NAME.
+
+2009-03-03 Kevin McCullough <kmccullough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ <rdar://problem/6639110> console.profile() doesn't work without a title
+
+ * profiler/Profiler.cpp:
+ (JSC::Profiler::startProfiling): assert if there is not title to ensure
+ we don't start profiling without one.
+
+2009-03-02 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Enable Geolocation (except on Tiger and Leopard).
+
+ * Configurations/JavaScriptCore.xcconfig:
+
+2009-03-01 David Kilzer <ddkilzer@apple.com>
+
+ <rdar://problem/6635688> Move HAVE_DTRACE check to Base.xcconfig
+
+ Reviewed by Mark Rowe.
+
+ * Configurations/Base.xcconfig: Set HAVE_DTRACE Xcode variable
+ based on PLATFORM_NAME and MAC_OS_X_VERSION_MAJOR. Also define
+ it as a preprocessor macro by modifying
+ GCC_PREPROCESSOR_DEFINITIONS.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Changed "Generate
+ DTrace header" script phase to check for HAVE_DTRACE instead of
+ MACOSX_DEPLOYMENT_TARGET.
+ * wtf/Platform.h: Removed definition of HAVE_DTRACE macro since
+ it's defined in Base.xcconfig now.
+
+2009-03-01 Horia Olaru <olaru@adobe.com>
+
+ By looking in grammar.y there are only a few types of statement nodes
+ on which the debugger should stop.
+
+ Removed isBlock and isLoop virtual calls. No need to emit debug hooks in
+ the "statementListEmitCode" method as long as the necessary hooks can be
+ added in each "emitCode".
+
+ https://bugs.webkit.org/show_bug.cgi?id=21073
+
+ Reviewed by Kevin McCullough.
+
+ * parser/Nodes.cpp:
+ (JSC::ConstStatementNode::emitBytecode):
+ (JSC::statementListEmitCode):
+ (JSC::EmptyStatementNode::emitBytecode):
+ (JSC::ExprStatementNode::emitBytecode):
+ (JSC::VarStatementNode::emitBytecode):
+ (JSC::IfNode::emitBytecode):
+ (JSC::IfElseNode::emitBytecode):
+ (JSC::DoWhileNode::emitBytecode):
+ (JSC::WhileNode::emitBytecode):
+ (JSC::ForNode::emitBytecode):
+ (JSC::ForInNode::emitBytecode):
+ (JSC::ContinueNode::emitBytecode):
+ (JSC::BreakNode::emitBytecode):
+ (JSC::ReturnNode::emitBytecode):
+ (JSC::WithNode::emitBytecode):
+ (JSC::SwitchNode::emitBytecode):
+ (JSC::LabelNode::emitBytecode):
+ (JSC::ThrowNode::emitBytecode):
+ (JSC::TryNode::emitBytecode):
+ * parser/Nodes.h:
+
+2009-02-26 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Fix bug #23614. Switches on double precision values were incorrectly
+ truncating the scrutinee value. E.g.:
+
+ switch (1.1) { case 1: print("FAIL"); }
+
+ Was resulting in FAIL.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_switch_imm):
+
+2009-02-26 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Integer Immediate representation need not be canonical in x86 JIT code.
+ On x86-64 we already have loosened the requirement that the int immediate
+ representation in canonical, we should bring x86 into line.
+
+ This patch is a minor (~0.5%) improvement on sunspider & v8-tests, and
+ should reduce memory footoprint (reduces JIT code size).
+
+ * jit/JIT.cpp:
+ (JSC::JIT::compileOpStrictEq):
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ (JSC::JIT::emitJumpIfImmediateNumber):
+ (JSC::JIT::emitJumpIfNotImmediateNumber):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
+ (JSC::JIT::compileBinaryArithOp):
+
+2009-02-26 Carol Szabo <carol.szabo@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24099
+ ARM Compiler Warnings in pcre_exec.cpp
+
+ * pcre/pcre_exec.cpp:
+ (match):
+
+2009-02-25 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Gavin Barraclough.
+
+ Bug 24086: Regression (r40993): WebKit crashes after logging in to lists.zenbe
+ <https://bugs.webkit.org/show_bug.cgi?id=24086>
+ <rdar://problem/6625111>
+
+ The numeric sort optimization in r40993 generated bytecode for a function
+ without generating JIT code. This breaks an assumption in some parts of
+ the JIT's function calling logic that the presence of a CodeBlock implies
+ the existence of JIT code.
+
+ In order to fix this, we simply generate JIT code whenever we check whether
+ a function is a numeric sort function. This only incurs an additional cost
+ in the case when the function is a numeric sort function, in which case it
+ is not expensive to generate JIT code for it.
+
+ * runtime/ArrayPrototype.cpp:
+ (JSC::isNumericCompareFunction):
+
+2009-02-25 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Fixed <rdar://problem/6611174> REGRESSION (r36701): Unable to select
+ messages on hotmail (24052)
+
+ The bug was that for-in enumeration used a cached prototype chain without
+ validating that it was up-to-date.
+
+ This led me to refactor prototype chain caching so it was easier to work
+ with and harder to get wrong.
+
+ After a bit of inlining, this patch is performance-neutral on SunSpider
+ and the v8 benchmarks.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::tryCachePutByID):
+ (JSC::Interpreter::tryCacheGetByID):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::tryCachePutByID):
+ (JSC::JITStubs::tryCacheGetByID):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list): Use the new refactored goodness. See
+ lines beginning with "-" and smile.
+
+ * runtime/JSGlobalObject.h:
+ (JSC::Structure::prototypeForLookup): A shout out to const.
+
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::JSPropertyNameIterator::next): We can use a pointer comparison to
+ see if our cached structure chain is equal to the object's structure chain,
+ since in the case of a cache hit, we share references to the same structure
+ chain.
+
+ * runtime/Operations.h:
+ (JSC::countPrototypeChainEntriesAndCheckForProxies): Use the new refactored
+ goodness.
+
+ * runtime/PropertyNameArray.h:
+ (JSC::PropertyNameArray::PropertyNameArray):
+ (JSC::PropertyNameArray::setShouldCache):
+ (JSC::PropertyNameArray::shouldCache): Renamed "cacheable" to "shouldCache"
+ to communicate that the client is specifying a recommendation, not a
+ capability.
+
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure): No need to initialize a RefPtr.
+ (JSC::Structure::getEnumerablePropertyNames): Moved some code into helper
+ functions.
+
+ (JSC::Structure::prototypeChain): New centralized accessor for a prototype
+ chain. Revalidates on every access, since the objects in the prototype
+ chain may have mutated.
+
+ (JSC::Structure::isValid): Helper function for revalidating a cached
+ prototype chain.
+
+ (JSC::Structure::getEnumerableNamesFromPropertyTable):
+ (JSC::Structure::getEnumerableNamesFromClassInfoTable): Factored out of
+ getEnumerablePropertyNames.
+
+ * runtime/Structure.h:
+
+ * runtime/StructureChain.cpp:
+ (JSC::StructureChain::StructureChain):
+ * runtime/StructureChain.h:
+ (JSC::StructureChain::create): No need for structureChainsAreEqual, since
+ we use pointer equality now. Refactored StructureChain to make a little
+ more sense and eliminate special cases for null prototypes.
+
+2009-02-25 Steve Falkenburg <sfalken@apple.com>
+
+ Use timeBeginPeriod to enable timing resolution greater than 16ms in command line jsc for Windows.
+ Allows more accurate reporting of benchmark times via command line jsc.exe. Doesn't affect WebKit's use of JavaScriptCore.
+
+ Reviewed by Adam Roben.
+
+ * jsc.cpp:
+ (main):
+
+2009-02-24 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix?
+
+ * GNUmakefile.am:
+
+2009-02-24 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ <rdar://problem/6259220> Rename AVAILABLE_AFTER_WEBKIT_VERSION_3_1 (etc.) to match the other macros
+
+ * API/JSBasePrivate.h:
+ * API/JSContextRef.h:
+ * API/JSObjectRef.h:
+ * API/WebKitAvailability.h:
+
+2009-02-23 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Next step in splitting JIT functionality out of the Interpreter class:
+ Moved vptr storage from Interpreter to JSGlobalData, so it could be shared
+ between Interpreter and JITStubs, and moved the *Trampoline JIT stubs
+ into the JITStubs class. Also added a VPtrSet class to encapsulate vptr
+ hacks during JSGlobalData initialization.
+
+ SunSpider says 0.4% faster. Meh.
+
+ * JavaScriptCore.exp:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::Interpreter):
+ (JSC::Interpreter::tryCacheGetByID):
+ (JSC::Interpreter::privateExecute):
+ * interpreter/Interpreter.h:
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ (JSC::JIT::compileCTIMachineTrampolines):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::JITStubs):
+ (JSC::JITStubs::tryCacheGetByID):
+ (JSC::JITStubs::cti_vm_dontLazyLinkCall):
+ (JSC::JITStubs::cti_op_get_by_val):
+ (JSC::JITStubs::cti_op_get_by_val_byte_array):
+ (JSC::JITStubs::cti_op_put_by_val):
+ (JSC::JITStubs::cti_op_put_by_val_array):
+ (JSC::JITStubs::cti_op_put_by_val_byte_array):
+ (JSC::JITStubs::cti_op_is_string):
+ * jit/JITStubs.h:
+ (JSC::JITStubs::ctiArrayLengthTrampoline):
+ (JSC::JITStubs::ctiStringLengthTrampoline):
+ (JSC::JITStubs::ctiVirtualCallPreLink):
+ (JSC::JITStubs::ctiVirtualCallLink):
+ (JSC::JITStubs::ctiVirtualCall):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncPop):
+ (JSC::arrayProtoFuncPush):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncApply):
+ * runtime/JSArray.h:
+ (JSC::isJSArray):
+ * runtime/JSByteArray.h:
+ (JSC::asByteArray):
+ (JSC::isJSByteArray):
+ * runtime/JSCell.h:
+ * runtime/JSFunction.h:
+ * runtime/JSGlobalData.cpp:
+ (JSC::VPtrSet::VPtrSet):
+ (JSC::JSGlobalData::JSGlobalData):
+ (JSC::JSGlobalData::create):
+ (JSC::JSGlobalData::sharedInstance):
+ * runtime/JSGlobalData.h:
+ * runtime/JSString.h:
+ (JSC::isJSString):
+ * runtime/Operations.h:
+ (JSC::jsLess):
+ (JSC::jsLessEq):
+ * wrec/WREC.cpp:
+ (JSC::WREC::Generator::compileRegExp):
+
+2009-02-23 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 23787: Allow JIT to generate SSE2 code if using GCC
+ <https://bugs.webkit.org/show_bug.cgi?id=23787>
+
+ GCC version of the cpuid check.
+
+ * jit/JITArithmetic.cpp:
+ (JSC::isSSE2Present): previous assembly code fixed.
+
+2009-02-23 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 24047: Need to simplify nested if's in WorkerRunLoop::runInMode
+ <https://bugs.webkit.org/show_bug.cgi?id=24047>
+
+ * wtf/MessageQueue.h:
+ (WTF::MessageQueue::infiniteTime):
+ Allows for one to call waitForMessageFilteredWithTimeout and wait forever.
+
+ (WTF::MessageQueue::alwaysTruePredicate):
+ (WTF::MessageQueue::waitForMessage):
+ Made waitForMessage call waitForMessageFilteredWithTimeout, so that there is less
+ duplicate code.
+
+ (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
+
+ * wtf/ThreadingQt.cpp:
+ (WTF::ThreadCondition::timedWait):
+ * wtf/ThreadingWin.cpp:
+ (WTF::ThreadCondition::timedWait):
+ Made these two implementations consistent with the pthread and gtk implementations.
+ Currently, the time calculations would overflow when passed large values.
+
+2009-02-23 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Adam Roben.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24096
+ PLATFORM(MAC)->PLATFORM(CF) since we want to use the CF functions in Chrome on OS X.
+
+ * wtf/CurrentTime.cpp:
+
+2009-02-22 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix?
+
+ * GNUmakefile.am:
+
+2009-02-22 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * GNUmakefile.am:
+
+2009-02-22 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Next step in splitting JIT functionality out of the Interpreter class:
+ Created a JITStubs class and renamed Interpreter::cti_* to JITStubs::cti_*.
+
+ Also, moved timeout checking into its own class, located in JSGlobalData,
+ so both the Interpreter and the JIT could have access to it.
+
+ * JavaScriptCore.exp:
+ * JavaScriptCore.pri:
+ * JavaScriptCore.scons:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * JavaScriptCoreSources.bkl:
+ * interpreter/CallFrame.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::Interpreter):
+ (JSC::Interpreter::privateExecute):
+ * interpreter/Interpreter.h:
+ * interpreter/Register.h:
+ * jit/JIT.cpp:
+ (JSC::):
+ (JSC::JIT::emitTimeoutCheck):
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArithSlow_op_lshift):
+ (JSC::JIT::compileFastArithSlow_op_rshift):
+ (JSC::JIT::compileFastArithSlow_op_bitand):
+ (JSC::JIT::compileFastArithSlow_op_mod):
+ (JSC::JIT::compileFastArith_op_mod):
+ (JSC::JIT::compileFastArithSlow_op_post_inc):
+ (JSC::JIT::compileFastArithSlow_op_post_dec):
+ (JSC::JIT::compileFastArithSlow_op_pre_inc):
+ (JSC::JIT::compileFastArithSlow_op_pre_dec):
+ (JSC::JIT::compileFastArith_op_add):
+ (JSC::JIT::compileFastArith_op_mul):
+ (JSC::JIT::compileFastArith_op_sub):
+ (JSC::JIT::compileBinaryArithOpSlowCase):
+ (JSC::JIT::compileFastArithSlow_op_add):
+ (JSC::JIT::compileFastArithSlow_op_mul):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compilePutByIdHotPath):
+ (JSC::JIT::compileGetByIdSlowCase):
+ (JSC::JIT::compilePutByIdSlowCase):
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::patchPutByIdReplace):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ (JSC::JIT::privateCompileGetByIdSelf):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdChain):
+ (JSC::JIT::privateCompilePutByIdReplace):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::tryCachePutByID):
+ (JSC::JITStubs::tryCacheGetByID):
+ (JSC::JITStubs::cti_op_convert_this):
+ (JSC::JITStubs::cti_op_end):
+ (JSC::JITStubs::cti_op_add):
+ (JSC::JITStubs::cti_op_pre_inc):
+ (JSC::JITStubs::cti_timeout_check):
+ (JSC::JITStubs::cti_register_file_check):
+ (JSC::JITStubs::cti_op_loop_if_less):
+ (JSC::JITStubs::cti_op_loop_if_lesseq):
+ (JSC::JITStubs::cti_op_new_object):
+ (JSC::JITStubs::cti_op_put_by_id_generic):
+ (JSC::JITStubs::cti_op_get_by_id_generic):
+ (JSC::JITStubs::cti_op_put_by_id):
+ (JSC::JITStubs::cti_op_put_by_id_second):
+ (JSC::JITStubs::cti_op_put_by_id_fail):
+ (JSC::JITStubs::cti_op_get_by_id):
+ (JSC::JITStubs::cti_op_get_by_id_second):
+ (JSC::JITStubs::cti_op_get_by_id_self_fail):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list):
+ (JSC::JITStubs::cti_op_get_by_id_proto_list_full):
+ (JSC::JITStubs::cti_op_get_by_id_proto_fail):
+ (JSC::JITStubs::cti_op_get_by_id_array_fail):
+ (JSC::JITStubs::cti_op_get_by_id_string_fail):
+ (JSC::JITStubs::cti_op_instanceof):
+ (JSC::JITStubs::cti_op_del_by_id):
+ (JSC::JITStubs::cti_op_mul):
+ (JSC::JITStubs::cti_op_new_func):
+ (JSC::JITStubs::cti_op_call_JSFunction):
+ (JSC::JITStubs::cti_op_call_arityCheck):
+ (JSC::JITStubs::cti_vm_dontLazyLinkCall):
+ (JSC::JITStubs::cti_vm_lazyLinkCall):
+ (JSC::JITStubs::cti_op_push_activation):
+ (JSC::JITStubs::cti_op_call_NotJSFunction):
+ (JSC::JITStubs::cti_op_create_arguments):
+ (JSC::JITStubs::cti_op_create_arguments_no_params):
+ (JSC::JITStubs::cti_op_tear_off_activation):
+ (JSC::JITStubs::cti_op_tear_off_arguments):
+ (JSC::JITStubs::cti_op_profile_will_call):
+ (JSC::JITStubs::cti_op_profile_did_call):
+ (JSC::JITStubs::cti_op_ret_scopeChain):
+ (JSC::JITStubs::cti_op_new_array):
+ (JSC::JITStubs::cti_op_resolve):
+ (JSC::JITStubs::cti_op_construct_JSConstruct):
+ (JSC::JITStubs::cti_op_construct_NotJSConstruct):
+ (JSC::JITStubs::cti_op_get_by_val):
+ (JSC::JITStubs::cti_op_get_by_val_byte_array):
+ (JSC::JITStubs::cti_op_resolve_func):
+ (JSC::JITStubs::cti_op_sub):
+ (JSC::JITStubs::cti_op_put_by_val):
+ (JSC::JITStubs::cti_op_put_by_val_array):
+ (JSC::JITStubs::cti_op_put_by_val_byte_array):
+ (JSC::JITStubs::cti_op_lesseq):
+ (JSC::JITStubs::cti_op_loop_if_true):
+ (JSC::JITStubs::cti_op_negate):
+ (JSC::JITStubs::cti_op_resolve_base):
+ (JSC::JITStubs::cti_op_resolve_skip):
+ (JSC::JITStubs::cti_op_resolve_global):
+ (JSC::JITStubs::cti_op_div):
+ (JSC::JITStubs::cti_op_pre_dec):
+ (JSC::JITStubs::cti_op_jless):
+ (JSC::JITStubs::cti_op_not):
+ (JSC::JITStubs::cti_op_jtrue):
+ (JSC::JITStubs::cti_op_post_inc):
+ (JSC::JITStubs::cti_op_eq):
+ (JSC::JITStubs::cti_op_lshift):
+ (JSC::JITStubs::cti_op_bitand):
+ (JSC::JITStubs::cti_op_rshift):
+ (JSC::JITStubs::cti_op_bitnot):
+ (JSC::JITStubs::cti_op_resolve_with_base):
+ (JSC::JITStubs::cti_op_new_func_exp):
+ (JSC::JITStubs::cti_op_mod):
+ (JSC::JITStubs::cti_op_less):
+ (JSC::JITStubs::cti_op_neq):
+ (JSC::JITStubs::cti_op_post_dec):
+ (JSC::JITStubs::cti_op_urshift):
+ (JSC::JITStubs::cti_op_bitxor):
+ (JSC::JITStubs::cti_op_new_regexp):
+ (JSC::JITStubs::cti_op_bitor):
+ (JSC::JITStubs::cti_op_call_eval):
+ (JSC::JITStubs::cti_op_throw):
+ (JSC::JITStubs::cti_op_get_pnames):
+ (JSC::JITStubs::cti_op_next_pname):
+ (JSC::JITStubs::cti_op_push_scope):
+ (JSC::JITStubs::cti_op_pop_scope):
+ (JSC::JITStubs::cti_op_typeof):
+ (JSC::JITStubs::cti_op_is_undefined):
+ (JSC::JITStubs::cti_op_is_boolean):
+ (JSC::JITStubs::cti_op_is_number):
+ (JSC::JITStubs::cti_op_is_string):
+ (JSC::JITStubs::cti_op_is_object):
+ (JSC::JITStubs::cti_op_is_function):
+ (JSC::JITStubs::cti_op_stricteq):
+ (JSC::JITStubs::cti_op_nstricteq):
+ (JSC::JITStubs::cti_op_to_jsnumber):
+ (JSC::JITStubs::cti_op_in):
+ (JSC::JITStubs::cti_op_push_new_scope):
+ (JSC::JITStubs::cti_op_jmp_scopes):
+ (JSC::JITStubs::cti_op_put_by_index):
+ (JSC::JITStubs::cti_op_switch_imm):
+ (JSC::JITStubs::cti_op_switch_char):
+ (JSC::JITStubs::cti_op_switch_string):
+ (JSC::JITStubs::cti_op_del_by_val):
+ (JSC::JITStubs::cti_op_put_getter):
+ (JSC::JITStubs::cti_op_put_setter):
+ (JSC::JITStubs::cti_op_new_error):
+ (JSC::JITStubs::cti_op_debug):
+ (JSC::JITStubs::cti_vm_throw):
+ * jit/JITStubs.h:
+ (JSC::):
+ * runtime/JSFunction.h:
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSGlobalData.h:
+ * runtime/JSGlobalObject.cpp:
+ * runtime/JSGlobalObject.h:
+ * runtime/TimeoutChecker.cpp: Copied from interpreter/Interpreter.cpp.
+ (JSC::TimeoutChecker::TimeoutChecker):
+ (JSC::TimeoutChecker::reset):
+ (JSC::TimeoutChecker::didTimeOut):
+ * runtime/TimeoutChecker.h: Copied from interpreter/Interpreter.h.
+ (JSC::TimeoutChecker::setTimeoutInterval):
+ (JSC::TimeoutChecker::ticksUntilNextCheck):
+ (JSC::TimeoutChecker::start):
+ (JSC::TimeoutChecker::stop):
+
+2009-02-20 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed build fix after r41100.
+
+ * GNUmakefile.am:
+
+2009-02-20 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ <rdar://problem/6606660> 2==null returns true in 64bit jit
+
+ Code for op_eq_null and op_neq_null was incorrectly performing
+ a 32bit compare, which truncated the type tag from an integer
+ immediate, leading to incorrect behaviour.
+
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::setPtr):
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::setPtr):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+
+2009-02-19 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ First step in splitting JIT functionality out of the Interpreter class:
+ Created JITStubs.h/.cpp, and moved Interpreter::cti_* into JITStubs.cpp.
+
+ Functions that the Interpreter and JITStubs share moved to Operations.h/.cpp.
+
+ * GNUmakefile.am:
+ * JavaScriptCore.pri:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::resolveBase):
+ (JSC::Interpreter::checkTimeout):
+ (JSC::Interpreter::privateExecute):
+ * interpreter/Interpreter.h:
+ * jit/JITStubs.cpp: Copied from interpreter/Interpreter.cpp.
+ (JSC::Interpreter::cti_op_resolve_base):
+ * jit/JITStubs.h: Copied from interpreter/Interpreter.h.
+ * runtime/Operations.cpp:
+ (JSC::jsAddSlowCase):
+ (JSC::jsTypeStringForValue):
+ (JSC::jsIsObjectType):
+ (JSC::jsIsFunctionType):
+ * runtime/Operations.h:
+ (JSC::jsLess):
+ (JSC::jsLessEq):
+ (JSC::jsAdd):
+ (JSC::cachePrototypeChain):
+ (JSC::countPrototypeChainEntriesAndCheckForProxies):
+ (JSC::resolveBase):
+
+2009-02-19 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for x86-64. Where the JavaScriptCore text segment lies outside
+ a 2gb range of the heap containing JIT generated code, callbacks
+ from JIT code to the stub functions in Interpreter will be incorrectly
+ linked.
+
+ No performance impact on Sunspider, 1% regression on v8-tests,
+ due to a 3% regression on richards.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::Call::Call):
+ (JSC::AbstractMacroAssembler::Jump::link):
+ (JSC::AbstractMacroAssembler::Jump::linkTo):
+ (JSC::AbstractMacroAssembler::CodeLocationJump::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::relink):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction):
+ (JSC::AbstractMacroAssembler::PatchBuffer::link):
+ (JSC::AbstractMacroAssembler::PatchBuffer::linkTailRecursive):
+ (JSC::AbstractMacroAssembler::differenceBetween):
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::tailRecursiveCall):
+ (JSC::MacroAssembler::makeTailRecursiveCall):
+ * assembler/MacroAssemblerX86.h:
+ (JSC::MacroAssemblerX86::call):
+ * assembler/MacroAssemblerX86Common.h:
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::call):
+ (JSC::MacroAssemblerX86_64::moveWithPatch):
+ (JSC::MacroAssemblerX86_64::branchPtrWithPatch):
+ (JSC::MacroAssemblerX86_64::storePtrWithPatch):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::jmp_r):
+ (JSC::X86Assembler::linkJump):
+ (JSC::X86Assembler::patchJump):
+ (JSC::X86Assembler::patchCall):
+ (JSC::X86Assembler::linkCall):
+ (JSC::X86Assembler::patchAddress):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::tryCTICachePutByID):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
+ (JSC::JIT::compileBinaryArithOp):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::privateCompileGetByIdSelf):
+ (JSC::JIT::privateCompilePutByIdReplace):
+
+2009-02-18 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Simplified .call and .apply in preparation for optimizing them. Also,
+ a little cleanup.
+
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncApply):
+ (JSC::functionProtoFuncCall): No need to do any specific conversion on
+ 'this' -- op_convert_this will do it if necessary.
+
+ * runtime/JSImmediate.cpp:
+ (JSC::JSImmediate::toThisObject): Slightly relaxed the rules on
+ toThisObject to allow for 'undefined', which can be passed through
+ .call and .apply.
+
+2009-02-19 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23976: MessageQueue needs a way to wait for a message that satisfies an arbitrary criteria.
+ <https://bugs.webkit.org/show_bug.cgi?id=23976>
+
+ * wtf/Deque.h:
+ (WTF::Deque<T>::findIf):
+ * wtf/MessageQueue.h:
+ (WTF::MessageQueue<T>::waitForMessageFiltered):
+
+2009-02-18 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23974: Deque::Remove would be a useful method.
+ <https://bugs.webkit.org/show_bug.cgi?id=23974>
+
+ Add Deque::remove and DequeIteratorBase<T>::operator=.
+
+ Why was operator= added? Every concrete iterator (DequeIterator..DequeConstReverseIterator)
+ was calling DequeIteratorBase::assign(), which called Base::operator=(). Base::operator=()
+ was not implemented. This went unnoticed because the iterator copy code has been unused.
+
+ * wtf/Deque.h:
+ (WTF::Deque<T>::remove):
+ (WTF::DequeIteratorBase<T>::removeFromIteratorsList):
+ (WTF::DequeIteratorBase<T>::operator=):
+ (WTF::DequeIteratorBase<T>::~DequeIteratorBase):
+
+2009-02-18 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Fix symbols.filter location, and add other missing files to the
+ autotools build, so that make dist works.
+
+ * GNUmakefile.am:
+
+2009-02-17 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fixed failure in js1_5/Regress/regress-168347.js, as seen on the Oliver
+ bot.
+
+ Technically, both behaviors are OK, but we might as well keep this test
+ passing.
+
+ * runtime/FunctionPrototype.cpp:
+ (JSC::insertSemicolonIfNeeded): No need to add a trailing semicolon
+ after a trailing '}', since '}' ends a block, indicating the end of a
+ statement.
+
+2009-02-17 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * runtime/FunctionPrototype.cpp:
+
+2009-02-17 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Add assertion to guard against oversized pc relative calls.
+
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::link):
+
+2009-02-17 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fixed <rdar://problem/6595040> REGRESSION: http://www.amnestyusa.org/
+ fails to load.
+
+ amnestyusa.org uses the Optimist JavaScript library, which adds event
+ listeners by concatenating string-ified functions. This is only sure to
+ be syntactically valid if the string-ified functions end in semicolons.
+
+ * parser/Lexer.cpp:
+ (JSC::Lexer::isWhiteSpace):
+ * parser/Lexer.h:
+ (JSC::Lexer::isWhiteSpace):
+ (JSC::Lexer::isLineTerminator): Added some helper functions for examining
+ whitespace.
+
+ * runtime/FunctionPrototype.cpp:
+ (JSC::appendSemicolonIfNeeded):
+ (JSC::functionProtoFuncToString): When string-ifying a function, insert
+ a semicolon in the last non-whitespace position, if one doesn't already exist.
+
+2009-02-16 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ Roll out r41022 as it breaks qt and gtk builds
+
+ * jit/JITArithmetic.cpp:
+ (JSC::isSSE2Present):
+
+2009-02-16 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Fix for <rdar://problem/6468156>
+ REGRESSION (r36779): Adding link, images, flash in TinyMCE blocks entire page (21382)
+
+ No performance regression.
+
+ * runtime/Arguments.cpp:
+ (JSC::Arguments::fillArgList): Add codepath for when the "length" property has been
+ overridden.
+
+2009-02-16 Mark Rowe <mrowe@apple.com>
+
+ Build fix.
+
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMallocStats::):
+ (WTF::TCMallocStats::FastMallocZone::FastMallocZone):
+
+2009-02-16 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 23787: Allow JIT to generate SSE2 code if using GCC
+ <https://bugs.webkit.org/show_bug.cgi?id=23787>
+
+ GCC version of the cpuid check.
+
+ * jit/JITArithmetic.cpp:
+ (JSC::isSSE2Present): GCC assembly code added.
+ 6.6% progression on x86 Linux with JIT and WREC on SunSpider if using SSE2 capable machine.
2009-02-13 Adam Treat <adam.treat@torchmobile.com>
@@ -72,6 +10249,294 @@
* wtf/ThreadingQt.cpp:
(WTF::isMainThread):
+2009-02-13 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Some data in the instruction stream is potentially uninitialized - fix this.
+
+ Change the OperandTypes constructor so that uninitialized memory in the int
+ is zeroed, and modify the Instruction constructor taking an Opcode so that
+ if !HAVE(COMPUTED_GOTO) (i.e. when Opcode is an enum, and is potentially only
+ a byte) it zeros the Instruction first before writing the opcode.
+
+ * bytecode/Instruction.h:
+ (JSC::Instruction::Instruction):
+ * parser/ResultType.h:
+ (JSC::OperandTypes::OperandTypes):
+
+2009-02-13 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix for non_JIT platforms.
+
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::setIsNumericCompareFunction):
+ (JSC::CodeBlock::isNumericCompareFunction):
+
+2009-02-13 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fixed <rdar://problem/6584057> Optimize sort by JS numeric comparison
+ function not to run the comparison function
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::CodeBlock):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::setIsNumericCompareFunction):
+ (JSC::CodeBlock::isNumericCompareFunction): Added the ability to track
+ whether a CodeBlock performs a sort-like numeric comparison.
+
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::generate): Set the isNumericCompareFunction bit
+ after compiling.
+
+ * parser/Nodes.cpp:
+ (JSC::FunctionBodyNode::emitBytecode): Fixed a bug that caused us to
+ codegen an extra return at the end of all functions (eek!), since this
+ made it harder / weirder to detect the numeric comparison pattern in
+ bytecode.
+
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncSort): Use the isNumericCompareFunction bit to do
+ a faster sort if we can.
+
+ * runtime/FunctionConstructor.cpp:
+ (JSC::extractFunctionBody):
+ (JSC::constructFunction):
+ * runtime/FunctionConstructor.h: Renamed and exported extractFunctionBody for
+ use in initializing lazyNumericCompareFunction.
+
+ * runtime/JSArray.cpp:
+ (JSC::compareNumbersForQSort):
+ (JSC::compareByStringPairForQSort):
+ (JSC::JSArray::sortNumeric):
+ (JSC::JSArray::sort):
+ * runtime/JSArray.h: Added a fast numeric sort. Renamed ArrayQSortPair
+ to be more specific since we do different kinds of qsort now.
+
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ (JSC::JSGlobalData::numericCompareFunction):
+ (JSC::JSGlobalData::ClientData::~ClientData):
+ * runtime/JSGlobalData.h: Added helper data for computing the
+ isNumericCompareFunction bit.
+
+2009-02-13 Darin Adler <darin@apple.com>
+
+ * Configurations/JavaScriptCore.xcconfig: Undo accidental commit of this file.
+
+2009-02-12 Darin Adler <darin@apple.com>
+
+ Reviewed by Oliver Hunt and Alexey Proskuryakov.
+
+ Speed up a couple string functions.
+
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncIndexOf): Added a fast path for cases where the second
+ argument is either missing or an integer.
+ (JSC::stringProtoFuncBig): Use jsNontrivialString since the string is guaranteed
+ to be 2 or more characters long.
+ (JSC::stringProtoFuncSmall): Ditto.
+ (JSC::stringProtoFuncBlink): Ditto.
+ (JSC::stringProtoFuncBold): Ditto.
+ (JSC::stringProtoFuncItalics): Ditto.
+ (JSC::stringProtoFuncStrike): Ditto.
+ (JSC::stringProtoFuncSub): Ditto.
+ (JSC::stringProtoFuncSup): Ditto.
+ (JSC::stringProtoFuncFontcolor): Ditto.
+ (JSC::stringProtoFuncFontsize): Make the fast path Sam recently added even faster
+ by avoiding all but the minimum memory allocation.
+ (JSC::stringProtoFuncAnchor): Use jsNontrivialString.
+ (JSC::stringProtoFuncLink): Added a fast path.
+
+ * runtime/UString.cpp:
+ (JSC::UString::find): Added a fast path for single-character search strings.
+
+2009-02-13 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Bug 23926: Race condition in callOnMainThreadAndWait
+ <https://bugs.webkit.org/show_bug.cgi?id=23926>
+
+ * wtf/MainThread.cpp:
+ Removed callOnMainThreadAndWait since it isn't used.
+
+2009-02-13 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Jon Honeycutt.
+
+ Math.random is really slow on windows.
+
+ Math.random calls WTF::randomNumber which is implemented as
+ the secure rand_s on windows. Unfortunately rand_s is an order
+ of magnitude slower than arc4random. For this reason I've
+ added "weakRandomNumber" for use by JavaScript's Math Object.
+ In the long term we should look at using our own secure PRNG
+ in place of the system, but this will do for now.
+
+ 30% win on SunSpider on Windows, resolving most of the remaining
+ disparity vs. Mac.
+
+ * runtime/MathObject.cpp:
+ (JSC::MathObject::MathObject):
+ (JSC::mathProtoFuncRandom):
+ * wtf/RandomNumber.cpp:
+ (WTF::weakRandomNumber):
+ (WTF::randomNumber):
+ * wtf/RandomNumber.h:
+ * wtf/RandomNumberSeed.h:
+ (WTF::initializeWeakRandomNumberGenerator):
+
+2009-02-12 Mark Rowe <mrowe@apple.com>
+
+ Fix the build for other platforms.
+
+ * wtf/RandomNumber.cpp:
+ (WTF::randomNumber):
+
+2009-02-12 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Remove (/reduce) use of hard-wired register names from the JIT.
+ Currently there is no abstraction of registers used in the JIT,
+ which has a number of negative consequences. Hard-wiring x86
+ register names makes the JIT less portable to other platforms,
+ and prevents us from performing dynamic register allocation to
+ attempt to maintain more temporary values in machine registers.
+ (The latter will be more important on x86-64, where we have more
+ registers to make use of).
+
+ Also, remove MacroAssembler::mod32. This was not providing a
+ useful abstraction, and was not in keeping with the rest of the
+ MacroAssembler interface, in having specific register requirements.
+
+ * assembler/MacroAssemblerX86Common.h:
+ * jit/JIT.cpp:
+ (JSC::JIT::compileOpStrictEq):
+ (JSC::JIT::emitSlowScriptCheck):
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_lshift):
+ (JSC::JIT::compileFastArithSlow_op_lshift):
+ (JSC::JIT::compileFastArith_op_rshift):
+ (JSC::JIT::compileFastArithSlow_op_rshift):
+ (JSC::JIT::compileFastArith_op_bitand):
+ (JSC::JIT::compileFastArithSlow_op_bitand):
+ (JSC::JIT::compileFastArith_op_mod):
+ (JSC::JIT::compileFastArithSlow_op_mod):
+ (JSC::JIT::compileFastArith_op_post_inc):
+ (JSC::JIT::compileFastArithSlow_op_post_inc):
+ (JSC::JIT::compileFastArith_op_post_dec):
+ (JSC::JIT::compileFastArithSlow_op_post_dec):
+ (JSC::JIT::compileFastArith_op_pre_inc):
+ (JSC::JIT::compileFastArithSlow_op_pre_inc):
+ (JSC::JIT::compileFastArith_op_pre_dec):
+ (JSC::JIT::compileFastArithSlow_op_pre_dec):
+ (JSC::JIT::compileFastArith_op_add):
+ (JSC::JIT::compileFastArith_op_mul):
+ (JSC::JIT::compileFastArith_op_sub):
+ (JSC::JIT::compileBinaryArithOp):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallInitializeCallFrame):
+ (JSC::JIT::compileOpCallSetupArgs):
+ (JSC::JIT::compileOpCallEvalSetupArgs):
+ (JSC::JIT::compileOpConstructSetupArgs):
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitGetVirtualRegister):
+ (JSC::JIT::emitPutVirtualRegister):
+ (JSC::JIT::emitNakedCall):
+ (JSC::JIT::restoreArgumentReference):
+ (JSC::JIT::restoreArgumentReferenceForTrampoline):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compilePutByIdHotPath):
+ (JSC::JIT::compileGetByIdSlowCase):
+ (JSC::JIT::compilePutByIdSlowCase):
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ (JSC::JIT::privateCompileGetByIdSelf):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdSelfList):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+ (JSC::JIT::privateCompilePutByIdReplace):
+
+2009-02-12 Horia Olaru <olaru@adobe.com>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23400
+
+ When throwing an exception within an eval argument string, the dst parameter was
+ modified in the functions below and the return value for eval was altered. Changed
+ the emitNode call in JSC::ThrowNode::emitBytecode to use a temporary register
+ to store its results instead of dst. The JSC::FunctionCallResolveNode::emitBytecode
+ would load the function within the dst registry, also altering the result returned
+ by eval. Replaced it with another temporary.
+
+ * parser/Nodes.cpp:
+ (JSC::FunctionCallResolveNode::emitBytecode):
+ (JSC::ThrowNode::emitBytecode):
+
+2009-02-12 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Speed up String.prototype.fontsize.
+
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncFontsize): Specialize for defined/commonly used values.
+
+2009-02-12 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Correctness fix.
+
+ * wtf/RandomNumber.cpp:
+ (WTF::randomNumber): Divide by the maximum representable value, which
+ is different on each platform now, to get values between 0 and 1.
+
+2009-02-12 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * wtf/RandomNumber.cpp:
+ (WTF::randomNumber):
+
+2009-02-12 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fixed <rdar://problem/6582048>.
+
+ * wtf/RandomNumber.cpp:
+ (WTF::randomNumber): Make only one call to the random number generator
+ on platforms where the generator is cryptographically secure. The value
+ of randomness over and above cryptographically secure randomness is not
+ clear, and it caused some performance problems.
+
+2009-02-12 Adam Roben <aroben@apple.com>
+
+ Fix lots of Perl warnings when building JavaScriptCoreGenerated on
+ Windows
+
+ Reviewed by John Sullivan.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
+ Create the docs/ directory so that we can write bytecode.html into it.
+ This matches what JavaScriptCore.xcodeproj does.
+
2009-02-12 Simon Hausmann <simon.hausmann@nokia.com>
Rubber-stamped by Lars.
@@ -80,6 +10545,615 @@
* JavaScriptCore.pri:
+2009-02-11 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23705
+ Fix the UI freeze caused by Worker generating a flood of messages.
+ Measure time we spend in executing posted work items. If too much time is spent
+ without returning to the run loop, exit and reschedule.
+
+ * wtf/MainThread.h:
+ Added initializeMainThreadPlatform() to initialize low-level mechanism for posting
+ work items from thread to thread. This removes #ifdefs for WIN and CHROMIUM from platform-independent code.
+
+ * wtf/MainThread.cpp:
+ (WTF::initializeMainThread):
+ (WTF::dispatchFunctionsFromMainThread):
+ Instead of dispatching all work items in the queue, dispatch them one by one
+ and measure elapsed time. After a threshold, reschedule and quit.
+
+ (WTF::callOnMainThread):
+ (WTF::callOnMainThreadAndWait):
+ Only schedule dispatch if the queue was empty - to avoid many posted messages in the run loop queue.
+
+ * wtf/mac/MainThreadMac.mm:
+ (WTF::scheduleDispatchFunctionsOnMainThread):
+ Use static instance of the mainThreadCaller instead of allocating and releasing it each time.
+ (WTF::initializeMainThreadPlatform):
+ * wtf/gtk/MainThreadChromium.cpp:
+ (WTF::initializeMainThreadPlatform):
+ * wtf/gtk/MainThreadGtk.cpp:
+ (WTF::initializeMainThreadPlatform):
+ * wtf/qt/MainThreadQt.cpp:
+ (WTF::initializeMainThreadPlatform):
+ * wtf/win/MainThreadWin.cpp:
+ (WTF::initializeMainThreadPlatform):
+ * wtf/wx/MainThreadWx.cpp:
+ (WTF::initializeMainThreadPlatform):
+
+2009-02-11 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Gavin Barraclough.
+
+ Style cleanup.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::CodeLocationCommon::CodeLocationCommon):
+ (JSC::AbstractMacroAssembler::CodeLocationCommon::operator bool):
+ (JSC::AbstractMacroAssembler::CodeLocationCommon::reset):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForSwitch):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForExceptionHandler):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForJSR):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::getJumpDestination):
+ (JSC::AbstractMacroAssembler::CodeLocationJump::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationJump::CodeLocationJump):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::calleeReturnAddressValue):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::CodeLocationCall):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::CodeLocationDataLabel32):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::ProcessorReturnAddress):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::operator void*):
+ (JSC::AbstractMacroAssembler::PatchBuffer::link):
+ (JSC::::CodeLocationCommon::labelAtOffset):
+ (JSC::::CodeLocationCommon::jumpAtOffset):
+ (JSC::::CodeLocationCommon::callAtOffset):
+ (JSC::::CodeLocationCommon::dataLabelPtrAtOffset):
+ (JSC::::CodeLocationCommon::dataLabel32AtOffset):
+
+2009-02-11 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Gavin Barraclough.
+
+ * assembler/AbstractMacroAssembler.h: Fix comments.
+
+2009-02-11 Alexey Proskuryakov <ap@webkit.org>
+
+ Trying to fix wx build.
+
+ * bytecode/JumpTable.h: Include "MacroAssembler.h", not <MacroAssembler.h>.
+ * jscore.bkl: Added assembler directory to search paths.
+
+2009-02-10 Gavin Barraclough <barraclough@apple.com>
+
+ Build
+ fix.
+ (Narrow
+ changelog
+ for
+ dhyatt).
+
+ * bytecode/Instruction.h:
+ (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
+ (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
+
+2009-02-10 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Reduce use of void* / reinterpret_cast in JIT repatching code,
+ add strong types for Calls and for the various types of pointers
+ we retain into the JIT generated instruction stream.
+
+ No performance impact.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr):
+ (JSC::AbstractMacroAssembler::ImmPtr::asIntptr):
+ (JSC::AbstractMacroAssembler::Imm32::Imm32):
+ (JSC::AbstractMacroAssembler::Label::Label):
+ (JSC::AbstractMacroAssembler::DataLabelPtr::DataLabelPtr):
+ (JSC::AbstractMacroAssembler::Call::Call):
+ (JSC::AbstractMacroAssembler::Call::link):
+ (JSC::AbstractMacroAssembler::Call::linkTo):
+ (JSC::AbstractMacroAssembler::Jump::Jump):
+ (JSC::AbstractMacroAssembler::Jump::linkTo):
+ (JSC::AbstractMacroAssembler::CodeLocationCommon::CodeLocationCommon):
+ (JSC::AbstractMacroAssembler::CodeLocationCommon::operator bool):
+ (JSC::AbstractMacroAssembler::CodeLocationCommon::reset):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::CodeLocationLabel):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForSwitch):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForExceptionHandler):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForJSR):
+ (JSC::AbstractMacroAssembler::CodeLocationLabel::getJumpDestination):
+ (JSC::AbstractMacroAssembler::CodeLocationJump::CodeLocationJump):
+ (JSC::AbstractMacroAssembler::CodeLocationJump::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::CodeLocationCall):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::relink):
+ (JSC::AbstractMacroAssembler::CodeLocationCall::calleeReturnAddressValue):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::CodeLocationDataLabel32):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr):
+ (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::ProcessorReturnAddress):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction):
+ (JSC::AbstractMacroAssembler::ProcessorReturnAddress::operator void*):
+ (JSC::AbstractMacroAssembler::PatchBuffer::entry):
+ (JSC::AbstractMacroAssembler::PatchBuffer::trampolineAt):
+ (JSC::AbstractMacroAssembler::PatchBuffer::link):
+ (JSC::AbstractMacroAssembler::PatchBuffer::linkTailRecursive):
+ (JSC::AbstractMacroAssembler::PatchBuffer::patch):
+ (JSC::AbstractMacroAssembler::PatchBuffer::locationOf):
+ (JSC::AbstractMacroAssembler::PatchBuffer::returnAddressOffset):
+ (JSC::AbstractMacroAssembler::differenceBetween):
+ (JSC::::CodeLocationCommon::labelAtOffset):
+ (JSC::::CodeLocationCommon::jumpAtOffset):
+ (JSC::::CodeLocationCommon::callAtOffset):
+ (JSC::::CodeLocationCommon::dataLabelPtrAtOffset):
+ (JSC::::CodeLocationCommon::dataLabel32AtOffset):
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::call):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::getCallReturnOffset):
+ * bytecode/CodeBlock.h:
+ (JSC::CallLinkInfo::CallLinkInfo):
+ (JSC::getStructureStubInfoReturnLocation):
+ (JSC::getCallLinkInfoReturnLocation):
+ * bytecode/Instruction.h:
+ (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
+ (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
+ * bytecode/JumpTable.h:
+ (JSC::StringJumpTable::ctiForValue):
+ (JSC::SimpleJumpTable::ctiForValue):
+ * bytecode/StructureStubInfo.h:
+ (JSC::StructureStubInfo::StructureStubInfo):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitCatch):
+ (JSC::prepareJumpTableForStringSwitch):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::cti_op_get_by_id_self_fail):
+ (JSC::getPolymorphicAccessStructureListSlot):
+ (JSC::Interpreter::cti_op_throw):
+ (JSC::Interpreter::cti_op_switch_imm):
+ (JSC::Interpreter::cti_op_switch_char):
+ (JSC::Interpreter::cti_op_switch_string):
+ (JSC::Interpreter::cti_vm_throw):
+ * jit/JIT.cpp:
+ (JSC::ctiSetReturnAddress):
+ (JSC::ctiPatchCallByReturnAddress):
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ (JSC::CallRecord::CallRecord):
+ (JSC::JIT::compileGetByIdSelf):
+ (JSC::JIT::compileGetByIdProto):
+ (JSC::JIT::compileGetByIdChain):
+ (JSC::JIT::compilePutByIdReplace):
+ (JSC::JIT::compilePutByIdTransition):
+ (JSC::JIT::compilePatchGetArrayLength):
+ (JSC::JIT::emitCTICall):
+ * jit/JITCall.cpp:
+ (JSC::JIT::unlinkCall):
+ (JSC::JIT::linkCall):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitNakedCall):
+ (JSC::JIT::emitCTICall_internal):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compileGetByIdSlowCase):
+ (JSC::JIT::compilePutByIdSlowCase):
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::patchPutByIdReplace):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ (JSC::JIT::privateCompileGetByIdSelf):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdSelfList):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+ (JSC::JIT::privateCompilePutByIdReplace):
+
+2009-02-10 Adam Roben <aroben@apple.com>
+
+ Windows build fix after r40813
+
+ * JavaScriptCore.vcproj/jsc/jsc.vcproj: Added profiler/ to the include
+ path so that Profiler.h can be found.
+
+2009-02-09 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Provide a class type for a generated block of JIT code.
+ Also changes the return address -> bytecode index map to
+ track the return addess as an unsigned offset into the code
+ instead of a ptrdiff_t in terms of void**s - the latter is
+ equal to the actual offset / sizeof(void*), making it a
+ potentially lossy representation.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::PatchBuffer::returnAddressOffset):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::getCallReturnOffset):
+ * bytecode/CodeBlock.h:
+ (JSC::CallReturnOffsetToBytecodeIndex::CallReturnOffsetToBytecodeIndex):
+ (JSC::getCallReturnOffset):
+ (JSC::CodeBlock::getBytecodeIndex):
+ (JSC::CodeBlock::jitCode):
+ (JSC::CodeBlock::callReturnIndexVector):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+ (JSC::Interpreter::cti_vm_dontLazyLinkCall):
+ (JSC::Interpreter::cti_vm_lazyLinkCall):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompile):
+ * jit/JIT.h:
+ (JSC::):
+ * jit/JITCall.cpp:
+ (JSC::JIT::linkCall):
+ * jit/JITCode.h: Added.
+ (JSC::):
+ (JSC::JITCode::JITCode):
+ (JSC::JITCode::operator bool):
+ (JSC::JITCode::addressForCall):
+ (JSC::JITCode::offsetOf):
+ (JSC::JITCode::execute):
+
+2009-02-09 John Grabowski <jrg@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23856
+ Change the definition of "main thread" for Chromium on OSX.
+ It does not match the DARWIN definition.
+
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::initializeThreading):
+ (WTF::isMainThread):
+
+2009-02-09 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Minor bugfix, incorrect check meant that subtraction causing integer overflow
+ would be missed on x86-64 JIT.
+
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileBinaryArithOp):
+
+2009-02-09 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ A more sensible register allocation for x86-64.
+
+ When WREC was ported to x86-64 it stuck with the same register allocation as x86.
+ This requires registers to be reordered on entry into WREC generated code, since
+ argument passing is different on x86-64 and x86 (regparm(3)). This patch switches
+ x86-64 to use a native register allocation, that does not require argument registers
+ to be reordered.
+
+ * wrec/WRECGenerator.cpp:
+ (JSC::WREC::Generator::generateEnter):
+ (JSC::WREC::Generator::generateReturnSuccess):
+ (JSC::WREC::Generator::generateReturnFailure):
+ * wrec/WRECGenerator.h:
+
+2009-02-05 Adam Roben <aroben@apple.com>
+
+ Build fix
+
+ Rubberstamped by Sam Weinig.
+
+ * wtf/TypeTraits.h: Include Platform.h, since this header uses macros
+ defined there.
+
+2009-02-05 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23747
+ Add Chromium threading-related files.
+
+ * wtf/MainThread.cpp: Added platform guard to initializeMainThread.
+ * wtf/chromium/ChromiumThreading.h: Added.
+ * wtf/chromium/MainThreadChromium.cpp: Added.
+ (WTF::initializeMainThread):
+ (WTF::scheduleDispatchFunctionsOnMainThread):
+
+2009-02-05 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Bug 23713: COMPILE_ASSERTS should be moved out of TypeTraits.h and into .cpp file
+ <https://bugs.webkit.org/show_bug.cgi?id=23713>
+
+ * GNUmakefile.am:
+ * JavaScriptCore.pri:
+ * JavaScriptCore.scons:
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * JavaScriptCoreSources.bkl:
+
+ * wtf/HashTraits.h:
+ Remove unnecessary header file that I missed when moving out the type traits form this file.
+
+ * wtf/TypeTraits.cpp: Added.
+ (WTF::):
+ * wtf/TypeTraits.h:
+ Moved the compile asserts into TypeTraits.cpp file.
+
+2009-02-04 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver 'the nun' Hunt.
+
+ Add -e switch to jsc to enable evaluation of scripts passed on the command line.
+
+ * jsc.cpp:
+ (Script::Script):
+ (runWithScripts):
+ (printUsageStatement):
+ (parseArguments):
+ (jscmain):
+
+2009-02-04 Gavin Barraclough <barraclough@apple.com>
+
+ Rubber stamped by Sam 'Big Mac' Weinig.
+
+ * assembler/AbstractMacroAssembler.h: Copied from assembler/MacroAssembler.h.
+ * assembler/MacroAssemblerX86.h: Copied from assembler/MacroAssembler.h.
+ * assembler/MacroAssemblerX86Common.h: Copied from assembler/MacroAssembler.h.
+ * assembler/MacroAssemblerX86_64.h: Copied from assembler/MacroAssembler.h.
+
+2009-02-04 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ This patch tidies up the MacroAssembler, cleaning up the code and refactoring out the
+ platform-specific parts. The MacroAssembler gets split up like a beef burger, with the
+ platform-agnostic data types being the lower bun (in the form of the class AbstractMacroAssembler),
+ the plaform-specific code generation forming a big meaty patty of methods like 'add32',
+ 'branch32', etc (MacroAssemblerX86), and finally topped off with the bun-lid of the
+ MacroAssembler class itself, providing covenience methods such as the stack peek & poke,
+ and backwards branch methods, all of which can be described in a platform independent
+ way using methods from the base class. The AbstractMacroAssembler is templated on the
+ type of the assembler class that will be used for code generation, and the three layers
+ are held together with the cocktail stick of inheritance.
+
+ The above description is a slight simplification since the MacroAssemblerX86 is actually
+ formed from two layers (in effect giving us a kind on bacon double cheeseburger) - with the
+ bulk of methods that are common between x86 & x86-64 implemented in MacroAssemblerX86Common,
+ which forms a base class for MacroAssemblerX86 and MacroAssemblerX86_64 (which add the methods
+ specific to the given platform).
+
+ I'm landing these changes first without splitting the classes across multiple files,
+ I will follow up with a second patch to split up the file MacroAssembler.h.
+
+ * assembler/MacroAssembler.h:
+ (JSC::AbstractMacroAssembler::):
+ (JSC::AbstractMacroAssembler::DataLabelPtr::DataLabelPtr):
+ (JSC::AbstractMacroAssembler::DataLabelPtr::patch):
+ (JSC::AbstractMacroAssembler::DataLabel32::DataLabel32):
+ (JSC::AbstractMacroAssembler::DataLabel32::patch):
+ (JSC::AbstractMacroAssembler::Label::Label):
+ (JSC::AbstractMacroAssembler::Jump::Jump):
+ (JSC::AbstractMacroAssembler::Jump::link):
+ (JSC::AbstractMacroAssembler::Jump::linkTo):
+ (JSC::AbstractMacroAssembler::Jump::patch):
+ (JSC::AbstractMacroAssembler::JumpList::link):
+ (JSC::AbstractMacroAssembler::JumpList::linkTo):
+ (JSC::AbstractMacroAssembler::PatchBuffer::link):
+ (JSC::AbstractMacroAssembler::PatchBuffer::addressOf):
+ (JSC::AbstractMacroAssembler::PatchBuffer::setPtr):
+ (JSC::AbstractMacroAssembler::size):
+ (JSC::AbstractMacroAssembler::copyCode):
+ (JSC::AbstractMacroAssembler::label):
+ (JSC::AbstractMacroAssembler::align):
+ (JSC::AbstractMacroAssembler::differenceBetween):
+ (JSC::MacroAssemblerX86Common::xor32):
+ (JSC::MacroAssemblerX86Common::load32WithAddressOffsetPatch):
+ (JSC::MacroAssemblerX86Common::store32WithAddressOffsetPatch):
+ (JSC::MacroAssemblerX86Common::move):
+ (JSC::MacroAssemblerX86Common::swap):
+ (JSC::MacroAssemblerX86Common::signExtend32ToPtr):
+ (JSC::MacroAssemblerX86Common::zeroExtend32ToPtr):
+ (JSC::MacroAssemblerX86Common::branch32):
+ (JSC::MacroAssemblerX86Common::jump):
+ (JSC::MacroAssemblerX86_64::add32):
+ (JSC::MacroAssemblerX86_64::sub32):
+ (JSC::MacroAssemblerX86_64::load32):
+ (JSC::MacroAssemblerX86_64::store32):
+ (JSC::MacroAssemblerX86_64::addPtr):
+ (JSC::MacroAssemblerX86_64::andPtr):
+ (JSC::MacroAssemblerX86_64::orPtr):
+ (JSC::MacroAssemblerX86_64::rshiftPtr):
+ (JSC::MacroAssemblerX86_64::subPtr):
+ (JSC::MacroAssemblerX86_64::xorPtr):
+ (JSC::MacroAssemblerX86_64::loadPtr):
+ (JSC::MacroAssemblerX86_64::loadPtrWithAddressOffsetPatch):
+ (JSC::MacroAssemblerX86_64::storePtr):
+ (JSC::MacroAssemblerX86_64::storePtrWithAddressOffsetPatch):
+ (JSC::MacroAssemblerX86_64::branchPtr):
+ (JSC::MacroAssemblerX86_64::branchTestPtr):
+ (JSC::MacroAssemblerX86_64::branchAddPtr):
+ (JSC::MacroAssemblerX86_64::branchSubPtr):
+ (JSC::MacroAssemblerX86_64::branchPtrWithPatch):
+ (JSC::MacroAssemblerX86_64::storePtrWithPatch):
+ (JSC::MacroAssemblerX86::add32):
+ (JSC::MacroAssemblerX86::sub32):
+ (JSC::MacroAssemblerX86::load32):
+ (JSC::MacroAssemblerX86::store32):
+ (JSC::MacroAssemblerX86::branch32):
+ (JSC::MacroAssemblerX86::branchPtrWithPatch):
+ (JSC::MacroAssemblerX86::storePtrWithPatch):
+ (JSC::MacroAssembler::pop):
+ (JSC::MacroAssembler::peek):
+ (JSC::MacroAssembler::poke):
+ (JSC::MacroAssembler::branchPtr):
+ (JSC::MacroAssembler::branch32):
+ (JSC::MacroAssembler::branch16):
+ (JSC::MacroAssembler::branchTestPtr):
+ (JSC::MacroAssembler::addPtr):
+ (JSC::MacroAssembler::andPtr):
+ (JSC::MacroAssembler::orPtr):
+ (JSC::MacroAssembler::rshiftPtr):
+ (JSC::MacroAssembler::subPtr):
+ (JSC::MacroAssembler::xorPtr):
+ (JSC::MacroAssembler::loadPtr):
+ (JSC::MacroAssembler::loadPtrWithAddressOffsetPatch):
+ (JSC::MacroAssembler::storePtr):
+ (JSC::MacroAssembler::storePtrWithAddressOffsetPatch):
+ (JSC::MacroAssembler::branchAddPtr):
+ (JSC::MacroAssembler::branchSubPtr):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileBinaryArithOp):
+
+2009-02-04 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23681
+ Worker tests crash in debug builds if run --singly
+
+ The crash happened because worker threads continued running while debug-only static objects
+ were already being destroyed on main thread.
+
+ * runtime/Structure.cpp: Create static debug-only sets in heap, so that they don't get
+ destroyed.
+
+ * wtf/ThreadingPthreads.cpp: Changed assertions to conventional form.
+
+2009-02-03 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23715
+
+ Simplify MacroAssembler interface, by combining comparison methods.
+ Seprate operations are combined as follows:
+ jz32/jnz32/jzPtr/jnzPtr -> branchTest32/branchTestPtr,
+ j*(Add|Mul|Sub)32/j*(Add|Mul|Sub)Ptr -> branch(Add|Mul|Sub)32/branch(Add|Mul|Sub)Ptr
+ j*32/j*Ptr (all other two op combparisons) -> branch32/brnachPtr
+ set*32 -> set32
+
+ Also, represent the Scale of BaseIndex addresses as a plain enum (0,1,2,3),
+ instead of as multiplicands (1,2,4,8).
+
+ This patch singificantly reduces replication of code, and increases functionality supported
+ by the MacroAssembler. No performance impact.
+
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::):
+ (JSC::MacroAssembler::branchPtr):
+ (JSC::MacroAssembler::branchPtrWithPatch):
+ (JSC::MacroAssembler::branch32):
+ (JSC::MacroAssembler::branch16):
+ (JSC::MacroAssembler::branchTestPtr):
+ (JSC::MacroAssembler::branchTest32):
+ (JSC::MacroAssembler::branchAddPtr):
+ (JSC::MacroAssembler::branchAdd32):
+ (JSC::MacroAssembler::branchMul32):
+ (JSC::MacroAssembler::branchSubPtr):
+ (JSC::MacroAssembler::branchSub32):
+ (JSC::MacroAssembler::set32):
+ (JSC::MacroAssembler::setTest32):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::):
+ (JSC::X86Assembler::jccRel32):
+ (JSC::X86Assembler::setccOpcode):
+ (JSC::X86Assembler::cmpq_mr):
+ (JSC::X86Assembler::setcc_r):
+ (JSC::X86Assembler::sete_r):
+ (JSC::X86Assembler::setne_r):
+ (JSC::X86Assembler::jne):
+ (JSC::X86Assembler::je):
+ (JSC::X86Assembler::jl):
+ (JSC::X86Assembler::jb):
+ (JSC::X86Assembler::jle):
+ (JSC::X86Assembler::jbe):
+ (JSC::X86Assembler::jge):
+ (JSC::X86Assembler::jg):
+ (JSC::X86Assembler::ja):
+ (JSC::X86Assembler::jae):
+ (JSC::X86Assembler::jo):
+ (JSC::X86Assembler::jp):
+ (JSC::X86Assembler::js):
+ (JSC::X86Assembler::jcc):
+ (JSC::X86Assembler::X86InstructionFormatter::putModRmSib):
+ * jit/JIT.cpp:
+ (JSC::JIT::compileOpStrictEq):
+ (JSC::JIT::emitSlowScriptCheck):
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_lshift):
+ (JSC::JIT::compileFastArith_op_mod):
+ (JSC::JIT::compileFastArith_op_post_inc):
+ (JSC::JIT::compileFastArith_op_post_dec):
+ (JSC::JIT::compileFastArith_op_pre_inc):
+ (JSC::JIT::compileFastArith_op_pre_dec):
+ (JSC::JIT::compileBinaryArithOp):
+ (JSC::JIT::compileFastArith_op_add):
+ (JSC::JIT::compileFastArith_op_mul):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::checkStructure):
+ (JSC::JIT::emitJumpIfJSCell):
+ (JSC::JIT::emitJumpIfNotJSCell):
+ (JSC::JIT::emitJumpIfImmediateNumber):
+ (JSC::JIT::emitJumpIfNotImmediateNumber):
+ (JSC::JIT::emitJumpIfImmediateInteger):
+ (JSC::JIT::emitJumpIfNotImmediateInteger):
+ (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compilePutByIdHotPath):
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+ * runtime/RegExp.cpp:
+ (JSC::RegExp::match):
+ * wrec/WRECGenerator.cpp:
+ (JSC::WREC::Generator::generateEnter):
+ (JSC::WREC::Generator::generateIncrementIndex):
+ (JSC::WREC::Generator::generateLoadCharacter):
+ (JSC::WREC::Generator::generateJumpIfNotEndOfInput):
+ (JSC::WREC::Generator::generateBackreferenceQuantifier):
+ (JSC::WREC::Generator::generateNonGreedyQuantifier):
+ (JSC::WREC::Generator::generateGreedyQuantifier):
+ (JSC::WREC::Generator::generatePatternCharacterPair):
+ (JSC::WREC::Generator::generatePatternCharacter):
+ (JSC::WREC::Generator::generateCharacterClassInvertedRange):
+ (JSC::WREC::Generator::generateCharacterClassInverted):
+ (JSC::WREC::Generator::generateAssertionBOL):
+ (JSC::WREC::Generator::generateAssertionEOL):
+ (JSC::WREC::Generator::generateAssertionWordBoundary):
+ (JSC::WREC::Generator::generateBackreference):
+
+2009-02-03 David Hyatt <hyatt@apple.com>
+
+ Fix a bug in Vector's shrinkCapacity method. It did not properly copy elements into the inline buffer
+ when shrinking down from a size that was greater than the inline capacity.
+
+ Reviewed by Maciej
+
+ * wtf/Vector.h:
+ (WTF::VectorBuffer::VectorBuffer):
+ (WTF::VectorBuffer::allocateBuffer):
+
2009-02-03 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Tor Arne Vestbø.
@@ -89,6 +11163,79 @@
* runtime/JSByteArray.h:
(JSC::JSByteArray::storage):
+2009-02-03 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23560
+ Implement SharedTimer on WorkerRunLoop
+
+ * JavaScriptCore.exp:
+ Forgot to expose ThreadCondition::timedWait() in one of previous patches.
+
+2009-02-02 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ <https://bugs.webkit.org/show_bug.cgi?id=21414> REGRESSION: Regular Expressions and character classes, shorthands and ranges
+ <rdar://problem/6543487>
+
+ In certain circumstances when WREC::Generator::generateCharacterClassInvertedRange invokes
+ itself recursively, it will incorrectly emit (and thus consume) the next single character
+ match in the current character class. As WREC uses a binary search this out of sequence
+ codegen could result in a character match being missed and so cause the regex to produce
+ incorrect results.
+
+ * wrec/WRECGenerator.cpp:
+ (JSC::WREC::Generator::generateCharacterClassInvertedRange):
+
+2009-02-02 Darin Adler <darin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Bug 23676: Speed up uses of reserveCapacity on new vectors by adding a new reserveInitialCapacity
+ https://bugs.webkit.org/show_bug.cgi?id=23676
+
+ * API/JSObjectRef.cpp:
+ (JSObjectCopyPropertyNames): Use reserveInitialCapacity.
+ * parser/Lexer.cpp:
+ (JSC::Lexer::Lexer): Ditto.
+ (JSC::Lexer::clear): Ditto.
+
+ * wtf/Vector.h: Added reserveInitialCapacity, a more efficient version of
+ reserveCapacity for use when the vector is brand new (still size 0 with no
+ capacity other than the inline capacity).
+
+2009-01-30 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Oliver Hunt.
+
+ <rdar://problem/6391501> Enable the JIT on Mac OS X x86_64 as it passes all tests.
+
+ * wtf/Platform.h:
+
+2009-01-30 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Mark Rowe and Sam Weinig.
+
+ Finally fix load() to propagate exceptions correctly.
+
+ * jsc.cpp:
+ (functionLoad):
+
+2009-01-30 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23618
+ Templated worker tasks should be more error proof to use.
+ Fix Chromium build.
+
+ * wtf/TypeTraits.h:
+ (WTF::IsConvertibleToInteger::IsConvertibleToDouble):
+ Avoid "possible loss of data" warning when using Microsoft's C++ compiler
+ by avoiding an implicit conversion of int types to doubles.
+
2009-01-30 Laszlo Gombos <laszlo.1.gombos@nokia.com>
Reviewed by Simon Hausmann.
@@ -101,24 +11248,2007 @@
(WTF::TCMallocStats::):
* wtf/Platform.h: Don't define COMPILER(GCC) with RVCT --gnu.
-2008-11-28 George Staikos <staikos@kde.org>
+2009-01-30 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23618: Templated worker tasks should be more error proof to use
+ <https://bugs.webkit.org/show_bug.cgi?id=23618>
+
+ Add the type traits needed for the generic worker tasks
+ and compile asserts for them.
+
+ Add a summary header to the TypeTraits.h file to explain what is in there.
+
+ Add a note to explain IsPod's deficiencies.
+
+ * wtf/TypeTraits.h:
+
+2009-01-30 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23616: Various "template helpers" should be consolidated from isolated files in JavaScriptCore.
+ <https://bugs.webkit.org/show_bug.cgi?id=23616>
+
+ * wtf/TypeTraits.h: Moved RemovePointer, IsPod, IsInteger to this file.
+
+ * wtf/OwnPtr.h: Use RemovePointer from TypeTraits.h.
+ * wtf/RetainPtr.h: Ditto.
+
+ * wtf/HashTraits.h: Use IsInteger from TypeTraits.h.
+
+ * wtf/VectorTraits.h: Use IsPod from TypeTraits.h.
+
+ * GNUmakefile.am:
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ Added TypeTraits.h.
+
+2009-01-29 Stephanie Lewis <slewis@apple.com>
+
+ RS by Oliver Hunt.
+
+ Update the order files.
+
+ * JavaScriptCore.order:
+
+2009-01-29 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 23551: Crash on page load with profiler enabled and running
+ <https://bugs.webkit.org/show_bug.cgi?id=23551>
+ <rdar://problem/6529521>
+
+ Interpreter::execute(FunctionBodyNode*, ...) calls Profiler::didExecute()
+ with a stale CallFrame. If some part of the scope chain has already been
+ freed, Profiler::didExecute() will crash when attempting to get the lexical
+ global object. The fix is to make the didExecute() call use the caller's
+ CallFrame, not the one made for the function call. In this case, the
+ willExecute() call should also be changed to match.
+
+ Since this occurs in the actual inspector JS, it is difficult to reduce.
+ I couldn't make a layout test.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+
+2009-01-28 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Gavin Barraclough.
+
+ Fix for <rdar://problem/6525537>
+ Hang occurs when closing Installer window (iTunes, Aperture)
+
+ * JavaScriptCore.exp: Export JSGlobalData::sharedInstance.
+
+2009-01-28 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoff Garen.
+
+ Initial patch by Mark Rowe.
+
+ <rdar://problem/6519356>
+ REGRESSION (r36006): "out of memory" alert running dromaeo on Windows
+
+ Report the cost of the ArrayStorage vector more accurately/often.
+
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::JSArray): Report the extra cost even for a filled array
+ because JSString using the single character optimization and immediates
+ wont increase the cost themselves.
+ (JSC::JSArray::putSlowCase): Update the cost when increasing the size of
+ the array.
+ (JSC::JSArray::increaseVectorLength): Ditto.
+
+2009-01-28 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoff Garen.
+
+ Fix for <rdar://problem/6129678>
+ REGRESSION (Safari 3-4): Local variable not accessible from Dashcode console or variables view
+
+ Iterating the properties of activation objects accessed through the WebKit debugging
+ APIs was broken by forced conversion of JSActivation to the global object. To fix this,
+ we use a proxy activation object that acts more like a normal JSObject.
+
+ * debugger/DebuggerActivation.cpp: Added.
+ (JSC::DebuggerActivation::DebuggerActivation):
+ (JSC::DebuggerActivation::mark):
+ (JSC::DebuggerActivation::className):
+ (JSC::DebuggerActivation::getOwnPropertySlot):
+ (JSC::DebuggerActivation::put):
+ (JSC::DebuggerActivation::putWithAttributes):
+ (JSC::DebuggerActivation::deleteProperty):
+ (JSC::DebuggerActivation::getPropertyNames):
+ (JSC::DebuggerActivation::getPropertyAttributes):
+ (JSC::DebuggerActivation::defineGetter):
+ (JSC::DebuggerActivation::defineSetter):
+ (JSC::DebuggerActivation::lookupGetter):
+ (JSC::DebuggerActivation::lookupSetter):
+ * debugger/DebuggerActivation.h: Added.
+ Proxy JSActivation object for Debugging.
+
+ * runtime/JSActivation.h:
+ (JSC::JSActivation::isActivationObject): Added.
+ * runtime/JSObject.h:
+ (JSC::JSObject::isActivationObject): Added.
+
+2009-01-28 David Kilzer <ddkilzer@apple.com>
+
+ Bug 23490: Remove initialRefCount argument from RefCounted class
+
+ <https://bugs.webkit.org/show_bug.cgi?id=23490>
+
+ Reviewed by Darin Adler.
+
+ RefCountedBase now always starts with a ref count of 1, so there
+ is no need to pass the initialRefCount into the class anymore.
+
+ * wtf/ByteArray.h:
+ (WTF::ByteArray::ByteArray): Removed call to RefCounted(1).
+ * wtf/RefCounted.h:
+ (WTF::RefCountedBase::RefCountedBase): Changed to start with a
+ ref count of 1.
+ (WTF::RefCounted::RefCounted): Removed initialRefCount argument
+ and removed call to RefCounted(1).
+
+2009-01-26 Adele Peterson <adele@apple.com>
+
+ Build fix.
+
+ * debugger/Debugger.cpp:
+
+2009-01-26 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fixes for eq null & neq null, on 64-bit JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=23559
+
+ This patch degrades 64-bit JIT performance on some benchmarks,
+ due to the whole not-being-incorrect thing.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+
+2009-01-26 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Gavin Barraclough.
+
+ Bug 23552: Dashcode evaluator no longer works after making ExecStates actual call frames
+ <https://bugs.webkit.org/show_bug.cgi?id=23552>
+ <rdar://problem/6398839>
+
+ * JavaScriptCore.exp:
+ * debugger/Debugger.cpp:
+ (JSC::evaluateInGlobalCallFrame): Added so that WebScriptCallFrame can
+ evaluate JS starting from a global call frame.
+ * debugger/Debugger.h:
+
+2009-01-25 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Dan Bernstein.
+
+ Improve the consistency of settings in our .xcconfig files.
+
+ * Configurations/Base.xcconfig: Enable GCC_OBJC_CALL_CXX_CDTORS to match other projects.
+
+2009-01-25 Darin Adler <darin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Bug 23352: Turn on more compiler warnings in the Mac build
+ https://bugs.webkit.org/show_bug.cgi?id=23352
+
+ Turn on the following warnings:
+
+ -Wcast-qual
+ -Wextra-tokens
+ -Wformat=2
+ -Winit-self
+ -Wmissing-noreturn
+ -Wpacked
+ -Wrendundant-decls
+
+ * Configurations/Base.xcconfig: Added the new warnings. Switched to -Wextra instead of
+ -W for clarity since we don't have to support the older versions of gcc that require the
+ old -W syntax. Since we now use -Wformat=2, removed -Wformat-security. Also removed
+ -Wno-format-y2k since we can have that one on now.
+
+2009-01-25 Judit Jasz <jasy@inf.u-szeged.hu>
+
+ Reviewed by Darin Adler.
+
+ Compilation problem fixing
+ http://bugs.webkit.org/show_bug.cgi?id=23497
+
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall): Use JSValuePtr::encode.
+
+2009-01-25 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 23352: Turn on more compiler warnings in the Mac build
+ https://bugs.webkit.org/show_bug.cgi?id=23352
+
+ Fourth patch: Deal with the last few stray warnings.
- Reviewed by NOBODY (OOPS!).
+ * parser/Parser.cpp: Only declare jscyyparse if it's not already declared.
+ This makes both separate compilation and all-in-one compilation work with the
+ -Wredundant-decls warning.
- Implement currentThreadStackBase() on Windows CE.
+2009-01-25 Darin Adler <darin@apple.com>
- Coding style fixes by Joerg Bornemann <joerg.bornemann@trolltech.com>.
+ Reviewed by Sam Weinig.
+
+ Bug 23352: Turn on more compiler warnings in the Mac build
+ https://bugs.webkit.org/show_bug.cgi?id=23352
+
+ Third patch: Use the noreturn attribute on functions that don't
+ return to prepare for the use of the -Wmissing-noreturn warning.
+
+ * jit/JITCall.cpp:
+ (JSC::unreachable): Added NO_RETURN.
+ * jsc.cpp:
+ (functionQuit): Ditto.
+ (printUsageStatement): Ditto.
+ * wtf/AlwaysInline.h: Added definition of NO_RETURN.
+2009-01-24 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Force inlining of Lexer::matchPunctuator
+
+ 2.2% win when parsing jQuery, Mootools, Prototype, etc
+
+ * parser/Lexer.h:
+
+2009-01-23 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Fix for <rdar://problem/6126212>
+ Ensure that callbacks out from the JSC interface are only allowed
+ to return in reverse-chronological order to that in which they were
+ made. If we allow earlier callbacks to return first, then this may
+ result in setions of the RegisterFile in use by another thread
+ being trampled.
+
+ See uber-comment in JSLock.h for details.
+
+ * runtime/JSLock.cpp:
+ (JSC::JSLock::DropAllLocks::DropAllLocks):
+ (JSC::JSLock::DropAllLocks::~DropAllLocks):
+
+2009-01-23 Darin Adler <darin@apple.com>
+
+ Try to fix WX build.
+
+ * runtime/JSGlobalObjectFunctions.h: Include <wtf/unicode/Unicode.h>
+ for the definition of UChar.
+
+2009-01-23 Anders Carlsson <andersca@apple.com>
+
+ * Configurations/Base.xcconfig:
+ GCC 4.0 build fix.
+
+ * runtime/JSNumberCell.h:
+ 64-bit build fix.
+
+2009-01-23 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Turn on -Wmissing-prototypes and fix the warnings.
+
+ * API/JSClassRef.cpp:
+ (clearReferenceToPrototype):
+ * Configurations/Base.xcconfig:
* runtime/Collector.cpp:
- (JSC::numberOfWritableBytes):
- (JSC::systemPageSize):
- (JSC::currentThreadStackBaseWinCE):
- (JSC::currentThreadStackBase):
+ (JSC::getPlatformThreadRegisters):
+ * runtime/ExceptionHelpers.cpp:
+ (JSC::createError):
+ * runtime/JSGlobalObjectFunctions.h:
+ * runtime/JSNumberCell.h:
+ * runtime/UString.cpp:
+ (JSC::initializeStaticBaseString):
+ (JSC::createRep):
+ * wtf/FastMalloc.cpp:
+ * wtf/Threading.cpp:
-2009-01-08 Gavin Barraclough <barraclough@apple.com>
+2009-01-22 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Anders Carlsson.
+
+ Disable GCC_WARN_ABOUT_MISSING_PROTOTYPES temporarily.
+
+ Current versions of Xcode only respect it for C and Objective-C files,
+ and our code doesn't currently compile if it is applied to C++ and
+ Objective-C++ files.
+
+ * Configurations/Base.xcconfig:
+
+2009-01-22 Steve Falkenburg <sfalken@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=23489
+
+ Return currentTime() in correct units for the two early return cases.
+
+ Reviewed by Mark Rowe.
+
+ * wtf/CurrentTime.cpp:
+ (WTF::currentTime):
+
+2009-01-22 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Fix for <rdar://problem/6439247>
+ FastMalloc allocating an extra 4MB of meta-data on 64-bit
+
+ Rely on the fact that on all known x86-64 platforms only use 48 bits of
+ address space to shrink the initial size of the PageMap from ~4MB to 120K.
+ For 64-bit we still use a 3-level radix tree, but now each level is only 12
+ bits wide.
+
+ No performance change.
+
+ * wtf/FastMalloc.cpp:
+ (WTF::MapSelector): Add specialization for 64 bit that takes into account the
+ 16 bits of unused address space on x86-64.
+
+2009-01-22 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23461 LayoutTests/
+ fast/js/numeric-conversion.html is broken, and corresponding
+ <rdar://problem/6514842>
+
+ The basic problem here is that parseInt(Infinity) should be NaN,
+ but we were returning 0. NaN matches Safari 3.2.1 and Firefox.
+
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncParseInt):
+
+2009-01-22 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ <rdar://problem/6516853> (r39682-r39736) JSFunFuzz: crash on "(function(){({ x2: x }), })()"
+ <https://bugs.webkit.org/show_bug.cgi?id=23479>
+
+ Automatic semicolon insertion was resulting in this being accepted in the initial
+ nodeless parsing, but subsequent reparsing for code generation would fail, leading
+ to a crash. The solution is to ensure that reparsing a function performs parsing
+ in the same state as the initial parse. We do this by modifying the saved source
+ ranges to include rather than exclude the opening and closing braces.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): add an assertion for successful recompile
+ * parser/Lexer.h:
+ (JSC::Lexer::sourceCode): include rather than exclude braces.
+ * parser/Nodes.h:
+ (JSC::FunctionBodyNode::toSourceString): No need to append braces anymore.
+
+2009-01-22 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23373
+
+ Implement ThreadCondition::timedWait().
+ Since we borrow the code for condition variables from other sources,
+ I did the same for timedWait(). See comments in ThreadingWin.cpp for
+ rationale and more info.
+
+ * wtf/CONTRIBUTORS.pthreads-win32:
+ Added. A list of Pthreads-win32 contributors mentioned in their license. The license itself
+ is included into wtf/ThreadingWin32.cpp.
+
+ * wtf/Threading.h:
+ * wtf/ThreadingWin.cpp:
+ Additional info and Pthreads-win32 license at the beginning.
+ (WTF::PlatformCondition::timedWait): new method, derived from Pthreads-win32.
+ (WTF::PlatformCondition::signal): same
+ (WTF::ThreadCondition::ThreadCondition):
+ (WTF::ThreadCondition::~ThreadCondition):
+ (WTF::ThreadCondition::wait): this now calls PlatformCondition::timedWait.
+ (WTF::ThreadCondition::timedWait): same
+ (WTF::ThreadCondition::signal): this now calls PlatformCondition::signal.
+ (WTF::ThreadCondition::broadcast): same
+
+2009-01-21 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23469.
+
+ We need to check all numbers in integer switches, not just those
+ represented as integer JSImmediates.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::cti_op_switch_imm):
+
+2009-01-21 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23468.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+
+2009-01-21 Alexey Proskuryakov <ap@webkit.org>
+
+ Suggested by Oliver Hunt. Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23456
+ Function argument names leak
+
+ * parser/Nodes.cpp: (JSC::FunctionBodyNode::~FunctionBodyNode): Destruct parameter names.
+
+2009-01-20 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ Windows build fix
+
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+
+2009-01-20 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Structure property table deleted offset maps are being leaked.
+ Probably shouldn't be doing that.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23442
+
+ * runtime/Structure.cpp:
+ (JSC::Structure::~Structure):
+
+2009-01-20 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (build fix).
+
+ Attempt to fix gtk build
+
+ * GNUmakefile.am:
+
+2009-01-20 Darin Adler <darin@apple.com>
+
+ * runtime/StringPrototype.cpp:
+ (JSC::substituteBackreferences): Add back the initialization to fix the build.
+
+2009-01-20 Darin Adler <darin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Bug 23352: Turn on more compiler warnings in the Mac build
+ https://bugs.webkit.org/show_bug.cgi?id=23352
+
+ First patch: Fix some simple cases of various warnings.
+
+ * pcre/pcre_compile.cpp:
+ (jsRegExpCompile): Use const_cast to change const-ness.
+
+ * runtime/StringPrototype.cpp:
+ (JSC::substituteBackreferences): Remove unneeded initialization and
+ use UChar instead of unsigned short for UTF-16 values.
+
+ * wtf/dtoa.cpp:
+ (WTF::strtod): Use const_cast to change const-ness.
+
+2009-01-20 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (build fix).
+
+ Whoops, remove runtime/ByteArray references from .pri and .scons builds, update .bkl
+
+ * JavaScriptCore.pri:
+ * JavaScriptCore.scons:
+ * JavaScriptCoreSources.bkl:
+
+2009-01-20 Oliver Hunt <oliver@apple.com>
+
+ RS=Dan Bernstein.
+
+ Move runtime/ByteArray to wtf/ByteArray
+
+ * GNUmakefile.am:
+ * JavaScriptCore.exp:
+ * JavaScriptCore.pri:
+ * JavaScriptCore.scons:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/JSByteArray.cpp:
+ * runtime/JSByteArray.h:
+ * wtf/ByteArray.cpp: Renamed from JavaScriptCore/runtime/ByteArray.cpp.
+ (WTF::ByteArray::create):
+ * wtf/ByteArray.h: Renamed from JavaScriptCore/runtime/ByteArray.h.
+ (WTF::ByteArray::length):
+ (WTF::ByteArray::set):
+ (WTF::ByteArray::get):
+ (WTF::ByteArray::data):
+ (WTF::ByteArray::deref):
+ (WTF::ByteArray::ByteArray):
+
+2009-01-19 Sam Weinig <sam@webkit.org>
+
+ Rubber-stamped by Gavin Barraclough.
+
+ Remove temporary operator-> from JSValuePtr.
+
+ * API/JSCallbackFunction.cpp:
+ (JSC::JSCallbackFunction::call):
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::call):
+ (JSC::::toNumber):
+ (JSC::::toString):
+ * API/JSObjectRef.cpp:
+ (JSObjectSetPrototype):
+ * API/JSValueRef.cpp:
+ (JSValueGetType):
+ (JSValueIsUndefined):
+ (JSValueIsNull):
+ (JSValueIsBoolean):
+ (JSValueIsNumber):
+ (JSValueIsString):
+ (JSValueIsObject):
+ (JSValueIsObjectOfClass):
+ (JSValueToBoolean):
+ (JSValueToNumber):
+ (JSValueToStringCopy):
+ (JSValueToObject):
+ * bytecode/CodeBlock.cpp:
+ (JSC::valueToSourceString):
+ (JSC::CodeBlock::mark):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::isKnownNotImmediate):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitEqualityOp):
+ (JSC::keyForImmediateSwitch):
+ * interpreter/Interpreter.cpp:
+ (JSC::jsLess):
+ (JSC::jsLessEq):
+ (JSC::jsAddSlowCase):
+ (JSC::jsAdd):
+ (JSC::jsTypeStringForValue):
+ (JSC::jsIsObjectType):
+ (JSC::jsIsFunctionType):
+ (JSC::isNotObject):
+ (JSC::Interpreter::callEval):
+ (JSC::Interpreter::throwException):
+ (JSC::cachePrototypeChain):
+ (JSC::Interpreter::tryCachePutByID):
+ (JSC::countPrototypeChainEntriesAndCheckForProxies):
+ (JSC::Interpreter::tryCacheGetByID):
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::tryCTICachePutByID):
+ (JSC::Interpreter::tryCTICacheGetByID):
+ (JSC::Interpreter::cti_op_convert_this):
+ (JSC::Interpreter::cti_op_add):
+ (JSC::Interpreter::cti_op_pre_inc):
+ (JSC::Interpreter::cti_op_put_by_id_generic):
+ (JSC::Interpreter::cti_op_get_by_id_generic):
+ (JSC::Interpreter::cti_op_put_by_id):
+ (JSC::Interpreter::cti_op_put_by_id_second):
+ (JSC::Interpreter::cti_op_put_by_id_fail):
+ (JSC::Interpreter::cti_op_get_by_id):
+ (JSC::Interpreter::cti_op_get_by_id_second):
+ (JSC::Interpreter::cti_op_get_by_id_self_fail):
+ (JSC::Interpreter::cti_op_get_by_id_proto_list):
+ (JSC::Interpreter::cti_op_get_by_id_proto_list_full):
+ (JSC::Interpreter::cti_op_get_by_id_proto_fail):
+ (JSC::Interpreter::cti_op_get_by_id_array_fail):
+ (JSC::Interpreter::cti_op_get_by_id_string_fail):
+ (JSC::Interpreter::cti_op_instanceof):
+ (JSC::Interpreter::cti_op_del_by_id):
+ (JSC::Interpreter::cti_op_mul):
+ (JSC::Interpreter::cti_op_call_JSFunction):
+ (JSC::Interpreter::cti_op_call_NotJSFunction):
+ (JSC::Interpreter::cti_op_construct_JSConstruct):
+ (JSC::Interpreter::cti_op_construct_NotJSConstruct):
+ (JSC::Interpreter::cti_op_get_by_val):
+ (JSC::Interpreter::cti_op_get_by_val_byte_array):
+ (JSC::Interpreter::cti_op_sub):
+ (JSC::Interpreter::cti_op_put_by_val):
+ (JSC::Interpreter::cti_op_put_by_val_array):
+ (JSC::Interpreter::cti_op_put_by_val_byte_array):
+ (JSC::Interpreter::cti_op_loop_if_true):
+ (JSC::Interpreter::cti_op_negate):
+ (JSC::Interpreter::cti_op_div):
+ (JSC::Interpreter::cti_op_pre_dec):
+ (JSC::Interpreter::cti_op_not):
+ (JSC::Interpreter::cti_op_jtrue):
+ (JSC::Interpreter::cti_op_post_inc):
+ (JSC::Interpreter::cti_op_lshift):
+ (JSC::Interpreter::cti_op_bitand):
+ (JSC::Interpreter::cti_op_rshift):
+ (JSC::Interpreter::cti_op_bitnot):
+ (JSC::Interpreter::cti_op_mod):
+ (JSC::Interpreter::cti_op_post_dec):
+ (JSC::Interpreter::cti_op_urshift):
+ (JSC::Interpreter::cti_op_bitxor):
+ (JSC::Interpreter::cti_op_bitor):
+ (JSC::Interpreter::cti_op_push_scope):
+ (JSC::Interpreter::cti_op_is_undefined):
+ (JSC::Interpreter::cti_op_is_boolean):
+ (JSC::Interpreter::cti_op_is_number):
+ (JSC::Interpreter::cti_op_to_jsnumber):
+ (JSC::Interpreter::cti_op_in):
+ (JSC::Interpreter::cti_op_put_by_index):
+ (JSC::Interpreter::cti_op_switch_imm):
+ (JSC::Interpreter::cti_op_switch_char):
+ (JSC::Interpreter::cti_op_switch_string):
+ (JSC::Interpreter::cti_op_del_by_val):
+ (JSC::Interpreter::cti_op_put_getter):
+ (JSC::Interpreter::cti_op_put_setter):
+ (JSC::Interpreter::cti_op_new_error):
+ * interpreter/Interpreter.h:
+ (JSC::Interpreter::isJSArray):
+ (JSC::Interpreter::isJSString):
+ (JSC::Interpreter::isJSByteArray):
+ * interpreter/Register.h:
+ (JSC::Register::marked):
+ (JSC::Register::mark):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::getConstantOperandImmediateInt):
+ (JSC::JIT::isOperandConstantImmediateInt):
+ * jsc.cpp:
+ (functionPrint):
+ (functionDebug):
+ (functionRun):
+ (functionLoad):
+ (runWithScripts):
+ (runInteractive):
+ * parser/Nodes.cpp:
+ (JSC::processClauseList):
+ * profiler/ProfileGenerator.cpp:
+ (JSC::ProfileGenerator::addParentForConsoleStart):
+ * profiler/Profiler.cpp:
+ (JSC::Profiler::createCallIdentifier):
+ * runtime/ArrayConstructor.cpp:
+ (JSC::constructArrayWithSizeQuirk):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncToString):
+ (JSC::arrayProtoFuncToLocaleString):
+ (JSC::arrayProtoFuncJoin):
+ (JSC::arrayProtoFuncConcat):
+ (JSC::arrayProtoFuncPop):
+ (JSC::arrayProtoFuncPush):
+ (JSC::arrayProtoFuncReverse):
+ (JSC::arrayProtoFuncShift):
+ (JSC::arrayProtoFuncSlice):
+ (JSC::arrayProtoFuncSort):
+ (JSC::arrayProtoFuncSplice):
+ (JSC::arrayProtoFuncUnShift):
+ (JSC::arrayProtoFuncFilter):
+ (JSC::arrayProtoFuncMap):
+ (JSC::arrayProtoFuncEvery):
+ (JSC::arrayProtoFuncForEach):
+ (JSC::arrayProtoFuncSome):
+ (JSC::arrayProtoFuncIndexOf):
+ (JSC::arrayProtoFuncLastIndexOf):
+ * runtime/BooleanConstructor.cpp:
+ (JSC::constructBoolean):
+ (JSC::callBooleanConstructor):
+ * runtime/BooleanPrototype.cpp:
+ (JSC::booleanProtoFuncToString):
+ (JSC::booleanProtoFuncValueOf):
+ * runtime/Collector.cpp:
+ (JSC::Heap::protect):
+ (JSC::Heap::unprotect):
+ (JSC::Heap::heap):
+ (JSC::Heap::collect):
+ (JSC::typeName):
+ * runtime/Completion.cpp:
+ (JSC::evaluate):
+ * runtime/DateConstructor.cpp:
+ (JSC::constructDate):
+ (JSC::dateParse):
+ (JSC::dateUTC):
+ * runtime/DateInstance.h:
+ (JSC::DateInstance::internalNumber):
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
+ (JSC::fillStructuresUsingTimeArgs):
+ (JSC::fillStructuresUsingDateArgs):
+ (JSC::dateProtoFuncToString):
+ (JSC::dateProtoFuncToUTCString):
+ (JSC::dateProtoFuncToDateString):
+ (JSC::dateProtoFuncToTimeString):
+ (JSC::dateProtoFuncToLocaleString):
+ (JSC::dateProtoFuncToLocaleDateString):
+ (JSC::dateProtoFuncToLocaleTimeString):
+ (JSC::dateProtoFuncGetTime):
+ (JSC::dateProtoFuncGetFullYear):
+ (JSC::dateProtoFuncGetUTCFullYear):
+ (JSC::dateProtoFuncToGMTString):
+ (JSC::dateProtoFuncGetMonth):
+ (JSC::dateProtoFuncGetUTCMonth):
+ (JSC::dateProtoFuncGetDate):
+ (JSC::dateProtoFuncGetUTCDate):
+ (JSC::dateProtoFuncGetDay):
+ (JSC::dateProtoFuncGetUTCDay):
+ (JSC::dateProtoFuncGetHours):
+ (JSC::dateProtoFuncGetUTCHours):
+ (JSC::dateProtoFuncGetMinutes):
+ (JSC::dateProtoFuncGetUTCMinutes):
+ (JSC::dateProtoFuncGetSeconds):
+ (JSC::dateProtoFuncGetUTCSeconds):
+ (JSC::dateProtoFuncGetMilliSeconds):
+ (JSC::dateProtoFuncGetUTCMilliseconds):
+ (JSC::dateProtoFuncGetTimezoneOffset):
+ (JSC::dateProtoFuncSetTime):
+ (JSC::setNewValueFromTimeArgs):
+ (JSC::setNewValueFromDateArgs):
+ (JSC::dateProtoFuncSetYear):
+ (JSC::dateProtoFuncGetYear):
+ * runtime/ErrorConstructor.cpp:
+ (JSC::constructError):
+ * runtime/ErrorPrototype.cpp:
+ (JSC::errorProtoFuncToString):
+ * runtime/ExceptionHelpers.cpp:
+ (JSC::createError):
+ (JSC::createErrorMessage):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncToString):
+ (JSC::functionProtoFuncApply):
+ (JSC::functionProtoFuncCall):
+ * runtime/GetterSetter.cpp:
+ (JSC::GetterSetter::toObject):
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::getOwnPropertySlot):
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::put):
+ (JSC::JSArray::mark):
+ (JSC::JSArray::sort):
+ (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
+ (JSC::JSArray::compactForSorting):
+ * runtime/JSByteArray.h:
+ (JSC::JSByteArray::setIndex):
+ * runtime/JSCell.h:
+ (JSC::asCell):
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::call):
+ (JSC::JSFunction::construct):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::markIfNeeded):
+ (JSC::lastInPrototypeChain):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::encode):
+ (JSC::decode):
+ (JSC::globalFuncEval):
+ (JSC::globalFuncParseInt):
+ (JSC::globalFuncParseFloat):
+ (JSC::globalFuncIsNaN):
+ (JSC::globalFuncIsFinite):
+ (JSC::globalFuncEscape):
+ (JSC::globalFuncUnescape):
+ (JSC::globalFuncJSCPrint):
+ * runtime/JSImmediate.cpp:
+ (JSC::JSImmediate::toThisObject):
+ (JSC::JSImmediate::toObject):
+ (JSC::JSImmediate::prototype):
+ (JSC::JSImmediate::toString):
+ * runtime/JSImmediate.h:
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::mark):
+ (JSC::JSObject::put):
+ (JSC::callDefaultValueFunction):
+ (JSC::JSObject::getPrimitiveNumber):
+ (JSC::JSObject::defineGetter):
+ (JSC::JSObject::defineSetter):
+ (JSC::JSObject::lookupGetter):
+ (JSC::JSObject::lookupSetter):
+ (JSC::JSObject::hasInstance):
+ (JSC::JSObject::toNumber):
+ (JSC::JSObject::toString):
+ * runtime/JSObject.h:
+ (JSC::JSObject::JSObject):
+ (JSC::JSObject::inlineGetOwnPropertySlot):
+ (JSC::JSObject::getOwnPropertySlotForWrite):
+ (JSC::JSObject::getPropertySlot):
+ (JSC::JSValuePtr::get):
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::JSPropertyNameIterator::create):
+ * runtime/JSString.cpp:
+ (JSC::JSString::getOwnPropertySlot):
+ * runtime/JSValue.h:
+ * runtime/JSWrapperObject.cpp:
+ (JSC::JSWrapperObject::mark):
+ * runtime/JSWrapperObject.h:
+ (JSC::JSWrapperObject::setInternalValue):
+ * runtime/MathObject.cpp:
+ (JSC::mathProtoFuncAbs):
+ (JSC::mathProtoFuncACos):
+ (JSC::mathProtoFuncASin):
+ (JSC::mathProtoFuncATan):
+ (JSC::mathProtoFuncATan2):
+ (JSC::mathProtoFuncCeil):
+ (JSC::mathProtoFuncCos):
+ (JSC::mathProtoFuncExp):
+ (JSC::mathProtoFuncFloor):
+ (JSC::mathProtoFuncLog):
+ (JSC::mathProtoFuncMax):
+ (JSC::mathProtoFuncMin):
+ (JSC::mathProtoFuncPow):
+ (JSC::mathProtoFuncRound):
+ (JSC::mathProtoFuncSin):
+ (JSC::mathProtoFuncSqrt):
+ (JSC::mathProtoFuncTan):
+ * runtime/NativeErrorConstructor.cpp:
+ (JSC::NativeErrorConstructor::NativeErrorConstructor):
+ (JSC::NativeErrorConstructor::construct):
+ * runtime/NumberConstructor.cpp:
+ (JSC::constructWithNumberConstructor):
+ (JSC::callNumberConstructor):
+ * runtime/NumberPrototype.cpp:
+ (JSC::numberProtoFuncToString):
+ (JSC::numberProtoFuncToLocaleString):
+ (JSC::numberProtoFuncValueOf):
+ (JSC::numberProtoFuncToFixed):
+ (JSC::numberProtoFuncToExponential):
+ (JSC::numberProtoFuncToPrecision):
+ * runtime/ObjectConstructor.cpp:
+ (JSC::constructObject):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::objectProtoFuncValueOf):
+ (JSC::objectProtoFuncHasOwnProperty):
+ (JSC::objectProtoFuncIsPrototypeOf):
+ (JSC::objectProtoFuncDefineGetter):
+ (JSC::objectProtoFuncDefineSetter):
+ (JSC::objectProtoFuncLookupGetter):
+ (JSC::objectProtoFuncLookupSetter):
+ (JSC::objectProtoFuncPropertyIsEnumerable):
+ (JSC::objectProtoFuncToLocaleString):
+ (JSC::objectProtoFuncToString):
+ * runtime/Operations.h:
+ (JSC::JSValuePtr::equalSlowCaseInline):
+ (JSC::JSValuePtr::strictEqual):
+ (JSC::JSValuePtr::strictEqualSlowCaseInline):
+ * runtime/Protect.h:
+ (JSC::gcProtect):
+ (JSC::gcUnprotect):
+ * runtime/RegExpConstructor.cpp:
+ (JSC::setRegExpConstructorInput):
+ (JSC::setRegExpConstructorMultiline):
+ (JSC::constructRegExp):
+ * runtime/RegExpObject.cpp:
+ (JSC::setRegExpObjectLastIndex):
+ (JSC::RegExpObject::match):
+ * runtime/RegExpPrototype.cpp:
+ (JSC::regExpProtoFuncTest):
+ (JSC::regExpProtoFuncExec):
+ (JSC::regExpProtoFuncCompile):
+ (JSC::regExpProtoFuncToString):
+ * runtime/StringConstructor.cpp:
+ (JSC::stringFromCharCodeSlowCase):
+ (JSC::stringFromCharCode):
+ (JSC::constructWithStringConstructor):
+ (JSC::callStringConstructor):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+ (JSC::stringProtoFuncToString):
+ (JSC::stringProtoFuncCharAt):
+ (JSC::stringProtoFuncCharCodeAt):
+ (JSC::stringProtoFuncConcat):
+ (JSC::stringProtoFuncIndexOf):
+ (JSC::stringProtoFuncLastIndexOf):
+ (JSC::stringProtoFuncMatch):
+ (JSC::stringProtoFuncSearch):
+ (JSC::stringProtoFuncSlice):
+ (JSC::stringProtoFuncSplit):
+ (JSC::stringProtoFuncSubstr):
+ (JSC::stringProtoFuncSubstring):
+ (JSC::stringProtoFuncToLowerCase):
+ (JSC::stringProtoFuncToUpperCase):
+ (JSC::stringProtoFuncLocaleCompare):
+ (JSC::stringProtoFuncBig):
+ (JSC::stringProtoFuncSmall):
+ (JSC::stringProtoFuncBlink):
+ (JSC::stringProtoFuncBold):
+ (JSC::stringProtoFuncFixed):
+ (JSC::stringProtoFuncItalics):
+ (JSC::stringProtoFuncStrike):
+ (JSC::stringProtoFuncSub):
+ (JSC::stringProtoFuncSup):
+ (JSC::stringProtoFuncFontcolor):
+ (JSC::stringProtoFuncFontsize):
+ (JSC::stringProtoFuncAnchor):
+ (JSC::stringProtoFuncLink):
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure):
+ (JSC::Structure::getEnumerablePropertyNames):
+ (JSC::Structure::createCachedPrototypeChain):
+ * runtime/Structure.h:
+ (JSC::Structure::mark):
+ * runtime/StructureChain.cpp:
+ (JSC::StructureChain::StructureChain):
+
+2009-01-19 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 23409: REGRESSION: RegExp 'replace()' function improperly processes '$$'
+ <https://bugs.webkit.org/show_bug.cgi?id=23409>
+ <rdar://problem/6505723>
+
+ Test: fast/js/string-replace-3.html
+
+ * runtime/StringPrototype.cpp:
+ (JSC::substituteBackreferences): Remove code that adds an extra $ -- not sure
+ how this ever worked.
+
+2009-01-16 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ On x86-64 jit, cache JSImmedate::TagMask & JSImmedate::TagTypeNumber in
+ registers, save reloading them every time they're used.
+
+ Draws x86-64 jit performance close to that of i386 jit.
+
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::subPtr):
+ (JSC::MacroAssembler::jnzPtr):
+ (JSC::MacroAssembler::jzPtr):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileBinaryArithOpSlowCase):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitJumpIfJSCell):
+ (JSC::JIT::emitJumpIfNotJSCell):
+ (JSC::JIT::emitJumpIfImmediateNumber):
+ (JSC::JIT::emitJumpIfNotImmediateNumber):
+ (JSC::JIT::emitJumpIfImmediateInteger):
+ (JSC::JIT::emitJumpIfNotImmediateInteger):
+ (JSC::JIT::emitFastArithIntToImmNoCheck):
+
+2009-01-16 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Add support to x86-64 JIT for inline double precision arithmetic ops.
+ +5/6% on x86-64, JIT enabled, sunspider.
+
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::addPtr):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::movq_rr):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_pre_inc):
+ (JSC::JIT::compileBinaryArithOp):
+ (JSC::JIT::compileBinaryArithOpSlowCase):
+ (JSC::JIT::compileFastArith_op_add):
+ (JSC::JIT::compileFastArithSlow_op_add):
+ (JSC::JIT::compileFastArith_op_mul):
+ (JSC::JIT::compileFastArithSlow_op_mul):
+ (JSC::JIT::compileFastArith_op_sub):
+ (JSC::JIT::compileFastArithSlow_op_sub):
+ * parser/ResultType.h:
+ (JSC::ResultType::isReusable):
+ (JSC::ResultType::isInt32):
+ (JSC::ResultType::definitelyIsNumber):
+ (JSC::ResultType::mightBeNumber):
+ (JSC::ResultType::isNotNumber):
+ (JSC::ResultType::unknownType):
+
+2009-01-16 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Fixes for SamplingTool.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23390
+
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::storePtr):
+ * bytecode/SamplingTool.cpp:
+ (JSC::SamplingTool::run):
+ (JSC::SamplingTool::dump):
+ * bytecode/SamplingTool.h:
+ (JSC::SamplingTool::encodeSample):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompile):
+ * jit/JIT.h:
+ (JSC::JIT::samplingToolTrackCodeBlock):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitCTICall_internal):
+
+2009-01-16 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fixed <rdar://problem/6452301> REGRESSION: Latest WebKit nightlies
+ turn "c" into "" when stripping \\c_ character
+
+ * wrec/WRECParser.cpp:
+ (JSC::WREC::Parser::consumeEscape): Mimic a Firefox quirk when parsing
+ control escapes inside character classes.
+
+2009-01-16 Adam Roben <aroben@apple.com>
+
+ Windows build fix
+
+ * wrec/WRECParser.cpp:
+ (JSC::WREC::Parser::parseParentheses): Removed unreachable code.
+
+2009-01-15 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Fixed <rdar://problem/6471394> REGRESSION (r39164): Discarding quantifier
+ on assertion gives incorrect result (23075)
+
+ https://bugs.webkit.org/show_bug.cgi?id=23075
+
+ * pcre/pcre_compile.cpp:
+ (compileBranch): Throw away an assertion if it's followed by a quantifier
+ with a 0 minimum, to match SpiderMonkey, v8, and the ECMA spec.
+
+ * wrec/WRECParser.cpp:
+ (JSC::WREC::Parser::parseParentheses): Fall back on PCRE for the rare
+ case of an assertion with a quantifier with a 0 minimum, since we
+ don't handle quantified subexpressions yet, and in this special case,
+ we can't just throw away the quantifier.
+
+2009-01-15 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Add support in ResultType to track that the results of bitops
+ are always of type int32_t.
+
+ * parser/Nodes.cpp:
+ (JSC::ReadModifyResolveNode::emitBytecode):
+ (JSC::ReadModifyDotNode::emitBytecode):
+ (JSC::ReadModifyBracketNode::emitBytecode):
+ * parser/Nodes.h:
+ (JSC::ExpressionNode::):
+ (JSC::BooleanNode::):
+ (JSC::NumberNode::):
+ (JSC::StringNode::):
+ (JSC::PrePostResolveNode::):
+ (JSC::TypeOfResolveNode::):
+ (JSC::TypeOfValueNode::):
+ (JSC::UnaryPlusNode::):
+ (JSC::NegateNode::):
+ (JSC::BitwiseNotNode::):
+ (JSC::LogicalNotNode::):
+ (JSC::MultNode::):
+ (JSC::DivNode::):
+ (JSC::ModNode::):
+ (JSC::SubNode::):
+ (JSC::LeftShiftNode::):
+ (JSC::RightShiftNode::):
+ (JSC::UnsignedRightShiftNode::):
+ (JSC::LessNode::):
+ (JSC::GreaterNode::):
+ (JSC::LessEqNode::):
+ (JSC::GreaterEqNode::):
+ (JSC::InstanceOfNode::):
+ (JSC::EqualNode::):
+ (JSC::NotEqualNode::):
+ (JSC::StrictEqualNode::):
+ (JSC::NotStrictEqualNode::):
+ (JSC::BitAndNode::):
+ (JSC::BitOrNode::):
+ (JSC::BitXOrNode::):
+ (JSC::LogicalOpNode::):
+ * parser/ResultType.h:
+ (JSC::ResultType::isInt32):
+ (JSC::ResultType::isNotNumber):
+ (JSC::ResultType::booleanType):
+ (JSC::ResultType::numberType):
+ (JSC::ResultType::numberTypeCanReuse):
+ (JSC::ResultType::numberTypeCanReuseIsInt32):
+ (JSC::ResultType::stringOrNumberTypeCanReuse):
+ (JSC::ResultType::stringType):
+ (JSC::ResultType::unknownType):
+ (JSC::ResultType::forAdd):
+ (JSC::ResultType::forBitOp):
+ (JSC::OperandTypes::OperandTypes):
+
+2009-01-15 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Add support for integer addition, subtraction and multiplication
+ in JIT code on x86-64.
+
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::mul32):
+ (JSC::MacroAssembler::sub32):
+ (JSC::MacroAssembler::joMul32):
+ (JSC::MacroAssembler::joSub32):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_add):
+ (JSC::JIT::compileFastArithSlow_op_add):
+ (JSC::JIT::compileFastArith_op_mul):
+ (JSC::JIT::compileFastArithSlow_op_mul):
+ (JSC::JIT::compileFastArith_op_sub):
+ (JSC::JIT::compileFastArithSlow_op_sub):
+
+2009-01-15 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ On x86-64 allow JSImmediate to encode 64-bit double precision values.
+ This patch only affects builds that set USE(ALTERNATE_JSIMMEDIATE).
+ Updates the implementation of JSValuePtr:: and JSImmediate:: methods
+ that operate on neumeric values to be be aware of the new representation.
+ When this representation is in use, the class JSNumberCell is redundant
+ and is compiled out.
+
+ The format of the new immediate representation is documented in JSImmediate.h.
+
+ * JavaScriptCore.exp:
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::subPtr):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::):
+ (JSC::X86Assembler::subq_rr):
+ (JSC::X86Assembler::movq_rr):
+ (JSC::X86Assembler::ucomisd_rr):
+ (JSC::X86Assembler::X86InstructionFormatter::twoByteOp64):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::cti_op_stricteq):
+ (JSC::Interpreter::cti_op_nstricteq):
+ * jit/JIT.cpp:
+ (JSC::JIT::compileOpStrictEq):
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_lshift):
+ (JSC::JIT::compileFastArith_op_rshift):
+ (JSC::JIT::compileFastArith_op_bitand):
+ (JSC::JIT::compileFastArith_op_mod):
+ (JSC::JIT::compileFastArith_op_add):
+ (JSC::JIT::compileFastArith_op_mul):
+ (JSC::JIT::compileFastArith_op_post_inc):
+ (JSC::JIT::compileFastArith_op_post_dec):
+ (JSC::JIT::compileFastArith_op_pre_inc):
+ (JSC::JIT::compileFastArith_op_pre_dec):
+ (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
+ (JSC::JIT::compileBinaryArithOp):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitJumpIfBothJSCells):
+ (JSC::JIT::emitJumpIfEitherNumber):
+ (JSC::JIT::emitJumpIfNotEitherNumber):
+ (JSC::JIT::emitJumpIfImmediateIntegerNumber):
+ (JSC::JIT::emitJumpIfNotImmediateIntegerNumber):
+ (JSC::JIT::emitJumpIfNotImmediateIntegerNumbers):
+ (JSC::JIT::emitJumpSlowCaseIfNotImmediateIntegerNumber):
+ (JSC::JIT::emitJumpSlowCaseIfNotImmediateIntegerNumbers):
+ (JSC::JIT::emitFastArithDeTagImmediate):
+ (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
+ (JSC::JIT::emitFastArithReTagImmediate):
+ (JSC::JIT::emitFastArithIntToImmNoCheck):
+ * runtime/JSCell.h:
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSImmediate.cpp:
+ (JSC::JSImmediate::toThisObject):
+ (JSC::JSImmediate::toObject):
+ (JSC::JSImmediate::toString):
+ * runtime/JSImmediate.h:
+ (JSC::wtf_reinterpret_cast):
+ (JSC::JSImmediate::isNumber):
+ (JSC::JSImmediate::isIntegerNumber):
+ (JSC::JSImmediate::isDoubleNumber):
+ (JSC::JSImmediate::isPositiveIntegerNumber):
+ (JSC::JSImmediate::areBothImmediateIntegerNumbers):
+ (JSC::JSImmediate::makeInt):
+ (JSC::JSImmediate::makeDouble):
+ (JSC::JSImmediate::doubleValue):
+ (JSC::doubleToBoolean):
+ (JSC::JSImmediate::toBoolean):
+ (JSC::JSImmediate::getTruncatedUInt32):
+ (JSC::JSImmediate::makeOutOfIntegerRange):
+ (JSC::JSImmediate::from):
+ (JSC::JSImmediate::getTruncatedInt32):
+ (JSC::JSImmediate::toDouble):
+ (JSC::JSImmediate::getUInt32):
+ (JSC::JSValuePtr::isInt32Fast):
+ (JSC::JSValuePtr::isUInt32Fast):
+ (JSC::JSValuePtr::areBothInt32Fast):
+ (JSC::JSFastMath::canDoFastBitwiseOperations):
+ (JSC::JSFastMath::xorImmediateNumbers):
+ (JSC::JSFastMath::canDoFastRshift):
+ (JSC::JSFastMath::canDoFastUrshift):
+ (JSC::JSFastMath::rightShiftImmediateNumbers):
+ (JSC::JSFastMath::canDoFastAdditiveOperations):
+ (JSC::JSFastMath::addImmediateNumbers):
+ (JSC::JSFastMath::subImmediateNumbers):
+ * runtime/JSNumberCell.cpp:
+ (JSC::jsNumberCell):
+ * runtime/JSNumberCell.h:
+ (JSC::createNumberStructure):
+ (JSC::isNumberCell):
+ (JSC::asNumberCell):
+ (JSC::jsNumber):
+ (JSC::JSValuePtr::isDoubleNumber):
+ (JSC::JSValuePtr::getDoubleNumber):
+ (JSC::JSValuePtr::isNumber):
+ (JSC::JSValuePtr::uncheckedGetNumber):
+ (JSC::jsNaN):
+ (JSC::JSValuePtr::getNumber):
+ (JSC::JSValuePtr::numberToInt32):
+ (JSC::JSValuePtr::numberToUInt32):
+ * runtime/JSValue.h:
+ * runtime/NumberConstructor.cpp:
+ (JSC::numberConstructorNegInfinity):
+ (JSC::numberConstructorPosInfinity):
+ (JSC::numberConstructorMaxValue):
+ (JSC::numberConstructorMinValue):
+ * runtime/NumberObject.cpp:
+ (JSC::constructNumber):
+ * runtime/NumberObject.h:
+ * runtime/Operations.h:
+ (JSC::JSValuePtr::equal):
+ (JSC::JSValuePtr::equalSlowCaseInline):
+ (JSC::JSValuePtr::strictEqual):
+ (JSC::JSValuePtr::strictEqualSlowCaseInline):
+ * wtf/Platform.h:
+
+2009-01-15 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ <rdar://problem/6045018>
+ REGRESSION (r34838): JavaScript objects appear to be leaked after loading google.com
+
+ Subtract the number of JSStrings cached in SmallStrings when calculating the
+ number of live JSObjects.
+
+ * runtime/Collector.cpp:
+ (JSC::Heap::objectCount):
+ * runtime/SmallStrings.cpp:
+ (JSC::SmallStrings::count):
+ * runtime/SmallStrings.h:
+
+2009-01-15 Sam Weinig <sam@webkit.org>
+
+ Fix Qt build.
+
+ * runtime/Collector.cpp:
+
+2009-01-15 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Gavin Barraclough.
+
+ Fix crash seen running fast/canvas.
+
+ Make sure to mark the ScopeNode and CodeBlock being created
+ in the re-parse for exception information.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
+ * parser/Nodes.h:
+ (JSC::ScopeNode::mark):
+ * runtime/Collector.cpp:
+ (JSC::Heap::collect):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSGlobalData.h:
+
+2009-01-15 Craig Schlenter <craig.schlenter@gmail.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23347
+ Compilation of JavaScriptCore/wtf/ThreadingPthreads.cpp fails on Linux
+
+ * wtf/ThreadingPthreads.cpp: included limits.h as INT_MAX is defined there.
+
+2009-01-15 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Bug 23225: REGRESSION: Assertion failure in reparseInPlace() (m_sourceElements) at sfgate.com
+ <https://bugs.webkit.org/show_bug.cgi?id=23225> <rdar://problem/6487432>
+
+ Character position for open and closing brace was incorrectly referencing m_position to
+ record their position in a source document, however this is unsafe as BOMs may lead to
+ m_position being an arbitrary position from the real position of the current character.
+
+ * parser/Lexer.cpp:
+ (JSC::Lexer::matchPunctuator):
+
+2009-01-14 David Kilzer <ddkilzer@apple.com>
+
+ Bug 23153: JSC build always touches JavaScriptCore/docs/bytecode.html
+
+ <https://bugs.webkit.org/show_bug.cgi?id=23153>
+
+ Reviewed by Darin Adler.
+
+ Instead of building bytecode.html into ${SRCROOT}/docs/bytecode.html, build it
+ into ${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore/docs/bytecode.html.
+
+ Also fixes make-bytecode-docs.pl to actually generate documentation.
+
+ * DerivedSources.make: Changed bytecode.html to be built into local docs
+ directory in ${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Added "/docs" to the end of the
+ "mkdir -p" command so that the docs subdirectory is automatically created.
+ * docs/make-bytecode-docs.pl: Changed BEGIN_OPCODE to DEFINE_OPCODE so that
+ documentation is actually generated.
+
+2009-01-14 Adam Treat <adam.treat@torchmobile.com>
+
+ Build fix for Qt from Dmitry Titov.
+
+ * wtf/ThreadingQt.cpp:
+ (WTF::ThreadCondition::timedWait):
+
+2009-01-14 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Bug 22903: REGRESSION (r36267): visiting this site reliably crashes WebKit nightly
+
+ EvalCodeBlock's do not reference the functions that are declared inside the eval
+ code, this means that simply marking the EvalCodeBlock through the global object
+ is insufficient to mark the declared functions. This patch corrects this by
+ explicitly marking the CodeBlocks of all the functions declared in the cached
+ EvalNode.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::mark):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::hasFunctions):
+ * bytecode/EvalCodeCache.h:
+ (JSC::EvalCodeCache::mark):
+ * parser/Nodes.cpp:
+ (JSC::ScopeNodeData::mark):
+ (JSC::EvalNode::mark):
+ * parser/Nodes.h:
+
+2009-01-14 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23312
+ Implement MessageQueue::waitForMessageTimed()
+ Also fixed ThreadCondition::timedWait() to take absolute time, as discussed on webkit-dev.
+ Win32 version of timedWait still has to be implemented.
+
+ * wtf/MessageQueue.h:
+ (WTF::MessageQueueWaitResult: new enum for the result of MessageQueue::waitForMessageTimed.
+ (WTF::MessageQueue::waitForMessage):
+ (WTF::MessageQueue::waitForMessageTimed): New method.
+ * wtf/Threading.h:
+ * wtf/ThreadingGtk.cpp:
+ (WTF::ThreadCondition::timedWait): changed to use absolute time instead of interval.
+ * wtf/ThreadingNone.cpp:
+ (WTF::ThreadCondition::timedWait): ditto.
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::ThreadCondition::timedWait): ditto.
+ * wtf/ThreadingQt.cpp:
+ (WTF::ThreadCondition::timedWait): ditto.
+ * wtf/ThreadingWin.cpp:
+ (WTF::ThreadCondition::timedWait): ditto. The actual Win32 code is still to be implemented.
+
+2009-01-14 Dean McNamee <deanm@chromium.org>
+
+ Reviewed by Darin Adler and Oliver hunt.
+
+ Correctly match allocation functions by implementing a custom deref().
+
+ https://bugs.webkit.org/show_bug.cgi?id=23315
+
+ * runtime/ByteArray.h:
+ (JSC::ByteArray::deref):
+ (JSC::ByteArray::ByteArray):
+
+2009-01-14 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - update copyright
+
+ * Info.plist:
+
+2009-01-13 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Darin Adler and Oliver Hunt.
+
+ <rdar://problem/6489314> REGRESSION: Business widget's front side
+ fails to render correctly when flipping widget
+
+ The problem here is that parseInt was parsing NaN as 0. This patch
+ corrects that by parsing NaN as NaN. This matches our old behavior
+ and Firefox.
+
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncParseInt):
+
+2009-01-13 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for: https://bugs.webkit.org/show_bug.cgi?id=23292
+
+ Implementation of two argument canDoFastAdditiveOperations does not correlate well with reality.
+
+ * runtime/JSImmediate.h:
+ (JSC::JSFastMath::canDoFastAdditiveOperations):
+
+2009-01-13 Zalan Bujtas <zbujtas@gmail.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23290
+ Fix JSImmediate::isImmediate(src) to !src->isCell()
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+
+2009-01-13 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23281
+ Fix the Chromium Win build.
+ Need to use PLATFORM(WIN_OS) instead of PLATFORM(WIN).
+ Moved GTK and WX up in #if sequence because they could come with WIN_OS too,
+ while they have their own implementation even on Windows.
+
+ * wtf/CurrentTime.cpp:
+ (WTF::currentTime):
+
+2009-01-12 Gavin Barraclough <barraclough@apple.com>
Reviewed by Oliver Hunt.
+ Make the JSImmediate interface private.
+
+ All manipulation of JS values should be through the JSValuePtr class, not by using JSImmediate
+ directly. The key missing methods on JSValuePtr are:
+
+ * isCell() - check for values that are JSCell*s, and as such where asCell() may be used.
+ * isInt32Fast() getInt32Fast() - fast check/access for integer immediates.
+ * isUInt32Fast() getUInt32Fast() - ditto for unsigned integer immediates.
+
+ The JIT is allowed full access to JSImmediate, since it needs to be able to directly
+ manipulate JSValuePtrs. The Interpreter is provided access to perform operations directly
+ on JSValuePtrs through the new JSFastMath interface.
+
+ No performance impact.
+
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::toNumber):
+ * API/JSValueRef.cpp:
+ (JSValueIsEqual):
+ (JSValueIsStrictEqual):
+ * JavaScriptCore.exp:
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::isKnownNotImmediate):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::keyForImmediateSwitch):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue):
+ (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue):
+ * interpreter/Interpreter.cpp:
+ (JSC::jsLess):
+ (JSC::jsLessEq):
+ (JSC::jsAdd):
+ (JSC::jsIsObjectType):
+ (JSC::cachePrototypeChain):
+ (JSC::Interpreter::tryCachePutByID):
+ (JSC::Interpreter::tryCacheGetByID):
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::tryCTICachePutByID):
+ (JSC::Interpreter::tryCTICacheGetByID):
+ (JSC::Interpreter::cti_op_add):
+ (JSC::Interpreter::cti_op_get_by_id_self_fail):
+ (JSC::Interpreter::cti_op_get_by_id_proto_list):
+ (JSC::Interpreter::cti_op_instanceof):
+ (JSC::Interpreter::cti_op_mul):
+ (JSC::Interpreter::cti_op_get_by_val):
+ (JSC::Interpreter::cti_op_get_by_val_byte_array):
+ (JSC::Interpreter::cti_op_sub):
+ (JSC::Interpreter::cti_op_put_by_val):
+ (JSC::Interpreter::cti_op_put_by_val_array):
+ (JSC::Interpreter::cti_op_put_by_val_byte_array):
+ (JSC::Interpreter::cti_op_negate):
+ (JSC::Interpreter::cti_op_div):
+ (JSC::Interpreter::cti_op_eq):
+ (JSC::Interpreter::cti_op_lshift):
+ (JSC::Interpreter::cti_op_bitand):
+ (JSC::Interpreter::cti_op_rshift):
+ (JSC::Interpreter::cti_op_bitnot):
+ (JSC::Interpreter::cti_op_neq):
+ (JSC::Interpreter::cti_op_urshift):
+ (JSC::Interpreter::cti_op_call_eval):
+ (JSC::Interpreter::cti_op_throw):
+ (JSC::Interpreter::cti_op_is_undefined):
+ (JSC::Interpreter::cti_op_stricteq):
+ (JSC::Interpreter::cti_op_nstricteq):
+ (JSC::Interpreter::cti_op_switch_imm):
+ (JSC::Interpreter::cti_vm_throw):
+ * interpreter/Interpreter.h:
+ (JSC::Interpreter::isJSArray):
+ (JSC::Interpreter::isJSString):
+ (JSC::Interpreter::isJSByteArray):
+ * jit/JIT.cpp:
+ (JSC::JIT::compileOpStrictEq):
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JIT.h:
+ (JSC::JIT::isStrictEqCaseHandledInJITCode):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileFastArith_op_rshift):
+ (JSC::JIT::compileFastArith_op_bitand):
+ (JSC::JIT::compileFastArith_op_mod):
+ * jit/JITCall.cpp:
+ (JSC::JIT::unlinkCall):
+ (JSC::JIT::compileOpCall):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::getConstantOperandImmediateInt):
+ (JSC::JIT::isOperandConstantImmediateInt):
+ * parser/Nodes.cpp:
+ (JSC::processClauseList):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncIndexOf):
+ (JSC::arrayProtoFuncLastIndexOf):
+ * runtime/BooleanPrototype.cpp:
+ (JSC::booleanProtoFuncValueOf):
+ * runtime/Collector.cpp:
+ (JSC::Heap::protect):
+ (JSC::Heap::unprotect):
+ (JSC::Heap::heap):
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::getOwnPropertySlot):
+ * runtime/JSByteArray.h:
+ (JSC::JSByteArray::getIndex):
+ * runtime/JSCell.cpp:
+ * runtime/JSCell.h:
+ (JSC::JSValuePtr::isNumberCell):
+ (JSC::JSValuePtr::asCell):
+ (JSC::JSValuePtr::isNumber):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncParseInt):
+ * runtime/JSImmediate.h:
+ (JSC::js0):
+ (JSC::jsImpossibleValue):
+ (JSC::JSValuePtr::toInt32):
+ (JSC::JSValuePtr::toUInt32):
+ (JSC::JSValuePtr::isCell):
+ (JSC::JSValuePtr::isInt32Fast):
+ (JSC::JSValuePtr::getInt32Fast):
+ (JSC::JSValuePtr::isUInt32Fast):
+ (JSC::JSValuePtr::getUInt32Fast):
+ (JSC::JSValuePtr::makeInt32Fast):
+ (JSC::JSValuePtr::areBothInt32Fast):
+ (JSC::JSFastMath::canDoFastBitwiseOperations):
+ (JSC::JSFastMath::equal):
+ (JSC::JSFastMath::notEqual):
+ (JSC::JSFastMath::andImmediateNumbers):
+ (JSC::JSFastMath::xorImmediateNumbers):
+ (JSC::JSFastMath::orImmediateNumbers):
+ (JSC::JSFastMath::canDoFastRshift):
+ (JSC::JSFastMath::canDoFastUrshift):
+ (JSC::JSFastMath::rightShiftImmediateNumbers):
+ (JSC::JSFastMath::canDoFastAdditiveOperations):
+ (JSC::JSFastMath::addImmediateNumbers):
+ (JSC::JSFastMath::subImmediateNumbers):
+ (JSC::JSFastMath::incImmediateNumber):
+ (JSC::JSFastMath::decImmediateNumber):
+ * runtime/JSNumberCell.h:
+ (JSC::JSValuePtr::asNumberCell):
+ (JSC::jsNumber):
+ (JSC::JSValuePtr::uncheckedGetNumber):
+ (JSC::JSNumberCell::toInt32):
+ (JSC::JSNumberCell::toUInt32):
+ (JSC::JSValuePtr::toJSNumber):
+ (JSC::JSValuePtr::getNumber):
+ (JSC::JSValuePtr::numberToInt32):
+ (JSC::JSValuePtr::numberToUInt32):
+ * runtime/JSObject.h:
+ (JSC::JSValuePtr::isObject):
+ (JSC::JSValuePtr::get):
+ (JSC::JSValuePtr::put):
+ * runtime/JSValue.cpp:
+ (JSC::JSValuePtr::toInteger):
+ (JSC::JSValuePtr::toIntegerPreserveNaN):
+ * runtime/JSValue.h:
+ * runtime/Operations.cpp:
+ (JSC::JSValuePtr::equalSlowCase):
+ (JSC::JSValuePtr::strictEqualSlowCase):
+ * runtime/Operations.h:
+ (JSC::JSValuePtr::equal):
+ (JSC::JSValuePtr::equalSlowCaseInline):
+ (JSC::JSValuePtr::strictEqual):
+ (JSC::JSValuePtr::strictEqualSlowCaseInline):
+ * runtime/Protect.h:
+ (JSC::gcProtect):
+ (JSC::gcUnprotect):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncCharAt):
+ (JSC::stringProtoFuncCharCodeAt):
+ * runtime/Structure.cpp:
+ (JSC::Structure::createCachedPrototypeChain):
+
+2009-01-12 Kevin Ollivier <kevino@theolliviers.com>
+
+ Since date time functions have moved here, now the wx port JSC
+ needs to depend on wx.
+
+ * jscore.bkl:
+
+2009-01-11 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23245
+
+ Add initializeThreading to key places in JS API to ensure that
+ UString is properly initialized.
+
+ * API/JSContextRef.cpp:
+ (JSContextGroupCreate):
+ (JSGlobalContextCreate):
+ * API/JSObjectRef.cpp:
+ (JSClassCreate):
+ * API/JSStringRef.cpp:
+ (JSStringCreateWithCharacters):
+ (JSStringCreateWithUTF8CString):
+ * API/JSStringRefCF.cpp:
+ (JSStringCreateWithCFString):
+
+2009-01-11 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23175
+
+ Separate out BaseString information from UString::Rep and make all baseString access go through
+ a member function, so that it may be used for something else (in the future) in the BaseString
+ case.
+
+ * runtime/SmallStrings.cpp:
+ (JSC::SmallStringsStorage::rep):
+ (JSC::SmallStringsStorage::SmallStringsStorage):
+ (JSC::SmallStrings::SmallStrings):
+ (JSC::SmallStrings::mark):
+ Adjust to account for the changes in UString and put the UString in place in
+ SmallStringsStorage to aid in locality of reference among the UChar[] and UString::Rep's.
+
+ * runtime/SmallStrings.h:
+ * runtime/UString.cpp:
+ (JSC::initializeStaticBaseString):
+ (JSC::initializeUString):
+ (JSC::UString::Rep::create):
+ (JSC::UString::Rep::destroy):
+ (JSC::UString::Rep::checkConsistency):
+ (JSC::expandCapacity):
+ (JSC::UString::expandPreCapacity):
+ (JSC::concatenate):
+ (JSC::UString::append):
+ (JSC::UString::operator=):
+ * runtime/UString.h:
+ (JSC::UString::Rep::baseIsSelf):
+ (JSC::UString::Rep::setBaseString):
+ (JSC::UString::Rep::baseString):
+ (JSC::UString::Rep::):
+ (JSC::UString::Rep::null):
+ (JSC::UString::Rep::empty):
+ (JSC::UString::Rep::data):
+ (JSC::UString::cost):
+ Separate out the items out used by base strings from those used in Rep's that only
+ point to base strings. (This potentially saves 24 bytes per Rep.)
+
+2009-01-11 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 23239: improve handling of unused arguments in JavaScriptCore
+ https://bugs.webkit.org/show_bug.cgi?id=23239
+
+ * runtime/DatePrototype.cpp: Moved LocaleDateTimeFormat enum outside #if
+ so we can use this on all platforms. Changed valueOf to share the same
+ function with getTime, since the contents of the two are identical. Removed
+ a FIXME since the idea isn't really specific enough or helpful enough to
+ need to sit here in the source code.
+ (JSC::formatLocaleDate): Changed the Mac version of this function to take
+ the same arguments as the non-Mac version so the caller doesn't have to
+ special-case the two platforms. Also made the formatString array be const;
+ before the characters were, but the array was a modifiable global variable.
+ (JSC::dateProtoFuncToLocaleString): Changed to call the new unified
+ version of formatLocaleDate and remove the ifdef.
+ (JSC::dateProtoFuncToLocaleDateString): Ditto.
+ (JSC::dateProtoFuncToLocaleTimeString): Ditto.
+
+ * runtime/JSNotAnObject.cpp:
+ (JSC::JSNotAnObject::toObject): Use the new ASSERT_UNUSED instead of the
+ old UNUSED_PARAM.
+
+ * runtime/RegExp.cpp:
+ (JSC::RegExp::RegExp): Changed to only use UNUSED_PARAM when the parameter
+ is actually unused.
+
+ * wtf/TCSystemAlloc.cpp:
+ (TCMalloc_SystemRelease): Changed to only use UNUSED_PARAM when the parameter
+ is actually unused.
+ (TCMalloc_SystemCommit): Changed to omit the argument names instead of using
+ UNUSED_PARAM.
+
+2009-01-11 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ Fix the build (whoops)
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::cti_op_get_by_val):
+
+2009-01-11 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Darin Adler and Anders Carlsson
+
+ Bug 23128: get/put_by_val need to respecialise in the face of ByteArray
+
+ Restructure the code slightly, and add comments per Darin's suggestions
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::cti_op_get_by_val):
+ (JSC::Interpreter::cti_op_get_by_val_byte_array):
+ (JSC::Interpreter::cti_op_put_by_val):
+ (JSC::Interpreter::cti_op_put_by_val_byte_array):
+
+2009-01-11 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ Whoops, I accidentally removed an exception check from fast the
+ fast path for string indexing when i originally landed the
+ byte array logic.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::cti_op_get_by_val):
+
+2009-01-11 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ Bug 23128: get/put_by_val need to respecialise in the face of ByteArray
+ <https://bugs.webkit.org/show_bug.cgi?id=23128>
+
+ Fairly simple patch, add specialised versions of cti_op_get/put_by_val
+ that assume ByteArray, thus avoiding a few branches in the case of bytearray
+ manipulation.
+
+ No effect on SunSpider. 15% win on the original testcase.
+
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::cti_op_get_by_val):
+ (JSC::Interpreter::cti_op_get_by_val_byte_array):
+ (JSC::Interpreter::cti_op_put_by_val):
+ (JSC::Interpreter::cti_op_put_by_val_byte_array):
+ * interpreter/Interpreter.h:
+
+2009-01-11 Alexey Proskuryakov <ap@webkit.org>
+
+ Try to fix Windows build.
+
+ * wtf/CurrentTime.cpp: Added a definition of msPerSecond (previously, this code was in
+ DateMath.cpp, with constant definition in DateTime.h)
+
+2009-01-11 Alexey Proskuryakov <ap@webkit.org>
+
+ Try to fix Windows build.
+
+ * wtf/CurrentTime.cpp: Include <sys/types.h> and <sys/timeb.h>, as MSDN says to.
+
+2009-01-11 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23207
+ Moved currentTime() to from WebCore to WTF.
+
+ * GNUmakefile.am:
+ * JavaScriptCore.exp: added export for WTF::currentTime()
+ * JavaScriptCore.pri:
+ * JavaScriptCore.scons:
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * JavaScriptCoreSources.bkl:
+ * runtime/DateMath.cpp:
+ (JSC::getCurrentUTCTimeWithMicroseconds): This function had another implementation of currentTime(), essentially. Now uses WTF version.
+ * wtf/CurrentTime.cpp: Added.
+ (WTF::currentTime):
+ (WTF::highResUpTime):
+ (WTF::lowResUTCTime):
+ (WTF::qpcAvailable):
+ * wtf/CurrentTime.h: Added.
+
+2009-01-09 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Stage two of converting JSValue from a pointer to a class type.
+ Remove the class JSValue. The functionallity has been transitioned
+ into the wrapper class type JSValuePtr.
+
+ The last stage will be to rename JSValuePtr to JSValue, remove the
+ overloaded -> operator, and switch operations on JSValuePtrs from
+ using '->' to use '.' instead.
+
+ * API/APICast.h:
+ * JavaScriptCore.exp:
+ * runtime/JSCell.h:
+ (JSC::asCell):
+ (JSC::JSValuePtr::asCell):
+ (JSC::JSValuePtr::isNumber):
+ (JSC::JSValuePtr::isString):
+ (JSC::JSValuePtr::isGetterSetter):
+ (JSC::JSValuePtr::isObject):
+ (JSC::JSValuePtr::getNumber):
+ (JSC::JSValuePtr::getString):
+ (JSC::JSValuePtr::getObject):
+ (JSC::JSValuePtr::getCallData):
+ (JSC::JSValuePtr::getConstructData):
+ (JSC::JSValuePtr::getUInt32):
+ (JSC::JSValuePtr::getTruncatedInt32):
+ (JSC::JSValuePtr::getTruncatedUInt32):
+ (JSC::JSValuePtr::mark):
+ (JSC::JSValuePtr::marked):
+ (JSC::JSValuePtr::toPrimitive):
+ (JSC::JSValuePtr::getPrimitiveNumber):
+ (JSC::JSValuePtr::toBoolean):
+ (JSC::JSValuePtr::toNumber):
+ (JSC::JSValuePtr::toString):
+ (JSC::JSValuePtr::toObject):
+ (JSC::JSValuePtr::toThisObject):
+ (JSC::JSValuePtr::needsThisConversion):
+ (JSC::JSValuePtr::toThisString):
+ (JSC::JSValuePtr::getJSNumber):
+ * runtime/JSImmediate.h:
+ (JSC::JSValuePtr::isUndefined):
+ (JSC::JSValuePtr::isNull):
+ (JSC::JSValuePtr::isUndefinedOrNull):
+ (JSC::JSValuePtr::isBoolean):
+ (JSC::JSValuePtr::getBoolean):
+ (JSC::JSValuePtr::toInt32):
+ (JSC::JSValuePtr::toUInt32):
+ * runtime/JSNumberCell.h:
+ (JSC::JSValuePtr::uncheckedGetNumber):
+ (JSC::JSValuePtr::toJSNumber):
+ * runtime/JSObject.h:
+ (JSC::JSValuePtr::isObject):
+ (JSC::JSValuePtr::get):
+ (JSC::JSValuePtr::put):
+ * runtime/JSString.h:
+ (JSC::JSValuePtr::toThisJSString):
+ * runtime/JSValue.cpp:
+ (JSC::JSValuePtr::toInteger):
+ (JSC::JSValuePtr::toIntegerPreserveNaN):
+ (JSC::JSValuePtr::toInt32SlowCase):
+ (JSC::JSValuePtr::toUInt32SlowCase):
+ * runtime/JSValue.h:
+ (JSC::JSValuePtr::makeImmediate):
+ (JSC::JSValuePtr::immediateValue):
+ (JSC::JSValuePtr::JSValuePtr):
+ (JSC::JSValuePtr::operator->):
+ (JSC::JSValuePtr::operator bool):
+ (JSC::JSValuePtr::operator==):
+ (JSC::JSValuePtr::operator!=):
+ (JSC::JSValuePtr::encode):
+ (JSC::JSValuePtr::decode):
+ (JSC::JSValuePtr::toFloat):
+ (JSC::JSValuePtr::asValue):
+ (JSC::operator==):
+ (JSC::operator!=):
+
+2009-01-09 David Levin <levin@chromium.org>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23175
+
+ Adjustment to previous patch. Remove call to initilizeThreading from JSGlobalCreate
+ and fix jsc.cpp instead.
+
+ * jsc.cpp:
+ (main):
+ (jscmain):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::create):
+
+2009-01-09 Sam Weinig <sam@webkit.org>
+
+ Roll r39720 back in with a working interpreted mode.
+
+2009-01-09 David Levin <levin@chromium.org>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23175
+
+ Added a template to make the pointer and flags combination
+ in UString more readable and less error prone.
+
+ * GNUmakefile.am:
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ Added PtrAndFlags.h (and sorted the xcode project file).
+
+ * runtime/Identifier.cpp:
+ (JSC::Identifier::add):
+ (JSC::Identifier::addSlowCase):
+ * runtime/InitializeThreading.cpp:
+ (JSC::initializeThreadingOnce):
+ Made the init threading initialize the UString globals. Before
+ these were initilized using {} but that became harder due to the
+ addition of this tempalte class.
+
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::create):
+ * runtime/PropertyNameArray.cpp:
+ (JSC::PropertyNameArray::add):
+ * runtime/UString.cpp:
+ (JSC::initializeStaticBaseString):
+ (JSC::initializeUString):
+ (JSC::UString::Rep::create):
+ (JSC::UString::Rep::createFromUTF8):
+ (JSC::createRep):
+ (JSC::UString::UString):
+ (JSC::concatenate):
+ (JSC::UString::operator=):
+ (JSC::UString::makeNull):
+ (JSC::UString::nullRep):
+ * runtime/UString.h:
+ (JSC::UString::Rep::identifierTable):
+ (JSC::UString::Rep::setIdentifierTable):
+ (JSC::UString::Rep::isStatic):
+ (JSC::UString::Rep::setStatic):
+ (JSC::UString::Rep::):
+ (JSC::UString::Rep::null):
+ (JSC::UString::Rep::empty):
+ (JSC::UString::isNull):
+ (JSC::UString::null):
+ (JSC::UString::UString):
+
+ * wtf/PtrAndFlags.h: Added.
+ (WTF::PtrAndFlags::PtrAndFlags):
+ (WTF::PtrAndFlags::isFlagSet):
+ (WTF::PtrAndFlags::setFlag):
+ (WTF::PtrAndFlags::clearFlag):
+ (WTF::PtrAndFlags::get):
+ (WTF::PtrAndFlags::set):
+ A simple way to layer together a pointer and 2 flags. It relies on the pointer being 4 byte aligned,
+ which should happen for all allocators (due to aligning pointers, int's, etc. on 4 byte boundaries).
+
+2009-01-08 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by -O-l-i-v-e-r- -H-u-n-t- Sam Weinig (sorry, Sam!).
+
Encode immediates in the low word of JSValuePtrs, on x86-64.
On 32-bit platforms a JSValuePtr may represent a 31-bit signed integer.
diff --git a/src/3rdparty/webkit/JavaScriptCore/DerivedSources.make b/src/3rdparty/webkit/JavaScriptCore/DerivedSources.make
index 865ba7c..4b33682 100644
--- a/src/3rdparty/webkit/JavaScriptCore/DerivedSources.make
+++ b/src/3rdparty/webkit/JavaScriptCore/DerivedSources.make
@@ -1,4 +1,4 @@
-# Copyright (C) 2006, 2007, 2008 2009 Apple Inc. All rights reserved.
+# Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -46,7 +46,7 @@ all : \
RegExpConstructor.lut.h \
RegExpObject.lut.h \
StringPrototype.lut.h \
- $(JavaScriptCore)/docs/bytecode.html \
+ docs/bytecode.html \
#
# lookup tables for classes
@@ -71,5 +71,5 @@ Grammar.cpp: Grammar.y
chartables.c : dftables
$^ $@
-$(JavaScriptCore)/docs/bytecode.html: make-bytecode-docs.pl Interpreter.cpp
+docs/bytecode.html: make-bytecode-docs.pl Interpreter.cpp
perl $^ $@
diff --git a/src/3rdparty/webkit/JavaScriptCore/Info.plist b/src/3rdparty/webkit/JavaScriptCore/Info.plist
index 55537af..17949b0 100644
--- a/src/3rdparty/webkit/JavaScriptCore/Info.plist
+++ b/src/3rdparty/webkit/JavaScriptCore/Info.plist
@@ -7,7 +7,7 @@
<key>CFBundleExecutable</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleGetInfoString</key>
- <string>${BUNDLE_VERSION}, Copyright 2003-2007 Apple Inc.; Copyright 1999-2001 Harri Porten &lt;porten@kde.org&gt;; Copyright 2001 Peter Kelly &lt;pmk@post.com&gt;; Copyright 1997-2005 University of Cambridge; Copyright 1991, 2000, 2001 by Lucent Technologies.</string>
+ <string>${BUNDLE_VERSION}, Copyright 2003-2009 Apple Inc.; Copyright 1999-2001 Harri Porten &lt;porten@kde.org&gt;; Copyright 2001 Peter Kelly &lt;pmk@post.com&gt;; Copyright 1997-2005 University of Cambridge; Copyright 1991, 2000, 2001 by Lucent Technologies.</string>
<key>CFBundleIdentifier</key>
<string>com.apple.${PRODUCT_NAME}</string>
<key>CFBundleInfoDictionaryVersion</key>
diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.order b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.order
index 9f7cb30..bb56e98 100644
--- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.order
+++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.order
@@ -1,1526 +1,1965 @@
__ZN3WTF10fastMallocEm
+__ZN3WTF10fastMallocILb1EEEPvm
__ZN3WTF20TCMalloc_ThreadCache10InitModuleEv
-__ZN3WTF15InitSizeClassesEv
+__ZN3WTFL15InitSizeClassesEv
__Z20TCMalloc_SystemAllocmPmm
-__ZN3WTF17TCMalloc_PageHeap4initEv
+__ZN3WTFL13MetaDataAllocEm
__ZN3WTF20TCMalloc_ThreadCache22CreateCacheIfNecessaryEv
__ZN3WTF25TCMalloc_Central_FreeList11RemoveRangeEPPvS2_Pi
__ZN3WTF25TCMalloc_Central_FreeList18FetchFromSpansSafeEv
__ZN3WTF17TCMalloc_PageHeap10AllocLargeEm
__ZN3WTF17TCMalloc_PageHeap8GrowHeapEm
-__ZN3WTF13MetaDataAllocEm
-__ZN3WTF17TCMalloc_PageHeap19IncrementalScavengeEm
+__ZN3WTF19initializeThreadingEv
+__ZN3WTF20initializeMainThreadEv
+__ZN3WTF5MutexC1Ev
+__ZN3WTF28initializeMainThreadPlatformEv
+__ZN3WTF36lockAtomicallyInitializedStaticMutexEv
__ZN3WTF8fastFreeEPv
+__ZN3WTF38unlockAtomicallyInitializedStaticMutexEv
+__ZN3JSC19initializeThreadingEv
+__ZN3JSCL23initializeThreadingOnceEv
+__ZN3JSC17initializeUStringEv
+__ZN3JSC12initDateMathEv
+__ZN3WTF11currentTimeEv
+__ZN3WTF15ThreadConditionC1Ev
+__ZN3WTF5Mutex4lockEv
+__ZN3WTF5Mutex6unlockEv
+__ZN3WTF12createThreadEPFPvS0_ES0_PKc
+__ZN3WTF20createThreadInternalEPFPvS0_ES0_PKc
+__ZN3WTFL35establishIdentifierForPthreadHandleERP17_opaque_pthread_t
+__ZN3WTF9HashTableIjSt4pairIjP17_opaque_pthread_tENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTrai
+__ZN3WTFL16threadEntryPointEPv
__ZN3WTF16fastZeroedMallocEm
+__ZN3WTF21setThreadNameInternalEPKc
+__ZN3WTF5MutexD1Ev
+__ZN3WTF25TCMalloc_Central_FreeList11InsertRangeEPvS1_i
+__ZN3WTF25TCMalloc_Central_FreeList18ReleaseListToSpansEPv
+__ZN3WTF12isMainThreadEv
__ZN3WTF14FastMallocZone4sizeEP14_malloc_zone_tPKv
-__ZN3KJS8Bindings10RootObject19setCreateRootObjectEPFN3WTF10PassRefPtrIS1_EEPvE
-__ZN3KJS8Bindings8Instance21setDidExecuteFunctionEPFvPNS_9ExecStateEPNS_8JSObjectEE
-_kjs_strtod
-__Z15jsRegExpCompilePKti24JSRegExpIgnoreCaseOption23JSRegExpMultilineOptionPjPPKc
-__Z30calculateCompiledPatternLengthPKti24JSRegExpIgnoreCaseOptionR11CompileDataR9ErrorCode
-__Z11checkEscapePPKtS0_P9ErrorCodeib
-__Z13compileBranchiPiPPhPPKtS3_P9ErrorCodeS_S_R11CompileData
-__Z15jsRegExpExecutePK8JSRegExpPKtiiPii
+__ZN3WTF13currentThreadEv
+__ZN3WTF16callOnMainThreadEPFvPvES0_
+__ZN3WTF5DequeINS_19FunctionWithContextEE14expandCapacityEv
+__ZN3WTF37scheduleDispatchFunctionsOnMainThreadEv
+__ZN3WTF15ThreadCondition4waitERNS_5MutexE
+__ZN3JSC8DebuggerC2Ev
+__ZN3WTF6strtodEPKcPPc
+__ZN3WTF15ThreadCondition6signalEv
+__ZN3WTF15ThreadCondition9timedWaitERNS_5MutexEd
+__ZN3WTF15ThreadCondition9broadcastEv
+-[WTFMainThreadCaller call]
+__ZN3WTF31dispatchFunctionsFromMainThreadEv
+__ZN3WTF14FastMallocZone9forceLockEP14_malloc_zone_t
__ZN3WTF11fastReallocEPvm
-__ZN3KJS20createDidLockJSMutexEv
-__ZN3KJS9Collector14registerThreadEv
-__ZN3KJS29initializeRegisteredThreadKeyEv
-__ZN3KJS15SavedPropertiesC1Ev
-__ZN3KJS6JSCellnwEm
-__ZN3KJS9Collector12heapAllocateILNS0_8HeapTypeE0EEEPvm
-__ZN3KJS15GlobalExecStateC1EPNS_14JSGlobalObjectE
-__ZN3KJS17CommonIdentifiers6sharedEv
-__ZN3KJS17CommonIdentifiersC2Ev
-__ZN3KJS10IdentifierC1EPKc
-__ZN3KJS10Identifier3addEPKc
-__ZN3WTF7HashSetIPN3KJS7UString3RepENS_7StrHashIS4_EENS_10HashTraitsIS4_EEE3addINS1_11UCharBufferENS1_21UCharBufferTranslatorEEESt4pairINS_24HashTableIteratorAdapterINS_9HashTableIS4_S4_NS_17IdentityExtractorIS4_EES6_S8_S8_EES4_EEbERKT_
-__ZN3WTF9HashTableIPN3KJS7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7StrHashIS4_EENS_10HashTraitsIS4_EESA_E6rehashEi
-__ZN3KJS14JSGlobalObject4initEv
-__ZN3KJS14JSGlobalObject5resetEPNS_7JSValueE
-__ZN3KJS11PropertyMap5clearEv
-__ZN3KJS17FunctionPrototypeC2EPNS_9ExecStateE
-__ZN3KJS11PropertyMap3putERKNS_10IdentifierEPNS_7JSValueEjb
-__ZN3KJS17PrototypeFunctionC1EPNS_9ExecStateEPNS_17FunctionPrototypeEiRKNS_10IdentifierEPFPNS_7JSValueES2_PNS_8JSObjectERKNS_4ListEE
-__ZN3KJS19InternalFunctionImpC2EPNS_17FunctionPrototypeERKNS_10IdentifierE
-__ZN3KJS11PropertyMap11createTableEv
-__ZN3KJS15ObjectPrototypeC2EPNS_9ExecStateEPNS_17FunctionPrototypeE
-__ZN3KJS11PropertyMap6rehashEj
-__ZN3KJS14ArrayPrototypeC1EPNS_9ExecStateEPNS_15ObjectPrototypeE
-__ZN3KJS13ArrayInstanceC2EPNS_8JSObjectEj
-__ZN3KJS15StringPrototypeC2EPNS_9ExecStateEPNS_15ObjectPrototypeE
-__ZN3KJS8jsStringEPKc
-__ZN3KJS16BooleanPrototypeC2EPNS_9ExecStateEPNS_15ObjectPrototypeEPNS_17FunctionPrototypeE
-__ZN3KJS15NumberPrototypeC2EPNS_9ExecStateEPNS_15ObjectPrototypeEPNS_17FunctionPrototypeE
-__ZN3KJS13DatePrototypeC1EPNS_9ExecStateEPNS_15ObjectPrototypeE
-__ZN3KJS12jsNumberCellEd
-__ZN3KJS9Collector12heapAllocateILNS0_8HeapTypeE1EEEPvm
-__ZN3KJS15RegExpPrototypeC2EPNS_9ExecStateEPNS_15ObjectPrototypeEPNS_17FunctionPrototypeE
-__ZN3WTF9HashTableIPN3KJS7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7StrHashIS4_EENS_10HashTraitsIS4_EESA_E4findIS4_NS_22IdentityHashTranslatorIS4_S4_S8_EEEENS_17HashTableIteratorIS4_S4_S6_S8_SA_SA_EERKT_
-__ZN3KJS14ErrorPrototypeC2EPNS_9ExecStateEPNS_15ObjectPrototypeEPNS_17FunctionPrototypeE
-__ZN3KJS7UStringC1EPKc
-__ZN3KJS20NativeErrorPrototypeC1EPNS_9ExecStateEPNS_14ErrorPrototypeERKNS_7UStringES7_
-__ZN3KJS8jsStringERKNS_7UStringE
-__ZN3KJS15ObjectObjectImpC2EPNS_9ExecStateEPNS_15ObjectPrototypeEPNS_17FunctionPrototypeE
-__ZN3KJS17FunctionObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeE
-__ZNK3KJS19InternalFunctionImp9classInfoEv
-__ZN3KJS14ArrayObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_14ArrayPrototypeE
-__ZNK3KJS14ArrayPrototype9classInfoEv
-__ZN3KJS15StringObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_15StringPrototypeE
-__ZNK3KJS15StringPrototype9classInfoEv
-__ZN3KJS19StringObjectFuncImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeERKNS_10IdentifierE
-__ZN3KJS16BooleanObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_16BooleanPrototypeE
-__ZNK3KJS15BooleanInstance9classInfoEv
-__ZN3KJS15NumberObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_15NumberPrototypeE
-__ZNK3KJS14NumberInstance9classInfoEv
-__ZN3KJS13DateObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_13DatePrototypeE
-__ZNK3KJS13DatePrototype9classInfoEv
-__ZN3KJS15RegExpObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_15RegExpPrototypeE
-__ZN3KJS14ErrorObjectImpC2EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_14ErrorPrototypeE
-__ZNK3KJS13ErrorInstance9classInfoEv
-__ZN3KJS14NativeErrorImpC1EPNS_9ExecStateEPNS_17FunctionPrototypeEPNS_20NativeErrorPrototypeE
-__ZNK3KJS11PropertyMap3getERKNS_10IdentifierE
-__ZNK3KJS9StringImp4typeEv
-__ZN3KJS10Identifier11addSlowCaseEPNS_7UString3RepE
-__ZN3WTF9HashTableIPN3KJS7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7StrHashIS4_EENS_10HashTraitsIS4_EESA_E3addIS4_S4_NS_17HashSetTranslatorILb1ES4_SA_SA_S8_EEEESt4pairINS_17HashTableIteratorIS4_S4_S6_S8_SA_SA_EEbERKT_RKT0_
-__ZN3KJS8JSObject9putDirectERKNS_10IdentifierEPNS_7JSValueEi
-__ZN3KJS13MathObjectImpC1EPNS_9ExecStateEPNS_15ObjectPrototypeE
-__ZN3KJS8JSObject17putDirectFunctionEPNS_19InternalFunctionImpEi
-__ZNK3KJS8JSObject4typeEv
-__ZN3KJS9Collector23collectOnMainThreadOnlyEPNS_7JSValueE
-__ZN3KJS9Collector7protectEPNS_7JSValueE
-__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E3addIPN3KJS8JSObjectEjNS_17HashMapTranslatorILb1ES1_ISF_jENS_18PairBaseHashTraitsINS8_ISF_EENS8_IjEEEESA_NS_7PtrHashISF_EEEEEES1_INS_17HashTableIteratorIiS2_S4_S6_SA_S9_EEbERKT_RKT0_
-__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E6rehashEi
-__ZN3KJS6JSCell9getObjectEv
-__ZN3KJS8Bindings10RootObject6createEPKvPNS_14JSGlobalObjectE
-__ZN3KJS8Bindings10RootObjectC2EPKvPNS_14JSGlobalObjectE
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E6rehashEi
-__ZN3KJS8Bindings10RootObject9gcProtectEPNS_8JSObjectE
-__ZNK3KJS14JSGlobalObject12saveBuiltinsERNS_13SavedBuiltinsE
-__ZN3KJS21SavedBuiltinsInternalC2Ev
-__ZNK3KJS11PropertyMap4saveERNS_15SavedPropertiesE
-__ZN3KJS30comparePropertyMapEntryIndicesEPKvS1_
-__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E4findIiNS_22IdentityHashTranslatorIiS2_S6_EEEENS_17HashTableIteratorIiS2_S4_S6_SA_S9_EERKT_
-__ZNK3KJS16JSVariableObject16saveLocalStorageERNS_15SavedPropertiesE
-__ZN3KJS13ActivationImpD0Ev
-__ZN3KJS8JSObject12removeDirectERKNS_10IdentifierE
-__ZN3KJS11PropertyMap6removeERKNS_10IdentifierE
-__ZN3KJS7UString3Rep7destroyEv
-__ZN3KJS10Identifier6removeEPNS_7UString3RepE
-__ZN3KJS8Bindings10RootObject10invalidateEv
-__ZN3KJS9Collector9unprotectEPNS_7JSValueE
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E4findIiNS_22IdentityHashTranslatorIiiS4_EEEENS_17HashTableIteratorIiiS2_S4_S6_S6_EERKT_
-__ZN3KJS8Bindings10RootObjectD1Ev
-__ZN3KJS14JSGlobalObject10globalExecEv
-__ZN3KJS14JSGlobalObject17startTimeoutCheckEv
-__ZN3KJS7UStringC1EPKNS_5UCharEi
-__ZN3KJS11Interpreter8evaluateEPNS_9ExecStateERKNS_7UStringEiPKNS_5UCharEiPNS_7JSValueE
-__ZN3KJS6ParserC2Ev
-__ZN3KJS6Parser5parseINS_11ProgramNodeEEEN3WTF10PassRefPtrIT_EERKNS_7UStringEiPKNS_5UCharEjPiSD_PS7_
-__ZN3KJS6Parser5parseEiPKNS_5UCharEjPiS4_PNS_7UStringE
-__ZN3KJS7UStringaSEPKc
-__ZN3KJS5LexerC2Ev
-__ZN3WTF6VectorIcLm0EE15reserveCapacityEm
-__ZN3WTF6VectorIN3KJS5UCharELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIPN3KJS7UStringELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIPN3KJS10IdentifierELm0EE15reserveCapacityEm
-__Z10kjsyyparsev
-__Z8kjsyylexv
-__ZN3KJS5Lexer3lexEv
-__ZN3KJS5Lexer14makeIdentifierERKN3WTF6VectorINS_5UCharELm0EEE
-__ZN3KJS10Identifier3addEPKNS_5UCharEi
-__ZN3KJS5Lexer15matchPunctuatorEiiii
-__ZN3KJS7UStringC2ERKN3WTF6VectorINS_5UCharELm0EEE
-__ZN3KJS14ExpressionNodeC2ENS_6JSTypeE
-__ZN3KJS16ParserRefCountedC2Ev
-__ZN3KJS7UStringC1ERKS0_
-__ZN3KJS4NodeC2Ev
-__ZN3KJS10IdentifierC1ERKS0_
-__ZN3WTF6RefPtrIN3KJS14ExpressionNodeEEC1EPS2_
-__ZN3KJS16ParserRefCounted3refEv
-__ZN3WTF6RefPtrIN3KJS12PropertyNodeEEC1EPS2_
-__ZN3WTF10ListRefPtrIN3KJS16PropertyListNodeEEC1Ev
-__ZN3KJS11ResolveNodeC1ERKNS_10IdentifierE
-__ZN3KJS14ExpressionNodeC2Ev
-__ZN3WTF10ListRefPtrIN3KJS16ArgumentListNodeEEC1Ev
-__Z20makeFunctionCallNodePN3KJS14ExpressionNodeEPNS_13ArgumentsNodeE
-__ZNK3KJS15DotAccessorNode10isLocationEv
-__ZNK3KJS14ExpressionNode13isResolveNodeEv
-__ZNK3KJS14ExpressionNode21isBracketAccessorNodeEv
-__Z14makeNumberNoded
-__Z14makeNegateNodePN3KJS14ExpressionNodeE
-__ZNK3KJS10NumberNode8isNumberEv
-__ZN3KJS19ImmediateNumberNode8setValueEd
-__ZN3KJS5lexerEv
-__ZN3KJS5Lexer10scanRegExpEv
-__ZN3KJS6RegExp6createERKNS_7UStringES3_
-__ZNK3KJS7UString4findENS_5UCharEi
-__ZN3KJS17ObjectLiteralNodeC1EPNS_16PropertyListNodeE
-__Z14compileBracketiPiPPhPPKtS3_P9ErrorCodeiS_S_R11CompileData
-__ZN3KJS16FunctionBodyNode6createEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS4_IPNS_12FuncDeclNodeELm16EEE
-__ZN3KJS16FunctionBodyNodeC2EPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS4_IPNS_12FuncDeclNodeELm16EEE
-__ZN3KJS9ScopeNodeC2EPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS4_IPNS_12FuncDeclNodeELm16EEE
-__ZN3KJS9BlockNodeC1EPNS_14SourceElementsE
-__ZN3KJS13StatementNodeC2Ev
-__ZN3WTF6RefPtrIN3KJS13ParameterNodeEEC1EPS2_
-__ZN3WTF6RefPtrIN3KJS16FunctionBodyNodeEEC1EPS2_
-__ZN3KJS12FuncExprNode9addParamsEv
-__ZN3WTF10ListRefPtrIN3KJS13ParameterNodeEEC1Ev
-__ZN3KJS10ReturnNodeC1EPNS_14ExpressionNodeE
-__Z23allowAutomaticSemicolonv
-__ZN3KJS14SourceElementsC1Ev
-__ZN3WTF10PassRefPtrIN3KJS13StatementNodeEEC1EPS2_
-__ZN3KJS14SourceElements6appendEN3WTF10PassRefPtrINS_13StatementNodeEEE
-__ZNK3KJS13StatementNode16isEmptyStatementEv
-__ZN3WTF6VectorINS_6RefPtrIN3KJS13StatementNodeEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN3KJS13StatementNodeEEELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIN3KJS10IdentifierELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN3KJS10IdentifierELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN3KJS10IdentifierELm0EE15reserveCapacityEm
-__ZN3KJS20ParserRefCountedDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEEC1Ev
-__Z26appendToVarDeclarationListRPN3KJS20ParserRefCountedDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEEERKS4_j
-__Z20makeVarStatementNodePN3KJS14ExpressionNodeE
-__Z14makeAssignNodePN3KJS14ExpressionNodeENS_8OperatorES1_
-__ZN3KJS17ExprStatementNodeC1EPNS_14ExpressionNodeE
-__ZN3KJS6IfNodeC2EPNS_14ExpressionNodeEPNS_13StatementNodeE
-__Z21mergeDeclarationListsIPN3KJS20ParserRefCountedDataIN3WTF6VectorISt4pairINS0_10IdentifierEjELm16EEEEEET_SA_SA_
-__Z21mergeDeclarationListsIPN3KJS20ParserRefCountedDataIN3WTF6VectorIPNS0_12FuncDeclNodeELm16EEEEEET_S9_S9_
-__ZNK3KJS11ResolveNode10isLocationEv
-__ZNK3KJS11ResolveNode13isResolveNodeEv
-__Z22combineVarInitializersPN3KJS14ExpressionNodeEPNS_17AssignResolveNodeE
-__ZN3KJS14ExpressionNode28optimizeForUnnecessaryResultEv
-__ZN3WTF6VectorIPN3KJS10IdentifierELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN3KJS10IdentifierELm0EE14expandCapacityEm
-__ZN3KJS12FuncDeclNode9addParamsEv
-__ZN3WTF6VectorIPN3KJS12FuncDeclNodeELm16EEC1Ev
-__ZN3WTF6VectorISt4pairIN3KJS10IdentifierEjELm16EE6appendIS4_EEvPKT_m
-__ZN3KJS16ParserRefCounted5derefEv
-__ZN3KJS20ParserRefCountedDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEED1Ev
-__Z12makeLessNodePN3KJS14ExpressionNodeES1_
-__Z15makePostfixNodePN3KJS14ExpressionNodeENS_8OperatorE
-__ZN3WTF6RefPtrIN3KJS13StatementNodeEEC1EPS2_
-__ZN3KJS18PostIncResolveNode28optimizeForUnnecessaryResultEv
-__ZN3WTF6VectorISt4pairIN3KJS10IdentifierEjELm16EEaSERKS5_
-__ZN3WTF6VectorIPN3KJS12FuncDeclNodeELm16EEaSERKS4_
-__ZNK3KJS14ExpressionNode10isLocationEv
-__ZNK3KJS19BracketAccessorNode10isLocationEv
-__ZNK3KJS19BracketAccessorNode21isBracketAccessorNodeEv
-__ZN3KJS9ForInNodeC1ERKNS_10IdentifierEPNS_14ExpressionNodeES5_PNS_13StatementNodeE
-__ZN3KJS9ThrowNodeC1EPNS_14ExpressionNodeE
-__Z14makeTypeOfNodePN3KJS14ExpressionNodeE
-__ZN3WTF6VectorINS_6RefPtrIN3KJS13StatementNodeEEELm0EEC1Ev
-__ZN3WTF6RefPtrIN3KJS14CaseClauseNodeEEC1EPS2_
-__ZN3WTF10ListRefPtrIN3KJS14ClauseListNodeEEC1Ev
-__ZN3KJS13CaseBlockNodeC2EPNS_14ClauseListNodeEPNS_14CaseClauseNodeES2_
-__Z11makeAddNodePN3KJS14ExpressionNodeES1_
-__ZN3WTF10ListRefPtrIN3KJS11ElementNodeEEC1Ev
-__ZN3WTF6RefPtrIN3KJS11ElementNodeEEC1EPS2_
-__ZNK3KJS18EmptyStatementNode16isEmptyStatementEv
-__ZN3KJS9BreakNodeC1Ev
-__Z32branchFindFirstAssertedCharacterPKhb
-__Z20branchNeedsLineStartPKhjj
-__ZN3KJS10IdentifierC1ERKNS_7UStringE
-__ZN3WTF6RefPtrIN3KJS7UString3RepEED1Ev
-__ZN3KJS9CommaNodeC2EPNS_14ExpressionNodeES2_
-__Z14makePrefixNodePN3KJS14ExpressionNodeENS_8OperatorE
-__ZN3WTF6RefPtrIN3KJS13ArgumentsNodeEEC1EPS2_
-__ZN3WTF6VectorIPN3KJS7UStringELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN3KJS7UStringELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN3KJS5UCharELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN3KJS5UCharELm0EE14expandCapacityEm
-__ZNK3KJS14ExpressionNode8isNumberEv
-__ZN3KJS19PlaceholderTrueNodeC1Ev
-__ZN3KJS18EmptyStatementNodeC1Ev
-__Z14makeDeleteNodePN3KJS14ExpressionNodeE
-__Z15isCountedRepeatPKtS0_
-__ZN3KJS12ContinueNodeC1Ev
-__ZN3KJS9ForInNodeC1EPNS_14ExpressionNodeES2_PNS_13StatementNodeE
-__ZN3KJS18PostDecResolveNode28optimizeForUnnecessaryResultEv
-__Z17bracketIsAnchoredPKh
-__ZN3WTF6VectorISt4pairIN3KJS10IdentifierEjELm16EE14expandCapacityEmPKS4_
-__ZN3WTF6VectorISt4pairIN3KJS10IdentifierEjELm16EE14expandCapacityEm
-__ZN3WTF6VectorISt4pairIN3KJS10IdentifierEjELm16EE15reserveCapacityEm
-__ZN3KJS7UString4fromEd
-_kjs_dtoa
-_d2b
-_Balloc
-__ZN3KJS6parserEv
-__ZN3KJS6Parser16didFinishParsingEPNS_14SourceElementsEPNS_20ParserRefCountedDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEEEPNS3_INS5_IPNS_12FuncDeclNodeELm16EEEEEi
-__ZN3KJS5Lexer5clearEv
-__ZN3WTF25TCMalloc_Central_FreeList11InsertRangeEPvS1_i
+__ZN3WTF11fastReallocILb1EEEPvS1_m
+__ZN3JSC7UStringC1EPKti
+__ZN3JSC7UStringC2EPKti
+__ZN3JSC12JSGlobalData12createLeakedEv
+__ZN3JSC9Structure18startIgnoringLeaksEv
+__ZN3JSC7VPtrSetC2Ev
+__ZN3JSC9StructureC1ENS_7JSValueERKNS_8TypeInfoE
+__ZN3JSC7JSArrayC1EN3WTF10PassRefPtrINS_9StructureEEE
+__ZN3JSC7JSArrayD1Ev
+__ZN3JSC7JSArrayD2Ev
+__ZN3WTF10RefCountedIN3JSC9StructureEE5derefEv
+__ZN3JSC9StructureD1Ev
+__ZN3JSC9StructureD2Ev
+__ZN3JSC11JSByteArray15createStructureENS_7JSValueE
+__ZN3JSC11JSByteArrayD1Ev
+__ZN3JSC8JSStringD1Ev
+__ZN3JSC10JSFunctionD1Ev
+__ZN3JSC10JSFunctionD2Ev
+__ZN3JSC8JSObjectD2Ev
+__ZN3JSC12JSGlobalDataC2EbRKNS_7VPtrSetE
+__ZN3JSC21createIdentifierTableEv
+__ZN3JSC17CommonIdentifiersC1EPNS_12JSGlobalDataE
+__ZN3JSC17CommonIdentifiersC2EPNS_12JSGlobalDataE
+__ZN3JSC10Identifier3addEPNS_12JSGlobalDataEPKc
+__ZN3WTF7HashSetIPN3JSC7UString3RepENS_7StrHashIS4_EENS_10HashTraitsIS4_EEE3addIPKcNS1_17CStringTranslatorEEESt4pairINS_24HashT
+__ZN3WTF9HashTableIPN3JSC7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7StrHashIS4_EENS_10HashTraitsIS4_EESA_E6rehashEi
+__ZN3WTF9HashTableIPKcSt4pairIS2_NS_6RefPtrIN3JSC7UString3RepEEEENS_18PairFirstExtractorIS9_EENS_7PtrHashIS2_EENS_14PairHashTra
+__ZN3WTF6RefPtrIN3JSC7UString3RepEED1Ev
+__ZN3JSC12SmallStringsC1Ev
+__ZN3JSC19ExecutableAllocator17intializePageSizeEv
+__ZN3JSC14ExecutablePool11systemAllocEm
+__ZN3JSC5LexerC1EPNS_12JSGlobalDataE
+__ZN3JSC5LexerC2EPNS_12JSGlobalDataE
+__ZN3JSC11InterpreterC1Ev
+__ZN3JSC11InterpreterC2Ev
+__ZN3JSC11Interpreter14privateExecuteENS0_13ExecutionFlagEPNS_12RegisterFileEPNS_9ExecStateEPNS_7JSValueE
+__ZN3WTF7HashMapIPvN3JSC8OpcodeIDENS_7PtrHashIS1_EENS_10HashTraitsIS1_EENS6_IS3_EEE3addERKS1_RKS3_
+__ZN3WTF9HashTableIPvSt4pairIS1_N3JSC8OpcodeIDEENS_18PairFirstExtractorIS5_EENS_7PtrHashIS1_EENS_14PairHashTraitsINS_10HashTrai
+__ZN3JSC8JITStubsC1EPNS_12JSGlobalDataE
+__ZN3JSC3JITC1EPNS_12JSGlobalDataEPNS_9CodeBlockE
+__ZN3JSC3JITC2EPNS_12JSGlobalDataEPNS_9CodeBlockE
+__ZN3JSC3JIT35privateCompileCTIMachineTrampolinesEPN3WTF6RefPtrINS_14ExecutablePoolEEEPNS_12JSGlobalDataEPPvS9_S9_S9_S9_S9_
+__ZN3JSC12X86Assembler23X86InstructionFormatter11oneByteOp64ENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDE
+__ZN3JSC12X86Assembler3jCCENS0_9ConditionE
+__ZN3JSC23MacroAssemblerX86Common4moveENS_22AbstractMacroAssemblerINS_12X86AssemblerEE6ImmPtrENS_3X8610RegisterIDE
+__ZN3JSC12X86Assembler23X86InstructionFormatter11oneByteOp64ENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDEi
+__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDE
+__ZN3JSC15AssemblerBuffer11ensureSpaceEi
+__ZN3JSC20MacroAssemblerX86_6413branchTestPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAsse
+__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDENS_3X8610RegisterIDE
+__ZN3JSC20MacroAssemblerX86_644callEv
+__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDEi
+__ZN3JSC3JIT32compileOpCallInitializeCallFrameEv
+__ZN3JSC12X86Assembler23X86InstructionFormatter11memoryModRMEiNS_3X8610RegisterIDEi
+__ZN3JSC20MacroAssemblerX86_6421makeTailRecursiveCallENS_22AbstractMacroAssemblerINS_12X86AssemblerEE4JumpE
+__ZN3JSC14TimeoutCheckerC1Ev
+__ZN3JSC4HeapC1EPNS_12JSGlobalDataE
+__ZN3JSC27startProfilerServerIfNeededEv
++[ProfilerServer sharedProfileServer]
+-[ProfilerServer init]
+__ZN3JSC9Structure17stopIgnoringLeaksEv
+__ZN3JSC4Heap8allocateEm
+__ZN3JSCL13allocateBlockILNS_8HeapTypeE0EEEPNS_14CollectorBlockEv
+__ZN3JSC4Heap4heapENS_7JSValueE
+__ZN3JSC4Heap7protectENS_7JSValueE
+__ZN3WTF7HashMapIPN3JSC6JSCellEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3addERKS3_RKj
+__ZN3WTF9HashTableIPN3JSC6JSCellESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTraits
+__ZN3JSC14JSGlobalObjectnwEmPNS_12JSGlobalDataE
+__ZN3JSC14JSGlobalObject4initEPNS_8JSObjectE
+__ZN3JSC14JSGlobalObject5resetENS_7JSValueE
+__ZN3JSC4Heap12heapAllocateILNS_8HeapTypeE0EEEPvm
+__ZN3JSC8jsStringEPNS_12JSGlobalDataERKNS_7UStringE
+__ZN3JSC12SmallStrings17createEmptyStringEPNS_12JSGlobalDataE
+__ZN3JSC7UStringC1EPKc
+__ZN3JSCL9createRepEPKc
+__ZN3JSC8JSObject9putDirectERKNS_10IdentifierENS_7JSValueEjbRNS_15PutPropertySlotE
+__ZN3JSC9Structure40addPropertyTransitionToExistingStructureEPS0_RKNS_10IdentifierEjRm
+__ZN3JSC9Structure3getERKNS_10IdentifierERj
+__ZN3JSC9Structure21addPropertyTransitionEPS0_RKNS_10IdentifierEjRm
+__ZN3JSC9Structure3putERKNS_10IdentifierEj
+__ZN3JSC8JSObject26putDirectWithoutTransitionERKNS_10IdentifierENS_7JSValueEj
+__ZN3JSC9Structure28addPropertyWithoutTransitionERKNS_10IdentifierEj
+__ZN3JSC17FunctionPrototype21addFunctionPropertiesEPNS_9ExecStateEPNS_9StructureEPPNS_10JSFunctionES7_
+__ZN3JSC10JSFunctionC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RK
+__ZN3JSC12JSGlobalData17createNativeThunkEv
+__ZN3JSC16FunctionBodyNode17createNativeThunkEPNS_12JSGlobalDataE
+__ZN3WTF6VectorINS_6RefPtrIN3JSC21ParserArenaRefCountedEEELm0EE15reserveCapacityEm
+__ZN3JSC11ParserArena5resetEv
+__ZN3JSC8JSObject34putDirectFunctionWithoutTransitionEPNS_9ExecStateEPNS_16InternalFunctionEj
+__ZN3JSC15ObjectPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_
+__ZN3JSC9Structure26rehashPropertyMapHashTableEj
+__ZN3JSC15StringPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEE
+__ZN3JSC16BooleanPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_
+__ZN3JSC15NumberPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_
+__ZN3JSC15RegExpPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_
+__ZN3JSC14ErrorPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_
+__ZN3JSC20NativeErrorPrototypeC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEERKNS_7UStringES9_
+__ZN3JSC17ObjectConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_15ObjectPrototypeE
+__ZN3JSC19FunctionConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_17FunctionPrototypeE
+__ZNK3JSC16InternalFunction9classInfoEv
+__ZN3JSC16ArrayConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_14ArrayPrototypeE
+__ZNK3JSC14ArrayPrototype9classInfoEv
+__ZN3JSC17StringConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_PNS_15StringPrototypeE
+__ZNK3JSC15StringPrototype9classInfoEv
+__ZN3JSC18BooleanConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_16BooleanPrototypeE
+__ZNK3JSC13BooleanObject9classInfoEv
+__ZN3JSC17NumberConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_15NumberPrototypeE
+__ZN3JSC15DateConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPS5_PNS_13DatePrototypeE
+__ZNK3JSC13DatePrototype9classInfoEv
+__ZN3JSC17RegExpConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_15RegExpPrototypeE
+__ZN3JSC16ErrorConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_14ErrorPrototypeE
+__ZNK3JSC13ErrorInstance9classInfoEv
+__ZN3JSC22NativeErrorConstructorC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS_20NativeErrorPrototypeE
+__ZN3JSC10Identifier11addSlowCaseEPNS_12JSGlobalDataEPNS_7UString3RepE
+__ZN3WTF7HashSetIPN3JSC7UString3RepENS_7StrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN3JSC10MathObjectC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEE
+__ZN3JSC12SmallStrings24singleCharacterStringRepEh
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEENS2_16SymbolTableEntryENS2_17IdentifierRepHashENS_10HashTraitsIS5_EENS2_26Symbo
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_NS2_16SymbolTableEntryEENS_18PairFirstExtractorIS8_EENS2_17Identif
+__ZN3JSC17PrototypeFunctionC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjec
+__ZN3JSC9Structure25changePrototypeTransitionEPS0_NS_7JSValueE
+__ZN3JSC9Structure17copyPropertyTableEv
+__ZN3JSC14JSGlobalObject10globalExecEv
+__ZN3JSC10Identifier3addEPNS_9ExecStateEPKc
+__ZN3JSC4Heap9unprotectENS_7JSValueE
+__ZN3JSC6JSCellnwEmPNS_9ExecStateE
+__ZN3JSC14TimeoutChecker5resetEv
+__ZN3JSC8evaluateEPNS_9ExecStateERNS_10ScopeChainERKNS_10SourceCodeENS_7JSValueE
+__ZN3JSC6JSLock4lockEb
+__ZN3JSC6Parser5parseINS_11ProgramNodeEEEN3WTF10PassRefPtrIT_EEPNS_9ExecStateEPNS_8DebuggerERKNS_10SourceCodeEPiPNS_7UStringE
+__ZN3JSC6Parser5parseEPNS_12JSGlobalDataEPiPNS_7UStringE
+__ZN3JSC7UStringaSEPKc
+__Z10jscyyparsePv
+__ZN3JSC5Lexer3lexEPvS1_
+__ZN3JSC10Identifier3addEPNS_12JSGlobalDataEPKti
+__ZN3WTF7HashSetIPN3JSC7UString3RepENS_7StrHashIS4_EENS_10HashTraitsIS4_EEE3addINS1_11UCharBufferENS1_21UCharBufferTranslatorEE
+__ZN3JSC15SegmentedVectorINS_10IdentifierELm64EE6appendIS1_EEvRKT_
+__ZNK3JSC9HashTable11createTableEPNS_12JSGlobalDataE
+__ZN3JSC20ParserArenaDeletablenwEmPNS_12JSGlobalDataE
+__ZN3WTF6VectorIPN3JSC20ParserArenaDeletableELm0EE15reserveCapacityEm
+__ZN3JSC5Lexer10sourceCodeEiii
+__ZN3JSC16FunctionBodyNode13finishParsingERKNS_10SourceCodeEPNS_13ParameterNodeE
+__ZN3WTF6VectorIN3JSC10IdentifierELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN3JSC12FuncDeclNodeELm0EE14expandCapacityEm
+__ZN3JSC14SourceElements6appendEPNS_13StatementNodeE
+__ZNK3JSC13StatementNode16isEmptyStatementEv
+__ZN3WTF6VectorIPN3JSC13StatementNodeELm0EE14expandCapacityEm
+__ZL20makeFunctionCallNodePvN3JSC8NodeInfoIPNS0_14ExpressionNodeEEENS1_IPNS0_13ArgumentsNodeEEEiii
+__ZNK3JSC11ResolveNode10isLocationEv
+__ZNK3JSC11ResolveNode13isResolveNodeEv
+__ZN3JSC5Lexer7record8Ei
+__ZN3JSC5Lexer10scanRegExpEv
+__ZN3JSC7UStringC2ERKN3WTF6VectorItLm0EEE
+__ZN3JSC7UString3Rep7destroyEv
+__ZN3JSC5Lexer5clearEv
+__ZN3JSC10Identifier6removeEPNS_7UString3RepE
+__ZN3WTF6VectorIN3JSC10IdentifierELm64EE14shrinkCapacityEm
+__ZN3JSC9ScopeNodeC2EPNS_12JSGlobalDataERKNS_10SourceCodeEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEPN
+__ZN3WTF6VectorIPN3JSC13StatementNodeELm0EE14shrinkCapacityEm
+__ZN3JSC11ParserArena10removeLastEv
+__ZNK3JSC8JSObject8toObjectEPNS_9ExecStateE
+__ZN3JSC11Interpreter7executeEPNS_11ProgramNodeEPNS_9ExecStateEPNS_14ScopeChainNodeEPNS_8JSObjectEPNS_7JSValueE
+__ZN3JSC11ProgramNode16generateBytecodeEPNS_14ScopeChainNodeE
+__ZN3JSC9CodeBlockC2EPNS_9ScopeNodeENS_8CodeTypeEN3WTF10PassRefPtrINS_14SourceProviderEEEj
+__ZN3WTF7HashSetIPN3JSC16ProgramCodeBlockENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN3JSC16ProgramCodeBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3JSC17BytecodeGeneratorC2EPNS_11ProgramNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_7UString3RepEEEN
+__ZN3WTF6VectorIN3JSC11InstructionELm0EE14expandCapacityEm
+__ZN3JSC9Structure22toDictionaryTransitionEPS0_
+__ZN3JSC8JSObject12removeDirectERKNS_10IdentifierE
+__ZN3JSC9Structure31removePropertyWithoutTransitionERKNS_10IdentifierE
+__ZN3JSC9Structure6removeERKNS_10IdentifierE
+__ZN3JSC17BytecodeGenerator12addGlobalVarERKNS_10IdentifierEbRPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator15emitNewFunctionEPNS_10RegisterIDEPNS_12FuncDeclNodeE
+__ZN3JSC9CodeBlock25createRareDataIfNecessaryEv
+__ZN3JSC17BytecodeGenerator11newRegisterEv
+__ZN3JSC9Structure24fromDictionaryTransitionEPS0_
+__ZN3JSC17BytecodeGenerator8generateEv
+__ZN3JSC11ProgramNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator13emitDebugHookENS_11DebugHookIDEii
+__ZN3JSC17BytecodeGenerator11addConstantENS_7JSValueE
+__ZN3WTF9HashTableIPvSt4pairIS1_jENS_18PairFirstExtractorIS3_EENS_7PtrHashIS1_EENS_14PairHashTraitsIN3JSC17JSValueHashTraitsENS
+__ZN3WTF6VectorIN3JSC8RegisterELm0EE14expandCapacityEm
+__ZN3JSC17BytecodeGenerator8emitMoveEPNS_10RegisterIDES2_
+__ZN3JSC17BytecodeGenerator8emitNodeEPNS_10RegisterIDEPNS_4NodeE
+__ZN3WTF6VectorIN3JSC8LineInfoELm0EE14expandCapacityEm
+__ZN3JSC12FuncDeclNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17ExprStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC23FunctionCallResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator11registerForERKNS_10IdentifierE
+__ZN3JSC17BytecodeGenerator8emitCallENS_8OpcodeIDEPNS_10RegisterIDES3_S3_PNS_13ArgumentsNodeEjjj
+__ZN3JSC16ArgumentListNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC12FuncExprNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator25emitNewFunctionExpressionEPNS_10RegisterIDEPNS_12FuncExprNodeE
+__ZN3WTF6VectorIN3JSC19ExpressionRangeInfoELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN3JSC12CallLinkInfoELm0EE14expandCapacityEm
+__ZN3JSC11ResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC12JSGlobalData22numericCompareFunctionEPNS_9ExecStateE
+__ZNK3JSC21UStringSourceProvider6lengthEv
+__ZNK3JSC21UStringSourceProvider4dataEv
+__ZN3JSC19extractFunctionBodyEPNS_11ProgramNodeE
+__ZNK3JSC17ExprStatementNode15isExprStatementEv
+__ZNK3JSC12FuncExprNode14isFuncExprNodeEv
+__ZN3JSC16FunctionBodyNode16generateBytecodeEPNS_14ScopeChainNodeE
+__ZN3JSC6Parser14reparseInPlaceEPNS_12JSGlobalDataEPNS_16FunctionBodyNodeE
+__ZL11makeSubNodePvPN3JSC14ExpressionNodeES2_b
+__ZN3JSC14ExpressionNode14stripUnaryPlusEv
+__ZNK3JSC14ExpressionNode8isNumberEv
+__ZN3JSC9CodeBlockC1EPNS_9ScopeNodeENS_8CodeTypeEN3WTF10PassRefPtrINS_14SourceProviderEEEj
+__ZN3JSC17BytecodeGeneratorC2EPNS_16FunctionBodyNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_7UString3Re
+__ZN3JSC17BytecodeGenerator12addParameterERKNS_10IdentifierE
+__ZN3JSC16FunctionBodyNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC9BlockNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC10ReturnNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC12BinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZNK3JSC11ResolveNode6isPureERNS_17BytecodeGeneratorE
+__ZN3JSC17BytecodeGenerator12newTemporaryEv
+__ZN3JSC17BytecodeGenerator12emitBinaryOpENS_8OpcodeIDEPNS_10RegisterIDES3_S3_NS_12OperandTypesE
+__ZN3JSC17BytecodeGenerator10emitReturnEPNS_10RegisterIDE
+__ZNK3JSC9BlockNode7isBlockEv
+__ZNK3JSC10ReturnNode12isReturnNodeEv
+__ZN3JSC9CodeBlock11shrinkToFitEv
+__ZN3WTF6VectorIN3JSC11InstructionELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN3JSC17StructureStubInfoELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIPN3JSC12CallLinkInfoELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN3JSC10IdentifierELm0EE14shrinkCapacityEm
+__ZN3JSC11ParserArenaD1Ev
+__ZN3JSC11ResolveNodeD0Ev
+__ZN3JSC7SubNodeD0Ev
+__ZN3JSC10ReturnNodeD0Ev
+__ZN3JSC14SourceElementsD0Ev
+__ZN3JSC9BlockNodeD0Ev
+__ZN3JSC17BytecodeGeneratorD2Ev
+__ZN3WTF6VectorIN3JSC11InstructionELm0EEaSERKS3_
+__ZThn16_N3JSC11ProgramNodeD0Ev
+__ZN3JSC11ProgramNodeD0Ev
+__ZN3JSC13ParameterNodeD0Ev
+__ZN3JSC17ExprStatementNodeD0Ev
+__ZThn16_N3JSC12FuncExprNodeD0Ev
+__ZN3JSC12FuncExprNodeD0Ev
+__ZThn16_N3JSC16FunctionBodyNodeD0Ev
+__ZN3JSC16FunctionBodyNodeD0Ev
+__ZN3JSC9CodeBlockD1Ev
+__ZN3JSC9CodeBlockD2Ev
+__ZN3JSC21UStringSourceProviderD0Ev
+__ZN3WTF6VectorIN3JSC19ExpressionRangeInfoELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN3JSC8LineInfoELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN3JSC12FuncDeclNodeEEELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN3JSC15SimpleJumpTableELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE14shrinkCapacityEm
+__ZN3JSC15ParserArenaDataIN3WTF6VectorIPNS_12FuncDeclNodeELm0EEEED0Ev
+__ZN3JSC16ArgumentListNodeD0Ev
+__ZN3JSC13ArgumentsNodeD0Ev
+__ZN3JSC23FunctionCallResolveNodeD0Ev
+__ZN3JSC14JSGlobalObject13copyGlobalsToERNS_12RegisterFileE
+__ZN3JSC3JIT14privateCompileEv
+__ZN3JSC3JIT22privateCompileMainPassEv
+__ZN3JSC3JIT13emit_op_enterEPNS_11InstructionE
+__ZN3JSC3JIT16emit_op_new_funcEPNS_11InstructionE
+__ZN3JSC20MacroAssemblerX86_648storePtrENS_22AbstractMacroAssemblerINS_12X86AssemblerEE6ImmPtrENS3_15ImplicitAddressE
+__ZN3JSC11JITStubCall4callEj
+__ZN3WTF6VectorIN3JSC10CallRecordELm0EE14expandCapacityEm
+__ZN3JSC3JIT11emit_op_movEPNS_11InstructionE
+__ZN3JSC3JIT20emit_op_new_func_expEPNS_11InstructionE
+__ZN3JSC3JIT12emit_op_callEPNS_11InstructionE
+__ZN3JSC3JIT13compileOpCallENS_8OpcodeIDEPNS_11InstructionEj
+__ZN3WTF6VectorIN3JSC13SlowCaseEntryELm0EE14expandCapacityEm
+__ZN3JSC3JIT11emit_op_endEPNS_11InstructionE
+__ZN3JSC11JITStubCall4callEv
+__ZN3WTF6VectorIN3JSC9JumpTableELm0EE14shrinkCapacityEm
+__ZN3JSC3JIT23privateCompileSlowCasesEv
+__ZN3JSC3JIT16emitSlow_op_callEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT21compileOpCallSlowCaseEPNS_11InstructionERPNS_13SlowCaseEntryEjNS_8OpcodeIDE
+__ZN3JSC3JIT22compileOpCallSetupArgsEPNS_11InstructionE
+__ZN3JSC9CodeBlock10setJITCodeERNS_10JITCodeRefE
+__ZN3JSC17BytecodeGenerator18dumpsGeneratedCodeEv
+__ZN3WTF10RefCountedIN3JSC14ExecutablePoolEE5derefEv
+_ctiTrampoline
+__ZN3JSC8JITStubs15cti_op_new_funcEPPv
+__ZN3JSC12FuncDeclNode12makeFunctionEPNS_9ExecStateEPNS_14ScopeChainNodeE
+__ZN3JSC8JITStubs19cti_op_new_func_expEPPv
+__ZN3JSC12FuncExprNode12makeFunctionEPNS_9ExecStateEPNS_14ScopeChainNodeE
+__ZN3JSC8JITStubs22cti_op_call_JSFunctionEPPv
+__ZN3JSC16FunctionBodyNode15generateJITCodeEPNS_14ScopeChainNodeE
+__ZN3JSC10IfElseNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator8newLabelEv
+__ZN3JSC15DotAccessorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator11emitResolveEPNS_10RegisterIDERKNS_10IdentifierE
+__ZN3JSC17BytecodeGenerator18findScopedPropertyERKNS_10IdentifierERiRmbRPNS_8JSObjectE
+__ZNK3JSC16JSVariableObject16isVariableObjectEv
+__ZN3JSC17BytecodeGenerator16emitGetScopedVarEPNS_10RegisterIDEmiNS_7JSValueE
+__ZN3JSC17BytecodeGenerator11emitGetByIdEPNS_10RegisterIDES2_RKNS_10IdentifierE
+__ZN3WTF6VectorIN3JSC17StructureStubInfoELm0EE14expandCapacityEm
+__ZN3JSC17BytecodeGenerator11addConstantERKNS_10IdentifierE
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEiNS2_17IdentifierRepHashENS_10HashTraitsIS5_EENS2_17BytecodeGenerator28Identifi
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_iENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHa
+__ZN3JSC17BytecodeGenerator15emitJumpIfFalseEPNS_10RegisterIDEPNS_5LabelE
+__ZNK3JSC14JSGlobalObject14isDynamicScopeEv
+__ZN3JSC17BytecodeGenerator19emitResolveFunctionEPNS_10RegisterIDES2_RKNS_10IdentifierE
+__ZN3JSC10StringNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDERKNS_10IdentifierE
+__ZN3WTF9HashTableIPN3JSC7UString3RepESt4pairIS4_PNS1_8JSStringEENS_18PairFirstExtractorIS8_EENS1_17IdentifierRepHashENS_14Pair
+__ZN3JSC11BooleanNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator8emitJumpEPNS_5LabelE
+__ZN3JSC17BytecodeGenerator9emitLabelEPNS_5LabelE
+__ZN3WTF6VectorIjLm0EE15reserveCapacityEm
+__ZN3JSC6IfNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZNK3JSC13StatementNode12isReturnNodeEv
+__ZN3JSC15DotAccessorNodeD0Ev
+__ZN3JSC10StringNodeD0Ev
+__ZN3JSC11BooleanNodeD0Ev
+__ZN3JSC6IfNodeD0Ev
+__ZN3JSC10IfElseNodeD0Ev
+__ZN3JSC3JIT22emit_op_get_global_varEPNS_11InstructionE
+__ZN3JSC3JIT29emitGetVariableObjectRegisterENS_3X8610RegisterIDEiS2_
+__ZN3JSC3JIT17emit_op_get_by_idEPNS_11InstructionE
+__ZN3JSC3JIT21compileGetByIdHotPathEiiPNS_10IdentifierEj
+__ZN3WTF6VectorIN3JSC13SlowCaseEntryELm0EE14expandCapacityEmPKS2_
+__ZN3JSC3JIT14emit_op_jfalseEPNS_11InstructionE
+__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAssembler
+__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDES4_
+__ZN3WTF6VectorIN3JSC9JumpTableELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN3JSC9JumpTableELm0EE14expandCapacityEm
+__ZN3JSC3JIT20emit_op_resolve_funcEPNS_11InstructionE
+__ZN3JSC3JIT11emit_op_jmpEPNS_11InstructionE
+__ZN3JSC3JIT11emit_op_retEPNS_11InstructionE
+__ZN3JSC3JIT21emitSlow_op_get_by_idEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT22compileGetByIdSlowCaseEiiPNS_10IdentifierERPNS_13SlowCaseEntryEj
+__ZN3JSC3JIT18emitSlow_op_jfalseEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC23MacroAssemblerX86Common12branchTest32ENS0_9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAssemblerINS_12X86Assemble
+__ZN3JSC8JITStubs23cti_vm_dontLazyLinkCallEPPv
+__ZN3JSC31ctiPatchNearCallByReturnAddressENS_22AbstractMacroAssemblerINS_12X86AssemblerEE22ProcessorReturnAddressEPv
+__ZN3JSC8JITStubs23cti_register_file_checkEPPv
+__ZN3JSC8JITStubs16cti_op_get_by_idEPPv
+__ZNK3JSC7JSValue3getEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC23setUpStaticFunctionSlotEPNS_9ExecStateEPKNS_9HashEntryEPNS_8JSObjectERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC27ctiPatchCallByReturnAddressENS_22AbstractMacroAssemblerINS_12X86AssemblerEE22ProcessorReturnAddressEPv
+__ZN3JSC8JITStubs12cti_op_jtrueEPPv
+__ZNK3JSC8JSObject9toBooleanEPNS_9ExecStateE
+__ZN3JSC8JITStubs19cti_op_resolve_funcEPPv
+__ZNK3JSC8JSObject12toThisObjectEPNS_9ExecStateE
+__ZNK3JSC8JSString8toStringEPNS_9ExecStateE
+__ZN3JSC8JITStubs23cti_op_get_by_id_secondEPPv
+__ZN3JSC8JITStubs15tryCacheGetByIDEPNS_9ExecStateEPNS_9CodeBlockEPvNS_7JSValueERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSC3JIT26privateCompileGetByIdProtoEPNS_17StructureStubInfoEPNS_9StructureES4_mNS_22AbstractMacroAssemblerINS_12X86Assembl
+__ZN3JSC3JIT22compileGetDirectOffsetEPNS_8JSObjectENS_3X8610RegisterIDES4_m
+__ZN3JSC8JITStubs19cti_vm_lazyLinkCallEPPv
+__ZN3JSC3JIT8linkCallEPNS_10JSFunctionEPNS_9CodeBlockENS_7JITCodeEPNS_12CallLinkInfoEi
+__ZN3JSC8JITStubs10cti_op_endEPPv
+__ZThn16_N3JSC12FuncDeclNodeD0Ev
+__ZN3JSC12FuncDeclNodeD0Ev
__ZN3WTF25TCMalloc_Central_FreeList11ShrinkCacheEib
-__ZN3WTF25TCMalloc_Central_FreeList18ReleaseListToSpansEPv
-__ZN3WTF15deleteAllValuesIPN3KJS16ParserRefCountedEKNS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEESA_EEEEvRT0_
-__ZN3KJS19BracketAccessorNodeD1Ev
-__ZN3KJS11ProgramNodeC2EPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS4_IPNS_12FuncDeclNodeELm16EEE
-__ZNK3KJS8JSObject8toObjectEPNS_9ExecStateE
-__ZN3KJS11ProgramNode7executeEPNS_9ExecStateE
-__ZN3KJS11ProgramNode21initializeSymbolTableEPNS_9ExecStateE
-__ZN3WTF6VectorImLm0EE6resizeEm
-__ZN3WTF6VectorImLm0EE14expandCapacityEm
-__ZN3WTF6VectorImLm0EE15reserveCapacityEm
-__ZN3WTF9HashTableINS_6RefPtrIN3KJS7UString3RepEEESt4pairIS5_mENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHashTraitsINS2_23IdentifierRepHashTraitsENS2_26SymbolTableIndexHashTraitsEEESC_E3addIS5_mNS_17HashMapTranslatorILb1ES7_NS_18PairBaseHashTraitsISC_SD_EESE_SA_EEEES6_INS_17HashTableIteratorIS5_S7_S9_SA_SE_SC_EEbERKT_RKT0_
-__ZN3WTF9HashTableINS_6RefPtrIN3KJS7UString3RepEEESt4pairIS5_mENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHashTraitsINS2_23IdentifierRepHashTraitsENS2_26SymbolTableIndexHashTraitsEEESC_E6rehashEi
-__ZN3KJS14JSGlobalObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZNK3WTF7HashMapINS_6RefPtrIN3KJS7UString3RepEEEmNS2_17IdentifierRepHashENS2_23IdentifierRepHashTraitsENS2_26SymbolTableIndexHashTraitsEE3getEPS4_
-__ZN3KJS11PropertyMap11getLocationERKNS_10IdentifierE
-__ZN3KJS6Lookup9findEntryEPKNS_9HashTableERKNS_10IdentifierE
-__ZNK3KJS7UString14toStrictUInt32EPb
-__ZN3KJS8JSObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3WTF6VectorIN3KJS17LocalStorageEntryELm32EE15reserveCapacityEm
-__ZN3KJS11FunctionImpC2EPNS_9ExecStateERKNS_10IdentifierEPNS_16FunctionBodyNodeERKNS_10ScopeChainE
-__ZN3KJS15ObjectObjectImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS9ScopeNode22optimizeVariableAccessEPNS_9ExecStateE
-__ZN3WTF6VectorIPN3KJS4NodeELm16EE14expandCapacityEm
-__ZN3WTF6VectorIPN3KJS4NodeELm16EE15reserveCapacityEm
-__ZN3KJS16VarStatementNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS17AssignResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS17ObjectLiteralNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS16PropertyListNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS12PropertyNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS4Node22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPS0_Lm16EEE
-__ZN3KJS14LogicalNotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS14LogicalAndNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS15DotAccessorNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS11ResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS11GreaterNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS19FunctionCallDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS13ArgumentsNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS16ArgumentListNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS9EqualNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS18NotStrictEqualNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS6IfNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS17ExprStatementNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS13AssignDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS13LogicalOrNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS8WithNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS9BlockNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS23FunctionCallResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS21FunctionCallValueNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS9ArrayNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS11ElementNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS10IfElseNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS7AddNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS6InNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS11NewExprNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS16VarStatementNode7executeEPNS_9ExecStateE
-__ZN3KJS18AssignLocalVarNode8evaluateEPNS_9ExecStateE
-__ZN3KJS17ObjectLiteralNode8evaluateEPNS_9ExecStateE
-__ZN3KJS16PropertyListNode8evaluateEPNS_9ExecStateE
-__ZN3KJS10StringNode8evaluateEPNS_9ExecStateE
-__ZN3KJS13jsOwnedStringERKNS_7UStringE
-__ZN3KJS8JSObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZN3KJS14LogicalNotNode8evaluateEPNS_9ExecStateE
-__ZN3KJS14LogicalNotNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS14LogicalAndNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS15DotAccessorNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS11ResolveNode8evaluateEPNS_9ExecStateE
-__ZN3KJS11GreaterNode8evaluateEPNS_9ExecStateE
-__ZN3KJS19FunctionCallDotNode8evaluateEPNS_9ExecStateE
-__ZN3KJS15DotAccessorNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS9ExecState19lexicalGlobalObjectEv
-__ZNK3KJS9StringImp8toObjectEPNS_9ExecStateE
-__ZN3KJS14StringInstance18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS15StringPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS20staticFunctionGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS17PrototypeFunctionC1EPNS_9ExecStateEiRKNS_10IdentifierEPFPNS_7JSValueES2_PNS_8JSObjectERKNS_4ListEE
-__ZNK3KJS19InternalFunctionImp14implementsCallEv
-__ZN3KJS16ArgumentListNode12evaluateListEPNS_9ExecStateERNS_4ListE
-__ZN3KJS17PrototypeFunction14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS22stringProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS14StringInstance9classInfoEv
-__ZNK3KJS9StringImp8toStringEPNS_9ExecStateE
-__ZNK3KJS7JSValue9toIntegerEPNS_9ExecStateE
-__ZNK3KJS7UString4findERKS0_i
-__ZN3KJS19ImmediateNumberNode8evaluateEPNS_9ExecStateE
-__ZN3KJS14LogicalAndNode8evaluateEPNS_9ExecStateE
-__ZN3KJS9EqualNode8evaluateEPNS_9ExecStateE
-__ZN3KJS5equalEPNS_9ExecStateEPNS_7JSValueES3_
-__ZN3KJS19FunctionCallDotNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS10RegExpNode8evaluateEPNS_9ExecStateE
-__ZN3KJS15RegExpObjectImp15createRegExpImpEPNS_9ExecStateEN3WTF10PassRefPtrINS_6RegExpEEE
-__ZN3KJS20stringProtoFuncMatchEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS9RegExpImp9classInfoEv
-__ZN3KJS15RegExpObjectImp12performMatchEPNS_6RegExpERKNS_7UStringEiRiS6_PPi
-__ZN3KJS6RegExp5matchERKNS_7UStringEiPN3WTF11OwnArrayPtrIiEE
-__Z5matchPKtPKhiR9MatchData
-__ZNK3KJS8JSObject9toBooleanEPNS_9ExecStateE
-__ZN3KJS18NotStrictEqualNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS7UString8toUInt32EPbb
-__ZNK3KJS7UString8toDoubleEbb
-__ZN3KJS11strictEqualEPNS_9ExecStateEPNS_7JSValueES3_
-__ZN3KJS12FuncExprNode8evaluateEPNS_9ExecStateE
-__ZN3KJS14JSGlobalObject17tearOffActivationEPNS_9ExecStateEb
-__ZN3KJS6IfNode7executeEPNS_9ExecStateE
-__ZN3KJS18LocalVarAccessNode8evaluateEPNS_9ExecStateE
-__ZN3KJS17ExprStatementNode7executeEPNS_9ExecStateE
-__ZN3KJS13AssignDotNode8evaluateEPNS_9ExecStateE
-__ZN3KJS11FunctionImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS17FunctionExecStateC1EPNS_14JSGlobalObjectEPNS_8JSObjectEPNS_16FunctionBodyNodeEPNS_9ExecStateEPNS_11FunctionImpERKNS_4ListE
-__ZN3KJS14JSGlobalObject14pushActivationEPNS_9ExecStateE
-__ZN3KJS13ActivationImp4initEPNS_9ExecStateE
-__ZN3KJS16FunctionBodyNode7executeEPNS_9ExecStateE
-__ZN3KJS16FunctionBodyNode21initializeSymbolTableEPNS_9ExecStateE
-__ZN3KJS9ForInNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS17AssignBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS19BracketAccessorNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS10ReturnNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS9ForInNode7executeEPNS_9ExecStateE
-__ZN3KJS8JSObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE
-__ZNK3KJS11PropertyMap26getEnumerablePropertyNamesERNS_17PropertyNameArrayE
-__ZNK3KJS8JSObject9classInfoEv
-__ZN3KJS13ActivationImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS13ActivationImp3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZN3KJS17AssignBracketNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS6JSCell9getUInt32ERj
-__ZN3KJS19BracketAccessorNode8evaluateEPNS_9ExecStateE
-__ZN3KJS10ReturnNode7executeEPNS_9ExecStateE
-__ZN3KJS14JSGlobalObject13popActivationEv
-__ZN3KJS11FunctionImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS10NumberNode8evaluateEPNS_9ExecStateE
-__ZN3KJS9CommaNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS13ActivationImpC1ERKNS0_14ActivationDataEb
-__ZN3WTF6VectorIN3KJS17LocalStorageEntryELm32EEC2ERKS3_
-__ZN3KJS13ActivationImp15argumentsGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS13ActivationImp21createArgumentsObjectEPNS_9ExecStateE
-__ZN3KJS9ArgumentsC2EPNS_9ExecStateEPNS_11FunctionImpERKNS_4ListEPNS_13ActivationImpE
-__ZN3KJS14IndexToNameMapC2EPNS_11FunctionImpERKNS_4ListE
-__ZN3KJS11FunctionImp16getParameterNameEi
-__ZN3KJS7UString4fromEj
-__ZN3KJS9Arguments18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS9CommaNode8evaluateEPNS_9ExecStateE
-__ZN3KJS8ThisNode8evaluateEPNS_9ExecStateE
-__ZN3KJS23FunctionCallResolveNode8evaluateEPNS_9ExecStateE
-__ZN3KJS9WhileNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS18PostDecResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS18LocalVarAccessNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS13LogicalOrNode8evaluateEPNS_9ExecStateE
-__ZN3KJS11NewExprNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS14ArrayObjectImp19implementsConstructEv
-__ZN3KJS14ArrayObjectImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS9WhileNode7executeEPNS_9ExecStateE
-__ZN3KJS19PostDecLocalVarNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS8JSObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
-__ZN3KJS13ArrayInstance3putEPNS_9ExecStateEjPNS_7JSValueEi
-__ZN3KJS15RegExpObjectImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS15RegExpObjectImp3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZN3KJS7ForNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS8LessNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS17PreIncResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS8NullNode8evaluateEPNS_9ExecStateE
-__ZN3KJS13ArrayInstance18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
-__ZN3KJS17TypeOfResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS18LocalVarTypeOfNode8evaluateEPNS_9ExecStateE
-__ZN3KJS18typeStringForValueEPNS_7JSValueE
-__ZNK3KJS8JSObject21masqueradeAsUndefinedEv
-__ZNK3KJS8JSObject14implementsCallEv
-__ZN3KJS12FuncDeclNode7executeEPNS_9ExecStateE
-__ZN3KJS11FunctionImp3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZN3KJS9ArrayNode8evaluateEPNS_9ExecStateE
-__ZN3KJS13ArrayInstanceC2EPNS_8JSObjectERKNS_4ListE
-__ZN3KJS13ArrayInstance3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZN3KJS13ArrayInstance9setLengthEj
-__ZN3KJS7ForNode7executeEPNS_9ExecStateE
-__ZN3KJS8LessNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS13ArrayInstance18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS13ArrayInstance12lengthGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS14ArrayPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS18arrayProtoFuncPushEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS8TrueNode8evaluateEPNS_9ExecStateE
-__ZN3KJS9BlockNode7executeEPNS_9ExecStateE
-__ZN3KJS18PreIncLocalVarNode8evaluateEPNS_9ExecStateE
-__ZN3KJS14StringInstance3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZN3KJS13LogicalOrNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS8WithNode7executeEPNS_9ExecStateE
-__ZN3KJS15NumberObjectImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS24LocalVarFunctionCallNode8evaluateEPNS_9ExecStateE
-__ZN3KJS15ConditionalNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS22stringProtoFuncReplaceEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS7replaceEPNS_9ExecStateEPNS_9StringImpEPNS_7JSValueES5_
-__ZNK3KJS7UString30spliceSubstringsWithSeparatorsEPKNS0_5RangeEiPKS0_i
-__ZN3KJS15ConditionalNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS9StringImp9toBooleanEPNS_9ExecStateE
-__ZN3KJS20stringProtoFuncSplitEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS7UString6substrEii
-__ZN3KJS7UString3Rep6createEN3WTF10PassRefPtrIS1_EEii
-__ZN3KJS7TryNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS15LessNumbersNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS15DotAccessorNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS10NumberNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS7TryNode7executeEPNS_9ExecStateE
-__ZN3KJS21arrayProtoFuncForEachEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS18PostIncResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS18PostIncResolveNode8evaluateEPNS_9ExecStateE
-__ZN3KJS13ActivationImp18isActivationObjectEv
-__ZN3KJS13MathObjectImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS21FunctionCallValueNode8evaluateEPNS_9ExecStateE
-__ZN3KJS12NotEqualNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS9FalseNode8evaluateEPNS_9ExecStateE
-__ZN3KJS19arrayProtoFuncShiftEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS13ArrayInstance14deletePropertyEPNS_9ExecStateEj
-__ZNK3KJS11FunctionImp19implementsConstructEv
-__ZN3KJS11FunctionImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS9EqualNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS25functionProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS11FunctionImp9classInfoEv
-__ZNK3KJS4Node8toStringEv
-__ZNK3KJS9ScopeNode8streamToERNS_12SourceStreamE
-__ZN3KJS7UString6appendEt
-__ZN3KJS7UString6appendERKS0_
-__ZN3KJS7UString6appendEPKc
-__ZN3KJS7UString14expandCapacityEi
-__ZN3KJS12SourceStreamlsEPKNS_4NodeE
-__ZNK3KJS17ExprStatementNode8streamToERNS_12SourceStreamE
-__ZNK3KJS4Node21needsParensIfLeftmostEv
-__ZNK3KJS23FunctionCallResolveNode8streamToERNS_12SourceStreamE
-__ZNK3KJS13ArgumentsNode8streamToERNS_12SourceStreamE
-__ZNK3KJS16ArgumentListNode8streamToERNS_12SourceStreamE
-__ZNK3KJS11ResolveNode10precedenceEv
-__ZNK3KJS11ResolveNode8streamToERNS_12SourceStreamE
-__ZNK3KJS13AssignDotNode8streamToERNS_12SourceStreamE
-__ZNK3KJS8ThisNode10precedenceEv
-__ZNK3KJS8ThisNode8streamToERNS_12SourceStreamE
-__ZNK3KJS19FunctionCallDotNode10precedenceEv
-__ZNK3KJS19FunctionCallDotNode8streamToERNS_12SourceStreamE
-__ZNK3KJS16FunctionBodyNode11paramStringEv
-__ZNK3KJS15RegExpObjectImp14arrayOfMatchesEPNS_9ExecStateE
-__ZN3KJS9Arguments17mappedIndexGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS19arrayProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS22functionProtoFuncApplyEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS13ArrayInstance9classInfoEv
-__ZN3KJS24substituteBackreferencesERKNS_7UStringES2_PiPNS_6RegExpE
-__ZNK3KJS15DotAccessorNode10precedenceEv
-__ZNK3KJS15DotAccessorNode8streamToERNS_12SourceStreamE
-__ZNK3KJS16VarStatementNode8streamToERNS_12SourceStreamE
-__ZNK3KJS17AssignResolveNode8streamToERNS_12SourceStreamE
-__ZNK3KJS6IfNode8streamToERNS_12SourceStreamE
-__ZNK3KJS14LogicalNotNode8streamToERNS_12SourceStreamE
-__ZNK3KJS9ArrayNode10precedenceEv
-__ZNK3KJS9ArrayNode8streamToERNS_12SourceStreamE
-__ZNK3KJS11ElementNode8streamToERNS_12SourceStreamE
-__ZNK3KJS10StringNode10precedenceEv
-__ZNK3KJS10StringNode8streamToERNS_12SourceStreamE
-__ZN3KJS29escapeStringForPrettyPrintingERKNS_7UStringE
-__ZNK3KJS9BlockNode8streamToERNS_12SourceStreamE
-__ZNK3KJS17AssignBracketNode8streamToERNS_12SourceStreamE
-__ZNK3KJS10IfElseNode8streamToERNS_12SourceStreamE
-__ZNK3KJS9EqualNode8streamToERNS_12SourceStreamE
-__ZNK3KJS9EqualNode10precedenceEv
-__ZN3KJS35streamLeftAssociativeBinaryOperatorERNS_12SourceStreamENS_10PrecedenceEPKcPKNS_4NodeES7_
-__ZNK3KJS17ReadModifyDotNode8streamToERNS_12SourceStreamE
-__ZNK3KJS7AddNode10precedenceEv
-__ZNK3KJS7AddNode8streamToERNS_12SourceStreamE
-__ZNK3KJS15ConditionalNode10precedenceEv
-__ZNK3KJS15ConditionalNode8streamToERNS_12SourceStreamE
-__ZNK3KJS10RegExpNode10precedenceEv
-__ZNK3KJS10RegExpNode8streamToERNS_12SourceStreamE
-__ZNK3KJS21ReadModifyResolveNode8streamToERNS_12SourceStreamE
-__ZNK3KJS7TryNode8streamToERNS_12SourceStreamE
-__ZNK3KJS11NewExprNode10precedenceEv
-__ZNK3KJS11NewExprNode8streamToERNS_12SourceStreamE
-__ZNK3KJS10NumberNode10precedenceEv
-__ZNK3KJS10NumberNode8streamToERNS_12SourceStreamE
-__ZN3KJS12SourceStreamlsEd
-__ZNK3KJS13LogicalOrNode10precedenceEv
-__ZNK3KJS13LogicalOrNode8streamToERNS_12SourceStreamE
-__ZNK3KJS8NullNode10precedenceEv
-__ZNK3KJS8NullNode8streamToERNS_12SourceStreamE
-__ZNK3KJS14LogicalAndNode8streamToERNS_12SourceStreamE
-__ZNK3KJS14LogicalAndNode10precedenceEv
-__ZNK3KJS14LogicalNotNode10precedenceEv
-__ZN3KJS7UString17expandPreCapacityEi
-__ZN3KJS19BracketAccessorNode17evaluateToBooleanEPNS_9ExecStateE
-__ZNK3KJS11GreaterNode10precedenceEv
-__ZNK3KJS11GreaterNode8streamToERNS_12SourceStreamE
-__ZNK3KJS17ObjectLiteralNode10precedenceEv
-__ZNK3KJS17ObjectLiteralNode8streamToERNS_12SourceStreamE
-__ZNK3KJS16PropertyListNode8streamToERNS_12SourceStreamE
-__ZNK3KJS12PropertyNode8streamToERNS_12SourceStreamE
-__ZNK3KJS8LessNode10precedenceEv
-__ZNK3KJS8LessNode8streamToERNS_12SourceStreamE
-__ZNK3KJS19BracketAccessorNode10precedenceEv
-__ZNK3KJS19BracketAccessorNode8streamToERNS_12SourceStreamE
-__ZNK3KJS15TypeOfValueNode10precedenceEv
-__ZNK3KJS15TypeOfValueNode8streamToERNS_12SourceStreamE
-__ZNK3KJS7ForNode8streamToERNS_12SourceStreamE
-__ZNK3KJS9CommaNode8streamToERNS_12SourceStreamE
-__ZNK3KJS17AssignResolveNode10precedenceEv
-__ZNK3KJS23FunctionCallResolveNode10precedenceEv
-__ZNK3KJS12FuncExprNode10precedenceEv
-__ZNK3KJS12FuncExprNode8streamToERNS_12SourceStreamE
-__ZNK3KJS13ParameterNode8streamToERNS_12SourceStreamE
-__ZNK3KJS9ForInNode8streamToERNS_12SourceStreamE
-__ZNK3KJS10ReturnNode8streamToERNS_12SourceStreamE
-__ZNK3KJS13GreaterEqNode10precedenceEv
-__ZNK3KJS13GreaterEqNode8streamToERNS_12SourceStreamE
-__ZNK3KJS8TrueNode10precedenceEv
-__ZNK3KJS8TrueNode8streamToERNS_12SourceStreamE
-__ZNK3KJS21FunctionCallValueNode8streamToERNS_12SourceStreamE
-__ZN3KJS11ElementNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS8MultNode10precedenceEv
-__ZNK3KJS8MultNode8streamToERNS_12SourceStreamE
-__ZN3KJS21functionProtoFuncCallEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS4List8getSliceEiRS0_
-__ZN3KJS10IfElseNode7executeEPNS_9ExecStateE
-__ZN3KJS6InNode17evaluateToBooleanEPNS_9ExecStateE
-__ZNK3KJS12NotEqualNode10precedenceEv
-__ZNK3KJS12NotEqualNode8streamToERNS_12SourceStreamE
-__ZN3KJS17AssignResolveNode8evaluateEPNS_9ExecStateE
-__ZN3KJS13DeleteDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS12ContinueNode7executeEPNS_9ExecStateE
-__ZN3KJS13DeleteDotNode8evaluateEPNS_9ExecStateE
-__ZN3KJS11FunctionImp14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3KJS8JSObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
-__ZNK3KJS11PropertyMap3getERKNS_10IdentifierERj
-__ZN3KJS11GreaterNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS13PrefixDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS13PreIncDotNode8evaluateEPNS_9ExecStateE
-__ZN3KJS14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZNK3KJS8JSObject8toStringEPNS_9ExecStateE
-__ZNK3KJS8JSObject11toPrimitiveEPNS_9ExecStateENS_6JSTypeE
-__ZNK3KJS8JSObject12defaultValueEPNS_9ExecStateENS_6JSTypeE
-__ZN3KJS22arrayProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E3addIPN3KJS16RuntimeObjectImpESB_NS_17HashSetTranslatorILb1ESB_NS5_ISB_EES6_NS_7PtrHashISB_EEEEEESt4pairINS_17HashTableIteratorIiiS2_S4_S6_S6_EEbERKT_RKT0_
-__ZN3KJS11JSImmediate8toStringEPKNS_7JSValueE
-__ZN3KJS12NotEqualNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS21arrayProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS14ErrorObjectImp19implementsConstructEv
-__ZN3KJS14ErrorObjectImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS9Collector7collectEv
-__ZN3KJS9Collector31markCurrentThreadConservativelyEv
-__ZN3KJS9Collector30markStackObjectsConservativelyEPvS1_
-__ZN3KJS6JSCell4markEv
-__ZN3KJS8JSObject4markEv
-__ZNK3KJS11PropertyMap4markEv
-__ZN3KJS11FunctionImp4markEv
-__ZN3KJS14JSGlobalObject4markEv
-__ZN3KJS16JSVariableObject4markEv
-__ZN3KJS13ArrayInstance4markEv
-__ZN3KJS15JSWrapperObject4markEv
-__ZN3KJS13ActivationImp4markEv
-__ZN3KJS13ActivationImp12markChildrenEv
-__ZN3KJS14NativeErrorImp4markEv
-__ZN3KJS9Arguments4markEv
-__ZN3KJS9Collector20markProtectedObjectsEv
-__ZN3KJS9Collector5sweepILNS0_8HeapTypeE0EEEmb
-__ZN3KJS11PropertyMapD1Ev
-__ZN3KJS11FunctionImpD0Ev
-__ZN3KJS9StringImpD0Ev
-__ZN3KJS9RegExpImpD0Ev
-__ZN3KJS13ArrayInstanceD0Ev
-__ZN3KJS9ArgumentsD0Ev
-__ZN3KJS9Collector5sweepILNS0_8HeapTypeE1EEEmb
-__ZN3KJS14AddStringsNode8evaluateEPNS_9ExecStateE
-__ZN3KJS17AddStringLeftNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS9StringImp11toPrimitiveEPNS_9ExecStateENS_6JSTypeE
-__ZN3KJS7AddNode8evaluateEPNS_9ExecStateE
-__ZN3KJS21stringProtoFuncCharAtEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS26stringProtoFuncToUpperCaseEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS24stringProtoFuncSubstringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS26stringProtoFuncToLowerCaseEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS7UString8toUInt32EPb
-__ZN3KJS22ReadModifyLocalVarNode8evaluateEPNS_9ExecStateE
-__ZN3KJS19PostIncLocalVarNode8evaluateEPNS_9ExecStateE
-__ZN3KJS17PreDecResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS18PreDecLocalVarNode8evaluateEPNS_9ExecStateE
-__ZN3KJS8MultNode16evaluateToNumberEPNS_9ExecStateE
-__ZNK3KJS9NumberImp4typeEv
-__ZN3KJS20dateProtoFuncSetTimeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS7SubNode16evaluateToNumberEPNS_9ExecStateE
-__ZNK3KJS9StringImp8toNumberEPNS_9ExecStateE
-__ZN3KJS18globalFuncParseIntEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS7JSValue15toInt32SlowCaseEPNS_9ExecStateERb
-__ZN3KJS24dateProtoFuncToGMTStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS10formatTimeERKNS_17GregorianDateTimeEb
-__ZNK3KJS15RegExpObjectImp19implementsConstructEv
-__ZN3KJS15RegExpObjectImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS19regExpProtoFuncExecEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS14StringInstance18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
-__ZN3KJS35stringInstanceNumericPropertyGetterEPNS_9ExecStateEPNS_8JSObjectEjRKNS_12PropertySlotE
-__ZN3KJS23FunctionCallResolveNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS15globalFuncIsNaNEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS20dateProtoFuncSetYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS21gregorianDateTimeToMSERKNS_17GregorianDateTimeEdb
-__ZN3KJS15dateToDayInYearEiii
-__ZN3KJS21ReadModifyBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZNK3KJS15ObjectObjectImp19implementsConstructEv
-__ZN3KJS21ReadModifyBracketNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS9ExecState12hadExceptionEv
-__ZNK3KJS7JSValue8toObjectEPNS_9ExecStateE
-__ZNK3KJS7JSValue8toStringEPNS_9ExecStateE
-__ZN3KJS7UStringD1Ev
-__ZN3KJS8JSObject15getPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZNK3KJS12PropertySlot8getValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierE
-__ZNK3WTF6RefPtrIN3KJS14ExpressionNodeEE3getEv
-__ZN3KJS3addEPNS_9ExecStateEPNS_7JSValueES3_
-__ZN3KJS10IdentifierD1Ev
-__ZNK3KJS8JSObject3getEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3KJS20arrayProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS14ExpressionNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS9BreakNode7executeEPNS_9ExecStateE
-__ZN3KJS18arrayProtoFuncJoinEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS11JSImmediate8toObjectEPKNS_7JSValueEPNS_9ExecStateE
-__ZN3KJS10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKc
-__ZN3KJS5Error6createEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringEiiS6_
-__ZN3KJS14NativeErrorImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZNK3KJS6JSCell17getTruncatedInt32ERi
-__ZN3KJS15StringObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS9Collector15recordExtraCostEm
-__ZN3KJS22objectProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS8JSObject9classNameEv
-__ZN3KJS14PostDecDotNode8evaluateEPNS_9ExecStateE
-__ZN3KJS9CommaNodeD1Ev
-__ZN3KJS28globalFuncDecodeURIComponentEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS6decodeEPNS_9ExecStateERKNS_4ListEPKcb
-__ZN3KJS19BracketAccessorNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS15TypeOfValueNodeD1Ev
-__ZN3KJS17PrototypeFunctionD0Ev
-__ZN3KJS13ErrorInstanceD0Ev
-__ZN3KJS18mathProtoFuncRoundEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS23FunctionCallResolveNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS13GreaterEqNodeD1Ev
-__ZN3KJS7ModNodeD1Ev
-__ZN3KJS24LocalVarFunctionCallNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS4List15expandAndAppendEPNS_7JSValueE
-__ZN3WTF6VectorIPN3KJS7JSValueELm8EE15reserveCapacityEm
-__ZN3KJS10SwitchNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS13CaseBlockNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS14ClauseListNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS14CaseClauseNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS10SwitchNode7executeEPNS_9ExecStateE
-__ZN3KJS13CaseBlockNode12executeBlockEPNS_9ExecStateEPNS_7JSValueE
-__ZN3KJS18NotStrictEqualNode17evaluateToBooleanEPNS_9ExecStateE
-__Z23_NPN_CreateScriptObjectP4_NPPPN3KJS8JSObjectEN3WTF10PassRefPtrINS1_8Bindings10RootObjectEEE
-__NPN_CreateObject
-__Z10jsAllocateP4_NPPP7NPClass
-__NPN_RetainObject
-__NPN_Evaluate
-__ZNK3KJS8Bindings10RootObject12globalObjectEv
-__ZN3KJS8Bindings22convertNPStringToUTF16EPK9_NPStringPPtPj
-__ZN3KJS8Bindings36convertUTF8ToUTF16WithLatin1FallbackEPKciPPtPj
-__ZN3WTF7Unicode18convertUTF8ToUTF16EPPKcS2_PPtS4_b
-__ZN3KJS11Interpreter8evaluateEPNS_9ExecStateERKNS_7UStringEiS5_PNS_7JSValueE
-__ZN3KJS8Bindings23convertValueToNPVariantEPNS_9ExecStateEPNS_7JSValueEP10_NPVariant
-__ZN3KJS11JSImmediate4typeEPKNS_7JSValueE
-__NPN_GetStringIdentifier
-__ZN3KJS8Bindings26identifierFromNPIdentifierEPKc
-__NPN_Invoke
-__ZN3KJS8Bindings14findRootObjectEPNS_14JSGlobalObjectE
-__NPN_ReleaseVariantValue
-__ZNK3KJS7UString10UTF8StringEb
+__ZN3JSC10JSFunction18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC10JSFunction11getCallDataERNS_8CallDataE
+__ZN3JSC4callEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataES2_RKNS_7ArgListE
+__ZN3JSC11Interpreter7executeEPNS_16FunctionBodyNodeEPNS_9ExecStateEPNS_10JSFunctionEPNS_8JSObjectERKNS_7ArgListEPNS_14ScopeCha
+__ZNK3JSC15DotAccessorNode10isLocationEv
+__ZNK3JSC14ExpressionNode13isResolveNodeEv
+__ZNK3JSC14ExpressionNode21isBracketAccessorNodeEv
+__ZN3JSC19FunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC19FunctionCallDotNodeD0Ev
+__ZL26appendToVarDeclarationListPvRPN3JSC15ParserArenaDataIN3WTF6VectorISt4pairINS0_10IdentifierEjELm0EEEEERKS5_j
+__ZN3WTF6VectorISt4pairIN3JSC10IdentifierEjELm0EE14expandCapacityEm
+__ZL14makeAssignNodePvPN3JSC14ExpressionNodeENS0_8OperatorES2_bbiii
+__ZL11makeAddNodePvPN3JSC14ExpressionNodeES2_b
+__ZN3JSC16VarStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17AssignResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC11UnaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC10RegExpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC6RegExp6createEPNS_12JSGlobalDataERKNS_7UStringES5_
+__ZN3JSC4Yarr15jitCompileRegexEPNS_12JSGlobalDataERNS0_14RegexCodeBlockERKNS_7UStringERjRPKcbb
+__ZN3JSC4Yarr12compileRegexERKNS_7UStringERNS0_12RegexPatternE
+__ZN3JSC4Yarr18PatternDisjunction17addNewAlternativeEv
+__ZN3WTF6VectorIPN3JSC4Yarr18PatternAlternativeELm0EE14expandCapacityEm
+__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE11parseTokensEv
+__ZN3WTF6VectorIN3JSC4Yarr11PatternTermELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIN3JSC4Yarr11PatternTermELm0EE14expandCapacityEm
+__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE11parseEscapeILb0ES2_EEbRT0_
+__ZN3JSC4Yarr23RegexPatternConstructor25atomBuiltInCharacterClassENS0_23BuiltInCharacterClassIDEb
+__ZN3JSC4Yarr14wordcharCreateEv
+__ZN3WTF6VectorItLm0EE14expandCapacityEm
+__ZN3WTF6VectorIN3JSC4Yarr14CharacterRangeELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIN3JSC4Yarr14CharacterRangeELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN3JSC4Yarr14CharacterClassELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorIPN3JSC4Yarr14CharacterClassELm0EE14expandCapacityEm
+__ZN3JSC4Yarr14RegexGenerator19generateDisjunctionEPNS0_18PatternDisjunctionE
+__ZN3JSC12X86Assembler7addl_irEiNS_3X8610RegisterIDE
+__ZN3JSC23MacroAssemblerX86Common8branch32ENS0_9ConditionENS_3X8610RegisterIDES3_
+__ZN3JSC22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpList6appendENS2_4JumpE
+__ZN3JSC4Yarr14RegexGenerator12generateTermERNS1_19TermGenerationStateE
+__ZN3JSC23MacroAssemblerX86Common8branch32ENS0_9ConditionENS_3X8610RegisterIDENS_22AbstractMacroAssemblerINS_12X86AssemblerEE5I
+__ZN3JSC4Yarr14RegexGenerator19TermGenerationState15jumpToBacktrackENS_22AbstractMacroAssemblerINS_12X86AssemblerEE4JumpEPNS_14
+__ZN3JSC4Yarr14RegexGenerator13readCharacterEiNS_3X8610RegisterIDE
+__ZN3JSC4Yarr14RegexGenerator19matchCharacterClassENS_3X8610RegisterIDERNS_22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpLis
+__ZN3JSC4Yarr14RegexGenerator24matchCharacterClassRangeENS_3X8610RegisterIDERNS_22AbstractMacroAssemblerINS_12X86AssemblerEE8Ju
+__ZN3JSC22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpList4linkEPS2_
+__ZN3JSC23MacroAssemblerX86Common4jumpEv
+__ZN3WTF6VectorIN3JSC22AbstractMacroAssemblerINS1_12X86AssemblerEE4JumpELm16EED1Ev
+__ZN3JSC4Yarr14RegexGenerator28generateCharacterClassGreedyERNS1_19TermGenerationStateE
+__ZN3JSC12X86Assembler7subl_irEiNS_3X8610RegisterIDE
+__ZN3JSC15AssemblerBuffer4growEv
+__ZN3WTF15deleteAllValuesIPN3JSC4Yarr14CharacterClassELm0EEEvRKNS_6VectorIT_XT0_EEE
+__ZN3JSC17BytecodeGenerator13emitNewRegExpEPNS_10RegisterIDEPNS_6RegExpE
+__ZN3JSC15ConditionalNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC9EqualNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZNK3JSC14ExpressionNode6isNullEv
+__ZNK3JSC10StringNode6isPureERNS_17BytecodeGeneratorE
+__ZN3JSC19BracketAccessorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZNK3JSC10NumberNode6isPureERNS_17BytecodeGeneratorE
+__ZN3JSC10NumberNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator8emitLoadEPNS_10RegisterIDEd
+__ZN3JSC17BytecodeGenerator12emitGetByValEPNS_10RegisterIDES2_S2_
+__ZN3JSC17BytecodeGenerator14emitEqualityOpENS_8OpcodeIDEPNS_10RegisterIDES3_S3_
+__ZN3JSC19ReverseBinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZNK3JSC14ExpressionNode5isAddEv
+__ZN3JSC12SmallStrings27createSingleCharacterStringEPNS_12JSGlobalDataEh
+__ZN3JSC13AssignDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator11emitPutByIdEPNS_10RegisterIDERKNS_10IdentifierES2_
+__ZN3JSC17AssignResolveNodeD0Ev
+__ZN3JSC15ParserArenaDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEED0Ev
+__ZN3JSC16VarStatementNodeD0Ev
+__ZN3JSC14LogicalNotNodeD0Ev
+__ZN3JSC10RegExpNodeD0Ev
+__ZN3JSC10NumberNodeD0Ev
+__ZN3JSC19BracketAccessorNodeD0Ev
+__ZN3JSC9EqualNodeD0Ev
+__ZN3JSC15ConditionalNodeD0Ev
+__ZN3JSC7AddNodeD0Ev
+__ZN3JSC13GreaterEqNodeD0Ev
+__ZN3JSC13AssignDotNodeD0Ev
+__ZN3JSC3JIT13emit_op_jtrueEPNS_11InstructionE
+__ZN3JSC3JIT18emit_op_new_regexpEPNS_11InstructionE
+__ZN3JSC3JIT18emit_op_get_by_valEPNS_11InstructionE
+__ZN3JSC3JIT10emit_op_eqEPNS_11InstructionE
+__ZN3JSC3JIT11emit_op_addEPNS_11InstructionE
+__ZN3JSC11JITStubCall11addArgumentEjNS_3X8610RegisterIDE
+__ZN3JSC3JIT16emit_op_jnlesseqEPNS_11InstructionE
+__ZN3JSC3JIT17emit_op_put_by_idEPNS_11InstructionE
+__ZN3JSC3JIT21compilePutByIdHotPathEiPNS_10IdentifierEij
+__ZN3JSC3JIT17emitSlow_op_jtrueEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT22emitSlow_op_get_by_valEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT14emitSlow_op_eqEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT20emitSlow_op_jnlesseqEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC20MacroAssemblerX86_6413branchTestPtrENS_23MacroAssemblerX86Common9ConditionENS_3X8610RegisterIDES4_
+__ZN3JSC12X86Assembler23X86InstructionFormatter9twoByteOpENS0_15TwoByteOpcodeIDEiNS_3X8610RegisterIDE
+__ZN3JSC23MacroAssemblerX86Common12branchDoubleENS0_15DoubleConditionENS_3X8613XMMRegisterIDES3_
+__ZN3JSC3JIT21emitSlow_op_put_by_idEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT22compilePutByIdSlowCaseEiPNS_10IdentifierEiRPNS_13SlowCaseEntryEj
+__ZN3JSC13LogicalOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3WTF6VectorIN3JSC17GlobalResolveInfoELm0EE14expandCapacityEm
+__ZN3JSC17BytecodeGenerator14emitJumpIfTrueEPNS_10RegisterIDEPNS_5LabelE
+__ZN3JSC13LogicalOpNodeD0Ev
+__ZN3JSC3JIT22emit_op_resolve_globalEPNS_11InstructionE
+__ZN3JSC8JITStubs21cti_op_resolve_globalEPPv
+__ZNK3JSC8JSString9toBooleanEPNS_9ExecStateE
+__ZN3JSC8JSString18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC15StringPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC12StringObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSCL20stringProtoFuncMatchEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC8JSString12toThisStringEPNS_9ExecStateE
+__ZNK3JSC6JSCell8isObjectEPKNS_9ClassInfoE
+__ZNK3JSC6JSCell9classInfoEv
+__ZN3JSC4Yarr23RegexPatternConstructor20atomPatternCharacterEt
+__ZN3JSC4Yarr25CharacterClassConstructor7putCharEt
+__ZN3JSC4Yarr25CharacterClassConstructor9addSortedERN3WTF6VectorItLm0EEEt
+__ZN3JSC4Yarr23RegexPatternConstructor21atomCharacterClassEndEv
+__ZN3JSC4Yarr23RegexPatternConstructor23setupDisjunctionOffsetsEPNS0_18PatternDisjunctionEjj
+__ZN3JSC4Yarr14RegexGenerator25generateParenthesesSingleERNS1_19TermGenerationStateE
+__ZN3JSC4Yarr14RegexGenerator30generateParenthesesDisjunctionERNS0_11PatternTermERNS1_19TermGenerationStateEj
+__ZN3WTF6VectorIN3JSC4Yarr14RegexGenerator26AlternativeBacktrackRecordELm0EE14expandCapacityEm
+__ZN3JSC4Yarr14RegexGenerator19jumpIfCharNotEqualsEti
+__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiNS_3X8610RegisterIDES4_ii
+__ZN3JSC4Yarr14RegexGenerator19TermGenerationState15jumpToBacktrackERNS_22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpListEP
+__ZN3JSC17RegExpConstructor12performMatchEPNS_6RegExpERKNS_7UStringEiRiS6_PPi
+__ZN3JSC6RegExp5matchERKNS_7UStringEiPN3WTF11OwnArrayPtrIiEE
+__ZN3JSC4Yarr12executeRegexERNS0_14RegexCodeBlockEPKtjjPii
+__ZN3JSC8JITStubs17cti_op_new_regexpEPPv
+__ZN3JSC12RegExpObjectC1EN3WTF10PassRefPtrINS_9StructureEEENS2_INS_6RegExpEEE
+__ZNK3JSC12RegExpObject9classInfoEv
+__ZN3JSC18RegExpMatchesArrayC2EPNS_9ExecStateEPNS_24RegExpConstructorPrivateE
+__ZN3JSC8JITStubs17cti_op_get_by_valEPPv
+__ZN3JSC18RegExpMatchesArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
+__ZN3JSC18RegExpMatchesArray17fillArrayInstanceEPNS_9ExecStateE
+__ZN3JSC11jsSubstringEPNS_12JSGlobalDataERKNS_7UStringEjj
+__ZN3JSC7JSArray3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC8JSObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
+__ZN3JSC8JITStubs9cti_op_eqEPPv
+__ZN3JSCeqERKNS_7UStringES2_
+__ZN3JSC8JITStubs10cti_op_addEPPv
+__ZN3JSC11concatenateEPNS_7UString3RepES2_
+__ZN3JSCL22stringProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC7UString4findERKS0_i
+__ZN3JSC8JITStubs16cti_op_put_by_idEPPv
+__ZNK3JSC7UString8toUInt32EPbb
+__ZNK3JSC7UString8toDoubleEbb
+__ZNK3JSC7UString10getCStringERN3WTF6VectorIcLm32EEE
+__ZN3WTF14FastMallocZone11forceUnlockEP14_malloc_zone_t
+__Z15jsRegExpCompilePKti24JSRegExpIgnoreCaseOption23JSRegExpMultilineOptionPjPPKc
+__ZL30calculateCompiledPatternLengthPKti24JSRegExpIgnoreCaseOptionR11CompileDataR9ErrorCode
+__ZL11checkEscapePPKtS0_P9ErrorCodeib
+__ZL13compileBranchiPiPPhPPKtS3_P9ErrorCodeS_S_R11CompileData
+__Z15jsRegExpExecutePK8JSRegExpPKtiiPii
+__ZL5matchPKtPKhiR9MatchData
+__ZNK3JSC7UString14toStrictUInt32EPb
+__ZN3JSC17ObjectLiteralNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC16PropertyListNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC7TryNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator9emitCatchEPNS_10RegisterIDEPNS_5LabelES4_
+__ZN3WTF6VectorIN3JSC11HandlerInfoELm0EE14expandCapacityEm
+__ZN3JSC17BytecodeGenerator16emitPushNewScopeEPNS_10RegisterIDERNS_10IdentifierES2_
+__ZN3WTF6VectorIN3JSC18ControlFlowContextELm0EE14expandCapacityEm
+__ZNK3JSC14ExpressionNode6isPureERNS_17BytecodeGeneratorE
+__ZN3JSC12PropertyNodeD0Ev
+__ZN3JSC16PropertyListNodeD0Ev
+__ZN3JSC17ObjectLiteralNodeD0Ev
+__ZN3JSC7TryNodeD0Ev
+__ZN3JSC3JIT18emit_op_new_objectEPNS_11InstructionE
+__ZN3JSC3JIT13emit_op_catchEPNS_11InstructionE
+__ZN3JSC3JIT22emit_op_push_new_scopeEPNS_11InstructionE
+__ZN3JSC3JIT15emit_op_resolveEPNS_11InstructionE
+__ZN3JSC3JIT17emit_op_pop_scopeEPNS_11InstructionE
+__ZN3JSC8JITStubs17cti_op_new_objectEPPv
+__ZN3JSC20constructEmptyObjectEPNS_9ExecStateE
+__ZN3JSC17StructureStubInfo5derefEv
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEES5_NS_17IdentityExtractorIS5_EENS2_17IdentifierRepHashENS_10HashTraitsIS5_EES
+__ZN3JSC8ThisNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC21ThrowableBinaryOpNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC8ThisNodeD0Ev
+__ZN3JSC6InNodeD0Ev
+__ZN3JSC3JIT29emit_op_enter_with_activationEPNS_11InstructionE
+__ZN3JSC3JIT20emit_op_convert_thisEPNS_11InstructionE
+__ZN3JSC3JIT27emit_op_tear_off_activationEPNS_11InstructionE
+__ZN3JSC3JIT24emitSlow_op_convert_thisEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC8JITStubs22cti_op_push_activationEPPv
+__ZN3JSC12JSActivationC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_16FunctionBodyNodeEEE
+__ZN3JSC12JSActivationC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_16FunctionBodyNodeEEE
+__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE11parseEscapeILb1ENS3_28CharacterClassParserDelegateEEEbRT0_
+__ZN3JSC4Yarr12digitsCreateEv
+__ZN3JSC4Yarr25CharacterClassConstructor6appendEPKNS0_14CharacterClassE
+__ZN3JSC4Yarr25CharacterClassConstructor14addSortedRangeERN3WTF6VectorINS0_14CharacterRangeELm0EEEtt
+__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE28CharacterClassParserDelegate20atomPatternCharacterEt
+__ZN3JSC11GreaterNodeD0Ev
+__ZN3JSCL26stringProtoFuncToLowerCaseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JSString14toThisJSStringEPNS_9ExecStateE
+__ZN3JSC7UStringC2EPtib
+__ZN3JSC18globalFuncParseIntEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC11JSImmediate12nonInlineNaNEv
+__ZN3JSC8JITStubs11cti_op_lessEPPv
+__ZN3JSC8JITStubs9cti_op_inEPPv
+__ZNK3JSC6JSCell9getUInt32ERj
+__ZNK3JSC8JSObject11hasPropertyEPNS_9ExecStateERKNS_10IdentifierE
+__ZL14makePrefixNodePvPN3JSC14ExpressionNodeENS0_8OperatorEiii
+__ZN3JSC7ForNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator13newLabelScopeENS_10LabelScope4TypeEPKNS_10IdentifierE
+__ZN3JSC12ContinueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator14continueTargetERKNS_10IdentifierE
+__ZN3JSC17BytecodeGenerator14emitJumpScopesEPNS_5LabelEi
+__ZN3JSC17PrefixResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC21ReadModifyResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC11NewExprNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator13emitConstructEPNS_10RegisterIDES2_PNS_13ArgumentsNodeEjjj
+__ZN3WTF6VectorIN3JSC20GetByIdExceptionInfoELm0EE14expandCapacityEm
+__ZN3JSC8LessNodeD0Ev
+__ZN3JSC17PrefixResolveNodeD0Ev
+__ZN3JSC12ContinueNodeD0Ev
+__ZN3JSC7ForNodeD0Ev
+__ZN3JSC21ReadModifyResolveNodeD0Ev
+__ZN3JSC11NewExprNodeD0Ev
+__ZN3JSC3JIT11emit_op_notEPNS_11InstructionE
+__ZN3JSC3JIT15emit_op_pre_incEPNS_11InstructionE
+__ZN3JSC3JIT20emit_op_loop_if_lessEPNS_11InstructionE
+__ZN3JSC3JIT16emitTimeoutCheckEv
+__ZN3JSC3JIT20compileBinaryArithOpENS_8OpcodeIDEjjjNS_12OperandTypesE
+__ZN3JSC3JIT11emit_op_subEPNS_11InstructionE
+__ZN3JSC3JIT17emit_op_constructEPNS_11InstructionE
+__ZN3JSC3JIT24emit_op_construct_verifyEPNS_11InstructionE
+__ZN3JSC3JIT15emitSlow_op_notEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT19emitSlow_op_pre_incEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT24emitSlow_op_loop_if_lessEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT15emitSlow_op_addEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT28compileBinaryArithOpSlowCaseENS_8OpcodeIDERPNS_13SlowCaseEntryEjjjNS_12OperandTypesE
+__ZN3JSC15AssemblerBuffer7putByteEi
+__ZN3JSC12X86Assembler23X86InstructionFormatter11twoByteOp64ENS0_15TwoByteOpcodeIDEiNS_3X8610RegisterIDE
+__ZN3JSC3JIT15emitSlow_op_subEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT21emitSlow_op_constructEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT27compileOpConstructSetupArgsEPNS_11InstructionE
+__ZN3JSC3JIT28emitSlow_op_construct_verifyEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC7UString4fromEj
+__ZN3JSC10Identifier11addSlowCaseEPNS_9ExecStateEPNS_7UString3RepE
+__ZN3JSC8JITStubs10cti_op_notEPPv
+__ZN3JSC8JITStubs24cti_op_get_by_id_genericEPPv
+__ZN3JSC7JSArrayC2EN3WTF10PassRefPtrINS_9StructureEEERKNS_7ArgListE
+__ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSCL24stringProtoFuncSubstringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs31cti_op_construct_NotJSConstructEPPv
+__ZN3JSC3JIT33privateCompilePatchGetArrayLengthENS_22AbstractMacroAssemblerINS_12X86AssemblerEE22ProcessorReturnAddressE
+__ZN3JSC8JITStubs27cti_op_get_by_id_proto_listEPPv
+__ZN3JSC3JIT30privateCompileGetByIdProtoListEPNS_17StructureStubInfoEPNS_30PolymorphicAccessStructureListEiPNS_9StructureES6_mP
+__ZN3JSC3JIT16patchGetByIdSelfEPNS_17StructureStubInfoEPNS_9StructureEmNS_22AbstractMacroAssemblerINS_12X86AssemblerEE22Process
+__ZN3JSC14StructureChainC1EPNS_9StructureE
+__ZN3JSC14StructureChainC2EPNS_9StructureE
+__ZN3JSC3JIT26privateCompileGetByIdChainEPNS_17StructureStubInfoEPNS_9StructureEPNS_14StructureChainEmmNS_22AbstractMacroAssemb
+__ZN3JSC8JITStubs23cti_op_put_by_id_secondEPPv
+__ZN3JSC8JITStubs15tryCachePutByIDEPNS_9ExecStateEPNS_9CodeBlockEPvNS_7JSValueERKNS_15PutPropertySlotE
+__ZN3JSC8JITStubs24cti_op_put_by_id_genericEPPv
+__ZN3JSC8JITStubs26cti_op_tear_off_activationEPPv
+__ZN3JSC8JITStubs21cti_op_ret_scopeChainEPPv
+__ZN3JSC17BytecodeGenerator16emitPutScopedVarEmiPNS_10RegisterIDENS_7JSValueE
+__ZN3JSC3JIT22emit_op_get_scoped_varEPNS_11InstructionE
+__ZN3JSC3JIT22emit_op_put_scoped_varEPNS_11InstructionE
+__ZN3JSC3JIT29emitPutVariableObjectRegisterENS_3X8610RegisterIDES2_i
+__ZN3JSC12X86Assembler7movq_rrENS_3X8610RegisterIDENS1_13XMMRegisterIDE
+__ZN3WTF20TCMalloc_ThreadCache18DestroyThreadCacheEPv
+__ZN3WTF20TCMalloc_ThreadCache11DeleteCacheEPS0_
+__ZN3JSC15StrictEqualNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC15StrictEqualNodeD0Ev
+__ZN3JSC3JIT16emit_op_stricteqEPNS_11InstructionE
+__ZN3JSC3JIT17compileOpStrictEqEPNS_11InstructionENS0_21CompileOpStrictEqTypeE
+__ZN3JSC3JIT20emitSlow_op_stricteqEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC8JITStubs15cti_op_stricteqEPPv
+__ZN3WTF12detachThreadEj
+__ZN3WTFL26pthreadHandleForIdentifierEj
+__ZN3WTFL31clearPthreadHandleForIdentifierEj
+__ZN3WTF6VectorIPNS0_IN3JSC10IdentifierELm64EEELm32EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorIPNS0_IN3JSC10IdentifierELm64EEELm32EE15reserveCapacityEm
+__ZN3JSC8NullNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC8NullNodeD0Ev
+__ZN3WTF7HashMapISt4pairINS_6RefPtrIN3JSC7UString3RepEEEjEPNS3_9StructureENS3_28StructureTransitionTableHashENS3_34StructureTra
+__ZN3WTF9HashTableISt4pairINS_6RefPtrIN3JSC7UString3RepEEEjES1_IS7_PNS3_9StructureEENS_18PairFirstExtractorISA_EENS3_28Structur
+__ZN3JSC9Structure22materializePropertyMapEv
+__ZN3JSC15TypeOfValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC15TypeOfValueNodeD0Ev
+__ZN3JSC12NotEqualNodeD0Ev
+__ZN3JSC3JIT11emit_op_neqEPNS_11InstructionE
+__ZN3JSC3JIT15emitSlow_op_neqEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC8JITStubs13cti_op_typeofEPPv
+__ZN3JSC20jsTypeStringForValueEPNS_9ExecStateENS_7JSValueE
+__ZN3JSC8JITStubs10cti_op_neqEPPv
+__ZN3JSC14ExecutablePool13systemReleaseERKNS0_10AllocationE
+__ZN3WTF6VectorItLm0EE14expandCapacityEmPKt
+__ZNK3JSC10NumberNode8isNumberEv
+__ZNK3JSC14ExpressionNode10isLocationEv
+__ZN3WTF6VectorIPN3JSC10RegisterIDELm32EE14expandCapacityEm
+__ZNK3JSC11BooleanNode6isPureERNS_17BytecodeGeneratorE
+__ZN3JSC4Yarr13newlineCreateEv
+__ZN3JSC12X86Assembler23X86InstructionFormatter15emitRexIfNeededEiii
+__ZN3JSC12X86Assembler23X86InstructionFormatter11memoryModRMEiNS_3X8610RegisterIDES3_ii
+__ZN3JSC17TypeOfResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator15emitResolveBaseEPNS_10RegisterIDERKNS_10IdentifierE
+__ZN3JSC17BytecodeGenerator20emitLoadGlobalObjectEPNS_10RegisterIDEPNS_8JSObjectE
+__ZN3WTF6VectorIN3JSC7JSValueELm0EE14expandCapacityEm
+__ZNK3JSC7AddNode5isAddEv
+__ZN3JSC12BinaryOpNode10emitStrcatERNS_17BytecodeGeneratorEPNS_10RegisterIDES4_PNS_21ReadModifyResolveNodeE
+__ZNK3JSC10StringNode8isStringEv
+__ZNK3JSC14ExpressionNode8isStringEv
+__ZN3JSC17BytecodeGenerator10emitStrcatEPNS_10RegisterIDES2_i
+__ZN3JSC4Yarr12spacesCreateEv
+__ZN3JSC4Yarr15nonspacesCreateEv
+__ZN3JSC8WithNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator13emitPushScopeEPNS_10RegisterIDE
+__ZN3JSC23MacroAssemblerX86Common4moveENS_22AbstractMacroAssemblerINS_12X86AssemblerEE5Imm32ENS_3X8610RegisterIDE
+__ZN3JSC14MacroAssembler4peekENS_3X8610RegisterIDEi
+__ZN3JSC4Yarr14RegexGenerator12atEndOfInputEv
+__ZN3JSC22AbstractMacroAssemblerINS_12X86AssemblerEE8JumpList6linkToENS2_5LabelEPS2_
+__ZN3JSC14MacroAssembler4pokeENS_3X8610RegisterIDEi
+__ZN3JSC21FunctionCallValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC9ArrayNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator12emitNewArrayEPNS_10RegisterIDEPNS_11ElementNodeE
+__ZN3JSC23CallFunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator25emitJumpIfNotFunctionCallEPNS_10RegisterIDEPNS_5LabelE
+__ZN3JSC4Yarr14RegexGenerator29generateAssertionWordBoundaryERNS1_19TermGenerationStateE
+__ZN3JSC4Yarr14RegexGenerator22matchAssertionWordcharERNS1_19TermGenerationStateERNS_22AbstractMacroAssemblerINS_12X86Assembler
+__ZN3WTF6VectorIPN3JSC4Yarr18PatternDisjunctionELm4EE14expandCapacityEm
+__ZL14compileBracketiPiPPhPPKtS3_P9ErrorCodeiS_S_R11CompileData
+__ZN3JSC9ThrowNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC9CommaNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3WTF9HashTableIdSt4pairIdN3JSC7JSValueEENS_18PairFirstExtractorIS4_EENS_9FloatHashIdEENS_14PairHashTraitsINS_10HashTraitsId
+__ZN3JSC17TypeOfResolveNodeD0Ev
+__ZN3JSC18NotStrictEqualNodeD0Ev
+__ZN3JSC8WithNodeD0Ev
+__ZN3JSC21FunctionCallValueNodeD0Ev
+__ZN3JSC9ArrayNodeD0Ev
+__ZN3JSC11ElementNodeD0Ev
+__ZN3JSC23CallFunctionCallDotNodeD0Ev
+__ZN3JSC9ThrowNodeD0Ev
+__ZN3JSC9CommaNodeD0Ev
+__ZN3JSC3JIT23emit_op_unexpected_loadEPNS_11InstructionE
+__ZN3JSC3JIT20emit_op_to_primitiveEPNS_11InstructionE
+__ZN3JSC3JIT14emit_op_strcatEPNS_11InstructionE
+__ZN3JSC3JIT17emit_op_nstricteqEPNS_11InstructionE
+__ZN3JSC3JIT18emit_op_push_scopeEPNS_11InstructionE
+__ZN3JSC3JIT17emit_op_new_arrayEPNS_11InstructionE
+__ZN3JSC3JIT16emit_op_jneq_ptrEPNS_11InstructionE
+__ZN3JSC3JIT13emit_op_throwEPNS_11InstructionE
+__ZN3JSC3JIT14emit_op_jnlessEPNS_11InstructionE
+__ZN3JSC3JIT24emitSlow_op_to_primitiveEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT21emitSlow_op_nstricteqEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT18emitSlow_op_jnlessEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZL15makePostfixNodePvPN3JSC14ExpressionNodeENS0_8OperatorEiii
+__ZN3JSC18PostfixResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC18PostfixResolveNodeD0Ev
+__ZN3JSC8JITStubs22cti_op_call_arityCheckEPPv
+__ZN3JSC19FunctionConstructor16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL32constructWithFunctionConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListERKNS_10IdentifierERKNS_7UStringEi
+__ZN3JSCplERKNS_7UStringES2_
+__ZN3JSC7UString6appendERKS0_
+__ZN3JSC7UString17expandPreCapacityEi
+__ZN3WTF11fastReallocILb0EEEPvS1_m
+__ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZL11makeDivNodePvPN3JSC14ExpressionNodeES2_b
+__ZL12makeMultNodePvPN3JSC14ExpressionNodeES2_b
+__ZN3JSC9WhileNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC7ModNodeD0Ev
+__ZN3JSC7DivNodeD0Ev
+__ZN3JSC8MultNodeD0Ev
+__ZN3JSC9WhileNodeD0Ev
+__ZN3JSC3JIT11emit_op_modEPNS_11InstructionE
+__ZN3JSC3JIT11emit_op_mulEPNS_11InstructionE
+__ZN3JSC3JIT20emit_op_loop_if_trueEPNS_11InstructionE
+__ZN3JSC3JIT15emitSlow_op_modEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT15emitSlow_op_mulEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT24emitSlow_op_loop_if_trueEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSCL26stringProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC7JSValue20toIntegerPreserveNaNEPNS_9ExecStateE
+__ZN3JSC8JITStubs10cti_op_divEPPv
+__ZN3JSC3JIT22emit_op_loop_if_lesseqEPNS_11InstructionE
+__ZN3JSC3JIT26emitSlow_op_loop_if_lesseqEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC8JITStubs13cti_op_lesseqEPPv
+__ZN3JSCL20stringProtoFuncSplitEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC19constructEmptyArrayEPNS_9ExecStateE
+__ZN3JSC7JSArray3putEPNS_9ExecStateEjNS_7JSValueE
+__ZN3JSC7JSArray11putSlowCaseEPNS_9ExecStateEjNS_7JSValueE
+__ZN3JSC14ArrayPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSCL18arrayProtoFuncJoinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3WTF7HashSetIPN3JSC8JSObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN3JSC8JSObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF6VectorItLm256EE6appendItEEvPKT_m
+__ZN3WTF6VectorItLm256EE14expandCapacityEm
+__ZN3WTF6VectorIPN3JSC12CallLinkInfoELm0EE15reserveCapacityEm
+__ZN3JSC4Heap7collectEv
+__ZN3JSC4Heap30markStackObjectsConservativelyEv
+__ZN3JSC4Heap31markCurrentThreadConservativelyEv
+__ZN3JSC4Heap39markCurrentThreadConservativelyInternalEv
+__ZN3JSC4Heap18markConservativelyEPvS1_
+__ZN3JSC7JSArray4markEv
+__ZN3JSC8JSObject4markEv
+__ZN3JSC10JSFunction4markEv
+__ZN3JSC6JSCell4markEv
+__ZN3JSC14JSGlobalObject4markEv
+__ZN3JSC15JSWrapperObject4markEv
+__ZN3JSC18GlobalEvalFunction4markEv
+__ZN3JSC16FunctionBodyNode4markEv
+__ZN3JSC9CodeBlock4markEv
+__ZN3JSC4Heap20markProtectedObjectsEv
+__ZN3JSC12SmallStrings4markEv
+__ZN3JSC4Heap5sweepILNS_8HeapTypeE0EEEmv
+__ZN3JSC14JSGlobalObjectD2Ev
+__ZN3JSC17FunctionPrototypeD1Ev
+__ZN3JSC15ObjectPrototypeD1Ev
+__ZN3JSC14ArrayPrototypeD1Ev
+__ZN3JSC15StringPrototypeD1Ev
+__ZN3JSC16BooleanPrototypeD1Ev
+__ZN3JSC15NumberPrototypeD1Ev
+__ZN3JSC13DatePrototypeD1Ev
+__ZN3JSC12DateInstanceD2Ev
+__ZN3JSC15RegExpPrototypeD1Ev
+__ZN3JSC14ErrorPrototypeD1Ev
+__ZN3JSC20NativeErrorPrototypeD1Ev
+__ZN3JSC17ObjectConstructorD1Ev
+__ZN3JSC19FunctionConstructorD1Ev
+__ZN3JSC16ArrayConstructorD1Ev
+__ZN3JSC17StringConstructorD1Ev
+__ZN3JSC18BooleanConstructorD1Ev
+__ZN3JSC17NumberConstructorD1Ev
+__ZN3JSC15DateConstructorD1Ev
+__ZN3JSC17RegExpConstructorD1Ev
+__ZN3JSC16ErrorConstructorD1Ev
+__ZN3JSC22NativeErrorConstructorD1Ev
+__ZN3JSC10MathObjectD1Ev
+__ZN3JSC18GlobalEvalFunctionD1Ev
+__ZN3JSC8JSObjectD1Ev
+__ZN3JSC9CodeBlock13unlinkCallersEv
+__ZN3WTF6VectorINS_6RefPtrIN3JSC6RegExpEEELm0EE6shrinkEm
+__ZN3JSC12JSActivationD1Ev
+__ZN3JSC12JSActivationD2Ev
+__ZN3JSC12RegExpObjectD1Ev
+__ZN3JSC18RegExpMatchesArrayD1Ev
+__ZN3JSC4Heap5sweepILNS_8HeapTypeE1EEEmv
+__ZN3JSC20globalFuncParseFloatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3WTF17TCMalloc_PageHeap3NewEm
+__ZN3JSC8JITStubs28cti_op_construct_JSConstructEPPv
+__ZN3JSC8JSObject17createInheritorIDEv
+__ZNK3JSC19BracketAccessorNode10isLocationEv
+__ZNK3JSC19BracketAccessorNode21isBracketAccessorNodeEv
+__ZN3JSC17AssignBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator12emitPutByValEPNS_10RegisterIDES2_S2_
+__ZN3JSC14PostfixDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17ReadModifyDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17AssignBracketNodeD0Ev
+__ZN3JSC14PostfixDotNodeD0Ev
+__ZN3JSC17ReadModifyDotNodeD0Ev
+__ZN3JSC3JIT18emit_op_put_by_valEPNS_11InstructionE
+__ZN3JSC3JIT22emitSlow_op_put_by_valEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC16ArrayConstructor16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL29constructWithArrayConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSCL27constructArrayWithSizeQuirkEPNS_9ExecStateERKNS_7ArgListE
+__ZN3JSC8JITStubs23cti_op_put_by_val_arrayEPPv
+__ZN3JSC8JITStubs13cti_op_strcatEPPv
+__ZN3JSC7UString3Rep15reserveCapacityEi
+__ZN3JSC7UString13appendNumericEi
+__ZN3JSC11concatenateEPNS_7UString3RepEi
+__ZN3JSC12JSActivation18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSCL18stringFromCharCodeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC16globalFuncEscapeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL26stringProtoFuncToUpperCaseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC12JSActivation14isDynamicScopeEv
+__ZN3WTF6VectorINS_6RefPtrIN3JSC10RegisterIDEEELm16EE14expandCapacityEm
+__ZN3JSC17ObjectConstructor16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL30constructWithObjectConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSC8JITStubs17cti_op_put_by_valEPPv
+__ZN3JSC15DateConstructor16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL28constructWithDateConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSC13constructDateEPNS_9ExecStateERKNS_7ArgListE
+__ZN3JSC8JITStubs18cti_op_is_functionEPPv
+__ZN3JSC16jsIsFunctionTypeENS_7JSValueE
+__ZN3JSC10Identifier5equalEPKNS_7UString3RepEPKc
+__ZN3JSC11JSImmediate8toStringENS_7JSValueE
+__ZN3JSC7UString4fromEi
+__ZN3JSC7UString3Rep11computeHashEPKti
+__ZNK3JSC8NullNode6isNullEv
+__ZN3JSC9BreakNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator11breakTargetERKNS_10IdentifierE
+__ZN3JSC9BreakNodeD0Ev
+__ZN3JSC3JIT15emit_op_eq_nullEPNS_11InstructionE
+__ZN3JSC8JITStubs19cti_op_is_undefinedEPPv
+__ZN3JSC12JSActivation4markEv
+__ZN3JSC12DateInstanceD1Ev
+__ZNK3JSC18EmptyStatementNode16isEmptyStatementEv
+__ZN3JSC18EmptyStatementNodeD0Ev
+__ZN3JSC3JIT15emit_op_pre_decEPNS_11InstructionE
+__ZN3JSC3JIT19emitSlow_op_pre_decEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3WTF13tryFastMallocEm
+__ZN3JSC8JITStubs17cti_timeout_checkEPPv
+__ZN3JSC14TimeoutChecker10didTimeOutEPNS_9ExecStateE
+__ZN3JSC8JITStubs14cti_op_pre_decEPPv
+__ZN3JSC13jsAddSlowCaseEPNS_9ExecStateENS_7JSValueES2_
+__ZNK3JSC8JSString11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
+__ZNK3JSC8JSObject11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
+__ZNK3JSC8JSObject12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
+__ZN3JSCL22objectProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL25functionProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC10JSFunction9classInfoEv
+__ZNK3JSC21UStringSourceProvider8getRangeEii
+__ZNK3JSC7UString6substrEii
+__ZN3JSC8JITStubs26cti_op_get_by_id_self_failEPPv
+__ZN3JSC3JIT29privateCompileGetByIdSelfListEPNS_17StructureStubInfoEPNS_30PolymorphicAccessStructureListEiPNS_9StructureEm
+__ZN3JSC8JITStubs16cti_op_nstricteqEPPv
+__ZN3JSC9ForInNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator20emitNextPropertyNameEPNS_10RegisterIDES2_PNS_5LabelE
+__ZN3JSC9ForInNodeD0Ev
+__ZN3JSC3JIT18emit_op_next_pnameEPNS_11InstructionE
+__ZN3JSC8JITStubs17cti_op_get_pnamesEPPv
+__ZN3JSC8JSObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE
+__ZN3JSC9Structure26getEnumerablePropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayEPNS_8JSObjectE
+__ZN3JSC9Structure35getEnumerableNamesFromPropertyTableERNS_17PropertyNameArrayE
+__ZN3JSC8JITStubs17cti_op_next_pnameEPPv
+__ZN3JSC13jsOwnedStringEPNS_12JSGlobalDataERKNS_7UStringE
+__ZN3JSC22JSPropertyNameIterator10invalidateEv
+__ZN3JSC3JIT22emit_op_init_argumentsEPNS_11InstructionE
+__ZN3JSC3JIT24emit_op_create_argumentsEPNS_11InstructionE
+__ZN3JSC8JITStubs33cti_op_create_arguments_no_paramsEPPv
+__ZN3JSC9Arguments18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC3JIT16emit_op_post_decEPNS_11InstructionE
+__ZN3JSC3JIT20emitSlow_op_post_decEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC8JITStubs15cti_op_post_decEPPv
+__ZN3JSC9Arguments18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
+__ZN3JSC17RegExpConstructor18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC17RegExpConstructor3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC6JSCell11getCallDataERNS_8CallDataE
+__ZN3JSC10JSFunction3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC8JITStubs16cti_op_new_arrayEPPv
+__ZN3JSC14constructArrayEPNS_9ExecStateERKNS_7ArgListE
+__ZN3JSCL18arrayProtoFuncPushEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL30comparePropertyMapEntryIndicesEPKvS1_
+__ZN3WTF6VectorIN3JSC10IdentifierELm20EE15reserveCapacityEm
+__ZN3JSC12StringObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC8JITStubs17cti_op_push_scopeEPPv
+__ZN3JSC8JITStubs14cti_op_resolveEPPv
+__ZN3JSC8JITStubs16cti_op_pop_scopeEPPv
+__ZN3JSC3JIT31privateCompilePutByIdTransitionEPNS_17StructureStubInfoEPNS_9StructureES4_mPNS_14StructureChainENS_22AbstractMacr
+__ZN3JSC20MacroAssemblerX86_649branchPtrENS_23MacroAssemblerX86Common9ConditionENS_22AbstractMacroAssemblerINS_12X86AssemblerEE
+__ZN3JSC3JIT19patchPutByIdReplaceEPNS_17StructureStubInfoEPNS_9StructureEmNS_22AbstractMacroAssemblerINS_12X86AssemblerEE22Proc
+__ZN3JSC17NumberConstructor18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC8JITStubs16cti_op_is_stringEPPv
+__ZN3JSC8JITStubs19cti_op_convert_thisEPPv
+__ZNK3JSC8JSString12toThisObjectEPNS_9ExecStateE
+__ZN3JSCL22stringProtoFuncReplaceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC12StringObject14toThisJSStringEPNS_9ExecStateE
+__ZN3JSCL21arrayProtoFuncForEachEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC11Interpreter20prepareForRepeatCallEPNS_16FunctionBodyNodeEPNS_9ExecStateEPNS_10JSFunctionEiPNS_14ScopeChainNodeEPNS_7J
+__ZN3JSC3JIT16emit_op_post_incEPNS_11InstructionE
+__ZN3JSC3JIT20emitSlow_op_post_incEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC11Interpreter7executeERNS_16CallFrameClosureEPNS_7JSValueE
+__ZN3JSC10MathObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC11Interpreter13endRepeatCallERNS_16CallFrameClosureE
+__ZN3JSCL21resizePropertyStorageEPNS_8JSObjectEii
+__ZN3JSC8JSObject23allocatePropertyStorageEmm
+__ZN3JSC14ExecutablePool12poolAllocateEm
+__ZN3JSC9Arguments4markEv
+__ZN3JSC22JSPropertyNameIterator4markEv
+__ZN3JSC3JIT10unlinkCallEPNS_12CallLinkInfoE
+__ZN3JSC22JSPropertyNameIteratorD1Ev
+__ZN3JSC9ArgumentsD1Ev
+__ZN3JSC9ArgumentsD2Ev
+__ZN3JSC12StringObjectD1Ev
+__ZN3WTF6VectorIPN3JSC9StructureELm8EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN3JSC9StructureELm8EE15reserveCapacityEm
+__ZN3JSCL19arrayProtoFuncShiftEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL11getPropertyEPNS_9ExecStateEPNS_8JSObjectEj
+__ZN3JSC7JSArray14deletePropertyEPNS_9ExecStateEj
+__ZN3JSC7JSArray9setLengthEj
+__ZN3JSC7UString6appendEPKc
+__ZN3JSC8JITStubs23cti_op_create_argumentsEPPv
+__ZN3JSCL19arrayProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC7JSValue9toIntegerEPNS_9ExecStateE
+__ZN3JSC24ApplyFunctionCallDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZNK3JSC14ExpressionNode13isSimpleArrayEv
+__ZN3JSC17BytecodeGenerator26emitJumpIfNotFunctionApplyEPNS_10RegisterIDEPNS_5LabelE
+__ZN3JSC17BytecodeGenerator15emitCallVarargsEPNS_10RegisterIDES2_S2_S2_jjj
+__ZN3JSC24ApplyFunctionCallDotNodeD0Ev
+__ZN3JSC3JIT20emit_op_load_varargsEPNS_11InstructionE
+__ZN3JSC3JIT20emit_op_call_varargsEPNS_11InstructionE
+__ZN3JSC3JIT20compileOpCallVarargsEPNS_11InstructionE
+__ZN3JSC3JIT29compileOpCallVarargsSetupArgsEPNS_11InstructionE
+__ZN3JSC3JIT24emitSlow_op_call_varargsEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC3JIT28compileOpCallVarargsSlowCaseEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC8JITStubs19cti_op_load_varargsEPPv
+__ZNK3JSC7JSArray9classInfoEv
+__ZN3JSC7JSArray15copyToRegistersEPNS_9ExecStateEPNS_8RegisterEj
+__ZNK3JSC7UString30spliceSubstringsWithSeparatorsEPKNS0_5RangeEiPKS0_i
+__ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
+__ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC7UString4fromEd
+__ZN3WTF4dtoaEPcdiPiS1_PS0_
+__ZN3JSC8JITStubs21cti_op_put_by_id_failEPPv
+__ZN3JSC13DeleteDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator14emitDeleteByIdEPNS_10RegisterIDES2_RKNS_10IdentifierE
+__ZN3JSC13DeleteDotNodeD0Ev
+__ZN3JSC3JIT17emit_op_del_by_idEPNS_11InstructionE
+__ZN3JSC8JITStubs16cti_op_del_by_idEPPv
+__ZN3JSC10JSFunction14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
+__ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
+__ZNK3JSC7ArgList8getSliceEiRS0_
+__ZN3JSC3JIT26emit_op_tear_off_argumentsEPNS_11InstructionE
+__ZN3JSC8JITStubs25cti_op_tear_off_argumentsEPPv
+__ZNK3JSC12StringObject12toThisStringEPNS_9ExecStateE
+__ZN3JSC13PrefixDotNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC13PrefixDotNodeD0Ev
+__ZNK3JSC8JSObject8toStringEPNS_9ExecStateE
+__ZN3JSCL22arrayProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL21arrayProtoFuncIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC16ErrorConstructor16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL29constructWithErrorConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSC14constructErrorEPNS_9ExecStateERKNS_7ArgListE
+__ZN3JSCL21stringProtoFuncCharAtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs32cti_op_get_by_id_proto_list_fullEPPv
+__ZN3JSC14InstanceOfNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator14emitInstanceOfEPNS_10RegisterIDES2_S2_S2_
+__ZN3JSC14InstanceOfNodeD0Ev
+__ZN3JSC3JIT18emit_op_instanceofEPNS_11InstructionE
+__ZN3JSC3JIT22emitSlow_op_instanceofEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC12X86Assembler6orl_irEiNS_3X8610RegisterIDE
+__ZN3JSC17RegExpConstructor16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL30constructWithRegExpConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSC15constructRegExpEPNS_9ExecStateERKNS_7ArgListE
+__ZN3JSC13DatePrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSCL20dateProtoFuncGetTimeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC12DateInstance9classInfoEv
+__ZN3JSC12RegExpObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSCL19regExpProtoFuncTestEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC12RegExpObject5matchEPNS_9ExecStateERKNS_7ArgListE
+__ZN3JSC3JIT18emit_op_jmp_scopesEPNS_11InstructionE
+__ZN3JSC3JIT30privateCompileGetByIdChainListEPNS_17StructureStubInfoEPNS_30PolymorphicAccessStructureListEiPNS_9StructureEPNS_1
+__ZN3JSC18globalFuncUnescapeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC7UString6appendEt
+__ZN3JSC8JSObject3putEPNS_9ExecStateEjNS_7JSValueE
+__ZN3JSC17PropertyNameArray3addEPNS_7UString3RepE
+__ZN3WTF7HashSetIPN3JSC7UString3RepENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN3WTF9HashTableIPN3JSC7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6rehashEi
+__ZN3WTF6VectorIN3JSC10IdentifierELm20EE14expandCapacityEm
+__ZN3JSCL20arrayProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC9ArrayNode13isSimpleArrayEv
+__ZN3JSC8JITStubs10cti_op_mulEPPv
+__ZN3JSC8JITStubs16cti_op_is_objectEPPv
+__ZN3JSC14jsIsObjectTypeENS_7JSValueE
+__ZNK3JSC11Interpreter18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERNS_7JSValueE
+__ZN3JSC9CodeBlock34reparseForExceptionInfoIfNecessaryEPNS_9ExecStateE
+__ZNK3JSC10ScopeChain10localDepthEv
+__ZNK3JSC12JSActivation9classInfoEv
+__ZN3JSC6Parser7reparseINS_16FunctionBodyNodeEEEN3WTF10PassRefPtrIT_EEPNS_12JSGlobalDataEPS5_
+__ZN3JSC16FunctionBodyNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEPNS6_IP
+__ZN3JSC13StatementNode6setLocEii
+__ZN3JSC16FunctionBodyNode14copyParametersEv
+__ZN3JSC16FunctionBodyNode13finishParsingEPNS_10IdentifierEm
+__ZN3JSC16FunctionBodyNode31bytecodeForExceptionInfoReparseEPNS_14ScopeChainNodeEPNS_9CodeBlockE
+__ZN3JSC9CodeBlock36hasGlobalResolveInfoAtBytecodeOffsetEj
+__ZN3JSC9CodeBlock27lineNumberForBytecodeOffsetEPNS_9ExecStateEj
+__ZN3WTF6VectorIPvLm0EE14expandCapacityEmPKS1_
+__ZN3WTF6VectorIPvLm0EE15reserveCapacityEm
+__ZN3JSC3JIT16emit_op_jeq_nullEPNS_11InstructionE
+__ZN3JSC8JITStubs16cti_op_is_numberEPPv
+__ZN3JSCL23stringProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC12StringObject9classInfoEv
+__ZN3JSC8JITStubs28cti_op_get_by_id_string_failEPPv
+__ZN3JSC11JSImmediate9prototypeENS_7JSValueEPNS_9ExecStateE
+__ZN3JSCL23numberProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC3JIT16emit_op_neq_nullEPNS_11InstructionE
+__ZN3JSC4Yarr23RegexPatternConstructor8copyTermERNS0_11PatternTermE
+__ZL17bracketIsAnchoredPKh
+__ZL32branchFindFirstAssertedCharacterPKhb
+__ZL20branchNeedsLineStartPKhjj
+__ZN3JSC18RegExpMatchesArray18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSCL20stringProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC3JIT17emit_op_jneq_nullEPNS_11InstructionE
+__ZN3JSC8JITStubs25cti_op_call_NotJSFunctionEPPv
+__ZN3JSC17StringConstructor11getCallDataERNS_8CallDataE
+__ZN3JSCL21callStringConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC12StringObject8toStringEPNS_9ExecStateE
+__ZN3JSC23FunctionCallBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC20EvalFunctionCallNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator19emitResolveWithBaseEPNS_10RegisterIDES2_RKNS_10IdentifierE
+__ZN3JSC23FunctionCallBracketNodeD0Ev
+__ZN3JSC20EvalFunctionCallNodeD0Ev
+__ZN3JSC3JIT25emit_op_resolve_with_baseEPNS_11InstructionE
+__ZN3JSC3JIT17emit_op_call_evalEPNS_11InstructionE
+__ZN3JSC3JIT21emitSlow_op_call_evalEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC14MacroAssembler4jumpENS_22AbstractMacroAssemblerINS_12X86AssemblerEE5LabelE
+__ZN3JSCL19regExpProtoFuncExecEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC7UString12replaceRangeEiiRKS0_
+__ZN3JSC8JITStubs17cti_op_is_booleanEPPv
+__ZN3JSC3JIT22emit_op_put_global_varEPNS_11InstructionE
+__ZN3JSCL23regExpProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL18regExpObjectSourceEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL18regExpObjectGlobalEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL22regExpObjectIgnoreCaseEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL21regExpObjectMultilineEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSC4Yarr14RegexGenerator30generatePatternCharacterGreedyERNS1_19TermGenerationStateE
+__ZN3JSC8JITStubs27cti_op_get_by_id_proto_failEPPv
+__ZN3JSC17DeleteResolveNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17DeleteResolveNodeD0Ev
+__ZN3JSC3JIT20emit_op_resolve_baseEPNS_11InstructionE
+__ZN3JSC8JITStubs19cti_op_resolve_baseEPPv
+__ZN3JSC12JSActivation14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
+__ZN3JSC16JSVariableObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
+__ZNK3JSC8JSString8toNumberEPNS_9ExecStateE
+__ZN3JSC8JITStubs24cti_op_resolve_with_baseEPPv
+__ZN3JSC8JITStubs16cti_op_call_evalEPPv
+__ZN3JSC11Interpreter8callEvalEPNS_9ExecStateEPNS_12RegisterFileEPNS_8RegisterEiiRNS_7JSValueE
+__ZN3JSC13LiteralParser5Lexer3lexERNS1_18LiteralParserTokenE
+__ZN3JSC13LiteralParser14parseStatementEv
+__ZN3JSC13LiteralParser15parseExpressionEv
+__ZN3JSC13LiteralParser10parseArrayEv
+__ZN3JSC13LiteralParser11parseObjectEv
+__ZN3JSC10Identifier3addEPNS_9ExecStateEPKti
+__ZN3JSC7JSArray4pushEPNS_9ExecStateENS_7JSValueE
+__ZN3JSCL19mathProtoFuncRandomEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3WTF16weakRandomNumberEv
+__ZN3JSCL18mathProtoFuncFloorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC4Heap15recordExtraCostEm
+__ZN3JSC6Parser5parseINS_8EvalNodeEEEN3WTF10PassRefPtrIT_EEPNS_9ExecStateEPNS_8DebuggerERKNS_10SourceCodeEPiPNS_7UStringE
+__ZN3JSC9ExecState9thisValueEv
+__ZN3JSC11Interpreter7executeEPNS_8EvalNodeEPNS_9ExecStateEPNS_8JSObjectEiPNS_14ScopeChainNodeEPNS_7JSValueE
+__ZN3JSC8EvalNode16generateBytecodeEPNS_14ScopeChainNodeE
+__ZN3JSC17BytecodeGeneratorC2EPNS_8EvalNodeEPKNS_8DebuggerERKNS_10ScopeChainEPN3WTF7HashMapINS9_6RefPtrINS_7UString3RepEEENS_16
+__ZN3JSC8EvalNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZThn16_N3JSC8EvalNodeD0Ev
+__ZN3JSC8EvalNodeD0Ev
+__ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC8JSObject9classNameEv
+__ZN3JSC11JSImmediate12toThisObjectENS_7JSValueEPNS_9ExecStateE
+__ZNK3JSC6JSCell17getTruncatedInt32ERi
+__ZN3JSC15toInt32SlowCaseEdRb
+__ZN3JSCL20dateProtoFuncSetYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC12DateInstance21msToGregorianDateTimeEdbRNS_17GregorianDateTimeE
+__ZN3JSC21msToGregorianDateTimeEdbRNS_17GregorianDateTimeE
+__ZN3JSCL12getDSTOffsetEdd
+__ZN3JSC21gregorianDateTimeToMSERKNS_17GregorianDateTimeEdb
+__ZN3JSCL15dateToDayInYearEiii
+__ZN3JSC8JITStubs19cti_op_to_primitiveEPPv
+__ZN3JSCL21dateProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC10formatTimeERKNS_17GregorianDateTimeEb
+__ZN3JSCL24dateProtoFuncToGMTStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC7UString13appendNumericEd
+__ZN3JSC11concatenateEPNS_7UString3RepEd
+__ZN3JSCL20dateProtoFuncGetYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL20dateProtoFuncGetDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL21dateProtoFuncGetMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL21dateProtoFuncGetHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL23dateProtoFuncGetMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL23dateProtoFuncGetSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL19dateProtoFuncGetDayEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL30dateProtoFuncGetTimezoneOffsetEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC28createUndefinedVariableErrorEPNS_9ExecStateERKNS_10IdentifierEjPNS_9CodeBlockE
+__ZN3JSC9CodeBlock32expressionRangeForBytecodeOffsetEPNS_9ExecStateEjRiS3_S3_
+__ZN3JSC5Error6createEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringEilS6_
+__ZN3JSC22NativeErrorConstructor16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL35constructWithNativeErrorConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSC22NativeErrorConstructor9constructEPNS_9ExecStateERKNS_7ArgListE
+__ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj
+__ZN3JSCL23returnToThrowTrampolineEPNS_12JSGlobalDataEPvRS2_
+_ctiVMThrowTrampoline
+__ZN3JSC8JITStubs12cti_vm_throwEPPv
+__ZN3JSC11Interpreter14throwExceptionERPNS_9ExecStateERNS_7JSValueEjb
+__ZNK3JSC8JSObject22isNotAnObjectErrorStubEv
+__ZNK3JSC8JSObject19isWatchdogExceptionEv
+__ZN3JSC9CodeBlock24handlerForBytecodeOffsetEj
+__ZN3JSC8JITStubs21cti_op_push_new_scopeEPPv
+__ZN3WTF6VectorIN3JSC22AbstractMacroAssemblerINS1_12X86AssemblerEE4JumpELm16EE14expandCapacityEm
+__ZN3JSCL20dateProtoFuncSetTimeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEENS1_INS2_8EvalNodeEEENS_7StrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3getEPS4
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEENS1_INS2_8EvalNodeEEENS_7StrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3setEPS4_
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_NS1_INS2_8EvalNodeEEEENS_18PairFirstExtractorIS9_EENS_7StrHashIS5_
+__ZN3JSC10LessEqNodeD0Ev
+__ZN3JSC8JITStubs14cti_op_jlesseqEPPv
+__ZN3JSC8JSString18getPrimitiveNumberEPNS_9ExecStateERdRNS_7JSValueE
+__ZL18makeRightShiftNodePvPN3JSC14ExpressionNodeES2_b
+__ZN3JSC14RightShiftNodeD0Ev
+__ZN3JSC3JIT14emit_op_rshiftEPNS_11InstructionE
+__ZN3JSC3JIT18emitSlow_op_rshiftEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC18PostfixBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC18PostfixBracketNodeD0Ev
+__ZN3JSC21ReadModifyBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC21ReadModifyBracketNodeD0Ev
+__ZN3JSC11Interpreter15unwindCallFrameERPNS_9ExecStateENS_7JSValueERjRPNS_9CodeBlockE
+__ZN3JSCL22errorProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3WTF23waitForThreadCompletionEjPPv
+__ZN3WTF15ThreadConditionD1Ev
+__ZN3JSC9Structure24removePropertyTransitionEPS0_RKNS_10IdentifierERm
+__ZN3JSC12JSActivation3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC26createNotAnObjectErrorStubEPNS_9ExecStateEb
+__ZN3JSC13JSNotAnObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZNK3JSC22JSNotAnObjectErrorStub22isNotAnObjectErrorStubEv
+__ZN3JSC22createNotAnObjectErrorEPNS_9ExecStateEPNS_22JSNotAnObjectErrorStubEjPNS_9CodeBlockE
+__ZN3JSC9CodeBlock37getByIdExceptionInfoForBytecodeOffsetEPNS_9ExecStateEjRNS_8OpcodeIDE
+__ZN3JSCL18createErrorMessageEPNS_9ExecStateEPNS_9CodeBlockEiiiNS_7JSValueENS_7UStringE
+__ZN3JSC13ErrorInstanceD1Ev
+__ZN3JSC22JSNotAnObjectErrorStubD1Ev
+__ZN3JSC13JSNotAnObjectD1Ev
+__ZN3JSC19JSStaticScopeObjectD1Ev
+__ZN3JSC19JSStaticScopeObjectD2Ev
+__ZN3JSC17DeleteBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17BytecodeGenerator15emitDeleteByValEPNS_10RegisterIDES2_S2_
+__ZN3JSC17DeleteBracketNodeD0Ev
+__ZN3JSC8JITStubs17cti_op_del_by_valEPPv
+__ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateEj
+__ZN3JSC28globalFuncEncodeURIComponentEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL6encodeEPNS_9ExecStateERKNS_7ArgListEPKc
+__ZNK3JSC7UString10UTF8StringEb
__ZN3WTF7Unicode18convertUTF16ToUTF8EPPKtS2_PPcS4_b
-__Z35NPN_InitializeVariantWithStringCopyP10_NPVariantPK9_NPString
-__ZN3KJS7CStringD1Ev
-__NPN_ReleaseObject
-__Z12jsDeallocateP8NPObject
-__ZN3KJS8Bindings10RootObject11gcUnprotectEPNS_8JSObjectE
-_pow5mult
-_quorem
-_diff
-__ZN3WTF6VectorIPN3KJS12FuncDeclNodeELm16EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN3KJS12FuncDeclNodeELm16EE14expandCapacityEm
-__ZN3WTF6VectorIPN3KJS12FuncDeclNodeELm16EE15reserveCapacityEm
-__ZN3KJS10NumberNode8setValueEd
-__ZN3KJS11ResolveNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS21dateProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS24dateProtoFuncGetFullYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS12NotEqualNode8evaluateEPNS_9ExecStateE
-__ZN3KJS14InstanceOfNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS17PreIncResolveNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS9NumberImp9toBooleanEPNS_9ExecStateE
-__ZN3KJS10LessEqNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS29objectProtoFuncHasOwnPropertyEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS10LessEqNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS13UnaryPlusNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS17DeleteBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS17DeleteBracketNode8evaluateEPNS_9ExecStateE
-__ZN3KJS20arrayProtoFuncSpliceEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS17staticValueGetterINS_13MathObjectImpEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS13MathObjectImp16getValuePropertyEPNS_9ExecStateEi
-__NPN_DeallocateObject
-__ZN3KJS14PostIncDotNodeD1Ev
-__ZN3KJS22ReadModifyLocalVarNodeD1Ev
-__ZN3KJS10LessEqNodeD1Ev
-__ZN3KJS18PostDecResolveNodeD1Ev
-__ZN3KJS17DeleteBracketNodeD1Ev
-__ZN3KJS18PostIncResolveNodeD1Ev
-__ZN3KJS14InstanceOfNodeD1Ev
-__ZN3KJS10NegateNodeD1Ev
-__ZN3KJS17PreDecResolveNodeD1Ev
-__ZN3KJS21ReadModifyBracketNodeD1Ev
-__ZN3KJS10BitAndNodeD1Ev
-__ZN3KJS9BitOrNodeD1Ev
-__ZN3KJS14RightShiftNodeD1Ev
-__ZN3KJS13LeftShiftNodeD1Ev
-__ZN3KJS13UnaryPlusNodeD1Ev
-__ZN3KJS13MathObjectImpD0Ev
-__ZN3KJS14NativeErrorImpD0Ev
-__ZN3KJS14ErrorObjectImpD0Ev
-__ZN3KJS15RegExpObjectImpD0Ev
-__ZN3KJS17DateObjectFuncImpD0Ev
-__ZN3KJS13DateObjectImpD0Ev
-__ZN3KJS15NumberObjectImpD0Ev
-__ZN3KJS16BooleanObjectImpD0Ev
-__ZN3KJS19StringObjectFuncImpD0Ev
-__ZN3KJS15StringObjectImpD0Ev
-__ZN3KJS14ArrayObjectImpD0Ev
-__ZN3KJS17FunctionObjectImpD0Ev
-__ZN3KJS15ObjectObjectImpD0Ev
-__ZN3KJS20NativeErrorPrototypeD0Ev
-__ZN3KJS15RegExpPrototypeD0Ev
-__ZN3KJS15NumberPrototypeD0Ev
-__ZN3KJS16BooleanPrototypeD0Ev
-__ZN3KJS15StringPrototypeD0Ev
-__ZN3KJS15ObjectPrototypeD0Ev
-__ZN3KJS17FunctionPrototypeD0Ev
-__ZN3KJS13PreIncDotNodeD1Ev
-__ZN3KJS17staticValueGetterINS_15RegExpObjectImpEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS15RegExpObjectImp16getValuePropertyEPNS_9ExecStateEi
-__ZNK3KJS15RegExpObjectImp10getBackrefEj
-__ZN3KJS16mathProtoFuncMaxEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS17staticValueGetterINS_15NumberObjectImpEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS15NumberObjectImp16getValuePropertyEPNS_9ExecStateEi
-__ZN3KJS10NegateNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS10NegateNode8evaluateEPNS_9ExecStateE
-__ZN3KJS25stringProtoFuncCharCodeAtEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS21arrayProtoFuncUnShiftEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS10LessEqNode8evaluateEPNS_9ExecStateE
-__ZN3KJS8JSObject15getPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
-__ZNK3KJS12PropertySlot8getValueEPNS_9ExecStateEPNS_8JSObjectEj
-__ZN3KJS16mathProtoFuncMinEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS10Identifier5equalEPKNS_7UString3RepEPKc
-__ZN3KJS11addSlowCaseEPNS_9ExecStateEPNS_7JSValueES3_
-__ZN3KJS8LessNode8evaluateEPNS_9ExecStateE
-__ZN3KJS7DivNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS10NegateNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS7AddNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS16mathProtoFuncSinEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS16mathProtoFuncLogEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS16mathProtoFuncAbsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3WTF6VectorIPN3KJS9ExecStateELm16EE14expandCapacityEm
-__ZN3WTF6VectorIPN3KJS9ExecStateELm16EE15reserveCapacityEm
-__ZN3KJS17arrayProtoFuncPopEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS21stringProtoFuncSubstrEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS28globalFuncEncodeURIComponentEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS6encodeEPNS_9ExecStateERKNS_4ListEPKc
-__ZN3KJS17PrefixBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS17PreIncBracketNode8evaluateEPNS_9ExecStateE
-__ZN3KJS16mathProtoFuncExpEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS17mathProtoFuncATanEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS17mathProtoFuncCeilEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS14AddNumbersNode8evaluateEPNS_9ExecStateE
-__ZN3KJS18arrayProtoFuncSortEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS13ArrayInstance4sortEPNS_9ExecStateEPNS_8JSObjectE
-__ZN3KJS13ArrayInstance17compactForSortingEv
-__ZN3KJS34compareWithCompareFunctionForQSortEPKvS1_
-__ZN3KJS13ArrayInstance4sortEPNS_9ExecStateE
-__ZN3KJS16mathProtoFuncPowEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS15NumberObjectImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS23numberProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS9NumberImp8toObjectEPNS_9ExecStateE
-__ZN3KJS16mathProtoFuncCosEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS17mathProtoFuncSqrtEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS17mathProtoFuncASinEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS14ExpressionNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS11DoWhileNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS21stringProtoFuncSearchEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS13PreDecDotNode8evaluateEPNS_9ExecStateE
-__ZN3KJS18PostfixBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS18PostIncBracketNode8evaluateEPNS_9ExecStateE
-__ZN3KJS13LeftShiftNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
+__ZN3JSC10NegateNodeD0Ev
+__ZN3JSC8JITStubs13cti_op_negateEPPv
+__ZN3JSCL17mathProtoFuncSqrtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL16mathProtoFuncAbsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL18mathProtoFuncRoundEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL16mathProtoFuncCosEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL16mathProtoFuncSinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs10cti_op_subEPPv
+__ZNK3JSC8JSObject8toNumberEPNS_9ExecStateE
+__ZN3JSC16ArrayConstructor11getCallDataERNS_8CallDataE
+__ZN3JSCL20callArrayConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs10cti_op_modEPPv
+__ZN3JSC8JITStubs12cti_op_jlessEPPv
+__ZL17makeLeftShiftNodePvPN3JSC14ExpressionNodeES2_b
+__ZN3JSC13LeftShiftNodeD0Ev
+__ZN3JSC3JIT14emit_op_lshiftEPNS_11InstructionE
+__ZN3JSC3JIT18emitSlow_op_lshiftEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC11JITStubCall11addArgumentENS_3X8610RegisterIDE
+__ZN3JSCL16mathProtoFuncMaxEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC10BitAndNodeD0Ev
+__ZN3JSC3JIT14emit_op_bitandEPNS_11InstructionE
+__ZN3JSC3JIT18emitSlow_op_bitandEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC8JITStubs13cti_op_bitandEPPv
+__ZN3JSC14BitwiseNotNodeD0Ev
+__ZN3JSC3JIT14emit_op_bitnotEPNS_11InstructionE
+__ZN3JSC3JIT18emitSlow_op_bitnotEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC22UnsignedRightShiftNodeD0Ev
+__ZN3JSC10BitXOrNodeD0Ev
+__ZN3JSC3JIT14emit_op_bitxorEPNS_11InstructionE
+__ZN3JSC3JIT18emitSlow_op_bitxorEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSCL25stringProtoFuncCharCodeAtEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs14cti_op_urshiftEPPv
+__ZN3JSC16toUInt32SlowCaseEdRb
+__ZN3JSCL17mathProtoFuncCeilEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC6JSCell18getTruncatedUInt32ERj
+__ZN3JSC3JIT13emit_op_bitorEPNS_11InstructionE
+__ZN3JSC3JIT17emitSlow_op_bitorEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC8JITStubs12cti_op_bitorEPPv
+__ZN3JSC9BitOrNodeD0Ev
+__ZN3JSC8JITStubs13cti_op_rshiftEPPv
+__ZN3JSC8JITStubs13cti_op_bitxorEPPv
+__ZN3JSC9parseDateERKNS_7UStringE
+__ZN3WTF6VectorIN3JSC10CallRecordELm0EE14expandCapacityEmPKS2_
+__ZNK3JSC12JSActivation12toThisObjectEPNS_9ExecStateE
+__ZN3JSC3JIT20emit_op_resolve_skipEPNS_11InstructionE
+__ZN3JSC8JITStubs19cti_op_resolve_skipEPPv
+__ZN3JSCL24dateProtoFuncGetFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC17StringConstructor16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL30constructWithStringConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSC5equalEPKNS_7UString3RepES3_
+__ZN3JSC8EvalNode4markEv
+__ZN3JSC10SwitchNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC13CaseBlockNode20emitBytecodeForBlockERNS_17BytecodeGeneratorEPNS_10RegisterIDES4_
+__ZN3JSC13CaseBlockNode18tryOptimizedSwitchERN3WTF6VectorIPNS_14ExpressionNodeELm8EEERiS7_
+__ZN3JSCL17processClauseListEPNS_14ClauseListNodeERN3WTF6VectorIPNS_14ExpressionNodeELm8EEERNS_10SwitchKindERbRiSB_
+__ZN3WTF6VectorIPN3JSC14ExpressionNodeELm8EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN3JSC5LabelEEELm8EE14expandCapacityEm
+__ZN3JSC17BytecodeGenerator11beginSwitchEPNS_10RegisterIDENS_10SwitchInfo10SwitchTypeE
+__ZN3WTF6VectorIN3JSC10SwitchInfoELm0EE14expandCapacityEm
+__ZN3JSC17BytecodeGenerator9endSwitchEjPN3WTF6RefPtrINS_5LabelEEEPPNS_14ExpressionNodeEPS3_ii
+__ZN3WTF6VectorIN3JSC15SimpleJumpTableELm0EE14expandCapacityEm
+__ZN3WTF6VectorIiLm0EE15reserveCapacityEm
+__ZN3JSC14CaseClauseNodeD0Ev
+__ZN3JSC14ClauseListNodeD0Ev
+__ZN3JSC13CaseBlockNodeD0Ev
+__ZN3JSC10SwitchNodeD0Ev
+__ZN3JSC3JIT19emit_op_switch_charEPNS_11InstructionE
+__ZN3WTF6VectorIN3JSC12SwitchRecordELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN3JSC22AbstractMacroAssemblerINS1_12X86AssemblerEE17CodeLocationLabelELm0EE4growEm
+__ZN3JSC8JITStubs18cti_op_switch_charEPPv
+__ZN3JSCL16mathProtoFuncPowEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3WTF6VectorIcLm0EE14expandCapacityEm
+__ZN3WTF6VectorIN3JSC7UString5RangeELm16EE14expandCapacityEm
+__ZN3WTF6VectorIN3JSC7UStringELm16EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN3JSC7UStringELm16EE15reserveCapacityEm
+__ZN3JSC7JSArray16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE
+__ZN3JSC9ExecState10arrayTableEPS0_
+__ZN3JSC20MarkedArgumentBuffer10slowAppendENS_7JSValueE
+__ZN3WTF9HashTableIPN3JSC20MarkedArgumentBufferES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehas
+__ZN3JSC8JITStubs24cti_op_get_by_val_stringEPPv
+__ZN3JSCL16mathProtoFuncLogEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC7UString8toDoubleEv
+__ZN3WTF9HashTableIPN3JSC7UString3RepES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E4findIS4_NS_22Id
+__ZN3JSCL29objectProtoFuncHasOwnPropertyEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL18arrayProtoFuncSortEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC7JSArray4sortEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataE
+__ZN3WTF7AVLTreeIN3JSC32AVLTreeAbstractorForArrayCompareELj44ENS_18AVLTreeDefaultBSetILj44EEEE6insertEi
+__ZN3JSCltERKNS_7UStringES2_
+__ZN3WTF7AVLTreeIN3JSC32AVLTreeAbstractorForArrayCompareELj44ENS_18AVLTreeDefaultBSetILj44EEEE7balanceEi
+__Z12jsRegExpFreeP8JSRegExp
+__ZN3JSCL21stringProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC19globalFuncEncodeURIEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC19globalFuncDecodeURIEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL6decodeEPNS_9ExecStateERKNS_7ArgListEPKcb
__ZN3WTF7Unicode18UTF8SequenceLengthEc
__ZN3WTF7Unicode18decodeUTF8SequenceEPKc
-__ZN3KJS9StringImp18getPrimitiveNumberEPNS_9ExecStateERdRPNS_7JSValueE
-__ZN3KJSltERKNS_7UStringES2_
-__ZN3KJS15ConditionalNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS10BitAndNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS10BitAndNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS15DotAccessorNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS19ImmediateNumberNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS13ArrayInstance16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE
-__ZN3KJS18LocalVarAccessNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS13LeftShiftNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS19BracketAccessorNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS14RightShiftNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS14RightShiftNode8evaluateEPNS_9ExecStateE
-__ZN3KJS7AddNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS19ImmediateNumberNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS13LeftShiftNode8evaluateEPNS_9ExecStateE
-__ZN3KJS18LocalVarAccessNode16evaluateToUInt32EPNS_9ExecStateE
-__ZNK3KJS9NumberImp17getTruncatedInt32ERi
-__ZN3KJS19BracketAccessorNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS16BooleanObjectImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS24booleanProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS14BitwiseNotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS9BitOrNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS9BitOrNode8evaluateEPNS_9ExecStateE
-__ZN3KJS10BitAndNode8evaluateEPNS_9ExecStateE
-__ZN3KJS14BitwiseNotNode8evaluateEPNS_9ExecStateE
-__ZN3KJS15NumberObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS8Bindings8Instance32createBindingForLanguageInstanceENS1_15BindingLanguageEPvN3WTF10PassRefPtrINS0_10RootObjectEEE
-__ZN3KJS8Bindings9CInstanceC2EP8NPObjectN3WTF10PassRefPtrINS0_10RootObjectEEE
-__ZN3KJS8Bindings8InstanceC2EN3WTF10PassRefPtrINS0_10RootObjectEEE
-__ZNK3KJS8Bindings8Instance10rootObjectEv
-__ZN3KJS8Bindings8Instance19createRuntimeObjectEPS1_
-__ZN3KJS16RuntimeObjectImpC2EPNS_8Bindings8InstanceE
-__ZN3KJS8Bindings10RootObject16addRuntimeObjectEPNS_16RuntimeObjectImpE
-__ZN3KJS16RuntimeObjectImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS8Bindings9CInstance5beginEv
-__ZNK3KJS8Bindings9CInstance8getClassEv
-__ZN3KJS8Bindings6CClass11classForIsAEP7NPClass
-__ZN3KJS8Bindings6CClassC2EP7NPClass
-__ZNK3KJS8Bindings6CClass10fieldNamedERKNS_10IdentifierEPNS0_8InstanceE
-__ZNK3KJS7UString5asciiEv
-__ZNK3KJS8Bindings6CClass12methodsNamedERKNS_10IdentifierEPNS0_8InstanceE
-__NPN_UTF8FromIdentifier
-__ZN3KJS8Bindings5Class14fallbackObjectEPNS_9ExecStateEPNS0_8InstanceERKNS_10IdentifierE
-__ZN3KJS8Bindings9CInstance3endEv
-__ZN3WTF6VectorIPN3KJS8Bindings6MethodELm0EE14expandCapacityEmPKS4_
-__ZN3WTF6VectorIPN3KJS8Bindings6MethodELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN3KJS8Bindings6MethodELm0EE15reserveCapacityEm
-__ZN3KJS16RuntimeObjectImp12methodGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS13RuntimeMethodC2EPNS_9ExecStateERKNS_10IdentifierERN3WTF6VectorIPNS_8Bindings6MethodELm0EEE
-__ZN3WTF6VectorIPN3KJS8Bindings6MethodELm0EEC2ERKS5_
-__ZN3KJS13RuntimeMethod14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS16RuntimeObjectImp9classInfoEv
-__ZN3KJS8Bindings9CInstance12invokeMethodEPNS_9ExecStateERKN3WTF6VectorIPNS0_6MethodELm0EEERKNS_4ListE
-__ZNK3KJS8Bindings7CMethod4nameEv
-__ZN3KJS8Bindings23convertNPVariantToValueEPNS_9ExecStateEPK10_NPVariantPNS0_10RootObjectE
-__ZN3KJS16RuntimeObjectImpD2Ev
-__ZN3KJS8Bindings10RootObject19removeRuntimeObjectEPNS_16RuntimeObjectImpE
-__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcPNS_7JSValueEPS0_RKNS_10IdentifierE
-__ZN3KJS10substituteERNS_7UStringERKS0_
-__ZN3KJS4Node16rethrowExceptionEPNS_9ExecStateE
-__ZN3KJS4Node15handleExceptionEPNS_9ExecStateEPNS_7JSValueE
-__ZN3KJS16RuntimeObjectImp10invalidateEv
-__ZN3KJS16JSVariableObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3KJS14JSGlobalObjectD2Ev
-__ZN3KJS15GlobalExecStateD1Ev
-__ZN3KJS14BitwiseNotNodeD1Ev
-__ZN3KJSplERKNS_7UStringES2_
-__ZN3KJS5Lexer14convertUnicodeEiiii
-__ZN3KJS14ArrayObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS9Arguments3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZN3WTF9HashTableIjSt4pairIjiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENS8_IiEEEES9_E3addIjS2_NS_22IdentityHashTranslatorIjS2_S6_EEEES1_INS_17HashTableIteratorIjS2_S4_S6_SB_S9_EEbERKT_RKT0_
-__ZN3WTF9HashTableIjSt4pairIjiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENS8_IiEEEES9_EC2ERKSC_
-__ZN3KJS23stringProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3WTF9HashTableIjSt4pairIjiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENS8_IiEEEES9_E4findIjNS_22IdentityHashTranslatorIjS2_S6_EEEENS_17HashTableIteratorIjS2_S4_S6_SB_S9_EERKT_
-__ZN3KJS10BitXOrNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS10BitXOrNode8evaluateEPNS_9ExecStateE
-__ZN3KJS14RightShiftNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS10BitXOrNodeD1Ev
-__ZN3KJS17DateObjectFuncImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS9parseDateERKNS_7UStringE
-__ZN3KJS6RegExp6createERKNS_7UStringE
-__ZN3KJS7ModNode16evaluateToNumberEPNS_9ExecStateE
-__ZNK3KJS16RuntimeObjectImp14implementsCallEv
-__ZNK3KJS8Bindings9CInstance14implementsCallEv
-__ZN3KJS11Interpreter21shouldPrintExceptionsEv
-__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcRKNS_10IdentifierE
-__ZN3KJS12PropertySlot15undefinedGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKS0_
-__ZN3KJS15SavedPropertiesD1Ev
-__ZN3KJS8JSObject18isActivationObjectEv
-__ZN3KJS19globalFuncDecodeURIEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS14JSGlobalObject15restoreBuiltinsERKNS_13SavedBuiltinsE
-__ZN3KJS11PropertyMap7restoreERKNS_15SavedPropertiesE
-__ZN3KJS16JSVariableObject19restoreLocalStorageERKNS_15SavedPropertiesE
-__ZN3WTF6VectorIN3KJS17LocalStorageEntryELm32EE6resizeEm
-__ZNK3KJS23FunctionCallBracketNode8streamToERNS_12SourceStreamE
-__ZNK3KJS17TypeOfResolveNode10precedenceEv
-__ZNK3KJS17TypeOfResolveNode8streamToERNS_12SourceStreamE
-__ZNK3KJS13AssignDotNode10precedenceEv
-__ZNK3KJS12ContinueNode8streamToERNS_12SourceStreamE
-__ZN3KJS11FunctionImp12callerGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS9BreakNodeC1ERKNS_10IdentifierE
-__ZN3KJS13StatementNode9pushLabelERKNS_10IdentifierE
-__ZN3KJS9ThrowNode7executeEPNS_9ExecStateE
-__ZNK3KJS15NumberObjectImp19implementsConstructEv
-__ZN3KJS22numberProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS8VoidNodeD1Ev
-__ZN3KJS14ErrorObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS18globalFuncIsFiniteEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS21ReadModifyResolveNode8evaluateEPNS_9ExecStateE
-__ZN3KJS15StrictEqualNode8evaluateEPNS_9ExecStateE
-__ZN3KJS27compareByStringPairForQSortEPKvS1_
-__ZN3KJS7compareERKNS_7UStringES2_
-__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcPNS_7JSValueEPS0_S8_
-__ZN3KJS21arrayProtoFuncReverseEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS20stringProtoFuncSliceEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS15StringObjectImp19implementsConstructEv
-__ZN3KJS15StringObjectImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS18PostDecResolveNode8evaluateEPNS_9ExecStateE
-__ZN3KJS21dateProtoFuncSetMonthEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS23setNewValueFromDateArgsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListEib
-__ZN3KJS20dateProtoFuncSetDateEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS21dateProtoFuncSetHoursEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS23setNewValueFromTimeArgsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListEib
-__ZN3KJS23dateProtoFuncSetMinutesEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS24dateProtoFuncSetFullYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS8JSObject18getPrimitiveNumberEPNS_9ExecStateERdRPNS_7JSValueE
-__ZN3KJS20dateProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS27dateProtoFuncGetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS27dateProtoFuncSetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS24dateProtoFuncGetUTCMonthEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS24dateProtoFuncSetUTCMonthEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS23dateProtoFuncGetUTCDateEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS23dateProtoFuncSetUTCDateEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS24dateProtoFuncGetUTCHoursEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS24dateProtoFuncSetUTCHoursEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS26dateProtoFuncGetUTCMinutesEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS26dateProtoFuncSetUTCMinutesEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS26dateProtoFuncGetUTCSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS26dateProtoFuncSetUTCSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS22numberProtoFuncToFixedEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS18integer_part_noexpEd
-__ZN3KJS14AddNumbersNode16evaluateToNumberEPNS_9ExecStateE
-__ZNK3KJS14InstanceOfNode10precedenceEv
-__ZNK3KJS14InstanceOfNode8streamToERNS_12SourceStreamE
-__ZNK3KJS8JSObject8toNumberEPNS_9ExecStateE
-__Z15kjs_pcre_xclassiPKh
-__ZN3KJS10NumberNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS18PostDecBracketNodeD1Ev
-__ZN3KJS17PropertyNameArray3addERKNS_10IdentifierE
-__ZN3KJS22errorProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS13LeftShiftNode15evaluateToInt32EPNS_9ExecStateE
-__ZNK3KJS9RegExpImp14implementsCallEv
-__ZN3KJS22stringProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS15ConditionalNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS16JSVariableObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE
-__ZN3KJS11DoWhileNode7executeEPNS_9ExecStateE
-__ZN3KJS8Bindings23convertObjcValueToValueEPNS_9ExecStateEPvNS0_13ObjcValueTypeEPNS0_10RootObjectE
-__ZN3KJS8Bindings17webUndefinedClassEv
-__ZN3KJS8Bindings20webScriptObjectClassEv
-__ZN3KJS8Bindings8Instance19createRuntimeObjectENS1_15BindingLanguageEPvN3WTF10PassRefPtrINS0_10RootObjectEEE
-__ZN3KJS8Bindings12ObjcInstanceC2EP11objc_objectN3WTF10PassRefPtrINS0_10RootObjectEEE
-__ZN3KJS8Bindings8Instance18didExecuteFunctionEv
-__ZN3KJS8Bindings12ObjcInstance5beginEv
-__ZNK3KJS8Bindings12ObjcInstance8getClassEv
-__ZN3KJS8Bindings9ObjcClass11classForIsAEP10objc_class
-__ZN3KJS8Bindings9ObjcClassC2EP10objc_class
-__ZNK3KJS8Bindings9ObjcClass10fieldNamedERKNS_10IdentifierEPNS0_8InstanceE
-__ZNK3KJS8Bindings9ObjcClass12methodsNamedERKNS_10IdentifierEPNS0_8InstanceE
-__ZN3KJS8Bindings25convertJSMethodNameToObjcEPKcPcm
-__ZN3KJS8Bindings10ObjcMethodC2EP10objc_classPKc
-__ZN3KJS8Bindings12ObjcInstance3endEv
-__ZN3KJS8Bindings12ObjcInstance12invokeMethodEPNS_9ExecStateERKN3WTF6VectorIPNS0_6MethodELm0EEERKNS_4ListE
-__ZNK3KJS8Bindings10ObjcMethod18getMethodSignatureEv
-__ZNK3KJS8Bindings10ObjcMethod4nameEv
-__ZN3KJS8Bindings20objcValueTypeForTypeEPKc
-__ZN3KJS8Bindings23convertValueToObjcValueEPNS_9ExecStateEPNS_7JSValueENS0_13ObjcValueTypeE
-__ZNK3KJS6JSCell9getStringEv
-__ZN3KJS8Bindings23convertNSStringToStringEP8NSString
-__ZN3KJS8Bindings12ObjcInstanceD1Ev
-__ZN3KJS9LabelNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS9LabelNode7executeEPNS_9ExecStateE
-__ZN3KJS12ContinueNodeC1ERKNS_10IdentifierE
-__ZN3KJS11FunctionImp12lengthGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS9BitOrNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS18EmptyStatementNode7executeEPNS_9ExecStateE
-__ZN3KJS22UnsignedRightShiftNodeD1Ev
-__ZN3KJS7ModNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS20arrayProtoFuncFilterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS6InNode8evaluateEPNS_9ExecStateE
-__ZN3KJS17arrayProtoFuncMapEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS10LessEqNode10precedenceEv
-__ZNK3KJS10LessEqNode8streamToERNS_12SourceStreamE
-__ZNK3KJS18NotStrictEqualNode10precedenceEv
-__ZNK3KJS18NotStrictEqualNode8streamToERNS_12SourceStreamE
-__ZN3KJS14StringInstance16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE
-__ZN3KJS7UString4fromEi
-__ZN3KJS14StringInstance11indexGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS21stringProtoFuncConcatEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS22UnsignedRightShiftNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS11ResolveNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS19FunctionCallDotNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS22UnsignedRightShiftNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS11ResolveNode16evaluateToUInt32EPNS_9ExecStateE
-__ZNK3KJS9NumberImp18getTruncatedUInt32ERj
-__ZN3KJS10NumberNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS7SubNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS14BitwiseNotNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS10BitAndNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS7AddNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS7SubNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS8VoidNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS8VoidNode8evaluateEPNS_9ExecStateE
-__ZN3KJS17DeleteResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS18LocalVarDeleteNodeD1Ev
-__ZN3KJS11FunctionImp15argumentsGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS18LocalVarDeleteNode8evaluateEPNS_9ExecStateE
-__ZN3KJS17DeleteResolveNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS16RuntimeObjectImp6canPutEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3KJS13UnaryPlusNode8evaluateEPNS_9ExecStateE
-__ZN3KJS24dateProtoFuncToUTCStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS23booleanProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS11NewExprNode16evaluateToNumberEPNS_9ExecStateE
-__Z22kjs_pcre_ucp_othercasej
-__ZN3KJS17PreDecResolveNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS7JSValue7toFloatEPNS_9ExecStateE
-__ZN3KJS14ExpressionNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS4List26markProtectedListsSlowCaseEv
-__ZNK3KJS6JSCell9getStringERNS_7UStringE
-__ZN3KJS8TrueNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS9RegExpImp3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZNK3KJS9NumberImp9getUInt32ERj
-__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcPNS_7JSValueEPS0_
-__ZN3KJS23FunctionCallResolveNode15evaluateToInt32EPNS_9ExecStateE
-__ZNK3KJS6JSCell18getTruncatedUInt32ERj
-__ZNK3KJS9LabelNode8streamToERNS_12SourceStreamE
-__ZNK3KJS17ObjectLiteralNode21needsParensIfLeftmostEv
-__ZNK3KJS11DoWhileNode8streamToERNS_12SourceStreamE
-__ZNK3KJS17PreDecResolveNode8streamToERNS_12SourceStreamE
-__ZNK3KJS13PreIncDotNode8streamToERNS_12SourceStreamE
-__ZNK3KJS13PreDecDotNode8streamToERNS_12SourceStreamE
-__ZNK3KJS17DeleteResolveNode8streamToERNS_12SourceStreamE
-__ZN3KJS9FalseNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS23dateProtoFuncSetSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS14PostIncDotNode8streamToERNS_12SourceStreamE
-__ZNK3KJS8Bindings12ObjcInstance14implementsCallEv
-__ZN3KJS8Bindings9ObjcClass14fallbackObjectEPNS_9ExecStateEPNS0_8InstanceERKNS_10IdentifierE
-__ZN3KJS16BooleanObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS11jsUndefinedEv
-___tcf_2
-___tcf_6
-___tcf_0
-___tcf_5
-___tcf_3
-___tcf_4
-__Z12jsRegExpFreeP8JSRegExp
-__ZN3KJS25CollectorHeapIntrospector4sizeEP14_malloc_zone_tPKv
-__ZN3WTF9HashTableINS_6RefPtrIN3KJS7UString3RepEEESt4pairIS5_mENS_18PairFirstExtractorIS7_EENS2_17IdentifierRepHashENS_14PairHashTraitsINS2_23IdentifierRepHashTraitsENS2_26SymbolTableIndexHashTraitsEEESC_E4findIS5_NS_22IdentityHashTranslatorIS5_S7_SA_EEEENS_17HashTableIteratorIS5_S7_S9_SA_SE_SC_EERKT_
-__ZN3KJS18AssignLocalVarNodeD1Ev
-__ZN3KJS8TrueNodeD1Ev
-__ZN3KJS11NewExprNodeD1Ev
-__ZN3KJS19ImmediateNumberNodeD1Ev
-__ZN3KJS17AssignBracketNodeD1Ev
-__ZN3KJS18LocalVarAccessNodeD1Ev
-__ZN3KJS16ParserRefCounted8refcountEv
-__ZN3KJS14JSGlobalObject16stopTimeoutCheckEv
-__ZN3KJS11GreaterNodeD1Ev
-__ZN3KJS16ArgumentListNodeD1Ev
-__ZN3KJS17FunctionObjectImp9constructEPNS_9ExecStateERKNS_4ListERKNS_10IdentifierERKNS_7UStringEi
-__ZN3KJS6Parser5parseINS_16FunctionBodyNodeEEEN3WTF10PassRefPtrIT_EERKNS_7UStringEiPKNS_5UCharEjPiSD_PS7_
-__ZN3KJS8JSObject4callEPNS_9ExecStateEPS0_RKNS_4ListE
-__ZN3KJS18AddStringRightNode8evaluateEPNS_9ExecStateE
-__ZN3KJS16globalFuncEscapeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS13DateObjectImp19implementsConstructEv
-__ZN3KJS13DateObjectImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS13DatePrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS20dateProtoFuncGetTimeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS12DateInstance9classInfoEv
-__ZNK3KJS9NumberImp8toNumberEPNS_9ExecStateE
-__ZNK3KJS9NumberImp8toStringEPNS_9ExecStateE
-__ZN3KJS9BlockNodeD1Ev
-__ZN3KJS21dateProtoFuncGetMonthEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS21msToGregorianDateTimeEdbRNS_17GregorianDateTimeE
-__ZN3KJS12getUTCOffsetEv
-__ZN3KJS12getDSTOffsetEdd
-__ZN3KJS15ConditionalNodeD1Ev
-__ZN3KJS7DivNodeD1Ev
-__ZN3KJS9EqualNodeD1Ev
-__ZN3KJS8NullNodeD1Ev
-__ZN3KJS9FalseNodeD1Ev
-__ZN3KJS12NotEqualNodeD1Ev
-__ZN3KJS7SubNodeD1Ev
-__ZN3KJS7SubNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS24LocalVarFunctionCallNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS21ReadModifyResolveNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS14StringInstance12lengthGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS18globalFuncUnescapeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS7DivNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS7DivNode8evaluateEPNS_9ExecStateE
-__ZN3KJS18LocalVarAccessNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS8MultNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS8MultNode8evaluateEPNS_9ExecStateE
-__ZN3KJS19FunctionCallDotNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS7SubNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS9NumberImp11toPrimitiveEPNS_9ExecStateENS_6JSTypeE
-__ZN3KJS18AddStringRightNodeD1Ev
-__ZN3KJS7AddNodeD1Ev
-__ZN3KJS13LogicalOrNodeD1Ev
-__ZN3KJS17PreIncResolveNodeD1Ev
-__ZN3KJS8MultNodeD1Ev
-__ZN3KJS8LessNodeD1Ev
-__ZN3KJS14LogicalAndNodeD1Ev
-__ZN3KJS10NumberNodeD1Ev
-__ZN3KJS13GreaterEqNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS14LogicalNotNodeD1Ev
-__ZN3KJS7ModNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS14JSGlobalObject12checkTimeoutEv
-__ZN3KJS7ModNode8evaluateEPNS_9ExecStateE
-__ZN3KJS15LessNumbersNode8evaluateEPNS_9ExecStateE
-__ZN3KJS20dateProtoFuncGetYearEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS8ThisNodeD1Ev
-__ZN3KJS19mathProtoFuncRandomEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS20globalFuncParseFloatEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS13GreaterEqNode8evaluateEPNS_9ExecStateE
-__ZN3KJS20dateProtoFuncGetDateEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS18mathProtoFuncFloorEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS23stringProtoFuncFontsizeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS11ResolveNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS13GreaterEqNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS9NumberImp18getPrimitiveNumberEPNS_9ExecStateERdRPNS_7JSValueE
-__ZN3KJS19stringProtoFuncLinkEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS19dateProtoFuncGetDayEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS21dateProtoFuncGetHoursEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS23dateProtoFuncGetMinutesEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS23dateProtoFuncGetSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS9ArrayNodeD1Ev
-__ZN3KJS11ElementNodeD1Ev
-__ZN3KJS17ObjectLiteralNodeD1Ev
-__ZN3KJS14PostfixDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS14PostIncDotNode8evaluateEPNS_9ExecStateE
-__ZN3KJS19PlaceholderTrueNodeD1Ev
-__ZN3KJS19PostDecLocalVarNode8evaluateEPNS_9ExecStateE
-__ZN3KJS17ReadModifyDotNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS17ReadModifyDotNode8evaluateEPNS_9ExecStateE
-__ZN3KJS21FunctionCallValueNodeD1Ev
-__ZN3KJS10BitAndNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS14AddNumbersNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS10BitXOrNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS22UnsignedRightShiftNode8evaluateEPNS_9ExecStateE
-__ZN3KJS8MultNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS7DivNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS19StringObjectFuncImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS7ModNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS10BitAndNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS14RightShiftNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS14AddNumbersNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS14globalFuncEvalEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS6Parser5parseINS_8EvalNodeEEEN3WTF10PassRefPtrIT_EERKNS_7UStringEiPKNS_5UCharEjPiSD_PS7_
-__ZN3KJS13EvalExecStateC1EPNS_14JSGlobalObjectEPNS_8EvalNodeEPNS_9ExecStateE
-__ZN3KJS8EvalNode7executeEPNS_9ExecStateE
-__ZN3KJS8EvalNodeD1Ev
-__ZN3KJS23FunctionCallBracketNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS23FunctionCallBracketNode8evaluateEPNS_9ExecStateE
-__ZN3KJS16PropertyListNodeD1Ev
-__ZN3KJS12PropertyNodeD1Ev
-__ZN3KJS13CaseBlockNodeD1Ev
-__ZN3KJS14CaseClauseNodeD1Ev
-__ZN3KJS14ClauseListNodeD1Ev
-__ZN3KJS9RegExpImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS17staticValueGetterINS_9RegExpImpEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS9RegExpImp16getValuePropertyEPNS_9ExecStateEi
-__ZN3KJS9ThrowNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS15StrictEqualNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS19regExpProtoFuncTestEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS9RegExpImp5matchEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS15StrictEqualNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS18NotStrictEqualNodeD1Ev
-__ZN3KJS15StrictEqualNodeD1Ev
-__ZN3KJS18LocalVarTypeOfNodeD1Ev
-__ZN3KJS19globalFuncEncodeURIEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS17TypeOfResolveNode8evaluateEPNS_9ExecStateE
-__ZN3KJS26stringProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS7JSValue20toIntegerPreserveNaNEPNS_9ExecStateE
-__ZNK3KJS7UString5rfindERKS0_i
-__ZN3KJS15TypeOfValueNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS15TypeOfValueNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS17FunctionObjectImp19implementsConstructEv
-__ZN3KJS17FunctionObjectImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZNK3KJS8JSObject11hasPropertyEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3KJS30dateProtoFuncGetTimezoneOffsetEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS8JSObject3putEPNS_9ExecStateEjPNS_7JSValueEi
-__ZN3KJS6InNodeD1Ev
-__ZNK3KJS9Arguments9classInfoEv
-__ZN3KJS10BitXOrNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS19addSlowCaseToNumberEPNS_9ExecStateEPNS_7JSValueES3_
-__ZN3KJS8JSObject14deletePropertyEPNS_9ExecStateEj
-__ZNK3KJS9WhileNode8streamToERNS_12SourceStreamE
-__ZNK3KJS9FalseNode8streamToERNS_12SourceStreamE
-__ZNK3KJS7DivNode8streamToERNS_12SourceStreamE
-__ZNK3KJS7DivNode10precedenceEv
-__ZNK3KJS15StrictEqualNode8streamToERNS_12SourceStreamE
-__ZNK3KJS15StrictEqualNode10precedenceEv
-__ZNK3KJS16VarDeclCommaNode10precedenceEv
-__ZNK3KJS17PreIncResolveNode8streamToERNS_12SourceStreamE
-__ZNK3KJS9FalseNode10precedenceEv
-__ZN3KJS14InstanceOfNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZNK3KJS19InternalFunctionImp21implementsHasInstanceEv
-__ZN3KJS8JSObject11hasInstanceEPNS_9ExecStateEPNS_7JSValueE
-__ZN3WTF14FastMallocZone9forceLockEP14_malloc_zone_t
-__ZN3KJS25CollectorHeapIntrospector9forceLockEP14_malloc_zone_t
-__ZN3WTF14FastMallocZone11forceUnlockEP14_malloc_zone_t
-__ZN3KJS25CollectorHeapIntrospector11forceUnlockEP14_malloc_zone_t
-__ZNK3KJS23FunctionCallBracketNode10precedenceEv
-__ZN3KJS14InstanceOfNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS9ThrowNode8streamToERNS_12SourceStreamE
-__ZNK3KJS7SubNode10precedenceEv
-__ZNK3KJS7SubNode8streamToERNS_12SourceStreamE
-__ZNK3KJS10NegateNode10precedenceEv
-__ZNK3KJS10NegateNode8streamToERNS_12SourceStreamE
-__ZNK3KJS12FuncDeclNode8streamToERNS_12SourceStreamE
-__ZNK3KJS18PostDecResolveNode8streamToERNS_12SourceStreamE
-__ZNK3KJS9BreakNode8streamToERNS_12SourceStreamE
-__ZNK3KJS6InNode10precedenceEv
-__ZNK3KJS6InNode8streamToERNS_12SourceStreamE
-__ZN3KJS14StringInstanceC2EPNS_8JSObjectERKNS_7UStringE
-__ZN3KJS18PostDecBracketNode8evaluateEPNS_9ExecStateE
-__ZN3KJS28dateProtoFuncGetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS18PostIncResolveNode8streamToERNS_12SourceStreamE
-__ZN3KJS13ArrayInstance14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3KJS14StringInstance14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3KJS15AssignErrorNodeD1Ev
-__ZN3WTF6VectorIcLm0EE14expandCapacityEmPKc
-__ZN3WTF6VectorIcLm0EE14expandCapacityEm
+__ZN3JSCL22numberProtoFuncToFixedEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL16integerPartNoExpEd
+__ZN3WTF14FastMallocZone10statisticsEP14_malloc_zone_tP19malloc_statistics_t
+__ZN3JSC4Heap26protectedGlobalObjectCountEv
+__ZN3JSC10JSFunction15argumentsGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZNK3JSC11Interpreter17retrieveArgumentsEPNS_9ExecStateEPNS_10JSFunctionE
+__ZN3JSCL21dateProtoFuncSetMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL23setNewValueFromDateArgsEPNS_9ExecStateENS_7JSValueERKNS_7ArgListEib
+__ZN3JSCL20dateProtoFuncSetDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3WTF6VectorIPNS0_IN3JSC10RegisterIDELm32EEELm32EE14expandCapacityEm
+__ZN3JSC8JITStubs14cti_op_pre_incEPPv
+__ZN3WTF6VectorIPN3JSC14ExpressionNodeELm16EE14expandCapacityEm
+__ZN3JSC13UnaryPlusNodeD0Ev
+__ZN3JSC3JIT19emit_op_to_jsnumberEPNS_11InstructionE
+__ZN3JSC3JIT23emitSlow_op_to_jsnumberEPNS_11InstructionERPNS_13SlowCaseEntryE
+__ZN3JSC8JITStubs18cti_op_to_jsnumberEPPv
+__ZN3JSC6JSLock12DropAllLocksC1Eb
+__ZN3JSCL17createJSLockCountEv
+__ZN3JSC6JSLock12DropAllLocksD1Ev
+__ZN3JSCL24dateProtoFuncSetFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE15reserveCapacityEm
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEENS2_14OffsetLocationENS_7StrHashIS5_EENS_10HashTraitsIS5_EENS9_IS6_EEE3addEPS4_
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_NS2_14OffsetLocationEENS_18PairFirstExtractorIS8_EENS_7StrHashIS5_
+__ZN3JSC3JIT21emit_op_switch_stringEPNS_11InstructionE
+__ZN3JSC8JITStubs20cti_op_switch_stringEPPv
+__ZN3WTF6VectorIN3JSC14ExecutablePool10AllocationELm2EE14expandCapacityEm
+__ZN3JSC12JSGlobalData6createEb
+__ZN3JSCL13allocateBlockILNS_8HeapTypeE1EEEPNS_14CollectorBlockEv
+__ZN3JSC7JSValueC1EPNS_9ExecStateEd
+__ZN3JSC10JSFunctionC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectESA_RK
+__ZN3JSC8JSObject17putDirectFunctionEPNS_9ExecStateEPNS_16InternalFunctionEj
+__ZN3JSC7CStringD1Ev
+__ZN3WTF7HashMapIPvjNS_7PtrHashIS1_EEN3JSC17JSValueHashTraitsENS_10HashTraitsIjEEE3addERKS1_RKj
+__ZN3WTF6VectorINS_6RefPtrIN3JSC12FuncExprNodeEEELm0EE14shrinkCapacityEm
+__ZN3JSC14ExpressionNodeD2Ev
+__ZThn12_N3JSC11ProgramNodeD0Ev
+__ZThn12_N3JSC12FuncExprNodeD0Ev
+__ZThn12_N3JSC16FunctionBodyNodeD0Ev
+__ZN3JSC8JITStubs16cti_op_new_arrayEPvz
+__ZN3WTF6VectorIN3JSC17StructureStubInfoELm0EE15reserveCapacityEm
+__ZN3JSC17BytecodeGenerator10emitOpcodeENS_8OpcodeIDE
+__ZN3JSC23MacroAssemblerX86Common4moveENS_3X8610RegisterIDES2_
+__ZN3JSC8JITStubs15cti_op_new_funcEPvz
+__ZN3JSC8JITStubs21cti_op_resolve_globalEPvz
+__ZN3JSC8JITStubs16cti_op_get_by_idEPvz
+__ZN3JSC8JITStubs31cti_op_construct_NotJSConstructEPvz
+__ZN3JSC8JITStubs16cti_op_put_by_idEPvz
+__ZN3JSC8JITStubs13cti_op_strcatEPvz
+__ZN3JSC8JITStubs19cti_op_resolve_funcEPvz
+__ZN3JSC8JITStubs23cti_vm_dontLazyLinkCallEPvz
+__ZN3JSC8JITStubs22cti_op_call_JSFunctionEPvz
+__ZN3JSC8JITStubs23cti_register_file_checkEPvz
+__ZN3JSC8JITStubs13cti_op_negateEPvz
+__ZN3JSC8JITStubs28cti_op_construct_JSConstructEPvz
+__ZN3JSC23MacroAssemblerX86Common12branchTest32ENS0_9ConditionENS_22AbstractMacroAssemblerINS_12X86AssemblerEE7AddressENS4_5Imm
+__ZN3JSC8JITStubs23cti_op_put_by_val_arrayEPvz
+__ZN3JSC8JITStubs23cti_op_put_by_id_secondEPvz
+__ZN3JSC15AssemblerBuffer14executableCopyEPNS_14ExecutablePoolE
+__ZN3JSC12X86Assembler8sarl_i8rEiNS_3X8610RegisterIDE
+__ZN3JSC12X86Assembler23X86InstructionFormatter9twoByteOpENS0_15TwoByteOpcodeIDEiNS_3X8610RegisterIDEi
+__ZN3JSC8JITStubs10cti_op_mulEPvz
+__ZN3JSC12jsNumberCellEPNS_12JSGlobalDataEd
+__ZN3JSC8JITStubs10cti_op_subEPvz
+__ZN3JSC8JITStubs10cti_op_divEPvz
+__ZN3JSC8JITStubs23cti_op_get_by_id_secondEPvz
+__ZN3JSC8JITStubs19cti_vm_lazyLinkCallEPvz
+__ZN3WTF6VectorIPN3JSC12CallLinkInfoELm0EE14expandCapacityEm
+__ZN3JSC8JITStubs19cti_op_convert_thisEPvz
+__ZN3JSC8JITStubs21cti_op_put_by_id_failEPvz
+__ZN3JSC8JITStubs10cti_op_addEPvz
+__ZN3JSC8JITStubs17cti_timeout_checkEPvz
+__ZN3JSC9jsBooleanEb
+__ZN3JSC9CodeBlock19isKnownNotImmediateEi
+__ZN3JSC12X86Assembler8movsd_mrEiNS_3X8610RegisterIDENS1_13XMMRegisterIDE
+__ZN3JSC8JITStubs25cti_op_call_NotJSFunctionEPvz
+__ZNK3JSC12JSNumberCell8toNumberEPNS_9ExecStateE
+__ZN3JSC8JITStubs26cti_op_get_by_id_self_failEPvz
+__ZN3JSC8JITStubs10cti_op_endEPvz
+__ZThn12_N3JSC12FuncDeclNodeD0Ev
+__ZN3JSC8JITStubs24cti_op_resolve_with_baseEPvz
+__ZN3JSC8JITStubs19cti_op_new_func_expEPvz
+__ZN3JSC8JITStubs22cti_op_push_activationEPvz
+__ZN3JSC8JITStubs17cti_op_get_by_valEPvz
+__ZN3JSC8JITStubs22cti_op_call_arityCheckEPvz
+__ZN3JSC8JITStubs11cti_op_lessEPvz
+__ZN3JSC12JSNumberCell18getPrimitiveNumberEPNS_9ExecStateERdRNS_7JSValueE
+__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDE
+__ZN3JSC8JITStubs27cti_op_get_by_id_proto_listEPvz
+__ZN3JSC8JITStubs12cti_op_jtrueEPvz
+__ZN3JSC8JITStubs10cti_op_modEPvz
+__ZN3JSC8JITStubs10cti_op_neqEPvz
+__ZN3JSC8JITStubs12cti_op_jlessEPvz
+__ZN3JSC8JITStubs24cti_op_get_by_id_genericEPvz
+__ZN3JSC8JITStubs14cti_op_jlesseqEPvz
+__ZN3JSC8JITStubs26cti_op_tear_off_activationEPvz
+__ZN3JSC8JITStubs21cti_op_ret_scopeChainEPvz
+__ZN3JSC8JITStubs19cti_op_to_primitiveEPvz
+__ZNK3JSC12JSNumberCell8toStringEPNS_9ExecStateE
+__ZN3JSC8JITStubs13cti_op_bitandEPvz
+__ZN3JSC8JITStubs13cti_op_lshiftEPvz
+__ZN3JSC8JITStubs13cti_op_bitnotEPvz
+__ZNK3JSC12JSNumberCell9toBooleanEPNS_9ExecStateE
+__ZN3JSC8JITStubs14cti_op_urshiftEPvz
+__ZNK3JSC12JSNumberCell18getTruncatedUInt32ERj
+__ZN3JSC4Yarr14RegexGenerator28generateCharacterClassSingleERNS1_19TermGenerationStateE
+__ZN3WTF15deleteAllValuesIPN3JSC4Yarr18PatternDisjunctionELm4EEEvRKNS_6VectorIT_XT0_EEE
+__ZN3JSC8JITStubs17cti_op_new_regexpEPvz
+__ZN3JSC8JITStubs12cti_op_bitorEPvz
+__ZNK3JSC12JSNumberCell17getTruncatedInt32ERi
+__ZN3JSC8JITStubs13cti_op_rshiftEPvz
+__ZN3JSC8JITStubs13cti_op_bitxorEPvz
+__ZN3WTF7HashSetINS_6RefPtrIN3JSC7UString3RepEEENS2_17IdentifierRepHashENS_10HashTraitsIS5_EEE3addERKS5_
+__ZN3JSC8JITStubs9cti_op_eqEPvz
+__ZN3JSC8JITStubs16cti_op_call_evalEPvz
+__ZN3JSC8JITStubs19cti_op_resolve_skipEPvz
+__ZN3JSC8JITStubs17cti_op_new_objectEPvz
+__ZN3JSC8JITStubs14cti_op_resolveEPvz
+__ZN3JSC8JITStubs17cti_op_put_by_valEPvz
+__ZN3JSC8JITStubs18cti_op_switch_charEPvz
+__ZN3JSC8JITStubs28cti_op_get_by_id_string_failEPvz
+__ZThn12_N3JSC8EvalNodeD0Ev
+__ZN3WTF6VectorIN3JSC7UStringELm16EE14expandCapacityEm
+__ZN3JSC8JITStubs17cti_op_get_pnamesEPvz
+__ZN3JSC8JITStubs17cti_op_next_pnameEPvz
+__ZN3WTF7HashSetIPN3JSC20MarkedArgumentBufferENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN3JSC20MarkedArgumentBufferES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findI
+__ZN3JSC8JITStubs24cti_op_get_by_val_stringEPvz
+__ZN3JSC4Yarr6ParserINS0_23RegexPatternConstructorEE28CharacterClassParserDelegate25atomBuiltInCharacterClassENS0_23BuiltInChar
+__ZN3JSC12jsNumberCellEPNS_9ExecStateEd
+__ZN3JSC8JITStubs18cti_op_is_functionEPvz
+__ZN3JSC8JITStubs16cti_op_is_objectEPvz
+__ZN3JSC8JITStubs16cti_op_nstricteqEPvz
+__ZN3JSC8JITStubs13cti_op_lesseqEPvz
+__ZNK3JSC12JSNumberCell11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
+__ZN3JSC4Yarr14RegexGenerator27generateCharacterClassFixedERNS1_19TermGenerationStateE
+__ZN3JSC4Heap7destroyEv
+__ZN3JSC12JSGlobalDataD1Ev
+__ZN3JSC12JSGlobalDataD2Ev
+__ZN3JSC12RegisterFileD1Ev
+__ZNK3JSC9HashTable11deleteTableEv
+__ZN3JSC5LexerD1Ev
+__ZN3JSC5LexerD2Ev
+__ZN3WTF20deleteAllPairSecondsIP24OpaqueJSClassContextDataKNS_7HashMapIP13OpaqueJSClassS2_NS_7PtrHashIS5_EENS_10HashTraitsIS5_E
+__ZN3JSC17CommonIdentifiersD2Ev
+__ZN3JSC21deleteIdentifierTableEPNS_15IdentifierTableE
+__ZN3JSC4HeapD1Ev
+__ZN3JSC12SmallStringsD1Ev
+__ZN3JSCL16mathProtoFuncMinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL17arrayProtoFuncPopEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC7JSArray3popEv
+__ZN3JSC11DoWhileNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC11DoWhileNodeD0Ev
+__ZN3JSC3JIT18emit_op_switch_immEPNS_11InstructionE
+__ZN3JSC8JITStubs17cti_op_switch_immEPPv
+__ZN3JSC13UnaryPlusNode14stripUnaryPlusEv
+__ZN3JSC15globalFuncIsNaNEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC17NumberConstructor11getCallDataERNS_8CallDataE
+__ZN3JSCL21callNumberConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3WTF6VectorIPNS0_IN3JSC10IdentifierELm64EEELm32EE14expandCapacityEm
+__ZN3JSC8JITStubs19cti_op_is_undefinedEPvz
+__ZN3JSC8JITStubs13cti_op_typeofEPvz
+__ZN3JSC8JITStubs33cti_op_create_arguments_no_paramsEPvz
+__ZN3JSC8JITStubs19cti_op_load_varargsEPvz
+__ZN3JSC8JITStubs10cti_op_notEPvz
+__ZN3JSC8JITStubs16cti_op_is_stringEPvz
+__ZN3JSCL24regExpConstructorDollar1EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3WTF6VectorIN3JSC15StringJumpTableELm0EE14expandCapacityEm
+__ZN3JSC8JITStubs20cti_op_switch_stringEPvz
+__ZN3JSC9Arguments3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC8JITStubs18cti_op_to_jsnumberEPvz
+__ZN3JSC8JITStubs19cti_op_loop_if_lessEPvz
+__ZN3JSC9LabelNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC9LabelNodeD0Ev
+__ZNK3JSC7UString5asciiEv
+__ZN3JSC8JITStubs27cti_op_get_by_id_array_failEPvz
+__ZN3JSC12X86Assembler23X86InstructionFormatter9oneByteOpENS0_15OneByteOpcodeIDEiPv
+__ZN3JSC8JITStubs23cti_op_create_argumentsEPvz
+__ZN3JSCL21arrayProtoFuncUnShiftEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs25cti_op_tear_off_argumentsEPvz
+__ZN3JSC7JSArray11sortNumericEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataE
+__ZN3JSC7JSArray17compactForSortingEv
+__ZN3JSCL22compareNumbersForQSortEPKvS1_
+__ZN3JSC8JITStubs15cti_op_post_incEPPv
+__ZN3JSC8JITStubs24cti_op_put_by_id_genericEPvz
+__ZN3JSCL24regExpConstructorDollar2EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL24regExpConstructorDollar3EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL24regExpConstructorDollar4EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL24regExpConstructorDollar5EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL24regExpConstructorDollar6EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL21stringProtoFuncSubstrEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL23stringProtoFuncFontsizeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL24dateProtoFuncToUTCStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL19stringProtoFuncLinkEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL9dateParseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs21cti_op_loop_if_lesseqEPPv
+__ZN3JSCL16mathProtoFuncExpEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC4Yarr17nonwordcharCreateEv
+__ZN3WTF6VectorIPN3JSC4Yarr18PatternDisjunctionELm4EE14expandCapacityEmPKS4_
+__Z15jsc_pcre_xclassiPKh
+__ZN3JSC18RegExpMatchesArray3putEPNS_9ExecStateEjNS_7JSValueE
+__ZN3JSC28globalFuncDecodeURIComponentEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs27cti_op_get_by_id_array_failEPPv
+__ZNK3JSC9Arguments9classInfoEv
+__ZN3JSC9Arguments15copyToRegistersEPNS_9ExecStateEPNS_8RegisterEj
+__ZN3JSC19JSStaticScopeObject4markEv
+__ZN3JSC8JITStubs19cti_op_loop_if_lessEPPv
+__ZN3JSC8JITStubs16cti_op_del_by_idEPvz
+__ZN3JSC7JSArray14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
+__ZN3JSC7UString6appendEPKti
+__ZN3JSC8JITStubs17cti_op_push_scopeEPvz
+__ZN3JSC8JITStubs19cti_op_resolve_baseEPvz
+__ZN3JSC8JITStubs16cti_op_pop_scopeEPvz
+__ZN3JSC8JITStubs17cti_op_is_booleanEPvz
+__ZN3JSCL20arrayProtoFuncSpliceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs17cti_op_jmp_scopesEPvz
+__ZN3JSC8JITStubs9cti_op_inEPvz
+__ZN3JSC8JITStubs15cti_op_stricteqEPvz
+__ZN3JSC8JITStubs32cti_op_get_by_id_proto_list_fullEPvz
+__ZN3WTF6VectorIiLm8EE14expandCapacityEm
+__ZN3JSCL21stringProtoFuncSearchEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs12cti_vm_throwEPvz
+__ZN3JSC8JITStubs21cti_op_push_new_scopeEPvz
+__ZN3JSC8JITStubs16cti_op_is_numberEPvz
+__ZN3JSC16JSVariableObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE
+__ZNK3JSC8JSString8toObjectEPNS_9ExecStateE
+__ZN3JSC12StringObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE
+__ZN3JSC9ExecState11stringTableEPS0_
+__ZN3JSC11JSImmediate8toObjectENS_7JSValueEPNS_9ExecStateE
+__ZN3JSC36constructBooleanFromImmediateBooleanEPNS_9ExecStateENS_7JSValueE
+__ZN3JSC13BooleanObjectD1Ev
+__ZN3JSCL17arrayProtoFuncMapEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC7JSArrayC2EN3WTF10PassRefPtrINS_9StructureEEEj
+__ZN3JSC8JITStubs17cti_op_del_by_valEPvz
+__ZN3JSC8JITStubs27cti_op_get_by_id_proto_failEPvz
+__ZN3JSC10JSFunction12callerGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZNK3JSC11Interpreter14retrieveCallerEPNS_9ExecStateEPNS_16InternalFunctionE
+__ZN3JSC18globalFuncIsFiniteEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC6JSCell18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZNK3JSC12JSNumberCell8toObjectEPNS_9ExecStateE
+__ZN3JSC15constructNumberEPNS_9ExecStateENS_7JSValueE
+__ZN3JSC12NumberObject11getJSNumberEv
+__ZN3JSCL7dateNowEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC12NumberObjectD1Ev
+__ZN3JSC8JSObject18getPrimitiveNumberEPNS_9ExecStateERdRNS_7JSValueE
+__ZN3JSCL22numberProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC13JSNotAnObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
+__ZN3JSC19JSStaticScopeObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC16InternalFunction4nameEPNS_12JSGlobalDataE
+__ZN3JSCL18arrayProtoFuncSomeEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JSString18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
+__ZN3JSC12JSNumberCell11getJSNumberEv
+__ZN3JSC23createNotAFunctionErrorEPNS_9ExecStateENS_7JSValueEjPNS_9CodeBlockE
+__ZN3JSC17PrefixBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC17PrefixBracketNodeD0Ev
+__ZN3JSC17RegExpConstructor11getCallDataERNS_8CallDataE
+__ZN3JSCL21callRegExpConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC7JSArray4sortEPNS_9ExecStateE
+__ZN3JSCL27dateProtoFuncSetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL24dateProtoFuncSetUTCHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL23setNewValueFromTimeArgsEPNS_9ExecStateENS_7JSValueERKNS_7ArgListEib
+__ZN3JSC8JITStubs17cti_op_switch_immEPvz
+__ZN3JSC12RegExpObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSCL24setRegExpObjectLastIndexEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueE
+__ZN3JSCL28regExpConstructorLeftContextEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSC18RegExpMatchesArray14deletePropertyEPNS_9ExecStateEj
+__ZN3JSC18RegExpMatchesArray3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC10JSFunction12lengthGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZNK3JSC12NumberObject9classInfoEv
+__ZN3JSC8JITStubs12cti_op_throwEPvz
+__ZN3JSCL19isNonASCIIIdentPartEi
+__ZN3JSCL27dateProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL16formatLocaleDateEPNS_9ExecStateEPNS_12DateInstanceEdNS_20LocaleDateTimeFormatERKNS_7ArgListE
+__ZN3JSCL21dateProtoFuncSetHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL23dateProtoFuncSetMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL23dateProtoFuncSetSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL28dateProtoFuncSetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC12JSNumberCell12toThisObjectEPNS_9ExecStateE
+__ZN3JSC16ErrorConstructor11getCallDataERNS_8CallDataE
+__ZN3JSCL20callErrorConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectES6_RKNS_7ArgListEE
+__ZN3JSC17PrototypeFunctionC2EPNS_9ExecStateEiRKNS_10IdentifierEPFNS_7JSValueES2_PNS_8JSObjectES6_RKNS_7ArgListEE
+__ZN3JSC17PrototypeFunction11getCallDataERNS_8CallDataE
+__ZN3JSC17PrototypeFunctionD1Ev
+__ZN3JSCL24booleanProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC17BytecodeGenerator18emitJumpSubroutineEPNS_10RegisterIDEPNS_5LabelE
+__ZN3JSC3JIT11emit_op_jsrEPNS_11InstructionE
+__ZN3WTF6VectorIN3JSC3JIT7JSRInfoELm0EE14expandCapacityEm
+__ZN3JSC3JIT12emit_op_sretEPNS_11InstructionE
+__ZN3JSC6Parser7reparseINS_8EvalNodeEEEN3WTF10PassRefPtrIT_EEPNS_12JSGlobalDataEPS5_
+__ZN3JSC8EvalNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm0EEEPNS6_IPNS_12Func
+__ZN3JSC8EvalNode31bytecodeForExceptionInfoReparseEPNS_14ScopeChainNodeEPNS_9CodeBlockE
+__ZN3JSC20FixedVMPoolAllocator17coalesceFreeSpaceEv
+__ZN3WTF6VectorIPN3JSC13FreeListEntryELm0EE15reserveCapacityEm
+__ZN3JSCL35reverseSortFreeListEntriesByPointerEPKvS1_
+__ZN3JSC14globalFuncEvalEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL21functionProtoFuncCallEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL22functionProtoFuncApplyEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC9Arguments11fillArgListEPNS_9ExecStateERNS_20MarkedArgumentBufferE
+__ZNK3JSC7JSValue12toThisObjectEPNS_9ExecStateE
+__ZN3JSC8VoidNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC8VoidNodeD0Ev
+__ZN3JSC16InternalFunctionC2EPNS_12JSGlobalDataEN3WTF10PassRefPtrINS_9StructureEEERKNS_10IdentifierE
+__ZN3JSC20MarkedArgumentBuffer9markListsERN3WTF7HashSetIPS0_NS1_7PtrHashIS3_EENS1_10HashTraitsIS3_EEEE
+__ZN3JSC7CStringaSERKS0_
+__ZNK3JSC19JSStaticScopeObject14isDynamicScopeEv
+__ZN3JSCL33reverseSortCommonSizedAllocationsEPKvS1_
+__ZN3JSCL20arrayProtoFuncFilterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC17NumberConstructor16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL30constructWithNumberConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSC17BytecodeGenerator18emitUnexpectedLoadEPNS_10RegisterIDEb
+__ZN3JSC8JITStubs12cti_op_throwEPPv
+__ZN3JSC6JSCell9getObjectEv
+__ZN3JSCL21arrayProtoFuncReverseEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC8JSObject16isVariableObjectEv
+__ZN3JSC18EmptyStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSCL27compareByStringPairForQSortEPKvS1_
+__Z22jsc_pcre_ucp_othercasej
+__ZN3JSCL35objectProtoFuncPropertyIsEnumerableEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC8JSObject21getPropertyAttributesEPNS_9ExecStateERKNS_10IdentifierERj
+__ZN3WTF7HashMapIjN3JSC7JSValueENS_7IntHashIjEENS_10HashTraitsIjEENS5_IS2_EEE3setERKjRKS2_
+__ZN3WTF9HashTableIjSt4pairIjN3JSC7JSValueEENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEE
+__ZN3JSC12RegisterFile21releaseExcessCapacityEv
+__ZN3JSCL20isNonASCIIIdentStartEi
+__ZN3JSC17BytecodeGenerator14emitPutByIndexEPNS_10RegisterIDEjS2_
+__ZN3JSC3JIT20emit_op_put_by_indexEPNS_11InstructionE
+__ZN3JSC8JITStubs19cti_op_put_by_indexEPPv
+__ZN3JSCL25numberConstructorMaxValueEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL28numberConstructorPosInfinityEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL28numberConstructorNegInfinityEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSC18BooleanConstructor11getCallDataERNS_8CallDataE
+__ZN3JSCL22callBooleanConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL17mathProtoFuncATanEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JITStubs17cti_op_jmp_scopesEPPv
+__ZNK3JSC8JSObject11hasPropertyEPNS_9ExecStateEj
+__ZN3JSCL17mathProtoFuncASinEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC11Interpreter7executeEPNS_8EvalNodeEPNS_9ExecStateEPNS_8JSObjectEPNS_14ScopeChainNodeEPNS_7JSValueE
_JSContextGetGlobalObject
+__ZN3JSC4Heap14registerThreadEv
+__ZN3JSC6JSLockC1EPNS_9ExecStateE
+_JSStringCreateWithUTF8CString
+__ZN3WTF7Unicode18convertUTF8ToUTF16EPPKcS2_PPtS4_b
_JSClassCreate
__ZN13OpaqueJSClass6createEPK17JSClassDefinition
__ZN13OpaqueJSClassC2EPK17JSClassDefinitionPS_
+__ZN3JSC7UString3Rep14createFromUTF8EPKc
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEP19StaticFunctionEntryNS_7StrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3addERKS
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_P19StaticFunctionEntryENS_18PairFirstExtractorIS9_EENS_7StrHashIS5
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEP16StaticValueEntryNS_7StrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3addERKS5_R
_JSClassRetain
_JSObjectMake
-__ZN13OpaqueJSClass9prototypeEPK15OpaqueJSContext
-__ZN3KJS16JSCallbackObjectINS_8JSObjectEE4initEPNS_9ExecStateE
-_JSStringCreateWithUTF8CString
+__ZN3JSC16JSCallbackObjectINS_8JSObjectEE4initEPNS_9ExecStateE
+__ZN13OpaqueJSClass9prototypeEPN3JSC9ExecStateE
+__ZN13OpaqueJSClass11contextDataEPN3JSC9ExecStateE
+__ZN3WTF9HashTableIP13OpaqueJSClassSt4pairIS2_P24OpaqueJSClassContextDataENS_18PairFirstExtractorIS6_EENS_7PtrHashIS2_EENS_14Pa
+__ZN24OpaqueJSClassContextDataC2EP13OpaqueJSClass
+__ZN3JSC7UString3Rep13createCopyingEPKti
_JSObjectSetProperty
+__ZNK14OpaqueJSString10identifierEPN3JSC12JSGlobalDataE
+__ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj
_JSStringRelease
-__Z30makeGetterOrSetterPropertyNodeRKN3KJS10IdentifierES2_PNS_13ParameterNodeEPNS_16FunctionBodyNodeE
-__ZN3KJS8JSObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPS0_
-__ZN3KJS8JSObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPS0_
-__ZNK3KJS15GetterSetterImp4typeEv
-__ZNK3KJS8JSObject6canPutEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3KJS13ConstDeclNodeC1ERKNS_10IdentifierEPNS_14ExpressionNodeE
-__Z26appendToVarDeclarationListRPN3KJS20ParserRefCountedDataIN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEEEPNS_13ConstDeclNodeE
-__ZN3KJS18ConstStatementNodeC1EPNS_13ConstDeclNodeE
-__ZN3KJS16JSCallbackObjectINS_8JSObjectEE18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS16JSCallbackObjectINS_8JSObjectEE20staticFunctionGetterEPNS_9ExecStateEPS1_RKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS18JSCallbackFunctionC1EPNS_9ExecStateEPFPK13OpaqueJSValuePK15OpaqueJSContextPS3_S9_mPKS5_PS5_ERKNS_10IdentifierE
-__ZN3KJS18JSCallbackFunction14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
+__ZN3JSC16JSCallbackObjectINS_8JSObjectEE18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC16JSCallbackObjectINS_8JSObjectEE20staticFunctionGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSC18JSCallbackFunctionC1EPNS_9ExecStateEPFPK13OpaqueJSValuePK15OpaqueJSContextPS3_S9_mPKS5_PS5_ERKNS_10IdentifierE
+__ZN3JSC18JSCallbackFunction11getCallDataERNS_8CallDataE
+__ZN3JSC18JSCallbackFunction4callEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC6JSLock12DropAllLocksC1EPNS_9ExecStateE
_JSObjectGetPrivate
-__ZNK3KJS16JSCallbackObjectINS_8JSObjectEE9classInfoEv
+__ZNK3JSC16JSCallbackObjectINS_8JSObjectEE9classInfoEv
+_JSValueMakeUndefined
+__ZN3JSC16JSCallbackObjectINS_8JSObjectEE17staticValueGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN14OpaqueJSString6createERKN3JSC7UStringE
_JSStringCreateWithCharacters
_JSValueMakeString
-__ZN3KJS12PropertySlot14functionGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKS0_
-__ZN3WTF10fastCallocEmm
+__ZNK14OpaqueJSString7ustringEv
+__ZN3JSC7UStringC1EPtib
+__ZN3JSC16JSCallbackObjectINS_8JSObjectEED1Ev
+_JSClassRelease
+__ZL25clearReferenceToPrototypeP13OpaqueJSValue
_JSObjectGetProperty
_JSValueToObject
-_JSValueProtect
-_JSObjectCallAsFunction
-_JSValueMakeNumber
+__ZN3JSCL22dateProtoFuncGetUTCDayEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL24dateProtoFuncGetUTCMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL23dateProtoFuncGetUTCDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL27dateProtoFuncGetUTCFullYearEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC7UString8toUInt32EPb
+__ZN3JSCL24dateProtoFuncGetUTCHoursEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL26dateProtoFuncGetUTCMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL26dateProtoFuncGetUTCSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL7dateUTCEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC12RegExpObject11getCallDataERNS_8CallDataE
+__ZN3JSC9Arguments14deletePropertyEPNS_9ExecStateEj
_JSValueMakeBoolean
-_JSObjectCallAsConstructor
-__ZN3KJS15GetterSetterImp4markEv
-_JSValueMakeUndefined
-_JSValueUnprotect
-_JSValueIsNumber
_JSValueToNumber
-__ZN3KJS16JSCallbackObjectINS_8JSObjectEED0Ev
-__Z25clearReferenceToPrototypeP13OpaqueJSValue
-_JSClassRelease
-_JSStringIsEqualToUTF8CString
-_JSStringIsEqual
-__ZN3KJSeqERKNS_7UStringES2_
-__ZN3KJS16JSCallbackObjectINS_8JSObjectEE14callbackGetterEPNS_9ExecStateEPS1_RKNS_10IdentifierERKNS_12PropertySlotE
_JSStringCreateWithCFString
-__ZN3KJS7UStringC2EPNS_5UCharEib
-__ZN3KJS16JSCallbackObjectINS_8JSObjectEE3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
+__ZN3WTF13tryFastCallocEmm
+_JSValueMakeNumber
+__ZN3JSC18JSCallbackFunctionD1Ev
+_JSValueToStringCopy
+_JSStringCopyCFString
+__ZN3JSC18ConstStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC13ConstDeclNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC13ConstDeclNode14emitCodeSingleERNS_17BytecodeGeneratorE
+__ZN3JSC13ConstDeclNodeD0Ev
+__ZN3JSC18ConstStatementNodeD0Ev
+__ZN3JSC18BooleanConstructor16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL31constructWithBooleanConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSC16constructBooleanEPNS_9ExecStateERKNS_7ArgListE
+__ZN3JSCL31dateProtoFuncGetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL28dateProtoFuncGetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL31dateProtoFuncToLocaleTimeStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL21regExpObjectLastIndexEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSC21DebuggerStatementNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC21DebuggerStatementNodeD0Ev
+__ZN3JSC4Yarr12RegexPattern21newlineCharacterClassEv
+__ZN3JSC17ObjectConstructor11getCallDataERNS_8CallDataE
+__ZN3JSCL23dateProtoFuncSetUTCDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL26stringFromCharCodeSlowCaseEPNS_9ExecStateERKNS_7ArgListE
+__ZN3JSCL21callObjectConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL27objectProtoFuncDefineGetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JSObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPS0_
+__ZN3JSC12GetterSetter4markEv
+__ZN3JSC12GetterSetterD1Ev
+__ZN3JSCL22regExpProtoFuncCompileEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC17NumberConstructor9classInfoEv
+__ZNK3JSC17RegExpConstructor9classInfoEv
+__ZN3JSCL31dateProtoFuncToLocaleDateStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC8JSObject14isGlobalObjectEv
+_JSValueToBoolean
+__ZN3JSC8JITStubs13cti_op_lshiftEPPv
+__ZN3JSC8JITStubs13cti_op_bitnotEPPv
+__ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC19FunctionConstructor11getCallDataERNS_8CallDataE
+__ZN3WTF9ByteArray6createEm
+__ZNK3JSC6JSCell9getStringERNS_7UStringE
+__ZN3JSC3JIT12emit_op_loopEPNS_11InstructionE
+__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeE
+__ZN3JSC11JSByteArrayC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS3_9ByteArrayEPKNS_9ClassInfoE
+__ZN3JSC11JSByteArrayC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEEPNS3_9ByteArrayEPKNS_9ClassInfoE
+__ZN3JSC11JSByteArray18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC11JSByteArray3putEPNS_9ExecStateEjNS_7JSValueE
+__ZN3JSC11JSByteArray3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC11JSByteArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
+__ZN3JSC8JITStubs28cti_op_get_by_val_byte_arrayEPPv
+__ZN3JSC8JITStubs28cti_op_put_by_val_byte_arrayEPPv
+__ZL30makeGetterOrSetterPropertyNodePvRKN3JSC10IdentifierES3_PNS0_13ParameterNodeEPNS0_16FunctionBodyNodeERKNS0_10SourceCodeE
+__ZN3JSC17BytecodeGenerator13emitPutGetterEPNS_10RegisterIDERKNS_10IdentifierES2_
+__ZN3JSC17BytecodeGenerator13emitPutSetterEPNS_10RegisterIDERKNS_10IdentifierES2_
+__ZN3JSC3JIT18emit_op_put_getterEPNS_11InstructionE
+__ZN3JSC3JIT18emit_op_put_setterEPNS_11InstructionE
+__ZN3JSC8JITStubs17cti_op_put_getterEPPv
+__ZN3JSC8JITStubs17cti_op_put_setterEPPv
+__ZN3JSC8JSObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPS0_
+__ZNK3JSC12GetterSetter14isGetterSetterEv
+__ZNK3JSC6JSCell14isGetterSetterEv
+__ZN3JSCL29regExpConstructorRightContextEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSC5Lexer19copyCodeWithoutBOMsEv
+__ZN3JSC13JSNotAnObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC6JSCell16getConstructDataERNS_13ConstructDataE
+__ZN3JSC26createNotAConstructorErrorEPNS_9ExecStateENS_7JSValueEjPNS_9CodeBlockE
+__ZN3JSC15isStrWhiteSpaceEt
+__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKc
+__ZNK3JSC22NativeErrorConstructor9classInfoEv
+__ZNK3JSC16JSCallbackObjectINS_8JSObjectEE9classNameEv
+__ZN3JSC4Heap11objectCountEv
+__ZNK3JSC12SmallStrings5countEv
+__ZN3JSC14JSGlobalObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectE
+__ZN3JSCL27objectProtoFuncLookupGetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JSObject12lookupGetterEPNS_9ExecStateERKNS_10IdentifierE
+__ZN3JSCL27objectProtoFuncDefineSetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC14JSGlobalObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectE
+__ZN3JSC9Structure22getterSetterTransitionEPS0_
+__ZN3JSC8JSObject22fillGetterPropertySlotERNS_12PropertySlotEPNS_7JSValueE
+__ZN3JSC12PropertySlot14functionGetterEPNS_9ExecStateERKNS_10IdentifierERKS0_
+__ZN3JSCL28objectProtoFuncIsPrototypeOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC12StringObjectC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_9StructureEEERKNS_7UStringE
+__ZNK3JSC7UString6is8BitEv
+__ZN3JSC8JSObject15unwrappedObjectEv
+__ZN3JSC22NativeErrorConstructor11getCallDataERNS_8CallDataE
+__ZN3JSC16JSCallbackObjectINS_8JSObjectEE11getCallDataERNS_8CallDataE
+__ZN3JSC17BytecodeGenerator21emitComplexJumpScopesEPNS_5LabelEPNS_18ControlFlowContextES4_
+__ZN3JSC23ThrowableExpressionData14emitThrowErrorERNS_17BytecodeGeneratorENS_9ErrorTypeEPKc
+__ZN3JSC17BytecodeGenerator12emitNewErrorEPNS_10RegisterIDENS_9ErrorTypeENS_7JSValueE
+__ZN3JSC3JIT17emit_op_new_errorEPNS_11InstructionE
+__ZN3JSC23MacroAssemblerX86Common8branch16ENS0_9ConditionENS_22AbstractMacroAssemblerINS_12X86AssemblerEE9BaseIndexENS4_5Imm32E
+_JSStringRetain
+__ZN3JSCL19arrayProtoFuncEveryEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL20arrayProtoFuncReduceEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL25arrayProtoFuncReduceRightEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL28arrayProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL25arrayProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC15AssignErrorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC8JITStubs16cti_op_new_errorEPPv
+__ZN3JSC15AssignErrorNodeD0Ev
+__ZN3JSC17BytecodeGenerator18emitUnexpectedLoadEPNS_10RegisterIDEd
+__ZN3JSC19JSStaticScopeObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC9ExecState9dateTableEPS0_
+__ZNK3JSC15RegExpPrototype9classInfoEv
+__ZN3JSC12StringObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
+__ZN3JSCL25dateProtoFuncToDateStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL25dateProtoFuncToTimeStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL25numberConstructorNaNValueEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL31dateProtoFuncSetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL26dateProtoFuncSetUTCSecondsEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL26dateProtoFuncSetUTCMinutesEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL24dateProtoFuncSetUTCMonthEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL23throwStackOverflowErrorEPNS_9ExecStateEPNS_12JSGlobalDataEPvRS4_
+__ZN3JSC24createStackOverflowErrorEPNS_9ExecStateE
+__ZN3JSC15DeleteValueNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC15DeleteValueNodeD0Ev
+__ZN3JSC16PostfixErrorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC15PrefixErrorNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
+__ZN3JSC16PostfixErrorNodeD0Ev
+__ZN3JSC15PrefixErrorNodeD0Ev
+__ZN3JSC23createInvalidParamErrorEPNS_9ExecStateEPKcNS_7JSValueEjPNS_9CodeBlockE
+__ZNK3JSC15DotAccessorNode17isDotAccessorNodeEv
+__ZNK3JSC14ExpressionNode17isDotAccessorNodeEv
+__ZN3JSC13JSNotAnObject3putEPNS_9ExecStateEjNS_7JSValueE
+__ZN3JSC4Heap24setGCProtectNeedsLockingEv
+__ZN3JSCL23callFunctionConstructorEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZNK3JSC16JSCallbackObjectINS_8JSObjectEE8toStringEPNS_9ExecStateE
+__ZN3JSC8JITStubs17cti_op_instanceofEPPv
+__ZN3JSC17BytecodeGenerator35emitThrowExpressionTooDeepExceptionEv
+__ZN3JSCL25numberConstructorMinValueEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL17mathProtoFuncACosEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL18mathProtoFuncATan2EPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL16mathProtoFuncTanEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL28numberProtoFuncToExponentialEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL26numberProtoFuncToPrecisionEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL12charSequenceEci
+__ZN3JSCL29objectProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC6JSCell14toThisJSStringEPNS_9ExecStateE
+__ZNK3JSC6JSCell12toThisStringEPNS_9ExecStateE
+__ZN3JSCL27objectProtoFuncLookupSetterEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8JSObject12lookupSetterEPNS_9ExecStateERKNS_10IdentifierE
+__ZNK3JSC16JSVariableObject21getPropertyAttributesEPNS_9ExecStateERKNS_10IdentifierERj
+__ZN3JSC9ExecState22regExpConstructorTableEPS0_
+__ZN3JSCL24regExpConstructorDollar7EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL24regExpConstructorDollar8EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL24regExpConstructorDollar9EPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL22regExpConstructorInputEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL25setRegExpConstructorInputEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueE
+__ZN3JSCL26regExpConstructorLastMatchEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL26regExpConstructorLastParenEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL26regExpConstructorMultilineEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL29setRegExpConstructorMultilineEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueE
+__ZN3JSC4Yarr15nondigitsCreateEv
+__ZNK3JSC19JSStaticScopeObject12toThisObjectEPNS_9ExecStateE
+__ZN3JSC12JSActivation18getArgumentsGetterEv
+__ZN3JSC12JSActivation15argumentsGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSCL23booleanProtoFuncValueOfEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSCL28stringProtoFuncLocaleCompareEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3WTF8Collator11userDefaultEv
+__ZNK3WTF8Collator7collateEPKtmS2_m
+__ZNK3WTF8Collator14createCollatorEv
+__ZN3WTF8CollatorD1Ev
+__ZN3WTF8Collator15releaseCollatorEv
+__ZNK3JSC10MathObject9classInfoEv
+__ZN3JSC9ExecState9mathTableEPS0_
+__ZN3WTF6VectorIN3JSC20FunctionRegisterInfoELm0EE14expandCapacityEm
+__ZN3JSC3JIT25emit_op_profile_will_callEPNS_11InstructionE
+__ZN3JSC3JIT24emit_op_profile_did_callEPNS_11InstructionE
+__ZN3JSC8Profiler8profilerEv
+__ZN3JSC8Profiler14startProfilingEPNS_9ExecStateERKNS_7UStringE
+__ZN3JSC16ProfileGenerator6createERKNS_7UStringEPNS_9ExecStateEj
+__ZN3JSC16ProfileGeneratorC2ERKNS_7UStringEPNS_9ExecStateEj
+__ZN3JSC7Profile6createERKNS_7UStringEj
+__ZN3JSC7ProfileC2ERKNS_7UStringEj
+__ZN3JSC11ProfileNodeC1ERKNS_14CallIdentifierEPS0_S4_
+__ZN3JSC33getCurrentUTCTimeWithMicrosecondsEv
+__ZN3JSC16ProfileGenerator24addParentForConsoleStartEPNS_9ExecStateE
+__ZN3JSC8Profiler20createCallIdentifierEPNS_12JSGlobalDataENS_7JSValueERKNS_7UStringEi
+__ZN3JSC16InternalFunction21calculatedDisplayNameEPNS_12JSGlobalDataE
+__ZN3JSC11ProfileNode10insertNodeEN3WTF10PassRefPtrIS0_EE
+__ZN3WTF6VectorINS_6RefPtrIN3JSC11ProfileNodeEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN3JSC16ProfileGeneratorEEELm0EE14expandCapacityEm
+__ZN3JSC8JITStubs23cti_op_profile_did_callEPPv
+__ZN3JSC8Profiler10didExecuteEPNS_9ExecStateENS_7JSValueE
+__ZN3JSC16ProfileGenerator10didExecuteERKNS_14CallIdentifierE
+__ZN3JSC11ProfileNode10didExecuteEv
+__ZN3JSC8JITStubs24cti_op_profile_will_callEPPv
+__ZN3JSC8Profiler11willExecuteEPNS_9ExecStateENS_7JSValueE
+__ZN3JSC16ProfileGenerator11willExecuteERKNS_14CallIdentifierE
+__ZN3JSC11ProfileNode11willExecuteERKNS_14CallIdentifierE
+__ZN3JSC8Profiler13stopProfilingEPNS_9ExecStateERKNS_7UStringE
+__ZN3JSC16ProfileGenerator13stopProfilingEv
+__ZN3JSC7Profile7forEachEMNS_11ProfileNodeEFvvE
+__ZNK3JSC11ProfileNode25traverseNextNodePostOrderEv
+__ZN3JSC11ProfileNode13stopProfilingEv
+__ZN3JSCeqERKNS_7UStringEPKc
+__ZN3JSC11ProfileNode11removeChildEPS0_
+__ZN3JSC11ProfileNode8addChildEN3WTF10PassRefPtrIS0_EE
+_JSValueIsObjectOfClass
+_JSObjectCallAsConstructor
+__ZN3JSC9constructEPNS_9ExecStateENS_7JSValueENS_13ConstructTypeERKNS_13ConstructDataERKNS_7ArgListE
+_JSObjectCallAsFunction
+__ZN3JSC4Heap14primaryHeapEndEv
+__ZN3JSC4Heap16primaryHeapBeginEv
+__ZNK3JSC18JSCallbackFunction9classInfoEv
+__ZN3JSC8Profiler11willExecuteEPNS_9ExecStateERKNS_7UStringEi
+__ZN3JSC8Profiler10didExecuteEPNS_9ExecStateERKNS_7UStringEi
+__ZNK3JSC16ProfileGenerator5titleEv
+__ZN3JSC7ProfileD0Ev
+__ZN3WTF10RefCountedIN3JSC11ProfileNodeEE5derefEv
+__ZN3JSC4Yarr14RegexGenerator33generatePatternCharacterNonGreedyERNS1_19TermGenerationStateE
+__ZN3JSC35createInterruptedExecutionExceptionEPNS_12JSGlobalDataE
+__ZNK3JSC25InterruptedExecutionError19isWatchdogExceptionEv
+__ZN3JSC25InterruptedExecutionErrorD1Ev
+__ZN3JSC12JSGlobalData10ClientDataD2Ev
+__ZN3JSC18RegExpMatchesArray16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE
+__ZN3WTF8CollatorC1EPKc
+__ZN3WTF8Collator18setOrderLowerFirstEb
+__ZN3WTF12randomNumberEv
+__ZN3JSC16JSCallbackObjectINS_8JSObjectEE3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZNK3JSC6JSCell9getStringEv
+__ZNK3JSC12DateInstance7getTimeERdRi
+__ZN3JSC10throwErrorEPNS_9ExecStateENS_9ErrorTypeERKNS_7UStringE
+_JSGlobalContextCreate
+_JSGlobalContextCreateInGroup
+__ZN3JSC4Heap29makeUsableFromMultipleThreadsEv
+_JSGlobalContextRetain
+__ZN3JSC6JSLock6unlockEb
+_JSEvaluateScript
+__ZNK3JSC14JSGlobalObject17supportsProfilingEv
+_JSGlobalContextRelease
+__ZN3JSC14JSGlobalObjectD1Ev
+__ZN3JSC14JSGlobalObject18JSGlobalObjectDataD0Ev
+__ZN3JSC17FunctionPrototype11getCallDataERNS_8CallDataE
+__ZN3JSC15DateConstructor11getCallDataERNS_8CallDataE
+__ZN3JSCL8callDateEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC13JSNotAnObject4markEv
+_JSObjectIsFunction
+__ZN3JSC4Heap17globalObjectCountEv
+__ZN3JSC4Heap20protectedObjectCountEv
+__ZN3JSC4Heap25protectedObjectTypeCountsEv
+__ZN3WTF9HashTableIPKcSt4pairIS2_jENS_18PairFirstExtractorIS4_EENS_7PtrHashIS2_EENS_14PairHashTraitsINS_10HashTraitsIS2_EENSA_I
+__ZN3WTF20fastMallocStatisticsEv
+__ZNK3JSC4Heap10statisticsEv
+__ZN3WTF27releaseFastMallocFreeMemoryEv
+__ZN3JSC10JSFunction16getConstructDataERNS_13ConstructDataE
+__ZN3JSC10JSFunction9constructEPNS_9ExecStateERKNS_7ArgListE
+__ZN3JSC8Debugger6attachEPNS_14JSGlobalObjectE
+__ZN3WTF7HashSetIPN3JSC14JSGlobalObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN3JSC14JSGlobalObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3JSC3JIT13emit_op_debugEPNS_11InstructionE
+__ZN3JSC8JITStubs12cti_op_debugEPPv
+__ZN3JSC11Interpreter5debugEPNS_9ExecStateENS_11DebugHookIDEii
+__ZN3JSC8Debugger6detachEPNS_14JSGlobalObjectE
+__ZN3JSC9CodeBlock33functionRegisterForBytecodeOffsetEjRi
+_JSStringIsEqualToUTF8CString
+__ZN3JSC16JSCallbackObjectINS_8JSObjectEE14callbackGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
_JSObjectSetPrivate
-__ZN3KJS15GetterSetterImpD0Ev
-__ZN3KJS27objectProtoFuncLookupGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS17PreIncResolveNode10precedenceEv
-__ZNK3KJS10SwitchNode8streamToERNS_12SourceStreamE
-__ZNK3KJS13CaseBlockNode8streamToERNS_12SourceStreamE
-__ZNK3KJS14CaseClauseNode8streamToERNS_12SourceStreamE
-__ZN3KJS18ConstStatementNodeD1Ev
-__ZN3KJS17PreDecBracketNodeD1Ev
-__ZN3KJS11Interpreter24setShouldPrintExceptionsEb
-__ZN3KJS9Collector26protectedGlobalObjectCountEv
-__ZN3KJS9Collector4sizeEv
-__ZN3KJS9Collector17globalObjectCountEv
-__ZN3KJS9Collector20protectedObjectCountEv
-__ZN3KJS9Collector25protectedObjectTypeCountsEv
-__ZNK3KJS15NumberObjectImp9classInfoEv
-__ZNK3KJS15RegExpPrototype9classInfoEv
-__ZNK3KJS15RegExpObjectImp9classInfoEv
-__ZNK3KJS14NativeErrorImp9classInfoEv
-__ZNK3KJS13MathObjectImp9classInfoEv
-__ZN3WTF6VectorIPN3KJS7JSValueELm8EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN3KJS7JSValueELm8EE14expandCapacityEm
-__ZN3KJS15ConditionalNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS9Arguments14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
-__ZNK3KJS17DeleteBracketNode8streamToERNS_12SourceStreamE
-__ZNK3KJS9BitOrNode10precedenceEv
-__ZNK3KJS9BitOrNode8streamToERNS_12SourceStreamE
-__ZNK3KJS7ModNode10precedenceEv
-__ZNK3KJS7ModNode8streamToERNS_12SourceStreamE
-__ZN3KJS31dateProtoFuncToLocaleTimeStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS16formatLocaleDateEPNS_9ExecStateEdbbRKNS_4ListE
-__ZN3KJS31dateProtoFuncToLocaleDateStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS9BitOrNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS7DivNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS14BitwiseNotNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS13ActivationImp14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3KJS27objectProtoFuncDefineGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS17PreDecBracketNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS16BooleanObjectImp19implementsConstructEv
-__ZN3KJS27objectProtoFuncDefineSetterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS8JSObject22fillGetterPropertySlotERNS_12PropertySlotEPPNS_7JSValueE
-__ZN3KJS10StringNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS13UnaryPlusNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS31dateProtoFuncGetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS17FunctionObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS15DeleteValueNodeD1Ev
-__ZN3KJS15RegExpObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS22dateProtoFuncGetUTCDayEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS8MultNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS4Node18setErrorCompletionEPNS_9ExecStateENS_9ErrorTypeEPKc
-__ZN3KJS10StringNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS27dateProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS22UnsignedRightShiftNode16evaluateToNumberEPNS_9ExecStateE
-__ZNK3KJS18PostIncResolveNode10precedenceEv
-__ZNK3KJS21ReadModifyResolveNode10precedenceEv
-__ZNK3KJS21FunctionCallValueNode10precedenceEv
-__ZN3KJS4Node15handleExceptionEPNS_9ExecStateE
-__ZNK3KJS13UnaryPlusNode10precedenceEv
-__ZNK3KJS13UnaryPlusNode8streamToERNS_12SourceStreamE
-__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcPNS_7JSValueERKNS_10IdentifierE
-__ZNK3KJS15DotAccessorNode17isDotAccessorNodeEv
-__ZNK3KJS14PostfixDotNode10precedenceEv
-__ZN3KJS23regExpProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS14PostDecDotNode8streamToERNS_12SourceStreamE
-__ZNK3KJS9CommaNode10precedenceEv
-__ZNK3KJS17ReadModifyDotNode10precedenceEv
-__ZNK3KJS13DeleteDotNode8streamToERNS_12SourceStreamE
-__ZNK3KJS19PlaceholderTrueNode8streamToERNS_12SourceStreamE
-__ZNK3KJS17AssignBracketNode10precedenceEv
-__ZNK3KJS8WithNode8streamToERNS_12SourceStreamE
-__ZNK3KJS17DeleteBracketNode10precedenceEv
-__ZN3KJS15ObjectObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-_KJS_JSCreateNativeJSObject
-__ZN3KJS8Bindings12JavaJSObject6invokeEPNS0_19JSObjectCallContextE
-__ZN3KJS8Bindings12JavaJSObject12createNativeEx
-__ZN3KJS8Bindings24findProtectingRootObjectEPNS_8JSObjectE
-_KJS_JSObject_JSObjectEval
-__ZN3KJS8Bindings12JavaJSObjectC1Ex
-__ZNK3KJS8Bindings12JavaJSObject4evalEP8_jstring
-__ZN3KJS8Bindings9getJNIEnvEv
-__ZN3KJS8Bindings9getJavaVMEv
-__ZN3KJS8Bindings30getUCharactersFromJStringInEnvEP7JNIEnv_P8_jstring
-__ZN3KJS8Bindings33releaseUCharactersForJStringInEnvEP7JNIEnv_P8_jstringPKt
-__ZNK3KJS8Bindings12JavaJSObject21convertValueToJObjectEPNS_7JSValueE
-__ZN7JNIEnv_9NewObjectEP7_jclassP10_jmethodIDz
-_KJS_JSObject_JSFinalize
-__ZN3KJS19stringProtoFuncBoldEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS15RegExpObjectImp15getRightContextEv
-__ZNK3KJS15RegExpObjectImp14getLeftContextEv
-__ZN3KJS13LeftShiftNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS7ModNode15evaluateToInt32EPNS_9ExecStateE
-__ZNK3KJS18PostDecResolveNode10precedenceEv
-__ZN3KJS28dateProtoFuncSetMilliSecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS32stringProtoFuncToLocaleLowerCaseEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__NPN_SetException
-__ZN3KJS18mathProtoFuncATan2EPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS8Bindings12JavaInstanceC2EP8_jobjectN3WTF10PassRefPtrINS0_10RootObjectEEE
-__ZN3KJS8Bindings12JavaInstance5beginEv
-__ZNK3KJS8Bindings12JavaInstance8getClassEv
-__ZN3KJS8Bindings9JavaClassC2EP8_jobject
-__ZN3KJS8Bindings19callJNIObjectMethodEP8_jobjectPKcS4_z
-__ZN3KJS8Bindings13callJNIMethodE7JNITypeP8_jobjectPKcS5_Pc
-__ZN3KJS8Bindings24getCharactersFromJStringEP8_jstring
-__ZN3KJS8Bindings27releaseCharactersForJStringEP8_jstringPKc
-__ZN3KJS8Bindings9JavaFieldC2EP7JNIEnv_P8_jobject
-__ZN3KJS7CStringaSERKS0_
-__ZN3KJS8Bindings20JNITypeFromClassNameEPKc
-__ZN3KJS8Bindings14JObjectWrapperC1EP8_jobject
-__ZNK3KJS8Bindings9JavaField4nameEv
-__ZN3KJS8Bindings10JavaMethodC2EP7JNIEnv_P8_jobject
-__ZN3KJS8Bindings16callJNIIntMethodEP8_jobjectPKcS4_z
-__ZN3KJS8Bindings26callJNIStaticBooleanMethodEP7_jclassPKcS4_z
-__ZN3KJS8Bindings19callJNIStaticMethodE7JNITypeP7_jclassPKcS5_Pc
-__ZNK3KJS8Bindings10JavaMethod4nameEv
-__ZN3KJS8Bindings13JavaParameterC2EP7JNIEnv_P8_jstring
-__ZNK3KJS8Bindings9JavaClass10fieldNamedERKNS_10IdentifierEPNS0_8InstanceE
-__ZNK3KJS8Bindings9JavaClass12methodsNamedERKNS_10IdentifierEPNS0_8InstanceE
-__ZN3KJS8Bindings12JavaInstance3endEv
-__ZN3KJS8Bindings12JavaInstanceD1Ev
-__ZN3KJS8Bindings9JavaClassD1Ev
-__ZN3WTF20deleteAllPairSecondsIPN3KJS8Bindings5FieldEKNS_7HashMapINS_6RefPtrINS1_7UString3RepEEES4_NS_7PtrHashIS9_EENS_10HashTraitsIS9_EENSC_IS4_EEEEEEvRT0_
-__ZN3KJS8Bindings14JObjectWrapperD1Ev
-__ZN3KJS35objectProtoFuncPropertyIsEnumerableEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS31dateProtoFuncSetUTCMillisecondsEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS12FuncExprNode21needsParensIfLeftmostEv
-__ZN3KJS13DateObjectImp14callAsFunctionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS11NewExprNode17evaluateToBooleanEPNS_9ExecStateE
-__ZN3KJS29numberProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS25dateProtoFuncToDateStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS9BitOrNode16evaluateToNumberEPNS_9ExecStateE
-__ZNK3KJS7JSValue8toUInt32EPNS_9ExecStateE
-__ZNK3KJS8JSObject3getEPNS_9ExecStateEj
-__ZNK3KJS7JSValue16toUInt32SlowCaseEPNS_9ExecStateERb
-__ZN3KJS9Collector29markOtherThreadConservativelyEPNS0_6ThreadE
-__ZN3WTF20TCMalloc_ThreadCache18DestroyThreadCacheEPv
-__ZN3WTF20TCMalloc_ThreadCache11DeleteCacheEPS0_
-__ZN3KJS23destroyRegisteredThreadEPv
-__ZN3KJS28numberProtoFuncToExponentialEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS26numberProtoFuncToPrecisionEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS15RegExpObjectImp16putValuePropertyEPNS_9ExecStateEiPNS_7JSValueEi
-__ZNK3KJS15RegExpObjectImp12getLastParenEv
-__ZN3KJS10throwErrorEPNS_9ExecStateENS_9ErrorTypeE
-__ZN3KJS18arrayProtoFuncSomeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS9LabelNode9pushLabelERKNS_10IdentifierE
-__ZN3KJS9Collector32reportOutOfMemoryToAllExecStatesEv
-__ZN3KJS5Error6createEPNS_9ExecStateENS_9ErrorTypeEPKc
-__ZNK3KJS17PreDecResolveNode10precedenceEv
-__ZN3KJS17mathProtoFuncACosEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS16mathProtoFuncTanEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS16PostfixErrorNode8streamToERNS_12SourceStreamE
-__ZNK3KJS15PrefixErrorNode8streamToERNS_12SourceStreamE
-__ZNK3KJS15AssignErrorNode8streamToERNS_12SourceStreamE
-__ZN3KJS16PostfixErrorNode8evaluateEPNS_9ExecStateE
-__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKcS5_
-__ZN3KJS16PostfixErrorNodeD1Ev
-__ZNK3KJS13LeftShiftNode8streamToERNS_12SourceStreamE
-__ZNK3KJS13LeftShiftNode10precedenceEv
-__ZNK3KJS14RightShiftNode8streamToERNS_12SourceStreamE
-__ZNK3KJS14RightShiftNode10precedenceEv
-__ZNK3KJS22UnsignedRightShiftNode8streamToERNS_12SourceStreamE
-__ZNK3KJS22UnsignedRightShiftNode10precedenceEv
-__ZNK3KJS10BitAndNode8streamToERNS_12SourceStreamE
-__ZNK3KJS10BitAndNode10precedenceEv
-__ZNK3KJS10BitXOrNode8streamToERNS_12SourceStreamE
-__ZNK3KJS10BitXOrNode10precedenceEv
-__ZN3KJS15AssignErrorNode8evaluateEPNS_9ExecStateE
-__ZN3KJS4Node10throwErrorEPNS_9ExecStateENS_9ErrorTypeEPKc
-__ZN3KJS13char_sequenceEci
-__ZN3KJS15LessStringsNode8evaluateEPNS_9ExecStateE
-__ZN3KJS15LessStringsNodeD1Ev
-__ZN3KJS15DeleteValueNode8evaluateEPNS_9ExecStateE
-__ZN3KJS22regExpProtoFuncCompileEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS15PrefixErrorNode8evaluateEPNS_9ExecStateE
-__ZN3KJS28objectProtoFuncIsPrototypeOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS15PrefixErrorNodeD1Ev
-__ZN3KJS19arrayProtoFuncEveryEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS29objectProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS25arrayProtoFuncLastIndexOfEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3WTF6VectorItLm0EE6resizeEm
-__ZN3WTF6VectorItLm0EE14expandCapacityEm
-__ZN3WTF6VectorItLm0EE15reserveCapacityEm
-__ZN3KJS28arrayProtoFuncToLocaleStringEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS18ConstStatementNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS13ConstDeclNode22optimizeVariableAccessERKN3WTF7HashMapINS1_6RefPtrINS_7UString3RepEEEmNS_17IdentifierRepHashENS_23IdentifierRepHashTraitsENS_26SymbolTableIndexHashTraitsEEERKNS1_6VectorINS_17LocalStorageEntryELm32EEERNSD_IPNS_4NodeELm16EEE
-__ZN3KJS18ConstStatementNode7executeEPNS_9ExecStateE
-__ZN3KJS13ConstDeclNode8evaluateEPNS_9ExecStateE
-__ZN3KJS15AssignConstNode8evaluateEPNS_9ExecStateE
-__ZN3KJS16PostIncConstNode8evaluateEPNS_9ExecStateE
-__ZN3KJS16PostDecConstNode8evaluateEPNS_9ExecStateE
-__ZN3KJS15PreIncConstNode8evaluateEPNS_9ExecStateE
-__ZN3KJS15PreDecConstNode8evaluateEPNS_9ExecStateE
-__ZN3KJS19ReadModifyConstNode8evaluateEPNS_9ExecStateE
-__ZNK3KJS13ActivationImp9classInfoEv
-__ZN3KJS16PostIncConstNodeD1Ev
-__ZN3KJS15PreIncConstNodeD1Ev
-__ZN3KJS15PreDecConstNodeD1Ev
-__ZNK3KJS13DeleteDotNode10precedenceEv
-__ZN3KJS28stringProtoFuncLocaleCompareEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS10NumberNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS19FunctionCallDotNode16evaluateToUInt32EPNS_9ExecStateE
-__ZNK3KJS21ReadModifyBracketNode8streamToERNS_12SourceStreamE
-__ZN3KJS10BitXOrNode16evaluateToNumberEPNS_9ExecStateE
-___tcf_1
-__ZNK3KJS7UString6is8BitEv
-__ZN3KJS15DotAccessorNode16evaluateToUInt32EPNS_9ExecStateE
-__ZN3KJS24stringProtoFuncFontcolorEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS14NativeErrorImp19implementsConstructEv
-__ZN3KJS19PostDecLocalVarNode16evaluateToNumberEPNS_9ExecStateE
-__ZN3KJS19PostDecLocalVarNode15evaluateToInt32EPNS_9ExecStateE
-__ZN3KJS13UnaryPlusNode17evaluateToBooleanEPNS_9ExecStateE
+__ZN3JSC7UString3Rep11computeHashEPKci
+__ZN3JSC16JSCallbackObjectINS_8JSObjectEE14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
+_JSGarbageCollect
+__ZN3JSC4Heap6isBusyEv
+__ZN3JSCL18styleFromArgStringERKNS_7UStringEl
diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri
index dca9355..a7da71c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri
+++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri
@@ -1,30 +1,68 @@
# JavaScriptCore - Qt4 build info
VPATH += $$PWD
-INCLUDEPATH += tmp
-INCLUDEPATH += $$PWD $$PWD/parser $$PWD/bytecompiler $$PWD/debugger $$PWD/runtime $$PWD/wtf $$PWD/wtf/unicode $$PWD/interpreter $$PWD/jit $$PWD/profiler $$PWD/wrec $$PWD/API $$PWD/.. \
- $$PWD/ForwardingHeaders $$PWD/bytecode $$PWD/assembler
-DEFINES += BUILDING_QT__
+CONFIG(debug, debug|release) {
+ isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = generated$${QMAKE_DIR_SEP}debug
+ OBJECTS_DIR = obj/debug
+} else { # Release
+ isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = generated$${QMAKE_DIR_SEP}release
+ OBJECTS_DIR = obj/release
+}
+
+INCLUDEPATH += $$GENERATED_SOURCES_DIR \
+ $$PWD \
+ $$PWD/parser \
+ $$PWD/bytecompiler \
+ $$PWD/debugger \
+ $$PWD/runtime \
+ $$PWD/wtf \
+ $$PWD/wtf/unicode \
+ $$PWD/interpreter \
+ $$PWD/jit \
+ $$PWD/profiler \
+ $$PWD/wrec \
+ $$PWD/yarr \
+ $$PWD/API \
+ $$PWD/.. \
+ $$PWD/ForwardingHeaders \
+ $$PWD/bytecode \
+ $$PWD/assembler \
-isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = tmp
-GENERATED_SOURCES_DIR_SLASH = $$GENERATED_SOURCES_DIR/
+DEFINES += BUILDING_QT__ BUILDING_JavaScriptCore BUILDING_WTF
+
+GENERATED_SOURCES_DIR_SLASH = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}
win32-* {
- GENERATED_SOURCES_DIR_SLASH ~= s|/|\|
LIBS += -lwinmm
}
-# Disable the JIT due to numerous observed miscompilations :(
-CONFIG(release):isEqual(QT_ARCH,i386) {
- JIT_DEFINES = ENABLE_JIT ENABLE_WREC ENABLE_JIT_OPTIMIZE_CALL ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS ENABLE_JIT_OPTIMIZE_ARITHMETIC
- # Require gcc >= 4.1
- linux-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) {
- DEFINES += $$JIT_DEFINES WTF_USE_JIT_STUB_ARGUMENT_VA_LIST
- QMAKE_CXXFLAGS += -fno-stack-protector
- QMAKE_CFLAGS += -fno-stack-protector
- }
- win32-msvc* {
- DEFINES += $$JIT_DEFINES WTF_USE_JIT_STUB_ARGUMENT_REGISTER
- }
+# Default rules to turn JIT on/off
+!contains(DEFINES, ENABLE_JIT=.) {
+ isEqual(QT_ARCH,i386)|isEqual(QT_ARCH,windows) {
+ # Require gcc >= 4.1
+ CONFIG(release):linux-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) {
+ DEFINES += ENABLE_JIT=1
+ }
+ win32-msvc* {
+ DEFINES += ENABLE_JIT=1
+ }
+ }
+}
+
+# Rules when JIT enabled
+contains(DEFINES, ENABLE_JIT=1) {
+ !contains(DEFINES, ENABLE_YARR=.): DEFINES += ENABLE_YARR=1
+ !contains(DEFINES, ENABLE_YARR_JIT=.): DEFINES += ENABLE_YARR_JIT=1
+ !contains(DEFINES, ENABLE_JIT_OPTIMIZE_CALL=.): DEFINES += ENABLE_JIT_OPTIMIZE_CALL=1
+ !contains(DEFINES, ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS=.): DEFINES += ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS=1
+ !contains(DEFINES, ENABLE_JIT_OPTIMIZE_ARITHMETIC=.): DEFINES += ENABLE_JIT_OPTIMIZE_ARITHMETIC=1
+ linux-g++* {
+ !contains(DEFINES, WTF_USE_JIT_STUB_ARGUMENT_VA_LIST=.): DEFINES += WTF_USE_JIT_STUB_ARGUMENT_VA_LIST=1
+ QMAKE_CXXFLAGS += -fno-stack-protector
+ QMAKE_CFLAGS += -fno-stack-protector
+ }
+ win32-msvc* {
+ !contains(DEFINES, WTF_USE_JIT_STUB_ARGUMENT_REGISTER=.): DEFINES += WTF_USE_JIT_STUB_ARGUMENT_REGISTER=1
+ }
}
win32-msvc*: INCLUDEPATH += $$PWD/os-win32
@@ -53,10 +91,12 @@ JSCBISON += \
SOURCES += \
wtf/Assertions.cpp \
+ wtf/ByteArray.cpp \
wtf/HashTable.cpp \
wtf/MainThread.cpp \
wtf/RandomNumber.cpp \
wtf/RefCountedLeakCounter.cpp \
+ wtf/TypeTraits.cpp \
wtf/unicode/CollatorDefault.cpp \
wtf/unicode/icu/CollatorICU.cpp \
wtf/unicode/UTF8.cpp \
@@ -77,26 +117,27 @@ SOURCES += \
runtime/JSVariableObject.cpp \
runtime/JSActivation.cpp \
runtime/JSNotAnObject.cpp \
+ runtime/LiteralParser.cpp \
+ runtime/TimeoutChecker.cpp \
bytecode/CodeBlock.cpp \
bytecode/StructureStubInfo.cpp \
bytecode/JumpTable.cpp \
jit/JIT.cpp \
jit/JITCall.cpp \
jit/JITArithmetic.cpp \
+ jit/JITOpcodes.cpp \
jit/JITPropertyAccess.cpp \
jit/ExecutableAllocator.cpp \
+ jit/JITStubs.cpp \
bytecompiler/BytecodeGenerator.cpp \
runtime/ExceptionHelpers.cpp \
runtime/JSPropertyNameIterator.cpp \
interpreter/Interpreter.cpp \
bytecode/Opcode.cpp \
bytecode/SamplingTool.cpp \
- wrec/CharacterClass.cpp \
- wrec/CharacterClassConstructor.cpp \
- wrec/WREC.cpp \
- wrec/WRECFunctors.cpp \
- wrec/WRECGenerator.cpp \
- wrec/WRECParser.cpp \
+ yarr/RegexCompiler.cpp \
+ yarr/RegexInterpreter.cpp \
+ yarr/RegexJIT.cpp \
interpreter/RegisterFile.cpp
win32-*: SOURCES += jit/ExecutableAllocatorWin.cpp
@@ -112,17 +153,18 @@ SOURCES += \
runtime/BooleanConstructor.cpp \
runtime/BooleanObject.cpp \
runtime/BooleanPrototype.cpp \
- runtime/ByteArray.cpp \
runtime/CallData.cpp \
runtime/Collector.cpp \
runtime/CommonIdentifiers.cpp \
runtime/ConstructData.cpp \
+ wtf/CurrentTime.cpp \
runtime/DateConstructor.cpp \
runtime/DateInstance.cpp \
runtime/DateMath.cpp \
runtime/DatePrototype.cpp \
debugger/Debugger.cpp \
debugger/DebuggerCallFrame.cpp \
+ debugger/DebuggerActivation.cpp \
wtf/dtoa.cpp \
runtime/Error.cpp \
runtime/ErrorConstructor.cpp \
@@ -161,6 +203,7 @@ SOURCES += \
runtime/ObjectPrototype.cpp \
runtime/Operations.cpp \
parser/Parser.cpp \
+ parser/ParserArena.cpp \
runtime/PropertyNameArray.cpp \
runtime/PropertySlot.cpp \
runtime/PrototypeFunction.cpp \
@@ -184,11 +227,17 @@ SOURCES += \
profiler/TreeProfile.cpp \
wtf/FastMalloc.cpp \
wtf/Threading.cpp \
- wtf/ThreadingQt.cpp \
wtf/qt/MainThreadQt.cpp
+!contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
+ SOURCES += wtf/qt/ThreadingQt.cpp
+} else {
+ DEFINES += ENABLE_JSC_MULTIPLE_THREADS=0
+ SOURCES += wtf/ThreadingNone.cpp
+}
+
# GENERATOR 1-A: LUT creator
-lut.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.lut.h
+lut.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.lut.h
lut.commands = perl $$PWD/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
lut.depend = ${QMAKE_FILE_NAME}
lut.input = LUT_FILES
@@ -196,7 +245,7 @@ lut.CONFIG += no_link
addExtraCompiler(lut)
# GENERATOR 1-B: particular LUT creator (for 1 file only)
-keywordlut.output = $$GENERATED_SOURCES_DIR/Lexer.lut.h
+keywordlut.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}Lexer.lut.h
keywordlut.commands = perl $$PWD/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
keywordlut.depend = ${QMAKE_FILE_NAME}
keywordlut.input = KEYWORDLUT_FILES
@@ -204,8 +253,8 @@ keywordlut.CONFIG += no_link
addExtraCompiler(keywordlut)
# GENERATOR 2: bison grammar
-jscbison.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.cpp
-jscbison.commands = bison -d -p jscyy ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_BASE}.tab.c && $(MOVE) ${QMAKE_FILE_BASE}.tab.c ${QMAKE_FILE_OUT} && $(MOVE) ${QMAKE_FILE_BASE}.tab.h $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.h
+jscbison.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
+jscbison.commands = bison -d -p jscyy ${QMAKE_FILE_NAME} -o $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c && $(MOVE) $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c ${QMAKE_FILE_OUT} && $(MOVE) $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.h $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.h
jscbison.depend = ${QMAKE_FILE_NAME}
jscbison.input = JSCBISON
jscbison.variable_out = GENERATED_SOURCES
diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro
index 56dae05..28f0e6b 100644
--- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro
+++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro
@@ -21,13 +21,16 @@ CONFIG(QTDIR_build) {
}
isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = tmp
-GENERATED_SOURCES_DIR_SLASH = $$GENERATED_SOURCES_DIR/
-win32-*: GENERATED_SOURCES_DIR_SLASH ~= s|/|\|
+GENERATED_SOURCES_DIR_SLASH = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}
INCLUDEPATH += $$GENERATED_SOURCES_DIR
!CONFIG(QTDIR_build) {
- OBJECTS_DIR = tmp
+ CONFIG(debug, debug|release) {
+ OBJECTS_DIR = obj/debug
+ } else { # Release
+ OBJECTS_DIR = obj/release
+ }
}
include($$OUTPUT_DIR/config.pri)
@@ -64,7 +67,7 @@ include(JavaScriptCore.pri)
QMAKE_EXTRA_TARGETS += generated_files
-qt-port: lessThan(QT_MINOR_VERSION, 4) {
+lessThan(QT_MINOR_VERSION, 4) {
DEFINES += QT_BEGIN_NAMESPACE="" QT_END_NAMESPACE=""
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCorePrefix.h b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCorePrefix.h
index e71c8a8..13b21bb 100644
--- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCorePrefix.h
+++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCorePrefix.h
@@ -25,15 +25,6 @@
#endif
-#if defined(__APPLE__)
-#import <AvailabilityMacros.h>
-#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
-#define BUILDING_ON_TIGER 1
-#elif MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5
-#define BUILDING_ON_LEOPARD 1
-#endif
-#endif
-
#ifdef __cplusplus
#define new ("if you use new/delete make sure to include config.h at the top of the file"())
#define delete ("if you use new/delete make sure to include config.h at the top of the file"())
diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/AbstractMacroAssembler.h b/src/3rdparty/webkit/JavaScriptCore/assembler/AbstractMacroAssembler.h
new file mode 100644
index 0000000..5def60f
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/assembler/AbstractMacroAssembler.h
@@ -0,0 +1,999 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AbstractMacroAssembler_h
+#define AbstractMacroAssembler_h
+
+#include <wtf/Platform.h>
+
+#include <MacroAssemblerCodeRef.h>
+#include <wtf/Noncopyable.h>
+#include <wtf/UnusedParam.h>
+
+#if ENABLE(ASSEMBLER)
+
+// FIXME: keep transitioning this out into MacroAssemblerX86_64.
+#if PLATFORM(X86_64)
+#define REPTACH_OFFSET_CALL_R11 3
+#endif
+
+namespace JSC {
+
+template <class AssemblerType>
+class AbstractMacroAssembler {
+public:
+ typedef MacroAssemblerCodePtr CodePtr;
+ typedef MacroAssemblerCodeRef CodeRef;
+
+ class Jump;
+ class PatchBuffer;
+ class CodeLocationInstruction;
+ class CodeLocationLabel;
+ class CodeLocationJump;
+ class CodeLocationCall;
+ class CodeLocationNearCall;
+ class CodeLocationDataLabel32;
+ class CodeLocationDataLabelPtr;
+ class ProcessorReturnAddress;
+
+ typedef typename AssemblerType::RegisterID RegisterID;
+ typedef typename AssemblerType::FPRegisterID FPRegisterID;
+ typedef typename AssemblerType::JmpSrc JmpSrc;
+ typedef typename AssemblerType::JmpDst JmpDst;
+
+
+ // Section 1: MacroAssembler operand types
+ //
+ // The following types are used as operands to MacroAssembler operations,
+ // describing immediate and memory operands to the instructions to be planted.
+
+
+ enum Scale {
+ TimesOne,
+ TimesTwo,
+ TimesFour,
+ TimesEight,
+ };
+
+ // Address:
+ //
+ // Describes a simple base-offset address.
+ struct Address {
+ explicit Address(RegisterID base, int32_t offset = 0)
+ : base(base)
+ , offset(offset)
+ {
+ }
+
+ RegisterID base;
+ int32_t offset;
+ };
+
+ // ImplicitAddress:
+ //
+ // This class is used for explicit 'load' and 'store' operations
+ // (as opposed to situations in which a memory operand is provided
+ // to a generic operation, such as an integer arithmetic instruction).
+ //
+ // In the case of a load (or store) operation we want to permit
+ // addresses to be implicitly constructed, e.g. the two calls:
+ //
+ // load32(Address(addrReg), destReg);
+ // load32(addrReg, destReg);
+ //
+ // Are equivalent, and the explicit wrapping of the Address in the former
+ // is unnecessary.
+ struct ImplicitAddress {
+ ImplicitAddress(RegisterID base)
+ : base(base)
+ , offset(0)
+ {
+ }
+
+ ImplicitAddress(Address address)
+ : base(address.base)
+ , offset(address.offset)
+ {
+ }
+
+ RegisterID base;
+ int32_t offset;
+ };
+
+ // BaseIndex:
+ //
+ // Describes a complex addressing mode.
+ struct BaseIndex {
+ BaseIndex(RegisterID base, RegisterID index, Scale scale, int32_t offset = 0)
+ : base(base)
+ , index(index)
+ , scale(scale)
+ , offset(offset)
+ {
+ }
+
+ RegisterID base;
+ RegisterID index;
+ Scale scale;
+ int32_t offset;
+ };
+
+ // AbsoluteAddress:
+ //
+ // Describes an memory operand given by a pointer. For regular load & store
+ // operations an unwrapped void* will be used, rather than using this.
+ struct AbsoluteAddress {
+ explicit AbsoluteAddress(void* ptr)
+ : m_ptr(ptr)
+ {
+ }
+
+ void* m_ptr;
+ };
+
+ // ImmPtr:
+ //
+ // A pointer sized immediate operand to an instruction - this is wrapped
+ // in a class requiring explicit construction in order to differentiate
+ // from pointers used as absolute addresses to memory operations
+ struct ImmPtr {
+ explicit ImmPtr(void* value)
+ : m_value(value)
+ {
+ }
+
+ intptr_t asIntptr()
+ {
+ return reinterpret_cast<intptr_t>(m_value);
+ }
+
+ void* m_value;
+ };
+
+ // Imm32:
+ //
+ // A 32bit immediate operand to an instruction - this is wrapped in a
+ // class requiring explicit construction in order to prevent RegisterIDs
+ // (which are implemented as an enum) from accidentally being passed as
+ // immediate values.
+ struct Imm32 {
+ explicit Imm32(int32_t value)
+ : m_value(value)
+ {
+ }
+
+#if !PLATFORM(X86_64)
+ explicit Imm32(ImmPtr ptr)
+ : m_value(ptr.asIntptr())
+ {
+ }
+#endif
+
+ int32_t m_value;
+ };
+
+
+ // Section 2: MacroAssembler code buffer handles
+ //
+ // The following types are used to reference items in the code buffer
+ // during JIT code generation. For example, the type Jump is used to
+ // track the location of a jump instruction so that it may later be
+ // linked to a label marking its destination.
+
+
+ // Label:
+ //
+ // A Label records a point in the generated instruction stream, typically such that
+ // it may be used as a destination for a jump.
+ class Label {
+ template<class TemplateAssemblerType>
+ friend class AbstractMacroAssembler;
+ friend class Jump;
+ friend class MacroAssemblerCodeRef;
+ friend class PatchBuffer;
+
+ public:
+ Label()
+ {
+ }
+
+ Label(AbstractMacroAssembler<AssemblerType>* masm)
+ : m_label(masm->m_assembler.label())
+ {
+ }
+
+ bool isUsed() const { return m_label.isUsed(); }
+ void used() { m_label.used(); }
+ private:
+ JmpDst m_label;
+ };
+
+ // DataLabelPtr:
+ //
+ // A DataLabelPtr is used to refer to a location in the code containing a pointer to be
+ // patched after the code has been generated.
+ class DataLabelPtr {
+ template<class TemplateAssemblerType>
+ friend class AbstractMacroAssembler;
+ friend class PatchBuffer;
+ public:
+ DataLabelPtr()
+ {
+ }
+
+ DataLabelPtr(AbstractMacroAssembler<AssemblerType>* masm)
+ : m_label(masm->m_assembler.label())
+ {
+ }
+
+ private:
+ JmpDst m_label;
+ };
+
+ // DataLabel32:
+ //
+ // A DataLabelPtr is used to refer to a location in the code containing a pointer to be
+ // patched after the code has been generated.
+ class DataLabel32 {
+ template<class TemplateAssemblerType>
+ friend class AbstractMacroAssembler;
+ friend class PatchBuffer;
+ public:
+ DataLabel32()
+ {
+ }
+
+ DataLabel32(AbstractMacroAssembler<AssemblerType>* masm)
+ : m_label(masm->m_assembler.label())
+ {
+ }
+
+ private:
+ JmpDst m_label;
+ };
+
+ // Call:
+ //
+ // A Call object is a reference to a call instruction that has been planted
+ // into the code buffer - it is typically used to link the call, setting the
+ // relative offset such that when executed it will call to the desired
+ // destination.
+ class Call {
+ template<class TemplateAssemblerType>
+ friend class AbstractMacroAssembler;
+ friend class PatchBuffer;
+ public:
+ enum Flags {
+ None = 0x0,
+ Linkable = 0x1,
+ Near = 0x2,
+ LinkableNear = 0x3,
+ };
+
+ Call()
+ : m_flags(None)
+ {
+ }
+
+ Call(JmpSrc jmp, Flags flags)
+ : m_jmp(jmp)
+ , m_flags(flags)
+ {
+ }
+
+ bool isFlagSet(Flags flag)
+ {
+ return m_flags & flag;
+ }
+
+ static Call fromTailJump(Jump jump)
+ {
+ return Call(jump.m_jmp, Linkable);
+ }
+
+ private:
+ JmpSrc m_jmp;
+ Flags m_flags;
+ };
+
+ // Jump:
+ //
+ // A jump object is a reference to a jump instruction that has been planted
+ // into the code buffer - it is typically used to link the jump, setting the
+ // relative offset such that when executed it will jump to the desired
+ // destination.
+ class Jump {
+ template<class TemplateAssemblerType>
+ friend class AbstractMacroAssembler;
+ friend class Call;
+ friend class PatchBuffer;
+ public:
+ Jump()
+ {
+ }
+
+ Jump(JmpSrc jmp)
+ : m_jmp(jmp)
+ {
+ }
+
+ void link(AbstractMacroAssembler<AssemblerType>* masm)
+ {
+ masm->m_assembler.linkJump(m_jmp, masm->m_assembler.label());
+ }
+
+ void linkTo(Label label, AbstractMacroAssembler<AssemblerType>* masm)
+ {
+ masm->m_assembler.linkJump(m_jmp, label.m_label);
+ }
+
+ private:
+ JmpSrc m_jmp;
+ };
+
+ // JumpList:
+ //
+ // A JumpList is a set of Jump objects.
+ // All jumps in the set will be linked to the same destination.
+ class JumpList {
+ friend class PatchBuffer;
+
+ public:
+ void link(AbstractMacroAssembler<AssemblerType>* masm)
+ {
+ size_t size = m_jumps.size();
+ for (size_t i = 0; i < size; ++i)
+ m_jumps[i].link(masm);
+ m_jumps.clear();
+ }
+
+ void linkTo(Label label, AbstractMacroAssembler<AssemblerType>* masm)
+ {
+ size_t size = m_jumps.size();
+ for (size_t i = 0; i < size; ++i)
+ m_jumps[i].linkTo(label, masm);
+ m_jumps.clear();
+ }
+
+ void append(Jump jump)
+ {
+ m_jumps.append(jump);
+ }
+
+ void append(JumpList& other)
+ {
+ m_jumps.append(other.m_jumps.begin(), other.m_jumps.size());
+ }
+
+ bool empty()
+ {
+ return !m_jumps.size();
+ }
+
+ private:
+ Vector<Jump, 16> m_jumps;
+ };
+
+
+ // Section 3: MacroAssembler JIT instruction stream handles.
+ //
+ // The MacroAssembler supported facilities to modify a JIT generated
+ // instruction stream after it has been generated (relinking calls and
+ // jumps, and repatching data values). The following types are used
+ // to store handles into the underlying instruction stream, the type
+ // providing semantic information as to what it is that is in the
+ // instruction stream at this point, and thus what operations may be
+ // performed on it.
+
+
+ // CodeLocationCommon:
+ //
+ // Base type for other CodeLocation* types. A postion in the JIT genertaed
+ // instruction stream, without any semantic information.
+ class CodeLocationCommon {
+ public:
+ CodeLocationCommon()
+ {
+ }
+
+ // In order to avoid the need to store multiple handles into the
+ // instructions stream, where the code generation is deterministic
+ // and the labels will always be a fixed distance apart, these
+ // methods may be used to recover a handle that has nopw been
+ // retained, based on a known fixed relative offset from one that has.
+ CodeLocationInstruction instructionAtOffset(int offset);
+ CodeLocationLabel labelAtOffset(int offset);
+ CodeLocationJump jumpAtOffset(int offset);
+ CodeLocationCall callAtOffset(int offset);
+ CodeLocationNearCall nearCallAtOffset(int offset);
+ CodeLocationDataLabelPtr dataLabelPtrAtOffset(int offset);
+ CodeLocationDataLabel32 dataLabel32AtOffset(int offset);
+
+ protected:
+ explicit CodeLocationCommon(CodePtr location)
+ : m_location(location)
+ {
+ }
+
+ void* dataLocation() { return m_location.dataLocation(); }
+ void* executableAddress() { return m_location.executableAddress(); }
+
+ void reset()
+ {
+ m_location = CodePtr();
+ }
+
+ private:
+ CodePtr m_location;
+ };
+
+ // CodeLocationInstruction:
+ //
+ // An arbitrary instruction in the JIT code.
+ class CodeLocationInstruction : public CodeLocationCommon {
+ friend class CodeLocationCommon;
+ public:
+ CodeLocationInstruction()
+ {
+ }
+
+ void repatchLoadPtrToLEA()
+ {
+ AssemblerType::repatchLoadPtrToLEA(this->dataLocation());
+ }
+
+ private:
+ explicit CodeLocationInstruction(void* location)
+ : CodeLocationCommon(CodePtr(location))
+ {
+ }
+ };
+
+ // CodeLocationLabel:
+ //
+ // A point in the JIT code maked with a label.
+ class CodeLocationLabel : public CodeLocationCommon {
+ friend class CodeLocationCommon;
+ friend class CodeLocationJump;
+ friend class CodeLocationCall;
+ friend class CodeLocationNearCall;
+ friend class PatchBuffer;
+ friend class ProcessorReturnAddress;
+
+ public:
+ CodeLocationLabel()
+ {
+ }
+
+ void* addressForSwitch() { return this->executableAddress(); }
+ void* addressForExceptionHandler() { return this->executableAddress(); }
+ void* addressForJSR() { return this->executableAddress(); }
+
+ bool operator!()
+ {
+ return !this->executableAddress();
+ }
+
+ void reset()
+ {
+ CodeLocationCommon::reset();
+ }
+
+ private:
+ explicit CodeLocationLabel(CodePtr location)
+ : CodeLocationCommon(location)
+ {
+ }
+
+ explicit CodeLocationLabel(void* location)
+ : CodeLocationCommon(CodePtr(location))
+ {
+ }
+
+ void* getJumpDestination() { return this->executableAddress(); }
+ };
+
+ // CodeLocationJump:
+ //
+ // A point in the JIT code at which there is a jump instruction.
+ class CodeLocationJump : public CodeLocationCommon {
+ friend class CodeLocationCommon;
+ friend class PatchBuffer;
+ public:
+ CodeLocationJump()
+ {
+ }
+
+ void relink(CodeLocationLabel destination)
+ {
+ AssemblerType::relinkJump(this->dataLocation(), destination.executableAddress());
+ }
+
+ private:
+ explicit CodeLocationJump(void* location)
+ : CodeLocationCommon(CodePtr(location))
+ {
+ }
+ };
+
+ // CodeLocationCall:
+ //
+ // A point in the JIT code at which there is a call instruction.
+ class CodeLocationCall : public CodeLocationCommon {
+ friend class CodeLocationCommon;
+ friend class PatchBuffer;
+ friend class ProcessorReturnAddress;
+ public:
+ CodeLocationCall()
+ {
+ }
+
+ void relink(CodeLocationLabel destination)
+ {
+#if PLATFORM(X86_64)
+ CodeLocationCommon::dataLabelPtrAtOffset(-REPTACH_OFFSET_CALL_R11).repatch(destination.executableAddress());
+#else
+ AssemblerType::relinkCall(this->dataLocation(), destination.executableAddress());
+#endif
+ }
+
+ void relink(FunctionPtr destination)
+ {
+#if PLATFORM(X86_64)
+ CodeLocationCommon::dataLabelPtrAtOffset(-REPTACH_OFFSET_CALL_R11).repatch(destination.executableAddress());
+#else
+ AssemblerType::relinkCall(this->dataLocation(), destination.executableAddress());
+#endif
+ }
+
+ // This methods returns the value that will be set as the return address
+ // within a function that has been called from this call instruction.
+ void* calleeReturnAddressValue()
+ {
+ return this->executableAddress();
+ }
+
+ private:
+ explicit CodeLocationCall(CodePtr location)
+ : CodeLocationCommon(location)
+ {
+ }
+
+ explicit CodeLocationCall(void* location)
+ : CodeLocationCommon(CodePtr(location))
+ {
+ }
+ };
+
+ // CodeLocationNearCall:
+ //
+ // A point in the JIT code at which there is a call instruction with near linkage.
+ class CodeLocationNearCall : public CodeLocationCommon {
+ friend class CodeLocationCommon;
+ friend class PatchBuffer;
+ friend class ProcessorReturnAddress;
+ public:
+ CodeLocationNearCall()
+ {
+ }
+
+ void relink(CodePtr destination)
+ {
+ AssemblerType::relinkCall(this->dataLocation(), destination.executableAddress());
+ }
+
+ void relink(CodeLocationLabel destination)
+ {
+ AssemblerType::relinkCall(this->dataLocation(), destination.executableAddress());
+ }
+
+ void relink(FunctionPtr destination)
+ {
+ AssemblerType::relinkCall(this->dataLocation(), destination.executableAddress());
+ }
+
+ // This methods returns the value that will be set as the return address
+ // within a function that has been called from this call instruction.
+ void* calleeReturnAddressValue()
+ {
+ return this->executableAddress();
+ }
+
+ private:
+ explicit CodeLocationNearCall(CodePtr location)
+ : CodeLocationCommon(location)
+ {
+ }
+
+ explicit CodeLocationNearCall(void* location)
+ : CodeLocationCommon(CodePtr(location))
+ {
+ }
+ };
+
+ // CodeLocationDataLabel32:
+ //
+ // A point in the JIT code at which there is an int32_t immediate that may be repatched.
+ class CodeLocationDataLabel32 : public CodeLocationCommon {
+ friend class CodeLocationCommon;
+ friend class PatchBuffer;
+ public:
+ CodeLocationDataLabel32()
+ {
+ }
+
+ void repatch(int32_t value)
+ {
+ AssemblerType::repatchInt32(this->dataLocation(), value);
+ }
+
+ private:
+ explicit CodeLocationDataLabel32(void* location)
+ : CodeLocationCommon(CodePtr(location))
+ {
+ }
+ };
+
+ // CodeLocationDataLabelPtr:
+ //
+ // A point in the JIT code at which there is a void* immediate that may be repatched.
+ class CodeLocationDataLabelPtr : public CodeLocationCommon {
+ friend class CodeLocationCommon;
+ friend class PatchBuffer;
+ public:
+ CodeLocationDataLabelPtr()
+ {
+ }
+
+ void repatch(void* value)
+ {
+ AssemblerType::repatchPointer(this->dataLocation(), value);
+ }
+
+ private:
+ explicit CodeLocationDataLabelPtr(void* location)
+ : CodeLocationCommon(CodePtr(location))
+ {
+ }
+ };
+
+ // ProcessorReturnAddress:
+ //
+ // This class can be used to relink a call identified by its return address.
+ class ProcessorReturnAddress {
+ friend class CodeLocationCall;
+ friend class CodeLocationNearCall;
+ public:
+ ProcessorReturnAddress(void* location)
+ : m_location(location)
+ {
+ }
+
+ void relinkCallerToTrampoline(CodeLocationLabel label)
+ {
+ CodeLocationCall(CodePtr(m_location)).relink(label);
+ }
+
+ void relinkCallerToTrampoline(CodePtr newCalleeFunction)
+ {
+ relinkCallerToTrampoline(CodeLocationLabel(newCalleeFunction));
+ }
+
+ void relinkCallerToFunction(FunctionPtr function)
+ {
+ CodeLocationCall(CodePtr(m_location)).relink(function);
+ }
+
+ void relinkNearCallerToTrampoline(CodeLocationLabel label)
+ {
+ CodeLocationNearCall(CodePtr(m_location)).relink(label);
+ }
+
+ void relinkNearCallerToTrampoline(CodePtr newCalleeFunction)
+ {
+ relinkNearCallerToTrampoline(CodeLocationLabel(newCalleeFunction));
+ }
+
+ void* addressForLookup()
+ {
+ return m_location.value();
+ }
+
+ private:
+ ReturnAddressPtr m_location;
+ };
+
+
+ // Section 4: PatchBuffer - utility to finalize code generation.
+
+ static CodePtr trampolineAt(CodeRef ref, Label label)
+ {
+ return CodePtr(AssemblerType::getRelocatedAddress(ref.m_code.dataLocation(), label.m_label));
+ }
+
+ // PatchBuffer:
+ //
+ // This class assists in linking code generated by the macro assembler, once code generation
+ // has been completed, and the code has been copied to is final location in memory. At this
+ // time pointers to labels within the code may be resolved, and relative offsets to external
+ // addresses may be fixed.
+ //
+ // Specifically:
+ // * Jump objects may be linked to external targets,
+ // * The address of Jump objects may taken, such that it can later be relinked.
+ // * The return address of a Jump object representing a call may be acquired.
+ // * The address of a Label pointing into the code may be resolved.
+ // * The value referenced by a DataLabel may be fixed.
+ //
+ // FIXME: distinguish between Calls & Jumps (make a specific call to obtain the return
+ // address of calls, as opposed to a point that can be used to later relink a Jump -
+ // possibly wrap the later up in an object that can do just that).
+ class PatchBuffer : public Noncopyable {
+ public:
+ // Note: Initialization sequence is significant, since executablePool is a PassRefPtr.
+ // First, executablePool is copied into m_executablePool, then the initialization of
+ // m_code uses m_executablePool, *not* executablePool, since this is no longer valid.
+ PatchBuffer(AbstractMacroAssembler<AssemblerType>* masm, PassRefPtr<ExecutablePool> executablePool)
+ : m_executablePool(executablePool)
+ , m_code(masm->m_assembler.executableCopy(m_executablePool.get()))
+ , m_size(masm->m_assembler.size())
+#ifndef NDEBUG
+ , m_completed(false)
+#endif
+ {
+ }
+
+ ~PatchBuffer()
+ {
+ ASSERT(m_completed);
+ }
+
+ // These methods are used to link or set values at code generation time.
+
+ void link(Call call, FunctionPtr function)
+ {
+ ASSERT(call.isFlagSet(Call::Linkable));
+#if PLATFORM(X86_64)
+ if (!call.isFlagSet(Call::Near)) {
+ char* callLocation = reinterpret_cast<char*>(AssemblerType::getRelocatedAddress(code(), call.m_jmp)) - REPTACH_OFFSET_CALL_R11;
+ AssemblerType::patchPointerForCall(callLocation, function.value());
+ } else
+#endif
+ AssemblerType::linkCall(code(), call.m_jmp, function.value());
+ }
+
+ void link(Jump jump, CodeLocationLabel label)
+ {
+ AssemblerType::linkJump(code(), jump.m_jmp, label.executableAddress());
+ }
+
+ void link(JumpList list, CodeLocationLabel label)
+ {
+ for (unsigned i = 0; i < list.m_jumps.size(); ++i)
+ AssemblerType::linkJump(code(), list.m_jumps[i].m_jmp, label.executableAddress());
+ }
+
+ void patch(DataLabelPtr label, void* value)
+ {
+ AssemblerType::patchPointer(code(), label.m_label, value);
+ }
+
+ void patch(DataLabelPtr label, CodeLocationLabel value)
+ {
+ AssemblerType::patchPointer(code(), label.m_label, value.getJumpDestination());
+ }
+
+ // These methods are used to obtain handles to allow the code to be relinked / repatched later.
+
+ CodeLocationCall locationOf(Call call)
+ {
+ ASSERT(call.isFlagSet(Call::Linkable));
+ ASSERT(!call.isFlagSet(Call::Near));
+ return CodeLocationCall(AssemblerType::getRelocatedAddress(code(), call.m_jmp));
+ }
+
+ CodeLocationNearCall locationOfNearCall(Call call)
+ {
+ ASSERT(call.isFlagSet(Call::Linkable));
+ ASSERT(call.isFlagSet(Call::Near));
+ return CodeLocationNearCall(AssemblerType::getRelocatedAddress(code(), call.m_jmp));
+ }
+
+ CodeLocationLabel locationOf(Label label)
+ {
+ return CodeLocationLabel(AssemblerType::getRelocatedAddress(code(), label.m_label));
+ }
+
+ CodeLocationDataLabelPtr locationOf(DataLabelPtr label)
+ {
+ return CodeLocationDataLabelPtr(AssemblerType::getRelocatedAddress(code(), label.m_label));
+ }
+
+ CodeLocationDataLabel32 locationOf(DataLabel32 label)
+ {
+ return CodeLocationDataLabel32(AssemblerType::getRelocatedAddress(code(), label.m_label));
+ }
+
+ // This method obtains the return address of the call, given as an offset from
+ // the start of the code.
+ unsigned returnAddressOffset(Call call)
+ {
+ return AssemblerType::getCallReturnOffset(call.m_jmp);
+ }
+
+ // Upon completion of all patching either 'finalizeCode()' or 'finalizeCodeAddendum()' should be called
+ // once to complete generation of the code. 'finalizeCode()' is suited to situations
+ // where the executable pool must also be retained, the lighter-weight 'finalizeCodeAddendum()' is
+ // suited to adding to an existing allocation.
+ CodeRef finalizeCode()
+ {
+ performFinalization();
+
+ return CodeRef(m_code, m_executablePool, m_size);
+ }
+ CodeLocationLabel finalizeCodeAddendum()
+ {
+ performFinalization();
+
+ return CodeLocationLabel(code());
+ }
+
+ private:
+ // Keep this private! - the underlying code should only be obtained externally via
+ // finalizeCode() or finalizeCodeAddendum().
+ void* code()
+ {
+ return m_code;
+ }
+
+ void performFinalization()
+ {
+#ifndef NDEBUG
+ ASSERT(!m_completed);
+ m_completed = true;
+#endif
+
+ ExecutableAllocator::makeExecutable(code(), m_size);
+ }
+
+ RefPtr<ExecutablePool> m_executablePool;
+ void* m_code;
+ size_t m_size;
+#ifndef NDEBUG
+ bool m_completed;
+#endif
+ };
+
+
+ // Section 5: Misc admin methods
+
+ size_t size()
+ {
+ return m_assembler.size();
+ }
+
+ Label label()
+ {
+ return Label(this);
+ }
+
+ Label align()
+ {
+ m_assembler.align(16);
+ return Label(this);
+ }
+
+ ptrdiff_t differenceBetween(Label from, Jump to)
+ {
+ return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp);
+ }
+
+ ptrdiff_t differenceBetween(Label from, Call to)
+ {
+ return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp);
+ }
+
+ ptrdiff_t differenceBetween(Label from, Label to)
+ {
+ return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
+ }
+
+ ptrdiff_t differenceBetween(Label from, DataLabelPtr to)
+ {
+ return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
+ }
+
+ ptrdiff_t differenceBetween(Label from, DataLabel32 to)
+ {
+ return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
+ }
+
+ ptrdiff_t differenceBetween(DataLabelPtr from, Jump to)
+ {
+ return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp);
+ }
+
+ ptrdiff_t differenceBetween(DataLabelPtr from, DataLabelPtr to)
+ {
+ return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
+ }
+
+ ptrdiff_t differenceBetween(DataLabelPtr from, Call to)
+ {
+ return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp);
+ }
+
+protected:
+ AssemblerType m_assembler;
+};
+
+
+template <class AssemblerType>
+typename AbstractMacroAssembler<AssemblerType>::CodeLocationInstruction AbstractMacroAssembler<AssemblerType>::CodeLocationCommon::instructionAtOffset(int offset)
+{
+ return typename AbstractMacroAssembler::CodeLocationInstruction(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+template <class AssemblerType>
+typename AbstractMacroAssembler<AssemblerType>::CodeLocationLabel AbstractMacroAssembler<AssemblerType>::CodeLocationCommon::labelAtOffset(int offset)
+{
+ return typename AbstractMacroAssembler::CodeLocationLabel(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+template <class AssemblerType>
+typename AbstractMacroAssembler<AssemblerType>::CodeLocationJump AbstractMacroAssembler<AssemblerType>::CodeLocationCommon::jumpAtOffset(int offset)
+{
+ return typename AbstractMacroAssembler::CodeLocationJump(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+template <class AssemblerType>
+typename AbstractMacroAssembler<AssemblerType>::CodeLocationCall AbstractMacroAssembler<AssemblerType>::CodeLocationCommon::callAtOffset(int offset)
+{
+ return typename AbstractMacroAssembler::CodeLocationCall(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+template <class AssemblerType>
+typename AbstractMacroAssembler<AssemblerType>::CodeLocationNearCall AbstractMacroAssembler<AssemblerType>::CodeLocationCommon::nearCallAtOffset(int offset)
+{
+ return typename AbstractMacroAssembler::CodeLocationNearCall(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+template <class AssemblerType>
+typename AbstractMacroAssembler<AssemblerType>::CodeLocationDataLabelPtr AbstractMacroAssembler<AssemblerType>::CodeLocationCommon::dataLabelPtrAtOffset(int offset)
+{
+ return typename AbstractMacroAssembler::CodeLocationDataLabelPtr(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+template <class AssemblerType>
+typename AbstractMacroAssembler<AssemblerType>::CodeLocationDataLabel32 AbstractMacroAssembler<AssemblerType>::CodeLocationCommon::dataLabel32AtOffset(int offset)
+{
+ return typename AbstractMacroAssembler::CodeLocationDataLabel32(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+} // namespace JSC
+
+#endif // ENABLE(ASSEMBLER)
+
+#endif // AbstractMacroAssembler_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/AssemblerBuffer.h b/src/3rdparty/webkit/JavaScriptCore/assembler/AssemblerBuffer.h
index e1f53d8..7a5a8d3 100644
--- a/src/3rdparty/webkit/JavaScriptCore/assembler/AssemblerBuffer.h
+++ b/src/3rdparty/webkit/JavaScriptCore/assembler/AssemblerBuffer.h
@@ -132,6 +132,8 @@ namespace JSC {
if (!result)
return 0;
+ ExecutableAllocator::makeWritable(result, m_size);
+
return memcpy(result, m_buffer, m_size);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssembler.h b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssembler.h
index 9f8d474..f341267 100644
--- a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssembler.h
+++ b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssembler.h
@@ -30,1896 +30,306 @@
#if ENABLE(ASSEMBLER)
-#include "X86Assembler.h"
-
-namespace JSC {
+#if PLATFORM(X86)
+#include "MacroAssemblerX86.h"
+namespace JSC { typedef MacroAssemblerX86 MacroAssemblerBase; };
-class MacroAssembler {
-protected:
- X86Assembler m_assembler;
+#elif PLATFORM(X86_64)
+#include "MacroAssemblerX86_64.h"
+namespace JSC { typedef MacroAssemblerX86_64 MacroAssemblerBase; };
-#if PLATFORM(X86_64)
- static const X86::RegisterID scratchRegister = X86::r11;
+#else
+#error "The MacroAssembler is not supported on this platform."
#endif
+
+namespace JSC {
+
+class MacroAssembler : public MacroAssemblerBase {
public:
- typedef X86::RegisterID RegisterID;
-
- // Note: do not rely on values in this enum, these will change (to 0..3).
- enum Scale {
- TimesOne = 1,
- TimesTwo = 2,
- TimesFour = 4,
- TimesEight = 8,
-#if PLATFORM(X86)
- ScalePtr = TimesFour
-#endif
+
+ using MacroAssemblerBase::pop;
+ using MacroAssemblerBase::jump;
+ using MacroAssemblerBase::branch32;
+ using MacroAssemblerBase::branch16;
#if PLATFORM(X86_64)
- ScalePtr = TimesEight
+ using MacroAssemblerBase::branchPtr;
+ using MacroAssemblerBase::branchTestPtr;
#endif
- };
- MacroAssembler()
+
+ // Platform agnostic onvenience functions,
+ // described in terms of other macro assembly methods.
+ void pop()
{
+ addPtr(Imm32(sizeof(void*)), stackPointerRegister);
}
- size_t size() { return m_assembler.size(); }
- void* copyCode(ExecutablePool* allocator)
+ void peek(RegisterID dest, int index = 0)
{
- return m_assembler.executableCopy(allocator);
+ loadPtr(Address(stackPointerRegister, (index * sizeof(void*))), dest);
}
-
- // Address:
- //
- // Describes a simple base-offset address.
- struct Address {
- explicit Address(RegisterID base, int32_t offset = 0)
- : base(base)
- , offset(offset)
- {
- }
-
- RegisterID base;
- int32_t offset;
- };
-
- // ImplicitAddress:
- //
- // This class is used for explicit 'load' and 'store' operations
- // (as opposed to situations in which a memory operand is provided
- // to a generic operation, such as an integer arithmetic instruction).
- //
- // In the case of a load (or store) operation we want to permit
- // addresses to be implicitly constructed, e.g. the two calls:
- //
- // load32(Address(addrReg), destReg);
- // load32(addrReg, destReg);
- //
- // Are equivalent, and the explicit wrapping of the Address in the former
- // is unnecessary.
- struct ImplicitAddress {
- ImplicitAddress(RegisterID base)
- : base(base)
- , offset(0)
- {
- }
-
- ImplicitAddress(Address address)
- : base(address.base)
- , offset(address.offset)
- {
- }
-
- RegisterID base;
- int32_t offset;
- };
-
- // BaseIndex:
- //
- // Describes a complex addressing mode.
- struct BaseIndex {
- BaseIndex(RegisterID base, RegisterID index, Scale scale, int32_t offset = 0)
- : base(base)
- , index(index)
- , scale(scale)
- , offset(offset)
- {
- }
-
- RegisterID base;
- RegisterID index;
- Scale scale;
- int32_t offset;
- };
-
- // AbsoluteAddress:
- //
- // Describes an memory operand given by a pointer. For regular load & store
- // operations an unwrapped void* will be used, rather than using this.
- struct AbsoluteAddress {
- explicit AbsoluteAddress(void* ptr)
- : m_ptr(ptr)
- {
- }
-
- void* m_ptr;
- };
-
-
- class Jump;
- class PatchBuffer;
-
- // DataLabelPtr:
- //
- // A DataLabelPtr is used to refer to a location in the code containing a pointer to be
- // patched after the code has been generated.
- class DataLabelPtr {
- friend class MacroAssembler;
- friend class PatchBuffer;
-
- public:
- DataLabelPtr()
- {
- }
-
- DataLabelPtr(MacroAssembler* masm)
- : m_label(masm->m_assembler.label())
- {
- }
-
- static void patch(void* address, void* value)
- {
- X86Assembler::patchPointer(reinterpret_cast<intptr_t>(address), reinterpret_cast<intptr_t>(value));
- }
-
- private:
- X86Assembler::JmpDst m_label;
- };
-
- // DataLabel32:
- //
- // A DataLabelPtr is used to refer to a location in the code containing a pointer to be
- // patched after the code has been generated.
- class DataLabel32 {
- friend class MacroAssembler;
- friend class PatchBuffer;
-
- public:
- DataLabel32()
- {
- }
-
- DataLabel32(MacroAssembler* masm)
- : m_label(masm->m_assembler.label())
- {
- }
-
- static void patch(void* address, int32_t value)
- {
- X86Assembler::patchImmediate(reinterpret_cast<intptr_t>(address), value);
- }
-
- private:
- X86Assembler::JmpDst m_label;
- };
-
- // Label:
- //
- // A Label records a point in the generated instruction stream, typically such that
- // it may be used as a destination for a jump.
- class Label {
- friend class Jump;
- friend class MacroAssembler;
- friend class PatchBuffer;
-
- public:
- Label()
- {
- }
-
- Label(MacroAssembler* masm)
- : m_label(masm->m_assembler.label())
- {
- }
-
- // FIXME: transitionary method, while we replace JmpSrces with Jumps.
- operator X86Assembler::JmpDst()
- {
- return m_label;
- }
-
- private:
- X86Assembler::JmpDst m_label;
- };
-
-
- // Jump:
- //
- // A jump object is a reference to a jump instruction that has been planted
- // into the code buffer - it is typically used to link the jump, setting the
- // relative offset such that when executed it will jump to the desired
- // destination.
- //
- // Jump objects retain a pointer to the assembler for syntactic purposes -
- // to allow the jump object to be able to link itself, e.g.:
- //
- // Jump forwardsBranch = jne32(Imm32(0), reg1);
- // // ...
- // forwardsBranch.link();
- //
- // Jumps may also be linked to a Label.
- class Jump {
- friend class PatchBuffer;
- friend class MacroAssembler;
-
- public:
- Jump()
- {
- }
-
- // FIXME: transitionary method, while we replace JmpSrces with Jumps.
- Jump(X86Assembler::JmpSrc jmp)
- : m_jmp(jmp)
- {
- }
-
- void link(MacroAssembler* masm)
- {
- masm->m_assembler.link(m_jmp, masm->m_assembler.label());
- }
-
- void linkTo(Label label, MacroAssembler* masm)
- {
- masm->m_assembler.link(m_jmp, label.m_label);
- }
-
- // FIXME: transitionary method, while we replace JmpSrces with Jumps.
- operator X86Assembler::JmpSrc()
- {
- return m_jmp;
- }
-
- static void patch(void* address, void* destination)
- {
- X86Assembler::patchBranchOffset(reinterpret_cast<intptr_t>(address), destination);
- }
-
- private:
- X86Assembler::JmpSrc m_jmp;
- };
-
- // JumpList:
- //
- // A JumpList is a set of Jump objects.
- // All jumps in the set will be linked to the same destination.
- class JumpList {
- friend class PatchBuffer;
-
- public:
- void link(MacroAssembler* masm)
- {
- size_t size = m_jumps.size();
- for (size_t i = 0; i < size; ++i)
- m_jumps[i].link(masm);
- m_jumps.clear();
- }
-
- void linkTo(Label label, MacroAssembler* masm)
- {
- size_t size = m_jumps.size();
- for (size_t i = 0; i < size; ++i)
- m_jumps[i].linkTo(label, masm);
- m_jumps.clear();
- }
-
- void append(Jump jump)
- {
- m_jumps.append(jump);
- }
-
- void append(JumpList& other)
- {
- m_jumps.append(other.m_jumps.begin(), other.m_jumps.size());
- }
-
- bool empty()
- {
- return !m_jumps.size();
- }
-
- private:
- Vector<Jump, 16> m_jumps;
- };
-
-
- // PatchBuffer:
- //
- // This class assists in linking code generated by the macro assembler, once code generation
- // has been completed, and the code has been copied to is final location in memory. At this
- // time pointers to labels within the code may be resolved, and relative offsets to external
- // addresses may be fixed.
- //
- // Specifically:
- // * Jump objects may be linked to external targets,
- // * The address of Jump objects may taken, such that it can later be relinked.
- // * The return address of a Jump object representing a call may be acquired.
- // * The address of a Label pointing into the code may be resolved.
- // * The value referenced by a DataLabel may be fixed.
- //
- // FIXME: distinguish between Calls & Jumps (make a specific call to obtain the return
- // address of calls, as opposed to a point that can be used to later relink a Jump -
- // possibly wrap the later up in an object that can do just that).
- class PatchBuffer {
- public:
- PatchBuffer(void* code)
- : m_code(code)
- {
- }
-
- void link(Jump jump, void* target)
- {
- X86Assembler::link(m_code, jump.m_jmp, target);
- }
-
- void link(JumpList list, void* target)
- {
- for (unsigned i = 0; i < list.m_jumps.size(); ++i)
- X86Assembler::link(m_code, list.m_jumps[i], target);
- }
-
- void* addressOf(Jump jump)
- {
- return X86Assembler::getRelocatedAddress(m_code, jump.m_jmp);
- }
-
- void* addressOf(Label label)
- {
- return X86Assembler::getRelocatedAddress(m_code, label.m_label);
- }
-
- void* addressOf(DataLabelPtr label)
- {
- return X86Assembler::getRelocatedAddress(m_code, label.m_label);
- }
-
- void* addressOf(DataLabel32 label)
- {
- return X86Assembler::getRelocatedAddress(m_code, label.m_label);
- }
-
- void setPtr(DataLabelPtr label, void* value)
- {
- X86Assembler::patchAddress(m_code, label.m_label, value);
- }
-
- private:
- void* m_code;
- };
-
-
- // ImmPtr:
- //
- // A pointer sized immediate operand to an instruction - this is wrapped
- // in a class requiring explicit construction in order to differentiate
- // from pointers used as absolute addresses to memory operations
- struct ImmPtr {
- explicit ImmPtr(void* value)
- : m_value(value)
- {
- }
-
- intptr_t asIntptr()
- {
- return reinterpret_cast<intptr_t>(m_value);
- }
-
- void* m_value;
- };
-
-
- // Imm32:
- //
- // A 32bit immediate operand to an instruction - this is wrapped in a
- // class requiring explicit construction in order to prevent RegisterIDs
- // (which are implemented as an enum) from accidentally being passed as
- // immediate values.
- struct Imm32 {
- explicit Imm32(int32_t value)
- : m_value(value)
- {
- }
-
-#if PLATFORM(X86)
- explicit Imm32(ImmPtr ptr)
- : m_value(ptr.asIntptr())
- {
- }
-#endif
-
- int32_t m_value;
- };
-
- // Integer arithmetic operations:
- //
- // Operations are typically two operand - operation(source, srcDst)
- // For many operations the source may be an Imm32, the srcDst operand
- // may often be a memory location (explictly described using an Address
- // object).
-
- void addPtr(RegisterID src, RegisterID dest)
+ void poke(RegisterID src, int index = 0)
{
-#if PLATFORM(X86_64)
- m_assembler.addq_rr(src, dest);
-#else
- add32(src, dest);
-#endif
+ storePtr(src, Address(stackPointerRegister, (index * sizeof(void*))));
}
- void addPtr(Imm32 imm, RegisterID srcDest)
+ void poke(Imm32 value, int index = 0)
{
-#if PLATFORM(X86_64)
- m_assembler.addq_ir(imm.m_value, srcDest);
-#else
- add32(imm, srcDest);
-#endif
+ store32(value, Address(stackPointerRegister, (index * sizeof(void*))));
}
- void addPtr(Imm32 imm, RegisterID src, RegisterID dest)
+ void poke(ImmPtr imm, int index = 0)
{
- m_assembler.leal_mr(imm.m_value, src, dest);
+ storePtr(imm, Address(stackPointerRegister, (index * sizeof(void*))));
}
- void add32(RegisterID src, RegisterID dest)
+
+ // Backwards banches, these are currently all implemented using existing forwards branch mechanisms.
+ void branchPtr(Condition cond, RegisterID op1, ImmPtr imm, Label target)
{
- m_assembler.addl_rr(src, dest);
+ branchPtr(cond, op1, imm).linkTo(target, this);
}
- void add32(Imm32 imm, Address address)
+ void branch32(Condition cond, RegisterID op1, RegisterID op2, Label target)
{
- m_assembler.addl_im(imm.m_value, address.offset, address.base);
+ branch32(cond, op1, op2).linkTo(target, this);
}
- void add32(Imm32 imm, RegisterID dest)
+ void branch32(Condition cond, RegisterID op1, Imm32 imm, Label target)
{
- m_assembler.addl_ir(imm.m_value, dest);
+ branch32(cond, op1, imm).linkTo(target, this);
}
-
- void add32(Imm32 imm, AbsoluteAddress address)
+
+ void branch32(Condition cond, RegisterID left, Address right, Label target)
{
-#if PLATFORM(X86_64)
- move(ImmPtr(address.m_ptr), scratchRegister);
- add32(imm, Address(scratchRegister));
-#else
- m_assembler.addl_im(imm.m_value, address.m_ptr);
-#endif
+ branch32(cond, left, right).linkTo(target, this);
}
-
- void add32(Address src, RegisterID dest)
+
+ void branch16(Condition cond, BaseIndex left, RegisterID right, Label target)
{
- m_assembler.addl_mr(src.offset, src.base, dest);
+ branch16(cond, left, right).linkTo(target, this);
}
- void andPtr(RegisterID src, RegisterID dest)
+ void branchTestPtr(Condition cond, RegisterID reg, Label target)
{
-#if PLATFORM(X86_64)
- m_assembler.andq_rr(src, dest);
-#else
- and32(src, dest);
-#endif
+ branchTestPtr(cond, reg).linkTo(target, this);
}
- void andPtr(Imm32 imm, RegisterID srcDest)
+ void jump(Label target)
{
-#if PLATFORM(X86_64)
- m_assembler.andq_ir(imm.m_value, srcDest);
-#else
- and32(imm, srcDest);
-#endif
+ jump().linkTo(target, this);
}
- void and32(RegisterID src, RegisterID dest)
- {
- m_assembler.andl_rr(src, dest);
- }
- void and32(Imm32 imm, RegisterID dest)
+ // Ptr methods
+ // On 32-bit platforms (i.e. x86), these methods directly map onto their 32-bit equivalents.
+#if !PLATFORM(X86_64)
+ void addPtr(RegisterID src, RegisterID dest)
{
- m_assembler.andl_ir(imm.m_value, dest);
+ add32(src, dest);
}
- void lshift32(Imm32 imm, RegisterID dest)
+ void addPtr(Imm32 imm, RegisterID srcDest)
{
- m_assembler.shll_i8r(imm.m_value, dest);
+ add32(imm, srcDest);
}
-
- void lshift32(RegisterID shift_amount, RegisterID dest)
+
+ void addPtr(ImmPtr imm, RegisterID dest)
{
- // On x86 we can only shift by ecx; if asked to shift by another register we'll
- // need rejig the shift amount into ecx first, and restore the registers afterwards.
- if (shift_amount != X86::ecx) {
- swap(shift_amount, X86::ecx);
-
- // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx"
- if (dest == shift_amount)
- m_assembler.shll_CLr(X86::ecx);
- // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx"
- else if (dest == X86::ecx)
- m_assembler.shll_CLr(shift_amount);
- // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx"
- else
- m_assembler.shll_CLr(dest);
-
- swap(shift_amount, X86::ecx);
- } else
- m_assembler.shll_CLr(dest);
+ add32(Imm32(imm), dest);
}
-
- // Take the value from dividend, divide it by divisor, and put the remainder in remainder.
- // For now, this operation has specific register requirements, and the three register must
- // be unique. It is unfortunate to expose this in the MacroAssembler interface, however
- // given the complexity to fix, the fact that it is not uncommmon for processors to have
- // specific register requirements on this operation (e.g. Mips result in 'hi'), or to not
- // support a hardware divide at all, it may not be
- void mod32(RegisterID divisor, RegisterID dividend, RegisterID remainder)
- {
-#ifdef NDEBUG
-#pragma unused(dividend,remainder)
-#else
- ASSERT((dividend == X86::eax) && (remainder == X86::edx));
- ASSERT((dividend != divisor) && (remainder != divisor));
-#endif
- m_assembler.cdq();
- m_assembler.idivl_r(divisor);
+ void addPtr(Imm32 imm, RegisterID src, RegisterID dest)
+ {
+ add32(imm, src, dest);
}
- void mul32(Imm32 imm, RegisterID src, RegisterID dest)
+ void andPtr(RegisterID src, RegisterID dest)
{
- m_assembler.imull_i32r(src, imm.m_value, dest);
+ and32(src, dest);
}
-
- void not32(RegisterID srcDest)
+
+ void andPtr(Imm32 imm, RegisterID srcDest)
{
- m_assembler.notl_r(srcDest);
+ and32(imm, srcDest);
}
-
+
void orPtr(RegisterID src, RegisterID dest)
{
-#if PLATFORM(X86_64)
- m_assembler.orq_rr(src, dest);
-#else
or32(src, dest);
-#endif
}
void orPtr(ImmPtr imm, RegisterID dest)
{
-#if PLATFORM(X86_64)
- move(imm, scratchRegister);
- m_assembler.orq_rr(scratchRegister, dest);
-#else
or32(Imm32(imm), dest);
-#endif
}
void orPtr(Imm32 imm, RegisterID dest)
{
-#if PLATFORM(X86_64)
- m_assembler.orq_ir(imm.m_value, dest);
-#else
or32(imm, dest);
-#endif
- }
-
- void or32(RegisterID src, RegisterID dest)
- {
- m_assembler.orl_rr(src, dest);
- }
-
- void or32(Imm32 imm, RegisterID dest)
- {
- m_assembler.orl_ir(imm.m_value, dest);
}
void rshiftPtr(RegisterID shift_amount, RegisterID dest)
{
-#if PLATFORM(X86_64)
- // On x86 we can only shift by ecx; if asked to shift by another register we'll
- // need rejig the shift amount into ecx first, and restore the registers afterwards.
- if (shift_amount != X86::ecx) {
- swap(shift_amount, X86::ecx);
-
- // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx"
- if (dest == shift_amount)
- m_assembler.sarq_CLr(X86::ecx);
- // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx"
- else if (dest == X86::ecx)
- m_assembler.sarq_CLr(shift_amount);
- // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx"
- else
- m_assembler.sarq_CLr(dest);
-
- swap(shift_amount, X86::ecx);
- } else
- m_assembler.sarq_CLr(dest);
-#else
rshift32(shift_amount, dest);
-#endif
}
void rshiftPtr(Imm32 imm, RegisterID dest)
{
-#if PLATFORM(X86_64)
- m_assembler.sarq_i8r(imm.m_value, dest);
-#else
rshift32(imm, dest);
-#endif
- }
-
- void rshift32(RegisterID shift_amount, RegisterID dest)
- {
- // On x86 we can only shift by ecx; if asked to shift by another register we'll
- // need rejig the shift amount into ecx first, and restore the registers afterwards.
- if (shift_amount != X86::ecx) {
- swap(shift_amount, X86::ecx);
-
- // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx"
- if (dest == shift_amount)
- m_assembler.sarl_CLr(X86::ecx);
- // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx"
- else if (dest == X86::ecx)
- m_assembler.sarl_CLr(shift_amount);
- // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx"
- else
- m_assembler.sarl_CLr(dest);
-
- swap(shift_amount, X86::ecx);
- } else
- m_assembler.sarl_CLr(dest);
}
- void rshift32(Imm32 imm, RegisterID dest)
+ void subPtr(RegisterID src, RegisterID dest)
{
- m_assembler.sarl_i8r(imm.m_value, dest);
+ sub32(src, dest);
}
-
+
void subPtr(Imm32 imm, RegisterID dest)
{
-#if PLATFORM(X86_64)
- m_assembler.subq_ir(imm.m_value, dest);
-#else
sub32(imm, dest);
-#endif
}
- void sub32(Imm32 imm, RegisterID dest)
- {
- m_assembler.subl_ir(imm.m_value, dest);
- }
-
- void sub32(Imm32 imm, Address address)
- {
- m_assembler.subl_im(imm.m_value, address.offset, address.base);
- }
-
- void sub32(Imm32 imm, AbsoluteAddress address)
- {
-#if PLATFORM(X86_64)
- move(ImmPtr(address.m_ptr), scratchRegister);
- sub32(imm, Address(scratchRegister));
-#else
- m_assembler.subl_im(imm.m_value, address.m_ptr);
-#endif
- }
-
- void sub32(Address src, RegisterID dest)
+ void subPtr(ImmPtr imm, RegisterID dest)
{
- m_assembler.subl_mr(src.offset, src.base, dest);
+ sub32(Imm32(imm), dest);
}
void xorPtr(RegisterID src, RegisterID dest)
{
-#if PLATFORM(X86_64)
- m_assembler.xorq_rr(src, dest);
-#else
xor32(src, dest);
-#endif
}
void xorPtr(Imm32 imm, RegisterID srcDest)
{
-#if PLATFORM(X86_64)
- m_assembler.xorq_ir(imm.m_value, srcDest);
-#else
xor32(imm, srcDest);
-#endif
- }
-
- void xor32(RegisterID src, RegisterID dest)
- {
- m_assembler.xorl_rr(src, dest);
}
- void xor32(Imm32 imm, RegisterID srcDest)
- {
- m_assembler.xorl_ir(imm.m_value, srcDest);
- }
-
-
- // Memory access operations:
- //
- // Loads are of the form load(address, destination) and stores of the form
- // store(source, address). The source for a store may be an Imm32. Address
- // operand objects to loads and store will be implicitly constructed if a
- // register is passed.
void loadPtr(ImplicitAddress address, RegisterID dest)
{
-#if PLATFORM(X86_64)
- m_assembler.movq_mr(address.offset, address.base, dest);
-#else
load32(address, dest);
-#endif
- }
-
- DataLabel32 loadPtrWithAddressOffsetPatch(Address address, RegisterID dest)
- {
-#if PLATFORM(X86_64)
- m_assembler.movq_mr_disp32(address.offset, address.base, dest);
- return DataLabel32(this);
-#else
- m_assembler.movl_mr_disp32(address.offset, address.base, dest);
- return DataLabel32(this);
-#endif
}
void loadPtr(BaseIndex address, RegisterID dest)
{
-#if PLATFORM(X86_64)
- m_assembler.movq_mr(address.offset, address.base, address.index, address.scale, dest);
-#else
load32(address, dest);
-#endif
}
void loadPtr(void* address, RegisterID dest)
{
-#if PLATFORM(X86_64)
- if (dest == X86::eax)
- m_assembler.movq_mEAX(address);
- else {
- move(X86::eax, dest);
- m_assembler.movq_mEAX(address);
- swap(X86::eax, dest);
- }
-#else
load32(address, dest);
-#endif
- }
-
- void load32(ImplicitAddress address, RegisterID dest)
- {
- m_assembler.movl_mr(address.offset, address.base, dest);
- }
-
- void load32(BaseIndex address, RegisterID dest)
- {
- m_assembler.movl_mr(address.offset, address.base, address.index, address.scale, dest);
}
- void load32(void* address, RegisterID dest)
+ DataLabel32 loadPtrWithAddressOffsetPatch(Address address, RegisterID dest)
{
-#if PLATFORM(X86_64)
- if (dest == X86::eax)
- m_assembler.movl_mEAX(address);
- else {
- move(X86::eax, dest);
- m_assembler.movl_mEAX(address);
- swap(X86::eax, dest);
- }
-#else
- m_assembler.movl_mr(address, dest);
-#endif
+ return load32WithAddressOffsetPatch(address, dest);
}
- void load16(BaseIndex address, RegisterID dest)
+ void setPtr(Condition cond, RegisterID left, Imm32 right, RegisterID dest)
{
- m_assembler.movzwl_mr(address.offset, address.base, address.index, address.scale, dest);
+ set32(cond, left, right, dest);
}
void storePtr(RegisterID src, ImplicitAddress address)
{
-#if PLATFORM(X86_64)
- m_assembler.movq_rm(src, address.offset, address.base);
-#else
store32(src, address);
-#endif
- }
-
- DataLabel32 storePtrWithAddressOffsetPatch(RegisterID src, Address address)
- {
-#if PLATFORM(X86_64)
- m_assembler.movq_rm_disp32(src, address.offset, address.base);
- return DataLabel32(this);
-#else
- m_assembler.movl_rm_disp32(src, address.offset, address.base);
- return DataLabel32(this);
-#endif
}
void storePtr(RegisterID src, BaseIndex address)
{
-#if PLATFORM(X86_64)
- m_assembler.movq_rm(src, address.offset, address.base, address.index, address.scale);
-#else
store32(src, address);
-#endif
- }
-
- void storePtr(ImmPtr imm, ImplicitAddress address)
- {
-#if PLATFORM(X86_64)
- move(imm, scratchRegister);
- storePtr(scratchRegister, address);
-#else
- m_assembler.movl_i32m(imm.asIntptr(), address.offset, address.base);
-#endif
- }
-
- DataLabelPtr storePtrWithPatch(Address address)
- {
-#if PLATFORM(X86_64)
- m_assembler.movq_i64r(0, scratchRegister);
- DataLabelPtr label(this);
- storePtr(scratchRegister, address);
- return label;
-#else
- m_assembler.movl_i32m(0, address.offset, address.base);
- return DataLabelPtr(this);
-#endif
- }
-
- void store32(RegisterID src, ImplicitAddress address)
- {
- m_assembler.movl_rm(src, address.offset, address.base);
- }
-
- void store32(RegisterID src, BaseIndex address)
- {
- m_assembler.movl_rm(src, address.offset, address.base, address.index, address.scale);
- }
-
- void store32(Imm32 imm, ImplicitAddress address)
- {
- m_assembler.movl_i32m(imm.m_value, address.offset, address.base);
- }
-
- void store32(Imm32 imm, void* address)
- {
-#if PLATFORM(X86_64)
- move(X86::eax, scratchRegister);
- move(imm, X86::eax);
- m_assembler.movl_EAXm(address);
- move(scratchRegister, X86::eax);
-#else
- m_assembler.movl_i32m(imm.m_value, address);
-#endif
- }
-
-
- // Stack manipulation operations:
- //
- // The ABI is assumed to provide a stack abstraction to memory,
- // containing machine word sized units of data. Push and pop
- // operations add and remove a single register sized unit of data
- // to or from the stack. Peek and poke operations read or write
- // values on the stack, without moving the current stack position.
-
- void pop(RegisterID dest)
- {
- m_assembler.pop_r(dest);
- }
-
- void push(RegisterID src)
- {
- m_assembler.push_r(src);
- }
-
- void push(Address address)
- {
- m_assembler.push_m(address.offset, address.base);
- }
-
- void push(Imm32 imm)
- {
- m_assembler.push_i32(imm.m_value);
- }
-
- void pop()
- {
- addPtr(Imm32(sizeof(void*)), X86::esp);
- }
-
- void peek(RegisterID dest, int index = 0)
- {
- loadPtr(Address(X86::esp, (index * sizeof(void *))), dest);
- }
-
- void poke(RegisterID src, int index = 0)
- {
- storePtr(src, Address(X86::esp, (index * sizeof(void *))));
- }
-
- void poke(Imm32 value, int index = 0)
- {
- store32(value, Address(X86::esp, (index * sizeof(void *))));
- }
-
- void poke(ImmPtr imm, int index = 0)
- {
- storePtr(imm, Address(X86::esp, (index * sizeof(void *))));
- }
-
- // Register move operations:
- //
- // Move values in registers.
-
- void move(Imm32 imm, RegisterID dest)
- {
- // Note: on 64-bit the Imm32 value is zero extended into the register, it
- // may be useful to have a separate version that sign extends the value?
- if (!imm.m_value)
- m_assembler.xorl_rr(dest, dest);
- else
- m_assembler.movl_i32r(imm.m_value, dest);
- }
-
- void move(RegisterID src, RegisterID dest)
- {
- // Note: on 64-bit this is is a full register move; perhaps it would be
- // useful to have separate move32 & movePtr, with move32 zero extending?
-#if PLATFORM(X86_64)
- m_assembler.movq_rr(src, dest);
-#else
- m_assembler.movl_rr(src, dest);
-#endif
- }
-
- void move(ImmPtr imm, RegisterID dest)
- {
-#if PLATFORM(X86_64)
- if (CAN_SIGN_EXTEND_U32_64(imm.asIntptr()))
- m_assembler.movl_i32r(static_cast<int32_t>(imm.asIntptr()), dest);
- else
- m_assembler.movq_i64r(imm.asIntptr(), dest);
-#else
- m_assembler.movl_i32r(imm.asIntptr(), dest);
-#endif
- }
-
- void swap(RegisterID reg1, RegisterID reg2)
- {
-#if PLATFORM(X86_64)
- m_assembler.xchgq_rr(reg1, reg2);
-#else
- m_assembler.xchgl_rr(reg1, reg2);
-#endif
- }
-
- void signExtend32ToPtr(RegisterID src, RegisterID dest)
- {
-#if PLATFORM(X86_64)
- m_assembler.movsxd_rr(src, dest);
-#else
- if (src != dest)
- move(src, dest);
-#endif
- }
-
- void zeroExtend32ToPtr(RegisterID src, RegisterID dest)
- {
-#if PLATFORM(X86_64)
- m_assembler.movl_rr(src, dest);
-#else
- if (src != dest)
- move(src, dest);
-#endif
- }
-
-
- // Forwards / external control flow operations:
- //
- // This set of jump and conditional branch operations return a Jump
- // object which may linked at a later point, allow forwards jump,
- // or jumps that will require external linkage (after the code has been
- // relocated).
- //
- // For branches, signed <, >, <= and >= are denoted as l, g, le, and ge
- // respecitvely, for unsigned comparisons the names b, a, be, and ae are
- // used (representing the names 'below' and 'above').
- //
- // Operands to the comparision are provided in the expected order, e.g.
- // jle32(reg1, Imm32(5)) will branch if the value held in reg1, when
- // treated as a signed 32bit value, is less than or equal to 5.
- //
- // jz and jnz test whether the first operand is equal to zero, and take
- // an optional second operand of a mask under which to perform the test.
-
-private:
- void compareImm32ForBranch(RegisterID left, int32_t right)
- {
- m_assembler.cmpl_ir(right, left);
- }
-
- void compareImm32ForBranchEquality(RegisterID reg, int32_t imm)
- {
- if (!imm)
- m_assembler.testl_rr(reg, reg);
- else
- m_assembler.cmpl_ir(imm, reg);
- }
-
- void compareImm32ForBranchEquality(Address address, int32_t imm)
- {
- m_assembler.cmpl_im(imm, address.offset, address.base);
- }
-
- void testImm32(RegisterID reg, Imm32 mask)
- {
- // if we are only interested in the low seven bits, this can be tested with a testb
- if (mask.m_value == -1)
- m_assembler.testl_rr(reg, reg);
- else if ((mask.m_value & ~0x7f) == 0)
- m_assembler.testb_i8r(mask.m_value, reg);
- else
- m_assembler.testl_i32r(mask.m_value, reg);
- }
-
- void testImm32(Address address, Imm32 mask)
- {
- if (mask.m_value == -1)
- m_assembler.cmpl_im(0, address.offset, address.base);
- else
- m_assembler.testl_i32m(mask.m_value, address.offset, address.base);
- }
-
- void testImm32(BaseIndex address, Imm32 mask)
- {
- if (mask.m_value == -1)
- m_assembler.cmpl_im(0, address.offset, address.base, address.index, address.scale);
- else
- m_assembler.testl_i32m(mask.m_value, address.offset, address.base, address.index, address.scale);
- }
-
-#if PLATFORM(X86_64)
- void compareImm64ForBranch(RegisterID left, int32_t right)
- {
- m_assembler.cmpq_ir(right, left);
- }
-
- void compareImm64ForBranchEquality(RegisterID reg, int32_t imm)
- {
- if (!imm)
- m_assembler.testq_rr(reg, reg);
- else
- m_assembler.cmpq_ir(imm, reg);
- }
-
- void testImm64(RegisterID reg, Imm32 mask)
- {
- // if we are only interested in the low seven bits, this can be tested with a testb
- if (mask.m_value == -1)
- m_assembler.testq_rr(reg, reg);
- else if ((mask.m_value & ~0x7f) == 0)
- m_assembler.testb_i8r(mask.m_value, reg);
- else
- m_assembler.testq_i32r(mask.m_value, reg);
- }
-
- void testImm64(Address address, Imm32 mask)
- {
- if (mask.m_value == -1)
- m_assembler.cmpq_im(0, address.offset, address.base);
- else
- m_assembler.testq_i32m(mask.m_value, address.offset, address.base);
- }
-
- void testImm64(BaseIndex address, Imm32 mask)
- {
- if (mask.m_value == -1)
- m_assembler.cmpq_im(0, address.offset, address.base, address.index, address.scale);
- else
- m_assembler.testq_i32m(mask.m_value, address.offset, address.base, address.index, address.scale);
- }
-#endif
-
-public:
- Jump ja32(RegisterID left, Imm32 right)
- {
- compareImm32ForBranch(left, right.m_value);
- return Jump(m_assembler.ja());
- }
-
- Jump jaePtr(RegisterID left, RegisterID right)
- {
-#if PLATFORM(X86_64)
- m_assembler.cmpq_rr(right, left);
- return Jump(m_assembler.jae());
-#else
- return jae32(left, right);
-#endif
- }
-
- Jump jaePtr(RegisterID reg, ImmPtr ptr)
- {
-#if PLATFORM(X86_64)
- intptr_t imm = ptr.asIntptr();
- if (CAN_SIGN_EXTEND_32_64(imm)) {
- compareImm64ForBranch(reg, imm);
- return Jump(m_assembler.jae());
- } else {
- move(ptr, scratchRegister);
- return jaePtr(reg, scratchRegister);
- }
-#else
- return jae32(reg, Imm32(ptr));
-#endif
- }
-
- Jump jae32(RegisterID left, RegisterID right)
- {
- m_assembler.cmpl_rr(right, left);
- return Jump(m_assembler.jae());
}
- Jump jae32(RegisterID left, Imm32 right)
+ void storePtr(RegisterID src, void* address)
{
- compareImm32ForBranch(left, right.m_value);
- return Jump(m_assembler.jae());
- }
-
- Jump jae32(RegisterID left, Address right)
- {
- m_assembler.cmpl_mr(right.offset, right.base, left);
- return Jump(m_assembler.jae());
- }
-
- Jump jae32(Address left, RegisterID right)
- {
- m_assembler.cmpl_rm(right, left.offset, left.base);
- return Jump(m_assembler.jae());
- }
-
- Jump jbPtr(RegisterID left, RegisterID right)
- {
-#if PLATFORM(X86_64)
- m_assembler.cmpq_rr(right, left);
- return Jump(m_assembler.jb());
-#else
- return jb32(left, right);
-#endif
- }
-
- Jump jbPtr(RegisterID reg, ImmPtr ptr)
- {
-#if PLATFORM(X86_64)
- intptr_t imm = ptr.asIntptr();
- if (CAN_SIGN_EXTEND_32_64(imm)) {
- compareImm64ForBranch(reg, imm);
- return Jump(m_assembler.jb());
- } else {
- move(ptr, scratchRegister);
- return jbPtr(reg, scratchRegister);
- }
-#else
- return jb32(reg, Imm32(ptr));
-#endif
- }
-
- Jump jb32(RegisterID left, RegisterID right)
- {
- m_assembler.cmpl_rr(right, left);
- return Jump(m_assembler.jb());
- }
-
- Jump jb32(RegisterID left, Imm32 right)
- {
- compareImm32ForBranch(left, right.m_value);
- return Jump(m_assembler.jb());
- }
-
- Jump jb32(RegisterID left, Address right)
- {
- m_assembler.cmpl_mr(right.offset, right.base, left);
- return Jump(m_assembler.jb());
- }
-
- Jump jePtr(RegisterID op1, RegisterID op2)
- {
-#if PLATFORM(X86_64)
- m_assembler.cmpq_rr(op1, op2);
- return Jump(m_assembler.je());
-#else
- return je32(op1, op2);
-#endif
- }
-
- Jump jePtr(RegisterID reg, Address address)
- {
-#if PLATFORM(X86_64)
- m_assembler.cmpq_rm(reg, address.offset, address.base);
-#else
- m_assembler.cmpl_rm(reg, address.offset, address.base);
-#endif
- return Jump(m_assembler.je());
- }
-
- Jump jePtr(RegisterID reg, ImmPtr ptr)
- {
-#if PLATFORM(X86_64)
- intptr_t imm = ptr.asIntptr();
- if (CAN_SIGN_EXTEND_32_64(imm)) {
- compareImm64ForBranchEquality(reg, imm);
- return Jump(m_assembler.je());
- } else {
- move(ptr, scratchRegister);
- return jePtr(scratchRegister, reg);
- }
-#else
- return je32(reg, Imm32(ptr));
-#endif
- }
-
- Jump jePtr(Address address, ImmPtr imm)
- {
-#if PLATFORM(X86_64)
- move(imm, scratchRegister);
- return jePtr(scratchRegister, address);
-#else
- return je32(address, Imm32(imm));
-#endif
- }
-
- Jump je32(RegisterID op1, RegisterID op2)
- {
- m_assembler.cmpl_rr(op1, op2);
- return Jump(m_assembler.je());
- }
-
- Jump je32(Address op1, RegisterID op2)
- {
- m_assembler.cmpl_mr(op1.offset, op1.base, op2);
- return Jump(m_assembler.je());
- }
-
- Jump je32(RegisterID reg, Imm32 imm)
- {
- compareImm32ForBranchEquality(reg, imm.m_value);
- return Jump(m_assembler.je());
- }
-
- Jump je32(Address address, Imm32 imm)
- {
- compareImm32ForBranchEquality(address, imm.m_value);
- return Jump(m_assembler.je());
- }
-
- Jump je16(RegisterID op1, BaseIndex op2)
- {
- m_assembler.cmpw_rm(op1, op2.offset, op2.base, op2.index, op2.scale);
- return Jump(m_assembler.je());
- }
-
- Jump jg32(RegisterID left, RegisterID right)
- {
- m_assembler.cmpl_rr(right, left);
- return Jump(m_assembler.jg());
- }
-
- Jump jg32(RegisterID reg, Address address)
- {
- m_assembler.cmpl_mr(address.offset, address.base, reg);
- return Jump(m_assembler.jg());
- }
-
- Jump jgePtr(RegisterID left, RegisterID right)
- {
-#if PLATFORM(X86_64)
- m_assembler.cmpq_rr(right, left);
- return Jump(m_assembler.jge());
-#else
- return jge32(left, right);
-#endif
- }
-
- Jump jgePtr(RegisterID reg, ImmPtr ptr)
- {
-#if PLATFORM(X86_64)
- intptr_t imm = ptr.asIntptr();
- if (CAN_SIGN_EXTEND_32_64(imm)) {
- compareImm64ForBranch(reg, imm);
- return Jump(m_assembler.jge());
- } else {
- move(ptr, scratchRegister);
- return jgePtr(reg, scratchRegister);
- }
-#else
- return jge32(reg, Imm32(ptr));
-#endif
- }
-
- Jump jge32(RegisterID left, RegisterID right)
- {
- m_assembler.cmpl_rr(right, left);
- return Jump(m_assembler.jge());
- }
-
- Jump jge32(RegisterID left, Imm32 right)
- {
- compareImm32ForBranch(left, right.m_value);
- return Jump(m_assembler.jge());
- }
-
- Jump jlPtr(RegisterID left, RegisterID right)
- {
-#if PLATFORM(X86_64)
- m_assembler.cmpq_rr(right, left);
- return Jump(m_assembler.jl());
-#else
- return jl32(left, right);
-#endif
- }
-
- Jump jlPtr(RegisterID reg, ImmPtr ptr)
- {
-#if PLATFORM(X86_64)
- intptr_t imm = ptr.asIntptr();
- if (CAN_SIGN_EXTEND_32_64(imm)) {
- compareImm64ForBranch(reg, imm);
- return Jump(m_assembler.jl());
- } else {
- move(ptr, scratchRegister);
- return jlPtr(reg, scratchRegister);
- }
-#else
- return jl32(reg, Imm32(ptr));
-#endif
- }
-
- Jump jl32(RegisterID left, RegisterID right)
- {
- m_assembler.cmpl_rr(right, left);
- return Jump(m_assembler.jl());
- }
-
- Jump jl32(RegisterID left, Imm32 right)
- {
- compareImm32ForBranch(left, right.m_value);
- return Jump(m_assembler.jl());
- }
-
- Jump jlePtr(RegisterID left, RegisterID right)
- {
-#if PLATFORM(X86_64)
- m_assembler.cmpq_rr(right, left);
- return Jump(m_assembler.jle());
-#else
- return jle32(left, right);
-#endif
- }
-
- Jump jlePtr(RegisterID reg, ImmPtr ptr)
- {
-#if PLATFORM(X86_64)
- intptr_t imm = ptr.asIntptr();
- if (CAN_SIGN_EXTEND_32_64(imm)) {
- compareImm64ForBranch(reg, imm);
- return Jump(m_assembler.jle());
- } else {
- move(ptr, scratchRegister);
- return jlePtr(reg, scratchRegister);
- }
-#else
- return jle32(reg, Imm32(ptr));
-#endif
- }
-
- Jump jle32(RegisterID left, RegisterID right)
- {
- m_assembler.cmpl_rr(right, left);
- return Jump(m_assembler.jle());
- }
-
- Jump jle32(RegisterID left, Imm32 right)
- {
- compareImm32ForBranch(left, right.m_value);
- return Jump(m_assembler.jle());
+ store32(src, address);
}
- Jump jnePtr(RegisterID op1, RegisterID op2)
+ void storePtr(ImmPtr imm, ImplicitAddress address)
{
-#if PLATFORM(X86_64)
- m_assembler.cmpq_rr(op1, op2);
- return Jump(m_assembler.jne());
-#else
- return jne32(op1, op2);
-#endif
+ store32(Imm32(imm), address);
}
- Jump jnePtr(RegisterID reg, Address address)
+ void storePtr(ImmPtr imm, void* address)
{
-#if PLATFORM(X86_64)
- m_assembler.cmpq_rm(reg, address.offset, address.base);
-#else
- m_assembler.cmpl_rm(reg, address.offset, address.base);
-#endif
- return Jump(m_assembler.jne());
+ store32(Imm32(imm), address);
}
- Jump jnePtr(RegisterID reg, AbsoluteAddress address)
+ DataLabel32 storePtrWithAddressOffsetPatch(RegisterID src, Address address)
{
-#if PLATFORM(X86_64)
- move(ImmPtr(address.m_ptr), scratchRegister);
- return jnePtr(reg, Address(scratchRegister));
-#else
- m_assembler.cmpl_rm(reg, address.m_ptr);
- return Jump(m_assembler.jne());
-#endif
+ return store32WithAddressOffsetPatch(src, address);
}
- Jump jnePtr(RegisterID reg, ImmPtr ptr)
- {
-#if PLATFORM(X86_64)
- intptr_t imm = ptr.asIntptr();
- if (CAN_SIGN_EXTEND_32_64(imm)) {
- compareImm64ForBranchEquality(reg, imm);
- return Jump(m_assembler.jne());
- } else {
- move(ptr, scratchRegister);
- return jnePtr(scratchRegister, reg);
- }
-#else
- return jne32(reg, Imm32(ptr));
-#endif
- }
- Jump jnePtr(Address address, ImmPtr imm)
+ Jump branchPtr(Condition cond, RegisterID left, RegisterID right)
{
-#if PLATFORM(X86_64)
- move(imm, scratchRegister);
- return jnePtr(scratchRegister, address);
-#else
- return jne32(address, Imm32(imm));
-#endif
+ return branch32(cond, left, right);
}
-#if !PLATFORM(X86_64)
- Jump jnePtr(AbsoluteAddress address, ImmPtr imm)
+ Jump branchPtr(Condition cond, RegisterID left, ImmPtr right)
{
- m_assembler.cmpl_im(imm.asIntptr(), address.m_ptr);
- return Jump(m_assembler.jne());
+ return branch32(cond, left, Imm32(right));
}
-#endif
- Jump jnePtrWithPatch(RegisterID reg, DataLabelPtr& dataLabel, ImmPtr initialValue = ImmPtr(0))
+ Jump branchPtr(Condition cond, RegisterID left, Address right)
{
-#if PLATFORM(X86_64)
- m_assembler.movq_i64r(initialValue.asIntptr(), scratchRegister);
- dataLabel = DataLabelPtr(this);
- return jnePtr(scratchRegister, reg);
-#else
- m_assembler.cmpl_ir_force32(initialValue.asIntptr(), reg);
- dataLabel = DataLabelPtr(this);
- return Jump(m_assembler.jne());
-#endif
+ return branch32(cond, left, right);
}
- Jump jnePtrWithPatch(Address address, DataLabelPtr& dataLabel, ImmPtr initialValue = ImmPtr(0))
+ Jump branchPtr(Condition cond, Address left, RegisterID right)
{
-#if PLATFORM(X86_64)
- m_assembler.movq_i64r(initialValue.asIntptr(), scratchRegister);
- dataLabel = DataLabelPtr(this);
- return jnePtr(scratchRegister, address);
-#else
- m_assembler.cmpl_im_force32(initialValue.asIntptr(), address.offset, address.base);
- dataLabel = DataLabelPtr(this);
- return Jump(m_assembler.jne());
-#endif
+ return branch32(cond, left, right);
}
- Jump jne32(RegisterID op1, RegisterID op2)
+ Jump branchPtr(Condition cond, AbsoluteAddress left, RegisterID right)
{
- m_assembler.cmpl_rr(op1, op2);
- return Jump(m_assembler.jne());
+ return branch32(cond, left, right);
}
- Jump jne32(RegisterID reg, Imm32 imm)
+ Jump branchPtr(Condition cond, Address left, ImmPtr right)
{
- compareImm32ForBranchEquality(reg, imm.m_value);
- return Jump(m_assembler.jne());
+ return branch32(cond, left, Imm32(right));
}
- Jump jne32(Address address, Imm32 imm)
- {
- compareImm32ForBranchEquality(address, imm.m_value);
- return Jump(m_assembler.jne());
- }
-
- Jump jne32(Address address, RegisterID reg)
- {
- m_assembler.cmpl_rm(reg, address.offset, address.base);
- return Jump(m_assembler.jne());
- }
-
- Jump jnzPtr(RegisterID reg, Imm32 mask = Imm32(-1))
+ Jump branchPtr(Condition cond, AbsoluteAddress left, ImmPtr right)
{
-#if PLATFORM(X86_64)
- testImm64(reg, mask);
- return Jump(m_assembler.jne());
-#else
- return jnz32(reg, mask);
-#endif
+ return branch32(cond, left, Imm32(right));
}
- Jump jnzPtr(RegisterID reg, ImmPtr mask)
+ Jump branchTestPtr(Condition cond, RegisterID reg, RegisterID mask)
{
-#if PLATFORM(X86_64)
- move(mask, scratchRegister);
- m_assembler.testq_rr(scratchRegister, reg);
- return Jump(m_assembler.jne());
-#else
- return jnz32(reg, Imm32(mask));
-#endif
+ return branchTest32(cond, reg, mask);
}
- Jump jnzPtr(Address address, Imm32 mask = Imm32(-1))
+ Jump branchTestPtr(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1))
{
-#if PLATFORM(X86_64)
- testImm64(address, mask);
- return Jump(m_assembler.jne());
-#else
- return jnz32(address, mask);
-#endif
+ return branchTest32(cond, reg, mask);
}
- Jump jnz32(RegisterID reg, Imm32 mask = Imm32(-1))
+ Jump branchTestPtr(Condition cond, Address address, Imm32 mask = Imm32(-1))
{
- testImm32(reg, mask);
- return Jump(m_assembler.jne());
+ return branchTest32(cond, address, mask);
}
- Jump jnz32(Address address, Imm32 mask = Imm32(-1))
+ Jump branchTestPtr(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1))
{
- testImm32(address, mask);
- return Jump(m_assembler.jne());
+ return branchTest32(cond, address, mask);
}
- Jump jzPtr(RegisterID reg, Imm32 mask = Imm32(-1))
- {
-#if PLATFORM(X86_64)
- testImm64(reg, mask);
- return Jump(m_assembler.je());
-#else
- return jz32(reg, mask);
-#endif
- }
- Jump jzPtr(RegisterID reg, ImmPtr mask)
+ Jump branchAddPtr(Condition cond, RegisterID src, RegisterID dest)
{
-#if PLATFORM(X86_64)
- move(mask, scratchRegister);
- m_assembler.testq_rr(scratchRegister, reg);
- return Jump(m_assembler.je());
-#else
- return jz32(reg, Imm32(mask));
-#endif
+ return branchAdd32(cond, src, dest);
}
- Jump jzPtr(Address address, Imm32 mask = Imm32(-1))
+ Jump branchSubPtr(Condition cond, Imm32 imm, RegisterID dest)
{
-#if PLATFORM(X86_64)
- testImm64(address, mask);
- return Jump(m_assembler.je());
-#else
- return jz32(address, mask);
-#endif
+ return branchSub32(cond, imm, dest);
}
-
- Jump jzPtr(BaseIndex address, Imm32 mask = Imm32(-1))
- {
-#if PLATFORM(X86_64)
- testImm64(address, mask);
- return Jump(m_assembler.je());
-#else
- return jz32(address, mask);
#endif
- }
-
- Jump jz32(RegisterID reg, Imm32 mask = Imm32(-1))
- {
- testImm32(reg, mask);
- return Jump(m_assembler.je());
- }
-
- Jump jz32(Address address, Imm32 mask = Imm32(-1))
- {
- testImm32(address, mask);
- return Jump(m_assembler.je());
- }
-
- Jump jz32(BaseIndex address, Imm32 mask = Imm32(-1))
- {
- testImm32(address, mask);
- return Jump(m_assembler.je());
- }
-
- Jump jump()
- {
- return Jump(m_assembler.jmp());
- }
-
-
- // Backwards, local control flow operations:
- //
- // These operations provide a shorter notation for local
- // backwards branches, which may be both more convenient
- // for the user, and for the programmer, and for the
- // assembler (allowing shorter values to be used in
- // relative offsets).
- //
- // The code sequence:
- //
- // Label topOfLoop(this);
- // // ...
- // jne32(reg1, reg2, topOfLoop);
- //
- // Is equivalent to the longer, potentially less efficient form:
- //
- // Label topOfLoop(this);
- // // ...
- // jne32(reg1, reg2).linkTo(topOfLoop);
-
- void jae32(RegisterID left, Address right, Label target)
- {
- jae32(left, right).linkTo(target, this);
- }
-
- void je32(RegisterID op1, Imm32 imm, Label target)
- {
- je32(op1, imm).linkTo(target, this);
- }
-
- void je16(RegisterID op1, BaseIndex op2, Label target)
- {
- je16(op1, op2).linkTo(target, this);
- }
-
- void jl32(RegisterID left, Imm32 right, Label target)
- {
- jl32(left, right).linkTo(target, this);
- }
-
- void jle32(RegisterID left, RegisterID right, Label target)
- {
- jle32(left, right).linkTo(target, this);
- }
-
- void jnePtr(RegisterID op1, ImmPtr imm, Label target)
- {
- jnePtr(op1, imm).linkTo(target, this);
- }
-
- void jne32(RegisterID op1, RegisterID op2, Label target)
- {
- jne32(op1, op2).linkTo(target, this);
- }
-
- void jne32(RegisterID op1, Imm32 imm, Label target)
- {
- jne32(op1, imm).linkTo(target, this);
- }
-
- void jzPtr(RegisterID reg, Label target)
- {
- jzPtr(reg).linkTo(target, this);
- }
-
- void jump(Label target)
- {
- m_assembler.link(m_assembler.jmp(), target.m_label);
- }
-
- void jump(RegisterID target)
- {
- m_assembler.jmp_r(target);
- }
-
- // Address is a memory location containing the address to jump to
- void jump(Address address)
- {
- m_assembler.jmp_m(address.offset, address.base);
- }
-
-
- // Arithmetic control flow operations:
- //
- // This set of conditional branch operations branch based
- // on the result of an arithmetic operation. The operation
- // is performed as normal, storing the result.
- //
- // * jz operations branch if the result is zero.
- // * jo operations branch if the (signed) arithmetic
- // operation caused an overflow to occur.
-
- Jump jnzSubPtr(Imm32 imm, RegisterID dest)
- {
- subPtr(imm, dest);
- return Jump(m_assembler.jne());
- }
-
- Jump jnzSub32(Imm32 imm, RegisterID dest)
- {
- sub32(imm, dest);
- return Jump(m_assembler.jne());
- }
-
- Jump joAddPtr(RegisterID src, RegisterID dest)
- {
- addPtr(src, dest);
- return Jump(m_assembler.jo());
- }
-
- Jump joAdd32(RegisterID src, RegisterID dest)
- {
- add32(src, dest);
- return Jump(m_assembler.jo());
- }
-
- Jump joAdd32(Imm32 imm, RegisterID dest)
- {
- add32(imm, dest);
- return Jump(m_assembler.jo());
- }
-
- Jump joMul32(Imm32 imm, RegisterID src, RegisterID dest)
- {
- mul32(imm, src, dest);
- return Jump(m_assembler.jo());
- }
-
- Jump joSub32(Imm32 imm, RegisterID dest)
- {
- sub32(imm, dest);
- return Jump(m_assembler.jo());
- }
-
- Jump jzSubPtr(Imm32 imm, RegisterID dest)
- {
- subPtr(imm, dest);
- return Jump(m_assembler.je());
- }
-
- Jump jzSub32(Imm32 imm, RegisterID dest)
- {
- sub32(imm, dest);
- return Jump(m_assembler.je());
- }
-
-
- // Miscellaneous operations:
-
- void breakpoint()
- {
- m_assembler.int3();
- }
-
- Jump call()
- {
- return Jump(m_assembler.call());
- }
-
- // FIXME: why does this return a Jump object? - it can't be linked.
- // This may be to get a reference to the return address of the call.
- //
- // This should probably be handled by a separate label type to a regular
- // jump. Todo: add a CallLabel type, for the regular call - can be linked
- // like a jump (possibly a subclass of jump?, or possibly casts to a Jump).
- // Also add a CallReturnLabel type for this to return (just a more JmpDsty
- // form of label, can get the void* after the code has been linked, but can't
- // try to link it like a Jump object), and let the CallLabel be cast into a
- // CallReturnLabel.
- Jump call(RegisterID target)
- {
- return Jump(m_assembler.call(target));
- }
-
- Label label()
- {
- return Label(this);
- }
-
- Label align()
- {
- m_assembler.align(16);
- return Label(this);
- }
-
- ptrdiff_t differenceBetween(Label from, Jump to)
- {
- return X86Assembler::getDifferenceBetweenLabels(from.m_label, to.m_jmp);
- }
-
- ptrdiff_t differenceBetween(Label from, Label to)
- {
- return X86Assembler::getDifferenceBetweenLabels(from.m_label, to.m_label);
- }
-
- ptrdiff_t differenceBetween(Label from, DataLabelPtr to)
- {
- return X86Assembler::getDifferenceBetweenLabels(from.m_label, to.m_label);
- }
-
- ptrdiff_t differenceBetween(Label from, DataLabel32 to)
- {
- return X86Assembler::getDifferenceBetweenLabels(from.m_label, to.m_label);
- }
-
- ptrdiff_t differenceBetween(DataLabelPtr from, Jump to)
- {
- return X86Assembler::getDifferenceBetweenLabels(from.m_label, to.m_jmp);
- }
- void ret()
- {
- m_assembler.ret();
- }
-
- void sete32(RegisterID src, RegisterID srcDest)
- {
- m_assembler.cmpl_rr(srcDest, src);
- m_assembler.sete_r(srcDest);
- m_assembler.movzbl_rr(srcDest, srcDest);
- }
-
- void sete32(Imm32 imm, RegisterID srcDest)
- {
- compareImm32ForBranchEquality(srcDest, imm.m_value);
- m_assembler.sete_r(srcDest);
- m_assembler.movzbl_rr(srcDest, srcDest);
- }
-
- void setne32(RegisterID src, RegisterID srcDest)
- {
- m_assembler.cmpl_rr(srcDest, src);
- m_assembler.setne_r(srcDest);
- m_assembler.movzbl_rr(srcDest, srcDest);
- }
-
- void setne32(Imm32 imm, RegisterID srcDest)
- {
- compareImm32ForBranchEquality(srcDest, imm.m_value);
- m_assembler.setne_r(srcDest);
- m_assembler.movzbl_rr(srcDest, srcDest);
- }
-
- // FIXME:
- // The mask should be optional... paerhaps the argument order should be
- // dest-src, operations always have a dest? ... possibly not true, considering
- // asm ops like test, or pseudo ops like pop().
- void setnz32(Address address, Imm32 mask, RegisterID dest)
- {
- testImm32(address, mask);
- m_assembler.setnz_r(dest);
- m_assembler.movzbl_rr(dest, dest);
- }
-
- void setz32(Address address, Imm32 mask, RegisterID dest)
- {
- testImm32(address, mask);
- m_assembler.setz_r(dest);
- m_assembler.movzbl_rr(dest, dest);
- }
};
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerCodeRef.h b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerCodeRef.h
new file mode 100644
index 0000000..0603060
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerCodeRef.h
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef MacroAssemblerCodeRef_h
+#define MacroAssemblerCodeRef_h
+
+#include <wtf/Platform.h>
+
+#include "ExecutableAllocator.h"
+#include "PassRefPtr.h"
+#include "RefPtr.h"
+#include "UnusedParam.h"
+
+#if ENABLE(ASSEMBLER)
+
+namespace JSC {
+
+// FunctionPtr:
+//
+// FunctionPtr should be used to wrap pointers to C/C++ functions in JSC
+// (particularly, the stub functions).
+class FunctionPtr {
+public:
+ FunctionPtr()
+ : m_value(0)
+ {
+ }
+
+ template<typename FunctionType>
+ explicit FunctionPtr(FunctionType* value)
+ : m_value(reinterpret_cast<void*>(value))
+ {
+ ASSERT(m_value);
+ }
+
+ void* value() const { return m_value; }
+ void* executableAddress() const { return m_value; }
+
+
+private:
+ void* m_value;
+};
+
+// ReturnAddressPtr:
+//
+// ReturnAddressPtr should be used to wrap return addresses generated by processor
+// 'call' instructions exectued in JIT code. We use return addresses to look up
+// exception and optimization information, and to repatch the call instruction
+// that is the source of the return address.
+class ReturnAddressPtr {
+public:
+ ReturnAddressPtr()
+ : m_value(0)
+ {
+ }
+
+ explicit ReturnAddressPtr(void* value)
+ : m_value(value)
+ {
+ ASSERT(m_value);
+ }
+
+ void* value() const { return m_value; }
+
+private:
+ void* m_value;
+};
+
+// MacroAssemblerCodePtr:
+//
+// MacroAssemblerCodePtr should be used to wrap pointers to JIT generated code.
+class MacroAssemblerCodePtr {
+public:
+ MacroAssemblerCodePtr()
+ : m_value(0)
+ {
+ }
+
+ explicit MacroAssemblerCodePtr(void* value)
+ : m_value(value)
+ {
+ ASSERT(m_value);
+ }
+
+ explicit MacroAssemblerCodePtr(ReturnAddressPtr ra)
+ : m_value(ra.value())
+ {
+ ASSERT(m_value);
+ }
+
+ void* executableAddress() const { return m_value; }
+ void* dataLocation() const { ASSERT(m_value); return m_value; }
+
+private:
+ void* m_value;
+};
+
+// MacroAssemblerCodeRef:
+//
+// A reference to a section of JIT generated code. A CodeRef consists of a
+// pointer to the code, and a ref pointer to the pool from within which it
+// was allocated.
+class MacroAssemblerCodeRef {
+public:
+ MacroAssemblerCodeRef()
+#ifndef NDEBUG
+ : m_size(0)
+#endif
+ {
+ }
+
+ MacroAssemblerCodeRef(void* code, PassRefPtr<ExecutablePool> executablePool, size_t size)
+ : m_code(code)
+ , m_executablePool(executablePool)
+ {
+#ifndef NDEBUG
+ m_size = size;
+#else
+ UNUSED_PARAM(size);
+#endif
+ }
+
+ MacroAssemblerCodePtr m_code;
+ RefPtr<ExecutablePool> m_executablePool;
+#ifndef NDEBUG
+ size_t m_size;
+#endif
+};
+
+} // namespace JSC
+
+#endif // ENABLE(ASSEMBLER)
+
+#endif // MacroAssemblerCodeRef_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86.h b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86.h
new file mode 100644
index 0000000..801bf61
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86.h
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef MacroAssemblerX86_h
+#define MacroAssemblerX86_h
+
+#include <wtf/Platform.h>
+
+#if ENABLE(ASSEMBLER) && PLATFORM(X86)
+
+#include "MacroAssemblerX86Common.h"
+
+namespace JSC {
+
+class MacroAssemblerX86 : public MacroAssemblerX86Common {
+public:
+ MacroAssemblerX86()
+ : m_isSSE2Present(isSSE2Present())
+ {
+ }
+
+ static const Scale ScalePtr = TimesFour;
+
+ using MacroAssemblerX86Common::add32;
+ using MacroAssemblerX86Common::and32;
+ using MacroAssemblerX86Common::sub32;
+ using MacroAssemblerX86Common::or32;
+ using MacroAssemblerX86Common::load32;
+ using MacroAssemblerX86Common::store32;
+ using MacroAssemblerX86Common::branch32;
+ using MacroAssemblerX86Common::call;
+
+ void add32(Imm32 imm, RegisterID src, RegisterID dest)
+ {
+ m_assembler.leal_mr(imm.m_value, src, dest);
+ }
+
+ void add32(Imm32 imm, AbsoluteAddress address)
+ {
+ m_assembler.addl_im(imm.m_value, address.m_ptr);
+ }
+
+ void addWithCarry32(Imm32 imm, AbsoluteAddress address)
+ {
+ m_assembler.adcl_im(imm.m_value, address.m_ptr);
+ }
+
+ void and32(Imm32 imm, AbsoluteAddress address)
+ {
+ m_assembler.andl_im(imm.m_value, address.m_ptr);
+ }
+
+ void or32(Imm32 imm, AbsoluteAddress address)
+ {
+ m_assembler.orl_im(imm.m_value, address.m_ptr);
+ }
+
+ void sub32(Imm32 imm, AbsoluteAddress address)
+ {
+ m_assembler.subl_im(imm.m_value, address.m_ptr);
+ }
+
+ void load32(void* address, RegisterID dest)
+ {
+ m_assembler.movl_mr(address, dest);
+ }
+
+ void store32(Imm32 imm, void* address)
+ {
+ m_assembler.movl_i32m(imm.m_value, address);
+ }
+
+ void store32(RegisterID src, void* address)
+ {
+ m_assembler.movl_rm(src, address);
+ }
+
+ Jump branch32(Condition cond, AbsoluteAddress left, RegisterID right)
+ {
+ m_assembler.cmpl_rm(right, left.m_ptr);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branch32(Condition cond, AbsoluteAddress left, Imm32 right)
+ {
+ m_assembler.cmpl_im(right.m_value, left.m_ptr);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Call call()
+ {
+ return Call(m_assembler.call(), Call::Linkable);
+ }
+
+ Call tailRecursiveCall()
+ {
+ return Call::fromTailJump(jump());
+ }
+
+ Call makeTailRecursiveCall(Jump oldJump)
+ {
+ return Call::fromTailJump(oldJump);
+ }
+
+
+ DataLabelPtr moveWithPatch(ImmPtr initialValue, RegisterID dest)
+ {
+ m_assembler.movl_i32r(initialValue.asIntptr(), dest);
+ return DataLabelPtr(this);
+ }
+
+ Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0))
+ {
+ m_assembler.cmpl_ir_force32(initialRightValue.asIntptr(), left);
+ dataLabel = DataLabelPtr(this);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0))
+ {
+ m_assembler.cmpl_im_force32(initialRightValue.asIntptr(), left.offset, left.base);
+ dataLabel = DataLabelPtr(this);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ DataLabelPtr storePtrWithPatch(ImmPtr initialValue, ImplicitAddress address)
+ {
+ m_assembler.movl_i32m(initialValue.asIntptr(), address.offset, address.base);
+ return DataLabelPtr(this);
+ }
+
+ bool supportsFloatingPoint() const { return m_isSSE2Present; }
+
+private:
+ const bool m_isSSE2Present;
+};
+
+} // namespace JSC
+
+#endif // ENABLE(ASSEMBLER)
+
+#endif // MacroAssemblerX86_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86Common.h b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86Common.h
new file mode 100644
index 0000000..cea691e
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86Common.h
@@ -0,0 +1,780 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef MacroAssemblerX86Common_h
+#define MacroAssemblerX86Common_h
+
+#include <wtf/Platform.h>
+
+#if ENABLE(ASSEMBLER)
+
+#include "X86Assembler.h"
+#include "AbstractMacroAssembler.h"
+
+namespace JSC {
+
+class MacroAssemblerX86Common : public AbstractMacroAssembler<X86Assembler> {
+public:
+
+ enum Condition {
+ Equal = X86Assembler::ConditionE,
+ NotEqual = X86Assembler::ConditionNE,
+ Above = X86Assembler::ConditionA,
+ AboveOrEqual = X86Assembler::ConditionAE,
+ Below = X86Assembler::ConditionB,
+ BelowOrEqual = X86Assembler::ConditionBE,
+ GreaterThan = X86Assembler::ConditionG,
+ GreaterThanOrEqual = X86Assembler::ConditionGE,
+ LessThan = X86Assembler::ConditionL,
+ LessThanOrEqual = X86Assembler::ConditionLE,
+ Overflow = X86Assembler::ConditionO,
+ Signed = X86Assembler::ConditionS,
+ Zero = X86Assembler::ConditionE,
+ NonZero = X86Assembler::ConditionNE
+ };
+
+ enum DoubleCondition {
+ DoubleEqual = X86Assembler::ConditionE,
+ DoubleGreaterThan = X86Assembler::ConditionA,
+ DoubleGreaterThanOrEqual = X86Assembler::ConditionAE,
+ DoubleLessThan = X86Assembler::ConditionB,
+ DoubleLessThanOrEqual = X86Assembler::ConditionBE,
+ };
+
+ static const RegisterID stackPointerRegister = X86::esp;
+
+ // Integer arithmetic operations:
+ //
+ // Operations are typically two operand - operation(source, srcDst)
+ // For many operations the source may be an Imm32, the srcDst operand
+ // may often be a memory location (explictly described using an Address
+ // object).
+
+ void add32(RegisterID src, RegisterID dest)
+ {
+ m_assembler.addl_rr(src, dest);
+ }
+
+ void add32(Imm32 imm, Address address)
+ {
+ m_assembler.addl_im(imm.m_value, address.offset, address.base);
+ }
+
+ void add32(Imm32 imm, RegisterID dest)
+ {
+ m_assembler.addl_ir(imm.m_value, dest);
+ }
+
+ void add32(Address src, RegisterID dest)
+ {
+ m_assembler.addl_mr(src.offset, src.base, dest);
+ }
+
+ void and32(RegisterID src, RegisterID dest)
+ {
+ m_assembler.andl_rr(src, dest);
+ }
+
+ void and32(Imm32 imm, RegisterID dest)
+ {
+ m_assembler.andl_ir(imm.m_value, dest);
+ }
+
+ void and32(Imm32 imm, Address address)
+ {
+ m_assembler.andl_im(imm.m_value, address.offset, address.base);
+ }
+
+ void lshift32(Imm32 imm, RegisterID dest)
+ {
+ m_assembler.shll_i8r(imm.m_value, dest);
+ }
+
+ void lshift32(RegisterID shift_amount, RegisterID dest)
+ {
+ // On x86 we can only shift by ecx; if asked to shift by another register we'll
+ // need rejig the shift amount into ecx first, and restore the registers afterwards.
+ if (shift_amount != X86::ecx) {
+ swap(shift_amount, X86::ecx);
+
+ // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx"
+ if (dest == shift_amount)
+ m_assembler.shll_CLr(X86::ecx);
+ // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx"
+ else if (dest == X86::ecx)
+ m_assembler.shll_CLr(shift_amount);
+ // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx"
+ else
+ m_assembler.shll_CLr(dest);
+
+ swap(shift_amount, X86::ecx);
+ } else
+ m_assembler.shll_CLr(dest);
+ }
+
+ void mul32(RegisterID src, RegisterID dest)
+ {
+ m_assembler.imull_rr(src, dest);
+ }
+
+ void mul32(Imm32 imm, RegisterID src, RegisterID dest)
+ {
+ m_assembler.imull_i32r(src, imm.m_value, dest);
+ }
+
+ void not32(RegisterID srcDest)
+ {
+ m_assembler.notl_r(srcDest);
+ }
+
+ void or32(RegisterID src, RegisterID dest)
+ {
+ m_assembler.orl_rr(src, dest);
+ }
+
+ void or32(Imm32 imm, RegisterID dest)
+ {
+ m_assembler.orl_ir(imm.m_value, dest);
+ }
+
+ void or32(Imm32 imm, Address address)
+ {
+ m_assembler.orl_im(imm.m_value, address.offset, address.base);
+ }
+
+ void rshift32(RegisterID shift_amount, RegisterID dest)
+ {
+ // On x86 we can only shift by ecx; if asked to shift by another register we'll
+ // need rejig the shift amount into ecx first, and restore the registers afterwards.
+ if (shift_amount != X86::ecx) {
+ swap(shift_amount, X86::ecx);
+
+ // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx"
+ if (dest == shift_amount)
+ m_assembler.sarl_CLr(X86::ecx);
+ // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx"
+ else if (dest == X86::ecx)
+ m_assembler.sarl_CLr(shift_amount);
+ // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx"
+ else
+ m_assembler.sarl_CLr(dest);
+
+ swap(shift_amount, X86::ecx);
+ } else
+ m_assembler.sarl_CLr(dest);
+ }
+
+ void rshift32(Imm32 imm, RegisterID dest)
+ {
+ m_assembler.sarl_i8r(imm.m_value, dest);
+ }
+
+ void sub32(RegisterID src, RegisterID dest)
+ {
+ m_assembler.subl_rr(src, dest);
+ }
+
+ void sub32(Imm32 imm, RegisterID dest)
+ {
+ m_assembler.subl_ir(imm.m_value, dest);
+ }
+
+ void sub32(Imm32 imm, Address address)
+ {
+ m_assembler.subl_im(imm.m_value, address.offset, address.base);
+ }
+
+ void sub32(Address src, RegisterID dest)
+ {
+ m_assembler.subl_mr(src.offset, src.base, dest);
+ }
+
+ void xor32(RegisterID src, RegisterID dest)
+ {
+ m_assembler.xorl_rr(src, dest);
+ }
+
+ void xor32(Imm32 imm, RegisterID srcDest)
+ {
+ m_assembler.xorl_ir(imm.m_value, srcDest);
+ }
+
+
+ // Memory access operations:
+ //
+ // Loads are of the form load(address, destination) and stores of the form
+ // store(source, address). The source for a store may be an Imm32. Address
+ // operand objects to loads and store will be implicitly constructed if a
+ // register is passed.
+
+ void load32(ImplicitAddress address, RegisterID dest)
+ {
+ m_assembler.movl_mr(address.offset, address.base, dest);
+ }
+
+ void load32(BaseIndex address, RegisterID dest)
+ {
+ m_assembler.movl_mr(address.offset, address.base, address.index, address.scale, dest);
+ }
+
+ DataLabel32 load32WithAddressOffsetPatch(Address address, RegisterID dest)
+ {
+ m_assembler.movl_mr_disp32(address.offset, address.base, dest);
+ return DataLabel32(this);
+ }
+
+ void load16(BaseIndex address, RegisterID dest)
+ {
+ m_assembler.movzwl_mr(address.offset, address.base, address.index, address.scale, dest);
+ }
+
+ DataLabel32 store32WithAddressOffsetPatch(RegisterID src, Address address)
+ {
+ m_assembler.movl_rm_disp32(src, address.offset, address.base);
+ return DataLabel32(this);
+ }
+
+ void store32(RegisterID src, ImplicitAddress address)
+ {
+ m_assembler.movl_rm(src, address.offset, address.base);
+ }
+
+ void store32(RegisterID src, BaseIndex address)
+ {
+ m_assembler.movl_rm(src, address.offset, address.base, address.index, address.scale);
+ }
+
+ void store32(Imm32 imm, ImplicitAddress address)
+ {
+ m_assembler.movl_i32m(imm.m_value, address.offset, address.base);
+ }
+
+
+ // Floating-point operation:
+ //
+ // Presently only supports SSE, not x87 floating point.
+
+ void loadDouble(ImplicitAddress address, FPRegisterID dest)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.movsd_mr(address.offset, address.base, dest);
+ }
+
+ void storeDouble(FPRegisterID src, ImplicitAddress address)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.movsd_rm(src, address.offset, address.base);
+ }
+
+ void addDouble(FPRegisterID src, FPRegisterID dest)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.addsd_rr(src, dest);
+ }
+
+ void addDouble(Address src, FPRegisterID dest)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.addsd_mr(src.offset, src.base, dest);
+ }
+
+ void subDouble(FPRegisterID src, FPRegisterID dest)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.subsd_rr(src, dest);
+ }
+
+ void subDouble(Address src, FPRegisterID dest)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.subsd_mr(src.offset, src.base, dest);
+ }
+
+ void mulDouble(FPRegisterID src, FPRegisterID dest)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.mulsd_rr(src, dest);
+ }
+
+ void mulDouble(Address src, FPRegisterID dest)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.mulsd_mr(src.offset, src.base, dest);
+ }
+
+ void convertInt32ToDouble(RegisterID src, FPRegisterID dest)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.cvtsi2sd_rr(src, dest);
+ }
+
+ Jump branchDouble(DoubleCondition cond, FPRegisterID left, FPRegisterID right)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.ucomisd_rr(right, left);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ // Truncates 'src' to an integer, and places the resulting 'dest'.
+ // If the result is not representable as a 32 bit value, branch.
+ // May also branch for some values that are representable in 32 bits
+ // (specifically, in this case, INT_MIN).
+ Jump branchTruncateDoubleToInt32(FPRegisterID src, RegisterID dest)
+ {
+ ASSERT(isSSE2Present());
+ m_assembler.cvttsd2si_rr(src, dest);
+ return branch32(Equal, dest, Imm32(0x80000000));
+ }
+
+
+ // Stack manipulation operations:
+ //
+ // The ABI is assumed to provide a stack abstraction to memory,
+ // containing machine word sized units of data. Push and pop
+ // operations add and remove a single register sized unit of data
+ // to or from the stack. Peek and poke operations read or write
+ // values on the stack, without moving the current stack position.
+
+ void pop(RegisterID dest)
+ {
+ m_assembler.pop_r(dest);
+ }
+
+ void push(RegisterID src)
+ {
+ m_assembler.push_r(src);
+ }
+
+ void push(Address address)
+ {
+ m_assembler.push_m(address.offset, address.base);
+ }
+
+ void push(Imm32 imm)
+ {
+ m_assembler.push_i32(imm.m_value);
+ }
+
+
+ // Register move operations:
+ //
+ // Move values in registers.
+
+ void move(Imm32 imm, RegisterID dest)
+ {
+ // Note: on 64-bit the Imm32 value is zero extended into the register, it
+ // may be useful to have a separate version that sign extends the value?
+ if (!imm.m_value)
+ m_assembler.xorl_rr(dest, dest);
+ else
+ m_assembler.movl_i32r(imm.m_value, dest);
+ }
+
+#if PLATFORM(X86_64)
+ void move(RegisterID src, RegisterID dest)
+ {
+ // Note: on 64-bit this is is a full register move; perhaps it would be
+ // useful to have separate move32 & movePtr, with move32 zero extending?
+ m_assembler.movq_rr(src, dest);
+ }
+
+ void move(ImmPtr imm, RegisterID dest)
+ {
+ if (CAN_SIGN_EXTEND_U32_64(imm.asIntptr()))
+ m_assembler.movl_i32r(static_cast<int32_t>(imm.asIntptr()), dest);
+ else
+ m_assembler.movq_i64r(imm.asIntptr(), dest);
+ }
+
+ void swap(RegisterID reg1, RegisterID reg2)
+ {
+ m_assembler.xchgq_rr(reg1, reg2);
+ }
+
+ void signExtend32ToPtr(RegisterID src, RegisterID dest)
+ {
+ m_assembler.movsxd_rr(src, dest);
+ }
+
+ void zeroExtend32ToPtr(RegisterID src, RegisterID dest)
+ {
+ m_assembler.movl_rr(src, dest);
+ }
+#else
+ void move(RegisterID src, RegisterID dest)
+ {
+ if (src != dest)
+ m_assembler.movl_rr(src, dest);
+ }
+
+ void move(ImmPtr imm, RegisterID dest)
+ {
+ m_assembler.movl_i32r(imm.asIntptr(), dest);
+ }
+
+ void swap(RegisterID reg1, RegisterID reg2)
+ {
+ if (reg1 != reg2)
+ m_assembler.xchgl_rr(reg1, reg2);
+ }
+
+ void signExtend32ToPtr(RegisterID src, RegisterID dest)
+ {
+ move(src, dest);
+ }
+
+ void zeroExtend32ToPtr(RegisterID src, RegisterID dest)
+ {
+ move(src, dest);
+ }
+#endif
+
+
+ // Forwards / external control flow operations:
+ //
+ // This set of jump and conditional branch operations return a Jump
+ // object which may linked at a later point, allow forwards jump,
+ // or jumps that will require external linkage (after the code has been
+ // relocated).
+ //
+ // For branches, signed <, >, <= and >= are denoted as l, g, le, and ge
+ // respecitvely, for unsigned comparisons the names b, a, be, and ae are
+ // used (representing the names 'below' and 'above').
+ //
+ // Operands to the comparision are provided in the expected order, e.g.
+ // jle32(reg1, Imm32(5)) will branch if the value held in reg1, when
+ // treated as a signed 32bit value, is less than or equal to 5.
+ //
+ // jz and jnz test whether the first operand is equal to zero, and take
+ // an optional second operand of a mask under which to perform the test.
+
+public:
+ Jump branch32(Condition cond, RegisterID left, RegisterID right)
+ {
+ m_assembler.cmpl_rr(right, left);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branch32(Condition cond, RegisterID left, Imm32 right)
+ {
+ if (((cond == Equal) || (cond == NotEqual)) && !right.m_value)
+ m_assembler.testl_rr(left, left);
+ else
+ m_assembler.cmpl_ir(right.m_value, left);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branch32(Condition cond, RegisterID left, Address right)
+ {
+ m_assembler.cmpl_mr(right.offset, right.base, left);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branch32(Condition cond, Address left, RegisterID right)
+ {
+ m_assembler.cmpl_rm(right, left.offset, left.base);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branch32(Condition cond, Address left, Imm32 right)
+ {
+ m_assembler.cmpl_im(right.m_value, left.offset, left.base);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branch32(Condition cond, BaseIndex left, Imm32 right)
+ {
+ m_assembler.cmpl_im(right.m_value, left.offset, left.base, left.index, left.scale);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branch16(Condition cond, BaseIndex left, RegisterID right)
+ {
+ m_assembler.cmpw_rm(right, left.offset, left.base, left.index, left.scale);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branch16(Condition cond, BaseIndex left, Imm32 right)
+ {
+ ASSERT(!(right.m_value & 0xFFFF0000));
+
+ m_assembler.cmpw_im(right.m_value, left.offset, left.base, left.index, left.scale);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchTest32(Condition cond, RegisterID reg, RegisterID mask)
+ {
+ ASSERT((cond == Zero) || (cond == NonZero));
+ m_assembler.testl_rr(reg, mask);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchTest32(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1))
+ {
+ ASSERT((cond == Zero) || (cond == NonZero));
+ // if we are only interested in the low seven bits, this can be tested with a testb
+ if (mask.m_value == -1)
+ m_assembler.testl_rr(reg, reg);
+ else if ((mask.m_value & ~0x7f) == 0)
+ m_assembler.testb_i8r(mask.m_value, reg);
+ else
+ m_assembler.testl_i32r(mask.m_value, reg);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchTest32(Condition cond, Address address, Imm32 mask = Imm32(-1))
+ {
+ ASSERT((cond == Zero) || (cond == NonZero));
+ if (mask.m_value == -1)
+ m_assembler.cmpl_im(0, address.offset, address.base);
+ else
+ m_assembler.testl_i32m(mask.m_value, address.offset, address.base);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchTest32(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1))
+ {
+ ASSERT((cond == Zero) || (cond == NonZero));
+ if (mask.m_value == -1)
+ m_assembler.cmpl_im(0, address.offset, address.base, address.index, address.scale);
+ else
+ m_assembler.testl_i32m(mask.m_value, address.offset, address.base, address.index, address.scale);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump jump()
+ {
+ return Jump(m_assembler.jmp());
+ }
+
+ void jump(RegisterID target)
+ {
+ m_assembler.jmp_r(target);
+ }
+
+ // Address is a memory location containing the address to jump to
+ void jump(Address address)
+ {
+ m_assembler.jmp_m(address.offset, address.base);
+ }
+
+
+ // Arithmetic control flow operations:
+ //
+ // This set of conditional branch operations branch based
+ // on the result of an arithmetic operation. The operation
+ // is performed as normal, storing the result.
+ //
+ // * jz operations branch if the result is zero.
+ // * jo operations branch if the (signed) arithmetic
+ // operation caused an overflow to occur.
+
+ Jump branchAdd32(Condition cond, RegisterID src, RegisterID dest)
+ {
+ ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero));
+ add32(src, dest);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchAdd32(Condition cond, Imm32 imm, RegisterID dest)
+ {
+ ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero));
+ add32(imm, dest);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchMul32(Condition cond, RegisterID src, RegisterID dest)
+ {
+ ASSERT(cond == Overflow);
+ mul32(src, dest);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchMul32(Condition cond, Imm32 imm, RegisterID src, RegisterID dest)
+ {
+ ASSERT(cond == Overflow);
+ mul32(imm, src, dest);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchSub32(Condition cond, RegisterID src, RegisterID dest)
+ {
+ ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero));
+ sub32(src, dest);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchSub32(Condition cond, Imm32 imm, RegisterID dest)
+ {
+ ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero));
+ sub32(imm, dest);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+
+ // Miscellaneous operations:
+
+ void breakpoint()
+ {
+ m_assembler.int3();
+ }
+
+ Call nearCall()
+ {
+ return Call(m_assembler.call(), Call::LinkableNear);
+ }
+
+ Call call(RegisterID target)
+ {
+ return Call(m_assembler.call(target), Call::None);
+ }
+
+ void call(Address address)
+ {
+ m_assembler.call_m(address.offset, address.base);
+ }
+
+ void ret()
+ {
+ m_assembler.ret();
+ }
+
+ void set32(Condition cond, RegisterID left, RegisterID right, RegisterID dest)
+ {
+ m_assembler.cmpl_rr(right, left);
+ m_assembler.setCC_r(x86Condition(cond), dest);
+ m_assembler.movzbl_rr(dest, dest);
+ }
+
+ void set32(Condition cond, RegisterID left, Imm32 right, RegisterID dest)
+ {
+ if (((cond == Equal) || (cond == NotEqual)) && !right.m_value)
+ m_assembler.testl_rr(left, left);
+ else
+ m_assembler.cmpl_ir(right.m_value, left);
+ m_assembler.setCC_r(x86Condition(cond), dest);
+ m_assembler.movzbl_rr(dest, dest);
+ }
+
+ // FIXME:
+ // The mask should be optional... paerhaps the argument order should be
+ // dest-src, operations always have a dest? ... possibly not true, considering
+ // asm ops like test, or pseudo ops like pop().
+ void setTest32(Condition cond, Address address, Imm32 mask, RegisterID dest)
+ {
+ if (mask.m_value == -1)
+ m_assembler.cmpl_im(0, address.offset, address.base);
+ else
+ m_assembler.testl_i32m(mask.m_value, address.offset, address.base);
+ m_assembler.setCC_r(x86Condition(cond), dest);
+ m_assembler.movzbl_rr(dest, dest);
+ }
+
+protected:
+ X86Assembler::Condition x86Condition(Condition cond)
+ {
+ return static_cast<X86Assembler::Condition>(cond);
+ }
+
+ X86Assembler::Condition x86Condition(DoubleCondition cond)
+ {
+ return static_cast<X86Assembler::Condition>(cond);
+ }
+
+private:
+ // Only MacroAssemblerX86 should be using the following method; SSE2 is always available on
+ // x86_64, and clients & subclasses of MacroAssembler should be using 'supportsFloatingPoint()'.
+ friend class MacroAssemblerX86;
+
+#if PLATFORM(X86)
+#if PLATFORM(MAC)
+
+ // All X86 Macs are guaranteed to support at least SSE2,
+ static bool isSSE2Present()
+ {
+ return true;
+ }
+
+#else // PLATFORM(MAC)
+
+ enum SSE2CheckState {
+ NotCheckedSSE2,
+ HasSSE2,
+ NoSSE2
+ };
+
+ static bool isSSE2Present()
+ {
+ if (s_sse2CheckState == NotCheckedSSE2) {
+ // Default the flags value to zero; if the compiler is
+ // not MSVC or GCC we will read this as SSE2 not present.
+ int flags = 0;
+#if COMPILER(MSVC)
+ _asm {
+ mov eax, 1 // cpuid function 1 gives us the standard feature set
+ cpuid;
+ mov flags, edx;
+ }
+#elif COMPILER(GCC)
+ asm (
+ "movl $0x1, %%eax;"
+ "pushl %%ebx;"
+ "cpuid;"
+ "popl %%ebx;"
+ "movl %%edx, %0;"
+ : "=g" (flags)
+ :
+ : "%eax", "%ecx", "%edx"
+ );
+#endif
+ static const int SSE2FeatureBit = 1 << 26;
+ s_sse2CheckState = (flags & SSE2FeatureBit) ? HasSSE2 : NoSSE2;
+ }
+ // Only check once.
+ ASSERT(s_sse2CheckState != NotCheckedSSE2);
+
+ return s_sse2CheckState == HasSSE2;
+ }
+
+ static SSE2CheckState s_sse2CheckState;
+
+#endif // PLATFORM(MAC)
+#elif !defined(NDEBUG) // PLATFORM(X86)
+
+ // On x86-64 we should never be checking for SSE2 in a non-debug build,
+ // but non debug add this method to keep the asserts above happy.
+ static bool isSSE2Present()
+ {
+ return true;
+ }
+
+#endif
+};
+
+} // namespace JSC
+
+#endif // ENABLE(ASSEMBLER)
+
+#endif // MacroAssemblerX86Common_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86_64.h b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86_64.h
new file mode 100644
index 0000000..4da7fe6
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86_64.h
@@ -0,0 +1,446 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef MacroAssemblerX86_64_h
+#define MacroAssemblerX86_64_h
+
+#include <wtf/Platform.h>
+
+#if ENABLE(ASSEMBLER) && PLATFORM(X86_64)
+
+#include "MacroAssemblerX86Common.h"
+
+namespace JSC {
+
+class MacroAssemblerX86_64 : public MacroAssemblerX86Common {
+protected:
+ static const X86::RegisterID scratchRegister = X86::r11;
+
+public:
+ static const Scale ScalePtr = TimesEight;
+
+ using MacroAssemblerX86Common::add32;
+ using MacroAssemblerX86Common::and32;
+ using MacroAssemblerX86Common::or32;
+ using MacroAssemblerX86Common::sub32;
+ using MacroAssemblerX86Common::load32;
+ using MacroAssemblerX86Common::store32;
+ using MacroAssemblerX86Common::call;
+
+ void add32(Imm32 imm, AbsoluteAddress address)
+ {
+ move(ImmPtr(address.m_ptr), scratchRegister);
+ add32(imm, Address(scratchRegister));
+ }
+
+ void and32(Imm32 imm, AbsoluteAddress address)
+ {
+ move(ImmPtr(address.m_ptr), scratchRegister);
+ and32(imm, Address(scratchRegister));
+ }
+
+ void or32(Imm32 imm, AbsoluteAddress address)
+ {
+ move(ImmPtr(address.m_ptr), scratchRegister);
+ or32(imm, Address(scratchRegister));
+ }
+
+ void sub32(Imm32 imm, AbsoluteAddress address)
+ {
+ move(ImmPtr(address.m_ptr), scratchRegister);
+ sub32(imm, Address(scratchRegister));
+ }
+
+ void load32(void* address, RegisterID dest)
+ {
+ if (dest == X86::eax)
+ m_assembler.movl_mEAX(address);
+ else {
+ move(X86::eax, dest);
+ m_assembler.movl_mEAX(address);
+ swap(X86::eax, dest);
+ }
+ }
+
+ void store32(Imm32 imm, void* address)
+ {
+ move(X86::eax, scratchRegister);
+ move(imm, X86::eax);
+ m_assembler.movl_EAXm(address);
+ move(scratchRegister, X86::eax);
+ }
+
+ Call call()
+ {
+ DataLabelPtr label = moveWithPatch(ImmPtr(0), scratchRegister);
+ Call result = Call(m_assembler.call(scratchRegister), Call::Linkable);
+ ASSERT(differenceBetween(label, result) == REPTACH_OFFSET_CALL_R11);
+ return result;
+ }
+
+ Call tailRecursiveCall()
+ {
+ DataLabelPtr label = moveWithPatch(ImmPtr(0), scratchRegister);
+ Jump newJump = Jump(m_assembler.jmp_r(scratchRegister));
+ ASSERT(differenceBetween(label, newJump) == REPTACH_OFFSET_CALL_R11);
+ return Call::fromTailJump(newJump);
+ }
+
+ Call makeTailRecursiveCall(Jump oldJump)
+ {
+ oldJump.link(this);
+ DataLabelPtr label = moveWithPatch(ImmPtr(0), scratchRegister);
+ Jump newJump = Jump(m_assembler.jmp_r(scratchRegister));
+ ASSERT(differenceBetween(label, newJump) == REPTACH_OFFSET_CALL_R11);
+ return Call::fromTailJump(newJump);
+ }
+
+
+ void addPtr(RegisterID src, RegisterID dest)
+ {
+ m_assembler.addq_rr(src, dest);
+ }
+
+ void addPtr(Imm32 imm, RegisterID srcDest)
+ {
+ m_assembler.addq_ir(imm.m_value, srcDest);
+ }
+
+ void addPtr(ImmPtr imm, RegisterID dest)
+ {
+ move(imm, scratchRegister);
+ m_assembler.addq_rr(scratchRegister, dest);
+ }
+
+ void addPtr(Imm32 imm, RegisterID src, RegisterID dest)
+ {
+ m_assembler.leaq_mr(imm.m_value, src, dest);
+ }
+
+ void addPtr(Imm32 imm, Address address)
+ {
+ m_assembler.addq_im(imm.m_value, address.offset, address.base);
+ }
+
+ void addPtr(Imm32 imm, AbsoluteAddress address)
+ {
+ move(ImmPtr(address.m_ptr), scratchRegister);
+ addPtr(imm, Address(scratchRegister));
+ }
+
+ void andPtr(RegisterID src, RegisterID dest)
+ {
+ m_assembler.andq_rr(src, dest);
+ }
+
+ void andPtr(Imm32 imm, RegisterID srcDest)
+ {
+ m_assembler.andq_ir(imm.m_value, srcDest);
+ }
+
+ void orPtr(RegisterID src, RegisterID dest)
+ {
+ m_assembler.orq_rr(src, dest);
+ }
+
+ void orPtr(ImmPtr imm, RegisterID dest)
+ {
+ move(imm, scratchRegister);
+ m_assembler.orq_rr(scratchRegister, dest);
+ }
+
+ void orPtr(Imm32 imm, RegisterID dest)
+ {
+ m_assembler.orq_ir(imm.m_value, dest);
+ }
+
+ void rshiftPtr(RegisterID shift_amount, RegisterID dest)
+ {
+ // On x86 we can only shift by ecx; if asked to shift by another register we'll
+ // need rejig the shift amount into ecx first, and restore the registers afterwards.
+ if (shift_amount != X86::ecx) {
+ swap(shift_amount, X86::ecx);
+
+ // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx"
+ if (dest == shift_amount)
+ m_assembler.sarq_CLr(X86::ecx);
+ // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx"
+ else if (dest == X86::ecx)
+ m_assembler.sarq_CLr(shift_amount);
+ // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx"
+ else
+ m_assembler.sarq_CLr(dest);
+
+ swap(shift_amount, X86::ecx);
+ } else
+ m_assembler.sarq_CLr(dest);
+ }
+
+ void rshiftPtr(Imm32 imm, RegisterID dest)
+ {
+ m_assembler.sarq_i8r(imm.m_value, dest);
+ }
+
+ void subPtr(RegisterID src, RegisterID dest)
+ {
+ m_assembler.subq_rr(src, dest);
+ }
+
+ void subPtr(Imm32 imm, RegisterID dest)
+ {
+ m_assembler.subq_ir(imm.m_value, dest);
+ }
+
+ void subPtr(ImmPtr imm, RegisterID dest)
+ {
+ move(imm, scratchRegister);
+ m_assembler.subq_rr(scratchRegister, dest);
+ }
+
+ void xorPtr(RegisterID src, RegisterID dest)
+ {
+ m_assembler.xorq_rr(src, dest);
+ }
+
+ void xorPtr(Imm32 imm, RegisterID srcDest)
+ {
+ m_assembler.xorq_ir(imm.m_value, srcDest);
+ }
+
+
+ void loadPtr(ImplicitAddress address, RegisterID dest)
+ {
+ m_assembler.movq_mr(address.offset, address.base, dest);
+ }
+
+ void loadPtr(BaseIndex address, RegisterID dest)
+ {
+ m_assembler.movq_mr(address.offset, address.base, address.index, address.scale, dest);
+ }
+
+ void loadPtr(void* address, RegisterID dest)
+ {
+ if (dest == X86::eax)
+ m_assembler.movq_mEAX(address);
+ else {
+ move(X86::eax, dest);
+ m_assembler.movq_mEAX(address);
+ swap(X86::eax, dest);
+ }
+ }
+
+ DataLabel32 loadPtrWithAddressOffsetPatch(Address address, RegisterID dest)
+ {
+ m_assembler.movq_mr_disp32(address.offset, address.base, dest);
+ return DataLabel32(this);
+ }
+
+ void storePtr(RegisterID src, ImplicitAddress address)
+ {
+ m_assembler.movq_rm(src, address.offset, address.base);
+ }
+
+ void storePtr(RegisterID src, BaseIndex address)
+ {
+ m_assembler.movq_rm(src, address.offset, address.base, address.index, address.scale);
+ }
+
+ void storePtr(RegisterID src, void* address)
+ {
+ if (src == X86::eax)
+ m_assembler.movq_EAXm(address);
+ else {
+ swap(X86::eax, src);
+ m_assembler.movq_EAXm(address);
+ swap(X86::eax, src);
+ }
+ }
+
+ void storePtr(ImmPtr imm, ImplicitAddress address)
+ {
+ intptr_t ptr = imm.asIntptr();
+ if (CAN_SIGN_EXTEND_32_64(ptr))
+ m_assembler.movq_i32m(static_cast<int>(ptr), address.offset, address.base);
+ else {
+ move(imm, scratchRegister);
+ storePtr(scratchRegister, address);
+ }
+ }
+
+ DataLabel32 storePtrWithAddressOffsetPatch(RegisterID src, Address address)
+ {
+ m_assembler.movq_rm_disp32(src, address.offset, address.base);
+ return DataLabel32(this);
+ }
+
+ void movePtrToDouble(RegisterID src, FPRegisterID dest)
+ {
+ m_assembler.movq_rr(src, dest);
+ }
+
+ void moveDoubleToPtr(FPRegisterID src, RegisterID dest)
+ {
+ m_assembler.movq_rr(src, dest);
+ }
+
+ void setPtr(Condition cond, RegisterID left, Imm32 right, RegisterID dest)
+ {
+ if (((cond == Equal) || (cond == NotEqual)) && !right.m_value)
+ m_assembler.testq_rr(left, left);
+ else
+ m_assembler.cmpq_ir(right.m_value, left);
+ m_assembler.setCC_r(x86Condition(cond), dest);
+ m_assembler.movzbl_rr(dest, dest);
+ }
+
+ Jump branchPtr(Condition cond, RegisterID left, RegisterID right)
+ {
+ m_assembler.cmpq_rr(right, left);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchPtr(Condition cond, RegisterID left, ImmPtr right)
+ {
+ intptr_t imm = right.asIntptr();
+ if (CAN_SIGN_EXTEND_32_64(imm)) {
+ if (!imm)
+ m_assembler.testq_rr(left, left);
+ else
+ m_assembler.cmpq_ir(imm, left);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ } else {
+ move(right, scratchRegister);
+ return branchPtr(cond, left, scratchRegister);
+ }
+ }
+
+ Jump branchPtr(Condition cond, RegisterID left, Address right)
+ {
+ m_assembler.cmpq_mr(right.offset, right.base, left);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchPtr(Condition cond, AbsoluteAddress left, RegisterID right)
+ {
+ move(ImmPtr(left.m_ptr), scratchRegister);
+ return branchPtr(cond, Address(scratchRegister), right);
+ }
+
+ Jump branchPtr(Condition cond, Address left, RegisterID right)
+ {
+ m_assembler.cmpq_rm(right, left.offset, left.base);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchPtr(Condition cond, Address left, ImmPtr right)
+ {
+ move(right, scratchRegister);
+ return branchPtr(cond, left, scratchRegister);
+ }
+
+ Jump branchTestPtr(Condition cond, RegisterID reg, RegisterID mask)
+ {
+ m_assembler.testq_rr(reg, mask);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchTestPtr(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1))
+ {
+ // if we are only interested in the low seven bits, this can be tested with a testb
+ if (mask.m_value == -1)
+ m_assembler.testq_rr(reg, reg);
+ else if ((mask.m_value & ~0x7f) == 0)
+ m_assembler.testb_i8r(mask.m_value, reg);
+ else
+ m_assembler.testq_i32r(mask.m_value, reg);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchTestPtr(Condition cond, Address address, Imm32 mask = Imm32(-1))
+ {
+ if (mask.m_value == -1)
+ m_assembler.cmpq_im(0, address.offset, address.base);
+ else
+ m_assembler.testq_i32m(mask.m_value, address.offset, address.base);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchTestPtr(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1))
+ {
+ if (mask.m_value == -1)
+ m_assembler.cmpq_im(0, address.offset, address.base, address.index, address.scale);
+ else
+ m_assembler.testq_i32m(mask.m_value, address.offset, address.base, address.index, address.scale);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+
+ Jump branchAddPtr(Condition cond, RegisterID src, RegisterID dest)
+ {
+ ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero));
+ addPtr(src, dest);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ Jump branchSubPtr(Condition cond, Imm32 imm, RegisterID dest)
+ {
+ ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero));
+ subPtr(imm, dest);
+ return Jump(m_assembler.jCC(x86Condition(cond)));
+ }
+
+ DataLabelPtr moveWithPatch(ImmPtr initialValue, RegisterID dest)
+ {
+ m_assembler.movq_i64r(initialValue.asIntptr(), dest);
+ return DataLabelPtr(this);
+ }
+
+ Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0))
+ {
+ dataLabel = moveWithPatch(initialRightValue, scratchRegister);
+ return branchPtr(cond, left, scratchRegister);
+ }
+
+ Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0))
+ {
+ dataLabel = moveWithPatch(initialRightValue, scratchRegister);
+ return branchPtr(cond, left, scratchRegister);
+ }
+
+ DataLabelPtr storePtrWithPatch(ImmPtr initialValue, ImplicitAddress address)
+ {
+ DataLabelPtr label = moveWithPatch(initialValue, scratchRegister);
+ storePtr(scratchRegister, address);
+ return label;
+ }
+
+ bool supportsFloatingPoint() const { return true; }
+};
+
+} // namespace JSC
+
+#endif // ENABLE(ASSEMBLER)
+
+#endif // MacroAssemblerX86_64_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/assembler/X86Assembler.h b/src/3rdparty/webkit/JavaScriptCore/assembler/X86Assembler.h
index 3b0ce65..7a8b58d 100644
--- a/src/3rdparty/webkit/JavaScriptCore/assembler/X86Assembler.h
+++ b/src/3rdparty/webkit/JavaScriptCore/assembler/X86Assembler.h
@@ -82,8 +82,32 @@ class X86Assembler {
public:
typedef X86::RegisterID RegisterID;
typedef X86::XMMRegisterID XMMRegisterID;
+ typedef XMMRegisterID FPRegisterID;
typedef enum {
+ ConditionO,
+ ConditionNO,
+ ConditionB,
+ ConditionAE,
+ ConditionE,
+ ConditionNE,
+ ConditionBE,
+ ConditionA,
+ ConditionS,
+ ConditionNS,
+ ConditionP,
+ ConditionNP,
+ ConditionL,
+ ConditionGE,
+ ConditionLE,
+ ConditionG,
+
+ ConditionC = ConditionB,
+ ConditionNC = ConditionAE,
+ } Condition;
+
+private:
+ typedef enum {
OP_ADD_EvGv = 0x01,
OP_ADD_GvEv = 0x03,
OP_OR_EvGv = 0x09,
@@ -145,31 +169,30 @@ public:
OP2_ADDSD_VsdWsd = 0x58,
OP2_MULSD_VsdWsd = 0x59,
OP2_SUBSD_VsdWsd = 0x5C,
+ OP2_MOVD_VdEd = 0x6E,
OP2_MOVD_EdVd = 0x7E,
- OP2_JO_rel32 = 0x80,
- OP2_JB_rel32 = 0x82,
- OP2_JAE_rel32 = 0x83,
- OP2_JE_rel32 = 0x84,
- OP2_JNE_rel32 = 0x85,
- OP2_JBE_rel32 = 0x86,
- OP2_JA_rel32 = 0x87,
- OP2_JS_rel32 = 0x88,
- OP2_JP_rel32 = 0x8A,
- OP2_JL_rel32 = 0x8C,
- OP2_JGE_rel32 = 0x8D,
- OP2_JLE_rel32 = 0x8E,
- OP2_JG_rel32 = 0x8F,
- OP_SETE = 0x94,
- OP_SETNE = 0x95,
+ OP2_JCC_rel32 = 0x80,
+ OP_SETCC = 0x90,
OP2_IMUL_GvEv = 0xAF,
OP2_MOVZX_GvEb = 0xB6,
OP2_MOVZX_GvEw = 0xB7,
OP2_PEXTRW_GdUdIb = 0xC5,
} TwoByteOpcodeID;
+ TwoByteOpcodeID jccRel32(Condition cond)
+ {
+ return (TwoByteOpcodeID)(OP2_JCC_rel32 + cond);
+ }
+
+ TwoByteOpcodeID setccOpcode(Condition cond)
+ {
+ return (TwoByteOpcodeID)(OP_SETCC + cond);
+ }
+
typedef enum {
GROUP1_OP_ADD = 0,
GROUP1_OP_OR = 1,
+ GROUP1_OP_ADC = 2,
GROUP1_OP_AND = 4,
GROUP1_OP_SUB = 5,
GROUP1_OP_XOR = 6,
@@ -191,9 +214,6 @@ public:
GROUP11_MOV = 0,
} GroupOpcodeID;
- // Opaque label types
-
-private:
class X86InstructionFormatter;
public:
@@ -221,16 +241,22 @@ public:
public:
JmpDst()
: m_offset(-1)
+ , m_used(false)
{
}
+ bool isUsed() const { return m_used; }
+ void used() { m_used = true; }
private:
JmpDst(int offset)
: m_offset(offset)
+ , m_used(false)
{
+ ASSERT(m_offset == offset);
}
- int m_offset;
+ int m_offset : 31;
+ bool m_used : 1;
};
X86Assembler()
@@ -269,6 +295,19 @@ public:
// Arithmetic operations:
+#if !PLATFORM(X86_64)
+ void adcl_im(int imm, void* addr)
+ {
+ if (CAN_SIGN_EXTEND_8_32(imm)) {
+ m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_ADC, addr);
+ m_formatter.immediate8(imm);
+ } else {
+ m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_ADC, addr);
+ m_formatter.immediate32(imm);
+ }
+ }
+#endif
+
void addl_rr(RegisterID src, RegisterID dst)
{
m_formatter.oneByteOp(OP_ADD_EvGv, src, dst);
@@ -317,6 +356,17 @@ public:
m_formatter.immediate32(imm);
}
}
+
+ void addq_im(int imm, int offset, RegisterID base)
+ {
+ if (CAN_SIGN_EXTEND_8_32(imm)) {
+ m_formatter.oneByteOp64(OP_GROUP1_EvIb, GROUP1_OP_ADD, base, offset);
+ m_formatter.immediate8(imm);
+ } else {
+ m_formatter.oneByteOp64(OP_GROUP1_EvIz, GROUP1_OP_ADD, base, offset);
+ m_formatter.immediate32(imm);
+ }
+ }
#else
void addl_im(int imm, void* addr)
{
@@ -346,6 +396,17 @@ public:
}
}
+ void andl_im(int imm, int offset, RegisterID base)
+ {
+ if (CAN_SIGN_EXTEND_8_32(imm)) {
+ m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_AND, base, offset);
+ m_formatter.immediate8(imm);
+ } else {
+ m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_AND, base, offset);
+ m_formatter.immediate32(imm);
+ }
+ }
+
#if PLATFORM(X86_64)
void andq_rr(RegisterID src, RegisterID dst)
{
@@ -362,6 +423,17 @@ public:
m_formatter.immediate32(imm);
}
}
+#else
+ void andl_im(int imm, void* addr)
+ {
+ if (CAN_SIGN_EXTEND_8_32(imm)) {
+ m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_AND, addr);
+ m_formatter.immediate8(imm);
+ } else {
+ m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_AND, addr);
+ m_formatter.immediate32(imm);
+ }
+ }
#endif
void notl_r(RegisterID dst)
@@ -390,6 +462,17 @@ public:
}
}
+ void orl_im(int imm, int offset, RegisterID base)
+ {
+ if (CAN_SIGN_EXTEND_8_32(imm)) {
+ m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_OR, base, offset);
+ m_formatter.immediate8(imm);
+ } else {
+ m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_OR, base, offset);
+ m_formatter.immediate32(imm);
+ }
+ }
+
#if PLATFORM(X86_64)
void orq_rr(RegisterID src, RegisterID dst)
{
@@ -406,6 +489,17 @@ public:
m_formatter.immediate32(imm);
}
}
+#else
+ void orl_im(int imm, void* addr)
+ {
+ if (CAN_SIGN_EXTEND_8_32(imm)) {
+ m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_OR, addr);
+ m_formatter.immediate8(imm);
+ } else {
+ m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_OR, addr);
+ m_formatter.immediate32(imm);
+ }
+ }
#endif
void subl_rr(RegisterID src, RegisterID dst)
@@ -441,6 +535,11 @@ public:
}
#if PLATFORM(X86_64)
+ void subq_rr(RegisterID src, RegisterID dst)
+ {
+ m_formatter.oneByteOp64(OP_SUB_EvGv, src, dst);
+ }
+
void subq_ir(int imm, RegisterID dst)
{
if (CAN_SIGN_EXTEND_8_32(imm)) {
@@ -634,6 +733,11 @@ public:
m_formatter.oneByteOp64(OP_CMP_EvGv, src, base, offset);
}
+ void cmpq_mr(int offset, RegisterID base, RegisterID src)
+ {
+ m_formatter.oneByteOp64(OP_CMP_GvEv, src, base, offset);
+ }
+
void cmpq_ir(int imm, RegisterID dst)
{
if (CAN_SIGN_EXTEND_8_32(imm)) {
@@ -690,6 +794,19 @@ public:
m_formatter.oneByteOp(OP_CMP_EvGv, src, base, index, scale, offset);
}
+ void cmpw_im(int imm, int offset, RegisterID base, RegisterID index, int scale)
+ {
+ if (CAN_SIGN_EXTEND_8_32(imm)) {
+ m_formatter.prefix(PRE_OPERAND_SIZE);
+ m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_CMP, base, index, scale, offset);
+ m_formatter.immediate8(imm);
+ } else {
+ m_formatter.prefix(PRE_OPERAND_SIZE);
+ m_formatter.oneByteOp(OP_GROUP1_EvIz, GROUP1_OP_CMP, base, index, scale, offset);
+ m_formatter.immediate16(imm);
+ }
+ }
+
void testl_rr(RegisterID src, RegisterID dst)
{
m_formatter.oneByteOp(OP_TEST_EvGv, src, dst);
@@ -738,15 +855,26 @@ public:
}
#endif
+ void testw_rr(RegisterID src, RegisterID dst)
+ {
+ m_formatter.prefix(PRE_OPERAND_SIZE);
+ m_formatter.oneByteOp(OP_TEST_EvGv, src, dst);
+ }
+
void testb_i8r(int imm, RegisterID dst)
{
m_formatter.oneByteOp8(OP_GROUP3_EbIb, GROUP3_OP_TEST, dst);
m_formatter.immediate8(imm);
}
+ void setCC_r(Condition cond, RegisterID dst)
+ {
+ m_formatter.twoByteOp8(setccOpcode(cond), (GroupOpcodeID)0, dst);
+ }
+
void sete_r(RegisterID dst)
{
- m_formatter.twoByteOp8(OP_SETE, (GroupOpcodeID)0, dst);
+ m_formatter.twoByteOp8(setccOpcode(ConditionE), (GroupOpcodeID)0, dst);
}
void setz_r(RegisterID dst)
@@ -756,7 +884,7 @@ public:
void setne_r(RegisterID dst)
{
- m_formatter.twoByteOp8(OP_SETNE, (GroupOpcodeID)0, dst);
+ m_formatter.twoByteOp8(setccOpcode(ConditionNE), (GroupOpcodeID)0, dst);
}
void setnz_r(RegisterID dst)
@@ -877,6 +1005,12 @@ public:
m_formatter.immediate64(reinterpret_cast<int64_t>(addr));
}
+ void movq_EAXm(void* addr)
+ {
+ m_formatter.oneByteOp64(OP_MOV_OvEAX);
+ m_formatter.immediate64(reinterpret_cast<int64_t>(addr));
+ }
+
void movq_mr(int offset, RegisterID base, RegisterID dst)
{
m_formatter.oneByteOp64(OP_MOV_GvEv, dst, base, offset);
@@ -892,6 +1026,12 @@ public:
m_formatter.oneByteOp64(OP_MOV_GvEv, dst, base, index, scale, offset);
}
+ void movq_i32m(int imm, int offset, RegisterID base)
+ {
+ m_formatter.oneByteOp64(OP_GROUP11_EvIz, GROUP11_MOV, base, offset);
+ m_formatter.immediate32(imm);
+ }
+
void movq_i64r(int64_t imm, RegisterID dst)
{
m_formatter.oneByteOp64(OP_MOV_EAXIv, dst);
@@ -905,6 +1045,14 @@ public:
#else
+ void movl_rm(RegisterID src, void* addr)
+ {
+ if (src == X86::eax)
+ movl_EAXm(addr);
+ else
+ m_formatter.oneByteOp(OP_MOV_EvGv, src, addr);
+ }
+
void movl_mr(void* addr, RegisterID dst)
{
if (dst == X86::eax)
@@ -942,6 +1090,12 @@ public:
{
m_formatter.oneByteOp(OP_LEA, dst, base, offset);
}
+#if PLATFORM(X86_64)
+ void leaq_mr(int offset, RegisterID base, RegisterID dst)
+ {
+ m_formatter.oneByteOp64(OP_LEA, dst, base, offset);
+ }
+#endif
// Flow control:
@@ -956,6 +1110,11 @@ public:
m_formatter.oneByteOp(OP_GROUP5_Ev, GROUP5_OP_CALLN, dst);
return JmpSrc(m_formatter.size());
}
+
+ void call_m(int offset, RegisterID base)
+ {
+ m_formatter.oneByteOp(OP_GROUP5_Ev, GROUP5_OP_CALLN, base, offset);
+ }
JmpSrc jmp()
{
@@ -963,9 +1122,13 @@ public:
return m_formatter.immediateRel32();
}
- void jmp_r(RegisterID dst)
+ // Return a JmpSrc so we have a label to the jump, so we can use this
+ // To make a tail recursive call on x86-64. The MacroAssembler
+ // really shouldn't wrap this as a Jump, since it can't be linked. :-/
+ JmpSrc jmp_r(RegisterID dst)
{
m_formatter.oneByteOp(OP_GROUP5_Ev, GROUP5_OP_JMPN, dst);
+ return JmpSrc(m_formatter.size());
}
void jmp_m(int offset, RegisterID base)
@@ -975,7 +1138,7 @@ public:
JmpSrc jne()
{
- m_formatter.twoByteOp(OP2_JNE_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionNE));
return m_formatter.immediateRel32();
}
@@ -986,73 +1149,79 @@ public:
JmpSrc je()
{
- m_formatter.twoByteOp(OP2_JE_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionE));
return m_formatter.immediateRel32();
}
JmpSrc jl()
{
- m_formatter.twoByteOp(OP2_JL_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionL));
return m_formatter.immediateRel32();
}
JmpSrc jb()
{
- m_formatter.twoByteOp(OP2_JB_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionB));
return m_formatter.immediateRel32();
}
JmpSrc jle()
{
- m_formatter.twoByteOp(OP2_JLE_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionLE));
return m_formatter.immediateRel32();
}
JmpSrc jbe()
{
- m_formatter.twoByteOp(OP2_JBE_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionBE));
return m_formatter.immediateRel32();
}
JmpSrc jge()
{
- m_formatter.twoByteOp(OP2_JGE_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionGE));
return m_formatter.immediateRel32();
}
JmpSrc jg()
{
- m_formatter.twoByteOp(OP2_JG_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionG));
return m_formatter.immediateRel32();
}
JmpSrc ja()
{
- m_formatter.twoByteOp(OP2_JA_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionA));
return m_formatter.immediateRel32();
}
JmpSrc jae()
{
- m_formatter.twoByteOp(OP2_JAE_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionAE));
return m_formatter.immediateRel32();
}
JmpSrc jo()
{
- m_formatter.twoByteOp(OP2_JO_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionO));
return m_formatter.immediateRel32();
}
JmpSrc jp()
{
- m_formatter.twoByteOp(OP2_JP_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionP));
return m_formatter.immediateRel32();
}
JmpSrc js()
{
- m_formatter.twoByteOp(OP2_JS_rel32);
+ m_formatter.twoByteOp(jccRel32(ConditionS));
+ return m_formatter.immediateRel32();
+ }
+
+ JmpSrc jCC(Condition cond)
+ {
+ m_formatter.twoByteOp(jccRel32(cond));
return m_formatter.immediateRel32();
}
@@ -1088,6 +1257,20 @@ public:
m_formatter.twoByteOp(OP2_MOVD_EdVd, (RegisterID)src, dst);
}
+#if PLATFORM(X86_64)
+ void movq_rr(XMMRegisterID src, RegisterID dst)
+ {
+ m_formatter.prefix(PRE_SSE_66);
+ m_formatter.twoByteOp64(OP2_MOVD_EdVd, (RegisterID)src, dst);
+ }
+
+ void movq_rr(RegisterID src, XMMRegisterID dst)
+ {
+ m_formatter.prefix(PRE_SSE_66);
+ m_formatter.twoByteOp64(OP2_MOVD_VdEd, (RegisterID)dst, src);
+ }
+#endif
+
void movsd_rm(XMMRegisterID src, int offset, RegisterID base)
{
m_formatter.prefix(PRE_SSE_F2);
@@ -1131,7 +1314,7 @@ public:
m_formatter.twoByteOp(OP2_SUBSD_VsdWsd, (RegisterID)dst, base, offset);
}
- void ucomis_rr(XMMRegisterID src, XMMRegisterID dst)
+ void ucomisd_rr(XMMRegisterID src, XMMRegisterID dst)
{
m_formatter.prefix(PRE_SSE_66);
m_formatter.twoByteOp(OP2_UCOMISD_VsdWsd, (RegisterID)dst, (RegisterID)src);
@@ -1170,31 +1353,95 @@ public:
}
// Linking & patching:
+ //
+ // 'link' and 'patch' methods are for use on unprotected code - such as the code
+ // within the AssemblerBuffer, and code being patched by the patch buffer. Once
+ // code has been finalized it is (platform support permitting) within a non-
+ // writable region of memory; to modify the code in an execute-only execuable
+ // pool the 'repatch' and 'relink' methods should be used.
- void link(JmpSrc from, JmpDst to)
+ void linkJump(JmpSrc from, JmpDst to)
{
- ASSERT(to.m_offset != -1);
ASSERT(from.m_offset != -1);
-
- reinterpret_cast<int*>(reinterpret_cast<ptrdiff_t>(m_formatter.data()) + from.m_offset)[-1] = to.m_offset - from.m_offset;
+ ASSERT(to.m_offset != -1);
+
+ char* code = reinterpret_cast<char*>(m_formatter.data());
+ patchRel32(code + from.m_offset, code + to.m_offset);
}
- static void patchAddress(void* code, JmpDst position, void* value)
+ static void linkJump(void* code, JmpSrc from, void* to)
{
- ASSERT(position.m_offset != -1);
-
- reinterpret_cast<void**>(reinterpret_cast<ptrdiff_t>(code) + position.m_offset)[-1] = value;
+ ASSERT(from.m_offset != -1);
+
+ patchRel32(reinterpret_cast<char*>(code) + from.m_offset, to);
}
-
- static void link(void* code, JmpSrc from, void* to)
+
+ static void linkCall(void* code, JmpSrc from, void* to)
{
ASSERT(from.m_offset != -1);
-
- reinterpret_cast<int*>(reinterpret_cast<ptrdiff_t>(code) + from.m_offset)[-1] = reinterpret_cast<ptrdiff_t>(to) - (reinterpret_cast<ptrdiff_t>(code) + from.m_offset);
+
+ patchRel32(reinterpret_cast<char*>(code) + from.m_offset, to);
+ }
+
+#if PLATFORM(X86_64)
+ static void patchPointerForCall(void* where, void* value)
+ {
+ reinterpret_cast<void**>(where)[-1] = value;
+ }
+#endif
+
+ static void patchPointer(void* code, JmpDst where, void* value)
+ {
+ ASSERT(where.m_offset != -1);
+
+ patchPointer(reinterpret_cast<char*>(code) + where.m_offset, value);
+ }
+
+ static void relinkJump(void* from, void* to)
+ {
+ ExecutableAllocator::MakeWritable unprotect(reinterpret_cast<char*>(from) - sizeof(int32_t), sizeof(int32_t));
+ patchRel32(from, to);
}
+ static void relinkCall(void* from, void* to)
+ {
+ ExecutableAllocator::MakeWritable unprotect(reinterpret_cast<char*>(from) - sizeof(int32_t), sizeof(int32_t));
+ patchRel32(from, to);
+ }
+
+ static void repatchInt32(void* where, int32_t value)
+ {
+ ExecutableAllocator::MakeWritable unprotect(reinterpret_cast<char*>(where) - sizeof(int32_t), sizeof(int32_t));
+ patchInt32(where, value);
+ }
+
+ static void repatchPointer(void* where, void* value)
+ {
+ ExecutableAllocator::MakeWritable unprotect(reinterpret_cast<char*>(where) - sizeof(void*), sizeof(void*));
+ patchPointer(where, value);
+ }
+
+ static void repatchLoadPtrToLEA(void* where)
+ {
+#if PLATFORM(X86_64)
+ // On x86-64 pointer memory accesses require a 64-bit operand, and as such a REX prefix.
+ // Skip over the prefix byte.
+ where = reinterpret_cast<char*>(where) + 1;
+#endif
+ ExecutableAllocator::MakeWritable unprotect(where, 1);
+ *reinterpret_cast<unsigned char*>(where) = static_cast<unsigned char>(OP_LEA);
+ }
+
+ static unsigned getCallReturnOffset(JmpSrc call)
+ {
+ ASSERT(call.m_offset >= 0);
+ return call.m_offset;
+ }
+
static void* getRelocatedAddress(void* code, JmpSrc jump)
{
+ ASSERT(jump.m_offset != -1);
+
return reinterpret_cast<void*>(reinterpret_cast<ptrdiff_t>(code) + jump.m_offset);
}
@@ -1220,23 +1467,6 @@ public:
return dst.m_offset - src.m_offset;
}
- static void patchImmediate(intptr_t where, int32_t value)
- {
- reinterpret_cast<int32_t*>(where)[-1] = value;
- }
-
- static void patchPointer(intptr_t where, intptr_t value)
- {
- reinterpret_cast<intptr_t*>(where)[-1] = value;
- }
-
- static void patchBranchOffset(intptr_t where, void* destination)
- {
- intptr_t offset = reinterpret_cast<intptr_t>(destination) - where;
- ASSERT(offset == static_cast<int32_t>(offset));
- reinterpret_cast<int32_t*>(where)[-1] = static_cast<int32_t>(offset);
- }
-
void* executableCopy(ExecutablePool* allocator)
{
void* copy = m_formatter.executableCopy(allocator);
@@ -1246,6 +1476,24 @@ public:
private:
+ static void patchPointer(void* where, void* value)
+ {
+ reinterpret_cast<void**>(where)[-1] = value;
+ }
+
+ static void patchInt32(void* where, int32_t value)
+ {
+ reinterpret_cast<int32_t*>(where)[-1] = value;
+ }
+
+ static void patchRel32(void* from, void* to)
+ {
+ intptr_t offset = reinterpret_cast<intptr_t>(to) - reinterpret_cast<intptr_t>(from);
+ ASSERT(offset == static_cast<int32_t>(offset));
+
+ patchInt32(from, offset);
+ }
+
class X86InstructionFormatter {
static const int maxInstructionSize = 16;
@@ -1415,6 +1663,15 @@ private:
m_buffer.putByteUnchecked(opcode);
memoryModRM(reg, base, index, scale, offset);
}
+
+ void twoByteOp64(TwoByteOpcodeID opcode, int reg, RegisterID rm)
+ {
+ m_buffer.ensureSpace(maxInstructionSize);
+ emitRexW(reg, 0, rm);
+ m_buffer.putByteUnchecked(OP_2BYTE_ESCAPE);
+ m_buffer.putByteUnchecked(opcode);
+ registerModRM(reg, rm);
+ }
#endif
// Byte-operands:
@@ -1478,6 +1735,11 @@ private:
m_buffer.putByteUnchecked(imm);
}
+ void immediate16(int imm)
+ {
+ m_buffer.putShortUnchecked(imm);
+ }
+
void immediate32(int imm)
{
m_buffer.putIntUnchecked(imm);
@@ -1572,13 +1834,8 @@ private:
{
ASSERT(mode != ModRmRegister);
- // Encode sacle of (1,2,4,8) -> (0,1,2,3)
- int shift = 0;
- while (scale >>= 1)
- shift++;
-
putModRm(mode, reg, hasSib);
- m_buffer.putByteUnchecked((shift << 6) | ((index & 7) << 3) | (base & 7));
+ m_buffer.putByteUnchecked((scale << 6) | ((index & 7) << 3) | (base & 7));
}
void registerModRM(int reg, RegisterID rm)
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp
index 9207c8a..d2b122a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp
@@ -55,15 +55,15 @@ static UString escapeQuotes(const UString& str)
return result;
}
-static UString valueToSourceString(ExecState* exec, JSValuePtr val)
+static UString valueToSourceString(ExecState* exec, JSValue val)
{
- if (val->isString()) {
+ if (val.isString()) {
UString result("\"");
- result += escapeQuotes(val->toString(exec)) + "\"";
+ result += escapeQuotes(val.toString(exec)) + "\"";
return result;
}
- return val->toString(exec);
+ return val.toString(exec);
}
static CString registerName(int r)
@@ -74,7 +74,7 @@ static CString registerName(int r)
return (UString("r") + UString::from(r)).UTF8String();
}
-static CString constantName(ExecState* exec, int k, JSValuePtr value)
+static CString constantName(ExecState* exec, int k, JSValue value)
{
return (valueToSourceString(exec, value) + "(@k" + UString::from(k) + ")").UTF8String();
}
@@ -357,7 +357,7 @@ void CodeBlock::dump(ExecState* exec) const
unsigned registerIndex = m_numVars;
size_t i = 0;
do {
- printf(" r%u = %s\n", registerIndex, valueToSourceString(exec, m_constantRegisters[i].jsValue(exec)).ascii());
+ printf(" r%u = %s\n", registerIndex, valueToSourceString(exec, m_constantRegisters[i].jsValue()).ascii());
++i;
++registerIndex;
} while (i < m_constantRegisters.size());
@@ -497,6 +497,10 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
printf("[%4d] create_arguments\n", location);
break;
}
+ case op_init_arguments: {
+ printf("[%4d] init_arguments\n", location);
+ break;
+ }
case op_convert_this: {
int r0 = (++it)->u.operand;
printf("[%4d] convert_this %s\n", location, registerName(r0).c_str());
@@ -703,7 +707,7 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
}
case op_resolve_global: {
int r0 = (++it)->u.operand;
- JSValuePtr scope = JSValuePtr((++it)->u.jsCell);
+ JSValue scope = JSValue((++it)->u.jsCell);
int id0 = (++it)->u.operand;
printf("[%4d] resolve_global\t %s, %s, %s\n", location, registerName(r0).c_str(), valueToSourceString(exec, scope).ascii(), idName(id0, m_identifiers[id0]).c_str());
it += 2;
@@ -724,15 +728,14 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
break;
}
case op_get_global_var: {
- int r0 = it[1].u.operand;
- JSValuePtr scope = JSValuePtr(it[2].u.jsCell);
- int index = it[3].u.operand;
+ int r0 = (++it)->u.operand;
+ JSValue scope = JSValue((++it)->u.jsCell);
+ int index = (++it)->u.operand;
printf("[%4d] get_global_var\t %s, %s, %d\n", location, registerName(r0).c_str(), valueToSourceString(exec, scope).ascii(), index);
- it += OPCODE_LENGTH(op_get_global_var);
break;
}
case op_put_global_var: {
- JSValuePtr scope = JSValuePtr((++it)->u.jsCell);
+ JSValue scope = JSValue((++it)->u.jsCell);
int index = (++it)->u.operand;
int r0 = (++it)->u.operand;
printf("[%4d] put_global_var\t %s, %d, %s\n", location, valueToSourceString(exec, scope).ascii(), index, registerName(r0).c_str());
@@ -824,6 +827,10 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
printf("[%4d] put_setter\t %s, %s, %s\n", location, registerName(r0).c_str(), idName(id0, m_identifiers[id0]).c_str(), registerName(r1).c_str());
break;
}
+ case op_method_check: {
+ printf("[%4d] op_method_check\n", location);
+ break;
+ }
case op_del_by_id: {
int r0 = (++it)->u.operand;
int r1 = (++it)->u.operand;
@@ -889,6 +896,13 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
printConditionalJump(begin, it, location, "jneq_null");
break;
}
+ case op_jneq_ptr: {
+ int r0 = (++it)->u.operand;
+ int r1 = (++it)->u.operand;
+ int offset = (++it)->u.operand;
+ printf("[%4d] jneq_ptr\t\t %s, %s, %d(->%d)\n", location, registerName(r0).c_str(), registerName(r1).c_str(), offset, locationForOffset(begin, it, offset));
+ break;
+ }
case op_jnless: {
int r0 = (++it)->u.operand;
int r1 = (++it)->u.operand;
@@ -896,6 +910,13 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
printf("[%4d] jnless\t\t %s, %s, %d(->%d)\n", location, registerName(r0).c_str(), registerName(r1).c_str(), offset, locationForOffset(begin, it, offset));
break;
}
+ case op_jnlesseq: {
+ int r0 = (++it)->u.operand;
+ int r1 = (++it)->u.operand;
+ int offset = (++it)->u.operand;
+ printf("[%4d] jnlesseq\t\t %s, %s, %d(->%d)\n", location, registerName(r0).c_str(), registerName(r1).c_str(), offset, locationForOffset(begin, it, offset));
+ break;
+ }
case op_loop_if_less: {
int r0 = (++it)->u.operand;
int r1 = (++it)->u.operand;
@@ -959,6 +980,18 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
printf("[%4d] call_eval\t %s, %s, %d, %d\n", location, registerName(dst).c_str(), registerName(func).c_str(), argCount, registerOffset);
break;
}
+ case op_call_varargs: {
+ int dst = (++it)->u.operand;
+ int func = (++it)->u.operand;
+ int argCount = (++it)->u.operand;
+ int registerOffset = (++it)->u.operand;
+ printf("[%4d] call_varargs\t %s, %s, %s, %d\n", location, registerName(dst).c_str(), registerName(func).c_str(), registerName(argCount).c_str(), registerOffset);
+ break;
+ }
+ case op_load_varargs: {
+ printUnaryOp(location, it, "load_varargs");
+ break;
+ }
case op_tear_off_activation: {
int r0 = (++it)->u.operand;
printf("[%4d] tear_off_activation\t %s\n", location, registerName(r0).c_str());
@@ -989,6 +1022,19 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
printf("[%4d] construct_verify\t %s, %s\n", location, registerName(r0).c_str(), registerName(r1).c_str());
break;
}
+ case op_strcat: {
+ int r0 = (++it)->u.operand;
+ int r1 = (++it)->u.operand;
+ int count = (++it)->u.operand;
+ printf("[%4d] op_strcat\t %s, %s, %d\n", location, registerName(r0).c_str(), registerName(r1).c_str(), count);
+ break;
+ }
+ case op_to_primitive: {
+ int r0 = (++it)->u.operand;
+ int r1 = (++it)->u.operand;
+ printf("[%4d] op_to_primitive\t %s, %s\n", location, registerName(r0).c_str(), registerName(r1).c_str());
+ break;
+ }
case op_get_pnames: {
int r0 = (++it)->u.operand;
int r1 = (++it)->u.operand;
@@ -1091,8 +1137,7 @@ static HashSet<CodeBlock*> liveCodeBlockSet;
macro(linkedCallerList) \
macro(identifiers) \
macro(functionExpressions) \
- macro(constantRegisters) \
- macro(pcVector)
+ macro(constantRegisters)
#define FOR_EACH_MEMBER_VECTOR_RARE_DATA(macro) \
macro(regexps) \
@@ -1107,7 +1152,8 @@ static HashSet<CodeBlock*> liveCodeBlockSet;
#define FOR_EACH_MEMBER_VECTOR_EXCEPTION_INFO(macro) \
macro(expressionInfo) \
macro(lineInfo) \
- macro(getByIdExceptionInfo)
+ macro(getByIdExceptionInfo) \
+ macro(pcVector)
template<typename T>
static size_t sizeInBytes(const Vector<T>& vector)
@@ -1232,6 +1278,7 @@ CodeBlock::CodeBlock(ScopeNode* ownerNode, CodeType codeType, PassRefPtr<SourceP
#endif
, m_needsFullScopeChain(ownerNode->needsActivation())
, m_usesEval(ownerNode->usesEval())
+ , m_isNumericCompareFunction(false)
, m_codeType(codeType)
, m_source(sourceProvider)
, m_sourceOffset(sourceOffset)
@@ -1267,6 +1314,11 @@ CodeBlock::~CodeBlock()
callLinkInfo->callee->removeCaller(callLinkInfo);
}
+ for (size_t size = m_methodCallLinkInfos.size(), i = 0; i < size; ++i) {
+ if (Structure* structure = m_methodCallLinkInfos[i].cachedStructure)
+ structure->deref();
+ }
+
unlinkCallers();
#endif
@@ -1380,9 +1432,10 @@ void CodeBlock::mark()
m_rareData->m_functions[i]->body()->mark();
for (size_t i = 0; i < m_rareData->m_unexpectedConstants.size(); ++i) {
- if (!m_rareData->m_unexpectedConstants[i]->marked())
- m_rareData->m_unexpectedConstants[i]->mark();
+ if (!m_rareData->m_unexpectedConstants[i].marked())
+ m_rareData->m_unexpectedConstants[i].mark();
}
+ m_rareData->m_evalCodeCache.mark();
}
}
@@ -1392,6 +1445,17 @@ void CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame)
return;
ScopeChainNode* scopeChain = callFrame->scopeChain();
+ if (m_needsFullScopeChain) {
+ ScopeChain sc(scopeChain);
+ int scopeDelta = sc.localDepth();
+ if (m_codeType == EvalCode)
+ scopeDelta -= static_cast<EvalCodeBlock*>(this)->baseScopeDepth();
+ else if (m_codeType == FunctionCode)
+ scopeDelta++; // Compilation of function code assumes activation is not on the scope chain yet.
+ ASSERT(scopeDelta >= 0);
+ while (scopeDelta--)
+ scopeChain = scopeChain->next;
+ }
switch (m_codeType) {
case FunctionCode: {
@@ -1399,19 +1463,43 @@ void CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame)
RefPtr<FunctionBodyNode> newFunctionBody = m_globalData->parser->reparse<FunctionBodyNode>(m_globalData, ownerFunctionBodyNode);
ASSERT(newFunctionBody);
newFunctionBody->finishParsing(ownerFunctionBodyNode->copyParameters(), ownerFunctionBodyNode->parameterCount());
- CodeBlock& newCodeBlock = newFunctionBody->bytecodeForExceptionInfoReparse(scopeChain);
+
+ m_globalData->scopeNodeBeingReparsed = newFunctionBody.get();
+
+ CodeBlock& newCodeBlock = newFunctionBody->bytecodeForExceptionInfoReparse(scopeChain, this);
ASSERT(newCodeBlock.m_exceptionInfo);
ASSERT(newCodeBlock.m_instructionCount == m_instructionCount);
+
+#if ENABLE(JIT)
+ JIT::compile(m_globalData, &newCodeBlock);
+ ASSERT(newFunctionBody->generatedJITCode().size() == ownerNode()->generatedJITCode().size());
+#endif
+
m_exceptionInfo.set(newCodeBlock.m_exceptionInfo.release());
+
+ m_globalData->scopeNodeBeingReparsed = 0;
+
break;
}
case EvalCode: {
EvalNode* ownerEvalNode = static_cast<EvalNode*>(m_ownerNode);
RefPtr<EvalNode> newEvalBody = m_globalData->parser->reparse<EvalNode>(m_globalData, ownerEvalNode);
- EvalCodeBlock& newCodeBlock = newEvalBody->bytecodeForExceptionInfoReparse(scopeChain);
+
+ m_globalData->scopeNodeBeingReparsed = newEvalBody.get();
+
+ EvalCodeBlock& newCodeBlock = newEvalBody->bytecodeForExceptionInfoReparse(scopeChain, this);
ASSERT(newCodeBlock.m_exceptionInfo);
ASSERT(newCodeBlock.m_instructionCount == m_instructionCount);
+
+#if ENABLE(JIT)
+ JIT::compile(m_globalData, &newCodeBlock);
+ ASSERT(newEvalBody->generatedJITCode().size() == ownerNode()->generatedJITCode().size());
+#endif
+
m_exceptionInfo.set(newCodeBlock.m_exceptionInfo.release());
+
+ m_globalData->scopeNodeBeingReparsed = 0;
+
break;
}
default:
@@ -1554,10 +1642,54 @@ bool CodeBlock::functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int&
functionRegisterIndex = m_rareData->m_functionRegisterInfos[low - 1].functionRegisterIndex;
return true;
}
+#endif
+
+#if !ENABLE(JIT)
+bool CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOffset)
+{
+ if (m_globalResolveInstructions.isEmpty())
+ return false;
+
+ int low = 0;
+ int high = m_globalResolveInstructions.size();
+ while (low < high) {
+ int mid = low + (high - low) / 2;
+ if (m_globalResolveInstructions[mid] <= bytecodeOffset)
+ low = mid + 1;
+ else
+ high = mid;
+ }
-void CodeBlock::setJITCode(JITCodeRef& jitCode)
+ if (!low || m_globalResolveInstructions[low - 1] != bytecodeOffset)
+ return false;
+ return true;
+}
+#else
+bool CodeBlock::hasGlobalResolveInfoAtBytecodeOffset(unsigned bytecodeOffset)
+{
+ if (m_globalResolveInfos.isEmpty())
+ return false;
+
+ int low = 0;
+ int high = m_globalResolveInfos.size();
+ while (low < high) {
+ int mid = low + (high - low) / 2;
+ if (m_globalResolveInfos[mid].bytecodeOffset <= bytecodeOffset)
+ low = mid + 1;
+ else
+ high = mid;
+ }
+
+ if (!low || m_globalResolveInfos[low - 1].bytecodeOffset != bytecodeOffset)
+ return false;
+ return true;
+}
+#endif
+
+#if ENABLE(JIT)
+void CodeBlock::setJITCode(JITCode jitCode)
{
- m_jitCode = jitCode;
+ ownerNode()->setJITCode(jitCode);
#if !ENABLE(OPCODE_SAMPLING)
if (!BytecodeGenerator::dumpsGeneratedCode())
m_instructions.clear();
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h
index 517bd27..ac29c6c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h
@@ -32,6 +32,7 @@
#include "EvalCodeCache.h"
#include "Instruction.h"
+#include "JITCode.h"
#include "JSGlobalObject.h"
#include "JumpTable.h"
#include "Nodes.h"
@@ -58,29 +59,10 @@ namespace JSC {
uint32_t target;
uint32_t scopeDepth;
#if ENABLE(JIT)
- void* nativeCode;
+ MacroAssembler::CodeLocationLabel nativeCode;
#endif
};
-#if ENABLE(JIT)
- // The code, and the associated pool from which it was allocated.
- struct JITCodeRef {
- void* code;
- RefPtr<ExecutablePool> executablePool;
-
- JITCodeRef()
- : code(0)
- {
- }
-
- JITCodeRef(void* code, PassRefPtr<ExecutablePool> executablePool)
- : code(code)
- , executablePool(executablePool)
- {
- }
- };
-#endif
-
struct ExpressionRangeInfo {
enum {
MaxOffset = (1 << 7) - 1,
@@ -108,19 +90,15 @@ namespace JSC {
#if ENABLE(JIT)
struct CallLinkInfo {
CallLinkInfo()
- : callReturnLocation(0)
- , hotPathBegin(0)
- , hotPathOther(0)
- , coldPathOther(0)
- , callee(0)
+ : callee(0)
{
}
unsigned bytecodeIndex;
- void* callReturnLocation;
- void* hotPathBegin;
- void* hotPathOther;
- void* coldPathOther;
+ MacroAssembler::CodeLocationNearCall callReturnLocation;
+ MacroAssembler::CodeLocationDataLabelPtr hotPathBegin;
+ MacroAssembler::CodeLocationNearCall hotPathOther;
+ MacroAssembler::CodeLocationLabel coldPathOther;
CodeBlock* callee;
unsigned position;
@@ -128,6 +106,17 @@ namespace JSC {
bool isLinked() { return callee; }
};
+ struct MethodCallLinkInfo {
+ MethodCallLinkInfo()
+ : cachedStructure(0)
+ {
+ }
+
+ MacroAssembler::CodeLocationCall callReturnLocation;
+ MacroAssembler::CodeLocationDataLabelPtr structureLabel;
+ Structure* cachedStructure;
+ };
+
struct FunctionRegisterInfo {
FunctionRegisterInfo(unsigned bytecodeOffset, int functionRegisterIndex)
: bytecodeOffset(bytecodeOffset)
@@ -140,24 +129,30 @@ namespace JSC {
};
struct GlobalResolveInfo {
- GlobalResolveInfo()
+ GlobalResolveInfo(unsigned bytecodeOffset)
: structure(0)
, offset(0)
+ , bytecodeOffset(bytecodeOffset)
{
}
Structure* structure;
unsigned offset;
+ unsigned bytecodeOffset;
};
- struct PC {
- PC(ptrdiff_t nativePCOffset, unsigned bytecodeIndex)
- : nativePCOffset(nativePCOffset)
+ // This structure is used to map from a call return location
+ // (given as an offset in bytes into the JIT code) back to
+ // the bytecode index of the corresponding bytecode operation.
+ // This is then used to look up the corresponding handler.
+ struct CallReturnOffsetToBytecodeIndex {
+ CallReturnOffsetToBytecodeIndex(unsigned callReturnOffset, unsigned bytecodeIndex)
+ : callReturnOffset(callReturnOffset)
, bytecodeIndex(bytecodeIndex)
{
}
- ptrdiff_t nativePCOffset;
+ unsigned callReturnOffset;
unsigned bytecodeIndex;
};
@@ -165,17 +160,22 @@ namespace JSC {
inline void* getStructureStubInfoReturnLocation(StructureStubInfo* structureStubInfo)
{
- return structureStubInfo->callReturnLocation;
+ return structureStubInfo->callReturnLocation.calleeReturnAddressValue();
}
inline void* getCallLinkInfoReturnLocation(CallLinkInfo* callLinkInfo)
{
- return callLinkInfo->callReturnLocation;
+ return callLinkInfo->callReturnLocation.calleeReturnAddressValue();
+ }
+
+ inline void* getMethodCallLinkInfoReturnLocation(MethodCallLinkInfo* methodCallLinkInfo)
+ {
+ return methodCallLinkInfo->callReturnLocation.calleeReturnAddressValue();
}
- inline ptrdiff_t getNativePCOffset(PC* pc)
+ inline unsigned getCallReturnOffset(CallReturnOffsetToBytecodeIndex* pc)
{
- return pc->nativePCOffset;
+ return pc->callReturnOffset;
}
// Binary chop algorithm, calls valueAtPosition on pre-sorted elements in array,
@@ -242,7 +242,7 @@ namespace JSC {
return true;
if (isConstantRegisterIndex(index))
- return !JSImmediate::isImmediate(getConstant(index));
+ return getConstant(index).isCell();
return false;
}
@@ -252,9 +252,9 @@ namespace JSC {
return index >= m_numVars && index < m_numVars + m_numConstants;
}
- ALWAYS_INLINE JSValuePtr getConstant(int index)
+ ALWAYS_INLINE JSValue getConstant(int index)
{
- return m_constantRegisters[index - m_numVars].getJSValue();
+ return m_constantRegisters[index - m_numVars].jsValue();
}
ALWAYS_INLINE bool isTemporaryRegisterIndex(int index)
@@ -297,24 +297,31 @@ namespace JSC {
return *(binaryChop<CallLinkInfo, void*, getCallLinkInfoReturnLocation>(m_callLinkInfos.begin(), m_callLinkInfos.size(), returnAddress));
}
- unsigned getBytecodeIndex(void* nativePC)
+ MethodCallLinkInfo& getMethodCallLinkInfo(void* returnAddress)
{
- ptrdiff_t nativePCOffset = reinterpret_cast<void**>(nativePC) - reinterpret_cast<void**>(m_jitCode.code);
- return binaryChop<PC, ptrdiff_t, getNativePCOffset>(m_pcVector.begin(), m_pcVector.size(), nativePCOffset)->bytecodeIndex;
+ return *(binaryChop<MethodCallLinkInfo, void*, getMethodCallLinkInfoReturnLocation>(m_methodCallLinkInfos.begin(), m_methodCallLinkInfos.size(), returnAddress));
}
+ unsigned getBytecodeIndex(CallFrame* callFrame, void* nativePC)
+ {
+ reparseForExceptionInfoIfNecessary(callFrame);
+ return binaryChop<CallReturnOffsetToBytecodeIndex, unsigned, getCallReturnOffset>(m_exceptionInfo->m_callReturnIndexVector.begin(), m_exceptionInfo->m_callReturnIndexVector.size(), ownerNode()->generatedJITCode().offsetOf(nativePC))->bytecodeIndex;
+ }
+
bool functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int& functionRegisterIndex);
#endif
+ void setIsNumericCompareFunction(bool isNumericCompareFunction) { m_isNumericCompareFunction = isNumericCompareFunction; }
+ bool isNumericCompareFunction() { return m_isNumericCompareFunction; }
+
Vector<Instruction>& instructions() { return m_instructions; }
#ifndef NDEBUG
void setInstructionCount(unsigned instructionCount) { m_instructionCount = instructionCount; }
#endif
#if ENABLE(JIT)
- void setJITCode(JITCodeRef& jitCode);
- void* jitCode() { return m_jitCode.code; }
- ExecutablePool* executablePool() { return m_jitCode.executablePool.get(); }
+ void setJITCode(JITCode);
+ ExecutablePool* executablePool() { return ownerNode()->getExecutablePool(); }
#endif
ScopeNode* ownerNode() const { return m_ownerNode; }
@@ -343,22 +350,25 @@ namespace JSC {
#if !ENABLE(JIT)
void addPropertyAccessInstruction(unsigned propertyAccessInstruction) { m_propertyAccessInstructions.append(propertyAccessInstruction); }
- void addGlobalResolveInstruction(unsigned globalResolveInstructions) { m_globalResolveInstructions.append(globalResolveInstructions); }
+ void addGlobalResolveInstruction(unsigned globalResolveInstruction) { m_globalResolveInstructions.append(globalResolveInstruction); }
+ bool hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOffset);
#else
size_t numberOfStructureStubInfos() const { return m_structureStubInfos.size(); }
void addStructureStubInfo(const StructureStubInfo& stubInfo) { m_structureStubInfos.append(stubInfo); }
StructureStubInfo& structureStubInfo(int index) { return m_structureStubInfos[index]; }
- void addGlobalResolveInfo() { m_globalResolveInfos.append(GlobalResolveInfo()); }
+ void addGlobalResolveInfo(unsigned globalResolveInstruction) { m_globalResolveInfos.append(GlobalResolveInfo(globalResolveInstruction)); }
GlobalResolveInfo& globalResolveInfo(int index) { return m_globalResolveInfos[index]; }
+ bool hasGlobalResolveInfoAtBytecodeOffset(unsigned bytecodeOffset);
size_t numberOfCallLinkInfos() const { return m_callLinkInfos.size(); }
void addCallLinkInfo() { m_callLinkInfos.append(CallLinkInfo()); }
CallLinkInfo& callLinkInfo(int index) { return m_callLinkInfos[index]; }
- void addFunctionRegisterInfo(unsigned bytecodeOffset, int functionIndex) { createRareDataIfNecessary(); m_rareData->m_functionRegisterInfos.append(FunctionRegisterInfo(bytecodeOffset, functionIndex)); }
+ void addMethodCallLinkInfos(unsigned n) { m_methodCallLinkInfos.grow(n); }
+ MethodCallLinkInfo& methodCallLinkInfo(int index) { return m_methodCallLinkInfos[index]; }
- Vector<PC>& pcVector() { return m_pcVector; }
+ void addFunctionRegisterInfo(unsigned bytecodeOffset, int functionIndex) { createRareDataIfNecessary(); m_rareData->m_functionRegisterInfos.append(FunctionRegisterInfo(bytecodeOffset, functionIndex)); }
#endif
// Exception handling support
@@ -367,6 +377,7 @@ namespace JSC {
void addExceptionHandler(const HandlerInfo& hanler) { createRareDataIfNecessary(); return m_rareData->m_exceptionHandlers.append(hanler); }
HandlerInfo& exceptionHandler(int index) { ASSERT(m_rareData); return m_rareData->m_exceptionHandlers[index]; }
+ bool hasExceptionInfo() const { return m_exceptionInfo; }
void clearExceptionInfo() { m_exceptionInfo.clear(); }
void addExpressionInfo(const ExpressionRangeInfo& expressionInfo) { ASSERT(m_exceptionInfo); m_exceptionInfo->m_expressionInfo.append(expressionInfo); }
@@ -376,6 +387,10 @@ namespace JSC {
void addLineInfo(const LineInfo& lineInfo) { ASSERT(m_exceptionInfo); m_exceptionInfo->m_lineInfo.append(lineInfo); }
LineInfo& lastLineInfo() { ASSERT(m_exceptionInfo); return m_exceptionInfo->m_lineInfo.last(); }
+#if ENABLE(JIT)
+ Vector<CallReturnOffsetToBytecodeIndex>& callReturnIndexVector() { ASSERT(m_exceptionInfo); return m_exceptionInfo->m_callReturnIndexVector; }
+#endif
+
// Constant Pool
size_t numberOfIdentifiers() const { return m_identifiers.size(); }
@@ -392,8 +407,10 @@ namespace JSC {
unsigned addFunction(FuncDeclNode* n) { createRareDataIfNecessary(); unsigned size = m_rareData->m_functions.size(); m_rareData->m_functions.append(n); return size; }
FuncDeclNode* function(int index) const { ASSERT(m_rareData); return m_rareData->m_functions[index].get(); }
- unsigned addUnexpectedConstant(JSValuePtr v) { createRareDataIfNecessary(); unsigned size = m_rareData->m_unexpectedConstants.size(); m_rareData->m_unexpectedConstants.append(v); return size; }
- JSValuePtr unexpectedConstant(int index) const { ASSERT(m_rareData); return m_rareData->m_unexpectedConstants[index]; }
+ bool hasFunctions() const { return m_functionExpressions.size() || (m_rareData && m_rareData->m_functions.size()); }
+
+ unsigned addUnexpectedConstant(JSValue v) { createRareDataIfNecessary(); unsigned size = m_rareData->m_unexpectedConstants.size(); m_rareData->m_unexpectedConstants.append(v); return size; }
+ JSValue unexpectedConstant(int index) const { ASSERT(m_rareData); return m_rareData->m_unexpectedConstants[index]; }
unsigned addRegExp(RegExp* r) { createRareDataIfNecessary(); unsigned size = m_rareData->m_regexps.size(); m_rareData->m_regexps.append(r); return size; }
RegExp* regexp(int index) const { ASSERT(m_rareData); return m_rareData->m_regexps[index].get(); }
@@ -451,15 +468,13 @@ namespace JSC {
#ifndef NDEBUG
unsigned m_instructionCount;
#endif
-#if ENABLE(JIT)
- JITCodeRef m_jitCode;
-#endif
int m_thisRegister;
bool m_needsFullScopeChain;
bool m_usesEval;
bool m_usesArguments;
+ bool m_isNumericCompareFunction;
CodeType m_codeType;
@@ -473,9 +488,8 @@ namespace JSC {
Vector<StructureStubInfo> m_structureStubInfos;
Vector<GlobalResolveInfo> m_globalResolveInfos;
Vector<CallLinkInfo> m_callLinkInfos;
+ Vector<MethodCallLinkInfo> m_methodCallLinkInfos;
Vector<CallLinkInfo*> m_linkedCallerList;
-
- Vector<PC> m_pcVector;
#endif
Vector<unsigned> m_jumpTargets;
@@ -491,6 +505,10 @@ namespace JSC {
Vector<ExpressionRangeInfo> m_expressionInfo;
Vector<LineInfo> m_lineInfo;
Vector<GetByIdExceptionInfo> m_getByIdExceptionInfo;
+
+#if ENABLE(JIT)
+ Vector<CallReturnOffsetToBytecodeIndex> m_callReturnIndexVector;
+#endif
};
OwnPtr<ExceptionInfo> m_exceptionInfo;
@@ -499,7 +517,7 @@ namespace JSC {
// Rare Constants
Vector<RefPtr<FuncDeclNode> > m_functions;
- Vector<JSValuePtr> m_unexpectedConstants;
+ Vector<JSValue> m_unexpectedConstants;
Vector<RefPtr<RegExp> > m_regexps;
// Jump Tables
@@ -542,10 +560,16 @@ namespace JSC {
class EvalCodeBlock : public ProgramCodeBlock {
public:
- EvalCodeBlock(ScopeNode* ownerNode, JSGlobalObject* globalObject, PassRefPtr<SourceProvider> sourceProvider)
+ EvalCodeBlock(ScopeNode* ownerNode, JSGlobalObject* globalObject, PassRefPtr<SourceProvider> sourceProvider, int baseScopeDepth)
: ProgramCodeBlock(ownerNode, EvalCode, globalObject, sourceProvider)
+ , m_baseScopeDepth(baseScopeDepth)
{
}
+
+ int baseScopeDepth() const { return m_baseScopeDepth; }
+
+ private:
+ int m_baseScopeDepth;
};
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/EvalCodeCache.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/EvalCodeCache.h
index 29be295..f0ce73e 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecode/EvalCodeCache.h
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/EvalCodeCache.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -41,7 +41,7 @@ namespace JSC {
class EvalCodeCache {
public:
- PassRefPtr<EvalNode> get(ExecState* exec, const UString& evalSource, ScopeChainNode* scopeChain, JSValuePtr& exceptionValue)
+ PassRefPtr<EvalNode> get(ExecState* exec, const UString& evalSource, ScopeChainNode* scopeChain, JSValue& exceptionValue)
{
RefPtr<EvalNode> evalNode;
@@ -68,11 +68,18 @@ namespace JSC {
bool isEmpty() const { return m_cacheMap.isEmpty(); }
+ void mark()
+ {
+ EvalCacheMap::iterator end = m_cacheMap.end();
+ for (EvalCacheMap::iterator ptr = m_cacheMap.begin(); ptr != end; ++ptr)
+ ptr->second->mark();
+ }
private:
static const int maxCacheableSourceLength = 256;
static const int maxCacheEntries = 64;
- HashMap<RefPtr<UString::Rep>, RefPtr<EvalNode> > m_cacheMap;
+ typedef HashMap<RefPtr<UString::Rep>, RefPtr<EvalNode> > EvalCacheMap;
+ EvalCacheMap m_cacheMap;
};
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/Instruction.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/Instruction.h
index 81a7fa0..24ba490 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecode/Instruction.h
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/Instruction.h
@@ -29,14 +29,25 @@
#ifndef Instruction_h
#define Instruction_h
+#include "MacroAssembler.h"
#include "Opcode.h"
#include "Structure.h"
#include <wtf/VectorTraits.h>
-#define POLYMORPHIC_LIST_CACHE_SIZE 4
+#define POLYMORPHIC_LIST_CACHE_SIZE 8
namespace JSC {
+ // *Sigh*, If the JIT is enabled we need to track the stubRountine (of type MacroAssembler::CodeLocationLabel),
+ // If the JIT is not in use we don't actually need the variable (that said, if the JIT is not in use we don't
+ // curently actually use PolymorphicAccessStructureLists, which we should). Anyway, this seems like the best
+ // solution for now - will need to something smarter if/when we actually want mixed-mode operation.
+#if ENABLE(JIT)
+ typedef MacroAssembler::CodeLocationLabel PolymorphicAccessStructureListStubRoutineType;
+#else
+ typedef void* PolymorphicAccessStructureListStubRoutineType;
+#endif
+
class JSCell;
class Structure;
class StructureChain;
@@ -45,14 +56,14 @@ namespace JSC {
struct PolymorphicAccessStructureList {
struct PolymorphicStubInfo {
bool isChain;
- void* stubRoutine;
+ PolymorphicAccessStructureListStubRoutineType stubRoutine;
Structure* base;
union {
Structure* proto;
StructureChain* chain;
} u;
- void set(void* _stubRoutine, Structure* _base)
+ void set(PolymorphicAccessStructureListStubRoutineType _stubRoutine, Structure* _base)
{
stubRoutine = _stubRoutine;
base = _base;
@@ -60,7 +71,7 @@ namespace JSC {
isChain = false;
}
- void set(void* _stubRoutine, Structure* _base, Structure* _proto)
+ void set(PolymorphicAccessStructureListStubRoutineType _stubRoutine, Structure* _base, Structure* _proto)
{
stubRoutine = _stubRoutine;
base = _base;
@@ -68,7 +79,7 @@ namespace JSC {
isChain = false;
}
- void set(void* _stubRoutine, Structure* _base, StructureChain* _chain)
+ void set(PolymorphicAccessStructureListStubRoutineType _stubRoutine, Structure* _base, StructureChain* _chain)
{
stubRoutine = _stubRoutine;
base = _base;
@@ -77,17 +88,17 @@ namespace JSC {
}
} list[POLYMORPHIC_LIST_CACHE_SIZE];
- PolymorphicAccessStructureList(void* stubRoutine, Structure* firstBase)
+ PolymorphicAccessStructureList(PolymorphicAccessStructureListStubRoutineType stubRoutine, Structure* firstBase)
{
list[0].set(stubRoutine, firstBase);
}
- PolymorphicAccessStructureList(void* stubRoutine, Structure* firstBase, Structure* firstProto)
+ PolymorphicAccessStructureList(PolymorphicAccessStructureListStubRoutineType stubRoutine, Structure* firstBase, Structure* firstProto)
{
list[0].set(stubRoutine, firstBase, firstProto);
}
- PolymorphicAccessStructureList(void* stubRoutine, Structure* firstBase, StructureChain* firstChain)
+ PolymorphicAccessStructureList(PolymorphicAccessStructureListStubRoutineType stubRoutine, Structure* firstBase, StructureChain* firstChain)
{
list[0].set(stubRoutine, firstBase, firstChain);
}
@@ -111,11 +122,20 @@ namespace JSC {
};
struct Instruction {
- Instruction(Opcode opcode) { u.opcode = opcode; }
+ Instruction(Opcode opcode)
+ {
+#if !HAVE(COMPUTED_GOTO)
+ // We have to initialize one of the pointer members to ensure that
+ // the entire struct is initialized, when opcode is not a pointer.
+ u.jsCell = 0;
+#endif
+ u.opcode = opcode;
+ }
+
Instruction(int operand)
{
// We have to initialize one of the pointer members to ensure that
- // the entire struct is initialised in 64-bit.
+ // the entire struct is initialized in 64-bit.
u.jsCell = 0;
u.operand = operand;
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/JumpTable.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/JumpTable.h
index 44e224d..eee773c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecode/JumpTable.h
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/JumpTable.h
@@ -30,6 +30,7 @@
#ifndef JumpTable_h
#define JumpTable_h
+#include "MacroAssembler.h"
#include "UString.h"
#include <wtf/HashMap.h>
#include <wtf/Vector.h>
@@ -39,7 +40,7 @@ namespace JSC {
struct OffsetLocation {
int32_t branchOffset;
#if ENABLE(JIT)
- void* ctiOffset;
+ MacroAssembler::CodeLocationLabel ctiOffset;
#endif
};
@@ -47,7 +48,7 @@ namespace JSC {
typedef HashMap<RefPtr<UString::Rep>, OffsetLocation> StringOffsetTable;
StringOffsetTable offsetTable;
#if ENABLE(JIT)
- void* ctiDefault; // FIXME: it should not be necessary to store this.
+ MacroAssembler::CodeLocationLabel ctiDefault; // FIXME: it should not be necessary to store this.
#endif
inline int32_t offsetForValue(UString::Rep* value, int32_t defaultOffset)
@@ -60,7 +61,7 @@ namespace JSC {
}
#if ENABLE(JIT)
- inline void* ctiForValue(UString::Rep* value)
+ inline MacroAssembler::CodeLocationLabel ctiForValue(UString::Rep* value)
{
StringOffsetTable::const_iterator end = offsetTable.end();
StringOffsetTable::const_iterator loc = offsetTable.find(value);
@@ -76,8 +77,8 @@ namespace JSC {
Vector<int32_t> branchOffsets;
int32_t min;
#if ENABLE(JIT)
- Vector<void*> ctiOffsets;
- void* ctiDefault;
+ Vector<MacroAssembler::CodeLocationLabel> ctiOffsets;
+ MacroAssembler::CodeLocationLabel ctiDefault;
#endif
int32_t offsetForValue(int32_t value, int32_t defaultOffset);
@@ -88,7 +89,7 @@ namespace JSC {
}
#if ENABLE(JIT)
- inline void* ctiForValue(int32_t value)
+ inline MacroAssembler::CodeLocationLabel ctiForValue(int32_t value)
{
if (value >= min && static_cast<uint32_t>(value - min) < ctiOffsets.size())
return ctiOffsets[value - min];
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h
index e9c8f78..f4421df 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h
@@ -40,6 +40,7 @@ namespace JSC {
#define FOR_EACH_OPCODE_ID(macro) \
macro(op_enter, 1) \
macro(op_enter_with_activation, 2) \
+ macro(op_init_arguments, 1) \
macro(op_create_arguments, 1) \
macro(op_convert_this, 2) \
\
@@ -94,7 +95,7 @@ namespace JSC {
macro(op_resolve_global, 6) \
macro(op_get_scoped_var, 4) \
macro(op_put_scoped_var, 4) \
- macro(op_get_global_var, 6) \
+ macro(op_get_global_var, 4) \
macro(op_put_global_var, 4) \
macro(op_resolve_base, 3) \
macro(op_resolve_with_base, 4) \
@@ -125,7 +126,9 @@ namespace JSC {
macro(op_jfalse, 3) \
macro(op_jeq_null, 3) \
macro(op_jneq_null, 3) \
+ macro(op_jneq_ptr, 4) \
macro(op_jnless, 4) \
+ macro(op_jnlesseq, 4) \
macro(op_jmp_scopes, 3) \
macro(op_loop, 2) \
macro(op_loop_if_true, 3) \
@@ -139,12 +142,17 @@ namespace JSC {
macro(op_new_func_exp, 3) \
macro(op_call, 5) \
macro(op_call_eval, 5) \
+ macro(op_call_varargs, 5) \
+ macro(op_load_varargs, 3) \
macro(op_tear_off_activation, 2) \
macro(op_tear_off_arguments, 1) \
macro(op_ret, 2) \
+ macro(op_method_check, 1) \
\
macro(op_construct, 7) \
macro(op_construct_verify, 3) \
+ macro(op_strcat, 4) \
+ macro(op_to_primitive, 3) \
\
macro(op_get_pnames, 3) \
macro(op_next_pname, 4) \
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.cpp
index ffb9132..8651723 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.cpp
@@ -39,24 +39,57 @@
namespace JSC {
-void ScopeSampleRecord::sample(CodeBlock* codeBlock, Instruction* vPC)
+#if ENABLE(SAMPLING_FLAGS)
+
+void SamplingFlags::sample()
{
- if (!m_samples) {
- m_size = codeBlock->instructions().size();
- m_samples = static_cast<int*>(calloc(m_size, sizeof(int)));
- m_codeBlock = codeBlock;
+ uint32_t mask = 1 << 31;
+ unsigned index;
+
+ for (index = 0; index < 32; ++index) {
+ if (mask & s_flags)
+ break;
+ mask >>= 1;
}
- ++m_sampleCount;
+ s_flagCounts[32 - index]++;
+}
- unsigned offest = vPC - codeBlock->instructions().begin();
- // Since we don't read and write codeBlock and vPC atomically, this check
- // can fail if we sample mid op_call / op_ret.
- if (offest < m_size) {
- m_samples[offest]++;
- m_opcodeSampleCount++;
- }
+void SamplingFlags::start()
+{
+ for (unsigned i = 0; i <= 32; ++i)
+ s_flagCounts[i] = 0;
}
+void SamplingFlags::stop()
+{
+ uint64_t total = 0;
+ for (unsigned i = 0; i <= 32; ++i)
+ total += s_flagCounts[i];
+
+ if (total) {
+ printf("\nSamplingFlags: sample counts with flags set: (%lld total)\n", total);
+ for (unsigned i = 0; i <= 32; ++i) {
+ if (s_flagCounts[i])
+ printf(" [ %02d ] : %lld\t\t(%03.2f%%)\n", i, s_flagCounts[i], (100.0 * s_flagCounts[i]) / total);
+ }
+ printf("\n");
+ } else
+ printf("\nSamplingFlags: no samples.\n\n");
+}
+uint64_t SamplingFlags::s_flagCounts[33];
+
+#else
+void SamplingFlags::start() {}
+void SamplingFlags::stop() {}
+#endif
+
+/*
+ Start with flag 16 set.
+ By doing this the monitoring of lower valued flags will be masked out
+ until flag 16 is explictly cleared.
+*/
+uint32_t SamplingFlags::s_flags = 1 << 15;
+
#if PLATFORM(WIN_OS)
@@ -82,62 +115,113 @@ static inline unsigned hertz2us(unsigned hertz)
return 1000000 / hertz;
}
-void SamplingTool::run()
+
+SamplingTool* SamplingTool::s_samplingTool = 0;
+
+
+bool SamplingThread::s_running = false;
+unsigned SamplingThread::s_hertz = 10000;
+ThreadIdentifier SamplingThread::s_samplingThread;
+
+void* SamplingThread::threadStartFunc(void*)
{
- while (m_running) {
- sleepForMicroseconds(hertz2us(m_hertz));
+ while (s_running) {
+ sleepForMicroseconds(hertz2us(s_hertz));
- Sample sample(m_sample, m_codeBlock);
- ++m_sampleCount;
+#if ENABLE(SAMPLING_FLAGS)
+ SamplingFlags::sample();
+#endif
+#if ENABLE(OPCODE_SAMPLING)
+ SamplingTool::sample();
+#endif
+ }
- if (sample.isNull())
- continue;
+ return 0;
+}
- if (!sample.inHostFunction()) {
- unsigned opcodeID = m_interpreter->getOpcodeID(sample.vPC()[0].u.opcode);
- ++m_opcodeSampleCount;
- ++m_opcodeSamples[opcodeID];
+void SamplingThread::start(unsigned hertz)
+{
+ ASSERT(!s_running);
+ s_running = true;
+ s_hertz = hertz;
- if (sample.inCTIFunction())
- m_opcodeSamplesInCTIFunctions[opcodeID]++;
- }
+ s_samplingThread = createThread(threadStartFunc, 0, "JavaScriptCore::Sampler");
+}
+
+void SamplingThread::stop()
+{
+ ASSERT(s_running);
+ s_running = false;
+ waitForThreadCompletion(s_samplingThread, 0);
+}
+
+
+void ScopeSampleRecord::sample(CodeBlock* codeBlock, Instruction* vPC)
+{
+ if (!m_samples) {
+ m_size = codeBlock->instructions().size();
+ m_samples = static_cast<int*>(calloc(m_size, sizeof(int)));
+ m_codeBlock = codeBlock;
+ }
+
+ ++m_sampleCount;
+
+ unsigned offest = vPC - codeBlock->instructions().begin();
+ // Since we don't read and write codeBlock and vPC atomically, this check
+ // can fail if we sample mid op_call / op_ret.
+ if (offest < m_size) {
+ m_samples[offest]++;
+ m_opcodeSampleCount++;
+ }
+}
+
+void SamplingTool::doRun()
+{
+ Sample sample(m_sample, m_codeBlock);
+ ++m_sampleCount;
+
+ if (sample.isNull())
+ return;
+
+ if (!sample.inHostFunction()) {
+ unsigned opcodeID = m_interpreter->getOpcodeID(sample.vPC()[0].u.opcode);
+
+ ++m_opcodeSampleCount;
+ ++m_opcodeSamples[opcodeID];
+
+ if (sample.inCTIFunction())
+ m_opcodeSamplesInCTIFunctions[opcodeID]++;
+ }
#if ENABLE(CODEBLOCK_SAMPLING)
+ if (CodeBlock* codeBlock = sample.codeBlock()) {
MutexLocker locker(m_scopeSampleMapMutex);
- ScopeSampleRecord* record = m_scopeSampleMap->get(sample.codeBlock()->ownerNode);
+ ScopeSampleRecord* record = m_scopeSampleMap->get(codeBlock->ownerNode());
ASSERT(record);
- record->sample(sample.codeBlock(), sample.vPC());
-#endif
+ record->sample(codeBlock, sample.vPC());
}
+#endif
}
-void* SamplingTool::threadStartFunc(void* samplingTool)
+void SamplingTool::sample()
{
- reinterpret_cast<SamplingTool*>(samplingTool)->run();
- return 0;
+ s_samplingTool->doRun();
}
void SamplingTool::notifyOfScope(ScopeNode* scope)
{
+#if ENABLE(CODEBLOCK_SAMPLING)
MutexLocker locker(m_scopeSampleMapMutex);
m_scopeSampleMap->set(scope, new ScopeSampleRecord(scope));
+#else
+ UNUSED_PARAM(scope);
+#endif
}
-void SamplingTool::start(unsigned hertz)
-{
- ASSERT(!m_running);
- m_running = true;
- m_hertz = hertz;
-
- m_samplingThread = createThread(threadStartFunc, this, "JavaScriptCore::Sampler");
-}
-
-void SamplingTool::stop()
+void SamplingTool::setup()
{
- ASSERT(m_running);
- m_running = false;
- waitForThreadCompletion(m_samplingThread, 0);
+ s_samplingTool = this;
}
#if ENABLE(OPCODE_SAMPLING)
@@ -153,14 +237,6 @@ struct LineCountInfo {
unsigned count;
};
-static int compareLineCountInfoSampling(const void* left, const void* right)
-{
- const LineCountInfo* leftLineCount = reinterpret_cast<const LineCountInfo*>(left);
- const LineCountInfo* rightLineCount = reinterpret_cast<const LineCountInfo*>(right);
-
- return (leftLineCount->line > rightLineCount->line) ? 1 : (leftLineCount->line < rightLineCount->line) ? -1 : 0;
-}
-
static int compareOpcodeIndicesSampling(const void* left, const void* right)
{
const OpcodeSampleInfo* leftSampleInfo = reinterpret_cast<const OpcodeSampleInfo*>(left);
@@ -169,6 +245,15 @@ static int compareOpcodeIndicesSampling(const void* left, const void* right)
return (leftSampleInfo->count < rightSampleInfo->count) ? 1 : (leftSampleInfo->count > rightSampleInfo->count) ? -1 : 0;
}
+#if ENABLE(CODEBLOCK_SAMPLING)
+static int compareLineCountInfoSampling(const void* left, const void* right)
+{
+ const LineCountInfo* leftLineCount = reinterpret_cast<const LineCountInfo*>(left);
+ const LineCountInfo* rightLineCount = reinterpret_cast<const LineCountInfo*>(right);
+
+ return (leftLineCount->line > rightLineCount->line) ? 1 : (leftLineCount->line < rightLineCount->line) ? -1 : 0;
+}
+
static int compareScopeSampleRecords(const void* left, const void* right)
{
const ScopeSampleRecord* const leftValue = *static_cast<const ScopeSampleRecord* const *>(left);
@@ -176,6 +261,7 @@ static int compareScopeSampleRecords(const void* left, const void* right)
return (leftValue->m_sampleCount < rightValue->m_sampleCount) ? 1 : (leftValue->m_sampleCount > rightValue->m_sampleCount) ? -1 : 0;
}
+#endif
void SamplingTool::dump(ExecState* exec)
{
@@ -227,6 +313,8 @@ void SamplingTool::dump(ExecState* exec)
printf("\tcti count:\tsamples inside a CTI function called by this opcode\n");
printf("\tcti %% of self:\tcti count / sample count\n");
+#if ENABLE(CODEBLOCK_SAMPLING)
+
// (3) Build and sort 'codeBlockSamples' array.
int scopeCount = m_scopeSampleMap->size();
@@ -248,8 +336,8 @@ void SamplingTool::dump(ExecState* exec)
double blockPercent = (record->m_sampleCount * 100.0) / m_sampleCount;
if (blockPercent >= 1) {
- Instruction* code = codeBlock->instructions().begin();
- printf("#%d: %s:%d: %d / %lld (%.3f%%)\n", i + 1, record->m_scope->sourceURL().UTF8String().c_str(), codeBlock->lineNumberForBytecodeOffset(0), record->m_sampleCount, m_sampleCount, blockPercent);
+ //Instruction* code = codeBlock->instructions().begin();
+ printf("#%d: %s:%d: %d / %lld (%.3f%%)\n", i + 1, record->m_scope->sourceURL().UTF8String().c_str(), codeBlock->lineNumberForBytecodeOffset(exec, 0), record->m_sampleCount, m_sampleCount, blockPercent);
if (i < 10) {
HashMap<unsigned,unsigned> lineCounts;
codeBlock->dump(exec);
@@ -259,9 +347,7 @@ void SamplingTool::dump(ExecState* exec)
int count = record->m_samples[op];
if (count) {
printf(" [% 4d] has sample count: % 4d\n", op, count);
- // It is okay to pass 0 as the CallFrame for lineNumberForBytecodeOffset since
- // we ensure exception information when Sampling is enabled.
- unsigned line = codeBlock->lineNumberForBytecodeOffset(0, op);
+ unsigned line = codeBlock->lineNumberForBytecodeOffset(exec, op);
lineCounts.set(line, (lineCounts.contains(line) ? lineCounts.get(line) : 0) + count);
}
}
@@ -287,6 +373,9 @@ void SamplingTool::dump(ExecState* exec)
}
}
}
+#else
+ UNUSED_PARAM(exec);
+#endif
}
#else
@@ -297,4 +386,21 @@ void SamplingTool::dump(ExecState*)
#endif
+void AbstractSamplingCounter::dump()
+{
+#if ENABLE(SAMPLING_COUNTERS)
+ if (s_abstractSamplingCounterChain != &s_abstractSamplingCounterChainEnd) {
+ printf("\nSampling Counter Values:\n");
+ for (AbstractSamplingCounter* currCounter = s_abstractSamplingCounterChain; (currCounter != &s_abstractSamplingCounterChainEnd); currCounter = currCounter->m_next)
+ printf("\t%s\t: %lld\n", currCounter->m_name, currCounter->m_counter);
+ printf("\n\n");
+ }
+ s_completed = true;
+#endif
+}
+
+AbstractSamplingCounter AbstractSamplingCounter::s_abstractSamplingCounterChainEnd;
+AbstractSamplingCounter* AbstractSamplingCounter::s_abstractSamplingCounterChain = &s_abstractSamplingCounterChainEnd;
+bool AbstractSamplingCounter::s_completed = false;
+
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h
index daf99d2..7d7dc9c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h
@@ -38,6 +38,54 @@
namespace JSC {
+ class SamplingFlags {
+ friend class JIT;
+ public:
+ static void start();
+ static void stop();
+
+#if ENABLE(SAMPLING_FLAGS)
+ static void setFlag(unsigned flag)
+ {
+ ASSERT(flag >= 1);
+ ASSERT(flag <= 32);
+ s_flags |= 1u << (flag - 1);
+ }
+
+ static void clearFlag(unsigned flag)
+ {
+ ASSERT(flag >= 1);
+ ASSERT(flag <= 32);
+ s_flags &= ~(1u << (flag - 1));
+ }
+
+ static void sample();
+
+ class ScopedFlag {
+ public:
+ ScopedFlag(int flag)
+ : m_flag(flag)
+ {
+ setFlag(flag);
+ }
+
+ ~ScopedFlag()
+ {
+ clearFlag(m_flag);
+ }
+
+ private:
+ int m_flag;
+ };
+
+#endif
+ private:
+ static uint32_t s_flags;
+#if ENABLE(SAMPLING_FLAGS)
+ static uint64_t s_flagCounts[33];
+#endif
+ };
+
class CodeBlock;
class ExecState;
class Interpreter;
@@ -73,6 +121,19 @@ namespace JSC {
typedef WTF::HashMap<ScopeNode*, ScopeSampleRecord*> ScopeSampleRecordMap;
+ class SamplingThread {
+ public:
+ // Sampling thread state.
+ static bool s_running;
+ static unsigned s_hertz;
+ static ThreadIdentifier s_samplingThread;
+
+ static void start(unsigned hertz=10000);
+ static void stop();
+
+ static void* threadStartFunc(void*);
+ };
+
class SamplingTool {
public:
friend class CallRecord;
@@ -127,12 +188,13 @@ namespace JSC {
SamplingTool(Interpreter* interpreter)
: m_interpreter(interpreter)
- , m_running(false)
, m_codeBlock(0)
, m_sample(0)
, m_sampleCount(0)
, m_opcodeSampleCount(0)
+#if ENABLE(CODEBLOCK_SAMPLING)
, m_scopeSampleMap(new ScopeSampleRecordMap())
+#endif
{
memset(m_opcodeSamples, 0, sizeof(m_opcodeSamples));
memset(m_opcodeSamplesInCTIFunctions, 0, sizeof(m_opcodeSamplesInCTIFunctions));
@@ -140,11 +202,12 @@ namespace JSC {
~SamplingTool()
{
+#if ENABLE(CODEBLOCK_SAMPLING)
deleteAllValues(*m_scopeSampleMap);
+#endif
}
- void start(unsigned hertz=10000);
- void stop();
+ void setup();
void dump(ExecState*);
void notifyOfScope(ScopeNode* scope);
@@ -159,12 +222,14 @@ namespace JSC {
CodeBlock** codeBlockSlot() { return &m_codeBlock; }
intptr_t* sampleSlot() { return &m_sample; }
- unsigned encodeSample(Instruction* vPC, bool inCTIFunction = false, bool inHostFunction = false)
+ void* encodeSample(Instruction* vPC, bool inCTIFunction = false, bool inHostFunction = false)
{
ASSERT(!(reinterpret_cast<intptr_t>(vPC) & 0x3));
- return reinterpret_cast<intptr_t>(vPC) | (static_cast<intptr_t>(inCTIFunction) << 1) | static_cast<intptr_t>(inHostFunction);
+ return reinterpret_cast<void*>(reinterpret_cast<intptr_t>(vPC) | (static_cast<intptr_t>(inCTIFunction) << 1) | static_cast<intptr_t>(inHostFunction));
}
+ static void sample();
+
private:
class Sample {
public:
@@ -174,7 +239,7 @@ namespace JSC {
{
}
- bool isNull() { return !m_sample || !m_codeBlock; }
+ bool isNull() { return !m_sample; }
CodeBlock* codeBlock() { return m_codeBlock; }
Instruction* vPC() { return reinterpret_cast<Instruction*>(m_sample & ~0x3); }
bool inHostFunction() { return m_sample & 0x1; }
@@ -184,17 +249,12 @@ namespace JSC {
intptr_t m_sample;
CodeBlock* m_codeBlock;
};
-
- static void* threadStartFunc(void*);
- void run();
+
+ void doRun();
+ static SamplingTool* s_samplingTool;
Interpreter* m_interpreter;
- // Sampling thread state.
- bool m_running;
- unsigned m_hertz;
- ThreadIdentifier m_samplingThread;
-
// State tracked by the main thread, used by the sampling thread.
CodeBlock* m_codeBlock;
intptr_t m_sample;
@@ -205,9 +265,147 @@ namespace JSC {
unsigned m_opcodeSamples[numOpcodeIDs];
unsigned m_opcodeSamplesInCTIFunctions[numOpcodeIDs];
+#if ENABLE(CODEBLOCK_SAMPLING)
Mutex m_scopeSampleMapMutex;
OwnPtr<ScopeSampleRecordMap> m_scopeSampleMap;
+#endif
+ };
+
+ // AbstractSamplingCounter:
+ //
+ // Implements a named set of counters, printed on exit if ENABLE(SAMPLING_COUNTERS).
+ // See subclasses below, SamplingCounter, GlobalSamplingCounter and DeletableSamplingCounter.
+ class AbstractSamplingCounter {
+ friend class JIT;
+ friend class DeletableSamplingCounter;
+ public:
+ void count(uint32_t count = 1)
+ {
+ m_counter += count;
+ }
+
+ static void dump();
+
+ protected:
+ // Effectively the contructor, however called lazily in the case of GlobalSamplingCounter.
+ void init(const char* name)
+ {
+ m_counter = 0;
+ m_name = name;
+
+ // Set m_next to point to the head of the chain, and inform whatever is
+ // currently at the head that this node will now hold the pointer to it.
+ m_next = s_abstractSamplingCounterChain;
+ s_abstractSamplingCounterChain->m_referer = &m_next;
+ // Add this node to the head of the list.
+ s_abstractSamplingCounterChain = this;
+ m_referer = &s_abstractSamplingCounterChain;
+ }
+
+ int64_t m_counter;
+ const char* m_name;
+ AbstractSamplingCounter* m_next;
+ // This is a pointer to the pointer to this node in the chain; used to
+ // allow fast linked list deletion.
+ AbstractSamplingCounter** m_referer;
+ // Null object used to detect end of static chain.
+ static AbstractSamplingCounter s_abstractSamplingCounterChainEnd;
+ static AbstractSamplingCounter* s_abstractSamplingCounterChain;
+ static bool s_completed;
+ };
+
+#if ENABLE(SAMPLING_COUNTERS)
+ // SamplingCounter:
+ //
+ // This class is suitable and (hopefully!) convenient for cases where a counter is
+ // required within the scope of a single function. It can be instantiated as a
+ // static variable since it contains a constructor but not a destructor (static
+ // variables in WebKit cannot have destructors).
+ //
+ // For example:
+ //
+ // void someFunction()
+ // {
+ // static SamplingCounter countMe("This is my counter. There are many like it, but this one is mine.");
+ // countMe.count();
+ // // ...
+ // }
+ //
+ class SamplingCounter : public AbstractSamplingCounter {
+ public:
+ SamplingCounter(const char* name) { init(name); }
+ };
+
+ // GlobalSamplingCounter:
+ //
+ // This class is suitable for use where a counter is to be declared globally,
+ // since it contains neither a constructor nor destructor. Instead, ensure
+ // that 'name()' is called to provide the counter with a name (and also to
+ // allow it to be printed out on exit).
+ //
+ // GlobalSamplingCounter globalCounter;
+ //
+ // void firstFunction()
+ // {
+ // // Put this within a function that is definitely called!
+ // // (Or alternatively alongside all calls to 'count()').
+ // globalCounter.name("I Name You Destroyer.");
+ // globalCounter.count();
+ // // ...
+ // }
+ //
+ // void secondFunction()
+ // {
+ // globalCounter.count();
+ // // ...
+ // }
+ //
+ class GlobalSamplingCounter : public AbstractSamplingCounter {
+ public:
+ void name(const char* name)
+ {
+ // Global objects should be mapped in zero filled memory, so this should
+ // be a safe (albeit not necessarily threadsafe) check for 'first call'.
+ if (!m_next)
+ init(name);
+ }
+ };
+
+ // DeletableSamplingCounter:
+ //
+ // The above classes (SamplingCounter, GlobalSamplingCounter), are intended for
+ // use within a global or static scope, and as such cannot have a destructor.
+ // This means there is no convenient way for them to remove themselves from the
+ // static list of counters, and should an instance of either class be freed
+ // before 'dump()' has walked over the list it will potentially walk over an
+ // invalid pointer.
+ //
+ // This class is intended for use where the counter may possibly be deleted before
+ // the program exits. Should this occur, the counter will print it's value to
+ // stderr, and remove itself from the static list. Example:
+ //
+ // DeletableSamplingCounter* counter = new DeletableSamplingCounter("The Counter With No Name");
+ // counter->count();
+ // delete counter;
+ //
+ class DeletableSamplingCounter : public AbstractSamplingCounter {
+ public:
+ DeletableSamplingCounter(const char* name) { init(name); }
+
+ ~DeletableSamplingCounter()
+ {
+ if (!s_completed)
+ fprintf(stderr, "DeletableSamplingCounter \"%s\" deleted early (with count %lld)\n", m_name, m_counter);
+ // Our m_referer pointer should know where the pointer to this node is,
+ // and m_next should know that this node is the previous node in the list.
+ ASSERT(*m_referer == this);
+ ASSERT(m_next->m_referer == &m_next);
+ // Remove this node from the list, and inform m_next that we have done so.
+ m_next->m_referer = m_referer;
+ *m_referer = m_next;
+ }
};
+#endif
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecode/StructureStubInfo.h b/src/3rdparty/webkit/JavaScriptCore/bytecode/StructureStubInfo.h
index a9e0678..24fcb7d 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecode/StructureStubInfo.h
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecode/StructureStubInfo.h
@@ -26,19 +26,18 @@
#ifndef StructureStubInfo_h
#define StructureStubInfo_h
+#if ENABLE(JIT)
+
#include "Instruction.h"
+#include "MacroAssembler.h"
#include "Opcode.h"
#include "Structure.h"
namespace JSC {
-#if ENABLE(JIT)
struct StructureStubInfo {
StructureStubInfo(OpcodeID opcodeID)
: opcodeID(opcodeID)
- , stubRoutine(0)
- , callReturnLocation(0)
- , hotPathBegin(0)
{
}
@@ -145,12 +144,13 @@ namespace JSC {
} putByIdReplace;
} u;
- void* stubRoutine;
- void* callReturnLocation;
- void* hotPathBegin;
+ MacroAssembler::CodeLocationLabel stubRoutine;
+ MacroAssembler::CodeLocationCall callReturnLocation;
+ MacroAssembler::CodeLocationLabel hotPathBegin;
};
-#endif
} // namespace JSC
+#endif
+
#endif // StructureStubInfo_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp b/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
index 91279b8..21a3016 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
@@ -31,6 +31,7 @@
#include "BytecodeGenerator.h"
#include "BatchedTransitionOptimizer.h"
+#include "PrototypeFunction.h"
#include "JSFunction.h"
#include "Interpreter.h"
#include "UString.h"
@@ -115,7 +116,7 @@ namespace JSC {
*/
#ifndef NDEBUG
-bool BytecodeGenerator::s_dumpsGeneratedCode = false;
+static bool s_dumpsGeneratedCode = false;
#endif
void BytecodeGenerator::setDumpsGeneratedCode(bool dumpsGeneratedCode)
@@ -145,14 +146,14 @@ void BytecodeGenerator::generate()
#ifndef NDEBUG
m_codeBlock->setInstructionCount(m_codeBlock->instructions().size());
- if (s_dumpsGeneratedCode) {
- JSGlobalObject* globalObject = m_scopeChain->globalObject();
- m_codeBlock->dump(globalObject->globalExec());
- }
+ if (s_dumpsGeneratedCode)
+ m_codeBlock->dump(m_scopeChain->globalObject()->globalExec());
#endif
if ((m_codeType == FunctionCode && !m_codeBlock->needsFullScopeChain() && !m_codeBlock->usesArguments()) || m_codeType == EvalCode)
symbolTable().clear();
+
+ m_codeBlock->setIsNumericCompareFunction(instructions() == m_globalData->numericCompareFunction(m_scopeChain->globalObject()->globalExec()));
#if !ENABLE(OPCODE_SAMPLING)
if (!m_regeneratingForExceptionInfo && (m_codeType == FunctionCode || m_codeType == EvalCode))
@@ -211,7 +212,6 @@ void BytecodeGenerator::allocateConstants(size_t count)
BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, ProgramCodeBlock* codeBlock)
: m_shouldEmitDebugHooks(!!debugger)
, m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling())
- , m_regeneratingForExceptionInfo(false)
, m_scopeChain(&scopeChain)
, m_symbolTable(symbolTable)
, m_scopeNode(programNode)
@@ -222,9 +222,12 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d
, m_baseScopeDepth(0)
, m_codeType(GlobalCode)
, m_nextGlobalIndex(-1)
+ , m_globalConstantIndex(0)
, m_globalData(&scopeChain.globalObject()->globalExec()->globalData())
, m_lastOpcodeID(op_end)
, m_emitNodeDepth(0)
+ , m_regeneratingForExceptionInfo(false)
+ , m_codeBlockBeingRegeneratedFrom(0)
{
if (m_shouldEmitDebugHooks)
m_codeBlock->setNeedsFullScopeChain(true);
@@ -259,7 +262,7 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d
m_nextGlobalIndex -= symbolTable->size();
for (size_t i = 0; i < functionStack.size(); ++i) {
- FuncDeclNode* funcDecl = functionStack[i].get();
+ FuncDeclNode* funcDecl = functionStack[i];
globalObject->removeDirect(funcDecl->m_ident); // Make sure our new function is not shadowed by an old property.
emitNewFunction(addGlobalVar(funcDecl->m_ident, false), funcDecl);
}
@@ -275,7 +278,7 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d
emitLoad(newVars[i], jsUndefined());
} else {
for (size_t i = 0; i < functionStack.size(); ++i) {
- FuncDeclNode* funcDecl = functionStack[i].get();
+ FuncDeclNode* funcDecl = functionStack[i];
globalObject->putWithAttributes(exec, funcDecl->m_ident, funcDecl->makeFunction(exec, scopeChain.node()), DontDelete);
}
for (size_t i = 0; i < varStack.size(); ++i) {
@@ -294,7 +297,6 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d
BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, CodeBlock* codeBlock)
: m_shouldEmitDebugHooks(!!debugger)
, m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling())
- , m_regeneratingForExceptionInfo(false)
, m_scopeChain(&scopeChain)
, m_symbolTable(symbolTable)
, m_scopeNode(functionBody)
@@ -303,9 +305,12 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug
, m_dynamicScopeDepth(0)
, m_baseScopeDepth(0)
, m_codeType(FunctionCode)
+ , m_globalConstantIndex(0)
, m_globalData(&scopeChain.globalObject()->globalExec()->globalData())
, m_lastOpcodeID(op_end)
, m_emitNodeDepth(0)
+ , m_regeneratingForExceptionInfo(false)
+ , m_codeBlockBeingRegeneratedFrom(0)
{
if (m_shouldEmitDebugHooks)
m_codeBlock->setNeedsFullScopeChain(true);
@@ -327,12 +332,19 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug
} else
emitOpcode(op_enter);
- if (usesArguments)
- emitOpcode(op_create_arguments);
+ if (usesArguments) {
+ emitOpcode(op_init_arguments);
+
+ // The debugger currently retrieves the arguments object from an activation rather than pulling
+ // it from a call frame. In the long-term it should stop doing that (<rdar://problem/6911886>),
+ // but for now we force eager creation of the arguments object when debugging.
+ if (m_shouldEmitDebugHooks)
+ emitOpcode(op_create_arguments);
+ }
const DeclarationStacks::FunctionStack& functionStack = functionBody->functionStack();
for (size_t i = 0; i < functionStack.size(); ++i) {
- FuncDeclNode* funcDecl = functionStack[i].get();
+ FuncDeclNode* funcDecl = functionStack[i];
const Identifier& ident = funcDecl->m_ident;
m_functions.add(ident.ustring().rep());
emitNewFunction(addVar(ident, false), funcDecl);
@@ -366,7 +378,6 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug
BytecodeGenerator::BytecodeGenerator(EvalNode* evalNode, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, EvalCodeBlock* codeBlock)
: m_shouldEmitDebugHooks(!!debugger)
, m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling())
- , m_regeneratingForExceptionInfo(false)
, m_scopeChain(&scopeChain)
, m_symbolTable(symbolTable)
, m_scopeNode(evalNode)
@@ -374,11 +385,14 @@ BytecodeGenerator::BytecodeGenerator(EvalNode* evalNode, const Debugger* debugge
, m_thisRegister(RegisterFile::ProgramCodeThisRegister)
, m_finallyDepth(0)
, m_dynamicScopeDepth(0)
- , m_baseScopeDepth(scopeChain.localDepth())
+ , m_baseScopeDepth(codeBlock->baseScopeDepth())
, m_codeType(EvalCode)
+ , m_globalConstantIndex(0)
, m_globalData(&scopeChain.globalObject()->globalExec()->globalData())
, m_lastOpcodeID(op_end)
, m_emitNodeDepth(0)
+ , m_regeneratingForExceptionInfo(false)
+ , m_codeBlockBeingRegeneratedFrom(0)
{
if (m_shouldEmitDebugHooks || m_baseScopeDepth)
m_codeBlock->setNeedsFullScopeChain(true);
@@ -421,6 +435,36 @@ RegisterID* BytecodeGenerator::registerFor(const Identifier& ident)
if (entry.isNull())
return 0;
+ if (ident == propertyNames().arguments)
+ createArgumentsIfNecessary();
+
+ return &registerFor(entry.getIndex());
+}
+
+bool BytecodeGenerator::willResolveToArguments(const Identifier& ident)
+{
+ if (ident != propertyNames().arguments)
+ return false;
+
+ if (!shouldOptimizeLocals())
+ return false;
+
+ SymbolTableEntry entry = symbolTable().get(ident.ustring().rep());
+ if (entry.isNull())
+ return false;
+
+ if (m_codeBlock->usesArguments() && m_codeType == FunctionCode)
+ return true;
+
+ return false;
+}
+
+RegisterID* BytecodeGenerator::uncheckedRegisterForArguments()
+{
+ ASSERT(willResolveToArguments(propertyNames().arguments));
+
+ SymbolTableEntry entry = symbolTable().get(propertyNames().arguments.ustring().rep());
+ ASSERT(!entry.isNull());
return &registerFor(entry.getIndex());
}
@@ -645,6 +689,21 @@ PassRefPtr<Label> BytecodeGenerator::emitJumpIfFalse(RegisterID* cond, Label* ta
instructions().append(target->offsetFrom(instructions().size()));
return target;
}
+ } else if (m_lastOpcodeID == op_lesseq) {
+ int dstIndex;
+ int src1Index;
+ int src2Index;
+
+ retrieveLastBinaryOp(dstIndex, src1Index, src2Index);
+
+ if (cond->index() == dstIndex && cond->isTemporary() && !cond->refCount()) {
+ rewindBinaryOp();
+ emitOpcode(op_jnlesseq);
+ instructions().append(src1Index);
+ instructions().append(src2Index);
+ instructions().append(target->offsetFrom(instructions().size()));
+ return target;
+ }
} else if (m_lastOpcodeID == op_not) {
int dstIndex;
int srcIndex;
@@ -692,6 +751,24 @@ PassRefPtr<Label> BytecodeGenerator::emitJumpIfFalse(RegisterID* cond, Label* ta
return target;
}
+PassRefPtr<Label> BytecodeGenerator::emitJumpIfNotFunctionCall(RegisterID* cond, Label* target)
+{
+ emitOpcode(op_jneq_ptr);
+ instructions().append(cond->index());
+ instructions().append(m_scopeChain->globalObject()->d()->callFunction);
+ instructions().append(target->offsetFrom(instructions().size()));
+ return target;
+}
+
+PassRefPtr<Label> BytecodeGenerator::emitJumpIfNotFunctionApply(RegisterID* cond, Label* target)
+{
+ emitOpcode(op_jneq_ptr);
+ instructions().append(cond->index());
+ instructions().append(m_scopeChain->globalObject()->d()->applyFunction);
+ instructions().append(target->offsetFrom(instructions().size()));
+ return target;
+}
+
unsigned BytecodeGenerator::addConstant(FuncDeclNode* n)
{
// No need to explicitly unique function body nodes -- they're unique already.
@@ -714,26 +791,36 @@ unsigned BytecodeGenerator::addConstant(const Identifier& ident)
return result.first->second;
}
-RegisterID* BytecodeGenerator::addConstant(JSValuePtr v)
+RegisterID* BytecodeGenerator::addConstant(JSValue v)
{
- pair<JSValueMap::iterator, bool> result = m_jsValueMap.add(JSValuePtr::encode(v), m_nextConstantIndex);
+ pair<JSValueMap::iterator, bool> result = m_jsValueMap.add(JSValue::encode(v), m_nextConstantIndex);
if (result.second) {
RegisterID& constant = m_calleeRegisters[m_nextConstantIndex];
++m_nextConstantIndex;
- m_codeBlock->addConstantRegister(JSValuePtr(v));
+ m_codeBlock->addConstantRegister(JSValue(v));
return &constant;
}
return &registerFor(result.first->second);
}
-unsigned BytecodeGenerator::addUnexpectedConstant(JSValuePtr v)
+unsigned BytecodeGenerator::addUnexpectedConstant(JSValue v)
{
return m_codeBlock->addUnexpectedConstant(v);
}
+RegisterID* BytecodeGenerator::emitLoadGlobalObject(RegisterID* dst, JSObject* globalObject)
+{
+ if (!m_globalConstantIndex)
+ m_globalConstantIndex = m_codeBlock->addUnexpectedConstant(globalObject);
+ emitOpcode(op_unexpected_load);
+ instructions().append(dst->index());
+ instructions().append(m_globalConstantIndex);
+ return dst;
+}
+
unsigned BytecodeGenerator::addRegExp(RegExp* r)
{
return m_codeBlock->addRegExp(r);
@@ -811,8 +898,8 @@ RegisterID* BytecodeGenerator::emitEqualityOp(OpcodeID opcodeID, RegisterID* dst
if (src1->index() == dstIndex
&& src1->isTemporary()
&& m_codeBlock->isConstantRegisterIndex(src2->index())
- && m_codeBlock->constantRegister(src2->index() - m_codeBlock->m_numVars).jsValue(m_scopeChain->globalObject()->globalExec())->isString()) {
- const UString& value = asString(m_codeBlock->constantRegister(src2->index() - m_codeBlock->m_numVars).jsValue(m_scopeChain->globalObject()->globalExec()))->value();
+ && m_codeBlock->constantRegister(src2->index() - m_codeBlock->m_numVars).jsValue().isString()) {
+ const UString& value = asString(m_codeBlock->constantRegister(src2->index() - m_codeBlock->m_numVars).jsValue())->value();
if (value == "undefined") {
rewindUnaryOp();
emitOpcode(op_is_undefined);
@@ -876,7 +963,7 @@ RegisterID* BytecodeGenerator::emitLoad(RegisterID* dst, double number)
// Later we can do the extra work to handle that like the other cases.
if (number == HashTraits<double>::emptyValue() || HashTraits<double>::isDeletedValue(number))
return emitLoad(dst, jsNumber(globalData(), number));
- JSValuePtr& valueInMap = m_numberMap.add(number, noValue()).first->second;
+ JSValue& valueInMap = m_numberMap.add(number, JSValue()).first->second;
if (!valueInMap)
valueInMap = jsNumber(globalData(), number);
return emitLoad(dst, valueInMap);
@@ -887,10 +974,10 @@ RegisterID* BytecodeGenerator::emitLoad(RegisterID* dst, const Identifier& ident
JSString*& stringInMap = m_stringMap.add(identifier.ustring().rep(), 0).first->second;
if (!stringInMap)
stringInMap = jsOwnedString(globalData(), identifier.ustring());
- return emitLoad(dst, JSValuePtr(stringInMap));
+ return emitLoad(dst, JSValue(stringInMap));
}
-RegisterID* BytecodeGenerator::emitLoad(RegisterID* dst, JSValuePtr v)
+RegisterID* BytecodeGenerator::emitLoad(RegisterID* dst, JSValue v)
{
RegisterID* constantID = addConstant(v);
if (dst)
@@ -991,14 +1078,23 @@ RegisterID* BytecodeGenerator::emitResolve(RegisterID* dst, const Identifier& pr
return dst;
}
- if (index != missingSymbolMarker()) {
- // Directly index the property lookup across multiple scopes. Yay!
- return emitGetScopedVar(dst, depth, index, globalObject);
- }
-
if (globalObject) {
+ bool forceGlobalResolve = false;
+ if (m_regeneratingForExceptionInfo) {
#if ENABLE(JIT)
- m_codeBlock->addGlobalResolveInfo();
+ forceGlobalResolve = m_codeBlockBeingRegeneratedFrom->hasGlobalResolveInfoAtBytecodeOffset(instructions().size());
+#else
+ forceGlobalResolve = m_codeBlockBeingRegeneratedFrom->hasGlobalResolveInstructionAtBytecodeOffset(instructions().size());
+#endif
+ }
+
+ if (index != missingSymbolMarker() && !forceGlobalResolve) {
+ // Directly index the property lookup across multiple scopes.
+ return emitGetScopedVar(dst, depth, index, globalObject);
+ }
+
+#if ENABLE(JIT)
+ m_codeBlock->addGlobalResolveInfo(instructions().size());
#else
m_codeBlock->addGlobalResolveInstruction(instructions().size());
#endif
@@ -1011,6 +1107,11 @@ RegisterID* BytecodeGenerator::emitResolve(RegisterID* dst, const Identifier& pr
return dst;
}
+ if (index != missingSymbolMarker()) {
+ // Directly index the property lookup across multiple scopes.
+ return emitGetScopedVar(dst, depth, index, globalObject);
+ }
+
// In this case we are at least able to drop a few scope chains from the
// lookup chain, although we still need to hash from then on.
emitOpcode(op_resolve_skip);
@@ -1020,16 +1121,13 @@ RegisterID* BytecodeGenerator::emitResolve(RegisterID* dst, const Identifier& pr
return dst;
}
-RegisterID* BytecodeGenerator::emitGetScopedVar(RegisterID* dst, size_t depth, int index, JSValuePtr globalObject)
+RegisterID* BytecodeGenerator::emitGetScopedVar(RegisterID* dst, size_t depth, int index, JSValue globalObject)
{
if (globalObject) {
- // op_get_global_var must be the same length as op_resolve_global.
emitOpcode(op_get_global_var);
instructions().append(dst->index());
instructions().append(asCell(globalObject));
instructions().append(index);
- instructions().append(0);
- instructions().append(0);
return dst;
}
@@ -1040,7 +1138,7 @@ RegisterID* BytecodeGenerator::emitGetScopedVar(RegisterID* dst, size_t depth, i
return dst;
}
-RegisterID* BytecodeGenerator::emitPutScopedVar(size_t depth, int index, RegisterID* value, JSValuePtr globalObject)
+RegisterID* BytecodeGenerator::emitPutScopedVar(size_t depth, int index, RegisterID* value, JSValue globalObject)
{
if (globalObject) {
emitOpcode(op_put_global_var);
@@ -1058,18 +1156,65 @@ RegisterID* BytecodeGenerator::emitPutScopedVar(size_t depth, int index, Registe
RegisterID* BytecodeGenerator::emitResolveBase(RegisterID* dst, const Identifier& property)
{
- emitOpcode(op_resolve_base);
- instructions().append(dst->index());
- instructions().append(addConstant(property));
- return dst;
+ size_t depth = 0;
+ int index = 0;
+ JSObject* globalObject = 0;
+ findScopedProperty(property, index, depth, false, globalObject);
+ if (!globalObject) {
+ // We can't optimise at all :-(
+ emitOpcode(op_resolve_base);
+ instructions().append(dst->index());
+ instructions().append(addConstant(property));
+ return dst;
+ }
+
+ // Global object is the base
+ return emitLoadGlobalObject(dst, globalObject);
}
RegisterID* BytecodeGenerator::emitResolveWithBase(RegisterID* baseDst, RegisterID* propDst, const Identifier& property)
{
- emitOpcode(op_resolve_with_base);
- instructions().append(baseDst->index());
+ size_t depth = 0;
+ int index = 0;
+ JSObject* globalObject = 0;
+ if (!findScopedProperty(property, index, depth, false, globalObject) || !globalObject) {
+ // We can't optimise at all :-(
+ emitOpcode(op_resolve_with_base);
+ instructions().append(baseDst->index());
+ instructions().append(propDst->index());
+ instructions().append(addConstant(property));
+ return baseDst;
+ }
+
+ bool forceGlobalResolve = false;
+ if (m_regeneratingForExceptionInfo) {
+#if ENABLE(JIT)
+ forceGlobalResolve = m_codeBlockBeingRegeneratedFrom->hasGlobalResolveInfoAtBytecodeOffset(instructions().size());
+#else
+ forceGlobalResolve = m_codeBlockBeingRegeneratedFrom->hasGlobalResolveInstructionAtBytecodeOffset(instructions().size());
+#endif
+ }
+
+ // Global object is the base
+ emitLoadGlobalObject(baseDst, globalObject);
+
+ if (index != missingSymbolMarker() && !forceGlobalResolve) {
+ // Directly index the property lookup across multiple scopes.
+ emitGetScopedVar(propDst, depth, index, globalObject);
+ return baseDst;
+ }
+
+#if ENABLE(JIT)
+ m_codeBlock->addGlobalResolveInfo(instructions().size());
+#else
+ m_codeBlock->addGlobalResolveInstruction(instructions().size());
+#endif
+ emitOpcode(op_resolve_global);
instructions().append(propDst->index());
+ instructions().append(globalObject);
instructions().append(addConstant(property));
+ instructions().append(0);
+ instructions().append(0);
return baseDst;
}
@@ -1082,6 +1227,11 @@ RegisterID* BytecodeGenerator::emitResolveFunction(RegisterID* baseDst, Register
return baseDst;
}
+void BytecodeGenerator::emitMethodCheck()
+{
+ emitOpcode(op_method_check);
+}
+
RegisterID* BytecodeGenerator::emitGetById(RegisterID* dst, RegisterID* base, const Identifier& property)
{
#if ENABLE(JIT)
@@ -1238,8 +1388,15 @@ RegisterID* BytecodeGenerator::emitCall(RegisterID* dst, RegisterID* func, Regis
return emitCall(op_call, dst, func, thisRegister, argumentsNode, divot, startOffset, endOffset);
}
+void BytecodeGenerator::createArgumentsIfNecessary()
+{
+ if (m_codeBlock->usesArguments() && m_codeType == FunctionCode)
+ emitOpcode(op_create_arguments);
+}
+
RegisterID* BytecodeGenerator::emitCallEval(RegisterID* dst, RegisterID* func, RegisterID* thisRegister, ArgumentsNode* argumentsNode, unsigned divot, unsigned startOffset, unsigned endOffset)
{
+ createArgumentsIfNecessary();
return emitCall(op_call_eval, dst, func, thisRegister, argumentsNode, divot, startOffset, endOffset);
}
@@ -1266,7 +1423,7 @@ RegisterID* BytecodeGenerator::emitCall(OpcodeID opcodeID, RegisterID* dst, Regi
// Generate code for arguments.
Vector<RefPtr<RegisterID>, 16> argv;
argv.append(thisRegister);
- for (ArgumentListNode* n = argumentsNode->m_listNode.get(); n; n = n->m_next.get()) {
+ for (ArgumentListNode* n = argumentsNode->m_listNode; n; n = n->m_next) {
argv.append(newTemporary());
// op_call requires the arguments to be a sequential range of registers
ASSERT(argv[argv.size() - 1]->index() == argv[argv.size() - 2]->index() + 1);
@@ -1313,6 +1470,44 @@ RegisterID* BytecodeGenerator::emitCall(OpcodeID opcodeID, RegisterID* dst, Regi
return dst;
}
+RegisterID* BytecodeGenerator::emitLoadVarargs(RegisterID* argCountDst, RegisterID* arguments)
+{
+ ASSERT(argCountDst->index() < arguments->index());
+ emitOpcode(op_load_varargs);
+ instructions().append(argCountDst->index());
+ instructions().append(arguments->index());
+ return argCountDst;
+}
+
+RegisterID* BytecodeGenerator::emitCallVarargs(RegisterID* dst, RegisterID* func, RegisterID* thisRegister, RegisterID* argCountRegister, unsigned divot, unsigned startOffset, unsigned endOffset)
+{
+ ASSERT(func->refCount());
+ ASSERT(thisRegister->refCount());
+ ASSERT(dst != func);
+ if (m_shouldEmitProfileHooks) {
+ emitOpcode(op_profile_will_call);
+ instructions().append(func->index());
+
+#if ENABLE(JIT)
+ m_codeBlock->addFunctionRegisterInfo(instructions().size(), func->index());
+#endif
+ }
+
+ emitExpressionInfo(divot, startOffset, endOffset);
+
+ // Emit call.
+ emitOpcode(op_call_varargs);
+ instructions().append(dst->index()); // dst
+ instructions().append(func->index()); // func
+ instructions().append(argCountRegister->index()); // arg count
+ instructions().append(thisRegister->index() + RegisterFile::CallFrameHeaderSize); // initial registerOffset
+ if (m_shouldEmitProfileHooks) {
+ emitOpcode(op_profile_did_call);
+ instructions().append(func->index());
+ }
+ return dst;
+}
+
RegisterID* BytecodeGenerator::emitReturn(RegisterID* src)
{
if (m_codeBlock->needsFullScopeChain()) {
@@ -1351,7 +1546,7 @@ RegisterID* BytecodeGenerator::emitConstruct(RegisterID* dst, RegisterID* func,
// Generate code for arguments.
Vector<RefPtr<RegisterID>, 16> argv;
argv.append(newTemporary()); // reserve space for "this"
- for (ArgumentListNode* n = argumentsNode ? argumentsNode->m_listNode.get() : 0; n; n = n->m_next.get()) {
+ for (ArgumentListNode* n = argumentsNode ? argumentsNode->m_listNode : 0; n; n = n->m_next) {
argv.append(newTemporary());
// op_construct requires the arguments to be a sequential range of registers
ASSERT(argv[argv.size() - 1]->index() == argv[argv.size() - 2]->index() + 1);
@@ -1402,6 +1597,23 @@ RegisterID* BytecodeGenerator::emitConstruct(RegisterID* dst, RegisterID* func,
return dst;
}
+RegisterID* BytecodeGenerator::emitStrcat(RegisterID* dst, RegisterID* src, int count)
+{
+ emitOpcode(op_strcat);
+ instructions().append(dst->index());
+ instructions().append(src->index());
+ instructions().append(count);
+
+ return dst;
+}
+
+void BytecodeGenerator::emitToPrimitive(RegisterID* dst, RegisterID* src)
+{
+ emitOpcode(op_to_primitive);
+ instructions().append(dst->index());
+ instructions().append(src->index());
+}
+
RegisterID* BytecodeGenerator::emitPushScope(RegisterID* scope)
{
ASSERT(scope->isTemporary());
@@ -1409,6 +1621,7 @@ RegisterID* BytecodeGenerator::emitPushScope(RegisterID* scope)
context.isFinallyBlock = false;
m_scopeContextStack.append(context);
m_dynamicScopeDepth++;
+ createArgumentsIfNecessary();
return emitUnaryNoDstOp(op_push_scope, scope);
}
@@ -1456,8 +1669,17 @@ void BytecodeGenerator::popFinallyContext()
LabelScope* BytecodeGenerator::breakTarget(const Identifier& name)
{
// Reclaim free label scopes.
- while (m_labelScopes.size() && !m_labelScopes.last().refCount())
+ //
+ // The condition was previously coded as 'm_labelScopes.size() && !m_labelScopes.last().refCount()',
+ // however sometimes this appears to lead to GCC going a little haywire and entering the loop with
+ // size 0, leading to segfaulty badness. We are yet to identify a valid cause within our code to
+ // cause the GCC codegen to misbehave in this fashion, and as such the following refactoring of the
+ // loop condition is a workaround.
+ while (m_labelScopes.size()) {
+ if (m_labelScopes.last().refCount())
+ break;
m_labelScopes.removeLast();
+ }
if (!m_labelScopes.size())
return 0;
@@ -1554,14 +1776,10 @@ PassRefPtr<Label> BytecodeGenerator::emitComplexJumpScopes(Label* target, Contro
emitLabel(nextInsn.get());
}
- // To get here there must be at least one finally block present
- do {
- ASSERT(topScope->isFinallyBlock);
+ while (topScope > bottomScope && topScope->isFinallyBlock) {
emitJumpSubroutine(topScope->finallyContext.retAddrDst, topScope->finallyContext.finallyAddr);
--topScope;
- if (!topScope->isFinallyBlock)
- break;
- } while (topScope > bottomScope);
+ }
}
return emitJump(target);
}
@@ -1597,7 +1815,7 @@ RegisterID* BytecodeGenerator::emitNextPropertyName(RegisterID* dst, RegisterID*
RegisterID* BytecodeGenerator::emitCatch(RegisterID* targetRegister, Label* start, Label* end)
{
#if ENABLE(JIT)
- HandlerInfo info = { start->offsetFrom(0), end->offsetFrom(0), instructions().size(), m_dynamicScopeDepth + m_baseScopeDepth, 0 };
+ HandlerInfo info = { start->offsetFrom(0), end->offsetFrom(0), instructions().size(), m_dynamicScopeDepth + m_baseScopeDepth, MacroAssembler::CodeLocationLabel() };
#else
HandlerInfo info = { start->offsetFrom(0), end->offsetFrom(0), instructions().size(), m_dynamicScopeDepth + m_baseScopeDepth };
#endif
@@ -1608,7 +1826,7 @@ RegisterID* BytecodeGenerator::emitCatch(RegisterID* targetRegister, Label* star
return targetRegister;
}
-RegisterID* BytecodeGenerator::emitNewError(RegisterID* dst, ErrorType type, JSValuePtr message)
+RegisterID* BytecodeGenerator::emitNewError(RegisterID* dst, ErrorType type, JSValue message)
{
emitOpcode(op_new_error);
instructions().append(dst->index());
@@ -1638,6 +1856,8 @@ void BytecodeGenerator::emitPushNewScope(RegisterID* dst, Identifier& property,
m_scopeContextStack.append(context);
m_dynamicScopeDepth++;
+ createArgumentsIfNecessary();
+
emitOpcode(op_push_new_scope);
instructions().append(dst->index());
instructions().append(addConstant(property));
@@ -1672,8 +1892,8 @@ static int32_t keyForImmediateSwitch(ExpressionNode* node, int32_t min, int32_t
UNUSED_PARAM(max);
ASSERT(node->isNumber());
double value = static_cast<NumberNode*>(node)->value();
- ASSERT(JSImmediate::from(value));
int32_t key = static_cast<int32_t>(value);
+ ASSERT(JSValue::makeInt32Fast(key) && (JSValue::makeInt32Fast(key).getInt32Fast() == value));
ASSERT(key == value);
ASSERT(key >= min);
ASSERT(key <= max);
@@ -1730,9 +1950,6 @@ static void prepareJumpTableForStringSwitch(StringJumpTable& jumpTable, int32_t
UString::Rep* clause = static_cast<StringNode*>(nodes[i])->value().ustring().rep();
OffsetLocation location;
location.branchOffset = labels[i]->offsetFrom(switchAddress);
-#if ENABLE(JIT)
- location.ctiOffset = 0;
-#endif
jumpTable.offsetTable.add(clause, location);
}
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.h b/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.h
index 3156cbf..6813d69 100644
--- a/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.h
+++ b/src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.h
@@ -81,6 +81,9 @@ namespace JSC {
// such register exists. Registers returned by registerFor do not
// require explicit reference counting.
RegisterID* registerFor(const Identifier&);
+
+ bool willResolveToArguments(const Identifier&);
+ RegisterID* uncheckedRegisterForArguments();
// Behaves as registerFor does, but ignores dynamic scope as
// dynamic scope should not interfere with const initialisation
@@ -240,9 +243,10 @@ namespace JSC {
RegisterID* emitLoad(RegisterID* dst, bool);
RegisterID* emitLoad(RegisterID* dst, double);
RegisterID* emitLoad(RegisterID* dst, const Identifier&);
- RegisterID* emitLoad(RegisterID* dst, JSValuePtr);
+ RegisterID* emitLoad(RegisterID* dst, JSValue);
RegisterID* emitUnexpectedLoad(RegisterID* dst, bool);
RegisterID* emitUnexpectedLoad(RegisterID* dst, double);
+ RegisterID* emitLoadGlobalObject(RegisterID* dst, JSObject* globalObject);
RegisterID* emitUnaryOp(OpcodeID, RegisterID* dst, RegisterID* src);
RegisterID* emitBinaryOp(OpcodeID, RegisterID* dst, RegisterID* src1, RegisterID* src2, OperandTypes);
@@ -269,13 +273,15 @@ namespace JSC {
RegisterID* emitIn(RegisterID* dst, RegisterID* property, RegisterID* base) { return emitBinaryOp(op_in, dst, property, base, OperandTypes()); }
RegisterID* emitResolve(RegisterID* dst, const Identifier& property);
- RegisterID* emitGetScopedVar(RegisterID* dst, size_t skip, int index, JSValuePtr globalObject);
- RegisterID* emitPutScopedVar(size_t skip, int index, RegisterID* value, JSValuePtr globalObject);
+ RegisterID* emitGetScopedVar(RegisterID* dst, size_t skip, int index, JSValue globalObject);
+ RegisterID* emitPutScopedVar(size_t skip, int index, RegisterID* value, JSValue globalObject);
RegisterID* emitResolveBase(RegisterID* dst, const Identifier& property);
RegisterID* emitResolveWithBase(RegisterID* baseDst, RegisterID* propDst, const Identifier& property);
RegisterID* emitResolveFunction(RegisterID* baseDst, RegisterID* funcDst, const Identifier& property);
+ void emitMethodCheck();
+
RegisterID* emitGetById(RegisterID* dst, RegisterID* base, const Identifier& property);
RegisterID* emitPutById(RegisterID* base, const Identifier& property, RegisterID* value);
RegisterID* emitDeleteById(RegisterID* dst, RegisterID* base, const Identifier&);
@@ -288,16 +294,22 @@ namespace JSC {
RegisterID* emitCall(RegisterID* dst, RegisterID* func, RegisterID* thisRegister, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
RegisterID* emitCallEval(RegisterID* dst, RegisterID* func, RegisterID* thisRegister, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
+ RegisterID* emitCallVarargs(RegisterID* dst, RegisterID* func, RegisterID* thisRegister, RegisterID* argCount, unsigned divot, unsigned startOffset, unsigned endOffset);
+ RegisterID* emitLoadVarargs(RegisterID* argCountDst, RegisterID* args);
RegisterID* emitReturn(RegisterID* src);
RegisterID* emitEnd(RegisterID* src) { return emitUnaryNoDstOp(op_end, src); }
RegisterID* emitConstruct(RegisterID* dst, RegisterID* func, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
+ RegisterID* emitStrcat(RegisterID* dst, RegisterID* src, int count);
+ void emitToPrimitive(RegisterID* dst, RegisterID* src);
PassRefPtr<Label> emitLabel(Label*);
PassRefPtr<Label> emitJump(Label* target);
PassRefPtr<Label> emitJumpIfTrue(RegisterID* cond, Label* target);
PassRefPtr<Label> emitJumpIfFalse(RegisterID* cond, Label* target);
+ PassRefPtr<Label> emitJumpIfNotFunctionCall(RegisterID* cond, Label* target);
+ PassRefPtr<Label> emitJumpIfNotFunctionApply(RegisterID* cond, Label* target);
PassRefPtr<Label> emitJumpScopes(Label* target, int targetScopeDepth);
PassRefPtr<Label> emitJumpSubroutine(RegisterID* retAddrDst, Label*);
@@ -308,7 +320,7 @@ namespace JSC {
RegisterID* emitCatch(RegisterID*, Label* start, Label* end);
void emitThrow(RegisterID* exc) { emitUnaryNoDstOp(op_throw, exc); }
- RegisterID* emitNewError(RegisterID* dst, ErrorType type, JSValuePtr message);
+ RegisterID* emitNewError(RegisterID* dst, ErrorType type, JSValue message);
void emitPushNewScope(RegisterID* dst, Identifier& property, RegisterID* value);
RegisterID* emitPushScope(RegisterID* scope);
@@ -317,6 +329,7 @@ namespace JSC {
void emitDebugHook(DebugHookID, int firstLine, int lastLine);
int scopeDepth() { return m_dynamicScopeDepth + m_finallyDepth; }
+ bool hasFinaliser() { return m_finallyDepth != 0; }
void pushFinallyContext(Label* target, RegisterID* returnAddrDst);
void popFinallyContext();
@@ -329,7 +342,11 @@ namespace JSC {
CodeType codeType() const { return m_codeType; }
- void setRegeneratingForExceptionInfo() { m_regeneratingForExceptionInfo = true; }
+ void setRegeneratingForExceptionInfo(CodeBlock* originalCodeBlock)
+ {
+ m_regeneratingForExceptionInfo = true;
+ m_codeBlockBeingRegeneratedFrom = originalCodeBlock;
+ }
private:
void emitOpcode(OpcodeID);
@@ -340,12 +357,7 @@ namespace JSC {
PassRefPtr<Label> emitComplexJumpScopes(Label* target, ControlFlowContext* topScope, ControlFlowContext* bottomScope);
- struct JSValueHashTraits : HashTraits<JSValueEncodedAsPointer*> {
- static void constructDeletedValue(JSValueEncodedAsPointer*& slot) { slot = JSValuePtr::encode(JSImmediate::impossibleValue()); }
- static bool isDeletedValue(JSValueEncodedAsPointer* value) { return value == JSValuePtr::encode(JSImmediate::impossibleValue()); }
- };
-
- typedef HashMap<JSValueEncodedAsPointer*, unsigned, PtrHash<JSValueEncodedAsPointer*>, JSValueHashTraits> JSValueMap;
+ typedef HashMap<EncodedJSValue, unsigned, PtrHash<EncodedJSValue>, JSValueHashTraits> JSValueMap;
struct IdentifierMapIndexHashTraits {
typedef int TraitType;
@@ -357,9 +369,9 @@ namespace JSC {
};
typedef HashMap<RefPtr<UString::Rep>, int, IdentifierRepHash, HashTraits<RefPtr<UString::Rep> >, IdentifierMapIndexHashTraits> IdentifierMap;
- typedef HashMap<double, JSValuePtr> NumberMap;
+ typedef HashMap<double, JSValue> NumberMap;
typedef HashMap<UString::Rep*, JSString*, IdentifierRepHash> IdentifierStringMap;
-
+
RegisterID* emitCall(OpcodeID, RegisterID* dst, RegisterID* func, RegisterID* thisRegister, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
RegisterID* newRegister();
@@ -407,8 +419,8 @@ namespace JSC {
unsigned addConstant(FuncDeclNode*);
unsigned addConstant(FuncExprNode*);
unsigned addConstant(const Identifier&);
- RegisterID* addConstant(JSValuePtr);
- unsigned addUnexpectedConstant(JSValuePtr);
+ RegisterID* addConstant(JSValue);
+ unsigned addUnexpectedConstant(JSValue);
unsigned addRegExp(RegExp*);
Vector<Instruction>& instructions() { return m_codeBlock->instructions(); }
@@ -419,27 +431,29 @@ namespace JSC {
RegisterID* emitThrowExpressionTooDeepException();
+ void createArgumentsIfNecessary();
+
bool m_shouldEmitDebugHooks;
bool m_shouldEmitProfileHooks;
- bool m_regeneratingForExceptionInfo;
-
const ScopeChain* m_scopeChain;
SymbolTable* m_symbolTable;
ScopeNode* m_scopeNode;
CodeBlock* m_codeBlock;
+ // Some of these objects keep pointers to one another. They are arranged
+ // to ensure a sane destruction order that avoids references to freed memory.
HashSet<RefPtr<UString::Rep>, IdentifierRepHash> m_functions;
RegisterID m_ignoredResultRegister;
RegisterID m_thisRegister;
RegisterID m_argumentsRegister;
int m_activationRegisterIndex;
- SegmentedVector<RegisterID, 512> m_calleeRegisters;
- SegmentedVector<RegisterID, 512> m_parameters;
- SegmentedVector<RegisterID, 512> m_globals;
- SegmentedVector<LabelScope, 256> m_labelScopes;
- SegmentedVector<Label, 256> m_labels;
+ SegmentedVector<RegisterID, 32> m_calleeRegisters;
+ SegmentedVector<RegisterID, 32> m_parameters;
+ SegmentedVector<RegisterID, 32> m_globals;
+ SegmentedVector<Label, 32> m_labels;
+ SegmentedVector<LabelScope, 8> m_labelScopes;
RefPtr<RegisterID> m_lastConstant;
int m_finallyDepth;
int m_dynamicScopeDepth;
@@ -452,6 +466,7 @@ namespace JSC {
int m_nextGlobalIndex;
int m_nextParameterIndex;
int m_nextConstantIndex;
+ unsigned m_globalConstantIndex;
int m_globalVarStorageOffset;
@@ -465,13 +480,12 @@ namespace JSC {
OpcodeID m_lastOpcodeID;
-#ifndef NDEBUG
- static bool s_dumpsGeneratedCode;
-#endif
-
unsigned m_emitNodeDepth;
- static const unsigned s_maxEmitNodeDepth = 10000;
+ bool m_regeneratingForExceptionInfo;
+ CodeBlock* m_codeBlockBeingRegeneratedFrom;
+
+ static const unsigned s_maxEmitNodeDepth = 5000;
};
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/config.h b/src/3rdparty/webkit/JavaScriptCore/config.h
index a85178c..cecae47 100644
--- a/src/3rdparty/webkit/JavaScriptCore/config.h
+++ b/src/3rdparty/webkit/JavaScriptCore/config.h
@@ -25,6 +25,16 @@
#include <wtf/Platform.h>
+#if PLATFORM(WIN_OS) && !defined(BUILDING_WX__) && !COMPILER(GCC)
+#if defined(BUILDING_JavaScriptCore) || defined(BUILDING_WTF)
+#define JS_EXPORTDATA __declspec(dllexport)
+#else
+#define JS_EXPORTDATA __declspec(dllimport)
+#endif
+#else
+#define JS_EXPORTDATA
+#endif
+
#if PLATFORM(WIN_OS)
// If we don't define these, they get defined in windef.h.
diff --git a/src/3rdparty/webkit/JavaScriptCore/create_hash_table b/src/3rdparty/webkit/JavaScriptCore/create_hash_table
index 3bd9f76..25d0b02 100755
--- a/src/3rdparty/webkit/JavaScriptCore/create_hash_table
+++ b/src/3rdparty/webkit/JavaScriptCore/create_hash_table
@@ -269,10 +269,6 @@ sub output() {
print " { 0, 0, 0, 0 }\n";
print "};\n\n";
print "extern const struct HashTable $name =\n";
- print "#if ENABLE(PERFECT_HASH_SIZE)\n";
- print " \{ ", $pefectHashSize - 1, ", $nameEntries, 0 \};\n";
- print "#else\n";
print " \{ $compactSize, $compactHashSizeMask, $nameEntries, 0 \};\n";
- print "#endif\n\n";
print "} // namespace\n";
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.cpp b/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.cpp
index a52a542..7d791e7 100644
--- a/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.cpp
@@ -23,6 +23,8 @@
#include "Debugger.h"
#include "JSGlobalObject.h"
+#include "Interpreter.h"
+#include "Parser.h"
namespace JSC {
@@ -51,4 +53,18 @@ void Debugger::detach(JSGlobalObject* globalObject)
globalObject->setDebugger(0);
}
+JSValue evaluateInGlobalCallFrame(const UString& script, JSValue& exception, JSGlobalObject* globalObject)
+{
+ CallFrame* globalCallFrame = globalObject->globalExec();
+
+ int errLine;
+ UString errMsg;
+ SourceCode source = makeSource(script);
+ RefPtr<EvalNode> evalNode = globalObject->globalData()->parser->parse<EvalNode>(globalCallFrame, globalObject->debugger(), source, &errLine, &errMsg);
+ if (!evalNode)
+ return Error::create(globalCallFrame, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url());
+
+ return globalObject->globalData()->interpreter->execute(evalNode.get(), globalCallFrame, globalObject, globalCallFrame->scopeChain(), &exception);
+}
+
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.h b/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.h
index 6af116f..868ea71 100644
--- a/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.h
+++ b/src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.h
@@ -54,6 +54,10 @@ namespace JSC {
HashSet<JSGlobalObject*> m_globalObjects;
};
+ // This method exists only for backwards compatibility with existing
+ // WebScriptDebugger clients
+ JSValue evaluateInGlobalCallFrame(const UString&, JSValue& exception, JSGlobalObject*);
+
} // namespace JSC
#endif // Debugger_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.cpp b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.cpp
new file mode 100644
index 0000000..4b2568f
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.cpp
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "DebuggerActivation.h"
+
+#include "JSActivation.h"
+
+namespace JSC {
+
+DebuggerActivation::DebuggerActivation(JSObject* activation)
+ : JSObject(DebuggerActivation::createStructure(jsNull()))
+{
+ ASSERT(activation);
+ ASSERT(activation->isActivationObject());
+ m_activation = static_cast<JSActivation*>(activation);
+}
+
+void DebuggerActivation::mark()
+{
+ JSObject::mark();
+ if (m_activation && !m_activation->marked())
+ m_activation->mark();
+}
+
+UString DebuggerActivation::className() const
+{
+ return m_activation->className();
+}
+
+bool DebuggerActivation::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
+{
+ return m_activation->getOwnPropertySlot(exec, propertyName, slot);
+}
+
+void DebuggerActivation::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
+{
+ m_activation->put(exec, propertyName, value, slot);
+}
+
+void DebuggerActivation::putWithAttributes(ExecState* exec, const Identifier& propertyName, JSValue value, unsigned attributes)
+{
+ m_activation->putWithAttributes(exec, propertyName, value, attributes);
+}
+
+bool DebuggerActivation::deleteProperty(ExecState* exec, const Identifier& propertyName)
+{
+ return m_activation->deleteProperty(exec, propertyName);
+}
+
+void DebuggerActivation::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames)
+{
+ m_activation->getPropertyNames(exec, propertyNames);
+}
+
+bool DebuggerActivation::getPropertyAttributes(JSC::ExecState* exec, const Identifier& propertyName, unsigned& attributes) const
+{
+ return m_activation->getPropertyAttributes(exec, propertyName, attributes);
+}
+
+void DebuggerActivation::defineGetter(ExecState* exec, const Identifier& propertyName, JSObject* getterFunction)
+{
+ m_activation->defineGetter(exec, propertyName, getterFunction);
+}
+
+void DebuggerActivation::defineSetter(ExecState* exec, const Identifier& propertyName, JSObject* setterFunction)
+{
+ m_activation->defineSetter(exec, propertyName, setterFunction);
+}
+
+JSValue DebuggerActivation::lookupGetter(ExecState* exec, const Identifier& propertyName)
+{
+ return m_activation->lookupGetter(exec, propertyName);
+}
+
+JSValue DebuggerActivation::lookupSetter(ExecState* exec, const Identifier& propertyName)
+{
+ return m_activation->lookupSetter(exec, propertyName);
+}
+
+} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.h b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.h
new file mode 100644
index 0000000..9e1f9f5
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef DebuggerActivation_h
+#define DebuggerActivation_h
+
+#include "JSObject.h"
+
+namespace JSC {
+
+ class JSActivation;
+
+ class DebuggerActivation : public JSObject {
+ public:
+ DebuggerActivation(JSObject*);
+
+ virtual void mark();
+ virtual UString className() const;
+ virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
+ virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
+ virtual void putWithAttributes(ExecState*, const Identifier& propertyName, JSValue, unsigned attributes);
+ virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
+ virtual void getPropertyNames(ExecState*, PropertyNameArray&);
+ virtual bool getPropertyAttributes(ExecState*, const Identifier& propertyName, unsigned& attributes) const;
+ virtual void defineGetter(ExecState*, const Identifier& propertyName, JSObject* getterFunction);
+ virtual void defineSetter(ExecState*, const Identifier& propertyName, JSObject* setterFunction);
+ virtual JSValue lookupGetter(ExecState*, const Identifier& propertyName);
+ virtual JSValue lookupSetter(ExecState*, const Identifier& propertyName);
+
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
+ {
+ return Structure::create(prototype, TypeInfo(ObjectType));
+ }
+
+ private:
+ JSActivation* m_activation;
+ };
+
+} // namespace JSC
+
+#endif // DebuggerActivation_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.cpp b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.cpp
index 27b824c..cd8702b 100644
--- a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.cpp
@@ -46,6 +46,17 @@ const UString* DebuggerCallFrame::functionName() const
return 0;
return &function->name(&m_callFrame->globalData());
}
+
+UString DebuggerCallFrame::calculatedFunctionName() const
+{
+ if (!m_callFrame->codeBlock())
+ return 0;
+
+ JSFunction* function = static_cast<JSFunction*>(m_callFrame->callee());
+ if (!function)
+ return 0;
+ return function->calculatedDisplayName(&m_callFrame->globalData());
+}
DebuggerCallFrame::Type DebuggerCallFrame::type() const
{
@@ -63,10 +74,10 @@ JSObject* DebuggerCallFrame::thisObject() const
return asObject(m_callFrame->thisValue());
}
-JSValuePtr DebuggerCallFrame::evaluate(const UString& script, JSValuePtr& exception) const
+JSValue DebuggerCallFrame::evaluate(const UString& script, JSValue& exception) const
{
if (!m_callFrame->codeBlock())
- return noValue();
+ return JSValue();
int errLine;
UString errMsg;
diff --git a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.h b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.h
index cdf4965..9d377ef 100644
--- a/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.h
+++ b/src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.h
@@ -39,11 +39,10 @@ namespace JSC {
DebuggerCallFrame(CallFrame* callFrame)
: m_callFrame(callFrame)
- , m_exception(noValue())
{
}
- DebuggerCallFrame(CallFrame* callFrame, JSValuePtr exception)
+ DebuggerCallFrame(CallFrame* callFrame, JSValue exception)
: m_callFrame(callFrame)
, m_exception(exception)
{
@@ -52,14 +51,15 @@ namespace JSC {
JSGlobalObject* dynamicGlobalObject() const { return m_callFrame->dynamicGlobalObject(); }
const ScopeChainNode* scopeChain() const { return m_callFrame->scopeChain(); }
const UString* functionName() const;
+ UString calculatedFunctionName() const;
Type type() const;
JSObject* thisObject() const;
- JSValuePtr evaluate(const UString&, JSValuePtr& exception) const;
- JSValuePtr exception() const { return m_exception; }
+ JSValue evaluate(const UString&, JSValue& exception) const;
+ JSValue exception() const { return m_exception; }
private:
CallFrame* m_callFrame;
- JSValuePtr m_exception;
+ JSValue m_exception;
};
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/docs/make-bytecode-docs.pl b/src/3rdparty/webkit/JavaScriptCore/docs/make-bytecode-docs.pl
index 0be22eb..9494d1b 100755
--- a/src/3rdparty/webkit/JavaScriptCore/docs/make-bytecode-docs.pl
+++ b/src/3rdparty/webkit/JavaScriptCore/docs/make-bytecode-docs.pl
@@ -10,9 +10,9 @@ my @undocumented = ();
print OUTPUT "<style>p code \{ font-size: 14px; \}</style>\n";
while (<MACHINE>) {
- if (/^ *BEGIN_OPCODE/) {
+ if (/^ *DEFINE_OPCODE/) {
chomp;
- s/^ *BEGIN_OPCODE\(op_//;
+ s/^ *DEFINE_OPCODE\(op_//;
s/\).*$//;
my $opcode = $_;
$_ = <MACHINE>;
diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/ArrayPrototype.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/ArrayPrototype.lut.h
index 59dd35f..2a7c98f 100644
--- a/src/3rdparty/webkit/JavaScriptCore/generated/ArrayPrototype.lut.h
+++ b/src/3rdparty/webkit/JavaScriptCore/generated/ArrayPrototype.lut.h
@@ -4,7 +4,7 @@
namespace JSC {
-static const struct HashTableValue arrayTableValues[20] = {
+static const struct HashTableValue arrayTableValues[22] = {
{ "toString", DontEnum|Function, (intptr_t)arrayProtoFuncToString, (intptr_t)0 },
{ "toLocaleString", DontEnum|Function, (intptr_t)arrayProtoFuncToLocaleString, (intptr_t)0 },
{ "concat", DontEnum|Function, (intptr_t)arrayProtoFuncConcat, (intptr_t)1 },
@@ -23,15 +23,12 @@ static const struct HashTableValue arrayTableValues[20] = {
{ "indexOf", DontEnum|Function, (intptr_t)arrayProtoFuncIndexOf, (intptr_t)1 },
{ "lastIndexOf", DontEnum|Function, (intptr_t)arrayProtoFuncLastIndexOf, (intptr_t)1 },
{ "filter", DontEnum|Function, (intptr_t)arrayProtoFuncFilter, (intptr_t)1 },
+ { "reduce", DontEnum|Function, (intptr_t)arrayProtoFuncReduce, (intptr_t)1 },
+ { "reduceRight", DontEnum|Function, (intptr_t)arrayProtoFuncReduceRight, (intptr_t)1 },
{ "map", DontEnum|Function, (intptr_t)arrayProtoFuncMap, (intptr_t)1 },
{ 0, 0, 0, 0 }
};
extern const struct HashTable arrayTable =
-#if ENABLE(PERFECT_HASH_SIZE)
- { 127, arrayTableValues, 0 };
-#else
{ 65, 63, arrayTableValues, 0 };
-#endif
-
} // namespace
diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/DatePrototype.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/DatePrototype.lut.h
index d70845a..d83e680 100644
--- a/src/3rdparty/webkit/JavaScriptCore/generated/DatePrototype.lut.h
+++ b/src/3rdparty/webkit/JavaScriptCore/generated/DatePrototype.lut.h
@@ -12,7 +12,7 @@ static const struct HashTableValue dateTableValues[45] = {
{ "toLocaleString", DontEnum|Function, (intptr_t)dateProtoFuncToLocaleString, (intptr_t)0 },
{ "toLocaleDateString", DontEnum|Function, (intptr_t)dateProtoFuncToLocaleDateString, (intptr_t)0 },
{ "toLocaleTimeString", DontEnum|Function, (intptr_t)dateProtoFuncToLocaleTimeString, (intptr_t)0 },
- { "valueOf", DontEnum|Function, (intptr_t)dateProtoFuncValueOf, (intptr_t)0 },
+ { "valueOf", DontEnum|Function, (intptr_t)dateProtoFuncGetTime, (intptr_t)0 },
{ "getTime", DontEnum|Function, (intptr_t)dateProtoFuncGetTime, (intptr_t)0 },
{ "getFullYear", DontEnum|Function, (intptr_t)dateProtoFuncGetFullYear, (intptr_t)0 },
{ "getUTCFullYear", DontEnum|Function, (intptr_t)dateProtoFuncGetUTCFullYear, (intptr_t)0 },
@@ -53,10 +53,5 @@ static const struct HashTableValue dateTableValues[45] = {
};
extern const struct HashTable dateTable =
-#if ENABLE(PERFECT_HASH_SIZE)
- { 2047, dateTableValues, 0 };
-#else
{ 134, 127, dateTableValues, 0 };
-#endif
-
} // namespace
diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp b/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp
index 1652b24..bc5ebe4 100644
--- a/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp
@@ -1,24 +1,23 @@
-/* A Bison parser, made by GNU Bison 2.3. */
-/* Skeleton implementation for Bison's Yacc-like parsers in C
+/* A Bison parser, made by GNU Bison 2.4.1. */
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
+
+ This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -29,7 +28,7 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
@@ -47,7 +46,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.3"
+#define YYBISON_VERSION "2.4.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -55,159 +54,28 @@
/* Pure parsers. */
#define YYPURE 1
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
/* Using locations. */
#define YYLSP_NEEDED 1
/* Substitute the variable and function names. */
-#define yyparse jscyyparse
-#define yylex jscyylex
-#define yyerror jscyyerror
-#define yylval jscyylval
-#define yychar jscyychar
-#define yydebug jscyydebug
-#define yynerrs jscyynerrs
-#define yylloc jscyylloc
-
-/* Tokens. */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- NULLTOKEN = 258,
- TRUETOKEN = 259,
- FALSETOKEN = 260,
- BREAK = 261,
- CASE = 262,
- DEFAULT = 263,
- FOR = 264,
- NEW = 265,
- VAR = 266,
- CONSTTOKEN = 267,
- CONTINUE = 268,
- FUNCTION = 269,
- RETURN = 270,
- VOIDTOKEN = 271,
- DELETETOKEN = 272,
- IF = 273,
- THISTOKEN = 274,
- DO = 275,
- WHILE = 276,
- INTOKEN = 277,
- INSTANCEOF = 278,
- TYPEOF = 279,
- SWITCH = 280,
- WITH = 281,
- RESERVED = 282,
- THROW = 283,
- TRY = 284,
- CATCH = 285,
- FINALLY = 286,
- DEBUGGER = 287,
- IF_WITHOUT_ELSE = 288,
- ELSE = 289,
- EQEQ = 290,
- NE = 291,
- STREQ = 292,
- STRNEQ = 293,
- LE = 294,
- GE = 295,
- OR = 296,
- AND = 297,
- PLUSPLUS = 298,
- MINUSMINUS = 299,
- LSHIFT = 300,
- RSHIFT = 301,
- URSHIFT = 302,
- PLUSEQUAL = 303,
- MINUSEQUAL = 304,
- MULTEQUAL = 305,
- DIVEQUAL = 306,
- LSHIFTEQUAL = 307,
- RSHIFTEQUAL = 308,
- URSHIFTEQUAL = 309,
- ANDEQUAL = 310,
- MODEQUAL = 311,
- XOREQUAL = 312,
- OREQUAL = 313,
- OPENBRACE = 314,
- CLOSEBRACE = 315,
- NUMBER = 316,
- IDENT = 317,
- STRING = 318,
- AUTOPLUSPLUS = 319,
- AUTOMINUSMINUS = 320
- };
-#endif
-/* Tokens. */
-#define NULLTOKEN 258
-#define TRUETOKEN 259
-#define FALSETOKEN 260
-#define BREAK 261
-#define CASE 262
-#define DEFAULT 263
-#define FOR 264
-#define NEW 265
-#define VAR 266
-#define CONSTTOKEN 267
-#define CONTINUE 268
-#define FUNCTION 269
-#define RETURN 270
-#define VOIDTOKEN 271
-#define DELETETOKEN 272
-#define IF 273
-#define THISTOKEN 274
-#define DO 275
-#define WHILE 276
-#define INTOKEN 277
-#define INSTANCEOF 278
-#define TYPEOF 279
-#define SWITCH 280
-#define WITH 281
-#define RESERVED 282
-#define THROW 283
-#define TRY 284
-#define CATCH 285
-#define FINALLY 286
-#define DEBUGGER 287
-#define IF_WITHOUT_ELSE 288
-#define ELSE 289
-#define EQEQ 290
-#define NE 291
-#define STREQ 292
-#define STRNEQ 293
-#define LE 294
-#define GE 295
-#define OR 296
-#define AND 297
-#define PLUSPLUS 298
-#define MINUSMINUS 299
-#define LSHIFT 300
-#define RSHIFT 301
-#define URSHIFT 302
-#define PLUSEQUAL 303
-#define MINUSEQUAL 304
-#define MULTEQUAL 305
-#define DIVEQUAL 306
-#define LSHIFTEQUAL 307
-#define RSHIFTEQUAL 308
-#define URSHIFTEQUAL 309
-#define ANDEQUAL 310
-#define MODEQUAL 311
-#define XOREQUAL 312
-#define OREQUAL 313
-#define OPENBRACE 314
-#define CLOSEBRACE 315
-#define NUMBER 316
-#define IDENT 317
-#define STRING 318
-#define AUTOPLUSPLUS 319
-#define AUTOMINUSMINUS 320
-
-
-
+#define yyparse jscyyparse
+#define yylex jscyylex
+#define yyerror jscyyerror
+#define yylval jscyylval
+#define yychar jscyychar
+#define yydebug jscyydebug
+#define yynerrs jscyynerrs
+#define yylloc jscyylloc
/* Copy the first part of user declarations. */
+
+/* Line 189 of yacc.c */
#line 3 "../parser/Grammar.y"
@@ -238,7 +106,7 @@
#include <stdlib.h>
#include "JSValue.h"
#include "JSObject.h"
-#include "Nodes.h"
+#include "NodeConstructors.h"
#include "Lexer.h"
#include "JSString.h"
#include "JSGlobalData.h"
@@ -308,24 +176,24 @@ static ExpressionNode* combineVarInitializers(void*, ExpressionNode* list, Assig
#define YYPARSE_PARAM globalPtr
#define YYLEX_PARAM globalPtr
-template <typename T> NodeDeclarationInfo<T> createNodeDeclarationInfo(T node, ParserRefCountedData<DeclarationStacks::VarStack>* varDecls,
- ParserRefCountedData<DeclarationStacks::FunctionStack>* funcDecls,
+template <typename T> NodeDeclarationInfo<T> createNodeDeclarationInfo(T node, ParserArenaData<DeclarationStacks::VarStack>* varDecls,
+ ParserArenaData<DeclarationStacks::FunctionStack>* funcDecls,
CodeFeatures info,
int numConstants)
{
ASSERT((info & ~AllFeatures) == 0);
- NodeDeclarationInfo<T> result = {node, varDecls, funcDecls, info, numConstants};
+ NodeDeclarationInfo<T> result = { node, varDecls, funcDecls, info, numConstants };
return result;
}
template <typename T> NodeInfo<T> createNodeInfo(T node, CodeFeatures info, int numConstants)
{
ASSERT((info & ~AllFeatures) == 0);
- NodeInfo<T> result = {node, info, numConstants};
+ NodeInfo<T> result = { node, info, numConstants };
return result;
}
-template <typename T> T mergeDeclarationLists(T decls1, T decls2)
+template <typename T> inline T mergeDeclarationLists(T decls1, T decls2)
{
// decls1 or both are null
if (!decls1)
@@ -337,32 +205,35 @@ template <typename T> T mergeDeclarationLists(T decls1, T decls2)
// Both are non-null
decls1->data.append(decls2->data);
- // We manually release the declaration lists to avoid accumulating many many
- // unused heap allocated vectors
- decls2->ref();
- decls2->deref();
+ // Manually release as much as possible from the now-defunct declaration lists
+ // to avoid accumulating so many unused heap allocated vectors.
+ decls2->data.clear();
+
return decls1;
}
-static void appendToVarDeclarationList(void* globalPtr, ParserRefCountedData<DeclarationStacks::VarStack>*& varDecls, const Identifier& ident, unsigned attrs)
+static void appendToVarDeclarationList(void* globalPtr, ParserArenaData<DeclarationStacks::VarStack>*& varDecls, const Identifier& ident, unsigned attrs)
{
if (!varDecls)
- varDecls = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ varDecls = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
varDecls->data.append(make_pair(ident, attrs));
}
-static inline void appendToVarDeclarationList(void* globalPtr, ParserRefCountedData<DeclarationStacks::VarStack>*& varDecls, ConstDeclNode* decl)
+static inline void appendToVarDeclarationList(void* globalPtr, ParserArenaData<DeclarationStacks::VarStack>*& varDecls, ConstDeclNode* decl)
{
unsigned attrs = DeclarationStacks::IsConstant;
- if (decl->m_init)
+ if (decl->hasInitializer())
attrs |= DeclarationStacks::HasInitializer;
- appendToVarDeclarationList(globalPtr, varDecls, decl->m_ident, attrs);
+ appendToVarDeclarationList(globalPtr, varDecls, decl->ident(), attrs);
}
+/* Line 189 of yacc.c */
+#line 236 "JavaScriptCore/tmp/../generated/Grammar.tab.c"
+
/* Enabling traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
@@ -381,10 +252,88 @@ static inline void appendToVarDeclarationList(void* globalPtr, ParserRefCountedD
# define YYTOKEN_TABLE 0
#endif
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ NULLTOKEN = 258,
+ TRUETOKEN = 259,
+ FALSETOKEN = 260,
+ BREAK = 261,
+ CASE = 262,
+ DEFAULT = 263,
+ FOR = 264,
+ NEW = 265,
+ VAR = 266,
+ CONSTTOKEN = 267,
+ CONTINUE = 268,
+ FUNCTION = 269,
+ RETURN = 270,
+ VOIDTOKEN = 271,
+ DELETETOKEN = 272,
+ IF = 273,
+ THISTOKEN = 274,
+ DO = 275,
+ WHILE = 276,
+ INTOKEN = 277,
+ INSTANCEOF = 278,
+ TYPEOF = 279,
+ SWITCH = 280,
+ WITH = 281,
+ RESERVED = 282,
+ THROW = 283,
+ TRY = 284,
+ CATCH = 285,
+ FINALLY = 286,
+ DEBUGGER = 287,
+ IF_WITHOUT_ELSE = 288,
+ ELSE = 289,
+ EQEQ = 290,
+ NE = 291,
+ STREQ = 292,
+ STRNEQ = 293,
+ LE = 294,
+ GE = 295,
+ OR = 296,
+ AND = 297,
+ PLUSPLUS = 298,
+ MINUSMINUS = 299,
+ LSHIFT = 300,
+ RSHIFT = 301,
+ URSHIFT = 302,
+ PLUSEQUAL = 303,
+ MINUSEQUAL = 304,
+ MULTEQUAL = 305,
+ DIVEQUAL = 306,
+ LSHIFTEQUAL = 307,
+ RSHIFTEQUAL = 308,
+ URSHIFTEQUAL = 309,
+ ANDEQUAL = 310,
+ MODEQUAL = 311,
+ XOREQUAL = 312,
+ OREQUAL = 313,
+ OPENBRACE = 314,
+ CLOSEBRACE = 315,
+ NUMBER = 316,
+ IDENT = 317,
+ STRING = 318,
+ AUTOPLUSPLUS = 319,
+ AUTOMINUSMINUS = 320
+ };
+#endif
+
+
+
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 157 "../parser/Grammar.y"
{
+
+/* Line 214 of yacc.c */
+#line 157 "../parser/Grammar.y"
+
int intValue;
double doubleValue;
Identifier* ident;
@@ -414,13 +363,15 @@ typedef union YYSTYPE
ParameterListInfo parameterList;
Operator op;
-}
-/* Line 187 of yacc.c. */
-#line 420 "Grammar.tab.c"
- YYSTYPE;
+
+
+
+/* Line 214 of yacc.c */
+#line 371 "JavaScriptCore/tmp/../generated/Grammar.tab.c"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
#endif
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
@@ -440,8 +391,8 @@ typedef struct YYLTYPE
/* Copy the second part of user declarations. */
-/* Line 216 of yacc.c. */
-#line 445 "Grammar.tab.c"
+/* Line 264 of yacc.c */
+#line 396 "JavaScriptCore/tmp/../generated/Grammar.tab.c"
#ifdef short
# undef short
@@ -516,14 +467,14 @@ typedef short int yytype_int16;
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static int
-YYID (int i)
+YYID (int yyi)
#else
static int
-YYID (i)
- int i;
+YYID (yyi)
+ int yyi;
#endif
{
- return i;
+ return yyi;
}
#endif
@@ -605,9 +556,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- yytype_int16 yyss;
- YYSTYPE yyvs;
- YYLTYPE yyls;
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+ YYLTYPE yyls_alloc;
};
/* The size of the maximum gap between one aligned stack and the next. */
@@ -642,12 +593,12 @@ union yyalloc
elements in the stack, and YYPTR gives the new location of the
stack. Advance YYPTR to a properly aligned location for the next
stack. */
-# define YYSTACK_RELOCATE(Stack) \
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
@@ -1019,42 +970,42 @@ static const yytype_uint16 yyrline[] =
804, 805, 806, 807, 808, 809, 810, 811, 815, 817,
822, 824, 830, 837, 846, 854, 867, 874, 883, 891,
904, 906, 912, 920, 932, 933, 937, 941, 945, 949,
- 951, 956, 959, 968, 970, 972, 974, 980, 987, 996,
- 1002, 1013, 1014, 1018, 1019, 1023, 1027, 1031, 1035, 1042,
- 1045, 1048, 1051, 1057, 1060, 1063, 1066, 1072, 1078, 1084,
- 1085, 1094, 1095, 1099, 1105, 1115, 1116, 1120, 1121, 1125,
- 1131, 1135, 1142, 1148, 1154, 1164, 1166, 1171, 1172, 1183,
- 1184, 1191, 1192, 1202, 1205, 1211, 1212, 1216, 1217, 1222,
- 1229, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1250, 1251,
- 1252, 1253, 1254, 1258, 1259, 1263, 1264, 1265, 1267, 1271,
- 1272, 1273, 1274, 1275, 1279, 1280, 1281, 1285, 1286, 1289,
- 1291, 1295, 1296, 1300, 1301, 1302, 1303, 1304, 1308, 1309,
- 1310, 1311, 1315, 1316, 1320, 1321, 1325, 1326, 1327, 1328,
- 1332, 1333, 1334, 1335, 1339, 1340, 1344, 1345, 1349, 1350,
- 1354, 1355, 1359, 1360, 1361, 1365, 1366, 1367, 1371, 1372,
- 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1384,
- 1385, 1389, 1390, 1394, 1395, 1396, 1397, 1401, 1402, 1403,
- 1404, 1408, 1409, 1410, 1414, 1415, 1416, 1420, 1421, 1422,
- 1423, 1427, 1428, 1429, 1430, 1434, 1435, 1436, 1437, 1438,
- 1439, 1440, 1444, 1445, 1446, 1447, 1448, 1449, 1453, 1454,
- 1455, 1456, 1457, 1458, 1459, 1463, 1464, 1465, 1466, 1467,
- 1471, 1472, 1473, 1474, 1475, 1479, 1480, 1481, 1482, 1483,
- 1487, 1488, 1492, 1493, 1497, 1498, 1502, 1503, 1507, 1508,
- 1512, 1513, 1517, 1518, 1522, 1523, 1527, 1528, 1532, 1533,
- 1537, 1538, 1542, 1543, 1547, 1548, 1552, 1553, 1557, 1558,
- 1562, 1563, 1567, 1568, 1572, 1573, 1577, 1578, 1582, 1583,
- 1587, 1588, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599,
- 1600, 1601, 1602, 1603, 1607, 1608, 1612, 1613, 1617, 1618,
- 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631,
- 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1642, 1643, 1647,
- 1648, 1652, 1653, 1654, 1655, 1659, 1660, 1661, 1662, 1666,
- 1667, 1671, 1672, 1676, 1677, 1681, 1685, 1689, 1693, 1694,
- 1698, 1699, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710,
- 1713, 1715, 1718, 1720, 1724, 1725, 1726, 1727, 1731, 1732,
- 1733, 1734, 1738, 1739, 1740, 1741, 1745, 1749, 1753, 1754,
- 1757, 1759, 1763, 1764, 1768, 1769, 1773, 1774, 1778, 1782,
- 1783, 1787, 1788, 1789, 1793, 1794, 1798, 1799, 1803, 1804,
- 1805, 1806, 1810, 1811, 1814, 1816, 1820, 1821
+ 951, 956, 959, 969, 971, 973, 975, 981, 988, 997,
+ 1003, 1014, 1015, 1019, 1020, 1024, 1028, 1032, 1036, 1043,
+ 1046, 1049, 1052, 1058, 1061, 1064, 1067, 1073, 1079, 1085,
+ 1086, 1095, 1096, 1100, 1106, 1116, 1117, 1121, 1122, 1126,
+ 1132, 1136, 1143, 1149, 1155, 1165, 1167, 1172, 1173, 1184,
+ 1185, 1192, 1193, 1203, 1206, 1212, 1213, 1217, 1218, 1223,
+ 1230, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1251, 1252,
+ 1253, 1254, 1255, 1259, 1260, 1264, 1265, 1266, 1268, 1272,
+ 1273, 1274, 1275, 1276, 1280, 1281, 1282, 1286, 1287, 1290,
+ 1292, 1296, 1297, 1301, 1302, 1303, 1304, 1305, 1309, 1310,
+ 1311, 1312, 1316, 1317, 1321, 1322, 1326, 1327, 1328, 1329,
+ 1333, 1334, 1335, 1336, 1340, 1341, 1345, 1346, 1350, 1351,
+ 1355, 1356, 1360, 1361, 1362, 1366, 1367, 1368, 1372, 1373,
+ 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1385,
+ 1386, 1390, 1391, 1395, 1396, 1397, 1398, 1402, 1403, 1404,
+ 1405, 1409, 1410, 1411, 1415, 1416, 1417, 1421, 1422, 1423,
+ 1424, 1428, 1429, 1430, 1431, 1435, 1436, 1437, 1438, 1439,
+ 1440, 1441, 1445, 1446, 1447, 1448, 1449, 1450, 1454, 1455,
+ 1456, 1457, 1458, 1459, 1460, 1464, 1465, 1466, 1467, 1468,
+ 1472, 1473, 1474, 1475, 1476, 1480, 1481, 1482, 1483, 1484,
+ 1488, 1489, 1493, 1494, 1498, 1499, 1503, 1504, 1508, 1509,
+ 1513, 1514, 1518, 1519, 1523, 1524, 1528, 1529, 1533, 1534,
+ 1538, 1539, 1543, 1544, 1548, 1549, 1553, 1554, 1558, 1559,
+ 1563, 1564, 1568, 1569, 1573, 1574, 1578, 1579, 1583, 1584,
+ 1588, 1589, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600,
+ 1601, 1602, 1603, 1604, 1608, 1609, 1613, 1614, 1618, 1619,
+ 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632,
+ 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1643, 1644, 1648,
+ 1649, 1653, 1654, 1655, 1656, 1660, 1661, 1662, 1663, 1667,
+ 1668, 1672, 1673, 1677, 1678, 1682, 1686, 1690, 1694, 1695,
+ 1699, 1700, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711,
+ 1714, 1716, 1719, 1721, 1725, 1726, 1727, 1728, 1732, 1733,
+ 1734, 1735, 1739, 1740, 1741, 1742, 1746, 1750, 1754, 1755,
+ 1758, 1760, 1764, 1765, 1769, 1770, 1774, 1775, 1779, 1783,
+ 1784, 1788, 1789, 1790, 1794, 1795, 1799, 1800, 1804, 1805,
+ 1806, 1807, 1811, 1812, 1815, 1817, 1821, 1822
};
#endif
@@ -2361,17 +2312,20 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp)
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
#else
static void
-yy_stack_print (bottom, top)
- yytype_int16 *bottom;
- yytype_int16 *top;
+yy_stack_print (yybottom, yytop)
+ yytype_int16 *yybottom;
+ yytype_int16 *yytop;
#endif
{
YYFPRINTF (stderr, "Stack now");
- for (; bottom <= top; ++bottom)
- YYFPRINTF (stderr, " %d", *bottom);
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
YYFPRINTF (stderr, "\n");
}
@@ -2406,11 +2360,11 @@ yy_reduce_print (yyvsp, yylsp, yyrule)
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
- fprintf (stderr, " $%d = ", yyi + 1);
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
&(yyvsp[(yyi + 1) - (yynrhs)])
, &(yylsp[(yyi + 1) - (yynrhs)]) );
- fprintf (stderr, "\n");
+ YYFPRINTF (stderr, "\n");
}
}
@@ -2692,10 +2646,8 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
break;
}
}
-
/* Prevent warnings from -Wmissing-prototypes. */
-
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
int yyparse (void *YYPARSE_PARAM);
@@ -2714,10 +2666,9 @@ int yyparse ();
-
-/*----------.
-| yyparse. |
-`----------*/
+/*-------------------------.
+| yyparse or yypush_parse. |
+`-------------------------*/
#ifdef YYPARSE_PARAM
#if (defined __STDC__ || defined __C99__FUNC__ \
@@ -2741,88 +2692,97 @@ yyparse ()
#endif
#endif
{
- /* The look-ahead symbol. */
+/* The lookahead symbol. */
int yychar;
-/* The semantic value of the look-ahead symbol. */
+/* The semantic value of the lookahead symbol. */
YYSTYPE yylval;
-/* Number of syntax errors so far. */
-int yynerrs;
-/* Location data for the look-ahead symbol. */
+/* Location data for the lookahead symbol. */
YYLTYPE yylloc;
- int yystate;
- int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Look-ahead token as an internal (translated) token number. */
- int yytoken = 0;
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+ /* Number of syntax errors so far. */
+ int yynerrs;
- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
+ /* The stacks and their tools:
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+ `yyls': related to locations.
- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss = yyssa;
- yytype_int16 *yyssp;
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- YYSTYPE *yyvsp;
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
- /* The location stack. */
- YYLTYPE yylsa[YYINITDEPTH];
- YYLTYPE *yyls = yylsa;
- YYLTYPE *yylsp;
- /* The locations where the error started and ended. */
- YYLTYPE yyerror_range[2];
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
+ /* The location stack. */
+ YYLTYPE yylsa[YYINITDEPTH];
+ YYLTYPE *yyls;
+ YYLTYPE *yylsp;
- YYSIZE_T yystacksize = YYINITDEPTH;
+ /* The locations where the error started and ended. */
+ YYLTYPE yyerror_range[2];
+ YYSIZE_T yystacksize;
+
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
YYLTYPE yyloc;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
+
/* The number of symbols on the RHS of the reduced rule.
Keep to zero when no symbol should be popped. */
int yylen = 0;
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
+ yyls = yylsa;
+ yystacksize = YYINITDEPTH;
+
YYDPRINTF ((stderr, "Starting parse\n"));
yystate = 0;
yyerrstatus = 0;
yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
+ yychar = YYEMPTY; /* Cause a token to be read. */
/* Initialize stack pointers.
Waste one element of value and location stack
so that they stay on the same level as the state stack.
The wasted elements are never initialized. */
-
yyssp = yyss;
yyvsp = yyvs;
yylsp = yyls;
+
#if YYLTYPE_IS_TRIVIAL
/* Initialize the default location before parsing starts. */
yylloc.first_line = yylloc.last_line = 1;
- yylloc.first_column = yylloc.last_column = 0;
+ yylloc.first_column = yylloc.last_column = 1;
#endif
goto yysetstate;
@@ -2861,6 +2821,7 @@ YYLTYPE yylloc;
&yyvs1, yysize * sizeof (*yyvsp),
&yyls1, yysize * sizeof (*yylsp),
&yystacksize);
+
yyls = yyls1;
yyss = yyss1;
yyvs = yyvs1;
@@ -2882,9 +2843,9 @@ YYLTYPE yylloc;
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
if (! yyptr)
goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
- YYSTACK_RELOCATE (yyls);
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+ YYSTACK_RELOCATE (yyls_alloc, yyls);
# undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
@@ -2905,6 +2866,9 @@ YYLTYPE yylloc;
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
goto yybackup;
/*-----------.
@@ -2913,16 +2877,16 @@ YYLTYPE yylloc;
yybackup:
/* Do appropriate processing given the current state. Read a
- look-ahead token if we need one and don't already have one. */
+ lookahead token if we need one and don't already have one. */
- /* First try to decide what to do without reference to look-ahead token. */
+ /* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
if (yyn == YYPACT_NINF)
goto yydefault;
- /* Not known => get a look-ahead token if don't already have one. */
+ /* Not known => get a lookahead token if don't already have one. */
- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
@@ -2954,20 +2918,16 @@ yybackup:
goto yyreduce;
}
- if (yyn == YYFINAL)
- YYACCEPT;
-
/* Count tokens shifted since error; after three, turn off error
status. */
if (yyerrstatus)
yyerrstatus--;
- /* Shift the look-ahead token. */
+ /* Shift the lookahead token. */
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
- /* Discard the shifted token unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
yystate = yyn;
*++yyvsp = yylval;
@@ -3008,37 +2968,49 @@ yyreduce:
switch (yyn)
{
case 2:
+
+/* Line 1455 of yacc.c */
#line 290 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new NullNode(GLOBAL_DATA), 0, 1); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NullNode(GLOBAL_DATA), 0, 1); ;}
break;
case 3:
+
+/* Line 1455 of yacc.c */
#line 291 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BooleanNode(GLOBAL_DATA, true), 0, 1); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BooleanNode(GLOBAL_DATA, true), 0, 1); ;}
break;
case 4:
+
+/* Line 1455 of yacc.c */
#line 292 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BooleanNode(GLOBAL_DATA, false), 0, 1); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BooleanNode(GLOBAL_DATA, false), 0, 1); ;}
break;
case 5:
+
+/* Line 1455 of yacc.c */
#line 293 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeNumberNode(GLOBAL_DATA, (yyvsp[(1) - (1)].doubleValue)), 0, 1); ;}
break;
case 6:
+
+/* Line 1455 of yacc.c */
#line 294 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new StringNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident)), 0, 1); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StringNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident)), 0, 1); ;}
break;
case 7:
+
+/* Line 1455 of yacc.c */
#line 295 "../parser/Grammar.y"
{
Lexer& l = *LEXER;
if (!l.scanRegExp())
YYABORT;
- RegExpNode* node = new RegExpNode(GLOBAL_DATA, l.pattern(), l.flags());
+ RegExpNode* node = new (GLOBAL_DATA) RegExpNode(GLOBAL_DATA, l.pattern(), l.flags());
int size = l.pattern().size() + 2; // + 2 for the two /'s
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (1)]).first_column, (yylsp[(1) - (1)]).first_column + size, (yylsp[(1) - (1)]).first_column + size);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, 0, 0);
@@ -3046,12 +3018,14 @@ yyreduce:
break;
case 8:
+
+/* Line 1455 of yacc.c */
#line 304 "../parser/Grammar.y"
{
Lexer& l = *LEXER;
if (!l.scanRegExp())
YYABORT;
- RegExpNode* node = new RegExpNode(GLOBAL_DATA, "=" + l.pattern(), l.flags());
+ RegExpNode* node = new (GLOBAL_DATA) RegExpNode(GLOBAL_DATA, "=" + l.pattern(), l.flags());
int size = l.pattern().size() + 2; // + 2 for the two /'s
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (1)]).first_column, (yylsp[(1) - (1)]).first_column + size, (yylsp[(1) - (1)]).first_column + size);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, 0, 0);
@@ -3059,26 +3033,36 @@ yyreduce:
break;
case 9:
+
+/* Line 1455 of yacc.c */
#line 316 "../parser/Grammar.y"
- { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new PropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 10:
+
+/* Line 1455 of yacc.c */
#line 317 "../parser/Grammar.y"
- { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new PropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 11:
+
+/* Line 1455 of yacc.c */
#line 318 "../parser/Grammar.y"
- { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new PropertyNode(GLOBAL_DATA, Identifier(GLOBAL_DATA, UString::from((yyvsp[(1) - (3)].doubleValue))), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, Identifier(GLOBAL_DATA, UString::from((yyvsp[(1) - (3)].doubleValue))), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 12:
+
+/* Line 1455 of yacc.c */
#line 319 "../parser/Grammar.y"
{ (yyval.propertyNode) = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(globalPtr, *(yyvsp[(1) - (7)].ident), *(yyvsp[(2) - (7)].ident), 0, (yyvsp[(6) - (7)].functionBodyNode), LEXER->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line)), ClosureFeature, 0); DBG((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)])); if (!(yyval.propertyNode).m_node) YYABORT; ;}
break;
case 13:
+
+/* Line 1455 of yacc.c */
#line 321 "../parser/Grammar.y"
{
(yyval.propertyNode) = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(globalPtr, *(yyvsp[(1) - (8)].ident), *(yyvsp[(2) - (8)].ident), (yyvsp[(4) - (8)].parameterList).m_node.head, (yyvsp[(7) - (8)].functionBodyNode), LEXER->sourceCode((yyvsp[(6) - (8)].intValue), (yyvsp[(8) - (8)].intValue), (yylsp[(6) - (8)]).first_line)), (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, 0);
@@ -3091,644 +3075,876 @@ yyreduce:
break;
case 14:
+
+/* Line 1455 of yacc.c */
#line 332 "../parser/Grammar.y"
- { (yyval.propertyList).m_node.head = new PropertyListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].propertyNode).m_node);
+ { (yyval.propertyList).m_node.head = new (GLOBAL_DATA) PropertyListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].propertyNode).m_node);
(yyval.propertyList).m_node.tail = (yyval.propertyList).m_node.head;
(yyval.propertyList).m_features = (yyvsp[(1) - (1)].propertyNode).m_features;
(yyval.propertyList).m_numConstants = (yyvsp[(1) - (1)].propertyNode).m_numConstants; ;}
break;
case 15:
+
+/* Line 1455 of yacc.c */
#line 336 "../parser/Grammar.y"
{ (yyval.propertyList).m_node.head = (yyvsp[(1) - (3)].propertyList).m_node.head;
- (yyval.propertyList).m_node.tail = new PropertyListNode(GLOBAL_DATA, (yyvsp[(3) - (3)].propertyNode).m_node, (yyvsp[(1) - (3)].propertyList).m_node.tail);
+ (yyval.propertyList).m_node.tail = new (GLOBAL_DATA) PropertyListNode(GLOBAL_DATA, (yyvsp[(3) - (3)].propertyNode).m_node, (yyvsp[(1) - (3)].propertyList).m_node.tail);
(yyval.propertyList).m_features = (yyvsp[(1) - (3)].propertyList).m_features | (yyvsp[(3) - (3)].propertyNode).m_features;
(yyval.propertyList).m_numConstants = (yyvsp[(1) - (3)].propertyList).m_numConstants + (yyvsp[(3) - (3)].propertyNode).m_numConstants; ;}
break;
case 17:
+
+/* Line 1455 of yacc.c */
#line 344 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ObjectLiteralNode(GLOBAL_DATA), 0, 0); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA), 0, 0); ;}
break;
case 18:
+
+/* Line 1455 of yacc.c */
#line 345 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ObjectLiteralNode(GLOBAL_DATA, (yyvsp[(2) - (3)].propertyList).m_node.head), (yyvsp[(2) - (3)].propertyList).m_features, (yyvsp[(2) - (3)].propertyList).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA, (yyvsp[(2) - (3)].propertyList).m_node.head), (yyvsp[(2) - (3)].propertyList).m_features, (yyvsp[(2) - (3)].propertyList).m_numConstants); ;}
break;
case 19:
+
+/* Line 1455 of yacc.c */
#line 347 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ObjectLiteralNode(GLOBAL_DATA, (yyvsp[(2) - (4)].propertyList).m_node.head), (yyvsp[(2) - (4)].propertyList).m_features, (yyvsp[(2) - (4)].propertyList).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA, (yyvsp[(2) - (4)].propertyList).m_node.head), (yyvsp[(2) - (4)].propertyList).m_features, (yyvsp[(2) - (4)].propertyList).m_numConstants); ;}
break;
case 20:
+
+/* Line 1455 of yacc.c */
#line 351 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ThisNode(GLOBAL_DATA), ThisFeature, 0); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ThisNode(GLOBAL_DATA), ThisFeature, 0); ;}
break;
case 23:
+
+/* Line 1455 of yacc.c */
#line 354 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident), (yylsp[(1) - (1)]).first_column), (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident), (yylsp[(1) - (1)]).first_column), (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); ;}
break;
case 24:
+
+/* Line 1455 of yacc.c */
#line 355 "../parser/Grammar.y"
{ (yyval.expressionNode) = (yyvsp[(2) - (3)].expressionNode); ;}
break;
case 25:
+
+/* Line 1455 of yacc.c */
#line 359 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ArrayNode(GLOBAL_DATA, (yyvsp[(2) - (3)].intValue)), 0, (yyvsp[(2) - (3)].intValue) ? 1 : 0); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(2) - (3)].intValue)), 0, (yyvsp[(2) - (3)].intValue) ? 1 : 0); ;}
break;
case 26:
+
+/* Line 1455 of yacc.c */
#line 360 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ArrayNode(GLOBAL_DATA, (yyvsp[(2) - (3)].elementList).m_node.head), (yyvsp[(2) - (3)].elementList).m_features, (yyvsp[(2) - (3)].elementList).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(2) - (3)].elementList).m_node.head), (yyvsp[(2) - (3)].elementList).m_features, (yyvsp[(2) - (3)].elementList).m_numConstants); ;}
break;
case 27:
+
+/* Line 1455 of yacc.c */
#line 361 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ArrayNode(GLOBAL_DATA, (yyvsp[(4) - (5)].intValue), (yyvsp[(2) - (5)].elementList).m_node.head), (yyvsp[(2) - (5)].elementList).m_features, (yyvsp[(4) - (5)].intValue) ? (yyvsp[(2) - (5)].elementList).m_numConstants + 1 : (yyvsp[(2) - (5)].elementList).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(4) - (5)].intValue), (yyvsp[(2) - (5)].elementList).m_node.head), (yyvsp[(2) - (5)].elementList).m_features, (yyvsp[(4) - (5)].intValue) ? (yyvsp[(2) - (5)].elementList).m_numConstants + 1 : (yyvsp[(2) - (5)].elementList).m_numConstants); ;}
break;
case 28:
+
+/* Line 1455 of yacc.c */
#line 365 "../parser/Grammar.y"
- { (yyval.elementList).m_node.head = new ElementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].intValue), (yyvsp[(2) - (2)].expressionNode).m_node);
+ { (yyval.elementList).m_node.head = new (GLOBAL_DATA) ElementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].intValue), (yyvsp[(2) - (2)].expressionNode).m_node);
(yyval.elementList).m_node.tail = (yyval.elementList).m_node.head;
(yyval.elementList).m_features = (yyvsp[(2) - (2)].expressionNode).m_features;
(yyval.elementList).m_numConstants = (yyvsp[(2) - (2)].expressionNode).m_numConstants; ;}
break;
case 29:
+
+/* Line 1455 of yacc.c */
#line 370 "../parser/Grammar.y"
{ (yyval.elementList).m_node.head = (yyvsp[(1) - (4)].elementList).m_node.head;
- (yyval.elementList).m_node.tail = new ElementNode(GLOBAL_DATA, (yyvsp[(1) - (4)].elementList).m_node.tail, (yyvsp[(3) - (4)].intValue), (yyvsp[(4) - (4)].expressionNode).m_node);
+ (yyval.elementList).m_node.tail = new (GLOBAL_DATA) ElementNode(GLOBAL_DATA, (yyvsp[(1) - (4)].elementList).m_node.tail, (yyvsp[(3) - (4)].intValue), (yyvsp[(4) - (4)].expressionNode).m_node);
(yyval.elementList).m_features = (yyvsp[(1) - (4)].elementList).m_features | (yyvsp[(4) - (4)].expressionNode).m_features;
(yyval.elementList).m_numConstants = (yyvsp[(1) - (4)].elementList).m_numConstants + (yyvsp[(4) - (4)].expressionNode).m_numConstants; ;}
break;
case 30:
+
+/* Line 1455 of yacc.c */
#line 377 "../parser/Grammar.y"
{ (yyval.intValue) = 0; ;}
break;
case 32:
+
+/* Line 1455 of yacc.c */
#line 382 "../parser/Grammar.y"
{ (yyval.intValue) = 1; ;}
break;
case 33:
+
+/* Line 1455 of yacc.c */
#line 383 "../parser/Grammar.y"
{ (yyval.intValue) = (yyvsp[(1) - (2)].intValue) + 1; ;}
break;
case 35:
+
+/* Line 1455 of yacc.c */
#line 388 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>((yyvsp[(1) - (1)].funcExprNode).m_node, (yyvsp[(1) - (1)].funcExprNode).m_features, (yyvsp[(1) - (1)].funcExprNode).m_numConstants); ;}
break;
case 36:
+
+/* Line 1455 of yacc.c */
#line 389 "../parser/Grammar.y"
- { BracketAccessorNode* node = new BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
+ { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants);
;}
break;
case 37:
+
+/* Line 1455 of yacc.c */
#line 393 "../parser/Grammar.y"
- { DotAccessorNode* node = new DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
+ { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants);
;}
break;
case 38:
+
+/* Line 1455 of yacc.c */
#line 397 "../parser/Grammar.y"
- { NewExprNode* node = new NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].argumentsNode).m_node);
+ { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].argumentsNode).m_node);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].argumentsNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].argumentsNode).m_numConstants);
;}
break;
case 40:
+
+/* Line 1455 of yacc.c */
#line 405 "../parser/Grammar.y"
- { BracketAccessorNode* node = new BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
+ { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants);
;}
break;
case 41:
+
+/* Line 1455 of yacc.c */
#line 409 "../parser/Grammar.y"
- { DotAccessorNode* node = new DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
+ { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants);
;}
break;
case 42:
+
+/* Line 1455 of yacc.c */
#line 413 "../parser/Grammar.y"
- { NewExprNode* node = new NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].argumentsNode).m_node);
+ { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].argumentsNode).m_node);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].argumentsNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].argumentsNode).m_numConstants);
;}
break;
case 44:
+
+/* Line 1455 of yacc.c */
#line 421 "../parser/Grammar.y"
- { NewExprNode* node = new NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node);
+ { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).last_column, (yylsp[(2) - (2)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants);
;}
break;
case 46:
+
+/* Line 1455 of yacc.c */
#line 429 "../parser/Grammar.y"
- { NewExprNode* node = new NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node);
+ { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).last_column, (yylsp[(2) - (2)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants);
;}
break;
case 47:
+
+/* Line 1455 of yacc.c */
#line 436 "../parser/Grammar.y"
{ (yyval.expressionNode) = makeFunctionCallNode(globalPtr, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;}
break;
case 48:
+
+/* Line 1455 of yacc.c */
#line 437 "../parser/Grammar.y"
{ (yyval.expressionNode) = makeFunctionCallNode(globalPtr, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;}
break;
case 49:
+
+/* Line 1455 of yacc.c */
#line 438 "../parser/Grammar.y"
- { BracketAccessorNode* node = new BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
+ { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants);
;}
break;
case 50:
+
+/* Line 1455 of yacc.c */
#line 442 "../parser/Grammar.y"
- { DotAccessorNode* node = new DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
+ { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants); ;}
break;
case 51:
+
+/* Line 1455 of yacc.c */
#line 448 "../parser/Grammar.y"
{ (yyval.expressionNode) = makeFunctionCallNode(globalPtr, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;}
break;
case 52:
+
+/* Line 1455 of yacc.c */
#line 449 "../parser/Grammar.y"
{ (yyval.expressionNode) = makeFunctionCallNode(globalPtr, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;}
break;
case 53:
+
+/* Line 1455 of yacc.c */
#line 450 "../parser/Grammar.y"
- { BracketAccessorNode* node = new BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
+ { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants);
;}
break;
case 54:
+
+/* Line 1455 of yacc.c */
#line 454 "../parser/Grammar.y"
- { DotAccessorNode* node = new DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
+ { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants);
;}
break;
case 55:
+
+/* Line 1455 of yacc.c */
#line 461 "../parser/Grammar.y"
- { (yyval.argumentsNode) = createNodeInfo<ArgumentsNode*>(new ArgumentsNode(GLOBAL_DATA), 0, 0); ;}
+ { (yyval.argumentsNode) = createNodeInfo<ArgumentsNode*>(new (GLOBAL_DATA) ArgumentsNode(GLOBAL_DATA), 0, 0); ;}
break;
case 56:
+
+/* Line 1455 of yacc.c */
#line 462 "../parser/Grammar.y"
- { (yyval.argumentsNode) = createNodeInfo<ArgumentsNode*>(new ArgumentsNode(GLOBAL_DATA, (yyvsp[(2) - (3)].argumentList).m_node.head), (yyvsp[(2) - (3)].argumentList).m_features, (yyvsp[(2) - (3)].argumentList).m_numConstants); ;}
+ { (yyval.argumentsNode) = createNodeInfo<ArgumentsNode*>(new (GLOBAL_DATA) ArgumentsNode(GLOBAL_DATA, (yyvsp[(2) - (3)].argumentList).m_node.head), (yyvsp[(2) - (3)].argumentList).m_features, (yyvsp[(2) - (3)].argumentList).m_numConstants); ;}
break;
case 57:
+
+/* Line 1455 of yacc.c */
#line 466 "../parser/Grammar.y"
- { (yyval.argumentList).m_node.head = new ArgumentListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].expressionNode).m_node);
+ { (yyval.argumentList).m_node.head = new (GLOBAL_DATA) ArgumentListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].expressionNode).m_node);
(yyval.argumentList).m_node.tail = (yyval.argumentList).m_node.head;
(yyval.argumentList).m_features = (yyvsp[(1) - (1)].expressionNode).m_features;
(yyval.argumentList).m_numConstants = (yyvsp[(1) - (1)].expressionNode).m_numConstants; ;}
break;
case 58:
+
+/* Line 1455 of yacc.c */
#line 470 "../parser/Grammar.y"
{ (yyval.argumentList).m_node.head = (yyvsp[(1) - (3)].argumentList).m_node.head;
- (yyval.argumentList).m_node.tail = new ArgumentListNode(GLOBAL_DATA, (yyvsp[(1) - (3)].argumentList).m_node.tail, (yyvsp[(3) - (3)].expressionNode).m_node);
+ (yyval.argumentList).m_node.tail = new (GLOBAL_DATA) ArgumentListNode(GLOBAL_DATA, (yyvsp[(1) - (3)].argumentList).m_node.tail, (yyvsp[(3) - (3)].expressionNode).m_node);
(yyval.argumentList).m_features = (yyvsp[(1) - (3)].argumentList).m_features | (yyvsp[(3) - (3)].expressionNode).m_features;
(yyval.argumentList).m_numConstants = (yyvsp[(1) - (3)].argumentList).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants; ;}
break;
case 64:
+
+/* Line 1455 of yacc.c */
#line 488 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;}
break;
case 65:
+
+/* Line 1455 of yacc.c */
#line 489 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;}
break;
case 67:
+
+/* Line 1455 of yacc.c */
#line 494 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;}
break;
case 68:
+
+/* Line 1455 of yacc.c */
#line 495 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;}
break;
case 69:
+
+/* Line 1455 of yacc.c */
#line 499 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeDeleteNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 70:
+
+/* Line 1455 of yacc.c */
#line 500 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new VoidNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants + 1); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) VoidNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants + 1); ;}
break;
case 71:
+
+/* Line 1455 of yacc.c */
#line 501 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeTypeOfNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 72:
+
+/* Line 1455 of yacc.c */
#line 502 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 73:
+
+/* Line 1455 of yacc.c */
#line 503 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 74:
+
+/* Line 1455 of yacc.c */
#line 504 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 75:
+
+/* Line 1455 of yacc.c */
#line 505 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 76:
+
+/* Line 1455 of yacc.c */
#line 506 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new UnaryPlusNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 77:
+
+/* Line 1455 of yacc.c */
#line 507 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeNegateNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 78:
+
+/* Line 1455 of yacc.c */
#line 508 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeBitwiseNotNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 79:
+
+/* Line 1455 of yacc.c */
#line 509 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LogicalNotNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalNotNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 85:
+
+/* Line 1455 of yacc.c */
#line 523 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeMultNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 86:
+
+/* Line 1455 of yacc.c */
#line 524 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeDivNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 87:
+
+/* Line 1455 of yacc.c */
#line 525 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ModNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ModNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 89:
+
+/* Line 1455 of yacc.c */
#line 531 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeMultNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 90:
+
+/* Line 1455 of yacc.c */
#line 533 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeDivNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 91:
+
+/* Line 1455 of yacc.c */
#line 535 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ModNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ModNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 93:
+
+/* Line 1455 of yacc.c */
#line 540 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAddNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 94:
+
+/* Line 1455 of yacc.c */
#line 541 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeSubNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 96:
+
+/* Line 1455 of yacc.c */
#line 547 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAddNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 97:
+
+/* Line 1455 of yacc.c */
#line 549 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeSubNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 99:
+
+/* Line 1455 of yacc.c */
#line 554 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeLeftShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 100:
+
+/* Line 1455 of yacc.c */
#line 555 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 101:
+
+/* Line 1455 of yacc.c */
#line 556 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new UnsignedRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnsignedRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 103:
+
+/* Line 1455 of yacc.c */
#line 561 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeLeftShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 104:
+
+/* Line 1455 of yacc.c */
#line 562 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 105:
+
+/* Line 1455 of yacc.c */
#line 563 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new UnsignedRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnsignedRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 107:
+
+/* Line 1455 of yacc.c */
#line 568 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 108:
+
+/* Line 1455 of yacc.c */
#line 569 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 109:
+
+/* Line 1455 of yacc.c */
#line 570 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 110:
+
+/* Line 1455 of yacc.c */
#line 571 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 111:
+
+/* Line 1455 of yacc.c */
#line 572 "../parser/Grammar.y"
- { InstanceOfNode* node = new InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
+ { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 112:
+
+/* Line 1455 of yacc.c */
#line 575 "../parser/Grammar.y"
- { InNode* node = new InNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
+ { InNode* node = new (GLOBAL_DATA) InNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 114:
+
+/* Line 1455 of yacc.c */
#line 582 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 115:
+
+/* Line 1455 of yacc.c */
#line 583 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 116:
+
+/* Line 1455 of yacc.c */
#line 584 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 117:
+
+/* Line 1455 of yacc.c */
#line 585 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 118:
+
+/* Line 1455 of yacc.c */
#line 587 "../parser/Grammar.y"
- { InstanceOfNode* node = new InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
+ { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 120:
+
+/* Line 1455 of yacc.c */
#line 594 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 121:
+
+/* Line 1455 of yacc.c */
#line 595 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 122:
+
+/* Line 1455 of yacc.c */
#line 596 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 123:
+
+/* Line 1455 of yacc.c */
#line 597 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 124:
+
+/* Line 1455 of yacc.c */
#line 599 "../parser/Grammar.y"
- { InstanceOfNode* node = new InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
+ { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 125:
+
+/* Line 1455 of yacc.c */
#line 603 "../parser/Grammar.y"
- { InNode* node = new InNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
+ { InNode* node = new (GLOBAL_DATA) InNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column);
(yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 127:
+
+/* Line 1455 of yacc.c */
#line 610 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 128:
+
+/* Line 1455 of yacc.c */
#line 611 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 129:
+
+/* Line 1455 of yacc.c */
#line 612 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 130:
+
+/* Line 1455 of yacc.c */
#line 613 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 132:
+
+/* Line 1455 of yacc.c */
#line 619 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 133:
+
+/* Line 1455 of yacc.c */
#line 621 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 134:
+
+/* Line 1455 of yacc.c */
#line 623 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 135:
+
+/* Line 1455 of yacc.c */
#line 625 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 137:
+
+/* Line 1455 of yacc.c */
#line 631 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 138:
+
+/* Line 1455 of yacc.c */
#line 632 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 139:
+
+/* Line 1455 of yacc.c */
#line 634 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 140:
+
+/* Line 1455 of yacc.c */
#line 636 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 142:
+
+/* Line 1455 of yacc.c */
#line 641 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 144:
+
+/* Line 1455 of yacc.c */
#line 647 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 146:
+
+/* Line 1455 of yacc.c */
#line 652 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 148:
+
+/* Line 1455 of yacc.c */
#line 657 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 150:
+
+/* Line 1455 of yacc.c */
#line 663 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 152:
+
+/* Line 1455 of yacc.c */
#line 669 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 154:
+
+/* Line 1455 of yacc.c */
#line 674 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 156:
+
+/* Line 1455 of yacc.c */
#line 680 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 158:
+
+/* Line 1455 of yacc.c */
#line 686 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 160:
+
+/* Line 1455 of yacc.c */
#line 691 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 162:
+
+/* Line 1455 of yacc.c */
#line 697 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 164:
+
+/* Line 1455 of yacc.c */
#line 703 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 166:
+
+/* Line 1455 of yacc.c */
#line 708 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 168:
+
+/* Line 1455 of yacc.c */
#line 714 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 170:
+
+/* Line 1455 of yacc.c */
#line 719 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 172:
+
+/* Line 1455 of yacc.c */
#line 725 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;}
break;
case 174:
+
+/* Line 1455 of yacc.c */
#line 731 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;}
break;
case 176:
+
+/* Line 1455 of yacc.c */
#line 737 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;}
break;
case 178:
+
+/* Line 1455 of yacc.c */
#line 743 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAssignNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature,
(yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).first_column + 1, (yylsp[(3) - (3)]).last_column), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants);
@@ -3736,6 +3952,8 @@ yyreduce:
break;
case 180:
+
+/* Line 1455 of yacc.c */
#line 751 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAssignNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature,
(yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).first_column + 1, (yylsp[(3) - (3)]).last_column), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants);
@@ -3743,6 +3961,8 @@ yyreduce:
break;
case 182:
+
+/* Line 1455 of yacc.c */
#line 759 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAssignNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature,
(yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).first_column + 1, (yylsp[(3) - (3)]).last_column), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants);
@@ -3750,99 +3970,137 @@ yyreduce:
break;
case 183:
+
+/* Line 1455 of yacc.c */
#line 765 "../parser/Grammar.y"
{ (yyval.op) = OpEqual; ;}
break;
case 184:
+
+/* Line 1455 of yacc.c */
#line 766 "../parser/Grammar.y"
{ (yyval.op) = OpPlusEq; ;}
break;
case 185:
+
+/* Line 1455 of yacc.c */
#line 767 "../parser/Grammar.y"
{ (yyval.op) = OpMinusEq; ;}
break;
case 186:
+
+/* Line 1455 of yacc.c */
#line 768 "../parser/Grammar.y"
{ (yyval.op) = OpMultEq; ;}
break;
case 187:
+
+/* Line 1455 of yacc.c */
#line 769 "../parser/Grammar.y"
{ (yyval.op) = OpDivEq; ;}
break;
case 188:
+
+/* Line 1455 of yacc.c */
#line 770 "../parser/Grammar.y"
{ (yyval.op) = OpLShift; ;}
break;
case 189:
+
+/* Line 1455 of yacc.c */
#line 771 "../parser/Grammar.y"
{ (yyval.op) = OpRShift; ;}
break;
case 190:
+
+/* Line 1455 of yacc.c */
#line 772 "../parser/Grammar.y"
{ (yyval.op) = OpURShift; ;}
break;
case 191:
+
+/* Line 1455 of yacc.c */
#line 773 "../parser/Grammar.y"
{ (yyval.op) = OpAndEq; ;}
break;
case 192:
+
+/* Line 1455 of yacc.c */
#line 774 "../parser/Grammar.y"
{ (yyval.op) = OpXOrEq; ;}
break;
case 193:
+
+/* Line 1455 of yacc.c */
#line 775 "../parser/Grammar.y"
{ (yyval.op) = OpOrEq; ;}
break;
case 194:
+
+/* Line 1455 of yacc.c */
#line 776 "../parser/Grammar.y"
{ (yyval.op) = OpModEq; ;}
break;
case 196:
+
+/* Line 1455 of yacc.c */
#line 781 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new CommaNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) CommaNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 198:
+
+/* Line 1455 of yacc.c */
#line 786 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new CommaNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) CommaNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 200:
+
+/* Line 1455 of yacc.c */
#line 791 "../parser/Grammar.y"
- { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new CommaNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
+ { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) CommaNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
break;
case 218:
+
+/* Line 1455 of yacc.c */
#line 815 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new BlockNode(GLOBAL_DATA, 0), 0, 0, 0, 0);
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, 0), 0, 0, 0, 0);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
break;
case 219:
+
+/* Line 1455 of yacc.c */
#line 817 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new BlockNode(GLOBAL_DATA, (yyvsp[(2) - (3)].sourceElements).m_node), (yyvsp[(2) - (3)].sourceElements).m_varDeclarations, (yyvsp[(2) - (3)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (3)].sourceElements).m_features, (yyvsp[(2) - (3)].sourceElements).m_numConstants);
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, (yyvsp[(2) - (3)].sourceElements).m_node), (yyvsp[(2) - (3)].sourceElements).m_varDeclarations, (yyvsp[(2) - (3)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (3)].sourceElements).m_features, (yyvsp[(2) - (3)].sourceElements).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
break;
case 220:
+
+/* Line 1455 of yacc.c */
#line 822 "../parser/Grammar.y"
{ (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(makeVarStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].varDeclList).m_node), (yyvsp[(2) - (3)].varDeclList).m_varDeclarations, (yyvsp[(2) - (3)].varDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].varDeclList).m_features, (yyvsp[(2) - (3)].varDeclList).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
break;
case 221:
+
+/* Line 1455 of yacc.c */
#line 824 "../parser/Grammar.y"
{ (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(makeVarStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].varDeclList).m_node), (yyvsp[(2) - (3)].varDeclList).m_varDeclarations, (yyvsp[(2) - (3)].varDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].varDeclList).m_features, (yyvsp[(2) - (3)].varDeclList).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)]));
@@ -3850,9 +4108,11 @@ yyreduce:
break;
case 222:
+
+/* Line 1455 of yacc.c */
#line 830 "../parser/Grammar.y"
{ (yyval.varDeclList).m_node = 0;
- (yyval.varDeclList).m_varDeclarations = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ (yyval.varDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(1) - (1)].ident), 0);
(yyval.varDeclList).m_funcDeclarations = 0;
(yyval.varDeclList).m_features = (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0;
@@ -3861,11 +4121,13 @@ yyreduce:
break;
case 223:
+
+/* Line 1455 of yacc.c */
#line 837 "../parser/Grammar.y"
- { AssignResolveNode* node = new AssignResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node, (yyvsp[(2) - (2)].expressionNode).m_features & AssignFeature);
+ { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node, (yyvsp[(2) - (2)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column);
(yyval.varDeclList).m_node = node;
- (yyval.varDeclList).m_varDeclarations = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ (yyval.varDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(1) - (2)].ident), DeclarationStacks::HasInitializer);
(yyval.varDeclList).m_funcDeclarations = 0;
(yyval.varDeclList).m_features = ((*(yyvsp[(1) - (2)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(2) - (2)].expressionNode).m_features;
@@ -3874,6 +4136,8 @@ yyreduce:
break;
case 224:
+
+/* Line 1455 of yacc.c */
#line 847 "../parser/Grammar.y"
{ (yyval.varDeclList).m_node = (yyvsp[(1) - (3)].varDeclList).m_node;
(yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (3)].varDeclList).m_varDeclarations;
@@ -3885,8 +4149,10 @@ yyreduce:
break;
case 225:
+
+/* Line 1455 of yacc.c */
#line 855 "../parser/Grammar.y"
- { AssignResolveNode* node = new AssignResolveNode(GLOBAL_DATA, *(yyvsp[(3) - (4)].ident), (yyvsp[(4) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].expressionNode).m_features & AssignFeature);
+ { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(3) - (4)].ident), (yyvsp[(4) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(3) - (4)]).first_column, (yylsp[(4) - (4)]).first_column + 1, (yylsp[(4) - (4)]).last_column);
(yyval.varDeclList).m_node = combineVarInitializers(GLOBAL_DATA, (yyvsp[(1) - (4)].varDeclList).m_node, node);
(yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (4)].varDeclList).m_varDeclarations;
@@ -3898,9 +4164,11 @@ yyreduce:
break;
case 226:
+
+/* Line 1455 of yacc.c */
#line 867 "../parser/Grammar.y"
{ (yyval.varDeclList).m_node = 0;
- (yyval.varDeclList).m_varDeclarations = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ (yyval.varDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(1) - (1)].ident), 0);
(yyval.varDeclList).m_funcDeclarations = 0;
(yyval.varDeclList).m_features = (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0;
@@ -3909,11 +4177,13 @@ yyreduce:
break;
case 227:
+
+/* Line 1455 of yacc.c */
#line 874 "../parser/Grammar.y"
- { AssignResolveNode* node = new AssignResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node, (yyvsp[(2) - (2)].expressionNode).m_features & AssignFeature);
+ { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node, (yyvsp[(2) - (2)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column);
(yyval.varDeclList).m_node = node;
- (yyval.varDeclList).m_varDeclarations = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ (yyval.varDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(1) - (2)].ident), DeclarationStacks::HasInitializer);
(yyval.varDeclList).m_funcDeclarations = 0;
(yyval.varDeclList).m_features = ((*(yyvsp[(1) - (2)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(2) - (2)].expressionNode).m_features;
@@ -3922,6 +4192,8 @@ yyreduce:
break;
case 228:
+
+/* Line 1455 of yacc.c */
#line 884 "../parser/Grammar.y"
{ (yyval.varDeclList).m_node = (yyvsp[(1) - (3)].varDeclList).m_node;
(yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (3)].varDeclList).m_varDeclarations;
@@ -3933,8 +4205,10 @@ yyreduce:
break;
case 229:
+
+/* Line 1455 of yacc.c */
#line 892 "../parser/Grammar.y"
- { AssignResolveNode* node = new AssignResolveNode(GLOBAL_DATA, *(yyvsp[(3) - (4)].ident), (yyvsp[(4) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].expressionNode).m_features & AssignFeature);
+ { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(3) - (4)].ident), (yyvsp[(4) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].expressionNode).m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, (yylsp[(3) - (4)]).first_column, (yylsp[(4) - (4)]).first_column + 1, (yylsp[(4) - (4)]).last_column);
(yyval.varDeclList).m_node = combineVarInitializers(GLOBAL_DATA, (yyvsp[(1) - (4)].varDeclList).m_node, node);
(yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (4)].varDeclList).m_varDeclarations;
@@ -3946,22 +4220,28 @@ yyreduce:
break;
case 230:
+
+/* Line 1455 of yacc.c */
#line 904 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new ConstStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].constDeclList).m_node.head), (yyvsp[(2) - (3)].constDeclList).m_varDeclarations, (yyvsp[(2) - (3)].constDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].constDeclList).m_features, (yyvsp[(2) - (3)].constDeclList).m_numConstants);
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].constDeclList).m_node.head), (yyvsp[(2) - (3)].constDeclList).m_varDeclarations, (yyvsp[(2) - (3)].constDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].constDeclList).m_features, (yyvsp[(2) - (3)].constDeclList).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
break;
case 231:
+
+/* Line 1455 of yacc.c */
#line 907 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new ConstStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].constDeclList).m_node.head), (yyvsp[(2) - (3)].constDeclList).m_varDeclarations, (yyvsp[(2) - (3)].constDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].constDeclList).m_features, (yyvsp[(2) - (3)].constDeclList).m_numConstants);
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].constDeclList).m_node.head), (yyvsp[(2) - (3)].constDeclList).m_varDeclarations, (yyvsp[(2) - (3)].constDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].constDeclList).m_features, (yyvsp[(2) - (3)].constDeclList).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;}
break;
case 232:
+
+/* Line 1455 of yacc.c */
#line 912 "../parser/Grammar.y"
{ (yyval.constDeclList).m_node.head = (yyvsp[(1) - (1)].constDeclNode).m_node;
(yyval.constDeclList).m_node.tail = (yyval.constDeclList).m_node.head;
- (yyval.constDeclList).m_varDeclarations = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ (yyval.constDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, (yyval.constDeclList).m_varDeclarations, (yyvsp[(1) - (1)].constDeclNode).m_node);
(yyval.constDeclList).m_funcDeclarations = 0;
(yyval.constDeclList).m_features = (yyvsp[(1) - (1)].constDeclNode).m_features;
@@ -3970,8 +4250,10 @@ yyreduce:
break;
case 233:
+
+/* Line 1455 of yacc.c */
#line 921 "../parser/Grammar.y"
- { (yyval.constDeclList).m_node.head = (yyvsp[(1) - (3)].constDeclList).m_node.head;
+ { (yyval.constDeclList).m_node.head = (yyvsp[(1) - (3)].constDeclList).m_node.head;
(yyvsp[(1) - (3)].constDeclList).m_node.tail->m_next = (yyvsp[(3) - (3)].constDeclNode).m_node;
(yyval.constDeclList).m_node.tail = (yyvsp[(3) - (3)].constDeclNode).m_node;
(yyval.constDeclList).m_varDeclarations = (yyvsp[(1) - (3)].constDeclList).m_varDeclarations;
@@ -3982,78 +4264,105 @@ yyreduce:
break;
case 234:
+
+/* Line 1455 of yacc.c */
#line 932 "../parser/Grammar.y"
- { (yyval.constDeclNode) = createNodeInfo<ConstDeclNode*>(new ConstDeclNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident), 0), (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); ;}
+ { (yyval.constDeclNode) = createNodeInfo<ConstDeclNode*>(new (GLOBAL_DATA) ConstDeclNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident), 0), (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); ;}
break;
case 235:
+
+/* Line 1455 of yacc.c */
#line 933 "../parser/Grammar.y"
- { (yyval.constDeclNode) = createNodeInfo<ConstDeclNode*>(new ConstDeclNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node), ((*(yyvsp[(1) - (2)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
+ { (yyval.constDeclNode) = createNodeInfo<ConstDeclNode*>(new (GLOBAL_DATA) ConstDeclNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node), ((*(yyvsp[(1) - (2)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
break;
case 236:
+
+/* Line 1455 of yacc.c */
#line 937 "../parser/Grammar.y"
{ (yyval.expressionNode) = (yyvsp[(2) - (2)].expressionNode); ;}
break;
case 237:
+
+/* Line 1455 of yacc.c */
#line 941 "../parser/Grammar.y"
{ (yyval.expressionNode) = (yyvsp[(2) - (2)].expressionNode); ;}
break;
case 238:
+
+/* Line 1455 of yacc.c */
#line 945 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new EmptyStatementNode(GLOBAL_DATA), 0, 0, 0, 0); ;}
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) EmptyStatementNode(GLOBAL_DATA), 0, 0, 0, 0); ;}
break;
case 239:
+
+/* Line 1455 of yacc.c */
#line 949 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new ExprStatementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node), 0, 0, (yyvsp[(1) - (2)].expressionNode).m_features, (yyvsp[(1) - (2)].expressionNode).m_numConstants);
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node), 0, 0, (yyvsp[(1) - (2)].expressionNode).m_features, (yyvsp[(1) - (2)].expressionNode).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
break;
case 240:
+
+/* Line 1455 of yacc.c */
#line 951 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new ExprStatementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node), 0, 0, (yyvsp[(1) - (2)].expressionNode).m_features, (yyvsp[(1) - (2)].expressionNode).m_numConstants);
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node), 0, 0, (yyvsp[(1) - (2)].expressionNode).m_features, (yyvsp[(1) - (2)].expressionNode).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
break;
case 241:
+
+/* Line 1455 of yacc.c */
#line 957 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new IfNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node), (yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) IfNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node), (yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;}
break;
case 242:
+
+/* Line 1455 of yacc.c */
#line 960 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new IfElseNode(GLOBAL_DATA, (yyvsp[(3) - (7)].expressionNode).m_node, (yyvsp[(5) - (7)].statementNode).m_node, (yyvsp[(7) - (7)].statementNode).m_node),
- mergeDeclarationLists((yyvsp[(5) - (7)].statementNode).m_varDeclarations, (yyvsp[(7) - (7)].statementNode).m_varDeclarations), mergeDeclarationLists((yyvsp[(5) - (7)].statementNode).m_funcDeclarations, (yyvsp[(7) - (7)].statementNode).m_funcDeclarations),
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) IfElseNode(GLOBAL_DATA, (yyvsp[(3) - (7)].expressionNode).m_node, (yyvsp[(5) - (7)].statementNode).m_node, (yyvsp[(7) - (7)].statementNode).m_node),
+ mergeDeclarationLists((yyvsp[(5) - (7)].statementNode).m_varDeclarations, (yyvsp[(7) - (7)].statementNode).m_varDeclarations),
+ mergeDeclarationLists((yyvsp[(5) - (7)].statementNode).m_funcDeclarations, (yyvsp[(7) - (7)].statementNode).m_funcDeclarations),
(yyvsp[(3) - (7)].expressionNode).m_features | (yyvsp[(5) - (7)].statementNode).m_features | (yyvsp[(7) - (7)].statementNode).m_features,
(yyvsp[(3) - (7)].expressionNode).m_numConstants + (yyvsp[(5) - (7)].statementNode).m_numConstants + (yyvsp[(7) - (7)].statementNode).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (7)]), (yylsp[(4) - (7)])); ;}
break;
case 243:
-#line 968 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new DoWhileNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node), (yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features, (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants);
+
+/* Line 1455 of yacc.c */
+#line 969 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node), (yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features, (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (7)]), (yylsp[(3) - (7)])); ;}
break;
case 244:
-#line 970 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new DoWhileNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node), (yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features, (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants);
+
+/* Line 1455 of yacc.c */
+#line 971 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node), (yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features, (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (7)]), (yylsp[(3) - (7)])); ;}
break;
case 245:
-#line 972 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new WhileNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node), (yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
+
+/* Line 1455 of yacc.c */
+#line 973 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) WhileNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node), (yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;}
break;
case 246:
-#line 975 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new ForNode(GLOBAL_DATA, (yyvsp[(3) - (9)].expressionNode).m_node, (yyvsp[(5) - (9)].expressionNode).m_node, (yyvsp[(7) - (9)].expressionNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node, false), (yyvsp[(9) - (9)].statementNode).m_varDeclarations, (yyvsp[(9) - (9)].statementNode).m_funcDeclarations,
+
+/* Line 1455 of yacc.c */
+#line 976 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ForNode(GLOBAL_DATA, (yyvsp[(3) - (9)].expressionNode).m_node, (yyvsp[(5) - (9)].expressionNode).m_node, (yyvsp[(7) - (9)].expressionNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node, false), (yyvsp[(9) - (9)].statementNode).m_varDeclarations, (yyvsp[(9) - (9)].statementNode).m_funcDeclarations,
(yyvsp[(3) - (9)].expressionNode).m_features | (yyvsp[(5) - (9)].expressionNode).m_features | (yyvsp[(7) - (9)].expressionNode).m_features | (yyvsp[(9) - (9)].statementNode).m_features,
(yyvsp[(3) - (9)].expressionNode).m_numConstants + (yyvsp[(5) - (9)].expressionNode).m_numConstants + (yyvsp[(7) - (9)].expressionNode).m_numConstants + (yyvsp[(9) - (9)].statementNode).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (9)]), (yylsp[(8) - (9)]));
@@ -4061,8 +4370,10 @@ yyreduce:
break;
case 247:
-#line 981 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new ForNode(GLOBAL_DATA, (yyvsp[(4) - (10)].varDeclList).m_node, (yyvsp[(6) - (10)].expressionNode).m_node, (yyvsp[(8) - (10)].expressionNode).m_node, (yyvsp[(10) - (10)].statementNode).m_node, true),
+
+/* Line 1455 of yacc.c */
+#line 982 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ForNode(GLOBAL_DATA, (yyvsp[(4) - (10)].varDeclList).m_node, (yyvsp[(6) - (10)].expressionNode).m_node, (yyvsp[(8) - (10)].expressionNode).m_node, (yyvsp[(10) - (10)].statementNode).m_node, true),
mergeDeclarationLists((yyvsp[(4) - (10)].varDeclList).m_varDeclarations, (yyvsp[(10) - (10)].statementNode).m_varDeclarations),
mergeDeclarationLists((yyvsp[(4) - (10)].varDeclList).m_funcDeclarations, (yyvsp[(10) - (10)].statementNode).m_funcDeclarations),
(yyvsp[(4) - (10)].varDeclList).m_features | (yyvsp[(6) - (10)].expressionNode).m_features | (yyvsp[(8) - (10)].expressionNode).m_features | (yyvsp[(10) - (10)].statementNode).m_features,
@@ -4071,9 +4382,11 @@ yyreduce:
break;
case 248:
-#line 988 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 989 "../parser/Grammar.y"
{
- ForInNode* node = new ForInNode(GLOBAL_DATA, (yyvsp[(3) - (7)].expressionNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node, (yyvsp[(7) - (7)].statementNode).m_node);
+ ForInNode* node = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, (yyvsp[(3) - (7)].expressionNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node, (yyvsp[(7) - (7)].statementNode).m_node);
SET_EXCEPTION_LOCATION(node, (yylsp[(3) - (7)]).first_column, (yylsp[(3) - (7)]).last_column, (yylsp[(5) - (7)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, (yyvsp[(7) - (7)].statementNode).m_varDeclarations, (yyvsp[(7) - (7)].statementNode).m_funcDeclarations,
(yyvsp[(3) - (7)].expressionNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features | (yyvsp[(7) - (7)].statementNode).m_features,
@@ -4083,8 +4396,10 @@ yyreduce:
break;
case 249:
-#line 997 "../parser/Grammar.y"
- { ForInNode *forIn = new ForInNode(GLOBAL_DATA, *(yyvsp[(4) - (8)].ident), 0, (yyvsp[(6) - (8)].expressionNode).m_node, (yyvsp[(8) - (8)].statementNode).m_node, (yylsp[(5) - (8)]).first_column, (yylsp[(5) - (8)]).first_column - (yylsp[(4) - (8)]).first_column, (yylsp[(6) - (8)]).last_column - (yylsp[(5) - (8)]).first_column);
+
+/* Line 1455 of yacc.c */
+#line 998 "../parser/Grammar.y"
+ { ForInNode *forIn = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, *(yyvsp[(4) - (8)].ident), 0, (yyvsp[(6) - (8)].expressionNode).m_node, (yyvsp[(8) - (8)].statementNode).m_node, (yylsp[(5) - (8)]).first_column, (yylsp[(5) - (8)]).first_column - (yylsp[(4) - (8)]).first_column, (yylsp[(6) - (8)]).last_column - (yylsp[(5) - (8)]).first_column);
SET_EXCEPTION_LOCATION(forIn, (yylsp[(4) - (8)]).first_column, (yylsp[(5) - (8)]).first_column + 1, (yylsp[(6) - (8)]).last_column);
appendToVarDeclarationList(GLOBAL_DATA, (yyvsp[(8) - (8)].statementNode).m_varDeclarations, *(yyvsp[(4) - (8)].ident), DeclarationStacks::HasInitializer);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(forIn, (yyvsp[(8) - (8)].statementNode).m_varDeclarations, (yyvsp[(8) - (8)].statementNode).m_funcDeclarations, ((*(yyvsp[(4) - (8)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(6) - (8)].expressionNode).m_features | (yyvsp[(8) - (8)].statementNode).m_features, (yyvsp[(6) - (8)].expressionNode).m_numConstants + (yyvsp[(8) - (8)].statementNode).m_numConstants);
@@ -4092,8 +4407,10 @@ yyreduce:
break;
case 250:
-#line 1003 "../parser/Grammar.y"
- { ForInNode *forIn = new ForInNode(GLOBAL_DATA, *(yyvsp[(4) - (9)].ident), (yyvsp[(5) - (9)].expressionNode).m_node, (yyvsp[(7) - (9)].expressionNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node, (yylsp[(5) - (9)]).first_column, (yylsp[(5) - (9)]).first_column - (yylsp[(4) - (9)]).first_column, (yylsp[(5) - (9)]).last_column - (yylsp[(5) - (9)]).first_column);
+
+/* Line 1455 of yacc.c */
+#line 1004 "../parser/Grammar.y"
+ { ForInNode *forIn = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, *(yyvsp[(4) - (9)].ident), (yyvsp[(5) - (9)].expressionNode).m_node, (yyvsp[(7) - (9)].expressionNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node, (yylsp[(5) - (9)]).first_column, (yylsp[(5) - (9)]).first_column - (yylsp[(4) - (9)]).first_column, (yylsp[(5) - (9)]).last_column - (yylsp[(5) - (9)]).first_column);
SET_EXCEPTION_LOCATION(forIn, (yylsp[(4) - (9)]).first_column, (yylsp[(6) - (9)]).first_column + 1, (yylsp[(7) - (9)]).last_column);
appendToVarDeclarationList(GLOBAL_DATA, (yyvsp[(9) - (9)].statementNode).m_varDeclarations, *(yyvsp[(4) - (9)].ident), DeclarationStacks::HasInitializer);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(forIn, (yyvsp[(9) - (9)].statementNode).m_varDeclarations, (yyvsp[(9) - (9)].statementNode).m_funcDeclarations,
@@ -4103,125 +4420,161 @@ yyreduce:
break;
case 251:
-#line 1013 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1014 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(0, 0, 0); ;}
break;
case 253:
-#line 1018 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1019 "../parser/Grammar.y"
{ (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(0, 0, 0); ;}
break;
case 255:
-#line 1023 "../parser/Grammar.y"
- { ContinueNode* node = new ContinueNode(GLOBAL_DATA);
+
+/* Line 1455 of yacc.c */
+#line 1024 "../parser/Grammar.y"
+ { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
break;
case 256:
-#line 1027 "../parser/Grammar.y"
- { ContinueNode* node = new ContinueNode(GLOBAL_DATA);
+
+/* Line 1455 of yacc.c */
+#line 1028 "../parser/Grammar.y"
+ { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
break;
case 257:
-#line 1031 "../parser/Grammar.y"
- { ContinueNode* node = new ContinueNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
+
+/* Line 1455 of yacc.c */
+#line 1032 "../parser/Grammar.y"
+ { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
break;
case 258:
-#line 1035 "../parser/Grammar.y"
- { ContinueNode* node = new ContinueNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
+
+/* Line 1455 of yacc.c */
+#line 1036 "../parser/Grammar.y"
+ { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;}
break;
case 259:
-#line 1042 "../parser/Grammar.y"
- { BreakNode* node = new BreakNode(GLOBAL_DATA);
+
+/* Line 1455 of yacc.c */
+#line 1043 "../parser/Grammar.y"
+ { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
break;
case 260:
-#line 1045 "../parser/Grammar.y"
- { BreakNode* node = new BreakNode(GLOBAL_DATA);
+
+/* Line 1455 of yacc.c */
+#line 1046 "../parser/Grammar.y"
+ { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
- (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new BreakNode(GLOBAL_DATA), 0, 0, 0, 0); DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
+ (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA), 0, 0, 0, 0); DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
break;
case 261:
-#line 1048 "../parser/Grammar.y"
- { BreakNode* node = new BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
+
+/* Line 1455 of yacc.c */
+#line 1049 "../parser/Grammar.y"
+ { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
break;
case 262:
-#line 1051 "../parser/Grammar.y"
- { BreakNode* node = new BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
+
+/* Line 1455 of yacc.c */
+#line 1052 "../parser/Grammar.y"
+ { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
- (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident)), 0, 0, 0, 0); DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;}
+ (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident)), 0, 0, 0, 0); DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;}
break;
case 263:
-#line 1057 "../parser/Grammar.y"
- { ReturnNode* node = new ReturnNode(GLOBAL_DATA, 0);
+
+/* Line 1455 of yacc.c */
+#line 1058 "../parser/Grammar.y"
+ { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, 0);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
break;
case 264:
-#line 1060 "../parser/Grammar.y"
- { ReturnNode* node = new ReturnNode(GLOBAL_DATA, 0);
+
+/* Line 1455 of yacc.c */
+#line 1061 "../parser/Grammar.y"
+ { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, 0);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
break;
case 265:
-#line 1063 "../parser/Grammar.y"
- { ReturnNode* node = new ReturnNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
+
+/* Line 1455 of yacc.c */
+#line 1064 "../parser/Grammar.y"
+ { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
break;
case 266:
-#line 1066 "../parser/Grammar.y"
- { ReturnNode* node = new ReturnNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
+
+/* Line 1455 of yacc.c */
+#line 1067 "../parser/Grammar.y"
+ { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;}
break;
case 267:
-#line 1072 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new WithNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node, (yylsp[(3) - (5)]).last_column, (yylsp[(3) - (5)]).last_column - (yylsp[(3) - (5)]).first_column),
+
+/* Line 1455 of yacc.c */
+#line 1073 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) WithNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node, (yylsp[(3) - (5)]).last_column, (yylsp[(3) - (5)]).last_column - (yylsp[(3) - (5)]).first_column),
(yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features | WithFeature, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;}
break;
case 268:
-#line 1078 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new SwitchNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].caseBlockNode).m_node), (yyvsp[(5) - (5)].caseBlockNode).m_varDeclarations, (yyvsp[(5) - (5)].caseBlockNode).m_funcDeclarations,
+
+/* Line 1455 of yacc.c */
+#line 1079 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) SwitchNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].caseBlockNode).m_node), (yyvsp[(5) - (5)].caseBlockNode).m_varDeclarations, (yyvsp[(5) - (5)].caseBlockNode).m_funcDeclarations,
(yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].caseBlockNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].caseBlockNode).m_numConstants);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;}
break;
case 269:
-#line 1084 "../parser/Grammar.y"
- { (yyval.caseBlockNode) = createNodeDeclarationInfo<CaseBlockNode*>(new CaseBlockNode(GLOBAL_DATA, (yyvsp[(2) - (3)].clauseList).m_node.head, 0, 0), (yyvsp[(2) - (3)].clauseList).m_varDeclarations, (yyvsp[(2) - (3)].clauseList).m_funcDeclarations, (yyvsp[(2) - (3)].clauseList).m_features, (yyvsp[(2) - (3)].clauseList).m_numConstants); ;}
+
+/* Line 1455 of yacc.c */
+#line 1085 "../parser/Grammar.y"
+ { (yyval.caseBlockNode) = createNodeDeclarationInfo<CaseBlockNode*>(new (GLOBAL_DATA) CaseBlockNode(GLOBAL_DATA, (yyvsp[(2) - (3)].clauseList).m_node.head, 0, 0), (yyvsp[(2) - (3)].clauseList).m_varDeclarations, (yyvsp[(2) - (3)].clauseList).m_funcDeclarations, (yyvsp[(2) - (3)].clauseList).m_features, (yyvsp[(2) - (3)].clauseList).m_numConstants); ;}
break;
case 270:
-#line 1086 "../parser/Grammar.y"
- { (yyval.caseBlockNode) = createNodeDeclarationInfo<CaseBlockNode*>(new CaseBlockNode(GLOBAL_DATA, (yyvsp[(2) - (5)].clauseList).m_node.head, (yyvsp[(3) - (5)].caseClauseNode).m_node, (yyvsp[(4) - (5)].clauseList).m_node.head),
+
+/* Line 1455 of yacc.c */
+#line 1087 "../parser/Grammar.y"
+ { (yyval.caseBlockNode) = createNodeDeclarationInfo<CaseBlockNode*>(new (GLOBAL_DATA) CaseBlockNode(GLOBAL_DATA, (yyvsp[(2) - (5)].clauseList).m_node.head, (yyvsp[(3) - (5)].caseClauseNode).m_node, (yyvsp[(4) - (5)].clauseList).m_node.head),
mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (5)].clauseList).m_varDeclarations, (yyvsp[(3) - (5)].caseClauseNode).m_varDeclarations), (yyvsp[(4) - (5)].clauseList).m_varDeclarations),
mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (5)].clauseList).m_funcDeclarations, (yyvsp[(3) - (5)].caseClauseNode).m_funcDeclarations), (yyvsp[(4) - (5)].clauseList).m_funcDeclarations),
(yyvsp[(2) - (5)].clauseList).m_features | (yyvsp[(3) - (5)].caseClauseNode).m_features | (yyvsp[(4) - (5)].clauseList).m_features,
@@ -4229,13 +4582,17 @@ yyreduce:
break;
case 271:
-#line 1094 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1095 "../parser/Grammar.y"
{ (yyval.clauseList).m_node.head = 0; (yyval.clauseList).m_node.tail = 0; (yyval.clauseList).m_varDeclarations = 0; (yyval.clauseList).m_funcDeclarations = 0; (yyval.clauseList).m_features = 0; (yyval.clauseList).m_numConstants = 0; ;}
break;
case 273:
-#line 1099 "../parser/Grammar.y"
- { (yyval.clauseList).m_node.head = new ClauseListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].caseClauseNode).m_node);
+
+/* Line 1455 of yacc.c */
+#line 1100 "../parser/Grammar.y"
+ { (yyval.clauseList).m_node.head = new (GLOBAL_DATA) ClauseListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].caseClauseNode).m_node);
(yyval.clauseList).m_node.tail = (yyval.clauseList).m_node.head;
(yyval.clauseList).m_varDeclarations = (yyvsp[(1) - (1)].caseClauseNode).m_varDeclarations;
(yyval.clauseList).m_funcDeclarations = (yyvsp[(1) - (1)].caseClauseNode).m_funcDeclarations;
@@ -4244,9 +4601,11 @@ yyreduce:
break;
case 274:
-#line 1105 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1106 "../parser/Grammar.y"
{ (yyval.clauseList).m_node.head = (yyvsp[(1) - (2)].clauseList).m_node.head;
- (yyval.clauseList).m_node.tail = new ClauseListNode(GLOBAL_DATA, (yyvsp[(1) - (2)].clauseList).m_node.tail, (yyvsp[(2) - (2)].caseClauseNode).m_node);
+ (yyval.clauseList).m_node.tail = new (GLOBAL_DATA) ClauseListNode(GLOBAL_DATA, (yyvsp[(1) - (2)].clauseList).m_node.tail, (yyvsp[(2) - (2)].caseClauseNode).m_node);
(yyval.clauseList).m_varDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].clauseList).m_varDeclarations, (yyvsp[(2) - (2)].caseClauseNode).m_varDeclarations);
(yyval.clauseList).m_funcDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].clauseList).m_funcDeclarations, (yyvsp[(2) - (2)].caseClauseNode).m_funcDeclarations);
(yyval.clauseList).m_features = (yyvsp[(1) - (2)].clauseList).m_features | (yyvsp[(2) - (2)].caseClauseNode).m_features;
@@ -4255,51 +4614,67 @@ yyreduce:
break;
case 275:
-#line 1115 "../parser/Grammar.y"
- { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new CaseClauseNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node), 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); ;}
+
+/* Line 1455 of yacc.c */
+#line 1116 "../parser/Grammar.y"
+ { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node), 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); ;}
break;
case 276:
-#line 1116 "../parser/Grammar.y"
- { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new CaseClauseNode(GLOBAL_DATA, (yyvsp[(2) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].sourceElements).m_node), (yyvsp[(4) - (4)].sourceElements).m_varDeclarations, (yyvsp[(4) - (4)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (4)].expressionNode).m_features | (yyvsp[(4) - (4)].sourceElements).m_features, (yyvsp[(2) - (4)].expressionNode).m_numConstants + (yyvsp[(4) - (4)].sourceElements).m_numConstants); ;}
+
+/* Line 1455 of yacc.c */
+#line 1117 "../parser/Grammar.y"
+ { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, (yyvsp[(2) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].sourceElements).m_node), (yyvsp[(4) - (4)].sourceElements).m_varDeclarations, (yyvsp[(4) - (4)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (4)].expressionNode).m_features | (yyvsp[(4) - (4)].sourceElements).m_features, (yyvsp[(2) - (4)].expressionNode).m_numConstants + (yyvsp[(4) - (4)].sourceElements).m_numConstants); ;}
break;
case 277:
-#line 1120 "../parser/Grammar.y"
- { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new CaseClauseNode(GLOBAL_DATA, 0), 0, 0, 0, 0); ;}
+
+/* Line 1455 of yacc.c */
+#line 1121 "../parser/Grammar.y"
+ { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, 0), 0, 0, 0, 0); ;}
break;
case 278:
-#line 1121 "../parser/Grammar.y"
- { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new CaseClauseNode(GLOBAL_DATA, 0, (yyvsp[(3) - (3)].sourceElements).m_node), (yyvsp[(3) - (3)].sourceElements).m_varDeclarations, (yyvsp[(3) - (3)].sourceElements).m_funcDeclarations, (yyvsp[(3) - (3)].sourceElements).m_features, (yyvsp[(3) - (3)].sourceElements).m_numConstants); ;}
+
+/* Line 1455 of yacc.c */
+#line 1122 "../parser/Grammar.y"
+ { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, 0, (yyvsp[(3) - (3)].sourceElements).m_node), (yyvsp[(3) - (3)].sourceElements).m_varDeclarations, (yyvsp[(3) - (3)].sourceElements).m_funcDeclarations, (yyvsp[(3) - (3)].sourceElements).m_features, (yyvsp[(3) - (3)].sourceElements).m_numConstants); ;}
break;
case 279:
-#line 1125 "../parser/Grammar.y"
- { LabelNode* node = new LabelNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].statementNode).m_node);
+
+/* Line 1455 of yacc.c */
+#line 1126 "../parser/Grammar.y"
+ { LabelNode* node = new (GLOBAL_DATA) LabelNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].statementNode).m_node);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, (yyvsp[(3) - (3)].statementNode).m_varDeclarations, (yyvsp[(3) - (3)].statementNode).m_funcDeclarations, (yyvsp[(3) - (3)].statementNode).m_features, (yyvsp[(3) - (3)].statementNode).m_numConstants); ;}
break;
case 280:
-#line 1131 "../parser/Grammar.y"
- { ThrowNode* node = new ThrowNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
+
+/* Line 1455 of yacc.c */
+#line 1132 "../parser/Grammar.y"
+ { ThrowNode* node = new (GLOBAL_DATA) ThrowNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)]));
;}
break;
case 281:
-#line 1135 "../parser/Grammar.y"
- { ThrowNode* node = new ThrowNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
+
+/* Line 1455 of yacc.c */
+#line 1136 "../parser/Grammar.y"
+ { ThrowNode* node = new (GLOBAL_DATA) ThrowNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
SET_EXCEPTION_LOCATION(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
(yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); DBG((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON;
;}
break;
case 282:
-#line 1142 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new TryNode(GLOBAL_DATA, (yyvsp[(2) - (4)].statementNode).m_node, GLOBAL_DATA->propertyNames->nullIdentifier, false, 0, (yyvsp[(4) - (4)].statementNode).m_node),
+
+/* Line 1455 of yacc.c */
+#line 1143 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, (yyvsp[(2) - (4)].statementNode).m_node, GLOBAL_DATA->propertyNames->nullIdentifier, false, 0, (yyvsp[(4) - (4)].statementNode).m_node),
mergeDeclarationLists((yyvsp[(2) - (4)].statementNode).m_varDeclarations, (yyvsp[(4) - (4)].statementNode).m_varDeclarations),
mergeDeclarationLists((yyvsp[(2) - (4)].statementNode).m_funcDeclarations, (yyvsp[(4) - (4)].statementNode).m_funcDeclarations),
(yyvsp[(2) - (4)].statementNode).m_features | (yyvsp[(4) - (4)].statementNode).m_features,
@@ -4308,8 +4683,10 @@ yyreduce:
break;
case 283:
-#line 1148 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new TryNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, *(yyvsp[(5) - (7)].ident), ((yyvsp[(7) - (7)].statementNode).m_features & EvalFeature) != 0, (yyvsp[(7) - (7)].statementNode).m_node, 0),
+
+/* Line 1455 of yacc.c */
+#line 1149 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, *(yyvsp[(5) - (7)].ident), ((yyvsp[(7) - (7)].statementNode).m_features & EvalFeature) != 0, (yyvsp[(7) - (7)].statementNode).m_node, 0),
mergeDeclarationLists((yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(7) - (7)].statementNode).m_varDeclarations),
mergeDeclarationLists((yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(7) - (7)].statementNode).m_funcDeclarations),
(yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(7) - (7)].statementNode).m_features | CatchFeature,
@@ -4318,8 +4695,10 @@ yyreduce:
break;
case 284:
-#line 1155 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new TryNode(GLOBAL_DATA, (yyvsp[(2) - (9)].statementNode).m_node, *(yyvsp[(5) - (9)].ident), ((yyvsp[(7) - (9)].statementNode).m_features & EvalFeature) != 0, (yyvsp[(7) - (9)].statementNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node),
+
+/* Line 1455 of yacc.c */
+#line 1156 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, (yyvsp[(2) - (9)].statementNode).m_node, *(yyvsp[(5) - (9)].ident), ((yyvsp[(7) - (9)].statementNode).m_features & EvalFeature) != 0, (yyvsp[(7) - (9)].statementNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node),
mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (9)].statementNode).m_varDeclarations, (yyvsp[(7) - (9)].statementNode).m_varDeclarations), (yyvsp[(9) - (9)].statementNode).m_varDeclarations),
mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (9)].statementNode).m_funcDeclarations, (yyvsp[(7) - (9)].statementNode).m_funcDeclarations), (yyvsp[(9) - (9)].statementNode).m_funcDeclarations),
(yyvsp[(2) - (9)].statementNode).m_features | (yyvsp[(7) - (9)].statementNode).m_features | (yyvsp[(9) - (9)].statementNode).m_features | CatchFeature,
@@ -4328,26 +4707,34 @@ yyreduce:
break;
case 285:
-#line 1164 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
+
+/* Line 1455 of yacc.c */
+#line 1165 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
break;
case 286:
-#line 1166 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
+
+/* Line 1455 of yacc.c */
+#line 1167 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
DBG((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
break;
case 287:
-#line 1171 "../parser/Grammar.y"
- { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new FuncDeclNode(GLOBAL_DATA, *(yyvsp[(2) - (7)].ident), (yyvsp[(6) - (7)].functionBodyNode), LEXER->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line)), 0, new ParserRefCountedData<DeclarationStacks::FunctionStack>(GLOBAL_DATA), ((*(yyvsp[(2) - (7)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | ClosureFeature, 0); DBG((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)])); (yyval.statementNode).m_funcDeclarations->data.append(static_cast<FuncDeclNode*>((yyval.statementNode).m_node)); ;}
+
+/* Line 1455 of yacc.c */
+#line 1172 "../parser/Grammar.y"
+ { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new FuncDeclNode(GLOBAL_DATA, *(yyvsp[(2) - (7)].ident), (yyvsp[(6) - (7)].functionBodyNode), LEXER->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line)), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*(yyvsp[(2) - (7)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | ClosureFeature, 0); DBG((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)])); (yyval.statementNode).m_funcDeclarations->data.append(static_cast<FuncDeclNode*>((yyval.statementNode).m_node)); ;}
break;
case 288:
-#line 1173 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1174 "../parser/Grammar.y"
{
- (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new FuncDeclNode(GLOBAL_DATA, *(yyvsp[(2) - (8)].ident), (yyvsp[(7) - (8)].functionBodyNode), LEXER->sourceCode((yyvsp[(6) - (8)].intValue), (yyvsp[(8) - (8)].intValue), (yylsp[(6) - (8)]).first_line), (yyvsp[(4) - (8)].parameterList).m_node.head), 0, new ParserRefCountedData<DeclarationStacks::FunctionStack>(GLOBAL_DATA), ((*(yyvsp[(2) - (8)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, 0);
+ (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new FuncDeclNode(GLOBAL_DATA, *(yyvsp[(2) - (8)].ident), (yyvsp[(7) - (8)].functionBodyNode), LEXER->sourceCode((yyvsp[(6) - (8)].intValue), (yyvsp[(8) - (8)].intValue), (yylsp[(6) - (8)]).first_line), (yyvsp[(4) - (8)].parameterList).m_node.head), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*(yyvsp[(2) - (8)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, 0);
if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature)
(yyvsp[(7) - (8)].functionBodyNode)->setUsesArguments();
DBG((yyvsp[(7) - (8)].functionBodyNode), (yylsp[(6) - (8)]), (yylsp[(8) - (8)]));
@@ -4356,12 +4743,16 @@ yyreduce:
break;
case 289:
-#line 1183 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1184 "../parser/Grammar.y"
{ (yyval.funcExprNode) = createNodeInfo(new FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, (yyvsp[(5) - (6)].functionBodyNode), LEXER->sourceCode((yyvsp[(4) - (6)].intValue), (yyvsp[(6) - (6)].intValue), (yylsp[(4) - (6)]).first_line)), ClosureFeature, 0); DBG((yyvsp[(5) - (6)].functionBodyNode), (yylsp[(4) - (6)]), (yylsp[(6) - (6)])); ;}
break;
case 290:
-#line 1185 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1186 "../parser/Grammar.y"
{
(yyval.funcExprNode) = createNodeInfo(new FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, (yyvsp[(6) - (7)].functionBodyNode), LEXER->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line), (yyvsp[(3) - (7)].parameterList).m_node.head), (yyvsp[(3) - (7)].parameterList).m_features | ClosureFeature, 0);
if ((yyvsp[(3) - (7)].parameterList).m_features & ArgumentsFeature)
@@ -4371,12 +4762,16 @@ yyreduce:
break;
case 291:
-#line 1191 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1192 "../parser/Grammar.y"
{ (yyval.funcExprNode) = createNodeInfo(new FuncExprNode(GLOBAL_DATA, *(yyvsp[(2) - (7)].ident), (yyvsp[(6) - (7)].functionBodyNode), LEXER->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line)), ClosureFeature, 0); DBG((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)])); ;}
break;
case 292:
-#line 1193 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1194 "../parser/Grammar.y"
{
(yyval.funcExprNode) = createNodeInfo(new FuncExprNode(GLOBAL_DATA, *(yyvsp[(2) - (8)].ident), (yyvsp[(7) - (8)].functionBodyNode), LEXER->sourceCode((yyvsp[(6) - (8)].intValue), (yyvsp[(8) - (8)].intValue), (yylsp[(6) - (8)]).first_line), (yyvsp[(4) - (8)].parameterList).m_node.head), (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, 0);
if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature)
@@ -4386,43 +4781,57 @@ yyreduce:
break;
case 293:
-#line 1202 "../parser/Grammar.y"
- { (yyval.parameterList).m_node.head = new ParameterNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident));
+
+/* Line 1455 of yacc.c */
+#line 1203 "../parser/Grammar.y"
+ { (yyval.parameterList).m_node.head = new (GLOBAL_DATA) ParameterNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident));
(yyval.parameterList).m_features = (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0;
(yyval.parameterList).m_node.tail = (yyval.parameterList).m_node.head; ;}
break;
case 294:
-#line 1205 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1206 "../parser/Grammar.y"
{ (yyval.parameterList).m_node.head = (yyvsp[(1) - (3)].parameterList).m_node.head;
(yyval.parameterList).m_features = (yyvsp[(1) - (3)].parameterList).m_features | ((*(yyvsp[(3) - (3)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0);
- (yyval.parameterList).m_node.tail = new ParameterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].parameterList).m_node.tail, *(yyvsp[(3) - (3)].ident)); ;}
+ (yyval.parameterList).m_node.tail = new (GLOBAL_DATA) ParameterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].parameterList).m_node.tail, *(yyvsp[(3) - (3)].ident)); ;}
break;
case 295:
-#line 1211 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1212 "../parser/Grammar.y"
{ (yyval.functionBodyNode) = FunctionBodyNode::create(GLOBAL_DATA); ;}
break;
case 296:
-#line 1212 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1213 "../parser/Grammar.y"
{ (yyval.functionBodyNode) = FunctionBodyNode::create(GLOBAL_DATA); ;}
break;
case 297:
-#line 1216 "../parser/Grammar.y"
- { GLOBAL_DATA->parser->didFinishParsing(new SourceElements(GLOBAL_DATA), 0, 0, NoFeatures, (yylsp[(0) - (0)]).last_line, 0); ;}
+
+/* Line 1455 of yacc.c */
+#line 1217 "../parser/Grammar.y"
+ { GLOBAL_DATA->parser->didFinishParsing(new (GLOBAL_DATA) SourceElements(GLOBAL_DATA), 0, 0, NoFeatures, (yylsp[(0) - (0)]).last_line, 0); ;}
break;
case 298:
-#line 1217 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1218 "../parser/Grammar.y"
{ GLOBAL_DATA->parser->didFinishParsing((yyvsp[(1) - (1)].sourceElements).m_node, (yyvsp[(1) - (1)].sourceElements).m_varDeclarations, (yyvsp[(1) - (1)].sourceElements).m_funcDeclarations, (yyvsp[(1) - (1)].sourceElements).m_features,
(yylsp[(1) - (1)]).last_line, (yyvsp[(1) - (1)].sourceElements).m_numConstants); ;}
break;
case 299:
-#line 1222 "../parser/Grammar.y"
- { (yyval.sourceElements).m_node = new SourceElements(GLOBAL_DATA);
+
+/* Line 1455 of yacc.c */
+#line 1223 "../parser/Grammar.y"
+ { (yyval.sourceElements).m_node = new (GLOBAL_DATA) SourceElements(GLOBAL_DATA);
(yyval.sourceElements).m_node->append((yyvsp[(1) - (1)].statementNode).m_node);
(yyval.sourceElements).m_varDeclarations = (yyvsp[(1) - (1)].statementNode).m_varDeclarations;
(yyval.sourceElements).m_funcDeclarations = (yyvsp[(1) - (1)].statementNode).m_funcDeclarations;
@@ -4432,7 +4841,9 @@ yyreduce:
break;
case 300:
-#line 1229 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1230 "../parser/Grammar.y"
{ (yyval.sourceElements).m_node->append((yyvsp[(2) - (2)].statementNode).m_node);
(yyval.sourceElements).m_varDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].sourceElements).m_varDeclarations, (yyvsp[(2) - (2)].statementNode).m_varDeclarations);
(yyval.sourceElements).m_funcDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (2)].statementNode).m_funcDeclarations);
@@ -4442,188 +4853,261 @@ yyreduce:
break;
case 304:
-#line 1243 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1244 "../parser/Grammar.y"
{ ;}
break;
case 305:
-#line 1244 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1245 "../parser/Grammar.y"
{ ;}
break;
case 306:
-#line 1245 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1246 "../parser/Grammar.y"
{ Lexer& l = *LEXER; if (!l.scanRegExp()) YYABORT; ;}
break;
case 307:
-#line 1246 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1247 "../parser/Grammar.y"
{ Lexer& l = *LEXER; if (!l.scanRegExp()) YYABORT; ;}
break;
case 308:
-#line 1250 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1251 "../parser/Grammar.y"
{ ;}
break;
case 309:
-#line 1251 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1252 "../parser/Grammar.y"
{ ;}
break;
case 310:
-#line 1252 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1253 "../parser/Grammar.y"
{ ;}
break;
case 311:
-#line 1253 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1254 "../parser/Grammar.y"
{ if (*(yyvsp[(1) - (7)].ident) != "get" && *(yyvsp[(1) - (7)].ident) != "set") YYABORT; ;}
break;
case 312:
-#line 1254 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1255 "../parser/Grammar.y"
{ if (*(yyvsp[(1) - (8)].ident) != "get" && *(yyvsp[(1) - (8)].ident) != "set") YYABORT; ;}
break;
case 316:
-#line 1264 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1265 "../parser/Grammar.y"
{ ;}
break;
case 317:
-#line 1265 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1266 "../parser/Grammar.y"
{ ;}
break;
case 318:
-#line 1267 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1268 "../parser/Grammar.y"
{ ;}
break;
case 322:
-#line 1274 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1275 "../parser/Grammar.y"
{ ;}
break;
case 517:
-#line 1642 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1643 "../parser/Grammar.y"
{ ;}
break;
case 518:
-#line 1643 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1644 "../parser/Grammar.y"
{ ;}
break;
case 520:
-#line 1648 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1649 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 521:
-#line 1652 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1653 "../parser/Grammar.y"
{ ;}
break;
case 522:
-#line 1653 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1654 "../parser/Grammar.y"
{ ;}
break;
case 525:
-#line 1659 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1660 "../parser/Grammar.y"
{ ;}
break;
case 526:
-#line 1660 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1661 "../parser/Grammar.y"
{ ;}
break;
case 530:
-#line 1667 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1668 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 533:
-#line 1676 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1677 "../parser/Grammar.y"
{ ;}
break;
case 534:
-#line 1677 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1678 "../parser/Grammar.y"
{ ;}
break;
case 539:
-#line 1694 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1695 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 555:
-#line 1725 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1726 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 557:
-#line 1727 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1728 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 559:
-#line 1732 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1733 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 561:
-#line 1734 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1735 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 563:
-#line 1739 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1740 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 565:
-#line 1741 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1742 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 568:
-#line 1753 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1754 "../parser/Grammar.y"
{ ;}
break;
case 569:
-#line 1754 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1755 "../parser/Grammar.y"
{ ;}
break;
case 578:
-#line 1778 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1779 "../parser/Grammar.y"
{ ;}
break;
case 580:
-#line 1783 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1784 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 585:
-#line 1794 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1795 "../parser/Grammar.y"
{ AUTO_SEMICOLON; ;}
break;
case 592:
-#line 1810 "../parser/Grammar.y"
+
+/* Line 1455 of yacc.c */
+#line 1811 "../parser/Grammar.y"
{ ;}
break;
-/* Line 1267 of yacc.c. */
-#line 4627 "Grammar.tab.c"
+
+/* Line 1455 of yacc.c */
+#line 5111 "JavaScriptCore/tmp/../generated/Grammar.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4699,7 +5183,7 @@ yyerrlab:
if (yyerrstatus == 3)
{
- /* If just tried and failed to reuse look-ahead token after an
+ /* If just tried and failed to reuse lookahead token after an
error, discard it. */
if (yychar <= YYEOF)
@@ -4716,7 +5200,7 @@ yyerrlab:
}
}
- /* Else will try to reuse look-ahead token after shifting the error
+ /* Else will try to reuse lookahead token after shifting the error
token. */
goto yyerrlab1;
@@ -4774,14 +5258,11 @@ yyerrlab1:
YY_STACK_PRINT (yyss, yyssp);
}
- if (yyn == YYFINAL)
- YYACCEPT;
-
*++yyvsp = yylval;
yyerror_range[1] = yylloc;
/* Using YYLLOC is tempting, but would change the location of
- the look-ahead. YYLOC is available though. */
+ the lookahead. YYLOC is available though. */
YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
*++yylsp = yyloc;
@@ -4806,7 +5287,7 @@ yyabortlab:
yyresult = 1;
goto yyreturn;
-#ifndef yyoverflow
+#if !defined(yyoverflow) || YYERROR_VERBOSE
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
@@ -4817,7 +5298,7 @@ yyexhaustedlab:
#endif
yyreturn:
- if (yychar != YYEOF && yychar != YYEMPTY)
+ if (yychar != YYEMPTY)
yydestruct ("Cleanup: discarding lookahead",
yytoken, &yylval, &yylloc);
/* Do not reclaim the symbols of the rule which action triggered
@@ -4843,29 +5324,31 @@ yyreturn:
}
-#line 1826 "../parser/Grammar.y"
+
+/* Line 1675 of yacc.c */
+#line 1827 "../parser/Grammar.y"
static ExpressionNode* makeAssignNode(void* globalPtr, ExpressionNode* loc, Operator op, ExpressionNode* expr, bool locHasAssignments, bool exprHasAssignments, int start, int divot, int end)
{
if (!loc->isLocation())
- return new AssignErrorNode(GLOBAL_DATA, loc, op, expr, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) AssignErrorNode(GLOBAL_DATA, loc, op, expr, divot, divot - start, end - divot);
if (loc->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(loc);
if (op == OpEqual) {
- AssignResolveNode* node = new AssignResolveNode(GLOBAL_DATA, resolve->identifier(), expr, exprHasAssignments);
+ AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, resolve->identifier(), expr, exprHasAssignments);
SET_EXCEPTION_LOCATION(node, start, divot, end);
return node;
} else
- return new ReadModifyResolveNode(GLOBAL_DATA, resolve->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) ReadModifyResolveNode(GLOBAL_DATA, resolve->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
}
if (loc->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(loc);
if (op == OpEqual)
- return new AssignBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), expr, locHasAssignments, exprHasAssignments, bracket->divot(), bracket->divot() - start, end - bracket->divot());
+ return new (GLOBAL_DATA) AssignBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), expr, locHasAssignments, exprHasAssignments, bracket->divot(), bracket->divot() - start, end - bracket->divot());
else {
- ReadModifyBracketNode* node = new ReadModifyBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, expr, locHasAssignments, exprHasAssignments, divot, divot - start, end - divot);
+ ReadModifyBracketNode* node = new (GLOBAL_DATA) ReadModifyBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, expr, locHasAssignments, exprHasAssignments, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
return node;
}
@@ -4873,9 +5356,9 @@ static ExpressionNode* makeAssignNode(void* globalPtr, ExpressionNode* loc, Oper
ASSERT(loc->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(loc);
if (op == OpEqual)
- return new AssignDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), expr, exprHasAssignments, dot->divot(), dot->divot() - start, end - dot->divot());
+ return new (GLOBAL_DATA) AssignDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), expr, exprHasAssignments, dot->divot(), dot->divot() - start, end - dot->divot());
- ReadModifyDotNode* node = new ReadModifyDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
+ ReadModifyDotNode* node = new (GLOBAL_DATA) ReadModifyDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->endOffset());
return node;
}
@@ -4883,21 +5366,21 @@ static ExpressionNode* makeAssignNode(void* globalPtr, ExpressionNode* loc, Oper
static ExpressionNode* makePrefixNode(void* globalPtr, ExpressionNode* expr, Operator op, int start, int divot, int end)
{
if (!expr->isLocation())
- return new PrefixErrorNode(GLOBAL_DATA, expr, op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PrefixErrorNode(GLOBAL_DATA, expr, op, divot, divot - start, end - divot);
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new PrefixResolveNode(GLOBAL_DATA, resolve->identifier(), op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PrefixResolveNode(GLOBAL_DATA, resolve->identifier(), op, divot, divot - start, end - divot);
}
if (expr->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
- PrefixBracketNode* node = new PrefixBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
+ PrefixBracketNode* node = new (GLOBAL_DATA) PrefixBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->startOffset());
return node;
}
ASSERT(expr->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
- PrefixDotNode* node = new PrefixDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
+ PrefixDotNode* node = new (GLOBAL_DATA) PrefixDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->startOffset());
return node;
}
@@ -4905,22 +5388,22 @@ static ExpressionNode* makePrefixNode(void* globalPtr, ExpressionNode* expr, Ope
static ExpressionNode* makePostfixNode(void* globalPtr, ExpressionNode* expr, Operator op, int start, int divot, int end)
{
if (!expr->isLocation())
- return new PostfixErrorNode(GLOBAL_DATA, expr, op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PostfixErrorNode(GLOBAL_DATA, expr, op, divot, divot - start, end - divot);
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new PostfixResolveNode(GLOBAL_DATA, resolve->identifier(), op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PostfixResolveNode(GLOBAL_DATA, resolve->identifier(), op, divot, divot - start, end - divot);
}
if (expr->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
- PostfixBracketNode* node = new PostfixBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
+ PostfixBracketNode* node = new (GLOBAL_DATA) PostfixBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
return node;
}
ASSERT(expr->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
- PostfixDotNode* node = new PostfixDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
+ PostfixDotNode* node = new (GLOBAL_DATA) PostfixDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->endOffset());
return node;
}
@@ -4930,23 +5413,29 @@ static ExpressionNodeInfo makeFunctionCallNode(void* globalPtr, ExpressionNodeIn
CodeFeatures features = func.m_features | args.m_features;
int numConstants = func.m_numConstants + args.m_numConstants;
if (!func.m_node->isLocation())
- return createNodeInfo<ExpressionNode*>(new FunctionCallValueNode(GLOBAL_DATA, func.m_node, args.m_node, divot, divot - start, end - divot), features, numConstants);
+ return createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) FunctionCallValueNode(GLOBAL_DATA, func.m_node, args.m_node, divot, divot - start, end - divot), features, numConstants);
if (func.m_node->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(func.m_node);
const Identifier& identifier = resolve->identifier();
if (identifier == GLOBAL_DATA->propertyNames->eval)
- return createNodeInfo<ExpressionNode*>(new EvalFunctionCallNode(GLOBAL_DATA, args.m_node, divot, divot - start, end - divot), EvalFeature | features, numConstants);
- return createNodeInfo<ExpressionNode*>(new FunctionCallResolveNode(GLOBAL_DATA, identifier, args.m_node, divot, divot - start, end - divot), features, numConstants);
+ return createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EvalFunctionCallNode(GLOBAL_DATA, args.m_node, divot, divot - start, end - divot), EvalFeature | features, numConstants);
+ return createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) FunctionCallResolveNode(GLOBAL_DATA, identifier, args.m_node, divot, divot - start, end - divot), features, numConstants);
}
if (func.m_node->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(func.m_node);
- FunctionCallBracketNode* node = new FunctionCallBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), args.m_node, divot, divot - start, end - divot);
+ FunctionCallBracketNode* node = new (GLOBAL_DATA) FunctionCallBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), args.m_node, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
return createNodeInfo<ExpressionNode*>(node, features, numConstants);
}
ASSERT(func.m_node->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(func.m_node);
- FunctionCallDotNode* node = new FunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
+ FunctionCallDotNode* node;
+ if (dot->identifier() == GLOBAL_DATA->propertyNames->call)
+ node = new (GLOBAL_DATA) CallFunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
+ else if (dot->identifier() == GLOBAL_DATA->propertyNames->apply)
+ node = new (GLOBAL_DATA) ApplyFunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
+ else
+ node = new (GLOBAL_DATA) FunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->endOffset());
return createNodeInfo<ExpressionNode*>(node, features, numConstants);
}
@@ -4955,26 +5444,26 @@ static ExpressionNode* makeTypeOfNode(void* globalPtr, ExpressionNode* expr)
{
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new TypeOfResolveNode(GLOBAL_DATA, resolve->identifier());
+ return new (GLOBAL_DATA) TypeOfResolveNode(GLOBAL_DATA, resolve->identifier());
}
- return new TypeOfValueNode(GLOBAL_DATA, expr);
+ return new (GLOBAL_DATA) TypeOfValueNode(GLOBAL_DATA, expr);
}
static ExpressionNode* makeDeleteNode(void* globalPtr, ExpressionNode* expr, int start, int divot, int end)
{
if (!expr->isLocation())
- return new DeleteValueNode(GLOBAL_DATA, expr);
+ return new (GLOBAL_DATA) DeleteValueNode(GLOBAL_DATA, expr);
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new DeleteResolveNode(GLOBAL_DATA, resolve->identifier(), divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) DeleteResolveNode(GLOBAL_DATA, resolve->identifier(), divot, divot - start, end - divot);
}
if (expr->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
- return new DeleteBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) DeleteBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), divot, divot - start, end - divot);
}
ASSERT(expr->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
- return new DeleteDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) DeleteDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), divot, divot - start, end - divot);
}
static PropertyNode* makeGetterOrSetterPropertyNode(void* globalPtr, const Identifier& getOrSet, const Identifier& name, ParameterNode* params, FunctionBodyNode* body, const SourceCode& source)
@@ -4986,7 +5475,7 @@ static PropertyNode* makeGetterOrSetterPropertyNode(void* globalPtr, const Ident
type = PropertyNode::Setter;
else
return 0;
- return new PropertyNode(GLOBAL_DATA, name, new FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, body, source, params), type);
+ return new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, name, new FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, body, source, params), type);
}
static ExpressionNode* makeNegateNode(void* globalPtr, ExpressionNode* n)
@@ -5000,19 +5489,19 @@ static ExpressionNode* makeNegateNode(void* globalPtr, ExpressionNode* n)
}
}
- return new NegateNode(GLOBAL_DATA, n);
+ return new (GLOBAL_DATA) NegateNode(GLOBAL_DATA, n);
}
static NumberNode* makeNumberNode(void* globalPtr, double d)
{
- return new NumberNode(GLOBAL_DATA, d);
+ return new (GLOBAL_DATA) NumberNode(GLOBAL_DATA, d);
}
static ExpressionNode* makeBitwiseNotNode(void* globalPtr, ExpressionNode* expr)
{
if (expr->isNumber())
return makeNumberNode(globalPtr, ~toInt32(static_cast<NumberNode*>(expr)->value()));
- return new BitwiseNotNode(GLOBAL_DATA, expr);
+ return new (GLOBAL_DATA) BitwiseNotNode(GLOBAL_DATA, expr);
}
static ExpressionNode* makeMultNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
@@ -5024,12 +5513,12 @@ static ExpressionNode* makeMultNode(void* globalPtr, ExpressionNode* expr1, Expr
return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() * static_cast<NumberNode*>(expr2)->value());
if (expr1->isNumber() && static_cast<NumberNode*>(expr1)->value() == 1)
- return new UnaryPlusNode(GLOBAL_DATA, expr2);
+ return new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, expr2);
if (expr2->isNumber() && static_cast<NumberNode*>(expr2)->value() == 1)
- return new UnaryPlusNode(GLOBAL_DATA, expr1);
+ return new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, expr1);
- return new MultNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) MultNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
static ExpressionNode* makeDivNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
@@ -5039,14 +5528,14 @@ static ExpressionNode* makeDivNode(void* globalPtr, ExpressionNode* expr1, Expre
if (expr1->isNumber() && expr2->isNumber())
return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() / static_cast<NumberNode*>(expr2)->value());
- return new DivNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) DivNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
static ExpressionNode* makeAddNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
if (expr1->isNumber() && expr2->isNumber())
return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() + static_cast<NumberNode*>(expr2)->value());
- return new AddNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) AddNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
static ExpressionNode* makeSubNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
@@ -5056,21 +5545,21 @@ static ExpressionNode* makeSubNode(void* globalPtr, ExpressionNode* expr1, Expre
if (expr1->isNumber() && expr2->isNumber())
return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() - static_cast<NumberNode*>(expr2)->value());
- return new SubNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) SubNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
static ExpressionNode* makeLeftShiftNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
if (expr1->isNumber() && expr2->isNumber())
return makeNumberNode(globalPtr, toInt32(static_cast<NumberNode*>(expr1)->value()) << (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
- return new LeftShiftNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) LeftShiftNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
static ExpressionNode* makeRightShiftNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
if (expr1->isNumber() && expr2->isNumber())
return makeNumberNode(globalPtr, toInt32(static_cast<NumberNode*>(expr1)->value()) >> (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
- return new RightShiftNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) RightShiftNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
/* called by yyparse on error */
@@ -5089,7 +5578,7 @@ static ExpressionNode* combineVarInitializers(void* globalPtr, ExpressionNode* l
{
if (!list)
return init;
- return new VarDeclCommaNode(GLOBAL_DATA, list, init);
+ return new (GLOBAL_DATA) CommaNode(GLOBAL_DATA, list, init);
}
// We turn variable declarations into either assignments or empty
@@ -5098,8 +5587,8 @@ static ExpressionNode* combineVarInitializers(void* globalPtr, ExpressionNode* l
static StatementNode* makeVarStatementNode(void* globalPtr, ExpressionNode* expr)
{
if (!expr)
- return new EmptyStatementNode(GLOBAL_DATA);
- return new VarStatementNode(GLOBAL_DATA, expr);
+ return new (GLOBAL_DATA) EmptyStatementNode(GLOBAL_DATA);
+ return new (GLOBAL_DATA) VarStatementNode(GLOBAL_DATA, expr);
}
#undef GLOBAL_DATA
diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.h b/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.h
index 99dbd4c..c7d3837 100644
--- a/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.h
+++ b/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.h
@@ -1,24 +1,23 @@
-/* A Bison parser, made by GNU Bison 2.3. */
-/* Skeleton interface for Bison's Yacc-like parsers in C
+/* A Bison parser, made by GNU Bison 2.4.1. */
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
+
+ This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -29,10 +28,11 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
@@ -104,78 +104,16 @@
AUTOMINUSMINUS = 320
};
#endif
-/* Tokens. */
-#define NULLTOKEN 258
-#define TRUETOKEN 259
-#define FALSETOKEN 260
-#define BREAK 261
-#define CASE 262
-#define DEFAULT 263
-#define FOR 264
-#define NEW 265
-#define VAR 266
-#define CONSTTOKEN 267
-#define CONTINUE 268
-#define FUNCTION 269
-#define RETURN 270
-#define VOIDTOKEN 271
-#define DELETETOKEN 272
-#define IF 273
-#define THISTOKEN 274
-#define DO 275
-#define WHILE 276
-#define INTOKEN 277
-#define INSTANCEOF 278
-#define TYPEOF 279
-#define SWITCH 280
-#define WITH 281
-#define RESERVED 282
-#define THROW 283
-#define TRY 284
-#define CATCH 285
-#define FINALLY 286
-#define DEBUGGER 287
-#define IF_WITHOUT_ELSE 288
-#define ELSE 289
-#define EQEQ 290
-#define NE 291
-#define STREQ 292
-#define STRNEQ 293
-#define LE 294
-#define GE 295
-#define OR 296
-#define AND 297
-#define PLUSPLUS 298
-#define MINUSMINUS 299
-#define LSHIFT 300
-#define RSHIFT 301
-#define URSHIFT 302
-#define PLUSEQUAL 303
-#define MINUSEQUAL 304
-#define MULTEQUAL 305
-#define DIVEQUAL 306
-#define LSHIFTEQUAL 307
-#define RSHIFTEQUAL 308
-#define URSHIFTEQUAL 309
-#define ANDEQUAL 310
-#define MODEQUAL 311
-#define XOREQUAL 312
-#define OREQUAL 313
-#define OPENBRACE 314
-#define CLOSEBRACE 315
-#define NUMBER 316
-#define IDENT 317
-#define STRING 318
-#define AUTOPLUSPLUS 319
-#define AUTOMINUSMINUS 320
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 157 "../parser/Grammar.y"
{
+
+/* Line 1676 of yacc.c */
+#line 157 "../parser/Grammar.y"
+
int intValue;
double doubleValue;
Identifier* ident;
@@ -205,13 +143,15 @@ typedef union YYSTYPE
ParameterListInfo parameterList;
Operator op;
-}
-/* Line 1489 of yacc.c. */
-#line 211 "Grammar.tab.h"
- YYSTYPE;
+
+
+
+/* Line 1676 of yacc.c */
+#line 151 "JavaScriptCore/tmp/../generated/Grammar.tab.h"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
#endif
@@ -230,3 +170,4 @@ typedef struct YYLTYPE
#endif
+
diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/Lexer.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/Lexer.lut.h
index 07cf122..fb1ae29 100644
--- a/src/3rdparty/webkit/JavaScriptCore/generated/Lexer.lut.h
+++ b/src/3rdparty/webkit/JavaScriptCore/generated/Lexer.lut.h
@@ -45,10 +45,5 @@ static const struct HashTableValue mainTableValues[37] = {
};
extern const struct HashTable mainTable =
-#if ENABLE(PERFECT_HASH_SIZE)
- { 1023, mainTableValues, 0 };
-#else
{ 133, 127, mainTableValues, 0 };
-#endif
-
} // namespace
diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/MathObject.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/MathObject.lut.h
index 8fb01f2..7d9b43e 100644
--- a/src/3rdparty/webkit/JavaScriptCore/generated/MathObject.lut.h
+++ b/src/3rdparty/webkit/JavaScriptCore/generated/MathObject.lut.h
@@ -27,10 +27,5 @@ static const struct HashTableValue mathTableValues[19] = {
};
extern const struct HashTable mathTable =
-#if ENABLE(PERFECT_HASH_SIZE)
- { 511, mathTableValues, 0 };
-#else
{ 67, 63, mathTableValues, 0 };
-#endif
-
} // namespace
diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/NumberConstructor.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/NumberConstructor.lut.h
index de3d5a9..e963e1a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/generated/NumberConstructor.lut.h
+++ b/src/3rdparty/webkit/JavaScriptCore/generated/NumberConstructor.lut.h
@@ -14,10 +14,5 @@ static const struct HashTableValue numberTableValues[6] = {
};
extern const struct HashTable numberTable =
-#if ENABLE(PERFECT_HASH_SIZE)
- { 15, numberTableValues, 0 };
-#else
{ 16, 15, numberTableValues, 0 };
-#endif
-
} // namespace
diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/RegExpConstructor.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/RegExpConstructor.lut.h
index 705efbb..fd822c6 100644
--- a/src/3rdparty/webkit/JavaScriptCore/generated/RegExpConstructor.lut.h
+++ b/src/3rdparty/webkit/JavaScriptCore/generated/RegExpConstructor.lut.h
@@ -30,10 +30,5 @@ static const struct HashTableValue regExpConstructorTableValues[22] = {
};
extern const struct HashTable regExpConstructorTable =
-#if ENABLE(PERFECT_HASH_SIZE)
- { 511, regExpConstructorTableValues, 0 };
-#else
{ 65, 63, regExpConstructorTableValues, 0 };
-#endif
-
} // namespace
diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/RegExpObject.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/RegExpObject.lut.h
index 3612f62..81d5b60 100644
--- a/src/3rdparty/webkit/JavaScriptCore/generated/RegExpObject.lut.h
+++ b/src/3rdparty/webkit/JavaScriptCore/generated/RegExpObject.lut.h
@@ -14,10 +14,5 @@ static const struct HashTableValue regExpTableValues[6] = {
};
extern const struct HashTable regExpTable =
-#if ENABLE(PERFECT_HASH_SIZE)
- { 31, regExpTableValues, 0 };
-#else
{ 17, 15, regExpTableValues, 0 };
-#endif
-
} // namespace
diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/StringPrototype.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/StringPrototype.lut.h
index 0cf0815..dfb9c20 100644
--- a/src/3rdparty/webkit/JavaScriptCore/generated/StringPrototype.lut.h
+++ b/src/3rdparty/webkit/JavaScriptCore/generated/StringPrototype.lut.h
@@ -41,10 +41,5 @@ static const struct HashTableValue stringTableValues[33] = {
};
extern const struct HashTable stringTable =
-#if ENABLE(PERFECT_HASH_SIZE)
- { 2047, stringTableValues, 0 };
-#else
{ 71, 63, stringTableValues, 0 };
-#endif
-
} // namespace
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/CachedCall.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/CachedCall.h
new file mode 100644
index 0000000..f48f4f4
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/CachedCall.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CachedCall_h
+#define CachedCall_h
+
+#include "CallFrameClosure.h"
+#include "JSFunction.h"
+#include "JSGlobalObject.h"
+#include "Interpreter.h"
+
+namespace JSC {
+ class CachedCall : Noncopyable {
+ public:
+ CachedCall(CallFrame* callFrame, JSFunction* function, int argCount, JSValue* exception)
+ : m_valid(false)
+ , m_interpreter(callFrame->interpreter())
+ , m_exception(exception)
+ , m_globalObjectScope(callFrame, callFrame->globalData().dynamicGlobalObject ? callFrame->globalData().dynamicGlobalObject : function->scope().node()->globalObject())
+ {
+ m_closure = m_interpreter->prepareForRepeatCall(function->body(), callFrame, function, argCount, function->scope().node(), exception);
+ m_valid = !*exception;
+ }
+
+ JSValue call()
+ {
+ ASSERT(m_valid);
+ return m_interpreter->execute(m_closure, m_exception);
+ }
+ void setThis(JSValue v) { m_closure.setArgument(0, v); }
+ void setArgument(int n, JSValue v) { m_closure.setArgument(n + 1, v); }
+ CallFrame* newCallFrame() { return m_closure.newCallFrame; }
+ ~CachedCall()
+ {
+ if (m_valid)
+ m_interpreter->endRepeatCall(m_closure);
+ }
+
+ private:
+ bool m_valid;
+ Interpreter* m_interpreter;
+ JSValue* m_exception;
+ DynamicGlobalObjectScope m_globalObjectScope;
+ CallFrameClosure m_closure;
+ };
+}
+
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.cpp b/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.cpp
index 1c74280..9724875 100644
--- a/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.cpp
@@ -27,12 +27,26 @@
#include "CallFrame.h"
#include "CodeBlock.h"
+#include "Interpreter.h"
namespace JSC {
-JSValuePtr CallFrame::thisValue()
+JSValue CallFrame::thisValue()
{
- return this[codeBlock()->thisRegister()].jsValue(this);
+ return this[codeBlock()->thisRegister()].jsValue();
}
+#ifndef NDEBUG
+void CallFrame::dumpCaller()
+{
+ int signedLineNumber;
+ intptr_t sourceID;
+ UString urlString;
+ JSValue function;
+
+ interpreter()->retrieveLastCaller(this, signedLineNumber, sourceID, urlString, function);
+ printf("Callpoint => %s:%d\n", urlString.ascii(), signedLineNumber);
+}
+#endif
+
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h
index d6b9b79..a61e143 100644
--- a/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h
+++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h
@@ -40,8 +40,9 @@ namespace JSC {
JSFunction* callee() const { return this[RegisterFile::Callee].function(); }
CodeBlock* codeBlock() const { return this[RegisterFile::CodeBlock].Register::codeBlock(); }
ScopeChainNode* scopeChain() const { return this[RegisterFile::ScopeChain].Register::scopeChain(); }
+ int argumentCount() const { return this[RegisterFile::ArgumentCount].i(); }
- JSValuePtr thisValue();
+ JSValue thisValue();
// Global object in which execution began.
JSGlobalObject* dynamicGlobalObject();
@@ -73,17 +74,19 @@ namespace JSC {
// pointer, so these are inefficient, and should be used sparingly in new code.
// But they're used in many places in legacy code, so they're not going away any time soon.
- void setException(JSValuePtr exception) { globalData().exception = exception; }
- void clearException() { globalData().exception = noValue(); }
- JSValuePtr exception() const { return globalData().exception; }
- JSValuePtr* exceptionSlot() { return &globalData().exception; }
+ void setException(JSValue exception) { globalData().exception = exception; }
+ void clearException() { globalData().exception = JSValue(); }
+ JSValue exception() const { return globalData().exception; }
+ JSValue* exceptionSlot() { return &globalData().exception; }
bool hadException() const { return globalData().exception; }
const CommonIdentifiers& propertyNames() const { return *globalData().propertyNames; }
- const ArgList& emptyList() const { return *globalData().emptyList; }
+ const MarkedArgumentBuffer& emptyList() const { return *globalData().emptyList; }
Interpreter* interpreter() { return globalData().interpreter; }
Heap* heap() { return &globalData().heap; }
-
+#ifndef NDEBUG
+ void dumpCaller();
+#endif
static const HashTable* arrayTable(CallFrame* callFrame) { return callFrame->globalData().arrayTable; }
static const HashTable* dateTable(CallFrame* callFrame) { return callFrame->globalData().dateTable; }
static const HashTable* mathTable(CallFrame* callFrame) { return callFrame->globalData().mathTable; }
@@ -92,28 +95,17 @@ namespace JSC {
static const HashTable* regExpConstructorTable(CallFrame* callFrame) { return callFrame->globalData().regExpConstructorTable; }
static const HashTable* stringTable(CallFrame* callFrame) { return callFrame->globalData().stringTable; }
- private:
- friend class Arguments;
- friend class JSActivation;
- friend class JSGlobalObject;
- friend class Interpreter;
-
static CallFrame* create(Register* callFrameBase) { return static_cast<CallFrame*>(callFrameBase); }
Register* registers() { return this; }
CallFrame& operator=(const Register& r) { *static_cast<Register*>(this) = r; return *this; }
- int argumentCount() const { return this[RegisterFile::ArgumentCount].i(); }
CallFrame* callerFrame() const { return this[RegisterFile::CallerFrame].callFrame(); }
Arguments* optionalCalleeArguments() const { return this[RegisterFile::OptionalCalleeArguments].arguments(); }
Instruction* returnPC() const { return this[RegisterFile::ReturnPC].vPC(); }
- int returnValueRegister() const { return this[RegisterFile::ReturnValueRegister].i(); }
- void setArgumentCount(int count) { this[RegisterFile::ArgumentCount] = count; }
- void setCallee(JSFunction* callee) { this[RegisterFile::Callee] = callee; }
void setCalleeArguments(Arguments* arguments) { this[RegisterFile::OptionalCalleeArguments] = arguments; }
void setCallerFrame(CallFrame* callerFrame) { this[RegisterFile::CallerFrame] = callerFrame; }
- void setCodeBlock(CodeBlock* codeBlock) { this[RegisterFile::CodeBlock] = codeBlock; }
void setScopeChain(ScopeChainNode* scopeChain) { this[RegisterFile::ScopeChain] = scopeChain; }
ALWAYS_INLINE void init(CodeBlock* codeBlock, Instruction* vPC, ScopeChainNode* scopeChain,
@@ -131,6 +123,19 @@ namespace JSC {
setCalleeArguments(0);
}
+ private:
+ friend class Arguments;
+ friend class JSActivation;
+ friend class JSGlobalObject;
+ friend class Interpreter;
+ friend struct CallFrameClosure;
+
+ int returnValueRegister() const { return this[RegisterFile::ReturnValueRegister].i(); }
+
+ void setArgumentCount(int count) { this[RegisterFile::ArgumentCount] = count; }
+ void setCallee(JSFunction* callee) { this[RegisterFile::Callee] = callee; }
+ void setCodeBlock(CodeBlock* codeBlock) { this[RegisterFile::CodeBlock] = codeBlock; }
+
static const intptr_t HostCallFrameFlag = 1;
static CallFrame* noCaller() { return reinterpret_cast<CallFrame*>(HostCallFrameFlag); }
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrameClosure.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrameClosure.h
new file mode 100644
index 0000000..0e14ced
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrameClosure.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CallFrameClosure_h
+#define CallFrameClosure_h
+
+namespace JSC {
+
+struct CallFrameClosure {
+ CallFrame* oldCallFrame;
+ CallFrame* newCallFrame;
+ JSFunction* function;
+ FunctionBodyNode* functionBody;
+ JSGlobalData* globalData;
+ Register* oldEnd;
+ ScopeChainNode* scopeChain;
+ int expectedParams;
+ int providedParams;
+
+ void setArgument(int arg, JSValue value)
+ {
+ if (arg < expectedParams)
+ newCallFrame[arg - RegisterFile::CallFrameHeaderSize - expectedParams] = value;
+ else
+ newCallFrame[arg - RegisterFile::CallFrameHeaderSize - expectedParams - providedParams] = value;
+ }
+ void resetCallFrame()
+ {
+ newCallFrame->setScopeChain(scopeChain);
+ newCallFrame->setCalleeArguments(0);
+ for (int i = providedParams; i < expectedParams; ++i)
+ newCallFrame[i - RegisterFile::CallFrameHeaderSize - expectedParams] = jsUndefined();
+ }
+};
+
+}
+
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp
index 0f9ea01..d980962 100644
--- a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp
@@ -32,11 +32,14 @@
#include "Arguments.h"
#include "BatchedTransitionOptimizer.h"
+#include "CallFrame.h"
+#include "CallFrameClosure.h"
#include "CodeBlock.h"
+#include "Collector.h"
+#include "Debugger.h"
#include "DebuggerCallFrame.h"
#include "EvalCodeCache.h"
#include "ExceptionHelpers.h"
-#include "CallFrame.h"
#include "GlobalEvalFunction.h"
#include "JSActivation.h"
#include "JSArray.h"
@@ -44,19 +47,19 @@
#include "JSFunction.h"
#include "JSNotAnObject.h"
#include "JSPropertyNameIterator.h"
+#include "LiteralParser.h"
#include "JSStaticScopeObject.h"
#include "JSString.h"
#include "ObjectPrototype.h"
+#include "Operations.h"
#include "Parser.h"
#include "Profiler.h"
#include "RegExpObject.h"
#include "RegExpPrototype.h"
#include "Register.h"
-#include "Collector.h"
-#include "Debugger.h"
-#include "Operations.h"
#include "SamplingTool.h"
#include <stdio.h>
+#include <wtf/Threading.h>
#if ENABLE(JIT)
#include "JIT.h"
@@ -66,34 +69,16 @@
#include "AssemblerBuffer.h"
#endif
-#if PLATFORM(DARWIN)
-#include <mach/mach.h>
-#endif
-
-#if HAVE(SYS_TIME_H)
-#include <sys/time.h>
-#endif
-
-#if PLATFORM(WIN_OS)
-#include <windows.h>
-#endif
-
-#if PLATFORM(QT)
-#include <QDateTime>
-#endif
-
using namespace std;
namespace JSC {
-// Preferred number of milliseconds between each timeout check
-static const int preferredScriptCheckTimeInterval = 1000;
-
-static ALWAYS_INLINE unsigned bytecodeOffsetForPC(CodeBlock* codeBlock, void* pc)
+static ALWAYS_INLINE unsigned bytecodeOffsetForPC(CallFrame* callFrame, CodeBlock* codeBlock, void* pc)
{
#if ENABLE(JIT)
- return codeBlock->getBytecodeIndex(pc);
+ return codeBlock->getBytecodeIndex(callFrame, pc);
#else
+ UNUSED_PARAM(callFrame);
return static_cast<Instruction*>(pc) - codeBlock->instructions().begin();
#endif
}
@@ -106,203 +91,8 @@ static int depth(CodeBlock* codeBlock, ScopeChain& sc)
return sc.localDepth();
}
-// FIXME: This operation should be called "getNumber", not "isNumber" (as it is in JSValue.h).
-// FIXME: There's no need to have a "slow" version of this. All versions should be fast.
-static ALWAYS_INLINE bool fastIsNumber(JSValuePtr value, double& arg)
-{
- if (JSImmediate::isNumber(value))
- arg = JSImmediate::getTruncatedInt32(value);
- else if (LIKELY(!JSImmediate::isImmediate(value)) && LIKELY(Heap::isNumber(asCell(value))))
- arg = asNumberCell(value)->value();
- else
- return false;
- return true;
-}
-
-// FIXME: Why doesn't JSValuePtr::toInt32 have the Heap::isNumber optimization?
-static bool fastToInt32(JSValuePtr value, int32_t& arg)
-{
- if (JSImmediate::isNumber(value))
- arg = JSImmediate::getTruncatedInt32(value);
- else if (LIKELY(!JSImmediate::isImmediate(value)) && LIKELY(Heap::isNumber(asCell(value))))
- arg = asNumberCell(value)->toInt32();
- else
- return false;
- return true;
-}
-
-static ALWAYS_INLINE bool fastToUInt32(JSValuePtr value, uint32_t& arg)
-{
- if (JSImmediate::isNumber(value)) {
- if (JSImmediate::getTruncatedUInt32(value, arg))
- return true;
- bool scratch;
- arg = toUInt32SlowCase(JSImmediate::getTruncatedInt32(value), scratch);
- return true;
- } else if (!JSImmediate::isImmediate(value) && Heap::isNumber(asCell(value)))
- arg = asNumberCell(value)->toUInt32();
- else
- return false;
- return true;
-}
-
-static inline bool jsLess(CallFrame* callFrame, JSValuePtr v1, JSValuePtr v2)
-{
- if (JSImmediate::areBothImmediateNumbers(v1, v2))
- return JSImmediate::getTruncatedInt32(v1) < JSImmediate::getTruncatedInt32(v2);
-
- double n1;
- double n2;
- if (fastIsNumber(v1, n1) && fastIsNumber(v2, n2))
- return n1 < n2;
-
- Interpreter* interpreter = callFrame->interpreter();
- if (interpreter->isJSString(v1) && interpreter->isJSString(v2))
- return asString(v1)->value() < asString(v2)->value();
-
- JSValuePtr p1;
- JSValuePtr p2;
- bool wasNotString1 = v1->getPrimitiveNumber(callFrame, n1, p1);
- bool wasNotString2 = v2->getPrimitiveNumber(callFrame, n2, p2);
-
- if (wasNotString1 | wasNotString2)
- return n1 < n2;
-
- return asString(p1)->value() < asString(p2)->value();
-}
-
-static inline bool jsLessEq(CallFrame* callFrame, JSValuePtr v1, JSValuePtr v2)
-{
- if (JSImmediate::areBothImmediateNumbers(v1, v2))
- return JSImmediate::getTruncatedInt32(v1) <= JSImmediate::getTruncatedInt32(v2);
-
- double n1;
- double n2;
- if (fastIsNumber(v1, n1) && fastIsNumber(v2, n2))
- return n1 <= n2;
-
- Interpreter* interpreter = callFrame->interpreter();
- if (interpreter->isJSString(v1) && interpreter->isJSString(v2))
- return !(asString(v2)->value() < asString(v1)->value());
-
- JSValuePtr p1;
- JSValuePtr p2;
- bool wasNotString1 = v1->getPrimitiveNumber(callFrame, n1, p1);
- bool wasNotString2 = v2->getPrimitiveNumber(callFrame, n2, p2);
-
- if (wasNotString1 | wasNotString2)
- return n1 <= n2;
-
- return !(asString(p2)->value() < asString(p1)->value());
-}
-
-static NEVER_INLINE JSValuePtr jsAddSlowCase(CallFrame* callFrame, JSValuePtr v1, JSValuePtr v2)
-{
- // exception for the Date exception in defaultValue()
- JSValuePtr p1 = v1->toPrimitive(callFrame);
- JSValuePtr p2 = v2->toPrimitive(callFrame);
-
- if (p1->isString() || p2->isString()) {
- RefPtr<UString::Rep> value = concatenate(p1->toString(callFrame).rep(), p2->toString(callFrame).rep());
- if (!value)
- return throwOutOfMemoryError(callFrame);
- return jsString(callFrame, value.release());
- }
-
- return jsNumber(callFrame, p1->toNumber(callFrame) + p2->toNumber(callFrame));
-}
-
-// Fast-path choices here are based on frequency data from SunSpider:
-// <times> Add case: <t1> <t2>
-// ---------------------------
-// 5626160 Add case: 3 3 (of these, 3637690 are for immediate values)
-// 247412 Add case: 5 5
-// 20900 Add case: 5 6
-// 13962 Add case: 5 3
-// 4000 Add case: 3 5
-
-static ALWAYS_INLINE JSValuePtr jsAdd(CallFrame* callFrame, JSValuePtr v1, JSValuePtr v2)
-{
- double left;
- double right = 0.0;
-
- bool rightIsNumber = fastIsNumber(v2, right);
- if (rightIsNumber && fastIsNumber(v1, left))
- return jsNumber(callFrame, left + right);
-
- bool leftIsString = v1->isString();
- if (leftIsString && v2->isString()) {
- RefPtr<UString::Rep> value = concatenate(asString(v1)->value().rep(), asString(v2)->value().rep());
- if (!value)
- return throwOutOfMemoryError(callFrame);
- return jsString(callFrame, value.release());
- }
-
- if (rightIsNumber & leftIsString) {
- RefPtr<UString::Rep> value = JSImmediate::isImmediate(v2) ?
- concatenate(asString(v1)->value().rep(), JSImmediate::getTruncatedInt32(v2)) :
- concatenate(asString(v1)->value().rep(), right);
-
- if (!value)
- return throwOutOfMemoryError(callFrame);
- return jsString(callFrame, value.release());
- }
-
- // All other cases are pretty uncommon
- return jsAddSlowCase(callFrame, v1, v2);
-}
-
-static JSValuePtr jsTypeStringForValue(CallFrame* callFrame, JSValuePtr v)
-{
- if (v->isUndefined())
- return jsNontrivialString(callFrame, "undefined");
- if (v->isBoolean())
- return jsNontrivialString(callFrame, "boolean");
- if (v->isNumber())
- return jsNontrivialString(callFrame, "number");
- if (v->isString())
- return jsNontrivialString(callFrame, "string");
- if (v->isObject()) {
- // Return "undefined" for objects that should be treated
- // as null when doing comparisons.
- if (asObject(v)->structure()->typeInfo().masqueradesAsUndefined())
- return jsNontrivialString(callFrame, "undefined");
- CallData callData;
- if (asObject(v)->getCallData(callData) != CallTypeNone)
- return jsNontrivialString(callFrame, "function");
- }
- return jsNontrivialString(callFrame, "object");
-}
-
-static bool jsIsObjectType(JSValuePtr v)
-{
- if (JSImmediate::isImmediate(v))
- return v->isNull();
-
- JSType type = asCell(v)->structure()->typeInfo().type();
- if (type == NumberType || type == StringType)
- return false;
- if (type == ObjectType) {
- if (asObject(v)->structure()->typeInfo().masqueradesAsUndefined())
- return false;
- CallData callData;
- if (asObject(v)->getCallData(callData) != CallTypeNone)
- return false;
- }
- return true;
-}
-
-static bool jsIsFunctionType(JSValuePtr v)
-{
- if (v->isObject()) {
- CallData callData;
- if (asObject(v)->getCallData(callData) != CallTypeNone)
- return true;
- }
- return false;
-}
-
-NEVER_INLINE bool Interpreter::resolve(CallFrame* callFrame, Instruction* vPC, JSValuePtr& exceptionValue)
+#if USE(INTERPRETER)
+NEVER_INLINE bool Interpreter::resolve(CallFrame* callFrame, Instruction* vPC, JSValue& exceptionValue)
{
int dst = (vPC + 1)->u.operand;
int property = (vPC + 2)->u.operand;
@@ -318,11 +108,11 @@ NEVER_INLINE bool Interpreter::resolve(CallFrame* callFrame, Instruction* vPC, J
JSObject* o = *iter;
PropertySlot slot(o);
if (o->getPropertySlot(callFrame, ident, slot)) {
- JSValuePtr result = slot.getValue(callFrame, ident);
+ JSValue result = slot.getValue(callFrame, ident);
exceptionValue = callFrame->globalData().exception;
if (exceptionValue)
return false;
- callFrame[dst] = JSValuePtr(result);
+ callFrame[dst] = JSValue(result);
return true;
}
} while (++iter != end);
@@ -330,7 +120,7 @@ NEVER_INLINE bool Interpreter::resolve(CallFrame* callFrame, Instruction* vPC, J
return false;
}
-NEVER_INLINE bool Interpreter::resolveSkip(CallFrame* callFrame, Instruction* vPC, JSValuePtr& exceptionValue)
+NEVER_INLINE bool Interpreter::resolveSkip(CallFrame* callFrame, Instruction* vPC, JSValue& exceptionValue)
{
CodeBlock* codeBlock = callFrame->codeBlock();
@@ -351,11 +141,11 @@ NEVER_INLINE bool Interpreter::resolveSkip(CallFrame* callFrame, Instruction* vP
JSObject* o = *iter;
PropertySlot slot(o);
if (o->getPropertySlot(callFrame, ident, slot)) {
- JSValuePtr result = slot.getValue(callFrame, ident);
+ JSValue result = slot.getValue(callFrame, ident);
exceptionValue = callFrame->globalData().exception;
if (exceptionValue)
return false;
- callFrame[dst] = JSValuePtr(result);
+ callFrame[dst] = JSValue(result);
return true;
}
} while (++iter != end);
@@ -363,7 +153,7 @@ NEVER_INLINE bool Interpreter::resolveSkip(CallFrame* callFrame, Instruction* vP
return false;
}
-NEVER_INLINE bool Interpreter::resolveGlobal(CallFrame* callFrame, Instruction* vPC, JSValuePtr& exceptionValue)
+NEVER_INLINE bool Interpreter::resolveGlobal(CallFrame* callFrame, Instruction* vPC, JSValue& exceptionValue)
{
int dst = (vPC + 1)->u.operand;
JSGlobalObject* globalObject = static_cast<JSGlobalObject*>((vPC + 2)->u.jsCell);
@@ -373,7 +163,7 @@ NEVER_INLINE bool Interpreter::resolveGlobal(CallFrame* callFrame, Instruction*
int offset = (vPC + 5)->u.operand;
if (structure == globalObject->structure()) {
- callFrame[dst] = JSValuePtr(globalObject->getDirectOffset(offset));
+ callFrame[dst] = JSValue(globalObject->getDirectOffset(offset));
return true;
}
@@ -381,21 +171,21 @@ NEVER_INLINE bool Interpreter::resolveGlobal(CallFrame* callFrame, Instruction*
Identifier& ident = codeBlock->identifier(property);
PropertySlot slot(globalObject);
if (globalObject->getPropertySlot(callFrame, ident, slot)) {
- JSValuePtr result = slot.getValue(callFrame, ident);
- if (slot.isCacheable() && !globalObject->structure()->isDictionary()) {
+ JSValue result = slot.getValue(callFrame, ident);
+ if (slot.isCacheable() && !globalObject->structure()->isDictionary() && slot.slotBase() == globalObject) {
if (vPC[4].u.structure)
vPC[4].u.structure->deref();
globalObject->structure()->ref();
vPC[4] = globalObject->structure();
vPC[5] = slot.cachedOffset();
- callFrame[dst] = JSValuePtr(result);
+ callFrame[dst] = JSValue(result);
return true;
}
exceptionValue = callFrame->globalData().exception;
if (exceptionValue)
return false;
- callFrame[dst] = JSValuePtr(result);
+ callFrame[dst] = JSValue(result);
return true;
}
@@ -403,37 +193,14 @@ NEVER_INLINE bool Interpreter::resolveGlobal(CallFrame* callFrame, Instruction*
return false;
}
-static ALWAYS_INLINE JSValuePtr inlineResolveBase(CallFrame* callFrame, Identifier& property, ScopeChainNode* scopeChain)
-{
- ScopeChainIterator iter = scopeChain->begin();
- ScopeChainIterator next = iter;
- ++next;
- ScopeChainIterator end = scopeChain->end();
- ASSERT(iter != end);
-
- PropertySlot slot;
- JSObject* base;
- while (true) {
- base = *iter;
- if (next == end || base->getPropertySlot(callFrame, property, slot))
- return base;
-
- iter = next;
- ++next;
- }
-
- ASSERT_NOT_REACHED();
- return noValue();
-}
-
NEVER_INLINE void Interpreter::resolveBase(CallFrame* callFrame, Instruction* vPC)
{
int dst = (vPC + 1)->u.operand;
int property = (vPC + 2)->u.operand;
- callFrame[dst] = JSValuePtr(inlineResolveBase(callFrame, callFrame->codeBlock()->identifier(property), callFrame->scopeChain()));
+ callFrame[dst] = JSValue(JSC::resolveBase(callFrame, callFrame->codeBlock()->identifier(property), callFrame->scopeChain()));
}
-NEVER_INLINE bool Interpreter::resolveBaseAndProperty(CallFrame* callFrame, Instruction* vPC, JSValuePtr& exceptionValue)
+NEVER_INLINE bool Interpreter::resolveBaseAndProperty(CallFrame* callFrame, Instruction* vPC, JSValue& exceptionValue)
{
int baseDst = (vPC + 1)->u.operand;
int propDst = (vPC + 2)->u.operand;
@@ -454,12 +221,12 @@ NEVER_INLINE bool Interpreter::resolveBaseAndProperty(CallFrame* callFrame, Inst
base = *iter;
PropertySlot slot(base);
if (base->getPropertySlot(callFrame, ident, slot)) {
- JSValuePtr result = slot.getValue(callFrame, ident);
+ JSValue result = slot.getValue(callFrame, ident);
exceptionValue = callFrame->globalData().exception;
if (exceptionValue)
return false;
- callFrame[propDst] = JSValuePtr(result);
- callFrame[baseDst] = JSValuePtr(base);
+ callFrame[propDst] = JSValue(result);
+ callFrame[baseDst] = JSValue(base);
return true;
}
++iter;
@@ -469,7 +236,7 @@ NEVER_INLINE bool Interpreter::resolveBaseAndProperty(CallFrame* callFrame, Inst
return false;
}
-NEVER_INLINE bool Interpreter::resolveBaseAndFunc(CallFrame* callFrame, Instruction* vPC, JSValuePtr& exceptionValue)
+NEVER_INLINE bool Interpreter::resolveBaseAndFunc(CallFrame* callFrame, Instruction* vPC, JSValue& exceptionValue)
{
int baseDst = (vPC + 1)->u.operand;
int funcDst = (vPC + 2)->u.operand;
@@ -498,13 +265,13 @@ NEVER_INLINE bool Interpreter::resolveBaseAndFunc(CallFrame* callFrame, Instruct
// that in host objects you always get a valid object for this.
// We also handle wrapper substitution for the global object at the same time.
JSObject* thisObj = base->toThisObject(callFrame);
- JSValuePtr result = slot.getValue(callFrame, ident);
+ JSValue result = slot.getValue(callFrame, ident);
exceptionValue = callFrame->globalData().exception;
if (exceptionValue)
return false;
- callFrame[baseDst] = JSValuePtr(thisObj);
- callFrame[funcDst] = JSValuePtr(result);
+ callFrame[baseDst] = JSValue(thisObj);
+ callFrame[funcDst] = JSValue(result);
return true;
}
++iter;
@@ -514,6 +281,8 @@ NEVER_INLINE bool Interpreter::resolveBaseAndFunc(CallFrame* callFrame, Instruct
return false;
}
+#endif // USE(INTERPRETER)
+
ALWAYS_INLINE CallFrame* Interpreter::slideRegisterWindowForCall(CodeBlock* newCodeBlock, RegisterFile* registerFile, CallFrame* callFrame, size_t registerOffset, int argc)
{
Register* r = callFrame->registers();
@@ -551,89 +320,57 @@ ALWAYS_INLINE CallFrame* Interpreter::slideRegisterWindowForCall(CodeBlock* newC
return CallFrame::create(r);
}
-static NEVER_INLINE bool isNotObject(CallFrame* callFrame, bool forInstanceOf, CodeBlock* codeBlock, const Instruction* vPC, JSValuePtr value, JSValuePtr& exceptionData)
+#if USE(INTERPRETER)
+static NEVER_INLINE bool isInvalidParamForIn(CallFrame* callFrame, CodeBlock* codeBlock, const Instruction* vPC, JSValue value, JSValue& exceptionData)
{
- if (value->isObject())
+ if (value.isObject())
return false;
- exceptionData = createInvalidParamError(callFrame, forInstanceOf ? "instanceof" : "in" , value, vPC - codeBlock->instructions().begin(), codeBlock);
+ exceptionData = createInvalidParamError(callFrame, "in" , value, vPC - codeBlock->instructions().begin(), codeBlock);
return true;
}
-NEVER_INLINE JSValuePtr Interpreter::callEval(CallFrame* callFrame, RegisterFile* registerFile, Register* argv, int argc, int registerOffset, JSValuePtr& exceptionValue)
+static NEVER_INLINE bool isInvalidParamForInstanceOf(CallFrame* callFrame, CodeBlock* codeBlock, const Instruction* vPC, JSValue value, JSValue& exceptionData)
+{
+ if (value.isObject() && asObject(value)->structure()->typeInfo().implementsHasInstance())
+ return false;
+ exceptionData = createInvalidParamError(callFrame, "instanceof" , value, vPC - codeBlock->instructions().begin(), codeBlock);
+ return true;
+}
+#endif
+
+NEVER_INLINE JSValue Interpreter::callEval(CallFrame* callFrame, RegisterFile* registerFile, Register* argv, int argc, int registerOffset, JSValue& exceptionValue)
{
if (argc < 2)
return jsUndefined();
- JSValuePtr program = argv[1].jsValue(callFrame);
+ JSValue program = argv[1].jsValue();
- if (!program->isString())
+ if (!program.isString())
return program;
UString programSource = asString(program)->value();
+ LiteralParser preparser(callFrame, programSource);
+ if (JSValue parsedObject = preparser.tryLiteralParse())
+ return parsedObject;
+
+
ScopeChainNode* scopeChain = callFrame->scopeChain();
CodeBlock* codeBlock = callFrame->codeBlock();
RefPtr<EvalNode> evalNode = codeBlock->evalCodeCache().get(callFrame, programSource, scopeChain, exceptionValue);
- JSValuePtr result = jsUndefined();
+ JSValue result = jsUndefined();
if (evalNode)
- result = callFrame->globalData().interpreter->execute(evalNode.get(), callFrame, callFrame->thisValue()->toThisObject(callFrame), callFrame->registers() - registerFile->start() + registerOffset, scopeChain, &exceptionValue);
+ result = callFrame->globalData().interpreter->execute(evalNode.get(), callFrame, callFrame->thisValue().toThisObject(callFrame), callFrame->registers() - registerFile->start() + registerOffset, scopeChain, &exceptionValue);
return result;
}
Interpreter::Interpreter()
: m_sampler(0)
-#if ENABLE(JIT)
- , m_ctiArrayLengthTrampoline(0)
- , m_ctiStringLengthTrampoline(0)
- , m_ctiVirtualCallPreLink(0)
- , m_ctiVirtualCallLink(0)
- , m_ctiVirtualCall(0)
-#endif
, m_reentryDepth(0)
- , m_timeoutTime(0)
- , m_timeAtLastCheckTimeout(0)
- , m_timeExecuting(0)
- , m_timeoutCheckCount(0)
- , m_ticksUntilNextTimeoutCheck(initialTickCountThreshold)
{
- initTimeout();
privateExecute(InitializeAndReturn, 0, 0, 0);
-
- // Bizarrely, calling fastMalloc here is faster than allocating space on the stack.
- void* storage = fastMalloc(sizeof(CollectorBlock));
-
- JSCell* jsArray = new (storage) JSArray(JSArray::createStructure(jsNull()));
- m_jsArrayVptr = jsArray->vptr();
- jsArray->~JSCell();
-
- JSCell* jsByteArray = new (storage) JSByteArray(JSByteArray::VPtrStealingHack);
- m_jsByteArrayVptr = jsByteArray->vptr();
- jsByteArray->~JSCell();
-
- JSCell* jsString = new (storage) JSString(JSString::VPtrStealingHack);
- m_jsStringVptr = jsString->vptr();
- jsString->~JSCell();
-
- JSCell* jsFunction = new (storage) JSFunction(JSFunction::createStructure(jsNull()));
- m_jsFunctionVptr = jsFunction->vptr();
- jsFunction->~JSCell();
-
- fastFree(storage);
-}
-
-void Interpreter::initialize(JSGlobalData* globalData)
-{
-#if ENABLE(JIT)
- JIT::compileCTIMachineTrampolines(globalData);
-#else
- UNUSED_PARAM(globalData);
-#endif
-}
-
-Interpreter::~Interpreter()
-{
}
#ifndef NDEBUG
@@ -733,7 +470,7 @@ bool Interpreter::isOpcode(Opcode opcode)
#endif
}
-NEVER_INLINE bool Interpreter::unwindCallFrame(CallFrame*& callFrame, JSValuePtr exceptionValue, unsigned& bytecodeOffset, CodeBlock*& codeBlock)
+NEVER_INLINE bool Interpreter::unwindCallFrame(CallFrame*& callFrame, JSValue exceptionValue, unsigned& bytecodeOffset, CodeBlock*& codeBlock)
{
CodeBlock* oldCodeBlock = codeBlock;
ScopeChainNode* scopeChain = callFrame->scopeChain();
@@ -772,16 +509,16 @@ NEVER_INLINE bool Interpreter::unwindCallFrame(CallFrame*& callFrame, JSValuePtr
return false;
codeBlock = callFrame->codeBlock();
- bytecodeOffset = bytecodeOffsetForPC(codeBlock, returnPC);
+ bytecodeOffset = bytecodeOffsetForPC(callFrame, codeBlock, returnPC);
return true;
}
-NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSValuePtr& exceptionValue, unsigned bytecodeOffset, bool explicitThrow)
+NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSValue& exceptionValue, unsigned bytecodeOffset, bool explicitThrow)
{
// Set up the exception object
CodeBlock* codeBlock = callFrame->codeBlock();
- if (exceptionValue->isObject()) {
+ if (exceptionValue.isObject()) {
JSObject* exception = asObject(exceptionValue);
if (exception->isNotAnObjectErrorStub()) {
exception = createNotAnObjectError(callFrame, static_cast<JSNotAnObjectErrorStub*>(exception), bytecodeOffset, codeBlock);
@@ -830,13 +567,13 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV
if (Profiler* profiler = *Profiler::enabledProfilerReference()) {
#if !ENABLE(JIT)
if (isCallBytecode(codeBlock->instructions()[bytecodeOffset].u.opcode))
- profiler->didExecute(callFrame, callFrame[codeBlock->instructions()[bytecodeOffset + 2].u.operand].jsValue(callFrame));
+ profiler->didExecute(callFrame, callFrame[codeBlock->instructions()[bytecodeOffset + 2].u.operand].jsValue());
else if (codeBlock->instructions()[bytecodeOffset + 8].u.opcode == getOpcode(op_construct))
- profiler->didExecute(callFrame, callFrame[codeBlock->instructions()[bytecodeOffset + 10].u.operand].jsValue(callFrame));
+ profiler->didExecute(callFrame, callFrame[codeBlock->instructions()[bytecodeOffset + 10].u.operand].jsValue());
#else
int functionRegisterIndex;
if (codeBlock->functionRegisterForBytecodeOffset(bytecodeOffset, functionRegisterIndex))
- profiler->didExecute(callFrame, callFrame[functionRegisterIndex].jsValue(callFrame));
+ profiler->didExecute(callFrame, callFrame[functionRegisterIndex].jsValue());
#endif
}
@@ -861,13 +598,15 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV
return handler;
}
-JSValuePtr Interpreter::execute(ProgramNode* programNode, CallFrame* callFrame, ScopeChainNode* scopeChain, JSObject* thisObj, JSValuePtr* exception)
+JSValue Interpreter::execute(ProgramNode* programNode, CallFrame* callFrame, ScopeChainNode* scopeChain, JSObject* thisObj, JSValue* exception)
{
ASSERT(!scopeChain->globalData->exception);
- if (m_reentryDepth >= MaxReentryDepth) {
- *exception = createStackOverflowError(callFrame);
- return jsNull();
+ if (m_reentryDepth >= MaxSecondaryThreadReentryDepth) {
+ if (!isMainThread() || m_reentryDepth >= MaxMainThreadReentryDepth) {
+ *exception = createStackOverflowError(callFrame);
+ return jsNull();
+ }
}
CodeBlock* codeBlock = &programNode->bytecode(scopeChain);
@@ -886,7 +625,7 @@ JSValuePtr Interpreter::execute(ProgramNode* programNode, CallFrame* callFrame,
globalObject->copyGlobalsTo(m_registerFile);
CallFrame* newCallFrame = CallFrame::create(oldEnd + codeBlock->m_numParameters + RegisterFile::CallFrameHeaderSize);
- newCallFrame[codeBlock->thisRegister()] = JSValuePtr(thisObj);
+ newCallFrame[codeBlock->thisRegister()] = JSValue(thisObj);
newCallFrame->init(codeBlock, 0, scopeChain, CallFrame::noCaller(), 0, 0, 0);
if (codeBlock->needsFullScopeChain())
@@ -896,15 +635,13 @@ JSValuePtr Interpreter::execute(ProgramNode* programNode, CallFrame* callFrame,
if (*profiler)
(*profiler)->willExecute(newCallFrame, programNode->sourceURL(), programNode->lineNo());
- JSValuePtr result;
+ JSValue result;
{
SamplingTool::CallRecord callRecord(m_sampler);
m_reentryDepth++;
#if ENABLE(JIT)
- if (!codeBlock->jitCode())
- JIT::compile(scopeChain->globalData, codeBlock);
- result = JIT::execute(codeBlock->jitCode(), &m_registerFile, newCallFrame, scopeChain->globalData, exception);
+ result = programNode->jitCode(scopeChain).execute(&m_registerFile, newCallFrame, scopeChain->globalData, exception);
#else
result = privateExecute(Normal, &m_registerFile, newCallFrame, exception);
#endif
@@ -922,13 +659,15 @@ JSValuePtr Interpreter::execute(ProgramNode* programNode, CallFrame* callFrame,
return result;
}
-JSValuePtr Interpreter::execute(FunctionBodyNode* functionBodyNode, CallFrame* callFrame, JSFunction* function, JSObject* thisObj, const ArgList& args, ScopeChainNode* scopeChain, JSValuePtr* exception)
+JSValue Interpreter::execute(FunctionBodyNode* functionBodyNode, CallFrame* callFrame, JSFunction* function, JSObject* thisObj, const ArgList& args, ScopeChainNode* scopeChain, JSValue* exception)
{
ASSERT(!scopeChain->globalData->exception);
- if (m_reentryDepth >= MaxReentryDepth) {
- *exception = createStackOverflowError(callFrame);
- return jsNull();
+ if (m_reentryDepth >= MaxSecondaryThreadReentryDepth) {
+ if (!isMainThread() || m_reentryDepth >= MaxMainThreadReentryDepth) {
+ *exception = createStackOverflowError(callFrame);
+ return jsNull();
+ }
}
Register* oldEnd = m_registerFile.end();
@@ -943,7 +682,7 @@ JSValuePtr Interpreter::execute(FunctionBodyNode* functionBodyNode, CallFrame* c
CallFrame* newCallFrame = CallFrame::create(oldEnd);
size_t dst = 0;
- newCallFrame[0] = JSValuePtr(thisObj);
+ newCallFrame[0] = JSValue(thisObj);
ArgList::const_iterator end = args.end();
for (ArgList::const_iterator it = args.begin(); it != end; ++it)
newCallFrame[++dst] = *it;
@@ -960,17 +699,15 @@ JSValuePtr Interpreter::execute(FunctionBodyNode* functionBodyNode, CallFrame* c
Profiler** profiler = Profiler::enabledProfilerReference();
if (*profiler)
- (*profiler)->willExecute(newCallFrame, function);
+ (*profiler)->willExecute(callFrame, function);
- JSValuePtr result;
+ JSValue result;
{
SamplingTool::CallRecord callRecord(m_sampler);
m_reentryDepth++;
#if ENABLE(JIT)
- if (!codeBlock->jitCode())
- JIT::compile(scopeChain->globalData, codeBlock);
- result = JIT::execute(codeBlock->jitCode(), &m_registerFile, newCallFrame, scopeChain->globalData, exception);
+ result = functionBodyNode->jitCode(scopeChain).execute(&m_registerFile, newCallFrame, scopeChain->globalData, exception);
#else
result = privateExecute(Normal, &m_registerFile, newCallFrame, exception);
#endif
@@ -978,24 +715,97 @@ JSValuePtr Interpreter::execute(FunctionBodyNode* functionBodyNode, CallFrame* c
}
if (*profiler)
- (*profiler)->didExecute(newCallFrame, function);
+ (*profiler)->didExecute(callFrame, function);
m_registerFile.shrink(oldEnd);
return result;
}
-JSValuePtr Interpreter::execute(EvalNode* evalNode, CallFrame* callFrame, JSObject* thisObj, ScopeChainNode* scopeChain, JSValuePtr* exception)
+CallFrameClosure Interpreter::prepareForRepeatCall(FunctionBodyNode* functionBodyNode, CallFrame* callFrame, JSFunction* function, int argCount, ScopeChainNode* scopeChain, JSValue* exception)
+{
+ ASSERT(!scopeChain->globalData->exception);
+
+ if (m_reentryDepth >= MaxSecondaryThreadReentryDepth) {
+ if (!isMainThread() || m_reentryDepth >= MaxMainThreadReentryDepth) {
+ *exception = createStackOverflowError(callFrame);
+ return CallFrameClosure();
+ }
+ }
+
+ Register* oldEnd = m_registerFile.end();
+ int argc = 1 + argCount; // implicit "this" parameter
+
+ if (!m_registerFile.grow(oldEnd + argc)) {
+ *exception = createStackOverflowError(callFrame);
+ return CallFrameClosure();
+ }
+
+ CallFrame* newCallFrame = CallFrame::create(oldEnd);
+ size_t dst = 0;
+ for (int i = 0; i < argc; ++i)
+ newCallFrame[++dst] = jsUndefined();
+
+ CodeBlock* codeBlock = &functionBodyNode->bytecode(scopeChain);
+ newCallFrame = slideRegisterWindowForCall(codeBlock, &m_registerFile, newCallFrame, argc + RegisterFile::CallFrameHeaderSize, argc);
+ if (UNLIKELY(!newCallFrame)) {
+ *exception = createStackOverflowError(callFrame);
+ m_registerFile.shrink(oldEnd);
+ return CallFrameClosure();
+ }
+ // a 0 codeBlock indicates a built-in caller
+ newCallFrame->init(codeBlock, 0, scopeChain, callFrame->addHostCallFrameFlag(), 0, argc, function);
+#if ENABLE(JIT)
+ functionBodyNode->jitCode(scopeChain);
+#endif
+
+ CallFrameClosure result = { callFrame, newCallFrame, function, functionBodyNode, scopeChain->globalData, oldEnd, scopeChain, codeBlock->m_numParameters, argc };
+ return result;
+}
+
+JSValue Interpreter::execute(CallFrameClosure& closure, JSValue* exception)
+{
+ closure.resetCallFrame();
+ Profiler** profiler = Profiler::enabledProfilerReference();
+ if (*profiler)
+ (*profiler)->willExecute(closure.oldCallFrame, closure.function);
+
+ JSValue result;
+ {
+ SamplingTool::CallRecord callRecord(m_sampler);
+
+ m_reentryDepth++;
+#if ENABLE(JIT)
+ result = closure.functionBody->generatedJITCode().execute(&m_registerFile, closure.newCallFrame, closure.globalData, exception);
+#else
+ result = privateExecute(Normal, &m_registerFile, closure.newCallFrame, exception);
+#endif
+ m_reentryDepth--;
+ }
+
+ if (*profiler)
+ (*profiler)->didExecute(closure.oldCallFrame, closure.function);
+ return result;
+}
+
+void Interpreter::endRepeatCall(CallFrameClosure& closure)
+{
+ m_registerFile.shrink(closure.oldEnd);
+}
+
+JSValue Interpreter::execute(EvalNode* evalNode, CallFrame* callFrame, JSObject* thisObj, ScopeChainNode* scopeChain, JSValue* exception)
{
return execute(evalNode, callFrame, thisObj, m_registerFile.size() + evalNode->bytecode(scopeChain).m_numParameters + RegisterFile::CallFrameHeaderSize, scopeChain, exception);
}
-JSValuePtr Interpreter::execute(EvalNode* evalNode, CallFrame* callFrame, JSObject* thisObj, int globalRegisterOffset, ScopeChainNode* scopeChain, JSValuePtr* exception)
+JSValue Interpreter::execute(EvalNode* evalNode, CallFrame* callFrame, JSObject* thisObj, int globalRegisterOffset, ScopeChainNode* scopeChain, JSValue* exception)
{
ASSERT(!scopeChain->globalData->exception);
- if (m_reentryDepth >= MaxReentryDepth) {
- *exception = createStackOverflowError(callFrame);
- return jsNull();
+ if (m_reentryDepth >= MaxSecondaryThreadReentryDepth) {
+ if (!isMainThread() || m_reentryDepth >= MaxMainThreadReentryDepth) {
+ *exception = createStackOverflowError(callFrame);
+ return jsNull();
+ }
}
DynamicGlobalObjectScope globalObjectScope(callFrame, callFrame->globalData().dynamicGlobalObject ? callFrame->globalData().dynamicGlobalObject : scopeChain->globalObject());
@@ -1044,7 +854,7 @@ JSValuePtr Interpreter::execute(EvalNode* evalNode, CallFrame* callFrame, JSObje
CallFrame* newCallFrame = CallFrame::create(m_registerFile.start() + globalRegisterOffset);
// a 0 codeBlock indicates a built-in caller
- newCallFrame[codeBlock->thisRegister()] = JSValuePtr(thisObj);
+ newCallFrame[codeBlock->thisRegister()] = JSValue(thisObj);
newCallFrame->init(codeBlock, 0, scopeChain, callFrame->addHostCallFrameFlag(), 0, 0, 0);
if (codeBlock->needsFullScopeChain())
@@ -1054,15 +864,13 @@ JSValuePtr Interpreter::execute(EvalNode* evalNode, CallFrame* callFrame, JSObje
if (*profiler)
(*profiler)->willExecute(newCallFrame, evalNode->sourceURL(), evalNode->lineNo());
- JSValuePtr result;
+ JSValue result;
{
SamplingTool::CallRecord callRecord(m_sampler);
m_reentryDepth++;
#if ENABLE(JIT)
- if (!codeBlock->jitCode())
- JIT::compile(scopeChain->globalData, codeBlock);
- result = JIT::execute(codeBlock->jitCode(), &m_registerFile, newCallFrame, scopeChain->globalData, exception);
+ result = evalNode->jitCode(scopeChain).execute(&m_registerFile, newCallFrame, scopeChain->globalData, exception);
#else
result = privateExecute(Normal, &m_registerFile, newCallFrame, exception);
#endif
@@ -1103,123 +911,27 @@ NEVER_INLINE void Interpreter::debug(CallFrame* callFrame, DebugHookID debugHook
return;
}
}
-
-void Interpreter::resetTimeoutCheck()
-{
- m_ticksUntilNextTimeoutCheck = initialTickCountThreshold;
- m_timeAtLastCheckTimeout = 0;
- m_timeExecuting = 0;
-}
-
-// Returns the time the current thread has spent executing, in milliseconds.
-static inline unsigned getCPUTime()
-{
-#if PLATFORM(DARWIN)
- mach_msg_type_number_t infoCount = THREAD_BASIC_INFO_COUNT;
- thread_basic_info_data_t info;
-
- // Get thread information
- mach_port_t threadPort = mach_thread_self();
- thread_info(threadPort, THREAD_BASIC_INFO, reinterpret_cast<thread_info_t>(&info), &infoCount);
- mach_port_deallocate(mach_task_self(), threadPort);
-
- unsigned time = info.user_time.seconds * 1000 + info.user_time.microseconds / 1000;
- time += info.system_time.seconds * 1000 + info.system_time.microseconds / 1000;
-
- return time;
-#elif HAVE(SYS_TIME_H)
- // FIXME: This should probably use getrusage with the RUSAGE_THREAD flag.
- struct timeval tv;
- gettimeofday(&tv, 0);
- return tv.tv_sec * 1000 + tv.tv_usec / 1000;
-#elif PLATFORM(QT)
- QDateTime t = QDateTime::currentDateTime();
- return t.toTime_t() * 1000 + t.time().msec();
-#elif PLATFORM(WIN_OS)
- union {
- FILETIME fileTime;
- unsigned long long fileTimeAsLong;
- } userTime, kernelTime;
- // GetThreadTimes won't accept NULL arguments so we pass these even though
- // they're not used.
- FILETIME creationTime, exitTime;
-
- GetThreadTimes(GetCurrentThread(), &creationTime, &exitTime, &kernelTime.fileTime, &userTime.fileTime);
-
- return userTime.fileTimeAsLong / 10000 + kernelTime.fileTimeAsLong / 10000;
-#else
-#error Platform does not have getCurrentTime function
-#endif
-}
-
-// We have to return a JSValue here, gcc seems to produce worse code if
-// we attempt to return a bool
-ALWAYS_INLINE bool Interpreter::checkTimeout(JSGlobalObject* globalObject)
-{
- unsigned currentTime = getCPUTime();
-
- if (!m_timeAtLastCheckTimeout) {
- // Suspicious amount of looping in a script -- start timing it
- m_timeAtLastCheckTimeout = currentTime;
- return false;
- }
-
- unsigned timeDiff = currentTime - m_timeAtLastCheckTimeout;
-
- if (timeDiff == 0)
- timeDiff = 1;
-
- m_timeExecuting += timeDiff;
- m_timeAtLastCheckTimeout = currentTime;
-
- // Adjust the tick threshold so we get the next checkTimeout call in the interval specified in
- // preferredScriptCheckTimeInterval
- m_ticksUntilNextTimeoutCheck = static_cast<unsigned>((static_cast<float>(preferredScriptCheckTimeInterval) / timeDiff) * m_ticksUntilNextTimeoutCheck);
- // If the new threshold is 0 reset it to the default threshold. This can happen if the timeDiff is higher than the
- // preferred script check time interval.
- if (m_ticksUntilNextTimeoutCheck == 0)
- m_ticksUntilNextTimeoutCheck = initialTickCountThreshold;
-
- if (m_timeoutTime && m_timeExecuting > m_timeoutTime) {
- if (globalObject->shouldInterruptScript())
- return true;
-
- resetTimeoutCheck();
- }
-
- return false;
-}
-
+#if USE(INTERPRETER)
NEVER_INLINE ScopeChainNode* Interpreter::createExceptionScope(CallFrame* callFrame, const Instruction* vPC)
{
int dst = (++vPC)->u.operand;
CodeBlock* codeBlock = callFrame->codeBlock();
Identifier& property = codeBlock->identifier((++vPC)->u.operand);
- JSValuePtr value = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue value = callFrame[(++vPC)->u.operand].jsValue();
JSObject* scope = new (callFrame) JSStaticScopeObject(callFrame, property, value, DontDelete);
- callFrame[dst] = JSValuePtr(scope);
+ callFrame[dst] = JSValue(scope);
return callFrame->scopeChain()->push(scope);
}
-static StructureChain* cachePrototypeChain(CallFrame* callFrame, Structure* structure)
-{
- JSValuePtr prototype = structure->prototypeForLookup(callFrame);
- if (JSImmediate::isImmediate(prototype))
- return 0;
- RefPtr<StructureChain> chain = StructureChain::create(asObject(prototype)->structure());
- structure->setCachedPrototypeChain(chain.release());
- return structure->cachedPrototypeChain();
-}
-
-NEVER_INLINE void Interpreter::tryCachePutByID(CallFrame* callFrame, CodeBlock* codeBlock, Instruction* vPC, JSValuePtr baseValue, const PutPropertySlot& slot)
+NEVER_INLINE void Interpreter::tryCachePutByID(CallFrame* callFrame, CodeBlock* codeBlock, Instruction* vPC, JSValue baseValue, const PutPropertySlot& slot)
{
// Recursive invocation may already have specialized this instruction.
if (vPC[0].u.opcode != getOpcode(op_put_by_id))
return;
- if (JSImmediate::isImmediate(baseValue))
+ if (!baseValue.isCell())
return;
// Uncacheable: give up.
@@ -1263,16 +975,7 @@ NEVER_INLINE void Interpreter::tryCachePutByID(CallFrame* callFrame, CodeBlock*
vPC[0] = getOpcode(op_put_by_id_transition);
vPC[4] = structure->previousID();
vPC[5] = structure;
- StructureChain* chain = structure->cachedPrototypeChain();
- if (!chain) {
- chain = cachePrototypeChain(callFrame, structure);
- if (!chain) {
- // This happens if someone has manually inserted null into the prototype chain
- vPC[0] = getOpcode(op_put_by_id_generic);
- return;
- }
- }
- vPC[6] = chain;
+ vPC[6] = structure->prototypeChain(callFrame);
vPC[7] = slot.cachedOffset();
codeBlock->refStructures(vPC);
return;
@@ -1290,55 +993,25 @@ NEVER_INLINE void Interpreter::uncachePutByID(CodeBlock* codeBlock, Instruction*
vPC[4] = 0;
}
-static size_t countPrototypeChainEntriesAndCheckForProxies(CallFrame* callFrame, JSValuePtr baseValue, const PropertySlot& slot)
-{
- JSCell* cell = asCell(baseValue);
- size_t count = 0;
-
- while (slot.slotBase() != cell) {
- JSValuePtr v = cell->structure()->prototypeForLookup(callFrame);
-
- // If we didn't find slotBase in baseValue's prototype chain, then baseValue
- // must be a proxy for another object.
-
- if (v->isNull())
- return 0;
-
- cell = asCell(v);
-
- // Since we're accessing a prototype in a loop, it's a good bet that it
- // should not be treated as a dictionary.
- if (cell->structure()->isDictionary()) {
- RefPtr<Structure> transition = Structure::fromDictionaryTransition(cell->structure());
- asObject(cell)->setStructure(transition.release());
- cell->structure()->setCachedPrototypeChain(0);
- }
-
- ++count;
- }
-
- ASSERT(count);
- return count;
-}
-
-NEVER_INLINE void Interpreter::tryCacheGetByID(CallFrame* callFrame, CodeBlock* codeBlock, Instruction* vPC, JSValuePtr baseValue, const Identifier& propertyName, const PropertySlot& slot)
+NEVER_INLINE void Interpreter::tryCacheGetByID(CallFrame* callFrame, CodeBlock* codeBlock, Instruction* vPC, JSValue baseValue, const Identifier& propertyName, const PropertySlot& slot)
{
// Recursive invocation may already have specialized this instruction.
if (vPC[0].u.opcode != getOpcode(op_get_by_id))
return;
// FIXME: Cache property access for immediates.
- if (JSImmediate::isImmediate(baseValue)) {
+ if (!baseValue.isCell()) {
vPC[0] = getOpcode(op_get_by_id_generic);
return;
}
- if (isJSArray(baseValue) && propertyName == callFrame->propertyNames().length) {
+ JSGlobalData* globalData = &callFrame->globalData();
+ if (isJSArray(globalData, baseValue) && propertyName == callFrame->propertyNames().length) {
vPC[0] = getOpcode(op_get_array_length);
return;
}
- if (isJSString(baseValue) && propertyName == callFrame->propertyNames().length) {
+ if (isJSString(globalData, baseValue) && propertyName == callFrame->propertyNames().length) {
vPC[0] = getOpcode(op_get_string_length);
return;
}
@@ -1381,17 +1054,14 @@ NEVER_INLINE void Interpreter::tryCacheGetByID(CallFrame* callFrame, CodeBlock*
}
if (slot.slotBase() == structure->prototypeForLookup(callFrame)) {
- ASSERT(slot.slotBase()->isObject());
+ ASSERT(slot.slotBase().isObject());
JSObject* baseObject = asObject(slot.slotBase());
// Since we're accessing a prototype in a loop, it's a good bet that it
// should not be treated as a dictionary.
- if (baseObject->structure()->isDictionary()) {
- RefPtr<Structure> transition = Structure::fromDictionaryTransition(baseObject->structure());
- baseObject->setStructure(transition.release());
- asCell(baseValue)->structure()->setCachedPrototypeChain(0);
- }
+ if (baseObject->structure()->isDictionary())
+ baseObject->setStructure(Structure::fromDictionaryTransition(baseObject->structure()));
vPC[0] = getOpcode(op_get_by_id_proto);
vPC[5] = baseObject->structure();
@@ -1407,14 +1077,9 @@ NEVER_INLINE void Interpreter::tryCacheGetByID(CallFrame* callFrame, CodeBlock*
return;
}
- StructureChain* chain = structure->cachedPrototypeChain();
- if (!chain)
- chain = cachePrototypeChain(callFrame, structure);
- ASSERT(chain);
-
vPC[0] = getOpcode(op_get_by_id_chain);
vPC[4] = structure;
- vPC[5] = chain;
+ vPC[5] = structure->prototypeChain(callFrame);
vPC[6] = count;
vPC[7] = slot.cachedOffset();
codeBlock->refStructures(vPC);
@@ -1427,7 +1092,9 @@ NEVER_INLINE void Interpreter::uncacheGetByID(CodeBlock* codeBlock, Instruction*
vPC[4] = 0;
}
-JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFile, CallFrame* callFrame, JSValuePtr* exception)
+#endif // USE(INTERPRETER)
+
+JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFile, CallFrame* callFrame, JSValue* exception)
{
// One-time initialization of our address tables. We have to put this code
// here because our labels are only in scope inside this function.
@@ -1442,25 +1109,31 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
#undef ADD_OPCODE_ID
ASSERT(m_opcodeIDTable.size() == numOpcodeIDs);
#endif // HAVE(COMPUTED_GOTO)
- return noValue();
+ return JSValue();
}
#if ENABLE(JIT)
// Currently with CTI enabled we never interpret functions
ASSERT_NOT_REACHED();
#endif
+#if !USE(INTERPRETER)
+ UNUSED_PARAM(registerFile);
+ UNUSED_PARAM(callFrame);
+ UNUSED_PARAM(exception);
+ return JSValue();
+#else
JSGlobalData* globalData = &callFrame->globalData();
- JSValuePtr exceptionValue = noValue();
+ JSValue exceptionValue;
HandlerInfo* handler = 0;
Instruction* vPC = callFrame->codeBlock()->instructions().begin();
Profiler** enabledProfilerReference = Profiler::enabledProfilerReference();
- unsigned tickCount = m_ticksUntilNextTimeoutCheck + 1;
+ unsigned tickCount = globalData->timeoutChecker.ticksUntilNextCheck();
#define CHECK_FOR_EXCEPTION() \
do { \
- if (UNLIKELY(globalData->exception != noValue())) { \
+ if (UNLIKELY(globalData->exception != JSValue())) { \
exceptionValue = globalData->exception; \
goto vm_throw; \
} \
@@ -1472,19 +1145,17 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
#define CHECK_FOR_TIMEOUT() \
if (!--tickCount) { \
- if (checkTimeout(callFrame->dynamicGlobalObject())) { \
+ if (globalData->timeoutChecker.didTimeOut(callFrame)) { \
exceptionValue = jsNull(); \
goto vm_throw; \
} \
- tickCount = m_ticksUntilNextTimeoutCheck; \
+ tickCount = globalData->timeoutChecker.ticksUntilNextCheck(); \
}
#if ENABLE(OPCODE_SAMPLING)
#define SAMPLE(codeBlock, vPC) m_sampler->sample(codeBlock, vPC)
- #define CTI_SAMPLER ARG_globalData->interpreter->sampler()
#else
#define SAMPLE(codeBlock, vPC)
- #define CTI_SAMPLER 0
#endif
#if HAVE(COMPUTED_GOTO)
@@ -1514,7 +1185,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
constructor, and puts the result in register dst.
*/
int dst = (++vPC)->u.operand;
- callFrame[dst] = JSValuePtr(constructEmptyObject(callFrame));
+ callFrame[dst] = JSValue(constructEmptyObject(callFrame));
++vPC;
NEXT_INSTRUCTION();
@@ -1531,7 +1202,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int firstArg = (++vPC)->u.operand;
int argCount = (++vPC)->u.operand;
ArgList args(callFrame->registers() + firstArg, argCount);
- callFrame[dst] = JSValuePtr(constructArray(callFrame, args));
+ callFrame[dst] = JSValue(constructArray(callFrame, args));
++vPC;
NEXT_INSTRUCTION();
@@ -1545,7 +1216,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int regExp = (++vPC)->u.operand;
- callFrame[dst] = JSValuePtr(new (globalData) RegExpObject(callFrame->scopeChain()->globalObject()->regExpStructure(), callFrame->codeBlock()->regexp(regExp)));
+ callFrame[dst] = JSValue(new (globalData) RegExpObject(callFrame->scopeChain()->globalObject()->regExpStructure(), callFrame->codeBlock()->regexp(regExp)));
++vPC;
NEXT_INSTRUCTION();
@@ -1570,12 +1241,12 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
as a boolean in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- if (JSImmediate::areBothImmediateNumbers(src1, src2))
- callFrame[dst] = jsBoolean(src1 == src2);
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
+ if (JSFastMath::canDoFastBitwiseOperations(src1, src2))
+ callFrame[dst] = JSFastMath::equal(src1, src2);
else {
- JSValuePtr result = jsBoolean(equalSlowCase(callFrame, src1, src2));
+ JSValue result = jsBoolean(JSValue::equalSlowCase(callFrame, src1, src2));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -1590,15 +1261,15 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
operator, and puts the result as a boolean in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src = callFrame[(++vPC)->u.operand].jsValue();
- if (src->isUndefinedOrNull()) {
+ if (src.isUndefinedOrNull()) {
callFrame[dst] = jsBoolean(true);
++vPC;
NEXT_INSTRUCTION();
}
- callFrame[dst] = jsBoolean(!JSImmediate::isImmediate(src) && src->asCell()->structure()->typeInfo().masqueradesAsUndefined());
+ callFrame[dst] = jsBoolean(src.isCell() && src.asCell()->structure()->typeInfo().masqueradesAsUndefined());
++vPC;
NEXT_INSTRUCTION();
}
@@ -1610,12 +1281,12 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
result as a boolean in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- if (JSImmediate::areBothImmediateNumbers(src1, src2))
- callFrame[dst] = jsBoolean(src1 != src2);
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
+ if (JSFastMath::canDoFastBitwiseOperations(src1, src2))
+ callFrame[dst] = JSFastMath::notEqual(src1, src2);
else {
- JSValuePtr result = jsBoolean(!equalSlowCase(callFrame, src1, src2));
+ JSValue result = jsBoolean(!JSValue::equalSlowCase(callFrame, src1, src2));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -1630,15 +1301,15 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
operator, and puts the result as a boolean in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src = callFrame[(++vPC)->u.operand].jsValue();
- if (src->isUndefinedOrNull()) {
+ if (src.isUndefinedOrNull()) {
callFrame[dst] = jsBoolean(false);
++vPC;
NEXT_INSTRUCTION();
}
- callFrame[dst] = jsBoolean(JSImmediate::isImmediate(src) || !asCell(src)->structure()->typeInfo().masqueradesAsUndefined());
+ callFrame[dst] = jsBoolean(!src.isCell() || !asCell(src)->structure()->typeInfo().masqueradesAsUndefined());
++vPC;
NEXT_INSTRUCTION();
}
@@ -1650,14 +1321,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
result as a boolean in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- if (JSImmediate::areBothImmediate(src1, src2))
- callFrame[dst] = jsBoolean(src1 == src2);
- else if (JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate()))
- callFrame[dst] = jsBoolean(false);
- else
- callFrame[dst] = jsBoolean(strictEqualSlowCase(src1, src2));
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
+ callFrame[dst] = jsBoolean(JSValue::strictEqual(src1, src2));
++vPC;
NEXT_INSTRUCTION();
@@ -1670,15 +1336,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
puts the result as a boolean in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
-
- if (JSImmediate::areBothImmediate(src1, src2))
- callFrame[dst] = jsBoolean(src1 != src2);
- else if (JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate()))
- callFrame[dst] = jsBoolean(true);
- else
- callFrame[dst] = jsBoolean(!strictEqualSlowCase(src1, src2));
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
+ callFrame[dst] = jsBoolean(!JSValue::strictEqual(src1, src2));
++vPC;
NEXT_INSTRUCTION();
@@ -1691,9 +1351,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
a boolean in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr result = jsBoolean(jsLess(callFrame, src1, src2));
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue result = jsBoolean(jsLess(callFrame, src1, src2));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
@@ -1708,9 +1368,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
puts the result as a boolean in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr result = jsBoolean(jsLessEq(callFrame, src1, src2));
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue result = jsBoolean(jsLessEq(callFrame, src1, src2));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
@@ -1724,11 +1384,11 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
back in register srcDst.
*/
int srcDst = (++vPC)->u.operand;
- JSValuePtr v = callFrame[srcDst].jsValue(callFrame);
- if (JSImmediate::canDoFastAdditiveOperations(v))
- callFrame[srcDst] = JSValuePtr(JSImmediate::incImmediateNumber(v));
+ JSValue v = callFrame[srcDst].jsValue();
+ if (JSFastMath::canDoFastAdditiveOperations(v))
+ callFrame[srcDst] = JSValue(JSFastMath::incImmediateNumber(v));
else {
- JSValuePtr result = jsNumber(callFrame, v->toNumber(callFrame) + 1);
+ JSValue result = jsNumber(callFrame, v.toNumber(callFrame) + 1);
CHECK_FOR_EXCEPTION();
callFrame[srcDst] = result;
}
@@ -1743,11 +1403,11 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
back in register srcDst.
*/
int srcDst = (++vPC)->u.operand;
- JSValuePtr v = callFrame[srcDst].jsValue(callFrame);
- if (JSImmediate::canDoFastAdditiveOperations(v))
- callFrame[srcDst] = JSValuePtr(JSImmediate::decImmediateNumber(v));
+ JSValue v = callFrame[srcDst].jsValue();
+ if (JSFastMath::canDoFastAdditiveOperations(v))
+ callFrame[srcDst] = JSValue(JSFastMath::decImmediateNumber(v));
else {
- JSValuePtr result = jsNumber(callFrame, v->toNumber(callFrame) - 1);
+ JSValue result = jsNumber(callFrame, v.toNumber(callFrame) - 1);
CHECK_FOR_EXCEPTION();
callFrame[srcDst] = result;
}
@@ -1764,15 +1424,15 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int srcDst = (++vPC)->u.operand;
- JSValuePtr v = callFrame[srcDst].jsValue(callFrame);
- if (JSImmediate::canDoFastAdditiveOperations(v)) {
+ JSValue v = callFrame[srcDst].jsValue();
+ if (JSFastMath::canDoFastAdditiveOperations(v)) {
callFrame[dst] = v;
- callFrame[srcDst] = JSValuePtr(JSImmediate::incImmediateNumber(v));
+ callFrame[srcDst] = JSValue(JSFastMath::incImmediateNumber(v));
} else {
- JSValuePtr number = callFrame[srcDst].jsValue(callFrame)->toJSNumber(callFrame);
+ JSValue number = callFrame[srcDst].jsValue().toJSNumber(callFrame);
CHECK_FOR_EXCEPTION();
callFrame[dst] = number;
- callFrame[srcDst] = JSValuePtr(jsNumber(callFrame, number->uncheckedGetNumber() + 1));
+ callFrame[srcDst] = JSValue(jsNumber(callFrame, number.uncheckedGetNumber() + 1));
}
++vPC;
@@ -1787,15 +1447,15 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int srcDst = (++vPC)->u.operand;
- JSValuePtr v = callFrame[srcDst].jsValue(callFrame);
- if (JSImmediate::canDoFastAdditiveOperations(v)) {
+ JSValue v = callFrame[srcDst].jsValue();
+ if (JSFastMath::canDoFastAdditiveOperations(v)) {
callFrame[dst] = v;
- callFrame[srcDst] = JSValuePtr(JSImmediate::decImmediateNumber(v));
+ callFrame[srcDst] = JSValue(JSFastMath::decImmediateNumber(v));
} else {
- JSValuePtr number = callFrame[srcDst].jsValue(callFrame)->toJSNumber(callFrame);
+ JSValue number = callFrame[srcDst].jsValue().toJSNumber(callFrame);
CHECK_FOR_EXCEPTION();
callFrame[dst] = number;
- callFrame[srcDst] = JSValuePtr(jsNumber(callFrame, number->uncheckedGetNumber() - 1));
+ callFrame[srcDst] = JSValue(jsNumber(callFrame, number.uncheckedGetNumber() - 1));
}
++vPC;
@@ -1810,12 +1470,12 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int dst = (++vPC)->u.operand;
int src = (++vPC)->u.operand;
- JSValuePtr srcVal = callFrame[src].jsValue(callFrame);
+ JSValue srcVal = callFrame[src].jsValue();
- if (LIKELY(srcVal->isNumber()))
+ if (LIKELY(srcVal.isNumber()))
callFrame[dst] = callFrame[src];
else {
- JSValuePtr result = srcVal->toJSNumber(callFrame);
+ JSValue result = srcVal.toJSNumber(callFrame);
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -1830,13 +1490,13 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
result in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src = callFrame[(++vPC)->u.operand].jsValue();
++vPC;
double v;
- if (fastIsNumber(src, v))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, -v));
+ if (src.getNumber(v))
+ callFrame[dst] = JSValue(jsNumber(callFrame, -v));
else {
- JSValuePtr result = jsNumber(callFrame, -src->toNumber(callFrame));
+ JSValue result = jsNumber(callFrame, -src.toNumber(callFrame));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -1851,12 +1511,12 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
numeric add, depending on the types of the operands.)
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- if (JSImmediate::canDoFastAdditiveOperations(src1) && JSImmediate::canDoFastAdditiveOperations(src2))
- callFrame[dst] = JSValuePtr(JSImmediate::addImmediateNumbers(src1, src2));
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
+ if (JSFastMath::canDoFastAdditiveOperations(src1, src2))
+ callFrame[dst] = JSValue(JSFastMath::addImmediateNumbers(src1, src2));
else {
- JSValuePtr result = jsAdd(callFrame, src1, src2);
+ JSValue result = jsAdd(callFrame, src1, src2);
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -1870,21 +1530,21 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
numbers), and puts the product in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
double left;
double right;
- if (JSImmediate::areBothImmediateNumbers(src1, src2)) {
- int32_t left = JSImmediate::getTruncatedInt32(src1);
- int32_t right = JSImmediate::getTruncatedInt32(src2);
+ if (JSValue::areBothInt32Fast(src1, src2)) {
+ int32_t left = src1.getInt32Fast();
+ int32_t right = src2.getInt32Fast();
if ((left | right) >> 15 == 0)
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, left * right));
+ callFrame[dst] = JSValue(jsNumber(callFrame, left * right));
else
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, static_cast<double>(left) * static_cast<double>(right)));
- } else if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, left * right));
+ callFrame[dst] = JSValue(jsNumber(callFrame, static_cast<double>(left) * static_cast<double>(right)));
+ } else if (src1.getNumber(left) && src2.getNumber(right))
+ callFrame[dst] = JSValue(jsNumber(callFrame, left * right));
else {
- JSValuePtr result = jsNumber(callFrame, src1->toNumber(callFrame) * src2->toNumber(callFrame));
+ JSValue result = jsNumber(callFrame, src1.toNumber(callFrame) * src2.toNumber(callFrame));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -1900,14 +1560,14 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
quotient in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr dividend = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr divisor = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue dividend = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue divisor = callFrame[(++vPC)->u.operand].jsValue();
double left;
double right;
- if (fastIsNumber(dividend, left) && fastIsNumber(divisor, right))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, left / right));
+ if (dividend.getNumber(left) && divisor.getNumber(right))
+ callFrame[dst] = JSValue(jsNumber(callFrame, left / right));
else {
- JSValuePtr result = jsNumber(callFrame, dividend->toNumber(callFrame) / divisor->toNumber(callFrame));
+ JSValue result = jsNumber(callFrame, dividend.toNumber(callFrame) / divisor.toNumber(callFrame));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -1925,17 +1585,21 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int dividend = (++vPC)->u.operand;
int divisor = (++vPC)->u.operand;
- JSValuePtr dividendValue = callFrame[dividend].jsValue(callFrame);
- JSValuePtr divisorValue = callFrame[divisor].jsValue(callFrame);
+ JSValue dividendValue = callFrame[dividend].jsValue();
+ JSValue divisorValue = callFrame[divisor].jsValue();
- if (JSImmediate::areBothImmediateNumbers(dividendValue, divisorValue) && divisorValue != JSImmediate::from(0)) {
- callFrame[dst] = JSValuePtr(JSImmediate::from(JSImmediate::getTruncatedInt32(dividendValue) % JSImmediate::getTruncatedInt32(divisorValue)));
+ if (JSValue::areBothInt32Fast(dividendValue, divisorValue) && divisorValue != jsNumber(callFrame, 0)) {
+ // We expect the result of the modulus of a number that was representable as an int32 to also be representable
+ // as an int32.
+ JSValue result = JSValue::makeInt32Fast(dividendValue.getInt32Fast() % divisorValue.getInt32Fast());
+ ASSERT(result);
+ callFrame[dst] = result;
++vPC;
NEXT_INSTRUCTION();
}
- double d = dividendValue->toNumber(callFrame);
- JSValuePtr result = jsNumber(callFrame, fmod(d, divisorValue->toNumber(callFrame)));
+ double d = dividendValue.toNumber(callFrame);
+ JSValue result = jsNumber(callFrame, fmod(d, divisorValue.toNumber(callFrame)));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
++vPC;
@@ -1949,16 +1613,16 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
double left;
double right;
- if (JSImmediate::canDoFastAdditiveOperations(src1) && JSImmediate::canDoFastAdditiveOperations(src2))
- callFrame[dst] = JSValuePtr(JSImmediate::subImmediateNumbers(src1, src2));
- else if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, left - right));
+ if (JSFastMath::canDoFastAdditiveOperations(src1, src2))
+ callFrame[dst] = JSValue(JSFastMath::subImmediateNumbers(src1, src2));
+ else if (src1.getNumber(left) && src2.getNumber(right))
+ callFrame[dst] = JSValue(jsNumber(callFrame, left - right));
else {
- JSValuePtr result = jsNumber(callFrame, src1->toNumber(callFrame) - src2->toNumber(callFrame));
+ JSValue result = jsNumber(callFrame, src1.toNumber(callFrame) - src2.toNumber(callFrame));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -1973,16 +1637,16 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr val = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr shift = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue val = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue shift = callFrame[(++vPC)->u.operand].jsValue();
int32_t left;
uint32_t right;
- if (JSImmediate::areBothImmediateNumbers(val, shift))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f)));
- else if (fastToInt32(val, left) && fastToUInt32(shift, right))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, left << (right & 0x1f)));
+ if (JSValue::areBothInt32Fast(val, shift))
+ callFrame[dst] = JSValue(jsNumber(callFrame, val.getInt32Fast() << (shift.getInt32Fast() & 0x1f)));
+ else if (val.numberToInt32(left) && shift.numberToUInt32(right))
+ callFrame[dst] = JSValue(jsNumber(callFrame, left << (right & 0x1f)));
else {
- JSValuePtr result = jsNumber(callFrame, (val->toInt32(callFrame)) << (shift->toUInt32(callFrame) & 0x1f));
+ JSValue result = jsNumber(callFrame, (val.toInt32(callFrame)) << (shift.toUInt32(callFrame) & 0x1f));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -1998,16 +1662,16 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
uint32), and puts the result in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr val = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr shift = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue val = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue shift = callFrame[(++vPC)->u.operand].jsValue();
int32_t left;
uint32_t right;
- if (JSImmediate::areBothImmediateNumbers(val, shift))
- callFrame[dst] = JSValuePtr(JSImmediate::rightShiftImmediateNumbers(val, shift));
- else if (fastToInt32(val, left) && fastToUInt32(shift, right))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, left >> (right & 0x1f)));
+ if (JSFastMath::canDoFastRshift(val, shift))
+ callFrame[dst] = JSValue(JSFastMath::rightShiftImmediateNumbers(val, shift));
+ else if (val.numberToInt32(left) && shift.numberToUInt32(right))
+ callFrame[dst] = JSValue(jsNumber(callFrame, left >> (right & 0x1f)));
else {
- JSValuePtr result = jsNumber(callFrame, (val->toInt32(callFrame)) >> (shift->toUInt32(callFrame) & 0x1f));
+ JSValue result = jsNumber(callFrame, (val.toInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -2023,12 +1687,12 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
uint32), and puts the result in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr val = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr shift = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- if (JSImmediate::areBothImmediateNumbers(val, shift) && !JSImmediate::isNegative(val))
- callFrame[dst] = JSValuePtr(JSImmediate::rightShiftImmediateNumbers(val, shift));
+ JSValue val = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue shift = callFrame[(++vPC)->u.operand].jsValue();
+ if (JSFastMath::canDoFastUrshift(val, shift))
+ callFrame[dst] = JSValue(JSFastMath::rightShiftImmediateNumbers(val, shift));
else {
- JSValuePtr result = jsNumber(callFrame, (val->toUInt32(callFrame)) >> (shift->toUInt32(callFrame) & 0x1f));
+ JSValue result = jsNumber(callFrame, (val.toUInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -2044,16 +1708,16 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
int32_t left;
int32_t right;
- if (JSImmediate::areBothImmediateNumbers(src1, src2))
- callFrame[dst] = JSValuePtr(JSImmediate::andImmediateNumbers(src1, src2));
- else if (fastToInt32(src1, left) && fastToInt32(src2, right))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, left & right));
+ if (JSFastMath::canDoFastBitwiseOperations(src1, src2))
+ callFrame[dst] = JSValue(JSFastMath::andImmediateNumbers(src1, src2));
+ else if (src1.numberToInt32(left) && src2.numberToInt32(right))
+ callFrame[dst] = JSValue(jsNumber(callFrame, left & right));
else {
- JSValuePtr result = jsNumber(callFrame, src1->toInt32(callFrame) & src2->toInt32(callFrame));
+ JSValue result = jsNumber(callFrame, src1.toInt32(callFrame) & src2.toInt32(callFrame));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -2069,16 +1733,16 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
int32_t left;
int32_t right;
- if (JSImmediate::areBothImmediateNumbers(src1, src2))
- callFrame[dst] = JSValuePtr(JSImmediate::xorImmediateNumbers(src1, src2));
- else if (fastToInt32(src1, left) && fastToInt32(src2, right))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, left ^ right));
+ if (JSFastMath::canDoFastBitwiseOperations(src1, src2))
+ callFrame[dst] = JSValue(JSFastMath::xorImmediateNumbers(src1, src2));
+ else if (src1.numberToInt32(left) && src2.numberToInt32(right))
+ callFrame[dst] = JSValue(jsNumber(callFrame, left ^ right));
else {
- JSValuePtr result = jsNumber(callFrame, src1->toInt32(callFrame) ^ src2->toInt32(callFrame));
+ JSValue result = jsNumber(callFrame, src1.toInt32(callFrame) ^ src2.toInt32(callFrame));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -2094,16 +1758,16 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
result in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
int32_t left;
int32_t right;
- if (JSImmediate::areBothImmediateNumbers(src1, src2))
- callFrame[dst] = JSValuePtr(JSImmediate::orImmediateNumbers(src1, src2));
- else if (fastToInt32(src1, left) && fastToInt32(src2, right))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, left | right));
+ if (JSFastMath::canDoFastBitwiseOperations(src1, src2))
+ callFrame[dst] = JSValue(JSFastMath::orImmediateNumbers(src1, src2));
+ else if (src1.numberToInt32(left) && src2.numberToInt32(right))
+ callFrame[dst] = JSValue(jsNumber(callFrame, left | right));
else {
- JSValuePtr result = jsNumber(callFrame, src1->toInt32(callFrame) | src2->toInt32(callFrame));
+ JSValue result = jsNumber(callFrame, src1.toInt32(callFrame) | src2.toInt32(callFrame));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -2118,12 +1782,12 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
and puts the result in register dst.
*/
int dst = (++vPC)->u.operand;
- JSValuePtr src = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src = callFrame[(++vPC)->u.operand].jsValue();
int32_t value;
- if (fastToInt32(src, value))
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, ~value));
+ if (src.numberToInt32(value))
+ callFrame[dst] = JSValue(jsNumber(callFrame, ~value));
else {
- JSValuePtr result = jsNumber(callFrame, ~src->toInt32(callFrame));
+ JSValue result = jsNumber(callFrame, ~src.toInt32(callFrame));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
}
@@ -2138,7 +1802,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int src = (++vPC)->u.operand;
- JSValuePtr result = jsBoolean(!callFrame[src].jsValue(callFrame)->toBoolean(callFrame));
+ JSValue result = jsBoolean(!callFrame[src].jsValue().toBoolean(callFrame));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
@@ -2163,13 +1827,14 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int base = vPC[3].u.operand;
int baseProto = vPC[4].u.operand;
- JSValuePtr baseVal = callFrame[base].jsValue(callFrame);
+ JSValue baseVal = callFrame[base].jsValue();
- if (isNotObject(callFrame, true, callFrame->codeBlock(), vPC, baseVal, exceptionValue))
+ if (isInvalidParamForInstanceOf(callFrame, callFrame->codeBlock(), vPC, baseVal, exceptionValue))
goto vm_throw;
- JSObject* baseObj = asObject(baseVal);
- callFrame[dst] = jsBoolean(baseObj->structure()->typeInfo().implementsHasInstance() ? baseObj->hasInstance(callFrame, callFrame[value].jsValue(callFrame), callFrame[baseProto].jsValue(callFrame)) : false);
+ bool result = asObject(baseVal)->hasInstance(callFrame, callFrame[value].jsValue(), callFrame[baseProto].jsValue());
+ CHECK_FOR_EXCEPTION();
+ callFrame[dst] = jsBoolean(result);
vPC += 5;
NEXT_INSTRUCTION();
@@ -2182,7 +1847,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int src = (++vPC)->u.operand;
- callFrame[dst] = JSValuePtr(jsTypeStringForValue(callFrame, callFrame[src].jsValue(callFrame)));
+ callFrame[dst] = JSValue(jsTypeStringForValue(callFrame, callFrame[src].jsValue()));
++vPC;
NEXT_INSTRUCTION();
@@ -2196,8 +1861,8 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int src = (++vPC)->u.operand;
- JSValuePtr v = callFrame[src].jsValue(callFrame);
- callFrame[dst] = jsBoolean(JSImmediate::isImmediate(v) ? v->isUndefined() : v->asCell()->structure()->typeInfo().masqueradesAsUndefined());
+ JSValue v = callFrame[src].jsValue();
+ callFrame[dst] = jsBoolean(v.isCell() ? v.asCell()->structure()->typeInfo().masqueradesAsUndefined() : v.isUndefined());
++vPC;
NEXT_INSTRUCTION();
@@ -2211,7 +1876,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int src = (++vPC)->u.operand;
- callFrame[dst] = jsBoolean(callFrame[src].jsValue(callFrame)->isBoolean());
+ callFrame[dst] = jsBoolean(callFrame[src].jsValue().isBoolean());
++vPC;
NEXT_INSTRUCTION();
@@ -2225,7 +1890,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int src = (++vPC)->u.operand;
- callFrame[dst] = jsBoolean(callFrame[src].jsValue(callFrame)->isNumber());
+ callFrame[dst] = jsBoolean(callFrame[src].jsValue().isNumber());
++vPC;
NEXT_INSTRUCTION();
@@ -2239,7 +1904,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int src = (++vPC)->u.operand;
- callFrame[dst] = jsBoolean(callFrame[src].jsValue(callFrame)->isString());
+ callFrame[dst] = jsBoolean(callFrame[src].jsValue().isString());
++vPC;
NEXT_INSTRUCTION();
@@ -2253,7 +1918,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int src = (++vPC)->u.operand;
- callFrame[dst] = jsBoolean(jsIsObjectType(callFrame[src].jsValue(callFrame)));
+ callFrame[dst] = jsBoolean(jsIsObjectType(callFrame[src].jsValue()));
++vPC;
NEXT_INSTRUCTION();
@@ -2267,7 +1932,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int src = (++vPC)->u.operand;
- callFrame[dst] = jsBoolean(jsIsFunctionType(callFrame[src].jsValue(callFrame)));
+ callFrame[dst] = jsBoolean(jsIsFunctionType(callFrame[src].jsValue()));
++vPC;
NEXT_INSTRUCTION();
@@ -2285,19 +1950,19 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int property = (++vPC)->u.operand;
int base = (++vPC)->u.operand;
- JSValuePtr baseVal = callFrame[base].jsValue(callFrame);
- if (isNotObject(callFrame, false, callFrame->codeBlock(), vPC, baseVal, exceptionValue))
+ JSValue baseVal = callFrame[base].jsValue();
+ if (isInvalidParamForIn(callFrame, callFrame->codeBlock(), vPC, baseVal, exceptionValue))
goto vm_throw;
JSObject* baseObj = asObject(baseVal);
- JSValuePtr propName = callFrame[property].jsValue(callFrame);
+ JSValue propName = callFrame[property].jsValue();
uint32_t i;
- if (propName->getUInt32(i))
+ if (propName.getUInt32(i))
callFrame[dst] = jsBoolean(baseObj->hasProperty(callFrame, i));
else {
- Identifier property(callFrame, propName->toString(callFrame));
+ Identifier property(callFrame, propName.toString(callFrame));
CHECK_FOR_EXCEPTION();
callFrame[dst] = jsBoolean(baseObj->hasProperty(callFrame, property));
}
@@ -2348,18 +2013,17 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
NEXT_INSTRUCTION();
}
DEFINE_OPCODE(op_get_global_var) {
- /* get_global_var dst(r) globalObject(c) index(n) nop(n) nop(n)
+ /* get_global_var dst(r) globalObject(c) index(n)
Gets the global var at global slot index and places it in register dst.
*/
- int dst = vPC[1].u.operand;
- JSGlobalObject* scope = static_cast<JSGlobalObject*>(vPC[2].u.jsCell);
+ int dst = (++vPC)->u.operand;
+ JSGlobalObject* scope = static_cast<JSGlobalObject*>((++vPC)->u.jsCell);
ASSERT(scope->isGlobalObject());
- int index = vPC[3].u.operand;
+ int index = (++vPC)->u.operand;
callFrame[dst] = scope->registerAt(index);
-
- vPC += OPCODE_LENGTH(op_resolve_global);
+ ++vPC;
NEXT_INSTRUCTION();
}
DEFINE_OPCODE(op_put_global_var) {
@@ -2372,7 +2036,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int index = (++vPC)->u.operand;
int value = (++vPC)->u.operand;
- scope->registerAt(index) = JSValuePtr(callFrame[value].jsValue(callFrame));
+ scope->registerAt(index) = JSValue(callFrame[value].jsValue());
++vPC;
NEXT_INSTRUCTION();
}
@@ -2420,7 +2084,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
ASSERT((*iter)->isVariableObject());
JSVariableObject* scope = static_cast<JSVariableObject*>(*iter);
- scope->registerAt(index) = JSValuePtr(callFrame[value].jsValue(callFrame));
+ scope->registerAt(index) = JSValue(callFrame[value].jsValue());
++vPC;
NEXT_INSTRUCTION();
}
@@ -2488,9 +2152,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
CodeBlock* codeBlock = callFrame->codeBlock();
Identifier& ident = codeBlock->identifier(property);
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
+ JSValue baseValue = callFrame[base].jsValue();
PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(callFrame, ident, slot);
+ JSValue result = baseValue.get(callFrame, ident, slot);
CHECK_FOR_EXCEPTION();
tryCacheGetByID(callFrame, codeBlock, vPC, baseValue, ident, slot);
@@ -2507,9 +2171,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
op_get_by_id.
*/
int base = vPC[2].u.operand;
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
+ JSValue baseValue = callFrame[base].jsValue();
- if (LIKELY(!JSImmediate::isImmediate(baseValue))) {
+ if (LIKELY(baseValue.isCell())) {
JSCell* baseCell = asCell(baseValue);
Structure* structure = vPC[4].u.structure;
@@ -2520,7 +2184,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int offset = vPC[5].u.operand;
ASSERT(baseObject->get(callFrame, callFrame->codeBlock()->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset));
- callFrame[dst] = JSValuePtr(baseObject->getDirectOffset(offset));
+ callFrame[dst] = JSValue(baseObject->getDirectOffset(offset));
vPC += 8;
NEXT_INSTRUCTION();
@@ -2538,14 +2202,14 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
reverts to op_get_by_id.
*/
int base = vPC[2].u.operand;
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
+ JSValue baseValue = callFrame[base].jsValue();
- if (LIKELY(!JSImmediate::isImmediate(baseValue))) {
+ if (LIKELY(baseValue.isCell())) {
JSCell* baseCell = asCell(baseValue);
Structure* structure = vPC[4].u.structure;
if (LIKELY(baseCell->structure() == structure)) {
- ASSERT(structure->prototypeForLookup(callFrame)->isObject());
+ ASSERT(structure->prototypeForLookup(callFrame).isObject());
JSObject* protoObject = asObject(structure->prototypeForLookup(callFrame));
Structure* prototypeStructure = vPC[5].u.structure;
@@ -2554,7 +2218,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int offset = vPC[6].u.operand;
ASSERT(protoObject->get(callFrame, callFrame->codeBlock()->identifier(vPC[3].u.operand)) == protoObject->getDirectOffset(offset));
- callFrame[dst] = JSValuePtr(protoObject->getDirectOffset(offset));
+ callFrame[dst] = JSValue(protoObject->getDirectOffset(offset));
vPC += 8;
NEXT_INSTRUCTION();
@@ -2587,9 +2251,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
reverts to op_get_by_id.
*/
int base = vPC[2].u.operand;
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
+ JSValue baseValue = callFrame[base].jsValue();
- if (LIKELY(!JSImmediate::isImmediate(baseValue))) {
+ if (LIKELY(baseValue.isCell())) {
JSCell* baseCell = asCell(baseValue);
Structure* structure = vPC[4].u.structure;
@@ -2598,9 +2262,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
size_t count = vPC[6].u.operand;
RefPtr<Structure>* end = it + count;
- JSObject* baseObject = asObject(baseCell);
- while (1) {
- baseObject = asObject(baseObject->structure()->prototypeForLookup(callFrame));
+ while (true) {
+ JSObject* baseObject = asObject(baseCell->structure()->prototypeForLookup(callFrame));
+
if (UNLIKELY(baseObject->structure() != (*it).get()))
break;
@@ -2609,11 +2273,14 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int offset = vPC[7].u.operand;
ASSERT(baseObject->get(callFrame, callFrame->codeBlock()->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset));
- callFrame[dst] = JSValuePtr(baseObject->getDirectOffset(offset));
+ callFrame[dst] = JSValue(baseObject->getDirectOffset(offset));
vPC += 8;
NEXT_INSTRUCTION();
}
+
+ // Update baseCell, so that next time around the loop we'll pick up the prototype's prototype.
+ baseCell = baseObject;
}
}
}
@@ -2632,9 +2299,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int property = vPC[3].u.operand;
Identifier& ident = callFrame->codeBlock()->identifier(property);
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
+ JSValue baseValue = callFrame[base].jsValue();
PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(callFrame, ident, slot);
+ JSValue result = baseValue.get(callFrame, ident, slot);
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
@@ -2650,10 +2317,10 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int base = vPC[2].u.operand;
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
- if (LIKELY(isJSArray(baseValue))) {
+ JSValue baseValue = callFrame[base].jsValue();
+ if (LIKELY(isJSArray(globalData, baseValue))) {
int dst = vPC[1].u.operand;
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, asArray(baseValue)->length()));
+ callFrame[dst] = JSValue(jsNumber(callFrame, asArray(baseValue)->length()));
vPC += 8;
NEXT_INSTRUCTION();
}
@@ -2670,10 +2337,10 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int base = vPC[2].u.operand;
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
- if (LIKELY(isJSString(baseValue))) {
+ JSValue baseValue = callFrame[base].jsValue();
+ if (LIKELY(isJSString(globalData, baseValue))) {
int dst = vPC[1].u.operand;
- callFrame[dst] = JSValuePtr(jsNumber(callFrame, asString(baseValue)->value().size()));
+ callFrame[dst] = JSValue(jsNumber(callFrame, asString(baseValue)->value().size()));
vPC += 8;
NEXT_INSTRUCTION();
}
@@ -2696,10 +2363,10 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int value = vPC[3].u.operand;
CodeBlock* codeBlock = callFrame->codeBlock();
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
+ JSValue baseValue = callFrame[base].jsValue();
Identifier& ident = codeBlock->identifier(property);
PutPropertySlot slot;
- baseValue->put(callFrame, ident, callFrame[value].jsValue(callFrame), slot);
+ baseValue.put(callFrame, ident, callFrame[value].jsValue(), slot);
CHECK_FOR_EXCEPTION();
tryCachePutByID(callFrame, codeBlock, vPC, baseValue, slot);
@@ -2719,9 +2386,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
the register file.
*/
int base = vPC[1].u.operand;
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
+ JSValue baseValue = callFrame[base].jsValue();
- if (LIKELY(!JSImmediate::isImmediate(baseValue))) {
+ if (LIKELY(baseValue.isCell())) {
JSCell* baseCell = asCell(baseValue);
Structure* oldStructure = vPC[4].u.structure;
Structure* newStructure = vPC[5].u.structure;
@@ -2732,8 +2399,8 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
RefPtr<Structure>* it = vPC[6].u.structureChain->head();
- JSValuePtr proto = baseObject->structure()->prototypeForLookup(callFrame);
- while (!proto->isNull()) {
+ JSValue proto = baseObject->structure()->prototypeForLookup(callFrame);
+ while (!proto.isNull()) {
if (UNLIKELY(asObject(proto)->structure() != (*it).get())) {
uncachePutByID(callFrame->codeBlock(), vPC);
NEXT_INSTRUCTION();
@@ -2747,7 +2414,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int value = vPC[3].u.operand;
unsigned offset = vPC[7].u.operand;
ASSERT(baseObject->offsetForLocation(baseObject->getDirectLocation(callFrame->codeBlock()->identifier(vPC[2].u.operand))) == offset);
- baseObject->putDirectOffset(offset, callFrame[value].jsValue(callFrame));
+ baseObject->putDirectOffset(offset, callFrame[value].jsValue());
vPC += 8;
NEXT_INSTRUCTION();
@@ -2769,9 +2436,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
the register file.
*/
int base = vPC[1].u.operand;
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
+ JSValue baseValue = callFrame[base].jsValue();
- if (LIKELY(!JSImmediate::isImmediate(baseValue))) {
+ if (LIKELY(baseValue.isCell())) {
JSCell* baseCell = asCell(baseValue);
Structure* structure = vPC[4].u.structure;
@@ -2782,7 +2449,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
unsigned offset = vPC[5].u.operand;
ASSERT(baseObject->offsetForLocation(baseObject->getDirectLocation(callFrame->codeBlock()->identifier(vPC[2].u.operand))) == offset);
- baseObject->putDirectOffset(offset, callFrame[value].jsValue(callFrame));
+ baseObject->putDirectOffset(offset, callFrame[value].jsValue());
vPC += 8;
NEXT_INSTRUCTION();
@@ -2805,10 +2472,10 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int property = vPC[2].u.operand;
int value = vPC[3].u.operand;
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
+ JSValue baseValue = callFrame[base].jsValue();
Identifier& ident = callFrame->codeBlock()->identifier(property);
PutPropertySlot slot;
- baseValue->put(callFrame, ident, callFrame[value].jsValue(callFrame), slot);
+ baseValue.put(callFrame, ident, callFrame[value].jsValue(), slot);
CHECK_FOR_EXCEPTION();
vPC += 8;
@@ -2826,9 +2493,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int base = (++vPC)->u.operand;
int property = (++vPC)->u.operand;
- JSObject* baseObj = callFrame[base].jsValue(callFrame)->toObject(callFrame);
+ JSObject* baseObj = callFrame[base].jsValue().toObject(callFrame);
Identifier& ident = callFrame->codeBlock()->identifier(property);
- JSValuePtr result = jsBoolean(baseObj->deleteProperty(callFrame, ident));
+ JSValue result = jsBoolean(baseObj->deleteProperty(callFrame, ident));
CHECK_FOR_EXCEPTION();
callFrame[dst] = result;
++vPC;
@@ -2846,29 +2513,28 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int base = (++vPC)->u.operand;
int property = (++vPC)->u.operand;
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
- JSValuePtr subscript = callFrame[property].jsValue(callFrame);
+ JSValue baseValue = callFrame[base].jsValue();
+ JSValue subscript = callFrame[property].jsValue();
- JSValuePtr result;
- unsigned i;
+ JSValue result;
- bool isUInt32 = JSImmediate::getUInt32(subscript, i);
- if (LIKELY(isUInt32)) {
- if (isJSArray(baseValue)) {
+ if (LIKELY(subscript.isUInt32Fast())) {
+ uint32_t i = subscript.getUInt32Fast();
+ if (isJSArray(globalData, baseValue)) {
JSArray* jsArray = asArray(baseValue);
if (jsArray->canGetIndex(i))
result = jsArray->getIndex(i);
else
result = jsArray->JSArray::get(callFrame, i);
- } else if (isJSString(baseValue) && asString(baseValue)->canGetIndex(i))
+ } else if (isJSString(globalData, baseValue) && asString(baseValue)->canGetIndex(i))
result = asString(baseValue)->getIndex(&callFrame->globalData(), i);
- else if (isJSByteArray(baseValue) && asByteArray(baseValue)->canAccessIndex(i))
- result = asByteArray(baseValue)->getIndex(i);
+ else if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i))
+ result = asByteArray(baseValue)->getIndex(callFrame, i);
else
- result = baseValue->get(callFrame, i);
+ result = baseValue.get(callFrame, i);
} else {
- Identifier property(callFrame, subscript->toString(callFrame));
- result = baseValue->get(callFrame, property);
+ Identifier property(callFrame, subscript.toString(callFrame));
+ result = baseValue.get(callFrame, property);
}
CHECK_FOR_EXCEPTION();
@@ -2891,36 +2557,34 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int property = (++vPC)->u.operand;
int value = (++vPC)->u.operand;
- JSValuePtr baseValue = callFrame[base].jsValue(callFrame);
- JSValuePtr subscript = callFrame[property].jsValue(callFrame);
-
- unsigned i;
+ JSValue baseValue = callFrame[base].jsValue();
+ JSValue subscript = callFrame[property].jsValue();
- bool isUInt32 = JSImmediate::getUInt32(subscript, i);
- if (LIKELY(isUInt32)) {
- if (isJSArray(baseValue)) {
+ if (LIKELY(subscript.isUInt32Fast())) {
+ uint32_t i = subscript.getUInt32Fast();
+ if (isJSArray(globalData, baseValue)) {
JSArray* jsArray = asArray(baseValue);
if (jsArray->canSetIndex(i))
- jsArray->setIndex(i, callFrame[value].jsValue(callFrame));
+ jsArray->setIndex(i, callFrame[value].jsValue());
else
- jsArray->JSArray::put(callFrame, i, callFrame[value].jsValue(callFrame));
- } else if (isJSByteArray(baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
+ jsArray->JSArray::put(callFrame, i, callFrame[value].jsValue());
+ } else if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
JSByteArray* jsByteArray = asByteArray(baseValue);
double dValue = 0;
- JSValuePtr jsValue = callFrame[value].jsValue(callFrame);
- if (JSImmediate::isNumber(jsValue))
- jsByteArray->setIndex(i, JSImmediate::getTruncatedInt32(jsValue));
- else if (fastIsNumber(jsValue, dValue))
+ JSValue jsValue = callFrame[value].jsValue();
+ if (jsValue.isInt32Fast())
+ jsByteArray->setIndex(i, jsValue.getInt32Fast());
+ else if (jsValue.getNumber(dValue))
jsByteArray->setIndex(i, dValue);
else
- baseValue->put(callFrame, i, jsValue);
+ baseValue.put(callFrame, i, jsValue);
} else
- baseValue->put(callFrame, i, callFrame[value].jsValue(callFrame));
+ baseValue.put(callFrame, i, callFrame[value].jsValue());
} else {
- Identifier property(callFrame, subscript->toString(callFrame));
+ Identifier property(callFrame, subscript.toString(callFrame));
if (!globalData->exception) { // Don't put to an object if toString threw an exception.
PutPropertySlot slot;
- baseValue->put(callFrame, property, callFrame[value].jsValue(callFrame), slot);
+ baseValue.put(callFrame, property, callFrame[value].jsValue(), slot);
}
}
@@ -2940,16 +2604,16 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int base = (++vPC)->u.operand;
int property = (++vPC)->u.operand;
- JSObject* baseObj = callFrame[base].jsValue(callFrame)->toObject(callFrame); // may throw
+ JSObject* baseObj = callFrame[base].jsValue().toObject(callFrame); // may throw
- JSValuePtr subscript = callFrame[property].jsValue(callFrame);
- JSValuePtr result;
+ JSValue subscript = callFrame[property].jsValue();
+ JSValue result;
uint32_t i;
- if (subscript->getUInt32(i))
+ if (subscript.getUInt32(i))
result = jsBoolean(baseObj->deleteProperty(callFrame, i));
else {
CHECK_FOR_EXCEPTION();
- Identifier property(callFrame, subscript->toString(callFrame));
+ Identifier property(callFrame, subscript.toString(callFrame));
CHECK_FOR_EXCEPTION();
result = jsBoolean(baseObj->deleteProperty(callFrame, property));
}
@@ -2975,7 +2639,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
unsigned property = (++vPC)->u.operand;
int value = (++vPC)->u.operand;
- callFrame[base].jsValue(callFrame)->put(callFrame, property, callFrame[value].jsValue(callFrame));
+ callFrame[base].jsValue().put(callFrame, property, callFrame[value].jsValue());
++vPC;
NEXT_INSTRUCTION();
@@ -3022,7 +2686,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int cond = (++vPC)->u.operand;
int target = (++vPC)->u.operand;
- if (callFrame[cond].jsValue(callFrame)->toBoolean(callFrame)) {
+ if (callFrame[cond].jsValue().toBoolean(callFrame)) {
vPC += target;
CHECK_FOR_TIMEOUT();
NEXT_INSTRUCTION();
@@ -3039,7 +2703,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int cond = (++vPC)->u.operand;
int target = (++vPC)->u.operand;
- if (callFrame[cond].jsValue(callFrame)->toBoolean(callFrame)) {
+ if (callFrame[cond].jsValue().toBoolean(callFrame)) {
vPC += target;
NEXT_INSTRUCTION();
}
@@ -3055,7 +2719,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int cond = (++vPC)->u.operand;
int target = (++vPC)->u.operand;
- if (!callFrame[cond].jsValue(callFrame)->toBoolean(callFrame)) {
+ if (!callFrame[cond].jsValue().toBoolean(callFrame)) {
vPC += target;
NEXT_INSTRUCTION();
}
@@ -3071,9 +2735,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int src = (++vPC)->u.operand;
int target = (++vPC)->u.operand;
- JSValuePtr srcValue = callFrame[src].jsValue(callFrame);
+ JSValue srcValue = callFrame[src].jsValue();
- if (srcValue->isUndefinedOrNull() || (!JSImmediate::isImmediate(srcValue) && srcValue->asCell()->structure()->typeInfo().masqueradesAsUndefined())) {
+ if (srcValue.isUndefinedOrNull() || (srcValue.isCell() && srcValue.asCell()->structure()->typeInfo().masqueradesAsUndefined())) {
vPC += target;
NEXT_INSTRUCTION();
}
@@ -3089,9 +2753,27 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int src = (++vPC)->u.operand;
int target = (++vPC)->u.operand;
- JSValuePtr srcValue = callFrame[src].jsValue(callFrame);
+ JSValue srcValue = callFrame[src].jsValue();
- if (!srcValue->isUndefinedOrNull() || (!JSImmediate::isImmediate(srcValue) && !srcValue->asCell()->structure()->typeInfo().masqueradesAsUndefined())) {
+ if (!srcValue.isUndefinedOrNull() || (srcValue.isCell() && !srcValue.asCell()->structure()->typeInfo().masqueradesAsUndefined())) {
+ vPC += target;
+ NEXT_INSTRUCTION();
+ }
+
+ ++vPC;
+ NEXT_INSTRUCTION();
+ }
+ DEFINE_OPCODE(op_jneq_ptr) {
+ /* jneq_ptr src(r) ptr(jsCell) target(offset)
+
+ Jumps to offset target from the current instruction, if the value r is equal
+ to ptr, using pointer equality.
+ */
+ int src = (++vPC)->u.operand;
+ JSValue ptr = JSValue((++vPC)->u.jsCell);
+ int target = (++vPC)->u.operand;
+ JSValue srcValue = callFrame[src].jsValue();
+ if (srcValue != ptr) {
vPC += target;
NEXT_INSTRUCTION();
}
@@ -3110,8 +2792,8 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
Additionally this loop instruction may terminate JS execution is
the JS timeout is reached.
*/
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
int target = (++vPC)->u.operand;
bool result = jsLess(callFrame, src1, src2);
@@ -3137,8 +2819,8 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
Additionally this loop instruction may terminate JS execution is
the JS timeout is reached.
*/
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
int target = (++vPC)->u.operand;
bool result = jsLessEq(callFrame, src1, src2);
@@ -3161,8 +2843,8 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
target from the current instruction, if and only if the
result of the comparison is false.
*/
- JSValuePtr src1 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- JSValuePtr src2 = callFrame[(++vPC)->u.operand].jsValue(callFrame);
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
int target = (++vPC)->u.operand;
bool result = jsLess(callFrame, src1, src2);
@@ -3176,6 +2858,29 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
++vPC;
NEXT_INSTRUCTION();
}
+ DEFINE_OPCODE(op_jnlesseq) {
+ /* jnlesseq src1(r) src2(r) target(offset)
+
+ Checks whether register src1 is less than or equal to
+ register src2, as with the ECMAScript '<=' operator,
+ and then jumps to offset target from the current instruction,
+ if and only if theresult of the comparison is false.
+ */
+ JSValue src1 = callFrame[(++vPC)->u.operand].jsValue();
+ JSValue src2 = callFrame[(++vPC)->u.operand].jsValue();
+ int target = (++vPC)->u.operand;
+
+ bool result = jsLessEq(callFrame, src1, src2);
+ CHECK_FOR_EXCEPTION();
+
+ if (!result) {
+ vPC += target;
+ NEXT_INSTRUCTION();
+ }
+
+ ++vPC;
+ NEXT_INSTRUCTION();
+ }
DEFINE_OPCODE(op_switch_imm) {
/* switch_imm tableIndex(n) defaultOffset(offset) scrutinee(r)
@@ -3187,12 +2892,16 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int tableIndex = (++vPC)->u.operand;
int defaultOffset = (++vPC)->u.operand;
- JSValuePtr scrutinee = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- if (!JSImmediate::isNumber(scrutinee))
- vPC += defaultOffset;
+ JSValue scrutinee = callFrame[(++vPC)->u.operand].jsValue();
+ if (scrutinee.isInt32Fast())
+ vPC += callFrame->codeBlock()->immediateSwitchJumpTable(tableIndex).offsetForValue(scrutinee.getInt32Fast(), defaultOffset);
else {
- int32_t value = JSImmediate::getTruncatedInt32(scrutinee);
- vPC += callFrame->codeBlock()->immediateSwitchJumpTable(tableIndex).offsetForValue(value, defaultOffset);
+ double value;
+ int32_t intValue;
+ if (scrutinee.getNumber(value) && ((intValue = static_cast<int32_t>(value)) == value))
+ vPC += callFrame->codeBlock()->immediateSwitchJumpTable(tableIndex).offsetForValue(intValue, defaultOffset);
+ else
+ vPC += defaultOffset;
}
NEXT_INSTRUCTION();
}
@@ -3207,8 +2916,8 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int tableIndex = (++vPC)->u.operand;
int defaultOffset = (++vPC)->u.operand;
- JSValuePtr scrutinee = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- if (!scrutinee->isString())
+ JSValue scrutinee = callFrame[(++vPC)->u.operand].jsValue();
+ if (!scrutinee.isString())
vPC += defaultOffset;
else {
UString::Rep* value = asString(scrutinee)->value().rep();
@@ -3230,8 +2939,8 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int tableIndex = (++vPC)->u.operand;
int defaultOffset = (++vPC)->u.operand;
- JSValuePtr scrutinee = callFrame[(++vPC)->u.operand].jsValue(callFrame);
- if (!scrutinee->isString())
+ JSValue scrutinee = callFrame[(++vPC)->u.operand].jsValue();
+ if (!scrutinee.isString())
vPC += defaultOffset;
else
vPC += callFrame->codeBlock()->stringSwitchJumpTable(tableIndex).offsetForValue(asString(scrutinee)->value().rep(), defaultOffset);
@@ -3286,15 +2995,15 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int argCount = vPC[3].u.operand;
int registerOffset = vPC[4].u.operand;
- JSValuePtr funcVal = callFrame[func].jsValue(callFrame);
+ JSValue funcVal = callFrame[func].jsValue();
Register* newCallFrame = callFrame->registers() + registerOffset;
Register* argv = newCallFrame - RegisterFile::CallFrameHeaderSize - argCount;
- JSValuePtr thisValue = argv[0].jsValue(callFrame);
+ JSValue thisValue = argv[0].jsValue();
JSGlobalObject* globalObject = callFrame->scopeChain()->globalObject();
if (thisValue == globalObject && funcVal == globalObject->evalFunction()) {
- JSValuePtr result = callEval(callFrame, registerFile, argv, argCount, registerOffset, exceptionValue);
+ JSValue result = callEval(callFrame, registerFile, argv, argCount, registerOffset, exceptionValue);
if (exceptionValue)
goto vm_throw;
callFrame[dst] = result;
@@ -3323,10 +3032,10 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int argCount = vPC[3].u.operand;
int registerOffset = vPC[4].u.operand;
- JSValuePtr v = callFrame[func].jsValue(callFrame);
+ JSValue v = callFrame[func].jsValue();
CallData callData;
- CallType callType = v->getCallData(callData);
+ CallType callType = v.getCallData(callData);
if (callType == CallTypeJS) {
ScopeChainNode* callDataScopeChain = callData.js.scopeChain;
@@ -3361,18 +3070,18 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
ArgList args(thisRegister + 1, argCount - 1);
// FIXME: All host methods should be calling toThisObject, but this is not presently the case.
- JSValuePtr thisValue = thisRegister->jsValue(callFrame);
+ JSValue thisValue = thisRegister->jsValue();
if (thisValue == jsNull())
thisValue = callFrame->globalThisValue();
- JSValuePtr returnValue;
+ JSValue returnValue;
{
SamplingTool::HostCallRecord callRecord(m_sampler);
returnValue = callData.native.function(newCallFrame, asObject(v), thisValue, args);
}
CHECK_FOR_EXCEPTION();
- callFrame[dst] = JSValuePtr(returnValue);
+ callFrame[dst] = JSValue(returnValue);
vPC += 5;
NEXT_INSTRUCTION();
@@ -3383,6 +3092,160 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
exceptionValue = createNotAFunctionError(callFrame, v, vPC - callFrame->codeBlock()->instructions().begin(), callFrame->codeBlock());
goto vm_throw;
}
+ DEFINE_OPCODE(op_load_varargs) {
+ int argCountDst = (++vPC)->u.operand;
+ int argsOffset = (++vPC)->u.operand;
+
+ JSValue arguments = callFrame[argsOffset].jsValue();
+ uint32_t argCount = 0;
+ if (!arguments) {
+ argCount = (uint32_t)(callFrame[RegisterFile::ArgumentCount].u.i) - 1;
+ int32_t sizeDelta = argsOffset + argCount + RegisterFile::CallFrameHeaderSize;
+ Register* newEnd = callFrame->registers() + sizeDelta;
+ if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
+ exceptionValue = createStackOverflowError(callFrame);
+ goto vm_throw;
+ }
+ uint32_t expectedParams = asFunction(callFrame[RegisterFile::Callee].jsValue())->body()->parameterCount();
+ uint32_t inplaceArgs = min(argCount, expectedParams);
+ uint32_t i = 0;
+ Register* argStore = callFrame->registers() + argsOffset;
+
+ // First step is to copy the "expected" parameters from their normal location relative to the callframe
+ for (; i < inplaceArgs; i++)
+ argStore[i] = callFrame->registers()[i - RegisterFile::CallFrameHeaderSize - expectedParams];
+ // Then we copy any additional arguments that may be further up the stack ('-1' to account for 'this')
+ for (; i < argCount; i++)
+ argStore[i] = callFrame->registers()[i - RegisterFile::CallFrameHeaderSize - expectedParams - argCount - 1];
+ } else if (!arguments.isUndefinedOrNull()) {
+ if (!arguments.isObject()) {
+ exceptionValue = createInvalidParamError(callFrame, "Function.prototype.apply", arguments, vPC - callFrame->codeBlock()->instructions().begin(), callFrame->codeBlock());
+ goto vm_throw;
+ }
+ if (asObject(arguments)->classInfo() == &Arguments::info) {
+ Arguments* args = asArguments(arguments);
+ argCount = args->numProvidedArguments(callFrame);
+ int32_t sizeDelta = argsOffset + argCount + RegisterFile::CallFrameHeaderSize;
+ Register* newEnd = callFrame->registers() + sizeDelta;
+ if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
+ exceptionValue = createStackOverflowError(callFrame);
+ goto vm_throw;
+ }
+ args->copyToRegisters(callFrame, callFrame->registers() + argsOffset, argCount);
+ } else if (isJSArray(&callFrame->globalData(), arguments)) {
+ JSArray* array = asArray(arguments);
+ argCount = array->length();
+ int32_t sizeDelta = argsOffset + argCount + RegisterFile::CallFrameHeaderSize;
+ Register* newEnd = callFrame->registers() + sizeDelta;
+ if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
+ exceptionValue = createStackOverflowError(callFrame);
+ goto vm_throw;
+ }
+ array->copyToRegisters(callFrame, callFrame->registers() + argsOffset, argCount);
+ } else if (asObject(arguments)->inherits(&JSArray::info)) {
+ JSObject* argObject = asObject(arguments);
+ argCount = argObject->get(callFrame, callFrame->propertyNames().length).toUInt32(callFrame);
+ int32_t sizeDelta = argsOffset + argCount + RegisterFile::CallFrameHeaderSize;
+ Register* newEnd = callFrame->registers() + sizeDelta;
+ if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
+ exceptionValue = createStackOverflowError(callFrame);
+ goto vm_throw;
+ }
+ Register* argsBuffer = callFrame->registers() + argsOffset;
+ for (unsigned i = 0; i < argCount; ++i) {
+ argsBuffer[i] = asObject(arguments)->get(callFrame, i);
+ CHECK_FOR_EXCEPTION();
+ }
+ } else {
+ if (!arguments.isObject()) {
+ exceptionValue = createInvalidParamError(callFrame, "Function.prototype.apply", arguments, vPC - callFrame->codeBlock()->instructions().begin(), callFrame->codeBlock());
+ goto vm_throw;
+ }
+ }
+ }
+ CHECK_FOR_EXCEPTION();
+ callFrame[argCountDst] = argCount + 1;
+ ++vPC;
+ NEXT_INSTRUCTION();
+ }
+ DEFINE_OPCODE(op_call_varargs) {
+ /* call_varargs dst(r) func(r) argCountReg(r) baseRegisterOffset(n)
+
+ Perform a function call with a dynamic set of arguments.
+
+ registerOffset is the distance the callFrame pointer should move
+ before the VM initializes the new call frame's header, excluding
+ space for arguments.
+
+ dst is where op_ret should store its result.
+ */
+
+ int dst = vPC[1].u.operand;
+ int func = vPC[2].u.operand;
+ int argCountReg = vPC[3].u.operand;
+ int registerOffset = vPC[4].u.operand;
+
+ JSValue v = callFrame[func].jsValue();
+ int argCount = callFrame[argCountReg].i();
+ registerOffset += argCount;
+ CallData callData;
+ CallType callType = v.getCallData(callData);
+
+ if (callType == CallTypeJS) {
+ ScopeChainNode* callDataScopeChain = callData.js.scopeChain;
+ FunctionBodyNode* functionBodyNode = callData.js.functionBody;
+ CodeBlock* newCodeBlock = &functionBodyNode->bytecode(callDataScopeChain);
+
+ CallFrame* previousCallFrame = callFrame;
+
+ callFrame = slideRegisterWindowForCall(newCodeBlock, registerFile, callFrame, registerOffset, argCount);
+ if (UNLIKELY(!callFrame)) {
+ callFrame = previousCallFrame;
+ exceptionValue = createStackOverflowError(callFrame);
+ goto vm_throw;
+ }
+
+ callFrame->init(newCodeBlock, vPC + 5, callDataScopeChain, previousCallFrame, dst, argCount, asFunction(v));
+ vPC = newCodeBlock->instructions().begin();
+
+#if ENABLE(OPCODE_STATS)
+ OpcodeStats::resetLastInstruction();
+#endif
+
+ NEXT_INSTRUCTION();
+ }
+
+ if (callType == CallTypeHost) {
+ ScopeChainNode* scopeChain = callFrame->scopeChain();
+ CallFrame* newCallFrame = CallFrame::create(callFrame->registers() + registerOffset);
+ newCallFrame->init(0, vPC + 5, scopeChain, callFrame, dst, argCount, 0);
+
+ Register* thisRegister = newCallFrame->registers() - RegisterFile::CallFrameHeaderSize - argCount;
+ ArgList args(thisRegister + 1, argCount - 1);
+
+ // FIXME: All host methods should be calling toThisObject, but this is not presently the case.
+ JSValue thisValue = thisRegister->jsValue();
+ if (thisValue == jsNull())
+ thisValue = callFrame->globalThisValue();
+
+ JSValue returnValue;
+ {
+ SamplingTool::HostCallRecord callRecord(m_sampler);
+ returnValue = callData.native.function(newCallFrame, asObject(v), thisValue, args);
+ }
+ CHECK_FOR_EXCEPTION();
+
+ callFrame[dst] = JSValue(returnValue);
+
+ vPC += 5;
+ NEXT_INSTRUCTION();
+ }
+
+ ASSERT(callType == CallTypeNone);
+
+ exceptionValue = createNotAFunctionError(callFrame, v, vPC - callFrame->codeBlock()->instructions().begin(), callFrame->codeBlock());
+ goto vm_throw;
+ }
DEFINE_OPCODE(op_tear_off_activation) {
/* tear_off_activation activation(r)
@@ -3399,7 +3262,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int src = (++vPC)->u.operand;
ASSERT(callFrame->codeBlock()->needsFullScopeChain());
- asActivation(callFrame[src].getJSValue())->copyRegisters(callFrame->optionalCalleeArguments());
+ asActivation(callFrame[src].jsValue())->copyRegisters(callFrame->optionalCalleeArguments());
++vPC;
NEXT_INSTRUCTION();
@@ -3418,8 +3281,8 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
ASSERT(callFrame->codeBlock()->usesArguments() && !callFrame->codeBlock()->needsFullScopeChain());
-
- callFrame->optionalCalleeArguments()->copyRegisters();
+ if (callFrame->optionalCalleeArguments())
+ callFrame->optionalCalleeArguments()->copyRegisters();
++vPC;
NEXT_INSTRUCTION();
@@ -3439,7 +3302,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
if (callFrame->codeBlock()->needsFullScopeChain())
callFrame->scopeChain()->deref();
- JSValuePtr returnValue = callFrame[result].jsValue(callFrame);
+ JSValue returnValue = callFrame[result].jsValue();
vPC = callFrame->returnPC();
int dst = callFrame->returnValueRegister();
@@ -3448,7 +3311,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
if (callFrame->hasHostCallFrameFlag())
return returnValue;
- callFrame[dst] = JSValuePtr(returnValue);
+ callFrame[dst] = JSValue(returnValue);
NEXT_INSTRUCTION();
}
@@ -3518,28 +3381,40 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int thisRegister = (++vPC)->u.operand;
- JSValuePtr thisVal = callFrame[thisRegister].getJSValue();
- if (thisVal->needsThisConversion())
- callFrame[thisRegister] = JSValuePtr(thisVal->toThisObject(callFrame));
+ JSValue thisVal = callFrame[thisRegister].jsValue();
+ if (thisVal.needsThisConversion())
+ callFrame[thisRegister] = JSValue(thisVal.toThisObject(callFrame));
++vPC;
NEXT_INSTRUCTION();
}
- DEFINE_OPCODE(op_create_arguments) {
+ DEFINE_OPCODE(op_init_arguments) {
/* create_arguments
- Creates the 'arguments' object and places it in both the
- 'arguments' call frame slot and the local 'arguments'
- register.
+ Initialises the arguments object reference to null to ensure
+ we can correctly detect that we need to create it later (or
+ avoid creating it altogether).
This opcode should only be used at the beginning of a code
block.
- */
+ */
+ callFrame[RegisterFile::ArgumentsRegister] = JSValue();
+ ++vPC;
+ NEXT_INSTRUCTION();
+ }
+ DEFINE_OPCODE(op_create_arguments) {
+ /* create_arguments
- Arguments* arguments = new (globalData) Arguments(callFrame);
- callFrame->setCalleeArguments(arguments);
- callFrame[RegisterFile::ArgumentsRegister] = arguments;
+ Creates the 'arguments' object and places it in both the
+ 'arguments' call frame slot and the local 'arguments'
+ register, if it has not already been initialised.
+ */
+ if (!callFrame->optionalCalleeArguments()) {
+ Arguments* arguments = new (globalData) Arguments(callFrame);
+ callFrame->setCalleeArguments(arguments);
+ callFrame[RegisterFile::ArgumentsRegister] = arguments;
+ }
++vPC;
NEXT_INSTRUCTION();
}
@@ -3565,10 +3440,10 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int proto = vPC[5].u.operand;
int thisRegister = vPC[6].u.operand;
- JSValuePtr v = callFrame[func].jsValue(callFrame);
+ JSValue v = callFrame[func].jsValue();
ConstructData constructData;
- ConstructType constructType = v->getConstructData(constructData);
+ ConstructType constructType = v.getConstructData(constructData);
if (constructType == ConstructTypeJS) {
ScopeChainNode* callDataScopeChain = constructData.js.scopeChain;
@@ -3576,14 +3451,14 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
CodeBlock* newCodeBlock = &functionBodyNode->bytecode(callDataScopeChain);
Structure* structure;
- JSValuePtr prototype = callFrame[proto].jsValue(callFrame);
- if (prototype->isObject())
+ JSValue prototype = callFrame[proto].jsValue();
+ if (prototype.isObject())
structure = asObject(prototype)->inheritorID();
else
structure = callDataScopeChain->globalObject()->emptyObjectStructure();
JSObject* newObject = new (globalData) JSObject(structure);
- callFrame[thisRegister] = JSValuePtr(newObject); // "this" value
+ callFrame[thisRegister] = JSValue(newObject); // "this" value
CallFrame* previousCallFrame = callFrame;
@@ -3611,13 +3486,13 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
CallFrame* newCallFrame = CallFrame::create(callFrame->registers() + registerOffset);
newCallFrame->init(0, vPC + 7, scopeChain, callFrame, dst, argCount, 0);
- JSValuePtr returnValue;
+ JSValue returnValue;
{
SamplingTool::HostCallRecord callRecord(m_sampler);
returnValue = constructData.native.function(newCallFrame, asObject(v), args);
}
CHECK_FOR_EXCEPTION();
- callFrame[dst] = JSValuePtr(returnValue);
+ callFrame[dst] = JSValue(returnValue);
vPC += 7;
NEXT_INSTRUCTION();
@@ -3635,8 +3510,8 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
the object in register override to register dst.
*/
- int dst = vPC[1].u.operand;;
- if (LIKELY(callFrame[dst].jsValue(callFrame)->isObject())) {
+ int dst = vPC[1].u.operand;
+ if (LIKELY(callFrame[dst].jsValue().isObject())) {
vPC += 3;
NEXT_INSTRUCTION();
}
@@ -3647,6 +3522,25 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
vPC += 3;
NEXT_INSTRUCTION();
}
+ DEFINE_OPCODE(op_strcat) {
+ int dst = (++vPC)->u.operand;
+ int src = (++vPC)->u.operand;
+ int count = (++vPC)->u.operand;
+
+ callFrame[dst] = concatenateStrings(callFrame, &callFrame->registers()[src], count);
+ ++vPC;
+
+ NEXT_INSTRUCTION();
+ }
+ DEFINE_OPCODE(op_to_primitive) {
+ int dst = (++vPC)->u.operand;
+ int src = (++vPC)->u.operand;
+
+ callFrame[dst] = callFrame[src].jsValue().toPrimitive(callFrame);
+ ++vPC;
+
+ NEXT_INSTRUCTION();
+ }
DEFINE_OPCODE(op_push_scope) {
/* push_scope scope(r)
@@ -3655,11 +3549,11 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
are replaced by the result of toObject conversion of the scope.
*/
int scope = (++vPC)->u.operand;
- JSValuePtr v = callFrame[scope].jsValue(callFrame);
- JSObject* o = v->toObject(callFrame);
+ JSValue v = callFrame[scope].jsValue();
+ JSObject* o = v.toObject(callFrame);
CHECK_FOR_EXCEPTION();
- callFrame[scope] = JSValuePtr(o);
+ callFrame[scope] = JSValue(o);
callFrame->setScopeChain(callFrame->scopeChain()->push(o));
++vPC;
@@ -3686,7 +3580,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int dst = (++vPC)->u.operand;
int base = (++vPC)->u.operand;
- callFrame[dst] = JSPropertyNameIterator::create(callFrame, callFrame[base].jsValue(callFrame));
+ callFrame[dst] = JSPropertyNameIterator::create(callFrame, callFrame[base].jsValue());
++vPC;
NEXT_INSTRUCTION();
}
@@ -3704,9 +3598,9 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int target = (++vPC)->u.operand;
JSPropertyNameIterator* it = callFrame[iter].propertyNameIterator();
- if (JSValuePtr temp = it->next(callFrame)) {
+ if (JSValue temp = it->next(callFrame)) {
CHECK_FOR_TIMEOUT();
- callFrame[dst] = JSValuePtr(temp);
+ callFrame[dst] = JSValue(temp);
vPC += target;
NEXT_INSTRUCTION();
}
@@ -3755,7 +3649,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
DEFINE_OPCODE(op_catch) {
/* catch ex(r)
- Retrieves the VMs current exception and puts it in register
+ Retrieves the VM's current exception and puts it in register
ex. This is only valid after an exception has been raised,
and usually forms the beginning of an exception handler.
*/
@@ -3763,7 +3657,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
ASSERT(!globalData->exception);
int ex = (++vPC)->u.operand;
callFrame[ex] = exceptionValue;
- exceptionValue = noValue();
+ exceptionValue = JSValue();
++vPC;
NEXT_INSTRUCTION();
@@ -3780,7 +3674,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int ex = (++vPC)->u.operand;
- exceptionValue = callFrame[ex].jsValue(callFrame);
+ exceptionValue = callFrame[ex].jsValue();
handler = throwException(callFrame, exceptionValue, vPC - callFrame->codeBlock()->instructions().begin(), true);
if (!handler) {
@@ -3798,7 +3692,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
*/
int dst = (++vPC)->u.operand;
int src = (++vPC)->u.operand;
- callFrame[dst] = JSValuePtr(callFrame->codeBlock()->unexpectedConstant(src));
+ callFrame[dst] = JSValue(callFrame->codeBlock()->unexpectedConstant(src));
++vPC;
NEXT_INSTRUCTION();
@@ -3816,7 +3710,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int message = (++vPC)->u.operand;
CodeBlock* codeBlock = callFrame->codeBlock();
- callFrame[dst] = JSValuePtr(Error::create(callFrame, (ErrorType)type, codeBlock->unexpectedConstant(message)->toString(callFrame), codeBlock->lineNumberForBytecodeOffset(callFrame, vPC - codeBlock->instructions().begin()), codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL()));
+ callFrame[dst] = JSValue(Error::create(callFrame, (ErrorType)type, codeBlock->unexpectedConstant(message).toString(callFrame), codeBlock->lineNumberForBytecodeOffset(callFrame, vPC - codeBlock->instructions().begin()), codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL()));
++vPC;
NEXT_INSTRUCTION();
@@ -3834,7 +3728,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
scopeChain->deref();
}
int result = (++vPC)->u.operand;
- return callFrame[result].jsValue(callFrame);
+ return callFrame[result].jsValue();
}
DEFINE_OPCODE(op_put_getter) {
/* put_getter base(r) property(id) function(r)
@@ -3851,11 +3745,11 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int property = (++vPC)->u.operand;
int function = (++vPC)->u.operand;
- ASSERT(callFrame[base].jsValue(callFrame)->isObject());
- JSObject* baseObj = asObject(callFrame[base].jsValue(callFrame));
+ ASSERT(callFrame[base].jsValue().isObject());
+ JSObject* baseObj = asObject(callFrame[base].jsValue());
Identifier& ident = callFrame->codeBlock()->identifier(property);
- ASSERT(callFrame[function].jsValue(callFrame)->isObject());
- baseObj->defineGetter(callFrame, ident, asObject(callFrame[function].jsValue(callFrame)));
+ ASSERT(callFrame[function].jsValue().isObject());
+ baseObj->defineGetter(callFrame, ident, asObject(callFrame[function].jsValue()));
++vPC;
NEXT_INSTRUCTION();
@@ -3875,15 +3769,19 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int property = (++vPC)->u.operand;
int function = (++vPC)->u.operand;
- ASSERT(callFrame[base].jsValue(callFrame)->isObject());
- JSObject* baseObj = asObject(callFrame[base].jsValue(callFrame));
+ ASSERT(callFrame[base].jsValue().isObject());
+ JSObject* baseObj = asObject(callFrame[base].jsValue());
Identifier& ident = callFrame->codeBlock()->identifier(property);
- ASSERT(callFrame[function].jsValue(callFrame)->isObject());
- baseObj->defineSetter(callFrame, ident, asObject(callFrame[function].jsValue(callFrame)));
+ ASSERT(callFrame[function].jsValue().isObject());
+ baseObj->defineSetter(callFrame, ident, asObject(callFrame[function].jsValue()));
++vPC;
NEXT_INSTRUCTION();
}
+ DEFINE_OPCODE(op_method_check) {
+ vPC++;
+ NEXT_INSTRUCTION();
+ }
DEFINE_OPCODE(op_jsr) {
/* jsr retAddrDst(r) target(offset)
@@ -3932,7 +3830,7 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int function = vPC[1].u.operand;
if (*enabledProfilerReference)
- (*enabledProfilerReference)->willExecute(callFrame, callFrame[function].jsValue(callFrame));
+ (*enabledProfilerReference)->willExecute(callFrame, callFrame[function].jsValue());
vPC += 2;
NEXT_INSTRUCTION();
@@ -3946,13 +3844,13 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
int function = vPC[1].u.operand;
if (*enabledProfilerReference)
- (*enabledProfilerReference)->didExecute(callFrame, callFrame[function].jsValue(callFrame));
+ (*enabledProfilerReference)->didExecute(callFrame, callFrame[function].jsValue());
vPC += 2;
NEXT_INSTRUCTION();
}
vm_throw: {
- globalData->exception = noValue();
+ globalData->exception = JSValue();
if (!tickCount) {
// The exceptionValue is a lie! (GCC produces bad code for reasons I
// cannot fathom if we don't assign to the exceptionValue before branching)
@@ -3971,13 +3869,14 @@ JSValuePtr Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registe
#if !HAVE(COMPUTED_GOTO)
} // iterator loop ends
#endif
+#endif // USE(INTERPRETER)
#undef NEXT_INSTRUCTION
#undef DEFINE_OPCODE
#undef CHECK_FOR_EXCEPTION
#undef CHECK_FOR_TIMEOUT
}
-JSValuePtr Interpreter::retrieveArguments(CallFrame* callFrame, JSFunction* function) const
+JSValue Interpreter::retrieveArguments(CallFrame* callFrame, JSFunction* function) const
{
CallFrame* functionCallFrame = findFunctionCallFrame(callFrame, function);
if (!functionCallFrame)
@@ -3988,7 +3887,12 @@ JSValuePtr Interpreter::retrieveArguments(CallFrame* callFrame, JSFunction* func
ASSERT(codeBlock->codeType() == FunctionCode);
SymbolTable& symbolTable = codeBlock->symbolTable();
int argumentsIndex = symbolTable.get(functionCallFrame->propertyNames().arguments.ustring().rep()).getIndex();
- return functionCallFrame[argumentsIndex].jsValue(callFrame);
+ if (!functionCallFrame[argumentsIndex].arguments()) {
+ Arguments* arguments = new (callFrame) Arguments(functionCallFrame);
+ functionCallFrame->setCalleeArguments(arguments);
+ functionCallFrame[RegisterFile::ArgumentsRegister] = arguments;
+ }
+ return functionCallFrame[argumentsIndex].jsValue();
}
Arguments* arguments = functionCallFrame->optionalCalleeArguments();
@@ -4001,7 +3905,7 @@ JSValuePtr Interpreter::retrieveArguments(CallFrame* callFrame, JSFunction* func
return arguments;
}
-JSValuePtr Interpreter::retrieveCaller(CallFrame* callFrame, InternalFunction* function) const
+JSValue Interpreter::retrieveCaller(CallFrame* callFrame, InternalFunction* function) const
{
CallFrame* functionCallFrame = findFunctionCallFrame(callFrame, function);
if (!functionCallFrame)
@@ -4011,16 +3915,16 @@ JSValuePtr Interpreter::retrieveCaller(CallFrame* callFrame, InternalFunction* f
if (callerFrame->hasHostCallFrameFlag())
return jsNull();
- JSValuePtr caller = callerFrame->callee();
+ JSValue caller = callerFrame->callee();
if (!caller)
return jsNull();
return caller;
}
-void Interpreter::retrieveLastCaller(CallFrame* callFrame, int& lineNumber, intptr_t& sourceID, UString& sourceURL, JSValuePtr& function) const
+void Interpreter::retrieveLastCaller(CallFrame* callFrame, int& lineNumber, intptr_t& sourceID, UString& sourceURL, JSValue& function) const
{
- function = noValue();
+ function = JSValue();
lineNumber = -1;
sourceURL = UString();
@@ -4032,7 +3936,7 @@ void Interpreter::retrieveLastCaller(CallFrame* callFrame, int& lineNumber, intp
if (!callerCodeBlock)
return;
- unsigned bytecodeOffset = bytecodeOffsetForPC(callerCodeBlock, callFrame->returnPC());
+ unsigned bytecodeOffset = bytecodeOffsetForPC(callerFrame, callerCodeBlock, callFrame->returnPC());
lineNumber = callerCodeBlock->lineNumberForBytecodeOffset(callerFrame, bytecodeOffset - 1);
sourceID = callerCodeBlock->ownerNode()->sourceID();
sourceURL = callerCodeBlock->ownerNode()->sourceURL();
@@ -4048,2061 +3952,4 @@ CallFrame* Interpreter::findFunctionCallFrame(CallFrame* callFrame, InternalFunc
return 0;
}
-#if ENABLE(JIT)
-
-#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
-
-NEVER_INLINE void Interpreter::tryCTICachePutByID(CallFrame* callFrame, CodeBlock* codeBlock, void* returnAddress, JSValuePtr baseValue, const PutPropertySlot& slot)
-{
- // The interpreter checks for recursion here; I do not believe this can occur in CTI.
-
- if (JSImmediate::isImmediate(baseValue))
- return;
-
- // Uncacheable: give up.
- if (!slot.isCacheable()) {
- ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_put_by_id_generic));
- return;
- }
-
- JSCell* baseCell = asCell(baseValue);
- Structure* structure = baseCell->structure();
-
- if (structure->isDictionary()) {
- ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_put_by_id_generic));
- return;
- }
-
- // If baseCell != base, then baseCell must be a proxy for another object.
- if (baseCell != slot.base()) {
- ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_put_by_id_generic));
- return;
- }
-
- StructureStubInfo* stubInfo = &codeBlock->getStubInfo(returnAddress);
-
- // Cache hit: Specialize instruction and ref Structures.
-
- // Structure transition, cache transition info
- if (slot.type() == PutPropertySlot::NewProperty) {
- StructureChain* chain = structure->cachedPrototypeChain();
- if (!chain) {
- chain = cachePrototypeChain(callFrame, structure);
- if (!chain) {
- // This happens if someone has manually inserted null into the prototype chain
- stubInfo->opcodeID = op_put_by_id_generic;
- return;
- }
- }
- stubInfo->initPutByIdTransition(structure->previousID(), structure, chain);
- JIT::compilePutByIdTransition(callFrame->scopeChain()->globalData, codeBlock, stubInfo, structure->previousID(), structure, slot.cachedOffset(), chain, returnAddress);
- return;
- }
-
- stubInfo->initPutByIdReplace(structure);
-
-#if USE(CTI_REPATCH_PIC)
- UNUSED_PARAM(callFrame);
- JIT::patchPutByIdReplace(stubInfo, structure, slot.cachedOffset(), returnAddress);
-#else
- JIT::compilePutByIdReplace(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, slot.cachedOffset(), returnAddress);
-#endif
-}
-
-NEVER_INLINE void Interpreter::tryCTICacheGetByID(CallFrame* callFrame, CodeBlock* codeBlock, void* returnAddress, JSValuePtr baseValue, const Identifier& propertyName, const PropertySlot& slot)
-{
- // FIXME: Write a test that proves we need to check for recursion here just
- // like the interpreter does, then add a check for recursion.
-
- // FIXME: Cache property access for immediates.
- if (JSImmediate::isImmediate(baseValue)) {
- ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_get_by_id_generic));
- return;
- }
-
- if (isJSArray(baseValue) && propertyName == callFrame->propertyNames().length) {
-#if USE(CTI_REPATCH_PIC)
- JIT::compilePatchGetArrayLength(callFrame->scopeChain()->globalData, codeBlock, returnAddress);
-#else
- ctiPatchCallByReturnAddress(returnAddress, m_ctiArrayLengthTrampoline);
-#endif
- return;
- }
- if (isJSString(baseValue) && propertyName == callFrame->propertyNames().length) {
- // The tradeoff of compiling an patched inline string length access routine does not seem
- // to pay off, so we currently only do this for arrays.
- ctiPatchCallByReturnAddress(returnAddress, m_ctiStringLengthTrampoline);
- return;
- }
-
- // Uncacheable: give up.
- if (!slot.isCacheable()) {
- ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_get_by_id_generic));
- return;
- }
-
- JSCell* baseCell = asCell(baseValue);
- Structure* structure = baseCell->structure();
-
- if (structure->isDictionary()) {
- ctiPatchCallByReturnAddress(returnAddress, reinterpret_cast<void*>(cti_op_get_by_id_generic));
- return;
- }
-
- // In the interpreter the last structure is trapped here; in CTI we use the
- // *_second method to achieve a similar (but not quite the same) effect.
-
- StructureStubInfo* stubInfo = &codeBlock->getStubInfo(returnAddress);
-
- // Cache hit: Specialize instruction and ref Structures.
-
- if (slot.slotBase() == baseValue) {
- // set this up, so derefStructures can do it's job.
- stubInfo->initGetByIdSelf(structure);
-
-#if USE(CTI_REPATCH_PIC)
- JIT::patchGetByIdSelf(stubInfo, structure, slot.cachedOffset(), returnAddress);
-#else
- JIT::compileGetByIdSelf(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, slot.cachedOffset(), returnAddress);
-#endif
- return;
- }
-
- if (slot.slotBase() == structure->prototypeForLookup(callFrame)) {
- ASSERT(slot.slotBase()->isObject());
-
- JSObject* slotBaseObject = asObject(slot.slotBase());
-
- // Since we're accessing a prototype in a loop, it's a good bet that it
- // should not be treated as a dictionary.
- if (slotBaseObject->structure()->isDictionary()) {
- RefPtr<Structure> transition = Structure::fromDictionaryTransition(slotBaseObject->structure());
- slotBaseObject->setStructure(transition.release());
- asCell(baseValue)->structure()->setCachedPrototypeChain(0);
- }
-
- stubInfo->initGetByIdProto(structure, slotBaseObject->structure());
-
- JIT::compileGetByIdProto(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, slotBaseObject->structure(), slot.cachedOffset(), returnAddress);
- return;
- }
-
- size_t count = countPrototypeChainEntriesAndCheckForProxies(callFrame, baseValue, slot);
- if (!count) {
- stubInfo->opcodeID = op_get_by_id_generic;
- return;
- }
-
- StructureChain* chain = structure->cachedPrototypeChain();
- if (!chain)
- chain = cachePrototypeChain(callFrame, structure);
- ASSERT(chain);
-
- stubInfo->initGetByIdChain(structure, chain);
-
- JIT::compileGetByIdChain(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, chain, count, slot.cachedOffset(), returnAddress);
-}
-
-#endif
-
-#if USE(JIT_STUB_ARGUMENT_VA_LIST)
-#define SETUP_VA_LISTL_ARGS va_list vl_args; va_start(vl_args, args)
-#else // JIT_STUB_ARGUMENT_REGISTER or JIT_STUB_ARGUMENT_STACK
-#define SETUP_VA_LISTL_ARGS
-#endif
-
-#ifndef NDEBUG
-
-extern "C" {
-
-static void jscGeneratedNativeCode()
-{
- // When executing a CTI function (which might do an allocation), we hack the return address
- // to pretend to be executing this function, to keep stack logging tools from blowing out
- // memory.
-}
-
-}
-
-struct StackHack {
- ALWAYS_INLINE StackHack(void** location)
- {
- returnAddressLocation = location;
- savedReturnAddress = *returnAddressLocation;
- ctiSetReturnAddress(returnAddressLocation, reinterpret_cast<void*>(jscGeneratedNativeCode));
- }
- ALWAYS_INLINE ~StackHack()
- {
- ctiSetReturnAddress(returnAddressLocation, savedReturnAddress);
- }
-
- void** returnAddressLocation;
- void* savedReturnAddress;
-};
-
-#define BEGIN_STUB_FUNCTION() SETUP_VA_LISTL_ARGS; StackHack stackHack(&STUB_RETURN_ADDRESS_SLOT)
-#define STUB_SET_RETURN_ADDRESS(address) stackHack.savedReturnAddress = address
-#define STUB_RETURN_ADDRESS stackHack.savedReturnAddress
-
-#else
-
-#define BEGIN_STUB_FUNCTION() SETUP_VA_LISTL_ARGS
-#define STUB_SET_RETURN_ADDRESS(address) ctiSetReturnAddress(&STUB_RETURN_ADDRESS_SLOT, address);
-#define STUB_RETURN_ADDRESS STUB_RETURN_ADDRESS_SLOT
-
-#endif
-
-// The reason this is not inlined is to avoid having to do a PIC branch
-// to get the address of the ctiVMThrowTrampoline function. It's also
-// good to keep the code size down by leaving as much of the exception
-// handling code out of line as possible.
-static NEVER_INLINE void returnToThrowTrampoline(JSGlobalData* globalData, void* exceptionLocation, void*& returnAddressSlot)
-{
- ASSERT(globalData->exception);
- globalData->exceptionLocation = exceptionLocation;
- ctiSetReturnAddress(&returnAddressSlot, reinterpret_cast<void*>(ctiVMThrowTrampoline));
-}
-
-static NEVER_INLINE void throwStackOverflowError(CallFrame* callFrame, JSGlobalData* globalData, void* exceptionLocation, void*& returnAddressSlot)
-{
- globalData->exception = createStackOverflowError(callFrame);
- returnToThrowTrampoline(globalData, exceptionLocation, returnAddressSlot);
-}
-
-#define VM_THROW_EXCEPTION() \
- do { \
- VM_THROW_EXCEPTION_AT_END(); \
- return 0; \
- } while (0)
-#define VM_THROW_EXCEPTION_2() \
- do { \
- VM_THROW_EXCEPTION_AT_END(); \
- RETURN_PAIR(0, 0); \
- } while (0)
-#define VM_THROW_EXCEPTION_AT_END() \
- returnToThrowTrampoline(ARG_globalData, STUB_RETURN_ADDRESS, STUB_RETURN_ADDRESS)
-
-#define CHECK_FOR_EXCEPTION() \
- do { \
- if (UNLIKELY(ARG_globalData->exception != noValue())) \
- VM_THROW_EXCEPTION(); \
- } while (0)
-#define CHECK_FOR_EXCEPTION_AT_END() \
- do { \
- if (UNLIKELY(ARG_globalData->exception != noValue())) \
- VM_THROW_EXCEPTION_AT_END(); \
- } while (0)
-#define CHECK_FOR_EXCEPTION_VOID() \
- do { \
- if (UNLIKELY(ARG_globalData->exception != noValue())) { \
- VM_THROW_EXCEPTION_AT_END(); \
- return; \
- } \
- } while (0)
-
-JSObject* Interpreter::cti_op_convert_this(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr v1 = ARG_src1;
- CallFrame* callFrame = ARG_callFrame;
-
- JSObject* result = v1->toThisObject(callFrame);
- CHECK_FOR_EXCEPTION_AT_END();
- return result;
-}
-
-void Interpreter::cti_op_end(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- ScopeChainNode* scopeChain = ARG_callFrame->scopeChain();
- ASSERT(scopeChain->refCount > 1);
- scopeChain->deref();
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_add(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr v1 = ARG_src1;
- JSValuePtr v2 = ARG_src2;
-
- double left;
- double right = 0.0;
-
- bool rightIsNumber = fastIsNumber(v2, right);
- if (rightIsNumber && fastIsNumber(v1, left))
- return JSValuePtr::encode(jsNumber(ARG_globalData, left + right));
-
- CallFrame* callFrame = ARG_callFrame;
-
- bool leftIsString = v1->isString();
- if (leftIsString && v2->isString()) {
- RefPtr<UString::Rep> value = concatenate(asString(v1)->value().rep(), asString(v2)->value().rep());
- if (UNLIKELY(!value)) {
- throwOutOfMemoryError(callFrame);
- VM_THROW_EXCEPTION();
- }
-
- return JSValuePtr::encode(jsString(ARG_globalData, value.release()));
- }
-
- if (rightIsNumber & leftIsString) {
- RefPtr<UString::Rep> value = JSImmediate::isImmediate(v2) ?
- concatenate(asString(v1)->value().rep(), JSImmediate::getTruncatedInt32(v2)) :
- concatenate(asString(v1)->value().rep(), right);
-
- if (UNLIKELY(!value)) {
- throwOutOfMemoryError(callFrame);
- VM_THROW_EXCEPTION();
- }
- return JSValuePtr::encode(jsString(ARG_globalData, value.release()));
- }
-
- // All other cases are pretty uncommon
- JSValuePtr result = jsAddSlowCase(callFrame, v1, v2);
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_pre_inc(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr v = ARG_src1;
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsNumber(ARG_globalData, v->toNumber(callFrame) + 1);
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-int Interpreter::cti_timeout_check(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
- Interpreter* interpreter = ARG_globalData->interpreter;
-
- if (interpreter->checkTimeout(ARG_callFrame->dynamicGlobalObject())) {
- ARG_globalData->exception = createInterruptedExecutionException(ARG_globalData);
- VM_THROW_EXCEPTION_AT_END();
- }
-
- return interpreter->m_ticksUntilNextTimeoutCheck;
-}
-
-void Interpreter::cti_register_file_check(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- if (LIKELY(ARG_registerFile->grow(ARG_callFrame + ARG_callFrame->codeBlock()->m_numCalleeRegisters)))
- return;
-
- // Rewind to the previous call frame because op_call already optimistically
- // moved the call frame forward.
- CallFrame* oldCallFrame = ARG_callFrame->callerFrame();
- ARG_setCallFrame(oldCallFrame);
- throwStackOverflowError(oldCallFrame, ARG_globalData, oldCallFrame->returnPC(), STUB_RETURN_ADDRESS);
-}
-
-int Interpreter::cti_op_loop_if_less(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
- CallFrame* callFrame = ARG_callFrame;
-
- bool result = jsLess(callFrame, src1, src2);
- CHECK_FOR_EXCEPTION_AT_END();
- return result;
-}
-
-int Interpreter::cti_op_loop_if_lesseq(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
- CallFrame* callFrame = ARG_callFrame;
-
- bool result = jsLessEq(callFrame, src1, src2);
- CHECK_FOR_EXCEPTION_AT_END();
- return result;
-}
-
-JSObject* Interpreter::cti_op_new_object(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return constructEmptyObject(ARG_callFrame);
-}
-
-void Interpreter::cti_op_put_by_id_generic(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- PutPropertySlot slot;
- ARG_src1->put(ARG_callFrame, *ARG_id2, ARG_src3, slot);
- CHECK_FOR_EXCEPTION_AT_END();
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_generic(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- Identifier& ident = *ARG_id2;
-
- JSValuePtr baseValue = ARG_src1;
- PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(callFrame, ident, slot);
-
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
-
-void Interpreter::cti_op_put_by_id(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- Identifier& ident = *ARG_id2;
-
- PutPropertySlot slot;
- ARG_src1->put(callFrame, ident, ARG_src3, slot);
-
- ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_put_by_id_second));
-
- CHECK_FOR_EXCEPTION_AT_END();
-}
-
-void Interpreter::cti_op_put_by_id_second(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- PutPropertySlot slot;
- ARG_src1->put(ARG_callFrame, *ARG_id2, ARG_src3, slot);
- ARG_globalData->interpreter->tryCTICachePutByID(ARG_callFrame, ARG_callFrame->codeBlock(), STUB_RETURN_ADDRESS, ARG_src1, slot);
- CHECK_FOR_EXCEPTION_AT_END();
-}
-
-void Interpreter::cti_op_put_by_id_fail(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- Identifier& ident = *ARG_id2;
-
- PutPropertySlot slot;
- ARG_src1->put(callFrame, ident, ARG_src3, slot);
-
- CHECK_FOR_EXCEPTION_AT_END();
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- Identifier& ident = *ARG_id2;
-
- JSValuePtr baseValue = ARG_src1;
- PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(callFrame, ident, slot);
-
- ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_get_by_id_second));
-
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_second(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- Identifier& ident = *ARG_id2;
-
- JSValuePtr baseValue = ARG_src1;
- PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(callFrame, ident, slot);
-
- ARG_globalData->interpreter->tryCTICacheGetByID(callFrame, callFrame->codeBlock(), STUB_RETURN_ADDRESS, baseValue, ident, slot);
-
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_self_fail(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- Identifier& ident = *ARG_id2;
-
- JSValuePtr baseValue = ARG_src1;
- PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(callFrame, ident, slot);
-
- CHECK_FOR_EXCEPTION();
-
- if (!JSImmediate::isImmediate(baseValue)
- && slot.isCacheable()
- && !asCell(baseValue)->structure()->isDictionary()
- && slot.slotBase() == baseValue) {
-
- CodeBlock* codeBlock = callFrame->codeBlock();
- StructureStubInfo* stubInfo = &codeBlock->getStubInfo(STUB_RETURN_ADDRESS);
-
- ASSERT(slot.slotBase()->isObject());
-
- PolymorphicAccessStructureList* polymorphicStructureList;
- int listIndex = 1;
-
- if (stubInfo->opcodeID == op_get_by_id_self) {
- ASSERT(!stubInfo->stubRoutine);
- polymorphicStructureList = new PolymorphicAccessStructureList(0, stubInfo->u.getByIdSelf.baseObjectStructure);
- stubInfo->initGetByIdSelfList(polymorphicStructureList, 2);
- } else {
- polymorphicStructureList = stubInfo->u.getByIdSelfList.structureList;
- listIndex = stubInfo->u.getByIdSelfList.listSize;
- stubInfo->u.getByIdSelfList.listSize++;
- }
-
- JIT::compileGetByIdSelfList(callFrame->scopeChain()->globalData, codeBlock, stubInfo, polymorphicStructureList, listIndex, asCell(baseValue)->structure(), slot.cachedOffset());
-
- if (listIndex == (POLYMORPHIC_LIST_CACHE_SIZE - 1))
- ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_get_by_id_generic));
- } else {
- ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_get_by_id_generic));
- }
- return JSValuePtr::encode(result);
-}
-
-static PolymorphicAccessStructureList* getPolymorphicAccessStructureListSlot(StructureStubInfo* stubInfo, int& listIndex)
-{
- PolymorphicAccessStructureList* prototypeStructureList = 0;
- listIndex = 1;
-
- switch (stubInfo->opcodeID) {
- case op_get_by_id_proto:
- prototypeStructureList = new PolymorphicAccessStructureList(stubInfo->stubRoutine, stubInfo->u.getByIdProto.baseObjectStructure, stubInfo->u.getByIdProto.prototypeStructure);
- stubInfo->stubRoutine = 0;
- stubInfo->initGetByIdProtoList(prototypeStructureList, 2);
- break;
- case op_get_by_id_chain:
- prototypeStructureList = new PolymorphicAccessStructureList(stubInfo->stubRoutine, stubInfo->u.getByIdChain.baseObjectStructure, stubInfo->u.getByIdChain.chain);
- stubInfo->stubRoutine = 0;
- stubInfo->initGetByIdProtoList(prototypeStructureList, 2);
- break;
- case op_get_by_id_proto_list:
- prototypeStructureList = stubInfo->u.getByIdProtoList.structureList;
- listIndex = stubInfo->u.getByIdProtoList.listSize;
- stubInfo->u.getByIdProtoList.listSize++;
- break;
- default:
- ASSERT_NOT_REACHED();
- }
-
- ASSERT(listIndex < POLYMORPHIC_LIST_CACHE_SIZE);
- return prototypeStructureList;
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_proto_list(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
-
- JSValuePtr baseValue = ARG_src1;
- PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(callFrame, *ARG_id2, slot);
-
- CHECK_FOR_EXCEPTION();
-
- if (JSImmediate::isImmediate(baseValue) || !slot.isCacheable() || asCell(baseValue)->structure()->isDictionary()) {
- ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_get_by_id_proto_fail));
- return JSValuePtr::encode(result);
- }
-
- Structure* structure = asCell(baseValue)->structure();
- CodeBlock* codeBlock = callFrame->codeBlock();
- StructureStubInfo* stubInfo = &codeBlock->getStubInfo(STUB_RETURN_ADDRESS);
-
- ASSERT(slot.slotBase()->isObject());
- JSObject* slotBaseObject = asObject(slot.slotBase());
-
- if (slot.slotBase() == baseValue)
- ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_get_by_id_proto_fail));
- else if (slot.slotBase() == asCell(baseValue)->structure()->prototypeForLookup(callFrame)) {
- // Since we're accessing a prototype in a loop, it's a good bet that it
- // should not be treated as a dictionary.
- if (slotBaseObject->structure()->isDictionary()) {
- RefPtr<Structure> transition = Structure::fromDictionaryTransition(slotBaseObject->structure());
- slotBaseObject->setStructure(transition.release());
- asCell(baseValue)->structure()->setCachedPrototypeChain(0);
- }
-
- int listIndex;
- PolymorphicAccessStructureList* prototypeStructureList = getPolymorphicAccessStructureListSlot(stubInfo, listIndex);
-
- JIT::compileGetByIdProtoList(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, prototypeStructureList, listIndex, structure, slotBaseObject->structure(), slot.cachedOffset());
-
- if (listIndex == (POLYMORPHIC_LIST_CACHE_SIZE - 1))
- ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_get_by_id_proto_list_full));
- } else if (size_t count = countPrototypeChainEntriesAndCheckForProxies(callFrame, baseValue, slot)) {
- StructureChain* chain = structure->cachedPrototypeChain();
- if (!chain)
- chain = cachePrototypeChain(callFrame, structure);
- ASSERT(chain);
-
- int listIndex;
- PolymorphicAccessStructureList* prototypeStructureList = getPolymorphicAccessStructureListSlot(stubInfo, listIndex);
-
- JIT::compileGetByIdChainList(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, prototypeStructureList, listIndex, structure, chain, count, slot.cachedOffset());
-
- if (listIndex == (POLYMORPHIC_LIST_CACHE_SIZE - 1))
- ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_get_by_id_proto_list_full));
- } else
- ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, reinterpret_cast<void*>(cti_op_get_by_id_proto_fail));
-
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_proto_list_full(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr baseValue = ARG_src1;
- PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(ARG_callFrame, *ARG_id2, slot);
-
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_proto_fail(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr baseValue = ARG_src1;
- PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(ARG_callFrame, *ARG_id2, slot);
-
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_array_fail(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr baseValue = ARG_src1;
- PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(ARG_callFrame, *ARG_id2, slot);
-
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_get_by_id_string_fail(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr baseValue = ARG_src1;
- PropertySlot slot(baseValue);
- JSValuePtr result = baseValue->get(ARG_callFrame, *ARG_id2, slot);
-
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-#endif
-
-JSValueEncodedAsPointer* Interpreter::cti_op_instanceof(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr value = ARG_src1;
- JSValuePtr baseVal = ARG_src2;
- JSValuePtr proto = ARG_src3;
-
- // at least one of these checks must have failed to get to the slow case
- ASSERT(JSImmediate::isAnyImmediate(value, baseVal, proto)
- || !value->isObject() || !baseVal->isObject() || !proto->isObject()
- || (asObject(baseVal)->structure()->typeInfo().flags() & (ImplementsHasInstance | OverridesHasInstance)) != ImplementsHasInstance);
-
- if (!baseVal->isObject()) {
- CallFrame* callFrame = ARG_callFrame;
- CodeBlock* codeBlock = callFrame->codeBlock();
- unsigned vPCIndex = codeBlock->getBytecodeIndex(STUB_RETURN_ADDRESS);
- ARG_globalData->exception = createInvalidParamError(callFrame, "instanceof", baseVal, vPCIndex, codeBlock);
- VM_THROW_EXCEPTION();
- }
-
- if (!asObject(baseVal)->structure()->typeInfo().implementsHasInstance())
- return JSValuePtr::encode(jsBoolean(false));
-
- if (!proto->isObject()) {
- throwError(callFrame, TypeError, "instanceof called on an object with an invalid prototype property.");
- VM_THROW_EXCEPTION();
- }
-
- if (!value->isObject())
- return JSValuePtr::encode(jsBoolean(false));
-
- JSValuePtr result = jsBoolean(asObject(baseVal)->hasInstance(callFrame, value, proto));
- CHECK_FOR_EXCEPTION_AT_END();
-
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_del_by_id(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
-
- JSObject* baseObj = ARG_src1->toObject(callFrame);
-
- JSValuePtr result = jsBoolean(baseObj->deleteProperty(callFrame, *ARG_id2));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_mul(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
-
- double left;
- double right;
- if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
- return JSValuePtr::encode(jsNumber(ARG_globalData, left * right));
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) * src2->toNumber(callFrame));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSObject* Interpreter::cti_op_new_func(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return ARG_func1->makeFunction(ARG_callFrame, ARG_callFrame->scopeChain());
-}
-
-void* Interpreter::cti_op_call_JSFunction(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
-#ifndef NDEBUG
- CallData callData;
- ASSERT(ARG_src1->getCallData(callData) == CallTypeJS);
-#endif
-
- ScopeChainNode* callDataScopeChain = asFunction(ARG_src1)->m_scopeChain.node();
- CodeBlock* newCodeBlock = &asFunction(ARG_src1)->body()->bytecode(callDataScopeChain);
-
- if (!newCodeBlock->jitCode())
- JIT::compile(ARG_globalData, newCodeBlock);
-
- return newCodeBlock;
-}
-
-VoidPtrPair Interpreter::cti_op_call_arityCheck(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- CodeBlock* newCodeBlock = ARG_codeBlock4;
- int argCount = ARG_int3;
-
- ASSERT(argCount != newCodeBlock->m_numParameters);
-
- CallFrame* oldCallFrame = callFrame->callerFrame();
-
- if (argCount > newCodeBlock->m_numParameters) {
- size_t numParameters = newCodeBlock->m_numParameters;
- Register* r = callFrame->registers() + numParameters;
-
- Register* argv = r - RegisterFile::CallFrameHeaderSize - numParameters - argCount;
- for (size_t i = 0; i < numParameters; ++i)
- argv[i + argCount] = argv[i];
-
- callFrame = CallFrame::create(r);
- callFrame->setCallerFrame(oldCallFrame);
- } else {
- size_t omittedArgCount = newCodeBlock->m_numParameters - argCount;
- Register* r = callFrame->registers() + omittedArgCount;
- Register* newEnd = r + newCodeBlock->m_numCalleeRegisters;
- if (!ARG_registerFile->grow(newEnd)) {
- // Rewind to the previous call frame because op_call already optimistically
- // moved the call frame forward.
- ARG_setCallFrame(oldCallFrame);
- throwStackOverflowError(oldCallFrame, ARG_globalData, ARG_returnAddress2, STUB_RETURN_ADDRESS);
- RETURN_PAIR(0, 0);
- }
-
- Register* argv = r - RegisterFile::CallFrameHeaderSize - omittedArgCount;
- for (size_t i = 0; i < omittedArgCount; ++i)
- argv[i] = jsUndefined();
-
- callFrame = CallFrame::create(r);
- callFrame->setCallerFrame(oldCallFrame);
- }
-
- RETURN_PAIR(newCodeBlock, callFrame);
-}
-
-void* Interpreter::cti_vm_dontLazyLinkCall(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSFunction* callee = asFunction(ARG_src1);
- CodeBlock* codeBlock = &callee->body()->bytecode(callee->m_scopeChain.node());
- if (!codeBlock->jitCode())
- JIT::compile(ARG_globalData, codeBlock);
-
- ctiPatchCallByReturnAddress(ARG_returnAddress2, ARG_globalData->interpreter->m_ctiVirtualCallLink);
-
- return codeBlock->jitCode();
-}
-
-void* Interpreter::cti_vm_lazyLinkCall(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSFunction* callee = asFunction(ARG_src1);
- CodeBlock* codeBlock = &callee->body()->bytecode(callee->m_scopeChain.node());
- if (!codeBlock->jitCode())
- JIT::compile(ARG_globalData, codeBlock);
-
- CallLinkInfo* callLinkInfo = &ARG_callFrame->callerFrame()->codeBlock()->getCallLinkInfo(ARG_returnAddress2);
- JIT::linkCall(callee, codeBlock, codeBlock->jitCode(), callLinkInfo, ARG_int3);
-
- return codeBlock->jitCode();
-}
-
-JSObject* Interpreter::cti_op_push_activation(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSActivation* activation = new (ARG_globalData) JSActivation(ARG_callFrame, static_cast<FunctionBodyNode*>(ARG_callFrame->codeBlock()->ownerNode()));
- ARG_callFrame->setScopeChain(ARG_callFrame->scopeChain()->copy()->push(activation));
- return activation;
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_call_NotJSFunction(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr funcVal = ARG_src1;
-
- CallData callData;
- CallType callType = funcVal->getCallData(callData);
-
- ASSERT(callType != CallTypeJS);
-
- if (callType == CallTypeHost) {
- int registerOffset = ARG_int2;
- int argCount = ARG_int3;
- CallFrame* previousCallFrame = ARG_callFrame;
- CallFrame* callFrame = CallFrame::create(previousCallFrame->registers() + registerOffset);
-
- callFrame->init(0, static_cast<Instruction*>(STUB_RETURN_ADDRESS), previousCallFrame->scopeChain(), previousCallFrame, 0, argCount, 0);
- ARG_setCallFrame(callFrame);
-
- Register* argv = ARG_callFrame->registers() - RegisterFile::CallFrameHeaderSize - argCount;
- ArgList argList(argv + 1, argCount - 1);
-
- JSValuePtr returnValue;
- {
- SamplingTool::HostCallRecord callRecord(CTI_SAMPLER);
-
- // FIXME: All host methods should be calling toThisObject, but this is not presently the case.
- JSValuePtr thisValue = argv[0].jsValue(callFrame);
- if (thisValue == jsNull())
- thisValue = callFrame->globalThisValue();
-
- returnValue = callData.native.function(callFrame, asObject(funcVal), thisValue, argList);
- }
- ARG_setCallFrame(previousCallFrame);
- CHECK_FOR_EXCEPTION();
-
- return JSValuePtr::encode(returnValue);
- }
-
- ASSERT(callType == CallTypeNone);
-
- CodeBlock* codeBlock = ARG_callFrame->codeBlock();
- unsigned vPCIndex = codeBlock->getBytecodeIndex(STUB_RETURN_ADDRESS);
- ARG_globalData->exception = createNotAFunctionError(ARG_callFrame, funcVal, vPCIndex, codeBlock);
- VM_THROW_EXCEPTION();
-}
-
-void Interpreter::cti_op_create_arguments(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- Arguments* arguments = new (ARG_globalData) Arguments(ARG_callFrame);
- ARG_callFrame->setCalleeArguments(arguments);
- ARG_callFrame[RegisterFile::ArgumentsRegister] = arguments;
-}
-
-void Interpreter::cti_op_create_arguments_no_params(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- Arguments* arguments = new (ARG_globalData) Arguments(ARG_callFrame, Arguments::NoParameters);
- ARG_callFrame->setCalleeArguments(arguments);
- ARG_callFrame[RegisterFile::ArgumentsRegister] = arguments;
-}
-
-void Interpreter::cti_op_tear_off_activation(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- ASSERT(ARG_callFrame->codeBlock()->needsFullScopeChain());
- asActivation(ARG_src1)->copyRegisters(ARG_callFrame->optionalCalleeArguments());
-}
-
-void Interpreter::cti_op_tear_off_arguments(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- ASSERT(ARG_callFrame->codeBlock()->usesArguments() && !ARG_callFrame->codeBlock()->needsFullScopeChain());
- ARG_callFrame->optionalCalleeArguments()->copyRegisters();
-}
-
-void Interpreter::cti_op_profile_will_call(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- ASSERT(*ARG_profilerReference);
- (*ARG_profilerReference)->willExecute(ARG_callFrame, ARG_src1);
-}
-
-void Interpreter::cti_op_profile_did_call(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- ASSERT(*ARG_profilerReference);
- (*ARG_profilerReference)->didExecute(ARG_callFrame, ARG_src1);
-}
-
-void Interpreter::cti_op_ret_scopeChain(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- ASSERT(ARG_callFrame->codeBlock()->needsFullScopeChain());
- ARG_callFrame->scopeChain()->deref();
-}
-
-JSObject* Interpreter::cti_op_new_array(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- ArgList argList(&ARG_callFrame->registers()[ARG_int1], ARG_int2);
- return constructArray(ARG_callFrame, argList);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_resolve(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- ScopeChainNode* scopeChain = callFrame->scopeChain();
-
- ScopeChainIterator iter = scopeChain->begin();
- ScopeChainIterator end = scopeChain->end();
- ASSERT(iter != end);
-
- Identifier& ident = *ARG_id1;
- do {
- JSObject* o = *iter;
- PropertySlot slot(o);
- if (o->getPropertySlot(callFrame, ident, slot)) {
- JSValuePtr result = slot.getValue(callFrame, ident);
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
- }
- } while (++iter != end);
-
- CodeBlock* codeBlock = callFrame->codeBlock();
- unsigned vPCIndex = codeBlock->getBytecodeIndex(STUB_RETURN_ADDRESS);
- ARG_globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
- VM_THROW_EXCEPTION();
-}
-
-JSObject* Interpreter::cti_op_construct_JSConstruct(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
-#ifndef NDEBUG
- ConstructData constructData;
- ASSERT(asFunction(ARG_src1)->getConstructData(constructData) == ConstructTypeJS);
-#endif
-
- Structure* structure;
- if (ARG_src4->isObject())
- structure = asObject(ARG_src4)->inheritorID();
- else
- structure = asFunction(ARG_src1)->m_scopeChain.node()->globalObject()->emptyObjectStructure();
- return new (ARG_globalData) JSObject(structure);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_construct_NotJSConstruct(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
-
- JSValuePtr constrVal = ARG_src1;
- int argCount = ARG_int3;
- int thisRegister = ARG_int5;
-
- ConstructData constructData;
- ConstructType constructType = constrVal->getConstructData(constructData);
-
- if (constructType == ConstructTypeHost) {
- ArgList argList(callFrame->registers() + thisRegister + 1, argCount - 1);
-
- JSValuePtr returnValue;
- {
- SamplingTool::HostCallRecord callRecord(CTI_SAMPLER);
- returnValue = constructData.native.function(callFrame, asObject(constrVal), argList);
- }
- CHECK_FOR_EXCEPTION();
-
- return JSValuePtr::encode(returnValue);
- }
-
- ASSERT(constructType == ConstructTypeNone);
-
- CodeBlock* codeBlock = callFrame->codeBlock();
- unsigned vPCIndex = codeBlock->getBytecodeIndex(STUB_RETURN_ADDRESS);
- ARG_globalData->exception = createNotAConstructorError(callFrame, constrVal, vPCIndex, codeBlock);
- VM_THROW_EXCEPTION();
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_get_by_val(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- Interpreter* interpreter = ARG_globalData->interpreter;
-
- JSValuePtr baseValue = ARG_src1;
- JSValuePtr subscript = ARG_src2;
-
- JSValuePtr result;
- unsigned i;
-
- bool isUInt32 = JSImmediate::getUInt32(subscript, i);
- if (LIKELY(isUInt32)) {
- if (interpreter->isJSArray(baseValue)) {
- JSArray* jsArray = asArray(baseValue);
- if (jsArray->canGetIndex(i))
- result = jsArray->getIndex(i);
- else
- result = jsArray->JSArray::get(callFrame, i);
- } else if (interpreter->isJSString(baseValue) && asString(baseValue)->canGetIndex(i))
- return JSValuePtr::encode(asString(baseValue)->getIndex(ARG_globalData, i));
- else if (interpreter->isJSByteArray(baseValue) && asByteArray(baseValue)->canAccessIndex(i))
- return JSValuePtr::encode(asByteArray(baseValue)->getIndex(i));
- else
- result = baseValue->get(callFrame, i);
- } else {
- Identifier property(callFrame, subscript->toString(callFrame));
- result = baseValue->get(callFrame, property);
- }
-
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-VoidPtrPair Interpreter::cti_op_resolve_func(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- ScopeChainNode* scopeChain = callFrame->scopeChain();
-
- ScopeChainIterator iter = scopeChain->begin();
- ScopeChainIterator end = scopeChain->end();
-
- // FIXME: add scopeDepthIsZero optimization
-
- ASSERT(iter != end);
-
- Identifier& ident = *ARG_id1;
- JSObject* base;
- do {
- base = *iter;
- PropertySlot slot(base);
- if (base->getPropertySlot(callFrame, ident, slot)) {
- // ECMA 11.2.3 says that if we hit an activation the this value should be null.
- // However, section 10.2.3 says that in the case where the value provided
- // by the caller is null, the global object should be used. It also says
- // that the section does not apply to internal functions, but for simplicity
- // of implementation we use the global object anyway here. This guarantees
- // that in host objects you always get a valid object for this.
- // We also handle wrapper substitution for the global object at the same time.
- JSObject* thisObj = base->toThisObject(callFrame);
- JSValuePtr result = slot.getValue(callFrame, ident);
- CHECK_FOR_EXCEPTION_AT_END();
-
- RETURN_PAIR(thisObj, JSValuePtr::encode(result));
- }
- ++iter;
- } while (iter != end);
-
- CodeBlock* codeBlock = callFrame->codeBlock();
- unsigned vPCIndex = codeBlock->getBytecodeIndex(STUB_RETURN_ADDRESS);
- ARG_globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
- VM_THROW_EXCEPTION_2();
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_sub(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
-
- double left;
- double right;
- if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
- return JSValuePtr::encode(jsNumber(ARG_globalData, left - right));
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) - src2->toNumber(callFrame));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-void Interpreter::cti_op_put_by_val(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- Interpreter* interpreter = ARG_globalData->interpreter;
-
- JSValuePtr baseValue = ARG_src1;
- JSValuePtr subscript = ARG_src2;
- JSValuePtr value = ARG_src3;
-
- unsigned i;
-
- bool isUInt32 = JSImmediate::getUInt32(subscript, i);
- if (LIKELY(isUInt32)) {
- if (interpreter->isJSArray(baseValue)) {
- JSArray* jsArray = asArray(baseValue);
- if (jsArray->canSetIndex(i))
- jsArray->setIndex(i, value);
- else
- jsArray->JSArray::put(callFrame, i, value);
- } else if (interpreter->isJSByteArray(baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
- JSByteArray* jsByteArray = asByteArray(baseValue);
- double dValue = 0;
- if (JSImmediate::isNumber(value)) {
- jsByteArray->setIndex(i, JSImmediate::getTruncatedInt32(value));
- return;
- } else if (fastIsNumber(value, dValue)) {
- jsByteArray->setIndex(i, dValue);
- return;
- } else
- baseValue->put(callFrame, i, value);
- } else
- baseValue->put(callFrame, i, value);
- } else {
- Identifier property(callFrame, subscript->toString(callFrame));
- if (!ARG_globalData->exception) { // Don't put to an object if toString threw an exception.
- PutPropertySlot slot;
- baseValue->put(callFrame, property, value, slot);
- }
- }
-
- CHECK_FOR_EXCEPTION_AT_END();
-}
-
-void Interpreter::cti_op_put_by_val_array(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
-
- JSValuePtr baseValue = ARG_src1;
- int i = ARG_int2;
- JSValuePtr value = ARG_src3;
-
- ASSERT(ARG_globalData->interpreter->isJSArray(baseValue));
-
- if (LIKELY(i >= 0))
- asArray(baseValue)->JSArray::put(callFrame, i, value);
- else {
- Identifier property(callFrame, JSImmediate::from(i)->toString(callFrame));
- // FIXME: can toString throw an exception here?
- if (!ARG_globalData->exception) { // Don't put to an object if toString threw an exception.
- PutPropertySlot slot;
- baseValue->put(callFrame, property, value, slot);
- }
- }
-
- CHECK_FOR_EXCEPTION_AT_END();
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_lesseq(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsBoolean(jsLessEq(callFrame, ARG_src1, ARG_src2));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-int Interpreter::cti_op_loop_if_true(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
-
- CallFrame* callFrame = ARG_callFrame;
-
- bool result = src1->toBoolean(callFrame);
- CHECK_FOR_EXCEPTION_AT_END();
- return result;
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_negate(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src = ARG_src1;
-
- double v;
- if (fastIsNumber(src, v))
- return JSValuePtr::encode(jsNumber(ARG_globalData, -v));
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsNumber(ARG_globalData, -src->toNumber(callFrame));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_resolve_base(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return JSValuePtr::encode(inlineResolveBase(ARG_callFrame, *ARG_id1, ARG_callFrame->scopeChain()));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_resolve_skip(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- ScopeChainNode* scopeChain = callFrame->scopeChain();
-
- int skip = ARG_int2;
-
- ScopeChainIterator iter = scopeChain->begin();
- ScopeChainIterator end = scopeChain->end();
- ASSERT(iter != end);
- while (skip--) {
- ++iter;
- ASSERT(iter != end);
- }
- Identifier& ident = *ARG_id1;
- do {
- JSObject* o = *iter;
- PropertySlot slot(o);
- if (o->getPropertySlot(callFrame, ident, slot)) {
- JSValuePtr result = slot.getValue(callFrame, ident);
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
- }
- } while (++iter != end);
-
- CodeBlock* codeBlock = callFrame->codeBlock();
- unsigned vPCIndex = codeBlock->getBytecodeIndex(STUB_RETURN_ADDRESS);
- ARG_globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
- VM_THROW_EXCEPTION();
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_resolve_global(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- JSGlobalObject* globalObject = asGlobalObject(ARG_src1);
- Identifier& ident = *ARG_id2;
- unsigned globalResolveInfoIndex = ARG_int3;
- ASSERT(globalObject->isGlobalObject());
-
- PropertySlot slot(globalObject);
- if (globalObject->getPropertySlot(callFrame, ident, slot)) {
- JSValuePtr result = slot.getValue(callFrame, ident);
- if (slot.isCacheable() && !globalObject->structure()->isDictionary()) {
- GlobalResolveInfo& globalResolveInfo = callFrame->codeBlock()->globalResolveInfo(globalResolveInfoIndex);
- if (globalResolveInfo.structure)
- globalResolveInfo.structure->deref();
- globalObject->structure()->ref();
- globalResolveInfo.structure = globalObject->structure();
- globalResolveInfo.offset = slot.cachedOffset();
- return JSValuePtr::encode(result);
- }
-
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
- }
-
- unsigned vPCIndex = ARG_callFrame->codeBlock()->getBytecodeIndex(STUB_RETURN_ADDRESS);
- ARG_globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, callFrame->codeBlock());
- VM_THROW_EXCEPTION();
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_div(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
-
- double left;
- double right;
- if (fastIsNumber(src1, left) && fastIsNumber(src2, right))
- return JSValuePtr::encode(jsNumber(ARG_globalData, left / right));
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) / src2->toNumber(callFrame));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_pre_dec(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr v = ARG_src1;
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsNumber(ARG_globalData, v->toNumber(callFrame) - 1);
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-int Interpreter::cti_op_jless(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
- CallFrame* callFrame = ARG_callFrame;
-
- bool result = jsLess(callFrame, src1, src2);
- CHECK_FOR_EXCEPTION_AT_END();
- return result;
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_not(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src = ARG_src1;
-
- CallFrame* callFrame = ARG_callFrame;
-
- JSValuePtr result = jsBoolean(!src->toBoolean(callFrame));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-int Interpreter::cti_op_jtrue(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
-
- CallFrame* callFrame = ARG_callFrame;
-
- bool result = src1->toBoolean(callFrame);
- CHECK_FOR_EXCEPTION_AT_END();
- return result;
-}
-
-VoidPtrPair Interpreter::cti_op_post_inc(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr v = ARG_src1;
-
- CallFrame* callFrame = ARG_callFrame;
-
- JSValuePtr number = v->toJSNumber(callFrame);
- CHECK_FOR_EXCEPTION_AT_END();
-
- RETURN_PAIR(JSValuePtr::encode(number), JSValuePtr::encode(jsNumber(ARG_globalData, number->uncheckedGetNumber() + 1)));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_eq(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
-
- CallFrame* callFrame = ARG_callFrame;
-
- ASSERT(!JSImmediate::areBothImmediateNumbers(src1, src2));
- JSValuePtr result = jsBoolean(equalSlowCaseInline(callFrame, src1, src2));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_lshift(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr val = ARG_src1;
- JSValuePtr shift = ARG_src2;
-
- int32_t left;
- uint32_t right;
- if (JSImmediate::areBothImmediateNumbers(val, shift))
- return JSValuePtr::encode(jsNumber(ARG_globalData, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f)));
- if (fastToInt32(val, left) && fastToUInt32(shift, right))
- return JSValuePtr::encode(jsNumber(ARG_globalData, left << (right & 0x1f)));
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsNumber(ARG_globalData, (val->toInt32(callFrame)) << (shift->toUInt32(callFrame) & 0x1f));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_bitand(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
-
- int32_t left;
- int32_t right;
- if (fastToInt32(src1, left) && fastToInt32(src2, right))
- return JSValuePtr::encode(jsNumber(ARG_globalData, left & right));
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) & src2->toInt32(callFrame));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_rshift(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr val = ARG_src1;
- JSValuePtr shift = ARG_src2;
-
- int32_t left;
- uint32_t right;
- if (JSImmediate::areBothImmediateNumbers(val, shift))
- return JSValuePtr::encode(JSImmediate::rightShiftImmediateNumbers(val, shift));
- if (fastToInt32(val, left) && fastToUInt32(shift, right))
- return JSValuePtr::encode(jsNumber(ARG_globalData, left >> (right & 0x1f)));
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsNumber(ARG_globalData, (val->toInt32(callFrame)) >> (shift->toUInt32(callFrame) & 0x1f));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_bitnot(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src = ARG_src1;
-
- int value;
- if (fastToInt32(src, value))
- return JSValuePtr::encode(jsNumber(ARG_globalData, ~value));
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsNumber(ARG_globalData, ~src->toInt32(callFrame));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-VoidPtrPair Interpreter::cti_op_resolve_with_base(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- ScopeChainNode* scopeChain = callFrame->scopeChain();
-
- ScopeChainIterator iter = scopeChain->begin();
- ScopeChainIterator end = scopeChain->end();
-
- // FIXME: add scopeDepthIsZero optimization
-
- ASSERT(iter != end);
-
- Identifier& ident = *ARG_id1;
- JSObject* base;
- do {
- base = *iter;
- PropertySlot slot(base);
- if (base->getPropertySlot(callFrame, ident, slot)) {
- JSValuePtr result = slot.getValue(callFrame, ident);
- CHECK_FOR_EXCEPTION_AT_END();
-
- RETURN_PAIR(base, JSValuePtr::encode(result));
- }
- ++iter;
- } while (iter != end);
-
- CodeBlock* codeBlock = callFrame->codeBlock();
- unsigned vPCIndex = codeBlock->getBytecodeIndex(STUB_RETURN_ADDRESS);
- ARG_globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
- VM_THROW_EXCEPTION_2();
-}
-
-JSObject* Interpreter::cti_op_new_func_exp(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return ARG_funcexp1->makeFunction(ARG_callFrame, ARG_callFrame->scopeChain());
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_mod(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr dividendValue = ARG_src1;
- JSValuePtr divisorValue = ARG_src2;
-
- CallFrame* callFrame = ARG_callFrame;
- double d = dividendValue->toNumber(callFrame);
- JSValuePtr result = jsNumber(ARG_globalData, fmod(d, divisorValue->toNumber(callFrame)));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_less(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsBoolean(jsLess(callFrame, ARG_src1, ARG_src2));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_neq(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
-
- ASSERT(!JSImmediate::areBothImmediateNumbers(src1, src2));
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr result = jsBoolean(!equalSlowCaseInline(callFrame, src1, src2));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-VoidPtrPair Interpreter::cti_op_post_dec(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr v = ARG_src1;
-
- CallFrame* callFrame = ARG_callFrame;
-
- JSValuePtr number = v->toJSNumber(callFrame);
- CHECK_FOR_EXCEPTION_AT_END();
-
- RETURN_PAIR(JSValuePtr::encode(number), JSValuePtr::encode(jsNumber(ARG_globalData, number->uncheckedGetNumber() - 1)));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_urshift(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr val = ARG_src1;
- JSValuePtr shift = ARG_src2;
-
- CallFrame* callFrame = ARG_callFrame;
-
- if (JSImmediate::areBothImmediateNumbers(val, shift) && !JSImmediate::isNegative(val))
- return JSValuePtr::encode(JSImmediate::rightShiftImmediateNumbers(val, shift));
- else {
- JSValuePtr result = jsNumber(ARG_globalData, (val->toUInt32(callFrame)) >> (shift->toUInt32(callFrame) & 0x1f));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
- }
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_bitxor(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
-
- CallFrame* callFrame = ARG_callFrame;
-
- JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) ^ src2->toInt32(callFrame));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSObject* Interpreter::cti_op_new_regexp(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return new (ARG_globalData) RegExpObject(ARG_callFrame->lexicalGlobalObject()->regExpStructure(), ARG_regexp1);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_bitor(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
-
- CallFrame* callFrame = ARG_callFrame;
-
- JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) | src2->toInt32(callFrame));
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_call_eval(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- RegisterFile* registerFile = ARG_registerFile;
-
- Interpreter* interpreter = ARG_globalData->interpreter;
-
- JSValuePtr funcVal = ARG_src1;
- int registerOffset = ARG_int2;
- int argCount = ARG_int3;
-
- Register* newCallFrame = callFrame->registers() + registerOffset;
- Register* argv = newCallFrame - RegisterFile::CallFrameHeaderSize - argCount;
- JSValuePtr thisValue = argv[0].jsValue(callFrame);
- JSGlobalObject* globalObject = callFrame->scopeChain()->globalObject();
-
- if (thisValue == globalObject && funcVal == globalObject->evalFunction()) {
- JSValuePtr exceptionValue = noValue();
- JSValuePtr result = interpreter->callEval(callFrame, registerFile, argv, argCount, registerOffset, exceptionValue);
- if (UNLIKELY(exceptionValue != noValue())) {
- ARG_globalData->exception = exceptionValue;
- VM_THROW_EXCEPTION_AT_END();
- }
- return JSValuePtr::encode(result);
- }
-
- return JSValuePtr::encode(JSImmediate::impossibleValue());
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_throw(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- CodeBlock* codeBlock = callFrame->codeBlock();
-
- unsigned vPCIndex = codeBlock->getBytecodeIndex(STUB_RETURN_ADDRESS);
-
- JSValuePtr exceptionValue = ARG_src1;
- ASSERT(exceptionValue);
-
- HandlerInfo* handler = ARG_globalData->interpreter->throwException(callFrame, exceptionValue, vPCIndex, true);
-
- if (!handler) {
- *ARG_exception = exceptionValue;
- return JSValuePtr::encode(JSImmediate::nullImmediate());
- }
-
- ARG_setCallFrame(callFrame);
- void* catchRoutine = handler->nativeCode;
- ASSERT(catchRoutine);
- STUB_SET_RETURN_ADDRESS(catchRoutine);
- return JSValuePtr::encode(exceptionValue);
-}
-
-JSPropertyNameIterator* Interpreter::cti_op_get_pnames(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return JSPropertyNameIterator::create(ARG_callFrame, ARG_src1);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_next_pname(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSPropertyNameIterator* it = ARG_pni1;
- JSValuePtr temp = it->next(ARG_callFrame);
- if (!temp)
- it->invalidate();
- return JSValuePtr::encode(temp);
-}
-
-JSObject* Interpreter::cti_op_push_scope(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSObject* o = ARG_src1->toObject(ARG_callFrame);
- CHECK_FOR_EXCEPTION();
- ARG_callFrame->setScopeChain(ARG_callFrame->scopeChain()->push(o));
- return o;
-}
-
-void Interpreter::cti_op_pop_scope(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- ARG_callFrame->setScopeChain(ARG_callFrame->scopeChain()->pop());
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_typeof(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return JSValuePtr::encode(jsTypeStringForValue(ARG_callFrame, ARG_src1));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_is_undefined(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr v = ARG_src1;
- return JSValuePtr::encode(jsBoolean(JSImmediate::isImmediate(v) ? v->isUndefined() : v->asCell()->structure()->typeInfo().masqueradesAsUndefined()));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_is_boolean(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return JSValuePtr::encode(jsBoolean(ARG_src1->isBoolean()));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_is_number(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return JSValuePtr::encode(jsBoolean(ARG_src1->isNumber()));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_is_string(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return JSValuePtr::encode(jsBoolean(ARG_globalData->interpreter->isJSString(ARG_src1)));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_is_object(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return JSValuePtr::encode(jsBoolean(jsIsObjectType(ARG_src1)));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_is_function(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- return JSValuePtr::encode(jsBoolean(jsIsFunctionType(ARG_src1)));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_stricteq(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
-
- // handled inline as fast cases
- ASSERT(!JSImmediate::areBothImmediate(src1, src2));
- ASSERT(!(JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate())));
-
- return JSValuePtr::encode(jsBoolean(strictEqualSlowCaseInline(src1, src2)));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_nstricteq(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src1 = ARG_src1;
- JSValuePtr src2 = ARG_src2;
-
- // handled inline as fast cases
- ASSERT(!JSImmediate::areBothImmediate(src1, src2));
- ASSERT(!(JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate())));
-
- return JSValuePtr::encode(jsBoolean(!strictEqualSlowCaseInline(src1, src2)));
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_to_jsnumber(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr src = ARG_src1;
- CallFrame* callFrame = ARG_callFrame;
-
- JSValuePtr result = src->toJSNumber(callFrame);
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_in(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- JSValuePtr baseVal = ARG_src2;
-
- if (!baseVal->isObject()) {
- CallFrame* callFrame = ARG_callFrame;
- CodeBlock* codeBlock = callFrame->codeBlock();
- unsigned vPCIndex = codeBlock->getBytecodeIndex(STUB_RETURN_ADDRESS);
- ARG_globalData->exception = createInvalidParamError(callFrame, "in", baseVal, vPCIndex, codeBlock);
- VM_THROW_EXCEPTION();
- }
-
- JSValuePtr propName = ARG_src1;
- JSObject* baseObj = asObject(baseVal);
-
- uint32_t i;
- if (propName->getUInt32(i))
- return JSValuePtr::encode(jsBoolean(baseObj->hasProperty(callFrame, i)));
-
- Identifier property(callFrame, propName->toString(callFrame));
- CHECK_FOR_EXCEPTION();
- return JSValuePtr::encode(jsBoolean(baseObj->hasProperty(callFrame, property)));
-}
-
-JSObject* Interpreter::cti_op_push_new_scope(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSObject* scope = new (ARG_globalData) JSStaticScopeObject(ARG_callFrame, *ARG_id1, ARG_src2, DontDelete);
-
- CallFrame* callFrame = ARG_callFrame;
- callFrame->setScopeChain(callFrame->scopeChain()->push(scope));
- return scope;
-}
-
-void Interpreter::cti_op_jmp_scopes(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- unsigned count = ARG_int1;
- CallFrame* callFrame = ARG_callFrame;
-
- ScopeChainNode* tmp = callFrame->scopeChain();
- while (count--)
- tmp = tmp->pop();
- callFrame->setScopeChain(tmp);
-}
-
-void Interpreter::cti_op_put_by_index(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- unsigned property = ARG_int2;
-
- ARG_src1->put(callFrame, property, ARG_src3);
-}
-
-void* Interpreter::cti_op_switch_imm(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr scrutinee = ARG_src1;
- unsigned tableIndex = ARG_int2;
- CallFrame* callFrame = ARG_callFrame;
- CodeBlock* codeBlock = callFrame->codeBlock();
-
- if (JSImmediate::isNumber(scrutinee)) {
- int32_t value = JSImmediate::getTruncatedInt32(scrutinee);
- return codeBlock->immediateSwitchJumpTable(tableIndex).ctiForValue(value);
- }
-
- return codeBlock->immediateSwitchJumpTable(tableIndex).ctiDefault;
-}
-
-void* Interpreter::cti_op_switch_char(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr scrutinee = ARG_src1;
- unsigned tableIndex = ARG_int2;
- CallFrame* callFrame = ARG_callFrame;
- CodeBlock* codeBlock = callFrame->codeBlock();
-
- void* result = codeBlock->characterSwitchJumpTable(tableIndex).ctiDefault;
-
- if (scrutinee->isString()) {
- UString::Rep* value = asString(scrutinee)->value().rep();
- if (value->size() == 1)
- result = codeBlock->characterSwitchJumpTable(tableIndex).ctiForValue(value->data()[0]);
- }
-
- return result;
-}
-
-void* Interpreter::cti_op_switch_string(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- JSValuePtr scrutinee = ARG_src1;
- unsigned tableIndex = ARG_int2;
- CallFrame* callFrame = ARG_callFrame;
- CodeBlock* codeBlock = callFrame->codeBlock();
-
- void* result = codeBlock->stringSwitchJumpTable(tableIndex).ctiDefault;
-
- if (scrutinee->isString()) {
- UString::Rep* value = asString(scrutinee)->value().rep();
- result = codeBlock->stringSwitchJumpTable(tableIndex).ctiForValue(value);
- }
-
- return result;
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_op_del_by_val(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
-
- JSValuePtr baseValue = ARG_src1;
- JSObject* baseObj = baseValue->toObject(callFrame); // may throw
-
- JSValuePtr subscript = ARG_src2;
- JSValuePtr result;
- uint32_t i;
- if (subscript->getUInt32(i))
- result = jsBoolean(baseObj->deleteProperty(callFrame, i));
- else {
- CHECK_FOR_EXCEPTION();
- Identifier property(callFrame, subscript->toString(callFrame));
- CHECK_FOR_EXCEPTION();
- result = jsBoolean(baseObj->deleteProperty(callFrame, property));
- }
-
- CHECK_FOR_EXCEPTION_AT_END();
- return JSValuePtr::encode(result);
-}
-
-void Interpreter::cti_op_put_getter(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
-
- ASSERT(ARG_src1->isObject());
- JSObject* baseObj = asObject(ARG_src1);
- ASSERT(ARG_src3->isObject());
- baseObj->defineGetter(callFrame, *ARG_id2, asObject(ARG_src3));
-}
-
-void Interpreter::cti_op_put_setter(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
-
- ASSERT(ARG_src1->isObject());
- JSObject* baseObj = asObject(ARG_src1);
- ASSERT(ARG_src3->isObject());
- baseObj->defineSetter(callFrame, *ARG_id2, asObject(ARG_src3));
-}
-
-JSObject* Interpreter::cti_op_new_error(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- CodeBlock* codeBlock = callFrame->codeBlock();
- unsigned type = ARG_int1;
- JSValuePtr message = ARG_src2;
- unsigned bytecodeOffset = ARG_int3;
-
- unsigned lineNumber = codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset);
- return Error::create(callFrame, static_cast<ErrorType>(type), message->toString(callFrame), lineNumber, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL());
-}
-
-void Interpreter::cti_op_debug(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
-
- int debugHookID = ARG_int1;
- int firstLine = ARG_int2;
- int lastLine = ARG_int3;
-
- ARG_globalData->interpreter->debug(callFrame, static_cast<DebugHookID>(debugHookID), firstLine, lastLine);
-}
-
-JSValueEncodedAsPointer* Interpreter::cti_vm_throw(STUB_ARGS)
-{
- BEGIN_STUB_FUNCTION();
-
- CallFrame* callFrame = ARG_callFrame;
- CodeBlock* codeBlock = callFrame->codeBlock();
- JSGlobalData* globalData = ARG_globalData;
-
- unsigned vPCIndex = codeBlock->getBytecodeIndex(globalData->exceptionLocation);
-
- JSValuePtr exceptionValue = globalData->exception;
- ASSERT(exceptionValue);
- globalData->exception = noValue();
-
- HandlerInfo* handler = globalData->interpreter->throwException(callFrame, exceptionValue, vPCIndex, false);
-
- if (!handler) {
- *ARG_exception = exceptionValue;
- return JSValuePtr::encode(JSImmediate::nullImmediate());
- }
-
- ARG_setCallFrame(callFrame);
- void* catchRoutine = handler->nativeCode;
- ASSERT(catchRoutine);
- STUB_SET_RETURN_ADDRESS(catchRoutine);
- return JSValuePtr::encode(exceptionValue);
-}
-
-#undef STUB_RETURN_ADDRESS
-#undef STUB_SET_RETURN_ADDRESS
-#undef BEGIN_STUB_FUNCTION
-#undef CHECK_FOR_EXCEPTION
-#undef CHECK_FOR_EXCEPTION_AT_END
-#undef CHECK_FOR_EXCEPTION_VOID
-#undef VM_THROW_EXCEPTION
-#undef VM_THROW_EXCEPTION_2
-#undef VM_THROW_EXCEPTION_AT_END
-
-#endif // ENABLE(JIT)
-
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.h
index 26d6732..7cab254 100644
--- a/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.h
+++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.h
@@ -30,11 +30,13 @@
#define Interpreter_h
#include "ArgList.h"
+#include "FastAllocBase.h"
+#include "HashMap.h"
#include "JSCell.h"
#include "JSValue.h"
+#include "JSObject.h"
#include "Opcode.h"
#include "RegisterFile.h"
-#include <wtf/HashMap.h>
namespace JSC {
@@ -50,54 +52,9 @@ namespace JSC {
class Register;
class ScopeChainNode;
class SamplingTool;
+ struct CallFrameClosure;
struct HandlerInfo;
-#if ENABLE(JIT)
-
-#if USE(JIT_STUB_ARGUMENT_VA_LIST)
- #define STUB_ARGS void* args, ...
- #define ARGS (reinterpret_cast<void**>(vl_args) - 1)
-#else // JIT_STUB_ARGUMENT_REGISTER or JIT_STUB_ARGUMENT_STACK
- #define STUB_ARGS void** args
- #define ARGS (args)
-#endif
-
-#if USE(JIT_STUB_ARGUMENT_REGISTER)
- #if PLATFORM(X86_64)
- #define JIT_STUB
- #elif COMPILER(MSVC)
- #define JIT_STUB __fastcall
- #elif COMPILER(GCC)
- #define JIT_STUB __attribute__ ((fastcall))
- #else
- #error Need to support register calling convention in this compiler
- #endif
-#else // JIT_STUB_ARGUMENT_VA_LIST or JIT_STUB_ARGUMENT_STACK
- #if COMPILER(MSVC)
- #define JIT_STUB __cdecl
- #else
- #define JIT_STUB
- #endif
-#endif
-
-// The Mac compilers are fine with this,
-#if PLATFORM(MAC)
- struct VoidPtrPair {
- void* first;
- void* second;
- };
-#define RETURN_PAIR(a,b) VoidPtrPair pair = { a, b }; return pair
-#else
- typedef uint64_t VoidPtrPair;
- union VoidPtrPairValue {
- struct { void* first; void* second; } s;
- VoidPtrPair i;
- };
-#define RETURN_PAIR(a,b) VoidPtrPairValue pair = {{ a, b }}; return pair.i
-#endif
-
-#endif // ENABLE(JIT)
-
enum DebugHookID {
WillExecuteProgram,
DidExecuteProgram,
@@ -107,16 +64,14 @@ namespace JSC {
WillExecuteStatement
};
- enum { MaxReentryDepth = 128 };
+ enum { MaxMainThreadReentryDepth = 256, MaxSecondaryThreadReentryDepth = 32 };
- class Interpreter {
+ class Interpreter : public WTF::FastAllocBase {
friend class JIT;
+ friend class CachedCall;
public:
Interpreter();
- ~Interpreter();
- void initialize(JSGlobalData*);
-
RegisterFile& registerFile() { return m_registerFile; }
Opcode getOpcode(OpcodeID id)
@@ -140,236 +95,72 @@ namespace JSC {
bool isOpcode(Opcode);
- JSValuePtr execute(ProgramNode*, CallFrame*, ScopeChainNode*, JSObject* thisObj, JSValuePtr* exception);
- JSValuePtr execute(FunctionBodyNode*, CallFrame*, JSFunction*, JSObject* thisObj, const ArgList& args, ScopeChainNode*, JSValuePtr* exception);
- JSValuePtr execute(EvalNode* evalNode, CallFrame* exec, JSObject* thisObj, ScopeChainNode* scopeChain, JSValuePtr* exception);
+ JSValue execute(ProgramNode*, CallFrame*, ScopeChainNode*, JSObject* thisObj, JSValue* exception);
+ JSValue execute(FunctionBodyNode*, CallFrame*, JSFunction*, JSObject* thisObj, const ArgList& args, ScopeChainNode*, JSValue* exception);
+ JSValue execute(EvalNode* evalNode, CallFrame* exec, JSObject* thisObj, ScopeChainNode* scopeChain, JSValue* exception);
- JSValuePtr retrieveArguments(CallFrame*, JSFunction*) const;
- JSValuePtr retrieveCaller(CallFrame*, InternalFunction*) const;
- void retrieveLastCaller(CallFrame*, int& lineNumber, intptr_t& sourceID, UString& sourceURL, JSValuePtr& function) const;
+ JSValue retrieveArguments(CallFrame*, JSFunction*) const;
+ JSValue retrieveCaller(CallFrame*, InternalFunction*) const;
+ void retrieveLastCaller(CallFrame*, int& lineNumber, intptr_t& sourceID, UString& sourceURL, JSValue& function) const;
void getArgumentsData(CallFrame*, JSFunction*&, ptrdiff_t& firstParameterIndex, Register*& argv, int& argc);
- void setTimeoutTime(unsigned timeoutTime) { m_timeoutTime = timeoutTime; }
- void startTimeoutCheck()
- {
- if (!m_timeoutCheckCount)
- resetTimeoutCheck();
-
- ++m_timeoutCheckCount;
- }
-
- void stopTimeoutCheck()
- {
- ASSERT(m_timeoutCheckCount);
- --m_timeoutCheckCount;
- }
-
- inline void initTimeout()
- {
- ASSERT(!m_timeoutCheckCount);
- resetTimeoutCheck();
- m_timeoutTime = 0;
- m_timeoutCheckCount = 0;
- }
-
void setSampler(SamplingTool* sampler) { m_sampler = sampler; }
SamplingTool* sampler() { return m_sampler; }
-#if ENABLE(JIT)
-
- static int JIT_STUB cti_timeout_check(STUB_ARGS);
- static void JIT_STUB cti_register_file_check(STUB_ARGS);
-
- static JSObject* JIT_STUB cti_op_convert_this(STUB_ARGS);
- static void JIT_STUB cti_op_end(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_add(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_pre_inc(STUB_ARGS);
- static int JIT_STUB cti_op_loop_if_less(STUB_ARGS);
- static int JIT_STUB cti_op_loop_if_lesseq(STUB_ARGS);
- static JSObject* JIT_STUB cti_op_new_object(STUB_ARGS);
- static void JIT_STUB cti_op_put_by_id(STUB_ARGS);
- static void JIT_STUB cti_op_put_by_id_second(STUB_ARGS);
- static void JIT_STUB cti_op_put_by_id_generic(STUB_ARGS);
- static void JIT_STUB cti_op_put_by_id_fail(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_get_by_id(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_get_by_id_second(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_get_by_id_generic(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_get_by_id_self_fail(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_get_by_id_proto_list(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_get_by_id_proto_list_full(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_get_by_id_proto_fail(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_get_by_id_array_fail(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_get_by_id_string_fail(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_del_by_id(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_instanceof(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_mul(STUB_ARGS);
- static JSObject* JIT_STUB cti_op_new_func(STUB_ARGS);
- static void* JIT_STUB cti_op_call_JSFunction(STUB_ARGS);
- static VoidPtrPair JIT_STUB cti_op_call_arityCheck(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_call_NotJSFunction(STUB_ARGS);
- static void JIT_STUB cti_op_create_arguments(STUB_ARGS);
- static void JIT_STUB cti_op_create_arguments_no_params(STUB_ARGS);
- static void JIT_STUB cti_op_tear_off_activation(STUB_ARGS);
- static void JIT_STUB cti_op_tear_off_arguments(STUB_ARGS);
- static void JIT_STUB cti_op_profile_will_call(STUB_ARGS);
- static void JIT_STUB cti_op_profile_did_call(STUB_ARGS);
- static void JIT_STUB cti_op_ret_scopeChain(STUB_ARGS);
- static JSObject* JIT_STUB cti_op_new_array(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_resolve(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_resolve_global(STUB_ARGS);
- static JSObject* JIT_STUB cti_op_construct_JSConstruct(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_construct_NotJSConstruct(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_get_by_val(STUB_ARGS);
- static VoidPtrPair JIT_STUB cti_op_resolve_func(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_sub(STUB_ARGS);
- static void JIT_STUB cti_op_put_by_val(STUB_ARGS);
- static void JIT_STUB cti_op_put_by_val_array(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_lesseq(STUB_ARGS);
- static int JIT_STUB cti_op_loop_if_true(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_resolve_base(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_negate(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_resolve_skip(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_div(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_pre_dec(STUB_ARGS);
- static int JIT_STUB cti_op_jless(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_not(STUB_ARGS);
- static int JIT_STUB cti_op_jtrue(STUB_ARGS);
- static VoidPtrPair JIT_STUB cti_op_post_inc(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_eq(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_lshift(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_bitand(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_rshift(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_bitnot(STUB_ARGS);
- static VoidPtrPair JIT_STUB cti_op_resolve_with_base(STUB_ARGS);
- static JSObject* JIT_STUB cti_op_new_func_exp(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_mod(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_less(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_neq(STUB_ARGS);
- static VoidPtrPair JIT_STUB cti_op_post_dec(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_urshift(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_bitxor(STUB_ARGS);
- static JSObject* JIT_STUB cti_op_new_regexp(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_bitor(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_call_eval(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_throw(STUB_ARGS);
- static JSPropertyNameIterator* JIT_STUB cti_op_get_pnames(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_next_pname(STUB_ARGS);
- static JSObject* JIT_STUB cti_op_push_scope(STUB_ARGS);
- static void JIT_STUB cti_op_pop_scope(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_typeof(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_is_undefined(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_is_boolean(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_is_number(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_is_string(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_is_object(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_is_function(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_stricteq(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_nstricteq(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_to_jsnumber(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_in(STUB_ARGS);
- static JSObject* JIT_STUB cti_op_push_new_scope(STUB_ARGS);
- static void JIT_STUB cti_op_jmp_scopes(STUB_ARGS);
- static void JIT_STUB cti_op_put_by_index(STUB_ARGS);
- static void* JIT_STUB cti_op_switch_imm(STUB_ARGS);
- static void* JIT_STUB cti_op_switch_char(STUB_ARGS);
- static void* JIT_STUB cti_op_switch_string(STUB_ARGS);
- static JSValueEncodedAsPointer* JIT_STUB cti_op_del_by_val(STUB_ARGS);
- static void JIT_STUB cti_op_put_getter(STUB_ARGS);
- static void JIT_STUB cti_op_put_setter(STUB_ARGS);
- static JSObject* JIT_STUB cti_op_new_error(STUB_ARGS);
- static void JIT_STUB cti_op_debug(STUB_ARGS);
-
- static JSValueEncodedAsPointer* JIT_STUB cti_vm_throw(STUB_ARGS);
- static void* JIT_STUB cti_vm_dontLazyLinkCall(STUB_ARGS);
- static void* JIT_STUB cti_vm_lazyLinkCall(STUB_ARGS);
- static JSObject* JIT_STUB cti_op_push_activation(STUB_ARGS);
-
-#endif // ENABLE(JIT)
-
- // Default number of ticks before a timeout check should be done.
- static const int initialTickCountThreshold = 1024;
-
- bool isJSArray(JSValuePtr v) { return !JSImmediate::isImmediate(v) && v->asCell()->vptr() == m_jsArrayVptr; }
- bool isJSString(JSValuePtr v) { return !JSImmediate::isImmediate(v) && v->asCell()->vptr() == m_jsStringVptr; }
- bool isJSByteArray(JSValuePtr v) { return !JSImmediate::isImmediate(v) && v->asCell()->vptr() == m_jsByteArrayVptr; }
+ NEVER_INLINE JSValue callEval(CallFrame*, RegisterFile*, Register* argv, int argc, int registerOffset, JSValue& exceptionValue);
+ NEVER_INLINE HandlerInfo* throwException(CallFrame*&, JSValue&, unsigned bytecodeOffset, bool);
+ NEVER_INLINE void debug(CallFrame*, DebugHookID, int firstLine, int lastLine);
private:
enum ExecutionFlag { Normal, InitializeAndReturn };
- NEVER_INLINE JSValuePtr callEval(CallFrame*, RegisterFile*, Register* argv, int argc, int registerOffset, JSValuePtr& exceptionValue);
- JSValuePtr execute(EvalNode*, CallFrame*, JSObject* thisObject, int globalRegisterOffset, ScopeChainNode*, JSValuePtr* exception);
+ CallFrameClosure prepareForRepeatCall(FunctionBodyNode*, CallFrame*, JSFunction*, int argCount, ScopeChainNode*, JSValue* exception);
+ void endRepeatCall(CallFrameClosure&);
+ JSValue execute(CallFrameClosure&, JSValue* exception);
- NEVER_INLINE void debug(CallFrame*, DebugHookID, int firstLine, int lastLine);
+ JSValue execute(EvalNode*, CallFrame*, JSObject* thisObject, int globalRegisterOffset, ScopeChainNode*, JSValue* exception);
- NEVER_INLINE bool resolve(CallFrame*, Instruction*, JSValuePtr& exceptionValue);
- NEVER_INLINE bool resolveSkip(CallFrame*, Instruction*, JSValuePtr& exceptionValue);
- NEVER_INLINE bool resolveGlobal(CallFrame*, Instruction*, JSValuePtr& exceptionValue);
+#if USE(INTERPRETER)
+ NEVER_INLINE bool resolve(CallFrame*, Instruction*, JSValue& exceptionValue);
+ NEVER_INLINE bool resolveSkip(CallFrame*, Instruction*, JSValue& exceptionValue);
+ NEVER_INLINE bool resolveGlobal(CallFrame*, Instruction*, JSValue& exceptionValue);
NEVER_INLINE void resolveBase(CallFrame*, Instruction* vPC);
- NEVER_INLINE bool resolveBaseAndProperty(CallFrame*, Instruction*, JSValuePtr& exceptionValue);
+ NEVER_INLINE bool resolveBaseAndProperty(CallFrame*, Instruction*, JSValue& exceptionValue);
+ NEVER_INLINE bool resolveBaseAndFunc(CallFrame*, Instruction*, JSValue& exceptionValue);
NEVER_INLINE ScopeChainNode* createExceptionScope(CallFrame*, const Instruction* vPC);
- NEVER_INLINE bool unwindCallFrame(CallFrame*&, JSValuePtr, unsigned& bytecodeOffset, CodeBlock*&);
- NEVER_INLINE HandlerInfo* throwException(CallFrame*&, JSValuePtr&, unsigned bytecodeOffset, bool);
- NEVER_INLINE bool resolveBaseAndFunc(CallFrame*, Instruction*, JSValuePtr& exceptionValue);
+ void tryCacheGetByID(CallFrame*, CodeBlock*, Instruction*, JSValue baseValue, const Identifier& propertyName, const PropertySlot&);
+ void uncacheGetByID(CodeBlock*, Instruction* vPC);
+ void tryCachePutByID(CallFrame*, CodeBlock*, Instruction*, JSValue baseValue, const PutPropertySlot&);
+ void uncachePutByID(CodeBlock*, Instruction* vPC);
+#endif
+
+ NEVER_INLINE bool unwindCallFrame(CallFrame*&, JSValue, unsigned& bytecodeOffset, CodeBlock*&);
static ALWAYS_INLINE CallFrame* slideRegisterWindowForCall(CodeBlock*, RegisterFile*, CallFrame*, size_t registerOffset, int argc);
static CallFrame* findFunctionCallFrame(CallFrame*, InternalFunction*);
- JSValuePtr privateExecute(ExecutionFlag, RegisterFile*, CallFrame*, JSValuePtr* exception);
+ JSValue privateExecute(ExecutionFlag, RegisterFile*, CallFrame*, JSValue* exception);
void dumpCallFrame(CallFrame*);
void dumpRegisters(CallFrame*);
-
- bool checkTimeout(JSGlobalObject*);
- void resetTimeoutCheck();
-
- void tryCacheGetByID(CallFrame*, CodeBlock*, Instruction*, JSValuePtr baseValue, const Identifier& propertyName, const PropertySlot&);
- void uncacheGetByID(CodeBlock*, Instruction* vPC);
- void tryCachePutByID(CallFrame*, CodeBlock*, Instruction*, JSValuePtr baseValue, const PutPropertySlot&);
- void uncachePutByID(CodeBlock*, Instruction* vPC);
bool isCallBytecode(Opcode opcode) { return opcode == getOpcode(op_call) || opcode == getOpcode(op_construct) || opcode == getOpcode(op_call_eval); }
-#if ENABLE(JIT)
- static void throwStackOverflowPreviousFrame(CallFrame**, JSGlobalData*, void*& returnAddress);
-
- void tryCTICacheGetByID(CallFrame*, CodeBlock*, void* returnAddress, JSValuePtr baseValue, const Identifier& propertyName, const PropertySlot&);
- void tryCTICachePutByID(CallFrame*, CodeBlock*, void* returnAddress, JSValuePtr baseValue, const PutPropertySlot&);
-#endif
-
SamplingTool* m_sampler;
-#if ENABLE(JIT)
- RefPtr<ExecutablePool> m_executablePool;
- void* m_ctiArrayLengthTrampoline;
- void* m_ctiStringLengthTrampoline;
- void* m_ctiVirtualCallPreLink;
- void* m_ctiVirtualCallLink;
- void* m_ctiVirtualCall;
-#endif
-
int m_reentryDepth;
- unsigned m_timeoutTime;
- unsigned m_timeAtLastCheckTimeout;
- unsigned m_timeExecuting;
- unsigned m_timeoutCheckCount;
- unsigned m_ticksUntilNextTimeoutCheck;
RegisterFile m_registerFile;
- void* m_jsArrayVptr;
- void* m_jsByteArrayVptr;
- void* m_jsStringVptr;
- void* m_jsFunctionVptr;
-
#if HAVE(COMPUTED_GOTO)
Opcode m_opcodeTable[numOpcodeIDs]; // Maps OpcodeID => Opcode for compiling
HashMap<Opcode, OpcodeID> m_opcodeIDTable; // Maps Opcode => OpcodeID for decompiling
#endif
};
-
+
} // namespace JSC
#endif // Interpreter_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h
index 9ad1815..cceac74 100644
--- a/src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h
+++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h
@@ -30,6 +30,7 @@
#define Register_h
#include "JSValue.h"
+#include <wtf/Assertions.h>
#include <wtf/VectorTraits.h>
namespace JSC {
@@ -49,24 +50,26 @@ namespace JSC {
class Register {
public:
Register();
- Register(JSValuePtr);
+ Register(JSValue);
+ Register(Arguments*);
- JSValuePtr jsValue(CallFrame*) const;
- JSValuePtr getJSValue() const;
+ JSValue jsValue() const;
bool marked() const;
void mark();
+ int32_t i() const;
+ void* v() const;
+
private:
friend class ExecState;
friend class Interpreter;
- // Only CallFrame and Interpreter should use these functions.
+ // Only CallFrame, Interpreter, and JITStubs should use these functions.
Register(intptr_t);
Register(JSActivation*);
- Register(Arguments*);
Register(CallFrame*);
Register(CodeBlock*);
Register(JSFunction*);
@@ -74,9 +77,6 @@ namespace JSC {
Register(ScopeChainNode*);
Register(Instruction*);
- intptr_t i() const;
- void* v() const;
-
JSActivation* activation() const;
Arguments* arguments() const;
CallFrame* callFrame() const;
@@ -89,7 +89,7 @@ namespace JSC {
union {
intptr_t i;
void* v;
- JSValueEncodedAsPointer* value;
+ EncodedJSValue value;
JSActivation* activation;
Arguments* arguments;
@@ -100,136 +100,89 @@ namespace JSC {
ScopeChainNode* scopeChain;
Instruction* vPC;
} u;
-
-#ifndef NDEBUG
- enum {
- EmptyType,
-
- IntType,
- ValueType,
-
- ActivationType,
- ArgumentsType,
- CallFrameType,
- CodeBlockType,
- FunctionType,
- InstructionType,
- PropertyNameIteratorType,
- RegisterType,
- ScopeChainNodeType
- } m_type;
-#endif
};
-#ifndef NDEBUG
- #define SET_TYPE(type) m_type = (type)
- // FIXME: The CTI code to put value into registers doesn't set m_type.
- // Once it does, we can turn this assertion back on.
- #define ASSERT_TYPE(type)
-#else
- #define SET_TYPE(type)
- #define ASSERT_TYPE(type)
-#endif
-
ALWAYS_INLINE Register::Register()
{
#ifndef NDEBUG
- SET_TYPE(EmptyType);
- u.value = JSValuePtr::encode(noValue());
+ u.value = JSValue::encode(JSValue());
#endif
}
- ALWAYS_INLINE Register::Register(JSValuePtr v)
+ ALWAYS_INLINE Register::Register(JSValue v)
{
- SET_TYPE(ValueType);
- u.value = JSValuePtr::encode(v);
+ u.value = JSValue::encode(v);
}
- // This function is scaffolding for legacy clients. It will eventually go away.
- ALWAYS_INLINE JSValuePtr Register::jsValue(CallFrame*) const
+ ALWAYS_INLINE JSValue Register::jsValue() const
{
- // Once registers hold doubles, this function will allocate a JSValue*
- // if the register doesn't hold one already.
- ASSERT_TYPE(ValueType);
- return JSValuePtr::decode(u.value);
- }
-
- ALWAYS_INLINE JSValuePtr Register::getJSValue() const
- {
- ASSERT_TYPE(JSValueType);
- return JSValuePtr::decode(u.value);
+ return JSValue::decode(u.value);
}
ALWAYS_INLINE bool Register::marked() const
{
- return getJSValue()->marked();
+ return jsValue().marked();
}
ALWAYS_INLINE void Register::mark()
{
- getJSValue()->mark();
+ jsValue().mark();
}
// Interpreter functions
ALWAYS_INLINE Register::Register(Arguments* arguments)
{
- SET_TYPE(ArgumentsType);
u.arguments = arguments;
}
ALWAYS_INLINE Register::Register(JSActivation* activation)
{
- SET_TYPE(ActivationType);
u.activation = activation;
}
ALWAYS_INLINE Register::Register(CallFrame* callFrame)
{
- SET_TYPE(CallFrameType);
u.callFrame = callFrame;
}
ALWAYS_INLINE Register::Register(CodeBlock* codeBlock)
{
- SET_TYPE(CodeBlockType);
u.codeBlock = codeBlock;
}
ALWAYS_INLINE Register::Register(JSFunction* function)
{
- SET_TYPE(FunctionType);
u.function = function;
}
ALWAYS_INLINE Register::Register(Instruction* vPC)
{
- SET_TYPE(InstructionType);
u.vPC = vPC;
}
ALWAYS_INLINE Register::Register(ScopeChainNode* scopeChain)
{
- SET_TYPE(ScopeChainNodeType);
u.scopeChain = scopeChain;
}
ALWAYS_INLINE Register::Register(JSPropertyNameIterator* propertyNameIterator)
{
- SET_TYPE(PropertyNameIteratorType);
u.propertyNameIterator = propertyNameIterator;
}
ALWAYS_INLINE Register::Register(intptr_t i)
{
- SET_TYPE(IntType);
+ // See comment on 'i()' below.
+ ASSERT(i == static_cast<int32_t>(i));
u.i = i;
}
- ALWAYS_INLINE intptr_t Register::i() const
+ // Read 'i' as a 32-bit integer; we only use it to hold 32-bit values,
+ // and we only write 32-bits when writing the arg count from JIT code.
+ ALWAYS_INLINE int32_t Register::i() const
{
- ASSERT_TYPE(IntType);
- return u.i;
+ return static_cast<int32_t>(u.i);
}
ALWAYS_INLINE void* Register::v() const
@@ -239,55 +192,44 @@ namespace JSC {
ALWAYS_INLINE JSActivation* Register::activation() const
{
- ASSERT_TYPE(ActivationType);
return u.activation;
}
ALWAYS_INLINE Arguments* Register::arguments() const
{
- ASSERT_TYPE(ArgumentsType);
return u.arguments;
}
ALWAYS_INLINE CallFrame* Register::callFrame() const
{
- ASSERT_TYPE(CallFrameType);
return u.callFrame;
}
ALWAYS_INLINE CodeBlock* Register::codeBlock() const
{
- ASSERT_TYPE(CodeBlockType);
return u.codeBlock;
}
ALWAYS_INLINE JSFunction* Register::function() const
{
- ASSERT_TYPE(FunctionType);
return u.function;
}
ALWAYS_INLINE JSPropertyNameIterator* Register::propertyNameIterator() const
{
- ASSERT_TYPE(PropertyNameIteratorType);
return u.propertyNameIterator;
}
ALWAYS_INLINE ScopeChainNode* Register::scopeChain() const
{
- ASSERT_TYPE(ScopeChainNodeType);
return u.scopeChain;
}
ALWAYS_INLINE Instruction* Register::vPC() const
{
- ASSERT_TYPE(InstructionType);
return u.vPC;
}
- #undef SET_TYPE
- #undef ASSERT_TYPE
-
} // namespace JSC
namespace WTF {
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.cpp b/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.cpp
index 50698f5..cfcf1d3 100644
--- a/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.cpp
@@ -42,4 +42,15 @@ RegisterFile::~RegisterFile()
#endif
}
+void RegisterFile::releaseExcessCapacity()
+{
+#if HAVE(MMAP) && HAVE(MADV_FREE) && !HAVE(VIRTUALALLOC)
+ while (madvise(m_start, (m_max - m_start) * sizeof(Register), MADV_FREE) == -1 && errno == EAGAIN) { }
+#elif HAVE(VIRTUALALLOC)
+ VirtualFree(m_start, (m_max - m_start) * sizeof(Register), MEM_DECOMMIT);
+ m_commitEnd = m_start;
+#endif
+ m_maxUsed = m_start;
+}
+
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.h b/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.h
index 9a792ee..933efb9 100644
--- a/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.h
+++ b/src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.h
@@ -29,9 +29,11 @@
#ifndef RegisterFile_h
#define RegisterFile_h
-#include "Register.h"
#include "Collector.h"
+#include "ExecutableAllocator.h"
+#include "Register.h"
#include <wtf/Noncopyable.h>
+#include <wtf/VMTags.h>
#if HAVE(MMAP)
#include <errno.h>
@@ -111,52 +113,11 @@ namespace JSC {
static const size_t defaultCapacity = 524288;
static const size_t defaultMaxGlobals = 8192;
- static const size_t allocationSize = 1 << 14;
- static const size_t allocationSizeMask = allocationSize - 1;
-
- RegisterFile(size_t capacity = defaultCapacity, size_t maxGlobals = defaultMaxGlobals)
- : m_numGlobals(0)
- , m_maxGlobals(maxGlobals)
- , m_start(0)
- , m_end(0)
- , m_max(0)
- , m_buffer(0)
- , m_globalObject(0)
- {
- size_t bufferLength = (capacity + maxGlobals) * sizeof(Register);
-#if HAVE(MMAP)
- m_buffer = static_cast<Register*>(mmap(0, bufferLength, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0));
- if (m_buffer == MAP_FAILED) {
- fprintf(stderr, "Could not allocate register file: %d\n", errno);
- CRASH();
- }
-#elif HAVE(VIRTUALALLOC)
- // Ensure bufferLength is a multiple of allocation size
- bufferLength = (bufferLength + allocationSizeMask) & ~allocationSizeMask;
- m_buffer = static_cast<Register*>(VirtualAlloc(0, bufferLength, MEM_RESERVE, PAGE_READWRITE));
- if (!m_buffer) {
-#if !PLATFORM(WIN_CE)
- fprintf(stderr, "Could not allocate register file: %d\n", errno);
-#endif
- CRASH();
- }
- int initialAllocation = (maxGlobals * sizeof(Register) + allocationSizeMask) & ~allocationSizeMask;
- void* commitCheck = VirtualAlloc(m_buffer, initialAllocation, MEM_COMMIT, PAGE_READWRITE);
- if (commitCheck != m_buffer) {
-#if !PLATFORM(WIN_CE)
- fprintf(stderr, "Could not allocate register file: %d\n", errno);
-#endif
- CRASH();
- }
- m_maxCommitted = reinterpret_cast<Register*>(reinterpret_cast<char*>(m_buffer) + initialAllocation);
-#else
- #error "Don't know how to reserve virtual memory on this platform."
-#endif
- m_start = m_buffer + maxGlobals;
- m_end = m_start;
- m_max = m_start + capacity;
- }
+ static const size_t commitSize = 1 << 14;
+ // Allow 8k of excess registers before we start trying to reap the registerfile
+ static const ptrdiff_t maxExcessCapacity = 8 * 1024;
+ RegisterFile(size_t capacity = defaultCapacity, size_t maxGlobals = defaultMaxGlobals);
~RegisterFile();
Register* start() const { return m_start; }
@@ -166,33 +127,8 @@ namespace JSC {
void setGlobalObject(JSGlobalObject* globalObject) { m_globalObject = globalObject; }
JSGlobalObject* globalObject() { return m_globalObject; }
- void shrink(Register* newEnd)
- {
- if (newEnd < m_end)
- m_end = newEnd;
- }
-
- bool grow(Register* newEnd)
- {
- if (newEnd > m_end) {
- if (newEnd > m_max)
- return false;
-#if !HAVE(MMAP) && HAVE(VIRTUALALLOC)
- if (newEnd > m_maxCommitted) {
- ptrdiff_t additionalAllocation = ((reinterpret_cast<char*>(newEnd) - reinterpret_cast<char*>(m_maxCommitted)) + allocationSizeMask) & ~allocationSizeMask;
- if (!VirtualAlloc(m_maxCommitted, additionalAllocation, MEM_COMMIT, PAGE_READWRITE)) {
-#if !PLATFORM(WIN_CE)
- fprintf(stderr, "Could not allocate register file: %d\n", errno);
-#endif
- CRASH();
- }
- m_maxCommitted = reinterpret_cast<Register*>(reinterpret_cast<char*>(m_maxCommitted) + additionalAllocation);
- }
-#endif
- m_end = newEnd;
- }
- return true;
- }
+ bool grow(Register* newEnd);
+ void shrink(Register* newEnd);
void setNumGlobals(size_t numGlobals) { m_numGlobals = numGlobals; }
int numGlobals() const { return m_numGlobals; }
@@ -204,19 +140,108 @@ namespace JSC {
void markCallFrames(Heap* heap) { heap->markConservatively(m_start, m_end); }
private:
+ void releaseExcessCapacity();
size_t m_numGlobals;
const size_t m_maxGlobals;
Register* m_start;
Register* m_end;
Register* m_max;
Register* m_buffer;
+ Register* m_maxUsed;
+
#if HAVE(VIRTUALALLOC)
- Register* m_maxCommitted;
+ Register* m_commitEnd;
#endif
JSGlobalObject* m_globalObject; // The global object whose vars are currently stored in the register file.
};
+ // FIXME: Add a generic getpagesize() to WTF, then move this function to WTF as well.
+ inline bool isPageAligned(size_t size) { return size != 0 && size % (8 * 1024) == 0; }
+
+ inline RegisterFile::RegisterFile(size_t capacity, size_t maxGlobals)
+ : m_numGlobals(0)
+ , m_maxGlobals(maxGlobals)
+ , m_start(0)
+ , m_end(0)
+ , m_max(0)
+ , m_buffer(0)
+ , m_globalObject(0)
+ {
+ // Verify that our values will play nice with mmap and VirtualAlloc.
+ ASSERT(isPageAligned(maxGlobals));
+ ASSERT(isPageAligned(capacity));
+
+ size_t bufferLength = (capacity + maxGlobals) * sizeof(Register);
+ #if HAVE(MMAP)
+ m_buffer = static_cast<Register*>(mmap(0, bufferLength, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, VM_TAG_FOR_REGISTERFILE_MEMORY, 0));
+ if (m_buffer == MAP_FAILED) {
+ fprintf(stderr, "Could not allocate register file: %d\n", errno);
+ CRASH();
+ }
+ #elif HAVE(VIRTUALALLOC)
+ m_buffer = static_cast<Register*>(VirtualAlloc(0, roundUpAllocationSize(bufferLength, commitSize), MEM_RESERVE, PAGE_READWRITE));
+ if (!m_buffer) {
+ #if !PLATFORM(WIN_CE)
+ fprintf(stderr, "Could not allocate register file: %d\n", errno);
+ #endif
+ CRASH();
+ }
+ size_t committedSize = roundUpAllocationSize(maxGlobals * sizeof(Register), commitSize);
+ void* commitCheck = VirtualAlloc(m_buffer, committedSize, MEM_COMMIT, PAGE_READWRITE);
+ if (commitCheck != m_buffer) {
+ #if !PLATFORM(WIN_CE)
+ fprintf(stderr, "Could not allocate register file: %d\n", errno);
+ #endif
+ CRASH();
+ }
+ m_commitEnd = reinterpret_cast<Register*>(reinterpret_cast<char*>(m_buffer) + committedSize);
+ #else
+ #error "Don't know how to reserve virtual memory on this platform."
+ #endif
+ m_start = m_buffer + maxGlobals;
+ m_end = m_start;
+ m_maxUsed = m_end;
+ m_max = m_start + capacity;
+ }
+
+ inline void RegisterFile::shrink(Register* newEnd)
+ {
+ if (newEnd >= m_end)
+ return;
+ m_end = newEnd;
+ if (m_end == m_start && (m_maxUsed - m_start) > maxExcessCapacity)
+ releaseExcessCapacity();
+ }
+
+ inline bool RegisterFile::grow(Register* newEnd)
+ {
+ if (newEnd < m_end)
+ return true;
+
+ if (newEnd > m_max)
+ return false;
+
+#if !HAVE(MMAP) && HAVE(VIRTUALALLOC)
+ if (newEnd > m_commitEnd) {
+ size_t size = roundUpAllocationSize(reinterpret_cast<char*>(newEnd) - reinterpret_cast<char*>(m_commitEnd), commitSize);
+ if (!VirtualAlloc(m_commitEnd, size, MEM_COMMIT, PAGE_READWRITE)) {
+#if !PLATFORM(WIN_CE)
+ fprintf(stderr, "Could not allocate register file: %d\n", errno);
+#endif
+ CRASH();
+ }
+ m_commitEnd = reinterpret_cast<Register*>(reinterpret_cast<char*>(m_commitEnd) + size);
+ }
+#endif
+
+ if (newEnd > m_maxUsed)
+ m_maxUsed = newEnd;
+
+ m_end = newEnd;
+ return true;
+ }
+
} // namespace JSC
#endif // RegisterFile_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocator.h b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocator.h
index 1541256..18261f8 100644
--- a/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocator.h
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocator.h
@@ -26,8 +26,6 @@
#ifndef ExecutableAllocator_h
#define ExecutableAllocator_h
-#if ENABLE(ASSEMBLER)
-
#include <wtf/Assertions.h>
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
@@ -38,6 +36,32 @@
#define JIT_ALLOCATOR_PAGE_SIZE (ExecutableAllocator::pageSize)
#define JIT_ALLOCATOR_LARGE_ALLOC_SIZE (ExecutableAllocator::pageSize * 4)
+#if ENABLE(ASSEMBLER_WX_EXCLUSIVE)
+#define PROTECTION_FLAGS_RW (PROT_READ | PROT_WRITE)
+#define PROTECTION_FLAGS_RX (PROT_READ | PROT_EXEC)
+#define INITIAL_PROTECTION_FLAGS PROTECTION_FLAGS_RX
+#else
+#define INITIAL_PROTECTION_FLAGS (PROT_READ | PROT_WRITE | PROT_EXEC)
+#endif
+
+namespace JSC {
+
+inline size_t roundUpAllocationSize(size_t request, size_t granularity)
+{
+ if ((std::numeric_limits<size_t>::max() - granularity) <= request)
+ CRASH(); // Allocation is too large
+
+ // Round up to next page boundary
+ size_t size = request + (granularity - 1);
+ size = size & ~(granularity - 1);
+ ASSERT(size >= request);
+ return size;
+}
+
+}
+
+#if ENABLE(ASSEMBLER)
+
namespace JSC {
class ExecutablePool : public RefCounted<ExecutablePool> {
@@ -86,18 +110,6 @@ private:
static Allocation systemAlloc(size_t n);
static void systemRelease(const Allocation& alloc);
- inline size_t roundUpAllocationSize(size_t request, size_t granularity)
- {
- if ((std::numeric_limits<size_t>::max() - granularity) <= request)
- CRASH(); // Allocation is too large
-
- // Round up to next page boundary
- size_t size = request + (granularity - 1);
- size = size & ~(granularity - 1);
- ASSERT(size >= request);
- return size;
- }
-
ExecutablePool(size_t n);
void* poolAllocate(size_t n);
@@ -108,6 +120,8 @@ private:
};
class ExecutableAllocator {
+ enum ProtectionSeting { Writable, Executable };
+
public:
static size_t pageSize;
ExecutableAllocator()
@@ -137,7 +151,40 @@ public:
return pool.release();
}
+#if ENABLE(ASSEMBLER_WX_EXCLUSIVE)
+ static void makeWritable(void* start, size_t size) { reprotectRegion(start, size, Writable); }
+ static void makeExecutable(void* start, size_t size) { reprotectRegion(start, size, Executable); }
+
+ class MakeWritable {
+ public:
+ MakeWritable(void* start, size_t size)
+ : m_start(start)
+ , m_size(size)
+ {
+ makeWritable(start, size);
+ }
+
+ ~MakeWritable()
+ {
+ makeExecutable(m_start, m_size);
+ }
+
+ private:
+ void* m_start;
+ size_t m_size;
+ };
+#else
+ static void makeWritable(void*, size_t) {}
+ static void makeExecutable(void*, size_t) {}
+ class MakeWritable { public: MakeWritable(void*, size_t) {} };
+#endif
+
private:
+
+#if ENABLE(ASSEMBLER_WX_EXCLUSIVE)
+ static void reprotectRegion(void*, size_t, ProtectionSeting);
+#endif
+
RefPtr<ExecutablePool> m_smallAllocationPool;
static void intializePageSize();
};
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp
new file mode 100644
index 0000000..7682b9c
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp
@@ -0,0 +1,447 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "ExecutableAllocator.h"
+
+#include <errno.h>
+
+#if ENABLE(ASSEMBLER) && PLATFORM(MAC) && PLATFORM(X86_64)
+
+#include "TCSpinLock.h"
+#include <mach/mach_init.h>
+#include <mach/vm_map.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <wtf/AVLTree.h>
+#include <wtf/VMTags.h>
+
+using namespace WTF;
+
+namespace JSC {
+
+#define TWO_GB (2u * 1024u * 1024u * 1024u)
+#define SIXTEEN_MB (16u * 1024u * 1024u)
+
+// FreeListEntry describes a free chunk of memory, stored in the freeList.
+struct FreeListEntry {
+ FreeListEntry(void* pointer, size_t size)
+ : pointer(pointer)
+ , size(size)
+ , nextEntry(0)
+ , less(0)
+ , greater(0)
+ , balanceFactor(0)
+ {
+ }
+
+ // All entries of the same size share a single entry
+ // in the AVLTree, and are linked together in a linked
+ // list, using nextEntry.
+ void* pointer;
+ size_t size;
+ FreeListEntry* nextEntry;
+
+ // These fields are used by AVLTree.
+ FreeListEntry* less;
+ FreeListEntry* greater;
+ int balanceFactor;
+};
+
+// Abstractor class for use in AVLTree.
+// Nodes in the AVLTree are of type FreeListEntry, keyed on
+// (and thus sorted by) their size.
+struct AVLTreeAbstractorForFreeList {
+ typedef FreeListEntry* handle;
+ typedef int32_t size;
+ typedef size_t key;
+
+ handle get_less(handle h) { return h->less; }
+ void set_less(handle h, handle lh) { h->less = lh; }
+ handle get_greater(handle h) { return h->greater; }
+ void set_greater(handle h, handle gh) { h->greater = gh; }
+ int get_balance_factor(handle h) { return h->balanceFactor; }
+ void set_balance_factor(handle h, int bf) { h->balanceFactor = bf; }
+
+ static handle null() { return 0; }
+
+ int compare_key_key(key va, key vb) { return va - vb; }
+ int compare_key_node(key k, handle h) { return compare_key_key(k, h->size); }
+ int compare_node_node(handle h1, handle h2) { return compare_key_key(h1->size, h2->size); }
+};
+
+// Used to reverse sort an array of FreeListEntry pointers.
+static int reverseSortFreeListEntriesByPointer(const void* leftPtr, const void* rightPtr)
+{
+ FreeListEntry* left = *(FreeListEntry**)leftPtr;
+ FreeListEntry* right = *(FreeListEntry**)rightPtr;
+
+ return (intptr_t)(right->pointer) - (intptr_t)(left->pointer);
+}
+
+// Used to reverse sort an array of pointers.
+static int reverseSortCommonSizedAllocations(const void* leftPtr, const void* rightPtr)
+{
+ void* left = *(void**)leftPtr;
+ void* right = *(void**)rightPtr;
+
+ return (intptr_t)right - (intptr_t)left;
+}
+
+class FixedVMPoolAllocator
+{
+ // The free list is stored in a sorted tree.
+ typedef AVLTree<AVLTreeAbstractorForFreeList, 40> SizeSortedFreeTree;
+
+ // Use madvise as apropriate to prevent freed pages from being spilled,
+ // and to attempt to ensure that used memory is reported correctly.
+#if HAVE(MADV_FREE_REUSE)
+ void release(void* position, size_t size)
+ {
+ while (madvise(position, size, MADV_FREE_REUSABLE) == -1 && errno == EAGAIN) { }
+ }
+
+ void reuse(void* position, size_t size)
+ {
+ while (madvise(position, size, MADV_FREE_REUSE) == -1 && errno == EAGAIN) { }
+ }
+#elif HAVE(MADV_DONTNEED)
+ void release(void* position, size_t size)
+ {
+ while (madvise(position, size, MADV_DONTNEED) == -1 && errno == EAGAIN) { }
+ }
+
+ void reuse(void*, size_t) {}
+#else
+ void release(void*, size_t) {}
+ void reuse(void*, size_t) {}
+#endif
+
+ // All addition to the free list should go through this method, rather than
+ // calling insert directly, to avoid multiple entries beging added with the
+ // same key. All nodes being added should be singletons, they should not
+ // already be a part of a chain.
+ void addToFreeList(FreeListEntry* entry)
+ {
+ ASSERT(!entry->nextEntry);
+
+ if (entry->size == m_commonSize) {
+ m_commonSizedAllocations.append(entry->pointer);
+ delete entry;
+ } else if (FreeListEntry* entryInFreeList = m_freeList.search(entry->size, m_freeList.EQUAL)) {
+ // m_freeList already contain an entry for this size - insert this node into the chain.
+ entry->nextEntry = entryInFreeList->nextEntry;
+ entryInFreeList->nextEntry = entry;
+ } else
+ m_freeList.insert(entry);
+ }
+
+ // We do not attempt to coalesce addition, which may lead to fragmentation;
+ // instead we periodically perform a sweep to try to coalesce neigboring
+ // entries in m_freeList. Presently this is triggered at the point 16MB
+ // of memory has been released.
+ void coalesceFreeSpace()
+ {
+ Vector<FreeListEntry*> freeListEntries;
+ SizeSortedFreeTree::Iterator iter;
+ iter.start_iter_least(m_freeList);
+
+ // Empty m_freeList into a Vector.
+ for (FreeListEntry* entry; (entry = *iter); ++iter) {
+ // Each entry in m_freeList might correspond to multiple
+ // free chunks of memory (of the same size). Walk the chain
+ // (this is likely of couse only be one entry long!) adding
+ // each entry to the Vector (at reseting the next in chain
+ // pointer to separate each node out).
+ FreeListEntry* next;
+ do {
+ next = entry->nextEntry;
+ entry->nextEntry = 0;
+ freeListEntries.append(entry);
+ } while ((entry = next));
+ }
+ // All entries are now in the Vector; purge the tree.
+ m_freeList.purge();
+
+ // Reverse-sort the freeListEntries and m_commonSizedAllocations Vectors.
+ // We reverse-sort so that we can logically work forwards through memory,
+ // whilst popping items off the end of the Vectors using last() and removeLast().
+ qsort(freeListEntries.begin(), freeListEntries.size(), sizeof(FreeListEntry*), reverseSortFreeListEntriesByPointer);
+ qsort(m_commonSizedAllocations.begin(), m_commonSizedAllocations.size(), sizeof(void*), reverseSortCommonSizedAllocations);
+
+ // The entries from m_commonSizedAllocations that cannot be
+ // coalesced into larger chunks will be temporarily stored here.
+ Vector<void*> newCommonSizedAllocations;
+
+ // Keep processing so long as entries remain in either of the vectors.
+ while (freeListEntries.size() || m_commonSizedAllocations.size()) {
+ // We're going to try to find a FreeListEntry node that we can coalesce onto.
+ FreeListEntry* coalescionEntry = 0;
+
+ // Is the lowest addressed chunk of free memory of common-size, or is it in the free list?
+ if (m_commonSizedAllocations.size() && (!freeListEntries.size() || (m_commonSizedAllocations.last() < freeListEntries.last()->pointer))) {
+ // Pop an item from the m_commonSizedAllocations vector - this is the lowest
+ // addressed free chunk. Find out the begin and end addresses of the memory chunk.
+ void* begin = m_commonSizedAllocations.last();
+ void* end = (void*)((intptr_t)begin + m_commonSize);
+ m_commonSizedAllocations.removeLast();
+
+ // Try to find another free chunk abutting onto the end of the one we have already found.
+ if (freeListEntries.size() && (freeListEntries.last()->pointer == end)) {
+ // There is an existing FreeListEntry for the next chunk of memory!
+ // we can reuse this. Pop it off the end of m_freeList.
+ coalescionEntry = freeListEntries.last();
+ freeListEntries.removeLast();
+ // Update the existing node to include the common-sized chunk that we also found.
+ coalescionEntry->pointer = (void*)((intptr_t)coalescionEntry->pointer - m_commonSize);
+ coalescionEntry->size += m_commonSize;
+ } else if (m_commonSizedAllocations.size() && (m_commonSizedAllocations.last() == end)) {
+ // There is a second common-sized chunk that can be coalesced.
+ // Allocate a new node.
+ m_commonSizedAllocations.removeLast();
+ coalescionEntry = new FreeListEntry(begin, 2 * m_commonSize);
+ } else {
+ // Nope - this poor little guy is all on his own. :-(
+ // Add him into the newCommonSizedAllocations vector for now, we're
+ // going to end up adding him back into the m_commonSizedAllocations
+ // list when we're done.
+ newCommonSizedAllocations.append(begin);
+ continue;
+ }
+ } else {
+ ASSERT(freeListEntries.size());
+ ASSERT(!m_commonSizedAllocations.size() || (freeListEntries.last()->pointer < m_commonSizedAllocations.last()));
+ // The lowest addressed item is from m_freeList; pop it from the Vector.
+ coalescionEntry = freeListEntries.last();
+ freeListEntries.removeLast();
+ }
+
+ // Right, we have a FreeListEntry, we just need check if there is anything else
+ // to coalesce onto the end.
+ ASSERT(coalescionEntry);
+ while (true) {
+ // Calculate the end address of the chunk we have found so far.
+ void* end = (void*)((intptr_t)coalescionEntry->pointer - coalescionEntry->size);
+
+ // Is there another chunk adjacent to the one we already have?
+ if (freeListEntries.size() && (freeListEntries.last()->pointer == end)) {
+ // Yes - another FreeListEntry -pop it from the list.
+ FreeListEntry* coalescee = freeListEntries.last();
+ freeListEntries.removeLast();
+ // Add it's size onto our existing node.
+ coalescionEntry->size += coalescee->size;
+ delete coalescee;
+ } else if (m_commonSizedAllocations.size() && (m_commonSizedAllocations.last() == end)) {
+ // We can coalesce the next common-sized chunk.
+ m_commonSizedAllocations.removeLast();
+ coalescionEntry->size += m_commonSize;
+ } else
+ break; // Nope, nothing to be added - stop here.
+ }
+
+ // We've coalesced everything we can onto the current chunk.
+ // Add it back into m_freeList.
+ addToFreeList(coalescionEntry);
+ }
+
+ // All chunks of free memory larger than m_commonSize should be
+ // back in m_freeList by now. All that remains to be done is to
+ // copy the contents on the newCommonSizedAllocations back into
+ // the m_commonSizedAllocations Vector.
+ ASSERT(m_commonSizedAllocations.size() == 0);
+ m_commonSizedAllocations.append(newCommonSizedAllocations);
+ }
+
+public:
+
+ FixedVMPoolAllocator(size_t commonSize, size_t totalHeapSize)
+ : m_commonSize(commonSize)
+ , m_countFreedSinceLastCoalesce(0)
+ , m_totalHeapSize(totalHeapSize)
+ {
+ // Cook up an address to allocate at, using the following recipe:
+ // 17 bits of zero, stay in userspace kids.
+ // 26 bits of randomness for ASLR.
+ // 21 bits of zero, at least stay aligned within one level of the pagetables.
+ //
+ // But! - as a temporary workaround for some plugin problems (rdar://problem/6812854),
+ // for now instead of 2^26 bits of ASLR lets stick with 25 bits of randomization plus
+ // 2^24, which should put up somewhere in the middle of usespace (in the address range
+ // 0x200000000000 .. 0x5fffffffffff).
+ intptr_t randomLocation = arc4random() & ((1 << 25) - 1);
+ randomLocation += (1 << 24);
+ randomLocation <<= 21;
+ m_base = mmap(reinterpret_cast<void*>(randomLocation), m_totalHeapSize, INITIAL_PROTECTION_FLAGS, MAP_PRIVATE | MAP_ANON, VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY, 0);
+ if (!m_base)
+ CRASH();
+
+ // For simplicity, we keep all memory in m_freeList in a 'released' state.
+ // This means that we can simply reuse all memory when allocating, without
+ // worrying about it's previous state, and also makes coalescing m_freeList
+ // simpler since we need not worry about the possibility of coalescing released
+ // chunks with non-released ones.
+ release(m_base, m_totalHeapSize);
+ m_freeList.insert(new FreeListEntry(m_base, m_totalHeapSize));
+ }
+
+ void* alloc(size_t size)
+ {
+ void* result;
+
+ // Freed allocations of the common size are not stored back into the main
+ // m_freeList, but are instead stored in a separate vector. If the request
+ // is for a common sized allocation, check this list.
+ if ((size == m_commonSize) && m_commonSizedAllocations.size()) {
+ result = m_commonSizedAllocations.last();
+ m_commonSizedAllocations.removeLast();
+ } else {
+ // Serach m_freeList for a suitable sized chunk to allocate memory from.
+ FreeListEntry* entry = m_freeList.search(size, m_freeList.GREATER_EQUAL);
+
+ // This would be bad news.
+ if (!entry) {
+ // Errk! Lets take a last-ditch desparation attempt at defragmentation...
+ coalesceFreeSpace();
+ // Did that free up a large enough chunk?
+ entry = m_freeList.search(size, m_freeList.GREATER_EQUAL);
+ // No?... *BOOM!*
+ if (!entry)
+ CRASH();
+ }
+ ASSERT(entry->size != m_commonSize);
+
+ // Remove the entry from m_freeList. But! -
+ // Each entry in the tree may represent a chain of multiple chunks of the
+ // same size, and we only want to remove one on them. So, if this entry
+ // does have a chain, just remove the first-but-one item from the chain.
+ if (FreeListEntry* next = entry->nextEntry) {
+ // We're going to leave 'entry' in the tree; remove 'next' from its chain.
+ entry->nextEntry = next->nextEntry;
+ next->nextEntry = 0;
+ entry = next;
+ } else
+ m_freeList.remove(entry->size);
+
+ // Whoo!, we have a result!
+ ASSERT(entry->size >= size);
+ result = entry->pointer;
+
+ // If the allocation exactly fits the chunk we found in the,
+ // m_freeList then the FreeListEntry node is no longer needed.
+ if (entry->size == size)
+ delete entry;
+ else {
+ // There is memory left over, and it is not of the common size.
+ // We can reuse the existing FreeListEntry node to add this back
+ // into m_freeList.
+ entry->pointer = (void*)((intptr_t)entry->pointer + size);
+ entry->size -= size;
+ addToFreeList(entry);
+ }
+ }
+
+ // Call reuse to report to the operating system that this memory is in use.
+ ASSERT(isWithinVMPool(result, size));
+ reuse(result, size);
+ return result;
+ }
+
+ void free(void* pointer, size_t size)
+ {
+ // Call release to report to the operating system that this
+ // memory is no longer in use, and need not be paged out.
+ ASSERT(isWithinVMPool(pointer, size));
+ release(pointer, size);
+
+ // Common-sized allocations are stored in the m_commonSizedAllocations
+ // vector; all other freed chunks are added to m_freeList.
+ if (size == m_commonSize)
+ m_commonSizedAllocations.append(pointer);
+ else
+ addToFreeList(new FreeListEntry(pointer, size));
+
+ // Do some housekeeping. Every time we reach a point that
+ // 16MB of allocations have been freed, sweep m_freeList
+ // coalescing any neighboring fragments.
+ m_countFreedSinceLastCoalesce += size;
+ if (m_countFreedSinceLastCoalesce >= SIXTEEN_MB) {
+ m_countFreedSinceLastCoalesce = 0;
+ coalesceFreeSpace();
+ }
+ }
+
+private:
+
+#ifndef NDEBUG
+ bool isWithinVMPool(void* pointer, size_t size)
+ {
+ return pointer >= m_base && (reinterpret_cast<char*>(pointer) + size <= reinterpret_cast<char*>(m_base) + m_totalHeapSize);
+ }
+#endif
+
+ // Freed space from the most common sized allocations will be held in this list, ...
+ const size_t m_commonSize;
+ Vector<void*> m_commonSizedAllocations;
+
+ // ... and all other freed allocations are held in m_freeList.
+ SizeSortedFreeTree m_freeList;
+
+ // This is used for housekeeping, to trigger defragmentation of the freed lists.
+ size_t m_countFreedSinceLastCoalesce;
+
+ void* m_base;
+ size_t m_totalHeapSize;
+};
+
+void ExecutableAllocator::intializePageSize()
+{
+ ExecutableAllocator::pageSize = getpagesize();
+}
+
+static FixedVMPoolAllocator* allocator = 0;
+static SpinLock spinlock = SPINLOCK_INITIALIZER;
+
+ExecutablePool::Allocation ExecutablePool::systemAlloc(size_t size)
+{
+ SpinLockHolder lock_holder(&spinlock);
+
+ if (!allocator)
+ allocator = new FixedVMPoolAllocator(JIT_ALLOCATOR_LARGE_ALLOC_SIZE, TWO_GB);
+ ExecutablePool::Allocation alloc = {reinterpret_cast<char*>(allocator->alloc(size)), size};
+ return alloc;
+}
+
+void ExecutablePool::systemRelease(const ExecutablePool::Allocation& allocation)
+{
+ SpinLockHolder lock_holder(&spinlock);
+
+ ASSERT(allocator);
+ allocator->free(allocation.pages, allocation.size);
+}
+
+}
+
+#endif // HAVE(ASSEMBLER)
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorPosix.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorPosix.cpp
index 21955d7..4bd5a2c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorPosix.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorPosix.cpp
@@ -31,9 +31,12 @@
#include <sys/mman.h>
#include <unistd.h>
+#include <wtf/VMTags.h>
namespace JSC {
+#if !(PLATFORM(MAC) && PLATFORM(X86_64))
+
void ExecutableAllocator::intializePageSize()
{
ExecutableAllocator::pageSize = getpagesize();
@@ -41,16 +44,39 @@ void ExecutableAllocator::intializePageSize()
ExecutablePool::Allocation ExecutablePool::systemAlloc(size_t n)
{
- ExecutablePool::Allocation alloc = {reinterpret_cast<char*>(mmap(NULL, n, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0)), n};
+ ExecutablePool::Allocation alloc = { reinterpret_cast<char*>(mmap(NULL, n, INITIAL_PROTECTION_FLAGS, MAP_PRIVATE | MAP_ANON, VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY, 0)), n };
return alloc;
}
-void ExecutablePool::systemRelease(const ExecutablePool::Allocation& alloc)
+void ExecutablePool::systemRelease(const ExecutablePool::Allocation& alloc)
{
int result = munmap(alloc.pages, alloc.size);
ASSERT_UNUSED(result, !result);
}
+#endif // !(PLATFORM(MAC) && PLATFORM(X86_64))
+
+#if ENABLE(ASSEMBLER_WX_EXCLUSIVE)
+void ExecutableAllocator::reprotectRegion(void* start, size_t size, ProtectionSeting setting)
+{
+ if (!pageSize)
+ intializePageSize();
+
+ // Calculate the start of the page containing this region,
+ // and account for this extra memory within size.
+ intptr_t startPtr = reinterpret_cast<intptr_t>(start);
+ intptr_t pageStartPtr = startPtr & ~(pageSize - 1);
+ void* pageStart = reinterpret_cast<void*>(pageStartPtr);
+ size += (startPtr - pageStartPtr);
+
+ // Round size up
+ size += (pageSize - 1);
+ size &= ~(pageSize - 1);
+
+ mprotect(pageStart, size, (setting == Writable) ? PROTECTION_FLAGS_RW : PROTECTION_FLAGS_RX);
+}
+#endif
+
}
#endif // HAVE(ASSEMBLER)
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorWin.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorWin.cpp
index 7467f81..a9ba7d0 100644
--- a/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorWin.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorWin.cpp
@@ -51,6 +51,10 @@ void ExecutablePool::systemRelease(const ExecutablePool::Allocation& alloc)
VirtualFree(alloc.pages, 0, MEM_RELEASE);
}
+#if ENABLE(ASSEMBLER_WX_EXCLUSIVE)
+#error "ASSEMBLER_WX_EXCLUSIVE not yet suported on this platform."
+#endif
+
}
#endif // HAVE(ASSEMBLER)
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JIT.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/JIT.cpp
index 0ce9bc1..7f2656c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/jit/JIT.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JIT.cpp
@@ -1,3 +1,4 @@
+
/*
* Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
*
@@ -29,10 +30,11 @@
#if ENABLE(JIT)
#include "CodeBlock.h"
+#include "Interpreter.h"
#include "JITInlineMethods.h"
+#include "JITStubCall.h"
#include "JSArray.h"
#include "JSFunction.h"
-#include "Interpreter.h"
#include "ResultType.h"
#include "SamplingTool.h"
@@ -44,159 +46,19 @@ using namespace std;
namespace JSC {
-COMPILE_ASSERT(STUB_ARGS_code == 0xC, STUB_ARGS_code_is_C);
-COMPILE_ASSERT(STUB_ARGS_callFrame == 0xE, STUB_ARGS_callFrame_is_E);
-
-#if COMPILER(GCC) && PLATFORM(X86)
-
-#if PLATFORM(DARWIN)
-#define SYMBOL_STRING(name) "_" #name
-#else
-#define SYMBOL_STRING(name) #name
-#endif
-
-asm(
-".globl " SYMBOL_STRING(ctiTrampoline) "\n"
-SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "pushl %ebp" "\n"
- "movl %esp, %ebp" "\n"
- "pushl %esi" "\n"
- "pushl %edi" "\n"
- "pushl %ebx" "\n"
- "subl $0x1c, %esp" "\n"
- "movl $512, %esi" "\n"
- "movl 0x38(%esp), %edi" "\n" // Ox38 = 0x0E * 4, 0x0E = STUB_ARGS_callFrame (see assertion above)
- "call *0x30(%esp)" "\n" // Ox30 = 0x0C * 4, 0x0C = STUB_ARGS_code (see assertion above)
- "addl $0x1c, %esp" "\n"
- "popl %ebx" "\n"
- "popl %edi" "\n"
- "popl %esi" "\n"
- "popl %ebp" "\n"
- "ret" "\n"
-);
-
-asm(
-".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
-SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-#if USE(JIT_STUB_ARGUMENT_VA_LIST)
- "call " SYMBOL_STRING(_ZN3JSC11Interpreter12cti_vm_throwEPvz) "\n"
-#else
-#if USE(JIT_STUB_ARGUMENT_REGISTER)
- "movl %esp, %ecx" "\n"
-#else // JIT_STUB_ARGUMENT_STACK
- "movl %esp, 0(%esp)" "\n"
-#endif
- "call " SYMBOL_STRING(_ZN3JSC11Interpreter12cti_vm_throwEPPv) "\n"
-#endif
- "addl $0x1c, %esp" "\n"
- "popl %ebx" "\n"
- "popl %edi" "\n"
- "popl %esi" "\n"
- "popl %ebp" "\n"
- "ret" "\n"
-);
-
-#elif COMPILER(GCC) && PLATFORM(X86_64)
-
-#if PLATFORM(DARWIN)
-#define SYMBOL_STRING(name) "_" #name
-#else
-#define SYMBOL_STRING(name) #name
-#endif
-
-asm(
-".globl " SYMBOL_STRING(ctiTrampoline) "\n"
-SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "pushq %rbp" "\n"
- "movq %rsp, %rbp" "\n"
- "pushq %r12" "\n"
- "pushq %r13" "\n"
- "pushq %rbx" "\n"
- "subq $0x38, %rsp" "\n"
- "movq $512, %r12" "\n"
- "movq 0x70(%rsp), %r13" "\n" // Ox70 = 0x0E * 8, 0x0E = STUB_ARGS_callFrame (see assertion above)
- "call *0x60(%rsp)" "\n" // Ox60 = 0x0C * 8, 0x0C = STUB_ARGS_code (see assertion above)
- "addq $0x38, %rsp" "\n"
- "popq %rbx" "\n"
- "popq %r13" "\n"
- "popq %r12" "\n"
- "popq %rbp" "\n"
- "ret" "\n"
-);
-
-asm(
-".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
-SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-#if USE(JIT_STUB_ARGUMENT_REGISTER)
- "movq %rsp, %rdi" "\n"
- "call " SYMBOL_STRING(_ZN3JSC11Interpreter12cti_vm_throwEPPv) "\n"
-#else // JIT_STUB_ARGUMENT_VA_LIST or JIT_STUB_ARGUMENT_STACK
-#error "JIT_STUB_ARGUMENT configuration not supported."
-#endif
- "addq $0x38, %rsp" "\n"
- "popq %rbx" "\n"
- "popq %r13" "\n"
- "popq %r12" "\n"
- "popq %rbp" "\n"
- "ret" "\n"
-);
-
-#elif COMPILER(MSVC)
-
-extern "C" {
-
- __declspec(naked) JSValueEncodedAsPointer* ctiTrampoline(void* code, RegisterFile*, CallFrame*, JSValuePtr* exception, Profiler**, JSGlobalData*)
- {
- __asm {
- push ebp;
- mov ebp, esp;
- push esi;
- push edi;
- push ebx;
- sub esp, 0x1c;
- mov esi, 512;
- mov ecx, esp;
- mov edi, [esp + 0x38];
- call [esp + 0x30]; // Ox30 = 0x0C * 4, 0x0C = STUB_ARGS_code (see assertion above)
- add esp, 0x1c;
- pop ebx;
- pop edi;
- pop esi;
- pop ebp;
- ret;
- }
- }
-
- __declspec(naked) void ctiVMThrowTrampoline()
- {
- __asm {
-#if USE(JIT_STUB_ARGUMENT_REGISTER)
- mov ecx, esp;
-#else // JIT_STUB_ARGUMENT_VA_LIST or JIT_STUB_ARGUMENT_STACK
-#error "JIT_STUB_ARGUMENT configuration not supported."
-#endif
- call JSC::Interpreter::cti_vm_throw;
- add esp, 0x1c;
- pop ebx;
- pop edi;
- pop esi;
- pop ebp;
- ret;
- }
- }
-
+void ctiPatchNearCallByReturnAddress(MacroAssembler::ProcessorReturnAddress returnAddress, MacroAssemblerCodePtr newCalleeFunction)
+{
+ returnAddress.relinkNearCallerToTrampoline(newCalleeFunction);
}
-#endif
-
-void ctiSetReturnAddress(void** where, void* what)
+void ctiPatchCallByReturnAddress(MacroAssembler::ProcessorReturnAddress returnAddress, MacroAssemblerCodePtr newCalleeFunction)
{
- *where = what;
+ returnAddress.relinkCallerToTrampoline(newCalleeFunction);
}
-void ctiPatchCallByReturnAddress(void* where, void* what)
+void ctiPatchCallByReturnAddress(MacroAssembler::ProcessorReturnAddress returnAddress, FunctionPtr newCalleeFunction)
{
- MacroAssembler::Jump::patch(where, what);
+ returnAddress.relinkCallerToFunction(newCalleeFunction);
}
JIT::JIT(JSGlobalData* globalData, CodeBlock* codeBlock)
@@ -213,51 +75,31 @@ JIT::JIT(JSGlobalData* globalData, CodeBlock* codeBlock)
void JIT::compileOpStrictEq(Instruction* currentInstruction, CompileOpStrictEqType type)
{
- bool negated = (type == OpNStrictEq);
-
unsigned dst = currentInstruction[1].u.operand;
unsigned src1 = currentInstruction[2].u.operand;
unsigned src2 = currentInstruction[3].u.operand;
- emitGetVirtualRegisters(src1, X86::eax, src2, X86::edx);
-
- // Check that bot are immediates, if so check if they're equal
- Jump firstNotImmediate = emitJumpIfJSCell(X86::eax);
- Jump secondNotImmediate = emitJumpIfJSCell(X86::edx);
- Jump bothWereImmediatesButNotEqual = jne32(X86::edx, X86::eax);
-
- // They are equal - set the result to true. (Or false, if negated).
- move(ImmPtr(JSValuePtr::encode(jsBoolean(!negated))), X86::eax);
- Jump bothWereImmediatesAndEqual = jump();
-
- // eax was not an immediate, we haven't yet checked edx.
- // If edx is also a JSCell, or is 0, then jump to a slow case,
- // otherwise these values are not equal.
- firstNotImmediate.link(this);
- emitJumpSlowCaseIfJSCell(X86::edx);
- addSlowCase(jePtr(X86::edx, ImmPtr(JSValuePtr::encode(JSImmediate::zeroImmediate()))));
- Jump firstWasNotImmediate = jump();
-
- // eax was an immediate, but edx wasn't.
- // If eax is 0 jump to a slow case, otherwise these values are not equal.
- secondNotImmediate.link(this);
- addSlowCase(jePtr(X86::eax, ImmPtr(JSValuePtr::encode(JSImmediate::zeroImmediate()))));
-
- // We get here if the two values are different immediates, or one is 0 and the other is a JSCell.
- // Vaelues are not equal, set the result to false.
- bothWereImmediatesButNotEqual.link(this);
- firstWasNotImmediate.link(this);
- move(ImmPtr(JSValuePtr::encode(jsBoolean(negated))), X86::eax);
-
- bothWereImmediatesAndEqual.link(this);
+ emitGetVirtualRegisters(src1, regT0, src2, regT1);
+
+ // Jump to a slow case if either operand is a number, or if both are JSCell*s.
+ move(regT0, regT2);
+ orPtr(regT1, regT2);
+ addSlowCase(emitJumpIfJSCell(regT2));
+ addSlowCase(emitJumpIfImmediateNumber(regT2));
+
+ if (type == OpStrictEq)
+ set32(Equal, regT1, regT0, regT0);
+ else
+ set32(NotEqual, regT1, regT0, regT0);
+ emitTagAsBoolImmediate(regT0);
+
emitPutVirtualRegister(dst);
}
-void JIT::emitSlowScriptCheck()
+void JIT::emitTimeoutCheck()
{
- Jump skipTimeout = jnzSub32(Imm32(1), timeoutCheckRegister);
- emitCTICall(Interpreter::cti_timeout_check);
- move(X86::eax, timeoutCheckRegister);
+ Jump skipTimeout = branchSub32(NonZero, Imm32(1), timeoutCheckRegister);
+ JITStubCall(this, JITStubs::cti_timeout_check).call(timeoutCheckRegister);
skipTimeout.link(this);
killLastResultRegister();
@@ -268,20 +110,32 @@ void JIT::emitSlowScriptCheck()
m_bytecodeIndex += OPCODE_LENGTH(name); \
break;
-#define CTI_COMPILE_BINARY_OP(name) \
+#define DEFINE_BINARY_OP(name) \
+ case name: { \
+ JITStubCall stubCall(this, JITStubs::cti_##name); \
+ stubCall.addArgument(currentInstruction[2].u.operand, regT2); \
+ stubCall.addArgument(currentInstruction[3].u.operand, regT2); \
+ stubCall.call(currentInstruction[1].u.operand); \
+ NEXT_OPCODE(name); \
+ }
+
+#define DEFINE_UNARY_OP(name) \
case name: { \
- emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx); \
- emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 2, X86::ecx); \
- emitCTICall(Interpreter::cti_##name); \
- emitPutVirtualRegister(currentInstruction[1].u.operand); \
+ JITStubCall stubCall(this, JITStubs::cti_##name); \
+ stubCall.addArgument(currentInstruction[2].u.operand, regT2); \
+ stubCall.call(currentInstruction[1].u.operand); \
NEXT_OPCODE(name); \
}
-#define CTI_COMPILE_UNARY_OP(name) \
+#define DEFINE_OP(name) \
case name: { \
- emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx); \
- emitCTICall(Interpreter::cti_##name); \
- emitPutVirtualRegister(currentInstruction[1].u.operand); \
+ emit_##name(currentInstruction); \
+ NEXT_OPCODE(name); \
+ }
+
+#define DEFINE_SLOWCASE_OP(name) \
+ case name: { \
+ emitSlow_##name(currentInstruction, iter); \
NEXT_OPCODE(name); \
}
@@ -289,9 +143,10 @@ void JIT::privateCompileMainPass()
{
Instruction* instructionsBegin = m_codeBlock->instructions().begin();
unsigned instructionCount = m_codeBlock->instructions().size();
- unsigned propertyAccessInstructionIndex = 0;
- unsigned globalResolveInfoIndex = 0;
- unsigned callLinkInfoIndex = 0;
+
+ m_propertyAccessInstructionIndex = 0;
+ m_globalResolveInfoIndex = 0;
+ m_callLinkInfoIndex = 0;
for (m_bytecodeIndex = 0; m_bytecodeIndex < instructionCount; ) {
Instruction* currentInstruction = instructionsBegin + m_bytecodeIndex;
@@ -299,918 +154,126 @@ void JIT::privateCompileMainPass()
#if ENABLE(OPCODE_SAMPLING)
if (m_bytecodeIndex > 0) // Avoid the overhead of sampling op_enter twice.
- store32(m_interpreter->sampler()->encodeSample(currentInstruction), m_interpreter->sampler()->sampleSlot());
+ sampleInstruction(currentInstruction);
#endif
+ if (m_labels[m_bytecodeIndex].isUsed())
+ killLastResultRegister();
+
m_labels[m_bytecodeIndex] = label();
- OpcodeID opcodeID = m_interpreter->getOpcodeID(currentInstruction->u.opcode);
-
- switch (opcodeID) {
- case op_mov: {
- emitGetVirtualRegister(currentInstruction[2].u.operand, X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_mov);
- }
- case op_add: {
- compileFastArith_op_add(currentInstruction);
- NEXT_OPCODE(op_add);
- }
- case op_end: {
- if (m_codeBlock->needsFullScopeChain())
- emitCTICall(Interpreter::cti_op_end);
- emitGetVirtualRegister(currentInstruction[1].u.operand, X86::eax);
- push(Address(callFrameRegister, RegisterFile::ReturnPC * static_cast<int>(sizeof(Register))));
- ret();
- NEXT_OPCODE(op_end);
- }
- case op_jmp: {
- unsigned target = currentInstruction[1].u.operand;
- addJump(jump(), target + 1);
- NEXT_OPCODE(op_jmp);
- }
- case op_pre_inc: {
- compileFastArith_op_pre_inc(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_pre_inc);
- }
- case op_loop: {
- emitSlowScriptCheck();
-
- unsigned target = currentInstruction[1].u.operand;
- addJump(jump(), target + 1);
- NEXT_OPCODE(op_end);
- }
- case op_loop_if_less: {
- emitSlowScriptCheck();
-
- unsigned op1 = currentInstruction[1].u.operand;
- unsigned op2 = currentInstruction[2].u.operand;
- unsigned target = currentInstruction[3].u.operand;
- if (isOperandConstantImmediateInt(op2)) {
- emitGetVirtualRegister(op1, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
-#if USE(ALTERNATE_JSIMMEDIATE)
- int32_t op2imm = JSImmediate::intValue(getConstantOperand(op2));
-#else
- int32_t op2imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op2)));
-#endif
- addJump(jl32(X86::eax, Imm32(op2imm)), target + 3);
- } else {
- emitGetVirtualRegisters(op1, X86::eax, op2, X86::edx);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::edx);
- addJump(jl32(X86::eax, X86::edx), target + 3);
- }
- NEXT_OPCODE(op_loop_if_less);
- }
- case op_loop_if_lesseq: {
- emitSlowScriptCheck();
-
- unsigned op1 = currentInstruction[1].u.operand;
- unsigned op2 = currentInstruction[2].u.operand;
- unsigned target = currentInstruction[3].u.operand;
- if (isOperandConstantImmediateInt(op2)) {
- emitGetVirtualRegister(op1, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
-#if USE(ALTERNATE_JSIMMEDIATE)
- int32_t op2imm = JSImmediate::intValue(getConstantOperand(op2));
-#else
- int32_t op2imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op2)));
-#endif
- addJump(jle32(X86::eax, Imm32(op2imm)), target + 3);
- } else {
- emitGetVirtualRegisters(op1, X86::eax, op2, X86::edx);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::edx);
- addJump(jle32(X86::eax, X86::edx), target + 3);
- }
- NEXT_OPCODE(op_loop_if_less);
- }
- case op_new_object: {
- emitCTICall(Interpreter::cti_op_new_object);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_new_object);
- }
- case op_put_by_id: {
- compilePutByIdHotPath(currentInstruction[1].u.operand, &(m_codeBlock->identifier(currentInstruction[2].u.operand)), currentInstruction[3].u.operand, propertyAccessInstructionIndex++);
- NEXT_OPCODE(op_put_by_id);
- }
- case op_get_by_id: {
- compileGetByIdHotPath(currentInstruction[1].u.operand, currentInstruction[2].u.operand, &(m_codeBlock->identifier(currentInstruction[3].u.operand)), propertyAccessInstructionIndex++);
- NEXT_OPCODE(op_get_by_id);
- }
- case op_instanceof: {
- emitGetVirtualRegister(currentInstruction[2].u.operand, X86::eax); // value
- emitGetVirtualRegister(currentInstruction[3].u.operand, X86::ecx); // baseVal
- emitGetVirtualRegister(currentInstruction[4].u.operand, X86::edx); // proto
-
- // check if any are immediates
- move(X86::eax, X86::ebx);
- orPtr(X86::ecx, X86::ebx);
- orPtr(X86::edx, X86::ebx);
- emitJumpSlowCaseIfNotJSCell(X86::ebx);
-
- // check that all are object type - this is a bit of a bithack to avoid excess branching;
- // we check that the sum of the three type codes from Structures is exactly 3 * ObjectType,
- // this works because NumberType and StringType are smaller
- move(Imm32(3 * ObjectType), X86::ebx);
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), X86::eax);
- loadPtr(Address(X86::ecx, FIELD_OFFSET(JSCell, m_structure)), X86::ecx);
- loadPtr(Address(X86::edx, FIELD_OFFSET(JSCell, m_structure)), X86::edx);
- sub32(Address(X86::eax, FIELD_OFFSET(Structure, m_typeInfo.m_type)), X86::ebx);
- sub32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_type)), X86::ebx);
- addSlowCase(jne32(Address(X86::edx, FIELD_OFFSET(Structure, m_typeInfo.m_type)), X86::ebx));
-
- // check that baseVal's flags include ImplementsHasInstance but not OverridesHasInstance
- load32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), X86::ecx);
- and32(Imm32(ImplementsHasInstance | OverridesHasInstance), X86::ecx);
- addSlowCase(jne32(X86::ecx, Imm32(ImplementsHasInstance)));
-
- emitGetVirtualRegister(currentInstruction[2].u.operand, X86::ecx); // reload value
- emitGetVirtualRegister(currentInstruction[4].u.operand, X86::edx); // reload proto
-
- // optimistically load true result
- move(ImmPtr(JSValuePtr::encode(jsBoolean(true))), X86::eax);
-
- Label loop(this);
-
- // load value's prototype
- loadPtr(Address(X86::ecx, FIELD_OFFSET(JSCell, m_structure)), X86::ecx);
- loadPtr(Address(X86::ecx, FIELD_OFFSET(Structure, m_prototype)), X86::ecx);
-
- Jump exit = jePtr(X86::ecx, X86::edx);
-
- jnePtr(X86::ecx, ImmPtr(JSValuePtr::encode(jsNull())), loop);
-
- move(ImmPtr(JSValuePtr::encode(jsBoolean(false))), X86::eax);
-
- exit.link(this);
-
- emitPutVirtualRegister(currentInstruction[1].u.operand);
-
- NEXT_OPCODE(op_instanceof);
- }
- case op_del_by_id: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
- Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
- emitPutJITStubArgConstant(ident, 2);
- emitCTICall(Interpreter::cti_op_del_by_id);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_del_by_id);
- }
- case op_mul: {
- compileFastArith_op_mul(currentInstruction);
- NEXT_OPCODE(op_mul);
- }
- case op_new_func: {
- FuncDeclNode* func = m_codeBlock->function(currentInstruction[2].u.operand);
- emitPutJITStubArgConstant(func, 1);
- emitCTICall(Interpreter::cti_op_new_func);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_new_func);
- }
- case op_call: {
- compileOpCall(opcodeID, currentInstruction, callLinkInfoIndex++);
- NEXT_OPCODE(op_call);
- }
- case op_call_eval: {
- compileOpCall(opcodeID, currentInstruction, callLinkInfoIndex++);
- NEXT_OPCODE(op_call_eval);
- }
- case op_construct: {
- compileOpCall(opcodeID, currentInstruction, callLinkInfoIndex++);
- NEXT_OPCODE(op_construct);
- }
- case op_get_global_var: {
- JSVariableObject* globalObject = static_cast<JSVariableObject*>(currentInstruction[2].u.jsCell);
- move(ImmPtr(globalObject), X86::eax);
- emitGetVariableObjectRegister(X86::eax, currentInstruction[3].u.operand, X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_get_global_var);
- }
- case op_put_global_var: {
- emitGetVirtualRegister(currentInstruction[3].u.operand, X86::edx);
- JSVariableObject* globalObject = static_cast<JSVariableObject*>(currentInstruction[1].u.jsCell);
- move(ImmPtr(globalObject), X86::eax);
- emitPutVariableObjectRegister(X86::edx, X86::eax, currentInstruction[2].u.operand);
- NEXT_OPCODE(op_put_global_var);
- }
- case op_get_scoped_var: {
- int skip = currentInstruction[3].u.operand + m_codeBlock->needsFullScopeChain();
-
- emitGetFromCallFrameHeader(RegisterFile::ScopeChain, X86::eax);
- while (skip--)
- loadPtr(Address(X86::eax, FIELD_OFFSET(ScopeChainNode, next)), X86::eax);
-
- loadPtr(Address(X86::eax, FIELD_OFFSET(ScopeChainNode, object)), X86::eax);
- emitGetVariableObjectRegister(X86::eax, currentInstruction[2].u.operand, X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_get_scoped_var);
- }
- case op_put_scoped_var: {
- int skip = currentInstruction[2].u.operand + m_codeBlock->needsFullScopeChain();
-
- emitGetFromCallFrameHeader(RegisterFile::ScopeChain, X86::edx);
- emitGetVirtualRegister(currentInstruction[3].u.operand, X86::eax);
- while (skip--)
- loadPtr(Address(X86::edx, FIELD_OFFSET(ScopeChainNode, next)), X86::edx);
-
- loadPtr(Address(X86::edx, FIELD_OFFSET(ScopeChainNode, object)), X86::edx);
- emitPutVariableObjectRegister(X86::eax, X86::edx, currentInstruction[1].u.operand);
- NEXT_OPCODE(op_put_scoped_var);
- }
- case op_tear_off_activation: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
- emitCTICall(Interpreter::cti_op_tear_off_activation);
- NEXT_OPCODE(op_tear_off_activation);
- }
- case op_tear_off_arguments: {
- emitCTICall(Interpreter::cti_op_tear_off_arguments);
- NEXT_OPCODE(op_tear_off_arguments);
- }
- case op_ret: {
- // We could JIT generate the deref, only calling out to C when the refcount hits zero.
- if (m_codeBlock->needsFullScopeChain())
- emitCTICall(Interpreter::cti_op_ret_scopeChain);
-
- // Return the result in %eax.
- emitGetVirtualRegister(currentInstruction[1].u.operand, X86::eax);
-
- // Grab the return address.
- emitGetFromCallFrameHeader(RegisterFile::ReturnPC, X86::edx);
-
- // Restore our caller's "r".
- emitGetFromCallFrameHeader(RegisterFile::CallerFrame, callFrameRegister);
-
- // Return.
- push(X86::edx);
- ret();
-
- NEXT_OPCODE(op_ret);
- }
- case op_new_array: {
- emitPutJITStubArgConstant(currentInstruction[2].u.operand, 1);
- emitPutJITStubArgConstant(currentInstruction[3].u.operand, 2);
- emitCTICall(Interpreter::cti_op_new_array);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_new_array);
- }
- case op_resolve: {
- Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
- emitPutJITStubArgConstant(ident, 1);
- emitCTICall(Interpreter::cti_op_resolve);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_resolve);
- }
- case op_construct_verify: {
- emitGetVirtualRegister(currentInstruction[1].u.operand, X86::eax);
- emitJumpSlowCaseIfNotJSCell(X86::eax);
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), X86::ecx);
- addSlowCase(jne32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo) + FIELD_OFFSET(TypeInfo, m_type)), Imm32(ObjectType)));
+ switch (m_interpreter->getOpcodeID(currentInstruction->u.opcode)) {
+ DEFINE_BINARY_OP(op_del_by_val)
+ DEFINE_BINARY_OP(op_div)
+ DEFINE_BINARY_OP(op_in)
+ DEFINE_BINARY_OP(op_less)
+ DEFINE_BINARY_OP(op_lesseq)
+ DEFINE_BINARY_OP(op_urshift)
+ DEFINE_UNARY_OP(op_get_pnames)
+ DEFINE_UNARY_OP(op_is_boolean)
+ DEFINE_UNARY_OP(op_is_function)
+ DEFINE_UNARY_OP(op_is_number)
+ DEFINE_UNARY_OP(op_is_object)
+ DEFINE_UNARY_OP(op_is_string)
+ DEFINE_UNARY_OP(op_is_undefined)
+ DEFINE_UNARY_OP(op_negate)
+ DEFINE_UNARY_OP(op_typeof)
+
+ DEFINE_OP(op_add)
+ DEFINE_OP(op_bitand)
+ DEFINE_OP(op_bitnot)
+ DEFINE_OP(op_bitor)
+ DEFINE_OP(op_bitxor)
+ DEFINE_OP(op_call)
+ DEFINE_OP(op_call_eval)
+ DEFINE_OP(op_call_varargs)
+ DEFINE_OP(op_catch)
+ DEFINE_OP(op_construct)
+ DEFINE_OP(op_construct_verify)
+ DEFINE_OP(op_convert_this)
+ DEFINE_OP(op_init_arguments)
+ DEFINE_OP(op_create_arguments)
+ DEFINE_OP(op_debug)
+ DEFINE_OP(op_del_by_id)
+ DEFINE_OP(op_end)
+ DEFINE_OP(op_enter)
+ DEFINE_OP(op_enter_with_activation)
+ DEFINE_OP(op_eq)
+ DEFINE_OP(op_eq_null)
+ DEFINE_OP(op_get_by_id)
+ DEFINE_OP(op_get_by_val)
+ DEFINE_OP(op_get_global_var)
+ DEFINE_OP(op_get_scoped_var)
+ DEFINE_OP(op_instanceof)
+ DEFINE_OP(op_jeq_null)
+ DEFINE_OP(op_jfalse)
+ DEFINE_OP(op_jmp)
+ DEFINE_OP(op_jmp_scopes)
+ DEFINE_OP(op_jneq_null)
+ DEFINE_OP(op_jneq_ptr)
+ DEFINE_OP(op_jnless)
+ DEFINE_OP(op_jnlesseq)
+ DEFINE_OP(op_jsr)
+ DEFINE_OP(op_jtrue)
+ DEFINE_OP(op_load_varargs)
+ DEFINE_OP(op_loop)
+ DEFINE_OP(op_loop_if_less)
+ DEFINE_OP(op_loop_if_lesseq)
+ DEFINE_OP(op_loop_if_true)
+ DEFINE_OP(op_lshift)
+ DEFINE_OP(op_method_check)
+ DEFINE_OP(op_mod)
+ DEFINE_OP(op_mov)
+ DEFINE_OP(op_mul)
+ DEFINE_OP(op_neq)
+ DEFINE_OP(op_neq_null)
+ DEFINE_OP(op_new_array)
+ DEFINE_OP(op_new_error)
+ DEFINE_OP(op_new_func)
+ DEFINE_OP(op_new_func_exp)
+ DEFINE_OP(op_new_object)
+ DEFINE_OP(op_new_regexp)
+ DEFINE_OP(op_next_pname)
+ DEFINE_OP(op_not)
+ DEFINE_OP(op_nstricteq)
+ DEFINE_OP(op_pop_scope)
+ DEFINE_OP(op_post_dec)
+ DEFINE_OP(op_post_inc)
+ DEFINE_OP(op_pre_dec)
+ DEFINE_OP(op_pre_inc)
+ DEFINE_OP(op_profile_did_call)
+ DEFINE_OP(op_profile_will_call)
+ DEFINE_OP(op_push_new_scope)
+ DEFINE_OP(op_push_scope)
+ DEFINE_OP(op_put_by_id)
+ DEFINE_OP(op_put_by_index)
+ DEFINE_OP(op_put_by_val)
+ DEFINE_OP(op_put_getter)
+ DEFINE_OP(op_put_global_var)
+ DEFINE_OP(op_put_scoped_var)
+ DEFINE_OP(op_put_setter)
+ DEFINE_OP(op_resolve)
+ DEFINE_OP(op_resolve_base)
+ DEFINE_OP(op_resolve_func)
+ DEFINE_OP(op_resolve_global)
+ DEFINE_OP(op_resolve_skip)
+ DEFINE_OP(op_resolve_with_base)
+ DEFINE_OP(op_ret)
+ DEFINE_OP(op_rshift)
+ DEFINE_OP(op_sret)
+ DEFINE_OP(op_strcat)
+ DEFINE_OP(op_stricteq)
+ DEFINE_OP(op_sub)
+ DEFINE_OP(op_switch_char)
+ DEFINE_OP(op_switch_imm)
+ DEFINE_OP(op_switch_string)
+ DEFINE_OP(op_tear_off_activation)
+ DEFINE_OP(op_tear_off_arguments)
+ DEFINE_OP(op_throw)
+ DEFINE_OP(op_to_jsnumber)
+ DEFINE_OP(op_to_primitive)
+ DEFINE_OP(op_unexpected_load)
- NEXT_OPCODE(op_construct_verify);
- }
- case op_get_by_val: {
- emitGetVirtualRegisters(currentInstruction[2].u.operand, X86::eax, currentInstruction[3].u.operand, X86::edx);
- emitJumpSlowCaseIfNotImmNum(X86::edx);
-#if USE(ALTERNATE_JSIMMEDIATE)
- // This is technically incorrect - we're zero-extending an int32. On the hot path this doesn't matter.
- // We check the value as if it was a uint32 against the m_fastAccessCutoff - which will always fail if
- // number was signed since m_fastAccessCutoff is always less than intmax (since the total allocation
- // size is always less than 4Gb). As such zero extending wil have been correct (and extending the value
- // to 64-bits is necessary since it's used in the address calculation. We zero extend rather than sign
- // extending since it makes it easier to re-tag the value in the slow case.
- zeroExtend32ToPtr(X86::edx, X86::edx);
-#else
- emitFastArithImmToInt(X86::edx);
-#endif
- emitJumpSlowCaseIfNotJSCell(X86::eax);
- addSlowCase(jnePtr(Address(X86::eax), ImmPtr(m_interpreter->m_jsArrayVptr)));
-
- // This is an array; get the m_storage pointer into ecx, then check if the index is below the fast cutoff
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSArray, m_storage)), X86::ecx);
- addSlowCase(jae32(X86::edx, Address(X86::eax, FIELD_OFFSET(JSArray, m_fastAccessCutoff))));
-
- // Get the value from the vector
- loadPtr(BaseIndex(X86::ecx, X86::edx, ScalePtr, FIELD_OFFSET(ArrayStorage, m_vector[0])), X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_get_by_val);
- }
- case op_resolve_func: {
- Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
- emitPutJITStubArgConstant(ident, 1);
- emitCTICall(Interpreter::cti_op_resolve_func);
- emitPutVirtualRegister(currentInstruction[2].u.operand, X86::edx);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_resolve_func);
- }
- case op_sub: {
- compileBinaryArithOp(op_sub, currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand, OperandTypes::fromInt(currentInstruction[4].u.operand));
- NEXT_OPCODE(op_sub);
- }
- case op_put_by_val: {
- emitGetVirtualRegisters(currentInstruction[1].u.operand, X86::eax, currentInstruction[2].u.operand, X86::edx);
- emitJumpSlowCaseIfNotImmNum(X86::edx);
-#if USE(ALTERNATE_JSIMMEDIATE)
- // See comment in op_get_by_val.
- zeroExtend32ToPtr(X86::edx, X86::edx);
-#else
- emitFastArithImmToInt(X86::edx);
-#endif
- emitJumpSlowCaseIfNotJSCell(X86::eax);
- addSlowCase(jnePtr(Address(X86::eax), ImmPtr(m_interpreter->m_jsArrayVptr)));
-
- // This is an array; get the m_storage pointer into ecx, then check if the index is below the fast cutoff
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSArray, m_storage)), X86::ecx);
- Jump inFastVector = jb32(X86::edx, Address(X86::eax, FIELD_OFFSET(JSArray, m_fastAccessCutoff)));
- // No; oh well, check if the access if within the vector - if so, we may still be okay.
- addSlowCase(jae32(X86::edx, Address(X86::ecx, FIELD_OFFSET(ArrayStorage, m_vectorLength))));
-
- // This is a write to the slow part of the vector; first, we have to check if this would be the first write to this location.
- // FIXME: should be able to handle initial write to array; increment the the number of items in the array, and potentially update fast access cutoff.
- addSlowCase(jzPtr(BaseIndex(X86::ecx, X86::edx, ScalePtr, FIELD_OFFSET(ArrayStorage, m_vector[0]))));
-
- // All good - put the value into the array.
- inFastVector.link(this);
- emitGetVirtualRegister(currentInstruction[3].u.operand, X86::eax);
- storePtr(X86::eax, BaseIndex(X86::ecx, X86::edx, ScalePtr, FIELD_OFFSET(ArrayStorage, m_vector[0])));
- NEXT_OPCODE(op_put_by_val);
- }
- CTI_COMPILE_BINARY_OP(op_lesseq)
- case op_loop_if_true: {
- emitSlowScriptCheck();
-
- unsigned target = currentInstruction[2].u.operand;
- emitGetVirtualRegister(currentInstruction[1].u.operand, X86::eax);
-
- Jump isZero = jePtr(X86::eax, ImmPtr(JSValuePtr::encode(JSImmediate::zeroImmediate())));
- addJump(emitJumpIfImmNum(X86::eax), target + 2);
-
- addJump(jePtr(X86::eax, ImmPtr(JSValuePtr::encode(jsBoolean(true)))), target + 2);
- addSlowCase(jnePtr(X86::eax, ImmPtr(JSValuePtr::encode(jsBoolean(false)))));
-
- isZero.link(this);
- NEXT_OPCODE(op_loop_if_true);
- };
- case op_resolve_base: {
- Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
- emitPutJITStubArgConstant(ident, 1);
- emitCTICall(Interpreter::cti_op_resolve_base);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_resolve_base);
- }
- case op_negate: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
- emitCTICall(Interpreter::cti_op_negate);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_negate);
- }
- case op_resolve_skip: {
- Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
- emitPutJITStubArgConstant(ident, 1);
- emitPutJITStubArgConstant(currentInstruction[3].u.operand + m_codeBlock->needsFullScopeChain(), 2);
- emitCTICall(Interpreter::cti_op_resolve_skip);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_resolve_skip);
- }
- case op_resolve_global: {
- // Fast case
- void* globalObject = currentInstruction[2].u.jsCell;
- Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
-
- unsigned currentIndex = globalResolveInfoIndex++;
- void* structureAddress = &(m_codeBlock->globalResolveInfo(currentIndex).structure);
- void* offsetAddr = &(m_codeBlock->globalResolveInfo(currentIndex).offset);
-
- // Check Structure of global object
- move(ImmPtr(globalObject), X86::eax);
- loadPtr(structureAddress, X86::edx);
- Jump noMatch = jnePtr(X86::edx, Address(X86::eax, FIELD_OFFSET(JSCell, m_structure))); // Structures don't match
-
- // Load cached property
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSGlobalObject, m_propertyStorage)), X86::eax);
- load32(offsetAddr, X86::edx);
- loadPtr(BaseIndex(X86::eax, X86::edx, ScalePtr), X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- Jump end = jump();
-
- // Slow case
- noMatch.link(this);
- emitPutJITStubArgConstant(globalObject, 1);
- emitPutJITStubArgConstant(ident, 2);
- emitPutJITStubArgConstant(currentIndex, 3);
- emitCTICall(Interpreter::cti_op_resolve_global);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- end.link(this);
- NEXT_OPCODE(op_resolve_global);
- }
- CTI_COMPILE_BINARY_OP(op_div)
- case op_pre_dec: {
- compileFastArith_op_pre_dec(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_pre_dec);
- }
- case op_jnless: {
- unsigned op1 = currentInstruction[1].u.operand;
- unsigned op2 = currentInstruction[2].u.operand;
- unsigned target = currentInstruction[3].u.operand;
- if (isOperandConstantImmediateInt(op2)) {
- emitGetVirtualRegister(op1, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
-#if USE(ALTERNATE_JSIMMEDIATE)
- int32_t op2imm = JSImmediate::intValue(getConstantOperand(op2));
-#else
- int32_t op2imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op2)));
-#endif
- addJump(jge32(X86::eax, Imm32(op2imm)), target + 3);
- } else {
- emitGetVirtualRegisters(op1, X86::eax, op2, X86::edx);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::edx);
- addJump(jge32(X86::eax, X86::edx), target + 3);
- }
- NEXT_OPCODE(op_jnless);
- }
- case op_not: {
- emitGetVirtualRegister(currentInstruction[2].u.operand, X86::eax);
- xorPtr(Imm32(static_cast<int32_t>(JSImmediate::FullTagTypeBool)), X86::eax);
- addSlowCase(jnzPtr(X86::eax, Imm32(static_cast<int32_t>(~JSImmediate::ExtendedPayloadBitBoolValue))));
- xorPtr(Imm32(static_cast<int32_t>(JSImmediate::FullTagTypeBool | JSImmediate::ExtendedPayloadBitBoolValue)), X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_not);
- }
- case op_jfalse: {
- unsigned target = currentInstruction[2].u.operand;
- emitGetVirtualRegister(currentInstruction[1].u.operand, X86::eax);
-
- addJump(jePtr(X86::eax, ImmPtr(JSValuePtr::encode(JSImmediate::zeroImmediate()))), target + 2);
- Jump isNonZero = emitJumpIfImmNum(X86::eax);
-
- addJump(jePtr(X86::eax, ImmPtr(JSValuePtr::encode(jsBoolean(false)))), target + 2);
- addSlowCase(jnePtr(X86::eax, ImmPtr(JSValuePtr::encode(jsBoolean(true)))));
-
- isNonZero.link(this);
- NEXT_OPCODE(op_jfalse);
- };
- case op_jeq_null: {
- unsigned src = currentInstruction[1].u.operand;
- unsigned target = currentInstruction[2].u.operand;
-
- emitGetVirtualRegister(src, X86::eax);
- Jump isImmediate = emitJumpIfNotJSCell(X86::eax);
-
- // First, handle JSCell cases - check MasqueradesAsUndefined bit on the structure.
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), X86::ecx);
- addJump(jnz32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(MasqueradesAsUndefined)), target + 2);
- Jump wasNotImmediate = jump();
-
- // Now handle the immediate cases - undefined & null
- isImmediate.link(this);
- and32(Imm32(~JSImmediate::ExtendedTagBitUndefined), X86::eax);
- addJump(jePtr(X86::eax, ImmPtr(JSValuePtr::encode(jsNull()))), target + 2);
-
- wasNotImmediate.link(this);
- NEXT_OPCODE(op_jeq_null);
- };
- case op_jneq_null: {
- unsigned src = currentInstruction[1].u.operand;
- unsigned target = currentInstruction[2].u.operand;
-
- emitGetVirtualRegister(src, X86::eax);
- Jump isImmediate = emitJumpIfNotJSCell(X86::eax);
-
- // First, handle JSCell cases - check MasqueradesAsUndefined bit on the structure.
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), X86::ecx);
- addJump(jz32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(MasqueradesAsUndefined)), target + 2);
- Jump wasNotImmediate = jump();
-
- // Now handle the immediate cases - undefined & null
- isImmediate.link(this);
- and32(Imm32(~JSImmediate::ExtendedTagBitUndefined), X86::eax);
- addJump(jnePtr(X86::eax, ImmPtr(JSValuePtr::encode(jsNull()))), target + 2);
-
- wasNotImmediate.link(this);
- NEXT_OPCODE(op_jneq_null);
- }
- case op_post_inc: {
- compileFastArith_op_post_inc(currentInstruction[1].u.operand, currentInstruction[2].u.operand);
- NEXT_OPCODE(op_post_inc);
- }
- case op_unexpected_load: {
- JSValuePtr v = m_codeBlock->unexpectedConstant(currentInstruction[2].u.operand);
- move(ImmPtr(JSValuePtr::encode(v)), X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_unexpected_load);
- }
- case op_jsr: {
- int retAddrDst = currentInstruction[1].u.operand;
- int target = currentInstruction[2].u.operand;
- DataLabelPtr storeLocation = storePtrWithPatch(Address(callFrameRegister, sizeof(Register) * retAddrDst));
- addJump(jump(), target + 2);
- m_jsrSites.append(JSRInfo(storeLocation, label()));
- NEXT_OPCODE(op_jsr);
- }
- case op_sret: {
- jump(Address(callFrameRegister, sizeof(Register) * currentInstruction[1].u.operand));
- NEXT_OPCODE(op_sret);
- }
- case op_eq: {
- emitGetVirtualRegisters(currentInstruction[2].u.operand, X86::eax, currentInstruction[3].u.operand, X86::edx);
- emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, X86::ecx);
- sete32(X86::edx, X86::eax);
- emitTagAsBoolImmediate(X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_eq);
- }
- case op_lshift: {
- compileFastArith_op_lshift(currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand);
- NEXT_OPCODE(op_lshift);
- }
- case op_bitand: {
- compileFastArith_op_bitand(currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand);
- NEXT_OPCODE(op_bitand);
- }
- case op_rshift: {
- compileFastArith_op_rshift(currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand);
- NEXT_OPCODE(op_rshift);
- }
- case op_bitnot: {
- emitGetVirtualRegister(currentInstruction[2].u.operand, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
-#if USE(ALTERNATE_JSIMMEDIATE)
- not32(X86::eax);
- emitFastArithIntToImmNoCheck(X86::eax, X86::eax);
-#else
- xorPtr(Imm32(~JSImmediate::TagTypeInteger), X86::eax);
-#endif
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_bitnot);
- }
- case op_resolve_with_base: {
- Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
- emitPutJITStubArgConstant(ident, 1);
- emitCTICall(Interpreter::cti_op_resolve_with_base);
- emitPutVirtualRegister(currentInstruction[2].u.operand, X86::edx);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_resolve_with_base);
- }
- case op_new_func_exp: {
- FuncExprNode* func = m_codeBlock->functionExpression(currentInstruction[2].u.operand);
- emitPutJITStubArgConstant(func, 1);
- emitCTICall(Interpreter::cti_op_new_func_exp);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_new_func_exp);
- }
- case op_mod: {
- compileFastArith_op_mod(currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand);
- NEXT_OPCODE(op_mod);
- }
- case op_jtrue: {
- unsigned target = currentInstruction[2].u.operand;
- emitGetVirtualRegister(currentInstruction[1].u.operand, X86::eax);
-
- Jump isZero = jePtr(X86::eax, ImmPtr(JSValuePtr::encode(JSImmediate::zeroImmediate())));
- addJump(emitJumpIfImmNum(X86::eax), target + 2);
-
- addJump(jePtr(X86::eax, ImmPtr(JSValuePtr::encode(jsBoolean(true)))), target + 2);
- addSlowCase(jnePtr(X86::eax, ImmPtr(JSValuePtr::encode(jsBoolean(false)))));
-
- isZero.link(this);
- NEXT_OPCODE(op_jtrue);
- }
- CTI_COMPILE_BINARY_OP(op_less)
- case op_neq: {
- emitGetVirtualRegisters(currentInstruction[2].u.operand, X86::eax, currentInstruction[3].u.operand, X86::edx);
- emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, X86::ecx);
- setne32(X86::edx, X86::eax);
- emitTagAsBoolImmediate(X86::eax);
-
- emitPutVirtualRegister(currentInstruction[1].u.operand);
-
- NEXT_OPCODE(op_neq);
- }
- case op_post_dec: {
- compileFastArith_op_post_dec(currentInstruction[1].u.operand, currentInstruction[2].u.operand);
- NEXT_OPCODE(op_post_dec);
- }
- CTI_COMPILE_BINARY_OP(op_urshift)
- case op_bitxor: {
- emitGetVirtualRegisters(currentInstruction[2].u.operand, X86::eax, currentInstruction[3].u.operand, X86::edx);
- emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, X86::ecx);
- xorPtr(X86::edx, X86::eax);
- emitFastArithReTagImmediate(X86::eax, X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_bitxor);
- }
- case op_new_regexp: {
- RegExp* regExp = m_codeBlock->regexp(currentInstruction[2].u.operand);
- emitPutJITStubArgConstant(regExp, 1);
- emitCTICall(Interpreter::cti_op_new_regexp);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_new_regexp);
- }
- case op_bitor: {
- emitGetVirtualRegisters(currentInstruction[2].u.operand, X86::eax, currentInstruction[3].u.operand, X86::edx);
- emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, X86::ecx);
- orPtr(X86::edx, X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_bitor);
- }
- case op_throw: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
- emitCTICall(Interpreter::cti_op_throw);
-#if PLATFORM(X86_64)
- addPtr(Imm32(0x38), X86::esp);
- pop(X86::ebx);
- pop(X86::r13);
- pop(X86::r12);
- pop(X86::ebp);
- ret();
-#else
- addPtr(Imm32(0x1c), X86::esp);
- pop(X86::ebx);
- pop(X86::edi);
- pop(X86::esi);
- pop(X86::ebp);
- ret();
-#endif
- NEXT_OPCODE(op_throw);
- }
- case op_get_pnames: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
- emitCTICall(Interpreter::cti_op_get_pnames);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_get_pnames);
- }
- case op_next_pname: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
- unsigned target = currentInstruction[3].u.operand;
- emitCTICall(Interpreter::cti_op_next_pname);
- Jump endOfIter = jzPtr(X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- addJump(jump(), target + 3);
- endOfIter.link(this);
- NEXT_OPCODE(op_next_pname);
- }
- case op_push_scope: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
- emitCTICall(Interpreter::cti_op_push_scope);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_push_scope);
- }
- case op_pop_scope: {
- emitCTICall(Interpreter::cti_op_pop_scope);
- NEXT_OPCODE(op_pop_scope);
- }
- CTI_COMPILE_UNARY_OP(op_typeof)
- CTI_COMPILE_UNARY_OP(op_is_undefined)
- CTI_COMPILE_UNARY_OP(op_is_boolean)
- CTI_COMPILE_UNARY_OP(op_is_number)
- CTI_COMPILE_UNARY_OP(op_is_string)
- CTI_COMPILE_UNARY_OP(op_is_object)
- CTI_COMPILE_UNARY_OP(op_is_function)
- case op_stricteq: {
- compileOpStrictEq(currentInstruction, OpStrictEq);
- NEXT_OPCODE(op_stricteq);
- }
- case op_nstricteq: {
- compileOpStrictEq(currentInstruction, OpNStrictEq);
- NEXT_OPCODE(op_nstricteq);
- }
- case op_to_jsnumber: {
- int srcVReg = currentInstruction[2].u.operand;
- emitGetVirtualRegister(srcVReg, X86::eax);
-
- Jump wasImmediate = emitJumpIfImmNum(X86::eax);
-
- emitJumpSlowCaseIfNotJSCell(X86::eax, srcVReg);
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), X86::ecx);
- addSlowCase(jne32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_type)), Imm32(NumberType)));
-
- wasImmediate.link(this);
-
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_to_jsnumber);
- }
- CTI_COMPILE_BINARY_OP(op_in)
- case op_push_new_scope: {
- Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
- emitPutJITStubArgConstant(ident, 1);
- emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 2, X86::ecx);
- emitCTICall(Interpreter::cti_op_push_new_scope);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_push_new_scope);
- }
- case op_catch: {
- emitGetCTIParam(STUB_ARGS_callFrame, callFrameRegister);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_catch);
- }
- case op_jmp_scopes: {
- unsigned count = currentInstruction[1].u.operand;
- emitPutJITStubArgConstant(count, 1);
- emitCTICall(Interpreter::cti_op_jmp_scopes);
- unsigned target = currentInstruction[2].u.operand;
- addJump(jump(), target + 2);
- NEXT_OPCODE(op_jmp_scopes);
- }
- case op_put_by_index: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
- emitPutJITStubArgConstant(currentInstruction[2].u.operand, 2);
- emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 3, X86::ecx);
- emitCTICall(Interpreter::cti_op_put_by_index);
- NEXT_OPCODE(op_put_by_index);
- }
- case op_switch_imm: {
- unsigned tableIndex = currentInstruction[1].u.operand;
- unsigned defaultOffset = currentInstruction[2].u.operand;
- unsigned scrutinee = currentInstruction[3].u.operand;
-
- // create jump table for switch destinations, track this switch statement.
- SimpleJumpTable* jumpTable = &m_codeBlock->immediateSwitchJumpTable(tableIndex);
- m_switches.append(SwitchRecord(jumpTable, m_bytecodeIndex, defaultOffset, SwitchRecord::Immediate));
- jumpTable->ctiOffsets.grow(jumpTable->branchOffsets.size());
-
- emitPutJITStubArgFromVirtualRegister(scrutinee, 1, X86::ecx);
- emitPutJITStubArgConstant(tableIndex, 2);
- emitCTICall(Interpreter::cti_op_switch_imm);
- jump(X86::eax);
- NEXT_OPCODE(op_switch_imm);
- }
- case op_switch_char: {
- unsigned tableIndex = currentInstruction[1].u.operand;
- unsigned defaultOffset = currentInstruction[2].u.operand;
- unsigned scrutinee = currentInstruction[3].u.operand;
-
- // create jump table for switch destinations, track this switch statement.
- SimpleJumpTable* jumpTable = &m_codeBlock->characterSwitchJumpTable(tableIndex);
- m_switches.append(SwitchRecord(jumpTable, m_bytecodeIndex, defaultOffset, SwitchRecord::Character));
- jumpTable->ctiOffsets.grow(jumpTable->branchOffsets.size());
-
- emitPutJITStubArgFromVirtualRegister(scrutinee, 1, X86::ecx);
- emitPutJITStubArgConstant(tableIndex, 2);
- emitCTICall(Interpreter::cti_op_switch_char);
- jump(X86::eax);
- NEXT_OPCODE(op_switch_char);
- }
- case op_switch_string: {
- unsigned tableIndex = currentInstruction[1].u.operand;
- unsigned defaultOffset = currentInstruction[2].u.operand;
- unsigned scrutinee = currentInstruction[3].u.operand;
-
- // create jump table for switch destinations, track this switch statement.
- StringJumpTable* jumpTable = &m_codeBlock->stringSwitchJumpTable(tableIndex);
- m_switches.append(SwitchRecord(jumpTable, m_bytecodeIndex, defaultOffset));
-
- emitPutJITStubArgFromVirtualRegister(scrutinee, 1, X86::ecx);
- emitPutJITStubArgConstant(tableIndex, 2);
- emitCTICall(Interpreter::cti_op_switch_string);
- jump(X86::eax);
- NEXT_OPCODE(op_switch_string);
- }
- case op_del_by_val: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
- emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 2, X86::ecx);
- emitCTICall(Interpreter::cti_op_del_by_val);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_del_by_val);
- }
- case op_put_getter: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
- Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
- emitPutJITStubArgConstant(ident, 2);
- emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 3, X86::ecx);
- emitCTICall(Interpreter::cti_op_put_getter);
- NEXT_OPCODE(op_put_getter);
- }
- case op_put_setter: {
- emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::ecx);
- Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
- emitPutJITStubArgConstant(ident, 2);
- emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 3, X86::ecx);
- emitCTICall(Interpreter::cti_op_put_setter);
- NEXT_OPCODE(op_put_setter);
- }
- case op_new_error: {
- JSValuePtr message = m_codeBlock->unexpectedConstant(currentInstruction[3].u.operand);
- emitPutJITStubArgConstant(currentInstruction[2].u.operand, 1);
- emitPutJITStubArgConstant(JSValuePtr::encode(message), 2);
- emitPutJITStubArgConstant(m_bytecodeIndex, 3);
- emitCTICall(Interpreter::cti_op_new_error);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_new_error);
- }
- case op_debug: {
- emitPutJITStubArgConstant(currentInstruction[1].u.operand, 1);
- emitPutJITStubArgConstant(currentInstruction[2].u.operand, 2);
- emitPutJITStubArgConstant(currentInstruction[3].u.operand, 3);
- emitCTICall(Interpreter::cti_op_debug);
- NEXT_OPCODE(op_debug);
- }
- case op_eq_null: {
- unsigned dst = currentInstruction[1].u.operand;
- unsigned src1 = currentInstruction[2].u.operand;
-
- emitGetVirtualRegister(src1, X86::eax);
- Jump isImmediate = emitJumpIfNotJSCell(X86::eax);
-
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), X86::ecx);
- setnz32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(MasqueradesAsUndefined), X86::eax);
-
- Jump wasNotImmediate = jump();
-
- isImmediate.link(this);
-
- and32(Imm32(~JSImmediate::ExtendedTagBitUndefined), X86::eax);
- sete32(Imm32(JSImmediate::FullTagTypeNull), X86::eax);
-
- wasNotImmediate.link(this);
-
- emitTagAsBoolImmediate(X86::eax);
- emitPutVirtualRegister(dst);
-
- NEXT_OPCODE(op_eq_null);
- }
- case op_neq_null: {
- unsigned dst = currentInstruction[1].u.operand;
- unsigned src1 = currentInstruction[2].u.operand;
-
- emitGetVirtualRegister(src1, X86::eax);
- Jump isImmediate = emitJumpIfNotJSCell(X86::eax);
-
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), X86::ecx);
- setz32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(MasqueradesAsUndefined), X86::eax);
-
- Jump wasNotImmediate = jump();
-
- isImmediate.link(this);
-
- and32(Imm32(~JSImmediate::ExtendedTagBitUndefined), X86::eax);
- setne32(Imm32(JSImmediate::FullTagTypeNull), X86::eax);
-
- wasNotImmediate.link(this);
-
- emitTagAsBoolImmediate(X86::eax);
- emitPutVirtualRegister(dst);
-
- NEXT_OPCODE(op_neq_null);
- }
- case op_enter: {
- // Even though CTI doesn't use them, we initialize our constant
- // registers to zap stale pointers, to avoid unnecessarily prolonging
- // object lifetime and increasing GC pressure.
- size_t count = m_codeBlock->m_numVars + m_codeBlock->numberOfConstantRegisters();
- for (size_t j = 0; j < count; ++j)
- emitInitRegister(j);
-
- NEXT_OPCODE(op_enter);
- }
- case op_enter_with_activation: {
- // Even though CTI doesn't use them, we initialize our constant
- // registers to zap stale pointers, to avoid unnecessarily prolonging
- // object lifetime and increasing GC pressure.
- size_t count = m_codeBlock->m_numVars + m_codeBlock->numberOfConstantRegisters();
- for (size_t j = 0; j < count; ++j)
- emitInitRegister(j);
-
- emitCTICall(Interpreter::cti_op_push_activation);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
-
- NEXT_OPCODE(op_enter_with_activation);
- }
- case op_create_arguments: {
- if (m_codeBlock->m_numParameters == 1)
- emitCTICall(Interpreter::cti_op_create_arguments_no_params);
- else
- emitCTICall(Interpreter::cti_op_create_arguments);
- NEXT_OPCODE(op_create_arguments);
- }
- case op_convert_this: {
- emitGetVirtualRegister(currentInstruction[1].u.operand, X86::eax);
-
- emitJumpSlowCaseIfNotJSCell(X86::eax);
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), X86::edx);
- addSlowCase(jnz32(Address(X86::edx, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(NeedsThisConversion)));
-
- NEXT_OPCODE(op_convert_this);
- }
- case op_profile_will_call: {
- emitGetCTIParam(STUB_ARGS_profilerReference, X86::eax);
- Jump noProfiler = jzPtr(Address(X86::eax));
- emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::eax);
- emitCTICall(Interpreter::cti_op_profile_will_call);
- noProfiler.link(this);
-
- NEXT_OPCODE(op_profile_will_call);
- }
- case op_profile_did_call: {
- emitGetCTIParam(STUB_ARGS_profilerReference, X86::eax);
- Jump noProfiler = jzPtr(Address(X86::eax));
- emitPutJITStubArgFromVirtualRegister(currentInstruction[1].u.operand, 1, X86::eax);
- emitCTICall(Interpreter::cti_op_profile_did_call);
- noProfiler.link(this);
-
- NEXT_OPCODE(op_profile_did_call);
- }
case op_get_array_length:
case op_get_by_id_chain:
case op_get_by_id_generic:
@@ -1226,11 +289,11 @@ void JIT::privateCompileMainPass()
}
}
- ASSERT(propertyAccessInstructionIndex == m_codeBlock->numberOfStructureStubInfos());
- ASSERT(callLinkInfoIndex == m_codeBlock->numberOfCallLinkInfos());
+ ASSERT(m_propertyAccessInstructionIndex == m_codeBlock->numberOfStructureStubInfos());
+ ASSERT(m_callLinkInfoIndex == m_codeBlock->numberOfCallLinkInfos());
#ifndef NDEBUG
- // reset this, in order to guard it's use with asserts
+ // Reset this, in order to guard its use with ASSERTs.
m_bytecodeIndex = (unsigned)-1;
#endif
}
@@ -1247,8 +310,9 @@ void JIT::privateCompileLinkPass()
void JIT::privateCompileSlowCases()
{
Instruction* instructionsBegin = m_codeBlock->instructions().begin();
- unsigned propertyAccessInstructionIndex = 0;
- unsigned callLinkInfoIndex = 0;
+
+ m_propertyAccessInstructionIndex = 0;
+ m_callLinkInfoIndex = 0;
for (Vector<SlowCaseEntry>::iterator iter = m_slowCases.begin(); iter != m_slowCases.end();) {
// FIXME: enable peephole optimizations for slow cases when applicable
@@ -1260,312 +324,47 @@ void JIT::privateCompileSlowCases()
#endif
Instruction* currentInstruction = instructionsBegin + m_bytecodeIndex;
- switch (OpcodeID opcodeID = m_interpreter->getOpcodeID(currentInstruction->u.opcode)) {
- case op_convert_this: {
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_convert_this);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_convert_this);
- }
- case op_add: {
- compileFastArithSlow_op_add(currentInstruction, iter);
- NEXT_OPCODE(op_add);
- }
- case op_construct_verify: {
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitGetVirtualRegister(currentInstruction[2].u.operand, X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
-
- NEXT_OPCODE(op_construct_verify);
- }
- case op_get_by_val: {
- // The slow case that handles accesses to arrays (below) may jump back up to here.
- Label beginGetByValSlow(this);
-
- Jump notImm = getSlowCase(iter);
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitFastArithIntToImmNoCheck(X86::edx, X86::edx);
- notImm.link(this);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitCTICall(Interpreter::cti_op_get_by_val);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_get_by_val));
-
- // This is slow case that handles accesses to arrays above the fast cut-off.
- // First, check if this is an access to the vector
- linkSlowCase(iter);
- jae32(X86::edx, Address(X86::ecx, FIELD_OFFSET(ArrayStorage, m_vectorLength)), beginGetByValSlow);
-
- // okay, missed the fast region, but it is still in the vector. Get the value.
- loadPtr(BaseIndex(X86::ecx, X86::edx, ScalePtr, FIELD_OFFSET(ArrayStorage, m_vector[0])), X86::ecx);
- // Check whether the value loaded is zero; if so we need to return undefined.
- jzPtr(X86::ecx, beginGetByValSlow);
- move(X86::ecx, X86::eax);
- emitPutVirtualRegister(currentInstruction[1].u.operand, X86::eax);
-
- NEXT_OPCODE(op_get_by_val);
- }
- case op_sub: {
- compileBinaryArithOpSlowCase(op_sub, iter, currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand, OperandTypes::fromInt(currentInstruction[4].u.operand));
- NEXT_OPCODE(op_sub);
- }
- case op_rshift: {
- compileFastArithSlow_op_rshift(currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand, iter);
- NEXT_OPCODE(op_rshift);
- }
- case op_lshift: {
- compileFastArithSlow_op_lshift(currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand, iter);
- NEXT_OPCODE(op_lshift);
- }
- case op_loop_if_less: {
- unsigned op2 = currentInstruction[2].u.operand;
- unsigned target = currentInstruction[3].u.operand;
- if (isOperandConstantImmediateInt(op2)) {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
- emitCTICall(Interpreter::cti_op_loop_if_less);
- emitJumpSlowToHot(jnz32(X86::eax), target + 3);
- } else {
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitCTICall(Interpreter::cti_op_loop_if_less);
- emitJumpSlowToHot(jnz32(X86::eax), target + 3);
- }
- NEXT_OPCODE(op_loop_if_less);
- }
- case op_put_by_id: {
- compilePutByIdSlowCase(currentInstruction[1].u.operand, &(m_codeBlock->identifier(currentInstruction[2].u.operand)), currentInstruction[3].u.operand, iter, propertyAccessInstructionIndex++);
- NEXT_OPCODE(op_put_by_id);
- }
- case op_get_by_id: {
- compileGetByIdSlowCase(currentInstruction[1].u.operand, currentInstruction[2].u.operand, &(m_codeBlock->identifier(currentInstruction[3].u.operand)), iter, propertyAccessInstructionIndex++);
- NEXT_OPCODE(op_get_by_id);
- }
- case op_loop_if_lesseq: {
- unsigned op2 = currentInstruction[2].u.operand;
- unsigned target = currentInstruction[3].u.operand;
- if (isOperandConstantImmediateInt(op2)) {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 2, X86::ecx);
- emitCTICall(Interpreter::cti_op_loop_if_lesseq);
- emitJumpSlowToHot(jnz32(X86::eax), target + 3);
- } else {
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitCTICall(Interpreter::cti_op_loop_if_lesseq);
- emitJumpSlowToHot(jnz32(X86::eax), target + 3);
- }
- NEXT_OPCODE(op_loop_if_lesseq);
- }
- case op_pre_inc: {
- compileFastArithSlow_op_pre_inc(currentInstruction[1].u.operand, iter);
- NEXT_OPCODE(op_pre_inc);
- }
- case op_put_by_val: {
- // Normal slow cases - either is not an immediate imm, or is an array.
- Jump notImm = getSlowCase(iter);
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitFastArithIntToImmNoCheck(X86::edx, X86::edx);
- notImm.link(this);
- emitGetVirtualRegister(currentInstruction[3].u.operand, X86::ecx);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitPutJITStubArg(X86::ecx, 3);
- emitCTICall(Interpreter::cti_op_put_by_val);
- emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_put_by_val));
-
- // slow cases for immediate int accesses to arrays
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitGetVirtualRegister(currentInstruction[3].u.operand, X86::ecx);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitPutJITStubArg(X86::ecx, 3);
- emitCTICall(Interpreter::cti_op_put_by_val_array);
-
- NEXT_OPCODE(op_put_by_val);
- }
- case op_loop_if_true: {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_jtrue);
- unsigned target = currentInstruction[2].u.operand;
- emitJumpSlowToHot(jnz32(X86::eax), target + 2);
- NEXT_OPCODE(op_loop_if_true);
- }
- case op_pre_dec: {
- compileFastArithSlow_op_pre_dec(currentInstruction[1].u.operand, iter);
- NEXT_OPCODE(op_pre_dec);
- }
- case op_jnless: {
- unsigned op2 = currentInstruction[2].u.operand;
- unsigned target = currentInstruction[3].u.operand;
- if (isOperandConstantImmediateInt(op2)) {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 2, X86::ecx);
- emitCTICall(Interpreter::cti_op_jless);
- emitJumpSlowToHot(jz32(X86::eax), target + 3);
- } else {
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitCTICall(Interpreter::cti_op_jless);
- emitJumpSlowToHot(jz32(X86::eax), target + 3);
- }
- NEXT_OPCODE(op_jnless);
- }
- case op_not: {
- linkSlowCase(iter);
- xorPtr(Imm32(static_cast<int32_t>(JSImmediate::FullTagTypeBool)), X86::eax);
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_not);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_not);
- }
- case op_jfalse: {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_jtrue);
- unsigned target = currentInstruction[2].u.operand;
- emitJumpSlowToHot(jz32(X86::eax), target + 2); // inverted!
- NEXT_OPCODE(op_jfalse);
- }
- case op_post_inc: {
- compileFastArithSlow_op_post_inc(currentInstruction[1].u.operand, currentInstruction[2].u.operand, iter);
- NEXT_OPCODE(op_post_inc);
- }
- case op_bitnot: {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_bitnot);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_bitnot);
- }
- case op_bitand: {
- compileFastArithSlow_op_bitand(currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand, iter);
- NEXT_OPCODE(op_bitand);
- }
- case op_jtrue: {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_jtrue);
- unsigned target = currentInstruction[2].u.operand;
- emitJumpSlowToHot(jnz32(X86::eax), target + 2);
- NEXT_OPCODE(op_jtrue);
- }
- case op_post_dec: {
- compileFastArithSlow_op_post_dec(currentInstruction[1].u.operand, currentInstruction[2].u.operand, iter);
- NEXT_OPCODE(op_post_dec);
- }
- case op_bitxor: {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitCTICall(Interpreter::cti_op_bitxor);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_bitxor);
- }
- case op_bitor: {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitCTICall(Interpreter::cti_op_bitor);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_bitor);
- }
- case op_eq: {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitCTICall(Interpreter::cti_op_eq);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_eq);
- }
- case op_neq: {
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitCTICall(Interpreter::cti_op_neq);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_neq);
- }
- case op_stricteq: {
- linkSlowCase(iter);
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitCTICall(Interpreter::cti_op_stricteq);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_stricteq);
- }
- case op_nstricteq: {
- linkSlowCase(iter);
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 2);
- emitCTICall(Interpreter::cti_op_nstricteq);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_nstricteq);
- }
- case op_instanceof: {
- linkSlowCase(iter);
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitPutJITStubArgFromVirtualRegister(currentInstruction[2].u.operand, 1, X86::ecx);
- emitPutJITStubArgFromVirtualRegister(currentInstruction[3].u.operand, 2, X86::ecx);
- emitPutJITStubArgFromVirtualRegister(currentInstruction[4].u.operand, 3, X86::ecx);
- emitCTICall(Interpreter::cti_op_instanceof);
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_instanceof);
- }
- case op_mod: {
- compileFastArithSlow_op_mod(currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand, iter);
- NEXT_OPCODE(op_mod);
- }
- case op_mul: {
- compileFastArithSlow_op_mul(currentInstruction, iter);
- NEXT_OPCODE(op_mul);
- }
-
- case op_call: {
- compileOpCallSlowCase(currentInstruction, iter, callLinkInfoIndex++, opcodeID);
- NEXT_OPCODE(op_call);
- }
- case op_call_eval: {
- compileOpCallSlowCase(currentInstruction, iter, callLinkInfoIndex++, opcodeID);
- NEXT_OPCODE(op_call_eval);
- }
- case op_construct: {
- compileOpCallSlowCase(currentInstruction, iter, callLinkInfoIndex++, opcodeID);
- NEXT_OPCODE(op_construct);
- }
- case op_to_jsnumber: {
- linkSlowCaseIfNotJSCell(iter, currentInstruction[2].u.operand);
- linkSlowCase(iter);
-
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_to_jsnumber);
-
- emitPutVirtualRegister(currentInstruction[1].u.operand);
- NEXT_OPCODE(op_to_jsnumber);
- }
-
+ switch (m_interpreter->getOpcodeID(currentInstruction->u.opcode)) {
+ DEFINE_SLOWCASE_OP(op_add)
+ DEFINE_SLOWCASE_OP(op_bitand)
+ DEFINE_SLOWCASE_OP(op_bitnot)
+ DEFINE_SLOWCASE_OP(op_bitor)
+ DEFINE_SLOWCASE_OP(op_bitxor)
+ DEFINE_SLOWCASE_OP(op_call)
+ DEFINE_SLOWCASE_OP(op_call_eval)
+ DEFINE_SLOWCASE_OP(op_call_varargs)
+ DEFINE_SLOWCASE_OP(op_construct)
+ DEFINE_SLOWCASE_OP(op_construct_verify)
+ DEFINE_SLOWCASE_OP(op_convert_this)
+ DEFINE_SLOWCASE_OP(op_eq)
+ DEFINE_SLOWCASE_OP(op_get_by_id)
+ DEFINE_SLOWCASE_OP(op_get_by_val)
+ DEFINE_SLOWCASE_OP(op_instanceof)
+ DEFINE_SLOWCASE_OP(op_jfalse)
+ DEFINE_SLOWCASE_OP(op_jnless)
+ DEFINE_SLOWCASE_OP(op_jnlesseq)
+ DEFINE_SLOWCASE_OP(op_jtrue)
+ DEFINE_SLOWCASE_OP(op_loop_if_less)
+ DEFINE_SLOWCASE_OP(op_loop_if_lesseq)
+ DEFINE_SLOWCASE_OP(op_loop_if_true)
+ DEFINE_SLOWCASE_OP(op_lshift)
+ DEFINE_SLOWCASE_OP(op_mod)
+ DEFINE_SLOWCASE_OP(op_mul)
+ DEFINE_SLOWCASE_OP(op_method_check)
+ DEFINE_SLOWCASE_OP(op_neq)
+ DEFINE_SLOWCASE_OP(op_not)
+ DEFINE_SLOWCASE_OP(op_nstricteq)
+ DEFINE_SLOWCASE_OP(op_post_dec)
+ DEFINE_SLOWCASE_OP(op_post_inc)
+ DEFINE_SLOWCASE_OP(op_pre_dec)
+ DEFINE_SLOWCASE_OP(op_pre_inc)
+ DEFINE_SLOWCASE_OP(op_put_by_id)
+ DEFINE_SLOWCASE_OP(op_put_by_val)
+ DEFINE_SLOWCASE_OP(op_rshift)
+ DEFINE_SLOWCASE_OP(op_stricteq)
+ DEFINE_SLOWCASE_OP(op_sub)
+ DEFINE_SLOWCASE_OP(op_to_jsnumber)
+ DEFINE_SLOWCASE_OP(op_to_primitive)
default:
ASSERT_NOT_REACHED();
}
@@ -1577,28 +376,26 @@ void JIT::privateCompileSlowCases()
}
#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
- ASSERT(propertyAccessInstructionIndex == m_codeBlock->numberOfStructureStubInfos());
+ ASSERT(m_propertyAccessInstructionIndex == m_codeBlock->numberOfStructureStubInfos());
#endif
- ASSERT(callLinkInfoIndex == m_codeBlock->numberOfCallLinkInfos());
+ ASSERT(m_callLinkInfoIndex == m_codeBlock->numberOfCallLinkInfos());
#ifndef NDEBUG
- // reset this, in order to guard it's use with asserts
+ // Reset this, in order to guard its use with ASSERTs.
m_bytecodeIndex = (unsigned)-1;
#endif
}
void JIT::privateCompile()
{
-#if ENABLE(CODEBLOCK_SAMPLING)
- storePtr(ImmPtr(m_codeBlock), m_interpreter->sampler()->codeBlockSlot());
-#endif
+ sampleCodeBlock(m_codeBlock);
#if ENABLE(OPCODE_SAMPLING)
- store32(Imm32(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions().begin())), m_interpreter->sampler()->sampleSlot());
+ sampleInstruction(m_codeBlock->instructions().begin());
#endif
// Could use a pop_m, but would need to offset the following instruction if so.
- pop(X86::ecx);
- emitPutToCallFrameHeader(X86::ecx, RegisterFile::ReturnPC);
+ preverveReturnAddressAfterCall(regT2);
+ emitPutToCallFrameHeader(regT2, RegisterFile::ReturnPC);
Jump slowRegisterFileCheck;
Label afterRegisterFileCheck;
@@ -1606,10 +403,10 @@ void JIT::privateCompile()
// In the case of a fast linked call, we do not set this up in the caller.
emitPutImmediateToCallFrameHeader(m_codeBlock, RegisterFile::CodeBlock);
- emitGetCTIParam(STUB_ARGS_registerFile, X86::eax);
- addPtr(Imm32(m_codeBlock->m_numCalleeRegisters * sizeof(Register)), callFrameRegister, X86::edx);
-
- slowRegisterFileCheck = jg32(X86::edx, Address(X86::eax, FIELD_OFFSET(RegisterFile, m_end)));
+ peek(regT0, FIELD_OFFSET(JITStackFrame, registerFile) / sizeof (void*));
+ addPtr(Imm32(m_codeBlock->m_numCalleeRegisters * sizeof(Register)), callFrameRegister, regT1);
+
+ slowRegisterFileCheck = branchPtr(Above, regT1, Address(regT0, FIELD_OFFSET(RegisterFile, m_end)));
afterRegisterFileCheck = label();
}
@@ -1619,22 +416,17 @@ void JIT::privateCompile()
if (m_codeBlock->codeType() == FunctionCode) {
slowRegisterFileCheck.link(this);
- m_bytecodeIndex = 0; // emitCTICall will add to the map, but doesn't actually need this...
- emitCTICall(Interpreter::cti_register_file_check);
+ m_bytecodeIndex = 0;
+ JITStubCall(this, JITStubs::cti_register_file_check).call();
#ifndef NDEBUG
- // reset this, in order to guard it's use with asserts
- m_bytecodeIndex = (unsigned)-1;
+ m_bytecodeIndex = (unsigned)-1; // Reset this, in order to guard its use with ASSERTs.
#endif
jump(afterRegisterFileCheck);
}
ASSERT(m_jmpTable.isEmpty());
- RefPtr<ExecutablePool> allocator = m_globalData->poolForSize(m_assembler.size());
- void* code = m_assembler.executableCopy(allocator.get());
- JITCodeRef codeRef(code, allocator);
-
- PatchBuffer patchBuffer(code);
+ PatchBuffer patchBuffer(this, m_globalData->executableAllocator.poolForSize(m_assembler.size()));
// Translate vPC offsets into addresses in JIT generated code, for switch tables.
for (unsigned i = 0; i < m_switches.size(); ++i) {
@@ -1645,87 +437,90 @@ void JIT::privateCompile()
ASSERT(record.type == SwitchRecord::Immediate || record.type == SwitchRecord::Character);
ASSERT(record.jumpTable.simpleJumpTable->branchOffsets.size() == record.jumpTable.simpleJumpTable->ctiOffsets.size());
- record.jumpTable.simpleJumpTable->ctiDefault = patchBuffer.addressOf(m_labels[bytecodeIndex + 3 + record.defaultOffset]);
+ record.jumpTable.simpleJumpTable->ctiDefault = patchBuffer.locationOf(m_labels[bytecodeIndex + 3 + record.defaultOffset]);
for (unsigned j = 0; j < record.jumpTable.simpleJumpTable->branchOffsets.size(); ++j) {
unsigned offset = record.jumpTable.simpleJumpTable->branchOffsets[j];
- record.jumpTable.simpleJumpTable->ctiOffsets[j] = offset ? patchBuffer.addressOf(m_labels[bytecodeIndex + 3 + offset]) : record.jumpTable.simpleJumpTable->ctiDefault;
+ record.jumpTable.simpleJumpTable->ctiOffsets[j] = offset ? patchBuffer.locationOf(m_labels[bytecodeIndex + 3 + offset]) : record.jumpTable.simpleJumpTable->ctiDefault;
}
} else {
ASSERT(record.type == SwitchRecord::String);
- record.jumpTable.stringJumpTable->ctiDefault = patchBuffer.addressOf(m_labels[bytecodeIndex + 3 + record.defaultOffset]);
+ record.jumpTable.stringJumpTable->ctiDefault = patchBuffer.locationOf(m_labels[bytecodeIndex + 3 + record.defaultOffset]);
StringJumpTable::StringOffsetTable::iterator end = record.jumpTable.stringJumpTable->offsetTable.end();
for (StringJumpTable::StringOffsetTable::iterator it = record.jumpTable.stringJumpTable->offsetTable.begin(); it != end; ++it) {
unsigned offset = it->second.branchOffset;
- it->second.ctiOffset = offset ? patchBuffer.addressOf(m_labels[bytecodeIndex + 3 + offset]) : record.jumpTable.stringJumpTable->ctiDefault;
+ it->second.ctiOffset = offset ? patchBuffer.locationOf(m_labels[bytecodeIndex + 3 + offset]) : record.jumpTable.stringJumpTable->ctiDefault;
}
}
}
for (size_t i = 0; i < m_codeBlock->numberOfExceptionHandlers(); ++i) {
HandlerInfo& handler = m_codeBlock->exceptionHandler(i);
- handler.nativeCode = patchBuffer.addressOf(m_labels[handler.target]);
+ handler.nativeCode = patchBuffer.locationOf(m_labels[handler.target]);
}
- m_codeBlock->pcVector().reserveCapacity(m_calls.size());
for (Vector<CallRecord>::iterator iter = m_calls.begin(); iter != m_calls.end(); ++iter) {
if (iter->to)
- patchBuffer.link(iter->from, iter->to);
- m_codeBlock->pcVector().append(PC(reinterpret_cast<void**>(patchBuffer.addressOf(iter->from)) - reinterpret_cast<void**>(code), iter->bytecodeIndex));
+ patchBuffer.link(iter->from, FunctionPtr(iter->to));
+ }
+
+ if (m_codeBlock->hasExceptionInfo()) {
+ m_codeBlock->callReturnIndexVector().reserveCapacity(m_calls.size());
+ for (Vector<CallRecord>::iterator iter = m_calls.begin(); iter != m_calls.end(); ++iter)
+ m_codeBlock->callReturnIndexVector().append(CallReturnOffsetToBytecodeIndex(patchBuffer.returnAddressOffset(iter->from), iter->bytecodeIndex));
}
// Link absolute addresses for jsr
for (Vector<JSRInfo>::iterator iter = m_jsrSites.begin(); iter != m_jsrSites.end(); ++iter)
- patchBuffer.setPtr(iter->storeLocation, patchBuffer.addressOf(iter->target));
+ patchBuffer.patch(iter->storeLocation, patchBuffer.locationOf(iter->target).addressForJSR());
+#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
for (unsigned i = 0; i < m_codeBlock->numberOfStructureStubInfos(); ++i) {
StructureStubInfo& info = m_codeBlock->structureStubInfo(i);
-#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
- info.callReturnLocation = patchBuffer.addressOf(m_propertyAccessCompilationInfo[i].callReturnLocation);
- info.hotPathBegin = patchBuffer.addressOf(m_propertyAccessCompilationInfo[i].hotPathBegin);
-#else
- info.callReturnLocation = 0;
- info.hotPathBegin = 0;
-#endif
+ info.callReturnLocation = patchBuffer.locationOf(m_propertyAccessCompilationInfo[i].callReturnLocation);
+ info.hotPathBegin = patchBuffer.locationOf(m_propertyAccessCompilationInfo[i].hotPathBegin);
}
+#endif
+#if ENABLE(JIT_OPTIMIZE_CALL)
for (unsigned i = 0; i < m_codeBlock->numberOfCallLinkInfos(); ++i) {
CallLinkInfo& info = m_codeBlock->callLinkInfo(i);
-#if ENABLE(JIT_OPTIMIZE_CALL)
- info.callReturnLocation = patchBuffer.addressOf(m_callStructureStubCompilationInfo[i].callReturnLocation);
- info.hotPathBegin = patchBuffer.addressOf(m_callStructureStubCompilationInfo[i].hotPathBegin);
- info.hotPathOther = patchBuffer.addressOf(m_callStructureStubCompilationInfo[i].hotPathOther);
- info.coldPathOther = patchBuffer.addressOf(m_callStructureStubCompilationInfo[i].coldPathOther);
-#else
- info.callReturnLocation = 0;
- info.hotPathBegin = 0;
- info.hotPathOther = 0;
- info.coldPathOther = 0;
+ info.callReturnLocation = patchBuffer.locationOfNearCall(m_callStructureStubCompilationInfo[i].callReturnLocation);
+ info.hotPathBegin = patchBuffer.locationOf(m_callStructureStubCompilationInfo[i].hotPathBegin);
+ info.hotPathOther = patchBuffer.locationOfNearCall(m_callStructureStubCompilationInfo[i].hotPathOther);
+ info.coldPathOther = patchBuffer.locationOf(m_callStructureStubCompilationInfo[i].coldPathOther);
+ }
#endif
+ unsigned methodCallCount = m_methodCallCompilationInfo.size();
+ m_codeBlock->addMethodCallLinkInfos(methodCallCount);
+ for (unsigned i = 0; i < methodCallCount; ++i) {
+ MethodCallLinkInfo& info = m_codeBlock->methodCallLinkInfo(i);
+ info.structureLabel = patchBuffer.locationOf(m_methodCallCompilationInfo[i].structureToCompare);
+ info.callReturnLocation = m_codeBlock->structureStubInfo(m_methodCallCompilationInfo[i].propertyAccessIndex).callReturnLocation;
}
- m_codeBlock->setJITCode(codeRef);
+ m_codeBlock->setJITCode(patchBuffer.finalizeCode());
}
-void JIT::privateCompileCTIMachineTrampolines()
+void JIT::privateCompileCTIMachineTrampolines(RefPtr<ExecutablePool>* executablePool, JSGlobalData* globalData, CodePtr* ctiArrayLengthTrampoline, CodePtr* ctiStringLengthTrampoline, CodePtr* ctiVirtualCallPreLink, CodePtr* ctiVirtualCallLink, CodePtr* ctiVirtualCall, CodePtr* ctiNativeCallThunk)
{
#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
// (1) The first function provides fast property access for array length
Label arrayLengthBegin = align();
// Check eax is an array
- Jump array_failureCases1 = emitJumpIfNotJSCell(X86::eax);
- Jump array_failureCases2 = jnePtr(Address(X86::eax), ImmPtr(m_interpreter->m_jsArrayVptr));
+ Jump array_failureCases1 = emitJumpIfNotJSCell(regT0);
+ Jump array_failureCases2 = branchPtr(NotEqual, Address(regT0), ImmPtr(m_globalData->jsArrayVPtr));
// Checks out okay! - get the length from the storage
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSArray, m_storage)), X86::eax);
- load32(Address(X86::eax, FIELD_OFFSET(ArrayStorage, m_length)), X86::eax);
+ loadPtr(Address(regT0, FIELD_OFFSET(JSArray, m_storage)), regT0);
+ load32(Address(regT0, FIELD_OFFSET(ArrayStorage, m_length)), regT0);
- Jump array_failureCases3 = ja32(X86::eax, Imm32(JSImmediate::maxImmediateInt));
+ Jump array_failureCases3 = branch32(Above, regT0, Imm32(JSImmediate::maxImmediateInt));
- // X86::eax contains a 64 bit value (is positive, is zero extended) so we don't need sign extend here.
- emitFastArithIntToImmNoCheck(X86::eax, X86::eax);
+ // regT0 contains a 64 bit value (is positive, is zero extended) so we don't need sign extend here.
+ emitFastArithIntToImmNoCheck(regT0, regT0);
ret();
@@ -1733,17 +528,17 @@ void JIT::privateCompileCTIMachineTrampolines()
Label stringLengthBegin = align();
// Check eax is a string
- Jump string_failureCases1 = emitJumpIfNotJSCell(X86::eax);
- Jump string_failureCases2 = jnePtr(Address(X86::eax), ImmPtr(m_interpreter->m_jsStringVptr));
+ Jump string_failureCases1 = emitJumpIfNotJSCell(regT0);
+ Jump string_failureCases2 = branchPtr(NotEqual, Address(regT0), ImmPtr(m_globalData->jsStringVPtr));
// Checks out okay! - get the length from the Ustring.
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSString, m_value) + FIELD_OFFSET(UString, m_rep)), X86::eax);
- load32(Address(X86::eax, FIELD_OFFSET(UString::Rep, len)), X86::eax);
+ loadPtr(Address(regT0, FIELD_OFFSET(JSString, m_value) + FIELD_OFFSET(UString, m_rep)), regT0);
+ load32(Address(regT0, FIELD_OFFSET(UString::Rep, len)), regT0);
- Jump string_failureCases3 = ja32(X86::eax, Imm32(JSImmediate::maxImmediateInt));
+ Jump string_failureCases3 = branch32(Above, regT0, Imm32(JSImmediate::maxImmediateInt));
- // X86::eax contains a 64 bit value (is positive, is zero extended) so we don't need sign extend here.
- emitFastArithIntToImmNoCheck(X86::eax, X86::eax);
+ // regT0 contains a 64 bit value (is positive, is zero extended) so we don't need sign extend here.
+ emitFastArithIntToImmNoCheck(regT0, regT0);
ret();
#endif
@@ -1753,139 +548,336 @@ void JIT::privateCompileCTIMachineTrampolines()
Label virtualCallPreLinkBegin = align();
// Load the callee CodeBlock* into eax
- loadPtr(Address(X86::ecx, FIELD_OFFSET(JSFunction, m_body)), X86::eax);
- loadPtr(Address(X86::eax, FIELD_OFFSET(FunctionBodyNode, m_code)), X86::eax);
- Jump hasCodeBlock1 = jnzPtr(X86::eax);
- pop(X86::ebx);
+ loadPtr(Address(regT2, FIELD_OFFSET(JSFunction, m_body)), regT3);
+ loadPtr(Address(regT3, FIELD_OFFSET(FunctionBodyNode, m_code)), regT0);
+ Jump hasCodeBlock1 = branchTestPtr(NonZero, regT0);
+ // If m_code is null and m_jitCode is not, then we have a native function, so arity is irrelevant
+ loadPtr(Address(regT3, FIELD_OFFSET(FunctionBodyNode, m_jitCode)), regT0);
+ Jump isNativeFunc1 = branchTestPtr(NonZero, regT0);
+ preverveReturnAddressAfterCall(regT3);
restoreArgumentReference();
- Jump callJSFunction1 = call();
- emitGetJITStubArg(1, X86::ecx);
- emitGetJITStubArg(3, X86::edx);
- push(X86::ebx);
+ Call callJSFunction1 = call();
+ emitGetJITStubArg(1, regT2);
+ emitGetJITStubArg(3, regT1);
+ restoreReturnAddressBeforeReturn(regT3);
hasCodeBlock1.link(this);
// Check argCount matches callee arity.
- Jump arityCheckOkay1 = je32(Address(X86::eax, FIELD_OFFSET(CodeBlock, m_numParameters)), X86::edx);
- pop(X86::ebx);
- emitPutJITStubArg(X86::ebx, 2);
- emitPutJITStubArg(X86::eax, 4);
+ Jump arityCheckOkay1 = branch32(Equal, Address(regT0, FIELD_OFFSET(CodeBlock, m_numParameters)), regT1);
+ preverveReturnAddressAfterCall(regT3);
+ emitPutJITStubArg(regT3, 2);
+ emitPutJITStubArg(regT0, 4);
restoreArgumentReference();
- Jump callArityCheck1 = call();
- move(X86::edx, callFrameRegister);
- emitGetJITStubArg(1, X86::ecx);
- emitGetJITStubArg(3, X86::edx);
- push(X86::ebx);
+ Call callArityCheck1 = call();
+ move(regT1, callFrameRegister);
+ emitGetJITStubArg(1, regT2);
+ emitGetJITStubArg(3, regT1);
+ restoreReturnAddressBeforeReturn(regT3);
arityCheckOkay1.link(this);
+ isNativeFunc1.link(this);
compileOpCallInitializeCallFrame();
- pop(X86::ebx);
- emitPutJITStubArg(X86::ebx, 2);
+ preverveReturnAddressAfterCall(regT3);
+ emitPutJITStubArg(regT3, 2);
restoreArgumentReference();
- Jump callDontLazyLinkCall = call();
- push(X86::ebx);
+ Call callDontLazyLinkCall = call();
+ emitGetJITStubArg(1, regT2);
+ restoreReturnAddressBeforeReturn(regT3);
- jump(X86::eax);
+ jump(regT0);
Label virtualCallLinkBegin = align();
// Load the callee CodeBlock* into eax
- loadPtr(Address(X86::ecx, FIELD_OFFSET(JSFunction, m_body)), X86::eax);
- loadPtr(Address(X86::eax, FIELD_OFFSET(FunctionBodyNode, m_code)), X86::eax);
- Jump hasCodeBlock2 = jnzPtr(X86::eax);
- pop(X86::ebx);
+ loadPtr(Address(regT2, FIELD_OFFSET(JSFunction, m_body)), regT3);
+ loadPtr(Address(regT3, FIELD_OFFSET(FunctionBodyNode, m_code)), regT0);
+ Jump hasCodeBlock2 = branchTestPtr(NonZero, regT0);
+ // If m_code is null and m_jitCode is not, then we have a native function, so arity is irrelevant
+ loadPtr(Address(regT3, FIELD_OFFSET(FunctionBodyNode, m_jitCode)), regT0);
+ Jump isNativeFunc2 = branchTestPtr(NonZero, regT0);
+ preverveReturnAddressAfterCall(regT3);
restoreArgumentReference();
- Jump callJSFunction2 = call();
- emitGetJITStubArg(1, X86::ecx);
- emitGetJITStubArg(3, X86::edx);
- push(X86::ebx);
+ Call callJSFunction2 = call();
+ emitGetJITStubArg(1, regT2);
+ emitGetJITStubArg(3, regT1);
+ restoreReturnAddressBeforeReturn(regT3);
hasCodeBlock2.link(this);
// Check argCount matches callee arity.
- Jump arityCheckOkay2 = je32(Address(X86::eax, FIELD_OFFSET(CodeBlock, m_numParameters)), X86::edx);
- pop(X86::ebx);
- emitPutJITStubArg(X86::ebx, 2);
- emitPutJITStubArg(X86::eax, 4);
+ Jump arityCheckOkay2 = branch32(Equal, Address(regT0, FIELD_OFFSET(CodeBlock, m_numParameters)), regT1);
+ preverveReturnAddressAfterCall(regT3);
+ emitPutJITStubArg(regT3, 2);
+ emitPutJITStubArg(regT0, 4);
restoreArgumentReference();
- Jump callArityCheck2 = call();
- move(X86::edx, callFrameRegister);
- emitGetJITStubArg(1, X86::ecx);
- emitGetJITStubArg(3, X86::edx);
- push(X86::ebx);
+ Call callArityCheck2 = call();
+ move(regT1, callFrameRegister);
+ emitGetJITStubArg(1, regT2);
+ emitGetJITStubArg(3, regT1);
+ restoreReturnAddressBeforeReturn(regT3);
arityCheckOkay2.link(this);
+ isNativeFunc2.link(this);
compileOpCallInitializeCallFrame();
- pop(X86::ebx);
- emitPutJITStubArg(X86::ebx, 2);
+ preverveReturnAddressAfterCall(regT3);
+ emitPutJITStubArg(regT3, 2);
restoreArgumentReference();
- Jump callLazyLinkCall = call();
- push(X86::ebx);
+ Call callLazyLinkCall = call();
+ restoreReturnAddressBeforeReturn(regT3);
- jump(X86::eax);
+ jump(regT0);
Label virtualCallBegin = align();
// Load the callee CodeBlock* into eax
- loadPtr(Address(X86::ecx, FIELD_OFFSET(JSFunction, m_body)), X86::eax);
- loadPtr(Address(X86::eax, FIELD_OFFSET(FunctionBodyNode, m_code)), X86::eax);
- Jump hasCodeBlock3 = jnzPtr(X86::eax);
- pop(X86::ebx);
+ loadPtr(Address(regT2, FIELD_OFFSET(JSFunction, m_body)), regT3);
+ loadPtr(Address(regT3, FIELD_OFFSET(FunctionBodyNode, m_code)), regT0);
+ Jump hasCodeBlock3 = branchTestPtr(NonZero, regT0);
+ // If m_code is null and m_jitCode is not, then we have a native function, so arity is irrelevant
+ loadPtr(Address(regT3, FIELD_OFFSET(FunctionBodyNode, m_jitCode)), regT0);
+ Jump isNativeFunc3 = branchTestPtr(NonZero, regT0);
+ preverveReturnAddressAfterCall(regT3);
restoreArgumentReference();
- Jump callJSFunction3 = call();
- emitGetJITStubArg(1, X86::ecx);
- emitGetJITStubArg(3, X86::edx);
- push(X86::ebx);
+ Call callJSFunction3 = call();
+ emitGetJITStubArg(1, regT2);
+ emitGetJITStubArg(3, regT1);
+ restoreReturnAddressBeforeReturn(regT3);
+ loadPtr(Address(regT2, FIELD_OFFSET(JSFunction, m_body)), regT3); // reload the function body nody, so we can reload the code pointer.
hasCodeBlock3.link(this);
// Check argCount matches callee arity.
- Jump arityCheckOkay3 = je32(Address(X86::eax, FIELD_OFFSET(CodeBlock, m_numParameters)), X86::edx);
- pop(X86::ebx);
- emitPutJITStubArg(X86::ebx, 2);
- emitPutJITStubArg(X86::eax, 4);
+ Jump arityCheckOkay3 = branch32(Equal, Address(regT0, FIELD_OFFSET(CodeBlock, m_numParameters)), regT1);
+ preverveReturnAddressAfterCall(regT3);
+ emitPutJITStubArg(regT3, 2);
+ emitPutJITStubArg(regT0, 4);
restoreArgumentReference();
- Jump callArityCheck3 = call();
- move(X86::edx, callFrameRegister);
- emitGetJITStubArg(1, X86::ecx);
- emitGetJITStubArg(3, X86::edx);
- push(X86::ebx);
+ Call callArityCheck3 = call();
+ move(regT1, callFrameRegister);
+ emitGetJITStubArg(1, regT2);
+ emitGetJITStubArg(3, regT1);
+ restoreReturnAddressBeforeReturn(regT3);
+ loadPtr(Address(regT2, FIELD_OFFSET(JSFunction, m_body)), regT3); // reload the function body nody, so we can reload the code pointer.
arityCheckOkay3.link(this);
+ // load ctiCode from the new codeBlock.
+ loadPtr(Address(regT3, FIELD_OFFSET(FunctionBodyNode, m_jitCode)), regT0);
+ isNativeFunc3.link(this);
compileOpCallInitializeCallFrame();
+ jump(regT0);
- // load ctiCode from the new codeBlock.
- loadPtr(Address(X86::eax, FIELD_OFFSET(CodeBlock, m_jitCode)), X86::eax);
+
+ Label nativeCallThunk = align();
+ preverveReturnAddressAfterCall(regT0);
+ emitPutToCallFrameHeader(regT0, RegisterFile::ReturnPC); // Push return address
+
+ // Load caller frame's scope chain into this callframe so that whatever we call can
+ // get to its global data.
+ emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, regT1);
+ emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1, regT1);
+ emitPutToCallFrameHeader(regT1, RegisterFile::ScopeChain);
+
+
+#if PLATFORM(X86_64)
+ emitGetFromCallFrameHeader32(RegisterFile::ArgumentCount, X86::ecx);
+
+ // Allocate stack space for our arglist
+ subPtr(Imm32(sizeof(ArgList)), stackPointerRegister);
+ COMPILE_ASSERT((sizeof(ArgList) & 0xf) == 0, ArgList_should_by_16byte_aligned);
+
+ // Set up arguments
+ subPtr(Imm32(1), X86::ecx); // Don't include 'this' in argcount
+
+ // Push argcount
+ storePtr(X86::ecx, Address(stackPointerRegister, FIELD_OFFSET(ArgList, m_argCount)));
+
+ // Calculate the start of the callframe header, and store in edx
+ addPtr(Imm32(-RegisterFile::CallFrameHeaderSize * (int32_t)sizeof(Register)), callFrameRegister, X86::edx);
+
+ // Calculate start of arguments as callframe header - sizeof(Register) * argcount (ecx)
+ mul32(Imm32(sizeof(Register)), X86::ecx, X86::ecx);
+ subPtr(X86::ecx, X86::edx);
+
+ // push pointer to arguments
+ storePtr(X86::edx, Address(stackPointerRegister, FIELD_OFFSET(ArgList, m_args)));
+
+ // ArgList is passed by reference so is stackPointerRegister
+ move(stackPointerRegister, X86::ecx);
+
+ // edx currently points to the first argument, edx-sizeof(Register) points to 'this'
+ loadPtr(Address(X86::edx, -(int32_t)sizeof(Register)), X86::edx);
+
+ emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86::esi);
+
+ move(callFrameRegister, X86::edi);
+
+ call(Address(X86::esi, FIELD_OFFSET(JSFunction, m_data)));
+
+ addPtr(Imm32(sizeof(ArgList)), stackPointerRegister);
+#else
+ emitGetFromCallFrameHeader32(RegisterFile::ArgumentCount, regT0);
+
+ /* We have two structs that we use to describe the stackframe we set up for our
+ * call to native code. NativeCallFrameStructure describes the how we set up the stack
+ * in advance of the call. NativeFunctionCalleeSignature describes the callframe
+ * as the native code expects it. We do this as we are using the fastcall calling
+ * convention which results in the callee popping its arguments off the stack, but
+ * not the rest of the callframe so we need a nice way to ensure we increment the
+ * stack pointer by the right amount after the call.
+ */
+#if COMPILER(MSVC) || PLATFORM(LINUX)
+ struct NativeCallFrameStructure {
+ // CallFrame* callFrame; // passed in EDX
+ JSObject* callee;
+ JSValue thisValue;
+ ArgList* argPointer;
+ ArgList args;
+ JSValue result;
+ };
+ struct NativeFunctionCalleeSignature {
+ JSObject* callee;
+ JSValue thisValue;
+ ArgList* argPointer;
+ };
+#else
+ struct NativeCallFrameStructure {
+ // CallFrame* callFrame; // passed in ECX
+ // JSObject* callee; // passed in EDX
+ JSValue thisValue;
+ ArgList* argPointer;
+ ArgList args;
+ };
+ struct NativeFunctionCalleeSignature {
+ JSValue thisValue;
+ ArgList* argPointer;
+ };
+#endif
+ const int NativeCallFrameSize = (sizeof(NativeCallFrameStructure) + 15) & ~15;
+ // Allocate system stack frame
+ subPtr(Imm32(NativeCallFrameSize), stackPointerRegister);
+
+ // Set up arguments
+ subPtr(Imm32(1), regT0); // Don't include 'this' in argcount
+
+ // push argcount
+ storePtr(regT0, Address(stackPointerRegister, FIELD_OFFSET(NativeCallFrameStructure, args) + FIELD_OFFSET(ArgList, m_argCount)));
+
+ // Calculate the start of the callframe header, and store in regT1
+ addPtr(Imm32(-RegisterFile::CallFrameHeaderSize * (int)sizeof(Register)), callFrameRegister, regT1);
+
+ // Calculate start of arguments as callframe header - sizeof(Register) * argcount (regT0)
+ mul32(Imm32(sizeof(Register)), regT0, regT0);
+ subPtr(regT0, regT1);
+ storePtr(regT1, Address(stackPointerRegister, FIELD_OFFSET(NativeCallFrameStructure, args) + FIELD_OFFSET(ArgList, m_args)));
+
+ // ArgList is passed by reference so is stackPointerRegister + 4 * sizeof(Register)
+ addPtr(Imm32(FIELD_OFFSET(NativeCallFrameStructure, args)), stackPointerRegister, regT0);
+ storePtr(regT0, Address(stackPointerRegister, FIELD_OFFSET(NativeCallFrameStructure, argPointer)));
- jump(X86::eax);
+ // regT1 currently points to the first argument, regT1 - sizeof(Register) points to 'this'
+ loadPtr(Address(regT1, -(int)sizeof(Register)), regT1);
+ storePtr(regT1, Address(stackPointerRegister, FIELD_OFFSET(NativeCallFrameStructure, thisValue)));
+
+#if COMPILER(MSVC) || PLATFORM(LINUX)
+ // ArgList is passed by reference so is stackPointerRegister + 4 * sizeof(Register)
+ addPtr(Imm32(FIELD_OFFSET(NativeCallFrameStructure, result)), stackPointerRegister, X86::ecx);
+
+ // Plant callee
+ emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86::eax);
+ storePtr(X86::eax, Address(stackPointerRegister, FIELD_OFFSET(NativeCallFrameStructure, callee)));
+
+ // Plant callframe
+ move(callFrameRegister, X86::edx);
+
+ call(Address(X86::eax, FIELD_OFFSET(JSFunction, m_data)));
+
+ // JSValue is a non-POD type
+ loadPtr(Address(X86::eax), X86::eax);
+#else
+ // Plant callee
+ emitGetFromCallFrameHeaderPtr(RegisterFile::Callee, X86::edx);
+
+ // Plant callframe
+ move(callFrameRegister, X86::ecx);
+ call(Address(X86::edx, FIELD_OFFSET(JSFunction, m_data)));
+#endif
+
+ // We've put a few temporaries on the stack in addition to the actual arguments
+ // so pull them off now
+ addPtr(Imm32(NativeCallFrameSize - sizeof(NativeFunctionCalleeSignature)), stackPointerRegister);
+
+#endif
+
+ // Check for an exception
+ loadPtr(&(globalData->exception), regT2);
+ Jump exceptionHandler = branchTestPtr(NonZero, regT2);
+
+ // Grab the return address.
+ emitGetFromCallFrameHeaderPtr(RegisterFile::ReturnPC, regT1);
+
+ // Restore our caller's "r".
+ emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, callFrameRegister);
+
+ // Return.
+ restoreReturnAddressBeforeReturn(regT1);
+ ret();
+
+ // Handle an exception
+ exceptionHandler.link(this);
+ // Grab the return address.
+ emitGetFromCallFrameHeaderPtr(RegisterFile::ReturnPC, regT1);
+ move(ImmPtr(&globalData->exceptionLocation), regT2);
+ storePtr(regT1, regT2);
+ move(ImmPtr(reinterpret_cast<void*>(ctiVMThrowTrampoline)), regT2);
+ emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, callFrameRegister);
+ poke(callFrameRegister, offsetof(struct JITStackFrame, callFrame) / sizeof (void*));
+ restoreReturnAddressBeforeReturn(regT2);
+ ret();
+
+
+#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
+ Call array_failureCases1Call = makeTailRecursiveCall(array_failureCases1);
+ Call array_failureCases2Call = makeTailRecursiveCall(array_failureCases2);
+ Call array_failureCases3Call = makeTailRecursiveCall(array_failureCases3);
+ Call string_failureCases1Call = makeTailRecursiveCall(string_failureCases1);
+ Call string_failureCases2Call = makeTailRecursiveCall(string_failureCases2);
+ Call string_failureCases3Call = makeTailRecursiveCall(string_failureCases3);
+#endif
// All trampolines constructed! copy the code, link up calls, and set the pointers on the Machine object.
- m_interpreter->m_executablePool = m_globalData->poolForSize(m_assembler.size());
- void* code = m_assembler.executableCopy(m_interpreter->m_executablePool.get());
- PatchBuffer patchBuffer(code);
+ PatchBuffer patchBuffer(this, m_globalData->executableAllocator.poolForSize(m_assembler.size()));
#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
- patchBuffer.link(array_failureCases1, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_array_fail));
- patchBuffer.link(array_failureCases2, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_array_fail));
- patchBuffer.link(array_failureCases3, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_array_fail));
- patchBuffer.link(string_failureCases1, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_string_fail));
- patchBuffer.link(string_failureCases2, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_string_fail));
- patchBuffer.link(string_failureCases3, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_string_fail));
-
- m_interpreter->m_ctiArrayLengthTrampoline = patchBuffer.addressOf(arrayLengthBegin);
- m_interpreter->m_ctiStringLengthTrampoline = patchBuffer.addressOf(stringLengthBegin);
+ patchBuffer.link(array_failureCases1Call, FunctionPtr(JITStubs::cti_op_get_by_id_array_fail));
+ patchBuffer.link(array_failureCases2Call, FunctionPtr(JITStubs::cti_op_get_by_id_array_fail));
+ patchBuffer.link(array_failureCases3Call, FunctionPtr(JITStubs::cti_op_get_by_id_array_fail));
+ patchBuffer.link(string_failureCases1Call, FunctionPtr(JITStubs::cti_op_get_by_id_string_fail));
+ patchBuffer.link(string_failureCases2Call, FunctionPtr(JITStubs::cti_op_get_by_id_string_fail));
+ patchBuffer.link(string_failureCases3Call, FunctionPtr(JITStubs::cti_op_get_by_id_string_fail));
+#endif
+ patchBuffer.link(callArityCheck1, FunctionPtr(JITStubs::cti_op_call_arityCheck));
+ patchBuffer.link(callArityCheck2, FunctionPtr(JITStubs::cti_op_call_arityCheck));
+ patchBuffer.link(callArityCheck3, FunctionPtr(JITStubs::cti_op_call_arityCheck));
+ patchBuffer.link(callJSFunction1, FunctionPtr(JITStubs::cti_op_call_JSFunction));
+ patchBuffer.link(callJSFunction2, FunctionPtr(JITStubs::cti_op_call_JSFunction));
+ patchBuffer.link(callJSFunction3, FunctionPtr(JITStubs::cti_op_call_JSFunction));
+ patchBuffer.link(callDontLazyLinkCall, FunctionPtr(JITStubs::cti_vm_dontLazyLinkCall));
+ patchBuffer.link(callLazyLinkCall, FunctionPtr(JITStubs::cti_vm_lazyLinkCall));
+
+ CodeRef finalCode = patchBuffer.finalizeCode();
+ *executablePool = finalCode.m_executablePool;
+
+ *ctiVirtualCallPreLink = trampolineAt(finalCode, virtualCallPreLinkBegin);
+ *ctiVirtualCallLink = trampolineAt(finalCode, virtualCallLinkBegin);
+ *ctiVirtualCall = trampolineAt(finalCode, virtualCallBegin);
+ *ctiNativeCallThunk = trampolineAt(finalCode, nativeCallThunk);
+#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
+ *ctiArrayLengthTrampoline = trampolineAt(finalCode, arrayLengthBegin);
+ *ctiStringLengthTrampoline = trampolineAt(finalCode, stringLengthBegin);
+#else
+ UNUSED_PARAM(ctiArrayLengthTrampoline);
+ UNUSED_PARAM(ctiStringLengthTrampoline);
#endif
- patchBuffer.link(callArityCheck1, reinterpret_cast<void*>(Interpreter::cti_op_call_arityCheck));
- patchBuffer.link(callArityCheck2, reinterpret_cast<void*>(Interpreter::cti_op_call_arityCheck));
- patchBuffer.link(callArityCheck3, reinterpret_cast<void*>(Interpreter::cti_op_call_arityCheck));
- patchBuffer.link(callJSFunction1, reinterpret_cast<void*>(Interpreter::cti_op_call_JSFunction));
- patchBuffer.link(callJSFunction2, reinterpret_cast<void*>(Interpreter::cti_op_call_JSFunction));
- patchBuffer.link(callJSFunction3, reinterpret_cast<void*>(Interpreter::cti_op_call_JSFunction));
- patchBuffer.link(callDontLazyLinkCall, reinterpret_cast<void*>(Interpreter::cti_vm_dontLazyLinkCall));
- patchBuffer.link(callLazyLinkCall, reinterpret_cast<void*>(Interpreter::cti_vm_lazyLinkCall));
-
- m_interpreter->m_ctiVirtualCallPreLink = patchBuffer.addressOf(virtualCallPreLinkBegin);
- m_interpreter->m_ctiVirtualCallLink = patchBuffer.addressOf(virtualCallLinkBegin);
- m_interpreter->m_ctiVirtualCall = patchBuffer.addressOf(virtualCallBegin);
}
void JIT::emitGetVariableObjectRegister(RegisterID variableObject, int index, RegisterID dst)
@@ -1902,6 +894,41 @@ void JIT::emitPutVariableObjectRegister(RegisterID src, RegisterID variableObjec
storePtr(src, Address(variableObject, index * sizeof(Register)));
}
+void JIT::unlinkCall(CallLinkInfo* callLinkInfo)
+{
+ // When the JSFunction is deleted the pointer embedded in the instruction stream will no longer be valid
+ // (and, if a new JSFunction happened to be constructed at the same location, we could get a false positive
+ // match). Reset the check so it no longer matches.
+ callLinkInfo->hotPathBegin.repatch(JSValue::encode(JSValue()));
+}
+
+void JIT::linkCall(JSFunction* callee, CodeBlock* calleeCodeBlock, JITCode& code, CallLinkInfo* callLinkInfo, int callerArgCount)
+{
+ // Currently we only link calls with the exact number of arguments.
+ // If this is a native call calleeCodeBlock is null so the number of parameters is unimportant
+ if (!calleeCodeBlock || callerArgCount == calleeCodeBlock->m_numParameters) {
+ ASSERT(!callLinkInfo->isLinked());
+
+ if (calleeCodeBlock)
+ calleeCodeBlock->addCaller(callLinkInfo);
+
+ callLinkInfo->hotPathBegin.repatch(callee);
+ callLinkInfo->hotPathOther.relink(code.addressForCall());
+ }
+
+ // patch the instruction that jumps out to the cold path, so that we only try to link once.
+ callLinkInfo->hotPathBegin.jumpAtOffset(patchOffsetOpCallCompareToJump).relink(callLinkInfo->coldPathOther);
+}
+
} // namespace JSC
#endif // ENABLE(JIT)
+
+// This probably does not belong here; adding here for now as a quick Windows build fix.
+#if ENABLE(ASSEMBLER)
+
+#if PLATFORM(X86) && !PLATFORM(MAC)
+JSC::MacroAssemblerX86Common::SSE2CheckState JSC::MacroAssemblerX86Common::s_sse2CheckState = NotCheckedSSE2;
+#endif
+
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JIT.h b/src/3rdparty/webkit/JavaScriptCore/jit/JIT.h
index 931eb3b..c9e5355 100644
--- a/src/3rdparty/webkit/JavaScriptCore/jit/JIT.h
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JIT.h
@@ -30,59 +30,30 @@
#if ENABLE(JIT)
-#define WTF_USE_CTI_REPATCH_PIC 1
+// We've run into some problems where changing the size of the class JIT leads to
+// performance fluctuations. Try forcing alignment in an attempt to stabalize this.
+#if COMPILER(GCC)
+#define JIT_CLASS_ALIGNMENT __attribute__ ((aligned (32)))
+#else
+#define JIT_CLASS_ALIGNMENT
+#endif
+#include "CodeBlock.h"
#include "Interpreter.h"
+#include "JITCode.h"
+#include "JITStubs.h"
#include "Opcode.h"
#include "RegisterFile.h"
#include "MacroAssembler.h"
#include "Profiler.h"
+#include <bytecode/SamplingTool.h>
#include <wtf/AlwaysInline.h>
#include <wtf/Vector.h>
-#define STUB_ARGS_offset 0x0C
-#define STUB_ARGS_code (STUB_ARGS_offset)
-#define STUB_ARGS_registerFile (STUB_ARGS_offset + 1)
-#define STUB_ARGS_callFrame (STUB_ARGS_offset + 2)
-#define STUB_ARGS_exception (STUB_ARGS_offset + 3)
-#define STUB_ARGS_profilerReference (STUB_ARGS_offset + 4)
-#define STUB_ARGS_globalData (STUB_ARGS_offset + 5)
-
-#define ARG_callFrame static_cast<CallFrame*>(ARGS[STUB_ARGS_callFrame])
-#define ARG_registerFile static_cast<RegisterFile*>(ARGS[STUB_ARGS_registerFile])
-#define ARG_exception static_cast<JSValuePtr*>(ARGS[STUB_ARGS_exception])
-#define ARG_profilerReference static_cast<Profiler**>(ARGS[STUB_ARGS_profilerReference])
-#define ARG_globalData static_cast<JSGlobalData*>(ARGS[STUB_ARGS_globalData])
-
-#define ARG_setCallFrame(newCallFrame) (ARGS[STUB_ARGS_callFrame] = (newCallFrame))
-
-#define ARG_src1 JSValuePtr::decode(static_cast<JSValueEncodedAsPointer*>(ARGS[1]))
-#define ARG_src2 JSValuePtr::decode(static_cast<JSValueEncodedAsPointer*>(ARGS[2]))
-#define ARG_src3 JSValuePtr::decode(static_cast<JSValueEncodedAsPointer*>(ARGS[3]))
-#define ARG_src4 JSValuePtr::decode(static_cast<JSValueEncodedAsPointer*>(ARGS[4]))
-#define ARG_src5 JSValuePtr::decode(static_cast<JSValueEncodedAsPointer*>(ARGS[5]))
-#define ARG_id1 static_cast<Identifier*>(ARGS[1])
-#define ARG_id2 static_cast<Identifier*>(ARGS[2])
-#define ARG_id3 static_cast<Identifier*>(ARGS[3])
-#define ARG_id4 static_cast<Identifier*>(ARGS[4])
-#define ARG_int1 static_cast<int32_t>(reinterpret_cast<intptr_t>(ARGS[1]))
-#define ARG_int2 static_cast<int32_t>(reinterpret_cast<intptr_t>(ARGS[2]))
-#define ARG_int3 static_cast<int32_t>(reinterpret_cast<intptr_t>(ARGS[3]))
-#define ARG_int4 static_cast<int32_t>(reinterpret_cast<intptr_t>(ARGS[4]))
-#define ARG_int5 static_cast<int32_t>(reinterpret_cast<intptr_t>(ARGS[5]))
-#define ARG_int6 static_cast<int32_t>(reinterpret_cast<intptr_t>(ARGS[6]))
-#define ARG_func1 static_cast<FuncDeclNode*>(ARGS[1])
-#define ARG_funcexp1 static_cast<FuncExprNode*>(ARGS[1])
-#define ARG_regexp1 static_cast<RegExp*>(ARGS[1])
-#define ARG_pni1 static_cast<JSPropertyNameIterator*>(ARGS[1])
-#define ARG_returnAddress2 static_cast<void*>(ARGS[2])
-#define ARG_codeBlock4 static_cast<CodeBlock*>(ARGS[4])
-
-#define STUB_RETURN_ADDRESS_SLOT (ARGS[-1])
-
namespace JSC {
class CodeBlock;
+ class JIT;
class JSPropertyNameIterator;
class Interpreter;
class Register;
@@ -98,16 +69,8 @@ namespace JSC {
struct PolymorphicAccessStructureList;
struct StructureStubInfo;
- typedef JSValueEncodedAsPointer* (JIT_STUB *CTIHelper_j)(STUB_ARGS);
- typedef JSObject* (JIT_STUB *CTIHelper_o)(STUB_ARGS);
- typedef JSPropertyNameIterator* (JIT_STUB *CTIHelper_p)(STUB_ARGS);
- typedef void (JIT_STUB *CTIHelper_v)(STUB_ARGS);
- typedef void* (JIT_STUB *CTIHelper_s)(STUB_ARGS);
- typedef int (JIT_STUB *CTIHelper_b)(STUB_ARGS);
- typedef VoidPtrPair (JIT_STUB *CTIHelper_2)(STUB_ARGS);
-
struct CallRecord {
- MacroAssembler::Jump from;
+ MacroAssembler::Call from;
unsigned bytecodeIndex;
void* to;
@@ -115,7 +78,7 @@ namespace JSC {
{
}
- CallRecord(MacroAssembler::Jump from, unsigned bytecodeIndex, void* to = 0)
+ CallRecord(MacroAssembler::Call from, unsigned bytecodeIndex, void* to = 0)
: from(from)
, bytecodeIndex(bytecodeIndex)
, to(to)
@@ -182,42 +145,91 @@ namespace JSC {
};
struct PropertyStubCompilationInfo {
- MacroAssembler::Jump callReturnLocation;
+ MacroAssembler::Call callReturnLocation;
MacroAssembler::Label hotPathBegin;
};
struct StructureStubCompilationInfo {
MacroAssembler::DataLabelPtr hotPathBegin;
- MacroAssembler::Jump hotPathOther;
- MacroAssembler::Jump callReturnLocation;
+ MacroAssembler::Call hotPathOther;
+ MacroAssembler::Call callReturnLocation;
MacroAssembler::Label coldPathOther;
};
- extern "C" {
- JSValueEncodedAsPointer* ctiTrampoline(
-#if PLATFORM(X86_64)
- // FIXME: (bug #22910) this will force all arguments onto the stack (regparm(0) does not appear to have any effect).
- // We can allow register passing here, and move the writes of these values into the trampoline.
- void*, void*, void*, void*, void*, void*,
-#endif
- void* code, RegisterFile*, CallFrame*, JSValuePtr* exception, Profiler**, JSGlobalData*);
- void ctiVMThrowTrampoline();
+ struct MethodCallCompilationInfo {
+ MethodCallCompilationInfo(unsigned propertyAccessIndex)
+ : propertyAccessIndex(propertyAccessIndex)
+ {
+ }
+
+ MacroAssembler::DataLabelPtr structureToCompare;
+ unsigned propertyAccessIndex;
};
- void ctiSetReturnAddress(void** where, void* what);
- void ctiPatchCallByReturnAddress(void* where, void* what);
+ // Near calls can only be patched to other JIT code, regular calls can be patched to JIT code or relinked to stub functions.
+ void ctiPatchNearCallByReturnAddress(MacroAssembler::ProcessorReturnAddress returnAddress, MacroAssemblerCodePtr newCalleeFunction);
+ void ctiPatchCallByReturnAddress(MacroAssembler::ProcessorReturnAddress returnAddress, MacroAssemblerCodePtr newCalleeFunction);
+ void ctiPatchCallByReturnAddress(MacroAssembler::ProcessorReturnAddress returnAddress, FunctionPtr newCalleeFunction);
class JIT : private MacroAssembler {
+ friend class JITStubCall;
+ friend class CallEvalJITStub;
+
using MacroAssembler::Jump;
using MacroAssembler::JumpList;
using MacroAssembler::Label;
+ // NOTES:
+ //
+ // regT0 has two special meanings. The return value from a stub
+ // call will always be in regT0, and by default (unless
+ // a register is specified) emitPutVirtualRegister() will store
+ // the value from regT0.
+ //
+ // regT3 is required to be callee-preserved.
+ //
+ // tempRegister2 is has no such dependencies. It is important that
+ // on x86/x86-64 it is ecx for performance reasons, since the
+ // MacroAssembler will need to plant register swaps if it is not -
+ // however the code will still function correctly.
#if PLATFORM(X86_64)
+ static const RegisterID returnValueRegister = X86::eax;
+ static const RegisterID cachedResultRegister = X86::eax;
+ static const RegisterID firstArgumentRegister = X86::edi;
+
static const RegisterID timeoutCheckRegister = X86::r12;
static const RegisterID callFrameRegister = X86::r13;
-#else
+ static const RegisterID tagTypeNumberRegister = X86::r14;
+ static const RegisterID tagMaskRegister = X86::r15;
+
+ static const RegisterID regT0 = X86::eax;
+ static const RegisterID regT1 = X86::edx;
+ static const RegisterID regT2 = X86::ecx;
+ static const RegisterID regT3 = X86::ebx;
+
+ static const FPRegisterID fpRegT0 = X86::xmm0;
+ static const FPRegisterID fpRegT1 = X86::xmm1;
+ static const FPRegisterID fpRegT2 = X86::xmm2;
+#elif PLATFORM(X86)
+ static const RegisterID returnValueRegister = X86::eax;
+ static const RegisterID cachedResultRegister = X86::eax;
+ // On x86 we always use fastcall conventions = but on
+ // OS X if might make more sense to just use regparm.
+ static const RegisterID firstArgumentRegister = X86::ecx;
+
static const RegisterID timeoutCheckRegister = X86::esi;
static const RegisterID callFrameRegister = X86::edi;
+
+ static const RegisterID regT0 = X86::eax;
+ static const RegisterID regT1 = X86::edx;
+ static const RegisterID regT2 = X86::ecx;
+ static const RegisterID regT3 = X86::ebx;
+
+ static const FPRegisterID fpRegT0 = X86::xmm0;
+ static const FPRegisterID fpRegT1 = X86::xmm1;
+ static const FPRegisterID fpRegT2 = X86::xmm2;
+#else
+ #error "JIT not supported on this platform."
#endif
static const int patchGetByIdDefaultStructure = -1;
@@ -225,48 +237,56 @@ namespace JSC {
// will compress the displacement, and we may not be able to fit a patched offset.
static const int patchGetByIdDefaultOffset = 256;
-#if USE(JIT_STUB_ARGUMENT_REGISTER)
-#if PLATFORM(X86_64)
- static const int ctiArgumentInitSize = 3;
-#else
- static const int ctiArgumentInitSize = 2;
-#endif
-#elif USE(JIT_STUB_ARGUMENT_STACK)
- static const int ctiArgumentInitSize = 4;
-#else // JIT_STUB_ARGUMENT_VA_LIST
- static const int ctiArgumentInitSize = 0;
-#endif
-
#if PLATFORM(X86_64)
// These architecture specific value are used to enable patching - see comment on op_put_by_id.
static const int patchOffsetPutByIdStructure = 10;
+ static const int patchOffsetPutByIdExternalLoad = 20;
+ static const int patchLengthPutByIdExternalLoad = 4;
static const int patchOffsetPutByIdPropertyMapOffset = 31;
// These architecture specific value are used to enable patching - see comment on op_get_by_id.
static const int patchOffsetGetByIdStructure = 10;
static const int patchOffsetGetByIdBranchToSlowCase = 20;
+ static const int patchOffsetGetByIdExternalLoad = 20;
+ static const int patchLengthGetByIdExternalLoad = 4;
static const int patchOffsetGetByIdPropertyMapOffset = 31;
static const int patchOffsetGetByIdPutResult = 31;
#if ENABLE(OPCODE_SAMPLING)
- static const int patchOffsetGetByIdSlowCaseCall = 40 + ctiArgumentInitSize;
+ static const int patchOffsetGetByIdSlowCaseCall = 66;
#else
- static const int patchOffsetGetByIdSlowCaseCall = 30 + ctiArgumentInitSize;
+ static const int patchOffsetGetByIdSlowCaseCall = 44;
#endif
static const int patchOffsetOpCallCompareToJump = 9;
+
+ static const int patchOffsetMethodCheckProtoObj = 20;
+ static const int patchOffsetMethodCheckProtoStruct = 30;
+ static const int patchOffsetMethodCheckPutFunction = 50;
#else
// These architecture specific value are used to enable patching - see comment on op_put_by_id.
static const int patchOffsetPutByIdStructure = 7;
+ static const int patchOffsetPutByIdExternalLoad = 13;
+ static const int patchLengthPutByIdExternalLoad = 3;
static const int patchOffsetPutByIdPropertyMapOffset = 22;
// These architecture specific value are used to enable patching - see comment on op_get_by_id.
static const int patchOffsetGetByIdStructure = 7;
static const int patchOffsetGetByIdBranchToSlowCase = 13;
+ static const int patchOffsetGetByIdExternalLoad = 13;
+ static const int patchLengthGetByIdExternalLoad = 3;
static const int patchOffsetGetByIdPropertyMapOffset = 22;
static const int patchOffsetGetByIdPutResult = 22;
-#if ENABLE(OPCODE_SAMPLING)
- static const int patchOffsetGetByIdSlowCaseCall = 31 + ctiArgumentInitSize;
+#if ENABLE(OPCODE_SAMPLING) && USE(JIT_STUB_ARGUMENT_VA_LIST)
+ static const int patchOffsetGetByIdSlowCaseCall = 31;
+#elif ENABLE(OPCODE_SAMPLING)
+ static const int patchOffsetGetByIdSlowCaseCall = 33;
+#elif USE(JIT_STUB_ARGUMENT_VA_LIST)
+ static const int patchOffsetGetByIdSlowCaseCall = 21;
#else
- static const int patchOffsetGetByIdSlowCaseCall = 21 + ctiArgumentInitSize;
+ static const int patchOffsetGetByIdSlowCaseCall = 23;
#endif
static const int patchOffsetOpCallCompareToJump = 6;
+
+ static const int patchOffsetMethodCheckProtoObj = 11;
+ static const int patchOffsetMethodCheckProtoStruct = 18;
+ static const int patchOffsetMethodCheckPutFunction = 29;
#endif
public:
@@ -276,19 +296,12 @@ namespace JSC {
jit.privateCompile();
}
- static void compileGetByIdSelf(JSGlobalData* globalData, CodeBlock* codeBlock, StructureStubInfo* stubInfo, Structure* structure, size_t cachedOffset, void* returnAddress)
- {
- JIT jit(globalData, codeBlock);
- jit.privateCompileGetByIdSelf(stubInfo, structure, cachedOffset, returnAddress);
- }
-
- static void compileGetByIdProto(JSGlobalData* globalData, CallFrame* callFrame, CodeBlock* codeBlock, StructureStubInfo* stubInfo, Structure* structure, Structure* prototypeStructure, size_t cachedOffset, void* returnAddress)
+ static void compileGetByIdProto(JSGlobalData* globalData, CallFrame* callFrame, CodeBlock* codeBlock, StructureStubInfo* stubInfo, Structure* structure, Structure* prototypeStructure, size_t cachedOffset, ProcessorReturnAddress returnAddress)
{
JIT jit(globalData, codeBlock);
jit.privateCompileGetByIdProto(stubInfo, structure, prototypeStructure, cachedOffset, returnAddress, callFrame);
}
-#if USE(CTI_REPATCH_PIC)
static void compileGetByIdSelfList(JSGlobalData* globalData, CodeBlock* codeBlock, StructureStubInfo* stubInfo, PolymorphicAccessStructureList* polymorphicStructures, int currentIndex, Structure* structure, size_t cachedOffset)
{
JIT jit(globalData, codeBlock);
@@ -304,118 +317,237 @@ namespace JSC {
JIT jit(globalData, codeBlock);
jit.privateCompileGetByIdChainList(stubInfo, prototypeStructureList, currentIndex, structure, chain, count, cachedOffset, callFrame);
}
-#endif
- static void compileGetByIdChain(JSGlobalData* globalData, CallFrame* callFrame, CodeBlock* codeBlock, StructureStubInfo* stubInfo, Structure* structure, StructureChain* chain, size_t count, size_t cachedOffset, void* returnAddress)
+ static void compileGetByIdChain(JSGlobalData* globalData, CallFrame* callFrame, CodeBlock* codeBlock, StructureStubInfo* stubInfo, Structure* structure, StructureChain* chain, size_t count, size_t cachedOffset, ProcessorReturnAddress returnAddress)
{
JIT jit(globalData, codeBlock);
jit.privateCompileGetByIdChain(stubInfo, structure, chain, count, cachedOffset, returnAddress, callFrame);
}
-
- static void compilePutByIdReplace(JSGlobalData* globalData, CodeBlock* codeBlock, StructureStubInfo* stubInfo, Structure* structure, size_t cachedOffset, void* returnAddress)
- {
- JIT jit(globalData, codeBlock);
- jit.privateCompilePutByIdReplace(stubInfo, structure, cachedOffset, returnAddress);
- }
- static void compilePutByIdTransition(JSGlobalData* globalData, CodeBlock* codeBlock, StructureStubInfo* stubInfo, Structure* oldStructure, Structure* newStructure, size_t cachedOffset, StructureChain* chain, void* returnAddress)
+ static void compilePutByIdTransition(JSGlobalData* globalData, CodeBlock* codeBlock, StructureStubInfo* stubInfo, Structure* oldStructure, Structure* newStructure, size_t cachedOffset, StructureChain* chain, ProcessorReturnAddress returnAddress)
{
JIT jit(globalData, codeBlock);
jit.privateCompilePutByIdTransition(stubInfo, oldStructure, newStructure, cachedOffset, chain, returnAddress);
}
- static void compileCTIMachineTrampolines(JSGlobalData* globalData)
+ static void compileCTIMachineTrampolines(JSGlobalData* globalData, RefPtr<ExecutablePool>* executablePool, CodePtr* ctiArrayLengthTrampoline, CodePtr* ctiStringLengthTrampoline, CodePtr* ctiVirtualCallPreLink, CodePtr* ctiVirtualCallLink, CodePtr* ctiVirtualCall, CodePtr* ctiNativeCallThunk)
{
JIT jit(globalData);
- jit.privateCompileCTIMachineTrampolines();
+ jit.privateCompileCTIMachineTrampolines(executablePool, globalData, ctiArrayLengthTrampoline, ctiStringLengthTrampoline, ctiVirtualCallPreLink, ctiVirtualCallLink, ctiVirtualCall, ctiNativeCallThunk);
}
- static void patchGetByIdSelf(StructureStubInfo*, Structure*, size_t cachedOffset, void* returnAddress);
- static void patchPutByIdReplace(StructureStubInfo*, Structure*, size_t cachedOffset, void* returnAddress);
+ static void patchGetByIdSelf(StructureStubInfo*, Structure*, size_t cachedOffset, ProcessorReturnAddress returnAddress);
+ static void patchPutByIdReplace(StructureStubInfo*, Structure*, size_t cachedOffset, ProcessorReturnAddress returnAddress);
+ static void patchMethodCallProto(MethodCallLinkInfo&, JSFunction*, Structure*, JSObject*);
- static void compilePatchGetArrayLength(JSGlobalData* globalData, CodeBlock* codeBlock, void* returnAddress)
+ static void compilePatchGetArrayLength(JSGlobalData* globalData, CodeBlock* codeBlock, ProcessorReturnAddress returnAddress)
{
JIT jit(globalData, codeBlock);
return jit.privateCompilePatchGetArrayLength(returnAddress);
}
- static void linkCall(JSFunction* callee, CodeBlock* calleeCodeBlock, void* ctiCode, CallLinkInfo* callLinkInfo, int callerArgCount);
+ static void linkCall(JSFunction* callee, CodeBlock* calleeCodeBlock, JITCode&, CallLinkInfo*, int callerArgCount);
static void unlinkCall(CallLinkInfo*);
- inline static JSValuePtr execute(void* code, RegisterFile* registerFile, CallFrame* callFrame, JSGlobalData* globalData, JSValuePtr* exception)
- {
- return JSValuePtr::decode(ctiTrampoline(
-#if PLATFORM(X86_64)
- 0, 0, 0, 0, 0, 0,
-#endif
- code, registerFile, callFrame, exception, Profiler::enabledProfilerReference(), globalData));
- }
-
private:
+ struct JSRInfo {
+ DataLabelPtr storeLocation;
+ Label target;
+
+ JSRInfo(DataLabelPtr storeLocation, Label targetLocation)
+ : storeLocation(storeLocation)
+ , target(targetLocation)
+ {
+ }
+ };
+
JIT(JSGlobalData*, CodeBlock* = 0);
void privateCompileMainPass();
void privateCompileLinkPass();
void privateCompileSlowCases();
void privateCompile();
- void privateCompileGetByIdSelf(StructureStubInfo*, Structure*, size_t cachedOffset, void* returnAddress);
- void privateCompileGetByIdProto(StructureStubInfo*, Structure*, Structure* prototypeStructure, size_t cachedOffset, void* returnAddress, CallFrame* callFrame);
-#if USE(CTI_REPATCH_PIC)
+ void privateCompileGetByIdProto(StructureStubInfo*, Structure*, Structure* prototypeStructure, size_t cachedOffset, ProcessorReturnAddress returnAddress, CallFrame* callFrame);
void privateCompileGetByIdSelfList(StructureStubInfo*, PolymorphicAccessStructureList*, int, Structure*, size_t cachedOffset);
void privateCompileGetByIdProtoList(StructureStubInfo*, PolymorphicAccessStructureList*, int, Structure*, Structure* prototypeStructure, size_t cachedOffset, CallFrame* callFrame);
void privateCompileGetByIdChainList(StructureStubInfo*, PolymorphicAccessStructureList*, int, Structure*, StructureChain* chain, size_t count, size_t cachedOffset, CallFrame* callFrame);
-#endif
- void privateCompileGetByIdChain(StructureStubInfo*, Structure*, StructureChain*, size_t count, size_t cachedOffset, void* returnAddress, CallFrame* callFrame);
- void privateCompilePutByIdReplace(StructureStubInfo*, Structure*, size_t cachedOffset, void* returnAddress);
- void privateCompilePutByIdTransition(StructureStubInfo*, Structure*, Structure*, size_t cachedOffset, StructureChain*, void* returnAddress);
+ void privateCompileGetByIdChain(StructureStubInfo*, Structure*, StructureChain*, size_t count, size_t cachedOffset, ProcessorReturnAddress returnAddress, CallFrame* callFrame);
+ void privateCompilePutByIdTransition(StructureStubInfo*, Structure*, Structure*, size_t cachedOffset, StructureChain*, ProcessorReturnAddress returnAddress);
- void privateCompileCTIMachineTrampolines();
- void privateCompilePatchGetArrayLength(void* returnAddress);
+ void privateCompileCTIMachineTrampolines(RefPtr<ExecutablePool>* executablePool, JSGlobalData* data, CodePtr* ctiArrayLengthTrampoline, CodePtr* ctiStringLengthTrampoline, CodePtr* ctiVirtualCallPreLink, CodePtr* ctiVirtualCallLink, CodePtr* ctiVirtualCall, CodePtr* ctiNativeCallThunk);
+ void privateCompilePatchGetArrayLength(ProcessorReturnAddress returnAddress);
void addSlowCase(Jump);
void addJump(Jump, int);
void emitJumpSlowToHot(Jump, int);
+#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
void compileGetByIdHotPath(int resultVReg, int baseVReg, Identifier* ident, unsigned propertyAccessInstructionIndex);
- void compileGetByIdSlowCase(int resultVReg, int baseVReg, Identifier* ident, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionIndex);
- void compilePutByIdHotPath(int baseVReg, Identifier* ident, int valueVReg, unsigned propertyAccessInstructionIndex);
- void compilePutByIdSlowCase(int baseVReg, Identifier* ident, int valueVReg, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionIndex);
+ void compileGetByIdSlowCase(int resultVReg, int baseVReg, Identifier* ident, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionIndex, bool isMethodCheck = false);
+#endif
void compileOpCall(OpcodeID, Instruction* instruction, unsigned callLinkInfoIndex);
+ void compileOpCallVarargs(Instruction* instruction);
void compileOpCallInitializeCallFrame();
void compileOpCallSetupArgs(Instruction*);
- void compileOpCallEvalSetupArgs(Instruction*);
+ void compileOpCallVarargsSetupArgs(Instruction*);
void compileOpCallSlowCase(Instruction* instruction, Vector<SlowCaseEntry>::iterator& iter, unsigned callLinkInfoIndex, OpcodeID opcodeID);
+ void compileOpCallVarargsSlowCase(Instruction* instruction, Vector<SlowCaseEntry>::iterator& iter);
void compileOpConstructSetupArgs(Instruction*);
enum CompileOpStrictEqType { OpStrictEq, OpNStrictEq };
void compileOpStrictEq(Instruction* instruction, CompileOpStrictEqType type);
- void putDoubleResultToJSNumberCellOrJSImmediate(X86Assembler::XMMRegisterID xmmSource, RegisterID jsNumberCell, unsigned dst, X86Assembler::JmpSrc* wroteJSNumberCell, X86Assembler::XMMRegisterID tempXmm, RegisterID tempReg1, RegisterID tempReg2);
-
- void compileFastArith_op_add(Instruction*);
- void compileFastArith_op_mul(Instruction*);
- void compileFastArith_op_mod(unsigned result, unsigned op1, unsigned op2);
- void compileFastArith_op_bitand(unsigned result, unsigned op1, unsigned op2);
- void compileFastArith_op_lshift(unsigned result, unsigned op1, unsigned op2);
- void compileFastArith_op_rshift(unsigned result, unsigned op1, unsigned op2);
- void compileFastArith_op_pre_inc(unsigned srcDst);
- void compileFastArith_op_pre_dec(unsigned srcDst);
- void compileFastArith_op_post_inc(unsigned result, unsigned srcDst);
- void compileFastArith_op_post_dec(unsigned result, unsigned srcDst);
- void compileFastArithSlow_op_add(Instruction*, Vector<SlowCaseEntry>::iterator&);
- void compileFastArithSlow_op_mul(Instruction*, Vector<SlowCaseEntry>::iterator&);
- void compileFastArithSlow_op_mod(unsigned result, unsigned op1, unsigned op2, Vector<SlowCaseEntry>::iterator&);
- void compileFastArithSlow_op_bitand(unsigned result, unsigned op1, unsigned op2, Vector<SlowCaseEntry>::iterator&);
- void compileFastArithSlow_op_lshift(unsigned result, unsigned op1, unsigned op2, Vector<SlowCaseEntry>::iterator&);
- void compileFastArithSlow_op_rshift(unsigned result, unsigned op1, unsigned op2, Vector<SlowCaseEntry>::iterator&);
- void compileFastArithSlow_op_pre_inc(unsigned srcDst, Vector<SlowCaseEntry>::iterator&);
- void compileFastArithSlow_op_pre_dec(unsigned srcDst, Vector<SlowCaseEntry>::iterator&);
- void compileFastArithSlow_op_post_inc(unsigned result, unsigned srcDst, Vector<SlowCaseEntry>::iterator&);
- void compileFastArithSlow_op_post_dec(unsigned result, unsigned srcDst, Vector<SlowCaseEntry>::iterator&);
+
+ void compileGetDirectOffset(RegisterID base, RegisterID result, Structure* structure, size_t cachedOffset);
+ void compileGetDirectOffset(JSObject* base, RegisterID result, size_t cachedOffset);
+ void compilePutDirectOffset(RegisterID base, RegisterID value, Structure* structure, size_t cachedOffset);
+
+ // Arithmetic Ops
+
+ void emit_op_add(Instruction*);
+ void emit_op_sub(Instruction*);
+ void emit_op_mul(Instruction*);
+ void emit_op_mod(Instruction*);
+ void emit_op_bitand(Instruction*);
+ void emit_op_lshift(Instruction*);
+ void emit_op_rshift(Instruction*);
+ void emit_op_jnless(Instruction*);
+ void emit_op_jnlesseq(Instruction*);
+ void emit_op_pre_inc(Instruction*);
+ void emit_op_pre_dec(Instruction*);
+ void emit_op_post_inc(Instruction*);
+ void emit_op_post_dec(Instruction*);
+ void emitSlow_op_add(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_sub(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_mul(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_mod(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_bitand(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_lshift(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_rshift(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_jnless(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_jnlesseq(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_pre_inc(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_pre_dec(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_post_inc(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_post_dec(Instruction*, Vector<SlowCaseEntry>::iterator&);
+
+ void emit_op_get_by_val(Instruction*);
+ void emit_op_put_by_val(Instruction*);
+ void emit_op_put_by_index(Instruction*);
+ void emit_op_put_getter(Instruction*);
+ void emit_op_put_setter(Instruction*);
+ void emit_op_del_by_id(Instruction*);
+
+ void emit_op_mov(Instruction*);
+ void emit_op_end(Instruction*);
+ void emit_op_jmp(Instruction*);
+ void emit_op_loop(Instruction*);
+ void emit_op_loop_if_less(Instruction*);
+ void emit_op_loop_if_lesseq(Instruction*);
+ void emit_op_new_object(Instruction*);
+ void emit_op_put_by_id(Instruction*);
+ void emit_op_get_by_id(Instruction*);
+ void emit_op_instanceof(Instruction*);
+ void emit_op_new_func(Instruction*);
+ void emit_op_call(Instruction*);
+ void emit_op_call_eval(Instruction*);
+ void emit_op_method_check(Instruction*);
+ void emit_op_load_varargs(Instruction*);
+ void emit_op_call_varargs(Instruction*);
+ void emit_op_construct(Instruction*);
+ void emit_op_get_global_var(Instruction*);
+ void emit_op_put_global_var(Instruction*);
+ void emit_op_get_scoped_var(Instruction*);
+ void emit_op_put_scoped_var(Instruction*);
+ void emit_op_tear_off_activation(Instruction*);
+ void emit_op_tear_off_arguments(Instruction*);
+ void emit_op_ret(Instruction*);
+ void emit_op_new_array(Instruction*);
+ void emit_op_resolve(Instruction*);
+ void emit_op_construct_verify(Instruction*);
+ void emit_op_to_primitive(Instruction*);
+ void emit_op_strcat(Instruction*);
+ void emit_op_resolve_func(Instruction*);
+ void emit_op_loop_if_true(Instruction*);
+ void emit_op_resolve_base(Instruction*);
+ void emit_op_resolve_skip(Instruction*);
+ void emit_op_resolve_global(Instruction*);
+ void emit_op_not(Instruction*);
+ void emit_op_jfalse(Instruction*);
+ void emit_op_jeq_null(Instruction*);
+ void emit_op_jneq_null(Instruction*);
+ void emit_op_jneq_ptr(Instruction*);
+ void emit_op_unexpected_load(Instruction*);
+ void emit_op_jsr(Instruction*);
+ void emit_op_sret(Instruction*);
+ void emit_op_eq(Instruction*);
+ void emit_op_bitnot(Instruction*);
+ void emit_op_resolve_with_base(Instruction*);
+ void emit_op_new_func_exp(Instruction*);
+ void emit_op_jtrue(Instruction*);
+ void emit_op_neq(Instruction*);
+ void emit_op_bitxor(Instruction*);
+ void emit_op_new_regexp(Instruction*);
+ void emit_op_bitor(Instruction*);
+ void emit_op_throw(Instruction*);
+ void emit_op_next_pname(Instruction*);
+ void emit_op_push_scope(Instruction*);
+ void emit_op_pop_scope(Instruction*);
+ void emit_op_stricteq(Instruction*);
+ void emit_op_nstricteq(Instruction*);
+ void emit_op_to_jsnumber(Instruction*);
+ void emit_op_push_new_scope(Instruction*);
+ void emit_op_catch(Instruction*);
+ void emit_op_jmp_scopes(Instruction*);
+ void emit_op_switch_imm(Instruction*);
+ void emit_op_switch_char(Instruction*);
+ void emit_op_switch_string(Instruction*);
+ void emit_op_new_error(Instruction*);
+ void emit_op_debug(Instruction*);
+ void emit_op_eq_null(Instruction*);
+ void emit_op_neq_null(Instruction*);
+ void emit_op_enter(Instruction*);
+ void emit_op_enter_with_activation(Instruction*);
+ void emit_op_init_arguments(Instruction*);
+ void emit_op_create_arguments(Instruction*);
+ void emit_op_convert_this(Instruction*);
+ void emit_op_profile_will_call(Instruction*);
+ void emit_op_profile_did_call(Instruction*);
+
+ void emitSlow_op_convert_this(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_construct_verify(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_to_primitive(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_get_by_val(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_loop_if_less(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_put_by_id(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_get_by_id(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_loop_if_lesseq(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_put_by_val(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_loop_if_true(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_not(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_jfalse(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_bitnot(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_jtrue(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_bitxor(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_bitor(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_eq(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_neq(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_stricteq(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_nstricteq(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_instanceof(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_call(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_call_eval(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_method_check(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_call_varargs(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_construct(Instruction*, Vector<SlowCaseEntry>::iterator&);
+ void emitSlow_op_to_jsnumber(Instruction*, Vector<SlowCaseEntry>::iterator&);
+
+#if ENABLE(JIT_OPTIMIZE_ARITHMETIC)
void compileBinaryArithOp(OpcodeID, unsigned dst, unsigned src1, unsigned src2, OperandTypes opi);
void compileBinaryArithOpSlowCase(OpcodeID, Vector<SlowCaseEntry>::iterator&, unsigned dst, unsigned src1, unsigned src2, OperandTypes opi);
+#endif
void emitGetVirtualRegister(int src, RegisterID dst);
void emitGetVirtualRegisters(int src1, RegisterID dst1, int src2, RegisterID dst2);
- void emitPutVirtualRegister(unsigned dst, RegisterID from = X86::eax);
+ void emitPutVirtualRegister(unsigned dst, RegisterID from = regT0);
void emitPutJITStubArg(RegisterID src, unsigned argumentNumber);
void emitPutJITStubArgFromVirtualRegister(unsigned src, unsigned argumentNumber, RegisterID scratch);
@@ -425,23 +557,35 @@ namespace JSC {
void emitInitRegister(unsigned dst);
- void emitPutCTIParam(void* value, unsigned name);
- void emitPutCTIParam(RegisterID from, unsigned name);
- void emitGetCTIParam(unsigned name, RegisterID to);
-
void emitPutToCallFrameHeader(RegisterID from, RegisterFile::CallFrameHeaderEntry entry);
void emitPutImmediateToCallFrameHeader(void* value, RegisterFile::CallFrameHeaderEntry entry);
- void emitGetFromCallFrameHeader(RegisterFile::CallFrameHeaderEntry entry, RegisterID to);
+ void emitGetFromCallFrameHeaderPtr(RegisterFile::CallFrameHeaderEntry entry, RegisterID to, RegisterID from = callFrameRegister);
+ void emitGetFromCallFrameHeader32(RegisterFile::CallFrameHeaderEntry entry, RegisterID to, RegisterID from = callFrameRegister);
- JSValuePtr getConstantOperand(unsigned src);
+ JSValue getConstantOperand(unsigned src);
int32_t getConstantOperandImmediateInt(unsigned src);
bool isOperandConstantImmediateInt(unsigned src);
Jump emitJumpIfJSCell(RegisterID);
+ Jump emitJumpIfBothJSCells(RegisterID, RegisterID, RegisterID);
void emitJumpSlowCaseIfJSCell(RegisterID);
Jump emitJumpIfNotJSCell(RegisterID);
void emitJumpSlowCaseIfNotJSCell(RegisterID);
void emitJumpSlowCaseIfNotJSCell(RegisterID, int VReg);
+#if USE(ALTERNATE_JSIMMEDIATE)
+ JIT::Jump emitJumpIfImmediateNumber(RegisterID);
+ JIT::Jump emitJumpIfNotImmediateNumber(RegisterID);
+#else
+ JIT::Jump emitJumpIfImmediateNumber(RegisterID reg)
+ {
+ return emitJumpIfImmediateInteger(reg);
+ }
+
+ JIT::Jump emitJumpIfNotImmediateNumber(RegisterID reg)
+ {
+ return emitJumpIfNotImmediateInteger(reg);
+ }
+#endif
Jump getSlowCase(Vector<SlowCaseEntry>::iterator& iter)
{
@@ -454,9 +598,11 @@ namespace JSC {
}
void linkSlowCaseIfNotJSCell(Vector<SlowCaseEntry>::iterator&, int vReg);
- JIT::Jump emitJumpIfImmNum(RegisterID);
- void emitJumpSlowCaseIfNotImmNum(RegisterID);
- void emitJumpSlowCaseIfNotImmNums(RegisterID, RegisterID, RegisterID);
+ JIT::Jump emitJumpIfImmediateInteger(RegisterID);
+ JIT::Jump emitJumpIfNotImmediateInteger(RegisterID);
+ JIT::Jump emitJumpIfNotImmediateIntegers(RegisterID, RegisterID, RegisterID);
+ void emitJumpSlowCaseIfNotImmediateInteger(RegisterID);
+ void emitJumpSlowCaseIfNotImmediateIntegers(RegisterID, RegisterID, RegisterID);
Jump checkStructure(RegisterID reg, Structure* structure);
@@ -473,27 +619,41 @@ namespace JSC {
void restoreArgumentReference();
void restoreArgumentReferenceForTrampoline();
- Jump emitNakedCall(RegisterID);
- Jump emitNakedCall(void* function);
- Jump emitCTICall_internal(void*);
- Jump emitCTICall(CTIHelper_j helper) { return emitCTICall_internal(reinterpret_cast<void*>(helper)); }
- Jump emitCTICall(CTIHelper_o helper) { return emitCTICall_internal(reinterpret_cast<void*>(helper)); }
- Jump emitCTICall(CTIHelper_p helper) { return emitCTICall_internal(reinterpret_cast<void*>(helper)); }
- Jump emitCTICall(CTIHelper_v helper) { return emitCTICall_internal(reinterpret_cast<void*>(helper)); }
- Jump emitCTICall(CTIHelper_s helper) { return emitCTICall_internal(reinterpret_cast<void*>(helper)); }
- Jump emitCTICall(CTIHelper_b helper) { return emitCTICall_internal(reinterpret_cast<void*>(helper)); }
- Jump emitCTICall(CTIHelper_2 helper) { return emitCTICall_internal(reinterpret_cast<void*>(helper)); }
+ Call emitNakedCall(CodePtr function = CodePtr());
+ void preverveReturnAddressAfterCall(RegisterID);
+ void restoreReturnAddressBeforeReturn(RegisterID);
+ void restoreReturnAddressBeforeReturn(Address);
void emitGetVariableObjectRegister(RegisterID variableObject, int index, RegisterID dst);
void emitPutVariableObjectRegister(RegisterID src, RegisterID variableObject, int index);
- void emitSlowScriptCheck();
+ void emitTimeoutCheck();
#ifndef NDEBUG
void printBytecodeOperandTypes(unsigned src1, unsigned src2);
#endif
void killLastResultRegister();
+
+#if ENABLE(SAMPLING_FLAGS)
+ void setSamplingFlag(int32_t);
+ void clearSamplingFlag(int32_t);
+#endif
+
+#if ENABLE(SAMPLING_COUNTERS)
+ void emitCount(AbstractSamplingCounter&, uint32_t = 1);
+#endif
+
+#if ENABLE(OPCODE_SAMPLING)
+ void sampleInstruction(Instruction*, bool = false);
+#endif
+
+#if ENABLE(CODEBLOCK_SAMPLING)
+ void sampleCodeBlock(CodeBlock*);
+#else
+ void sampleCodeBlock(CodeBlock*) {}
+#endif
+
Interpreter* m_interpreter;
JSGlobalData* m_globalData;
CodeBlock* m_codeBlock;
@@ -502,19 +662,9 @@ namespace JSC {
Vector<Label> m_labels;
Vector<PropertyStubCompilationInfo> m_propertyAccessCompilationInfo;
Vector<StructureStubCompilationInfo> m_callStructureStubCompilationInfo;
+ Vector<MethodCallCompilationInfo> m_methodCallCompilationInfo;
Vector<JumpTable> m_jmpTable;
- struct JSRInfo {
- DataLabelPtr storeLocation;
- Label target;
-
- JSRInfo(DataLabelPtr storeLocation, Label targetLocation)
- : storeLocation(storeLocation)
- , target(targetLocation)
- {
- }
- };
-
unsigned m_bytecodeIndex;
Vector<JSRInfo> m_jsrSites;
Vector<SlowCaseEntry> m_slowCases;
@@ -522,7 +672,12 @@ namespace JSC {
int m_lastResultBytecodeRegister;
unsigned m_jumpTargetsPosition;
- };
+
+ unsigned m_propertyAccessInstructionIndex;
+ unsigned m_globalResolveInfoIndex;
+ unsigned m_callLinkInfoIndex;
+ } JIT_CLASS_ALIGNMENT;
+
}
#endif // ENABLE(JIT)
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITArithmetic.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/JITArithmetic.cpp
index f95bab8..2ceb935 100644
--- a/src/3rdparty/webkit/JavaScriptCore/jit/JITArithmetic.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITArithmetic.cpp
@@ -30,6 +30,7 @@
#include "CodeBlock.h"
#include "JITInlineMethods.h"
+#include "JITStubCall.h"
#include "JSArray.h"
#include "JSFunction.h"
#include "Interpreter.h"
@@ -40,35 +41,43 @@
#include <stdio.h>
#endif
-#define __ m_assembler.
using namespace std;
namespace JSC {
-void JIT::compileFastArith_op_lshift(unsigned result, unsigned op1, unsigned op2)
+void JIT::emit_op_lshift(Instruction* currentInstruction)
{
- emitGetVirtualRegisters(op1, X86::eax, op2, X86::ecx);
- // FIXME: would we be better using 'emitJumpSlowCaseIfNotImmNums'? - we *probably* ought to be consistent.
- emitJumpSlowCaseIfNotImmNum(X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::ecx);
- emitFastArithImmToInt(X86::eax);
- emitFastArithImmToInt(X86::ecx);
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ emitGetVirtualRegisters(op1, regT0, op2, regT2);
+ // FIXME: would we be better using 'emitJumpSlowCaseIfNotImmediateIntegers'? - we *probably* ought to be consistent.
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT2);
+ emitFastArithImmToInt(regT0);
+ emitFastArithImmToInt(regT2);
#if !PLATFORM(X86)
// Mask with 0x1f as per ecma-262 11.7.2 step 7.
// On 32-bit x86 this is not necessary, since the shift anount is implicitly masked in the instruction.
- and32(Imm32(0x1f), X86::ecx);
+ and32(Imm32(0x1f), regT2);
#endif
- lshift32(X86::ecx, X86::eax);
+ lshift32(regT2, regT0);
#if !USE(ALTERNATE_JSIMMEDIATE)
- addSlowCase(joAdd32(X86::eax, X86::eax));
- signExtend32ToPtr(X86::eax, X86::eax);
+ addSlowCase(branchAdd32(Overflow, regT0, regT0));
+ signExtend32ToPtr(regT0, regT0);
#endif
- emitFastArithReTagImmediate(X86::eax, X86::eax);
+ emitFastArithReTagImmediate(regT0, regT0);
emitPutVirtualRegister(result);
}
-void JIT::compileFastArithSlow_op_lshift(unsigned result, unsigned op1, unsigned op2, Vector<SlowCaseEntry>::iterator& iter)
+
+void JIT::emitSlow_op_lshift(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
#if USE(ALTERNATE_JSIMMEDIATE)
UNUSED_PARAM(op1);
UNUSED_PARAM(op2);
@@ -79,652 +88,1137 @@ void JIT::compileFastArithSlow_op_lshift(unsigned result, unsigned op1, unsigned
Jump notImm1 = getSlowCase(iter);
Jump notImm2 = getSlowCase(iter);
linkSlowCase(iter);
- emitGetVirtualRegisters(op1, X86::eax, op2, X86::ecx);
+ emitGetVirtualRegisters(op1, regT0, op2, regT2);
notImm1.link(this);
notImm2.link(this);
#endif
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::ecx, 2);
- emitCTICall(Interpreter::cti_op_lshift);
- emitPutVirtualRegister(result);
+ JITStubCall stubCall(this, JITStubs::cti_op_lshift);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT2);
+ stubCall.call(result);
}
-void JIT::compileFastArith_op_rshift(unsigned result, unsigned op1, unsigned op2)
+void JIT::emit_op_rshift(Instruction* currentInstruction)
{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
if (isOperandConstantImmediateInt(op2)) {
- emitGetVirtualRegister(op1, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ // isOperandConstantImmediateInt(op2) => 1 SlowCase
+ emitGetVirtualRegister(op1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
// Mask with 0x1f as per ecma-262 11.7.2 step 7.
#if USE(ALTERNATE_JSIMMEDIATE)
- rshift32(Imm32(JSImmediate::getTruncatedUInt32(getConstantOperand(op2)) & 0x1f), X86::eax);
+ rshift32(Imm32(getConstantOperandImmediateInt(op2) & 0x1f), regT0);
#else
- rshiftPtr(Imm32(JSImmediate::getTruncatedUInt32(getConstantOperand(op2)) & 0x1f), X86::eax);
+ rshiftPtr(Imm32(getConstantOperandImmediateInt(op2) & 0x1f), regT0);
#endif
} else {
- emitGetVirtualRegisters(op1, X86::eax, op2, X86::ecx);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::ecx);
- emitFastArithImmToInt(X86::ecx);
+ emitGetVirtualRegisters(op1, regT0, op2, regT2);
+ if (supportsFloatingPoint()) {
+ Jump lhsIsInt = emitJumpIfImmediateInteger(regT0);
+#if USE(ALTERNATE_JSIMMEDIATE)
+ // supportsFloatingPoint() && USE(ALTERNATE_JSIMMEDIATE) => 3 SlowCases
+ addSlowCase(emitJumpIfNotImmediateNumber(regT0));
+ movePtrToDouble(regT0, fpRegT0);
+ addSlowCase(branchTruncateDoubleToInt32(fpRegT0, regT0));
+#else
+ // supportsFloatingPoint() && !USE(ALTERNATE_JSIMMEDIATE) => 5 SlowCases (of which 1 IfNotJSCell)
+ emitJumpSlowCaseIfNotJSCell(regT0, op1);
+ addSlowCase(checkStructure(regT0, m_globalData->numberStructure.get()));
+ loadDouble(Address(regT0, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0);
+ addSlowCase(branchTruncateDoubleToInt32(fpRegT0, regT0));
+ addSlowCase(branchAdd32(Overflow, regT0, regT0));
+#endif
+ lhsIsInt.link(this);
+ emitJumpSlowCaseIfNotImmediateInteger(regT2);
+ } else {
+ // !supportsFloatingPoint() => 2 SlowCases
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT2);
+ }
+ emitFastArithImmToInt(regT2);
#if !PLATFORM(X86)
// Mask with 0x1f as per ecma-262 11.7.2 step 7.
// On 32-bit x86 this is not necessary, since the shift anount is implicitly masked in the instruction.
- and32(Imm32(0x1f), X86::ecx);
+ and32(Imm32(0x1f), regT2);
#endif
#if USE(ALTERNATE_JSIMMEDIATE)
- rshift32(X86::ecx, X86::eax);
+ rshift32(regT2, regT0);
#else
- rshiftPtr(X86::ecx, X86::eax);
+ rshiftPtr(regT2, regT0);
#endif
}
#if USE(ALTERNATE_JSIMMEDIATE)
- emitFastArithIntToImmNoCheck(X86::eax, X86::eax);
+ emitFastArithIntToImmNoCheck(regT0, regT0);
#else
- orPtr(Imm32(JSImmediate::TagTypeInteger), X86::eax);
+ orPtr(Imm32(JSImmediate::TagTypeNumber), regT0);
#endif
emitPutVirtualRegister(result);
}
-void JIT::compileFastArithSlow_op_rshift(unsigned result, unsigned, unsigned op2, Vector<SlowCaseEntry>::iterator& iter)
+
+void JIT::emitSlow_op_rshift(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
- linkSlowCase(iter);
- if (isOperandConstantImmediateInt(op2))
- emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
- else {
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ JITStubCall stubCall(this, JITStubs::cti_op_rshift);
+
+ if (isOperandConstantImmediateInt(op2)) {
linkSlowCase(iter);
- emitPutJITStubArg(X86::ecx, 2);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(op2, regT2);
+ } else {
+ if (supportsFloatingPoint()) {
+#if USE(ALTERNATE_JSIMMEDIATE)
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+#else
+ linkSlowCaseIfNotJSCell(iter, op1);
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+#endif
+ // We're reloading op1 to regT0 as we can no longer guarantee that
+ // we have not munged the operand. It may have already been shifted
+ // correctly, but it still will not have been tagged.
+ stubCall.addArgument(op1, regT0);
+ stubCall.addArgument(regT2);
+ } else {
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT2);
+ }
}
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_rshift);
- emitPutVirtualRegister(result);
+ stubCall.call(result);
}
-void JIT::compileFastArith_op_bitand(unsigned result, unsigned op1, unsigned op2)
+void JIT::emit_op_jnless(Instruction* currentInstruction)
{
- if (isOperandConstantImmediateInt(op1)) {
- emitGetVirtualRegister(op2, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ unsigned op1 = currentInstruction[1].u.operand;
+ unsigned op2 = currentInstruction[2].u.operand;
+ unsigned target = currentInstruction[3].u.operand;
+
+ // We generate inline code for the following cases in the fast path:
+ // - int immediate to constant int immediate
+ // - constant int immediate to int immediate
+ // - int immediate to int immediate
+
+ if (isOperandConstantImmediateInt(op2)) {
+ emitGetVirtualRegister(op1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
#if USE(ALTERNATE_JSIMMEDIATE)
- int32_t imm = JSImmediate::intValue(getConstantOperand(op1));
- andPtr(Imm32(imm), X86::eax);
- if (imm >= 0)
- emitFastArithIntToImmNoCheck(X86::eax, X86::eax);
+ int32_t op2imm = getConstantOperandImmediateInt(op2);
#else
- andPtr(Imm32(static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op1)))), X86::eax);
+ int32_t op2imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op2)));
#endif
- } else if (isOperandConstantImmediateInt(op2)) {
- emitGetVirtualRegister(op1, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ addJump(branch32(GreaterThanOrEqual, regT0, Imm32(op2imm)), target + 3);
+ } else if (isOperandConstantImmediateInt(op1)) {
+ emitGetVirtualRegister(op2, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT1);
#if USE(ALTERNATE_JSIMMEDIATE)
- int32_t imm = JSImmediate::intValue(getConstantOperand(op2));
- andPtr(Imm32(imm), X86::eax);
- if (imm >= 0)
- emitFastArithIntToImmNoCheck(X86::eax, X86::eax);
+ int32_t op1imm = getConstantOperandImmediateInt(op1);
#else
- andPtr(Imm32(static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op2)))), X86::eax);
+ int32_t op1imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op1)));
#endif
+ addJump(branch32(LessThanOrEqual, regT1, Imm32(op1imm)), target + 3);
} else {
- emitGetVirtualRegisters(op1, X86::eax, op2, X86::edx);
- andPtr(X86::edx, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ emitGetVirtualRegisters(op1, regT0, op2, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT1);
+
+ addJump(branch32(GreaterThanOrEqual, regT0, regT1), target + 3);
}
- emitPutVirtualRegister(result);
}
-void JIT::compileFastArithSlow_op_bitand(unsigned result, unsigned op1, unsigned op2, Vector<SlowCaseEntry>::iterator& iter)
+
+void JIT::emitSlow_op_jnless(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
- linkSlowCase(iter);
- if (isOperandConstantImmediateInt(op1)) {
- emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
- emitPutJITStubArg(X86::eax, 2);
- } else if (isOperandConstantImmediateInt(op2)) {
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
+ unsigned op1 = currentInstruction[1].u.operand;
+ unsigned op2 = currentInstruction[2].u.operand;
+ unsigned target = currentInstruction[3].u.operand;
+
+ // We generate inline code for the following cases in the slow path:
+ // - floating-point number to constant int immediate
+ // - constant int immediate to floating-point number
+ // - floating-point number to floating-point number.
+
+ if (isOperandConstantImmediateInt(op2)) {
+ linkSlowCase(iter);
+
+ if (supportsFloatingPoint()) {
+#if USE(ALTERNATE_JSIMMEDIATE)
+ Jump fail1 = emitJumpIfNotImmediateNumber(regT0);
+ addPtr(tagTypeNumberRegister, regT0);
+ movePtrToDouble(regT0, fpRegT0);
+#else
+ Jump fail1;
+ if (!m_codeBlock->isKnownNotImmediate(op1))
+ fail1 = emitJumpIfNotJSCell(regT0);
+
+ Jump fail2 = checkStructure(regT0, m_globalData->numberStructure.get());
+ loadDouble(Address(regT0, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0);
+#endif
+
+ int32_t op2imm = getConstantOperand(op2).getInt32Fast();;
+
+ move(Imm32(op2imm), regT1);
+ convertInt32ToDouble(regT1, fpRegT1);
+
+ emitJumpSlowToHot(branchDouble(DoubleLessThanOrEqual, fpRegT1, fpRegT0), target + 3);
+
+ emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_jnless));
+
+#if USE(ALTERNATE_JSIMMEDIATE)
+ fail1.link(this);
+#else
+ if (!m_codeBlock->isKnownNotImmediate(op1))
+ fail1.link(this);
+ fail2.link(this);
+#endif
+ }
+
+ JITStubCall stubCall(this, JITStubs::cti_op_jless);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(Zero, regT0), target + 3);
+
+ } else if (isOperandConstantImmediateInt(op1)) {
+ linkSlowCase(iter);
+
+ if (supportsFloatingPoint()) {
+#if USE(ALTERNATE_JSIMMEDIATE)
+ Jump fail1 = emitJumpIfNotImmediateNumber(regT1);
+ addPtr(tagTypeNumberRegister, regT1);
+ movePtrToDouble(regT1, fpRegT1);
+#else
+ Jump fail1;
+ if (!m_codeBlock->isKnownNotImmediate(op2))
+ fail1 = emitJumpIfNotJSCell(regT1);
+
+ Jump fail2 = checkStructure(regT1, m_globalData->numberStructure.get());
+ loadDouble(Address(regT1, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT1);
+#endif
+
+ int32_t op1imm = getConstantOperand(op1).getInt32Fast();;
+
+ move(Imm32(op1imm), regT0);
+ convertInt32ToDouble(regT0, fpRegT0);
+
+ emitJumpSlowToHot(branchDouble(DoubleLessThanOrEqual, fpRegT1, fpRegT0), target + 3);
+
+ emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_jnless));
+
+#if USE(ALTERNATE_JSIMMEDIATE)
+ fail1.link(this);
+#else
+ if (!m_codeBlock->isKnownNotImmediate(op2))
+ fail1.link(this);
+ fail2.link(this);
+#endif
+ }
+
+ JITStubCall stubCall(this, JITStubs::cti_op_jless);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(regT1);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(Zero, regT0), target + 3);
+
} else {
- emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
- emitPutJITStubArg(X86::edx, 2);
- }
- emitCTICall(Interpreter::cti_op_bitand);
- emitPutVirtualRegister(result);
-}
+ linkSlowCase(iter);
-void JIT::compileFastArith_op_mod(unsigned result, unsigned op1, unsigned op2)
-{
- emitGetVirtualRegisters(op1, X86::eax, op2, X86::ecx);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::ecx);
+ if (supportsFloatingPoint()) {
#if USE(ALTERNATE_JSIMMEDIATE)
- addSlowCase(jePtr(X86::ecx, ImmPtr(JSValuePtr::encode(JSImmediate::zeroImmediate()))));
- mod32(X86::ecx, X86::eax, X86::edx);
+ Jump fail1 = emitJumpIfNotImmediateNumber(regT0);
+ Jump fail2 = emitJumpIfNotImmediateNumber(regT1);
+ Jump fail3 = emitJumpIfImmediateInteger(regT1);
+ addPtr(tagTypeNumberRegister, regT0);
+ addPtr(tagTypeNumberRegister, regT1);
+ movePtrToDouble(regT0, fpRegT0);
+ movePtrToDouble(regT1, fpRegT1);
#else
- emitFastArithDeTagImmediate(X86::eax);
- addSlowCase(emitFastArithDeTagImmediateJumpIfZero(X86::ecx));
- mod32(X86::ecx, X86::eax, X86::edx);
- signExtend32ToPtr(X86::edx, X86::edx);
+ Jump fail1;
+ if (!m_codeBlock->isKnownNotImmediate(op1))
+ fail1 = emitJumpIfNotJSCell(regT0);
+
+ Jump fail2;
+ if (!m_codeBlock->isKnownNotImmediate(op2))
+ fail2 = emitJumpIfNotJSCell(regT1);
+
+ Jump fail3 = checkStructure(regT0, m_globalData->numberStructure.get());
+ Jump fail4 = checkStructure(regT1, m_globalData->numberStructure.get());
+ loadDouble(Address(regT0, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0);
+ loadDouble(Address(regT1, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT1);
#endif
- emitFastArithReTagImmediate(X86::edx, X86::eax);
- emitPutVirtualRegister(result);
-}
-void JIT::compileFastArithSlow_op_mod(unsigned result, unsigned, unsigned, Vector<SlowCaseEntry>::iterator& iter)
-{
+
+ emitJumpSlowToHot(branchDouble(DoubleLessThanOrEqual, fpRegT1, fpRegT0), target + 3);
+
+ emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_jnless));
+
#if USE(ALTERNATE_JSIMMEDIATE)
- linkSlowCase(iter);
- linkSlowCase(iter);
- linkSlowCase(iter);
+ fail1.link(this);
+ fail2.link(this);
+ fail3.link(this);
#else
- Jump notImm1 = getSlowCase(iter);
- Jump notImm2 = getSlowCase(iter);
- linkSlowCase(iter);
- emitFastArithReTagImmediate(X86::eax, X86::eax);
- emitFastArithReTagImmediate(X86::ecx, X86::ecx);
- notImm1.link(this);
- notImm2.link(this);
+ if (!m_codeBlock->isKnownNotImmediate(op1))
+ fail1.link(this);
+ if (!m_codeBlock->isKnownNotImmediate(op2))
+ fail2.link(this);
+ fail3.link(this);
+ fail4.link(this);
#endif
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::ecx, 2);
- emitCTICall(Interpreter::cti_op_mod);
- emitPutVirtualRegister(result);
+ }
+
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_jless);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(Zero, regT0), target + 3);
+ }
}
-void JIT::compileFastArith_op_add(Instruction* currentInstruction)
+void JIT::emit_op_jnlesseq(Instruction* currentInstruction)
{
- unsigned result = currentInstruction[1].u.operand;
- unsigned op1 = currentInstruction[2].u.operand;
- unsigned op2 = currentInstruction[3].u.operand;
+ unsigned op1 = currentInstruction[1].u.operand;
+ unsigned op2 = currentInstruction[2].u.operand;
+ unsigned target = currentInstruction[3].u.operand;
- if (isOperandConstantImmediateInt(op1)) {
- emitGetVirtualRegister(op2, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ // We generate inline code for the following cases in the fast path:
+ // - int immediate to constant int immediate
+ // - constant int immediate to int immediate
+ // - int immediate to int immediate
+
+ if (isOperandConstantImmediateInt(op2)) {
+ emitGetVirtualRegister(op1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
#if USE(ALTERNATE_JSIMMEDIATE)
- // FIXME: investigate performing a 31-bit add here (can we preserve upper bit & detect overflow from low word to high?)
- // (or, detect carry? - if const is positive, will only carry when overflowing from negative to positive?)
- addSlowCase(joAdd32(Imm32(getConstantOperandImmediateInt(op1)), X86::eax));
- emitFastArithIntToImmNoCheck(X86::eax, X86::eax);
+ int32_t op2imm = getConstantOperandImmediateInt(op2);
#else
- addSlowCase(joAdd32(Imm32(getConstantOperandImmediateInt(op1) << JSImmediate::IntegerPayloadShift), X86::eax));
- signExtend32ToPtr(X86::eax, X86::eax);
+ int32_t op2imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op2)));
#endif
- emitPutVirtualRegister(result);
- } else if (isOperandConstantImmediateInt(op2)) {
- emitGetVirtualRegister(op1, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ addJump(branch32(GreaterThan, regT0, Imm32(op2imm)), target + 3);
+ } else if (isOperandConstantImmediateInt(op1)) {
+ emitGetVirtualRegister(op2, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT1);
#if USE(ALTERNATE_JSIMMEDIATE)
- emitFastArithImmToInt(X86::eax);
- addSlowCase(joAdd32(Imm32(getConstantOperandImmediateInt(op2)), X86::eax));
- emitFastArithIntToImmNoCheck(X86::eax, X86::eax);
+ int32_t op1imm = getConstantOperandImmediateInt(op1);
#else
- addSlowCase(joAdd32(Imm32(getConstantOperandImmediateInt(op2) << JSImmediate::IntegerPayloadShift), X86::eax));
- signExtend32ToPtr(X86::eax, X86::eax);
+ int32_t op1imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op1)));
#endif
- emitPutVirtualRegister(result);
+ addJump(branch32(LessThan, regT1, Imm32(op1imm)), target + 3);
} else {
- OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
- if (types.first().mightBeNumber() && types.second().mightBeNumber())
- compileBinaryArithOp(op_add, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand));
- else {
- emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
- emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
- emitCTICall(Interpreter::cti_op_add);
- emitPutVirtualRegister(result);
- }
+ emitGetVirtualRegisters(op1, regT0, op2, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT1);
+
+ addJump(branch32(GreaterThan, regT0, regT1), target + 3);
}
}
-void JIT::compileFastArithSlow_op_add(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+
+void JIT::emitSlow_op_jnlesseq(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
- unsigned result = currentInstruction[1].u.operand;
- unsigned op1 = currentInstruction[2].u.operand;
- unsigned op2 = currentInstruction[3].u.operand;
+ unsigned op1 = currentInstruction[1].u.operand;
+ unsigned op2 = currentInstruction[2].u.operand;
+ unsigned target = currentInstruction[3].u.operand;
- if (isOperandConstantImmediateInt(op1)) {
-#if USE(ALTERNATE_JSIMMEDIATE)
- linkSlowCase(iter);
+ // We generate inline code for the following cases in the slow path:
+ // - floating-point number to constant int immediate
+ // - constant int immediate to floating-point number
+ // - floating-point number to floating-point number.
+
+ if (isOperandConstantImmediateInt(op2)) {
linkSlowCase(iter);
- emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
- emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
+
+ if (supportsFloatingPoint()) {
+#if USE(ALTERNATE_JSIMMEDIATE)
+ Jump fail1 = emitJumpIfNotImmediateNumber(regT0);
+ addPtr(tagTypeNumberRegister, regT0);
+ movePtrToDouble(regT0, fpRegT0);
#else
- Jump notImm = getSlowCase(iter);
- linkSlowCase(iter);
- sub32(Imm32(getConstantOperandImmediateInt(op1) << JSImmediate::IntegerPayloadShift), X86::eax);
- notImm.link(this);
- emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
- emitPutJITStubArg(X86::eax, 2);
+ Jump fail1;
+ if (!m_codeBlock->isKnownNotImmediate(op1))
+ fail1 = emitJumpIfNotJSCell(regT0);
+
+ Jump fail2 = checkStructure(regT0, m_globalData->numberStructure.get());
+ loadDouble(Address(regT0, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0);
#endif
- emitCTICall(Interpreter::cti_op_add);
- emitPutVirtualRegister(result);
- } else if (isOperandConstantImmediateInt(op2)) {
+
+ int32_t op2imm = getConstantOperand(op2).getInt32Fast();;
+
+ move(Imm32(op2imm), regT1);
+ convertInt32ToDouble(regT1, fpRegT1);
+
+ emitJumpSlowToHot(branchDouble(DoubleLessThan, fpRegT1, fpRegT0), target + 3);
+
+ emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_jnlesseq));
+
#if USE(ALTERNATE_JSIMMEDIATE)
- linkSlowCase(iter);
- linkSlowCase(iter);
- emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
- emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
+ fail1.link(this);
#else
- Jump notImm = getSlowCase(iter);
+ if (!m_codeBlock->isKnownNotImmediate(op1))
+ fail1.link(this);
+ fail2.link(this);
+#endif
+ }
+
+ JITStubCall stubCall(this, JITStubs::cti_op_jlesseq);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(Zero, regT0), target + 3);
+
+ } else if (isOperandConstantImmediateInt(op1)) {
linkSlowCase(iter);
- sub32(Imm32(getConstantOperandImmediateInt(op2) << JSImmediate::IntegerPayloadShift), X86::eax);
- notImm.link(this);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
+
+ if (supportsFloatingPoint()) {
+#if USE(ALTERNATE_JSIMMEDIATE)
+ Jump fail1 = emitJumpIfNotImmediateNumber(regT1);
+ addPtr(tagTypeNumberRegister, regT1);
+ movePtrToDouble(regT1, fpRegT1);
+#else
+ Jump fail1;
+ if (!m_codeBlock->isKnownNotImmediate(op2))
+ fail1 = emitJumpIfNotJSCell(regT1);
+
+ Jump fail2 = checkStructure(regT1, m_globalData->numberStructure.get());
+ loadDouble(Address(regT1, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT1);
#endif
- emitCTICall(Interpreter::cti_op_add);
- emitPutVirtualRegister(result);
+
+ int32_t op1imm = getConstantOperand(op1).getInt32Fast();;
+
+ move(Imm32(op1imm), regT0);
+ convertInt32ToDouble(regT0, fpRegT0);
+
+ emitJumpSlowToHot(branchDouble(DoubleLessThan, fpRegT1, fpRegT0), target + 3);
+
+ emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_jnlesseq));
+
+#if USE(ALTERNATE_JSIMMEDIATE)
+ fail1.link(this);
+#else
+ if (!m_codeBlock->isKnownNotImmediate(op2))
+ fail1.link(this);
+ fail2.link(this);
+#endif
+ }
+
+ JITStubCall stubCall(this, JITStubs::cti_op_jlesseq);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(regT1);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(Zero, regT0), target + 3);
+
} else {
- OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
- ASSERT(types.first().mightBeNumber() && types.second().mightBeNumber());
- compileBinaryArithOpSlowCase(op_add, iter, result, op1, op2, types);
+ linkSlowCase(iter);
+
+ if (supportsFloatingPoint()) {
+#if USE(ALTERNATE_JSIMMEDIATE)
+ Jump fail1 = emitJumpIfNotImmediateNumber(regT0);
+ Jump fail2 = emitJumpIfNotImmediateNumber(regT1);
+ Jump fail3 = emitJumpIfImmediateInteger(regT1);
+ addPtr(tagTypeNumberRegister, regT0);
+ addPtr(tagTypeNumberRegister, regT1);
+ movePtrToDouble(regT0, fpRegT0);
+ movePtrToDouble(regT1, fpRegT1);
+#else
+ Jump fail1;
+ if (!m_codeBlock->isKnownNotImmediate(op1))
+ fail1 = emitJumpIfNotJSCell(regT0);
+
+ Jump fail2;
+ if (!m_codeBlock->isKnownNotImmediate(op2))
+ fail2 = emitJumpIfNotJSCell(regT1);
+
+ Jump fail3 = checkStructure(regT0, m_globalData->numberStructure.get());
+ Jump fail4 = checkStructure(regT1, m_globalData->numberStructure.get());
+ loadDouble(Address(regT0, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0);
+ loadDouble(Address(regT1, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT1);
+#endif
+
+ emitJumpSlowToHot(branchDouble(DoubleLessThan, fpRegT1, fpRegT0), target + 3);
+
+ emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_jnlesseq));
+
+#if USE(ALTERNATE_JSIMMEDIATE)
+ fail1.link(this);
+ fail2.link(this);
+ fail3.link(this);
+#else
+ if (!m_codeBlock->isKnownNotImmediate(op1))
+ fail1.link(this);
+ if (!m_codeBlock->isKnownNotImmediate(op2))
+ fail2.link(this);
+ fail3.link(this);
+ fail4.link(this);
+#endif
+ }
+
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_jlesseq);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(Zero, regT0), target + 3);
}
}
-void JIT::compileFastArith_op_mul(Instruction* currentInstruction)
+void JIT::emit_op_bitand(Instruction* currentInstruction)
{
unsigned result = currentInstruction[1].u.operand;
unsigned op1 = currentInstruction[2].u.operand;
unsigned op2 = currentInstruction[3].u.operand;
- // For now, only plant a fast int case if the constant operand is greater than zero.
- int32_t value;
- if (isOperandConstantImmediateInt(op1) && ((value = getConstantOperandImmediateInt(op1)) > 0)) {
- emitGetVirtualRegister(op2, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ if (isOperandConstantImmediateInt(op1)) {
+ emitGetVirtualRegister(op2, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
#if USE(ALTERNATE_JSIMMEDIATE)
- addSlowCase(joMul32(Imm32(value), X86::eax, X86::eax));
+ int32_t imm = getConstantOperandImmediateInt(op1);
+ andPtr(Imm32(imm), regT0);
+ if (imm >= 0)
+ emitFastArithIntToImmNoCheck(regT0, regT0);
#else
- emitFastArithDeTagImmediate(X86::eax);
- addSlowCase(joMul32(Imm32(value), X86::eax, X86::eax));
- signExtend32ToPtr(X86::eax, X86::eax);
+ andPtr(Imm32(static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op1)))), regT0);
#endif
- emitFastArithReTagImmediate(X86::eax, X86::eax);
- emitPutVirtualRegister(result);
- } else if (isOperandConstantImmediateInt(op2) && ((value = getConstantOperandImmediateInt(op2)) > 0)) {
- emitGetVirtualRegister(op1, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ } else if (isOperandConstantImmediateInt(op2)) {
+ emitGetVirtualRegister(op1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
#if USE(ALTERNATE_JSIMMEDIATE)
- addSlowCase(joMul32(Imm32(value), X86::eax, X86::eax));
+ int32_t imm = getConstantOperandImmediateInt(op2);
+ andPtr(Imm32(imm), regT0);
+ if (imm >= 0)
+ emitFastArithIntToImmNoCheck(regT0, regT0);
#else
- emitFastArithDeTagImmediate(X86::eax);
- addSlowCase(joMul32(Imm32(value), X86::eax, X86::eax));
- signExtend32ToPtr(X86::eax, X86::eax);
+ andPtr(Imm32(static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op2)))), regT0);
#endif
- emitFastArithReTagImmediate(X86::eax, X86::eax);
- emitPutVirtualRegister(result);
- } else
- compileBinaryArithOp(op_mul, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand));
+ } else {
+ emitGetVirtualRegisters(op1, regT0, op2, regT1);
+ andPtr(regT1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ }
+ emitPutVirtualRegister(result);
}
-void JIT::compileFastArithSlow_op_mul(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+
+void JIT::emitSlow_op_bitand(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
- int result = currentInstruction[1].u.operand;
- int op1 = currentInstruction[2].u.operand;
- int op2 = currentInstruction[3].u.operand;
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
- if ((isOperandConstantImmediateInt(op1) && (getConstantOperandImmediateInt(op1) > 0))
- || (isOperandConstantImmediateInt(op2) && (getConstantOperandImmediateInt(op2) > 0))) {
- linkSlowCase(iter);
- linkSlowCase(iter);
- // There is an extra slow case for (op1 * -N) or (-N * op2), to check for 0 since this should produce a result of -0.
- emitPutJITStubArgFromVirtualRegister(op1, 1, X86::ecx);
- emitPutJITStubArgFromVirtualRegister(op2, 2, X86::ecx);
- emitCTICall(Interpreter::cti_op_mul);
- emitPutVirtualRegister(result);
- } else
- compileBinaryArithOpSlowCase(op_mul, iter, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand));
+ linkSlowCase(iter);
+ if (isOperandConstantImmediateInt(op1)) {
+ JITStubCall stubCall(this, JITStubs::cti_op_bitand);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(regT0);
+ stubCall.call(result);
+ } else if (isOperandConstantImmediateInt(op2)) {
+ JITStubCall stubCall(this, JITStubs::cti_op_bitand);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+ } else {
+ JITStubCall stubCall(this, JITStubs::cti_op_bitand);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(regT1);
+ stubCall.call(result);
+ }
}
-void JIT::compileFastArith_op_post_inc(unsigned result, unsigned srcDst)
+void JIT::emit_op_post_inc(Instruction* currentInstruction)
{
- emitGetVirtualRegister(srcDst, X86::eax);
- move(X86::eax, X86::edx);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned srcDst = currentInstruction[2].u.operand;
+
+ emitGetVirtualRegister(srcDst, regT0);
+ move(regT0, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
#if USE(ALTERNATE_JSIMMEDIATE)
- addSlowCase(joAdd32(Imm32(1), X86::edx));
- emitFastArithIntToImmNoCheck(X86::edx, X86::edx);
+ addSlowCase(branchAdd32(Overflow, Imm32(1), regT1));
+ emitFastArithIntToImmNoCheck(regT1, regT1);
#else
- addSlowCase(joAdd32(Imm32(1 << JSImmediate::IntegerPayloadShift), X86::edx));
- signExtend32ToPtr(X86::edx, X86::edx);
+ addSlowCase(branchAdd32(Overflow, Imm32(1 << JSImmediate::IntegerPayloadShift), regT1));
+ signExtend32ToPtr(regT1, regT1);
#endif
- emitPutVirtualRegister(srcDst, X86::edx);
+ emitPutVirtualRegister(srcDst, regT1);
emitPutVirtualRegister(result);
}
-void JIT::compileFastArithSlow_op_post_inc(unsigned result, unsigned srcDst, Vector<SlowCaseEntry>::iterator& iter)
+
+void JIT::emitSlow_op_post_inc(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned srcDst = currentInstruction[2].u.operand;
+
linkSlowCase(iter);
linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_post_inc);
- emitPutVirtualRegister(srcDst, X86::edx);
- emitPutVirtualRegister(result);
+ JITStubCall stubCall(this, JITStubs::cti_op_post_inc);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(Imm32(srcDst));
+ stubCall.call(result);
}
-void JIT::compileFastArith_op_post_dec(unsigned result, unsigned srcDst)
+void JIT::emit_op_post_dec(Instruction* currentInstruction)
{
- emitGetVirtualRegister(srcDst, X86::eax);
- move(X86::eax, X86::edx);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned srcDst = currentInstruction[2].u.operand;
+
+ emitGetVirtualRegister(srcDst, regT0);
+ move(regT0, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
#if USE(ALTERNATE_JSIMMEDIATE)
- addSlowCase(joSub32(Imm32(1), X86::edx));
- emitFastArithIntToImmNoCheck(X86::edx, X86::edx);
+ addSlowCase(branchSub32(Zero, Imm32(1), regT1));
+ emitFastArithIntToImmNoCheck(regT1, regT1);
#else
- addSlowCase(joSub32(Imm32(1 << JSImmediate::IntegerPayloadShift), X86::edx));
- signExtend32ToPtr(X86::edx, X86::edx);
+ addSlowCase(branchSub32(Zero, Imm32(1 << JSImmediate::IntegerPayloadShift), regT1));
+ signExtend32ToPtr(regT1, regT1);
#endif
- emitPutVirtualRegister(srcDst, X86::edx);
+ emitPutVirtualRegister(srcDst, regT1);
emitPutVirtualRegister(result);
}
-void JIT::compileFastArithSlow_op_post_dec(unsigned result, unsigned srcDst, Vector<SlowCaseEntry>::iterator& iter)
+
+void JIT::emitSlow_op_post_dec(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned srcDst = currentInstruction[2].u.operand;
+
linkSlowCase(iter);
linkSlowCase(iter);
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_post_dec);
- emitPutVirtualRegister(srcDst, X86::edx);
- emitPutVirtualRegister(result);
+ JITStubCall stubCall(this, JITStubs::cti_op_post_dec);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(Imm32(srcDst));
+ stubCall.call(result);
}
-void JIT::compileFastArith_op_pre_inc(unsigned srcDst)
+void JIT::emit_op_pre_inc(Instruction* currentInstruction)
{
- emitGetVirtualRegister(srcDst, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ unsigned srcDst = currentInstruction[1].u.operand;
+
+ emitGetVirtualRegister(srcDst, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
#if USE(ALTERNATE_JSIMMEDIATE)
- // FIXME: Could add ptr & specify int64; no need to re-sign-extend?
- addSlowCase(joAdd32(Imm32(1), X86::eax));
- emitFastArithIntToImmNoCheck(X86::eax, X86::eax);
+ addSlowCase(branchAdd32(Overflow, Imm32(1), regT0));
+ emitFastArithIntToImmNoCheck(regT0, regT0);
#else
- addSlowCase(joAdd32(Imm32(1 << JSImmediate::IntegerPayloadShift), X86::eax));
- signExtend32ToPtr(X86::eax, X86::eax);
+ addSlowCase(branchAdd32(Overflow, Imm32(1 << JSImmediate::IntegerPayloadShift), regT0));
+ signExtend32ToPtr(regT0, regT0);
#endif
emitPutVirtualRegister(srcDst);
}
-void JIT::compileFastArithSlow_op_pre_inc(unsigned srcDst, Vector<SlowCaseEntry>::iterator& iter)
+
+void JIT::emitSlow_op_pre_inc(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
+ unsigned srcDst = currentInstruction[1].u.operand;
+
Jump notImm = getSlowCase(iter);
linkSlowCase(iter);
- emitGetVirtualRegister(srcDst, X86::eax);
+ emitGetVirtualRegister(srcDst, regT0);
notImm.link(this);
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_pre_inc);
- emitPutVirtualRegister(srcDst);
+ JITStubCall stubCall(this, JITStubs::cti_op_pre_inc);
+ stubCall.addArgument(regT0);
+ stubCall.call(srcDst);
}
-void JIT::compileFastArith_op_pre_dec(unsigned srcDst)
+void JIT::emit_op_pre_dec(Instruction* currentInstruction)
{
- emitGetVirtualRegister(srcDst, X86::eax);
- emitJumpSlowCaseIfNotImmNum(X86::eax);
+ unsigned srcDst = currentInstruction[1].u.operand;
+
+ emitGetVirtualRegister(srcDst, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
#if USE(ALTERNATE_JSIMMEDIATE)
- addSlowCase(joSub32(Imm32(1), X86::eax));
- emitFastArithIntToImmNoCheck(X86::eax, X86::eax);
+ addSlowCase(branchSub32(Zero, Imm32(1), regT0));
+ emitFastArithIntToImmNoCheck(regT0, regT0);
#else
- addSlowCase(joSub32(Imm32(1 << JSImmediate::IntegerPayloadShift), X86::eax));
- signExtend32ToPtr(X86::eax, X86::eax);
+ addSlowCase(branchSub32(Zero, Imm32(1 << JSImmediate::IntegerPayloadShift), regT0));
+ signExtend32ToPtr(regT0, regT0);
#endif
emitPutVirtualRegister(srcDst);
}
-void JIT::compileFastArithSlow_op_pre_dec(unsigned srcDst, Vector<SlowCaseEntry>::iterator& iter)
+
+void JIT::emitSlow_op_pre_dec(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
+ unsigned srcDst = currentInstruction[1].u.operand;
+
Jump notImm = getSlowCase(iter);
linkSlowCase(iter);
- emitGetVirtualRegister(srcDst, X86::eax);
+ emitGetVirtualRegister(srcDst, regT0);
notImm.link(this);
- emitPutJITStubArg(X86::eax, 1);
- emitCTICall(Interpreter::cti_op_pre_dec);
- emitPutVirtualRegister(srcDst);
+ JITStubCall stubCall(this, JITStubs::cti_op_pre_dec);
+ stubCall.addArgument(regT0);
+ stubCall.call(srcDst);
}
+/* ------------------------------ BEGIN: OP_MOD ------------------------------ */
+
+#if PLATFORM(X86) || PLATFORM(X86_64)
+
+void JIT::emit_op_mod(Instruction* currentInstruction)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ emitGetVirtualRegisters(op1, X86::eax, op2, X86::ecx);
+ emitJumpSlowCaseIfNotImmediateInteger(X86::eax);
+ emitJumpSlowCaseIfNotImmediateInteger(X86::ecx);
+#if USE(ALTERNATE_JSIMMEDIATE)
+ addSlowCase(branchPtr(Equal, X86::ecx, ImmPtr(JSValue::encode(jsNumber(m_globalData, 0)))));
+ m_assembler.cdq();
+ m_assembler.idivl_r(X86::ecx);
+#else
+ emitFastArithDeTagImmediate(X86::eax);
+ addSlowCase(emitFastArithDeTagImmediateJumpIfZero(X86::ecx));
+ m_assembler.cdq();
+ m_assembler.idivl_r(X86::ecx);
+ signExtend32ToPtr(X86::edx, X86::edx);
+#endif
+ emitFastArithReTagImmediate(X86::edx, X86::eax);
+ emitPutVirtualRegister(result);
+}
+
+void JIT::emitSlow_op_mod(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ unsigned result = currentInstruction[1].u.operand;
+
+#if USE(ALTERNATE_JSIMMEDIATE)
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+#else
+ Jump notImm1 = getSlowCase(iter);
+ Jump notImm2 = getSlowCase(iter);
+ linkSlowCase(iter);
+ emitFastArithReTagImmediate(X86::eax, X86::eax);
+ emitFastArithReTagImmediate(X86::ecx, X86::ecx);
+ notImm1.link(this);
+ notImm2.link(this);
+#endif
+ JITStubCall stubCall(this, JITStubs::cti_op_mod);
+ stubCall.addArgument(X86::eax);
+ stubCall.addArgument(X86::ecx);
+ stubCall.call(result);
+}
+
+#else // PLATFORM(X86) || PLATFORM(X86_64)
+
+void JIT::emit_op_mod(Instruction* currentInstruction)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ JITStubCall stubCall(this, JITStubs::cti_op_mod);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+}
+
+void JIT::emitSlow_op_mod(Instruction*, Vector<SlowCaseEntry>::iterator&)
+{
+ ASSERT_NOT_REACHED();
+}
+
+#endif // PLATFORM(X86) || PLATFORM(X86_64)
+
+/* ------------------------------ END: OP_MOD ------------------------------ */
#if !ENABLE(JIT_OPTIMIZE_ARITHMETIC)
-void JIT::compileBinaryArithOp(OpcodeID opcodeID, unsigned dst, unsigned src1, unsigned src2, OperandTypes)
+/* ------------------------------ BEGIN: !ENABLE(JIT_OPTIMIZE_ARITHMETIC) (OP_ADD, OP_SUB, OP_MUL) ------------------------------ */
+
+void JIT::emit_op_add(Instruction* currentInstruction)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ JITStubCall stubCall(this, JITStubs::cti_op_add);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+}
+
+void JIT::emitSlow_op_add(Instruction*, Vector<SlowCaseEntry>::iterator&)
+{
+ ASSERT_NOT_REACHED();
+}
+
+void JIT::emit_op_mul(Instruction* currentInstruction)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ JITStubCall stubCall(this, JITStubs::cti_op_mul);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+}
+
+void JIT::emitSlow_op_mul(Instruction*, Vector<SlowCaseEntry>::iterator&)
+{
+ ASSERT_NOT_REACHED();
+}
+
+void JIT::emit_op_sub(Instruction* currentInstruction)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ JITStubCall stubCall(this, JITStubs::cti_op_sub);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+}
+
+void JIT::emitSlow_op_sub(Instruction*, Vector<SlowCaseEntry>::iterator&)
+{
+ ASSERT_NOT_REACHED();
+}
+
+#elif USE(ALTERNATE_JSIMMEDIATE) // *AND* ENABLE(JIT_OPTIMIZE_ARITHMETIC)
+
+/* ------------------------------ BEGIN: USE(ALTERNATE_JSIMMEDIATE) (OP_ADD, OP_SUB, OP_MUL) ------------------------------ */
+
+void JIT::compileBinaryArithOp(OpcodeID opcodeID, unsigned, unsigned op1, unsigned op2, OperandTypes)
{
- emitPutJITStubArgFromVirtualRegister(src1, 1, X86::ecx);
- emitPutJITStubArgFromVirtualRegister(src2, 2, X86::ecx);
+ emitGetVirtualRegisters(op1, regT0, op2, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT1);
if (opcodeID == op_add)
- emitCTICall(Interpreter::cti_op_add);
+ addSlowCase(branchAdd32(Overflow, regT1, regT0));
else if (opcodeID == op_sub)
- emitCTICall(Interpreter::cti_op_sub);
+ addSlowCase(branchSub32(Overflow, regT1, regT0));
else {
ASSERT(opcodeID == op_mul);
- emitCTICall(Interpreter::cti_op_mul);
+ addSlowCase(branchMul32(Overflow, regT1, regT0));
+ addSlowCase(branchTest32(Zero, regT0));
}
- emitPutVirtualRegister(dst);
+ emitFastArithIntToImmNoCheck(regT0, regT0);
}
-void JIT::compileBinaryArithOpSlowCase(OpcodeID, Vector<SlowCaseEntry>::iterator&, unsigned, unsigned, unsigned, OperandTypes)
+void JIT::compileBinaryArithOpSlowCase(OpcodeID opcodeID, Vector<SlowCaseEntry>::iterator& iter, unsigned result, unsigned op1, unsigned, OperandTypes types)
{
- ASSERT_NOT_REACHED();
+ // We assume that subtracting TagTypeNumber is equivalent to adding DoubleEncodeOffset.
+ COMPILE_ASSERT(((JSImmediate::TagTypeNumber + JSImmediate::DoubleEncodeOffset) == 0), TagTypeNumber_PLUS_DoubleEncodeOffset_EQUALS_0);
+
+ Jump notImm1 = getSlowCase(iter);
+ Jump notImm2 = getSlowCase(iter);
+
+ linkSlowCase(iter); // Integer overflow case - we could handle this in JIT code, but this is likely rare.
+ if (opcodeID == op_mul) // op_mul has an extra slow case to handle 0 * negative number.
+ linkSlowCase(iter);
+ emitGetVirtualRegister(op1, regT0);
+
+ Label stubFunctionCall(this);
+ JITStubCall stubCall(this, opcodeID == op_add ? JITStubs::cti_op_add : opcodeID == op_sub ? JITStubs::cti_op_sub : JITStubs::cti_op_mul);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call(result);
+ Jump end = jump();
+
+ // if we get here, eax is not an int32, edx not yet checked.
+ notImm1.link(this);
+ if (!types.first().definitelyIsNumber())
+ emitJumpIfNotImmediateNumber(regT0).linkTo(stubFunctionCall, this);
+ if (!types.second().definitelyIsNumber())
+ emitJumpIfNotImmediateNumber(regT1).linkTo(stubFunctionCall, this);
+ addPtr(tagTypeNumberRegister, regT0);
+ movePtrToDouble(regT0, fpRegT1);
+ Jump op2isDouble = emitJumpIfNotImmediateInteger(regT1);
+ convertInt32ToDouble(regT1, fpRegT2);
+ Jump op2wasInteger = jump();
+
+ // if we get here, eax IS an int32, edx is not.
+ notImm2.link(this);
+ if (!types.second().definitelyIsNumber())
+ emitJumpIfNotImmediateNumber(regT1).linkTo(stubFunctionCall, this);
+ convertInt32ToDouble(regT0, fpRegT1);
+ op2isDouble.link(this);
+ addPtr(tagTypeNumberRegister, regT1);
+ movePtrToDouble(regT1, fpRegT2);
+ op2wasInteger.link(this);
+
+ if (opcodeID == op_add)
+ addDouble(fpRegT2, fpRegT1);
+ else if (opcodeID == op_sub)
+ subDouble(fpRegT2, fpRegT1);
+ else {
+ ASSERT(opcodeID == op_mul);
+ mulDouble(fpRegT2, fpRegT1);
+ }
+ moveDoubleToPtr(fpRegT1, regT0);
+ subPtr(tagTypeNumberRegister, regT0);
+ emitPutVirtualRegister(result, regT0);
+
+ end.link(this);
}
-#else
+void JIT::emit_op_add(Instruction* currentInstruction)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+ OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
-typedef X86Assembler::JmpSrc JmpSrc;
-typedef X86Assembler::JmpDst JmpDst;
-typedef X86Assembler::XMMRegisterID XMMRegisterID;
+ if (!types.first().mightBeNumber() || !types.second().mightBeNumber()) {
+ JITStubCall stubCall(this, JITStubs::cti_op_add);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+ return;
+ }
-#if PLATFORM(MAC)
+ if (isOperandConstantImmediateInt(op1)) {
+ emitGetVirtualRegister(op2, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ addSlowCase(branchAdd32(Overflow, Imm32(getConstantOperandImmediateInt(op1)), regT0));
+ emitFastArithIntToImmNoCheck(regT0, regT0);
+ } else if (isOperandConstantImmediateInt(op2)) {
+ emitGetVirtualRegister(op1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ addSlowCase(branchAdd32(Overflow, Imm32(getConstantOperandImmediateInt(op2)), regT0));
+ emitFastArithIntToImmNoCheck(regT0, regT0);
+ } else
+ compileBinaryArithOp(op_add, result, op1, op2, types);
+
+ emitPutVirtualRegister(result);
+}
-static inline bool isSSE2Present()
+void JIT::emitSlow_op_add(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
- return true; // All X86 Macs are guaranteed to support at least SSE2
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ if (isOperandConstantImmediateInt(op1) || isOperandConstantImmediateInt(op2)) {
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_add);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+ } else
+ compileBinaryArithOpSlowCase(op_add, iter, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand));
}
-#else
+void JIT::emit_op_mul(Instruction* currentInstruction)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+ OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
-static bool isSSE2Present()
-{
- static const int SSE2FeatureBit = 1 << 26;
- struct SSE2Check {
- SSE2Check()
- {
- int flags;
-#if COMPILER(MSVC)
- _asm {
- mov eax, 1 // cpuid function 1 gives us the standard feature set
- cpuid;
- mov flags, edx;
- }
-#else
- flags = 0;
- // FIXME: Add GCC code to do above asm
-#endif
- present = (flags & SSE2FeatureBit) != 0;
- }
- bool present;
- };
- static SSE2Check check;
- return check.present;
+ // For now, only plant a fast int case if the constant operand is greater than zero.
+ int32_t value;
+ if (isOperandConstantImmediateInt(op1) && ((value = getConstantOperandImmediateInt(op1)) > 0)) {
+ emitGetVirtualRegister(op2, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ addSlowCase(branchMul32(Overflow, Imm32(value), regT0, regT0));
+ emitFastArithReTagImmediate(regT0, regT0);
+ } else if (isOperandConstantImmediateInt(op2) && ((value = getConstantOperandImmediateInt(op2)) > 0)) {
+ emitGetVirtualRegister(op1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ addSlowCase(branchMul32(Overflow, Imm32(value), regT0, regT0));
+ emitFastArithReTagImmediate(regT0, regT0);
+ } else
+ compileBinaryArithOp(op_mul, result, op1, op2, types);
+
+ emitPutVirtualRegister(result);
}
-#endif
+void JIT::emitSlow_op_mul(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+ OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
-/*
- This is required since number representation is canonical - values representable as a JSImmediate should not be stored in a JSNumberCell.
-
- In the common case, the double value from 'xmmSource' is written to the reusable JSNumberCell pointed to by 'jsNumberCell', then 'jsNumberCell'
- is written to the output SF Register 'dst', and then a jump is planted (stored into *wroteJSNumberCell).
-
- However if the value from xmmSource is representable as a JSImmediate, then the JSImmediate value will be written to the output, and flow
- control will fall through from the code planted.
-*/
-void JIT::putDoubleResultToJSNumberCellOrJSImmediate(X86::XMMRegisterID xmmSource, X86::RegisterID jsNumberCell, unsigned dst, JmpSrc* wroteJSNumberCell, X86::XMMRegisterID tempXmm, X86::RegisterID tempReg1, X86::RegisterID tempReg2)
-{
- // convert (double -> JSImmediate -> double), and check if the value is unchanged - in which case the value is representable as a JSImmediate.
- __ cvttsd2si_rr(xmmSource, tempReg1);
- __ addl_rr(tempReg1, tempReg1);
- __ sarl_i8r(1, tempReg1);
- __ cvtsi2sd_rr(tempReg1, tempXmm);
- // Compare & branch if immediate.
- __ ucomis_rr(tempXmm, xmmSource);
- JmpSrc resultIsImm = __ je();
- JmpDst resultLookedLikeImmButActuallyIsnt = __ label();
-
- // Store the result to the JSNumberCell and jump.
- __ movsd_rm(xmmSource, FIELD_OFFSET(JSNumberCell, m_value), jsNumberCell);
- if (jsNumberCell != X86::eax)
- __ movl_rr(jsNumberCell, X86::eax);
- emitPutVirtualRegister(dst);
- *wroteJSNumberCell = __ jmp();
-
- __ link(resultIsImm, __ label());
- // value == (double)(JSImmediate)value... or at least, it looks that way...
- // ucomi will report that (0 == -0), and will report true if either input in NaN (result is unordered).
- __ link(__ jp(), resultLookedLikeImmButActuallyIsnt); // Actually was a NaN
- __ pextrw_irr(3, xmmSource, tempReg2);
- __ cmpl_ir(0x8000, tempReg2);
- __ link(__ je(), resultLookedLikeImmButActuallyIsnt); // Actually was -0
- // Yes it really really really is representable as a JSImmediate.
- emitFastArithIntToImmNoCheck(tempReg1, X86::eax);
- emitPutVirtualRegister(dst);
+ if ((isOperandConstantImmediateInt(op1) && (getConstantOperandImmediateInt(op1) > 0))
+ || (isOperandConstantImmediateInt(op2) && (getConstantOperandImmediateInt(op2) > 0))) {
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ // There is an extra slow case for (op1 * -N) or (-N * op2), to check for 0 since this should produce a result of -0.
+ JITStubCall stubCall(this, JITStubs::cti_op_mul);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+ } else
+ compileBinaryArithOpSlowCase(op_mul, iter, result, op1, op2, types);
}
+void JIT::emit_op_sub(Instruction* currentInstruction)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+ OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
+
+ compileBinaryArithOp(op_sub, result, op1, op2, types);
+
+ emitPutVirtualRegister(result);
+}
+
+void JIT::emitSlow_op_sub(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+ OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
+
+ compileBinaryArithOpSlowCase(op_sub, iter, result, op1, op2, types);
+}
+
+#else // !ENABLE(JIT_OPTIMIZE_ARITHMETIC)
+
+/* ------------------------------ BEGIN: !ENABLE(JIT_OPTIMIZE_ARITHMETIC) (OP_ADD, OP_SUB, OP_MUL) ------------------------------ */
+
void JIT::compileBinaryArithOp(OpcodeID opcodeID, unsigned dst, unsigned src1, unsigned src2, OperandTypes types)
{
Structure* numberStructure = m_globalData->numberStructure.get();
- JmpSrc wasJSNumberCell1;
- JmpSrc wasJSNumberCell1b;
- JmpSrc wasJSNumberCell2;
- JmpSrc wasJSNumberCell2b;
+ Jump wasJSNumberCell1;
+ Jump wasJSNumberCell2;
- emitGetVirtualRegisters(src1, X86::eax, src2, X86::edx);
+ emitGetVirtualRegisters(src1, regT0, src2, regT1);
- if (types.second().isReusable() && isSSE2Present()) {
+ if (types.second().isReusable() && supportsFloatingPoint()) {
ASSERT(types.second().mightBeNumber());
// Check op2 is a number
- __ testl_i32r(JSImmediate::TagTypeInteger, X86::edx);
- JmpSrc op2imm = __ jne();
+ Jump op2imm = emitJumpIfImmediateInteger(regT1);
if (!types.second().definitelyIsNumber()) {
- emitJumpSlowCaseIfNotJSCell(X86::edx, src2);
- __ cmpl_im(reinterpret_cast<unsigned>(numberStructure), FIELD_OFFSET(JSCell, m_structure), X86::edx);
- addSlowCase(__ jne());
+ emitJumpSlowCaseIfNotJSCell(regT1, src2);
+ addSlowCase(checkStructure(regT1, numberStructure));
}
// (1) In this case src2 is a reusable number cell.
// Slow case if src1 is not a number type.
- __ testl_i32r(JSImmediate::TagTypeInteger, X86::eax);
- JmpSrc op1imm = __ jne();
+ Jump op1imm = emitJumpIfImmediateInteger(regT0);
if (!types.first().definitelyIsNumber()) {
- emitJumpSlowCaseIfNotJSCell(X86::eax, src1);
- __ cmpl_im(reinterpret_cast<unsigned>(numberStructure), FIELD_OFFSET(JSCell, m_structure), X86::eax);
- addSlowCase(__ jne());
+ emitJumpSlowCaseIfNotJSCell(regT0, src1);
+ addSlowCase(checkStructure(regT0, numberStructure));
}
// (1a) if we get here, src1 is also a number cell
- __ movsd_mr(FIELD_OFFSET(JSNumberCell, m_value), X86::eax, X86::xmm0);
- JmpSrc loadedDouble = __ jmp();
+ loadDouble(Address(regT0, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0);
+ Jump loadedDouble = jump();
// (1b) if we get here, src1 is an immediate
- __ link(op1imm, __ label());
- emitFastArithImmToInt(X86::eax);
- __ cvtsi2sd_rr(X86::eax, X86::xmm0);
+ op1imm.link(this);
+ emitFastArithImmToInt(regT0);
+ convertInt32ToDouble(regT0, fpRegT0);
// (1c)
- __ link(loadedDouble, __ label());
+ loadedDouble.link(this);
if (opcodeID == op_add)
- __ addsd_mr(FIELD_OFFSET(JSNumberCell, m_value), X86::edx, X86::xmm0);
+ addDouble(Address(regT1, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0);
else if (opcodeID == op_sub)
- __ subsd_mr(FIELD_OFFSET(JSNumberCell, m_value), X86::edx, X86::xmm0);
+ subDouble(Address(regT1, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0);
else {
ASSERT(opcodeID == op_mul);
- __ mulsd_mr(FIELD_OFFSET(JSNumberCell, m_value), X86::edx, X86::xmm0);
+ mulDouble(Address(regT1, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0);
}
- putDoubleResultToJSNumberCellOrJSImmediate(X86::xmm0, X86::edx, dst, &wasJSNumberCell2, X86::xmm1, X86::ecx, X86::eax);
- wasJSNumberCell2b = __ jmp();
+ // Store the result to the JSNumberCell and jump.
+ storeDouble(fpRegT0, Address(regT1, FIELD_OFFSET(JSNumberCell, m_value)));
+ move(regT1, regT0);
+ emitPutVirtualRegister(dst);
+ wasJSNumberCell2 = jump();
// (2) This handles cases where src2 is an immediate number.
// Two slow cases - either src1 isn't an immediate, or the subtract overflows.
- __ link(op2imm, __ label());
- emitJumpSlowCaseIfNotImmNum(X86::eax);
- } else if (types.first().isReusable() && isSSE2Present()) {
+ op2imm.link(this);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ } else if (types.first().isReusable() && supportsFloatingPoint()) {
ASSERT(types.first().mightBeNumber());
// Check op1 is a number
- __ testl_i32r(JSImmediate::TagTypeInteger, X86::eax);
- JmpSrc op1imm = __ jne();
+ Jump op1imm = emitJumpIfImmediateInteger(regT0);
if (!types.first().definitelyIsNumber()) {
- emitJumpSlowCaseIfNotJSCell(X86::eax, src1);
- __ cmpl_im(reinterpret_cast<unsigned>(numberStructure), FIELD_OFFSET(JSCell, m_structure), X86::eax);
- addSlowCase(__ jne());
+ emitJumpSlowCaseIfNotJSCell(regT0, src1);
+ addSlowCase(checkStructure(regT0, numberStructure));
}
// (1) In this case src1 is a reusable number cell.
// Slow case if src2 is not a number type.
- __ testl_i32r(JSImmediate::TagTypeInteger, X86::edx);
- JmpSrc op2imm = __ jne();
+ Jump op2imm = emitJumpIfImmediateInteger(regT1);
if (!types.second().definitelyIsNumber()) {
- emitJumpSlowCaseIfNotJSCell(X86::edx, src2);
- __ cmpl_im(reinterpret_cast<unsigned>(numberStructure), FIELD_OFFSET(JSCell, m_structure), X86::edx);
- addSlowCase(__ jne());
+ emitJumpSlowCaseIfNotJSCell(regT1, src2);
+ addSlowCase(checkStructure(regT1, numberStructure));
}
// (1a) if we get here, src2 is also a number cell
- __ movsd_mr(FIELD_OFFSET(JSNumberCell, m_value), X86::edx, X86::xmm1);
- JmpSrc loadedDouble = __ jmp();
+ loadDouble(Address(regT1, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT1);
+ Jump loadedDouble = jump();
// (1b) if we get here, src2 is an immediate
- __ link(op2imm, __ label());
- emitFastArithImmToInt(X86::edx);
- __ cvtsi2sd_rr(X86::edx, X86::xmm1);
+ op2imm.link(this);
+ emitFastArithImmToInt(regT1);
+ convertInt32ToDouble(regT1, fpRegT1);
// (1c)
- __ link(loadedDouble, __ label());
- __ movsd_mr(FIELD_OFFSET(JSNumberCell, m_value), X86::eax, X86::xmm0);
+ loadedDouble.link(this);
+ loadDouble(Address(regT0, FIELD_OFFSET(JSNumberCell, m_value)), fpRegT0);
if (opcodeID == op_add)
- __ addsd_rr(X86::xmm1, X86::xmm0);
+ addDouble(fpRegT1, fpRegT0);
else if (opcodeID == op_sub)
- __ subsd_rr(X86::xmm1, X86::xmm0);
+ subDouble(fpRegT1, fpRegT0);
else {
ASSERT(opcodeID == op_mul);
- __ mulsd_rr(X86::xmm1, X86::xmm0);
+ mulDouble(fpRegT1, fpRegT0);
}
- __ movsd_rm(X86::xmm0, FIELD_OFFSET(JSNumberCell, m_value), X86::eax);
+ storeDouble(fpRegT0, Address(regT0, FIELD_OFFSET(JSNumberCell, m_value)));
emitPutVirtualRegister(dst);
- putDoubleResultToJSNumberCellOrJSImmediate(X86::xmm0, X86::eax, dst, &wasJSNumberCell1, X86::xmm1, X86::ecx, X86::edx);
- wasJSNumberCell1b = __ jmp();
+ // Store the result to the JSNumberCell and jump.
+ storeDouble(fpRegT0, Address(regT0, FIELD_OFFSET(JSNumberCell, m_value)));
+ emitPutVirtualRegister(dst);
+ wasJSNumberCell1 = jump();
// (2) This handles cases where src1 is an immediate number.
// Two slow cases - either src2 isn't an immediate, or the subtract overflows.
- __ link(op1imm, __ label());
- emitJumpSlowCaseIfNotImmNum(X86::edx);
+ op1imm.link(this);
+ emitJumpSlowCaseIfNotImmediateInteger(regT1);
} else
- emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, X86::ecx);
+ emitJumpSlowCaseIfNotImmediateIntegers(regT0, regT1, regT2);
if (opcodeID == op_add) {
- emitFastArithDeTagImmediate(X86::eax);
- __ addl_rr(X86::edx, X86::eax);
- addSlowCase(__ jo());
+ emitFastArithDeTagImmediate(regT0);
+ addSlowCase(branchAdd32(Overflow, regT1, regT0));
} else if (opcodeID == op_sub) {
- __ subl_rr(X86::edx, X86::eax);
- addSlowCase(__ jo());
- signExtend32ToPtr(X86::eax, X86::eax);
- emitFastArithReTagImmediate(X86::eax, X86::eax);
+ addSlowCase(branchSub32(Overflow, regT1, regT0));
+ signExtend32ToPtr(regT0, regT0);
+ emitFastArithReTagImmediate(regT0, regT0);
} else {
ASSERT(opcodeID == op_mul);
// convert eax & edx from JSImmediates to ints, and check if either are zero
- emitFastArithImmToInt(X86::edx);
- JmpSrc op1Zero = emitFastArithDeTagImmediateJumpIfZero(X86::eax);
- __ testl_rr(X86::edx, X86::edx);
- JmpSrc op2NonZero = __ jne();
- __ link(op1Zero, __ label());
+ emitFastArithImmToInt(regT1);
+ Jump op1Zero = emitFastArithDeTagImmediateJumpIfZero(regT0);
+ Jump op2NonZero = branchTest32(NonZero, regT1);
+ op1Zero.link(this);
// if either input is zero, add the two together, and check if the result is < 0.
// If it is, we have a problem (N < 0), (N * 0) == -0, not representatble as a JSImmediate.
- __ movl_rr(X86::eax, X86::ecx);
- __ addl_rr(X86::edx, X86::ecx);
- addSlowCase(__ js());
+ move(regT0, regT2);
+ addSlowCase(branchAdd32(Signed, regT1, regT2));
// Skip the above check if neither input is zero
- __ link(op2NonZero, __ label());
- __ imull_rr(X86::edx, X86::eax);
- addSlowCase(__ jo());
- signExtend32ToPtr(X86::eax, X86::eax);
- emitFastArithReTagImmediate(X86::eax, X86::eax);
+ op2NonZero.link(this);
+ addSlowCase(branchMul32(Overflow, regT1, regT0));
+ signExtend32ToPtr(regT0, regT0);
+ emitFastArithReTagImmediate(regT0, regT0);
}
emitPutVirtualRegister(dst);
- if (types.second().isReusable() && isSSE2Present()) {
- __ link(wasJSNumberCell2, __ label());
- __ link(wasJSNumberCell2b, __ label());
- }
- else if (types.first().isReusable() && isSSE2Present()) {
- __ link(wasJSNumberCell1, __ label());
- __ link(wasJSNumberCell1b, __ label());
- }
+ if (types.second().isReusable() && supportsFloatingPoint())
+ wasJSNumberCell2.link(this);
+ else if (types.first().isReusable() && supportsFloatingPoint())
+ wasJSNumberCell1.link(this);
}
void JIT::compileBinaryArithOpSlowCase(OpcodeID opcodeID, Vector<SlowCaseEntry>::iterator& iter, unsigned dst, unsigned src1, unsigned src2, OperandTypes types)
{
linkSlowCase(iter);
- if (types.second().isReusable() && isSSE2Present()) {
+ if (types.second().isReusable() && supportsFloatingPoint()) {
if (!types.first().definitelyIsNumber()) {
linkSlowCaseIfNotJSCell(iter, src1);
linkSlowCase(iter);
@@ -733,7 +1227,7 @@ void JIT::compileBinaryArithOpSlowCase(OpcodeID opcodeID, Vector<SlowCaseEntry>:
linkSlowCaseIfNotJSCell(iter, src2);
linkSlowCase(iter);
}
- } else if (types.first().isReusable() && isSSE2Present()) {
+ } else if (types.first().isReusable() && supportsFloatingPoint()) {
if (!types.first().definitelyIsNumber()) {
linkSlowCaseIfNotJSCell(iter, src1);
linkSlowCase(iter);
@@ -749,20 +1243,134 @@ void JIT::compileBinaryArithOpSlowCase(OpcodeID opcodeID, Vector<SlowCaseEntry>:
if (opcodeID == op_mul)
linkSlowCase(iter);
- emitPutJITStubArgFromVirtualRegister(src1, 1, X86::ecx);
- emitPutJITStubArgFromVirtualRegister(src2, 2, X86::ecx);
- if (opcodeID == op_add)
- emitCTICall(Interpreter::cti_op_add);
- else if (opcodeID == op_sub)
- emitCTICall(Interpreter::cti_op_sub);
- else {
- ASSERT(opcodeID == op_mul);
- emitCTICall(Interpreter::cti_op_mul);
+ JITStubCall stubCall(this, opcodeID == op_add ? JITStubs::cti_op_add : opcodeID == op_sub ? JITStubs::cti_op_sub : JITStubs::cti_op_mul);
+ stubCall.addArgument(src1, regT2);
+ stubCall.addArgument(src2, regT2);
+ stubCall.call(dst);
+}
+
+void JIT::emit_op_add(Instruction* currentInstruction)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ if (isOperandConstantImmediateInt(op1)) {
+ emitGetVirtualRegister(op2, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ addSlowCase(branchAdd32(Overflow, Imm32(getConstantOperandImmediateInt(op1) << JSImmediate::IntegerPayloadShift), regT0));
+ signExtend32ToPtr(regT0, regT0);
+ emitPutVirtualRegister(result);
+ } else if (isOperandConstantImmediateInt(op2)) {
+ emitGetVirtualRegister(op1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ addSlowCase(branchAdd32(Overflow, Imm32(getConstantOperandImmediateInt(op2) << JSImmediate::IntegerPayloadShift), regT0));
+ signExtend32ToPtr(regT0, regT0);
+ emitPutVirtualRegister(result);
+ } else {
+ OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
+ if (types.first().mightBeNumber() && types.second().mightBeNumber())
+ compileBinaryArithOp(op_add, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand));
+ else {
+ JITStubCall stubCall(this, JITStubs::cti_op_add);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+ }
}
- emitPutVirtualRegister(dst);
}
-#endif
+void JIT::emitSlow_op_add(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ if (isOperandConstantImmediateInt(op1)) {
+ Jump notImm = getSlowCase(iter);
+ linkSlowCase(iter);
+ sub32(Imm32(getConstantOperandImmediateInt(op1) << JSImmediate::IntegerPayloadShift), regT0);
+ notImm.link(this);
+ JITStubCall stubCall(this, JITStubs::cti_op_add);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(regT0);
+ stubCall.call(result);
+ } else if (isOperandConstantImmediateInt(op2)) {
+ Jump notImm = getSlowCase(iter);
+ linkSlowCase(iter);
+ sub32(Imm32(getConstantOperandImmediateInt(op2) << JSImmediate::IntegerPayloadShift), regT0);
+ notImm.link(this);
+ JITStubCall stubCall(this, JITStubs::cti_op_add);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+ } else {
+ OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
+ ASSERT(types.first().mightBeNumber() && types.second().mightBeNumber());
+ compileBinaryArithOpSlowCase(op_add, iter, result, op1, op2, types);
+ }
+}
+
+void JIT::emit_op_mul(Instruction* currentInstruction)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ // For now, only plant a fast int case if the constant operand is greater than zero.
+ int32_t value;
+ if (isOperandConstantImmediateInt(op1) && ((value = getConstantOperandImmediateInt(op1)) > 0)) {
+ emitGetVirtualRegister(op2, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ emitFastArithDeTagImmediate(regT0);
+ addSlowCase(branchMul32(Overflow, Imm32(value), regT0, regT0));
+ signExtend32ToPtr(regT0, regT0);
+ emitFastArithReTagImmediate(regT0, regT0);
+ emitPutVirtualRegister(result);
+ } else if (isOperandConstantImmediateInt(op2) && ((value = getConstantOperandImmediateInt(op2)) > 0)) {
+ emitGetVirtualRegister(op1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ emitFastArithDeTagImmediate(regT0);
+ addSlowCase(branchMul32(Overflow, Imm32(value), regT0, regT0));
+ signExtend32ToPtr(regT0, regT0);
+ emitFastArithReTagImmediate(regT0, regT0);
+ emitPutVirtualRegister(result);
+ } else
+ compileBinaryArithOp(op_mul, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand));
+}
+
+void JIT::emitSlow_op_mul(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ unsigned result = currentInstruction[1].u.operand;
+ unsigned op1 = currentInstruction[2].u.operand;
+ unsigned op2 = currentInstruction[3].u.operand;
+
+ if ((isOperandConstantImmediateInt(op1) && (getConstantOperandImmediateInt(op1) > 0))
+ || (isOperandConstantImmediateInt(op2) && (getConstantOperandImmediateInt(op2) > 0))) {
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ // There is an extra slow case for (op1 * -N) or (-N * op2), to check for 0 since this should produce a result of -0.
+ JITStubCall stubCall(this, JITStubs::cti_op_mul);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call(result);
+ } else
+ compileBinaryArithOpSlowCase(op_mul, iter, result, op1, op2, OperandTypes::fromInt(currentInstruction[4].u.operand));
+}
+
+void JIT::emit_op_sub(Instruction* currentInstruction)
+{
+ compileBinaryArithOp(op_sub, currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand, OperandTypes::fromInt(currentInstruction[4].u.operand));
+}
+
+void JIT::emitSlow_op_sub(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ compileBinaryArithOpSlowCase(op_sub, iter, currentInstruction[1].u.operand, currentInstruction[2].u.operand, currentInstruction[3].u.operand, OperandTypes::fromInt(currentInstruction[4].u.operand));
+}
+
+#endif // !ENABLE(JIT_OPTIMIZE_ARITHMETIC)
+
+/* ------------------------------ END: OP_ADD, OP_SUB, OP_MUL ------------------------------ */
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITCall.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/JITCall.cpp
index 0e85d75..cf852be 100644
--- a/src/3rdparty/webkit/JavaScriptCore/jit/JITCall.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITCall.cpp
@@ -30,6 +30,7 @@
#include "CodeBlock.h"
#include "JITInlineMethods.h"
+#include "JITStubCall.h"
#include "JSArray.h"
#include "JSFunction.h"
#include "Interpreter.h"
@@ -44,40 +45,15 @@ using namespace std;
namespace JSC {
-void JIT::unlinkCall(CallLinkInfo* callLinkInfo)
-{
- // When the JSFunction is deleted the pointer embedded in the instruction stream will no longer be valid
- // (and, if a new JSFunction happened to be constructed at the same location, we could get a false positive
- // match). Reset the check so it no longer matches.
- DataLabelPtr::patch(callLinkInfo->hotPathBegin, JSValuePtr::encode(JSImmediate::impossibleValue()));
-}
-
-void JIT::linkCall(JSFunction* callee, CodeBlock* calleeCodeBlock, void* ctiCode, CallLinkInfo* callLinkInfo, int callerArgCount)
-{
- // Currently we only link calls with the exact number of arguments.
- if (callerArgCount == calleeCodeBlock->m_numParameters) {
- ASSERT(!callLinkInfo->isLinked());
-
- calleeCodeBlock->addCaller(callLinkInfo);
-
- DataLabelPtr::patch(callLinkInfo->hotPathBegin, callee);
- Jump::patch(callLinkInfo->hotPathOther, ctiCode);
- }
-
- // patch the instruction that jumps out to the cold path, so that we only try to link once.
- void* patchCheck = reinterpret_cast<void*>(reinterpret_cast<ptrdiff_t>(callLinkInfo->hotPathBegin) + patchOffsetOpCallCompareToJump);
- Jump::patch(patchCheck, callLinkInfo->coldPathOther);
-}
-
void JIT::compileOpCallInitializeCallFrame()
{
- store32(X86::edx, Address(callFrameRegister, RegisterFile::ArgumentCount * static_cast<int>(sizeof(Register))));
+ store32(regT1, Address(callFrameRegister, RegisterFile::ArgumentCount * static_cast<int>(sizeof(Register))));
- loadPtr(Address(X86::ecx, FIELD_OFFSET(JSFunction, m_scopeChain) + FIELD_OFFSET(ScopeChain, m_node)), X86::edx); // newScopeChain
+ loadPtr(Address(regT2, FIELD_OFFSET(JSFunction, m_data) + FIELD_OFFSET(ScopeChain, m_node)), regT1); // newScopeChain
- storePtr(ImmPtr(JSValuePtr::encode(noValue())), Address(callFrameRegister, RegisterFile::OptionalCalleeArguments * static_cast<int>(sizeof(Register))));
- storePtr(X86::ecx, Address(callFrameRegister, RegisterFile::Callee * static_cast<int>(sizeof(Register))));
- storePtr(X86::edx, Address(callFrameRegister, RegisterFile::ScopeChain * static_cast<int>(sizeof(Register))));
+ storePtr(ImmPtr(JSValue::encode(JSValue())), Address(callFrameRegister, RegisterFile::OptionalCalleeArguments * static_cast<int>(sizeof(Register))));
+ storePtr(regT2, Address(callFrameRegister, RegisterFile::Callee * static_cast<int>(sizeof(Register))));
+ storePtr(regT1, Address(callFrameRegister, RegisterFile::ScopeChain * static_cast<int>(sizeof(Register))));
}
void JIT::compileOpCallSetupArgs(Instruction* instruction)
@@ -86,20 +62,20 @@ void JIT::compileOpCallSetupArgs(Instruction* instruction)
int registerOffset = instruction[4].u.operand;
// ecx holds func
- emitPutJITStubArg(X86::ecx, 1);
- emitPutJITStubArgConstant(registerOffset, 2);
+ emitPutJITStubArg(regT2, 1);
emitPutJITStubArgConstant(argCount, 3);
+ emitPutJITStubArgConstant(registerOffset, 2);
}
-
-void JIT::compileOpCallEvalSetupArgs(Instruction* instruction)
+
+void JIT::compileOpCallVarargsSetupArgs(Instruction* instruction)
{
- int argCount = instruction[3].u.operand;
int registerOffset = instruction[4].u.operand;
-
+
// ecx holds func
- emitPutJITStubArg(X86::ecx, 1);
- emitPutJITStubArgConstant(registerOffset, 2);
- emitPutJITStubArgConstant(argCount, 3);
+ emitPutJITStubArg(regT2, 1);
+ emitPutJITStubArg(regT1, 3);
+ addPtr(Imm32(registerOffset), regT1, regT0);
+ emitPutJITStubArg(regT0, 2);
}
void JIT::compileOpConstructSetupArgs(Instruction* instruction)
@@ -110,15 +86,58 @@ void JIT::compileOpConstructSetupArgs(Instruction* instruction)
int thisRegister = instruction[6].u.operand;
// ecx holds func
- emitPutJITStubArg(X86::ecx, 1);
+ emitPutJITStubArg(regT2, 1);
emitPutJITStubArgConstant(registerOffset, 2);
emitPutJITStubArgConstant(argCount, 3);
- emitPutJITStubArgFromVirtualRegister(proto, 4, X86::eax);
+ emitPutJITStubArgFromVirtualRegister(proto, 4, regT0);
emitPutJITStubArgConstant(thisRegister, 5);
}
+void JIT::compileOpCallVarargs(Instruction* instruction)
+{
+ int dst = instruction[1].u.operand;
+ int callee = instruction[2].u.operand;
+ int argCountRegister = instruction[3].u.operand;
+
+ emitGetVirtualRegister(argCountRegister, regT1);
+ emitGetVirtualRegister(callee, regT2);
+ compileOpCallVarargsSetupArgs(instruction);
+
+ // Check for JSFunctions.
+ emitJumpSlowCaseIfNotJSCell(regT2);
+ addSlowCase(branchPtr(NotEqual, Address(regT2), ImmPtr(m_globalData->jsFunctionVPtr)));
+
+ // Speculatively roll the callframe, assuming argCount will match the arity.
+ mul32(Imm32(sizeof(Register)), regT0, regT0);
+ intptr_t offset = (intptr_t)sizeof(Register) * (intptr_t)RegisterFile::CallerFrame;
+ addPtr(Imm32((int32_t)offset), regT0, regT3);
+ addPtr(callFrameRegister, regT3);
+ storePtr(callFrameRegister, regT3);
+ addPtr(regT0, callFrameRegister);
+ emitNakedCall(m_globalData->jitStubs.ctiVirtualCall());
+
+ // Put the return value in dst. In the interpreter, op_ret does this.
+ emitPutVirtualRegister(dst);
+
+ sampleCodeBlock(m_codeBlock);
+}
+
+void JIT::compileOpCallVarargsSlowCase(Instruction* instruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ int dst = instruction[1].u.operand;
+
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_call_NotJSFunction);
+ stubCall.call(dst); // In the interpreter, the callee puts the return value in dst.
+
+ sampleCodeBlock(m_codeBlock);
+}
+
#if !ENABLE(JIT_OPTIMIZE_CALL)
+/* ------------------------------ BEGIN: !ENABLE(JIT_OPTIMIZE_CALL) ------------------------------ */
+
void JIT::compileOpCall(OpcodeID opcodeID, Instruction* instruction, unsigned)
{
int dst = instruction[1].u.operand;
@@ -129,14 +148,11 @@ void JIT::compileOpCall(OpcodeID opcodeID, Instruction* instruction, unsigned)
// Handle eval
Jump wasEval;
if (opcodeID == op_call_eval) {
- emitGetVirtualRegister(callee, X86::ecx);
- compileOpCallEvalSetupArgs(instruction);
-
- emitCTICall(Interpreter::cti_op_call_eval);
- wasEval = jnePtr(X86::eax, ImmPtr(JSImmediate::impossibleValue()));
+ CallEvalJITStub(this, instruction).call();
+ wasEval = branchPtr(NotEqual, regT0, ImmPtr(JSValue::encode(JSValue())));
}
- emitGetVirtualRegister(callee, X86::ecx);
+ emitGetVirtualRegister(callee, regT2);
// The arguments have been set up on the hot path for op_call_eval
if (opcodeID == op_call)
compileOpCallSetupArgs(instruction);
@@ -144,22 +160,21 @@ void JIT::compileOpCall(OpcodeID opcodeID, Instruction* instruction, unsigned)
compileOpConstructSetupArgs(instruction);
// Check for JSFunctions.
- emitJumpSlowCaseIfNotJSCell(X86::ecx);
- addSlowCase(jnePtr(Address(X86::ecx), ImmPtr(m_interpreter->m_jsFunctionVptr)));
+ emitJumpSlowCaseIfNotJSCell(regT2);
+ addSlowCase(branchPtr(NotEqual, Address(regT2), ImmPtr(m_globalData->jsFunctionVPtr)));
// First, in the case of a construct, allocate the new object.
if (opcodeID == op_construct) {
- emitCTICall(Interpreter::cti_op_construct_JSConstruct);
- emitPutVirtualRegister(registerOffset - RegisterFile::CallFrameHeaderSize - argCount);
- emitGetVirtualRegister(callee, X86::ecx);
+ JITStubCall(this, JITStubs::cti_op_construct_JSConstruct).call(registerOffset - RegisterFile::CallFrameHeaderSize - argCount);
+ emitGetVirtualRegister(callee, regT2);
}
// Speculatively roll the callframe, assuming argCount will match the arity.
storePtr(callFrameRegister, Address(callFrameRegister, (RegisterFile::CallerFrame + registerOffset) * static_cast<int>(sizeof(Register))));
addPtr(Imm32(registerOffset * static_cast<int>(sizeof(Register))), callFrameRegister);
- move(Imm32(argCount), X86::edx);
+ move(Imm32(argCount), regT1);
- emitNakedCall(m_interpreter->m_ctiVirtualCall);
+ emitNakedCall(m_globalData->jitStubs.ctiVirtualCall());
if (opcodeID == op_call_eval)
wasEval.link(this);
@@ -167,9 +182,7 @@ void JIT::compileOpCall(OpcodeID opcodeID, Instruction* instruction, unsigned)
// Put the return value in dst. In the interpreter, op_ret does this.
emitPutVirtualRegister(dst);
-#if ENABLE(CODEBLOCK_SAMPLING)
- storePtr(ImmPtr(m_codeBlock), m_interpreter->sampler()->codeBlockSlot());
-#endif
+ sampleCodeBlock(m_codeBlock);
}
void JIT::compileOpCallSlowCase(Instruction* instruction, Vector<SlowCaseEntry>::iterator& iter, unsigned, OpcodeID opcodeID)
@@ -178,24 +191,15 @@ void JIT::compileOpCallSlowCase(Instruction* instruction, Vector<SlowCaseEntry>:
linkSlowCase(iter);
linkSlowCase(iter);
+ JITStubCall stubCall(this, opcodeID == op_construct ? JITStubs::cti_op_construct_NotJSConstruct : JITStubs::cti_op_call_NotJSFunction);
+ stubCall.call(dst); // In the interpreter, the callee puts the return value in dst.
- // This handles host functions
- emitCTICall(((opcodeID == op_construct) ? Interpreter::cti_op_construct_NotJSConstruct : Interpreter::cti_op_call_NotJSFunction));
- // Put the return value in dst. In the interpreter, op_ret does this.
- emitPutVirtualRegister(dst);
-
-#if ENABLE(CODEBLOCK_SAMPLING)
- storePtr(ImmPtr(m_codeBlock), m_interpreter->sampler()->codeBlockSlot());
-#endif
+ sampleCodeBlock(m_codeBlock);
}
-#else
+#else // !ENABLE(JIT_OPTIMIZE_CALL)
-static void unreachable()
-{
- ASSERT_NOT_REACHED();
- exit(1);
-}
+/* ------------------------------ BEGIN: ENABLE(JIT_OPTIMIZE_CALL) ------------------------------ */
void JIT::compileOpCall(OpcodeID opcodeID, Instruction* instruction, unsigned callLinkInfoIndex)
{
@@ -207,18 +211,15 @@ void JIT::compileOpCall(OpcodeID opcodeID, Instruction* instruction, unsigned ca
// Handle eval
Jump wasEval;
if (opcodeID == op_call_eval) {
- emitGetVirtualRegister(callee, X86::ecx);
- compileOpCallEvalSetupArgs(instruction);
-
- emitCTICall(Interpreter::cti_op_call_eval);
- wasEval = jnePtr(X86::eax, ImmPtr(JSValuePtr::encode(JSImmediate::impossibleValue())));
+ CallEvalJITStub(this, instruction).call();
+ wasEval = branchPtr(NotEqual, regT0, ImmPtr(JSValue::encode(JSValue())));
}
// This plants a check for a cached JSFunction value, so we can plant a fast link to the callee.
// This deliberately leaves the callee in ecx, used when setting up the stack frame below
- emitGetVirtualRegister(callee, X86::ecx);
+ emitGetVirtualRegister(callee, regT2);
DataLabelPtr addressOfLinkedFunctionCheck;
- Jump jumpToSlow = jnePtrWithPatch(X86::ecx, addressOfLinkedFunctionCheck, ImmPtr(JSValuePtr::encode(JSImmediate::impossibleValue())));
+ Jump jumpToSlow = branchPtrWithPatch(NotEqual, regT2, addressOfLinkedFunctionCheck, ImmPtr(JSValue::encode(JSValue())));
addSlowCase(jumpToSlow);
ASSERT(differenceBetween(addressOfLinkedFunctionCheck, jumpToSlow) == patchOffsetOpCallCompareToJump);
m_callStructureStubCompilationInfo[callLinkInfoIndex].hotPathBegin = addressOfLinkedFunctionCheck;
@@ -230,25 +231,25 @@ void JIT::compileOpCall(OpcodeID opcodeID, Instruction* instruction, unsigned ca
int proto = instruction[5].u.operand;
int thisRegister = instruction[6].u.operand;
- emitPutJITStubArg(X86::ecx, 1);
- emitPutJITStubArgFromVirtualRegister(proto, 4, X86::eax);
- emitCTICall(Interpreter::cti_op_construct_JSConstruct);
- emitPutVirtualRegister(thisRegister);
- emitGetVirtualRegister(callee, X86::ecx);
+ emitPutJITStubArg(regT2, 1);
+ emitPutJITStubArgFromVirtualRegister(proto, 4, regT0);
+ JITStubCall stubCall(this, JITStubs::cti_op_construct_JSConstruct);
+ stubCall.call(thisRegister);
+ emitGetVirtualRegister(callee, regT2);
}
// Fast version of stack frame initialization, directly relative to edi.
// Note that this omits to set up RegisterFile::CodeBlock, which is set in the callee
- storePtr(ImmPtr(JSValuePtr::encode(noValue())), Address(callFrameRegister, (registerOffset + RegisterFile::OptionalCalleeArguments) * static_cast<int>(sizeof(Register))));
- storePtr(X86::ecx, Address(callFrameRegister, (registerOffset + RegisterFile::Callee) * static_cast<int>(sizeof(Register))));
- loadPtr(Address(X86::ecx, FIELD_OFFSET(JSFunction, m_scopeChain) + FIELD_OFFSET(ScopeChain, m_node)), X86::edx); // newScopeChain
+ storePtr(ImmPtr(JSValue::encode(JSValue())), Address(callFrameRegister, (registerOffset + RegisterFile::OptionalCalleeArguments) * static_cast<int>(sizeof(Register))));
+ storePtr(regT2, Address(callFrameRegister, (registerOffset + RegisterFile::Callee) * static_cast<int>(sizeof(Register))));
+ loadPtr(Address(regT2, FIELD_OFFSET(JSFunction, m_data) + FIELD_OFFSET(ScopeChain, m_node)), regT1); // newScopeChain
store32(Imm32(argCount), Address(callFrameRegister, (registerOffset + RegisterFile::ArgumentCount) * static_cast<int>(sizeof(Register))));
storePtr(callFrameRegister, Address(callFrameRegister, (registerOffset + RegisterFile::CallerFrame) * static_cast<int>(sizeof(Register))));
- storePtr(X86::edx, Address(callFrameRegister, (registerOffset + RegisterFile::ScopeChain) * static_cast<int>(sizeof(Register))));
+ storePtr(regT1, Address(callFrameRegister, (registerOffset + RegisterFile::ScopeChain) * static_cast<int>(sizeof(Register))));
addPtr(Imm32(registerOffset * sizeof(Register)), callFrameRegister);
// Call to the callee
- m_callStructureStubCompilationInfo[callLinkInfoIndex].hotPathOther = emitNakedCall(reinterpret_cast<void*>(unreachable));
+ m_callStructureStubCompilationInfo[callLinkInfoIndex].hotPathOther = emitNakedCall();
if (opcodeID == op_call_eval)
wasEval.link(this);
@@ -256,9 +257,7 @@ void JIT::compileOpCall(OpcodeID opcodeID, Instruction* instruction, unsigned ca
// Put the return value in dst. In the interpreter, op_ret does this.
emitPutVirtualRegister(dst);
-#if ENABLE(CODEBLOCK_SAMPLING)
- storePtr(ImmPtr(m_codeBlock), m_interpreter->sampler()->codeBlockSlot());
-#endif
+ sampleCodeBlock(m_codeBlock);
}
void JIT::compileOpCallSlowCase(Instruction* instruction, Vector<SlowCaseEntry>::iterator& iter, unsigned callLinkInfoIndex, OpcodeID opcodeID)
@@ -277,28 +276,26 @@ void JIT::compileOpCallSlowCase(Instruction* instruction, Vector<SlowCaseEntry>:
compileOpConstructSetupArgs(instruction);
// Fast check for JS function.
- Jump callLinkFailNotObject = emitJumpIfNotJSCell(X86::ecx);
- Jump callLinkFailNotJSFunction = jnePtr(Address(X86::ecx), ImmPtr(m_interpreter->m_jsFunctionVptr));
+ Jump callLinkFailNotObject = emitJumpIfNotJSCell(regT2);
+ Jump callLinkFailNotJSFunction = branchPtr(NotEqual, Address(regT2), ImmPtr(m_globalData->jsFunctionVPtr));
// First, in the case of a construct, allocate the new object.
if (opcodeID == op_construct) {
- emitCTICall(Interpreter::cti_op_construct_JSConstruct);
- emitPutVirtualRegister(registerOffset - RegisterFile::CallFrameHeaderSize - argCount);
- emitGetVirtualRegister(callee, X86::ecx);
+ JITStubCall(this, JITStubs::cti_op_construct_JSConstruct).call(registerOffset - RegisterFile::CallFrameHeaderSize - argCount);
+ emitGetVirtualRegister(callee, regT2);
}
- move(Imm32(argCount), X86::edx);
+ move(Imm32(argCount), regT1);
// Speculatively roll the callframe, assuming argCount will match the arity.
storePtr(callFrameRegister, Address(callFrameRegister, (RegisterFile::CallerFrame + registerOffset) * static_cast<int>(sizeof(Register))));
addPtr(Imm32(registerOffset * static_cast<int>(sizeof(Register))), callFrameRegister);
m_callStructureStubCompilationInfo[callLinkInfoIndex].callReturnLocation =
- emitNakedCall(m_interpreter->m_ctiVirtualCallPreLink);
+ emitNakedCall(m_globalData->jitStubs.ctiVirtualCallPreLink());
Jump storeResultForFirstRun = jump();
-// FIXME: this label can be removed, since it is a fixed offset from 'callReturnLocation'.
// This is the address for the cold path *after* the first run (which tries to link the call).
m_callStructureStubCompilationInfo[callLinkInfoIndex].coldPathOther = MacroAssembler::Label(this);
@@ -309,14 +306,15 @@ void JIT::compileOpCallSlowCase(Instruction* instruction, Vector<SlowCaseEntry>:
compileOpConstructSetupArgs(instruction);
// Check for JSFunctions.
- Jump isNotObject = emitJumpIfNotJSCell(X86::ecx);
- Jump isJSFunction = jePtr(Address(X86::ecx), ImmPtr(m_interpreter->m_jsFunctionVptr));
+ Jump isNotObject = emitJumpIfNotJSCell(regT2);
+ Jump isJSFunction = branchPtr(Equal, Address(regT2), ImmPtr(m_globalData->jsFunctionVPtr));
// This handles host functions
isNotObject.link(this);
callLinkFailNotObject.link(this);
callLinkFailNotJSFunction.link(this);
- emitCTICall(((opcodeID == op_construct) ? Interpreter::cti_op_construct_NotJSConstruct : Interpreter::cti_op_call_NotJSFunction));
+ JITStubCall stubCall(this, opcodeID == op_construct ? JITStubs::cti_op_construct_NotJSConstruct : JITStubs::cti_op_call_NotJSFunction);
+ stubCall.call();
Jump wasNotJSFunction = jump();
// Next, handle JSFunctions...
@@ -324,29 +322,29 @@ void JIT::compileOpCallSlowCase(Instruction* instruction, Vector<SlowCaseEntry>:
// First, in the case of a construct, allocate the new object.
if (opcodeID == op_construct) {
- emitCTICall(Interpreter::cti_op_construct_JSConstruct);
- emitPutVirtualRegister(registerOffset - RegisterFile::CallFrameHeaderSize - argCount);
- emitGetVirtualRegister(callee, X86::ecx);
+ JITStubCall stubCall(this, JITStubs::cti_op_construct_JSConstruct);
+ stubCall.call(registerOffset - RegisterFile::CallFrameHeaderSize - argCount);
+ emitGetVirtualRegister(callee, regT2);
}
// Speculatively roll the callframe, assuming argCount will match the arity.
storePtr(callFrameRegister, Address(callFrameRegister, (RegisterFile::CallerFrame + registerOffset) * static_cast<int>(sizeof(Register))));
addPtr(Imm32(registerOffset * static_cast<int>(sizeof(Register))), callFrameRegister);
- move(Imm32(argCount), X86::edx);
+ move(Imm32(argCount), regT1);
- emitNakedCall(m_interpreter->m_ctiVirtualCall);
+ emitNakedCall(m_globalData->jitStubs.ctiVirtualCall());
// Put the return value in dst. In the interpreter, op_ret does this.
wasNotJSFunction.link(this);
storeResultForFirstRun.link(this);
emitPutVirtualRegister(dst);
-#if ENABLE(CODEBLOCK_SAMPLING)
- storePtr(ImmPtr(m_codeBlock), m_interpreter->sampler()->codeBlockSlot());
-#endif
+ sampleCodeBlock(m_codeBlock);
}
-#endif
+/* ------------------------------ END: !ENABLE / ENABLE(JIT_OPTIMIZE_CALL) ------------------------------ */
+
+#endif // !ENABLE(JIT_OPTIMIZE_CALL)
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITCode.h b/src/3rdparty/webkit/JavaScriptCore/jit/JITCode.h
new file mode 100644
index 0000000..7ee644b
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITCode.h
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JITCode_h
+#define JITCode_h
+
+#include <wtf/Platform.h>
+
+#if ENABLE(JIT)
+
+#include "CallFrame.h"
+#include "JSValue.h"
+#include "MacroAssemblerCodeRef.h"
+#include "Profiler.h"
+
+namespace JSC {
+
+ class JSGlobalData;
+ class RegisterFile;
+
+ class JITCode {
+ typedef MacroAssemblerCodeRef CodeRef;
+ typedef MacroAssemblerCodePtr CodePtr;
+ public:
+ JITCode()
+ {
+ }
+
+ JITCode(const CodeRef ref)
+ : m_ref(ref)
+ {
+ }
+
+ bool operator !() const
+ {
+ return !m_ref.m_code.executableAddress();
+ }
+
+ CodePtr addressForCall()
+ {
+ return m_ref.m_code;
+ }
+
+ // This function returns the offset in bytes of 'pointerIntoCode' into
+ // this block of code. The pointer provided must be a pointer into this
+ // block of code. It is ASSERTed that no codeblock >4gb in size.
+ unsigned offsetOf(void* pointerIntoCode)
+ {
+ intptr_t result = reinterpret_cast<intptr_t>(pointerIntoCode) - reinterpret_cast<intptr_t>(m_ref.m_code.executableAddress());
+ ASSERT(static_cast<intptr_t>(static_cast<unsigned>(result)) == result);
+ return static_cast<unsigned>(result);
+ }
+
+ // Execute the code!
+ inline JSValue execute(RegisterFile* registerFile, CallFrame* callFrame, JSGlobalData* globalData, JSValue* exception)
+ {
+ return JSValue::decode(ctiTrampoline(
+#if PLATFORM(X86_64)
+ 0, 0, 0, 0, 0, 0,
+#endif
+ m_ref.m_code.executableAddress(), registerFile, callFrame, exception, Profiler::enabledProfilerReference(), globalData));
+ }
+
+#ifndef NDEBUG
+ size_t size()
+ {
+ ASSERT(m_ref.m_code.executableAddress());
+ return m_ref.m_size;
+ }
+#endif
+
+ ExecutablePool* getExecutablePool()
+ {
+ return m_ref.m_executablePool.get();
+ }
+
+ // Host functions are a bit special; they have a m_code pointer but they
+ // do not individully ref the executable pool containing the trampoline.
+ static JITCode HostFunction(CodePtr code)
+ {
+ return JITCode(code.dataLocation(), 0, 0);
+ }
+
+ private:
+ JITCode(void* code, PassRefPtr<ExecutablePool> executablePool, size_t size)
+ : m_ref(code, executablePool, size)
+ {
+ }
+
+ CodeRef m_ref;
+ };
+
+};
+
+#endif
+
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITInlineMethods.h b/src/3rdparty/webkit/JavaScriptCore/jit/JITInlineMethods.h
index 3804ba9..d5de291 100644
--- a/src/3rdparty/webkit/JavaScriptCore/jit/JITInlineMethods.h
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITInlineMethods.h
@@ -53,8 +53,8 @@ ALWAYS_INLINE void JIT::emitGetVirtualRegister(int src, RegisterID dst)
// TODO: we want to reuse values that are already in registers if we can - add a register allocator!
if (m_codeBlock->isConstantRegisterIndex(src)) {
- JSValuePtr value = m_codeBlock->getConstant(src);
- move(ImmPtr(JSValuePtr::encode(value)), dst);
+ JSValue value = m_codeBlock->getConstant(src);
+ move(ImmPtr(JSValue::encode(value)), dst);
killLastResultRegister();
return;
}
@@ -69,8 +69,8 @@ ALWAYS_INLINE void JIT::emitGetVirtualRegister(int src, RegisterID dst)
if (!atJumpTarget) {
// The argument we want is already stored in eax
- if (dst != X86::eax)
- move(X86::eax, dst);
+ if (dst != cachedResultRegister)
+ move(cachedResultRegister, dst);
killLastResultRegister();
return;
}
@@ -112,7 +112,7 @@ ALWAYS_INLINE void JIT::emitGetJITStubArg(unsigned argumentNumber, RegisterID ds
peek(dst, argumentNumber);
}
-ALWAYS_INLINE JSValuePtr JIT::getConstantOperand(unsigned src)
+ALWAYS_INLINE JSValue JIT::getConstantOperand(unsigned src)
{
ASSERT(m_codeBlock->isConstantRegisterIndex(src));
return m_codeBlock->getConstant(src);
@@ -120,20 +120,20 @@ ALWAYS_INLINE JSValuePtr JIT::getConstantOperand(unsigned src)
ALWAYS_INLINE int32_t JIT::getConstantOperandImmediateInt(unsigned src)
{
- return static_cast<int32_t>(JSImmediate::intValue(getConstantOperand(src)));
+ return getConstantOperand(src).getInt32Fast();
}
ALWAYS_INLINE bool JIT::isOperandConstantImmediateInt(unsigned src)
{
- return m_codeBlock->isConstantRegisterIndex(src) && JSImmediate::isNumber(getConstantOperand(src));
+ return m_codeBlock->isConstantRegisterIndex(src) && getConstantOperand(src).isInt32Fast();
}
// get arg puts an arg from the SF register array onto the stack, as an arg to a context threaded function.
ALWAYS_INLINE void JIT::emitPutJITStubArgFromVirtualRegister(unsigned src, unsigned argumentNumber, RegisterID scratch)
{
if (m_codeBlock->isConstantRegisterIndex(src)) {
- JSValuePtr value = m_codeBlock->getConstant(src);
- emitPutJITStubArgConstant(JSValuePtr::encode(value), argumentNumber);
+ JSValue value = m_codeBlock->getConstant(src);
+ emitPutJITStubArgConstant(JSValue::encode(value), argumentNumber);
} else {
loadPtr(Address(callFrameRegister, src * sizeof(Register)), scratch);
emitPutJITStubArg(scratch, argumentNumber);
@@ -142,22 +142,6 @@ ALWAYS_INLINE void JIT::emitPutJITStubArgFromVirtualRegister(unsigned src, unsig
killLastResultRegister();
}
-ALWAYS_INLINE void JIT::emitPutCTIParam(void* value, unsigned name)
-{
- poke(ImmPtr(value), name);
-}
-
-ALWAYS_INLINE void JIT::emitPutCTIParam(RegisterID from, unsigned name)
-{
- poke(from, name);
-}
-
-ALWAYS_INLINE void JIT::emitGetCTIParam(unsigned name, RegisterID to)
-{
- peek(to, name);
- killLastResultRegister();
-}
-
ALWAYS_INLINE void JIT::emitPutToCallFrameHeader(RegisterID from, RegisterFile::CallFrameHeaderEntry entry)
{
storePtr(from, Address(callFrameRegister, entry * sizeof(Register)));
@@ -168,108 +152,98 @@ ALWAYS_INLINE void JIT::emitPutImmediateToCallFrameHeader(void* value, RegisterF
storePtr(ImmPtr(value), Address(callFrameRegister, entry * sizeof(Register)));
}
-ALWAYS_INLINE void JIT::emitGetFromCallFrameHeader(RegisterFile::CallFrameHeaderEntry entry, RegisterID to)
+ALWAYS_INLINE void JIT::emitGetFromCallFrameHeaderPtr(RegisterFile::CallFrameHeaderEntry entry, RegisterID to, RegisterID from)
{
- loadPtr(Address(callFrameRegister, entry * sizeof(Register)), to);
+ loadPtr(Address(from, entry * sizeof(Register)), to);
+ killLastResultRegister();
+}
+
+ALWAYS_INLINE void JIT::emitGetFromCallFrameHeader32(RegisterFile::CallFrameHeaderEntry entry, RegisterID to, RegisterID from)
+{
+ load32(Address(from, entry * sizeof(Register)), to);
killLastResultRegister();
}
ALWAYS_INLINE void JIT::emitPutVirtualRegister(unsigned dst, RegisterID from)
{
storePtr(from, Address(callFrameRegister, dst * sizeof(Register)));
- m_lastResultBytecodeRegister = (from == X86::eax) ? dst : std::numeric_limits<int>::max();
+ m_lastResultBytecodeRegister = (from == cachedResultRegister) ? dst : std::numeric_limits<int>::max();
// FIXME: #ifndef NDEBUG, Write the correct m_type to the register.
}
ALWAYS_INLINE void JIT::emitInitRegister(unsigned dst)
{
- storePtr(ImmPtr(JSValuePtr::encode(jsUndefined())), Address(callFrameRegister, dst * sizeof(Register)));
+ storePtr(ImmPtr(JSValue::encode(jsUndefined())), Address(callFrameRegister, dst * sizeof(Register)));
// FIXME: #ifndef NDEBUG, Write the correct m_type to the register.
}
-ALWAYS_INLINE JIT::Jump JIT::emitNakedCall(X86::RegisterID r)
+ALWAYS_INLINE JIT::Call JIT::emitNakedCall(CodePtr function)
{
ASSERT(m_bytecodeIndex != (unsigned)-1); // This method should only be called during hot/cold path generation, so that m_bytecodeIndex is set.
- Jump nakedCall = call(r);
- m_calls.append(CallRecord(nakedCall, m_bytecodeIndex));
+ Call nakedCall = nearCall();
+ m_calls.append(CallRecord(nakedCall, m_bytecodeIndex, function.executableAddress()));
return nakedCall;
}
-ALWAYS_INLINE JIT::Jump JIT::emitNakedCall(void* function)
+ALWAYS_INLINE void JIT::preverveReturnAddressAfterCall(RegisterID reg)
{
- ASSERT(m_bytecodeIndex != (unsigned)-1); // This method should only be called during hot/cold path generation, so that m_bytecodeIndex is set.
-
- Jump nakedCall = call();
- m_calls.append(CallRecord(nakedCall, m_bytecodeIndex, function));
- return nakedCall;
+ pop(reg);
}
-#if USE(JIT_STUB_ARGUMENT_REGISTER)
-ALWAYS_INLINE void JIT::restoreArgumentReference()
+ALWAYS_INLINE void JIT::restoreReturnAddressBeforeReturn(RegisterID reg)
{
-#if PLATFORM(X86_64)
- move(X86::esp, X86::edi);
-#else
- move(X86::esp, X86::ecx);
-#endif
- emitPutCTIParam(callFrameRegister, STUB_ARGS_callFrame);
+ push(reg);
}
-ALWAYS_INLINE void JIT::restoreArgumentReferenceForTrampoline()
+
+ALWAYS_INLINE void JIT::restoreReturnAddressBeforeReturn(Address address)
{
- // In the trampoline on x86-64, the first argument register is not overwritten.
-#if !PLATFORM(X86_64)
- move(X86::esp, X86::ecx);
- addPtr(Imm32(sizeof(void*)), X86::ecx);
-#endif
+ push(address);
}
-#elif USE(JIT_STUB_ARGUMENT_STACK)
+
+#if USE(JIT_STUB_ARGUMENT_VA_LIST)
ALWAYS_INLINE void JIT::restoreArgumentReference()
{
- storePtr(X86::esp, X86::esp);
- emitPutCTIParam(callFrameRegister, STUB_ARGS_callFrame);
+ poke(callFrameRegister, offsetof(struct JITStackFrame, callFrame) / sizeof (void*));
}
ALWAYS_INLINE void JIT::restoreArgumentReferenceForTrampoline() {}
-#else // JIT_STUB_ARGUMENT_VA_LIST
+#else
ALWAYS_INLINE void JIT::restoreArgumentReference()
{
- emitPutCTIParam(callFrameRegister, STUB_ARGS_callFrame);
+ move(stackPointerRegister, firstArgumentRegister);
+ poke(callFrameRegister, offsetof(struct JITStackFrame, callFrame) / sizeof (void*));
}
-ALWAYS_INLINE void JIT::restoreArgumentReferenceForTrampoline() {}
-#endif
-
-ALWAYS_INLINE JIT::Jump JIT::emitCTICall_internal(void* helper)
+ALWAYS_INLINE void JIT::restoreArgumentReferenceForTrampoline()
{
- ASSERT(m_bytecodeIndex != (unsigned)-1); // This method should only be called during hot/cold path generation, so that m_bytecodeIndex is set.
-
-#if ENABLE(OPCODE_SAMPLING)
- store32(Imm32(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions().begin() + m_bytecodeIndex, true)), m_interpreter->sampler()->sampleSlot());
-#endif
- restoreArgumentReference();
- Jump ctiCall = call();
- m_calls.append(CallRecord(ctiCall, m_bytecodeIndex, helper));
-#if ENABLE(OPCODE_SAMPLING)
- store32(Imm32(m_interpreter->sampler()->encodeSample(m_codeBlock->instructions().begin() + m_bytecodeIndex, false)), m_interpreter->sampler()->sampleSlot());
+ // In the trampoline on x86-64, the first argument register is not overwritten.
+#if !PLATFORM(X86_64)
+ move(stackPointerRegister, firstArgumentRegister);
+ addPtr(Imm32(sizeof(void*)), firstArgumentRegister);
#endif
- killLastResultRegister();
-
- return ctiCall;
}
+#endif
ALWAYS_INLINE JIT::Jump JIT::checkStructure(RegisterID reg, Structure* structure)
{
- return jnePtr(Address(reg, FIELD_OFFSET(JSCell, m_structure)), ImmPtr(structure));
+ return branchPtr(NotEqual, Address(reg, FIELD_OFFSET(JSCell, m_structure)), ImmPtr(structure));
}
ALWAYS_INLINE JIT::Jump JIT::emitJumpIfJSCell(RegisterID reg)
{
#if USE(ALTERNATE_JSIMMEDIATE)
- return jzPtr(reg, ImmPtr(reinterpret_cast<void*>(JSImmediate::TagMask)));
+ return branchTestPtr(Zero, reg, tagMaskRegister);
#else
- return jz32(reg, Imm32(JSImmediate::TagMask));
+ return branchTest32(Zero, reg, Imm32(JSImmediate::TagMask));
#endif
}
+ALWAYS_INLINE JIT::Jump JIT::emitJumpIfBothJSCells(RegisterID reg1, RegisterID reg2, RegisterID scratch)
+{
+ move(reg1, scratch);
+ orPtr(reg2, scratch);
+ return emitJumpIfJSCell(scratch);
+}
+
ALWAYS_INLINE void JIT::emitJumpSlowCaseIfJSCell(RegisterID reg)
{
addSlowCase(emitJumpIfJSCell(reg));
@@ -278,9 +252,9 @@ ALWAYS_INLINE void JIT::emitJumpSlowCaseIfJSCell(RegisterID reg)
ALWAYS_INLINE JIT::Jump JIT::emitJumpIfNotJSCell(RegisterID reg)
{
#if USE(ALTERNATE_JSIMMEDIATE)
- return jnzPtr(reg, ImmPtr(reinterpret_cast<void*>(JSImmediate::TagMask)));
+ return branchTestPtr(NonZero, reg, tagMaskRegister);
#else
- return jnz32(reg, Imm32(JSImmediate::TagMask));
+ return branchTest32(NonZero, reg, Imm32(JSImmediate::TagMask));
#endif
}
@@ -301,40 +275,61 @@ ALWAYS_INLINE void JIT::linkSlowCaseIfNotJSCell(Vector<SlowCaseEntry>::iterator&
linkSlowCase(iter);
}
-ALWAYS_INLINE JIT::Jump JIT::emitJumpIfImmNum(RegisterID reg)
+#if USE(ALTERNATE_JSIMMEDIATE)
+ALWAYS_INLINE JIT::Jump JIT::emitJumpIfImmediateNumber(RegisterID reg)
+{
+ return branchTestPtr(NonZero, reg, tagTypeNumberRegister);
+}
+ALWAYS_INLINE JIT::Jump JIT::emitJumpIfNotImmediateNumber(RegisterID reg)
+{
+ return branchTestPtr(Zero, reg, tagTypeNumberRegister);
+}
+#endif
+
+ALWAYS_INLINE JIT::Jump JIT::emitJumpIfImmediateInteger(RegisterID reg)
{
#if USE(ALTERNATE_JSIMMEDIATE)
- return jaePtr(reg, ImmPtr(reinterpret_cast<void*>(JSImmediate::TagTypeInteger)));
+ return branchPtr(AboveOrEqual, reg, tagTypeNumberRegister);
#else
- return jnz32(reg, Imm32(JSImmediate::TagTypeInteger));
+ return branchTest32(NonZero, reg, Imm32(JSImmediate::TagTypeNumber));
#endif
}
-ALWAYS_INLINE void JIT::emitJumpSlowCaseIfNotImmNum(RegisterID reg)
+ALWAYS_INLINE JIT::Jump JIT::emitJumpIfNotImmediateInteger(RegisterID reg)
{
#if USE(ALTERNATE_JSIMMEDIATE)
- addSlowCase(jbPtr(reg, ImmPtr(reinterpret_cast<void*>(JSImmediate::TagTypeInteger))));
+ return branchPtr(Below, reg, tagTypeNumberRegister);
#else
- addSlowCase(jz32(reg, Imm32(JSImmediate::TagTypeInteger)));
+ return branchTest32(Zero, reg, Imm32(JSImmediate::TagTypeNumber));
#endif
}
-ALWAYS_INLINE void JIT::emitJumpSlowCaseIfNotImmNums(RegisterID reg1, RegisterID reg2, RegisterID scratch)
+ALWAYS_INLINE JIT::Jump JIT::emitJumpIfNotImmediateIntegers(RegisterID reg1, RegisterID reg2, RegisterID scratch)
{
move(reg1, scratch);
andPtr(reg2, scratch);
- emitJumpSlowCaseIfNotImmNum(scratch);
+ return emitJumpIfNotImmediateInteger(scratch);
+}
+
+ALWAYS_INLINE void JIT::emitJumpSlowCaseIfNotImmediateInteger(RegisterID reg)
+{
+ addSlowCase(emitJumpIfNotImmediateInteger(reg));
+}
+
+ALWAYS_INLINE void JIT::emitJumpSlowCaseIfNotImmediateIntegers(RegisterID reg1, RegisterID reg2, RegisterID scratch)
+{
+ addSlowCase(emitJumpIfNotImmediateIntegers(reg1, reg2, scratch));
}
#if !USE(ALTERNATE_JSIMMEDIATE)
ALWAYS_INLINE void JIT::emitFastArithDeTagImmediate(RegisterID reg)
{
- subPtr(Imm32(JSImmediate::TagTypeInteger), reg);
+ subPtr(Imm32(JSImmediate::TagTypeNumber), reg);
}
ALWAYS_INLINE JIT::Jump JIT::emitFastArithDeTagImmediateJumpIfZero(RegisterID reg)
{
- return jzSubPtr(Imm32(JSImmediate::TagTypeInteger), reg);
+ return branchSubPtr(Zero, Imm32(JSImmediate::TagTypeNumber), reg);
}
#endif
@@ -345,7 +340,7 @@ ALWAYS_INLINE void JIT::emitFastArithReTagImmediate(RegisterID src, RegisterID d
#else
if (src != dest)
move(src, dest);
- addPtr(Imm32(JSImmediate::TagTypeInteger), dest);
+ addPtr(Imm32(JSImmediate::TagTypeNumber), dest);
#endif
}
@@ -364,7 +359,7 @@ ALWAYS_INLINE void JIT::emitFastArithIntToImmNoCheck(RegisterID src, RegisterID
#if USE(ALTERNATE_JSIMMEDIATE)
if (src != dest)
move(src, dest);
- orPtr(ImmPtr(reinterpret_cast<void*>(JSImmediate::TagTypeInteger)), dest);
+ orPtr(tagTypeNumberRegister, dest);
#else
signExtend32ToPtr(src, dest);
addPtr(dest, dest);
@@ -399,6 +394,66 @@ ALWAYS_INLINE void JIT::emitJumpSlowToHot(Jump jump, int relativeOffset)
jump.linkTo(m_labels[m_bytecodeIndex + relativeOffset], this);
}
+#if ENABLE(SAMPLING_FLAGS)
+ALWAYS_INLINE void JIT::setSamplingFlag(int32_t flag)
+{
+ ASSERT(flag >= 1);
+ ASSERT(flag <= 32);
+ or32(Imm32(1u << (flag - 1)), AbsoluteAddress(&SamplingFlags::s_flags));
+}
+
+ALWAYS_INLINE void JIT::clearSamplingFlag(int32_t flag)
+{
+ ASSERT(flag >= 1);
+ ASSERT(flag <= 32);
+ and32(Imm32(~(1u << (flag - 1))), AbsoluteAddress(&SamplingFlags::s_flags));
+}
+#endif
+
+#if ENABLE(SAMPLING_COUNTERS)
+ALWAYS_INLINE void JIT::emitCount(AbstractSamplingCounter& counter, uint32_t count)
+{
+#if PLATFORM(X86_64) // Or any other 64-bit plattform.
+ addPtr(Imm32(count), AbsoluteAddress(&counter.m_counter));
+#elif PLATFORM(X86) // Or any other little-endian 32-bit plattform.
+ intptr_t hiWord = reinterpret_cast<intptr_t>(&counter.m_counter) + sizeof(int32_t);
+ add32(Imm32(count), AbsoluteAddress(&counter.m_counter));
+ addWithCarry32(Imm32(0), AbsoluteAddress(reinterpret_cast<void*>(hiWord)));
+#else
+#error "SAMPLING_FLAGS not implemented on this platform."
+#endif
+}
+#endif
+
+#if ENABLE(OPCODE_SAMPLING)
+#if PLATFORM(X86_64)
+ALWAYS_INLINE void JIT::sampleInstruction(Instruction* instruction, bool inHostFunction)
+{
+ move(ImmPtr(m_interpreter->sampler()->sampleSlot()), X86::ecx);
+ storePtr(ImmPtr(m_interpreter->sampler()->encodeSample(instruction, inHostFunction)), X86::ecx);
+}
+#else
+ALWAYS_INLINE void JIT::sampleInstruction(Instruction* instruction, bool inHostFunction)
+{
+ storePtr(ImmPtr(m_interpreter->sampler()->encodeSample(instruction, inHostFunction)), m_interpreter->sampler()->sampleSlot());
+}
+#endif
+#endif
+
+#if ENABLE(CODEBLOCK_SAMPLING)
+#if PLATFORM(X86_64)
+ALWAYS_INLINE void JIT::sampleCodeBlock(CodeBlock* codeBlock)
+{
+ move(ImmPtr(m_interpreter->sampler()->codeBlockSlot()), X86::ecx);
+ storePtr(ImmPtr(codeBlock), X86::ecx);
+}
+#else
+ALWAYS_INLINE void JIT::sampleCodeBlock(CodeBlock* codeBlock)
+{
+ storePtr(ImmPtr(codeBlock), m_interpreter->sampler()->codeBlockSlot());
+}
+#endif
+#endif
}
#endif // ENABLE(JIT)
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITOpcodes.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/JITOpcodes.cpp
new file mode 100644
index 0000000..1737551
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITOpcodes.cpp
@@ -0,0 +1,1183 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JIT.h"
+
+#if ENABLE(JIT)
+
+#include "JITInlineMethods.h"
+#include "JITStubCall.h"
+#include "JSArray.h"
+#include "JSCell.h"
+
+namespace JSC {
+
+#define RECORD_JUMP_TARGET(targetOffset) \
+ do { m_labels[m_bytecodeIndex + (targetOffset)].used(); } while (false)
+
+void JIT::emit_op_mov(Instruction* currentInstruction)
+{
+ int dst = currentInstruction[1].u.operand;
+ int src = currentInstruction[2].u.operand;
+
+ if (m_codeBlock->isConstantRegisterIndex(src)) {
+ storePtr(ImmPtr(JSValue::encode(getConstantOperand(src))), Address(callFrameRegister, dst * sizeof(Register)));
+ if (dst == m_lastResultBytecodeRegister)
+ killLastResultRegister();
+ } else if ((src == m_lastResultBytecodeRegister) || (dst == m_lastResultBytecodeRegister)) {
+ // If either the src or dst is the cached register go though
+ // get/put registers to make sure we track this correctly.
+ emitGetVirtualRegister(src, regT0);
+ emitPutVirtualRegister(dst);
+ } else {
+ // Perform the copy via regT1; do not disturb any mapping in regT0.
+ loadPtr(Address(callFrameRegister, src * sizeof(Register)), regT1);
+ storePtr(regT1, Address(callFrameRegister, dst * sizeof(Register)));
+ }
+}
+
+void JIT::emit_op_end(Instruction* currentInstruction)
+{
+ if (m_codeBlock->needsFullScopeChain())
+ JITStubCall(this, JITStubs::cti_op_end).call();
+ ASSERT(returnValueRegister != callFrameRegister);
+ emitGetVirtualRegister(currentInstruction[1].u.operand, returnValueRegister);
+ restoreReturnAddressBeforeReturn(Address(callFrameRegister, RegisterFile::ReturnPC * static_cast<int>(sizeof(Register))));
+ ret();
+}
+
+void JIT::emit_op_jmp(Instruction* currentInstruction)
+{
+ unsigned target = currentInstruction[1].u.operand;
+ addJump(jump(), target + 1);
+ RECORD_JUMP_TARGET(target + 1);
+}
+
+void JIT::emit_op_loop(Instruction* currentInstruction)
+{
+ emitTimeoutCheck();
+
+ unsigned target = currentInstruction[1].u.operand;
+ addJump(jump(), target + 1);
+}
+
+void JIT::emit_op_loop_if_less(Instruction* currentInstruction)
+{
+ emitTimeoutCheck();
+
+ unsigned op1 = currentInstruction[1].u.operand;
+ unsigned op2 = currentInstruction[2].u.operand;
+ unsigned target = currentInstruction[3].u.operand;
+ if (isOperandConstantImmediateInt(op2)) {
+ emitGetVirtualRegister(op1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+#if USE(ALTERNATE_JSIMMEDIATE)
+ int32_t op2imm = getConstantOperandImmediateInt(op2);
+#else
+ int32_t op2imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op2)));
+#endif
+ addJump(branch32(LessThan, regT0, Imm32(op2imm)), target + 3);
+ } else if (isOperandConstantImmediateInt(op1)) {
+ emitGetVirtualRegister(op2, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+#if USE(ALTERNATE_JSIMMEDIATE)
+ int32_t op1imm = getConstantOperandImmediateInt(op1);
+#else
+ int32_t op1imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op1)));
+#endif
+ addJump(branch32(GreaterThan, regT0, Imm32(op1imm)), target + 3);
+ } else {
+ emitGetVirtualRegisters(op1, regT0, op2, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT1);
+ addJump(branch32(LessThan, regT0, regT1), target + 3);
+ }
+}
+
+void JIT::emit_op_loop_if_lesseq(Instruction* currentInstruction)
+{
+ emitTimeoutCheck();
+
+ unsigned op1 = currentInstruction[1].u.operand;
+ unsigned op2 = currentInstruction[2].u.operand;
+ unsigned target = currentInstruction[3].u.operand;
+ if (isOperandConstantImmediateInt(op2)) {
+ emitGetVirtualRegister(op1, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+#if USE(ALTERNATE_JSIMMEDIATE)
+ int32_t op2imm = getConstantOperandImmediateInt(op2);
+#else
+ int32_t op2imm = static_cast<int32_t>(JSImmediate::rawValue(getConstantOperand(op2)));
+#endif
+ addJump(branch32(LessThanOrEqual, regT0, Imm32(op2imm)), target + 3);
+ } else {
+ emitGetVirtualRegisters(op1, regT0, op2, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT1);
+ addJump(branch32(LessThanOrEqual, regT0, regT1), target + 3);
+ }
+}
+
+void JIT::emit_op_new_object(Instruction* currentInstruction)
+{
+ JITStubCall(this, JITStubs::cti_op_new_object).call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_instanceof(Instruction* currentInstruction)
+{
+ // Load the operands (baseVal, proto, and value respectively) into registers.
+ // We use regT0 for baseVal since we will be done with this first, and we can then use it for the result.
+ emitGetVirtualRegister(currentInstruction[3].u.operand, regT0);
+ emitGetVirtualRegister(currentInstruction[4].u.operand, regT1);
+ emitGetVirtualRegister(currentInstruction[2].u.operand, regT2);
+
+ // Check that baseVal & proto are cells.
+ emitJumpSlowCaseIfNotJSCell(regT0);
+ emitJumpSlowCaseIfNotJSCell(regT1);
+
+ // Check that baseVal is an object, that it 'ImplementsHasInstance' but that it does not 'OverridesHasInstance'.
+ loadPtr(Address(regT0, FIELD_OFFSET(JSCell, m_structure)), regT0);
+ addSlowCase(branch32(NotEqual, Address(regT0, FIELD_OFFSET(Structure, m_typeInfo.m_type)), Imm32(ObjectType)));
+ addSlowCase(branchTest32(Zero, Address(regT0, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(ImplementsDefaultHasInstance)));
+
+ // If value is not an Object, return false.
+ Jump valueIsImmediate = emitJumpIfNotJSCell(regT2);
+ loadPtr(Address(regT2, FIELD_OFFSET(JSCell, m_structure)), regT0);
+ Jump valueIsNotObject = branch32(NotEqual, Address(regT0, FIELD_OFFSET(Structure, m_typeInfo.m_type)), Imm32(ObjectType));
+
+ // Check proto is object.
+ loadPtr(Address(regT1, FIELD_OFFSET(JSCell, m_structure)), regT0);
+ addSlowCase(branch32(NotEqual, Address(regT0, FIELD_OFFSET(Structure, m_typeInfo.m_type)), Imm32(ObjectType)));
+
+ // Optimistically load the result true, and start looping.
+ // Initially, regT1 still contains proto and regT2 still contains value.
+ // As we loop regT2 will be updated with its prototype, recursively walking the prototype chain.
+ move(ImmPtr(JSValue::encode(jsBoolean(true))), regT0);
+ Label loop(this);
+
+ // Load the prototype of the object in regT2. If this is equal to regT1 - WIN!
+ // Otherwise, check if we've hit null - if we have then drop out of the loop, if not go again.
+ loadPtr(Address(regT2, FIELD_OFFSET(JSCell, m_structure)), regT2);
+ loadPtr(Address(regT2, FIELD_OFFSET(Structure, m_prototype)), regT2);
+ Jump isInstance = branchPtr(Equal, regT2, regT1);
+ branchPtr(NotEqual, regT2, ImmPtr(JSValue::encode(jsNull())), loop);
+
+ // We get here either by dropping out of the loop, or if value was not an Object. Result is false.
+ valueIsImmediate.link(this);
+ valueIsNotObject.link(this);
+ move(ImmPtr(JSValue::encode(jsBoolean(false))), regT0);
+
+ // isInstance jumps right down to here, to skip setting the result to false (it has already set true).
+ isInstance.link(this);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_new_func(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_new_func);
+ stubCall.addArgument(ImmPtr(m_codeBlock->function(currentInstruction[2].u.operand)));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_call(Instruction* currentInstruction)
+{
+ compileOpCall(op_call, currentInstruction, m_callLinkInfoIndex++);
+}
+
+void JIT::emit_op_call_eval(Instruction* currentInstruction)
+{
+ compileOpCall(op_call_eval, currentInstruction, m_callLinkInfoIndex++);
+}
+
+void JIT::emit_op_load_varargs(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_load_varargs);
+ stubCall.addArgument(Imm32(currentInstruction[2].u.operand));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_call_varargs(Instruction* currentInstruction)
+{
+ compileOpCallVarargs(currentInstruction);
+}
+
+void JIT::emit_op_construct(Instruction* currentInstruction)
+{
+ compileOpCall(op_construct, currentInstruction, m_callLinkInfoIndex++);
+}
+
+void JIT::emit_op_get_global_var(Instruction* currentInstruction)
+{
+ JSVariableObject* globalObject = static_cast<JSVariableObject*>(currentInstruction[2].u.jsCell);
+ move(ImmPtr(globalObject), regT0);
+ emitGetVariableObjectRegister(regT0, currentInstruction[3].u.operand, regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_put_global_var(Instruction* currentInstruction)
+{
+ emitGetVirtualRegister(currentInstruction[3].u.operand, regT1);
+ JSVariableObject* globalObject = static_cast<JSVariableObject*>(currentInstruction[1].u.jsCell);
+ move(ImmPtr(globalObject), regT0);
+ emitPutVariableObjectRegister(regT1, regT0, currentInstruction[2].u.operand);
+}
+
+void JIT::emit_op_get_scoped_var(Instruction* currentInstruction)
+{
+ int skip = currentInstruction[3].u.operand + m_codeBlock->needsFullScopeChain();
+
+ emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT0);
+ while (skip--)
+ loadPtr(Address(regT0, FIELD_OFFSET(ScopeChainNode, next)), regT0);
+
+ loadPtr(Address(regT0, FIELD_OFFSET(ScopeChainNode, object)), regT0);
+ emitGetVariableObjectRegister(regT0, currentInstruction[2].u.operand, regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_put_scoped_var(Instruction* currentInstruction)
+{
+ int skip = currentInstruction[2].u.operand + m_codeBlock->needsFullScopeChain();
+
+ emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1);
+ emitGetVirtualRegister(currentInstruction[3].u.operand, regT0);
+ while (skip--)
+ loadPtr(Address(regT1, FIELD_OFFSET(ScopeChainNode, next)), regT1);
+
+ loadPtr(Address(regT1, FIELD_OFFSET(ScopeChainNode, object)), regT1);
+ emitPutVariableObjectRegister(regT0, regT1, currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_tear_off_activation(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_tear_off_activation);
+ stubCall.addArgument(currentInstruction[1].u.operand, regT2);
+ stubCall.call();
+}
+
+void JIT::emit_op_tear_off_arguments(Instruction*)
+{
+ JITStubCall(this, JITStubs::cti_op_tear_off_arguments).call();
+}
+
+void JIT::emit_op_ret(Instruction* currentInstruction)
+{
+ // We could JIT generate the deref, only calling out to C when the refcount hits zero.
+ if (m_codeBlock->needsFullScopeChain())
+ JITStubCall(this, JITStubs::cti_op_ret_scopeChain).call();
+
+ ASSERT(callFrameRegister != regT1);
+ ASSERT(regT1 != returnValueRegister);
+ ASSERT(returnValueRegister != callFrameRegister);
+
+ // Return the result in %eax.
+ emitGetVirtualRegister(currentInstruction[1].u.operand, returnValueRegister);
+
+ // Grab the return address.
+ emitGetFromCallFrameHeaderPtr(RegisterFile::ReturnPC, regT1);
+
+ // Restore our caller's "r".
+ emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, callFrameRegister);
+
+ // Return.
+ restoreReturnAddressBeforeReturn(regT1);
+ ret();
+}
+
+void JIT::emit_op_new_array(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_new_array);
+ stubCall.addArgument(Imm32(currentInstruction[2].u.operand));
+ stubCall.addArgument(Imm32(currentInstruction[3].u.operand));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_resolve(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_resolve);
+ stubCall.addArgument(ImmPtr(&m_codeBlock->identifier(currentInstruction[2].u.operand)));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_construct_verify(Instruction* currentInstruction)
+{
+ emitGetVirtualRegister(currentInstruction[1].u.operand, regT0);
+
+ emitJumpSlowCaseIfNotJSCell(regT0);
+ loadPtr(Address(regT0, FIELD_OFFSET(JSCell, m_structure)), regT2);
+ addSlowCase(branch32(NotEqual, Address(regT2, FIELD_OFFSET(Structure, m_typeInfo) + FIELD_OFFSET(TypeInfo, m_type)), Imm32(ObjectType)));
+
+}
+
+void JIT::emit_op_to_primitive(Instruction* currentInstruction)
+{
+ int dst = currentInstruction[1].u.operand;
+ int src = currentInstruction[2].u.operand;
+
+ emitGetVirtualRegister(src, regT0);
+
+ Jump isImm = emitJumpIfNotJSCell(regT0);
+ addSlowCase(branchPtr(NotEqual, Address(regT0), ImmPtr(m_globalData->jsStringVPtr)));
+ isImm.link(this);
+
+ if (dst != src)
+ emitPutVirtualRegister(dst);
+
+}
+
+void JIT::emit_op_strcat(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_strcat);
+ stubCall.addArgument(Imm32(currentInstruction[2].u.operand));
+ stubCall.addArgument(Imm32(currentInstruction[3].u.operand));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_resolve_func(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_resolve_func);
+ stubCall.addArgument(ImmPtr(&m_codeBlock->identifier(currentInstruction[3].u.operand)));
+ stubCall.addArgument(Imm32(currentInstruction[1].u.operand));
+ stubCall.call(currentInstruction[2].u.operand);
+}
+
+void JIT::emit_op_loop_if_true(Instruction* currentInstruction)
+{
+ emitTimeoutCheck();
+
+ unsigned target = currentInstruction[2].u.operand;
+ emitGetVirtualRegister(currentInstruction[1].u.operand, regT0);
+
+ Jump isZero = branchPtr(Equal, regT0, ImmPtr(JSValue::encode(jsNumber(m_globalData, 0))));
+ addJump(emitJumpIfImmediateInteger(regT0), target + 2);
+
+ addJump(branchPtr(Equal, regT0, ImmPtr(JSValue::encode(jsBoolean(true)))), target + 2);
+ addSlowCase(branchPtr(NotEqual, regT0, ImmPtr(JSValue::encode(jsBoolean(false)))));
+
+ isZero.link(this);
+};
+void JIT::emit_op_resolve_base(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_resolve_base);
+ stubCall.addArgument(ImmPtr(&m_codeBlock->identifier(currentInstruction[2].u.operand)));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_resolve_skip(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_resolve_skip);
+ stubCall.addArgument(ImmPtr(&m_codeBlock->identifier(currentInstruction[2].u.operand)));
+ stubCall.addArgument(Imm32(currentInstruction[3].u.operand + m_codeBlock->needsFullScopeChain()));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_resolve_global(Instruction* currentInstruction)
+{
+ // Fast case
+ void* globalObject = currentInstruction[2].u.jsCell;
+ Identifier* ident = &m_codeBlock->identifier(currentInstruction[3].u.operand);
+
+ unsigned currentIndex = m_globalResolveInfoIndex++;
+ void* structureAddress = &(m_codeBlock->globalResolveInfo(currentIndex).structure);
+ void* offsetAddr = &(m_codeBlock->globalResolveInfo(currentIndex).offset);
+
+ // Check Structure of global object
+ move(ImmPtr(globalObject), regT0);
+ loadPtr(structureAddress, regT1);
+ Jump noMatch = branchPtr(NotEqual, regT1, Address(regT0, FIELD_OFFSET(JSCell, m_structure))); // Structures don't match
+
+ // Load cached property
+ // Assume that the global object always uses external storage.
+ loadPtr(Address(regT0, FIELD_OFFSET(JSGlobalObject, m_externalStorage)), regT0);
+ load32(offsetAddr, regT1);
+ loadPtr(BaseIndex(regT0, regT1, ScalePtr), regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+ Jump end = jump();
+
+ // Slow case
+ noMatch.link(this);
+ JITStubCall stubCall(this, JITStubs::cti_op_resolve_global);
+ stubCall.addArgument(ImmPtr(globalObject));
+ stubCall.addArgument(ImmPtr(ident));
+ stubCall.addArgument(Imm32(currentIndex));
+ stubCall.call(currentInstruction[1].u.operand);
+ end.link(this);
+}
+
+void JIT::emit_op_not(Instruction* currentInstruction)
+{
+ emitGetVirtualRegister(currentInstruction[2].u.operand, regT0);
+ xorPtr(Imm32(static_cast<int32_t>(JSImmediate::FullTagTypeBool)), regT0);
+ addSlowCase(branchTestPtr(NonZero, regT0, Imm32(static_cast<int32_t>(~JSImmediate::ExtendedPayloadBitBoolValue))));
+ xorPtr(Imm32(static_cast<int32_t>(JSImmediate::FullTagTypeBool | JSImmediate::ExtendedPayloadBitBoolValue)), regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_jfalse(Instruction* currentInstruction)
+{
+ unsigned target = currentInstruction[2].u.operand;
+ emitGetVirtualRegister(currentInstruction[1].u.operand, regT0);
+
+ addJump(branchPtr(Equal, regT0, ImmPtr(JSValue::encode(jsNumber(m_globalData, 0)))), target + 2);
+ Jump isNonZero = emitJumpIfImmediateInteger(regT0);
+
+ addJump(branchPtr(Equal, regT0, ImmPtr(JSValue::encode(jsBoolean(false)))), target + 2);
+ addSlowCase(branchPtr(NotEqual, regT0, ImmPtr(JSValue::encode(jsBoolean(true)))));
+
+ isNonZero.link(this);
+ RECORD_JUMP_TARGET(target + 2);
+};
+void JIT::emit_op_jeq_null(Instruction* currentInstruction)
+{
+ unsigned src = currentInstruction[1].u.operand;
+ unsigned target = currentInstruction[2].u.operand;
+
+ emitGetVirtualRegister(src, regT0);
+ Jump isImmediate = emitJumpIfNotJSCell(regT0);
+
+ // First, handle JSCell cases - check MasqueradesAsUndefined bit on the structure.
+ loadPtr(Address(regT0, FIELD_OFFSET(JSCell, m_structure)), regT2);
+ addJump(branchTest32(NonZero, Address(regT2, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(MasqueradesAsUndefined)), target + 2);
+ Jump wasNotImmediate = jump();
+
+ // Now handle the immediate cases - undefined & null
+ isImmediate.link(this);
+ andPtr(Imm32(~JSImmediate::ExtendedTagBitUndefined), regT0);
+ addJump(branchPtr(Equal, regT0, ImmPtr(JSValue::encode(jsNull()))), target + 2);
+
+ wasNotImmediate.link(this);
+ RECORD_JUMP_TARGET(target + 2);
+};
+void JIT::emit_op_jneq_null(Instruction* currentInstruction)
+{
+ unsigned src = currentInstruction[1].u.operand;
+ unsigned target = currentInstruction[2].u.operand;
+
+ emitGetVirtualRegister(src, regT0);
+ Jump isImmediate = emitJumpIfNotJSCell(regT0);
+
+ // First, handle JSCell cases - check MasqueradesAsUndefined bit on the structure.
+ loadPtr(Address(regT0, FIELD_OFFSET(JSCell, m_structure)), regT2);
+ addJump(branchTest32(Zero, Address(regT2, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(MasqueradesAsUndefined)), target + 2);
+ Jump wasNotImmediate = jump();
+
+ // Now handle the immediate cases - undefined & null
+ isImmediate.link(this);
+ andPtr(Imm32(~JSImmediate::ExtendedTagBitUndefined), regT0);
+ addJump(branchPtr(NotEqual, regT0, ImmPtr(JSValue::encode(jsNull()))), target + 2);
+
+ wasNotImmediate.link(this);
+ RECORD_JUMP_TARGET(target + 2);
+}
+
+void JIT::emit_op_jneq_ptr(Instruction* currentInstruction)
+{
+ unsigned src = currentInstruction[1].u.operand;
+ JSCell* ptr = currentInstruction[2].u.jsCell;
+ unsigned target = currentInstruction[3].u.operand;
+
+ emitGetVirtualRegister(src, regT0);
+ addJump(branchPtr(NotEqual, regT0, ImmPtr(JSValue::encode(JSValue(ptr)))), target + 3);
+
+ RECORD_JUMP_TARGET(target + 3);
+}
+
+void JIT::emit_op_unexpected_load(Instruction* currentInstruction)
+{
+ JSValue v = m_codeBlock->unexpectedConstant(currentInstruction[2].u.operand);
+ move(ImmPtr(JSValue::encode(v)), regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_jsr(Instruction* currentInstruction)
+{
+ int retAddrDst = currentInstruction[1].u.operand;
+ int target = currentInstruction[2].u.operand;
+ DataLabelPtr storeLocation = storePtrWithPatch(ImmPtr(0), Address(callFrameRegister, sizeof(Register) * retAddrDst));
+ addJump(jump(), target + 2);
+ m_jsrSites.append(JSRInfo(storeLocation, label()));
+ killLastResultRegister();
+ RECORD_JUMP_TARGET(target + 2);
+}
+
+void JIT::emit_op_sret(Instruction* currentInstruction)
+{
+ jump(Address(callFrameRegister, sizeof(Register) * currentInstruction[1].u.operand));
+ killLastResultRegister();
+}
+
+void JIT::emit_op_eq(Instruction* currentInstruction)
+{
+ emitGetVirtualRegisters(currentInstruction[2].u.operand, regT0, currentInstruction[3].u.operand, regT1);
+ emitJumpSlowCaseIfNotImmediateIntegers(regT0, regT1, regT2);
+ set32(Equal, regT1, regT0, regT0);
+ emitTagAsBoolImmediate(regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_bitnot(Instruction* currentInstruction)
+{
+ emitGetVirtualRegister(currentInstruction[2].u.operand, regT0);
+ emitJumpSlowCaseIfNotImmediateInteger(regT0);
+#if USE(ALTERNATE_JSIMMEDIATE)
+ not32(regT0);
+ emitFastArithIntToImmNoCheck(regT0, regT0);
+#else
+ xorPtr(Imm32(~JSImmediate::TagTypeNumber), regT0);
+#endif
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_resolve_with_base(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_resolve_with_base);
+ stubCall.addArgument(ImmPtr(&m_codeBlock->identifier(currentInstruction[3].u.operand)));
+ stubCall.addArgument(Imm32(currentInstruction[1].u.operand));
+ stubCall.call(currentInstruction[2].u.operand);
+}
+
+void JIT::emit_op_new_func_exp(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_new_func_exp);
+ stubCall.addArgument(ImmPtr(m_codeBlock->functionExpression(currentInstruction[2].u.operand)));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_jtrue(Instruction* currentInstruction)
+{
+ unsigned target = currentInstruction[2].u.operand;
+ emitGetVirtualRegister(currentInstruction[1].u.operand, regT0);
+
+ Jump isZero = branchPtr(Equal, regT0, ImmPtr(JSValue::encode(jsNumber(m_globalData, 0))));
+ addJump(emitJumpIfImmediateInteger(regT0), target + 2);
+
+ addJump(branchPtr(Equal, regT0, ImmPtr(JSValue::encode(jsBoolean(true)))), target + 2);
+ addSlowCase(branchPtr(NotEqual, regT0, ImmPtr(JSValue::encode(jsBoolean(false)))));
+
+ isZero.link(this);
+ RECORD_JUMP_TARGET(target + 2);
+}
+
+void JIT::emit_op_neq(Instruction* currentInstruction)
+{
+ emitGetVirtualRegisters(currentInstruction[2].u.operand, regT0, currentInstruction[3].u.operand, regT1);
+ emitJumpSlowCaseIfNotImmediateIntegers(regT0, regT1, regT2);
+ set32(NotEqual, regT1, regT0, regT0);
+ emitTagAsBoolImmediate(regT0);
+
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+
+}
+
+void JIT::emit_op_bitxor(Instruction* currentInstruction)
+{
+ emitGetVirtualRegisters(currentInstruction[2].u.operand, regT0, currentInstruction[3].u.operand, regT1);
+ emitJumpSlowCaseIfNotImmediateIntegers(regT0, regT1, regT2);
+ xorPtr(regT1, regT0);
+ emitFastArithReTagImmediate(regT0, regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_new_regexp(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_new_regexp);
+ stubCall.addArgument(ImmPtr(m_codeBlock->regexp(currentInstruction[2].u.operand)));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_bitor(Instruction* currentInstruction)
+{
+ emitGetVirtualRegisters(currentInstruction[2].u.operand, regT0, currentInstruction[3].u.operand, regT1);
+ emitJumpSlowCaseIfNotImmediateIntegers(regT0, regT1, regT2);
+ orPtr(regT1, regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_throw(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_throw);
+ stubCall.addArgument(currentInstruction[1].u.operand, regT2);
+ stubCall.call();
+ ASSERT(regT0 == returnValueRegister);
+#ifndef NDEBUG
+ // cti_op_throw always changes it's return address,
+ // this point in the code should never be reached.
+ breakpoint();
+#endif
+}
+
+void JIT::emit_op_next_pname(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_next_pname);
+ stubCall.addArgument(currentInstruction[2].u.operand, regT2);
+ stubCall.call();
+ Jump endOfIter = branchTestPtr(Zero, regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+ addJump(jump(), currentInstruction[3].u.operand + 3);
+ endOfIter.link(this);
+}
+
+void JIT::emit_op_push_scope(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_push_scope);
+ stubCall.addArgument(currentInstruction[1].u.operand, regT2);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_pop_scope(Instruction*)
+{
+ JITStubCall(this, JITStubs::cti_op_pop_scope).call();
+}
+
+void JIT::emit_op_stricteq(Instruction* currentInstruction)
+{
+ compileOpStrictEq(currentInstruction, OpStrictEq);
+}
+
+void JIT::emit_op_nstricteq(Instruction* currentInstruction)
+{
+ compileOpStrictEq(currentInstruction, OpNStrictEq);
+}
+
+void JIT::emit_op_to_jsnumber(Instruction* currentInstruction)
+{
+ int srcVReg = currentInstruction[2].u.operand;
+ emitGetVirtualRegister(srcVReg, regT0);
+
+ Jump wasImmediate = emitJumpIfImmediateInteger(regT0);
+
+ emitJumpSlowCaseIfNotJSCell(regT0, srcVReg);
+ loadPtr(Address(regT0, FIELD_OFFSET(JSCell, m_structure)), regT2);
+ addSlowCase(branch32(NotEqual, Address(regT2, FIELD_OFFSET(Structure, m_typeInfo.m_type)), Imm32(NumberType)));
+
+ wasImmediate.link(this);
+
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_push_new_scope(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_push_new_scope);
+ stubCall.addArgument(ImmPtr(&m_codeBlock->identifier(currentInstruction[2].u.operand)));
+ stubCall.addArgument(currentInstruction[3].u.operand, regT2);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_catch(Instruction* currentInstruction)
+{
+ killLastResultRegister(); // FIXME: Implicitly treat op_catch as a labeled statement, and remove this line of code.
+ peek(callFrameRegister, offsetof(struct JITStackFrame, callFrame) / sizeof (void*));
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_jmp_scopes(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_jmp_scopes);
+ stubCall.addArgument(Imm32(currentInstruction[1].u.operand));
+ stubCall.call();
+ addJump(jump(), currentInstruction[2].u.operand + 2);
+ RECORD_JUMP_TARGET(currentInstruction[2].u.operand + 2);
+}
+
+void JIT::emit_op_switch_imm(Instruction* currentInstruction)
+{
+ unsigned tableIndex = currentInstruction[1].u.operand;
+ unsigned defaultOffset = currentInstruction[2].u.operand;
+ unsigned scrutinee = currentInstruction[3].u.operand;
+
+ // create jump table for switch destinations, track this switch statement.
+ SimpleJumpTable* jumpTable = &m_codeBlock->immediateSwitchJumpTable(tableIndex);
+ m_switches.append(SwitchRecord(jumpTable, m_bytecodeIndex, defaultOffset, SwitchRecord::Immediate));
+ jumpTable->ctiOffsets.grow(jumpTable->branchOffsets.size());
+
+ JITStubCall stubCall(this, JITStubs::cti_op_switch_imm);
+ stubCall.addArgument(scrutinee, regT2);
+ stubCall.addArgument(Imm32(tableIndex));
+ stubCall.call();
+ jump(regT0);
+}
+
+void JIT::emit_op_switch_char(Instruction* currentInstruction)
+{
+ unsigned tableIndex = currentInstruction[1].u.operand;
+ unsigned defaultOffset = currentInstruction[2].u.operand;
+ unsigned scrutinee = currentInstruction[3].u.operand;
+
+ // create jump table for switch destinations, track this switch statement.
+ SimpleJumpTable* jumpTable = &m_codeBlock->characterSwitchJumpTable(tableIndex);
+ m_switches.append(SwitchRecord(jumpTable, m_bytecodeIndex, defaultOffset, SwitchRecord::Character));
+ jumpTable->ctiOffsets.grow(jumpTable->branchOffsets.size());
+
+ JITStubCall stubCall(this, JITStubs::cti_op_switch_char);
+ stubCall.addArgument(scrutinee, regT2);
+ stubCall.addArgument(Imm32(tableIndex));
+ stubCall.call();
+ jump(regT0);
+}
+
+void JIT::emit_op_switch_string(Instruction* currentInstruction)
+{
+ unsigned tableIndex = currentInstruction[1].u.operand;
+ unsigned defaultOffset = currentInstruction[2].u.operand;
+ unsigned scrutinee = currentInstruction[3].u.operand;
+
+ // create jump table for switch destinations, track this switch statement.
+ StringJumpTable* jumpTable = &m_codeBlock->stringSwitchJumpTable(tableIndex);
+ m_switches.append(SwitchRecord(jumpTable, m_bytecodeIndex, defaultOffset));
+
+ JITStubCall stubCall(this, JITStubs::cti_op_switch_string);
+ stubCall.addArgument(scrutinee, regT2);
+ stubCall.addArgument(Imm32(tableIndex));
+ stubCall.call();
+ jump(regT0);
+}
+
+void JIT::emit_op_new_error(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_new_error);
+ stubCall.addArgument(Imm32(currentInstruction[2].u.operand));
+ stubCall.addArgument(ImmPtr(JSValue::encode(m_codeBlock->unexpectedConstant(currentInstruction[3].u.operand))));
+ stubCall.addArgument(Imm32(m_bytecodeIndex));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_debug(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_debug);
+ stubCall.addArgument(Imm32(currentInstruction[1].u.operand));
+ stubCall.addArgument(Imm32(currentInstruction[2].u.operand));
+ stubCall.addArgument(Imm32(currentInstruction[3].u.operand));
+ stubCall.call();
+}
+
+void JIT::emit_op_eq_null(Instruction* currentInstruction)
+{
+ unsigned dst = currentInstruction[1].u.operand;
+ unsigned src1 = currentInstruction[2].u.operand;
+
+ emitGetVirtualRegister(src1, regT0);
+ Jump isImmediate = emitJumpIfNotJSCell(regT0);
+
+ loadPtr(Address(regT0, FIELD_OFFSET(JSCell, m_structure)), regT2);
+ setTest32(NonZero, Address(regT2, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(MasqueradesAsUndefined), regT0);
+
+ Jump wasNotImmediate = jump();
+
+ isImmediate.link(this);
+
+ andPtr(Imm32(~JSImmediate::ExtendedTagBitUndefined), regT0);
+ setPtr(Equal, regT0, Imm32(JSImmediate::FullTagTypeNull), regT0);
+
+ wasNotImmediate.link(this);
+
+ emitTagAsBoolImmediate(regT0);
+ emitPutVirtualRegister(dst);
+
+}
+
+void JIT::emit_op_neq_null(Instruction* currentInstruction)
+{
+ unsigned dst = currentInstruction[1].u.operand;
+ unsigned src1 = currentInstruction[2].u.operand;
+
+ emitGetVirtualRegister(src1, regT0);
+ Jump isImmediate = emitJumpIfNotJSCell(regT0);
+
+ loadPtr(Address(regT0, FIELD_OFFSET(JSCell, m_structure)), regT2);
+ setTest32(Zero, Address(regT2, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(MasqueradesAsUndefined), regT0);
+
+ Jump wasNotImmediate = jump();
+
+ isImmediate.link(this);
+
+ andPtr(Imm32(~JSImmediate::ExtendedTagBitUndefined), regT0);
+ setPtr(NotEqual, regT0, Imm32(JSImmediate::FullTagTypeNull), regT0);
+
+ wasNotImmediate.link(this);
+
+ emitTagAsBoolImmediate(regT0);
+ emitPutVirtualRegister(dst);
+
+}
+
+void JIT::emit_op_enter(Instruction*)
+{
+ // Even though CTI doesn't use them, we initialize our constant
+ // registers to zap stale pointers, to avoid unnecessarily prolonging
+ // object lifetime and increasing GC pressure.
+ size_t count = m_codeBlock->m_numVars + m_codeBlock->numberOfConstantRegisters();
+ for (size_t j = 0; j < count; ++j)
+ emitInitRegister(j);
+
+}
+
+void JIT::emit_op_enter_with_activation(Instruction* currentInstruction)
+{
+ // Even though CTI doesn't use them, we initialize our constant
+ // registers to zap stale pointers, to avoid unnecessarily prolonging
+ // object lifetime and increasing GC pressure.
+ size_t count = m_codeBlock->m_numVars + m_codeBlock->numberOfConstantRegisters();
+ for (size_t j = 0; j < count; ++j)
+ emitInitRegister(j);
+
+ JITStubCall(this, JITStubs::cti_op_push_activation).call(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_create_arguments(Instruction*)
+{
+ Jump argsCreated = branchTestPtr(NonZero, Address(callFrameRegister, sizeof(Register) * RegisterFile::ArgumentsRegister));
+ if (m_codeBlock->m_numParameters == 1)
+ JITStubCall(this, JITStubs::cti_op_create_arguments_no_params).call();
+ else
+ JITStubCall(this, JITStubs::cti_op_create_arguments).call();
+ argsCreated.link(this);
+}
+
+void JIT::emit_op_init_arguments(Instruction*)
+{
+ storePtr(ImmPtr(0), Address(callFrameRegister, sizeof(Register) * RegisterFile::ArgumentsRegister));
+}
+
+void JIT::emit_op_convert_this(Instruction* currentInstruction)
+{
+ emitGetVirtualRegister(currentInstruction[1].u.operand, regT0);
+
+ emitJumpSlowCaseIfNotJSCell(regT0);
+ loadPtr(Address(regT0, FIELD_OFFSET(JSCell, m_structure)), regT1);
+ addSlowCase(branchTest32(NonZero, Address(regT1, FIELD_OFFSET(Structure, m_typeInfo.m_flags)), Imm32(NeedsThisConversion)));
+
+}
+
+void JIT::emit_op_profile_will_call(Instruction* currentInstruction)
+{
+ peek(regT1, FIELD_OFFSET(JITStackFrame, enabledProfilerReference) / sizeof (void*));
+ Jump noProfiler = branchTestPtr(Zero, Address(regT1));
+
+ JITStubCall stubCall(this, JITStubs::cti_op_profile_will_call);
+ stubCall.addArgument(currentInstruction[1].u.operand, regT1);
+ stubCall.call();
+ noProfiler.link(this);
+
+}
+
+void JIT::emit_op_profile_did_call(Instruction* currentInstruction)
+{
+ peek(regT1, FIELD_OFFSET(JITStackFrame, enabledProfilerReference) / sizeof (void*));
+ Jump noProfiler = branchTestPtr(Zero, Address(regT1));
+
+ JITStubCall stubCall(this, JITStubs::cti_op_profile_did_call);
+ stubCall.addArgument(currentInstruction[1].u.operand, regT1);
+ stubCall.call();
+ noProfiler.link(this);
+}
+
+
+// Slow cases
+
+void JIT::emitSlow_op_convert_this(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_convert_this);
+ stubCall.addArgument(regT0);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_construct_verify(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ emitGetVirtualRegister(currentInstruction[2].u.operand, regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_to_primitive(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+
+ JITStubCall stubCall(this, JITStubs::cti_op_to_primitive);
+ stubCall.addArgument(regT0);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_get_by_val(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ // The slow void JIT::emitSlow_that handles accesses to arrays (below) may jump back up to here.
+ Label beginGetByValSlow(this);
+
+ Jump notImm = getSlowCase(iter);
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ emitFastArithIntToImmNoCheck(regT1, regT1);
+
+ notImm.link(this);
+ JITStubCall stubCall(this, JITStubs::cti_op_get_by_val);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call(currentInstruction[1].u.operand);
+ emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_get_by_val));
+
+ // This is slow void JIT::emitSlow_that handles accesses to arrays above the fast cut-off.
+ // First, check if this is an access to the vector
+ linkSlowCase(iter);
+ branch32(AboveOrEqual, regT1, Address(regT2, FIELD_OFFSET(ArrayStorage, m_vectorLength)), beginGetByValSlow);
+
+ // okay, missed the fast region, but it is still in the vector. Get the value.
+ loadPtr(BaseIndex(regT2, regT1, ScalePtr, FIELD_OFFSET(ArrayStorage, m_vector[0])), regT2);
+ // Check whether the value loaded is zero; if so we need to return undefined.
+ branchTestPtr(Zero, regT2, beginGetByValSlow);
+ move(regT2, regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand, regT0);
+}
+
+void JIT::emitSlow_op_loop_if_less(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ unsigned op1 = currentInstruction[1].u.operand;
+ unsigned op2 = currentInstruction[2].u.operand;
+ unsigned target = currentInstruction[3].u.operand;
+ if (isOperandConstantImmediateInt(op2)) {
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_loop_if_less);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(op2, regT2);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(NonZero, regT0), target + 3);
+ } else if (isOperandConstantImmediateInt(op1)) {
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_loop_if_less);
+ stubCall.addArgument(op1, regT2);
+ stubCall.addArgument(regT0);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(NonZero, regT0), target + 3);
+ } else {
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_loop_if_less);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(NonZero, regT0), target + 3);
+ }
+}
+
+void JIT::emitSlow_op_loop_if_lesseq(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ unsigned op2 = currentInstruction[2].u.operand;
+ unsigned target = currentInstruction[3].u.operand;
+ if (isOperandConstantImmediateInt(op2)) {
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_loop_if_lesseq);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(currentInstruction[2].u.operand, regT2);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(NonZero, regT0), target + 3);
+ } else {
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_loop_if_lesseq);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(NonZero, regT0), target + 3);
+ }
+}
+
+void JIT::emitSlow_op_put_by_val(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ // Normal slow cases - either is not an immediate imm, or is an array.
+ Jump notImm = getSlowCase(iter);
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ emitFastArithIntToImmNoCheck(regT1, regT1);
+
+ notImm.link(this); {
+ JITStubCall stubCall(this, JITStubs::cti_op_put_by_val);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.addArgument(currentInstruction[3].u.operand, regT2);
+ stubCall.call();
+ emitJumpSlowToHot(jump(), OPCODE_LENGTH(op_put_by_val));
+ }
+
+ // slow cases for immediate int accesses to arrays
+ linkSlowCase(iter);
+ linkSlowCase(iter); {
+ JITStubCall stubCall(this, JITStubs::cti_op_put_by_val_array);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.addArgument(currentInstruction[3].u.operand, regT2);
+ stubCall.call();
+ }
+}
+
+void JIT::emitSlow_op_loop_if_true(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_jtrue);
+ stubCall.addArgument(regT0);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(NonZero, regT0), currentInstruction[2].u.operand + 2);
+}
+
+void JIT::emitSlow_op_not(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ xorPtr(Imm32(static_cast<int32_t>(JSImmediate::FullTagTypeBool)), regT0);
+ JITStubCall stubCall(this, JITStubs::cti_op_not);
+ stubCall.addArgument(regT0);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_jfalse(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_jtrue);
+ stubCall.addArgument(regT0);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(Zero, regT0), currentInstruction[2].u.operand + 2); // inverted!
+}
+
+void JIT::emitSlow_op_bitnot(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_bitnot);
+ stubCall.addArgument(regT0);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_jtrue(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_jtrue);
+ stubCall.addArgument(regT0);
+ stubCall.call();
+ emitJumpSlowToHot(branchTest32(NonZero, regT0), currentInstruction[2].u.operand + 2);
+}
+
+void JIT::emitSlow_op_bitxor(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_bitxor);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_bitor(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_bitor);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_eq(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_eq);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_neq(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_neq);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_stricteq(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_stricteq);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_nstricteq(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_nstricteq);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(regT1);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_instanceof(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ linkSlowCase(iter);
+ JITStubCall stubCall(this, JITStubs::cti_op_instanceof);
+ stubCall.addArgument(currentInstruction[2].u.operand, regT2);
+ stubCall.addArgument(currentInstruction[3].u.operand, regT2);
+ stubCall.addArgument(currentInstruction[4].u.operand, regT2);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+void JIT::emitSlow_op_call(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ compileOpCallSlowCase(currentInstruction, iter, m_callLinkInfoIndex++, op_call);
+}
+
+void JIT::emitSlow_op_call_eval(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ compileOpCallSlowCase(currentInstruction, iter, m_callLinkInfoIndex++, op_call_eval);
+}
+
+void JIT::emitSlow_op_call_varargs(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ compileOpCallVarargsSlowCase(currentInstruction, iter);
+}
+
+void JIT::emitSlow_op_construct(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ compileOpCallSlowCase(currentInstruction, iter, m_callLinkInfoIndex++, op_construct);
+}
+
+void JIT::emitSlow_op_to_jsnumber(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ linkSlowCaseIfNotJSCell(iter, currentInstruction[2].u.operand);
+ linkSlowCase(iter);
+
+ JITStubCall stubCall(this, JITStubs::cti_op_to_jsnumber);
+ stubCall.addArgument(regT0);
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+
+} // namespace JSC
+
+#endif // ENABLE(JIT)
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITPropertyAccess.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/JITPropertyAccess.cpp
index 6740bec..29b9cab 100644
--- a/src/3rdparty/webkit/JavaScriptCore/jit/JITPropertyAccess.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITPropertyAccess.cpp
@@ -30,6 +30,7 @@
#include "CodeBlock.h"
#include "JITInlineMethods.h"
+#include "JITStubCall.h"
#include "JSArray.h"
#include "JSFunction.h"
#include "Interpreter.h"
@@ -44,81 +45,274 @@ using namespace std;
namespace JSC {
-#if !ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
+void JIT::emit_op_get_by_val(Instruction* currentInstruction)
+{
+ emitGetVirtualRegisters(currentInstruction[2].u.operand, regT0, currentInstruction[3].u.operand, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT1);
+#if USE(ALTERNATE_JSIMMEDIATE)
+ // This is technically incorrect - we're zero-extending an int32. On the hot path this doesn't matter.
+ // We check the value as if it was a uint32 against the m_fastAccessCutoff - which will always fail if
+ // number was signed since m_fastAccessCutoff is always less than intmax (since the total allocation
+ // size is always less than 4Gb). As such zero extending wil have been correct (and extending the value
+ // to 64-bits is necessary since it's used in the address calculation. We zero extend rather than sign
+ // extending since it makes it easier to re-tag the value in the slow case.
+ zeroExtend32ToPtr(regT1, regT1);
+#else
+ emitFastArithImmToInt(regT1);
+#endif
+ emitJumpSlowCaseIfNotJSCell(regT0);
+ addSlowCase(branchPtr(NotEqual, Address(regT0), ImmPtr(m_globalData->jsArrayVPtr)));
+
+ // This is an array; get the m_storage pointer into ecx, then check if the index is below the fast cutoff
+ loadPtr(Address(regT0, FIELD_OFFSET(JSArray, m_storage)), regT2);
+ addSlowCase(branch32(AboveOrEqual, regT1, Address(regT0, FIELD_OFFSET(JSArray, m_fastAccessCutoff))));
-void JIT::compileGetByIdHotPath(int resultVReg, int baseVReg, Identifier* ident, unsigned)
+ // Get the value from the vector
+ loadPtr(BaseIndex(regT2, regT1, ScalePtr, FIELD_OFFSET(ArrayStorage, m_vector[0])), regT0);
+ emitPutVirtualRegister(currentInstruction[1].u.operand);
+}
+
+void JIT::emit_op_put_by_val(Instruction* currentInstruction)
{
- // As for put_by_id, get_by_id requires the offset of the Structure and the offset of the access to be patched.
- // Additionally, for get_by_id we need patch the offset of the branch to the slow case (we patch this to jump
- // to array-length / prototype access tranpolines, and finally we also the the property-map access offset as a label
- // to jump back to if one of these trampolies finds a match.
+ emitGetVirtualRegisters(currentInstruction[1].u.operand, regT0, currentInstruction[2].u.operand, regT1);
+ emitJumpSlowCaseIfNotImmediateInteger(regT1);
+#if USE(ALTERNATE_JSIMMEDIATE)
+ // See comment in op_get_by_val.
+ zeroExtend32ToPtr(regT1, regT1);
+#else
+ emitFastArithImmToInt(regT1);
+#endif
+ emitJumpSlowCaseIfNotJSCell(regT0);
+ addSlowCase(branchPtr(NotEqual, Address(regT0), ImmPtr(m_globalData->jsArrayVPtr)));
+
+ // This is an array; get the m_storage pointer into ecx, then check if the index is below the fast cutoff
+ loadPtr(Address(regT0, FIELD_OFFSET(JSArray, m_storage)), regT2);
+ Jump inFastVector = branch32(Below, regT1, Address(regT0, FIELD_OFFSET(JSArray, m_fastAccessCutoff)));
+ // No; oh well, check if the access if within the vector - if so, we may still be okay.
+ addSlowCase(branch32(AboveOrEqual, regT1, Address(regT2, FIELD_OFFSET(ArrayStorage, m_vectorLength))));
+
+ // This is a write to the slow part of the vector; first, we have to check if this would be the first write to this location.
+ // FIXME: should be able to handle initial write to array; increment the the number of items in the array, and potentially update fast access cutoff.
+ addSlowCase(branchTestPtr(Zero, BaseIndex(regT2, regT1, ScalePtr, FIELD_OFFSET(ArrayStorage, m_vector[0]))));
+
+ // All good - put the value into the array.
+ inFastVector.link(this);
+ emitGetVirtualRegister(currentInstruction[3].u.operand, regT0);
+ storePtr(regT0, BaseIndex(regT2, regT1, ScalePtr, FIELD_OFFSET(ArrayStorage, m_vector[0])));
+}
- emitGetVirtualRegister(baseVReg, X86::eax);
+void JIT::emit_op_put_by_index(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_put_by_index);
+ stubCall.addArgument(currentInstruction[1].u.operand, regT2);
+ stubCall.addArgument(Imm32(currentInstruction[2].u.operand));
+ stubCall.addArgument(currentInstruction[3].u.operand, regT2);
+ stubCall.call();
+}
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArgConstant(ident, 2);
- emitCTICall(Interpreter::cti_op_get_by_id_generic);
- emitPutVirtualRegister(resultVReg);
+void JIT::emit_op_put_getter(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_put_getter);
+ stubCall.addArgument(currentInstruction[1].u.operand, regT2);
+ stubCall.addArgument(ImmPtr(&m_codeBlock->identifier(currentInstruction[2].u.operand)));
+ stubCall.addArgument(currentInstruction[3].u.operand, regT2);
+ stubCall.call();
}
+void JIT::emit_op_put_setter(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_put_setter);
+ stubCall.addArgument(currentInstruction[1].u.operand, regT2);
+ stubCall.addArgument(ImmPtr(&m_codeBlock->identifier(currentInstruction[2].u.operand)));
+ stubCall.addArgument(currentInstruction[3].u.operand, regT2);
+ stubCall.call();
+}
-void JIT::compileGetByIdSlowCase(int, int, Identifier*, Vector<SlowCaseEntry>::iterator&, unsigned)
+void JIT::emit_op_del_by_id(Instruction* currentInstruction)
+{
+ JITStubCall stubCall(this, JITStubs::cti_op_del_by_id);
+ stubCall.addArgument(currentInstruction[2].u.operand, regT2);
+ stubCall.addArgument(ImmPtr(&m_codeBlock->identifier(currentInstruction[3].u.operand)));
+ stubCall.call(currentInstruction[1].u.operand);
+}
+
+
+#if !ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
+
+/* ------------------------------ BEGIN: !ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS) ------------------------------ */
+
+// Treat these as nops - the call will be handed as a regular get_by_id/op_call pair.
+void JIT::emit_op_method_check(Instruction*) {}
+void JIT::emitSlow_op_method_check(Instruction*, Vector<SlowCaseEntry>::iterator&) { ASSERT_NOT_REACHED(); }
+#if ENABLE(JIT_OPTIMIZE_METHOD_CALLS)
+#error "JIT_OPTIMIZE_METHOD_CALLS requires JIT_OPTIMIZE_PROPERTY_ACCESS"
+#endif
+
+void JIT::emit_op_get_by_id(Instruction* currentInstruction)
+{
+ unsigned resultVReg = currentInstruction[1].u.operand;
+ unsigned baseVReg = currentInstruction[2].u.operand;
+ Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
+
+ emitGetVirtualRegister(baseVReg, regT0);
+ JITStubCall stubCall(this, JITStubs::cti_op_get_by_id_generic);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(ImmPtr(ident));
+ stubCall.call(resultVReg);
+
+ m_propertyAccessInstructionIndex++;
+}
+
+void JIT::emitSlow_op_get_by_id(Instruction*, Vector<SlowCaseEntry>::iterator&)
{
ASSERT_NOT_REACHED();
}
-void JIT::compilePutByIdHotPath(int baseVReg, Identifier* ident, int valueVReg, unsigned)
+void JIT::emit_op_put_by_id(Instruction* currentInstruction)
{
- // In order to be able to patch both the Structure, and the object offset, we store one pointer,
- // to just after the arguments have been loaded into registers 'hotPathBegin', and we generate code
- // such that the Structure & offset are always at the same distance from this.
+ unsigned baseVReg = currentInstruction[1].u.operand;
+ Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
+ unsigned valueVReg = currentInstruction[3].u.operand;
+
+ emitGetVirtualRegisters(baseVReg, regT0, valueVReg, regT1);
- emitGetVirtualRegisters(baseVReg, X86::eax, valueVReg, X86::edx);
+ JITStubCall stubCall(this, JITStubs::cti_op_put_by_id_generic);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(ImmPtr(ident));
+ stubCall.addArgument(regT1);
+ stubCall.call();
- emitPutJITStubArgConstant(ident, 2);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 3);
- emitCTICall(Interpreter::cti_op_put_by_id_generic);
+ m_propertyAccessInstructionIndex++;
}
-void JIT::compilePutByIdSlowCase(int, Identifier*, int, Vector<SlowCaseEntry>::iterator&, unsigned)
+void JIT::emitSlow_op_put_by_id(Instruction*, Vector<SlowCaseEntry>::iterator&)
{
ASSERT_NOT_REACHED();
}
-#else
+#else // !ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
+
+/* ------------------------------ BEGIN: ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS) ------------------------------ */
+
+#if ENABLE(JIT_OPTIMIZE_METHOD_CALLS)
-void JIT::compileGetByIdHotPath(int resultVReg, int baseVReg, Identifier*, unsigned propertyAccessInstructionIndex)
+void JIT::emit_op_method_check(Instruction* currentInstruction)
+{
+ // Assert that the following instruction is a get_by_id.
+ ASSERT(m_interpreter->getOpcodeID((currentInstruction + OPCODE_LENGTH(op_method_check))->u.opcode) == op_get_by_id);
+
+ currentInstruction += OPCODE_LENGTH(op_method_check);
+ unsigned resultVReg = currentInstruction[1].u.operand;
+ unsigned baseVReg = currentInstruction[2].u.operand;
+ Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
+
+ emitGetVirtualRegister(baseVReg, regT0);
+
+ // Do the method check - check the object & its prototype's structure inline (this is the common case).
+ m_methodCallCompilationInfo.append(MethodCallCompilationInfo(m_propertyAccessInstructionIndex));
+ MethodCallCompilationInfo& info = m_methodCallCompilationInfo.last();
+ Jump notCell = emitJumpIfNotJSCell(regT0);
+ Jump structureCheck = branchPtrWithPatch(NotEqual, Address(regT0, FIELD_OFFSET(JSCell, m_structure)), info.structureToCompare, ImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure)));
+ DataLabelPtr protoStructureToCompare, protoObj = moveWithPatch(ImmPtr(0), regT1);
+ Jump protoStructureCheck = branchPtrWithPatch(NotEqual, Address(regT1, FIELD_OFFSET(JSCell, m_structure)), protoStructureToCompare, ImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure)));
+
+ // This will be relinked to load the function without doing a load.
+ DataLabelPtr putFunction = moveWithPatch(ImmPtr(0), regT0);
+ Jump match = jump();
+
+ ASSERT(differenceBetween(info.structureToCompare, protoObj) == patchOffsetMethodCheckProtoObj);
+ ASSERT(differenceBetween(info.structureToCompare, protoStructureToCompare) == patchOffsetMethodCheckProtoStruct);
+ ASSERT(differenceBetween(info.structureToCompare, putFunction) == patchOffsetMethodCheckPutFunction);
+
+ // Link the failure cases here.
+ notCell.link(this);
+ structureCheck.link(this);
+ protoStructureCheck.link(this);
+
+ // Do a regular(ish) get_by_id (the slow case will be link to
+ // cti_op_get_by_id_method_check instead of cti_op_get_by_id.
+ compileGetByIdHotPath(resultVReg, baseVReg, ident, m_propertyAccessInstructionIndex++);
+
+ match.link(this);
+ emitPutVirtualRegister(resultVReg);
+
+ // We've already generated the following get_by_id, so make sure it's skipped over.
+ m_bytecodeIndex += OPCODE_LENGTH(op_get_by_id);
+}
+
+void JIT::emitSlow_op_method_check(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ currentInstruction += OPCODE_LENGTH(op_method_check);
+ unsigned resultVReg = currentInstruction[1].u.operand;
+ unsigned baseVReg = currentInstruction[2].u.operand;
+ Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
+
+ compileGetByIdSlowCase(resultVReg, baseVReg, ident, iter, m_propertyAccessInstructionIndex++, true);
+
+ // We've already generated the following get_by_id, so make sure it's skipped over.
+ m_bytecodeIndex += OPCODE_LENGTH(op_get_by_id);
+}
+
+#else //!ENABLE(JIT_OPTIMIZE_METHOD_CALLS)
+
+// Treat these as nops - the call will be handed as a regular get_by_id/op_call pair.
+void JIT::emit_op_method_check(Instruction*) {}
+void JIT::emitSlow_op_method_check(Instruction*, Vector<SlowCaseEntry>::iterator&) { ASSERT_NOT_REACHED(); }
+
+#endif
+
+void JIT::emit_op_get_by_id(Instruction* currentInstruction)
+{
+ unsigned resultVReg = currentInstruction[1].u.operand;
+ unsigned baseVReg = currentInstruction[2].u.operand;
+ Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
+
+ emitGetVirtualRegister(baseVReg, regT0);
+ compileGetByIdHotPath(resultVReg, baseVReg, ident, m_propertyAccessInstructionIndex++);
+ emitPutVirtualRegister(resultVReg);
+}
+
+void JIT::compileGetByIdHotPath(int, int baseVReg, Identifier*, unsigned propertyAccessInstructionIndex)
{
// As for put_by_id, get_by_id requires the offset of the Structure and the offset of the access to be patched.
// Additionally, for get_by_id we need patch the offset of the branch to the slow case (we patch this to jump
// to array-length / prototype access tranpolines, and finally we also the the property-map access offset as a label
// to jump back to if one of these trampolies finds a match.
- emitGetVirtualRegister(baseVReg, X86::eax);
-
- emitJumpSlowCaseIfNotJSCell(X86::eax, baseVReg);
+ emitJumpSlowCaseIfNotJSCell(regT0, baseVReg);
Label hotPathBegin(this);
m_propertyAccessCompilationInfo[propertyAccessInstructionIndex].hotPathBegin = hotPathBegin;
DataLabelPtr structureToCompare;
- Jump structureCheck = jnePtrWithPatch(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), structureToCompare, ImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure)));
+ Jump structureCheck = branchPtrWithPatch(NotEqual, Address(regT0, FIELD_OFFSET(JSCell, m_structure)), structureToCompare, ImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure)));
addSlowCase(structureCheck);
ASSERT(differenceBetween(hotPathBegin, structureToCompare) == patchOffsetGetByIdStructure);
ASSERT(differenceBetween(hotPathBegin, structureCheck) == patchOffsetGetByIdBranchToSlowCase);
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSObject, m_propertyStorage)), X86::eax);
- DataLabel32 displacementLabel = loadPtrWithAddressOffsetPatch(Address(X86::eax, patchGetByIdDefaultOffset), X86::eax);
+ Label externalLoad(this);
+ loadPtr(Address(regT0, FIELD_OFFSET(JSObject, m_externalStorage)), regT0);
+ Label externalLoadComplete(this);
+ ASSERT(differenceBetween(hotPathBegin, externalLoad) == patchOffsetGetByIdExternalLoad);
+ ASSERT(differenceBetween(externalLoad, externalLoadComplete) == patchLengthGetByIdExternalLoad);
+
+ DataLabel32 displacementLabel = loadPtrWithAddressOffsetPatch(Address(regT0, patchGetByIdDefaultOffset), regT0);
ASSERT(differenceBetween(hotPathBegin, displacementLabel) == patchOffsetGetByIdPropertyMapOffset);
Label putResult(this);
ASSERT(differenceBetween(hotPathBegin, putResult) == patchOffsetGetByIdPutResult);
- emitPutVirtualRegister(resultVReg);
}
+void JIT::emitSlow_op_get_by_id(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
+{
+ unsigned resultVReg = currentInstruction[1].u.operand;
+ unsigned baseVReg = currentInstruction[2].u.operand;
+ Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
-void JIT::compileGetByIdSlowCase(int resultVReg, int baseVReg, Identifier* ident, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionIndex)
+ compileGetByIdSlowCase(resultVReg, baseVReg, ident, iter, m_propertyAccessInstructionIndex++, false);
+}
+
+void JIT::compileGetByIdSlowCase(int resultVReg, int baseVReg, Identifier* ident, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionIndex, bool isMethodCheck)
{
// As for the hot path of get_by_id, above, we ensure that we can use an architecture specific offset
// so that we only need track one pointer into the slow case code - we track a pointer to the location
@@ -132,10 +326,10 @@ void JIT::compileGetByIdSlowCase(int resultVReg, int baseVReg, Identifier* ident
#ifndef NDEBUG
Label coldPathBegin(this);
#endif
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArgConstant(ident, 2);
- Jump call = emitCTICall(Interpreter::cti_op_get_by_id);
- emitPutVirtualRegister(resultVReg);
+ JITStubCall stubCall(this, isMethodCheck ? JITStubs::cti_op_get_by_id_method_check : JITStubs::cti_op_get_by_id);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(ImmPtr(ident));
+ Call call = stubCall.call(resultVReg);
ASSERT(differenceBetween(coldPathBegin, call) == patchOffsetGetByIdSlowCaseCall);
@@ -143,338 +337,329 @@ void JIT::compileGetByIdSlowCase(int resultVReg, int baseVReg, Identifier* ident
m_propertyAccessCompilationInfo[propertyAccessInstructionIndex].callReturnLocation = call;
}
-void JIT::compilePutByIdHotPath(int baseVReg, Identifier*, int valueVReg, unsigned propertyAccessInstructionIndex)
+void JIT::emit_op_put_by_id(Instruction* currentInstruction)
{
+ unsigned baseVReg = currentInstruction[1].u.operand;
+ unsigned valueVReg = currentInstruction[3].u.operand;
+
+ unsigned propertyAccessInstructionIndex = m_propertyAccessInstructionIndex++;
+
// In order to be able to patch both the Structure, and the object offset, we store one pointer,
// to just after the arguments have been loaded into registers 'hotPathBegin', and we generate code
// such that the Structure & offset are always at the same distance from this.
- emitGetVirtualRegisters(baseVReg, X86::eax, valueVReg, X86::edx);
+ emitGetVirtualRegisters(baseVReg, regT0, valueVReg, regT1);
// Jump to a slow case if either the base object is an immediate, or if the Structure does not match.
- emitJumpSlowCaseIfNotJSCell(X86::eax, baseVReg);
+ emitJumpSlowCaseIfNotJSCell(regT0, baseVReg);
Label hotPathBegin(this);
m_propertyAccessCompilationInfo[propertyAccessInstructionIndex].hotPathBegin = hotPathBegin;
// It is important that the following instruction plants a 32bit immediate, in order that it can be patched over.
DataLabelPtr structureToCompare;
- addSlowCase(jnePtrWithPatch(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), structureToCompare, ImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure))));
+ addSlowCase(branchPtrWithPatch(NotEqual, Address(regT0, FIELD_OFFSET(JSCell, m_structure)), structureToCompare, ImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure))));
ASSERT(differenceBetween(hotPathBegin, structureToCompare) == patchOffsetPutByIdStructure);
// Plant a load from a bogus ofset in the object's property map; we will patch this later, if it is to be used.
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSObject, m_propertyStorage)), X86::eax);
- DataLabel32 displacementLabel = storePtrWithAddressOffsetPatch(X86::edx, Address(X86::eax, patchGetByIdDefaultOffset));
+ Label externalLoad(this);
+ loadPtr(Address(regT0, FIELD_OFFSET(JSObject, m_externalStorage)), regT0);
+ Label externalLoadComplete(this);
+ ASSERT(differenceBetween(hotPathBegin, externalLoad) == patchOffsetPutByIdExternalLoad);
+ ASSERT(differenceBetween(externalLoad, externalLoadComplete) == patchLengthPutByIdExternalLoad);
+
+ DataLabel32 displacementLabel = storePtrWithAddressOffsetPatch(regT1, Address(regT0, patchGetByIdDefaultOffset));
ASSERT(differenceBetween(hotPathBegin, displacementLabel) == patchOffsetPutByIdPropertyMapOffset);
}
-void JIT::compilePutByIdSlowCase(int baseVReg, Identifier* ident, int, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionIndex)
+void JIT::emitSlow_op_put_by_id(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
{
+ unsigned baseVReg = currentInstruction[1].u.operand;
+ Identifier* ident = &(m_codeBlock->identifier(currentInstruction[2].u.operand));
+
+ unsigned propertyAccessInstructionIndex = m_propertyAccessInstructionIndex++;
+
linkSlowCaseIfNotJSCell(iter, baseVReg);
linkSlowCase(iter);
- emitPutJITStubArgConstant(ident, 2);
- emitPutJITStubArg(X86::eax, 1);
- emitPutJITStubArg(X86::edx, 3);
- Jump call = emitCTICall(Interpreter::cti_op_put_by_id);
+ JITStubCall stubCall(this, JITStubs::cti_op_put_by_id);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(ImmPtr(ident));
+ stubCall.addArgument(regT1);
+ Call call = stubCall.call();
// Track the location of the call; this will be used to recover patch information.
m_propertyAccessCompilationInfo[propertyAccessInstructionIndex].callReturnLocation = call;
}
-static JSObject* resizePropertyStorage(JSObject* baseObject, int32_t oldSize, int32_t newSize)
+// Compile a store into an object's property storage. May overwrite the
+// value in objectReg.
+void JIT::compilePutDirectOffset(RegisterID base, RegisterID value, Structure* structure, size_t cachedOffset)
{
- baseObject->allocatePropertyStorage(oldSize, newSize);
- return baseObject;
+ int offset = cachedOffset * sizeof(JSValue);
+ if (structure->isUsingInlineStorage())
+ offset += FIELD_OFFSET(JSObject, m_inlineStorage);
+ else
+ loadPtr(Address(base, FIELD_OFFSET(JSObject, m_externalStorage)), base);
+ storePtr(value, Address(base, offset));
}
-static inline bool transitionWillNeedStorageRealloc(Structure* oldStructure, Structure* newStructure)
+// Compile a load from an object's property storage. May overwrite base.
+void JIT::compileGetDirectOffset(RegisterID base, RegisterID result, Structure* structure, size_t cachedOffset)
{
- return oldStructure->propertyStorageCapacity() != newStructure->propertyStorageCapacity();
+ int offset = cachedOffset * sizeof(JSValue);
+ if (structure->isUsingInlineStorage())
+ offset += FIELD_OFFSET(JSObject, m_inlineStorage);
+ else
+ loadPtr(Address(base, FIELD_OFFSET(JSObject, m_externalStorage)), base);
+ loadPtr(Address(base, offset), result);
}
-void JIT::privateCompilePutByIdTransition(StructureStubInfo* stubInfo, Structure* oldStructure, Structure* newStructure, size_t cachedOffset, StructureChain* chain, void* returnAddress)
+void JIT::compileGetDirectOffset(JSObject* base, RegisterID result, size_t cachedOffset)
+{
+ if (base->isUsingInlineStorage())
+ loadPtr(static_cast<void*>(&base->m_inlineStorage[cachedOffset]), result);
+ else
+ loadPtr(static_cast<void*>(&base->m_externalStorage[cachedOffset]), result);
+}
+
+void JIT::privateCompilePutByIdTransition(StructureStubInfo* stubInfo, Structure* oldStructure, Structure* newStructure, size_t cachedOffset, StructureChain* chain, ProcessorReturnAddress returnAddress)
{
JumpList failureCases;
// Check eax is an object of the right Structure.
- failureCases.append(emitJumpIfNotJSCell(X86::eax));
- failureCases.append(jnePtr(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), ImmPtr(oldStructure)));
+ failureCases.append(emitJumpIfNotJSCell(regT0));
+ failureCases.append(branchPtr(NotEqual, Address(regT0, FIELD_OFFSET(JSCell, m_structure)), ImmPtr(oldStructure)));
JumpList successCases;
- // ecx = baseObject
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)), X86::ecx);
+ // ecx = baseObject
+ loadPtr(Address(regT0, FIELD_OFFSET(JSCell, m_structure)), regT2);
// proto(ecx) = baseObject->structure()->prototype()
- failureCases.append(jne32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo) + FIELD_OFFSET(TypeInfo, m_type)), Imm32(ObjectType)));
+ failureCases.append(branch32(NotEqual, Address(regT2, FIELD_OFFSET(Structure, m_typeInfo) + FIELD_OFFSET(TypeInfo, m_type)), Imm32(ObjectType)));
- loadPtr(Address(X86::ecx, FIELD_OFFSET(Structure, m_prototype)), X86::ecx);
+ loadPtr(Address(regT2, FIELD_OFFSET(Structure, m_prototype)), regT2);
// ecx = baseObject->m_structure
for (RefPtr<Structure>* it = chain->head(); *it; ++it) {
// null check the prototype
- successCases.append(jePtr(X86::ecx, ImmPtr(JSValuePtr::encode(jsNull()))));
+ successCases.append(branchPtr(Equal, regT2, ImmPtr(JSValue::encode(jsNull()))));
// Check the structure id
- failureCases.append(jnePtr(Address(X86::ecx, FIELD_OFFSET(JSCell, m_structure)), ImmPtr(it->get())));
+ failureCases.append(branchPtr(NotEqual, Address(regT2, FIELD_OFFSET(JSCell, m_structure)), ImmPtr(it->get())));
- loadPtr(Address(X86::ecx, FIELD_OFFSET(JSCell, m_structure)), X86::ecx);
- failureCases.append(jne32(Address(X86::ecx, FIELD_OFFSET(Structure, m_typeInfo) + FIELD_OFFSET(TypeInfo, m_type)), Imm32(ObjectType)));
- loadPtr(Address(X86::ecx, FIELD_OFFSET(Structure, m_prototype)), X86::ecx);
+ loadPtr(Address(regT2, FIELD_OFFSET(JSCell, m_structure)), regT2);
+ failureCases.append(branch32(NotEqual, Address(regT2, FIELD_OFFSET(Structure, m_typeInfo) + FIELD_OFFSET(TypeInfo, m_type)), Imm32(ObjectType)));
+ loadPtr(Address(regT2, FIELD_OFFSET(Structure, m_prototype)), regT2);
}
successCases.link(this);
- Jump callTarget;
+ Call callTarget;
// emit a call only if storage realloc is needed
- if (transitionWillNeedStorageRealloc(oldStructure, newStructure)) {
- pop(X86::ebx);
-#if PLATFORM(X86_64)
- move(Imm32(newStructure->propertyStorageCapacity()), X86::edx);
- move(Imm32(oldStructure->propertyStorageCapacity()), X86::esi);
- move(X86::eax, X86::edi);
- callTarget = call();
-#else
- push(Imm32(newStructure->propertyStorageCapacity()));
- push(Imm32(oldStructure->propertyStorageCapacity()));
- push(X86::eax);
- callTarget = call();
- addPtr(Imm32(3 * sizeof(void*)), X86::esp);
-#endif
- emitGetJITStubArg(3, X86::edx);
- push(X86::ebx);
+ bool willNeedStorageRealloc = oldStructure->propertyStorageCapacity() != newStructure->propertyStorageCapacity();
+ if (willNeedStorageRealloc) {
+ // This trampoline was called to like a JIT stub; before we can can call again we need to
+ // remove the return address from the stack, to prevent the stack from becoming misaligned.
+ preverveReturnAddressAfterCall(regT3);
+
+ JITStubCall stubCall(this, JITStubs::cti_op_put_by_id_transition_realloc);
+ stubCall.addArgument(regT0);
+ stubCall.addArgument(Imm32(oldStructure->propertyStorageCapacity()));
+ stubCall.addArgument(Imm32(newStructure->propertyStorageCapacity()));
+ stubCall.addArgument(regT1); // This argument is not used in the stub; we set it up on the stack so that it can be restored, below.
+ stubCall.call(regT0);
+ emitGetJITStubArg(4, regT1);
+
+ restoreReturnAddressBeforeReturn(regT3);
}
// Assumes m_refCount can be decremented easily, refcount decrement is safe as
// codeblock should ensure oldStructure->m_refCount > 0
sub32(Imm32(1), AbsoluteAddress(oldStructure->addressOfCount()));
add32(Imm32(1), AbsoluteAddress(newStructure->addressOfCount()));
- storePtr(ImmPtr(newStructure), Address(X86::eax, FIELD_OFFSET(JSCell, m_structure)));
+ storePtr(ImmPtr(newStructure), Address(regT0, FIELD_OFFSET(JSCell, m_structure)));
// write the value
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSObject, m_propertyStorage)), X86::eax);
- storePtr(X86::edx, Address(X86::eax, cachedOffset * sizeof(JSValuePtr)));
+ compilePutDirectOffset(regT0, regT1, newStructure, cachedOffset);
ret();
- Jump failureJump;
- bool plantedFailureJump = false;
- if (!failureCases.empty()) {
- failureCases.link(this);
- restoreArgumentReferenceForTrampoline();
- failureJump = jump();
- plantedFailureJump = true;
- }
+ ASSERT(!failureCases.empty());
+ failureCases.link(this);
+ restoreArgumentReferenceForTrampoline();
+ Call failureCall = tailRecursiveCall();
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
- PatchBuffer patchBuffer(code);
+ PatchBuffer patchBuffer(this, m_codeBlock->executablePool());
- if (plantedFailureJump)
- patchBuffer.link(failureJump, reinterpret_cast<void*>(Interpreter::cti_op_put_by_id_fail));
+ patchBuffer.link(failureCall, FunctionPtr(JITStubs::cti_op_put_by_id_fail));
- if (transitionWillNeedStorageRealloc(oldStructure, newStructure))
- patchBuffer.link(callTarget, reinterpret_cast<void*>(resizePropertyStorage));
-
- stubInfo->stubRoutine = code;
+ if (willNeedStorageRealloc) {
+ ASSERT(m_calls.size() == 1);
+ patchBuffer.link(m_calls[0].from, FunctionPtr(JITStubs::cti_op_put_by_id_transition_realloc));
+ }
- Jump::patch(returnAddress, code);
+ CodeLocationLabel entryLabel = patchBuffer.finalizeCodeAddendum();
+ stubInfo->stubRoutine = entryLabel;
+ returnAddress.relinkCallerToTrampoline(entryLabel);
}
-void JIT::patchGetByIdSelf(StructureStubInfo* stubInfo, Structure* structure, size_t cachedOffset, void* returnAddress)
+void JIT::patchGetByIdSelf(StructureStubInfo* stubInfo, Structure* structure, size_t cachedOffset, ProcessorReturnAddress returnAddress)
{
// We don't want to patch more than once - in future go to cti_op_get_by_id_generic.
- // Should probably go to Interpreter::cti_op_get_by_id_fail, but that doesn't do anything interesting right now.
- Jump::patch(returnAddress, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_self_fail));
+ // Should probably go to JITStubs::cti_op_get_by_id_fail, but that doesn't do anything interesting right now.
+ returnAddress.relinkCallerToFunction(FunctionPtr(JITStubs::cti_op_get_by_id_self_fail));
+
+ int offset = sizeof(JSValue) * cachedOffset;
+
+ // If we're patching to use inline storage, convert the initial load to a lea; this avoids the extra load
+ // and makes the subsequent load's offset automatically correct
+ if (structure->isUsingInlineStorage())
+ stubInfo->hotPathBegin.instructionAtOffset(patchOffsetGetByIdExternalLoad).repatchLoadPtrToLEA();
// Patch the offset into the propoerty map to load from, then patch the Structure to look for.
- void* structureAddress = reinterpret_cast<void*>(reinterpret_cast<intptr_t>(stubInfo->hotPathBegin) + patchOffsetGetByIdStructure);
- void* displacementAddress = reinterpret_cast<void*>(reinterpret_cast<intptr_t>(stubInfo->hotPathBegin) + patchOffsetGetByIdPropertyMapOffset);
- DataLabelPtr::patch(structureAddress, structure);
- DataLabel32::patch(displacementAddress, cachedOffset * sizeof(JSValuePtr));
+ stubInfo->hotPathBegin.dataLabelPtrAtOffset(patchOffsetGetByIdStructure).repatch(structure);
+ stubInfo->hotPathBegin.dataLabel32AtOffset(patchOffsetGetByIdPropertyMapOffset).repatch(offset);
+}
+
+void JIT::patchMethodCallProto(MethodCallLinkInfo& methodCallLinkInfo, JSFunction* callee, Structure* structure, JSObject* proto)
+{
+ ASSERT(!methodCallLinkInfo.cachedStructure);
+ methodCallLinkInfo.cachedStructure = structure;
+ structure->ref();
+
+ methodCallLinkInfo.structureLabel.repatch(structure);
+ methodCallLinkInfo.structureLabel.dataLabelPtrAtOffset(patchOffsetMethodCheckProtoObj).repatch(proto);
+ methodCallLinkInfo.structureLabel.dataLabelPtrAtOffset(patchOffsetMethodCheckProtoStruct).repatch(proto->structure());
+ methodCallLinkInfo.structureLabel.dataLabelPtrAtOffset(patchOffsetMethodCheckPutFunction).repatch(callee);
}
-void JIT::patchPutByIdReplace(StructureStubInfo* stubInfo, Structure* structure, size_t cachedOffset, void* returnAddress)
+void JIT::patchPutByIdReplace(StructureStubInfo* stubInfo, Structure* structure, size_t cachedOffset, ProcessorReturnAddress returnAddress)
{
// We don't want to patch more than once - in future go to cti_op_put_by_id_generic.
- // Should probably go to Interpreter::cti_op_put_by_id_fail, but that doesn't do anything interesting right now.
- Jump::patch(returnAddress, reinterpret_cast<void*>(Interpreter::cti_op_put_by_id_generic));
+ // Should probably go to JITStubs::cti_op_put_by_id_fail, but that doesn't do anything interesting right now.
+ returnAddress.relinkCallerToFunction(FunctionPtr(JITStubs::cti_op_put_by_id_generic));
+
+ int offset = sizeof(JSValue) * cachedOffset;
+
+ // If we're patching to use inline storage, convert the initial load to a lea; this avoids the extra load
+ // and makes the subsequent load's offset automatically correct
+ if (structure->isUsingInlineStorage())
+ stubInfo->hotPathBegin.instructionAtOffset(patchOffsetPutByIdExternalLoad).repatchLoadPtrToLEA();
// Patch the offset into the propoerty map to load from, then patch the Structure to look for.
- void* structureAddress = reinterpret_cast<char*>(stubInfo->hotPathBegin) + patchOffsetPutByIdStructure;
- void* displacementAddress = reinterpret_cast<char*>(stubInfo->hotPathBegin) + patchOffsetPutByIdPropertyMapOffset;
- DataLabelPtr::patch(structureAddress, structure);
- DataLabel32::patch(displacementAddress, cachedOffset * sizeof(JSValuePtr));
+ stubInfo->hotPathBegin.dataLabelPtrAtOffset(patchOffsetPutByIdStructure).repatch(structure);
+ stubInfo->hotPathBegin.dataLabel32AtOffset(patchOffsetPutByIdPropertyMapOffset).repatch(offset);
}
-void JIT::privateCompilePatchGetArrayLength(void* returnAddress)
+void JIT::privateCompilePatchGetArrayLength(ProcessorReturnAddress returnAddress)
{
- StructureStubInfo* stubInfo = &m_codeBlock->getStubInfo(returnAddress);
+ StructureStubInfo* stubInfo = &m_codeBlock->getStubInfo(returnAddress.addressForLookup());
// We don't want to patch more than once - in future go to cti_op_put_by_id_generic.
- Jump::patch(returnAddress, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_array_fail));
+ returnAddress.relinkCallerToFunction(FunctionPtr(JITStubs::cti_op_get_by_id_array_fail));
// Check eax is an array
- Jump failureCases1 = jnePtr(Address(X86::eax), ImmPtr(m_interpreter->m_jsArrayVptr));
+ Jump failureCases1 = branchPtr(NotEqual, Address(regT0), ImmPtr(m_globalData->jsArrayVPtr));
// Checks out okay! - get the length from the storage
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSArray, m_storage)), X86::ecx);
- load32(Address(X86::ecx, FIELD_OFFSET(ArrayStorage, m_length)), X86::ecx);
+ loadPtr(Address(regT0, FIELD_OFFSET(JSArray, m_storage)), regT2);
+ load32(Address(regT2, FIELD_OFFSET(ArrayStorage, m_length)), regT2);
- Jump failureCases2 = ja32(X86::ecx, Imm32(JSImmediate::maxImmediateInt));
+ Jump failureCases2 = branch32(Above, regT2, Imm32(JSImmediate::maxImmediateInt));
- emitFastArithIntToImmNoCheck(X86::ecx, X86::eax);
+ emitFastArithIntToImmNoCheck(regT2, regT0);
Jump success = jump();
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
- PatchBuffer patchBuffer(code);
+ PatchBuffer patchBuffer(this, m_codeBlock->executablePool());
// Use the patch information to link the failure cases back to the original slow case routine.
- void* slowCaseBegin = reinterpret_cast<char*>(stubInfo->callReturnLocation) - patchOffsetGetByIdSlowCaseCall;
+ CodeLocationLabel slowCaseBegin = stubInfo->callReturnLocation.labelAtOffset(-patchOffsetGetByIdSlowCaseCall);
patchBuffer.link(failureCases1, slowCaseBegin);
patchBuffer.link(failureCases2, slowCaseBegin);
// On success return back to the hot patch code, at a point it will perform the store to dest for us.
- void* hotPathPutResult = reinterpret_cast<char*>(stubInfo->hotPathBegin) + patchOffsetGetByIdPutResult;
- patchBuffer.link(success, hotPathPutResult);
+ patchBuffer.link(success, stubInfo->hotPathBegin.labelAtOffset(patchOffsetGetByIdPutResult));
// Track the stub we have created so that it will be deleted later.
- stubInfo->stubRoutine = code;
+ CodeLocationLabel entryLabel = patchBuffer.finalizeCodeAddendum();
+ stubInfo->stubRoutine = entryLabel;
- // Finally patch the jump to sow case back in the hot path to jump here instead.
- void* jumpLocation = reinterpret_cast<char*>(stubInfo->hotPathBegin) + patchOffsetGetByIdBranchToSlowCase;
- Jump::patch(jumpLocation, code);
-}
-
-void JIT::privateCompileGetByIdSelf(StructureStubInfo* stubInfo, Structure* structure, size_t cachedOffset, void* returnAddress)
-{
- // Check eax is an object of the right Structure.
- Jump failureCases1 = emitJumpIfNotJSCell(X86::eax);
- Jump failureCases2 = checkStructure(X86::eax, structure);
-
- // Checks out okay! - getDirectOffset
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSObject, m_propertyStorage)), X86::eax);
- loadPtr(Address(X86::eax, cachedOffset * sizeof(JSValuePtr)), X86::eax);
- ret();
-
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
- PatchBuffer patchBuffer(code);
-
- patchBuffer.link(failureCases1, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_self_fail));
- patchBuffer.link(failureCases2, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_self_fail));
-
- stubInfo->stubRoutine = code;
-
- Jump::patch(returnAddress, code);
+ // Finally patch the jump to slow case back in the hot path to jump here instead.
+ CodeLocationJump jumpLocation = stubInfo->hotPathBegin.jumpAtOffset(patchOffsetGetByIdBranchToSlowCase);
+ jumpLocation.relink(entryLabel);
}
-void JIT::privateCompileGetByIdProto(StructureStubInfo* stubInfo, Structure* structure, Structure* prototypeStructure, size_t cachedOffset, void* returnAddress, CallFrame* callFrame)
+void JIT::privateCompileGetByIdProto(StructureStubInfo* stubInfo, Structure* structure, Structure* prototypeStructure, size_t cachedOffset, ProcessorReturnAddress returnAddress, CallFrame* callFrame)
{
-#if USE(CTI_REPATCH_PIC)
// We don't want to patch more than once - in future go to cti_op_put_by_id_generic.
- Jump::patch(returnAddress, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_proto_list));
+ returnAddress.relinkCallerToFunction(FunctionPtr(JITStubs::cti_op_get_by_id_proto_list));
// The prototype object definitely exists (if this stub exists the CodeBlock is referencing a Structure that is
// referencing the prototype object - let's speculatively load it's table nice and early!)
JSObject* protoObject = asObject(structure->prototypeForLookup(callFrame));
- PropertyStorage* protoPropertyStorage = &protoObject->m_propertyStorage;
- loadPtr(static_cast<void*>(protoPropertyStorage), X86::edx);
// Check eax is an object of the right Structure.
- Jump failureCases1 = checkStructure(X86::eax, structure);
+ Jump failureCases1 = checkStructure(regT0, structure);
// Check the prototype object's Structure had not changed.
Structure** prototypeStructureAddress = &(protoObject->m_structure);
#if PLATFORM(X86_64)
- move(ImmPtr(prototypeStructure), X86::ebx);
- Jump failureCases2 = jnePtr(X86::ebx, AbsoluteAddress(prototypeStructureAddress));
+ move(ImmPtr(prototypeStructure), regT3);
+ Jump failureCases2 = branchPtr(NotEqual, AbsoluteAddress(prototypeStructureAddress), regT3);
#else
- Jump failureCases2 = jnePtr(AbsoluteAddress(prototypeStructureAddress), ImmPtr(prototypeStructure));
+ Jump failureCases2 = branchPtr(NotEqual, AbsoluteAddress(prototypeStructureAddress), ImmPtr(prototypeStructure));
#endif
// Checks out okay! - getDirectOffset
- loadPtr(Address(X86::edx, cachedOffset * sizeof(JSValuePtr)), X86::eax);
+ compileGetDirectOffset(protoObject, regT0, cachedOffset);
Jump success = jump();
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
- PatchBuffer patchBuffer(code);
+ PatchBuffer patchBuffer(this, m_codeBlock->executablePool());
// Use the patch information to link the failure cases back to the original slow case routine.
- void* slowCaseBegin = reinterpret_cast<char*>(stubInfo->callReturnLocation) - patchOffsetGetByIdSlowCaseCall;
+ CodeLocationLabel slowCaseBegin = stubInfo->callReturnLocation.labelAtOffset(-patchOffsetGetByIdSlowCaseCall);
patchBuffer.link(failureCases1, slowCaseBegin);
patchBuffer.link(failureCases2, slowCaseBegin);
// On success return back to the hot patch code, at a point it will perform the store to dest for us.
- intptr_t successDest = reinterpret_cast<intptr_t>(stubInfo->hotPathBegin) + patchOffsetGetByIdPutResult;
- patchBuffer.link(success, reinterpret_cast<void*>(successDest));
+ patchBuffer.link(success, stubInfo->hotPathBegin.labelAtOffset(patchOffsetGetByIdPutResult));
// Track the stub we have created so that it will be deleted later.
- stubInfo->stubRoutine = code;
+ CodeLocationLabel entryLabel = patchBuffer.finalizeCodeAddendum();
+ stubInfo->stubRoutine = entryLabel;
// Finally patch the jump to slow case back in the hot path to jump here instead.
- void* jumpLocation = reinterpret_cast<char*>(stubInfo->hotPathBegin) + patchOffsetGetByIdBranchToSlowCase;
- Jump::patch(jumpLocation, code);
-#else
- // The prototype object definitely exists (if this stub exists the CodeBlock is referencing a Structure that is
- // referencing the prototype object - let's speculatively load it's table nice and early!)
- JSObject* protoObject = asObject(structure->prototypeForLookup(callFrame));
- PropertyStorage* protoPropertyStorage = &protoObject->m_propertyStorage;
- loadPtr(protoPropertyStorage, X86::edx);
-
- // Check eax is an object of the right Structure.
- Jump failureCases1 = emitJumpIfNotJSCell(X86::eax);
- Jump failureCases2 = checkStructure(X86::eax, structure);
-
- // Check the prototype object's Structure had not changed.
- Structure** prototypeStructureAddress = &(protoObject->m_structure);
- Jump failureCases3 = jnePtr(AbsoluteAddress(prototypeStructureAddress), ImmPtr(prototypeStructure));
-
- // Checks out okay! - getDirectOffset
- loadPtr(Address(X86::edx, cachedOffset * sizeof(JSValuePtr)), X86::eax);
-
- ret();
-
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
- PatchBuffer patchBuffer(code);
-
- patchBuffer.link(failureCases1, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_proto_fail));
- patchBuffer.link(failureCases2, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_proto_fail));
- patchBuffer.link(failureCases3, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_proto_fail));
-
- stubInfo->stubRoutine = code;
-
- Jump::patch(returnAddress, code);
-#endif
+ CodeLocationJump jumpLocation = stubInfo->hotPathBegin.jumpAtOffset(patchOffsetGetByIdBranchToSlowCase);
+ jumpLocation.relink(entryLabel);
}
-#if USE(CTI_REPATCH_PIC)
void JIT::privateCompileGetByIdSelfList(StructureStubInfo* stubInfo, PolymorphicAccessStructureList* polymorphicStructures, int currentIndex, Structure* structure, size_t cachedOffset)
{
- Jump failureCase = checkStructure(X86::eax, structure);
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSObject, m_propertyStorage)), X86::eax);
- loadPtr(Address(X86::eax, cachedOffset * sizeof(JSValuePtr)), X86::eax);
+ Jump failureCase = checkStructure(regT0, structure);
+ compileGetDirectOffset(regT0, regT0, structure, cachedOffset);
Jump success = jump();
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
- ASSERT(code);
- PatchBuffer patchBuffer(code);
+ PatchBuffer patchBuffer(this, m_codeBlock->executablePool());
// Use the patch information to link the failure cases back to the original slow case routine.
- void* lastProtoBegin = polymorphicStructures->list[currentIndex - 1].stubRoutine;
+ CodeLocationLabel lastProtoBegin = polymorphicStructures->list[currentIndex - 1].stubRoutine;
if (!lastProtoBegin)
- lastProtoBegin = reinterpret_cast<char*>(stubInfo->callReturnLocation) - patchOffsetGetByIdSlowCaseCall;
+ lastProtoBegin = stubInfo->callReturnLocation.labelAtOffset(-patchOffsetGetByIdSlowCaseCall);
patchBuffer.link(failureCase, lastProtoBegin);
// On success return back to the hot patch code, at a point it will perform the store to dest for us.
- intptr_t successDest = reinterpret_cast<intptr_t>(stubInfo->hotPathBegin) + patchOffsetGetByIdPutResult;
- patchBuffer.link(success, reinterpret_cast<void*>(successDest));
+ patchBuffer.link(success, stubInfo->hotPathBegin.labelAtOffset(patchOffsetGetByIdPutResult));
+
+ CodeLocationLabel entryLabel = patchBuffer.finalizeCodeAddendum();
structure->ref();
- polymorphicStructures->list[currentIndex].set(code, structure);
+ polymorphicStructures->list[currentIndex].set(entryLabel, structure);
// Finally patch the jump to slow case back in the hot path to jump here instead.
- void* jumpLocation = reinterpret_cast<char*>(stubInfo->hotPathBegin) + patchOffsetGetByIdBranchToSlowCase;
- Jump::patch(jumpLocation, code);
+ CodeLocationJump jumpLocation = stubInfo->hotPathBegin.jumpAtOffset(patchOffsetGetByIdBranchToSlowCase);
+ jumpLocation.relink(entryLabel);
}
void JIT::privateCompileGetByIdProtoList(StructureStubInfo* stubInfo, PolymorphicAccessStructureList* prototypeStructures, int currentIndex, Structure* structure, Structure* prototypeStructure, size_t cachedOffset, CallFrame* callFrame)
@@ -482,45 +667,43 @@ void JIT::privateCompileGetByIdProtoList(StructureStubInfo* stubInfo, Polymorphi
// The prototype object definitely exists (if this stub exists the CodeBlock is referencing a Structure that is
// referencing the prototype object - let's speculatively load it's table nice and early!)
JSObject* protoObject = asObject(structure->prototypeForLookup(callFrame));
- PropertyStorage* protoPropertyStorage = &protoObject->m_propertyStorage;
- loadPtr(protoPropertyStorage, X86::edx);
// Check eax is an object of the right Structure.
- Jump failureCases1 = checkStructure(X86::eax, structure);
+ Jump failureCases1 = checkStructure(regT0, structure);
// Check the prototype object's Structure had not changed.
Structure** prototypeStructureAddress = &(protoObject->m_structure);
#if PLATFORM(X86_64)
- move(ImmPtr(prototypeStructure), X86::ebx);
- Jump failureCases2 = jnePtr(X86::ebx, AbsoluteAddress(prototypeStructureAddress));
+ move(ImmPtr(prototypeStructure), regT3);
+ Jump failureCases2 = branchPtr(NotEqual, AbsoluteAddress(prototypeStructureAddress), regT3);
#else
- Jump failureCases2 = jnePtr(AbsoluteAddress(prototypeStructureAddress), ImmPtr(prototypeStructure));
+ Jump failureCases2 = branchPtr(NotEqual, AbsoluteAddress(prototypeStructureAddress), ImmPtr(prototypeStructure));
#endif
// Checks out okay! - getDirectOffset
- loadPtr(Address(X86::edx, cachedOffset * sizeof(JSValuePtr)), X86::eax);
+ compileGetDirectOffset(protoObject, regT0, cachedOffset);
Jump success = jump();
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
- PatchBuffer patchBuffer(code);
+ PatchBuffer patchBuffer(this, m_codeBlock->executablePool());
// Use the patch information to link the failure cases back to the original slow case routine.
- void* lastProtoBegin = prototypeStructures->list[currentIndex - 1].stubRoutine;
+ CodeLocationLabel lastProtoBegin = prototypeStructures->list[currentIndex - 1].stubRoutine;
patchBuffer.link(failureCases1, lastProtoBegin);
patchBuffer.link(failureCases2, lastProtoBegin);
// On success return back to the hot patch code, at a point it will perform the store to dest for us.
- intptr_t successDest = reinterpret_cast<intptr_t>(stubInfo->hotPathBegin) + patchOffsetGetByIdPutResult;
- patchBuffer.link(success, reinterpret_cast<void*>(successDest));
+ patchBuffer.link(success, stubInfo->hotPathBegin.labelAtOffset(patchOffsetGetByIdPutResult));
+
+ CodeLocationLabel entryLabel = patchBuffer.finalizeCodeAddendum();
structure->ref();
prototypeStructure->ref();
- prototypeStructures->list[currentIndex].set(code, structure, prototypeStructure);
+ prototypeStructures->list[currentIndex].set(entryLabel, structure, prototypeStructure);
// Finally patch the jump to slow case back in the hot path to jump here instead.
- void* jumpLocation = reinterpret_cast<char*>(stubInfo->hotPathBegin) + patchOffsetGetByIdBranchToSlowCase;
- Jump::patch(jumpLocation, code);
+ CodeLocationJump jumpLocation = stubInfo->hotPathBegin.jumpAtOffset(patchOffsetGetByIdBranchToSlowCase);
+ jumpLocation.relink(entryLabel);
}
void JIT::privateCompileGetByIdChainList(StructureStubInfo* stubInfo, PolymorphicAccessStructureList* prototypeStructures, int currentIndex, Structure* structure, StructureChain* chain, size_t count, size_t cachedOffset, CallFrame* callFrame)
@@ -530,7 +713,7 @@ void JIT::privateCompileGetByIdChainList(StructureStubInfo* stubInfo, Polymorphi
JumpList bucketsOfFail;
// Check eax is an object of the right Structure.
- Jump baseObjectCheck = checkStructure(X86::eax, structure);
+ Jump baseObjectCheck = checkStructure(regT0, structure);
bucketsOfFail.append(baseObjectCheck);
Structure* currStructure = structure;
@@ -543,54 +726,50 @@ void JIT::privateCompileGetByIdChainList(StructureStubInfo* stubInfo, Polymorphi
// Check the prototype object's Structure had not changed.
Structure** prototypeStructureAddress = &(protoObject->m_structure);
#if PLATFORM(X86_64)
- move(ImmPtr(currStructure), X86::ebx);
- bucketsOfFail.append(jnePtr(X86::ebx, AbsoluteAddress(prototypeStructureAddress)));
+ move(ImmPtr(currStructure), regT3);
+ bucketsOfFail.append(branchPtr(NotEqual, AbsoluteAddress(prototypeStructureAddress), regT3));
#else
- bucketsOfFail.append(jnePtr(AbsoluteAddress(prototypeStructureAddress), ImmPtr(currStructure)));
+ bucketsOfFail.append(branchPtr(NotEqual, AbsoluteAddress(prototypeStructureAddress), ImmPtr(currStructure)));
#endif
}
ASSERT(protoObject);
- PropertyStorage* protoPropertyStorage = &protoObject->m_propertyStorage;
- loadPtr(protoPropertyStorage, X86::edx);
- loadPtr(Address(X86::edx, cachedOffset * sizeof(JSValuePtr)), X86::eax);
+ compileGetDirectOffset(protoObject, regT0, cachedOffset);
Jump success = jump();
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
- PatchBuffer patchBuffer(code);
+ PatchBuffer patchBuffer(this, m_codeBlock->executablePool());
// Use the patch information to link the failure cases back to the original slow case routine.
- void* lastProtoBegin = prototypeStructures->list[currentIndex - 1].stubRoutine;
+ CodeLocationLabel lastProtoBegin = prototypeStructures->list[currentIndex - 1].stubRoutine;
patchBuffer.link(bucketsOfFail, lastProtoBegin);
// On success return back to the hot patch code, at a point it will perform the store to dest for us.
- intptr_t successDest = reinterpret_cast<intptr_t>(stubInfo->hotPathBegin) + patchOffsetGetByIdPutResult;
- patchBuffer.link(success, reinterpret_cast<void*>(successDest));
+ patchBuffer.link(success, stubInfo->hotPathBegin.labelAtOffset(patchOffsetGetByIdPutResult));
+
+ CodeLocationLabel entryLabel = patchBuffer.finalizeCodeAddendum();
// Track the stub we have created so that it will be deleted later.
structure->ref();
chain->ref();
- prototypeStructures->list[currentIndex].set(code, structure, chain);
+ prototypeStructures->list[currentIndex].set(entryLabel, structure, chain);
// Finally patch the jump to slow case back in the hot path to jump here instead.
- void* jumpLocation = reinterpret_cast<char*>(stubInfo->hotPathBegin) + patchOffsetGetByIdBranchToSlowCase;
- Jump::patch(jumpLocation, code);
+ CodeLocationJump jumpLocation = stubInfo->hotPathBegin.jumpAtOffset(patchOffsetGetByIdBranchToSlowCase);
+ jumpLocation.relink(entryLabel);
}
-#endif
-void JIT::privateCompileGetByIdChain(StructureStubInfo* stubInfo, Structure* structure, StructureChain* chain, size_t count, size_t cachedOffset, void* returnAddress, CallFrame* callFrame)
+void JIT::privateCompileGetByIdChain(StructureStubInfo* stubInfo, Structure* structure, StructureChain* chain, size_t count, size_t cachedOffset, ProcessorReturnAddress returnAddress, CallFrame* callFrame)
{
-#if USE(CTI_REPATCH_PIC)
// We don't want to patch more than once - in future go to cti_op_put_by_id_generic.
- Jump::patch(returnAddress, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_proto_list));
+ returnAddress.relinkCallerToFunction(FunctionPtr(JITStubs::cti_op_get_by_id_proto_list));
ASSERT(count);
JumpList bucketsOfFail;
// Check eax is an object of the right Structure.
- bucketsOfFail.append(checkStructure(X86::eax, structure));
+ bucketsOfFail.append(checkStructure(regT0, structure));
Structure* currStructure = structure;
RefPtr<Structure>* chainEntries = chain->head();
@@ -602,102 +781,37 @@ void JIT::privateCompileGetByIdChain(StructureStubInfo* stubInfo, Structure* str
// Check the prototype object's Structure had not changed.
Structure** prototypeStructureAddress = &(protoObject->m_structure);
#if PLATFORM(X86_64)
- move(ImmPtr(currStructure), X86::ebx);
- bucketsOfFail.append(jnePtr(X86::ebx, AbsoluteAddress(prototypeStructureAddress)));
+ move(ImmPtr(currStructure), regT3);
+ bucketsOfFail.append(branchPtr(NotEqual, AbsoluteAddress(prototypeStructureAddress), regT3));
#else
- bucketsOfFail.append(jnePtr(AbsoluteAddress(prototypeStructureAddress), ImmPtr(currStructure)));
+ bucketsOfFail.append(branchPtr(NotEqual, AbsoluteAddress(prototypeStructureAddress), ImmPtr(currStructure)));
#endif
}
ASSERT(protoObject);
- PropertyStorage* protoPropertyStorage = &protoObject->m_propertyStorage;
- loadPtr(protoPropertyStorage, X86::edx);
- loadPtr(Address(X86::edx, cachedOffset * sizeof(JSValuePtr)), X86::eax);
+ compileGetDirectOffset(protoObject, regT0, cachedOffset);
Jump success = jump();
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
- PatchBuffer patchBuffer(code);
+ PatchBuffer patchBuffer(this, m_codeBlock->executablePool());
// Use the patch information to link the failure cases back to the original slow case routine.
- void* slowCaseBegin = reinterpret_cast<char*>(stubInfo->callReturnLocation) - patchOffsetGetByIdSlowCaseCall;
-
- patchBuffer.link(bucketsOfFail, slowCaseBegin);
+ patchBuffer.link(bucketsOfFail, stubInfo->callReturnLocation.labelAtOffset(-patchOffsetGetByIdSlowCaseCall));
// On success return back to the hot patch code, at a point it will perform the store to dest for us.
- intptr_t successDest = reinterpret_cast<intptr_t>(stubInfo->hotPathBegin) + patchOffsetGetByIdPutResult;
- patchBuffer.link(success, reinterpret_cast<void*>(successDest));
+ patchBuffer.link(success, stubInfo->hotPathBegin.labelAtOffset(patchOffsetGetByIdPutResult));
// Track the stub we have created so that it will be deleted later.
- stubInfo->stubRoutine = code;
+ CodeLocationLabel entryLabel = patchBuffer.finalizeCodeAddendum();
+ stubInfo->stubRoutine = entryLabel;
// Finally patch the jump to slow case back in the hot path to jump here instead.
- void* jumpLocation = reinterpret_cast<char*>(stubInfo->hotPathBegin) + patchOffsetGetByIdBranchToSlowCase;
- Jump::patch(jumpLocation, code);
-#else
- ASSERT(count);
-
- JumpList bucketsOfFail;
-
- // Check eax is an object of the right Structure.
- bucketsOfFail.append(emitJumpIfNotJSCell(X86::eax));
- bucketsOfFail.append(checkStructure(X86::eax, structure));
-
- Structure* currStructure = structure;
- RefPtr<Structure>* chainEntries = chain->head();
- JSObject* protoObject = 0;
- for (unsigned i = 0; i < count; ++i) {
- protoObject = asObject(currStructure->prototypeForLookup(callFrame));
- currStructure = chainEntries[i].get();
-
- // Check the prototype object's Structure had not changed.
- Structure** prototypeStructureAddress = &(protoObject->m_structure);
-#if PLATFORM(X86_64)
- move(ImmPtr(currStructure), X86::ebx);
- bucketsOfFail.append(jnePtr(X86::ebx, AbsoluteAddress(prototypeStructureAddress)));
-#else
- bucketsOfFail.append(jnePtr(AbsoluteAddress(prototypeStructureAddress), ImmPtr(currStructure)));
-#endif
- }
- ASSERT(protoObject);
-
- PropertyStorage* protoPropertyStorage = &protoObject->m_propertyStorage;
- loadPtr(protoPropertyStorage, X86::edx);
- loadPtr(Address(X86::edx, cachedOffset * sizeof(JSValuePtr)), X86::eax);
- ret();
-
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
-
- patchBuffer.link(bucketsOfFail, reinterpret_cast<void*>(Interpreter::cti_op_get_by_id_proto_fail));
-
- stubInfo->stubRoutine = code;
-
- Jump::patch(returnAddress, code);
-#endif
+ CodeLocationJump jumpLocation = stubInfo->hotPathBegin.jumpAtOffset(patchOffsetGetByIdBranchToSlowCase);
+ jumpLocation.relink(entryLabel);
}
-void JIT::privateCompilePutByIdReplace(StructureStubInfo* stubInfo, Structure* structure, size_t cachedOffset, void* returnAddress)
-{
- // Check eax is an object of the right Structure.
- Jump failureCases1 = emitJumpIfNotJSCell(X86::eax);
- Jump failureCases2 = checkStructure(X86::eax, structure);
-
- // checks out okay! - putDirectOffset
- loadPtr(Address(X86::eax, FIELD_OFFSET(JSObject, m_propertyStorage)), X86::eax);
- storePtr(X86::edx, Address(X86::eax, cachedOffset * sizeof(JSValuePtr)));
- ret();
-
- void* code = m_assembler.executableCopy(m_codeBlock->executablePool());
- PatchBuffer patchBuffer(code);
-
- patchBuffer.link(failureCases1, reinterpret_cast<void*>(Interpreter::cti_op_put_by_id_fail));
- patchBuffer.link(failureCases2, reinterpret_cast<void*>(Interpreter::cti_op_put_by_id_fail));
+/* ------------------------------ END: !ENABLE / ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS) ------------------------------ */
- stubInfo->stubRoutine = code;
-
- Jump::patch(returnAddress, code);
-}
-
-#endif
+#endif // !ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITStubCall.h b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubCall.h
new file mode 100644
index 0000000..6c9ccc1
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubCall.h
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JITStubCall_h
+#define JITStubCall_h
+
+#include <wtf/Platform.h>
+
+#if ENABLE(JIT)
+
+namespace JSC {
+
+ class JITStubCall {
+ public:
+ JITStubCall(JIT* jit, JSObject* (JIT_STUB *stub)(STUB_ARGS_DECLARATION))
+ : m_jit(jit)
+ , m_stub(reinterpret_cast<void*>(stub))
+ , m_returnType(Value)
+ , m_argumentIndex(1) // Index 0 is reserved for restoreArgumentReference();
+ {
+ }
+
+ JITStubCall(JIT* jit, JSPropertyNameIterator* (JIT_STUB *stub)(STUB_ARGS_DECLARATION))
+ : m_jit(jit)
+ , m_stub(reinterpret_cast<void*>(stub))
+ , m_returnType(Value)
+ , m_argumentIndex(1) // Index 0 is reserved for restoreArgumentReference();
+ {
+ }
+
+ JITStubCall(JIT* jit, void* (JIT_STUB *stub)(STUB_ARGS_DECLARATION))
+ : m_jit(jit)
+ , m_stub(reinterpret_cast<void*>(stub))
+ , m_returnType(Value)
+ , m_argumentIndex(1) // Index 0 is reserved for restoreArgumentReference();
+ {
+ }
+
+ JITStubCall(JIT* jit, int (JIT_STUB *stub)(STUB_ARGS_DECLARATION))
+ : m_jit(jit)
+ , m_stub(reinterpret_cast<void*>(stub))
+ , m_returnType(Value)
+ , m_argumentIndex(1) // Index 0 is reserved for restoreArgumentReference();
+ {
+ }
+
+ JITStubCall(JIT* jit, void (JIT_STUB *stub)(STUB_ARGS_DECLARATION))
+ : m_jit(jit)
+ , m_stub(reinterpret_cast<void*>(stub))
+ , m_returnType(Void)
+ , m_argumentIndex(1) // Index 0 is reserved for restoreArgumentReference();
+ {
+ }
+
+ // Arguments are added first to last.
+
+ void addArgument(JIT::Imm32 argument)
+ {
+ m_jit->poke(argument, m_argumentIndex);
+ ++m_argumentIndex;
+ }
+
+ void addArgument(JIT::ImmPtr argument)
+ {
+ m_jit->poke(argument, m_argumentIndex);
+ ++m_argumentIndex;
+ }
+
+ void addArgument(JIT::RegisterID argument)
+ {
+ m_jit->poke(argument, m_argumentIndex);
+ ++m_argumentIndex;
+ }
+
+ void addArgument(unsigned src, JIT::RegisterID scratchRegister) // src is a virtual register.
+ {
+ if (m_jit->m_codeBlock->isConstantRegisterIndex(src))
+ addArgument(JIT::ImmPtr(JSValue::encode(m_jit->m_codeBlock->getConstant(src))));
+ else {
+ m_jit->loadPtr(JIT::Address(JIT::callFrameRegister, src * sizeof(Register)), scratchRegister);
+ addArgument(scratchRegister);
+ }
+ m_jit->killLastResultRegister();
+ }
+
+ JIT::Call call()
+ {
+ ASSERT(m_jit->m_bytecodeIndex != (unsigned)-1); // This method should only be called during hot/cold path generation, so that m_bytecodeIndex is set.
+
+#if ENABLE(OPCODE_SAMPLING)
+ m_jit->sampleInstruction(m_jit->m_codeBlock->instructions().begin() + m_jit->m_bytecodeIndex, true);
+#endif
+
+ m_jit->restoreArgumentReference();
+ JIT::Call call = m_jit->call();
+ m_jit->m_calls.append(CallRecord(call, m_jit->m_bytecodeIndex, m_stub));
+
+#if ENABLE(OPCODE_SAMPLING)
+ m_jit->sampleInstruction(m_jit->m_codeBlock->instructions().begin() + m_jit->m_bytecodeIndex, false);
+#endif
+
+ m_jit->killLastResultRegister();
+ return call;
+ }
+
+ JIT::Call call(unsigned dst) // dst is a virtual register.
+ {
+ ASSERT(m_returnType == Value);
+ JIT::Call call = this->call();
+ m_jit->emitPutVirtualRegister(dst);
+ return call;
+ }
+
+ JIT::Call call(JIT::RegisterID dst)
+ {
+ ASSERT(m_returnType == Value);
+ JIT::Call call = this->call();
+ if (dst != JIT::returnValueRegister)
+ m_jit->move(JIT::returnValueRegister, dst);
+ return call;
+ }
+
+ private:
+ JIT* m_jit;
+ void* m_stub;
+ enum { Value, Void } m_returnType;
+ size_t m_argumentIndex;
+ };
+
+ class CallEvalJITStub : public JITStubCall {
+ public:
+ CallEvalJITStub(JIT* jit, Instruction* instruction)
+ : JITStubCall(jit, JITStubs::cti_op_call_eval)
+ {
+ int callee = instruction[2].u.operand;
+ int argCount = instruction[3].u.operand;
+ int registerOffset = instruction[4].u.operand;
+
+ addArgument(callee, JIT::regT2);
+ addArgument(JIT::Imm32(registerOffset));
+ addArgument(JIT::Imm32(argCount));
+ }
+ };
+}
+
+#endif // ENABLE(JIT)
+
+#endif // JITStubCall_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp
new file mode 100644
index 0000000..41ebd20
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp
@@ -0,0 +1,2603 @@
+/*
+ * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JITStubs.h"
+
+#if ENABLE(JIT)
+
+#include "Arguments.h"
+#include "CallFrame.h"
+#include "CodeBlock.h"
+#include "Collector.h"
+#include "Debugger.h"
+#include "ExceptionHelpers.h"
+#include "GlobalEvalFunction.h"
+#include "JIT.h"
+#include "JSActivation.h"
+#include "JSArray.h"
+#include "JSByteArray.h"
+#include "JSFunction.h"
+#include "JSNotAnObject.h"
+#include "JSPropertyNameIterator.h"
+#include "JSStaticScopeObject.h"
+#include "JSString.h"
+#include "ObjectPrototype.h"
+#include "Operations.h"
+#include "Parser.h"
+#include "Profiler.h"
+#include "RegExpObject.h"
+#include "RegExpPrototype.h"
+#include "Register.h"
+#include "SamplingTool.h"
+#include <stdio.h>
+
+using namespace std;
+
+namespace JSC {
+
+
+#if PLATFORM(DARWIN) || PLATFORM(WIN_OS)
+#define SYMBOL_STRING(name) "_" #name
+#else
+#define SYMBOL_STRING(name) #name
+#endif
+
+#if COMPILER(GCC) && PLATFORM(X86)
+
+// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
+// need to change the assembly trampolines below to match.
+COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x38, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x30, JITStackFrame_code_offset_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x1c, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
+
+asm(
+".globl " SYMBOL_STRING(ctiTrampoline) "\n"
+SYMBOL_STRING(ctiTrampoline) ":" "\n"
+ "pushl %ebp" "\n"
+ "movl %esp, %ebp" "\n"
+ "pushl %esi" "\n"
+ "pushl %edi" "\n"
+ "pushl %ebx" "\n"
+ "subl $0x1c, %esp" "\n"
+ "movl $512, %esi" "\n"
+ "movl 0x38(%esp), %edi" "\n"
+ "call *0x30(%esp)" "\n"
+ "addl $0x1c, %esp" "\n"
+ "popl %ebx" "\n"
+ "popl %edi" "\n"
+ "popl %esi" "\n"
+ "popl %ebp" "\n"
+ "ret" "\n"
+);
+
+asm(
+".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
+SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+#if !USE(JIT_STUB_ARGUMENT_VA_LIST)
+ "movl %esp, %ecx" "\n"
+#endif
+ "call " SYMBOL_STRING(cti_vm_throw) "\n"
+".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
+SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
+ "addl $0x1c, %esp" "\n"
+ "popl %ebx" "\n"
+ "popl %edi" "\n"
+ "popl %esi" "\n"
+ "popl %ebp" "\n"
+ "ret" "\n"
+);
+
+#elif COMPILER(GCC) && PLATFORM(X86_64)
+
+#if USE(JIT_STUB_ARGUMENT_VA_LIST)
+#error "JIT_STUB_ARGUMENT_VA_LIST not supported on x86-64."
+#endif
+
+// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
+// need to change the assembly trampolines below to match.
+COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x90, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x80, JITStackFrame_code_offset_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x48, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
+
+asm(
+".globl " SYMBOL_STRING(ctiTrampoline) "\n"
+SYMBOL_STRING(ctiTrampoline) ":" "\n"
+ "pushq %rbp" "\n"
+ "movq %rsp, %rbp" "\n"
+ "pushq %r12" "\n"
+ "pushq %r13" "\n"
+ "pushq %r14" "\n"
+ "pushq %r15" "\n"
+ "pushq %rbx" "\n"
+ "subq $0x48, %rsp" "\n"
+ "movq $512, %r12" "\n"
+ "movq $0xFFFF000000000000, %r14" "\n"
+ "movq $0xFFFF000000000002, %r15" "\n"
+ "movq 0x90(%rsp), %r13" "\n"
+ "call *0x80(%rsp)" "\n"
+ "addq $0x48, %rsp" "\n"
+ "popq %rbx" "\n"
+ "popq %r15" "\n"
+ "popq %r14" "\n"
+ "popq %r13" "\n"
+ "popq %r12" "\n"
+ "popq %rbp" "\n"
+ "ret" "\n"
+);
+
+asm(
+".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
+SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
+ "movq %rsp, %rdi" "\n"
+ "call " SYMBOL_STRING(cti_vm_throw) "\n"
+".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
+SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
+ "addq $0x48, %rsp" "\n"
+ "popq %rbx" "\n"
+ "popq %r15" "\n"
+ "popq %r14" "\n"
+ "popq %r13" "\n"
+ "popq %r12" "\n"
+ "popq %rbp" "\n"
+ "ret" "\n"
+);
+
+#elif COMPILER(MSVC)
+
+#if USE(JIT_STUB_ARGUMENT_VA_LIST)
+#error "JIT_STUB_ARGUMENT_VA_LIST configuration not supported on MSVC."
+#endif
+
+// These ASSERTs remind you that, if you change the layout of JITStackFrame, you
+// need to change the assembly trampolines below to match.
+COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x38, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x30, JITStackFrame_code_offset_matches_ctiTrampoline);
+COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x1c, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
+
+extern "C" {
+
+ __declspec(naked) EncodedJSValue ctiTrampoline(void* code, RegisterFile*, CallFrame*, JSValue* exception, Profiler**, JSGlobalData*)
+ {
+ __asm {
+ push ebp;
+ mov ebp, esp;
+ push esi;
+ push edi;
+ push ebx;
+ sub esp, 0x1c;
+ mov esi, 512;
+ mov ecx, esp;
+ mov edi, [esp + 0x38];
+ call [esp + 0x30];
+ add esp, 0x1c;
+ pop ebx;
+ pop edi;
+ pop esi;
+ pop ebp;
+ ret;
+ }
+ }
+
+ __declspec(naked) void ctiVMThrowTrampoline()
+ {
+ __asm {
+ mov ecx, esp;
+ call JITStubs::cti_vm_throw;
+ add esp, 0x1c;
+ pop ebx;
+ pop edi;
+ pop esi;
+ pop ebp;
+ ret;
+ }
+ }
+
+ __declspec(naked) void ctiOpThrowNotCaught()
+ {
+ __asm {
+ add esp, 0x1c;
+ pop ebx;
+ pop edi;
+ pop esi;
+ pop ebp;
+ ret;
+ }
+ }
+}
+
+#endif
+
+#if ENABLE(OPCODE_SAMPLING)
+ #define CTI_SAMPLER stackFrame.globalData->interpreter->sampler()
+#else
+ #define CTI_SAMPLER 0
+#endif
+
+JITThunks::JITThunks(JSGlobalData* globalData)
+{
+ JIT::compileCTIMachineTrampolines(globalData, &m_executablePool, &m_ctiArrayLengthTrampoline, &m_ctiStringLengthTrampoline, &m_ctiVirtualCallPreLink, &m_ctiVirtualCallLink, &m_ctiVirtualCall, &m_ctiNativeCallThunk);
+}
+
+#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
+
+NEVER_INLINE void JITThunks::tryCachePutByID(CallFrame* callFrame, CodeBlock* codeBlock, void* returnAddress, JSValue baseValue, const PutPropertySlot& slot)
+{
+ // The interpreter checks for recursion here; I do not believe this can occur in CTI.
+
+ if (!baseValue.isCell())
+ return;
+
+ // Uncacheable: give up.
+ if (!slot.isCacheable()) {
+ ctiPatchCallByReturnAddress(returnAddress, FunctionPtr(JITStubs::cti_op_put_by_id_generic));
+ return;
+ }
+
+ JSCell* baseCell = asCell(baseValue);
+ Structure* structure = baseCell->structure();
+
+ if (structure->isDictionary()) {
+ ctiPatchCallByReturnAddress(returnAddress, FunctionPtr(JITStubs::cti_op_put_by_id_generic));
+ return;
+ }
+
+ // If baseCell != base, then baseCell must be a proxy for another object.
+ if (baseCell != slot.base()) {
+ ctiPatchCallByReturnAddress(returnAddress, FunctionPtr(JITStubs::cti_op_put_by_id_generic));
+ return;
+ }
+
+ StructureStubInfo* stubInfo = &codeBlock->getStubInfo(returnAddress);
+
+ // Cache hit: Specialize instruction and ref Structures.
+
+ // Structure transition, cache transition info
+ if (slot.type() == PutPropertySlot::NewProperty) {
+ StructureChain* prototypeChain = structure->prototypeChain(callFrame);
+ stubInfo->initPutByIdTransition(structure->previousID(), structure, prototypeChain);
+ JIT::compilePutByIdTransition(callFrame->scopeChain()->globalData, codeBlock, stubInfo, structure->previousID(), structure, slot.cachedOffset(), prototypeChain, returnAddress);
+ return;
+ }
+
+ stubInfo->initPutByIdReplace(structure);
+
+ JIT::patchPutByIdReplace(stubInfo, structure, slot.cachedOffset(), returnAddress);
+}
+
+NEVER_INLINE void JITThunks::tryCacheGetByID(CallFrame* callFrame, CodeBlock* codeBlock, void* returnAddress, JSValue baseValue, const Identifier& propertyName, const PropertySlot& slot)
+{
+ // FIXME: Write a test that proves we need to check for recursion here just
+ // like the interpreter does, then add a check for recursion.
+
+ // FIXME: Cache property access for immediates.
+ if (!baseValue.isCell()) {
+ ctiPatchCallByReturnAddress(returnAddress, FunctionPtr(JITStubs::cti_op_get_by_id_generic));
+ return;
+ }
+
+ JSGlobalData* globalData = &callFrame->globalData();
+
+ if (isJSArray(globalData, baseValue) && propertyName == callFrame->propertyNames().length) {
+ JIT::compilePatchGetArrayLength(callFrame->scopeChain()->globalData, codeBlock, returnAddress);
+ return;
+ }
+
+ if (isJSString(globalData, baseValue) && propertyName == callFrame->propertyNames().length) {
+ // The tradeoff of compiling an patched inline string length access routine does not seem
+ // to pay off, so we currently only do this for arrays.
+ ctiPatchCallByReturnAddress(returnAddress, globalData->jitStubs.ctiStringLengthTrampoline());
+ return;
+ }
+
+ // Uncacheable: give up.
+ if (!slot.isCacheable()) {
+ ctiPatchCallByReturnAddress(returnAddress, FunctionPtr(JITStubs::cti_op_get_by_id_generic));
+ return;
+ }
+
+ JSCell* baseCell = asCell(baseValue);
+ Structure* structure = baseCell->structure();
+
+ if (structure->isDictionary()) {
+ ctiPatchCallByReturnAddress(returnAddress, FunctionPtr(JITStubs::cti_op_get_by_id_generic));
+ return;
+ }
+
+ // In the interpreter the last structure is trapped here; in CTI we use the
+ // *_second method to achieve a similar (but not quite the same) effect.
+
+ StructureStubInfo* stubInfo = &codeBlock->getStubInfo(returnAddress);
+
+ // Cache hit: Specialize instruction and ref Structures.
+
+ if (slot.slotBase() == baseValue) {
+ // set this up, so derefStructures can do it's job.
+ stubInfo->initGetByIdSelf(structure);
+
+ JIT::patchGetByIdSelf(stubInfo, structure, slot.cachedOffset(), returnAddress);
+ return;
+ }
+
+ if (slot.slotBase() == structure->prototypeForLookup(callFrame)) {
+ ASSERT(slot.slotBase().isObject());
+
+ JSObject* slotBaseObject = asObject(slot.slotBase());
+
+ // Since we're accessing a prototype in a loop, it's a good bet that it
+ // should not be treated as a dictionary.
+ if (slotBaseObject->structure()->isDictionary())
+ slotBaseObject->setStructure(Structure::fromDictionaryTransition(slotBaseObject->structure()));
+
+ stubInfo->initGetByIdProto(structure, slotBaseObject->structure());
+
+ JIT::compileGetByIdProto(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, slotBaseObject->structure(), slot.cachedOffset(), returnAddress);
+ return;
+ }
+
+ size_t count = countPrototypeChainEntriesAndCheckForProxies(callFrame, baseValue, slot);
+ if (!count) {
+ stubInfo->opcodeID = op_get_by_id_generic;
+ return;
+ }
+
+ StructureChain* prototypeChain = structure->prototypeChain(callFrame);
+ stubInfo->initGetByIdChain(structure, prototypeChain);
+ JIT::compileGetByIdChain(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, prototypeChain, count, slot.cachedOffset(), returnAddress);
+}
+
+#endif
+
+#if USE(JIT_STUB_ARGUMENT_VA_LIST)
+#define SETUP_VA_LISTL_ARGS va_list vl_args; va_start(vl_args, args)
+#else
+#define SETUP_VA_LISTL_ARGS
+#endif
+
+#ifndef NDEBUG
+
+extern "C" {
+
+static void jscGeneratedNativeCode()
+{
+ // When executing a JIT stub function (which might do an allocation), we hack the return address
+ // to pretend to be executing this function, to keep stack logging tools from blowing out
+ // memory.
+}
+
+}
+
+struct StackHack {
+ ALWAYS_INLINE StackHack(JITStackFrame& stackFrame)
+ : stackFrame(stackFrame)
+ , savedReturnAddress(*stackFrame.returnAddressSlot())
+ {
+ *stackFrame.returnAddressSlot() = reinterpret_cast<void*>(jscGeneratedNativeCode);
+ }
+
+ ALWAYS_INLINE ~StackHack()
+ {
+ *stackFrame.returnAddressSlot() = savedReturnAddress;
+ }
+
+ JITStackFrame& stackFrame;
+ void* savedReturnAddress;
+};
+
+#define STUB_INIT_STACK_FRAME(stackFrame) SETUP_VA_LISTL_ARGS; JITStackFrame& stackFrame = *reinterpret_cast<JITStackFrame*>(STUB_ARGS); StackHack stackHack(stackFrame)
+#define STUB_SET_RETURN_ADDRESS(returnAddress) stackHack.savedReturnAddress = returnAddress
+#define STUB_RETURN_ADDRESS stackHack.savedReturnAddress
+
+#else
+
+#define STUB_INIT_STACK_FRAME(stackFrame) SETUP_VA_LISTL_ARGS; JITStackFrame& stackFrame = *reinterpret_cast<JITStackFrame*>(STUB_ARGS)
+#define STUB_SET_RETURN_ADDRESS(returnAddress) *stackFrame.returnAddressSlot() = returnAddress
+#define STUB_RETURN_ADDRESS *stackFrame.returnAddressSlot()
+
+#endif
+
+// The reason this is not inlined is to avoid having to do a PIC branch
+// to get the address of the ctiVMThrowTrampoline function. It's also
+// good to keep the code size down by leaving as much of the exception
+// handling code out of line as possible.
+static NEVER_INLINE void returnToThrowTrampoline(JSGlobalData* globalData, void* exceptionLocation, void*& returnAddressSlot)
+{
+ ASSERT(globalData->exception);
+ globalData->exceptionLocation = exceptionLocation;
+ returnAddressSlot = reinterpret_cast<void*>(ctiVMThrowTrampoline);
+}
+
+static NEVER_INLINE void throwStackOverflowError(CallFrame* callFrame, JSGlobalData* globalData, void* exceptionLocation, void*& returnAddressSlot)
+{
+ globalData->exception = createStackOverflowError(callFrame);
+ returnToThrowTrampoline(globalData, exceptionLocation, returnAddressSlot);
+}
+
+#define VM_THROW_EXCEPTION() \
+ do { \
+ VM_THROW_EXCEPTION_AT_END(); \
+ return 0; \
+ } while (0)
+#define VM_THROW_EXCEPTION_AT_END() \
+ returnToThrowTrampoline(stackFrame.globalData, STUB_RETURN_ADDRESS, STUB_RETURN_ADDRESS)
+
+#define CHECK_FOR_EXCEPTION() \
+ do { \
+ if (UNLIKELY(stackFrame.globalData->exception != JSValue())) \
+ VM_THROW_EXCEPTION(); \
+ } while (0)
+#define CHECK_FOR_EXCEPTION_AT_END() \
+ do { \
+ if (UNLIKELY(stackFrame.globalData->exception != JSValue())) \
+ VM_THROW_EXCEPTION_AT_END(); \
+ } while (0)
+#define CHECK_FOR_EXCEPTION_VOID() \
+ do { \
+ if (UNLIKELY(stackFrame.globalData->exception != JSValue())) { \
+ VM_THROW_EXCEPTION_AT_END(); \
+ return; \
+ } \
+ } while (0)
+
+namespace JITStubs {
+
+#define DEFINE_STUB_FUNCTION(rtype, op) rtype JIT_STUB cti_##op(STUB_ARGS_DECLARATION)
+
+DEFINE_STUB_FUNCTION(JSObject*, op_convert_this)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue v1 = stackFrame.args[0].jsValue();
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSObject* result = v1.toThisObject(callFrame);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return result;
+}
+
+DEFINE_STUB_FUNCTION(void, op_end)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ ScopeChainNode* scopeChain = stackFrame.callFrame->scopeChain();
+ ASSERT(scopeChain->refCount > 1);
+ scopeChain->deref();
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_add)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue v1 = stackFrame.args[0].jsValue();
+ JSValue v2 = stackFrame.args[1].jsValue();
+
+ double left;
+ double right = 0.0;
+
+ bool rightIsNumber = v2.getNumber(right);
+ if (rightIsNumber && v1.getNumber(left))
+ return JSValue::encode(jsNumber(stackFrame.globalData, left + right));
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ bool leftIsString = v1.isString();
+ if (leftIsString && v2.isString()) {
+ RefPtr<UString::Rep> value = concatenate(asString(v1)->value().rep(), asString(v2)->value().rep());
+ if (UNLIKELY(!value)) {
+ throwOutOfMemoryError(callFrame);
+ VM_THROW_EXCEPTION();
+ }
+
+ return JSValue::encode(jsString(stackFrame.globalData, value.release()));
+ }
+
+ if (rightIsNumber & leftIsString) {
+ RefPtr<UString::Rep> value = v2.isInt32Fast() ?
+ concatenate(asString(v1)->value().rep(), v2.getInt32Fast()) :
+ concatenate(asString(v1)->value().rep(), right);
+
+ if (UNLIKELY(!value)) {
+ throwOutOfMemoryError(callFrame);
+ VM_THROW_EXCEPTION();
+ }
+ return JSValue::encode(jsString(stackFrame.globalData, value.release()));
+ }
+
+ // All other cases are pretty uncommon
+ JSValue result = jsAddSlowCase(callFrame, v1, v2);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_pre_inc)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue v = stackFrame.args[0].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsNumber(stackFrame.globalData, v.toNumber(callFrame) + 1);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(int, timeout_check)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSGlobalData* globalData = stackFrame.globalData;
+ TimeoutChecker& timeoutChecker = globalData->timeoutChecker;
+
+ if (timeoutChecker.didTimeOut(stackFrame.callFrame)) {
+ globalData->exception = createInterruptedExecutionException(globalData);
+ VM_THROW_EXCEPTION_AT_END();
+ }
+
+ return timeoutChecker.ticksUntilNextCheck();
+}
+
+DEFINE_STUB_FUNCTION(void, register_file_check)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ if (LIKELY(stackFrame.registerFile->grow(&stackFrame.callFrame->registers()[stackFrame.callFrame->codeBlock()->m_numCalleeRegisters])))
+ return;
+
+ // Rewind to the previous call frame because op_call already optimistically
+ // moved the call frame forward.
+ CallFrame* oldCallFrame = stackFrame.callFrame->callerFrame();
+ stackFrame.callFrame = oldCallFrame;
+ throwStackOverflowError(oldCallFrame, stackFrame.globalData, oldCallFrame->returnPC(), STUB_RETURN_ADDRESS);
+}
+
+DEFINE_STUB_FUNCTION(int, op_loop_if_less)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ bool result = jsLess(callFrame, src1, src2);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return result;
+}
+
+DEFINE_STUB_FUNCTION(int, op_loop_if_lesseq)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ bool result = jsLessEq(callFrame, src1, src2);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return result;
+}
+
+DEFINE_STUB_FUNCTION(JSObject*, op_new_object)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return constructEmptyObject(stackFrame.callFrame);
+}
+
+DEFINE_STUB_FUNCTION(void, op_put_by_id_generic)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ PutPropertySlot slot;
+ stackFrame.args[0].jsValue().put(stackFrame.callFrame, stackFrame.args[1].identifier(), stackFrame.args[2].jsValue(), slot);
+ CHECK_FOR_EXCEPTION_AT_END();
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id_generic)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ Identifier& ident = stackFrame.args[1].identifier();
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(callFrame, ident, slot);
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+#if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS)
+
+DEFINE_STUB_FUNCTION(void, op_put_by_id)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ Identifier& ident = stackFrame.args[1].identifier();
+
+ PutPropertySlot slot;
+ stackFrame.args[0].jsValue().put(callFrame, ident, stackFrame.args[2].jsValue(), slot);
+
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_put_by_id_second));
+
+ CHECK_FOR_EXCEPTION_AT_END();
+}
+
+DEFINE_STUB_FUNCTION(void, op_put_by_id_second)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ PutPropertySlot slot;
+ stackFrame.args[0].jsValue().put(stackFrame.callFrame, stackFrame.args[1].identifier(), stackFrame.args[2].jsValue(), slot);
+ JITThunks::tryCachePutByID(stackFrame.callFrame, stackFrame.callFrame->codeBlock(), STUB_RETURN_ADDRESS, stackFrame.args[0].jsValue(), slot);
+ CHECK_FOR_EXCEPTION_AT_END();
+}
+
+DEFINE_STUB_FUNCTION(void, op_put_by_id_fail)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ Identifier& ident = stackFrame.args[1].identifier();
+
+ PutPropertySlot slot;
+ stackFrame.args[0].jsValue().put(callFrame, ident, stackFrame.args[2].jsValue(), slot);
+
+ CHECK_FOR_EXCEPTION_AT_END();
+}
+
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_put_by_id_transition_realloc)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ int32_t oldSize = stackFrame.args[1].int32();
+ int32_t newSize = stackFrame.args[2].int32();
+
+ ASSERT(baseValue.isObject());
+ asObject(baseValue)->allocatePropertyStorage(oldSize, newSize);
+
+ return JSValue::encode(baseValue);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ Identifier& ident = stackFrame.args[1].identifier();
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(callFrame, ident, slot);
+
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_second));
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id_method_check)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ Identifier& ident = stackFrame.args[1].identifier();
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(callFrame, ident, slot);
+
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_method_check_second));
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id_method_check_second)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ Identifier& ident = stackFrame.args[1].identifier();
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(callFrame, ident, slot);
+
+ CHECK_FOR_EXCEPTION();
+
+ // If we successfully got something, then the base from which it is being accessed must
+ // be an object. (Assertion to ensure asObject() call below is safe, which comes after
+ // an isCacheable() chceck.
+ ASSERT(!slot.isCacheable() || slot.slotBase().isObject());
+
+ // Check that:
+ // * We're dealing with a JSCell,
+ // * the property is cachable,
+ // * it's not a dictionary
+ // * there is a function cached.
+ Structure* structure;
+ JSCell* specific;
+ JSObject* slotBaseObject;
+ if (baseValue.isCell()
+ && slot.isCacheable()
+ && !(structure = asCell(baseValue)->structure())->isDictionary()
+ && (slotBaseObject = asObject(slot.slotBase()))->getPropertySpecificValue(callFrame, ident, specific)
+ && specific
+ ) {
+
+ JSFunction* callee = (JSFunction*)specific;
+
+ // Since we're accessing a prototype in a loop, it's a good bet that it
+ // should not be treated as a dictionary.
+ if (slotBaseObject->structure()->isDictionary())
+ slotBaseObject->setStructure(Structure::fromDictionaryTransition(slotBaseObject->structure()));
+
+ // The result fetched should always be the callee!
+ ASSERT(result == JSValue(callee));
+ MethodCallLinkInfo& methodCallLinkInfo = callFrame->codeBlock()->getMethodCallLinkInfo(STUB_RETURN_ADDRESS);
+
+ // Check to see if the function is on the object's prototype. Patch up the code to optimize.
+ if (slot.slotBase() == structure->prototypeForLookup(callFrame))
+ JIT::patchMethodCallProto(methodCallLinkInfo, callee, structure, slotBaseObject);
+ // Check to see if the function is on the object itself.
+ // Since we generate the method-check to check both the structure and a prototype-structure (since this
+ // is the common case) we have a problem - we need to patch the prototype structure check to do something
+ // useful. We could try to nop it out altogether, but that's a little messy, so lets do something simpler
+ // for now. For now it performs a check on a special object on the global object only used for this
+ // purpose. The object is in no way exposed, and as such the check will always pass.
+ else if (slot.slotBase() == baseValue)
+ JIT::patchMethodCallProto(methodCallLinkInfo, callee, structure, callFrame->scopeChain()->globalObject()->methodCallDummy());
+
+ // For now let any other case be cached as a normal get_by_id.
+ }
+
+ // Revert the get_by_id op back to being a regular get_by_id - allow it to cache like normal, if it needs to.
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id));
+
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id_second)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ Identifier& ident = stackFrame.args[1].identifier();
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(callFrame, ident, slot);
+
+ JITThunks::tryCacheGetByID(callFrame, callFrame->codeBlock(), STUB_RETURN_ADDRESS, baseValue, ident, slot);
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id_self_fail)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ Identifier& ident = stackFrame.args[1].identifier();
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(callFrame, ident, slot);
+
+ CHECK_FOR_EXCEPTION();
+
+ if (baseValue.isCell()
+ && slot.isCacheable()
+ && !asCell(baseValue)->structure()->isDictionary()
+ && slot.slotBase() == baseValue) {
+
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ StructureStubInfo* stubInfo = &codeBlock->getStubInfo(STUB_RETURN_ADDRESS);
+
+ ASSERT(slot.slotBase().isObject());
+
+ PolymorphicAccessStructureList* polymorphicStructureList;
+ int listIndex = 1;
+
+ if (stubInfo->opcodeID == op_get_by_id_self) {
+ ASSERT(!stubInfo->stubRoutine);
+ polymorphicStructureList = new PolymorphicAccessStructureList(MacroAssembler::CodeLocationLabel(), stubInfo->u.getByIdSelf.baseObjectStructure);
+ stubInfo->initGetByIdSelfList(polymorphicStructureList, 2);
+ } else {
+ polymorphicStructureList = stubInfo->u.getByIdSelfList.structureList;
+ listIndex = stubInfo->u.getByIdSelfList.listSize;
+ stubInfo->u.getByIdSelfList.listSize++;
+ }
+
+ JIT::compileGetByIdSelfList(callFrame->scopeChain()->globalData, codeBlock, stubInfo, polymorphicStructureList, listIndex, asCell(baseValue)->structure(), slot.cachedOffset());
+
+ if (listIndex == (POLYMORPHIC_LIST_CACHE_SIZE - 1))
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_generic));
+ } else {
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_generic));
+ }
+ return JSValue::encode(result);
+}
+
+static PolymorphicAccessStructureList* getPolymorphicAccessStructureListSlot(StructureStubInfo* stubInfo, int& listIndex)
+{
+ PolymorphicAccessStructureList* prototypeStructureList = 0;
+ listIndex = 1;
+
+ switch (stubInfo->opcodeID) {
+ case op_get_by_id_proto:
+ prototypeStructureList = new PolymorphicAccessStructureList(stubInfo->stubRoutine, stubInfo->u.getByIdProto.baseObjectStructure, stubInfo->u.getByIdProto.prototypeStructure);
+ stubInfo->stubRoutine.reset();
+ stubInfo->initGetByIdProtoList(prototypeStructureList, 2);
+ break;
+ case op_get_by_id_chain:
+ prototypeStructureList = new PolymorphicAccessStructureList(stubInfo->stubRoutine, stubInfo->u.getByIdChain.baseObjectStructure, stubInfo->u.getByIdChain.chain);
+ stubInfo->stubRoutine.reset();
+ stubInfo->initGetByIdProtoList(prototypeStructureList, 2);
+ break;
+ case op_get_by_id_proto_list:
+ prototypeStructureList = stubInfo->u.getByIdProtoList.structureList;
+ listIndex = stubInfo->u.getByIdProtoList.listSize;
+ stubInfo->u.getByIdProtoList.listSize++;
+ break;
+ default:
+ ASSERT_NOT_REACHED();
+ }
+
+ ASSERT(listIndex < POLYMORPHIC_LIST_CACHE_SIZE);
+ return prototypeStructureList;
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id_proto_list)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(callFrame, stackFrame.args[1].identifier(), slot);
+
+ CHECK_FOR_EXCEPTION();
+
+ if (!baseValue.isCell() || !slot.isCacheable() || asCell(baseValue)->structure()->isDictionary()) {
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_proto_fail));
+ return JSValue::encode(result);
+ }
+
+ Structure* structure = asCell(baseValue)->structure();
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ StructureStubInfo* stubInfo = &codeBlock->getStubInfo(STUB_RETURN_ADDRESS);
+
+ ASSERT(slot.slotBase().isObject());
+ JSObject* slotBaseObject = asObject(slot.slotBase());
+
+ if (slot.slotBase() == baseValue)
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_proto_fail));
+ else if (slot.slotBase() == asCell(baseValue)->structure()->prototypeForLookup(callFrame)) {
+ // Since we're accessing a prototype in a loop, it's a good bet that it
+ // should not be treated as a dictionary.
+ if (slotBaseObject->structure()->isDictionary())
+ slotBaseObject->setStructure(Structure::fromDictionaryTransition(slotBaseObject->structure()));
+
+ int listIndex;
+ PolymorphicAccessStructureList* prototypeStructureList = getPolymorphicAccessStructureListSlot(stubInfo, listIndex);
+
+ JIT::compileGetByIdProtoList(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, prototypeStructureList, listIndex, structure, slotBaseObject->structure(), slot.cachedOffset());
+
+ if (listIndex == (POLYMORPHIC_LIST_CACHE_SIZE - 1))
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_proto_list_full));
+ } else if (size_t count = countPrototypeChainEntriesAndCheckForProxies(callFrame, baseValue, slot)) {
+ int listIndex;
+ PolymorphicAccessStructureList* prototypeStructureList = getPolymorphicAccessStructureListSlot(stubInfo, listIndex);
+ JIT::compileGetByIdChainList(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, prototypeStructureList, listIndex, structure, structure->prototypeChain(callFrame), count, slot.cachedOffset());
+
+ if (listIndex == (POLYMORPHIC_LIST_CACHE_SIZE - 1))
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_proto_list_full));
+ } else
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_id_proto_fail));
+
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id_proto_list_full)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(stackFrame.callFrame, stackFrame.args[1].identifier(), slot);
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id_proto_fail)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(stackFrame.callFrame, stackFrame.args[1].identifier(), slot);
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id_array_fail)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(stackFrame.callFrame, stackFrame.args[1].identifier(), slot);
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_id_string_fail)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ PropertySlot slot(baseValue);
+ JSValue result = baseValue.get(stackFrame.callFrame, stackFrame.args[1].identifier(), slot);
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+#endif
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_instanceof)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue value = stackFrame.args[0].jsValue();
+ JSValue baseVal = stackFrame.args[1].jsValue();
+ JSValue proto = stackFrame.args[2].jsValue();
+
+ // At least one of these checks must have failed to get to the slow case.
+ ASSERT(!value.isCell() || !baseVal.isCell() || !proto.isCell()
+ || !value.isObject() || !baseVal.isObject() || !proto.isObject()
+ || (asObject(baseVal)->structure()->typeInfo().flags() & (ImplementsHasInstance | OverridesHasInstance)) != ImplementsHasInstance);
+
+
+ // ECMA-262 15.3.5.3:
+ // Throw an exception either if baseVal is not an object, or if it does not implement 'HasInstance' (i.e. is a function).
+ TypeInfo typeInfo(UnspecifiedType, 0);
+ if (!baseVal.isObject() || !(typeInfo = asObject(baseVal)->structure()->typeInfo()).implementsHasInstance()) {
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createInvalidParamError(callFrame, "instanceof", baseVal, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION();
+ }
+ ASSERT(typeInfo.type() != UnspecifiedType);
+
+ if (!typeInfo.overridesHasInstance()) {
+ if (!value.isObject())
+ return JSValue::encode(jsBoolean(false));
+
+ if (!proto.isObject()) {
+ throwError(callFrame, TypeError, "instanceof called on an object with an invalid prototype property.");
+ VM_THROW_EXCEPTION();
+ }
+ }
+
+ JSValue result = jsBoolean(asObject(baseVal)->hasInstance(callFrame, value, proto));
+ CHECK_FOR_EXCEPTION_AT_END();
+
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_del_by_id)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSObject* baseObj = stackFrame.args[0].jsValue().toObject(callFrame);
+
+ JSValue result = jsBoolean(baseObj->deleteProperty(callFrame, stackFrame.args[1].identifier()));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_mul)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+
+ double left;
+ double right;
+ if (src1.getNumber(left) && src2.getNumber(right))
+ return JSValue::encode(jsNumber(stackFrame.globalData, left * right));
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsNumber(stackFrame.globalData, src1.toNumber(callFrame) * src2.toNumber(callFrame));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(JSObject*, op_new_func)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return stackFrame.args[0].funcDeclNode()->makeFunction(stackFrame.callFrame, stackFrame.callFrame->scopeChain());
+}
+
+DEFINE_STUB_FUNCTION(void*, op_call_JSFunction)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+#ifndef NDEBUG
+ CallData callData;
+ ASSERT(stackFrame.args[0].jsValue().getCallData(callData) == CallTypeJS);
+#endif
+
+ JSFunction* function = asFunction(stackFrame.args[0].jsValue());
+ FunctionBodyNode* body = function->body();
+ ScopeChainNode* callDataScopeChain = function->scope().node();
+ body->jitCode(callDataScopeChain);
+
+ return &(body->generatedBytecode());
+}
+
+DEFINE_STUB_FUNCTION(VoidPtrPair, op_call_arityCheck)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* newCodeBlock = stackFrame.args[3].codeBlock();
+ int argCount = stackFrame.args[2].int32();
+
+ ASSERT(argCount != newCodeBlock->m_numParameters);
+
+ CallFrame* oldCallFrame = callFrame->callerFrame();
+
+ if (argCount > newCodeBlock->m_numParameters) {
+ size_t numParameters = newCodeBlock->m_numParameters;
+ Register* r = callFrame->registers() + numParameters;
+
+ Register* argv = r - RegisterFile::CallFrameHeaderSize - numParameters - argCount;
+ for (size_t i = 0; i < numParameters; ++i)
+ argv[i + argCount] = argv[i];
+
+ callFrame = CallFrame::create(r);
+ callFrame->setCallerFrame(oldCallFrame);
+ } else {
+ size_t omittedArgCount = newCodeBlock->m_numParameters - argCount;
+ Register* r = callFrame->registers() + omittedArgCount;
+ Register* newEnd = r + newCodeBlock->m_numCalleeRegisters;
+ if (!stackFrame.registerFile->grow(newEnd)) {
+ // Rewind to the previous call frame because op_call already optimistically
+ // moved the call frame forward.
+ stackFrame.callFrame = oldCallFrame;
+ throwStackOverflowError(oldCallFrame, stackFrame.globalData, stackFrame.args[1].returnAddress(), STUB_RETURN_ADDRESS);
+ RETURN_POINTER_PAIR(0, 0);
+ }
+
+ Register* argv = r - RegisterFile::CallFrameHeaderSize - omittedArgCount;
+ for (size_t i = 0; i < omittedArgCount; ++i)
+ argv[i] = jsUndefined();
+
+ callFrame = CallFrame::create(r);
+ callFrame->setCallerFrame(oldCallFrame);
+ }
+
+ RETURN_POINTER_PAIR(newCodeBlock, callFrame);
+}
+
+DEFINE_STUB_FUNCTION(void*, vm_dontLazyLinkCall)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSGlobalData* globalData = stackFrame.globalData;
+ JSFunction* callee = asFunction(stackFrame.args[0].jsValue());
+
+ ctiPatchNearCallByReturnAddress(stackFrame.args[1].returnAddress(), globalData->jitStubs.ctiVirtualCallLink());
+
+ return callee->body()->generatedJITCode().addressForCall().executableAddress();
+}
+
+DEFINE_STUB_FUNCTION(void*, vm_lazyLinkCall)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSFunction* callee = asFunction(stackFrame.args[0].jsValue());
+ JITCode& jitCode = callee->body()->generatedJITCode();
+
+ CodeBlock* codeBlock = 0;
+ if (!callee->isHostFunction())
+ codeBlock = &callee->body()->bytecode(callee->scope().node());
+
+ CallLinkInfo* callLinkInfo = &stackFrame.callFrame->callerFrame()->codeBlock()->getCallLinkInfo(stackFrame.args[1].returnAddress());
+ JIT::linkCall(callee, codeBlock, jitCode, callLinkInfo, stackFrame.args[2].int32());
+
+ return jitCode.addressForCall().executableAddress();
+}
+
+DEFINE_STUB_FUNCTION(JSObject*, op_push_activation)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSActivation* activation = new (stackFrame.globalData) JSActivation(stackFrame.callFrame, static_cast<FunctionBodyNode*>(stackFrame.callFrame->codeBlock()->ownerNode()));
+ stackFrame.callFrame->setScopeChain(stackFrame.callFrame->scopeChain()->copy()->push(activation));
+ return activation;
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_call_NotJSFunction)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue funcVal = stackFrame.args[0].jsValue();
+
+ CallData callData;
+ CallType callType = funcVal.getCallData(callData);
+
+ ASSERT(callType != CallTypeJS);
+
+ if (callType == CallTypeHost) {
+ int registerOffset = stackFrame.args[1].int32();
+ int argCount = stackFrame.args[2].int32();
+ CallFrame* previousCallFrame = stackFrame.callFrame;
+ CallFrame* callFrame = CallFrame::create(previousCallFrame->registers() + registerOffset);
+
+ callFrame->init(0, static_cast<Instruction*>(STUB_RETURN_ADDRESS), previousCallFrame->scopeChain(), previousCallFrame, 0, argCount, 0);
+ stackFrame.callFrame = callFrame;
+
+ Register* argv = stackFrame.callFrame->registers() - RegisterFile::CallFrameHeaderSize - argCount;
+ ArgList argList(argv + 1, argCount - 1);
+
+ JSValue returnValue;
+ {
+ SamplingTool::HostCallRecord callRecord(CTI_SAMPLER);
+
+ // FIXME: All host methods should be calling toThisObject, but this is not presently the case.
+ JSValue thisValue = argv[0].jsValue();
+ if (thisValue == jsNull())
+ thisValue = callFrame->globalThisValue();
+
+ returnValue = callData.native.function(callFrame, asObject(funcVal), thisValue, argList);
+ }
+ stackFrame.callFrame = previousCallFrame;
+ CHECK_FOR_EXCEPTION();
+
+ return JSValue::encode(returnValue);
+ }
+
+ ASSERT(callType == CallTypeNone);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createNotAFunctionError(stackFrame.callFrame, funcVal, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION();
+}
+
+DEFINE_STUB_FUNCTION(void, op_create_arguments)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ Arguments* arguments = new (stackFrame.globalData) Arguments(stackFrame.callFrame);
+ stackFrame.callFrame->setCalleeArguments(arguments);
+ stackFrame.callFrame[RegisterFile::ArgumentsRegister] = arguments;
+}
+
+DEFINE_STUB_FUNCTION(void, op_create_arguments_no_params)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ Arguments* arguments = new (stackFrame.globalData) Arguments(stackFrame.callFrame, Arguments::NoParameters);
+ stackFrame.callFrame->setCalleeArguments(arguments);
+ stackFrame.callFrame[RegisterFile::ArgumentsRegister] = arguments;
+}
+
+DEFINE_STUB_FUNCTION(void, op_tear_off_activation)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ ASSERT(stackFrame.callFrame->codeBlock()->needsFullScopeChain());
+ asActivation(stackFrame.args[0].jsValue())->copyRegisters(stackFrame.callFrame->optionalCalleeArguments());
+}
+
+DEFINE_STUB_FUNCTION(void, op_tear_off_arguments)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ ASSERT(stackFrame.callFrame->codeBlock()->usesArguments() && !stackFrame.callFrame->codeBlock()->needsFullScopeChain());
+ if (stackFrame.callFrame->optionalCalleeArguments())
+ stackFrame.callFrame->optionalCalleeArguments()->copyRegisters();
+}
+
+DEFINE_STUB_FUNCTION(void, op_profile_will_call)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ ASSERT(*stackFrame.enabledProfilerReference);
+ (*stackFrame.enabledProfilerReference)->willExecute(stackFrame.callFrame, stackFrame.args[0].jsValue());
+}
+
+DEFINE_STUB_FUNCTION(void, op_profile_did_call)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ ASSERT(*stackFrame.enabledProfilerReference);
+ (*stackFrame.enabledProfilerReference)->didExecute(stackFrame.callFrame, stackFrame.args[0].jsValue());
+}
+
+DEFINE_STUB_FUNCTION(void, op_ret_scopeChain)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ ASSERT(stackFrame.callFrame->codeBlock()->needsFullScopeChain());
+ stackFrame.callFrame->scopeChain()->deref();
+}
+
+DEFINE_STUB_FUNCTION(JSObject*, op_new_array)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ ArgList argList(&stackFrame.callFrame->registers()[stackFrame.args[0].int32()], stackFrame.args[1].int32());
+ return constructArray(stackFrame.callFrame, argList);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_resolve)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ ScopeChainNode* scopeChain = callFrame->scopeChain();
+
+ ScopeChainIterator iter = scopeChain->begin();
+ ScopeChainIterator end = scopeChain->end();
+ ASSERT(iter != end);
+
+ Identifier& ident = stackFrame.args[0].identifier();
+ do {
+ JSObject* o = *iter;
+ PropertySlot slot(o);
+ if (o->getPropertySlot(callFrame, ident, slot)) {
+ JSValue result = slot.getValue(callFrame, ident);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+ }
+ } while (++iter != end);
+
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION();
+}
+
+DEFINE_STUB_FUNCTION(JSObject*, op_construct_JSConstruct)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSFunction* constructor = asFunction(stackFrame.args[0].jsValue());
+ if (constructor->isHostFunction()) {
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createNotAConstructorError(callFrame, constructor, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION();
+ }
+
+#ifndef NDEBUG
+ ConstructData constructData;
+ ASSERT(constructor->getConstructData(constructData) == ConstructTypeJS);
+#endif
+
+ Structure* structure;
+ if (stackFrame.args[3].jsValue().isObject())
+ structure = asObject(stackFrame.args[3].jsValue())->inheritorID();
+ else
+ structure = constructor->scope().node()->globalObject()->emptyObjectStructure();
+ return new (stackFrame.globalData) JSObject(structure);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_construct_NotJSConstruct)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSValue constrVal = stackFrame.args[0].jsValue();
+ int argCount = stackFrame.args[2].int32();
+ int thisRegister = stackFrame.args[4].int32();
+
+ ConstructData constructData;
+ ConstructType constructType = constrVal.getConstructData(constructData);
+
+ if (constructType == ConstructTypeHost) {
+ ArgList argList(callFrame->registers() + thisRegister + 1, argCount - 1);
+
+ JSValue returnValue;
+ {
+ SamplingTool::HostCallRecord callRecord(CTI_SAMPLER);
+ returnValue = constructData.native.function(callFrame, asObject(constrVal), argList);
+ }
+ CHECK_FOR_EXCEPTION();
+
+ return JSValue::encode(returnValue);
+ }
+
+ ASSERT(constructType == ConstructTypeNone);
+
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createNotAConstructorError(callFrame, constrVal, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION();
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_val)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSGlobalData* globalData = stackFrame.globalData;
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ JSValue subscript = stackFrame.args[1].jsValue();
+
+ JSValue result;
+
+ if (LIKELY(subscript.isUInt32Fast())) {
+ uint32_t i = subscript.getUInt32Fast();
+ if (isJSArray(globalData, baseValue)) {
+ JSArray* jsArray = asArray(baseValue);
+ if (jsArray->canGetIndex(i))
+ result = jsArray->getIndex(i);
+ else
+ result = jsArray->JSArray::get(callFrame, i);
+ } else if (isJSString(globalData, baseValue) && asString(baseValue)->canGetIndex(i)) {
+ // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks.
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_val_string));
+ result = asString(baseValue)->getIndex(stackFrame.globalData, i);
+ } else if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
+ // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks.
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_val_byte_array));
+ return JSValue::encode(asByteArray(baseValue)->getIndex(callFrame, i));
+ } else
+ result = baseValue.get(callFrame, i);
+ } else {
+ Identifier property(callFrame, subscript.toString(callFrame));
+ result = baseValue.get(callFrame, property);
+ }
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_val_string)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSGlobalData* globalData = stackFrame.globalData;
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ JSValue subscript = stackFrame.args[1].jsValue();
+
+ JSValue result;
+
+ if (LIKELY(subscript.isUInt32Fast())) {
+ uint32_t i = subscript.getUInt32Fast();
+ if (isJSString(globalData, baseValue) && asString(baseValue)->canGetIndex(i))
+ result = asString(baseValue)->getIndex(stackFrame.globalData, i);
+ else {
+ result = baseValue.get(callFrame, i);
+ if (!isJSString(globalData, baseValue))
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_val));
+ }
+ } else {
+ Identifier property(callFrame, subscript.toString(callFrame));
+ result = baseValue.get(callFrame, property);
+ }
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_get_by_val_byte_array)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSGlobalData* globalData = stackFrame.globalData;
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ JSValue subscript = stackFrame.args[1].jsValue();
+
+ JSValue result;
+
+ if (LIKELY(subscript.isUInt32Fast())) {
+ uint32_t i = subscript.getUInt32Fast();
+ if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
+ // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks.
+ return JSValue::encode(asByteArray(baseValue)->getIndex(callFrame, i));
+ }
+
+ result = baseValue.get(callFrame, i);
+ if (!isJSByteArray(globalData, baseValue))
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_val));
+ } else {
+ Identifier property(callFrame, subscript.toString(callFrame));
+ result = baseValue.get(callFrame, property);
+ }
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_resolve_func)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ ScopeChainNode* scopeChain = callFrame->scopeChain();
+
+ ScopeChainIterator iter = scopeChain->begin();
+ ScopeChainIterator end = scopeChain->end();
+
+ // FIXME: add scopeDepthIsZero optimization
+
+ ASSERT(iter != end);
+
+ Identifier& ident = stackFrame.args[0].identifier();
+ JSObject* base;
+ do {
+ base = *iter;
+ PropertySlot slot(base);
+ if (base->getPropertySlot(callFrame, ident, slot)) {
+ // ECMA 11.2.3 says that if we hit an activation the this value should be null.
+ // However, section 10.2.3 says that in the case where the value provided
+ // by the caller is null, the global object should be used. It also says
+ // that the section does not apply to internal functions, but for simplicity
+ // of implementation we use the global object anyway here. This guarantees
+ // that in host objects you always get a valid object for this.
+ // We also handle wrapper substitution for the global object at the same time.
+ JSObject* thisObj = base->toThisObject(callFrame);
+ JSValue result = slot.getValue(callFrame, ident);
+ CHECK_FOR_EXCEPTION_AT_END();
+
+ callFrame->registers()[stackFrame.args[1].int32()] = JSValue(thisObj);
+ return JSValue::encode(result);
+ }
+ ++iter;
+ } while (iter != end);
+
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION_AT_END();
+ return JSValue::encode(JSValue());
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_sub)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+
+ double left;
+ double right;
+ if (src1.getNumber(left) && src2.getNumber(right))
+ return JSValue::encode(jsNumber(stackFrame.globalData, left - right));
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsNumber(stackFrame.globalData, src1.toNumber(callFrame) - src2.toNumber(callFrame));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(void, op_put_by_val)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSGlobalData* globalData = stackFrame.globalData;
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ JSValue subscript = stackFrame.args[1].jsValue();
+ JSValue value = stackFrame.args[2].jsValue();
+
+ if (LIKELY(subscript.isUInt32Fast())) {
+ uint32_t i = subscript.getUInt32Fast();
+ if (isJSArray(globalData, baseValue)) {
+ JSArray* jsArray = asArray(baseValue);
+ if (jsArray->canSetIndex(i))
+ jsArray->setIndex(i, value);
+ else
+ jsArray->JSArray::put(callFrame, i, value);
+ } else if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
+ JSByteArray* jsByteArray = asByteArray(baseValue);
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_put_by_val_byte_array));
+ // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks.
+ if (value.isInt32Fast()) {
+ jsByteArray->setIndex(i, value.getInt32Fast());
+ return;
+ } else {
+ double dValue = 0;
+ if (value.getNumber(dValue)) {
+ jsByteArray->setIndex(i, dValue);
+ return;
+ }
+ }
+
+ baseValue.put(callFrame, i, value);
+ } else
+ baseValue.put(callFrame, i, value);
+ } else {
+ Identifier property(callFrame, subscript.toString(callFrame));
+ if (!stackFrame.globalData->exception) { // Don't put to an object if toString threw an exception.
+ PutPropertySlot slot;
+ baseValue.put(callFrame, property, value, slot);
+ }
+ }
+
+ CHECK_FOR_EXCEPTION_AT_END();
+}
+
+DEFINE_STUB_FUNCTION(void, op_put_by_val_array)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ int i = stackFrame.args[1].int32();
+ JSValue value = stackFrame.args[2].jsValue();
+
+ ASSERT(isJSArray(stackFrame.globalData, baseValue));
+
+ if (LIKELY(i >= 0))
+ asArray(baseValue)->JSArray::put(callFrame, i, value);
+ else {
+ // This should work since we're re-boxing an immediate unboxed in JIT code.
+ ASSERT(JSValue::makeInt32Fast(i));
+ Identifier property(callFrame, JSValue::makeInt32Fast(i).toString(callFrame));
+ // FIXME: can toString throw an exception here?
+ if (!stackFrame.globalData->exception) { // Don't put to an object if toString threw an exception.
+ PutPropertySlot slot;
+ baseValue.put(callFrame, property, value, slot);
+ }
+ }
+
+ CHECK_FOR_EXCEPTION_AT_END();
+}
+
+DEFINE_STUB_FUNCTION(void, op_put_by_val_byte_array)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSGlobalData* globalData = stackFrame.globalData;
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ JSValue subscript = stackFrame.args[1].jsValue();
+ JSValue value = stackFrame.args[2].jsValue();
+
+ if (LIKELY(subscript.isUInt32Fast())) {
+ uint32_t i = subscript.getUInt32Fast();
+ if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) {
+ JSByteArray* jsByteArray = asByteArray(baseValue);
+
+ // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks.
+ if (value.isInt32Fast()) {
+ jsByteArray->setIndex(i, value.getInt32Fast());
+ return;
+ } else {
+ double dValue = 0;
+ if (value.getNumber(dValue)) {
+ jsByteArray->setIndex(i, dValue);
+ return;
+ }
+ }
+ }
+
+ if (!isJSByteArray(globalData, baseValue))
+ ctiPatchCallByReturnAddress(STUB_RETURN_ADDRESS, FunctionPtr(cti_op_put_by_val));
+ baseValue.put(callFrame, i, value);
+ } else {
+ Identifier property(callFrame, subscript.toString(callFrame));
+ if (!stackFrame.globalData->exception) { // Don't put to an object if toString threw an exception.
+ PutPropertySlot slot;
+ baseValue.put(callFrame, property, value, slot);
+ }
+ }
+
+ CHECK_FOR_EXCEPTION_AT_END();
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_lesseq)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsBoolean(jsLessEq(callFrame, stackFrame.args[0].jsValue(), stackFrame.args[1].jsValue()));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(int, op_loop_if_true)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ bool result = src1.toBoolean(callFrame);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return result;
+}
+
+DEFINE_STUB_FUNCTION(int, op_load_varargs)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+ CallFrame* callFrame = stackFrame.callFrame;
+ RegisterFile* registerFile = stackFrame.registerFile;
+ int argsOffset = stackFrame.args[0].int32();
+ JSValue arguments = callFrame->registers()[argsOffset].jsValue();
+ uint32_t argCount = 0;
+ if (!arguments) {
+ int providedParams = callFrame->registers()[RegisterFile::ArgumentCount].i() - 1;
+ argCount = providedParams;
+ int32_t sizeDelta = argsOffset + argCount + RegisterFile::CallFrameHeaderSize;
+ Register* newEnd = callFrame->registers() + sizeDelta;
+ if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
+ stackFrame.globalData->exception = createStackOverflowError(callFrame);
+ VM_THROW_EXCEPTION();
+ }
+ int32_t expectedParams = asFunction(callFrame->registers()[RegisterFile::Callee].jsValue())->body()->parameterCount();
+ int32_t inplaceArgs = min(providedParams, expectedParams);
+
+ Register* inplaceArgsDst = callFrame->registers() + argsOffset;
+
+ Register* inplaceArgsEnd = inplaceArgsDst + inplaceArgs;
+ Register* inplaceArgsEnd2 = inplaceArgsDst + providedParams;
+
+ Register* inplaceArgsSrc = callFrame->registers() - RegisterFile::CallFrameHeaderSize - expectedParams;
+ Register* inplaceArgsSrc2 = inplaceArgsSrc - providedParams - 1 + inplaceArgs;
+
+ // First step is to copy the "expected" parameters from their normal location relative to the callframe
+ while (inplaceArgsDst < inplaceArgsEnd)
+ *inplaceArgsDst++ = *inplaceArgsSrc++;
+
+ // Then we copy any additional arguments that may be further up the stack ('-1' to account for 'this')
+ while (inplaceArgsDst < inplaceArgsEnd2)
+ *inplaceArgsDst++ = *inplaceArgsSrc2++;
+
+ } else if (!arguments.isUndefinedOrNull()) {
+ if (!arguments.isObject()) {
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createInvalidParamError(callFrame, "Function.prototype.apply", arguments, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION();
+ }
+ if (asObject(arguments)->classInfo() == &Arguments::info) {
+ Arguments* argsObject = asArguments(arguments);
+ argCount = argsObject->numProvidedArguments(callFrame);
+ int32_t sizeDelta = argsOffset + argCount + RegisterFile::CallFrameHeaderSize;
+ Register* newEnd = callFrame->registers() + sizeDelta;
+ if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
+ stackFrame.globalData->exception = createStackOverflowError(callFrame);
+ VM_THROW_EXCEPTION();
+ }
+ argsObject->copyToRegisters(callFrame, callFrame->registers() + argsOffset, argCount);
+ } else if (isJSArray(&callFrame->globalData(), arguments)) {
+ JSArray* array = asArray(arguments);
+ argCount = array->length();
+ int32_t sizeDelta = argsOffset + argCount + RegisterFile::CallFrameHeaderSize;
+ Register* newEnd = callFrame->registers() + sizeDelta;
+ if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
+ stackFrame.globalData->exception = createStackOverflowError(callFrame);
+ VM_THROW_EXCEPTION();
+ }
+ array->copyToRegisters(callFrame, callFrame->registers() + argsOffset, argCount);
+ } else if (asObject(arguments)->inherits(&JSArray::info)) {
+ JSObject* argObject = asObject(arguments);
+ argCount = argObject->get(callFrame, callFrame->propertyNames().length).toUInt32(callFrame);
+ int32_t sizeDelta = argsOffset + argCount + RegisterFile::CallFrameHeaderSize;
+ Register* newEnd = callFrame->registers() + sizeDelta;
+ if (!registerFile->grow(newEnd) || ((newEnd - callFrame->registers()) != sizeDelta)) {
+ stackFrame.globalData->exception = createStackOverflowError(callFrame);
+ VM_THROW_EXCEPTION();
+ }
+ Register* argsBuffer = callFrame->registers() + argsOffset;
+ for (unsigned i = 0; i < argCount; ++i) {
+ argsBuffer[i] = asObject(arguments)->get(callFrame, i);
+ CHECK_FOR_EXCEPTION();
+ }
+ } else {
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createInvalidParamError(callFrame, "Function.prototype.apply", arguments, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION();
+ }
+ }
+
+ return argCount + 1;
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_negate)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src = stackFrame.args[0].jsValue();
+
+ double v;
+ if (src.getNumber(v))
+ return JSValue::encode(jsNumber(stackFrame.globalData, -v));
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsNumber(stackFrame.globalData, -src.toNumber(callFrame));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_resolve_base)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return JSValue::encode(JSC::resolveBase(stackFrame.callFrame, stackFrame.args[0].identifier(), stackFrame.callFrame->scopeChain()));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_resolve_skip)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ ScopeChainNode* scopeChain = callFrame->scopeChain();
+
+ int skip = stackFrame.args[1].int32();
+
+ ScopeChainIterator iter = scopeChain->begin();
+ ScopeChainIterator end = scopeChain->end();
+ ASSERT(iter != end);
+ while (skip--) {
+ ++iter;
+ ASSERT(iter != end);
+ }
+ Identifier& ident = stackFrame.args[0].identifier();
+ do {
+ JSObject* o = *iter;
+ PropertySlot slot(o);
+ if (o->getPropertySlot(callFrame, ident, slot)) {
+ JSValue result = slot.getValue(callFrame, ident);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+ }
+ } while (++iter != end);
+
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION();
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_resolve_global)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSGlobalObject* globalObject = asGlobalObject(stackFrame.args[0].jsValue());
+ Identifier& ident = stackFrame.args[1].identifier();
+ unsigned globalResolveInfoIndex = stackFrame.args[2].int32();
+ ASSERT(globalObject->isGlobalObject());
+
+ PropertySlot slot(globalObject);
+ if (globalObject->getPropertySlot(callFrame, ident, slot)) {
+ JSValue result = slot.getValue(callFrame, ident);
+ if (slot.isCacheable() && !globalObject->structure()->isDictionary() && slot.slotBase() == globalObject) {
+ GlobalResolveInfo& globalResolveInfo = callFrame->codeBlock()->globalResolveInfo(globalResolveInfoIndex);
+ if (globalResolveInfo.structure)
+ globalResolveInfo.structure->deref();
+ globalObject->structure()->ref();
+ globalResolveInfo.structure = globalObject->structure();
+ globalResolveInfo.offset = slot.cachedOffset();
+ return JSValue::encode(result);
+ }
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+ }
+
+ unsigned vPCIndex = callFrame->codeBlock()->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, callFrame->codeBlock());
+ VM_THROW_EXCEPTION();
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_div)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+
+ double left;
+ double right;
+ if (src1.getNumber(left) && src2.getNumber(right))
+ return JSValue::encode(jsNumber(stackFrame.globalData, left / right));
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsNumber(stackFrame.globalData, src1.toNumber(callFrame) / src2.toNumber(callFrame));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_pre_dec)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue v = stackFrame.args[0].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsNumber(stackFrame.globalData, v.toNumber(callFrame) - 1);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(int, op_jless)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ bool result = jsLess(callFrame, src1, src2);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return result;
+}
+
+DEFINE_STUB_FUNCTION(int, op_jlesseq)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ bool result = jsLessEq(callFrame, src1, src2);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return result;
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_not)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src = stackFrame.args[0].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSValue result = jsBoolean(!src.toBoolean(callFrame));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(int, op_jtrue)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ bool result = src1.toBoolean(callFrame);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return result;
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_post_inc)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue v = stackFrame.args[0].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSValue number = v.toJSNumber(callFrame);
+ CHECK_FOR_EXCEPTION_AT_END();
+
+ callFrame->registers()[stackFrame.args[1].int32()] = jsNumber(stackFrame.globalData, number.uncheckedGetNumber() + 1);
+ return JSValue::encode(number);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_eq)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ ASSERT(!JSValue::areBothInt32Fast(src1, src2));
+ JSValue result = jsBoolean(JSValue::equalSlowCaseInline(callFrame, src1, src2));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_lshift)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue val = stackFrame.args[0].jsValue();
+ JSValue shift = stackFrame.args[1].jsValue();
+
+ int32_t left;
+ uint32_t right;
+ if (JSValue::areBothInt32Fast(val, shift))
+ return JSValue::encode(jsNumber(stackFrame.globalData, val.getInt32Fast() << (shift.getInt32Fast() & 0x1f)));
+ if (val.numberToInt32(left) && shift.numberToUInt32(right))
+ return JSValue::encode(jsNumber(stackFrame.globalData, left << (right & 0x1f)));
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsNumber(stackFrame.globalData, (val.toInt32(callFrame)) << (shift.toUInt32(callFrame) & 0x1f));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_bitand)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+
+ int32_t left;
+ int32_t right;
+ if (src1.numberToInt32(left) && src2.numberToInt32(right))
+ return JSValue::encode(jsNumber(stackFrame.globalData, left & right));
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsNumber(stackFrame.globalData, src1.toInt32(callFrame) & src2.toInt32(callFrame));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_rshift)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue val = stackFrame.args[0].jsValue();
+ JSValue shift = stackFrame.args[1].jsValue();
+
+ int32_t left;
+ uint32_t right;
+ if (JSFastMath::canDoFastRshift(val, shift))
+ return JSValue::encode(JSFastMath::rightShiftImmediateNumbers(val, shift));
+ if (val.numberToInt32(left) && shift.numberToUInt32(right))
+ return JSValue::encode(jsNumber(stackFrame.globalData, left >> (right & 0x1f)));
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsNumber(stackFrame.globalData, (val.toInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_bitnot)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src = stackFrame.args[0].jsValue();
+
+ int value;
+ if (src.numberToInt32(value))
+ return JSValue::encode(jsNumber(stackFrame.globalData, ~value));
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsNumber(stackFrame.globalData, ~src.toInt32(callFrame));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_resolve_with_base)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ ScopeChainNode* scopeChain = callFrame->scopeChain();
+
+ ScopeChainIterator iter = scopeChain->begin();
+ ScopeChainIterator end = scopeChain->end();
+
+ // FIXME: add scopeDepthIsZero optimization
+
+ ASSERT(iter != end);
+
+ Identifier& ident = stackFrame.args[0].identifier();
+ JSObject* base;
+ do {
+ base = *iter;
+ PropertySlot slot(base);
+ if (base->getPropertySlot(callFrame, ident, slot)) {
+ JSValue result = slot.getValue(callFrame, ident);
+ CHECK_FOR_EXCEPTION_AT_END();
+
+ callFrame->registers()[stackFrame.args[1].int32()] = JSValue(base);
+ return JSValue::encode(result);
+ }
+ ++iter;
+ } while (iter != end);
+
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createUndefinedVariableError(callFrame, ident, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION_AT_END();
+ return JSValue::encode(JSValue());
+}
+
+DEFINE_STUB_FUNCTION(JSObject*, op_new_func_exp)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return stackFrame.args[0].funcExprNode()->makeFunction(stackFrame.callFrame, stackFrame.callFrame->scopeChain());
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_mod)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue dividendValue = stackFrame.args[0].jsValue();
+ JSValue divisorValue = stackFrame.args[1].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ double d = dividendValue.toNumber(callFrame);
+ JSValue result = jsNumber(stackFrame.globalData, fmod(d, divisorValue.toNumber(callFrame)));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_less)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsBoolean(jsLess(callFrame, stackFrame.args[0].jsValue(), stackFrame.args[1].jsValue()));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_neq)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+
+ ASSERT(!JSValue::areBothInt32Fast(src1, src2));
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue result = jsBoolean(!JSValue::equalSlowCaseInline(callFrame, src1, src2));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_post_dec)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue v = stackFrame.args[0].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSValue number = v.toJSNumber(callFrame);
+ CHECK_FOR_EXCEPTION_AT_END();
+
+ callFrame->registers()[stackFrame.args[1].int32()] = jsNumber(stackFrame.globalData, number.uncheckedGetNumber() - 1);
+ return JSValue::encode(number);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_urshift)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue val = stackFrame.args[0].jsValue();
+ JSValue shift = stackFrame.args[1].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ if (JSFastMath::canDoFastUrshift(val, shift))
+ return JSValue::encode(JSFastMath::rightShiftImmediateNumbers(val, shift));
+ else {
+ JSValue result = jsNumber(stackFrame.globalData, (val.toUInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+ }
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_bitxor)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSValue result = jsNumber(stackFrame.globalData, src1.toInt32(callFrame) ^ src2.toInt32(callFrame));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(JSObject*, op_new_regexp)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return new (stackFrame.globalData) RegExpObject(stackFrame.callFrame->lexicalGlobalObject()->regExpStructure(), stackFrame.args[0].regExp());
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_bitor)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSValue result = jsNumber(stackFrame.globalData, src1.toInt32(callFrame) | src2.toInt32(callFrame));
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_call_eval)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ RegisterFile* registerFile = stackFrame.registerFile;
+
+ Interpreter* interpreter = stackFrame.globalData->interpreter;
+
+ JSValue funcVal = stackFrame.args[0].jsValue();
+ int registerOffset = stackFrame.args[1].int32();
+ int argCount = stackFrame.args[2].int32();
+
+ Register* newCallFrame = callFrame->registers() + registerOffset;
+ Register* argv = newCallFrame - RegisterFile::CallFrameHeaderSize - argCount;
+ JSValue thisValue = argv[0].jsValue();
+ JSGlobalObject* globalObject = callFrame->scopeChain()->globalObject();
+
+ if (thisValue == globalObject && funcVal == globalObject->evalFunction()) {
+ JSValue exceptionValue;
+ JSValue result = interpreter->callEval(callFrame, registerFile, argv, argCount, registerOffset, exceptionValue);
+ if (UNLIKELY(exceptionValue != JSValue())) {
+ stackFrame.globalData->exception = exceptionValue;
+ VM_THROW_EXCEPTION_AT_END();
+ }
+ return JSValue::encode(result);
+ }
+
+ return JSValue::encode(JSValue());
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* codeBlock = callFrame->codeBlock();
+
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+
+ JSValue exceptionValue = stackFrame.args[0].jsValue();
+ ASSERT(exceptionValue);
+
+ HandlerInfo* handler = stackFrame.globalData->interpreter->throwException(callFrame, exceptionValue, vPCIndex, true);
+
+ if (!handler) {
+ *stackFrame.exception = exceptionValue;
+ STUB_SET_RETURN_ADDRESS(reinterpret_cast<void*>(ctiOpThrowNotCaught));
+ return JSValue::encode(jsNull());
+ }
+
+ stackFrame.callFrame = callFrame;
+ void* catchRoutine = handler->nativeCode.addressForExceptionHandler();
+ ASSERT(catchRoutine);
+ STUB_SET_RETURN_ADDRESS(catchRoutine);
+ return JSValue::encode(exceptionValue);
+}
+
+DEFINE_STUB_FUNCTION(JSPropertyNameIterator*, op_get_pnames)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return JSPropertyNameIterator::create(stackFrame.callFrame, stackFrame.args[0].jsValue());
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_next_pname)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSPropertyNameIterator* it = stackFrame.args[0].propertyNameIterator();
+ JSValue temp = it->next(stackFrame.callFrame);
+ if (!temp)
+ it->invalidate();
+ return JSValue::encode(temp);
+}
+
+DEFINE_STUB_FUNCTION(JSObject*, op_push_scope)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSObject* o = stackFrame.args[0].jsValue().toObject(stackFrame.callFrame);
+ CHECK_FOR_EXCEPTION();
+ stackFrame.callFrame->setScopeChain(stackFrame.callFrame->scopeChain()->push(o));
+ return o;
+}
+
+DEFINE_STUB_FUNCTION(void, op_pop_scope)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ stackFrame.callFrame->setScopeChain(stackFrame.callFrame->scopeChain()->pop());
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_typeof)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return JSValue::encode(jsTypeStringForValue(stackFrame.callFrame, stackFrame.args[0].jsValue()));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_is_undefined)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue v = stackFrame.args[0].jsValue();
+ return JSValue::encode(jsBoolean(v.isCell() ? v.asCell()->structure()->typeInfo().masqueradesAsUndefined() : v.isUndefined()));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_is_boolean)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return JSValue::encode(jsBoolean(stackFrame.args[0].jsValue().isBoolean()));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_is_number)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return JSValue::encode(jsBoolean(stackFrame.args[0].jsValue().isNumber()));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_is_string)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return JSValue::encode(jsBoolean(isJSString(stackFrame.globalData, stackFrame.args[0].jsValue())));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_is_object)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return JSValue::encode(jsBoolean(jsIsObjectType(stackFrame.args[0].jsValue())));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_is_function)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return JSValue::encode(jsBoolean(jsIsFunctionType(stackFrame.args[0].jsValue())));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_stricteq)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+
+ return JSValue::encode(jsBoolean(JSValue::strictEqual(src1, src2)));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_to_primitive)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return JSValue::encode(stackFrame.args[0].jsValue().toPrimitive(stackFrame.callFrame));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_strcat)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ return JSValue::encode(concatenateStrings(stackFrame.callFrame, &stackFrame.callFrame->registers()[stackFrame.args[0].int32()], stackFrame.args[1].int32()));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_nstricteq)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src1 = stackFrame.args[0].jsValue();
+ JSValue src2 = stackFrame.args[1].jsValue();
+
+ return JSValue::encode(jsBoolean(!JSValue::strictEqual(src1, src2)));
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_to_jsnumber)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue src = stackFrame.args[0].jsValue();
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSValue result = src.toJSNumber(callFrame);
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_in)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ JSValue baseVal = stackFrame.args[1].jsValue();
+
+ if (!baseVal.isObject()) {
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, STUB_RETURN_ADDRESS);
+ stackFrame.globalData->exception = createInvalidParamError(callFrame, "in", baseVal, vPCIndex, codeBlock);
+ VM_THROW_EXCEPTION();
+ }
+
+ JSValue propName = stackFrame.args[0].jsValue();
+ JSObject* baseObj = asObject(baseVal);
+
+ uint32_t i;
+ if (propName.getUInt32(i))
+ return JSValue::encode(jsBoolean(baseObj->hasProperty(callFrame, i)));
+
+ Identifier property(callFrame, propName.toString(callFrame));
+ CHECK_FOR_EXCEPTION();
+ return JSValue::encode(jsBoolean(baseObj->hasProperty(callFrame, property)));
+}
+
+DEFINE_STUB_FUNCTION(JSObject*, op_push_new_scope)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSObject* scope = new (stackFrame.globalData) JSStaticScopeObject(stackFrame.callFrame, stackFrame.args[0].identifier(), stackFrame.args[1].jsValue(), DontDelete);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ callFrame->setScopeChain(callFrame->scopeChain()->push(scope));
+ return scope;
+}
+
+DEFINE_STUB_FUNCTION(void, op_jmp_scopes)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ unsigned count = stackFrame.args[0].int32();
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ ScopeChainNode* tmp = callFrame->scopeChain();
+ while (count--)
+ tmp = tmp->pop();
+ callFrame->setScopeChain(tmp);
+}
+
+DEFINE_STUB_FUNCTION(void, op_put_by_index)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ unsigned property = stackFrame.args[1].int32();
+
+ stackFrame.args[0].jsValue().put(callFrame, property, stackFrame.args[2].jsValue());
+}
+
+DEFINE_STUB_FUNCTION(void*, op_switch_imm)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue scrutinee = stackFrame.args[0].jsValue();
+ unsigned tableIndex = stackFrame.args[1].int32();
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* codeBlock = callFrame->codeBlock();
+
+ if (scrutinee.isInt32Fast())
+ return codeBlock->immediateSwitchJumpTable(tableIndex).ctiForValue(scrutinee.getInt32Fast()).addressForSwitch();
+ else {
+ double value;
+ int32_t intValue;
+ if (scrutinee.getNumber(value) && ((intValue = static_cast<int32_t>(value)) == value))
+ return codeBlock->immediateSwitchJumpTable(tableIndex).ctiForValue(intValue).addressForSwitch();
+ else
+ return codeBlock->immediateSwitchJumpTable(tableIndex).ctiDefault.addressForSwitch();
+ }
+}
+
+DEFINE_STUB_FUNCTION(void*, op_switch_char)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue scrutinee = stackFrame.args[0].jsValue();
+ unsigned tableIndex = stackFrame.args[1].int32();
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* codeBlock = callFrame->codeBlock();
+
+ void* result = codeBlock->characterSwitchJumpTable(tableIndex).ctiDefault.addressForSwitch();
+
+ if (scrutinee.isString()) {
+ UString::Rep* value = asString(scrutinee)->value().rep();
+ if (value->size() == 1)
+ result = codeBlock->characterSwitchJumpTable(tableIndex).ctiForValue(value->data()[0]).addressForSwitch();
+ }
+
+ return result;
+}
+
+DEFINE_STUB_FUNCTION(void*, op_switch_string)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ JSValue scrutinee = stackFrame.args[0].jsValue();
+ unsigned tableIndex = stackFrame.args[1].int32();
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* codeBlock = callFrame->codeBlock();
+
+ void* result = codeBlock->stringSwitchJumpTable(tableIndex).ctiDefault.addressForSwitch();
+
+ if (scrutinee.isString()) {
+ UString::Rep* value = asString(scrutinee)->value().rep();
+ result = codeBlock->stringSwitchJumpTable(tableIndex).ctiForValue(value).addressForSwitch();
+ }
+
+ return result;
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, op_del_by_val)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ JSValue baseValue = stackFrame.args[0].jsValue();
+ JSObject* baseObj = baseValue.toObject(callFrame); // may throw
+
+ JSValue subscript = stackFrame.args[1].jsValue();
+ JSValue result;
+ uint32_t i;
+ if (subscript.getUInt32(i))
+ result = jsBoolean(baseObj->deleteProperty(callFrame, i));
+ else {
+ CHECK_FOR_EXCEPTION();
+ Identifier property(callFrame, subscript.toString(callFrame));
+ CHECK_FOR_EXCEPTION();
+ result = jsBoolean(baseObj->deleteProperty(callFrame, property));
+ }
+
+ CHECK_FOR_EXCEPTION_AT_END();
+ return JSValue::encode(result);
+}
+
+DEFINE_STUB_FUNCTION(void, op_put_getter)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ ASSERT(stackFrame.args[0].jsValue().isObject());
+ JSObject* baseObj = asObject(stackFrame.args[0].jsValue());
+ ASSERT(stackFrame.args[2].jsValue().isObject());
+ baseObj->defineGetter(callFrame, stackFrame.args[1].identifier(), asObject(stackFrame.args[2].jsValue()));
+}
+
+DEFINE_STUB_FUNCTION(void, op_put_setter)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ ASSERT(stackFrame.args[0].jsValue().isObject());
+ JSObject* baseObj = asObject(stackFrame.args[0].jsValue());
+ ASSERT(stackFrame.args[2].jsValue().isObject());
+ baseObj->defineSetter(callFrame, stackFrame.args[1].identifier(), asObject(stackFrame.args[2].jsValue()));
+}
+
+DEFINE_STUB_FUNCTION(JSObject*, op_new_error)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ unsigned type = stackFrame.args[0].int32();
+ JSValue message = stackFrame.args[1].jsValue();
+ unsigned bytecodeOffset = stackFrame.args[2].int32();
+
+ unsigned lineNumber = codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset);
+ return Error::create(callFrame, static_cast<ErrorType>(type), message.toString(callFrame), lineNumber, codeBlock->ownerNode()->sourceID(), codeBlock->ownerNode()->sourceURL());
+}
+
+DEFINE_STUB_FUNCTION(void, op_debug)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+
+ int debugHookID = stackFrame.args[0].int32();
+ int firstLine = stackFrame.args[1].int32();
+ int lastLine = stackFrame.args[2].int32();
+
+ stackFrame.globalData->interpreter->debug(callFrame, static_cast<DebugHookID>(debugHookID), firstLine, lastLine);
+}
+
+DEFINE_STUB_FUNCTION(EncodedJSValue, vm_throw)
+{
+ STUB_INIT_STACK_FRAME(stackFrame);
+
+ CallFrame* callFrame = stackFrame.callFrame;
+ CodeBlock* codeBlock = callFrame->codeBlock();
+ JSGlobalData* globalData = stackFrame.globalData;
+
+ unsigned vPCIndex = codeBlock->getBytecodeIndex(callFrame, globalData->exceptionLocation);
+
+ JSValue exceptionValue = globalData->exception;
+ ASSERT(exceptionValue);
+ globalData->exception = JSValue();
+
+ HandlerInfo* handler = globalData->interpreter->throwException(callFrame, exceptionValue, vPCIndex, false);
+
+ if (!handler) {
+ *stackFrame.exception = exceptionValue;
+ return JSValue::encode(jsNull());
+ }
+
+ stackFrame.callFrame = callFrame;
+ void* catchRoutine = handler->nativeCode.addressForExceptionHandler();
+ ASSERT(catchRoutine);
+ STUB_SET_RETURN_ADDRESS(catchRoutine);
+ return JSValue::encode(exceptionValue);
+}
+
+} // namespace JITStubs
+
+} // namespace JSC
+
+#endif // ENABLE(JIT)
diff --git a/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.h b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.h
new file mode 100644
index 0000000..48e5369
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.h
@@ -0,0 +1,319 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JITStubs_h
+#define JITStubs_h
+
+#include <wtf/Platform.h>
+
+#include "MacroAssemblerCodeRef.h"
+#include "Register.h"
+
+#if ENABLE(JIT)
+
+namespace JSC {
+
+ class CodeBlock;
+ class ExecutablePool;
+ class Identifier;
+ class JSGlobalData;
+ class JSGlobalData;
+ class JSObject;
+ class JSPropertyNameIterator;
+ class JSValue;
+ class JSValueEncodedAsPointer;
+ class Profiler;
+ class PropertySlot;
+ class PutPropertySlot;
+ class RegisterFile;
+ class FuncDeclNode;
+ class FuncExprNode;
+ class RegExp;
+
+ union JITStubArg {
+ void* asPointer;
+ EncodedJSValue asEncodedJSValue;
+ int32_t asInt32;
+
+ JSValue jsValue() { return JSValue::decode(asEncodedJSValue); }
+ Identifier& identifier() { return *static_cast<Identifier*>(asPointer); }
+ int32_t int32() { return asInt32; }
+ CodeBlock* codeBlock() { return static_cast<CodeBlock*>(asPointer); }
+ FuncDeclNode* funcDeclNode() { return static_cast<FuncDeclNode*>(asPointer); }
+ FuncExprNode* funcExprNode() { return static_cast<FuncExprNode*>(asPointer); }
+ RegExp* regExp() { return static_cast<RegExp*>(asPointer); }
+ JSPropertyNameIterator* propertyNameIterator() { return static_cast<JSPropertyNameIterator*>(asPointer); }
+ void* returnAddress() { return asPointer; }
+ };
+
+#if PLATFORM(X86_64)
+ struct JITStackFrame {
+ JITStubArg padding; // Unused
+ JITStubArg args[8];
+
+ void* savedRBX;
+ void* savedR15;
+ void* savedR14;
+ void* savedR13;
+ void* savedR12;
+ void* savedRBP;
+ void* savedRIP;
+
+ void* code;
+ RegisterFile* registerFile;
+ CallFrame* callFrame;
+ JSValue* exception;
+ Profiler** enabledProfilerReference;
+ JSGlobalData* globalData;
+
+ // When JIT code makes a call, it pushes its return address just below the rest of the stack.
+ void** returnAddressSlot() { return reinterpret_cast<void**>(this) - 1; }
+ };
+#elif PLATFORM(X86)
+ struct JITStackFrame {
+ JITStubArg padding; // Unused
+ JITStubArg args[6];
+
+ void* savedEBX;
+ void* savedEDI;
+ void* savedESI;
+ void* savedEBP;
+ void* savedEIP;
+
+ void* code;
+ RegisterFile* registerFile;
+ CallFrame* callFrame;
+ JSValue* exception;
+ Profiler** enabledProfilerReference;
+ JSGlobalData* globalData;
+
+ // When JIT code makes a call, it pushes its return address just below the rest of the stack.
+ void** returnAddressSlot() { return reinterpret_cast<void**>(this) - 1; }
+ };
+#else
+#error "JITStackFrame not defined for this platform."
+#endif
+
+#if USE(JIT_STUB_ARGUMENT_VA_LIST)
+ #define STUB_ARGS_DECLARATION void* args, ...
+ #define STUB_ARGS (reinterpret_cast<void**>(vl_args) - 1)
+
+ #if COMPILER(MSVC)
+ #define JIT_STUB __cdecl
+ #else
+ #define JIT_STUB
+ #endif
+#else
+ #define STUB_ARGS_DECLARATION void** args
+ #define STUB_ARGS (args)
+
+ #if PLATFORM(X86) && COMPILER(MSVC)
+ #define JIT_STUB __fastcall
+ #elif PLATFORM(X86) && COMPILER(GCC)
+ #define JIT_STUB __attribute__ ((fastcall))
+ #else
+ #define JIT_STUB
+ #endif
+#endif
+
+#if PLATFORM(X86_64)
+ struct VoidPtrPair {
+ void* first;
+ void* second;
+ };
+ #define RETURN_POINTER_PAIR(a,b) VoidPtrPair pair = { a, b }; return pair
+#else
+ // MSVC doesn't support returning a two-value struct in two registers, so
+ // we cast the struct to int64_t instead.
+ typedef uint64_t VoidPtrPair;
+ union VoidPtrPairUnion {
+ struct { void* first; void* second; } s;
+ VoidPtrPair i;
+ };
+ #define RETURN_POINTER_PAIR(a,b) VoidPtrPairUnion pair = {{ a, b }}; return pair.i
+#endif
+
+ extern "C" void ctiVMThrowTrampoline();
+ extern "C" void ctiOpThrowNotCaught();
+ extern "C" EncodedJSValue ctiTrampoline(
+#if PLATFORM(X86_64)
+ // FIXME: (bug #22910) this will force all arguments onto the stack (regparm(0) does not appear to have any effect).
+ // We can allow register passing here, and move the writes of these values into the trampoline.
+ void*, void*, void*, void*, void*, void*,
+#endif
+ void* code, RegisterFile*, CallFrame*, JSValue* exception, Profiler**, JSGlobalData*);
+
+ class JITThunks {
+ public:
+ JITThunks(JSGlobalData*);
+
+ static void tryCacheGetByID(CallFrame*, CodeBlock*, void* returnAddress, JSValue baseValue, const Identifier& propertyName, const PropertySlot&);
+ static void tryCachePutByID(CallFrame*, CodeBlock*, void* returnAddress, JSValue baseValue, const PutPropertySlot&);
+
+ MacroAssemblerCodePtr ctiArrayLengthTrampoline() { return m_ctiArrayLengthTrampoline; }
+ MacroAssemblerCodePtr ctiStringLengthTrampoline() { return m_ctiStringLengthTrampoline; }
+ MacroAssemblerCodePtr ctiVirtualCallPreLink() { return m_ctiVirtualCallPreLink; }
+ MacroAssemblerCodePtr ctiVirtualCallLink() { return m_ctiVirtualCallLink; }
+ MacroAssemblerCodePtr ctiVirtualCall() { return m_ctiVirtualCall; }
+ MacroAssemblerCodePtr ctiNativeCallThunk() { return m_ctiNativeCallThunk; }
+
+ private:
+ RefPtr<ExecutablePool> m_executablePool;
+
+ MacroAssemblerCodePtr m_ctiArrayLengthTrampoline;
+ MacroAssemblerCodePtr m_ctiStringLengthTrampoline;
+ MacroAssemblerCodePtr m_ctiVirtualCallPreLink;
+ MacroAssemblerCodePtr m_ctiVirtualCallLink;
+ MacroAssemblerCodePtr m_ctiVirtualCall;
+ MacroAssemblerCodePtr m_ctiNativeCallThunk;
+ };
+
+namespace JITStubs { extern "C" {
+
+ void JIT_STUB cti_op_create_arguments(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_create_arguments_no_params(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_debug(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_end(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_jmp_scopes(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_pop_scope(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_profile_did_call(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_profile_will_call(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_put_by_id(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_put_by_id_fail(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_put_by_id_generic(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_put_by_id_second(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_put_by_index(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_put_by_val(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_put_by_val_array(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_put_by_val_byte_array(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_put_getter(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_put_setter(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_ret_scopeChain(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_tear_off_activation(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_op_tear_off_arguments(STUB_ARGS_DECLARATION);
+ void JIT_STUB cti_register_file_check(STUB_ARGS_DECLARATION);
+ int JIT_STUB cti_op_jless(STUB_ARGS_DECLARATION);
+ int JIT_STUB cti_op_jlesseq(STUB_ARGS_DECLARATION);
+ int JIT_STUB cti_op_jtrue(STUB_ARGS_DECLARATION);
+ int JIT_STUB cti_op_load_varargs(STUB_ARGS_DECLARATION);
+ int JIT_STUB cti_op_loop_if_less(STUB_ARGS_DECLARATION);
+ int JIT_STUB cti_op_loop_if_lesseq(STUB_ARGS_DECLARATION);
+ int JIT_STUB cti_op_loop_if_true(STUB_ARGS_DECLARATION);
+ int JIT_STUB cti_timeout_check(STUB_ARGS_DECLARATION);
+ void* JIT_STUB cti_op_call_JSFunction(STUB_ARGS_DECLARATION);
+ void* JIT_STUB cti_op_switch_char(STUB_ARGS_DECLARATION);
+ void* JIT_STUB cti_op_switch_imm(STUB_ARGS_DECLARATION);
+ void* JIT_STUB cti_op_switch_string(STUB_ARGS_DECLARATION);
+ void* JIT_STUB cti_vm_dontLazyLinkCall(STUB_ARGS_DECLARATION);
+ void* JIT_STUB cti_vm_lazyLinkCall(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_construct_JSConstruct(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_convert_this(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_new_array(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_new_error(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_new_func(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_new_func_exp(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_new_object(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_new_regexp(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_push_activation(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_push_new_scope(STUB_ARGS_DECLARATION);
+ JSObject* JIT_STUB cti_op_push_scope(STUB_ARGS_DECLARATION);
+ JSPropertyNameIterator* JIT_STUB cti_op_get_pnames(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_add(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_bitand(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_bitnot(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_bitor(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_bitxor(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_call_NotJSFunction(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_call_eval(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_construct_NotJSConstruct(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_del_by_id(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_del_by_val(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_div(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_eq(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id_method_check(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id_method_check_second(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id_array_fail(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id_generic(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id_proto_fail(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id_proto_list(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id_proto_list_full(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id_second(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id_self_fail(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_id_string_fail(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_val(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_val_byte_array(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_get_by_val_string(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_put_by_id_transition_realloc(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_in(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_instanceof(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_is_boolean(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_is_function(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_is_number(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_is_object(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_is_string(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_is_undefined(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_less(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_lesseq(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_lshift(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_mod(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_mul(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_negate(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_neq(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_next_pname(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_not(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_nstricteq(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_pre_dec(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_pre_inc(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_resolve(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_resolve_base(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_resolve_global(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_resolve_skip(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_rshift(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_strcat(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_stricteq(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_sub(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_throw(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_to_jsnumber(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_to_primitive(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_typeof(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_urshift(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_vm_throw(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_post_dec(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_post_inc(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_resolve_func(STUB_ARGS_DECLARATION);
+ EncodedJSValue JIT_STUB cti_op_resolve_with_base(STUB_ARGS_DECLARATION);
+ VoidPtrPair JIT_STUB cti_op_call_arityCheck(STUB_ARGS_DECLARATION);
+
+}; } // extern "C" namespace JITStubs
+
+} // namespace JSC
+
+#endif // ENABLE(JIT)
+
+#endif // JITStubs_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/jsc.cpp b/src/3rdparty/webkit/JavaScriptCore/jsc.cpp
index c8b796d..21a8c18 100644
--- a/src/3rdparty/webkit/JavaScriptCore/jsc.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/jsc.cpp
@@ -26,6 +26,7 @@
#include "Completion.h"
#include "InitializeThreading.h"
#include "JSArray.h"
+#include "JSFunction.h"
#include "JSLock.h"
#include "PrototypeFunction.h"
#include "SamplingTool.h"
@@ -54,6 +55,7 @@
#if COMPILER(MSVC) && !PLATFORM(WIN_CE)
#include <crtdbg.h>
#include <windows.h>
+#include <mmsystem.h>
#endif
#if PLATFORM(QT)
@@ -67,14 +69,30 @@ using namespace WTF;
static void cleanupGlobalData(JSGlobalData*);
static bool fillBufferWithContentsOfFile(const UString& fileName, Vector<char>& buffer);
-static JSValuePtr functionPrint(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr functionDebug(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr functionGC(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr functionVersion(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr functionRun(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr functionLoad(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr functionReadline(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr functionQuit(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL functionPrint(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL functionDebug(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL functionGC(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL functionVersion(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL functionRun(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL functionLoad(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL functionReadline(ExecState*, JSObject*, JSValue, const ArgList&);
+static NO_RETURN JSValue JSC_HOST_CALL functionQuit(ExecState*, JSObject*, JSValue, const ArgList&);
+
+#if ENABLE(SAMPLING_FLAGS)
+static JSValue JSC_HOST_CALL functionSetSamplingFlags(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL functionClearSamplingFlags(ExecState*, JSObject*, JSValue, const ArgList&);
+#endif
+
+struct Script {
+ bool isFile;
+ char *argument;
+
+ Script(bool isFile, char *argument)
+ : isFile(isFile)
+ , argument(argument)
+ {
+ }
+};
struct Options {
Options()
@@ -85,7 +103,7 @@ struct Options {
bool interactive;
bool dump;
- Vector<UString> fileNames;
+ Vector<Script> scripts;
Vector<UString> arguments;
};
@@ -159,14 +177,19 @@ ASSERT_CLASS_FITS_IN_CELL(GlobalObject);
GlobalObject::GlobalObject(const Vector<UString>& arguments)
: JSGlobalObject()
{
- putDirectFunction(globalExec(), new (globalExec()) PrototypeFunction(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "debug"), functionDebug));
- putDirectFunction(globalExec(), new (globalExec()) PrototypeFunction(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "print"), functionPrint));
- putDirectFunction(globalExec(), new (globalExec()) PrototypeFunction(globalExec(), prototypeFunctionStructure(), 0, Identifier(globalExec(), "quit"), functionQuit));
- putDirectFunction(globalExec(), new (globalExec()) PrototypeFunction(globalExec(), prototypeFunctionStructure(), 0, Identifier(globalExec(), "gc"), functionGC));
- putDirectFunction(globalExec(), new (globalExec()) PrototypeFunction(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "version"), functionVersion));
- putDirectFunction(globalExec(), new (globalExec()) PrototypeFunction(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "run"), functionRun));
- putDirectFunction(globalExec(), new (globalExec()) PrototypeFunction(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "load"), functionLoad));
- putDirectFunction(globalExec(), new (globalExec()) PrototypeFunction(globalExec(), prototypeFunctionStructure(), 0, Identifier(globalExec(), "readline"), functionReadline));
+ putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "debug"), functionDebug));
+ putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "print"), functionPrint));
+ putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 0, Identifier(globalExec(), "quit"), functionQuit));
+ putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 0, Identifier(globalExec(), "gc"), functionGC));
+ putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "version"), functionVersion));
+ putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "run"), functionRun));
+ putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "load"), functionLoad));
+ putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 0, Identifier(globalExec(), "readline"), functionReadline));
+
+#if ENABLE(SAMPLING_FLAGS)
+ putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "setSamplingFlags"), functionSetSamplingFlags));
+ putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "clearSamplingFlags"), functionClearSamplingFlags));
+#endif
JSObject* array = constructEmptyArray(globalExec());
for (size_t i = 0; i < arguments.size(); ++i)
@@ -174,13 +197,13 @@ GlobalObject::GlobalObject(const Vector<UString>& arguments)
putDirect(Identifier(globalExec(), "arguments"), array);
}
-JSValuePtr functionPrint(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL functionPrint(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
for (unsigned i = 0; i < args.size(); ++i) {
if (i != 0)
putchar(' ');
- printf("%s", args.at(exec, i)->toString(exec).UTF8String().c_str());
+ printf("%s", args.at(i).toString(exec).UTF8String().c_str());
}
putchar('\n');
@@ -188,30 +211,30 @@ JSValuePtr functionPrint(ExecState* exec, JSObject*, JSValuePtr, const ArgList&
return jsUndefined();
}
-JSValuePtr functionDebug(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL functionDebug(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- fprintf(stderr, "--> %s\n", args.at(exec, 0)->toString(exec).UTF8String().c_str());
+ fprintf(stderr, "--> %s\n", args.at(0).toString(exec).UTF8String().c_str());
return jsUndefined();
}
-JSValuePtr functionGC(ExecState* exec, JSObject*, JSValuePtr, const ArgList&)
+JSValue JSC_HOST_CALL functionGC(ExecState* exec, JSObject*, JSValue, const ArgList&)
{
JSLock lock(false);
exec->heap()->collect();
return jsUndefined();
}
-JSValuePtr functionVersion(ExecState*, JSObject*, JSValuePtr, const ArgList&)
+JSValue JSC_HOST_CALL functionVersion(ExecState*, JSObject*, JSValue, const ArgList&)
{
// We need this function for compatibility with the Mozilla JS tests but for now
// we don't actually do any version-specific handling
return jsUndefined();
}
-JSValuePtr functionRun(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL functionRun(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
StopWatch stopWatch;
- UString fileName = args.at(exec, 0)->toString(exec);
+ UString fileName = args.at(0).toString(exec);
Vector<char> script;
if (!fillBufferWithContentsOfFile(fileName, script))
return throwError(exec, GeneralError, "Could not open file.");
@@ -225,20 +248,45 @@ JSValuePtr functionRun(ExecState* exec, JSObject*, JSValuePtr, const ArgList& ar
return jsNumber(globalObject->globalExec(), stopWatch.getElapsedMS());
}
-JSValuePtr functionLoad(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL functionLoad(ExecState* exec, JSObject* o, JSValue v, const ArgList& args)
{
- UString fileName = args.at(exec, 0)->toString(exec);
+ UNUSED_PARAM(o);
+ UNUSED_PARAM(v);
+ UString fileName = args.at(0).toString(exec);
Vector<char> script;
if (!fillBufferWithContentsOfFile(fileName, script))
return throwError(exec, GeneralError, "Could not open file.");
JSGlobalObject* globalObject = exec->lexicalGlobalObject();
- evaluate(globalObject->globalExec(), globalObject->globalScopeChain(), makeSource(script.data(), fileName));
+ Completion result = evaluate(globalObject->globalExec(), globalObject->globalScopeChain(), makeSource(script.data(), fileName));
+ if (result.complType() == Throw)
+ exec->setException(result.value());
+ return result.value();
+}
- return jsUndefined();
+#if ENABLE(SAMPLING_FLAGS)
+JSValue JSC_HOST_CALL functionSetSamplingFlags(ExecState* exec, JSObject*, JSValue, const ArgList& args)
+{
+ for (unsigned i = 0; i < args.size(); ++i) {
+ unsigned flag = static_cast<unsigned>(args.at(i).toNumber(exec));
+ if ((flag >= 1) && (flag <= 32))
+ SamplingFlags::setFlag(flag);
+ }
+ return jsNull();
+}
+
+JSValue JSC_HOST_CALL functionClearSamplingFlags(ExecState* exec, JSObject*, JSValue, const ArgList& args)
+{
+ for (unsigned i = 0; i < args.size(); ++i) {
+ unsigned flag = static_cast<unsigned>(args.at(i).toNumber(exec));
+ if ((flag >= 1) && (flag <= 32))
+ SamplingFlags::clearFlag(flag);
+ }
+ return jsNull();
}
+#endif
-JSValuePtr functionReadline(ExecState* exec, JSObject*, JSValuePtr, const ArgList&)
+JSValue JSC_HOST_CALL functionReadline(ExecState* exec, JSObject*, JSValue, const ArgList&)
{
Vector<char, 256> line;
int c;
@@ -252,14 +300,10 @@ JSValuePtr functionReadline(ExecState* exec, JSObject*, JSValuePtr, const ArgLis
return jsString(exec, line.data());
}
-JSValuePtr functionQuit(ExecState* exec, JSObject*, JSValuePtr, const ArgList&)
+JSValue JSC_HOST_CALL functionQuit(ExecState* exec, JSObject*, JSValue, const ArgList&)
{
cleanupGlobalData(&exec->globalData());
exit(EXIT_SUCCESS);
-#if !COMPILER(MSVC) && !PLATFORM(WIN_CE)
- // MSVC knows that exit(0) never returns, so it flags this return statement as unreachable.
- return jsUndefined();
-#endif
}
// Use SEH for Release builds only to get rid of the crash report dialog
@@ -288,10 +332,17 @@ int main(int argc, char** argv)
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
#endif
+#if COMPILER(MSVC) && !PLATFORM(WIN_CE)
+ timeBeginPeriod(1);
+#endif
+
#if PLATFORM(QT)
QCoreApplication app(argc, argv);
#endif
+ // Initialize JSC before getting JSGlobalData.
+ JSC::initializeThreading();
+
// We can't use destructors in the following code because it uses Windows
// Structured Exception Handling
int res = 0;
@@ -311,9 +362,11 @@ static void cleanupGlobalData(JSGlobalData* globalData)
globalData->deref();
}
-static bool runWithScripts(GlobalObject* globalObject, const Vector<UString>& fileNames, bool dump)
+static bool runWithScripts(GlobalObject* globalObject, const Vector<Script>& scripts, bool dump)
{
- Vector<char> script;
+ UString script;
+ UString fileName;
+ Vector<char> scriptBuffer;
if (dump)
BytecodeGenerator::setDumpsGeneratedCode(true);
@@ -321,42 +374,62 @@ static bool runWithScripts(GlobalObject* globalObject, const Vector<UString>& fi
#if ENABLE(OPCODE_SAMPLING)
Interpreter* interpreter = globalObject->globalData()->interpreter;
interpreter->setSampler(new SamplingTool(interpreter));
+ interpreter->sampler()->setup();
+#endif
+#if ENABLE(SAMPLING_FLAGS)
+ SamplingFlags::start();
#endif
bool success = true;
- for (size_t i = 0; i < fileNames.size(); i++) {
- UString fileName = fileNames[i];
-
- if (!fillBufferWithContentsOfFile(fileName, script))
- return false; // fail early so we can catch missing files
+ for (size_t i = 0; i < scripts.size(); i++) {
+ if (scripts[i].isFile) {
+ fileName = scripts[i].argument;
+ if (!fillBufferWithContentsOfFile(fileName, scriptBuffer))
+ return false; // fail early so we can catch missing files
+ script = scriptBuffer.data();
+ } else {
+ script = scripts[i].argument;
+ fileName = "[Command Line]";
+ }
-#if ENABLE(OPCODE_SAMPLING)
- interpreter->sampler()->start();
+#if ENABLE(SAMPLING_THREAD)
+ SamplingThread::start();
#endif
- Completion completion = evaluate(globalObject->globalExec(), globalObject->globalScopeChain(), makeSource(script.data(), fileName));
+
+ Completion completion = evaluate(globalObject->globalExec(), globalObject->globalScopeChain(), makeSource(script, fileName));
success = success && completion.complType() != Throw;
if (dump) {
if (completion.complType() == Throw)
- printf("Exception: %s\n", completion.value()->toString(globalObject->globalExec()).ascii());
+ printf("Exception: %s\n", completion.value().toString(globalObject->globalExec()).ascii());
else
- printf("End: %s\n", completion.value()->toString(globalObject->globalExec()).ascii());
+ printf("End: %s\n", completion.value().toString(globalObject->globalExec()).ascii());
}
- globalObject->globalExec()->clearException();
-
-#if ENABLE(OPCODE_SAMPLING)
- interpreter->sampler()->stop();
+#if ENABLE(SAMPLING_THREAD)
+ SamplingThread::stop();
#endif
+
+ globalObject->globalExec()->clearException();
}
+#if ENABLE(SAMPLING_FLAGS)
+ SamplingFlags::stop();
+#endif
#if ENABLE(OPCODE_SAMPLING)
interpreter->sampler()->dump(globalObject->globalExec());
delete interpreter->sampler();
#endif
+#if ENABLE(SAMPLING_COUNTERS)
+ AbstractSamplingCounter::dump();
+#endif
return success;
}
-static void runInteractive(GlobalObject* globalObject)
+static
+#if !HAVE(READLINE)
+NO_RETURN
+#endif
+void runInteractive(GlobalObject* globalObject)
{
while (true) {
#if HAVE(READLINE)
@@ -381,39 +454,48 @@ static void runInteractive(GlobalObject* globalObject)
Completion completion = evaluate(globalObject->globalExec(), globalObject->globalScopeChain(), makeSource(line.data(), interpreterName));
#endif
if (completion.complType() == Throw)
- printf("Exception: %s\n", completion.value()->toString(globalObject->globalExec()).ascii());
+ printf("Exception: %s\n", completion.value().toString(globalObject->globalExec()).ascii());
else
- printf("%s\n", completion.value()->toString(globalObject->globalExec()).UTF8String().c_str());
+ printf("%s\n", completion.value().toString(globalObject->globalExec()).UTF8String().c_str());
globalObject->globalExec()->clearException();
}
printf("\n");
}
-static void printUsageStatement()
+static NO_RETURN void printUsageStatement(JSGlobalData* globalData, bool help = false)
{
fprintf(stderr, "Usage: jsc [options] [files] [-- arguments]\n");
fprintf(stderr, " -d Dumps bytecode (debug builds only)\n");
+ fprintf(stderr, " -e Evaluate argument as script code\n");
fprintf(stderr, " -f Specifies a source file (deprecated)\n");
fprintf(stderr, " -h|--help Prints this help message\n");
fprintf(stderr, " -i Enables interactive mode (default if no files are specified)\n");
fprintf(stderr, " -s Installs signal handlers that exit on a crash (Unix platforms only)\n");
- exit(EXIT_FAILURE);
+
+ cleanupGlobalData(globalData);
+ exit(help ? EXIT_SUCCESS : EXIT_FAILURE);
}
-static void parseArguments(int argc, char** argv, Options& options)
+static void parseArguments(int argc, char** argv, Options& options, JSGlobalData* globalData)
{
int i = 1;
for (; i < argc; ++i) {
const char* arg = argv[i];
if (strcmp(arg, "-f") == 0) {
if (++i == argc)
- printUsageStatement();
- options.fileNames.append(argv[i]);
+ printUsageStatement(globalData);
+ options.scripts.append(Script(true, argv[i]));
+ continue;
+ }
+ if (strcmp(arg, "-e") == 0) {
+ if (++i == argc)
+ printUsageStatement(globalData);
+ options.scripts.append(Script(false, argv[i]));
continue;
}
if (strcmp(arg, "-h") == 0 || strcmp(arg, "--help") == 0) {
- printUsageStatement();
+ printUsageStatement(globalData, true);
}
if (strcmp(arg, "-i") == 0) {
options.interactive = true;
@@ -436,10 +518,10 @@ static void parseArguments(int argc, char** argv, Options& options)
++i;
break;
}
- options.fileNames.append(argv[i]);
+ options.scripts.append(Script(true, argv[i]));
}
- if (options.fileNames.isEmpty())
+ if (options.scripts.isEmpty())
options.interactive = true;
for (; i < argc; ++i)
@@ -448,15 +530,13 @@ static void parseArguments(int argc, char** argv, Options& options)
int jscmain(int argc, char** argv, JSGlobalData* globalData)
{
- JSC::initializeThreading();
-
JSLock lock(false);
Options options;
- parseArguments(argc, argv, options);
+ parseArguments(argc, argv, options, globalData);
GlobalObject* globalObject = new (globalData) GlobalObject(options.arguments);
- bool success = runWithScripts(globalObject, options.fileNames, options.dump);
+ bool success = runWithScripts(globalObject, options.scripts, options.dump);
if (options.interactive && success)
runInteractive(globalObject);
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Grammar.y b/src/3rdparty/webkit/JavaScriptCore/parser/Grammar.y
index ae787f6..52dddde 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/Grammar.y
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/Grammar.y
@@ -29,7 +29,7 @@
#include <stdlib.h>
#include "JSValue.h"
#include "JSObject.h"
-#include "Nodes.h"
+#include "NodeConstructors.h"
#include "Lexer.h"
#include "JSString.h"
#include "JSGlobalData.h"
@@ -99,24 +99,24 @@ static ExpressionNode* combineVarInitializers(void*, ExpressionNode* list, Assig
#define YYPARSE_PARAM globalPtr
#define YYLEX_PARAM globalPtr
-template <typename T> NodeDeclarationInfo<T> createNodeDeclarationInfo(T node, ParserRefCountedData<DeclarationStacks::VarStack>* varDecls,
- ParserRefCountedData<DeclarationStacks::FunctionStack>* funcDecls,
+template <typename T> NodeDeclarationInfo<T> createNodeDeclarationInfo(T node, ParserArenaData<DeclarationStacks::VarStack>* varDecls,
+ ParserArenaData<DeclarationStacks::FunctionStack>* funcDecls,
CodeFeatures info,
int numConstants)
{
ASSERT((info & ~AllFeatures) == 0);
- NodeDeclarationInfo<T> result = {node, varDecls, funcDecls, info, numConstants};
+ NodeDeclarationInfo<T> result = { node, varDecls, funcDecls, info, numConstants };
return result;
}
template <typename T> NodeInfo<T> createNodeInfo(T node, CodeFeatures info, int numConstants)
{
ASSERT((info & ~AllFeatures) == 0);
- NodeInfo<T> result = {node, info, numConstants};
+ NodeInfo<T> result = { node, info, numConstants };
return result;
}
-template <typename T> T mergeDeclarationLists(T decls1, T decls2)
+template <typename T> inline T mergeDeclarationLists(T decls1, T decls2)
{
// decls1 or both are null
if (!decls1)
@@ -128,28 +128,28 @@ template <typename T> T mergeDeclarationLists(T decls1, T decls2)
// Both are non-null
decls1->data.append(decls2->data);
- // We manually release the declaration lists to avoid accumulating many many
- // unused heap allocated vectors
- decls2->ref();
- decls2->deref();
+ // Manually release as much as possible from the now-defunct declaration lists
+ // to avoid accumulating so many unused heap allocated vectors.
+ decls2->data.clear();
+
return decls1;
}
-static void appendToVarDeclarationList(void* globalPtr, ParserRefCountedData<DeclarationStacks::VarStack>*& varDecls, const Identifier& ident, unsigned attrs)
+static void appendToVarDeclarationList(void* globalPtr, ParserArenaData<DeclarationStacks::VarStack>*& varDecls, const Identifier& ident, unsigned attrs)
{
if (!varDecls)
- varDecls = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ varDecls = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
varDecls->data.append(make_pair(ident, attrs));
}
-static inline void appendToVarDeclarationList(void* globalPtr, ParserRefCountedData<DeclarationStacks::VarStack>*& varDecls, ConstDeclNode* decl)
+static inline void appendToVarDeclarationList(void* globalPtr, ParserArenaData<DeclarationStacks::VarStack>*& varDecls, ConstDeclNode* decl)
{
unsigned attrs = DeclarationStacks::IsConstant;
- if (decl->m_init)
+ if (decl->hasInitializer())
attrs |= DeclarationStacks::HasInitializer;
- appendToVarDeclarationList(globalPtr, varDecls, decl->m_ident, attrs);
+ appendToVarDeclarationList(globalPtr, varDecls, decl->ident(), attrs);
}
%}
@@ -218,7 +218,7 @@ static inline void appendToVarDeclarationList(void* globalPtr, ParserRefCountedD
%token ANDEQUAL MODEQUAL /* &= and %= */
%token XOREQUAL OREQUAL /* ^= and |= */
%token <intValue> OPENBRACE /* { (with char offset) */
-%token <intValue> CLOSEBRACE /* { (with char offset) */
+%token <intValue> CLOSEBRACE /* } (with char offset) */
/* terminal types */
%token <doubleValue> NUMBER
@@ -264,7 +264,7 @@ static inline void appendToVarDeclarationList(void* globalPtr, ParserRefCountedD
%type <expressionNode> Initializer InitializerNoIn
%type <statementNode> FunctionDeclaration
%type <funcExprNode> FunctionExpr
-%type <functionBodyNode> FunctionBody
+%type <functionBodyNode> FunctionBody
%type <sourceElements> SourceElements
%type <parameterList> FormalParameterList
%type <op> AssignmentOperator
@@ -287,16 +287,16 @@ static inline void appendToVarDeclarationList(void* globalPtr, ParserRefCountedD
// In the mean time, make sure to make any changes to the grammar in both versions.
Literal:
- NULLTOKEN { $$ = createNodeInfo<ExpressionNode*>(new NullNode(GLOBAL_DATA), 0, 1); }
- | TRUETOKEN { $$ = createNodeInfo<ExpressionNode*>(new BooleanNode(GLOBAL_DATA, true), 0, 1); }
- | FALSETOKEN { $$ = createNodeInfo<ExpressionNode*>(new BooleanNode(GLOBAL_DATA, false), 0, 1); }
+ NULLTOKEN { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NullNode(GLOBAL_DATA), 0, 1); }
+ | TRUETOKEN { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BooleanNode(GLOBAL_DATA, true), 0, 1); }
+ | FALSETOKEN { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BooleanNode(GLOBAL_DATA, false), 0, 1); }
| NUMBER { $$ = createNodeInfo<ExpressionNode*>(makeNumberNode(GLOBAL_DATA, $1), 0, 1); }
- | STRING { $$ = createNodeInfo<ExpressionNode*>(new StringNode(GLOBAL_DATA, *$1), 0, 1); }
+ | STRING { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StringNode(GLOBAL_DATA, *$1), 0, 1); }
| '/' /* regexp */ {
Lexer& l = *LEXER;
if (!l.scanRegExp())
YYABORT;
- RegExpNode* node = new RegExpNode(GLOBAL_DATA, l.pattern(), l.flags());
+ RegExpNode* node = new (GLOBAL_DATA) RegExpNode(GLOBAL_DATA, l.pattern(), l.flags());
int size = l.pattern().size() + 2; // + 2 for the two /'s
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.first_column + size, @1.first_column + size);
$$ = createNodeInfo<ExpressionNode*>(node, 0, 0);
@@ -305,7 +305,7 @@ Literal:
Lexer& l = *LEXER;
if (!l.scanRegExp())
YYABORT;
- RegExpNode* node = new RegExpNode(GLOBAL_DATA, "=" + l.pattern(), l.flags());
+ RegExpNode* node = new (GLOBAL_DATA) RegExpNode(GLOBAL_DATA, "=" + l.pattern(), l.flags());
int size = l.pattern().size() + 2; // + 2 for the two /'s
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.first_column + size, @1.first_column + size);
$$ = createNodeInfo<ExpressionNode*>(node, 0, 0);
@@ -313,9 +313,9 @@ Literal:
;
Property:
- IDENT ':' AssignmentExpr { $$ = createNodeInfo<PropertyNode*>(new PropertyNode(GLOBAL_DATA, *$1, $3.m_node, PropertyNode::Constant), $3.m_features, $3.m_numConstants); }
- | STRING ':' AssignmentExpr { $$ = createNodeInfo<PropertyNode*>(new PropertyNode(GLOBAL_DATA, *$1, $3.m_node, PropertyNode::Constant), $3.m_features, $3.m_numConstants); }
- | NUMBER ':' AssignmentExpr { $$ = createNodeInfo<PropertyNode*>(new PropertyNode(GLOBAL_DATA, Identifier(GLOBAL_DATA, UString::from($1)), $3.m_node, PropertyNode::Constant), $3.m_features, $3.m_numConstants); }
+ IDENT ':' AssignmentExpr { $$ = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *$1, $3.m_node, PropertyNode::Constant), $3.m_features, $3.m_numConstants); }
+ | STRING ':' AssignmentExpr { $$ = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *$1, $3.m_node, PropertyNode::Constant), $3.m_features, $3.m_numConstants); }
+ | NUMBER ':' AssignmentExpr { $$ = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, Identifier(GLOBAL_DATA, UString::from($1)), $3.m_node, PropertyNode::Constant), $3.m_features, $3.m_numConstants); }
| IDENT IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(globalPtr, *$1, *$2, 0, $6, LEXER->sourceCode($5, $7, @5.first_line)), ClosureFeature, 0); DBG($6, @5, @7); if (!$$.m_node) YYABORT; }
| IDENT IDENT '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
{
@@ -329,46 +329,46 @@ Property:
;
PropertyList:
- Property { $$.m_node.head = new PropertyListNode(GLOBAL_DATA, $1.m_node);
+ Property { $$.m_node.head = new (GLOBAL_DATA) PropertyListNode(GLOBAL_DATA, $1.m_node);
$$.m_node.tail = $$.m_node.head;
$$.m_features = $1.m_features;
$$.m_numConstants = $1.m_numConstants; }
| PropertyList ',' Property { $$.m_node.head = $1.m_node.head;
- $$.m_node.tail = new PropertyListNode(GLOBAL_DATA, $3.m_node, $1.m_node.tail);
+ $$.m_node.tail = new (GLOBAL_DATA) PropertyListNode(GLOBAL_DATA, $3.m_node, $1.m_node.tail);
$$.m_features = $1.m_features | $3.m_features;
$$.m_numConstants = $1.m_numConstants + $3.m_numConstants; }
;
PrimaryExpr:
PrimaryExprNoBrace
- | OPENBRACE CLOSEBRACE { $$ = createNodeInfo<ExpressionNode*>(new ObjectLiteralNode(GLOBAL_DATA), 0, 0); }
- | OPENBRACE PropertyList CLOSEBRACE { $$ = createNodeInfo<ExpressionNode*>(new ObjectLiteralNode(GLOBAL_DATA, $2.m_node.head), $2.m_features, $2.m_numConstants); }
+ | OPENBRACE CLOSEBRACE { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA), 0, 0); }
+ | OPENBRACE PropertyList CLOSEBRACE { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA, $2.m_node.head), $2.m_features, $2.m_numConstants); }
/* allow extra comma, see http://bugs.webkit.org/show_bug.cgi?id=5939 */
- | OPENBRACE PropertyList ',' CLOSEBRACE { $$ = createNodeInfo<ExpressionNode*>(new ObjectLiteralNode(GLOBAL_DATA, $2.m_node.head), $2.m_features, $2.m_numConstants); }
+ | OPENBRACE PropertyList ',' CLOSEBRACE { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA, $2.m_node.head), $2.m_features, $2.m_numConstants); }
;
PrimaryExprNoBrace:
- THISTOKEN { $$ = createNodeInfo<ExpressionNode*>(new ThisNode(GLOBAL_DATA), ThisFeature, 0); }
+ THISTOKEN { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ThisNode(GLOBAL_DATA), ThisFeature, 0); }
| Literal
| ArrayLiteral
- | IDENT { $$ = createNodeInfo<ExpressionNode*>(new ResolveNode(GLOBAL_DATA, *$1, @1.first_column), (*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); }
+ | IDENT { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ResolveNode(GLOBAL_DATA, *$1, @1.first_column), (*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); }
| '(' Expr ')' { $$ = $2; }
;
ArrayLiteral:
- '[' ElisionOpt ']' { $$ = createNodeInfo<ExpressionNode*>(new ArrayNode(GLOBAL_DATA, $2), 0, $2 ? 1 : 0); }
- | '[' ElementList ']' { $$ = createNodeInfo<ExpressionNode*>(new ArrayNode(GLOBAL_DATA, $2.m_node.head), $2.m_features, $2.m_numConstants); }
- | '[' ElementList ',' ElisionOpt ']' { $$ = createNodeInfo<ExpressionNode*>(new ArrayNode(GLOBAL_DATA, $4, $2.m_node.head), $2.m_features, $4 ? $2.m_numConstants + 1 : $2.m_numConstants); }
+ '[' ElisionOpt ']' { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, $2), 0, $2 ? 1 : 0); }
+ | '[' ElementList ']' { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, $2.m_node.head), $2.m_features, $2.m_numConstants); }
+ | '[' ElementList ',' ElisionOpt ']' { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, $4, $2.m_node.head), $2.m_features, $4 ? $2.m_numConstants + 1 : $2.m_numConstants); }
;
ElementList:
- ElisionOpt AssignmentExpr { $$.m_node.head = new ElementNode(GLOBAL_DATA, $1, $2.m_node);
+ ElisionOpt AssignmentExpr { $$.m_node.head = new (GLOBAL_DATA) ElementNode(GLOBAL_DATA, $1, $2.m_node);
$$.m_node.tail = $$.m_node.head;
$$.m_features = $2.m_features;
$$.m_numConstants = $2.m_numConstants; }
| ElementList ',' ElisionOpt AssignmentExpr
{ $$.m_node.head = $1.m_node.head;
- $$.m_node.tail = new ElementNode(GLOBAL_DATA, $1.m_node.tail, $3, $4.m_node);
+ $$.m_node.tail = new (GLOBAL_DATA) ElementNode(GLOBAL_DATA, $1.m_node.tail, $3, $4.m_node);
$$.m_features = $1.m_features | $4.m_features;
$$.m_numConstants = $1.m_numConstants + $4.m_numConstants; }
;
@@ -386,15 +386,15 @@ Elision:
MemberExpr:
PrimaryExpr
| FunctionExpr { $$ = createNodeInfo<ExpressionNode*>($1.m_node, $1.m_features, $1.m_numConstants); }
- | MemberExpr '[' Expr ']' { BracketAccessorNode* node = new BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
+ | MemberExpr '[' Expr ']' { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @4.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants);
}
- | MemberExpr '.' IDENT { DotAccessorNode* node = new DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
+ | MemberExpr '.' IDENT { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features, $1.m_numConstants);
}
- | NEW MemberExpr Arguments { NewExprNode* node = new NewExprNode(GLOBAL_DATA, $2.m_node, $3.m_node);
+ | NEW MemberExpr Arguments { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, $2.m_node, $3.m_node);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $2.m_features | $3.m_features, $2.m_numConstants + $3.m_numConstants);
}
@@ -402,15 +402,15 @@ MemberExpr:
MemberExprNoBF:
PrimaryExprNoBrace
- | MemberExprNoBF '[' Expr ']' { BracketAccessorNode* node = new BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
+ | MemberExprNoBF '[' Expr ']' { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @4.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants);
}
- | MemberExprNoBF '.' IDENT { DotAccessorNode* node = new DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
+ | MemberExprNoBF '.' IDENT { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features, $1.m_numConstants);
}
- | NEW MemberExpr Arguments { NewExprNode* node = new NewExprNode(GLOBAL_DATA, $2.m_node, $3.m_node);
+ | NEW MemberExpr Arguments { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, $2.m_node, $3.m_node);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $2.m_features | $3.m_features, $2.m_numConstants + $3.m_numConstants);
}
@@ -418,7 +418,7 @@ MemberExprNoBF:
NewExpr:
MemberExpr
- | NEW NewExpr { NewExprNode* node = new NewExprNode(GLOBAL_DATA, $2.m_node);
+ | NEW NewExpr { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, $2.m_node);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $2.m_features, $2.m_numConstants);
}
@@ -426,7 +426,7 @@ NewExpr:
NewExprNoBF:
MemberExprNoBF
- | NEW NewExpr { NewExprNode* node = new NewExprNode(GLOBAL_DATA, $2.m_node);
+ | NEW NewExpr { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, $2.m_node);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $2.m_features, $2.m_numConstants);
}
@@ -435,11 +435,11 @@ NewExprNoBF:
CallExpr:
MemberExpr Arguments { $$ = makeFunctionCallNode(globalPtr, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
| CallExpr Arguments { $$ = makeFunctionCallNode(globalPtr, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
- | CallExpr '[' Expr ']' { BracketAccessorNode* node = new BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
+ | CallExpr '[' Expr ']' { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @4.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants);
}
- | CallExpr '.' IDENT { DotAccessorNode* node = new DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
+ | CallExpr '.' IDENT { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features, $1.m_numConstants); }
;
@@ -447,28 +447,28 @@ CallExpr:
CallExprNoBF:
MemberExprNoBF Arguments { $$ = makeFunctionCallNode(globalPtr, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
| CallExprNoBF Arguments { $$ = makeFunctionCallNode(globalPtr, $1, $2, @1.first_column, @1.last_column, @2.last_column); }
- | CallExprNoBF '[' Expr ']' { BracketAccessorNode* node = new BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
+ | CallExprNoBF '[' Expr ']' { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @4.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants);
}
- | CallExprNoBF '.' IDENT { DotAccessorNode* node = new DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
+ | CallExprNoBF '.' IDENT { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, $1.m_node, *$3);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features, $1.m_numConstants);
}
;
Arguments:
- '(' ')' { $$ = createNodeInfo<ArgumentsNode*>(new ArgumentsNode(GLOBAL_DATA), 0, 0); }
- | '(' ArgumentList ')' { $$ = createNodeInfo<ArgumentsNode*>(new ArgumentsNode(GLOBAL_DATA, $2.m_node.head), $2.m_features, $2.m_numConstants); }
+ '(' ')' { $$ = createNodeInfo<ArgumentsNode*>(new (GLOBAL_DATA) ArgumentsNode(GLOBAL_DATA), 0, 0); }
+ | '(' ArgumentList ')' { $$ = createNodeInfo<ArgumentsNode*>(new (GLOBAL_DATA) ArgumentsNode(GLOBAL_DATA, $2.m_node.head), $2.m_features, $2.m_numConstants); }
;
ArgumentList:
- AssignmentExpr { $$.m_node.head = new ArgumentListNode(GLOBAL_DATA, $1.m_node);
+ AssignmentExpr { $$.m_node.head = new (GLOBAL_DATA) ArgumentListNode(GLOBAL_DATA, $1.m_node);
$$.m_node.tail = $$.m_node.head;
$$.m_features = $1.m_features;
$$.m_numConstants = $1.m_numConstants; }
| ArgumentList ',' AssignmentExpr { $$.m_node.head = $1.m_node.head;
- $$.m_node.tail = new ArgumentListNode(GLOBAL_DATA, $1.m_node.tail, $3.m_node);
+ $$.m_node.tail = new (GLOBAL_DATA) ArgumentListNode(GLOBAL_DATA, $1.m_node.tail, $3.m_node);
$$.m_features = $1.m_features | $3.m_features;
$$.m_numConstants = $1.m_numConstants + $3.m_numConstants; }
;
@@ -497,16 +497,16 @@ PostfixExprNoBF:
UnaryExprCommon:
DELETETOKEN UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(makeDeleteNode(GLOBAL_DATA, $2.m_node, @1.first_column, @2.last_column, @2.last_column), $2.m_features, $2.m_numConstants); }
- | VOIDTOKEN UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(new VoidNode(GLOBAL_DATA, $2.m_node), $2.m_features, $2.m_numConstants + 1); }
+ | VOIDTOKEN UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) VoidNode(GLOBAL_DATA, $2.m_node), $2.m_features, $2.m_numConstants + 1); }
| TYPEOF UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(makeTypeOfNode(GLOBAL_DATA, $2.m_node), $2.m_features, $2.m_numConstants); }
| PLUSPLUS UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, $2.m_node, OpPlusPlus, @1.first_column, @2.first_column + 1, @2.last_column), $2.m_features | AssignFeature, $2.m_numConstants); }
| AUTOPLUSPLUS UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, $2.m_node, OpPlusPlus, @1.first_column, @2.first_column + 1, @2.last_column), $2.m_features | AssignFeature, $2.m_numConstants); }
| MINUSMINUS UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, $2.m_node, OpMinusMinus, @1.first_column, @2.first_column + 1, @2.last_column), $2.m_features | AssignFeature, $2.m_numConstants); }
| AUTOMINUSMINUS UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, $2.m_node, OpMinusMinus, @1.first_column, @2.first_column + 1, @2.last_column), $2.m_features | AssignFeature, $2.m_numConstants); }
- | '+' UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(new UnaryPlusNode(GLOBAL_DATA, $2.m_node), $2.m_features, $2.m_numConstants); }
+ | '+' UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, $2.m_node), $2.m_features, $2.m_numConstants); }
| '-' UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(makeNegateNode(GLOBAL_DATA, $2.m_node), $2.m_features, $2.m_numConstants); }
| '~' UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(makeBitwiseNotNode(GLOBAL_DATA, $2.m_node), $2.m_features, $2.m_numConstants); }
- | '!' UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(new LogicalNotNode(GLOBAL_DATA, $2.m_node), $2.m_features, $2.m_numConstants); }
+ | '!' UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalNotNode(GLOBAL_DATA, $2.m_node), $2.m_features, $2.m_numConstants); }
UnaryExpr:
PostfixExpr
@@ -522,7 +522,7 @@ MultiplicativeExpr:
UnaryExpr
| MultiplicativeExpr '*' UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(makeMultNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| MultiplicativeExpr '/' UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(makeDivNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | MultiplicativeExpr '%' UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(new ModNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | MultiplicativeExpr '%' UnaryExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ModNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
MultiplicativeExprNoBF:
@@ -532,7 +532,7 @@ MultiplicativeExprNoBF:
| MultiplicativeExprNoBF '/' UnaryExpr
{ $$ = createNodeInfo<ExpressionNode*>(makeDivNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| MultiplicativeExprNoBF '%' UnaryExpr
- { $$ = createNodeInfo<ExpressionNode*>(new ModNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ModNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
AdditiveExpr:
@@ -553,188 +553,188 @@ ShiftExpr:
AdditiveExpr
| ShiftExpr LSHIFT AdditiveExpr { $$ = createNodeInfo<ExpressionNode*>(makeLeftShiftNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| ShiftExpr RSHIFT AdditiveExpr { $$ = createNodeInfo<ExpressionNode*>(makeRightShiftNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | ShiftExpr URSHIFT AdditiveExpr { $$ = createNodeInfo<ExpressionNode*>(new UnsignedRightShiftNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | ShiftExpr URSHIFT AdditiveExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnsignedRightShiftNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
ShiftExprNoBF:
AdditiveExprNoBF
| ShiftExprNoBF LSHIFT AdditiveExpr { $$ = createNodeInfo<ExpressionNode*>(makeLeftShiftNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| ShiftExprNoBF RSHIFT AdditiveExpr { $$ = createNodeInfo<ExpressionNode*>(makeRightShiftNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | ShiftExprNoBF URSHIFT AdditiveExpr { $$ = createNodeInfo<ExpressionNode*>(new UnsignedRightShiftNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | ShiftExprNoBF URSHIFT AdditiveExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnsignedRightShiftNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
RelationalExpr:
ShiftExpr
- | RelationalExpr '<' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new LessNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExpr '>' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new GreaterNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExpr LE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new LessEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExpr GE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new GreaterEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExpr INSTANCEOF ShiftExpr { InstanceOfNode* node = new InstanceOfNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
+ | RelationalExpr '<' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExpr '>' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExpr LE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExpr GE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExpr INSTANCEOF ShiftExpr { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @3.first_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExpr INTOKEN ShiftExpr { InNode* node = new InNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
+ | RelationalExpr INTOKEN ShiftExpr { InNode* node = new (GLOBAL_DATA) InNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @3.first_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
RelationalExprNoIn:
ShiftExpr
- | RelationalExprNoIn '<' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new LessNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExprNoIn '>' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new GreaterNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExprNoIn LE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new LessEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExprNoIn GE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new GreaterEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExprNoIn '<' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExprNoIn '>' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExprNoIn LE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExprNoIn GE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| RelationalExprNoIn INSTANCEOF ShiftExpr
- { InstanceOfNode* node = new InstanceOfNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
+ { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @3.first_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
RelationalExprNoBF:
ShiftExprNoBF
- | RelationalExprNoBF '<' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new LessNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExprNoBF '>' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new GreaterNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExprNoBF LE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new LessEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | RelationalExprNoBF GE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new GreaterEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExprNoBF '<' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExprNoBF '>' ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExprNoBF LE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | RelationalExprNoBF GE ShiftExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| RelationalExprNoBF INSTANCEOF ShiftExpr
- { InstanceOfNode* node = new InstanceOfNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
+ { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @3.first_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| RelationalExprNoBF INTOKEN ShiftExpr
- { InNode* node = new InNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
+ { InNode* node = new (GLOBAL_DATA) InNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @3.first_column, @3.last_column);
$$ = createNodeInfo<ExpressionNode*>(node, $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
EqualityExpr:
RelationalExpr
- | EqualityExpr EQEQ RelationalExpr { $$ = createNodeInfo<ExpressionNode*>(new EqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | EqualityExpr NE RelationalExpr { $$ = createNodeInfo<ExpressionNode*>(new NotEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | EqualityExpr STREQ RelationalExpr { $$ = createNodeInfo<ExpressionNode*>(new StrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | EqualityExpr STRNEQ RelationalExpr { $$ = createNodeInfo<ExpressionNode*>(new NotStrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | EqualityExpr EQEQ RelationalExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | EqualityExpr NE RelationalExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | EqualityExpr STREQ RelationalExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | EqualityExpr STRNEQ RelationalExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
EqualityExprNoIn:
RelationalExprNoIn
| EqualityExprNoIn EQEQ RelationalExprNoIn
- { $$ = createNodeInfo<ExpressionNode*>(new EqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| EqualityExprNoIn NE RelationalExprNoIn
- { $$ = createNodeInfo<ExpressionNode*>(new NotEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| EqualityExprNoIn STREQ RelationalExprNoIn
- { $$ = createNodeInfo<ExpressionNode*>(new StrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| EqualityExprNoIn STRNEQ RelationalExprNoIn
- { $$ = createNodeInfo<ExpressionNode*>(new NotStrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
EqualityExprNoBF:
RelationalExprNoBF
| EqualityExprNoBF EQEQ RelationalExpr
- { $$ = createNodeInfo<ExpressionNode*>(new EqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
- | EqualityExprNoBF NE RelationalExpr { $$ = createNodeInfo<ExpressionNode*>(new NotEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | EqualityExprNoBF NE RelationalExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| EqualityExprNoBF STREQ RelationalExpr
- { $$ = createNodeInfo<ExpressionNode*>(new StrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
| EqualityExprNoBF STRNEQ RelationalExpr
- { $$ = createNodeInfo<ExpressionNode*>(new NotStrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
BitwiseANDExpr:
EqualityExpr
- | BitwiseANDExpr '&' EqualityExpr { $$ = createNodeInfo<ExpressionNode*>(new BitAndNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | BitwiseANDExpr '&' EqualityExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
BitwiseANDExprNoIn:
EqualityExprNoIn
| BitwiseANDExprNoIn '&' EqualityExprNoIn
- { $$ = createNodeInfo<ExpressionNode*>(new BitAndNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
BitwiseANDExprNoBF:
EqualityExprNoBF
- | BitwiseANDExprNoBF '&' EqualityExpr { $$ = createNodeInfo<ExpressionNode*>(new BitAndNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | BitwiseANDExprNoBF '&' EqualityExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
BitwiseXORExpr:
BitwiseANDExpr
- | BitwiseXORExpr '^' BitwiseANDExpr { $$ = createNodeInfo<ExpressionNode*>(new BitXOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | BitwiseXORExpr '^' BitwiseANDExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
BitwiseXORExprNoIn:
BitwiseANDExprNoIn
| BitwiseXORExprNoIn '^' BitwiseANDExprNoIn
- { $$ = createNodeInfo<ExpressionNode*>(new BitXOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
BitwiseXORExprNoBF:
BitwiseANDExprNoBF
| BitwiseXORExprNoBF '^' BitwiseANDExpr
- { $$ = createNodeInfo<ExpressionNode*>(new BitXOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
BitwiseORExpr:
BitwiseXORExpr
- | BitwiseORExpr '|' BitwiseXORExpr { $$ = createNodeInfo<ExpressionNode*>(new BitOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | BitwiseORExpr '|' BitwiseXORExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
BitwiseORExprNoIn:
BitwiseXORExprNoIn
| BitwiseORExprNoIn '|' BitwiseXORExprNoIn
- { $$ = createNodeInfo<ExpressionNode*>(new BitOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
BitwiseORExprNoBF:
BitwiseXORExprNoBF
| BitwiseORExprNoBF '|' BitwiseXORExpr
- { $$ = createNodeInfo<ExpressionNode*>(new BitOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, $1.m_node, $3.m_node, $3.m_features & AssignFeature), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
LogicalANDExpr:
BitwiseORExpr
- | LogicalANDExpr AND BitwiseORExpr { $$ = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalAnd), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | LogicalANDExpr AND BitwiseORExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalAnd), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
LogicalANDExprNoIn:
BitwiseORExprNoIn
| LogicalANDExprNoIn AND BitwiseORExprNoIn
- { $$ = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalAnd), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalAnd), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
LogicalANDExprNoBF:
BitwiseORExprNoBF
| LogicalANDExprNoBF AND BitwiseORExpr
- { $$ = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalAnd), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalAnd), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
LogicalORExpr:
LogicalANDExpr
- | LogicalORExpr OR LogicalANDExpr { $$ = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalOr), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | LogicalORExpr OR LogicalANDExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalOr), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
LogicalORExprNoIn:
LogicalANDExprNoIn
| LogicalORExprNoIn OR LogicalANDExprNoIn
- { $$ = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalOr), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalOr), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
LogicalORExprNoBF:
LogicalANDExprNoBF
- | LogicalORExprNoBF OR LogicalANDExpr { $$ = createNodeInfo<ExpressionNode*>(new LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalOr), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | LogicalORExprNoBF OR LogicalANDExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, $1.m_node, $3.m_node, OpLogicalOr), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
ConditionalExpr:
LogicalORExpr
| LogicalORExpr '?' AssignmentExpr ':' AssignmentExpr
- { $$ = createNodeInfo<ExpressionNode*>(new ConditionalNode(GLOBAL_DATA, $1.m_node, $3.m_node, $5.m_node), $1.m_features | $3.m_features | $5.m_features, $1.m_numConstants + $3.m_numConstants + $5.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, $1.m_node, $3.m_node, $5.m_node), $1.m_features | $3.m_features | $5.m_features, $1.m_numConstants + $3.m_numConstants + $5.m_numConstants); }
;
ConditionalExprNoIn:
LogicalORExprNoIn
| LogicalORExprNoIn '?' AssignmentExprNoIn ':' AssignmentExprNoIn
- { $$ = createNodeInfo<ExpressionNode*>(new ConditionalNode(GLOBAL_DATA, $1.m_node, $3.m_node, $5.m_node), $1.m_features | $3.m_features | $5.m_features, $1.m_numConstants + $3.m_numConstants + $5.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, $1.m_node, $3.m_node, $5.m_node), $1.m_features | $3.m_features | $5.m_features, $1.m_numConstants + $3.m_numConstants + $5.m_numConstants); }
;
ConditionalExprNoBF:
LogicalORExprNoBF
| LogicalORExprNoBF '?' AssignmentExpr ':' AssignmentExpr
- { $$ = createNodeInfo<ExpressionNode*>(new ConditionalNode(GLOBAL_DATA, $1.m_node, $3.m_node, $5.m_node), $1.m_features | $3.m_features | $5.m_features, $1.m_numConstants + $3.m_numConstants + $5.m_numConstants); }
+ { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, $1.m_node, $3.m_node, $5.m_node), $1.m_features | $3.m_features | $5.m_features, $1.m_numConstants + $3.m_numConstants + $5.m_numConstants); }
;
AssignmentExpr:
@@ -778,17 +778,17 @@ AssignmentOperator:
Expr:
AssignmentExpr
- | Expr ',' AssignmentExpr { $$ = createNodeInfo<ExpressionNode*>(new CommaNode(GLOBAL_DATA, $1.m_node, $3.m_node), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | Expr ',' AssignmentExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) CommaNode(GLOBAL_DATA, $1.m_node, $3.m_node), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
ExprNoIn:
AssignmentExprNoIn
- | ExprNoIn ',' AssignmentExprNoIn { $$ = createNodeInfo<ExpressionNode*>(new CommaNode(GLOBAL_DATA, $1.m_node, $3.m_node), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | ExprNoIn ',' AssignmentExprNoIn { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) CommaNode(GLOBAL_DATA, $1.m_node, $3.m_node), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
ExprNoBF:
AssignmentExprNoBF
- | ExprNoBF ',' AssignmentExpr { $$ = createNodeInfo<ExpressionNode*>(new CommaNode(GLOBAL_DATA, $1.m_node, $3.m_node), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
+ | ExprNoBF ',' AssignmentExpr { $$ = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) CommaNode(GLOBAL_DATA, $1.m_node, $3.m_node), $1.m_features | $3.m_features, $1.m_numConstants + $3.m_numConstants); }
;
Statement:
@@ -812,9 +812,9 @@ Statement:
;
Block:
- OPENBRACE CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new BlockNode(GLOBAL_DATA, 0), 0, 0, 0, 0);
+ OPENBRACE CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, 0), 0, 0, 0, 0);
DBG($$.m_node, @1, @2); }
- | OPENBRACE SourceElements CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new BlockNode(GLOBAL_DATA, $2.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
+ | OPENBRACE SourceElements CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, $2.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
DBG($$.m_node, @1, @3); }
;
@@ -828,16 +828,16 @@ VariableStatement:
VariableDeclarationList:
IDENT { $$.m_node = 0;
- $$.m_varDeclarations = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ $$.m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, $$.m_varDeclarations, *$1, 0);
$$.m_funcDeclarations = 0;
$$.m_features = (*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0;
$$.m_numConstants = 0;
}
- | IDENT Initializer { AssignResolveNode* node = new AssignResolveNode(GLOBAL_DATA, *$1, $2.m_node, $2.m_features & AssignFeature);
+ | IDENT Initializer { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *$1, $2.m_node, $2.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.first_column + 1, @2.last_column);
$$.m_node = node;
- $$.m_varDeclarations = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ $$.m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, $$.m_varDeclarations, *$1, DeclarationStacks::HasInitializer);
$$.m_funcDeclarations = 0;
$$.m_features = ((*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $2.m_features;
@@ -852,7 +852,7 @@ VariableDeclarationList:
$$.m_numConstants = $1.m_numConstants;
}
| VariableDeclarationList ',' IDENT Initializer
- { AssignResolveNode* node = new AssignResolveNode(GLOBAL_DATA, *$3, $4.m_node, $4.m_features & AssignFeature);
+ { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *$3, $4.m_node, $4.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @3.first_column, @4.first_column + 1, @4.last_column);
$$.m_node = combineVarInitializers(GLOBAL_DATA, $1.m_node, node);
$$.m_varDeclarations = $1.m_varDeclarations;
@@ -865,16 +865,16 @@ VariableDeclarationList:
VariableDeclarationListNoIn:
IDENT { $$.m_node = 0;
- $$.m_varDeclarations = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ $$.m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, $$.m_varDeclarations, *$1, 0);
$$.m_funcDeclarations = 0;
$$.m_features = (*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0;
$$.m_numConstants = 0;
}
- | IDENT InitializerNoIn { AssignResolveNode* node = new AssignResolveNode(GLOBAL_DATA, *$1, $2.m_node, $2.m_features & AssignFeature);
+ | IDENT InitializerNoIn { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *$1, $2.m_node, $2.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.first_column + 1, @2.last_column);
$$.m_node = node;
- $$.m_varDeclarations = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ $$.m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, $$.m_varDeclarations, *$1, DeclarationStacks::HasInitializer);
$$.m_funcDeclarations = 0;
$$.m_features = ((*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $2.m_features;
@@ -889,7 +889,7 @@ VariableDeclarationListNoIn:
$$.m_numConstants = $1.m_numConstants;
}
| VariableDeclarationListNoIn ',' IDENT InitializerNoIn
- { AssignResolveNode* node = new AssignResolveNode(GLOBAL_DATA, *$3, $4.m_node, $4.m_features & AssignFeature);
+ { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *$3, $4.m_node, $4.m_features & AssignFeature);
SET_EXCEPTION_LOCATION(node, @3.first_column, @4.first_column + 1, @4.last_column);
$$.m_node = combineVarInitializers(GLOBAL_DATA, $1.m_node, node);
$$.m_varDeclarations = $1.m_varDeclarations;
@@ -901,24 +901,24 @@ VariableDeclarationListNoIn:
;
ConstStatement:
- CONSTTOKEN ConstDeclarationList ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new ConstStatementNode(GLOBAL_DATA, $2.m_node.head), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
+ CONSTTOKEN ConstDeclarationList ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, $2.m_node.head), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
DBG($$.m_node, @1, @3); }
| CONSTTOKEN ConstDeclarationList error
- { $$ = createNodeDeclarationInfo<StatementNode*>(new ConstStatementNode(GLOBAL_DATA, $2.m_node.head), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
+ { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, $2.m_node.head), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants);
DBG($$.m_node, @1, @2); AUTO_SEMICOLON; }
;
ConstDeclarationList:
ConstDeclaration { $$.m_node.head = $1.m_node;
$$.m_node.tail = $$.m_node.head;
- $$.m_varDeclarations = new ParserRefCountedData<DeclarationStacks::VarStack>(GLOBAL_DATA);
+ $$.m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
appendToVarDeclarationList(GLOBAL_DATA, $$.m_varDeclarations, $1.m_node);
$$.m_funcDeclarations = 0;
$$.m_features = $1.m_features;
$$.m_numConstants = $1.m_numConstants;
}
| ConstDeclarationList ',' ConstDeclaration
- { $$.m_node.head = $1.m_node.head;
+ { $$.m_node.head = $1.m_node.head;
$1.m_node.tail->m_next = $3.m_node;
$$.m_node.tail = $3.m_node;
$$.m_varDeclarations = $1.m_varDeclarations;
@@ -929,8 +929,8 @@ ConstDeclarationList:
;
ConstDeclaration:
- IDENT { $$ = createNodeInfo<ConstDeclNode*>(new ConstDeclNode(GLOBAL_DATA, *$1, 0), (*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); }
- | IDENT Initializer { $$ = createNodeInfo<ConstDeclNode*>(new ConstDeclNode(GLOBAL_DATA, *$1, $2.m_node), ((*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $2.m_features, $2.m_numConstants); }
+ IDENT { $$ = createNodeInfo<ConstDeclNode*>(new (GLOBAL_DATA) ConstDeclNode(GLOBAL_DATA, *$1, 0), (*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); }
+ | IDENT Initializer { $$ = createNodeInfo<ConstDeclNode*>(new (GLOBAL_DATA) ConstDeclNode(GLOBAL_DATA, *$1, $2.m_node), ((*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $2.m_features, $2.m_numConstants); }
;
Initializer:
@@ -942,43 +942,44 @@ InitializerNoIn:
;
EmptyStatement:
- ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new EmptyStatementNode(GLOBAL_DATA), 0, 0, 0, 0); }
+ ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) EmptyStatementNode(GLOBAL_DATA), 0, 0, 0, 0); }
;
ExprStatement:
- ExprNoBF ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new ExprStatementNode(GLOBAL_DATA, $1.m_node), 0, 0, $1.m_features, $1.m_numConstants);
+ ExprNoBF ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, $1.m_node), 0, 0, $1.m_features, $1.m_numConstants);
DBG($$.m_node, @1, @2); }
- | ExprNoBF error { $$ = createNodeDeclarationInfo<StatementNode*>(new ExprStatementNode(GLOBAL_DATA, $1.m_node), 0, 0, $1.m_features, $1.m_numConstants);
+ | ExprNoBF error { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, $1.m_node), 0, 0, $1.m_features, $1.m_numConstants);
DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
;
IfStatement:
IF '(' Expr ')' Statement %prec IF_WITHOUT_ELSE
- { $$ = createNodeDeclarationInfo<StatementNode*>(new IfNode(GLOBAL_DATA, $3.m_node, $5.m_node), $5.m_varDeclarations, $5.m_funcDeclarations, $3.m_features | $5.m_features, $3.m_numConstants + $5.m_numConstants);
+ { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) IfNode(GLOBAL_DATA, $3.m_node, $5.m_node), $5.m_varDeclarations, $5.m_funcDeclarations, $3.m_features | $5.m_features, $3.m_numConstants + $5.m_numConstants);
DBG($$.m_node, @1, @4); }
| IF '(' Expr ')' Statement ELSE Statement
- { $$ = createNodeDeclarationInfo<StatementNode*>(new IfElseNode(GLOBAL_DATA, $3.m_node, $5.m_node, $7.m_node),
- mergeDeclarationLists($5.m_varDeclarations, $7.m_varDeclarations), mergeDeclarationLists($5.m_funcDeclarations, $7.m_funcDeclarations),
+ { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) IfElseNode(GLOBAL_DATA, $3.m_node, $5.m_node, $7.m_node),
+ mergeDeclarationLists($5.m_varDeclarations, $7.m_varDeclarations),
+ mergeDeclarationLists($5.m_funcDeclarations, $7.m_funcDeclarations),
$3.m_features | $5.m_features | $7.m_features,
$3.m_numConstants + $5.m_numConstants + $7.m_numConstants);
DBG($$.m_node, @1, @4); }
;
IterationStatement:
- DO Statement WHILE '(' Expr ')' ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new DoWhileNode(GLOBAL_DATA, $2.m_node, $5.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features | $5.m_features, $2.m_numConstants + $5.m_numConstants);
+ DO Statement WHILE '(' Expr ')' ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, $2.m_node, $5.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features | $5.m_features, $2.m_numConstants + $5.m_numConstants);
DBG($$.m_node, @1, @3); }
- | DO Statement WHILE '(' Expr ')' error { $$ = createNodeDeclarationInfo<StatementNode*>(new DoWhileNode(GLOBAL_DATA, $2.m_node, $5.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features | $5.m_features, $2.m_numConstants + $5.m_numConstants);
+ | DO Statement WHILE '(' Expr ')' error { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, $2.m_node, $5.m_node), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features | $5.m_features, $2.m_numConstants + $5.m_numConstants);
DBG($$.m_node, @1, @3); } // Always performs automatic semicolon insertion.
- | WHILE '(' Expr ')' Statement { $$ = createNodeDeclarationInfo<StatementNode*>(new WhileNode(GLOBAL_DATA, $3.m_node, $5.m_node), $5.m_varDeclarations, $5.m_funcDeclarations, $3.m_features | $5.m_features, $3.m_numConstants + $5.m_numConstants);
+ | WHILE '(' Expr ')' Statement { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) WhileNode(GLOBAL_DATA, $3.m_node, $5.m_node), $5.m_varDeclarations, $5.m_funcDeclarations, $3.m_features | $5.m_features, $3.m_numConstants + $5.m_numConstants);
DBG($$.m_node, @1, @4); }
| FOR '(' ExprNoInOpt ';' ExprOpt ';' ExprOpt ')' Statement
- { $$ = createNodeDeclarationInfo<StatementNode*>(new ForNode(GLOBAL_DATA, $3.m_node, $5.m_node, $7.m_node, $9.m_node, false), $9.m_varDeclarations, $9.m_funcDeclarations,
+ { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ForNode(GLOBAL_DATA, $3.m_node, $5.m_node, $7.m_node, $9.m_node, false), $9.m_varDeclarations, $9.m_funcDeclarations,
$3.m_features | $5.m_features | $7.m_features | $9.m_features,
$3.m_numConstants + $5.m_numConstants + $7.m_numConstants + $9.m_numConstants);
DBG($$.m_node, @1, @8);
}
| FOR '(' VAR VariableDeclarationListNoIn ';' ExprOpt ';' ExprOpt ')' Statement
- { $$ = createNodeDeclarationInfo<StatementNode*>(new ForNode(GLOBAL_DATA, $4.m_node, $6.m_node, $8.m_node, $10.m_node, true),
+ { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ForNode(GLOBAL_DATA, $4.m_node, $6.m_node, $8.m_node, $10.m_node, true),
mergeDeclarationLists($4.m_varDeclarations, $10.m_varDeclarations),
mergeDeclarationLists($4.m_funcDeclarations, $10.m_funcDeclarations),
$4.m_features | $6.m_features | $8.m_features | $10.m_features,
@@ -986,7 +987,7 @@ IterationStatement:
DBG($$.m_node, @1, @9); }
| FOR '(' LeftHandSideExpr INTOKEN Expr ')' Statement
{
- ForInNode* node = new ForInNode(GLOBAL_DATA, $3.m_node, $5.m_node, $7.m_node);
+ ForInNode* node = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, $3.m_node, $5.m_node, $7.m_node);
SET_EXCEPTION_LOCATION(node, @3.first_column, @3.last_column, @5.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, $7.m_varDeclarations, $7.m_funcDeclarations,
$3.m_features | $5.m_features | $7.m_features,
@@ -994,13 +995,13 @@ IterationStatement:
DBG($$.m_node, @1, @6);
}
| FOR '(' VAR IDENT INTOKEN Expr ')' Statement
- { ForInNode *forIn = new ForInNode(GLOBAL_DATA, *$4, 0, $6.m_node, $8.m_node, @5.first_column, @5.first_column - @4.first_column, @6.last_column - @5.first_column);
+ { ForInNode *forIn = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, *$4, 0, $6.m_node, $8.m_node, @5.first_column, @5.first_column - @4.first_column, @6.last_column - @5.first_column);
SET_EXCEPTION_LOCATION(forIn, @4.first_column, @5.first_column + 1, @6.last_column);
appendToVarDeclarationList(GLOBAL_DATA, $8.m_varDeclarations, *$4, DeclarationStacks::HasInitializer);
$$ = createNodeDeclarationInfo<StatementNode*>(forIn, $8.m_varDeclarations, $8.m_funcDeclarations, ((*$4 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $6.m_features | $8.m_features, $6.m_numConstants + $8.m_numConstants);
DBG($$.m_node, @1, @7); }
| FOR '(' VAR IDENT InitializerNoIn INTOKEN Expr ')' Statement
- { ForInNode *forIn = new ForInNode(GLOBAL_DATA, *$4, $5.m_node, $7.m_node, $9.m_node, @5.first_column, @5.first_column - @4.first_column, @5.last_column - @5.first_column);
+ { ForInNode *forIn = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, *$4, $5.m_node, $7.m_node, $9.m_node, @5.first_column, @5.first_column - @4.first_column, @5.last_column - @5.first_column);
SET_EXCEPTION_LOCATION(forIn, @4.first_column, @6.first_column + 1, @7.last_column);
appendToVarDeclarationList(GLOBAL_DATA, $9.m_varDeclarations, *$4, DeclarationStacks::HasInitializer);
$$ = createNodeDeclarationInfo<StatementNode*>(forIn, $9.m_varDeclarations, $9.m_funcDeclarations,
@@ -1020,70 +1021,70 @@ ExprNoInOpt:
;
ContinueStatement:
- CONTINUE ';' { ContinueNode* node = new ContinueNode(GLOBAL_DATA);
+ CONTINUE ';' { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
DBG($$.m_node, @1, @2); }
- | CONTINUE error { ContinueNode* node = new ContinueNode(GLOBAL_DATA);
+ | CONTINUE error { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
- | CONTINUE IDENT ';' { ContinueNode* node = new ContinueNode(GLOBAL_DATA, *$2);
+ | CONTINUE IDENT ';' { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA, *$2);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
DBG($$.m_node, @1, @3); }
- | CONTINUE IDENT error { ContinueNode* node = new ContinueNode(GLOBAL_DATA, *$2);
+ | CONTINUE IDENT error { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA, *$2);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
DBG($$.m_node, @1, @2); AUTO_SEMICOLON; }
;
BreakStatement:
- BREAK ';' { BreakNode* node = new BreakNode(GLOBAL_DATA);
+ BREAK ';' { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG($$.m_node, @1, @2); }
- | BREAK error { BreakNode* node = new BreakNode(GLOBAL_DATA);
+ | BREAK error { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(new BreakNode(GLOBAL_DATA), 0, 0, 0, 0); DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
- | BREAK IDENT ';' { BreakNode* node = new BreakNode(GLOBAL_DATA, *$2);
+ $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA), 0, 0, 0, 0); DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
+ | BREAK IDENT ';' { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *$2);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG($$.m_node, @1, @3); }
- | BREAK IDENT error { BreakNode* node = new BreakNode(GLOBAL_DATA, *$2);
+ | BREAK IDENT error { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *$2);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
- $$ = createNodeDeclarationInfo<StatementNode*>(new BreakNode(GLOBAL_DATA, *$2), 0, 0, 0, 0); DBG($$.m_node, @1, @2); AUTO_SEMICOLON; }
+ $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *$2), 0, 0, 0, 0); DBG($$.m_node, @1, @2); AUTO_SEMICOLON; }
;
ReturnStatement:
- RETURN ';' { ReturnNode* node = new ReturnNode(GLOBAL_DATA, 0);
+ RETURN ';' { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, 0);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG($$.m_node, @1, @2); }
- | RETURN error { ReturnNode* node = new ReturnNode(GLOBAL_DATA, 0);
+ | RETURN error { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, 0);
SET_EXCEPTION_LOCATION(node, @1.first_column, @1.last_column, @1.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
- | RETURN Expr ';' { ReturnNode* node = new ReturnNode(GLOBAL_DATA, $2.m_node);
+ | RETURN Expr ';' { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, $2.m_node);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); DBG($$.m_node, @1, @3); }
- | RETURN Expr error { ReturnNode* node = new ReturnNode(GLOBAL_DATA, $2.m_node);
+ | RETURN Expr error { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, $2.m_node);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); DBG($$.m_node, @1, @2); AUTO_SEMICOLON; }
;
WithStatement:
- WITH '(' Expr ')' Statement { $$ = createNodeDeclarationInfo<StatementNode*>(new WithNode(GLOBAL_DATA, $3.m_node, $5.m_node, @3.last_column, @3.last_column - @3.first_column),
+ WITH '(' Expr ')' Statement { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) WithNode(GLOBAL_DATA, $3.m_node, $5.m_node, @3.last_column, @3.last_column - @3.first_column),
$5.m_varDeclarations, $5.m_funcDeclarations, $3.m_features | $5.m_features | WithFeature, $3.m_numConstants + $5.m_numConstants);
DBG($$.m_node, @1, @4); }
;
SwitchStatement:
- SWITCH '(' Expr ')' CaseBlock { $$ = createNodeDeclarationInfo<StatementNode*>(new SwitchNode(GLOBAL_DATA, $3.m_node, $5.m_node), $5.m_varDeclarations, $5.m_funcDeclarations,
+ SWITCH '(' Expr ')' CaseBlock { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) SwitchNode(GLOBAL_DATA, $3.m_node, $5.m_node), $5.m_varDeclarations, $5.m_funcDeclarations,
$3.m_features | $5.m_features, $3.m_numConstants + $5.m_numConstants);
DBG($$.m_node, @1, @4); }
;
CaseBlock:
- OPENBRACE CaseClausesOpt CLOSEBRACE { $$ = createNodeDeclarationInfo<CaseBlockNode*>(new CaseBlockNode(GLOBAL_DATA, $2.m_node.head, 0, 0), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants); }
+ OPENBRACE CaseClausesOpt CLOSEBRACE { $$ = createNodeDeclarationInfo<CaseBlockNode*>(new (GLOBAL_DATA) CaseBlockNode(GLOBAL_DATA, $2.m_node.head, 0, 0), $2.m_varDeclarations, $2.m_funcDeclarations, $2.m_features, $2.m_numConstants); }
| OPENBRACE CaseClausesOpt DefaultClause CaseClausesOpt CLOSEBRACE
- { $$ = createNodeDeclarationInfo<CaseBlockNode*>(new CaseBlockNode(GLOBAL_DATA, $2.m_node.head, $3.m_node, $4.m_node.head),
+ { $$ = createNodeDeclarationInfo<CaseBlockNode*>(new (GLOBAL_DATA) CaseBlockNode(GLOBAL_DATA, $2.m_node.head, $3.m_node, $4.m_node.head),
mergeDeclarationLists(mergeDeclarationLists($2.m_varDeclarations, $3.m_varDeclarations), $4.m_varDeclarations),
mergeDeclarationLists(mergeDeclarationLists($2.m_funcDeclarations, $3.m_funcDeclarations), $4.m_funcDeclarations),
$2.m_features | $3.m_features | $4.m_features,
@@ -1096,14 +1097,14 @@ CaseClausesOpt:
;
CaseClauses:
- CaseClause { $$.m_node.head = new ClauseListNode(GLOBAL_DATA, $1.m_node);
+ CaseClause { $$.m_node.head = new (GLOBAL_DATA) ClauseListNode(GLOBAL_DATA, $1.m_node);
$$.m_node.tail = $$.m_node.head;
$$.m_varDeclarations = $1.m_varDeclarations;
$$.m_funcDeclarations = $1.m_funcDeclarations;
$$.m_features = $1.m_features;
$$.m_numConstants = $1.m_numConstants; }
| CaseClauses CaseClause { $$.m_node.head = $1.m_node.head;
- $$.m_node.tail = new ClauseListNode(GLOBAL_DATA, $1.m_node.tail, $2.m_node);
+ $$.m_node.tail = new (GLOBAL_DATA) ClauseListNode(GLOBAL_DATA, $1.m_node.tail, $2.m_node);
$$.m_varDeclarations = mergeDeclarationLists($1.m_varDeclarations, $2.m_varDeclarations);
$$.m_funcDeclarations = mergeDeclarationLists($1.m_funcDeclarations, $2.m_funcDeclarations);
$$.m_features = $1.m_features | $2.m_features;
@@ -1112,47 +1113,47 @@ CaseClauses:
;
CaseClause:
- CASE Expr ':' { $$ = createNodeDeclarationInfo<CaseClauseNode*>(new CaseClauseNode(GLOBAL_DATA, $2.m_node), 0, 0, $2.m_features, $2.m_numConstants); }
- | CASE Expr ':' SourceElements { $$ = createNodeDeclarationInfo<CaseClauseNode*>(new CaseClauseNode(GLOBAL_DATA, $2.m_node, $4.m_node), $4.m_varDeclarations, $4.m_funcDeclarations, $2.m_features | $4.m_features, $2.m_numConstants + $4.m_numConstants); }
+ CASE Expr ':' { $$ = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, $2.m_node), 0, 0, $2.m_features, $2.m_numConstants); }
+ | CASE Expr ':' SourceElements { $$ = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, $2.m_node, $4.m_node), $4.m_varDeclarations, $4.m_funcDeclarations, $2.m_features | $4.m_features, $2.m_numConstants + $4.m_numConstants); }
;
DefaultClause:
- DEFAULT ':' { $$ = createNodeDeclarationInfo<CaseClauseNode*>(new CaseClauseNode(GLOBAL_DATA, 0), 0, 0, 0, 0); }
- | DEFAULT ':' SourceElements { $$ = createNodeDeclarationInfo<CaseClauseNode*>(new CaseClauseNode(GLOBAL_DATA, 0, $3.m_node), $3.m_varDeclarations, $3.m_funcDeclarations, $3.m_features, $3.m_numConstants); }
+ DEFAULT ':' { $$ = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, 0), 0, 0, 0, 0); }
+ | DEFAULT ':' SourceElements { $$ = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, 0, $3.m_node), $3.m_varDeclarations, $3.m_funcDeclarations, $3.m_features, $3.m_numConstants); }
;
LabelledStatement:
- IDENT ':' Statement { LabelNode* node = new LabelNode(GLOBAL_DATA, *$1, $3.m_node);
+ IDENT ':' Statement { LabelNode* node = new (GLOBAL_DATA) LabelNode(GLOBAL_DATA, *$1, $3.m_node);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, $3.m_varDeclarations, $3.m_funcDeclarations, $3.m_features, $3.m_numConstants); }
;
ThrowStatement:
- THROW Expr ';' { ThrowNode* node = new ThrowNode(GLOBAL_DATA, $2.m_node);
+ THROW Expr ';' { ThrowNode* node = new (GLOBAL_DATA) ThrowNode(GLOBAL_DATA, $2.m_node);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); DBG($$.m_node, @1, @2);
}
- | THROW Expr error { ThrowNode* node = new ThrowNode(GLOBAL_DATA, $2.m_node);
+ | THROW Expr error { ThrowNode* node = new (GLOBAL_DATA) ThrowNode(GLOBAL_DATA, $2.m_node);
SET_EXCEPTION_LOCATION(node, @1.first_column, @2.last_column, @2.last_column);
$$ = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, $2.m_features, $2.m_numConstants); DBG($$.m_node, @1, @2); AUTO_SEMICOLON;
}
;
TryStatement:
- TRY Block FINALLY Block { $$ = createNodeDeclarationInfo<StatementNode*>(new TryNode(GLOBAL_DATA, $2.m_node, GLOBAL_DATA->propertyNames->nullIdentifier, false, 0, $4.m_node),
+ TRY Block FINALLY Block { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, $2.m_node, GLOBAL_DATA->propertyNames->nullIdentifier, false, 0, $4.m_node),
mergeDeclarationLists($2.m_varDeclarations, $4.m_varDeclarations),
mergeDeclarationLists($2.m_funcDeclarations, $4.m_funcDeclarations),
$2.m_features | $4.m_features,
$2.m_numConstants + $4.m_numConstants);
DBG($$.m_node, @1, @2); }
- | TRY Block CATCH '(' IDENT ')' Block { $$ = createNodeDeclarationInfo<StatementNode*>(new TryNode(GLOBAL_DATA, $2.m_node, *$5, ($7.m_features & EvalFeature) != 0, $7.m_node, 0),
+ | TRY Block CATCH '(' IDENT ')' Block { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, $2.m_node, *$5, ($7.m_features & EvalFeature) != 0, $7.m_node, 0),
mergeDeclarationLists($2.m_varDeclarations, $7.m_varDeclarations),
mergeDeclarationLists($2.m_funcDeclarations, $7.m_funcDeclarations),
$2.m_features | $7.m_features | CatchFeature,
$2.m_numConstants + $7.m_numConstants);
DBG($$.m_node, @1, @2); }
| TRY Block CATCH '(' IDENT ')' Block FINALLY Block
- { $$ = createNodeDeclarationInfo<StatementNode*>(new TryNode(GLOBAL_DATA, $2.m_node, *$5, ($7.m_features & EvalFeature) != 0, $7.m_node, $9.m_node),
+ { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, $2.m_node, *$5, ($7.m_features & EvalFeature) != 0, $7.m_node, $9.m_node),
mergeDeclarationLists(mergeDeclarationLists($2.m_varDeclarations, $7.m_varDeclarations), $9.m_varDeclarations),
mergeDeclarationLists(mergeDeclarationLists($2.m_funcDeclarations, $7.m_funcDeclarations), $9.m_funcDeclarations),
$2.m_features | $7.m_features | $9.m_features | CatchFeature,
@@ -1161,17 +1162,17 @@ TryStatement:
;
DebuggerStatement:
- DEBUGGER ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
+ DEBUGGER ';' { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
DBG($$.m_node, @1, @2); }
- | DEBUGGER error { $$ = createNodeDeclarationInfo<StatementNode*>(new DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
+ | DEBUGGER error { $$ = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
DBG($$.m_node, @1, @1); AUTO_SEMICOLON; }
;
FunctionDeclaration:
- FUNCTION IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new FuncDeclNode(GLOBAL_DATA, *$2, $6, LEXER->sourceCode($5, $7, @5.first_line)), 0, new ParserRefCountedData<DeclarationStacks::FunctionStack>(GLOBAL_DATA), ((*$2 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | ClosureFeature, 0); DBG($6, @5, @7); $$.m_funcDeclarations->data.append(static_cast<FuncDeclNode*>($$.m_node)); }
+ FUNCTION IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE { $$ = createNodeDeclarationInfo<StatementNode*>(new FuncDeclNode(GLOBAL_DATA, *$2, $6, LEXER->sourceCode($5, $7, @5.first_line)), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*$2 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | ClosureFeature, 0); DBG($6, @5, @7); $$.m_funcDeclarations->data.append(static_cast<FuncDeclNode*>($$.m_node)); }
| FUNCTION IDENT '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
{
- $$ = createNodeDeclarationInfo<StatementNode*>(new FuncDeclNode(GLOBAL_DATA, *$2, $7, LEXER->sourceCode($6, $8, @6.first_line), $4.m_node.head), 0, new ParserRefCountedData<DeclarationStacks::FunctionStack>(GLOBAL_DATA), ((*$2 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $4.m_features | ClosureFeature, 0);
+ $$ = createNodeDeclarationInfo<StatementNode*>(new FuncDeclNode(GLOBAL_DATA, *$2, $7, LEXER->sourceCode($6, $8, @6.first_line), $4.m_node.head), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*$2 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | $4.m_features | ClosureFeature, 0);
if ($4.m_features & ArgumentsFeature)
$7->setUsesArguments();
DBG($7, @6, @8);
@@ -1199,12 +1200,12 @@ FunctionExpr:
;
FormalParameterList:
- IDENT { $$.m_node.head = new ParameterNode(GLOBAL_DATA, *$1);
+ IDENT { $$.m_node.head = new (GLOBAL_DATA) ParameterNode(GLOBAL_DATA, *$1);
$$.m_features = (*$1 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0;
$$.m_node.tail = $$.m_node.head; }
| FormalParameterList ',' IDENT { $$.m_node.head = $1.m_node.head;
$$.m_features = $1.m_features | ((*$3 == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0);
- $$.m_node.tail = new ParameterNode(GLOBAL_DATA, $1.m_node.tail, *$3); }
+ $$.m_node.tail = new (GLOBAL_DATA) ParameterNode(GLOBAL_DATA, $1.m_node.tail, *$3); }
;
FunctionBody:
@@ -1213,13 +1214,13 @@ FunctionBody:
;
Program:
- /* not in spec */ { GLOBAL_DATA->parser->didFinishParsing(new SourceElements(GLOBAL_DATA), 0, 0, NoFeatures, @0.last_line, 0); }
+ /* not in spec */ { GLOBAL_DATA->parser->didFinishParsing(new (GLOBAL_DATA) SourceElements(GLOBAL_DATA), 0, 0, NoFeatures, @0.last_line, 0); }
| SourceElements { GLOBAL_DATA->parser->didFinishParsing($1.m_node, $1.m_varDeclarations, $1.m_funcDeclarations, $1.m_features,
@1.last_line, $1.m_numConstants); }
;
SourceElements:
- Statement { $$.m_node = new SourceElements(GLOBAL_DATA);
+ Statement { $$.m_node = new (GLOBAL_DATA) SourceElements(GLOBAL_DATA);
$$.m_node->append($1.m_node);
$$.m_varDeclarations = $1.m_varDeclarations;
$$.m_funcDeclarations = $1.m_funcDeclarations;
@@ -1828,23 +1829,23 @@ SourceElements_NoNode:
static ExpressionNode* makeAssignNode(void* globalPtr, ExpressionNode* loc, Operator op, ExpressionNode* expr, bool locHasAssignments, bool exprHasAssignments, int start, int divot, int end)
{
if (!loc->isLocation())
- return new AssignErrorNode(GLOBAL_DATA, loc, op, expr, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) AssignErrorNode(GLOBAL_DATA, loc, op, expr, divot, divot - start, end - divot);
if (loc->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(loc);
if (op == OpEqual) {
- AssignResolveNode* node = new AssignResolveNode(GLOBAL_DATA, resolve->identifier(), expr, exprHasAssignments);
+ AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, resolve->identifier(), expr, exprHasAssignments);
SET_EXCEPTION_LOCATION(node, start, divot, end);
return node;
} else
- return new ReadModifyResolveNode(GLOBAL_DATA, resolve->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) ReadModifyResolveNode(GLOBAL_DATA, resolve->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
}
if (loc->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(loc);
if (op == OpEqual)
- return new AssignBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), expr, locHasAssignments, exprHasAssignments, bracket->divot(), bracket->divot() - start, end - bracket->divot());
+ return new (GLOBAL_DATA) AssignBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), expr, locHasAssignments, exprHasAssignments, bracket->divot(), bracket->divot() - start, end - bracket->divot());
else {
- ReadModifyBracketNode* node = new ReadModifyBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, expr, locHasAssignments, exprHasAssignments, divot, divot - start, end - divot);
+ ReadModifyBracketNode* node = new (GLOBAL_DATA) ReadModifyBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, expr, locHasAssignments, exprHasAssignments, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
return node;
}
@@ -1852,9 +1853,9 @@ static ExpressionNode* makeAssignNode(void* globalPtr, ExpressionNode* loc, Oper
ASSERT(loc->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(loc);
if (op == OpEqual)
- return new AssignDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), expr, exprHasAssignments, dot->divot(), dot->divot() - start, end - dot->divot());
+ return new (GLOBAL_DATA) AssignDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), expr, exprHasAssignments, dot->divot(), dot->divot() - start, end - dot->divot());
- ReadModifyDotNode* node = new ReadModifyDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
+ ReadModifyDotNode* node = new (GLOBAL_DATA) ReadModifyDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->endOffset());
return node;
}
@@ -1862,21 +1863,21 @@ static ExpressionNode* makeAssignNode(void* globalPtr, ExpressionNode* loc, Oper
static ExpressionNode* makePrefixNode(void* globalPtr, ExpressionNode* expr, Operator op, int start, int divot, int end)
{
if (!expr->isLocation())
- return new PrefixErrorNode(GLOBAL_DATA, expr, op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PrefixErrorNode(GLOBAL_DATA, expr, op, divot, divot - start, end - divot);
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new PrefixResolveNode(GLOBAL_DATA, resolve->identifier(), op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PrefixResolveNode(GLOBAL_DATA, resolve->identifier(), op, divot, divot - start, end - divot);
}
if (expr->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
- PrefixBracketNode* node = new PrefixBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
+ PrefixBracketNode* node = new (GLOBAL_DATA) PrefixBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->startOffset());
return node;
}
ASSERT(expr->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
- PrefixDotNode* node = new PrefixDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
+ PrefixDotNode* node = new (GLOBAL_DATA) PrefixDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->startOffset());
return node;
}
@@ -1884,22 +1885,22 @@ static ExpressionNode* makePrefixNode(void* globalPtr, ExpressionNode* expr, Ope
static ExpressionNode* makePostfixNode(void* globalPtr, ExpressionNode* expr, Operator op, int start, int divot, int end)
{
if (!expr->isLocation())
- return new PostfixErrorNode(GLOBAL_DATA, expr, op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PostfixErrorNode(GLOBAL_DATA, expr, op, divot, divot - start, end - divot);
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new PostfixResolveNode(GLOBAL_DATA, resolve->identifier(), op, divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) PostfixResolveNode(GLOBAL_DATA, resolve->identifier(), op, divot, divot - start, end - divot);
}
if (expr->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
- PostfixBracketNode* node = new PostfixBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
+ PostfixBracketNode* node = new (GLOBAL_DATA) PostfixBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
return node;
}
ASSERT(expr->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
- PostfixDotNode* node = new PostfixDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
+ PostfixDotNode* node = new (GLOBAL_DATA) PostfixDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->endOffset());
return node;
}
@@ -1909,23 +1910,29 @@ static ExpressionNodeInfo makeFunctionCallNode(void* globalPtr, ExpressionNodeIn
CodeFeatures features = func.m_features | args.m_features;
int numConstants = func.m_numConstants + args.m_numConstants;
if (!func.m_node->isLocation())
- return createNodeInfo<ExpressionNode*>(new FunctionCallValueNode(GLOBAL_DATA, func.m_node, args.m_node, divot, divot - start, end - divot), features, numConstants);
+ return createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) FunctionCallValueNode(GLOBAL_DATA, func.m_node, args.m_node, divot, divot - start, end - divot), features, numConstants);
if (func.m_node->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(func.m_node);
const Identifier& identifier = resolve->identifier();
if (identifier == GLOBAL_DATA->propertyNames->eval)
- return createNodeInfo<ExpressionNode*>(new EvalFunctionCallNode(GLOBAL_DATA, args.m_node, divot, divot - start, end - divot), EvalFeature | features, numConstants);
- return createNodeInfo<ExpressionNode*>(new FunctionCallResolveNode(GLOBAL_DATA, identifier, args.m_node, divot, divot - start, end - divot), features, numConstants);
+ return createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EvalFunctionCallNode(GLOBAL_DATA, args.m_node, divot, divot - start, end - divot), EvalFeature | features, numConstants);
+ return createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) FunctionCallResolveNode(GLOBAL_DATA, identifier, args.m_node, divot, divot - start, end - divot), features, numConstants);
}
if (func.m_node->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(func.m_node);
- FunctionCallBracketNode* node = new FunctionCallBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), args.m_node, divot, divot - start, end - divot);
+ FunctionCallBracketNode* node = new (GLOBAL_DATA) FunctionCallBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), args.m_node, divot, divot - start, end - divot);
node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
return createNodeInfo<ExpressionNode*>(node, features, numConstants);
}
ASSERT(func.m_node->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(func.m_node);
- FunctionCallDotNode* node = new FunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
+ FunctionCallDotNode* node;
+ if (dot->identifier() == GLOBAL_DATA->propertyNames->call)
+ node = new (GLOBAL_DATA) CallFunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
+ else if (dot->identifier() == GLOBAL_DATA->propertyNames->apply)
+ node = new (GLOBAL_DATA) ApplyFunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
+ else
+ node = new (GLOBAL_DATA) FunctionCallDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
node->setSubexpressionInfo(dot->divot(), dot->endOffset());
return createNodeInfo<ExpressionNode*>(node, features, numConstants);
}
@@ -1934,26 +1941,26 @@ static ExpressionNode* makeTypeOfNode(void* globalPtr, ExpressionNode* expr)
{
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new TypeOfResolveNode(GLOBAL_DATA, resolve->identifier());
+ return new (GLOBAL_DATA) TypeOfResolveNode(GLOBAL_DATA, resolve->identifier());
}
- return new TypeOfValueNode(GLOBAL_DATA, expr);
+ return new (GLOBAL_DATA) TypeOfValueNode(GLOBAL_DATA, expr);
}
static ExpressionNode* makeDeleteNode(void* globalPtr, ExpressionNode* expr, int start, int divot, int end)
{
if (!expr->isLocation())
- return new DeleteValueNode(GLOBAL_DATA, expr);
+ return new (GLOBAL_DATA) DeleteValueNode(GLOBAL_DATA, expr);
if (expr->isResolveNode()) {
ResolveNode* resolve = static_cast<ResolveNode*>(expr);
- return new DeleteResolveNode(GLOBAL_DATA, resolve->identifier(), divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) DeleteResolveNode(GLOBAL_DATA, resolve->identifier(), divot, divot - start, end - divot);
}
if (expr->isBracketAccessorNode()) {
BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
- return new DeleteBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) DeleteBracketNode(GLOBAL_DATA, bracket->base(), bracket->subscript(), divot, divot - start, end - divot);
}
ASSERT(expr->isDotAccessorNode());
DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
- return new DeleteDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), divot, divot - start, end - divot);
+ return new (GLOBAL_DATA) DeleteDotNode(GLOBAL_DATA, dot->base(), dot->identifier(), divot, divot - start, end - divot);
}
static PropertyNode* makeGetterOrSetterPropertyNode(void* globalPtr, const Identifier& getOrSet, const Identifier& name, ParameterNode* params, FunctionBodyNode* body, const SourceCode& source)
@@ -1965,7 +1972,7 @@ static PropertyNode* makeGetterOrSetterPropertyNode(void* globalPtr, const Ident
type = PropertyNode::Setter;
else
return 0;
- return new PropertyNode(GLOBAL_DATA, name, new FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, body, source, params), type);
+ return new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, name, new FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, body, source, params), type);
}
static ExpressionNode* makeNegateNode(void* globalPtr, ExpressionNode* n)
@@ -1979,19 +1986,19 @@ static ExpressionNode* makeNegateNode(void* globalPtr, ExpressionNode* n)
}
}
- return new NegateNode(GLOBAL_DATA, n);
+ return new (GLOBAL_DATA) NegateNode(GLOBAL_DATA, n);
}
static NumberNode* makeNumberNode(void* globalPtr, double d)
{
- return new NumberNode(GLOBAL_DATA, d);
+ return new (GLOBAL_DATA) NumberNode(GLOBAL_DATA, d);
}
static ExpressionNode* makeBitwiseNotNode(void* globalPtr, ExpressionNode* expr)
{
if (expr->isNumber())
return makeNumberNode(globalPtr, ~toInt32(static_cast<NumberNode*>(expr)->value()));
- return new BitwiseNotNode(GLOBAL_DATA, expr);
+ return new (GLOBAL_DATA) BitwiseNotNode(GLOBAL_DATA, expr);
}
static ExpressionNode* makeMultNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
@@ -2003,12 +2010,12 @@ static ExpressionNode* makeMultNode(void* globalPtr, ExpressionNode* expr1, Expr
return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() * static_cast<NumberNode*>(expr2)->value());
if (expr1->isNumber() && static_cast<NumberNode*>(expr1)->value() == 1)
- return new UnaryPlusNode(GLOBAL_DATA, expr2);
+ return new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, expr2);
if (expr2->isNumber() && static_cast<NumberNode*>(expr2)->value() == 1)
- return new UnaryPlusNode(GLOBAL_DATA, expr1);
+ return new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, expr1);
- return new MultNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) MultNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
static ExpressionNode* makeDivNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
@@ -2018,14 +2025,14 @@ static ExpressionNode* makeDivNode(void* globalPtr, ExpressionNode* expr1, Expre
if (expr1->isNumber() && expr2->isNumber())
return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() / static_cast<NumberNode*>(expr2)->value());
- return new DivNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) DivNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
static ExpressionNode* makeAddNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
if (expr1->isNumber() && expr2->isNumber())
return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() + static_cast<NumberNode*>(expr2)->value());
- return new AddNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) AddNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
static ExpressionNode* makeSubNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
@@ -2035,21 +2042,21 @@ static ExpressionNode* makeSubNode(void* globalPtr, ExpressionNode* expr1, Expre
if (expr1->isNumber() && expr2->isNumber())
return makeNumberNode(globalPtr, static_cast<NumberNode*>(expr1)->value() - static_cast<NumberNode*>(expr2)->value());
- return new SubNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) SubNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
static ExpressionNode* makeLeftShiftNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
if (expr1->isNumber() && expr2->isNumber())
return makeNumberNode(globalPtr, toInt32(static_cast<NumberNode*>(expr1)->value()) << (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
- return new LeftShiftNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) LeftShiftNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
static ExpressionNode* makeRightShiftNode(void* globalPtr, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
{
if (expr1->isNumber() && expr2->isNumber())
return makeNumberNode(globalPtr, toInt32(static_cast<NumberNode*>(expr1)->value()) >> (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
- return new RightShiftNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
+ return new (GLOBAL_DATA) RightShiftNode(GLOBAL_DATA, expr1, expr2, rightHasAssignments);
}
/* called by yyparse on error */
@@ -2068,7 +2075,7 @@ static ExpressionNode* combineVarInitializers(void* globalPtr, ExpressionNode* l
{
if (!list)
return init;
- return new VarDeclCommaNode(GLOBAL_DATA, list, init);
+ return new (GLOBAL_DATA) CommaNode(GLOBAL_DATA, list, init);
}
// We turn variable declarations into either assignments or empty
@@ -2077,8 +2084,8 @@ static ExpressionNode* combineVarInitializers(void* globalPtr, ExpressionNode* l
static StatementNode* makeVarStatementNode(void* globalPtr, ExpressionNode* expr)
{
if (!expr)
- return new EmptyStatementNode(GLOBAL_DATA);
- return new VarStatementNode(GLOBAL_DATA, expr);
+ return new (GLOBAL_DATA) EmptyStatementNode(GLOBAL_DATA);
+ return new (GLOBAL_DATA) VarStatementNode(GLOBAL_DATA, expr);
}
#undef GLOBAL_DATA
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp
index 0bacb22..8e89c18 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp
@@ -31,14 +31,12 @@
#include <ctype.h>
#include <limits.h>
#include <string.h>
-#include <wtf/ASCIICType.h>
#include <wtf/Assertions.h>
-#include <wtf/unicode/Unicode.h>
using namespace WTF;
using namespace Unicode;
-// we can't specify the namespace in yacc's C output, so do it here
+// We can't specify the namespace in yacc's C output, so do it here instead.
using namespace JSC;
#ifndef KDE_USE_FINAL
@@ -48,7 +46,7 @@ using namespace JSC;
#include "Lookup.h"
#include "Lexer.lut.h"
-// a bridge for yacc from the C world to C++
+// A bridge for yacc from the C world to the C++ world.
int jscyylex(void* lvalp, void* llocp, void* globalData)
{
return static_cast<JSGlobalData*>(globalData)->lexer->lex(lvalp, llocp);
@@ -56,825 +54,895 @@ int jscyylex(void* lvalp, void* llocp, void* globalData)
namespace JSC {
-static bool isDecimalDigit(int);
+static const UChar byteOrderMark = 0xFEFF;
Lexer::Lexer(JSGlobalData* globalData)
- : yylineno(1)
- , m_restrKeyword(false)
- , m_eatNextIdentifier(false)
- , m_stackToken(-1)
- , m_lastToken(-1)
- , m_position(0)
- , m_code(0)
- , m_length(0)
- , m_isReparsing(false)
- , m_atLineStart(true)
- , m_current(0)
- , m_next1(0)
- , m_next2(0)
- , m_next3(0)
- , m_currentOffset(0)
- , m_nextOffset1(0)
- , m_nextOffset2(0)
- , m_nextOffset3(0)
+ : m_isReparsing(false)
, m_globalData(globalData)
- , m_mainTable(JSC::mainTable)
+ , m_keywordTable(JSC::mainTable)
{
- m_buffer8.reserveCapacity(initialReadBufferCapacity);
- m_buffer16.reserveCapacity(initialReadBufferCapacity);
+ m_buffer8.reserveInitialCapacity(initialReadBufferCapacity);
+ m_buffer16.reserveInitialCapacity(initialReadBufferCapacity);
}
Lexer::~Lexer()
{
- m_mainTable.deleteTable();
+ m_keywordTable.deleteTable();
+}
+
+inline const UChar* Lexer::currentCharacter() const
+{
+ return m_code - 4;
+}
+
+inline int Lexer::currentOffset() const
+{
+ return currentCharacter() - m_codeStart;
+}
+
+ALWAYS_INLINE void Lexer::shift1()
+{
+ m_current = m_next1;
+ m_next1 = m_next2;
+ m_next2 = m_next3;
+ if (LIKELY(m_code < m_codeEnd))
+ m_next3 = m_code[0];
+ else
+ m_next3 = -1;
+
+ ++m_code;
+}
+
+ALWAYS_INLINE void Lexer::shift2()
+{
+ m_current = m_next2;
+ m_next1 = m_next3;
+ if (LIKELY(m_code + 1 < m_codeEnd)) {
+ m_next2 = m_code[0];
+ m_next3 = m_code[1];
+ } else {
+ m_next2 = m_code < m_codeEnd ? m_code[0] : -1;
+ m_next3 = -1;
+ }
+
+ m_code += 2;
+}
+
+ALWAYS_INLINE void Lexer::shift3()
+{
+ m_current = m_next3;
+ if (LIKELY(m_code + 2 < m_codeEnd)) {
+ m_next1 = m_code[0];
+ m_next2 = m_code[1];
+ m_next3 = m_code[2];
+ } else {
+ m_next1 = m_code < m_codeEnd ? m_code[0] : -1;
+ m_next2 = m_code + 1 < m_codeEnd ? m_code[1] : -1;
+ m_next3 = -1;
+ }
+
+ m_code += 3;
+}
+
+ALWAYS_INLINE void Lexer::shift4()
+{
+ if (LIKELY(m_code + 3 < m_codeEnd)) {
+ m_current = m_code[0];
+ m_next1 = m_code[1];
+ m_next2 = m_code[2];
+ m_next3 = m_code[3];
+ } else {
+ m_current = m_code < m_codeEnd ? m_code[0] : -1;
+ m_next1 = m_code + 1 < m_codeEnd ? m_code[1] : -1;
+ m_next2 = m_code + 2 < m_codeEnd ? m_code[2] : -1;
+ m_next3 = -1;
+ }
+
+ m_code += 4;
}
void Lexer::setCode(const SourceCode& source)
{
- yylineno = source.firstLine();
- m_restrKeyword = false;
+ m_lineNumber = source.firstLine();
m_delimited = false;
- m_eatNextIdentifier = false;
- m_stackToken = -1;
m_lastToken = -1;
- m_position = source.startOffset();
+ const UChar* data = source.provider()->data();
+
m_source = &source;
- m_code = source.provider()->data();
- m_length = source.endOffset();
- m_skipLF = false;
- m_skipCR = false;
+ m_codeStart = data;
+ m_code = data + source.startOffset();
+ m_codeEnd = data + source.endOffset();
m_error = false;
m_atLineStart = true;
- // read first characters
- shift(4);
+ // ECMA-262 calls for stripping all Cf characters, but we only strip BOM characters.
+ // See <https://bugs.webkit.org/show_bug.cgi?id=4931> for details.
+ if (source.provider()->hasBOMs()) {
+ for (const UChar* p = m_codeStart; p < m_codeEnd; ++p) {
+ if (UNLIKELY(*p == byteOrderMark)) {
+ copyCodeWithoutBOMs();
+ break;
+ }
+ }
+ }
+
+ // Read the first characters into the 4-character buffer.
+ shift4();
+ ASSERT(currentOffset() == source.startOffset());
}
-void Lexer::shift(unsigned p)
+void Lexer::copyCodeWithoutBOMs()
{
- // ECMA-262 calls for stripping Cf characters here, but we only do this for BOM,
- // see <https://bugs.webkit.org/show_bug.cgi?id=4931>.
-
- while (p--) {
- m_current = m_next1;
- m_next1 = m_next2;
- m_next2 = m_next3;
- m_currentOffset = m_nextOffset1;
- m_nextOffset1 = m_nextOffset2;
- m_nextOffset2 = m_nextOffset3;
- do {
- if (m_position >= m_length) {
- m_nextOffset3 = m_position;
- m_position++;
- m_next3 = -1;
- break;
- }
- m_nextOffset3 = m_position;
- m_next3 = m_code[m_position++];
- } while (m_next3 == 0xFEFF);
+ // Note: In this case, the character offset data for debugging will be incorrect.
+ // If it's important to correctly debug code with extraneous BOMs, then the caller
+ // should strip the BOMs when creating the SourceProvider object and do its own
+ // mapping of offsets within the stripped text to original text offset.
+
+ m_codeWithoutBOMs.reserveCapacity(m_codeEnd - m_code);
+ for (const UChar* p = m_code; p < m_codeEnd; ++p) {
+ UChar c = *p;
+ if (c != byteOrderMark)
+ m_codeWithoutBOMs.append(c);
+ }
+ ptrdiff_t startDelta = m_codeStart - m_code;
+ m_code = m_codeWithoutBOMs.data();
+ m_codeStart = m_code + startDelta;
+ m_codeEnd = m_codeWithoutBOMs.data() + m_codeWithoutBOMs.size();
+}
+
+void Lexer::shiftLineTerminator()
+{
+ ASSERT(isLineTerminator(m_current));
+
+ // Allow both CRLF and LFCR.
+ if (m_current + m_next1 == '\n' + '\r')
+ shift2();
+ else
+ shift1();
+
+ ++m_lineNumber;
+}
+
+ALWAYS_INLINE Identifier* Lexer::makeIdentifier(const UChar* characters, size_t length)
+{
+ m_identifiers.append(Identifier(m_globalData, characters, length));
+ return &m_identifiers.last();
+}
+
+inline bool Lexer::lastTokenWasRestrKeyword() const
+{
+ return m_lastToken == CONTINUE || m_lastToken == BREAK || m_lastToken == RETURN || m_lastToken == THROW;
+}
+
+static NEVER_INLINE bool isNonASCIIIdentStart(int c)
+{
+ return category(c) & (Letter_Uppercase | Letter_Lowercase | Letter_Titlecase | Letter_Modifier | Letter_Other);
+}
+
+static inline bool isIdentStart(int c)
+{
+ return isASCII(c) ? isASCIIAlpha(c) || c == '$' || c == '_' : isNonASCIIIdentStart(c);
+}
+
+static NEVER_INLINE bool isNonASCIIIdentPart(int c)
+{
+ return category(c) & (Letter_Uppercase | Letter_Lowercase | Letter_Titlecase | Letter_Modifier | Letter_Other
+ | Mark_NonSpacing | Mark_SpacingCombining | Number_DecimalDigit | Punctuation_Connector);
+}
+
+static inline bool isIdentPart(int c)
+{
+ return isASCII(c) ? isASCIIAlphanumeric(c) || c == '$' || c == '_' : isNonASCIIIdentPart(c);
+}
+
+static inline int singleEscape(int c)
+{
+ switch (c) {
+ case 'b':
+ return 0x08;
+ case 't':
+ return 0x09;
+ case 'n':
+ return 0x0A;
+ case 'v':
+ return 0x0B;
+ case 'f':
+ return 0x0C;
+ case 'r':
+ return 0x0D;
+ default:
+ return c;
}
}
-// called on each new line
-void Lexer::nextLine()
+inline void Lexer::record8(int c)
{
- yylineno++;
- m_atLineStart = true;
+ ASSERT(c >= 0);
+ ASSERT(c <= 0xFF);
+ m_buffer8.append(static_cast<char>(c));
}
-void Lexer::setDone(State s)
+inline void Lexer::record16(UChar c)
{
- m_state = s;
- m_done = true;
+ m_buffer16.append(c);
+}
+
+inline void Lexer::record16(int c)
+{
+ ASSERT(c >= 0);
+ ASSERT(c <= USHRT_MAX);
+ record16(UChar(static_cast<unsigned short>(c)));
}
int Lexer::lex(void* p1, void* p2)
{
+ ASSERT(!m_error);
+ ASSERT(m_buffer8.isEmpty());
+ ASSERT(m_buffer16.isEmpty());
+
YYSTYPE* lvalp = static_cast<YYSTYPE*>(p1);
YYLTYPE* llocp = static_cast<YYLTYPE*>(p2);
int token = 0;
- m_state = Start;
- unsigned short stringType = 0; // either single or double quotes
- m_buffer8.clear();
- m_buffer16.clear();
- m_done = false;
m_terminator = false;
- m_skipLF = false;
- m_skipCR = false;
-
- // did we push a token on the stack previously ?
- // (after an automatic semicolon insertion)
- if (m_stackToken >= 0) {
- setDone(Other);
- token = m_stackToken;
- m_stackToken = 0;
- }
- int startOffset = m_currentOffset;
- while (!m_done) {
- if (m_skipLF && m_current != '\n') // found \r but not \n afterwards
- m_skipLF = false;
- if (m_skipCR && m_current != '\r') // found \n but not \r afterwards
- m_skipCR = false;
- if (m_skipLF || m_skipCR) { // found \r\n or \n\r -> eat the second one
- m_skipLF = false;
- m_skipCR = false;
- shift(1);
+
+start:
+ while (isWhiteSpace(m_current))
+ shift1();
+
+ int startOffset = currentOffset();
+
+ if (m_current == -1) {
+ if (!m_terminator && !m_delimited && !m_isReparsing) {
+ // automatic semicolon insertion if program incomplete
+ token = ';';
+ goto doneSemicolon;
}
- switch (m_state) {
- case Start:
- startOffset = m_currentOffset;
- if (isWhiteSpace()) {
- // do nothing
- } else if (m_current == '/' && m_next1 == '/') {
- shift(1);
- m_state = InSingleLineComment;
- } else if (m_current == '/' && m_next1 == '*') {
- shift(1);
- m_state = InMultiLineComment;
- } else if (m_current == -1) {
- if (!m_terminator && !m_delimited && !m_isReparsing) {
- // automatic semicolon insertion if program incomplete
- token = ';';
- m_stackToken = 0;
- setDone(Other);
- } else
- setDone(Eof);
- } else if (isLineTerminator()) {
- nextLine();
- m_terminator = true;
- if (m_restrKeyword) {
- token = ';';
- setDone(Other);
- }
- } else if (m_current == '"' || m_current == '\'') {
- m_state = InString;
- stringType = static_cast<unsigned short>(m_current);
- } else if (isIdentStart(m_current)) {
- record16(m_current);
- m_state = InIdentifierOrKeyword;
- } else if (m_current == '\\')
- m_state = InIdentifierStartUnicodeEscapeStart;
- else if (m_current == '0') {
- record8(m_current);
- m_state = InNum0;
- } else if (isDecimalDigit(m_current)) {
- record8(m_current);
- m_state = InNum;
- } else if (m_current == '.' && isDecimalDigit(m_next1)) {
- record8(m_current);
- m_state = InDecimal;
- // <!-- marks the beginning of a line comment (for www usage)
- } else if (m_current == '<' && m_next1 == '!' && m_next2 == '-' && m_next3 == '-') {
- shift(3);
- m_state = InSingleLineComment;
- // same for -->
- } else if (m_atLineStart && m_current == '-' && m_next1 == '-' && m_next2 == '>') {
- shift(2);
- m_state = InSingleLineComment;
- } else {
- token = matchPunctuator(lvalp->intValue, m_current, m_next1, m_next2, m_next3);
- if (token != -1)
- setDone(Other);
- else
- setDone(Bad);
+ return 0;
+ }
+
+ m_delimited = false;
+ switch (m_current) {
+ case '>':
+ if (m_next1 == '>' && m_next2 == '>') {
+ if (m_next3 == '=') {
+ shift4();
+ token = URSHIFTEQUAL;
+ break;
}
+ shift3();
+ token = URSHIFT;
break;
- case InString:
- if (m_current == stringType) {
- shift(1);
- setDone(String);
- } else if (isLineTerminator() || m_current == -1)
- setDone(Bad);
- else if (m_current == '\\')
- m_state = InEscapeSequence;
- else
- record16(m_current);
+ }
+ if (m_next1 == '>') {
+ if (m_next2 == '=') {
+ shift3();
+ token = RSHIFTEQUAL;
+ break;
+ }
+ shift2();
+ token = RSHIFT;
break;
- // Escape Sequences inside of strings
- case InEscapeSequence:
- if (isOctalDigit(m_current)) {
- if (m_current >= '0' && m_current <= '3' &&
- isOctalDigit(m_next1) && isOctalDigit(m_next2)) {
- record16(convertOctal(m_current, m_next1, m_next2));
- shift(2);
- m_state = InString;
- } else if (isOctalDigit(m_current) && isOctalDigit(m_next1)) {
- record16(convertOctal('0', m_current, m_next1));
- shift(1);
- m_state = InString;
- } else if (isOctalDigit(m_current)) {
- record16(convertOctal('0', '0', m_current));
- m_state = InString;
- } else
- setDone(Bad);
- } else if (m_current == 'x')
- m_state = InHexEscape;
- else if (m_current == 'u')
- m_state = InUnicodeEscape;
- else if (isLineTerminator()) {
- nextLine();
- m_state = InString;
- } else {
- record16(singleEscape(static_cast<unsigned short>(m_current)));
- m_state = InString;
+ }
+ if (m_next1 == '=') {
+ shift2();
+ token = GE;
+ break;
+ }
+ shift1();
+ token = '>';
+ break;
+ case '=':
+ if (m_next1 == '=') {
+ if (m_next2 == '=') {
+ shift3();
+ token = STREQ;
+ break;
}
+ shift2();
+ token = EQEQ;
break;
- case InHexEscape:
- if (isHexDigit(m_current) && isHexDigit(m_next1)) {
- m_state = InString;
- record16(convertHex(m_current, m_next1));
- shift(1);
- } else if (m_current == stringType) {
- record16('x');
- shift(1);
- setDone(String);
- } else {
- record16('x');
- record16(m_current);
- m_state = InString;
+ }
+ shift1();
+ token = '=';
+ break;
+ case '!':
+ if (m_next1 == '=') {
+ if (m_next2 == '=') {
+ shift3();
+ token = STRNEQ;
+ break;
}
+ shift2();
+ token = NE;
break;
- case InUnicodeEscape:
- if (isHexDigit(m_current) && isHexDigit(m_next1) && isHexDigit(m_next2) && isHexDigit(m_next3)) {
- record16(convertUnicode(m_current, m_next1, m_next2, m_next3));
- shift(3);
- m_state = InString;
- } else if (m_current == stringType) {
- record16('u');
- shift(1);
- setDone(String);
- } else
- setDone(Bad);
+ }
+ shift1();
+ token = '!';
+ break;
+ case '<':
+ if (m_next1 == '!' && m_next2 == '-' && m_next3 == '-') {
+ // <!-- marks the beginning of a line comment (for www usage)
+ shift4();
+ goto inSingleLineComment;
+ }
+ if (m_next1 == '<') {
+ if (m_next2 == '=') {
+ shift3();
+ token = LSHIFTEQUAL;
+ break;
+ }
+ shift2();
+ token = LSHIFT;
break;
- case InSingleLineComment:
- if (isLineTerminator()) {
- nextLine();
- m_terminator = true;
- if (m_restrKeyword) {
- token = ';';
- setDone(Other);
- } else
- m_state = Start;
- } else if (m_current == -1)
- setDone(Eof);
+ }
+ if (m_next1 == '=') {
+ shift2();
+ token = LE;
break;
- case InMultiLineComment:
- if (m_current == -1)
- setDone(Bad);
- else if (isLineTerminator())
- nextLine();
- else if (m_current == '*' && m_next1 == '/') {
- m_state = Start;
- shift(1);
+ }
+ shift1();
+ token = '<';
+ break;
+ case '+':
+ if (m_next1 == '+') {
+ shift2();
+ if (m_terminator) {
+ token = AUTOPLUSPLUS;
+ break;
}
+ token = PLUSPLUS;
break;
- case InIdentifierOrKeyword:
- case InIdentifier:
- if (isIdentPart(m_current))
- record16(m_current);
- else if (m_current == '\\')
- m_state = InIdentifierPartUnicodeEscapeStart;
- else
- setDone(m_state == InIdentifierOrKeyword ? IdentifierOrKeyword : Identifier);
+ }
+ if (m_next1 == '=') {
+ shift2();
+ token = PLUSEQUAL;
break;
- case InNum0:
- if (m_current == 'x' || m_current == 'X') {
- record8(m_current);
- m_state = InHex;
- } else if (m_current == '.') {
- record8(m_current);
- m_state = InDecimal;
- } else if (m_current == 'e' || m_current == 'E') {
- record8(m_current);
- m_state = InExponentIndicator;
- } else if (isOctalDigit(m_current)) {
- record8(m_current);
- m_state = InOctal;
- } else if (isDecimalDigit(m_current)) {
- record8(m_current);
- m_state = InDecimal;
- } else
- setDone(Number);
+ }
+ shift1();
+ token = '+';
+ break;
+ case '-':
+ if (m_next1 == '-') {
+ if (m_atLineStart && m_next2 == '>') {
+ shift3();
+ goto inSingleLineComment;
+ }
+ shift2();
+ if (m_terminator) {
+ token = AUTOMINUSMINUS;
+ break;
+ }
+ token = MINUSMINUS;
break;
- case InHex:
- if (isHexDigit(m_current))
- record8(m_current);
- else
- setDone(Hex);
+ }
+ if (m_next1 == '=') {
+ shift2();
+ token = MINUSEQUAL;
break;
- case InOctal:
- if (isOctalDigit(m_current))
- record8(m_current);
- else if (isDecimalDigit(m_current)) {
- record8(m_current);
- m_state = InDecimal;
- } else
- setDone(Octal);
+ }
+ shift1();
+ token = '-';
+ break;
+ case '*':
+ if (m_next1 == '=') {
+ shift2();
+ token = MULTEQUAL;
break;
- case InNum:
- if (isDecimalDigit(m_current))
- record8(m_current);
- else if (m_current == '.') {
- record8(m_current);
- m_state = InDecimal;
- } else if (m_current == 'e' || m_current == 'E') {
- record8(m_current);
- m_state = InExponentIndicator;
- } else
- setDone(Number);
+ }
+ shift1();
+ token = '*';
+ break;
+ case '/':
+ if (m_next1 == '/') {
+ shift2();
+ goto inSingleLineComment;
+ }
+ if (m_next1 == '*')
+ goto inMultiLineComment;
+ if (m_next1 == '=') {
+ shift2();
+ token = DIVEQUAL;
break;
- case InDecimal:
- if (isDecimalDigit(m_current))
- record8(m_current);
- else if (m_current == 'e' || m_current == 'E') {
- record8(m_current);
- m_state = InExponentIndicator;
- } else
- setDone(Number);
+ }
+ shift1();
+ token = '/';
+ break;
+ case '&':
+ if (m_next1 == '&') {
+ shift2();
+ token = AND;
break;
- case InExponentIndicator:
- if (m_current == '+' || m_current == '-')
- record8(m_current);
- else if (isDecimalDigit(m_current)) {
- record8(m_current);
- m_state = InExponent;
- } else
- setDone(Bad);
+ }
+ if (m_next1 == '=') {
+ shift2();
+ token = ANDEQUAL;
break;
- case InExponent:
- if (isDecimalDigit(m_current))
- record8(m_current);
- else
- setDone(Number);
+ }
+ shift1();
+ token = '&';
+ break;
+ case '^':
+ if (m_next1 == '=') {
+ shift2();
+ token = XOREQUAL;
break;
- case InIdentifierStartUnicodeEscapeStart:
- if (m_current == 'u')
- m_state = InIdentifierStartUnicodeEscape;
- else
- setDone(Bad);
+ }
+ shift1();
+ token = '^';
+ break;
+ case '%':
+ if (m_next1 == '=') {
+ shift2();
+ token = MODEQUAL;
break;
- case InIdentifierPartUnicodeEscapeStart:
- if (m_current == 'u')
- m_state = InIdentifierPartUnicodeEscape;
- else
- setDone(Bad);
+ }
+ shift1();
+ token = '%';
+ break;
+ case '|':
+ if (m_next1 == '=') {
+ shift2();
+ token = OREQUAL;
break;
- case InIdentifierStartUnicodeEscape:
- if (!isHexDigit(m_current) || !isHexDigit(m_next1) || !isHexDigit(m_next2) || !isHexDigit(m_next3)) {
- setDone(Bad);
- break;
- }
- token = convertUnicode(m_current, m_next1, m_next2, m_next3);
- shift(3);
- if (!isIdentStart(token)) {
- setDone(Bad);
- break;
- }
- record16(token);
- m_state = InIdentifier;
+ }
+ if (m_next1 == '|') {
+ shift2();
+ token = OR;
break;
- case InIdentifierPartUnicodeEscape:
- if (!isHexDigit(m_current) || !isHexDigit(m_next1) || !isHexDigit(m_next2) || !isHexDigit(m_next3)) {
- setDone(Bad);
- break;
- }
- token = convertUnicode(m_current, m_next1, m_next2, m_next3);
- shift(3);
- if (!isIdentPart(token)) {
- setDone(Bad);
- break;
+ }
+ shift1();
+ token = '|';
+ break;
+ case '.':
+ if (isASCIIDigit(m_next1)) {
+ record8('.');
+ shift1();
+ goto inNumberAfterDecimalPoint;
+ }
+ token = '.';
+ shift1();
+ break;
+ case ',':
+ case '~':
+ case '?':
+ case ':':
+ case '(':
+ case ')':
+ case '[':
+ case ']':
+ token = m_current;
+ shift1();
+ break;
+ case ';':
+ shift1();
+ m_delimited = true;
+ token = ';';
+ break;
+ case '{':
+ lvalp->intValue = currentOffset();
+ shift1();
+ token = OPENBRACE;
+ break;
+ case '}':
+ lvalp->intValue = currentOffset();
+ shift1();
+ m_delimited = true;
+ token = CLOSEBRACE;
+ break;
+ case '\\':
+ goto startIdentifierWithBackslash;
+ case '0':
+ goto startNumberWithZeroDigit;
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ goto startNumber;
+ case '"':
+ case '\'':
+ goto startString;
+ default:
+ if (isIdentStart(m_current))
+ goto startIdentifierOrKeyword;
+ if (isLineTerminator(m_current)) {
+ shiftLineTerminator();
+ m_atLineStart = true;
+ m_terminator = true;
+ if (lastTokenWasRestrKeyword()) {
+ token = ';';
+ goto doneSemicolon;
}
- record16(token);
- m_state = InIdentifier;
- break;
- default:
- ASSERT(!"Unhandled state in switch statement");
- }
-
- // move on to the next character
- if (!m_done)
- shift(1);
- if (m_state != Start && m_state != InSingleLineComment)
- m_atLineStart = false;
+ goto start;
+ }
+ goto returnError;
}
- // no identifiers allowed directly after numeric literal, e.g. "3in" is bad
- if ((m_state == Number || m_state == Octal || m_state == Hex) && isIdentStart(m_current))
- m_state = Bad;
+ m_atLineStart = false;
+ goto returnToken;
- // terminate string
- m_buffer8.append('\0');
-
-#ifdef JSC_DEBUG_LEX
- fprintf(stderr, "line: %d ", lineNo());
- fprintf(stderr, "yytext (%x): ", m_buffer8[0]);
- fprintf(stderr, "%s ", m_buffer8.data());
-#endif
+startString: {
+ int stringQuoteCharacter = m_current;
+ shift1();
- double dval = 0;
- if (m_state == Number)
- dval = WTF::strtod(m_buffer8.data(), 0L);
- else if (m_state == Hex) { // scan hex numbers
- const char* p = m_buffer8.data() + 2;
- while (char c = *p++) {
- dval *= 16;
- dval += convertHex(c);
+ const UChar* stringStart = currentCharacter();
+ while (m_current != stringQuoteCharacter) {
+ // Fast check for characters that require special handling.
+ // Catches -1, \n, \r, \, 0x2028, and 0x2029 as efficiently
+ // as possible, and lets through all common ASCII characters.
+ if (UNLIKELY(m_current == '\\') || UNLIKELY(((static_cast<unsigned>(m_current) - 0xE) & 0x2000))) {
+ m_buffer16.append(stringStart, currentCharacter() - stringStart);
+ goto inString;
+ }
+ shift1();
+ }
+ lvalp->ident = makeIdentifier(stringStart, currentCharacter() - stringStart);
+ shift1();
+ m_atLineStart = false;
+ m_delimited = false;
+ token = STRING;
+ goto returnToken;
+
+inString:
+ while (m_current != stringQuoteCharacter) {
+ if (m_current == '\\')
+ goto inStringEscapeSequence;
+ if (UNLIKELY(isLineTerminator(m_current)))
+ goto returnError;
+ if (UNLIKELY(m_current == -1))
+ goto returnError;
+ record16(m_current);
+ shift1();
+ }
+ goto doneString;
+
+inStringEscapeSequence:
+ shift1();
+ if (m_current == 'x') {
+ shift1();
+ if (isASCIIHexDigit(m_current) && isASCIIHexDigit(m_next1)) {
+ record16(convertHex(m_current, m_next1));
+ shift2();
+ goto inString;
}
+ record16('x');
+ if (m_current == stringQuoteCharacter)
+ goto doneString;
+ goto inString;
+ }
+ if (m_current == 'u') {
+ shift1();
+ if (isASCIIHexDigit(m_current) && isASCIIHexDigit(m_next1) && isASCIIHexDigit(m_next2) && isASCIIHexDigit(m_next3)) {
+ record16(convertUnicode(m_current, m_next1, m_next2, m_next3));
+ shift4();
+ goto inString;
+ }
+ if (m_current == stringQuoteCharacter) {
+ record16('u');
+ goto doneString;
+ }
+ goto returnError;
+ }
+ if (isASCIIOctalDigit(m_current)) {
+ if (m_current >= '0' && m_current <= '3' && isASCIIOctalDigit(m_next1) && isASCIIOctalDigit(m_next2)) {
+ record16((m_current - '0') * 64 + (m_next1 - '0') * 8 + m_next2 - '0');
+ shift3();
+ goto inString;
+ }
+ if (isASCIIOctalDigit(m_next1)) {
+ record16((m_current - '0') * 8 + m_next1 - '0');
+ shift2();
+ goto inString;
+ }
+ record16(m_current - '0');
+ shift1();
+ goto inString;
+ }
+ if (isLineTerminator(m_current)) {
+ shiftLineTerminator();
+ goto inString;
+ }
+ record16(singleEscape(m_current));
+ shift1();
+ goto inString;
+}
- if (dval >= mantissaOverflowLowerBound)
- dval = parseIntOverflow(m_buffer8.data() + 2, p - (m_buffer8.data() + 3), 16);
+startIdentifierWithBackslash:
+ shift1();
+ if (UNLIKELY(m_current != 'u'))
+ goto returnError;
+ shift1();
+ if (UNLIKELY(!isASCIIHexDigit(m_current) || !isASCIIHexDigit(m_next1) || !isASCIIHexDigit(m_next2) || !isASCIIHexDigit(m_next3)))
+ goto returnError;
+ token = convertUnicode(m_current, m_next1, m_next2, m_next3);
+ if (UNLIKELY(!isIdentStart(token)))
+ goto returnError;
+ goto inIdentifierAfterCharacterCheck;
+
+startIdentifierOrKeyword: {
+ const UChar* identifierStart = currentCharacter();
+ shift1();
+ while (isIdentPart(m_current))
+ shift1();
+ if (LIKELY(m_current != '\\')) {
+ lvalp->ident = makeIdentifier(identifierStart, currentCharacter() - identifierStart);
+ goto doneIdentifierOrKeyword;
+ }
+ m_buffer16.append(identifierStart, currentCharacter() - identifierStart);
+}
- m_state = Number;
- } else if (m_state == Octal) { // scan octal number
- const char* p = m_buffer8.data() + 1;
- while (char c = *p++) {
- dval *= 8;
- dval += c - '0';
+ do {
+ shift1();
+ if (UNLIKELY(m_current != 'u'))
+ goto returnError;
+ shift1();
+ if (UNLIKELY(!isASCIIHexDigit(m_current) || !isASCIIHexDigit(m_next1) || !isASCIIHexDigit(m_next2) || !isASCIIHexDigit(m_next3)))
+ goto returnError;
+ token = convertUnicode(m_current, m_next1, m_next2, m_next3);
+ if (UNLIKELY(!isIdentPart(token)))
+ goto returnError;
+inIdentifierAfterCharacterCheck:
+ record16(token);
+ shift4();
+
+ while (isIdentPart(m_current)) {
+ record16(m_current);
+ shift1();
}
+ } while (UNLIKELY(m_current == '\\'));
+ goto doneIdentifier;
- if (dval >= mantissaOverflowLowerBound)
- dval = parseIntOverflow(m_buffer8.data() + 1, p - (m_buffer8.data() + 2), 8);
-
- m_state = Number;
+inSingleLineComment:
+ while (!isLineTerminator(m_current)) {
+ if (UNLIKELY(m_current == -1))
+ return 0;
+ shift1();
}
-
-#ifdef JSC_DEBUG_LEX
- switch (m_state) {
- case Eof:
- printf("(EOF)\n");
- break;
- case Other:
- printf("(Other)\n");
- break;
- case Identifier:
- printf("(Identifier)/(Keyword)\n");
- break;
- case String:
- printf("(String)\n");
- break;
- case Number:
- printf("(Number)\n");
- break;
- default:
- printf("(unknown)");
+ shiftLineTerminator();
+ m_atLineStart = true;
+ m_terminator = true;
+ if (lastTokenWasRestrKeyword())
+ goto doneSemicolon;
+ goto start;
+
+inMultiLineComment:
+ shift2();
+ while (m_current != '*' || m_next1 != '/') {
+ if (isLineTerminator(m_current))
+ shiftLineTerminator();
+ else {
+ shift1();
+ if (UNLIKELY(m_current == -1))
+ goto returnError;
+ }
}
-#endif
+ shift2();
+ m_atLineStart = false;
+ goto start;
+
+startNumberWithZeroDigit:
+ shift1();
+ if ((m_current | 0x20) == 'x' && isASCIIHexDigit(m_next1)) {
+ shift1();
+ goto inHex;
+ }
+ if (m_current == '.') {
+ record8('0');
+ record8('.');
+ shift1();
+ goto inNumberAfterDecimalPoint;
+ }
+ if ((m_current | 0x20) == 'e') {
+ record8('0');
+ record8('e');
+ shift1();
+ goto inExponentIndicator;
+ }
+ if (isASCIIOctalDigit(m_current))
+ goto inOctal;
+ if (isASCIIDigit(m_current))
+ goto startNumber;
+ lvalp->doubleValue = 0;
+ goto doneNumeric;
+
+inNumberAfterDecimalPoint:
+ while (isASCIIDigit(m_current)) {
+ record8(m_current);
+ shift1();
+ }
+ if ((m_current | 0x20) == 'e') {
+ record8('e');
+ shift1();
+ goto inExponentIndicator;
+ }
+ goto doneNumber;
+
+inExponentIndicator:
+ if (m_current == '+' || m_current == '-') {
+ record8(m_current);
+ shift1();
+ }
+ if (!isASCIIDigit(m_current))
+ goto returnError;
+ do {
+ record8(m_current);
+ shift1();
+ } while (isASCIIDigit(m_current));
+ goto doneNumber;
+
+inOctal: {
+ do {
+ record8(m_current);
+ shift1();
+ } while (isASCIIOctalDigit(m_current));
+ if (isASCIIDigit(m_current))
+ goto startNumber;
- if (m_state != Identifier)
- m_eatNextIdentifier = false;
+ double dval = 0;
- m_restrKeyword = false;
- m_delimited = false;
- llocp->first_line = yylineno;
- llocp->last_line = yylineno;
- llocp->first_column = startOffset;
- llocp->last_column = m_currentOffset;
- switch (m_state) {
- case Eof:
- token = 0;
- break;
- case Other:
- if (token == '}' || token == ';')
- m_delimited = true;
- break;
- case Identifier:
- // Apply anonymous-function hack below (eat the identifier).
- if (m_eatNextIdentifier) {
- m_eatNextIdentifier = false;
- token = lex(lvalp, llocp);
- break;
- }
- lvalp->ident = makeIdentifier(m_buffer16);
- token = IDENT;
- break;
- case IdentifierOrKeyword: {
- lvalp->ident = makeIdentifier(m_buffer16);
- const HashEntry* entry = m_mainTable.entry(m_globalData, *lvalp->ident);
- if (!entry) {
- // Lookup for keyword failed, means this is an identifier.
- token = IDENT;
- break;
- }
- token = entry->lexerValue();
- // Hack for "f = function somename() { ... }"; too hard to get into the grammar.
- m_eatNextIdentifier = token == FUNCTION && m_lastToken == '=';
- if (token == CONTINUE || token == BREAK || token == RETURN || token == THROW)
- m_restrKeyword = true;
- break;
- }
- case String:
- // Atomize constant strings in case they're later used in property lookup.
- lvalp->ident = makeIdentifier(m_buffer16);
- token = STRING;
- break;
- case Number:
- lvalp->doubleValue = dval;
- token = NUMBER;
- break;
- case Bad:
-#ifdef JSC_DEBUG_LEX
- fprintf(stderr, "yylex: ERROR.\n");
-#endif
- m_error = true;
- return -1;
- default:
- ASSERT(!"unhandled numeration value in switch");
- m_error = true;
- return -1;
+ const char* end = m_buffer8.end();
+ for (const char* p = m_buffer8.data(); p < end; ++p) {
+ dval *= 8;
+ dval += *p - '0';
}
- m_lastToken = token;
- return token;
-}
+ if (dval >= mantissaOverflowLowerBound)
+ dval = parseIntOverflow(m_buffer8.data(), end - m_buffer8.data(), 8);
-bool Lexer::isWhiteSpace() const
-{
- return m_current == '\t' || m_current == 0x0b || m_current == 0x0c || isSeparatorSpace(m_current);
-}
+ m_buffer8.resize(0);
-bool Lexer::isLineTerminator()
-{
- bool cr = (m_current == '\r');
- bool lf = (m_current == '\n');
- if (cr)
- m_skipLF = true;
- else if (lf)
- m_skipCR = true;
- return cr || lf || m_current == 0x2028 || m_current == 0x2029;
+ lvalp->doubleValue = dval;
+ goto doneNumeric;
}
-bool Lexer::isIdentStart(int c)
-{
- return isASCIIAlpha(c) || c == '$' || c == '_' || (!isASCII(c) && (category(c) & (Letter_Uppercase | Letter_Lowercase | Letter_Titlecase | Letter_Modifier | Letter_Other)));
-}
+inHex: {
+ do {
+ record8(m_current);
+ shift1();
+ } while (isASCIIHexDigit(m_current));
-bool Lexer::isIdentPart(int c)
-{
- return isASCIIAlphanumeric(c) || c == '$' || c == '_' || (!isASCII(c) && (category(c) & (Letter_Uppercase | Letter_Lowercase | Letter_Titlecase | Letter_Modifier | Letter_Other
- | Mark_NonSpacing | Mark_SpacingCombining | Number_DecimalDigit | Punctuation_Connector)));
-}
+ double dval = 0;
-static bool isDecimalDigit(int c)
-{
- return isASCIIDigit(c);
-}
+ const char* end = m_buffer8.end();
+ for (const char* p = m_buffer8.data(); p < end; ++p) {
+ dval *= 16;
+ dval += toASCIIHexValue(*p);
+ }
+ if (dval >= mantissaOverflowLowerBound)
+ dval = parseIntOverflow(m_buffer8.data(), end - m_buffer8.data(), 16);
-bool Lexer::isHexDigit(int c)
-{
- return isASCIIHexDigit(c);
-}
+ m_buffer8.resize(0);
-bool Lexer::isOctalDigit(int c)
-{
- return isASCIIOctalDigit(c);
+ lvalp->doubleValue = dval;
+ goto doneNumeric;
}
-int Lexer::matchPunctuator(int& charPos, int c1, int c2, int c3, int c4)
-{
- if (c1 == '>' && c2 == '>' && c3 == '>' && c4 == '=') {
- shift(4);
- return URSHIFTEQUAL;
- }
- if (c1 == '=' && c2 == '=' && c3 == '=') {
- shift(3);
- return STREQ;
- }
- if (c1 == '!' && c2 == '=' && c3 == '=') {
- shift(3);
- return STRNEQ;
- }
- if (c1 == '>' && c2 == '>' && c3 == '>') {
- shift(3);
- return URSHIFT;
- }
- if (c1 == '<' && c2 == '<' && c3 == '=') {
- shift(3);
- return LSHIFTEQUAL;
- }
- if (c1 == '>' && c2 == '>' && c3 == '=') {
- shift(3);
- return RSHIFTEQUAL;
- }
- if (c1 == '<' && c2 == '=') {
- shift(2);
- return LE;
- }
- if (c1 == '>' && c2 == '=') {
- shift(2);
- return GE;
- }
- if (c1 == '!' && c2 == '=') {
- shift(2);
- return NE;
- }
- if (c1 == '+' && c2 == '+') {
- shift(2);
- if (m_terminator)
- return AUTOPLUSPLUS;
- return PLUSPLUS;
- }
- if (c1 == '-' && c2 == '-') {
- shift(2);
- if (m_terminator)
- return AUTOMINUSMINUS;
- return MINUSMINUS;
- }
- if (c1 == '=' && c2 == '=') {
- shift(2);
- return EQEQ;
- }
- if (c1 == '+' && c2 == '=') {
- shift(2);
- return PLUSEQUAL;
- }
- if (c1 == '-' && c2 == '=') {
- shift(2);
- return MINUSEQUAL;
- }
- if (c1 == '*' && c2 == '=') {
- shift(2);
- return MULTEQUAL;
- }
- if (c1 == '/' && c2 == '=') {
- shift(2);
- return DIVEQUAL;
- }
- if (c1 == '&' && c2 == '=') {
- shift(2);
- return ANDEQUAL;
- }
- if (c1 == '^' && c2 == '=') {
- shift(2);
- return XOREQUAL;
- }
- if (c1 == '%' && c2 == '=') {
- shift(2);
- return MODEQUAL;
- }
- if (c1 == '|' && c2 == '=') {
- shift(2);
- return OREQUAL;
- }
- if (c1 == '<' && c2 == '<') {
- shift(2);
- return LSHIFT;
- }
- if (c1 == '>' && c2 == '>') {
- shift(2);
- return RSHIFT;
+startNumber:
+ record8(m_current);
+ shift1();
+ while (isASCIIDigit(m_current)) {
+ record8(m_current);
+ shift1();
}
- if (c1 == '&' && c2 == '&') {
- shift(2);
- return AND;
+ if (m_current == '.') {
+ record8('.');
+ shift1();
+ goto inNumberAfterDecimalPoint;
}
- if (c1 == '|' && c2 == '|') {
- shift(2);
- return OR;
+ if ((m_current | 0x20) == 'e') {
+ record8('e');
+ shift1();
+ goto inExponentIndicator;
}
- switch (c1) {
- case '=':
- case '>':
- case '<':
- case ',':
- case '!':
- case '~':
- case '?':
- case ':':
- case '.':
- case '+':
- case '-':
- case '*':
- case '/':
- case '&':
- case '|':
- case '^':
- case '%':
- case '(':
- case ')':
- case '[':
- case ']':
- case ';':
- shift(1);
- return static_cast<int>(c1);
- case '{':
- charPos = m_position - 4;
- shift(1);
- return OPENBRACE;
- case '}':
- charPos = m_position - 4;
- shift(1);
- return CLOSEBRACE;
- default:
- return -1;
- }
-}
+ // Fall through into doneNumber.
-unsigned short Lexer::singleEscape(unsigned short c)
-{
- switch (c) {
- case 'b':
- return 0x08;
- case 't':
- return 0x09;
- case 'n':
- return 0x0A;
- case 'v':
- return 0x0B;
- case 'f':
- return 0x0C;
- case 'r':
- return 0x0D;
- case '"':
- return 0x22;
- case '\'':
- return 0x27;
- case '\\':
- return 0x5C;
- default:
- return c;
- }
-}
+doneNumber:
+ // Null-terminate string for strtod.
+ m_buffer8.append('\0');
+ lvalp->doubleValue = WTF::strtod(m_buffer8.data(), 0);
+ m_buffer8.resize(0);
-unsigned short Lexer::convertOctal(int c1, int c2, int c3)
-{
- return static_cast<unsigned short>((c1 - '0') * 64 + (c2 - '0') * 8 + c3 - '0');
-}
+ // Fall through into doneNumeric.
-unsigned char Lexer::convertHex(int c)
-{
- if (c >= '0' && c <= '9')
- return static_cast<unsigned char>(c - '0');
- if (c >= 'a' && c <= 'f')
- return static_cast<unsigned char>(c - 'a' + 10);
- return static_cast<unsigned char>(c - 'A' + 10);
-}
+doneNumeric:
+ // No identifiers allowed directly after numeric literal, e.g. "3in" is bad.
+ if (UNLIKELY(isIdentStart(m_current)))
+ goto returnError;
-unsigned char Lexer::convertHex(int c1, int c2)
-{
- return ((convertHex(c1) << 4) + convertHex(c2));
-}
+ m_atLineStart = false;
+ m_delimited = false;
+ token = NUMBER;
+ goto returnToken;
-UChar Lexer::convertUnicode(int c1, int c2, int c3, int c4)
-{
- unsigned char highByte = (convertHex(c1) << 4) + convertHex(c2);
- unsigned char lowByte = (convertHex(c3) << 4) + convertHex(c4);
- return (highByte << 8 | lowByte);
-}
+doneSemicolon:
+ token = ';';
+ m_delimited = true;
+ goto returnToken;
-void Lexer::record8(int c)
-{
- ASSERT(c >= 0);
- ASSERT(c <= 0xff);
- m_buffer8.append(static_cast<char>(c));
+doneIdentifier:
+ m_atLineStart = false;
+ m_delimited = false;
+ lvalp->ident = makeIdentifier(m_buffer16.data(), m_buffer16.size());
+ m_buffer16.resize(0);
+ token = IDENT;
+ goto returnToken;
+
+doneIdentifierOrKeyword: {
+ m_atLineStart = false;
+ m_delimited = false;
+ m_buffer16.resize(0);
+ const HashEntry* entry = m_keywordTable.entry(m_globalData, *lvalp->ident);
+ token = entry ? entry->lexerValue() : IDENT;
+ goto returnToken;
}
-void Lexer::record16(int c)
-{
- ASSERT(c >= 0);
- ASSERT(c <= USHRT_MAX);
- record16(UChar(static_cast<unsigned short>(c)));
+doneString:
+ // Atomize constant strings in case they're later used in property lookup.
+ shift1();
+ m_atLineStart = false;
+ m_delimited = false;
+ lvalp->ident = makeIdentifier(m_buffer16.data(), m_buffer16.size());
+ m_buffer16.resize(0);
+ token = STRING;
+
+ // Fall through into returnToken.
+
+returnToken: {
+ int lineNumber = m_lineNumber;
+ llocp->first_line = lineNumber;
+ llocp->last_line = lineNumber;
+ llocp->first_column = startOffset;
+ llocp->last_column = currentOffset();
+
+ m_lastToken = token;
+ return token;
}
-void Lexer::record16(UChar c)
-{
- m_buffer16.append(c);
+returnError:
+ m_error = true;
+ return -1;
}
bool Lexer::scanRegExp()
{
- m_buffer16.clear();
+ ASSERT(m_buffer16.isEmpty());
+
bool lastWasEscape = false;
bool inBrackets = false;
- while (1) {
- if (isLineTerminator() || m_current == -1)
+ while (true) {
+ if (isLineTerminator(m_current) || m_current == -1)
return false;
- else if (m_current != '/' || lastWasEscape == true || inBrackets == true) {
+ if (m_current != '/' || lastWasEscape || inBrackets) {
// keep track of '[' and ']'
if (!lastWasEscape) {
- if ( m_current == '[' && !inBrackets )
+ if (m_current == '[' && !inBrackets)
inBrackets = true;
- if ( m_current == ']' && inBrackets )
+ if (m_current == ']' && inBrackets)
inBrackets = false;
}
record16(m_current);
- lastWasEscape =
- !lastWasEscape && (m_current == '\\');
+ lastWasEscape = !lastWasEscape && m_current == '\\';
} else { // end of regexp
m_pattern = UString(m_buffer16);
- m_buffer16.clear();
- shift(1);
+ m_buffer16.resize(0);
+ shift1();
break;
}
- shift(1);
+ shift1();
}
while (isIdentPart(m_current)) {
record16(m_current);
- shift(1);
+ shift1();
}
m_flags = UString(m_buffer16);
+ m_buffer16.resize(0);
return true;
}
@@ -882,19 +950,42 @@ bool Lexer::scanRegExp()
void Lexer::clear()
{
m_identifiers.clear();
+ m_codeWithoutBOMs.clear();
Vector<char> newBuffer8;
- newBuffer8.reserveCapacity(initialReadBufferCapacity);
+ newBuffer8.reserveInitialCapacity(initialReadBufferCapacity);
m_buffer8.swap(newBuffer8);
Vector<UChar> newBuffer16;
- newBuffer16.reserveCapacity(initialReadBufferCapacity);
+ newBuffer16.reserveInitialCapacity(initialReadBufferCapacity);
m_buffer16.swap(newBuffer16);
m_isReparsing = false;
- m_pattern = 0;
- m_flags = 0;
+ m_pattern = UString();
+ m_flags = UString();
+}
+
+SourceCode Lexer::sourceCode(int openBrace, int closeBrace, int firstLine)
+{
+ if (m_codeWithoutBOMs.isEmpty())
+ return SourceCode(m_source->provider(), openBrace, closeBrace + 1, firstLine);
+
+ const UChar* data = m_source->provider()->data();
+
+ ASSERT(openBrace < closeBrace);
+
+ int numBOMsBeforeOpenBrace = 0;
+ int numBOMsBetweenBraces = 0;
+
+ int i;
+ for (i = m_source->startOffset(); i < openBrace; ++i)
+ numBOMsBeforeOpenBrace += data[i] == byteOrderMark;
+ for (; i < closeBrace; ++i)
+ numBOMsBetweenBraces += data[i] == byteOrderMark;
+
+ return SourceCode(m_source->provider(), openBrace + numBOMsBeforeOpenBrace,
+ closeBrace + numBOMsBeforeOpenBrace + numBOMsBetweenBraces + 1, firstLine);
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h
index afcf09f..9c22a9c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
- * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -22,11 +22,12 @@
#ifndef Lexer_h
#define Lexer_h
-#include "Identifier.h"
#include "Lookup.h"
#include "SegmentedVector.h"
#include "SourceCode.h"
+#include <wtf/ASCIICType.h>
#include <wtf/Vector.h>
+#include <wtf/unicode/Unicode.h>
namespace JSC {
@@ -34,115 +35,71 @@ namespace JSC {
class Lexer : Noncopyable {
public:
+ // Character manipulation functions.
+ static bool isWhiteSpace(int character);
+ static bool isLineTerminator(int character);
+ static unsigned char convertHex(int c1, int c2);
+ static UChar convertUnicode(int c1, int c2, int c3, int c4);
+
+ // Functions to set up parsing.
void setCode(const SourceCode&);
void setIsReparsing() { m_isReparsing = true; }
- int lex(void* lvalp, void* llocp);
-
- int lineNo() const { return yylineno; }
+ // Functions for the parser itself.
+ int lex(void* lvalp, void* llocp);
+ int lineNumber() const { return m_lineNumber; }
bool prevTerminator() const { return m_terminator; }
-
- enum State {
- Start,
- IdentifierOrKeyword,
- Identifier,
- InIdentifierOrKeyword,
- InIdentifier,
- InIdentifierStartUnicodeEscapeStart,
- InIdentifierStartUnicodeEscape,
- InIdentifierPartUnicodeEscapeStart,
- InIdentifierPartUnicodeEscape,
- InSingleLineComment,
- InMultiLineComment,
- InNum,
- InNum0,
- InHex,
- InOctal,
- InDecimal,
- InExponentIndicator,
- InExponent,
- Hex,
- Octal,
- Number,
- String,
- Eof,
- InString,
- InEscapeSequence,
- InHexEscape,
- InUnicodeEscape,
- Other,
- Bad
- };
-
+ SourceCode sourceCode(int openBrace, int closeBrace, int firstLine);
bool scanRegExp();
const UString& pattern() const { return m_pattern; }
const UString& flags() const { return m_flags; }
- static unsigned char convertHex(int);
- static unsigned char convertHex(int c1, int c2);
- static UChar convertUnicode(int c1, int c2, int c3, int c4);
- static bool isIdentStart(int);
- static bool isIdentPart(int);
- static bool isHexDigit(int);
-
+ // Functions for use after parsing.
bool sawError() const { return m_error; }
-
void clear();
- SourceCode sourceCode(int openBrace, int closeBrace, int firstLine) { return SourceCode(m_source->provider(), openBrace, closeBrace + 1, firstLine); }
private:
friend class JSGlobalData;
+
Lexer(JSGlobalData*);
~Lexer();
- void setDone(State);
- void shift(unsigned int p);
- void nextLine();
- int lookupKeyword(const char *);
-
- bool isWhiteSpace() const;
- bool isLineTerminator();
- static bool isOctalDigit(int);
-
- int matchPunctuator(int& charPos, int c1, int c2, int c3, int c4);
- static unsigned short singleEscape(unsigned short);
- static unsigned short convertOctal(int c1, int c2, int c3);
+ void shift1();
+ void shift2();
+ void shift3();
+ void shift4();
+ void shiftLineTerminator();
void record8(int);
void record16(int);
void record16(UChar);
- JSC::Identifier* makeIdentifier(const Vector<UChar>& buffer)
- {
- m_identifiers.append(JSC::Identifier(m_globalData, buffer.data(), buffer.size()));
- return &m_identifiers.last();
- }
+ void copyCodeWithoutBOMs();
+
+ int currentOffset() const;
+ const UChar* currentCharacter() const;
+
+ JSC::Identifier* makeIdentifier(const UChar* buffer, size_t length);
+
+ bool lastTokenWasRestrKeyword() const;
static const size_t initialReadBufferCapacity = 32;
static const size_t initialIdentifierTableCapacity = 64;
- int yylineno;
- int yycolumn;
+ int m_lineNumber;
- bool m_done;
Vector<char> m_buffer8;
Vector<UChar> m_buffer16;
bool m_terminator;
- bool m_restrKeyword;
bool m_delimited; // encountered delimiter like "'" and "}" on last run
- bool m_skipLF;
- bool m_skipCR;
- bool m_eatNextIdentifier;
- int m_stackToken;
int m_lastToken;
- State m_state;
- unsigned int m_position;
const SourceCode* m_source;
const UChar* m_code;
- unsigned int m_length;
+ const UChar* m_codeStart;
+ const UChar* m_codeEnd;
bool m_isReparsing;
- int m_atLineStart;
+ bool m_atLineStart;
bool m_error;
// current and following unicode characters (int to allow for -1 for end-of-file marker)
@@ -151,11 +108,6 @@ namespace JSC {
int m_next2;
int m_next3;
- int m_currentOffset;
- int m_nextOffset1;
- int m_nextOffset2;
- int m_nextOffset3;
-
SegmentedVector<JSC::Identifier, initialIdentifierTableCapacity> m_identifiers;
JSGlobalData* m_globalData;
@@ -163,9 +115,31 @@ namespace JSC {
UString m_pattern;
UString m_flags;
- const HashTable m_mainTable;
+ const HashTable m_keywordTable;
+
+ Vector<UChar> m_codeWithoutBOMs;
};
+ inline bool Lexer::isWhiteSpace(int ch)
+ {
+ return isASCII(ch) ? (ch == ' ' || ch == '\t' || ch == 0xB || ch == 0xC) : WTF::Unicode::isSeparatorSpace(ch);
+ }
+
+ inline bool Lexer::isLineTerminator(int ch)
+ {
+ return ch == '\r' || ch == '\n' || (ch & ~1) == 0x2028;
+ }
+
+ inline unsigned char Lexer::convertHex(int c1, int c2)
+ {
+ return (toASCIIHexValue(c1) << 4) | toASCIIHexValue(c2);
+ }
+
+ inline UChar Lexer::convertUnicode(int c1, int c2, int c3, int c4)
+ {
+ return (convertHex(c1, c2) << 8) | convertHex(c3, c4);
+ }
+
} // namespace JSC
#endif // Lexer_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/NodeConstructors.h b/src/3rdparty/webkit/JavaScriptCore/parser/NodeConstructors.h
new file mode 100644
index 0000000..ea1579b
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/NodeConstructors.h
@@ -0,0 +1,911 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef NodeConstructors_h
+#define NodeConstructors_h
+
+#include "Nodes.h"
+#include "Lexer.h"
+#include "Parser.h"
+
+namespace JSC {
+
+ inline void* ParserArenaDeletable::operator new(size_t size, JSGlobalData* globalData)
+ {
+ ParserArenaDeletable* deletable = static_cast<ParserArenaDeletable*>(fastMalloc(size));
+ globalData->parser->arena().deleteWithArena(deletable);
+ return deletable;
+ }
+
+ inline void* ParserArenaDeletable::operator new(size_t size)
+ {
+ return fastMalloc(size);
+ }
+
+ inline ParserArenaRefCounted::ParserArenaRefCounted(JSGlobalData* globalData)
+ {
+ globalData->parser->arena().derefWithArena(adoptRef(this));
+ }
+
+ inline Node::Node(JSGlobalData* globalData)
+ : m_line(globalData->lexer->lineNumber())
+ {
+ }
+
+ inline ExpressionNode::ExpressionNode(JSGlobalData* globalData, ResultType resultType)
+ : Node(globalData)
+ , m_resultType(resultType)
+ {
+ }
+
+ inline StatementNode::StatementNode(JSGlobalData* globalData)
+ : Node(globalData)
+ , m_lastLine(-1)
+ {
+ }
+
+ inline NullNode::NullNode(JSGlobalData* globalData)
+ : ExpressionNode(globalData, ResultType::nullType())
+ {
+ }
+
+ inline BooleanNode::BooleanNode(JSGlobalData* globalData, bool value)
+ : ExpressionNode(globalData, ResultType::booleanType())
+ , m_value(value)
+ {
+ }
+
+ inline NumberNode::NumberNode(JSGlobalData* globalData, double v)
+ : ExpressionNode(globalData, ResultType::numberType())
+ , m_double(v)
+ {
+ }
+
+ inline StringNode::StringNode(JSGlobalData* globalData, const Identifier& v)
+ : ExpressionNode(globalData, ResultType::stringType())
+ , m_value(v)
+ {
+ }
+
+ inline RegExpNode::RegExpNode(JSGlobalData* globalData, const UString& pattern, const UString& flags)
+ : ExpressionNode(globalData)
+ , m_pattern(pattern)
+ , m_flags(flags)
+ {
+ }
+
+ inline ThisNode::ThisNode(JSGlobalData* globalData)
+ : ExpressionNode(globalData)
+ {
+ }
+
+ inline ResolveNode::ResolveNode(JSGlobalData* globalData, const Identifier& ident, int startOffset)
+ : ExpressionNode(globalData)
+ , m_ident(ident)
+ , m_startOffset(startOffset)
+ {
+ }
+
+ inline ElementNode::ElementNode(JSGlobalData*, int elision, ExpressionNode* node)
+ : m_next(0)
+ , m_elision(elision)
+ , m_node(node)
+ {
+ }
+
+ inline ElementNode::ElementNode(JSGlobalData*, ElementNode* l, int elision, ExpressionNode* node)
+ : m_next(0)
+ , m_elision(elision)
+ , m_node(node)
+ {
+ l->m_next = this;
+ }
+
+ inline ArrayNode::ArrayNode(JSGlobalData* globalData, int elision)
+ : ExpressionNode(globalData)
+ , m_element(0)
+ , m_elision(elision)
+ , m_optional(true)
+ {
+ }
+
+ inline ArrayNode::ArrayNode(JSGlobalData* globalData, ElementNode* element)
+ : ExpressionNode(globalData)
+ , m_element(element)
+ , m_elision(0)
+ , m_optional(false)
+ {
+ }
+
+ inline ArrayNode::ArrayNode(JSGlobalData* globalData, int elision, ElementNode* element)
+ : ExpressionNode(globalData)
+ , m_element(element)
+ , m_elision(elision)
+ , m_optional(true)
+ {
+ }
+
+ inline PropertyNode::PropertyNode(JSGlobalData*, const Identifier& name, ExpressionNode* assign, Type type)
+ : m_name(name)
+ , m_assign(assign)
+ , m_type(type)
+ {
+ }
+
+ inline PropertyListNode::PropertyListNode(JSGlobalData* globalData, PropertyNode* node)
+ : Node(globalData)
+ , m_node(node)
+ , m_next(0)
+ {
+ }
+
+ inline PropertyListNode::PropertyListNode(JSGlobalData* globalData, PropertyNode* node, PropertyListNode* list)
+ : Node(globalData)
+ , m_node(node)
+ , m_next(0)
+ {
+ list->m_next = this;
+ }
+
+ inline ObjectLiteralNode::ObjectLiteralNode(JSGlobalData* globalData)
+ : ExpressionNode(globalData)
+ , m_list(0)
+ {
+ }
+
+ inline ObjectLiteralNode::ObjectLiteralNode(JSGlobalData* globalData, PropertyListNode* list)
+ : ExpressionNode(globalData)
+ , m_list(list)
+ {
+ }
+
+ inline BracketAccessorNode::BracketAccessorNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, bool subscriptHasAssignments)
+ : ExpressionNode(globalData)
+ , m_base(base)
+ , m_subscript(subscript)
+ , m_subscriptHasAssignments(subscriptHasAssignments)
+ {
+ }
+
+ inline DotAccessorNode::DotAccessorNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident)
+ : ExpressionNode(globalData)
+ , m_base(base)
+ , m_ident(ident)
+ {
+ }
+
+ inline ArgumentListNode::ArgumentListNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : Node(globalData)
+ , m_next(0)
+ , m_expr(expr)
+ {
+ }
+
+ inline ArgumentListNode::ArgumentListNode(JSGlobalData* globalData, ArgumentListNode* listNode, ExpressionNode* expr)
+ : Node(globalData)
+ , m_next(0)
+ , m_expr(expr)
+ {
+ listNode->m_next = this;
+ }
+
+ inline ArgumentsNode::ArgumentsNode(JSGlobalData*)
+ : m_listNode(0)
+ {
+ }
+
+ inline ArgumentsNode::ArgumentsNode(JSGlobalData*, ArgumentListNode* listNode)
+ : m_listNode(listNode)
+ {
+ }
+
+ inline NewExprNode::NewExprNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : ExpressionNode(globalData)
+ , m_expr(expr)
+ , m_args(0)
+ {
+ }
+
+ inline NewExprNode::NewExprNode(JSGlobalData* globalData, ExpressionNode* expr, ArgumentsNode* args)
+ : ExpressionNode(globalData)
+ , m_expr(expr)
+ , m_args(args)
+ {
+ }
+
+ inline EvalFunctionCallNode::EvalFunctionCallNode(JSGlobalData* globalData, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_args(args)
+ {
+ }
+
+ inline FunctionCallValueNode::FunctionCallValueNode(JSGlobalData* globalData, ExpressionNode* expr, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_expr(expr)
+ , m_args(args)
+ {
+ }
+
+ inline FunctionCallResolveNode::FunctionCallResolveNode(JSGlobalData* globalData, const Identifier& ident, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_ident(ident)
+ , m_args(args)
+ {
+ }
+
+ inline FunctionCallBracketNode::FunctionCallBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableSubExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_subscript(subscript)
+ , m_args(args)
+ {
+ }
+
+ inline FunctionCallDotNode::FunctionCallDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableSubExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_ident(ident)
+ , m_args(args)
+ {
+ }
+
+ inline CallFunctionCallDotNode::CallFunctionCallDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : FunctionCallDotNode(globalData, base, ident, args, divot, startOffset, endOffset)
+ {
+ }
+
+ inline ApplyFunctionCallDotNode::ApplyFunctionCallDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : FunctionCallDotNode(globalData, base, ident, args, divot, startOffset, endOffset)
+ {
+ }
+
+ inline PrePostResolveNode::PrePostResolveNode(JSGlobalData* globalData, const Identifier& ident, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData, ResultType::numberType()) // could be reusable for pre?
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_ident(ident)
+ {
+ }
+
+ inline PostfixResolveNode::PostfixResolveNode(JSGlobalData* globalData, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : PrePostResolveNode(globalData, ident, divot, startOffset, endOffset)
+ , m_operator(oper)
+ {
+ }
+
+ inline PostfixBracketNode::PostfixBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableSubExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_subscript(subscript)
+ , m_operator(oper)
+ {
+ }
+
+ inline PostfixDotNode::PostfixDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableSubExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_ident(ident)
+ , m_operator(oper)
+ {
+ }
+
+ inline PostfixErrorNode::PostfixErrorNode(JSGlobalData* globalData, ExpressionNode* expr, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableSubExpressionData(divot, startOffset, endOffset)
+ , m_expr(expr)
+ , m_operator(oper)
+ {
+ }
+
+ inline DeleteResolveNode::DeleteResolveNode(JSGlobalData* globalData, const Identifier& ident, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_ident(ident)
+ {
+ }
+
+ inline DeleteBracketNode::DeleteBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_subscript(subscript)
+ {
+ }
+
+ inline DeleteDotNode::DeleteDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_ident(ident)
+ {
+ }
+
+ inline DeleteValueNode::DeleteValueNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : ExpressionNode(globalData)
+ , m_expr(expr)
+ {
+ }
+
+ inline VoidNode::VoidNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : ExpressionNode(globalData)
+ , m_expr(expr)
+ {
+ }
+
+ inline TypeOfResolveNode::TypeOfResolveNode(JSGlobalData* globalData, const Identifier& ident)
+ : ExpressionNode(globalData, ResultType::stringType())
+ , m_ident(ident)
+ {
+ }
+
+ inline TypeOfValueNode::TypeOfValueNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : ExpressionNode(globalData, ResultType::stringType())
+ , m_expr(expr)
+ {
+ }
+
+ inline PrefixResolveNode::PrefixResolveNode(JSGlobalData* globalData, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : PrePostResolveNode(globalData, ident, divot, startOffset, endOffset)
+ , m_operator(oper)
+ {
+ }
+
+ inline PrefixBracketNode::PrefixBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowablePrefixedSubExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_subscript(subscript)
+ , m_operator(oper)
+ {
+ }
+
+ inline PrefixDotNode::PrefixDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowablePrefixedSubExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_ident(ident)
+ , m_operator(oper)
+ {
+ }
+
+ inline PrefixErrorNode::PrefixErrorNode(JSGlobalData* globalData, ExpressionNode* expr, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_expr(expr)
+ , m_operator(oper)
+ {
+ }
+
+ inline UnaryOpNode::UnaryOpNode(JSGlobalData* globalData, ResultType type, ExpressionNode* expr, OpcodeID opcodeID)
+ : ExpressionNode(globalData, type)
+ , m_expr(expr)
+ , m_opcodeID(opcodeID)
+ {
+ }
+
+ inline UnaryPlusNode::UnaryPlusNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : UnaryOpNode(globalData, ResultType::numberType(), expr, op_to_jsnumber)
+ {
+ }
+
+ inline NegateNode::NegateNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : UnaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr, op_negate)
+ {
+ }
+
+ inline BitwiseNotNode::BitwiseNotNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : UnaryOpNode(globalData, ResultType::forBitOp(), expr, op_bitnot)
+ {
+ }
+
+ inline LogicalNotNode::LogicalNotNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : UnaryOpNode(globalData, ResultType::booleanType(), expr, op_not)
+ {
+ }
+
+ inline BinaryOpNode::BinaryOpNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID opcodeID, bool rightHasAssignments)
+ : ExpressionNode(globalData)
+ , m_expr1(expr1)
+ , m_expr2(expr2)
+ , m_opcodeID(opcodeID)
+ , m_rightHasAssignments(rightHasAssignments)
+ {
+ }
+
+ inline BinaryOpNode::BinaryOpNode(JSGlobalData* globalData, ResultType type, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID opcodeID, bool rightHasAssignments)
+ : ExpressionNode(globalData, type)
+ , m_expr1(expr1)
+ , m_expr2(expr2)
+ , m_opcodeID(opcodeID)
+ , m_rightHasAssignments(rightHasAssignments)
+ {
+ }
+
+ inline ReverseBinaryOpNode::ReverseBinaryOpNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID opcodeID, bool rightHasAssignments)
+ : BinaryOpNode(globalData, expr1, expr2, opcodeID, rightHasAssignments)
+ {
+ }
+
+ inline ReverseBinaryOpNode::ReverseBinaryOpNode(JSGlobalData* globalData, ResultType type, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID opcodeID, bool rightHasAssignments)
+ : BinaryOpNode(globalData, type, expr1, expr2, opcodeID, rightHasAssignments)
+ {
+ }
+
+ inline MultNode::MultNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr1, expr2, op_mul, rightHasAssignments)
+ {
+ }
+
+ inline DivNode::DivNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr1, expr2, op_div, rightHasAssignments)
+ {
+ }
+
+
+ inline ModNode::ModNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr1, expr2, op_mod, rightHasAssignments)
+ {
+ }
+
+ inline AddNode::AddNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::forAdd(expr1->resultDescriptor(), expr2->resultDescriptor()), expr1, expr2, op_add, rightHasAssignments)
+ {
+ }
+
+ inline SubNode::SubNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr1, expr2, op_sub, rightHasAssignments)
+ {
+ }
+
+ inline LeftShiftNode::LeftShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::forBitOp(), expr1, expr2, op_lshift, rightHasAssignments)
+ {
+ }
+
+ inline RightShiftNode::RightShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::forBitOp(), expr1, expr2, op_rshift, rightHasAssignments)
+ {
+ }
+
+ inline UnsignedRightShiftNode::UnsignedRightShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr1, expr2, op_urshift, rightHasAssignments)
+ {
+ }
+
+ inline LessNode::LessNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, op_less, rightHasAssignments)
+ {
+ }
+
+ inline GreaterNode::GreaterNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : ReverseBinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, op_less, rightHasAssignments)
+ {
+ }
+
+ inline LessEqNode::LessEqNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, op_lesseq, rightHasAssignments)
+ {
+ }
+
+ inline GreaterEqNode::GreaterEqNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : ReverseBinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, op_lesseq, rightHasAssignments)
+ {
+ }
+
+ inline ThrowableBinaryOpNode::ThrowableBinaryOpNode(JSGlobalData* globalData, ResultType type, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID opcodeID, bool rightHasAssignments)
+ : BinaryOpNode(globalData, type, expr1, expr2, opcodeID, rightHasAssignments)
+ {
+ }
+
+ inline ThrowableBinaryOpNode::ThrowableBinaryOpNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID opcodeID, bool rightHasAssignments)
+ : BinaryOpNode(globalData, expr1, expr2, opcodeID, rightHasAssignments)
+ {
+ }
+
+ inline InstanceOfNode::InstanceOfNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : ThrowableBinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, op_instanceof, rightHasAssignments)
+ {
+ }
+
+ inline InNode::InNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : ThrowableBinaryOpNode(globalData, expr1, expr2, op_in, rightHasAssignments)
+ {
+ }
+
+ inline EqualNode::EqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, op_eq, rightHasAssignments)
+ {
+ }
+
+ inline NotEqualNode::NotEqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, op_neq, rightHasAssignments)
+ {
+ }
+
+ inline StrictEqualNode::StrictEqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, op_stricteq, rightHasAssignments)
+ {
+ }
+
+ inline NotStrictEqualNode::NotStrictEqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, op_nstricteq, rightHasAssignments)
+ {
+ }
+
+ inline BitAndNode::BitAndNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::forBitOp(), expr1, expr2, op_bitand, rightHasAssignments)
+ {
+ }
+
+ inline BitOrNode::BitOrNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::forBitOp(), expr1, expr2, op_bitor, rightHasAssignments)
+ {
+ }
+
+ inline BitXOrNode::BitXOrNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
+ : BinaryOpNode(globalData, ResultType::forBitOp(), expr1, expr2, op_bitxor, rightHasAssignments)
+ {
+ }
+
+ inline LogicalOpNode::LogicalOpNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, LogicalOperator oper)
+ : ExpressionNode(globalData, ResultType::booleanType())
+ , m_expr1(expr1)
+ , m_expr2(expr2)
+ , m_operator(oper)
+ {
+ }
+
+ inline ConditionalNode::ConditionalNode(JSGlobalData* globalData, ExpressionNode* logical, ExpressionNode* expr1, ExpressionNode* expr2)
+ : ExpressionNode(globalData)
+ , m_logical(logical)
+ , m_expr1(expr1)
+ , m_expr2(expr2)
+ {
+ }
+
+ inline ReadModifyResolveNode::ReadModifyResolveNode(JSGlobalData* globalData, const Identifier& ident, Operator oper, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_ident(ident)
+ , m_right(right)
+ , m_operator(oper)
+ , m_rightHasAssignments(rightHasAssignments)
+ {
+ }
+
+ inline AssignResolveNode::AssignResolveNode(JSGlobalData* globalData, const Identifier& ident, ExpressionNode* right, bool rightHasAssignments)
+ : ExpressionNode(globalData)
+ , m_ident(ident)
+ , m_right(right)
+ , m_rightHasAssignments(rightHasAssignments)
+ {
+ }
+
+ inline ReadModifyBracketNode::ReadModifyBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, Operator oper, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableSubExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_subscript(subscript)
+ , m_right(right)
+ , m_operator(oper)
+ , m_subscriptHasAssignments(subscriptHasAssignments)
+ , m_rightHasAssignments(rightHasAssignments)
+ {
+ }
+
+ inline AssignBracketNode::AssignBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_subscript(subscript)
+ , m_right(right)
+ , m_subscriptHasAssignments(subscriptHasAssignments)
+ , m_rightHasAssignments(rightHasAssignments)
+ {
+ }
+
+ inline AssignDotNode::AssignDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_ident(ident)
+ , m_right(right)
+ , m_rightHasAssignments(rightHasAssignments)
+ {
+ }
+
+ inline ReadModifyDotNode::ReadModifyDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, Operator oper, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableSubExpressionData(divot, startOffset, endOffset)
+ , m_base(base)
+ , m_ident(ident)
+ , m_right(right)
+ , m_operator(oper)
+ , m_rightHasAssignments(rightHasAssignments)
+ {
+ }
+
+ inline AssignErrorNode::AssignErrorNode(JSGlobalData* globalData, ExpressionNode* left, Operator oper, ExpressionNode* right, unsigned divot, unsigned startOffset, unsigned endOffset)
+ : ExpressionNode(globalData)
+ , ThrowableExpressionData(divot, startOffset, endOffset)
+ , m_left(left)
+ , m_operator(oper)
+ , m_right(right)
+ {
+ }
+
+ inline CommaNode::CommaNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2)
+ : ExpressionNode(globalData)
+ , m_expr1(expr1)
+ , m_expr2(expr2)
+ {
+ }
+
+ inline ConstStatementNode::ConstStatementNode(JSGlobalData* globalData, ConstDeclNode* next)
+ : StatementNode(globalData)
+ , m_next(next)
+ {
+ }
+
+ inline SourceElements::SourceElements(JSGlobalData*)
+ {
+ }
+
+ inline EmptyStatementNode::EmptyStatementNode(JSGlobalData* globalData)
+ : StatementNode(globalData)
+ {
+ }
+
+ inline DebuggerStatementNode::DebuggerStatementNode(JSGlobalData* globalData)
+ : StatementNode(globalData)
+ {
+ }
+
+ inline ExprStatementNode::ExprStatementNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : StatementNode(globalData)
+ , m_expr(expr)
+ {
+ }
+
+ inline VarStatementNode::VarStatementNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : StatementNode(globalData)
+ , m_expr(expr)
+ {
+ }
+
+ inline IfNode::IfNode(JSGlobalData* globalData, ExpressionNode* condition, StatementNode* ifBlock)
+ : StatementNode(globalData)
+ , m_condition(condition)
+ , m_ifBlock(ifBlock)
+ {
+ }
+
+ inline IfElseNode::IfElseNode(JSGlobalData* globalData, ExpressionNode* condition, StatementNode* ifBlock, StatementNode* elseBlock)
+ : IfNode(globalData, condition, ifBlock)
+ , m_elseBlock(elseBlock)
+ {
+ }
+
+ inline DoWhileNode::DoWhileNode(JSGlobalData* globalData, StatementNode* statement, ExpressionNode* expr)
+ : StatementNode(globalData)
+ , m_statement(statement)
+ , m_expr(expr)
+ {
+ }
+
+ inline WhileNode::WhileNode(JSGlobalData* globalData, ExpressionNode* expr, StatementNode* statement)
+ : StatementNode(globalData)
+ , m_expr(expr)
+ , m_statement(statement)
+ {
+ }
+
+ inline ForNode::ForNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode* statement, bool expr1WasVarDecl)
+ : StatementNode(globalData)
+ , m_expr1(expr1)
+ , m_expr2(expr2)
+ , m_expr3(expr3)
+ , m_statement(statement)
+ , m_expr1WasVarDecl(expr1 && expr1WasVarDecl)
+ {
+ ASSERT(statement);
+ }
+
+ inline ContinueNode::ContinueNode(JSGlobalData* globalData)
+ : StatementNode(globalData)
+ {
+ }
+
+ inline ContinueNode::ContinueNode(JSGlobalData* globalData, const Identifier& ident)
+ : StatementNode(globalData)
+ , m_ident(ident)
+ {
+ }
+
+ inline BreakNode::BreakNode(JSGlobalData* globalData)
+ : StatementNode(globalData)
+ {
+ }
+
+ inline BreakNode::BreakNode(JSGlobalData* globalData, const Identifier& ident)
+ : StatementNode(globalData)
+ , m_ident(ident)
+ {
+ }
+
+ inline ReturnNode::ReturnNode(JSGlobalData* globalData, ExpressionNode* value)
+ : StatementNode(globalData)
+ , m_value(value)
+ {
+ }
+
+ inline WithNode::WithNode(JSGlobalData* globalData, ExpressionNode* expr, StatementNode* statement, uint32_t divot, uint32_t expressionLength)
+ : StatementNode(globalData)
+ , m_expr(expr)
+ , m_statement(statement)
+ , m_divot(divot)
+ , m_expressionLength(expressionLength)
+ {
+ }
+
+ inline LabelNode::LabelNode(JSGlobalData* globalData, const Identifier& name, StatementNode* statement)
+ : StatementNode(globalData)
+ , m_name(name)
+ , m_statement(statement)
+ {
+ }
+
+ inline ThrowNode::ThrowNode(JSGlobalData* globalData, ExpressionNode* expr)
+ : StatementNode(globalData)
+ , m_expr(expr)
+ {
+ }
+
+ inline TryNode::TryNode(JSGlobalData* globalData, StatementNode* tryBlock, const Identifier& exceptionIdent, bool catchHasEval, StatementNode* catchBlock, StatementNode* finallyBlock)
+ : StatementNode(globalData)
+ , m_tryBlock(tryBlock)
+ , m_exceptionIdent(exceptionIdent)
+ , m_catchBlock(catchBlock)
+ , m_finallyBlock(finallyBlock)
+ , m_catchHasEval(catchHasEval)
+ {
+ }
+
+ inline ParameterNode::ParameterNode(JSGlobalData*, const Identifier& ident)
+ : m_ident(ident)
+ , m_next(0)
+ {
+ }
+
+ inline ParameterNode::ParameterNode(JSGlobalData*, ParameterNode* l, const Identifier& ident)
+ : m_ident(ident)
+ , m_next(0)
+ {
+ l->m_next = this;
+ }
+
+ inline FuncExprNode::FuncExprNode(JSGlobalData* globalData, const Identifier& ident, FunctionBodyNode* body, const SourceCode& source, ParameterNode* parameter)
+ : ExpressionNode(globalData)
+ , ParserArenaRefCounted(globalData)
+ , m_ident(ident)
+ , m_body(body)
+ {
+ m_body->finishParsing(source, parameter);
+ }
+
+ inline FuncDeclNode::FuncDeclNode(JSGlobalData* globalData, const Identifier& ident, FunctionBodyNode* body, const SourceCode& source, ParameterNode* parameter)
+ : StatementNode(globalData)
+ , ParserArenaRefCounted(globalData)
+ , m_ident(ident)
+ , m_body(body)
+ {
+ m_body->finishParsing(source, parameter);
+ }
+
+ inline CaseClauseNode::CaseClauseNode(JSGlobalData*, ExpressionNode* expr)
+ : m_expr(expr)
+ {
+ }
+
+ inline CaseClauseNode::CaseClauseNode(JSGlobalData*, ExpressionNode* expr, SourceElements* children)
+ : m_expr(expr)
+ {
+ if (children)
+ children->releaseContentsIntoVector(m_children);
+ }
+
+ inline ClauseListNode::ClauseListNode(JSGlobalData*, CaseClauseNode* clause)
+ : m_clause(clause)
+ , m_next(0)
+ {
+ }
+
+ inline ClauseListNode::ClauseListNode(JSGlobalData*, ClauseListNode* clauseList, CaseClauseNode* clause)
+ : m_clause(clause)
+ , m_next(0)
+ {
+ clauseList->m_next = this;
+ }
+
+ inline CaseBlockNode::CaseBlockNode(JSGlobalData*, ClauseListNode* list1, CaseClauseNode* defaultClause, ClauseListNode* list2)
+ : m_list1(list1)
+ , m_defaultClause(defaultClause)
+ , m_list2(list2)
+ {
+ }
+
+ inline SwitchNode::SwitchNode(JSGlobalData* globalData, ExpressionNode* expr, CaseBlockNode* block)
+ : StatementNode(globalData)
+ , m_expr(expr)
+ , m_block(block)
+ {
+ }
+
+ inline ConstDeclNode::ConstDeclNode(JSGlobalData* globalData, const Identifier& ident, ExpressionNode* init)
+ : ExpressionNode(globalData)
+ , m_ident(ident)
+ , m_next(0)
+ , m_init(init)
+ {
+ }
+
+ inline BlockNode::BlockNode(JSGlobalData* globalData, SourceElements* children)
+ : StatementNode(globalData)
+ {
+ if (children)
+ children->releaseContentsIntoVector(m_children);
+ }
+
+ inline ForInNode::ForInNode(JSGlobalData* globalData, ExpressionNode* l, ExpressionNode* expr, StatementNode* statement)
+ : StatementNode(globalData)
+ , m_init(0)
+ , m_lexpr(l)
+ , m_expr(expr)
+ , m_statement(statement)
+ , m_identIsVarDecl(false)
+ {
+ }
+
+ inline ForInNode::ForInNode(JSGlobalData* globalData, const Identifier& ident, ExpressionNode* in, ExpressionNode* expr, StatementNode* statement, int divot, int startOffset, int endOffset)
+ : StatementNode(globalData)
+ , m_ident(ident)
+ , m_init(0)
+ , m_lexpr(new (globalData) ResolveNode(globalData, ident, divot - startOffset))
+ , m_expr(expr)
+ , m_statement(statement)
+ , m_identIsVarDecl(true)
+ {
+ if (in) {
+ AssignResolveNode* node = new (globalData) AssignResolveNode(globalData, ident, in, true);
+ node->setExceptionSourceCode(divot, divot - startOffset, endOffset - divot);
+ m_init = node;
+ }
+ // for( var foo = bar in baz )
+ }
+
+} // namespace JSC
+
+#endif // NodeConstructors_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/NodeInfo.h b/src/3rdparty/webkit/JavaScriptCore/parser/NodeInfo.h
index a518b23..7f4deff 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/NodeInfo.h
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/NodeInfo.h
@@ -43,8 +43,8 @@ namespace JSC {
template <typename T> struct NodeDeclarationInfo {
T m_node;
- ParserRefCountedData<DeclarationStacks::VarStack>* m_varDeclarations;
- ParserRefCountedData<DeclarationStacks::FunctionStack>* m_funcDeclarations;
+ ParserArenaData<DeclarationStacks::VarStack>* m_varDeclarations;
+ ParserArenaData<DeclarationStacks::FunctionStack>* m_funcDeclarations;
CodeFeatures m_features;
int m_numConstants;
};
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp
index 201af28..4ddf13a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp
@@ -25,24 +25,23 @@
#include "config.h"
#include "Nodes.h"
+#include "NodeConstructors.h"
#include "BytecodeGenerator.h"
#include "CallFrame.h"
+#include "Debugger.h"
+#include "JIT.h"
+#include "JSFunction.h"
#include "JSGlobalObject.h"
#include "JSStaticScopeObject.h"
#include "LabelScope.h"
+#include "Lexer.h"
+#include "Operations.h"
#include "Parser.h"
#include "PropertyNameArray.h"
#include "RegExpObject.h"
#include "SamplingTool.h"
-#include "Debugger.h"
-#include "Lexer.h"
-#include "Operations.h"
-#include <math.h>
#include <wtf/Assertions.h>
-#include <wtf/HashCountedSet.h>
-#include <wtf/HashSet.h>
-#include <wtf/MathExtras.h>
#include <wtf/RefCountedLeakCounter.h>
#include <wtf/Threading.h>
@@ -50,173 +49,7 @@ using namespace WTF;
namespace JSC {
-static void substitute(UString& string, const UString& substring) JSC_FAST_CALL;
-
-// ------------------------------ NodeReleaser --------------------------------
-
-class NodeReleaser : Noncopyable {
-public:
- // Call this function inside the destructor of a class derived from Node.
- // This will traverse the tree below this node, destroying all of those nodes,
- // but without relying on recursion.
- static void releaseAllNodes(ParserRefCounted* root);
-
- // Call this on each node in a the releaseNodes virtual function.
- // It gives the node to the NodeReleaser, which will then release the
- // node later at the end of the releaseAllNodes process.
- template <typename T> void release(RefPtr<T>& node) { if (node) adopt(node.release()); }
- void release(RefPtr<FunctionBodyNode>& node) { if (node) adoptFunctionBodyNode(node); }
-
-private:
- NodeReleaser() { }
- ~NodeReleaser() { }
-
- void adopt(PassRefPtr<ParserRefCounted>);
- void adoptFunctionBodyNode(RefPtr<FunctionBodyNode>&);
-
- typedef Vector<RefPtr<ParserRefCounted> > NodeReleaseVector;
- OwnPtr<NodeReleaseVector> m_vector;
-};
-
-void NodeReleaser::releaseAllNodes(ParserRefCounted* root)
-{
- ASSERT(root);
- NodeReleaser releaser;
- root->releaseNodes(releaser);
- if (!releaser.m_vector)
- return;
- // Note: The call to release.m_vector->size() is intentionally inside
- // the loop, since calls to releaseNodes are expected to increase the size.
- for (size_t i = 0; i < releaser.m_vector->size(); ++i) {
- ParserRefCounted* node = (*releaser.m_vector)[i].get();
- if (node->hasOneRef())
- node->releaseNodes(releaser);
- }
-}
-
-void NodeReleaser::adopt(PassRefPtr<ParserRefCounted> node)
-{
- ASSERT(node);
- if (!node->hasOneRef())
- return;
- if (!m_vector)
- m_vector.set(new NodeReleaseVector);
- m_vector->append(node);
-}
-
-void NodeReleaser::adoptFunctionBodyNode(RefPtr<FunctionBodyNode>& functionBodyNode)
-{
- // This sidesteps a problem where if you assign a PassRefPtr<FunctionBodyNode>
- // to a PassRefPtr<Node> we leave the two reference counts (FunctionBodyNode
- // and ParserRefCounted) unbalanced. It would be nice to fix this problem in
- // a cleaner way -- perhaps we could remove the FunctionBodyNode reference
- // count at some point.
- RefPtr<Node> node = functionBodyNode;
- functionBodyNode = 0;
- adopt(node.release());
-}
-
-// ------------------------------ ParserRefCounted -----------------------------------------
-
-#ifndef NDEBUG
-static RefCountedLeakCounter parserRefCountedCounter("JSC::Node");
-#endif
-
-ParserRefCounted::ParserRefCounted(JSGlobalData* globalData)
- : m_globalData(globalData)
-{
-#ifndef NDEBUG
- parserRefCountedCounter.increment();
-#endif
- if (!m_globalData->newParserObjects)
- m_globalData->newParserObjects = new HashSet<ParserRefCounted*>;
- m_globalData->newParserObjects->add(this);
- ASSERT(m_globalData->newParserObjects->contains(this));
-}
-
-ParserRefCounted::~ParserRefCounted()
-{
-#ifndef NDEBUG
- parserRefCountedCounter.decrement();
-#endif
-}
-
-void ParserRefCounted::releaseNodes(NodeReleaser&)
-{
-}
-
-void ParserRefCounted::ref()
-{
- // bumping from 0 to 1 is just removing from the new nodes set
- if (m_globalData->newParserObjects) {
- HashSet<ParserRefCounted*>::iterator it = m_globalData->newParserObjects->find(this);
- if (it != m_globalData->newParserObjects->end()) {
- m_globalData->newParserObjects->remove(it);
- ASSERT(!m_globalData->parserObjectExtraRefCounts || !m_globalData->parserObjectExtraRefCounts->contains(this));
- return;
- }
- }
-
- ASSERT(!m_globalData->newParserObjects || !m_globalData->newParserObjects->contains(this));
-
- if (!m_globalData->parserObjectExtraRefCounts)
- m_globalData->parserObjectExtraRefCounts = new HashCountedSet<ParserRefCounted*>;
- m_globalData->parserObjectExtraRefCounts->add(this);
-}
-
-void ParserRefCounted::deref()
-{
- ASSERT(!m_globalData->newParserObjects || !m_globalData->newParserObjects->contains(this));
-
- if (!m_globalData->parserObjectExtraRefCounts) {
- delete this;
- return;
- }
-
- HashCountedSet<ParserRefCounted*>::iterator it = m_globalData->parserObjectExtraRefCounts->find(this);
- if (it == m_globalData->parserObjectExtraRefCounts->end())
- delete this;
- else
- m_globalData->parserObjectExtraRefCounts->remove(it);
-}
-
-bool ParserRefCounted::hasOneRef()
-{
- if (m_globalData->newParserObjects && m_globalData->newParserObjects->contains(this)) {
- ASSERT(!m_globalData->parserObjectExtraRefCounts || !m_globalData->parserObjectExtraRefCounts->contains(this));
- return false;
- }
-
- ASSERT(!m_globalData->newParserObjects || !m_globalData->newParserObjects->contains(this));
-
- if (!m_globalData->parserObjectExtraRefCounts)
- return true;
-
- return !m_globalData->parserObjectExtraRefCounts->contains(this);
-}
-
-void ParserRefCounted::deleteNewObjects(JSGlobalData* globalData)
-{
- if (!globalData->newParserObjects)
- return;
-
-#ifndef NDEBUG
- HashSet<ParserRefCounted*>::iterator end = globalData->newParserObjects->end();
- for (HashSet<ParserRefCounted*>::iterator it = globalData->newParserObjects->begin(); it != end; ++it)
- ASSERT(!globalData->parserObjectExtraRefCounts || !globalData->parserObjectExtraRefCounts->contains(*it));
-#endif
- deleteAllValues(*globalData->newParserObjects);
- delete globalData->newParserObjects;
- globalData->newParserObjects = 0;
-}
-
-// ------------------------------ Node --------------------------------
-
-Node::Node(JSGlobalData* globalData)
- : ParserRefCounted(globalData)
-{
- m_line = globalData->lexer->lineNo();
-}
+static void substitute(UString& string, const UString& substring);
// ------------------------------ ThrowableExpressionData --------------------------------
@@ -247,14 +80,8 @@ RegisterID* ThrowableExpressionData::emitThrowError(BytecodeGenerator& generator
generator.emitThrow(exception);
return exception;
}
-
-// ------------------------------ StatementNode --------------------------------
-StatementNode::StatementNode(JSGlobalData* globalData)
- : Node(globalData)
- , m_lastLine(-1)
-{
-}
+// ------------------------------ StatementNode --------------------------------
void StatementNode::setLoc(int firstLine, int lastLine)
{
@@ -264,11 +91,10 @@ void StatementNode::setLoc(int firstLine, int lastLine)
// ------------------------------ SourceElements --------------------------------
-void SourceElements::append(PassRefPtr<StatementNode> statement)
+void SourceElements::append(StatementNode* statement)
{
if (statement->isEmptyStatement())
return;
-
m_statements.append(statement);
}
@@ -348,47 +174,24 @@ RegisterID* ResolveNode::emitBytecode(BytecodeGenerator& generator, RegisterID*
return generator.emitResolve(generator.finalDestination(dst), m_ident);
}
-// ------------------------------ ElementNode ------------------------------------
-
-ElementNode::~ElementNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ElementNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_next);
- releaser.release(m_node);
-}
-
// ------------------------------ ArrayNode ------------------------------------
-ArrayNode::~ArrayNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ArrayNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_element);
-}
-
RegisterID* ArrayNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
// FIXME: Should we put all of this code into emitNewArray?
unsigned length = 0;
ElementNode* firstPutElement;
- for (firstPutElement = m_element.get(); firstPutElement; firstPutElement = firstPutElement->next()) {
+ for (firstPutElement = m_element; firstPutElement; firstPutElement = firstPutElement->next()) {
if (firstPutElement->elision())
break;
++length;
}
if (!firstPutElement && !m_elision)
- return generator.emitNewArray(generator.finalDestination(dst), m_element.get());
+ return generator.emitNewArray(generator.finalDestination(dst), m_element);
- RefPtr<RegisterID> array = generator.emitNewArray(generator.tempDestination(dst), m_element.get());
+ RefPtr<RegisterID> array = generator.emitNewArray(generator.tempDestination(dst), m_element);
for (ElementNode* n = firstPutElement; n; n = n->next()) {
RegisterID* value = generator.emitNode(n->value());
@@ -404,30 +207,35 @@ RegisterID* ArrayNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
return generator.moveToDestinationIfNeeded(dst, array.get());
}
-// ------------------------------ PropertyNode ----------------------------
-
-PropertyNode::~PropertyNode()
+bool ArrayNode::isSimpleArray() const
{
- NodeReleaser::releaseAllNodes(this);
+ if (m_elision || m_optional)
+ return false;
+ for (ElementNode* ptr = m_element; ptr; ptr = ptr->next()) {
+ if (ptr->elision())
+ return false;
+ }
+ return true;
}
-void PropertyNode::releaseNodes(NodeReleaser& releaser)
+ArgumentListNode* ArrayNode::toArgumentList(JSGlobalData* globalData) const
{
- releaser.release(m_assign);
+ ASSERT(!m_elision && !m_optional);
+ ElementNode* ptr = m_element;
+ if (!ptr)
+ return 0;
+ ArgumentListNode* head = new (globalData) ArgumentListNode(globalData, ptr->value());
+ ArgumentListNode* tail = head;
+ ptr = ptr->next();
+ for (; ptr; ptr = ptr->next()) {
+ ASSERT(!ptr->elision());
+ tail = new (globalData) ArgumentListNode(globalData, tail, ptr->value());
+ }
+ return head;
}
// ------------------------------ ObjectLiteralNode ----------------------------
-ObjectLiteralNode::~ObjectLiteralNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ObjectLiteralNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_list);
-}
-
RegisterID* ObjectLiteralNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
if (!m_list) {
@@ -435,30 +243,19 @@ RegisterID* ObjectLiteralNode::emitBytecode(BytecodeGenerator& generator, Regist
return 0;
return generator.emitNewObject(generator.finalDestination(dst));
}
- return generator.emitNode(dst, m_list.get());
+ return generator.emitNode(dst, m_list);
}
// ------------------------------ PropertyListNode -----------------------------
-PropertyListNode::~PropertyListNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void PropertyListNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_node);
- releaser.release(m_next);
-}
-
RegisterID* PropertyListNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
RefPtr<RegisterID> newObj = generator.tempDestination(dst);
generator.emitNewObject(newObj.get());
- for (PropertyListNode* p = this; p; p = p->m_next.get()) {
- RegisterID* value = generator.emitNode(p->m_node->m_assign.get());
+ for (PropertyListNode* p = this; p; p = p->m_next) {
+ RegisterID* value = generator.emitNode(p->m_node->m_assign);
switch (p->m_node->m_type) {
case PropertyNode::Constant: {
@@ -483,152 +280,66 @@ RegisterID* PropertyListNode::emitBytecode(BytecodeGenerator& generator, Registe
// ------------------------------ BracketAccessorNode --------------------------------
-BracketAccessorNode::~BracketAccessorNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void BracketAccessorNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
- releaser.release(m_subscript);
-}
-
RegisterID* BracketAccessorNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments, m_subscript->isPure(generator));
- RegisterID* property = generator.emitNode(m_subscript.get());
+ RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base, m_subscriptHasAssignments, m_subscript->isPure(generator));
+ RegisterID* property = generator.emitNode(m_subscript);
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
return generator.emitGetByVal(generator.finalDestination(dst), base.get(), property);
}
// ------------------------------ DotAccessorNode --------------------------------
-DotAccessorNode::~DotAccessorNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void DotAccessorNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
-}
-
RegisterID* DotAccessorNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RegisterID* base = generator.emitNode(m_base.get());
+ RegisterID* base = generator.emitNode(m_base);
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
return generator.emitGetById(generator.finalDestination(dst), base, m_ident);
}
// ------------------------------ ArgumentListNode -----------------------------
-ArgumentListNode::~ArgumentListNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ArgumentListNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_next);
- releaser.release(m_expr);
-}
-
RegisterID* ArgumentListNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
ASSERT(m_expr);
- return generator.emitNode(dst, m_expr.get());
-}
-
-// ------------------------------ ArgumentsNode -----------------------------
-
-ArgumentsNode::~ArgumentsNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ArgumentsNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_listNode);
+ return generator.emitNode(dst, m_expr);
}
// ------------------------------ NewExprNode ----------------------------------
-NewExprNode::~NewExprNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void NewExprNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
- releaser.release(m_args);
-}
-
RegisterID* NewExprNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> func = generator.emitNode(m_expr.get());
- return generator.emitConstruct(generator.finalDestination(dst), func.get(), m_args.get(), divot(), startOffset(), endOffset());
+ RefPtr<RegisterID> func = generator.emitNode(m_expr);
+ return generator.emitConstruct(generator.finalDestination(dst), func.get(), m_args, divot(), startOffset(), endOffset());
}
// ------------------------------ EvalFunctionCallNode ----------------------------------
-EvalFunctionCallNode::~EvalFunctionCallNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void EvalFunctionCallNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_args);
-}
-
RegisterID* EvalFunctionCallNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
RefPtr<RegisterID> func = generator.tempDestination(dst);
RefPtr<RegisterID> thisRegister = generator.newTemporary();
generator.emitExpressionInfo(divot() - startOffset() + 4, 4, 0);
generator.emitResolveWithBase(thisRegister.get(), func.get(), generator.propertyNames().eval);
- return generator.emitCallEval(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset());
+ return generator.emitCallEval(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
}
// ------------------------------ FunctionCallValueNode ----------------------------------
-FunctionCallValueNode::~FunctionCallValueNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void FunctionCallValueNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
- releaser.release(m_args);
-}
-
RegisterID* FunctionCallValueNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> func = generator.emitNode(m_expr.get());
+ RefPtr<RegisterID> func = generator.emitNode(m_expr);
RefPtr<RegisterID> thisRegister = generator.emitLoad(generator.newTemporary(), jsNull());
- return generator.emitCall(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset());
+ return generator.emitCall(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
}
// ------------------------------ FunctionCallResolveNode ----------------------------------
-FunctionCallResolveNode::~FunctionCallResolveNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void FunctionCallResolveNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_args);
-}
-
RegisterID* FunctionCallResolveNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
if (RefPtr<RegisterID> local = generator.registerFor(m_ident)) {
RefPtr<RegisterID> thisRegister = generator.emitLoad(generator.newTemporary(), jsNull());
- return generator.emitCall(generator.finalDestination(dst, thisRegister.get()), local.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset());
+ return generator.emitCall(generator.finalDestination(dst, thisRegister.get()), local.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
}
int index = 0;
@@ -637,61 +348,142 @@ RegisterID* FunctionCallResolveNode::emitBytecode(BytecodeGenerator& generator,
if (generator.findScopedProperty(m_ident, index, depth, false, globalObject) && index != missingSymbolMarker()) {
RefPtr<RegisterID> func = generator.emitGetScopedVar(generator.newTemporary(), depth, index, globalObject);
RefPtr<RegisterID> thisRegister = generator.emitLoad(generator.newTemporary(), jsNull());
- return generator.emitCall(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset());
+ return generator.emitCall(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
}
- RefPtr<RegisterID> func = generator.tempDestination(dst);
+ RefPtr<RegisterID> func = generator.newTemporary();
RefPtr<RegisterID> thisRegister = generator.newTemporary();
int identifierStart = divot() - startOffset();
generator.emitExpressionInfo(identifierStart + m_ident.size(), m_ident.size(), 0);
generator.emitResolveFunction(thisRegister.get(), func.get(), m_ident);
- return generator.emitCall(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset());
+ return generator.emitCall(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
}
// ------------------------------ FunctionCallBracketNode ----------------------------------
-FunctionCallBracketNode::~FunctionCallBracketNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void FunctionCallBracketNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
- releaser.release(m_subscript);
- releaser.release(m_args);
-}
-
RegisterID* FunctionCallBracketNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNode(m_base.get());
- RegisterID* property = generator.emitNode(m_subscript.get());
+ RefPtr<RegisterID> base = generator.emitNode(m_base);
+ RegisterID* property = generator.emitNode(m_subscript);
generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
RefPtr<RegisterID> function = generator.emitGetByVal(generator.tempDestination(dst), base.get(), property);
RefPtr<RegisterID> thisRegister = generator.emitMove(generator.newTemporary(), base.get());
- return generator.emitCall(generator.finalDestination(dst, function.get()), function.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset());
+ return generator.emitCall(generator.finalDestination(dst, function.get()), function.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
}
// ------------------------------ FunctionCallDotNode ----------------------------------
-FunctionCallDotNode::~FunctionCallDotNode()
+RegisterID* FunctionCallDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- NodeReleaser::releaseAllNodes(this);
+ RefPtr<RegisterID> base = generator.emitNode(m_base);
+ generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
+ generator.emitMethodCheck();
+ RefPtr<RegisterID> function = generator.emitGetById(generator.tempDestination(dst), base.get(), m_ident);
+ RefPtr<RegisterID> thisRegister = generator.emitMove(generator.newTemporary(), base.get());
+ return generator.emitCall(generator.finalDestination(dst, function.get()), function.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
}
-void FunctionCallDotNode::releaseNodes(NodeReleaser& releaser)
+RegisterID* CallFunctionCallDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
+{
+ RefPtr<Label> realCall = generator.newLabel();
+ RefPtr<Label> end = generator.newLabel();
+ RefPtr<RegisterID> base = generator.emitNode(m_base);
+ generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
+ RefPtr<RegisterID> function = generator.emitGetById(generator.tempDestination(dst), base.get(), m_ident);
+ RefPtr<RegisterID> finalDestination = generator.finalDestination(dst, function.get());
+ generator.emitJumpIfNotFunctionCall(function.get(), realCall.get());
+ {
+ RefPtr<RegisterID> realFunction = generator.emitMove(generator.tempDestination(dst), base.get());
+ RefPtr<RegisterID> thisRegister = generator.newTemporary();
+ ArgumentListNode* oldList = m_args->m_listNode;
+ if (m_args->m_listNode && m_args->m_listNode->m_expr) {
+ generator.emitNode(thisRegister.get(), m_args->m_listNode->m_expr);
+ m_args->m_listNode = m_args->m_listNode->m_next;
+ } else
+ generator.emitLoad(thisRegister.get(), jsNull());
+
+ generator.emitCall(finalDestination.get(), realFunction.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
+ generator.emitJump(end.get());
+ m_args->m_listNode = oldList;
+ }
+ generator.emitLabel(realCall.get());
+ {
+ RefPtr<RegisterID> thisRegister = generator.emitMove(generator.newTemporary(), base.get());
+ generator.emitCall(finalDestination.get(), function.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
+ }
+ generator.emitLabel(end.get());
+ return finalDestination.get();
+}
+
+static bool areTrivialApplyArguments(ArgumentsNode* args)
{
- releaser.release(m_base);
- releaser.release(m_args);
+ return !args->m_listNode || !args->m_listNode->m_expr || !args->m_listNode->m_next
+ || (!args->m_listNode->m_next->m_next && args->m_listNode->m_next->m_expr->isSimpleArray());
}
-RegisterID* FunctionCallDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
+RegisterID* ApplyFunctionCallDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNode(m_base.get());
+ // A few simple cases can be trivially handled as ordinary function calls.
+ // function.apply(), function.apply(arg) -> identical to function.call
+ // function.apply(thisArg, [arg0, arg1, ...]) -> can be trivially coerced into function.call(thisArg, arg0, arg1, ...) and saves object allocation
+ bool mayBeCall = areTrivialApplyArguments(m_args);
+
+ RefPtr<Label> realCall = generator.newLabel();
+ RefPtr<Label> end = generator.newLabel();
+ RefPtr<RegisterID> base = generator.emitNode(m_base);
generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
RefPtr<RegisterID> function = generator.emitGetById(generator.tempDestination(dst), base.get(), m_ident);
- RefPtr<RegisterID> thisRegister = generator.emitMove(generator.newTemporary(), base.get());
- return generator.emitCall(generator.finalDestination(dst, function.get()), function.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset());
+ RefPtr<RegisterID> finalDestination = generator.finalDestination(dst, function.get());
+ generator.emitJumpIfNotFunctionApply(function.get(), realCall.get());
+ {
+ if (mayBeCall) {
+ RefPtr<RegisterID> realFunction = generator.emitMove(generator.tempDestination(dst), base.get());
+ RefPtr<RegisterID> thisRegister = generator.newTemporary();
+ ArgumentListNode* oldList = m_args->m_listNode;
+ if (m_args->m_listNode && m_args->m_listNode->m_expr) {
+ generator.emitNode(thisRegister.get(), m_args->m_listNode->m_expr);
+ m_args->m_listNode = m_args->m_listNode->m_next;
+ if (m_args->m_listNode) {
+ ASSERT(m_args->m_listNode->m_expr->isSimpleArray());
+ ASSERT(!m_args->m_listNode->m_next);
+ m_args->m_listNode = static_cast<ArrayNode*>(m_args->m_listNode->m_expr)->toArgumentList(generator.globalData());
+ }
+ } else
+ generator.emitLoad(thisRegister.get(), jsNull());
+ generator.emitCall(finalDestination.get(), realFunction.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
+ m_args->m_listNode = oldList;
+ } else {
+ ASSERT(m_args->m_listNode && m_args->m_listNode->m_next);
+ RefPtr<RegisterID> realFunction = generator.emitMove(generator.newTemporary(), base.get());
+ RefPtr<RegisterID> argsCountRegister = generator.newTemporary();
+ RefPtr<RegisterID> thisRegister = generator.newTemporary();
+ RefPtr<RegisterID> argsRegister = generator.newTemporary();
+ generator.emitNode(thisRegister.get(), m_args->m_listNode->m_expr);
+ ArgumentListNode* args = m_args->m_listNode->m_next;
+ bool isArgumentsApply = false;
+ if (args->m_expr->isResolveNode()) {
+ ResolveNode* resolveNode = static_cast<ResolveNode*>(args->m_expr);
+ isArgumentsApply = generator.willResolveToArguments(resolveNode->identifier());
+ if (isArgumentsApply)
+ generator.emitMove(argsRegister.get(), generator.uncheckedRegisterForArguments());
+ }
+ if (!isArgumentsApply)
+ generator.emitNode(argsRegister.get(), args->m_expr);
+ while ((args = args->m_next))
+ generator.emitNode(args->m_expr);
+
+ generator.emitLoadVarargs(argsCountRegister.get(), argsRegister.get());
+ generator.emitCallVarargs(finalDestination.get(), realFunction.get(), thisRegister.get(), argsCountRegister.get(), divot(), startOffset(), endOffset());
+ }
+ generator.emitJump(end.get());
+ }
+ generator.emitLabel(realCall.get());
+ {
+ RefPtr<RegisterID> thisRegister = generator.emitMove(generator.newTemporary(), base.get());
+ generator.emitCall(finalDestination.get(), function.get(), thisRegister.get(), m_args, divot(), startOffset(), endOffset());
+ }
+ generator.emitLabel(end.get());
+ return finalDestination.get();
}
// ------------------------------ PostfixResolveNode ----------------------------------
@@ -752,21 +544,10 @@ RegisterID* PostfixResolveNode::emitBytecode(BytecodeGenerator& generator, Regis
// ------------------------------ PostfixBracketNode ----------------------------------
-PostfixBracketNode::~PostfixBracketNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void PostfixBracketNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
- releaser.release(m_subscript);
-}
-
RegisterID* PostfixBracketNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNode(m_base.get());
- RefPtr<RegisterID> property = generator.emitNode(m_subscript.get());
+ RefPtr<RegisterID> base = generator.emitNode(m_base);
+ RefPtr<RegisterID> property = generator.emitNode(m_subscript);
generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
RefPtr<RegisterID> value = generator.emitGetByVal(generator.newTemporary(), base.get(), property.get());
@@ -787,19 +568,9 @@ RegisterID* PostfixBracketNode::emitBytecode(BytecodeGenerator& generator, Regis
// ------------------------------ PostfixDotNode ----------------------------------
-PostfixDotNode::~PostfixDotNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void PostfixDotNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
-}
-
RegisterID* PostfixDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNode(m_base.get());
+ RefPtr<RegisterID> base = generator.emitNode(m_base);
generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
RefPtr<RegisterID> value = generator.emitGetById(generator.newTemporary(), base.get(), m_ident);
@@ -820,16 +591,6 @@ RegisterID* PostfixDotNode::emitBytecode(BytecodeGenerator& generator, RegisterI
// ------------------------------ PostfixErrorNode -----------------------------------
-PostfixErrorNode::~PostfixErrorNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void PostfixErrorNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
-}
-
RegisterID* PostfixErrorNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
{
return emitThrowError(generator, ReferenceError, m_operator == OpPlusPlus ? "Postfix ++ operator applied to value that is not a reference." : "Postfix -- operator applied to value that is not a reference.");
@@ -849,21 +610,10 @@ RegisterID* DeleteResolveNode::emitBytecode(BytecodeGenerator& generator, Regist
// ------------------------------ DeleteBracketNode -----------------------------------
-DeleteBracketNode::~DeleteBracketNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void DeleteBracketNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
- releaser.release(m_subscript);
-}
-
RegisterID* DeleteBracketNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> r0 = generator.emitNode(m_base.get());
- RegisterID* r1 = generator.emitNode(m_subscript.get());
+ RefPtr<RegisterID> r0 = generator.emitNode(m_base);
+ RegisterID* r1 = generator.emitNode(m_subscript);
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
return generator.emitDeleteByVal(generator.finalDestination(dst), r0.get(), r1);
@@ -871,19 +621,9 @@ RegisterID* DeleteBracketNode::emitBytecode(BytecodeGenerator& generator, Regist
// ------------------------------ DeleteDotNode -----------------------------------
-DeleteDotNode::~DeleteDotNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void DeleteDotNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
-}
-
RegisterID* DeleteDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RegisterID* r0 = generator.emitNode(m_base.get());
+ RegisterID* r0 = generator.emitNode(m_base);
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
return generator.emitDeleteById(generator.finalDestination(dst), r0, m_ident);
@@ -891,19 +631,9 @@ RegisterID* DeleteDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID
// ------------------------------ DeleteValueNode -----------------------------------
-DeleteValueNode::~DeleteValueNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void DeleteValueNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
-}
-
RegisterID* DeleteValueNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- generator.emitNode(generator.ignoredResult(), m_expr.get());
+ generator.emitNode(generator.ignoredResult(), m_expr);
// delete on a non-location expression ignores the value and returns true
return generator.emitUnexpectedLoad(generator.finalDestination(dst), true);
@@ -911,23 +641,13 @@ RegisterID* DeleteValueNode::emitBytecode(BytecodeGenerator& generator, Register
// ------------------------------ VoidNode -------------------------------------
-VoidNode::~VoidNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void VoidNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
-}
-
RegisterID* VoidNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
if (dst == generator.ignoredResult()) {
- generator.emitNode(generator.ignoredResult(), m_expr.get());
+ generator.emitNode(generator.ignoredResult(), m_expr);
return 0;
}
- RefPtr<RegisterID> r0 = generator.emitNode(m_expr.get());
+ RefPtr<RegisterID> r0 = generator.emitNode(m_expr);
return generator.emitLoad(dst, jsUndefined());
}
@@ -950,23 +670,13 @@ RegisterID* TypeOfResolveNode::emitBytecode(BytecodeGenerator& generator, Regist
// ------------------------------ TypeOfValueNode -----------------------------------
-TypeOfValueNode::~TypeOfValueNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void TypeOfValueNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
-}
-
RegisterID* TypeOfValueNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
if (dst == generator.ignoredResult()) {
- generator.emitNode(generator.ignoredResult(), m_expr.get());
+ generator.emitNode(generator.ignoredResult(), m_expr);
return 0;
}
- RefPtr<RegisterID> src = generator.emitNode(m_expr.get());
+ RefPtr<RegisterID> src = generator.emitNode(m_expr);
return generator.emitTypeOf(generator.finalDestination(dst), src.get());
}
@@ -1006,21 +716,10 @@ RegisterID* PrefixResolveNode::emitBytecode(BytecodeGenerator& generator, Regist
// ------------------------------ PrefixBracketNode ----------------------------------
-PrefixBracketNode::~PrefixBracketNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void PrefixBracketNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
- releaser.release(m_subscript);
-}
-
RegisterID* PrefixBracketNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNode(m_base.get());
- RefPtr<RegisterID> property = generator.emitNode(m_subscript.get());
+ RefPtr<RegisterID> base = generator.emitNode(m_base);
+ RefPtr<RegisterID> property = generator.emitNode(m_subscript);
RefPtr<RegisterID> propDst = generator.tempDestination(dst);
generator.emitExpressionInfo(divot() + m_subexpressionDivotOffset, m_subexpressionStartOffset, endOffset() - m_subexpressionDivotOffset);
@@ -1036,19 +735,9 @@ RegisterID* PrefixBracketNode::emitBytecode(BytecodeGenerator& generator, Regist
// ------------------------------ PrefixDotNode ----------------------------------
-PrefixDotNode::~PrefixDotNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void PrefixDotNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
-}
-
RegisterID* PrefixDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNode(m_base.get());
+ RefPtr<RegisterID> base = generator.emitNode(m_base);
RefPtr<RegisterID> propDst = generator.tempDestination(dst);
generator.emitExpressionInfo(divot() + m_subexpressionDivotOffset, m_subexpressionStartOffset, endOffset() - m_subexpressionDivotOffset);
@@ -1064,16 +753,6 @@ RegisterID* PrefixDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID
// ------------------------------ PrefixErrorNode -----------------------------------
-PrefixErrorNode::~PrefixErrorNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void PrefixErrorNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
-}
-
RegisterID* PrefixErrorNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
{
return emitThrowError(generator, ReferenceError, m_operator == OpPlusPlus ? "Prefix ++ operator applied to value that is not a reference." : "Prefix -- operator applied to value that is not a reference.");
@@ -1081,48 +760,149 @@ RegisterID* PrefixErrorNode::emitBytecode(BytecodeGenerator& generator, Register
// ------------------------------ Unary Operation Nodes -----------------------------------
-UnaryOpNode::~UnaryOpNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void UnaryOpNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
-}
-
RegisterID* UnaryOpNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RegisterID* src = generator.emitNode(m_expr.get());
+ RegisterID* src = generator.emitNode(m_expr);
return generator.emitUnaryOp(opcodeID(), generator.finalDestination(dst), src);
}
// ------------------------------ Binary Operation Nodes -----------------------------------
-BinaryOpNode::~BinaryOpNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
+// BinaryOpNode::emitStrcat:
+//
+// This node generates an op_strcat operation. This opcode can handle concatenation of three or
+// more values, where we can determine a set of separate op_add operations would be operating on
+// string values.
+//
+// This function expects to be operating on a graph of AST nodes looking something like this:
+//
+// (a)... (b)
+// \ /
+// (+) (c)
+// \ /
+// [d] ((+))
+// \ /
+// [+=]
+//
+// The assignment operation is optional, if it exists the register holding the value on the
+// lefthand side of the assignment should be passing as the optional 'lhs' argument.
+//
+// The method should be called on the node at the root of the tree of regular binary add
+// operations (marked in the diagram with a double set of parentheses). This node must
+// be performing a string concatenation (determined by statically detecting that at least
+// one child must be a string).
+//
+// Since the minimum number of values being concatenated together is expected to be 3, if
+// a lhs to a concatenating assignment is not provided then the root add should have at
+// least one left child that is also an add that can be determined to be operating on strings.
+//
+RegisterID* BinaryOpNode::emitStrcat(BytecodeGenerator& generator, RegisterID* dst, RegisterID* lhs, ReadModifyResolveNode* emitExpressionInfoForMe)
+{
+ ASSERT(isAdd());
+ ASSERT(resultDescriptor().definitelyIsString());
+
+ // Create a list of expressions for all the adds in the tree of nodes we can convert into
+ // a string concatenation. The rightmost node (c) is added first. The rightmost node is
+ // added first, and the leftmost child is never added, so the vector produced for the
+ // example above will be [ c, b ].
+ Vector<ExpressionNode*, 16> reverseExpressionList;
+ reverseExpressionList.append(m_expr2);
+
+ // Examine the left child of the add. So long as this is a string add, add its right-child
+ // to the list, and keep processing along the left fork.
+ ExpressionNode* leftMostAddChild = m_expr1;
+ while (leftMostAddChild->isAdd() && leftMostAddChild->resultDescriptor().definitelyIsString()) {
+ reverseExpressionList.append(static_cast<AddNode*>(leftMostAddChild)->m_expr2);
+ leftMostAddChild = static_cast<AddNode*>(leftMostAddChild)->m_expr1;
+ }
-void BinaryOpNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr1);
- releaser.release(m_expr2);
+ Vector<RefPtr<RegisterID>, 16> temporaryRegisters;
+
+ // If there is an assignment, allocate a temporary to hold the lhs after conversion.
+ // We could possibly avoid this (the lhs is converted last anyway, we could let the
+ // op_strcat node handle its conversion if required).
+ if (lhs)
+ temporaryRegisters.append(generator.newTemporary());
+
+ // Emit code for the leftmost node ((a) in the example).
+ temporaryRegisters.append(generator.newTemporary());
+ RegisterID* leftMostAddChildTempRegister = temporaryRegisters.last().get();
+ generator.emitNode(leftMostAddChildTempRegister, leftMostAddChild);
+
+ // Note on ordering of conversions:
+ //
+ // We maintain the same ordering of conversions as we would see if the concatenations
+ // was performed as a sequence of adds (otherwise this optimization could change
+ // behaviour should an object have been provided a valueOf or toString method).
+ //
+ // Considering the above example, the sequnce of execution is:
+ // * evaluate operand (a)
+ // * evaluate operand (b)
+ // * convert (a) to primitive <- (this would be triggered by the first add)
+ // * convert (b) to primitive <- (ditto)
+ // * evaluate operand (c)
+ // * convert (c) to primitive <- (this would be triggered by the second add)
+ // And optionally, if there is an assignment:
+ // * convert (d) to primitive <- (this would be triggered by the assigning addition)
+ //
+ // As such we do not plant an op to convert the leftmost child now. Instead, use
+ // 'leftMostAddChildTempRegister' as a flag to trigger generation of the conversion
+ // once the second node has been generated. However, if the leftmost child is an
+ // immediate we can trivially determine that no conversion will be required.
+ // If this is the case
+ if (leftMostAddChild->isString())
+ leftMostAddChildTempRegister = 0;
+
+ while (reverseExpressionList.size()) {
+ ExpressionNode* node = reverseExpressionList.last();
+ reverseExpressionList.removeLast();
+
+ // Emit the code for the current node.
+ temporaryRegisters.append(generator.newTemporary());
+ generator.emitNode(temporaryRegisters.last().get(), node);
+
+ // On the first iteration of this loop, when we first reach this point we have just
+ // generated the second node, which means it is time to convert the leftmost operand.
+ if (leftMostAddChildTempRegister) {
+ generator.emitToPrimitive(leftMostAddChildTempRegister, leftMostAddChildTempRegister);
+ leftMostAddChildTempRegister = 0; // Only do this once.
+ }
+ // Plant a conversion for this node, if necessary.
+ if (!node->isString())
+ generator.emitToPrimitive(temporaryRegisters.last().get(), temporaryRegisters.last().get());
+ }
+ ASSERT(temporaryRegisters.size() >= 3);
+
+ // Certain read-modify nodes require expression info to be emitted *after* m_right has been generated.
+ // If this is required the node is passed as 'emitExpressionInfoForMe'; do so now.
+ if (emitExpressionInfoForMe)
+ generator.emitExpressionInfo(emitExpressionInfoForMe->divot(), emitExpressionInfoForMe->startOffset(), emitExpressionInfoForMe->endOffset());
+
+ // If there is an assignment convert the lhs now. This will also copy lhs to
+ // the temporary register we allocated for it.
+ if (lhs)
+ generator.emitToPrimitive(temporaryRegisters[0].get(), lhs);
+
+ return generator.emitStrcat(generator.finalDestination(dst, temporaryRegisters[0].get()), temporaryRegisters[0].get(), temporaryRegisters.size());
}
RegisterID* BinaryOpNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
OpcodeID opcodeID = this->opcodeID();
+
+ if (opcodeID == op_add && m_expr1->isAdd() && m_expr1->resultDescriptor().definitelyIsString())
+ return emitStrcat(generator, dst);
+
if (opcodeID == op_neq) {
if (m_expr1->isNull() || m_expr2->isNull()) {
RefPtr<RegisterID> src = generator.tempDestination(dst);
- generator.emitNode(src.get(), m_expr1->isNull() ? m_expr2.get() : m_expr1.get());
+ generator.emitNode(src.get(), m_expr1->isNull() ? m_expr2 : m_expr1);
return generator.emitUnaryOp(op_neq_null, generator.finalDestination(dst, src.get()), src.get());
}
}
- RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1.get(), m_rightHasAssignments, m_expr2->isPure(generator));
- RegisterID* src2 = generator.emitNode(m_expr2.get());
+ RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1, m_rightHasAssignments, m_expr2->isPure(generator));
+ RegisterID* src2 = generator.emitNode(m_expr2);
return generator.emitBinaryOp(opcodeID, generator.finalDestination(dst, src1.get()), src1.get(), src2, OperandTypes(m_expr1->resultDescriptor(), m_expr2->resultDescriptor()));
}
@@ -1130,41 +910,41 @@ RegisterID* EqualNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
{
if (m_expr1->isNull() || m_expr2->isNull()) {
RefPtr<RegisterID> src = generator.tempDestination(dst);
- generator.emitNode(src.get(), m_expr1->isNull() ? m_expr2.get() : m_expr1.get());
+ generator.emitNode(src.get(), m_expr1->isNull() ? m_expr2 : m_expr1);
return generator.emitUnaryOp(op_eq_null, generator.finalDestination(dst, src.get()), src.get());
}
- RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1.get(), m_rightHasAssignments, m_expr2->isPure(generator));
- RegisterID* src2 = generator.emitNode(m_expr2.get());
+ RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1, m_rightHasAssignments, m_expr2->isPure(generator));
+ RegisterID* src2 = generator.emitNode(m_expr2);
return generator.emitEqualityOp(op_eq, generator.finalDestination(dst, src1.get()), src1.get(), src2);
}
RegisterID* StrictEqualNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1.get(), m_rightHasAssignments, m_expr2->isPure(generator));
- RegisterID* src2 = generator.emitNode(m_expr2.get());
+ RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1, m_rightHasAssignments, m_expr2->isPure(generator));
+ RegisterID* src2 = generator.emitNode(m_expr2);
return generator.emitEqualityOp(op_stricteq, generator.finalDestination(dst, src1.get()), src1.get(), src2);
}
RegisterID* ReverseBinaryOpNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1.get(), m_rightHasAssignments, m_expr2->isPure(generator));
- RegisterID* src2 = generator.emitNode(m_expr2.get());
+ RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1, m_rightHasAssignments, m_expr2->isPure(generator));
+ RegisterID* src2 = generator.emitNode(m_expr2);
return generator.emitBinaryOp(opcodeID(), generator.finalDestination(dst, src1.get()), src2, src1.get(), OperandTypes(m_expr2->resultDescriptor(), m_expr1->resultDescriptor()));
}
RegisterID* ThrowableBinaryOpNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1.get(), m_rightHasAssignments, m_expr2->isPure(generator));
- RegisterID* src2 = generator.emitNode(m_expr2.get());
+ RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1, m_rightHasAssignments, m_expr2->isPure(generator));
+ RegisterID* src2 = generator.emitNode(m_expr2);
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
return generator.emitBinaryOp(opcodeID(), generator.finalDestination(dst, src1.get()), src1.get(), src2, OperandTypes(m_expr1->resultDescriptor(), m_expr2->resultDescriptor()));
}
RegisterID* InstanceOfNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1.get(), m_rightHasAssignments, m_expr2->isPure(generator));
- RefPtr<RegisterID> src2 = generator.emitNode(m_expr2.get());
+ RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1, m_rightHasAssignments, m_expr2->isPure(generator));
+ RefPtr<RegisterID> src2 = generator.emitNode(m_expr2);
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
generator.emitGetByIdExceptionInfo(op_instanceof);
@@ -1176,28 +956,17 @@ RegisterID* InstanceOfNode::emitBytecode(BytecodeGenerator& generator, RegisterI
// ------------------------------ LogicalOpNode ----------------------------
-LogicalOpNode::~LogicalOpNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void LogicalOpNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr1);
- releaser.release(m_expr2);
-}
-
RegisterID* LogicalOpNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
RefPtr<RegisterID> temp = generator.tempDestination(dst);
RefPtr<Label> target = generator.newLabel();
- generator.emitNode(temp.get(), m_expr1.get());
+ generator.emitNode(temp.get(), m_expr1);
if (m_operator == OpLogicalAnd)
generator.emitJumpIfFalse(temp.get(), target.get());
else
generator.emitJumpIfTrue(temp.get(), target.get());
- generator.emitNode(temp.get(), m_expr2.get());
+ generator.emitNode(temp.get(), m_expr2);
generator.emitLabel(target.get());
return generator.moveToDestinationIfNeeded(dst, temp.get());
@@ -1205,32 +974,20 @@ RegisterID* LogicalOpNode::emitBytecode(BytecodeGenerator& generator, RegisterID
// ------------------------------ ConditionalNode ------------------------------
-ConditionalNode::~ConditionalNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ConditionalNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_logical);
- releaser.release(m_expr1);
- releaser.release(m_expr2);
-}
-
RegisterID* ConditionalNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
RefPtr<RegisterID> newDst = generator.finalDestination(dst);
RefPtr<Label> beforeElse = generator.newLabel();
RefPtr<Label> afterElse = generator.newLabel();
- RegisterID* cond = generator.emitNode(m_logical.get());
+ RegisterID* cond = generator.emitNode(m_logical);
generator.emitJumpIfFalse(cond, beforeElse.get());
- generator.emitNode(newDst.get(), m_expr1.get());
+ generator.emitNode(newDst.get(), m_expr1);
generator.emitJump(afterElse.get());
generator.emitLabel(beforeElse.get());
- generator.emitNode(newDst.get(), m_expr2.get());
+ generator.emitNode(newDst.get(), m_expr2);
generator.emitLabel(afterElse.get());
@@ -1239,18 +996,8 @@ RegisterID* ConditionalNode::emitBytecode(BytecodeGenerator& generator, Register
// ------------------------------ ReadModifyResolveNode -----------------------------------
-ReadModifyResolveNode::~ReadModifyResolveNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ReadModifyResolveNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_right);
-}
-
// FIXME: should this be moved to be a method on BytecodeGenerator?
-static ALWAYS_INLINE RegisterID* emitReadModifyAssignment(BytecodeGenerator& generator, RegisterID* dst, RegisterID* src1, RegisterID* src2, Operator oper, OperandTypes types)
+static ALWAYS_INLINE RegisterID* emitReadModifyAssignment(BytecodeGenerator& generator, RegisterID* dst, RegisterID* src1, ExpressionNode* m_right, Operator oper, OperandTypes types, ReadModifyResolveNode* emitExpressionInfoForMe = 0)
{
OpcodeID opcodeID;
switch (oper) {
@@ -1261,6 +1008,8 @@ static ALWAYS_INLINE RegisterID* emitReadModifyAssignment(BytecodeGenerator& gen
opcodeID = op_div;
break;
case OpPlusEq:
+ if (m_right->isAdd() && m_right->resultDescriptor().definitelyIsString())
+ return static_cast<AddNode*>(m_right)->emitStrcat(generator, dst, src1, emitExpressionInfoForMe);
opcodeID = op_add;
break;
case OpMinusEq:
@@ -1291,7 +1040,14 @@ static ALWAYS_INLINE RegisterID* emitReadModifyAssignment(BytecodeGenerator& gen
ASSERT_NOT_REACHED();
return dst;
}
-
+
+ RegisterID* src2 = generator.emitNode(m_right);
+
+ // Certain read-modify nodes require expression info to be emitted *after* m_right has been generated.
+ // If this is required the node is passed as 'emitExpressionInfoForMe'; do so now.
+ if (emitExpressionInfoForMe)
+ generator.emitExpressionInfo(emitExpressionInfoForMe->divot(), emitExpressionInfoForMe->startOffset(), emitExpressionInfoForMe->endOffset());
+
return generator.emitBinaryOp(opcodeID, dst, src1, src2, types);
}
@@ -1299,21 +1055,18 @@ RegisterID* ReadModifyResolveNode::emitBytecode(BytecodeGenerator& generator, Re
{
if (RegisterID* local = generator.registerFor(m_ident)) {
if (generator.isLocalConstant(m_ident)) {
- RegisterID* src2 = generator.emitNode(m_right.get());
- return emitReadModifyAssignment(generator, generator.finalDestination(dst), local, src2, m_operator, OperandTypes(ResultType::unknown(), m_right->resultDescriptor()));
+ return emitReadModifyAssignment(generator, generator.finalDestination(dst), local, m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right->resultDescriptor()));
}
if (generator.leftHandSideNeedsCopy(m_rightHasAssignments, m_right->isPure(generator))) {
RefPtr<RegisterID> result = generator.newTemporary();
generator.emitMove(result.get(), local);
- RegisterID* src2 = generator.emitNode(m_right.get());
- emitReadModifyAssignment(generator, result.get(), result.get(), src2, m_operator, OperandTypes(ResultType::unknown(), m_right->resultDescriptor()));
+ emitReadModifyAssignment(generator, result.get(), result.get(), m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right->resultDescriptor()));
generator.emitMove(local, result.get());
return generator.moveToDestinationIfNeeded(dst, result.get());
}
- RegisterID* src2 = generator.emitNode(m_right.get());
- RegisterID* result = emitReadModifyAssignment(generator, local, local, src2, m_operator, OperandTypes(ResultType::unknown(), m_right->resultDescriptor()));
+ RegisterID* result = emitReadModifyAssignment(generator, local, local, m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right->resultDescriptor()));
return generator.moveToDestinationIfNeeded(dst, result);
}
@@ -1322,8 +1075,7 @@ RegisterID* ReadModifyResolveNode::emitBytecode(BytecodeGenerator& generator, Re
JSObject* globalObject = 0;
if (generator.findScopedProperty(m_ident, index, depth, true, globalObject) && index != missingSymbolMarker()) {
RefPtr<RegisterID> src1 = generator.emitGetScopedVar(generator.tempDestination(dst), depth, index, globalObject);
- RegisterID* src2 = generator.emitNode(m_right.get());
- RegisterID* result = emitReadModifyAssignment(generator, generator.finalDestination(dst, src1.get()), src1.get(), src2, m_operator, OperandTypes(ResultType::unknown(), m_right->resultDescriptor()));
+ RegisterID* result = emitReadModifyAssignment(generator, generator.finalDestination(dst, src1.get()), src1.get(), m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right->resultDescriptor()));
generator.emitPutScopedVar(depth, index, result, globalObject);
return result;
}
@@ -1331,31 +1083,19 @@ RegisterID* ReadModifyResolveNode::emitBytecode(BytecodeGenerator& generator, Re
RefPtr<RegisterID> src1 = generator.tempDestination(dst);
generator.emitExpressionInfo(divot() - startOffset() + m_ident.size(), m_ident.size(), 0);
RefPtr<RegisterID> base = generator.emitResolveWithBase(generator.newTemporary(), src1.get(), m_ident);
- RegisterID* src2 = generator.emitNode(m_right.get());
- generator.emitExpressionInfo(divot(), startOffset(), endOffset());
- RegisterID* result = emitReadModifyAssignment(generator, generator.finalDestination(dst, src1.get()), src1.get(), src2, m_operator, OperandTypes(ResultType::unknown(), m_right->resultDescriptor()));
+ RegisterID* result = emitReadModifyAssignment(generator, generator.finalDestination(dst, src1.get()), src1.get(), m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right->resultDescriptor()), this);
return generator.emitPutById(base.get(), m_ident, result);
}
// ------------------------------ AssignResolveNode -----------------------------------
-AssignResolveNode::~AssignResolveNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void AssignResolveNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_right);
-}
-
RegisterID* AssignResolveNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
if (RegisterID* local = generator.registerFor(m_ident)) {
if (generator.isLocalConstant(m_ident))
- return generator.emitNode(dst, m_right.get());
+ return generator.emitNode(dst, m_right);
- RegisterID* result = generator.emitNode(local, m_right.get());
+ RegisterID* result = generator.emitNode(local, m_right);
return generator.moveToDestinationIfNeeded(dst, result);
}
@@ -1365,7 +1105,7 @@ RegisterID* AssignResolveNode::emitBytecode(BytecodeGenerator& generator, Regist
if (generator.findScopedProperty(m_ident, index, depth, true, globalObject) && index != missingSymbolMarker()) {
if (dst == generator.ignoredResult())
dst = 0;
- RegisterID* value = generator.emitNode(dst, m_right.get());
+ RegisterID* value = generator.emitNode(dst, m_right);
generator.emitPutScopedVar(depth, index, value, globalObject);
return value;
}
@@ -1373,29 +1113,18 @@ RegisterID* AssignResolveNode::emitBytecode(BytecodeGenerator& generator, Regist
RefPtr<RegisterID> base = generator.emitResolveBase(generator.newTemporary(), m_ident);
if (dst == generator.ignoredResult())
dst = 0;
- RegisterID* value = generator.emitNode(dst, m_right.get());
+ RegisterID* value = generator.emitNode(dst, m_right);
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
return generator.emitPutById(base.get(), m_ident, value);
}
// ------------------------------ AssignDotNode -----------------------------------
-AssignDotNode::~AssignDotNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void AssignDotNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
- releaser.release(m_right);
-}
-
RegisterID* AssignDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments, m_right->isPure(generator));
+ RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base, m_rightHasAssignments, m_right->isPure(generator));
RefPtr<RegisterID> value = generator.destinationForAssignResult(dst);
- RegisterID* result = generator.emitNode(value.get(), m_right.get());
+ RegisterID* result = generator.emitNode(value.get(), m_right);
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
generator.emitPutById(base.get(), m_ident, result);
return generator.moveToDestinationIfNeeded(dst, result);
@@ -1403,25 +1132,13 @@ RegisterID* AssignDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID
// ------------------------------ ReadModifyDotNode -----------------------------------
-ReadModifyDotNode::~ReadModifyDotNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ReadModifyDotNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
- releaser.release(m_right);
-}
-
RegisterID* ReadModifyDotNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments, m_right->isPure(generator));
+ RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base, m_rightHasAssignments, m_right->isPure(generator));
generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
RefPtr<RegisterID> value = generator.emitGetById(generator.tempDestination(dst), base.get(), m_ident);
- RegisterID* change = generator.emitNode(m_right.get());
- RegisterID* updatedValue = emitReadModifyAssignment(generator, generator.finalDestination(dst, value.get()), value.get(), change, m_operator, OperandTypes(ResultType::unknown(), m_right->resultDescriptor()));
+ RegisterID* updatedValue = emitReadModifyAssignment(generator, generator.finalDestination(dst, value.get()), value.get(), m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right->resultDescriptor()));
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
return generator.emitPutById(base.get(), m_ident, updatedValue);
@@ -1429,17 +1146,6 @@ RegisterID* ReadModifyDotNode::emitBytecode(BytecodeGenerator& generator, Regist
// ------------------------------ AssignErrorNode -----------------------------------
-AssignErrorNode::~AssignErrorNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void AssignErrorNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_left);
- releaser.release(m_right);
-}
-
RegisterID* AssignErrorNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
{
return emitThrowError(generator, ReferenceError, "Left side of assignment is not a reference.");
@@ -1447,24 +1153,12 @@ RegisterID* AssignErrorNode::emitBytecode(BytecodeGenerator& generator, Register
// ------------------------------ AssignBracketNode -----------------------------------
-AssignBracketNode::~AssignBracketNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void AssignBracketNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
- releaser.release(m_subscript);
- releaser.release(m_right);
-}
-
RegisterID* AssignBracketNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments || m_rightHasAssignments, m_subscript->isPure(generator) && m_right->isPure(generator));
- RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments, m_right->isPure(generator));
+ RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base, m_subscriptHasAssignments || m_rightHasAssignments, m_subscript->isPure(generator) && m_right->isPure(generator));
+ RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript, m_rightHasAssignments, m_right->isPure(generator));
RefPtr<RegisterID> value = generator.destinationForAssignResult(dst);
- RegisterID* result = generator.emitNode(value.get(), m_right.get());
+ RegisterID* result = generator.emitNode(value.get(), m_right);
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
generator.emitPutByVal(base.get(), property.get(), result);
@@ -1473,27 +1167,14 @@ RegisterID* AssignBracketNode::emitBytecode(BytecodeGenerator& generator, Regist
// ------------------------------ ReadModifyBracketNode -----------------------------------
-ReadModifyBracketNode::~ReadModifyBracketNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ReadModifyBracketNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_base);
- releaser.release(m_subscript);
- releaser.release(m_right);
-}
-
RegisterID* ReadModifyBracketNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments || m_rightHasAssignments, m_subscript->isPure(generator) && m_right->isPure(generator));
- RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments, m_right->isPure(generator));
+ RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base, m_subscriptHasAssignments || m_rightHasAssignments, m_subscript->isPure(generator) && m_right->isPure(generator));
+ RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript, m_rightHasAssignments, m_right->isPure(generator));
generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
RefPtr<RegisterID> value = generator.emitGetByVal(generator.tempDestination(dst), base.get(), property.get());
- RegisterID* change = generator.emitNode(m_right.get());
- RegisterID* updatedValue = emitReadModifyAssignment(generator, generator.finalDestination(dst, value.get()), value.get(), change, m_operator, OperandTypes(ResultType::unknown(), m_right->resultDescriptor()));
+ RegisterID* updatedValue = emitReadModifyAssignment(generator, generator.finalDestination(dst, value.get()), value.get(), m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right->resultDescriptor()));
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
generator.emitPutByVal(base.get(), property.get(), updatedValue);
@@ -1503,63 +1184,34 @@ RegisterID* ReadModifyBracketNode::emitBytecode(BytecodeGenerator& generator, Re
// ------------------------------ CommaNode ------------------------------------
-CommaNode::~CommaNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void CommaNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr1);
- releaser.release(m_expr2);
-}
-
RegisterID* CommaNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- generator.emitNode(generator.ignoredResult(), m_expr1.get());
- return generator.emitNode(dst, m_expr2.get());
+ generator.emitNode(generator.ignoredResult(), m_expr1);
+ return generator.emitNode(dst, m_expr2);
}
// ------------------------------ ConstDeclNode ------------------------------------
-ConstDeclNode::~ConstDeclNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ConstDeclNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_next);
- releaser.release(m_init);
-}
-
-ConstDeclNode::ConstDeclNode(JSGlobalData* globalData, const Identifier& ident, ExpressionNode* init)
- : ExpressionNode(globalData)
- , m_ident(ident)
- , m_init(init)
-{
-}
-
RegisterID* ConstDeclNode::emitCodeSingle(BytecodeGenerator& generator)
{
if (RegisterID* local = generator.constRegisterFor(m_ident)) {
if (!m_init)
return local;
- return generator.emitNode(local, m_init.get());
+ return generator.emitNode(local, m_init);
}
// FIXME: While this code should only be hit in eval code, it will potentially
// assign to the wrong base if m_ident exists in an intervening dynamic scope.
RefPtr<RegisterID> base = generator.emitResolveBase(generator.newTemporary(), m_ident);
- RegisterID* value = m_init ? generator.emitNode(m_init.get()) : generator.emitLoad(0, jsUndefined());
+ RegisterID* value = m_init ? generator.emitNode(m_init) : generator.emitLoad(0, jsUndefined());
return generator.emitPutById(base.get(), m_ident, value);
}
RegisterID* ConstDeclNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
{
RegisterID* result = 0;
- for (ConstDeclNode* n = this; n; n = n->m_next.get())
+ for (ConstDeclNode* n = this; n; n = n->m_next)
result = n->emitCodeSingle(generator);
return result;
@@ -1567,65 +1219,34 @@ RegisterID* ConstDeclNode::emitBytecode(BytecodeGenerator& generator, RegisterID
// ------------------------------ ConstStatementNode -----------------------------
-ConstStatementNode::~ConstStatementNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ConstStatementNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_next);
-}
-
RegisterID* ConstStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
{
- return generator.emitNode(m_next.get());
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+ return generator.emitNode(m_next);
}
// ------------------------------ Helper functions for handling Vectors of StatementNode -------------------------------
-static inline RegisterID* statementListEmitCode(const StatementVector& statements, BytecodeGenerator& generator, RegisterID* dst)
-{
- StatementVector::const_iterator end = statements.end();
- for (StatementVector::const_iterator it = statements.begin(); it != end; ++it) {
- StatementNode* n = it->get();
- if (!n->isLoop())
- generator.emitDebugHook(WillExecuteStatement, n->firstLine(), n->lastLine());
- generator.emitNode(dst, n);
- }
- return 0;
-}
-
-// ------------------------------ BlockNode ------------------------------------
-
-BlockNode::~BlockNode()
+static inline void statementListEmitCode(const StatementVector& statements, BytecodeGenerator& generator, RegisterID* dst)
{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void BlockNode::releaseNodes(NodeReleaser& releaser)
-{
- size_t size = m_children.size();
+ size_t size = statements.size();
for (size_t i = 0; i < size; ++i)
- releaser.release(m_children[i]);
+ generator.emitNode(dst, statements[i]);
}
-BlockNode::BlockNode(JSGlobalData* globalData, SourceElements* children)
- : StatementNode(globalData)
-{
- if (children)
- children->releaseContentsIntoVector(m_children);
-}
+// ------------------------------ BlockNode ------------------------------------
RegisterID* BlockNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
- return statementListEmitCode(m_children, generator, dst);
+ statementListEmitCode(m_children, generator, dst);
+ return 0;
}
// ------------------------------ EmptyStatementNode ---------------------------
-RegisterID* EmptyStatementNode::emitBytecode(BytecodeGenerator&, RegisterID* dst)
+RegisterID* EmptyStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
return dst;
}
@@ -1642,51 +1263,31 @@ RegisterID* DebuggerStatementNode::emitBytecode(BytecodeGenerator& generator, Re
RegisterID* ExprStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
ASSERT(m_expr);
- return generator.emitNode(dst, m_expr.get());
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+ return generator.emitNode(dst, m_expr);
}
// ------------------------------ VarStatementNode ----------------------------
-VarStatementNode::~VarStatementNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void VarStatementNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
-}
-
RegisterID* VarStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
{
ASSERT(m_expr);
- return generator.emitNode(m_expr.get());
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+ return generator.emitNode(m_expr);
}
// ------------------------------ IfNode ---------------------------------------
-IfNode::~IfNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void IfNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_condition);
- releaser.release(m_ifBlock);
-}
-
RegisterID* IfNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+
RefPtr<Label> afterThen = generator.newLabel();
- RegisterID* cond = generator.emitNode(m_condition.get());
+ RegisterID* cond = generator.emitNode(m_condition);
generator.emitJumpIfFalse(cond, afterThen.get());
- if (!m_ifBlock->isBlock())
- generator.emitDebugHook(WillExecuteStatement, m_ifBlock->firstLine(), m_ifBlock->lastLine());
-
- generator.emitNode(dst, m_ifBlock.get());
+ generator.emitNode(dst, m_ifBlock);
generator.emitLabel(afterThen.get());
// FIXME: This should return the last statement executed so that it can be returned as a Completion.
@@ -1695,37 +1296,22 @@ RegisterID* IfNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
// ------------------------------ IfElseNode ---------------------------------------
-IfElseNode::~IfElseNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void IfElseNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_elseBlock);
- IfNode::releaseNodes(releaser);
-}
-
RegisterID* IfElseNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+
RefPtr<Label> beforeElse = generator.newLabel();
RefPtr<Label> afterElse = generator.newLabel();
- RegisterID* cond = generator.emitNode(m_condition.get());
+ RegisterID* cond = generator.emitNode(m_condition);
generator.emitJumpIfFalse(cond, beforeElse.get());
- if (!m_ifBlock->isBlock())
- generator.emitDebugHook(WillExecuteStatement, m_ifBlock->firstLine(), m_ifBlock->lastLine());
-
- generator.emitNode(dst, m_ifBlock.get());
+ generator.emitNode(dst, m_ifBlock);
generator.emitJump(afterElse.get());
generator.emitLabel(beforeElse.get());
- if (!m_elseBlock->isBlock())
- generator.emitDebugHook(WillExecuteStatement, m_elseBlock->firstLine(), m_elseBlock->lastLine());
-
- generator.emitNode(dst, m_elseBlock.get());
+ generator.emitNode(dst, m_elseBlock);
generator.emitLabel(afterElse.get());
@@ -1735,17 +1321,6 @@ RegisterID* IfElseNode::emitBytecode(BytecodeGenerator& generator, RegisterID* d
// ------------------------------ DoWhileNode ----------------------------------
-DoWhileNode::~DoWhileNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void DoWhileNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_statement);
- releaser.release(m_expr);
-}
-
RegisterID* DoWhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Loop);
@@ -1754,15 +1329,12 @@ RegisterID* DoWhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID*
generator.emitLabel(topOfLoop.get());
generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
-
- if (!m_statement->isBlock())
- generator.emitDebugHook(WillExecuteStatement, m_statement->firstLine(), m_statement->lastLine());
-
- RefPtr<RegisterID> result = generator.emitNode(dst, m_statement.get());
+
+ RefPtr<RegisterID> result = generator.emitNode(dst, m_statement);
generator.emitLabel(scope->continueTarget());
generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo());
- RegisterID* cond = generator.emitNode(m_expr.get());
+ RegisterID* cond = generator.emitNode(m_expr);
generator.emitJumpIfTrue(cond, topOfLoop.get());
generator.emitLabel(scope->breakTarget());
@@ -1771,17 +1343,6 @@ RegisterID* DoWhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID*
// ------------------------------ WhileNode ------------------------------------
-WhileNode::~WhileNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void WhileNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
- releaser.release(m_statement);
-}
-
RegisterID* WhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Loop);
@@ -1790,15 +1351,12 @@ RegisterID* WhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
RefPtr<Label> topOfLoop = generator.newLabel();
generator.emitLabel(topOfLoop.get());
-
- if (!m_statement->isBlock())
- generator.emitDebugHook(WillExecuteStatement, m_statement->firstLine(), m_statement->lastLine());
-
- generator.emitNode(dst, m_statement.get());
+
+ generator.emitNode(dst, m_statement);
generator.emitLabel(scope->continueTarget());
generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo());
- RegisterID* cond = generator.emitNode(m_expr.get());
+ RegisterID* cond = generator.emitNode(m_expr);
generator.emitJumpIfTrue(cond, topOfLoop.get());
generator.emitLabel(scope->breakTarget());
@@ -1809,19 +1367,6 @@ RegisterID* WhileNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
// ------------------------------ ForNode --------------------------------------
-ForNode::~ForNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ForNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr1);
- releaser.release(m_expr2);
- releaser.release(m_expr3);
- releaser.release(m_statement);
-}
-
RegisterID* ForNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
if (dst == generator.ignoredResult())
@@ -1832,7 +1377,7 @@ RegisterID* ForNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
if (m_expr1)
- generator.emitNode(generator.ignoredResult(), m_expr1.get());
+ generator.emitNode(generator.ignoredResult(), m_expr1);
RefPtr<Label> condition = generator.newLabel();
generator.emitJump(condition.get());
@@ -1840,17 +1385,16 @@ RegisterID* ForNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
RefPtr<Label> topOfLoop = generator.newLabel();
generator.emitLabel(topOfLoop.get());
- if (!m_statement->isBlock())
- generator.emitDebugHook(WillExecuteStatement, m_statement->firstLine(), m_statement->lastLine());
- RefPtr<RegisterID> result = generator.emitNode(dst, m_statement.get());
+ RefPtr<RegisterID> result = generator.emitNode(dst, m_statement);
generator.emitLabel(scope->continueTarget());
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
if (m_expr3)
- generator.emitNode(generator.ignoredResult(), m_expr3.get());
+ generator.emitNode(generator.ignoredResult(), m_expr3);
generator.emitLabel(condition.get());
if (m_expr2) {
- RegisterID* cond = generator.emitNode(m_expr2.get());
+ RegisterID* cond = generator.emitNode(m_expr2);
generator.emitJumpIfTrue(cond, topOfLoop.get());
} else
generator.emitJump(topOfLoop.get());
@@ -1861,45 +1405,6 @@ RegisterID* ForNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
// ------------------------------ ForInNode ------------------------------------
-ForInNode::~ForInNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ForInNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_init);
- releaser.release(m_lexpr);
- releaser.release(m_expr);
- releaser.release(m_statement);
-}
-
-ForInNode::ForInNode(JSGlobalData* globalData, ExpressionNode* l, ExpressionNode* expr, StatementNode* statement)
- : StatementNode(globalData)
- , m_init(0L)
- , m_lexpr(l)
- , m_expr(expr)
- , m_statement(statement)
- , m_identIsVarDecl(false)
-{
-}
-
-ForInNode::ForInNode(JSGlobalData* globalData, const Identifier& ident, ExpressionNode* in, ExpressionNode* expr, StatementNode* statement, int divot, int startOffset, int endOffset)
- : StatementNode(globalData)
- , m_ident(ident)
- , m_lexpr(new ResolveNode(globalData, ident, divot - startOffset))
- , m_expr(expr)
- , m_statement(statement)
- , m_identIsVarDecl(true)
-{
- if (in) {
- AssignResolveNode* node = new AssignResolveNode(globalData, ident, in, true);
- node->setExceptionSourceCode(divot, divot - startOffset, endOffset - divot);
- m_init = node;
- }
- // for( var foo = bar in baz )
-}
-
RegisterID* ForInNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Loop);
@@ -1912,8 +1417,8 @@ RegisterID* ForInNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
if (m_init)
- generator.emitNode(generator.ignoredResult(), m_init.get());
- RegisterID* forInBase = generator.emitNode(m_expr.get());
+ generator.emitNode(generator.ignoredResult(), m_init);
+ RegisterID* forInBase = generator.emitNode(m_expr);
RefPtr<RegisterID> iter = generator.emitGetPropertyNames(generator.newTemporary(), forInBase);
generator.emitJump(scope->continueTarget());
@@ -1922,7 +1427,7 @@ RegisterID* ForInNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
RegisterID* propertyName;
if (m_lexpr->isResolveNode()) {
- const Identifier& ident = static_cast<ResolveNode*>(m_lexpr.get())->identifier();
+ const Identifier& ident = static_cast<ResolveNode*>(m_lexpr)->identifier();
propertyName = generator.registerFor(ident);
if (!propertyName) {
propertyName = generator.newTemporary();
@@ -1933,7 +1438,7 @@ RegisterID* ForInNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
generator.emitPutById(base, ident, propertyName);
}
} else if (m_lexpr->isDotAccessorNode()) {
- DotAccessorNode* assignNode = static_cast<DotAccessorNode*>(m_lexpr.get());
+ DotAccessorNode* assignNode = static_cast<DotAccessorNode*>(m_lexpr);
const Identifier& ident = assignNode->identifier();
propertyName = generator.newTemporary();
RefPtr<RegisterID> protect = propertyName;
@@ -1943,7 +1448,7 @@ RegisterID* ForInNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
generator.emitPutById(base, ident, propertyName);
} else {
ASSERT(m_lexpr->isBracketAccessorNode());
- BracketAccessorNode* assignNode = static_cast<BracketAccessorNode*>(m_lexpr.get());
+ BracketAccessorNode* assignNode = static_cast<BracketAccessorNode*>(m_lexpr);
propertyName = generator.newTemporary();
RefPtr<RegisterID> protect = propertyName;
RefPtr<RegisterID> base = generator.emitNode(assignNode->base());
@@ -1953,12 +1458,11 @@ RegisterID* ForInNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
generator.emitPutByVal(base.get(), subscript, propertyName);
}
- if (!m_statement->isBlock())
- generator.emitDebugHook(WillExecuteStatement, m_statement->firstLine(), m_statement->lastLine());
- generator.emitNode(dst, m_statement.get());
+ generator.emitNode(dst, m_statement);
generator.emitLabel(scope->continueTarget());
generator.emitNextPropertyName(propertyName, iter.get(), loopStart.get());
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
generator.emitLabel(scope->breakTarget());
return dst;
}
@@ -1968,6 +1472,8 @@ RegisterID* ForInNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
// ECMA 12.7
RegisterID* ContinueNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+
LabelScope* scope = generator.continueTarget(m_ident);
if (!scope)
@@ -1984,6 +1490,8 @@ RegisterID* ContinueNode::emitBytecode(BytecodeGenerator& generator, RegisterID*
// ECMA 12.8
RegisterID* BreakNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+
LabelScope* scope = generator.breakTarget(m_ident);
if (!scope)
@@ -1997,26 +1505,22 @@ RegisterID* BreakNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
// ------------------------------ ReturnNode -----------------------------------
-ReturnNode::~ReturnNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ReturnNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_value);
-}
-
RegisterID* ReturnNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
if (generator.codeType() != FunctionCode)
return emitThrowError(generator, SyntaxError, "Invalid return statement.");
if (dst == generator.ignoredResult())
dst = 0;
- RegisterID* r0 = m_value ? generator.emitNode(dst, m_value.get()) : generator.emitLoad(dst, jsUndefined());
+ RegisterID* r0 = m_value ? generator.emitNode(dst, m_value) : generator.emitLoad(dst, jsUndefined());
+ RefPtr<RegisterID> returnRegister;
if (generator.scopeDepth()) {
RefPtr<Label> l0 = generator.newLabel();
+ if (generator.hasFinaliser() && !r0->isTemporary()) {
+ returnRegister = generator.emitMove(generator.newTemporary(), r0);
+ r0 = returnRegister.get();
+ }
generator.emitJumpScopes(l0.get(), 0);
generator.emitLabel(l0.get());
}
@@ -2026,67 +1530,21 @@ RegisterID* ReturnNode::emitBytecode(BytecodeGenerator& generator, RegisterID* d
// ------------------------------ WithNode -------------------------------------
-WithNode::~WithNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void WithNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
- releaser.release(m_statement);
-}
-
RegisterID* WithNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+
RefPtr<RegisterID> scope = generator.newTemporary();
- generator.emitNode(scope.get(), m_expr.get()); // scope must be protected until popped
+ generator.emitNode(scope.get(), m_expr); // scope must be protected until popped
generator.emitExpressionInfo(m_divot, m_expressionLength, 0);
generator.emitPushScope(scope.get());
- RegisterID* result = generator.emitNode(dst, m_statement.get());
+ RegisterID* result = generator.emitNode(dst, m_statement);
generator.emitPopScope();
return result;
}
-// ------------------------------ CaseClauseNode --------------------------------
-
-CaseClauseNode::~CaseClauseNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void CaseClauseNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
-}
-
-// ------------------------------ ClauseListNode --------------------------------
-
-ClauseListNode::~ClauseListNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ClauseListNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_clause);
- releaser.release(m_next);
-}
-
// ------------------------------ CaseBlockNode --------------------------------
-CaseBlockNode::~CaseBlockNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void CaseBlockNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_list1);
- releaser.release(m_defaultClause);
- releaser.release(m_list2);
-}
-
enum SwitchKind {
SwitchUnset = 0,
SwitchNumber = 1,
@@ -2101,7 +1559,8 @@ static void processClauseList(ClauseListNode* list, Vector<ExpressionNode*, 8>&
literalVector.append(clauseExpression);
if (clauseExpression->isNumber()) {
double value = static_cast<NumberNode*>(clauseExpression)->value();
- if ((typeForTable & ~SwitchNumber) || !JSImmediate::from(value)) {
+ JSValue jsValue = JSValue::makeInt32Fast(static_cast<int32_t>(value));
+ if ((typeForTable & ~SwitchNumber) || !jsValue || (jsValue.getInt32Fast() != value)) {
typeForTable = SwitchNeither;
break;
}
@@ -2140,8 +1599,8 @@ SwitchInfo::SwitchType CaseBlockNode::tryOptimizedSwitch(Vector<ExpressionNode*,
SwitchKind typeForTable = SwitchUnset;
bool singleCharacterSwitch = true;
- processClauseList(m_list1.get(), literalVector, typeForTable, singleCharacterSwitch, min_num, max_num);
- processClauseList(m_list2.get(), literalVector, typeForTable, singleCharacterSwitch, min_num, max_num);
+ processClauseList(m_list1, literalVector, typeForTable, singleCharacterSwitch, min_num, max_num);
+ processClauseList(m_list2, literalVector, typeForTable, singleCharacterSwitch, min_num, max_num);
if (typeForTable == SwitchUnset || typeForTable == SwitchNeither)
return SwitchInfo::SwitchNone;
@@ -2181,7 +1640,7 @@ RegisterID* CaseBlockNode::emitBytecodeForBlock(BytecodeGenerator& generator, Re
generator.beginSwitch(switchExpression, switchType);
} else {
// Setup jumps
- for (ClauseListNode* list = m_list1.get(); list; list = list->getNext()) {
+ for (ClauseListNode* list = m_list1; list; list = list->getNext()) {
RefPtr<RegisterID> clauseVal = generator.newTemporary();
generator.emitNode(clauseVal.get(), list->getClause()->expr());
generator.emitBinaryOp(op_stricteq, clauseVal.get(), clauseVal.get(), switchExpression, OperandTypes());
@@ -2189,7 +1648,7 @@ RegisterID* CaseBlockNode::emitBytecodeForBlock(BytecodeGenerator& generator, Re
generator.emitJumpIfTrue(clauseVal.get(), labelVector[labelVector.size() - 1].get());
}
- for (ClauseListNode* list = m_list2.get(); list; list = list->getNext()) {
+ for (ClauseListNode* list = m_list2; list; list = list->getNext()) {
RefPtr<RegisterID> clauseVal = generator.newTemporary();
generator.emitNode(clauseVal.get(), list->getClause()->expr());
generator.emitBinaryOp(op_stricteq, clauseVal.get(), clauseVal.get(), switchExpression, OperandTypes());
@@ -2203,19 +1662,19 @@ RegisterID* CaseBlockNode::emitBytecodeForBlock(BytecodeGenerator& generator, Re
RegisterID* result = 0;
size_t i = 0;
- for (ClauseListNode* list = m_list1.get(); list; list = list->getNext()) {
+ for (ClauseListNode* list = m_list1; list; list = list->getNext()) {
generator.emitLabel(labelVector[i++].get());
- result = statementListEmitCode(list->getClause()->children(), generator, dst);
+ statementListEmitCode(list->getClause()->children(), generator, dst);
}
if (m_defaultClause) {
generator.emitLabel(defaultLabel.get());
- result = statementListEmitCode(m_defaultClause->children(), generator, dst);
+ statementListEmitCode(m_defaultClause->children(), generator, dst);
}
- for (ClauseListNode* list = m_list2.get(); list; list = list->getNext()) {
+ for (ClauseListNode* list = m_list2; list; list = list->getNext()) {
generator.emitLabel(labelVector[i++].get());
- result = statementListEmitCode(list->getClause()->children(), generator, dst);
+ statementListEmitCode(list->getClause()->children(), generator, dst);
}
if (!m_defaultClause)
generator.emitLabel(defaultLabel.get());
@@ -2230,22 +1689,13 @@ RegisterID* CaseBlockNode::emitBytecodeForBlock(BytecodeGenerator& generator, Re
// ------------------------------ SwitchNode -----------------------------------
-SwitchNode::~SwitchNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void SwitchNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
- releaser.release(m_block);
-}
-
RegisterID* SwitchNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+
RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Switch);
- RefPtr<RegisterID> r0 = generator.emitNode(m_expr.get());
+ RefPtr<RegisterID> r0 = generator.emitNode(m_expr);
RegisterID* r1 = m_block->emitBytecodeForBlock(generator, r0.get(), dst);
generator.emitLabel(scope->breakTarget());
@@ -2254,23 +1704,15 @@ RegisterID* SwitchNode::emitBytecode(BytecodeGenerator& generator, RegisterID* d
// ------------------------------ LabelNode ------------------------------------
-LabelNode::~LabelNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void LabelNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_statement);
-}
-
RegisterID* LabelNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+
if (generator.breakTarget(m_name))
return emitThrowError(generator, SyntaxError, "Duplicate label: %s.", m_name);
RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::NamedLabel, &m_name);
- RegisterID* r0 = generator.emitNode(dst, m_statement.get());
+ RegisterID* r0 = generator.emitNode(dst, m_statement);
generator.emitLabel(scope->breakTarget());
return r0;
@@ -2278,42 +1720,24 @@ RegisterID* LabelNode::emitBytecode(BytecodeGenerator& generator, RegisterID* ds
// ------------------------------ ThrowNode ------------------------------------
-ThrowNode::~ThrowNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ThrowNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_expr);
-}
-
RegisterID* ThrowNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+
if (dst == generator.ignoredResult())
dst = 0;
- RefPtr<RegisterID> expr = generator.emitNode(dst, m_expr.get());
+ RefPtr<RegisterID> expr = generator.emitNode(m_expr);
generator.emitExpressionInfo(divot(), startOffset(), endOffset());
generator.emitThrow(expr.get());
- return dst;
+ return 0;
}
// ------------------------------ TryNode --------------------------------------
-TryNode::~TryNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void TryNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_tryBlock);
- releaser.release(m_catchBlock);
- releaser.release(m_finallyBlock);
-}
-
RegisterID* TryNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
+ generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());
+
RefPtr<Label> tryStartLabel = generator.newLabel();
RefPtr<Label> tryEndLabel = generator.newLabel();
RefPtr<Label> finallyStart;
@@ -2324,7 +1748,7 @@ RegisterID* TryNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
generator.pushFinallyContext(finallyStart.get(), finallyReturnAddr.get());
}
generator.emitLabel(tryStartLabel.get());
- generator.emitNode(dst, m_tryBlock.get());
+ generator.emitNode(dst, m_tryBlock);
generator.emitLabel(tryEndLabel.get());
if (m_catchBlock) {
@@ -2338,7 +1762,7 @@ RegisterID* TryNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
generator.emitPushScope(exceptionRegister.get());
} else
generator.emitPushNewScope(exceptionRegister.get(), m_exceptionIdent, exceptionRegister.get());
- generator.emitNode(dst, m_catchBlock.get());
+ generator.emitNode(dst, m_catchBlock);
generator.emitPopScope();
generator.emitLabel(handlerEndLabel.get());
}
@@ -2367,7 +1791,7 @@ RegisterID* TryNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
// emit the finally block itself
generator.emitLabel(finallyStart.get());
- generator.emitNode(dst, m_finallyBlock.get());
+ generator.emitNode(dst, m_finallyBlock);
generator.emitSubroutineReturn(finallyReturnAddr.get());
generator.emitLabel(finallyEndLabel.get());
@@ -2376,77 +1800,73 @@ RegisterID* TryNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
return dst;
}
-// ------------------------------ ParameterNode -----------------------------
-
-ParameterNode::~ParameterNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ParameterNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_next);
-}
-
// -----------------------------ScopeNodeData ---------------------------
-ScopeNodeData::ScopeNodeData(SourceElements* children, VarStack* varStack, FunctionStack* funcStack, int numConstants)
+ScopeNodeData::ScopeNodeData(ParserArena& arena, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, int numConstants)
: m_numConstants(numConstants)
{
+ m_arena.swap(arena);
if (varStack)
- m_varStack = *varStack;
+ m_varStack.swap(*varStack);
if (funcStack)
- m_functionStack = *funcStack;
+ m_functionStack.swap(*funcStack);
if (children)
children->releaseContentsIntoVector(m_children);
}
+void ScopeNodeData::mark()
+{
+ FunctionStack::iterator end = m_functionStack.end();
+ for (FunctionStack::iterator ptr = m_functionStack.begin(); ptr != end; ++ptr) {
+ FunctionBodyNode* body = (*ptr)->body();
+ if (!body->isGenerated())
+ continue;
+ body->generatedBytecode().mark();
+ }
+}
+
// ------------------------------ ScopeNode -----------------------------
ScopeNode::ScopeNode(JSGlobalData* globalData)
: StatementNode(globalData)
+ , ParserArenaRefCounted(globalData)
, m_features(NoFeatures)
{
-#if ENABLE(OPCODE_SAMPLING)
- globalData->interpreter->sampler()->notifyOfScope(this);
+#if ENABLE(CODEBLOCK_SAMPLING)
+ if (SamplingTool* sampler = globalData->interpreter->sampler())
+ sampler->notifyOfScope(this);
#endif
}
ScopeNode::ScopeNode(JSGlobalData* globalData, const SourceCode& source, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, CodeFeatures features, int numConstants)
: StatementNode(globalData)
- , m_data(new ScopeNodeData(children, varStack, funcStack, numConstants))
+ , ParserArenaRefCounted(globalData)
+ , m_data(new ScopeNodeData(globalData->parser->arena(), children, varStack, funcStack, numConstants))
, m_features(features)
, m_source(source)
{
-#if ENABLE(OPCODE_SAMPLING)
- globalData->interpreter->sampler()->notifyOfScope(this);
+#if ENABLE(CODEBLOCK_SAMPLING)
+ if (SamplingTool* sampler = globalData->interpreter->sampler())
+ sampler->notifyOfScope(this);
#endif
}
-ScopeNode::~ScopeNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void ScopeNode::releaseNodes(NodeReleaser& releaser)
-{
- if (!m_data)
- return;
- size_t size = m_data->m_children.size();
- for (size_t i = 0; i < size; ++i)
- releaser.release(m_data->m_children[i]);
-}
-
// ------------------------------ ProgramNode -----------------------------
-ProgramNode::ProgramNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
+inline ProgramNode::ProgramNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
: ScopeNode(globalData, source, children, varStack, funcStack, features, numConstants)
{
}
-ProgramNode* ProgramNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
+PassRefPtr<ProgramNode> ProgramNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
{
- return new ProgramNode(globalData, children, varStack, funcStack, source, features, numConstants);
+ RefPtr<ProgramNode> node = new ProgramNode(globalData, children, varStack, funcStack, source, features, numConstants);
+
+ ASSERT(node->data()->m_arena.last() == node);
+ node->data()->m_arena.removeLast();
+ ASSERT(!node->data()->m_arena.contains(node.get()));
+
+ return node.release();
}
RegisterID* ProgramNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
@@ -2475,16 +1895,33 @@ void ProgramNode::generateBytecode(ScopeChainNode* scopeChainNode)
destroyData();
}
+#if ENABLE(JIT)
+void ProgramNode::generateJITCode(ScopeChainNode* scopeChainNode)
+{
+ bytecode(scopeChainNode);
+ ASSERT(m_code);
+ ASSERT(!m_jitCode);
+ JIT::compile(scopeChainNode->globalData, m_code.get());
+ ASSERT(m_jitCode);
+}
+#endif
+
// ------------------------------ EvalNode -----------------------------
-EvalNode::EvalNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
+inline EvalNode::EvalNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
: ScopeNode(globalData, source, children, varStack, funcStack, features, numConstants)
{
}
-EvalNode* EvalNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
+PassRefPtr<EvalNode> EvalNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& source, CodeFeatures features, int numConstants)
{
- return new EvalNode(globalData, children, varStack, funcStack, source, features, numConstants);
+ RefPtr<EvalNode> node = new EvalNode(globalData, children, varStack, funcStack, source, features, numConstants);
+
+ ASSERT(node->data()->m_arena.last() == node);
+ node->data()->m_arena.removeLast();
+ ASSERT(!node->data()->m_arena.contains(node.get()));
+
+ return node.release();
}
RegisterID* EvalNode::emitBytecode(BytecodeGenerator& generator, RegisterID*)
@@ -2505,7 +1942,7 @@ void EvalNode::generateBytecode(ScopeChainNode* scopeChainNode)
ScopeChain scopeChain(scopeChainNode);
JSGlobalObject* globalObject = scopeChain.globalObject();
- m_code.set(new EvalCodeBlock(this, globalObject, source().provider()));
+ m_code.set(new EvalCodeBlock(this, globalObject, source().provider(), scopeChain.localDepth()));
BytecodeGenerator generator(this, globalObject->debugger(), scopeChain, &m_code->symbolTable(), m_code.get());
generator.generate();
@@ -2515,43 +1952,57 @@ void EvalNode::generateBytecode(ScopeChainNode* scopeChainNode)
children().clear();
}
-EvalCodeBlock& EvalNode::bytecodeForExceptionInfoReparse(ScopeChainNode* scopeChainNode)
+EvalCodeBlock& EvalNode::bytecodeForExceptionInfoReparse(ScopeChainNode* scopeChainNode, CodeBlock* codeBlockBeingRegeneratedFrom)
{
ASSERT(!m_code);
ScopeChain scopeChain(scopeChainNode);
JSGlobalObject* globalObject = scopeChain.globalObject();
- m_code.set(new EvalCodeBlock(this, globalObject, source().provider()));
+ m_code.set(new EvalCodeBlock(this, globalObject, source().provider(), scopeChain.localDepth()));
BytecodeGenerator generator(this, globalObject->debugger(), scopeChain, &m_code->symbolTable(), m_code.get());
- generator.setRegeneratingForExceptionInfo();
+ generator.setRegeneratingForExceptionInfo(codeBlockBeingRegeneratedFrom);
generator.generate();
return *m_code;
}
+void EvalNode::mark()
+{
+ // We don't need to mark our own CodeBlock as the JSGlobalObject takes care of that
+ data()->mark();
+}
+
+#if ENABLE(JIT)
+void EvalNode::generateJITCode(ScopeChainNode* scopeChainNode)
+{
+ bytecode(scopeChainNode);
+ ASSERT(m_code);
+ ASSERT(!m_jitCode);
+ JIT::compile(scopeChainNode->globalData, m_code.get());
+ ASSERT(m_jitCode);
+}
+#endif
+
// ------------------------------ FunctionBodyNode -----------------------------
-FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData)
+inline FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData)
: ScopeNode(globalData)
, m_parameters(0)
, m_parameterCount(0)
- , m_refCount(0)
{
}
-FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& sourceCode, CodeFeatures features, int numConstants)
+inline FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& sourceCode, CodeFeatures features, int numConstants)
: ScopeNode(globalData, sourceCode, children, varStack, funcStack, features, numConstants)
, m_parameters(0)
, m_parameterCount(0)
- , m_refCount(0)
{
}
FunctionBodyNode::~FunctionBodyNode()
{
- ASSERT(!m_refCount);
for (size_t i = 0; i < m_parameterCount; ++i)
m_parameters[i].~Identifier();
fastFree(m_parameters);
@@ -2581,14 +2032,30 @@ void FunctionBodyNode::mark()
m_code->mark();
}
+#if ENABLE(JIT)
+PassRefPtr<FunctionBodyNode> FunctionBodyNode::createNativeThunk(JSGlobalData* globalData)
+{
+ RefPtr<FunctionBodyNode> body = new FunctionBodyNode(globalData);
+ globalData->parser->arena().reset();
+ body->m_jitCode = JITCode(JITCode::HostFunction(globalData->jitStubs.ctiNativeCallThunk()));
+ return body.release();
+}
+#endif
+
FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData)
{
return new FunctionBodyNode(globalData);
}
-FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& sourceCode, CodeFeatures features, int numConstants)
+PassRefPtr<FunctionBodyNode> FunctionBodyNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& sourceCode, CodeFeatures features, int numConstants)
{
- return new FunctionBodyNode(globalData, children, varStack, funcStack, sourceCode, features, numConstants);
+ RefPtr<FunctionBodyNode> node = new FunctionBodyNode(globalData, children, varStack, funcStack, sourceCode, features, numConstants);
+
+ ASSERT(node->data()->m_arena.last() == node);
+ node->data()->m_arena.removeLast();
+ ASSERT(!node->data()->m_arena.contains(node.get()));
+
+ return node.release();
}
void FunctionBodyNode::generateBytecode(ScopeChainNode* scopeChainNode)
@@ -2610,7 +2077,18 @@ void FunctionBodyNode::generateBytecode(ScopeChainNode* scopeChainNode)
destroyData();
}
-CodeBlock& FunctionBodyNode::bytecodeForExceptionInfoReparse(ScopeChainNode* scopeChainNode)
+#if ENABLE(JIT)
+void FunctionBodyNode::generateJITCode(ScopeChainNode* scopeChainNode)
+{
+ bytecode(scopeChainNode);
+ ASSERT(m_code);
+ ASSERT(!m_jitCode);
+ JIT::compile(scopeChainNode->globalData, m_code.get());
+ ASSERT(m_jitCode);
+}
+#endif
+
+CodeBlock& FunctionBodyNode::bytecodeForExceptionInfoReparse(ScopeChainNode* scopeChainNode, CodeBlock* codeBlockBeingRegeneratedFrom)
{
ASSERT(!m_code);
@@ -2620,7 +2098,7 @@ CodeBlock& FunctionBodyNode::bytecodeForExceptionInfoReparse(ScopeChainNode* sco
m_code.set(new CodeBlock(this, FunctionCode, source().provider(), source().startOffset()));
BytecodeGenerator generator(this, globalObject->debugger(), scopeChain, &m_code->symbolTable(), m_code.get());
- generator.setRegeneratingForExceptionInfo();
+ generator.setRegeneratingForExceptionInfo(codeBlockBeingRegeneratedFrom);
generator.generate();
return *m_code;
@@ -2630,11 +2108,15 @@ RegisterID* FunctionBodyNode::emitBytecode(BytecodeGenerator& generator, Registe
{
generator.emitDebugHook(DidEnterCallFrame, firstLine(), lastLine());
statementListEmitCode(children(), generator, generator.ignoredResult());
- if (!children().size() || !children().last()->isReturnNode()) {
- RegisterID* r0 = generator.emitLoad(0, jsUndefined());
- generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine());
- generator.emitReturn(r0);
+ if (children().size() && children().last()->isBlock()) {
+ BlockNode* blockNode = static_cast<BlockNode*>(children().last());
+ if (blockNode->children().size() && blockNode->children().last()->isReturnNode())
+ return 0;
}
+
+ RegisterID* r0 = generator.emitLoad(0, jsUndefined());
+ generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine());
+ generator.emitReturn(r0);
return 0;
}
@@ -2659,17 +2141,6 @@ Identifier* FunctionBodyNode::copyParameters()
// ------------------------------ FuncDeclNode ---------------------------------
-FuncDeclNode::~FuncDeclNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void FuncDeclNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_parameter);
- releaser.release(m_body);
-}
-
JSFunction* FuncDeclNode::makeFunction(ExecState* exec, ScopeChainNode* scopeChain)
{
return new (exec) JSFunction(exec, m_ident, m_body.get(), scopeChain);
@@ -2684,17 +2155,6 @@ RegisterID* FuncDeclNode::emitBytecode(BytecodeGenerator& generator, RegisterID*
// ------------------------------ FuncExprNode ---------------------------------
-FuncExprNode::~FuncExprNode()
-{
- NodeReleaser::releaseAllNodes(this);
-}
-
-void FuncExprNode::releaseNodes(NodeReleaser& releaser)
-{
- releaser.release(m_parameter);
- releaser.release(m_body);
-}
-
RegisterID* FuncExprNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
return generator.emitNewFunctionExpression(generator.finalDestination(dst), this);
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h
index 20885c3..cda1ee4 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h
@@ -23,34 +23,30 @@
*
*/
-#ifndef NODES_H_
-#define NODES_H_
+#ifndef Nodes_h
+#define Nodes_h
#include "Error.h"
+#include "JITCode.h"
#include "Opcode.h"
+#include "ParserArena.h"
#include "ResultType.h"
#include "SourceCode.h"
#include "SymbolTable.h"
#include <wtf/MathExtras.h>
#include <wtf/OwnPtr.h>
-#include <wtf/Vector.h>
-
-#if PLATFORM(X86) && COMPILER(GCC)
-#define JSC_FAST_CALL __attribute__((regparm(3)))
-#else
-#define JSC_FAST_CALL
-#endif
namespace JSC {
+ class ArgumentListNode;
class CodeBlock;
class BytecodeGenerator;
class FuncDeclNode;
class EvalCodeBlock;
class JSFunction;
- class NodeReleaser;
class ProgramCodeBlock;
class PropertyListNode;
+ class ReadModifyResolveNode;
class RegisterID;
class ScopeChainNode;
@@ -91,7 +87,7 @@ namespace JSC {
namespace DeclarationStacks {
enum VarAttrs { IsConstant = 1, HasInitializer = 2 };
typedef Vector<std::pair<Identifier, unsigned> > VarStack;
- typedef Vector<RefPtr<FuncDeclNode> > FunctionStack;
+ typedef Vector<FuncDeclNode*> FunctionStack;
}
struct SwitchInfo {
@@ -100,30 +96,37 @@ namespace JSC {
SwitchType switchType;
};
- class ParserRefCounted : Noncopyable {
+ class ParserArenaDeletable {
protected:
- ParserRefCounted(JSGlobalData*) JSC_FAST_CALL;
+ ParserArenaDeletable() { }
public:
- virtual ~ParserRefCounted();
+ virtual ~ParserArenaDeletable() { }
- // Nonrecursive destruction.
- virtual void releaseNodes(NodeReleaser&);
+ // Objects created with this version of new are deleted when the arena is deleted.
+ void* operator new(size_t, JSGlobalData*);
- void ref() JSC_FAST_CALL;
- void deref() JSC_FAST_CALL;
- bool hasOneRef() JSC_FAST_CALL;
+ // Objects created with this version of new are not deleted when the arena is deleted.
+ // Other arrangements must be made.
+ void* operator new(size_t);
+ };
- static void deleteNewObjects(JSGlobalData*) JSC_FAST_CALL;
+ class ParserArenaRefCounted : public RefCounted<ParserArenaRefCounted> {
+ protected:
+ ParserArenaRefCounted(JSGlobalData*);
- private:
- JSGlobalData* m_globalData;
+ public:
+ virtual ~ParserArenaRefCounted()
+ {
+ ASSERT(deletionHasBegun());
+ }
};
- class Node : public ParserRefCounted {
- public:
- Node(JSGlobalData*) JSC_FAST_CALL;
+ class Node : public ParserArenaDeletable {
+ protected:
+ Node(JSGlobalData*);
+ public:
/*
Return value: The register holding the production's value.
dst: An optional parameter specifying the most efficient
@@ -146,7 +149,7 @@ namespace JSC {
because the assignment node, "x =", passes r[x] as dst to the number
node, "1".
*/
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* dst = 0) JSC_FAST_CALL = 0;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* dst = 0) = 0;
int lineNo() const { return m_line; }
@@ -156,46 +159,44 @@ namespace JSC {
class ExpressionNode : public Node {
public:
- ExpressionNode(JSGlobalData* globalData, ResultType resultDesc = ResultType::unknown()) JSC_FAST_CALL
- : Node(globalData)
- , m_resultDesc(resultDesc)
- {
- }
+ ExpressionNode(JSGlobalData*, ResultType = ResultType::unknownType());
- virtual bool isNumber() const JSC_FAST_CALL { return false; }
- virtual bool isString() const JSC_FAST_CALL { return false; }
- virtual bool isNull() const JSC_FAST_CALL { return false; }
- virtual bool isPure(BytecodeGenerator&) const JSC_FAST_CALL { return false; }
- virtual bool isLocation() const JSC_FAST_CALL { return false; }
- virtual bool isResolveNode() const JSC_FAST_CALL { return false; }
- virtual bool isBracketAccessorNode() const JSC_FAST_CALL { return false; }
- virtual bool isDotAccessorNode() const JSC_FAST_CALL { return false; }
- virtual bool isFuncExprNode() const JSC_FAST_CALL { return false; }
+ virtual bool isNumber() const { return false; }
+ virtual bool isString() const { return false; }
+ virtual bool isNull() const { return false; }
+ virtual bool isPure(BytecodeGenerator&) const { return false; }
+ virtual bool isLocation() const { return false; }
+ virtual bool isResolveNode() const { return false; }
+ virtual bool isBracketAccessorNode() const { return false; }
+ virtual bool isDotAccessorNode() const { return false; }
+ virtual bool isFuncExprNode() const { return false; }
+ virtual bool isSimpleArray() const { return false; }
+ virtual bool isAdd() const { return false; }
virtual ExpressionNode* stripUnaryPlus() { return this; }
- ResultType resultDescriptor() const JSC_FAST_CALL { return m_resultDesc; }
+ ResultType resultDescriptor() const { return m_resultType; }
// This needs to be in public in order to compile using GCC 3.x
typedef enum { EvalOperator, FunctionCall } CallerType;
private:
- ResultType m_resultDesc;
+ ResultType m_resultType;
};
class StatementNode : public Node {
public:
- StatementNode(JSGlobalData*) JSC_FAST_CALL;
- void setLoc(int line0, int line1) JSC_FAST_CALL;
- int firstLine() const JSC_FAST_CALL { return lineNo(); }
- int lastLine() const JSC_FAST_CALL { return m_lastLine; }
+ StatementNode(JSGlobalData*);
- virtual bool isEmptyStatement() const JSC_FAST_CALL { return false; }
- virtual bool isReturnNode() const JSC_FAST_CALL { return false; }
- virtual bool isExprStatement() const JSC_FAST_CALL { return false; }
+ void setLoc(int line0, int line1);
+ int firstLine() const { return lineNo(); }
+ int lastLine() const { return m_lastLine; }
- virtual bool isBlock() const JSC_FAST_CALL { return false; }
- virtual bool isLoop() const JSC_FAST_CALL { return false; }
+ virtual bool isEmptyStatement() const { return false; }
+ virtual bool isReturnNode() const { return false; }
+ virtual bool isExprStatement() const { return false; }
+
+ virtual bool isBlock() const { return false; }
private:
int m_lastLine;
@@ -203,66 +204,54 @@ namespace JSC {
class NullNode : public ExpressionNode {
public:
- NullNode(JSGlobalData* globalData) JSC_FAST_CALL
- : ExpressionNode(globalData, ResultType::nullType())
- {
- }
+ NullNode(JSGlobalData*);
- virtual bool isNull() const JSC_FAST_CALL { return true; }
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ virtual bool isNull() const { return true; }
};
class BooleanNode : public ExpressionNode {
public:
- BooleanNode(JSGlobalData* globalData, bool value) JSC_FAST_CALL
- : ExpressionNode(globalData, ResultType::boolean())
- , m_value(value)
- {
- }
+ BooleanNode(JSGlobalData*, bool value);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- virtual bool isPure(BytecodeGenerator&) const JSC_FAST_CALL { return true; }
+ virtual bool isPure(BytecodeGenerator&) const { return true; }
- private:
bool m_value;
};
class NumberNode : public ExpressionNode {
public:
- NumberNode(JSGlobalData* globalData, double v) JSC_FAST_CALL
- : ExpressionNode(globalData, ResultType::constNumber())
- , m_double(v)
- {
- }
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ NumberNode(JSGlobalData*, double v);
- virtual bool isNumber() const JSC_FAST_CALL { return true; }
- virtual bool isPure(BytecodeGenerator&) const JSC_FAST_CALL { return true; }
- double value() const JSC_FAST_CALL { return m_double; }
- void setValue(double d) JSC_FAST_CALL { m_double = d; }
+ double value() const { return m_double; }
+ void setValue(double d) { m_double = d; }
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ virtual bool isNumber() const { return true; }
+ virtual bool isPure(BytecodeGenerator&) const { return true; }
+
double m_double;
};
class StringNode : public ExpressionNode {
public:
- StringNode(JSGlobalData* globalData, const Identifier& v) JSC_FAST_CALL
- : ExpressionNode(globalData, ResultType::string())
- , m_value(v)
- {
- }
+ StringNode(JSGlobalData*, const Identifier& v);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
-
- virtual bool isString() const JSC_FAST_CALL { return true; }
const Identifier& value() { return m_value; }
- virtual bool isPure(BytecodeGenerator&) const JSC_FAST_CALL { return true; }
+ virtual bool isPure(BytecodeGenerator&) const { return true; }
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ virtual bool isString() const { return true; }
+
Identifier m_value;
};
@@ -365,1158 +354,682 @@ namespace JSC {
class RegExpNode : public ExpressionNode, public ThrowableExpressionData {
public:
- RegExpNode(JSGlobalData* globalData, const UString& pattern, const UString& flags) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_pattern(pattern)
- , m_flags(flags)
- {
- }
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ RegExpNode(JSGlobalData*, const UString& pattern, const UString& flags);
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
UString m_pattern;
UString m_flags;
};
class ThisNode : public ExpressionNode {
public:
- ThisNode(JSGlobalData* globalData) JSC_FAST_CALL
- : ExpressionNode(globalData)
- {
- }
+ ThisNode(JSGlobalData*);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
};
class ResolveNode : public ExpressionNode {
public:
- ResolveNode(JSGlobalData* globalData, const Identifier& ident, int startOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_ident(ident)
- , m_startOffset(startOffset)
- {
- }
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ ResolveNode(JSGlobalData*, const Identifier&, int startOffset);
- virtual bool isPure(BytecodeGenerator&) const JSC_FAST_CALL;
- virtual bool isLocation() const JSC_FAST_CALL { return true; }
- virtual bool isResolveNode() const JSC_FAST_CALL { return true; }
- const Identifier& identifier() const JSC_FAST_CALL { return m_ident; }
+ const Identifier& identifier() const { return m_ident; }
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ virtual bool isPure(BytecodeGenerator&) const ;
+ virtual bool isLocation() const { return true; }
+ virtual bool isResolveNode() const { return true; }
+
Identifier m_ident;
int32_t m_startOffset;
};
- class ElementNode : public ParserRefCounted {
+ class ElementNode : public ParserArenaDeletable {
public:
- ElementNode(JSGlobalData* globalData, int elision, ExpressionNode* node) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_elision(elision)
- , m_node(node)
- {
- }
-
- ElementNode(JSGlobalData* globalData, ElementNode* l, int elision, ExpressionNode* node) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_elision(elision)
- , m_node(node)
- {
- l->m_next = this;
- }
-
- virtual ~ElementNode();
- virtual void releaseNodes(NodeReleaser&);
+ ElementNode(JSGlobalData*, int elision, ExpressionNode*);
+ ElementNode(JSGlobalData*, ElementNode*, int elision, ExpressionNode*);
int elision() const { return m_elision; }
- ExpressionNode* value() { return m_node.get(); }
-
- ElementNode* next() { return m_next.get(); }
+ ExpressionNode* value() { return m_node; }
+ ElementNode* next() { return m_next; }
private:
- RefPtr<ElementNode> m_next;
+ ElementNode* m_next;
int m_elision;
- RefPtr<ExpressionNode> m_node;
+ ExpressionNode* m_node;
};
class ArrayNode : public ExpressionNode {
public:
- ArrayNode(JSGlobalData* globalData, int elision) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_elision(elision)
- , m_optional(true)
- {
- }
+ ArrayNode(JSGlobalData*, int elision);
+ ArrayNode(JSGlobalData*, ElementNode*);
+ ArrayNode(JSGlobalData*, int elision, ElementNode*);
- ArrayNode(JSGlobalData* globalData, ElementNode* element) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_element(element)
- , m_elision(0)
- , m_optional(false)
- {
- }
-
- ArrayNode(JSGlobalData* globalData, int elision, ElementNode* element) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_element(element)
- , m_elision(elision)
- , m_optional(true)
- {
- }
+ ArgumentListNode* toArgumentList(JSGlobalData*) const;
- virtual ~ArrayNode();
- virtual void releaseNodes(NodeReleaser&);
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ virtual bool isSimpleArray() const ;
- private:
- RefPtr<ElementNode> m_element;
+ ElementNode* m_element;
int m_elision;
bool m_optional;
};
- class PropertyNode : public ParserRefCounted {
+ class PropertyNode : public ParserArenaDeletable {
public:
enum Type { Constant, Getter, Setter };
- PropertyNode(JSGlobalData* globalData, const Identifier& name, ExpressionNode* assign, Type type) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_name(name)
- , m_assign(assign)
- , m_type(type)
- {
- }
-
- virtual ~PropertyNode();
- virtual void releaseNodes(NodeReleaser&);
+ PropertyNode(JSGlobalData*, const Identifier& name, ExpressionNode* value, Type);
const Identifier& name() const { return m_name; }
private:
friend class PropertyListNode;
Identifier m_name;
- RefPtr<ExpressionNode> m_assign;
+ ExpressionNode* m_assign;
Type m_type;
};
class PropertyListNode : public Node {
public:
- PropertyListNode(JSGlobalData* globalData, PropertyNode* node) JSC_FAST_CALL
- : Node(globalData)
- , m_node(node)
- {
- }
+ PropertyListNode(JSGlobalData*, PropertyNode*);
+ PropertyListNode(JSGlobalData*, PropertyNode*, PropertyListNode*);
- PropertyListNode(JSGlobalData* globalData, PropertyNode* node, PropertyListNode* list) JSC_FAST_CALL
- : Node(globalData)
- , m_node(node)
- {
- list->m_next = this;
- }
-
- virtual ~PropertyListNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
private:
- RefPtr<PropertyNode> m_node;
- RefPtr<PropertyListNode> m_next;
+ PropertyNode* m_node;
+ PropertyListNode* m_next;
};
class ObjectLiteralNode : public ExpressionNode {
public:
- ObjectLiteralNode(JSGlobalData* globalData) JSC_FAST_CALL
- : ExpressionNode(globalData)
- {
- }
-
- ObjectLiteralNode(JSGlobalData* globalData, PropertyListNode* list) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_list(list)
- {
- }
-
- virtual ~ObjectLiteralNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ ObjectLiteralNode(JSGlobalData*);
+ ObjectLiteralNode(JSGlobalData*, PropertyListNode*);
private:
- RefPtr<PropertyListNode> m_list;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ PropertyListNode* m_list;
};
class BracketAccessorNode : public ExpressionNode, public ThrowableExpressionData {
public:
- BracketAccessorNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, bool subscriptHasAssignments) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_base(base)
- , m_subscript(subscript)
- , m_subscriptHasAssignments(subscriptHasAssignments)
- {
- }
+ BracketAccessorNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, bool subscriptHasAssignments);
- virtual ~BracketAccessorNode();
- virtual void releaseNodes(NodeReleaser&);
+ ExpressionNode* base() const { return m_base; }
+ ExpressionNode* subscript() const { return m_subscript; }
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- virtual bool isLocation() const JSC_FAST_CALL { return true; }
- virtual bool isBracketAccessorNode() const JSC_FAST_CALL { return true; }
- ExpressionNode* base() JSC_FAST_CALL { return m_base.get(); }
- ExpressionNode* subscript() JSC_FAST_CALL { return m_subscript.get(); }
+ virtual bool isLocation() const { return true; }
+ virtual bool isBracketAccessorNode() const { return true; }
- private:
- RefPtr<ExpressionNode> m_base;
- RefPtr<ExpressionNode> m_subscript;
+ ExpressionNode* m_base;
+ ExpressionNode* m_subscript;
bool m_subscriptHasAssignments;
};
class DotAccessorNode : public ExpressionNode, public ThrowableExpressionData {
public:
- DotAccessorNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_base(base)
- , m_ident(ident)
- {
- }
+ DotAccessorNode(JSGlobalData*, ExpressionNode* base, const Identifier&);
- virtual ~DotAccessorNode();
- virtual void releaseNodes(NodeReleaser&);
+ ExpressionNode* base() const { return m_base; }
+ const Identifier& identifier() const { return m_ident; }
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- virtual bool isLocation() const JSC_FAST_CALL { return true; }
- virtual bool isDotAccessorNode() const JSC_FAST_CALL { return true; }
- ExpressionNode* base() const JSC_FAST_CALL { return m_base.get(); }
- const Identifier& identifier() const JSC_FAST_CALL { return m_ident; }
+ virtual bool isLocation() const { return true; }
+ virtual bool isDotAccessorNode() const { return true; }
- private:
- RefPtr<ExpressionNode> m_base;
+ ExpressionNode* m_base;
Identifier m_ident;
};
class ArgumentListNode : public Node {
public:
- ArgumentListNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : Node(globalData)
- , m_expr(expr)
- {
- }
-
- ArgumentListNode(JSGlobalData* globalData, ArgumentListNode* listNode, ExpressionNode* expr) JSC_FAST_CALL
- : Node(globalData)
- , m_expr(expr)
- {
- listNode->m_next = this;
- }
-
- virtual ~ArgumentListNode();
- virtual void releaseNodes(NodeReleaser&);
+ ArgumentListNode(JSGlobalData*, ExpressionNode*);
+ ArgumentListNode(JSGlobalData*, ArgumentListNode*, ExpressionNode*);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ ArgumentListNode* m_next;
+ ExpressionNode* m_expr;
- RefPtr<ArgumentListNode> m_next;
- RefPtr<ExpressionNode> m_expr;
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
};
- class ArgumentsNode : public ParserRefCounted {
+ class ArgumentsNode : public ParserArenaDeletable {
public:
- ArgumentsNode(JSGlobalData* globalData) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- {
- }
-
- ArgumentsNode(JSGlobalData* globalData, ArgumentListNode* listNode) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_listNode(listNode)
- {
- }
-
- virtual ~ArgumentsNode();
- virtual void releaseNodes(NodeReleaser&);
+ ArgumentsNode(JSGlobalData*);
+ ArgumentsNode(JSGlobalData*, ArgumentListNode*);
- RefPtr<ArgumentListNode> m_listNode;
+ ArgumentListNode* m_listNode;
};
class NewExprNode : public ExpressionNode, public ThrowableExpressionData {
public:
- NewExprNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_expr(expr)
- {
- }
-
- NewExprNode(JSGlobalData* globalData, ExpressionNode* expr, ArgumentsNode* args) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_expr(expr)
- , m_args(args)
- {
- }
-
- virtual ~NewExprNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ NewExprNode(JSGlobalData*, ExpressionNode*);
+ NewExprNode(JSGlobalData*, ExpressionNode*, ArgumentsNode*);
private:
- RefPtr<ExpressionNode> m_expr;
- RefPtr<ArgumentsNode> m_args;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
+ ArgumentsNode* m_args;
};
class EvalFunctionCallNode : public ExpressionNode, public ThrowableExpressionData {
public:
- EvalFunctionCallNode(JSGlobalData* globalData, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_args(args)
- {
- }
-
- virtual ~EvalFunctionCallNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ EvalFunctionCallNode(JSGlobalData*, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ArgumentsNode> m_args;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ArgumentsNode* m_args;
};
class FunctionCallValueNode : public ExpressionNode, public ThrowableExpressionData {
public:
- FunctionCallValueNode(JSGlobalData* globalData, ExpressionNode* expr, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_expr(expr)
- , m_args(args)
- {
- }
-
- virtual ~FunctionCallValueNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ FunctionCallValueNode(JSGlobalData*, ExpressionNode*, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_expr;
- RefPtr<ArgumentsNode> m_args;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
+ ArgumentsNode* m_args;
};
class FunctionCallResolveNode : public ExpressionNode, public ThrowableExpressionData {
public:
- FunctionCallResolveNode(JSGlobalData* globalData, const Identifier& ident, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_ident(ident)
- , m_args(args)
- {
- }
-
- virtual ~FunctionCallResolveNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ FunctionCallResolveNode(JSGlobalData*, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Identifier m_ident;
- RefPtr<ArgumentsNode> m_args;
+ ArgumentsNode* m_args;
size_t m_index; // Used by LocalVarFunctionCallNode.
size_t m_scopeDepth; // Used by ScopedVarFunctionCallNode and NonLocalVarFunctionCallNode
};
class FunctionCallBracketNode : public ExpressionNode, public ThrowableSubExpressionData {
public:
- FunctionCallBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableSubExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_subscript(subscript)
- , m_args(args)
- {
- }
-
- virtual ~FunctionCallBracketNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ FunctionCallBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
- RefPtr<ExpressionNode> m_subscript;
- RefPtr<ArgumentsNode> m_args;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
+ ExpressionNode* m_subscript;
+ ArgumentsNode* m_args;
};
class FunctionCallDotNode : public ExpressionNode, public ThrowableSubExpressionData {
public:
- FunctionCallDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, ArgumentsNode* args, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableSubExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_ident(ident)
- , m_args(args)
- {
- }
+ FunctionCallDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
- virtual ~FunctionCallDotNode();
- virtual void releaseNodes(NodeReleaser&);
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ protected:
+ ExpressionNode* m_base;
+ const Identifier m_ident;
+ ArgumentsNode* m_args;
+ };
+
+ class CallFunctionCallDotNode : public FunctionCallDotNode {
+ public:
+ CallFunctionCallDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
- Identifier m_ident;
- RefPtr<ArgumentsNode> m_args;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+ };
+
+ class ApplyFunctionCallDotNode : public FunctionCallDotNode {
+ public:
+ ApplyFunctionCallDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);
+
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
};
class PrePostResolveNode : public ExpressionNode, public ThrowableExpressionData {
public:
- PrePostResolveNode(JSGlobalData* globalData, const Identifier& ident, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData, ResultType::constNumber()) // could be reusable for pre?
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_ident(ident)
- {
- }
+ PrePostResolveNode(JSGlobalData*, const Identifier&, unsigned divot, unsigned startOffset, unsigned endOffset);
protected:
- Identifier m_ident;
+ const Identifier m_ident;
};
class PostfixResolveNode : public PrePostResolveNode {
public:
- PostfixResolveNode(JSGlobalData* globalData, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : PrePostResolveNode(globalData, ident, divot, startOffset, endOffset)
- , m_operator(oper)
- {
- }
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ PostfixResolveNode(JSGlobalData*, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Operator m_operator;
};
class PostfixBracketNode : public ExpressionNode, public ThrowableSubExpressionData {
public:
- PostfixBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableSubExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_subscript(subscript)
- , m_operator(oper)
- {
- }
-
- virtual ~PostfixBracketNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ PostfixBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
- RefPtr<ExpressionNode> m_subscript;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
+ ExpressionNode* m_subscript;
Operator m_operator;
};
class PostfixDotNode : public ExpressionNode, public ThrowableSubExpressionData {
public:
- PostfixDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableSubExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_ident(ident)
- , m_operator(oper)
- {
- }
-
- virtual ~PostfixDotNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ PostfixDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
Identifier m_ident;
Operator m_operator;
};
class PostfixErrorNode : public ExpressionNode, public ThrowableSubExpressionData {
public:
- PostfixErrorNode(JSGlobalData* globalData, ExpressionNode* expr, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableSubExpressionData(divot, startOffset, endOffset)
- , m_expr(expr)
- , m_operator(oper)
- {
- }
-
- virtual ~PostfixErrorNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ PostfixErrorNode(JSGlobalData*, ExpressionNode*, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_expr;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
Operator m_operator;
};
class DeleteResolveNode : public ExpressionNode, public ThrowableExpressionData {
public:
- DeleteResolveNode(JSGlobalData* globalData, const Identifier& ident, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_ident(ident)
- {
- }
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ DeleteResolveNode(JSGlobalData*, const Identifier&, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Identifier m_ident;
};
class DeleteBracketNode : public ExpressionNode, public ThrowableExpressionData {
public:
- DeleteBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_subscript(subscript)
- {
- }
-
- virtual ~DeleteBracketNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ DeleteBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
- RefPtr<ExpressionNode> m_subscript;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
+ ExpressionNode* m_subscript;
};
class DeleteDotNode : public ExpressionNode, public ThrowableExpressionData {
public:
- DeleteDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_ident(ident)
- {
- }
-
- virtual ~DeleteDotNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ DeleteDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
Identifier m_ident;
};
class DeleteValueNode : public ExpressionNode {
public:
- DeleteValueNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_expr(expr)
- {
- }
-
- virtual ~DeleteValueNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ DeleteValueNode(JSGlobalData*, ExpressionNode*);
private:
- RefPtr<ExpressionNode> m_expr;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
};
class VoidNode : public ExpressionNode {
public:
- VoidNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_expr(expr)
- {
- }
-
- virtual ~VoidNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ VoidNode(JSGlobalData*, ExpressionNode*);
private:
- RefPtr<ExpressionNode> m_expr;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
};
class TypeOfResolveNode : public ExpressionNode {
public:
- TypeOfResolveNode(JSGlobalData* globalData, const Identifier& ident) JSC_FAST_CALL
- : ExpressionNode(globalData, ResultType::string())
- , m_ident(ident)
- {
- }
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ TypeOfResolveNode(JSGlobalData*, const Identifier&);
- const Identifier& identifier() const JSC_FAST_CALL { return m_ident; }
+ const Identifier& identifier() const { return m_ident; }
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Identifier m_ident;
};
class TypeOfValueNode : public ExpressionNode {
public:
- TypeOfValueNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : ExpressionNode(globalData, ResultType::string())
- , m_expr(expr)
- {
- }
-
- virtual ~TypeOfValueNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ TypeOfValueNode(JSGlobalData*, ExpressionNode*);
private:
- RefPtr<ExpressionNode> m_expr;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
};
class PrefixResolveNode : public PrePostResolveNode {
public:
- PrefixResolveNode(JSGlobalData* globalData, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : PrePostResolveNode(globalData, ident, divot, startOffset, endOffset)
- , m_operator(oper)
- {
- }
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ PrefixResolveNode(JSGlobalData*, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Operator m_operator;
};
class PrefixBracketNode : public ExpressionNode, public ThrowablePrefixedSubExpressionData {
public:
- PrefixBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowablePrefixedSubExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_subscript(subscript)
- , m_operator(oper)
- {
- }
-
- virtual ~PrefixBracketNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ PrefixBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
- RefPtr<ExpressionNode> m_subscript;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
+ ExpressionNode* m_subscript;
Operator m_operator;
};
class PrefixDotNode : public ExpressionNode, public ThrowablePrefixedSubExpressionData {
public:
- PrefixDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowablePrefixedSubExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_ident(ident)
- , m_operator(oper)
- {
- }
-
- virtual ~PrefixDotNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ PrefixDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
Identifier m_ident;
Operator m_operator;
};
class PrefixErrorNode : public ExpressionNode, public ThrowableExpressionData {
public:
- PrefixErrorNode(JSGlobalData* globalData, ExpressionNode* expr, Operator oper, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_expr(expr)
- , m_operator(oper)
- {
- }
-
- virtual ~PrefixErrorNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ PrefixErrorNode(JSGlobalData*, ExpressionNode*, Operator, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_expr;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
Operator m_operator;
};
class UnaryOpNode : public ExpressionNode {
public:
- UnaryOpNode(JSGlobalData* globalData, ExpressionNode* expr)
- : ExpressionNode(globalData)
- , m_expr(expr)
- {
- }
+ UnaryOpNode(JSGlobalData*, ResultType, ExpressionNode*, OpcodeID);
- UnaryOpNode(JSGlobalData* globalData, ResultType type, ExpressionNode* expr)
- : ExpressionNode(globalData, type)
- , m_expr(expr)
- {
- }
+ protected:
+ ExpressionNode* expr() { return m_expr; }
- virtual ~UnaryOpNode();
- virtual void releaseNodes(NodeReleaser&);
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
- virtual OpcodeID opcodeID() const JSC_FAST_CALL = 0;
+ OpcodeID opcodeID() const { return m_opcodeID; }
- protected:
- RefPtr<ExpressionNode> m_expr;
+ ExpressionNode* m_expr;
+ OpcodeID m_opcodeID;
};
class UnaryPlusNode : public UnaryOpNode {
public:
- UnaryPlusNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : UnaryOpNode(globalData, ResultType::constNumber(), expr)
- {
- }
+ UnaryPlusNode(JSGlobalData*, ExpressionNode*);
- virtual ExpressionNode* stripUnaryPlus() { return m_expr.get(); }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_to_jsnumber; }
+ private:
+ virtual ExpressionNode* stripUnaryPlus() { return expr(); }
};
class NegateNode : public UnaryOpNode {
public:
- NegateNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : UnaryOpNode(globalData, ResultType::reusableNumber(), expr)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_negate; }
+ NegateNode(JSGlobalData*, ExpressionNode*);
};
class BitwiseNotNode : public UnaryOpNode {
public:
- BitwiseNotNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : UnaryOpNode(globalData, ResultType::reusableNumber(), expr)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_bitnot; }
+ BitwiseNotNode(JSGlobalData*, ExpressionNode*);
};
class LogicalNotNode : public UnaryOpNode {
public:
- LogicalNotNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : UnaryOpNode(globalData, ResultType::boolean(), expr)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_not; }
+ LogicalNotNode(JSGlobalData*, ExpressionNode*);
};
class BinaryOpNode : public ExpressionNode {
public:
- BinaryOpNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
- : ExpressionNode(globalData)
- , m_expr1(expr1)
- , m_expr2(expr2)
- , m_rightHasAssignments(rightHasAssignments)
- {
- }
+ BinaryOpNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
+ BinaryOpNode(JSGlobalData*, ResultType, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
- BinaryOpNode(JSGlobalData* globalData, ResultType type, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
- : ExpressionNode(globalData, type)
- , m_expr1(expr1)
- , m_expr2(expr2)
- , m_rightHasAssignments(rightHasAssignments)
- {
- }
+ RegisterID* emitStrcat(BytecodeGenerator& generator, RegisterID* dst, RegisterID* lhs = 0, ReadModifyResolveNode* emitExpressionInfoForMe = 0);
- virtual ~BinaryOpNode();
- virtual void releaseNodes(NodeReleaser&);
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
- virtual OpcodeID opcodeID() const JSC_FAST_CALL = 0;
+ protected:
+ OpcodeID opcodeID() const { return m_opcodeID; }
protected:
- RefPtr<ExpressionNode> m_expr1;
- RefPtr<ExpressionNode> m_expr2;
+ ExpressionNode* m_expr1;
+ ExpressionNode* m_expr2;
+ private:
+ OpcodeID m_opcodeID;
+ protected:
bool m_rightHasAssignments;
};
class ReverseBinaryOpNode : public BinaryOpNode {
public:
- ReverseBinaryOpNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
- : BinaryOpNode(globalData, expr1, expr2, rightHasAssignments)
- {
- }
+ ReverseBinaryOpNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
+ ReverseBinaryOpNode(JSGlobalData*, ResultType, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
- ReverseBinaryOpNode(JSGlobalData* globalData, ResultType type, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
- : BinaryOpNode(globalData, type, expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
};
class MultNode : public BinaryOpNode {
public:
- MultNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_mul; }
+ MultNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class DivNode : public BinaryOpNode {
public:
- DivNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_div; }
+ DivNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class ModNode : public BinaryOpNode {
public:
- ModNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_mod; }
+ ModNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class AddNode : public BinaryOpNode {
public:
- AddNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::forAdd(expr1->resultDescriptor(), expr2->resultDescriptor()), expr1, expr2, rightHasAssignments)
- {
- }
+ AddNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_add; }
+ virtual bool isAdd() const { return true; }
};
class SubNode : public BinaryOpNode {
public:
- SubNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_sub; }
+ SubNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class LeftShiftNode : public BinaryOpNode {
public:
- LeftShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_lshift; }
+ LeftShiftNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class RightShiftNode : public BinaryOpNode {
public:
- RightShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_rshift; }
+ RightShiftNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class UnsignedRightShiftNode : public BinaryOpNode {
public:
- UnsignedRightShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_urshift; }
+ UnsignedRightShiftNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class LessNode : public BinaryOpNode {
public:
- LessNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_less; }
+ LessNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class GreaterNode : public ReverseBinaryOpNode {
public:
- GreaterNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : ReverseBinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_less; }
+ GreaterNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class LessEqNode : public BinaryOpNode {
public:
- LessEqNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_lesseq; }
+ LessEqNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class GreaterEqNode : public ReverseBinaryOpNode {
public:
- GreaterEqNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : ReverseBinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_lesseq; }
+ GreaterEqNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class ThrowableBinaryOpNode : public BinaryOpNode, public ThrowableExpressionData {
public:
- ThrowableBinaryOpNode(JSGlobalData* globalData, ResultType type, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, type, expr1, expr2, rightHasAssignments)
- {
- }
- ThrowableBinaryOpNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, expr1, expr2, rightHasAssignments)
- {
- }
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ ThrowableBinaryOpNode(JSGlobalData*, ResultType, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
+ ThrowableBinaryOpNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, OpcodeID, bool rightHasAssignments);
+
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
};
class InstanceOfNode : public ThrowableBinaryOpNode {
public:
- InstanceOfNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : ThrowableBinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_instanceof; }
+ InstanceOfNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
};
class InNode : public ThrowableBinaryOpNode {
public:
- InNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : ThrowableBinaryOpNode(globalData, expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_in; }
+ InNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class EqualNode : public BinaryOpNode {
public:
- EqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
- {
- }
+ EqualNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_eq; }
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
};
class NotEqualNode : public BinaryOpNode {
public:
- NotEqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_neq; }
+ NotEqualNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class StrictEqualNode : public BinaryOpNode {
public:
- StrictEqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
- {
- }
+ StrictEqualNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_stricteq; }
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
};
class NotStrictEqualNode : public BinaryOpNode {
public:
- NotStrictEqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_nstricteq; }
+ NotStrictEqualNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class BitAndNode : public BinaryOpNode {
public:
- BitAndNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_bitand; }
+ BitAndNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class BitOrNode : public BinaryOpNode {
public:
- BitOrNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_bitor; }
+ BitOrNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
class BitXOrNode : public BinaryOpNode {
public:
- BitXOrNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
- : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
- {
- }
-
- virtual OpcodeID opcodeID() const JSC_FAST_CALL { return op_bitxor; }
+ BitXOrNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments);
};
- /**
- * m_expr1 && m_expr2, m_expr1 || m_expr2
- */
+ // m_expr1 && m_expr2, m_expr1 || m_expr2
class LogicalOpNode : public ExpressionNode {
public:
- LogicalOpNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, LogicalOperator oper) JSC_FAST_CALL
- : ExpressionNode(globalData, ResultType::boolean())
- , m_expr1(expr1)
- , m_expr2(expr2)
- , m_operator(oper)
- {
- }
-
- virtual ~LogicalOpNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ LogicalOpNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, LogicalOperator);
private:
- RefPtr<ExpressionNode> m_expr1;
- RefPtr<ExpressionNode> m_expr2;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr1;
+ ExpressionNode* m_expr2;
LogicalOperator m_operator;
};
- /**
- * The ternary operator, "m_logical ? m_expr1 : m_expr2"
- */
+ // The ternary operator, "m_logical ? m_expr1 : m_expr2"
class ConditionalNode : public ExpressionNode {
public:
- ConditionalNode(JSGlobalData* globalData, ExpressionNode* logical, ExpressionNode* expr1, ExpressionNode* expr2) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_logical(logical)
- , m_expr1(expr1)
- , m_expr2(expr2)
- {
- }
-
- virtual ~ConditionalNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ ConditionalNode(JSGlobalData*, ExpressionNode* logical, ExpressionNode* expr1, ExpressionNode* expr2);
private:
- RefPtr<ExpressionNode> m_logical;
- RefPtr<ExpressionNode> m_expr1;
- RefPtr<ExpressionNode> m_expr2;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_logical;
+ ExpressionNode* m_expr1;
+ ExpressionNode* m_expr2;
};
class ReadModifyResolveNode : public ExpressionNode, public ThrowableExpressionData {
public:
- ReadModifyResolveNode(JSGlobalData* globalData, const Identifier& ident, Operator oper, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_ident(ident)
- , m_right(right)
- , m_operator(oper)
- , m_rightHasAssignments(rightHasAssignments)
- {
- }
-
- virtual ~ReadModifyResolveNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ ReadModifyResolveNode(JSGlobalData*, const Identifier&, Operator, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Identifier m_ident;
- RefPtr<ExpressionNode> m_right;
+ ExpressionNode* m_right;
size_t m_index; // Used by ReadModifyLocalVarNode.
- Operator m_operator : 31;
- bool m_rightHasAssignments : 1;
+ Operator m_operator;
+ bool m_rightHasAssignments;
};
class AssignResolveNode : public ExpressionNode, public ThrowableExpressionData {
public:
- AssignResolveNode(JSGlobalData* globalData, const Identifier& ident, ExpressionNode* right, bool rightHasAssignments) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_ident(ident)
- , m_right(right)
- , m_rightHasAssignments(rightHasAssignments)
- {
- }
-
- virtual ~AssignResolveNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ AssignResolveNode(JSGlobalData*, const Identifier&, ExpressionNode* right, bool rightHasAssignments);
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Identifier m_ident;
- RefPtr<ExpressionNode> m_right;
+ ExpressionNode* m_right;
size_t m_index; // Used by ReadModifyLocalVarNode.
bool m_rightHasAssignments;
};
class ReadModifyBracketNode : public ExpressionNode, public ThrowableSubExpressionData {
public:
- ReadModifyBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, Operator oper, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableSubExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_subscript(subscript)
- , m_right(right)
- , m_operator(oper)
- , m_subscriptHasAssignments(subscriptHasAssignments)
- , m_rightHasAssignments(rightHasAssignments)
- {
- }
-
- virtual ~ReadModifyBracketNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ ReadModifyBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, Operator, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
- RefPtr<ExpressionNode> m_subscript;
- RefPtr<ExpressionNode> m_right;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
+ ExpressionNode* m_subscript;
+ ExpressionNode* m_right;
Operator m_operator : 30;
bool m_subscriptHasAssignments : 1;
bool m_rightHasAssignments : 1;
@@ -1524,168 +1037,105 @@ namespace JSC {
class AssignBracketNode : public ExpressionNode, public ThrowableExpressionData {
public:
- AssignBracketNode(JSGlobalData* globalData, ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_subscript(subscript)
- , m_right(right)
- , m_subscriptHasAssignments(subscriptHasAssignments)
- , m_rightHasAssignments(rightHasAssignments)
- {
- }
-
- virtual ~AssignBracketNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ AssignBracketNode(JSGlobalData*, ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
- RefPtr<ExpressionNode> m_subscript;
- RefPtr<ExpressionNode> m_right;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
+ ExpressionNode* m_subscript;
+ ExpressionNode* m_right;
bool m_subscriptHasAssignments : 1;
bool m_rightHasAssignments : 1;
};
class AssignDotNode : public ExpressionNode, public ThrowableExpressionData {
public:
- AssignDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_ident(ident)
- , m_right(right)
- , m_rightHasAssignments(rightHasAssignments)
- {
- }
-
- virtual ~AssignDotNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ AssignDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
Identifier m_ident;
- RefPtr<ExpressionNode> m_right;
+ ExpressionNode* m_right;
bool m_rightHasAssignments;
};
class ReadModifyDotNode : public ExpressionNode, public ThrowableSubExpressionData {
public:
- ReadModifyDotNode(JSGlobalData* globalData, ExpressionNode* base, const Identifier& ident, Operator oper, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableSubExpressionData(divot, startOffset, endOffset)
- , m_base(base)
- , m_ident(ident)
- , m_right(right)
- , m_operator(oper)
- , m_rightHasAssignments(rightHasAssignments)
- {
- }
-
- virtual ~ReadModifyDotNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ ReadModifyDotNode(JSGlobalData*, ExpressionNode* base, const Identifier&, Operator, ExpressionNode* right, bool rightHasAssignments, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_base;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_base;
Identifier m_ident;
- RefPtr<ExpressionNode> m_right;
+ ExpressionNode* m_right;
Operator m_operator : 31;
bool m_rightHasAssignments : 1;
};
class AssignErrorNode : public ExpressionNode, public ThrowableExpressionData {
public:
- AssignErrorNode(JSGlobalData* globalData, ExpressionNode* left, Operator oper, ExpressionNode* right, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , ThrowableExpressionData(divot, startOffset, endOffset)
- , m_left(left)
- , m_operator(oper)
- , m_right(right)
- {
- }
-
- virtual ~AssignErrorNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ AssignErrorNode(JSGlobalData*, ExpressionNode* left, Operator, ExpressionNode* right, unsigned divot, unsigned startOffset, unsigned endOffset);
private:
- RefPtr<ExpressionNode> m_left;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_left;
Operator m_operator;
- RefPtr<ExpressionNode> m_right;
+ ExpressionNode* m_right;
};
class CommaNode : public ExpressionNode {
public:
- CommaNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_expr1(expr1)
- , m_expr2(expr2)
- {
- }
-
- virtual ~CommaNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ CommaNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2);
private:
- RefPtr<ExpressionNode> m_expr1;
- RefPtr<ExpressionNode> m_expr2;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr1;
+ ExpressionNode* m_expr2;
};
- class VarDeclCommaNode : public CommaNode {
- public:
- VarDeclCommaNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2) JSC_FAST_CALL
- : CommaNode(globalData, expr1, expr2)
- {
- }
- };
-
class ConstDeclNode : public ExpressionNode {
public:
- ConstDeclNode(JSGlobalData* globalData, const Identifier& ident, ExpressionNode* in) JSC_FAST_CALL;
+ ConstDeclNode(JSGlobalData*, const Identifier&, ExpressionNode*);
+
+ bool hasInitializer() const { return m_init; }
+ const Identifier& ident() { return m_ident; }
- virtual ~ConstDeclNode();
- virtual void releaseNodes(NodeReleaser&);
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+ virtual RegisterID* emitCodeSingle(BytecodeGenerator&);
Identifier m_ident;
- RefPtr<ConstDeclNode> m_next;
- RefPtr<ExpressionNode> m_init;
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
- virtual RegisterID* emitCodeSingle(BytecodeGenerator&) JSC_FAST_CALL;
- };
- class ConstStatementNode : public StatementNode {
public:
- ConstStatementNode(JSGlobalData* globalData, ConstDeclNode* next) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_next(next)
- {
- }
+ ConstDeclNode* m_next;
- virtual ~ConstStatementNode();
- virtual void releaseNodes(NodeReleaser&);
+ private:
+ ExpressionNode* m_init;
+ };
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ class ConstStatementNode : public StatementNode {
+ public:
+ ConstStatementNode(JSGlobalData*, ConstDeclNode* next);
private:
- RefPtr<ConstDeclNode> m_next;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ConstDeclNode* m_next;
};
- typedef Vector<RefPtr<StatementNode> > StatementVector;
+ typedef Vector<StatementNode*> StatementVector;
- class SourceElements : public ParserRefCounted {
+ class SourceElements : public ParserArenaDeletable {
public:
- SourceElements(JSGlobalData* globalData) : ParserRefCounted(globalData) {}
+ SourceElements(JSGlobalData*);
- void append(PassRefPtr<StatementNode>);
+ void append(StatementNode*);
void releaseContentsIntoVector(StatementVector& destination)
{
ASSERT(destination.isEmpty());
@@ -1699,399 +1149,262 @@ namespace JSC {
class BlockNode : public StatementNode {
public:
- BlockNode(JSGlobalData*, SourceElements* children) JSC_FAST_CALL;
-
- virtual ~BlockNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ BlockNode(JSGlobalData*, SourceElements* children);
StatementVector& children() { return m_children; }
- virtual bool isBlock() const JSC_FAST_CALL { return true; }
-
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ virtual bool isBlock() const { return true; }
+
StatementVector m_children;
};
class EmptyStatementNode : public StatementNode {
public:
- EmptyStatementNode(JSGlobalData* globalData) JSC_FAST_CALL // debug
- : StatementNode(globalData)
- {
- }
+ EmptyStatementNode(JSGlobalData*);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- virtual bool isEmptyStatement() const JSC_FAST_CALL { return true; }
+ virtual bool isEmptyStatement() const { return true; }
};
class DebuggerStatementNode : public StatementNode {
public:
- DebuggerStatementNode(JSGlobalData* globalData) JSC_FAST_CALL
- : StatementNode(globalData)
- {
- }
+ DebuggerStatementNode(JSGlobalData*);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
};
class ExprStatementNode : public StatementNode {
public:
- ExprStatementNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_expr(expr)
- {
- }
+ ExprStatementNode(JSGlobalData*, ExpressionNode*);
- virtual bool isExprStatement() const JSC_FAST_CALL { return true; }
+ ExpressionNode* expr() const { return m_expr; }
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ private:
+ virtual bool isExprStatement() const { return true; }
- ExpressionNode* expr() const { return m_expr.get(); }
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- private:
- RefPtr<ExpressionNode> m_expr;
+ ExpressionNode* m_expr;
};
class VarStatementNode : public StatementNode {
public:
- VarStatementNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_expr(expr)
- {
- }
-
- virtual ~VarStatementNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ VarStatementNode(JSGlobalData*, ExpressionNode*);
private:
- RefPtr<ExpressionNode> m_expr;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
};
class IfNode : public StatementNode {
public:
- IfNode(JSGlobalData* globalData, ExpressionNode* condition, StatementNode* ifBlock) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_condition(condition)
- , m_ifBlock(ifBlock)
- {
- }
-
- virtual ~IfNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ IfNode(JSGlobalData*, ExpressionNode* condition, StatementNode* ifBlock);
protected:
- RefPtr<ExpressionNode> m_condition;
- RefPtr<StatementNode> m_ifBlock;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_condition;
+ StatementNode* m_ifBlock;
};
class IfElseNode : public IfNode {
public:
- IfElseNode(JSGlobalData* globalData, ExpressionNode* condition, StatementNode* ifBlock, StatementNode* elseBlock) JSC_FAST_CALL
- : IfNode(globalData, condition, ifBlock)
- , m_elseBlock(elseBlock)
- {
- }
-
- virtual ~IfElseNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ IfElseNode(JSGlobalData*, ExpressionNode* condition, StatementNode* ifBlock, StatementNode* elseBlock);
private:
- RefPtr<StatementNode> m_elseBlock;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ StatementNode* m_elseBlock;
};
class DoWhileNode : public StatementNode {
public:
- DoWhileNode(JSGlobalData* globalData, StatementNode* statement, ExpressionNode* expr) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_statement(statement)
- , m_expr(expr)
- {
- }
-
- virtual ~DoWhileNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
-
- virtual bool isLoop() const JSC_FAST_CALL { return true; }
+ DoWhileNode(JSGlobalData*, StatementNode* statement, ExpressionNode*);
private:
- RefPtr<StatementNode> m_statement;
- RefPtr<ExpressionNode> m_expr;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ StatementNode* m_statement;
+ ExpressionNode* m_expr;
};
class WhileNode : public StatementNode {
public:
- WhileNode(JSGlobalData* globalData, ExpressionNode* expr, StatementNode* statement) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_expr(expr)
- , m_statement(statement)
- {
- }
-
- virtual ~WhileNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
-
- virtual bool isLoop() const JSC_FAST_CALL { return true; }
+ WhileNode(JSGlobalData*, ExpressionNode*, StatementNode* statement);
private:
- RefPtr<ExpressionNode> m_expr;
- RefPtr<StatementNode> m_statement;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
+ StatementNode* m_statement;
};
class ForNode : public StatementNode {
public:
- ForNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode* statement, bool expr1WasVarDecl) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_expr1(expr1)
- , m_expr2(expr2)
- , m_expr3(expr3)
- , m_statement(statement)
- , m_expr1WasVarDecl(expr1 && expr1WasVarDecl)
- {
- ASSERT(statement);
- }
-
- virtual ~ForNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
-
- virtual bool isLoop() const JSC_FAST_CALL { return true; }
+ ForNode(JSGlobalData*, ExpressionNode* expr1, ExpressionNode* expr2, ExpressionNode* expr3, StatementNode* statement, bool expr1WasVarDecl);
private:
- RefPtr<ExpressionNode> m_expr1;
- RefPtr<ExpressionNode> m_expr2;
- RefPtr<ExpressionNode> m_expr3;
- RefPtr<StatementNode> m_statement;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr1;
+ ExpressionNode* m_expr2;
+ ExpressionNode* m_expr3;
+ StatementNode* m_statement;
bool m_expr1WasVarDecl;
};
class ForInNode : public StatementNode, public ThrowableExpressionData {
public:
- ForInNode(JSGlobalData*, ExpressionNode*, ExpressionNode*, StatementNode*) JSC_FAST_CALL;
- ForInNode(JSGlobalData*, const Identifier&, ExpressionNode*, ExpressionNode*, StatementNode*, int divot, int startOffset, int endOffset) JSC_FAST_CALL;
-
- virtual ~ForInNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
-
- virtual bool isLoop() const JSC_FAST_CALL { return true; }
+ ForInNode(JSGlobalData*, ExpressionNode*, ExpressionNode*, StatementNode*);
+ ForInNode(JSGlobalData*, const Identifier&, ExpressionNode*, ExpressionNode*, StatementNode*, int divot, int startOffset, int endOffset);
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Identifier m_ident;
- RefPtr<ExpressionNode> m_init;
- RefPtr<ExpressionNode> m_lexpr;
- RefPtr<ExpressionNode> m_expr;
- RefPtr<StatementNode> m_statement;
+ ExpressionNode* m_init;
+ ExpressionNode* m_lexpr;
+ ExpressionNode* m_expr;
+ StatementNode* m_statement;
bool m_identIsVarDecl;
};
class ContinueNode : public StatementNode, public ThrowableExpressionData {
public:
- ContinueNode(JSGlobalData* globalData) JSC_FAST_CALL
- : StatementNode(globalData)
- {
- }
-
- ContinueNode(JSGlobalData* globalData, const Identifier& ident) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_ident(ident)
- {
- }
+ ContinueNode(JSGlobalData*);
+ ContinueNode(JSGlobalData*, const Identifier&);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
-
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Identifier m_ident;
};
class BreakNode : public StatementNode, public ThrowableExpressionData {
public:
- BreakNode(JSGlobalData* globalData) JSC_FAST_CALL
- : StatementNode(globalData)
- {
- }
-
- BreakNode(JSGlobalData* globalData, const Identifier& ident) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_ident(ident)
- {
- }
+ BreakNode(JSGlobalData*);
+ BreakNode(JSGlobalData*, const Identifier&);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
-
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Identifier m_ident;
};
class ReturnNode : public StatementNode, public ThrowableExpressionData {
public:
- ReturnNode(JSGlobalData* globalData, ExpressionNode* value) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_value(value)
- {
- }
+ ReturnNode(JSGlobalData*, ExpressionNode* value);
- virtual ~ReturnNode();
- virtual void releaseNodes(NodeReleaser&);
+ private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
- virtual bool isReturnNode() const JSC_FAST_CALL { return true; }
+ virtual bool isReturnNode() const { return true; }
- private:
- RefPtr<ExpressionNode> m_value;
+ ExpressionNode* m_value;
};
class WithNode : public StatementNode {
public:
- WithNode(JSGlobalData* globalData, ExpressionNode* expr, StatementNode* statement, uint32_t divot, uint32_t expressionLength) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_expr(expr)
- , m_statement(statement)
- , m_divot(divot)
- , m_expressionLength(expressionLength)
- {
- }
-
- virtual ~WithNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ WithNode(JSGlobalData*, ExpressionNode*, StatementNode*, uint32_t divot, uint32_t expressionLength);
private:
- RefPtr<ExpressionNode> m_expr;
- RefPtr<StatementNode> m_statement;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
+ StatementNode* m_statement;
uint32_t m_divot;
uint32_t m_expressionLength;
};
class LabelNode : public StatementNode, public ThrowableExpressionData {
public:
- LabelNode(JSGlobalData* globalData, const Identifier& name, StatementNode* statement) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_name(name)
- , m_statement(statement)
- {
- }
-
- virtual ~LabelNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ LabelNode(JSGlobalData*, const Identifier& name, StatementNode*);
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
Identifier m_name;
- RefPtr<StatementNode> m_statement;
+ StatementNode* m_statement;
};
class ThrowNode : public StatementNode, public ThrowableExpressionData {
public:
- ThrowNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_expr(expr)
- {
- }
-
- virtual ~ThrowNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ ThrowNode(JSGlobalData*, ExpressionNode*);
private:
- RefPtr<ExpressionNode> m_expr;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
};
class TryNode : public StatementNode {
public:
- TryNode(JSGlobalData* globalData, StatementNode* tryBlock, const Identifier& exceptionIdent, bool catchHasEval, StatementNode* catchBlock, StatementNode* finallyBlock) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_tryBlock(tryBlock)
- , m_exceptionIdent(exceptionIdent)
- , m_catchBlock(catchBlock)
- , m_finallyBlock(finallyBlock)
- , m_catchHasEval(catchHasEval)
- {
- }
-
- virtual ~TryNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* dst = 0) JSC_FAST_CALL;
+ TryNode(JSGlobalData*, StatementNode* tryBlock, const Identifier& exceptionIdent, bool catchHasEval, StatementNode* catchBlock, StatementNode* finallyBlock);
private:
- RefPtr<StatementNode> m_tryBlock;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* dst = 0);
+
+ StatementNode* m_tryBlock;
Identifier m_exceptionIdent;
- RefPtr<StatementNode> m_catchBlock;
- RefPtr<StatementNode> m_finallyBlock;
+ StatementNode* m_catchBlock;
+ StatementNode* m_finallyBlock;
bool m_catchHasEval;
};
- class ParameterNode : public ParserRefCounted {
+ class ParameterNode : public ParserArenaDeletable {
public:
- ParameterNode(JSGlobalData* globalData, const Identifier& ident) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_ident(ident)
- {
- }
-
- ParameterNode(JSGlobalData* globalData, ParameterNode* l, const Identifier& ident) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_ident(ident)
- {
- l->m_next = this;
- }
+ ParameterNode(JSGlobalData*, const Identifier&);
+ ParameterNode(JSGlobalData*, ParameterNode*, const Identifier&);
- virtual ~ParameterNode();
- virtual void releaseNodes(NodeReleaser&);
-
- const Identifier& ident() const JSC_FAST_CALL { return m_ident; }
- ParameterNode* nextParam() const JSC_FAST_CALL { return m_next.get(); }
+ const Identifier& ident() const { return m_ident; }
+ ParameterNode* nextParam() const { return m_next; }
private:
Identifier m_ident;
- RefPtr<ParameterNode> m_next;
+ ParameterNode* m_next;
};
struct ScopeNodeData {
typedef DeclarationStacks::VarStack VarStack;
typedef DeclarationStacks::FunctionStack FunctionStack;
- ScopeNodeData(SourceElements*, VarStack*, FunctionStack*, int numConstants);
+ ScopeNodeData(ParserArena&, SourceElements*, VarStack*, FunctionStack*, int numConstants);
+ ParserArena m_arena;
VarStack m_varStack;
FunctionStack m_functionStack;
int m_numConstants;
StatementVector m_children;
+
+ void mark();
};
- class ScopeNode : public StatementNode {
+ class ScopeNode : public StatementNode, public ParserArenaRefCounted {
public:
typedef DeclarationStacks::VarStack VarStack;
typedef DeclarationStacks::FunctionStack FunctionStack;
- ScopeNode(JSGlobalData*) JSC_FAST_CALL;
- ScopeNode(JSGlobalData*, const SourceCode&, SourceElements*, VarStack*, FunctionStack*, CodeFeatures, int numConstants) JSC_FAST_CALL;
- virtual ~ScopeNode();
- virtual void releaseNodes(NodeReleaser&);
+ ScopeNode(JSGlobalData*);
+ ScopeNode(JSGlobalData*, const SourceCode&, SourceElements*, VarStack*, FunctionStack*, CodeFeatures, int numConstants);
- void adoptData(std::auto_ptr<ScopeNodeData> data) { m_data.adopt(data); }
+ void adoptData(std::auto_ptr<ScopeNodeData> data)
+ {
+ ASSERT(!data->m_arena.contains(this));
+ ASSERT(!m_data);
+ m_data.adopt(data);
+ }
ScopeNodeData* data() const { return m_data.get(); }
void destroyData() { m_data.clear(); }
const SourceCode& source() const { return m_source; }
- const UString& sourceURL() const JSC_FAST_CALL { return m_source.provider()->url(); }
+ const UString& sourceURL() const { return m_source.provider()->url(); }
intptr_t sourceID() const { return m_source.provider()->asID(); }
void setFeatures(CodeFeatures features) { m_features = features; }
@@ -2116,9 +1429,33 @@ namespace JSC {
return m_data->m_numConstants + 2;
}
+ virtual void mark() { }
+
+#if ENABLE(JIT)
+ JITCode& generatedJITCode()
+ {
+ ASSERT(m_jitCode);
+ return m_jitCode;
+ }
+
+ ExecutablePool* getExecutablePool()
+ {
+ return m_jitCode.getExecutablePool();
+ }
+
+ void setJITCode(const JITCode jitCode)
+ {
+ m_jitCode = jitCode;
+ }
+#endif
+
protected:
void setSource(const SourceCode& source) { m_source = source; }
+#if ENABLE(JIT)
+ JITCode m_jitCode;
+#endif
+
private:
OwnPtr<ScopeNodeData> m_data;
CodeFeatures m_features;
@@ -2127,42 +1464,70 @@ namespace JSC {
class ProgramNode : public ScopeNode {
public:
- static ProgramNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants) JSC_FAST_CALL;
+ static PassRefPtr<ProgramNode> create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
- ProgramCodeBlock& bytecode(ScopeChainNode* scopeChain) JSC_FAST_CALL
+ ProgramCodeBlock& bytecode(ScopeChainNode* scopeChain)
{
if (!m_code)
generateBytecode(scopeChain);
return *m_code;
}
+#if ENABLE(JIT)
+ JITCode& jitCode(ScopeChainNode* scopeChain)
+ {
+ if (!m_jitCode)
+ generateJITCode(scopeChain);
+ return m_jitCode;
+ }
+#endif
+
private:
- ProgramNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants) JSC_FAST_CALL;
+ ProgramNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
- void generateBytecode(ScopeChainNode*) JSC_FAST_CALL;
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ void generateBytecode(ScopeChainNode*);
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+#if ENABLE(JIT)
+ void generateJITCode(ScopeChainNode*);
+#endif
OwnPtr<ProgramCodeBlock> m_code;
};
class EvalNode : public ScopeNode {
public:
- static EvalNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants) JSC_FAST_CALL;
+ static PassRefPtr<EvalNode> create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
- EvalCodeBlock& bytecode(ScopeChainNode* scopeChain) JSC_FAST_CALL
+ EvalCodeBlock& bytecode(ScopeChainNode* scopeChain)
{
if (!m_code)
generateBytecode(scopeChain);
return *m_code;
}
- EvalCodeBlock& bytecodeForExceptionInfoReparse(ScopeChainNode*) JSC_FAST_CALL;
+ EvalCodeBlock& bytecodeForExceptionInfoReparse(ScopeChainNode*, CodeBlock*);
+
+ virtual void mark();
+
+#if ENABLE(JIT)
+ JITCode& jitCode(ScopeChainNode* scopeChain)
+ {
+ if (!m_jitCode)
+ generateJITCode(scopeChain);
+ return m_jitCode;
+ }
+#endif
private:
- EvalNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants) JSC_FAST_CALL;
+ EvalNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
- void generateBytecode(ScopeChainNode*) JSC_FAST_CALL;
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ void generateBytecode(ScopeChainNode*);
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+#if ENABLE(JIT)
+ void generateJITCode(ScopeChainNode*);
+#endif
OwnPtr<EvalCodeBlock> m_code;
};
@@ -2170,217 +1535,159 @@ namespace JSC {
class FunctionBodyNode : public ScopeNode {
friend class JIT;
public:
- static FunctionBodyNode* create(JSGlobalData*) JSC_FAST_CALL;
- static FunctionBodyNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants) JSC_FAST_CALL;
+#if ENABLE(JIT)
+ static PassRefPtr<FunctionBodyNode> createNativeThunk(JSGlobalData*);
+#endif
+ static FunctionBodyNode* create(JSGlobalData*);
+ static PassRefPtr<FunctionBodyNode> create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
virtual ~FunctionBodyNode();
- const Identifier* parameters() const JSC_FAST_CALL { return m_parameters; }
+ const Identifier* parameters() const { return m_parameters; }
size_t parameterCount() const { return m_parameterCount; }
- UString paramString() const JSC_FAST_CALL;
+ UString paramString() const ;
Identifier* copyParameters();
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
-
- CodeBlock& bytecode(ScopeChainNode* scopeChain) JSC_FAST_CALL
- {
- ASSERT(scopeChain);
- if (!m_code)
- generateBytecode(scopeChain);
- return *m_code;
- }
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
- CodeBlock& generatedBytecode() JSC_FAST_CALL
+ bool isGenerated() const
{
- ASSERT(m_code);
- return *m_code;
+ return m_code;
}
- bool isGenerated() JSC_FAST_CALL
+ bool isHostFunction() const
{
- return m_code;
+#if ENABLE(JIT)
+ return !!m_jitCode && !m_code;
+#else
+ return true;
+#endif
}
- void mark();
+ virtual void mark();
void finishParsing(const SourceCode&, ParameterNode*);
void finishParsing(Identifier* parameters, size_t parameterCount);
- UString toSourceString() const JSC_FAST_CALL { return source().toString(); }
+ UString toSourceString() const { return source().toString(); }
- // These objects are ref/deref'd a lot in the scope chain, so this is a faster ref/deref.
- // If the virtual machine changes so this doesn't happen as much we can change back.
- void ref()
+ CodeBlock& bytecodeForExceptionInfoReparse(ScopeChainNode*, CodeBlock*);
+#if ENABLE(JIT)
+ JITCode& jitCode(ScopeChainNode* scopeChain)
{
- if (++m_refCount == 1)
- ScopeNode::ref();
+ if (!m_jitCode)
+ generateJITCode(scopeChain);
+ return m_jitCode;
}
- void deref()
+#endif
+
+ CodeBlock& bytecode(ScopeChainNode* scopeChain)
{
- ASSERT(m_refCount);
- if (!--m_refCount)
- ScopeNode::deref();
+ ASSERT(scopeChain);
+ if (!m_code)
+ generateBytecode(scopeChain);
+ return *m_code;
}
-
- CodeBlock& bytecodeForExceptionInfoReparse(ScopeChainNode* scopeChain) JSC_FAST_CALL;
-
+
+ CodeBlock& generatedBytecode()
+ {
+ ASSERT(m_code);
+ return *m_code;
+ }
+
private:
- FunctionBodyNode(JSGlobalData*) JSC_FAST_CALL;
- FunctionBodyNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants) JSC_FAST_CALL;
-
- void generateBytecode(ScopeChainNode*) JSC_FAST_CALL;
+ FunctionBodyNode(JSGlobalData*);
+ FunctionBodyNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants);
+ void generateBytecode(ScopeChainNode*);
+#if ENABLE(JIT)
+ void generateJITCode(ScopeChainNode*);
+#endif
Identifier* m_parameters;
size_t m_parameterCount;
OwnPtr<CodeBlock> m_code;
- unsigned m_refCount;
};
- class FuncExprNode : public ExpressionNode {
+ class FuncExprNode : public ExpressionNode, public ParserArenaRefCounted {
public:
- FuncExprNode(JSGlobalData* globalData, const Identifier& ident, FunctionBodyNode* body, const SourceCode& source, ParameterNode* parameter = 0) JSC_FAST_CALL
- : ExpressionNode(globalData)
- , m_ident(ident)
- , m_parameter(parameter)
- , m_body(body)
- {
- m_body->finishParsing(source, m_parameter.get());
- }
-
- virtual ~FuncExprNode();
- virtual void releaseNodes(NodeReleaser&);
+ FuncExprNode(JSGlobalData*, const Identifier&, FunctionBodyNode* body, const SourceCode& source, ParameterNode* parameter = 0);
- virtual bool isFuncExprNode() const JSC_FAST_CALL { return true; }
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
- JSFunction* makeFunction(ExecState*, ScopeChainNode*) JSC_FAST_CALL;
+ JSFunction* makeFunction(ExecState*, ScopeChainNode*);
FunctionBodyNode* body() { return m_body.get(); }
private:
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ virtual bool isFuncExprNode() const { return true; }
+
Identifier m_ident;
- RefPtr<ParameterNode> m_parameter;
RefPtr<FunctionBodyNode> m_body;
};
- class FuncDeclNode : public StatementNode {
+ class FuncDeclNode : public StatementNode, public ParserArenaRefCounted {
public:
- FuncDeclNode(JSGlobalData* globalData, const Identifier& ident, FunctionBodyNode* body, const SourceCode& source, ParameterNode* parameter = 0) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_ident(ident)
- , m_parameter(parameter)
- , m_body(body)
- {
- m_body->finishParsing(source, m_parameter.get());
- }
-
- virtual ~FuncDeclNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ FuncDeclNode(JSGlobalData*, const Identifier&, FunctionBodyNode*, const SourceCode&, ParameterNode* = 0);
- JSFunction* makeFunction(ExecState*, ScopeChainNode*) JSC_FAST_CALL;
+ JSFunction* makeFunction(ExecState*, ScopeChainNode*);
Identifier m_ident;
FunctionBodyNode* body() { return m_body.get(); }
private:
- RefPtr<ParameterNode> m_parameter;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
RefPtr<FunctionBodyNode> m_body;
};
- class CaseClauseNode : public ParserRefCounted {
+ class CaseClauseNode : public ParserArenaDeletable {
public:
- CaseClauseNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_expr(expr)
- {
- }
+ CaseClauseNode(JSGlobalData*, ExpressionNode*);
+ CaseClauseNode(JSGlobalData*, ExpressionNode*, SourceElements*);
- CaseClauseNode(JSGlobalData* globalData, ExpressionNode* expr, SourceElements* children) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_expr(expr)
- {
- if (children)
- children->releaseContentsIntoVector(m_children);
- }
-
- virtual ~CaseClauseNode();
- virtual void releaseNodes(NodeReleaser&);
-
- ExpressionNode* expr() const { return m_expr.get(); }
+ ExpressionNode* expr() const { return m_expr; }
StatementVector& children() { return m_children; }
private:
- RefPtr<ExpressionNode> m_expr;
+ ExpressionNode* m_expr;
StatementVector m_children;
};
- class ClauseListNode : public ParserRefCounted {
+ class ClauseListNode : public ParserArenaDeletable {
public:
- ClauseListNode(JSGlobalData* globalData, CaseClauseNode* clause) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_clause(clause)
- {
- }
-
- ClauseListNode(JSGlobalData* globalData, ClauseListNode* clauseList, CaseClauseNode* clause) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_clause(clause)
- {
- clauseList->m_next = this;
- }
-
- virtual ~ClauseListNode();
- virtual void releaseNodes(NodeReleaser&);
+ ClauseListNode(JSGlobalData*, CaseClauseNode*);
+ ClauseListNode(JSGlobalData*, ClauseListNode*, CaseClauseNode*);
- CaseClauseNode* getClause() const JSC_FAST_CALL { return m_clause.get(); }
- ClauseListNode* getNext() const JSC_FAST_CALL { return m_next.get(); }
+ CaseClauseNode* getClause() const { return m_clause; }
+ ClauseListNode* getNext() const { return m_next; }
private:
- RefPtr<CaseClauseNode> m_clause;
- RefPtr<ClauseListNode> m_next;
+ CaseClauseNode* m_clause;
+ ClauseListNode* m_next;
};
- class CaseBlockNode : public ParserRefCounted {
+ class CaseBlockNode : public ParserArenaDeletable {
public:
- CaseBlockNode(JSGlobalData* globalData, ClauseListNode* list1, CaseClauseNode* defaultClause, ClauseListNode* list2) JSC_FAST_CALL
- : ParserRefCounted(globalData)
- , m_list1(list1)
- , m_defaultClause(defaultClause)
- , m_list2(list2)
- {
- }
+ CaseBlockNode(JSGlobalData*, ClauseListNode* list1, CaseClauseNode* defaultClause, ClauseListNode* list2);
- virtual ~CaseBlockNode();
- virtual void releaseNodes(NodeReleaser&);
-
- RegisterID* emitBytecodeForBlock(BytecodeGenerator&, RegisterID* input, RegisterID* dst = 0) JSC_FAST_CALL;
+ RegisterID* emitBytecodeForBlock(BytecodeGenerator&, RegisterID* input, RegisterID* dst = 0);
private:
SwitchInfo::SwitchType tryOptimizedSwitch(Vector<ExpressionNode*, 8>& literalVector, int32_t& min_num, int32_t& max_num);
- RefPtr<ClauseListNode> m_list1;
- RefPtr<CaseClauseNode> m_defaultClause;
- RefPtr<ClauseListNode> m_list2;
+ ClauseListNode* m_list1;
+ CaseClauseNode* m_defaultClause;
+ ClauseListNode* m_list2;
};
class SwitchNode : public StatementNode {
public:
- SwitchNode(JSGlobalData* globalData, ExpressionNode* expr, CaseBlockNode* block) JSC_FAST_CALL
- : StatementNode(globalData)
- , m_expr(expr)
- , m_block(block)
- {
- }
-
- virtual ~SwitchNode();
- virtual void releaseNodes(NodeReleaser&);
-
- virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0) JSC_FAST_CALL;
+ SwitchNode(JSGlobalData*, ExpressionNode*, CaseBlockNode*);
private:
- RefPtr<ExpressionNode> m_expr;
- RefPtr<CaseBlockNode> m_block;
+ virtual RegisterID* emitBytecode(BytecodeGenerator&, RegisterID* = 0);
+
+ ExpressionNode* m_expr;
+ CaseBlockNode* m_block;
};
struct ElementList {
@@ -2415,4 +1722,4 @@ namespace JSC {
} // namespace JSC
-#endif // NODES_H_
+#endif // Nodes_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Parser.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/Parser.cpp
index 1b1e4d7..96f4ae6 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/Parser.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/Parser.cpp
@@ -31,13 +31,15 @@
using std::auto_ptr;
+#ifndef yyparse
extern int jscyyparse(void*);
+#endif
namespace JSC {
void Parser::parse(JSGlobalData* globalData, int* errLine, UString* errMsg)
{
- ASSERT(!m_sourceElements);
+ m_sourceElements = 0;
int defaultErrLine;
UString defaultErrMsg;
@@ -55,14 +57,13 @@ void Parser::parse(JSGlobalData* globalData, int* errLine, UString* errMsg)
int parseError = jscyyparse(globalData);
bool lexError = lexer.sawError();
+ int lineNumber = lexer.lineNumber();
lexer.clear();
- ParserRefCounted::deleteNewObjects(globalData);
-
if (parseError || lexError) {
- *errLine = lexer.lineNo();
+ *errLine = lineNumber;
*errMsg = "Parse error";
- m_sourceElements.clear();
+ m_sourceElements = 0;
}
}
@@ -75,23 +76,26 @@ void Parser::reparseInPlace(JSGlobalData* globalData, FunctionBodyNode* function
parse(globalData, 0, 0);
ASSERT(m_sourceElements);
- functionBodyNode->adoptData(std::auto_ptr<ScopeNodeData>(new ScopeNodeData(m_sourceElements.get(),
- m_varDeclarations ? &m_varDeclarations->data : 0,
- m_funcDeclarations ? &m_funcDeclarations->data : 0,
- m_numConstants)));
+ functionBodyNode->adoptData(std::auto_ptr<ScopeNodeData>(new ScopeNodeData(globalData->parser->arena(),
+ m_sourceElements,
+ m_varDeclarations ? &m_varDeclarations->data : 0,
+ m_funcDeclarations ? &m_funcDeclarations->data : 0,
+ m_numConstants)));
bool usesArguments = functionBodyNode->usesArguments();
functionBodyNode->setFeatures(m_features);
if (usesArguments && !functionBodyNode->usesArguments())
functionBodyNode->setUsesArguments();
+ ASSERT(globalData->parser->arena().isEmpty());
+
m_source = 0;
m_sourceElements = 0;
m_varDeclarations = 0;
m_funcDeclarations = 0;
}
-void Parser::didFinishParsing(SourceElements* sourceElements, ParserRefCountedData<DeclarationStacks::VarStack>* varStack,
- ParserRefCountedData<DeclarationStacks::FunctionStack>* funcStack, CodeFeatures features, int lastLine, int numConstants)
+void Parser::didFinishParsing(SourceElements* sourceElements, ParserArenaData<DeclarationStacks::VarStack>* varStack,
+ ParserArenaData<DeclarationStacks::FunctionStack>* funcStack, CodeFeatures features, int lastLine, int numConstants)
{
m_sourceElements = sourceElements;
m_varDeclarations = varStack;
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Parser.h b/src/3rdparty/webkit/JavaScriptCore/parser/Parser.h
index 6191ccb..6f4c2b7 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/Parser.h
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/Parser.h
@@ -23,9 +23,9 @@
#ifndef Parser_h
#define Parser_h
-#include "SourceProvider.h"
#include "Debugger.h"
#include "Nodes.h"
+#include "SourceProvider.h"
#include <wtf/Forward.h>
#include <wtf/Noncopyable.h>
#include <wtf/OwnPtr.h>
@@ -37,15 +37,7 @@ namespace JSC {
class ProgramNode;
class UString;
- template <typename T>
- struct ParserRefCountedData : ParserRefCounted {
- ParserRefCountedData(JSGlobalData* globalData)
- : ParserRefCounted(globalData)
- {
- }
-
- T data;
- };
+ template <typename T> struct ParserArenaData : ParserArenaDeletable { T data; };
class Parser : Noncopyable {
public:
@@ -53,16 +45,19 @@ namespace JSC {
template <class ParsedNode> PassRefPtr<ParsedNode> reparse(JSGlobalData*, ParsedNode*);
void reparseInPlace(JSGlobalData*, FunctionBodyNode*);
- void didFinishParsing(SourceElements*, ParserRefCountedData<DeclarationStacks::VarStack>*,
- ParserRefCountedData<DeclarationStacks::FunctionStack>*, CodeFeatures features, int lastLine, int numConstants);
+ void didFinishParsing(SourceElements*, ParserArenaData<DeclarationStacks::VarStack>*,
+ ParserArenaData<DeclarationStacks::FunctionStack>*, CodeFeatures features, int lastLine, int numConstants);
+
+ ParserArena& arena() { return m_arena; }
private:
void parse(JSGlobalData*, int* errLine, UString* errMsg);
+ ParserArena m_arena;
const SourceCode* m_source;
- RefPtr<SourceElements> m_sourceElements;
- RefPtr<ParserRefCountedData<DeclarationStacks::VarStack> > m_varDeclarations;
- RefPtr<ParserRefCountedData<DeclarationStacks::FunctionStack> > m_funcDeclarations;
+ SourceElements* m_sourceElements;
+ ParserArenaData<DeclarationStacks::VarStack>* m_varDeclarations;
+ ParserArenaData<DeclarationStacks::FunctionStack>* m_funcDeclarations;
CodeFeatures m_features;
int m_lastLine;
int m_numConstants;
@@ -75,7 +70,7 @@ namespace JSC {
RefPtr<ParsedNode> result;
if (m_sourceElements) {
result = ParsedNode::create(&exec->globalData(),
- m_sourceElements.get(),
+ m_sourceElements,
m_varDeclarations ? &m_varDeclarations->data : 0,
m_funcDeclarations ? &m_funcDeclarations->data : 0,
*m_source,
@@ -84,8 +79,9 @@ namespace JSC {
result->setLoc(m_source->firstLine(), m_lastLine);
}
+ m_arena.reset();
+
m_source = 0;
- m_sourceElements = 0;
m_varDeclarations = 0;
m_funcDeclarations = 0;
@@ -101,7 +97,7 @@ namespace JSC {
RefPtr<ParsedNode> result;
if (m_sourceElements) {
result = ParsedNode::create(globalData,
- m_sourceElements.get(),
+ m_sourceElements,
m_varDeclarations ? &m_varDeclarations->data : 0,
m_funcDeclarations ? &m_funcDeclarations->data : 0,
*m_source,
@@ -110,8 +106,9 @@ namespace JSC {
result->setLoc(m_source->firstLine(), m_lastLine);
}
+ m_arena.reset();
+
m_source = 0;
- m_sourceElements = 0;
m_varDeclarations = 0;
m_funcDeclarations = 0;
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/ParserArena.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/ParserArena.cpp
new file mode 100644
index 0000000..2617506
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/ParserArena.cpp
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ParserArena.h"
+
+#include "Nodes.h"
+
+namespace JSC {
+
+ParserArena::~ParserArena()
+{
+ deleteAllValues(m_deletableObjects);
+}
+
+bool ParserArena::contains(ParserArenaRefCounted* object) const
+{
+ return m_refCountedObjects.find(object) != notFound;
+}
+
+ParserArenaRefCounted* ParserArena::last() const
+{
+ return m_refCountedObjects.last().get();
+}
+
+void ParserArena::removeLast()
+{
+ m_refCountedObjects.removeLast();
+}
+
+void ParserArena::reset()
+{
+ deleteAllValues(m_deletableObjects);
+ m_deletableObjects.shrink(0);
+ m_refCountedObjects.shrink(0);
+}
+
+}
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/ParserArena.h b/src/3rdparty/webkit/JavaScriptCore/parser/ParserArena.h
new file mode 100644
index 0000000..66c8529
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/ParserArena.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ParserArena_h
+#define ParserArena_h
+
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefPtr.h>
+#include <wtf/Vector.h>
+
+namespace JSC {
+
+ class ParserArenaDeletable;
+ class ParserArenaRefCounted;
+
+ class ParserArena {
+ public:
+ void swap(ParserArena& otherArena)
+ {
+ m_deletableObjects.swap(otherArena.m_deletableObjects);
+ m_refCountedObjects.swap(otherArena.m_refCountedObjects);
+ }
+ ~ParserArena();
+
+ void deleteWithArena(ParserArenaDeletable* object) { m_deletableObjects.append(object); }
+ void derefWithArena(PassRefPtr<ParserArenaRefCounted> object) { m_refCountedObjects.append(object); }
+
+ bool contains(ParserArenaRefCounted*) const;
+ ParserArenaRefCounted* last() const;
+ void removeLast();
+
+ bool isEmpty() const { return m_deletableObjects.isEmpty() && m_refCountedObjects.isEmpty(); }
+ void reset();
+
+ private:
+ Vector<ParserArenaDeletable*> m_deletableObjects;
+ Vector<RefPtr<ParserArenaRefCounted> > m_refCountedObjects;
+ };
+
+}
+
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/ResultType.h b/src/3rdparty/webkit/JavaScriptCore/parser/ResultType.h
index 4913887..27b8112 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/ResultType.h
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/ResultType.h
@@ -33,16 +33,16 @@ namespace JSC {
typedef char Type;
static const Type TypeReusable = 1;
+ static const Type TypeInt32 = 2;
- static const Type TypeMaybeNumber = 2;
- static const Type TypeMaybeString = 4;
- static const Type TypeMaybeNull = 8;
- static const Type TypeMaybeBool = 16;
- static const Type TypeMaybeOther = 32;
-
- static const Type TypeReusableNumber = 3;
- static const Type TypeStringOrReusableNumber = 4;
-
+ static const Type TypeMaybeNumber = 0x04;
+ static const Type TypeMaybeString = 0x08;
+ static const Type TypeMaybeNull = 0x10;
+ static const Type TypeMaybeBool = 0x20;
+ static const Type TypeMaybeOther = 0x40;
+
+ static const Type TypeBits = TypeMaybeNumber | TypeMaybeString | TypeMaybeNull | TypeMaybeBool | TypeMaybeOther;
+
explicit ResultType(Type type)
: m_type(type)
{
@@ -50,66 +50,86 @@ namespace JSC {
bool isReusable()
{
- return (m_type & TypeReusable);
+ return m_type & TypeReusable;
+ }
+
+ bool isInt32()
+ {
+ return m_type & TypeInt32;
}
bool definitelyIsNumber()
{
- return ((m_type & ~TypeReusable) == TypeMaybeNumber);
+ return (m_type & TypeBits) == TypeMaybeNumber;
}
- bool isNotNumber()
+ bool definitelyIsString()
{
- return ((m_type & TypeMaybeNumber) == 0);
+ return (m_type & TypeBits) == TypeMaybeString;
}
-
+
bool mightBeNumber()
{
- return !isNotNumber();
+ return m_type & TypeMaybeNumber;
}
+ bool isNotNumber()
+ {
+ return !mightBeNumber();
+ }
+
static ResultType nullType()
{
return ResultType(TypeMaybeNull);
}
- static ResultType boolean()
+ static ResultType booleanType()
{
return ResultType(TypeMaybeBool);
}
- static ResultType constNumber()
+ static ResultType numberType()
{
return ResultType(TypeMaybeNumber);
}
- static ResultType reusableNumber()
+ static ResultType numberTypeCanReuse()
{
return ResultType(TypeReusable | TypeMaybeNumber);
}
- static ResultType reusableNumberOrString()
+ static ResultType numberTypeCanReuseIsInt32()
+ {
+ return ResultType(TypeReusable | TypeInt32 | TypeMaybeNumber);
+ }
+
+ static ResultType stringOrNumberTypeCanReuse()
{
return ResultType(TypeReusable | TypeMaybeNumber | TypeMaybeString);
}
- static ResultType string()
+ static ResultType stringType()
{
return ResultType(TypeMaybeString);
}
- static ResultType unknown()
+ static ResultType unknownType()
{
- return ResultType(TypeMaybeNumber | TypeMaybeString | TypeMaybeNull | TypeMaybeBool | TypeMaybeOther);
+ return ResultType(TypeBits);
}
static ResultType forAdd(ResultType op1, ResultType op2)
{
if (op1.definitelyIsNumber() && op2.definitelyIsNumber())
- return reusableNumber();
- if (op1.isNotNumber() || op2.isNotNumber())
- return string();
- return reusableNumberOrString();
+ return numberTypeCanReuse();
+ if (op1.definitelyIsString() || op2.definitelyIsString())
+ return stringType();
+ return stringOrNumberTypeCanReuse();
+ }
+
+ static ResultType forBitOp()
+ {
+ return numberTypeCanReuseIsInt32();
}
private:
@@ -118,8 +138,11 @@ namespace JSC {
struct OperandTypes
{
- OperandTypes(ResultType first = ResultType::unknown(), ResultType second = ResultType::unknown())
+ OperandTypes(ResultType first = ResultType::unknownType(), ResultType second = ResultType::unknownType())
{
+ // We have to initialize one of the int to ensure that
+ // the entire struct is initialized.
+ m_u.i = 0;
m_u.rds.first = first.m_type;
m_u.rds.second = second.m_type;
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/SourceProvider.h b/src/3rdparty/webkit/JavaScriptCore/parser/SourceProvider.h
index 07da9e0..1c59eed 100644
--- a/src/3rdparty/webkit/JavaScriptCore/parser/SourceProvider.h
+++ b/src/3rdparty/webkit/JavaScriptCore/parser/SourceProvider.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -34,10 +34,13 @@
namespace JSC {
+ enum SourceBOMPresence { SourceHasNoBOMs, SourceCouldHaveBOMs };
+
class SourceProvider : public RefCounted<SourceProvider> {
public:
- SourceProvider(const UString& url)
+ SourceProvider(const UString& url, SourceBOMPresence hasBOMs = SourceCouldHaveBOMs)
: m_url(url)
+ , m_hasBOMs(hasBOMs)
{
}
virtual ~SourceProvider() { }
@@ -49,8 +52,11 @@ namespace JSC {
const UString& url() { return m_url; }
intptr_t asID() { return reinterpret_cast<intptr_t>(this); }
+ SourceBOMPresence hasBOMs() const { return m_hasBOMs; }
+
private:
UString m_url;
+ SourceBOMPresence m_hasBOMs;
};
class UStringSourceProvider : public SourceProvider {
diff --git a/src/3rdparty/webkit/JavaScriptCore/pcre/dftables b/src/3rdparty/webkit/JavaScriptCore/pcre/dftables
index de2f5bb..8a2d140 100755
--- a/src/3rdparty/webkit/JavaScriptCore/pcre/dftables
+++ b/src/3rdparty/webkit/JavaScriptCore/pcre/dftables
@@ -244,7 +244,7 @@ sub readHeaderValues()
my ($fh, $tempFile) = tempfile(
basename($0) . "-XXXXXXXX",
- DIR => ($ENV{'TMPDIR'} || "/tmp"),
+ DIR => File::Spec->tmpdir,
SUFFIX => ".in",
UNLINK => 0,
);
diff --git a/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_compile.cpp b/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_compile.cpp
index 7ad5676..2bedca6 100644
--- a/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_compile.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_compile.cpp
@@ -303,7 +303,10 @@ static int checkEscape(const UChar** ptrPtr, const UChar* patternEnd, ErrorCode*
}
c = *ptr;
- if (!isASCIIAlpha(c)) {
+
+ /* To match Firefox, inside a character class, we also accept
+ numbers and '_' as control characters */
+ if ((!isClass && !isASCIIAlpha(c)) || (!isASCIIAlphanumeric(c) && c != '_')) {
c = '\\';
ptr -= 2;
break;
@@ -1058,11 +1061,6 @@ compileBranch(int options, int* brackets, unsigned char** codePtr,
reqvary = (repeatMin == repeat_max) ? 0 : REQ_VARY;
- // A quantifier after an assertion is meaningless, since assertions
- // don't move index forward. So, we discard it.
- if (*previous == OP_ASSERT || *previous == OP_ASSERT_NOT)
- goto END_REPEAT;
-
opType = 0; /* Default single-char op codes */
/* Save start of previous item, in case we have to move it up to make space
@@ -1416,6 +1414,15 @@ compileBranch(int options, int* brackets, unsigned char** codePtr,
code[-ketoffset] = OP_KETRMAX + repeatType;
}
+ // A quantifier after an assertion is mostly meaningless, but it
+ // can nullify the assertion if it has a 0 minimum.
+ else if (*previous == OP_ASSERT || *previous == OP_ASSERT_NOT) {
+ if (repeatMin == 0) {
+ code = previous;
+ goto END_REPEAT;
+ }
+ }
+
/* Else there's some kind of shambles */
else {
@@ -2209,7 +2216,7 @@ static int calculateCompiledPatternLength(const UChar* pattern, int patternLengt
int d = -1;
if (safelyCheckNextChar(ptr, patternEnd, '-')) {
- UChar const *hyptr = ptr++;
+ const UChar* hyptr = ptr++;
if (safelyCheckNextChar(ptr, patternEnd, '\\')) {
ptr++;
d = checkEscape(&ptr, patternEnd, &errorcode, cd.numCapturingBrackets, true);
@@ -2600,7 +2607,7 @@ JSRegExp* jsRegExpCompile(const UChar* pattern, int patternLength,
const UChar* ptr = (const UChar*)pattern;
const UChar* patternEnd = pattern + patternLength;
- unsigned char* code = (unsigned char*)codeStart;
+ unsigned char* code = const_cast<unsigned char*>(codeStart);
int firstByte, reqByte;
int bracketCount = 0;
if (!cd.needOuterBracket)
diff --git a/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_exec.cpp b/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_exec.cpp
index cec3417..80a092a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_exec.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_exec.cpp
@@ -175,7 +175,7 @@ reqByte match. */
/* The below limit restricts the number of "recursive" match calls in order to
avoid spending exponential time on complex regular expressions. */
-static const unsigned matchLimit = 100000;
+static const unsigned matchLimit = 1000000;
#ifdef DEBUG
/*************************************************
@@ -447,6 +447,7 @@ static int match(const UChar* subjectPtr, const unsigned char* instructionPtr, i
int min;
bool minimize = false; /* Initialization not really needed, but some compilers think so. */
unsigned remainingMatchCount = matchLimit;
+ int othercase; /* Declare here to avoid errors during jumps */
MatchStack stack;
@@ -1186,7 +1187,7 @@ RECURSE:
stack.currentFrame->args.instructionPtr += stack.currentFrame->locals.length;
if (stack.currentFrame->locals.fc <= 0xFFFF) {
- int othercase = md.ignoreCase ? jsc_pcre_ucp_othercase(stack.currentFrame->locals.fc) : -1;
+ othercase = md.ignoreCase ? jsc_pcre_ucp_othercase(stack.currentFrame->locals.fc) : -1;
for (int i = 1; i <= min; i++) {
if (*stack.currentFrame->args.subjectPtr != stack.currentFrame->locals.fc && *stack.currentFrame->args.subjectPtr != othercase)
diff --git a/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_internal.h b/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_internal.h
index 2916765..0016bb5 100644
--- a/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_internal.h
+++ b/src/3rdparty/webkit/JavaScriptCore/pcre/pcre_internal.h
@@ -85,7 +85,7 @@ total length. */
offsets within the compiled regex. The default is 2, which allows for compiled
patterns up to 64K long. */
-#define LINK_SIZE 2
+#define LINK_SIZE 3
/* Define DEBUG to get debugging output on stdout. */
@@ -124,28 +124,60 @@ static inline void put2ByteValue(unsigned char* opcodePtr, int value)
opcodePtr[1] = value;
}
+static inline void put3ByteValue(unsigned char* opcodePtr, int value)
+{
+ ASSERT(value >= 0 && value <= 0xFFFFFF);
+ opcodePtr[0] = value >> 16;
+ opcodePtr[1] = value >> 8;
+ opcodePtr[2] = value;
+}
+
static inline int get2ByteValue(const unsigned char* opcodePtr)
{
return (opcodePtr[0] << 8) | opcodePtr[1];
}
+static inline int get3ByteValue(const unsigned char* opcodePtr)
+{
+ return (opcodePtr[0] << 16) | (opcodePtr[1] << 8) | opcodePtr[2];
+}
+
static inline void put2ByteValueAndAdvance(unsigned char*& opcodePtr, int value)
{
put2ByteValue(opcodePtr, value);
opcodePtr += 2;
}
+static inline void put3ByteValueAndAdvance(unsigned char*& opcodePtr, int value)
+{
+ put3ByteValue(opcodePtr, value);
+ opcodePtr += 3;
+}
+
static inline void putLinkValueAllowZero(unsigned char* opcodePtr, int value)
{
+#if LINK_SIZE == 3
+ put3ByteValue(opcodePtr, value);
+#elif LINK_SIZE == 2
put2ByteValue(opcodePtr, value);
+#else
+# error LINK_SIZE not supported.
+#endif
}
static inline int getLinkValueAllowZero(const unsigned char* opcodePtr)
{
+#if LINK_SIZE == 3
+ return get3ByteValue(opcodePtr);
+#elif LINK_SIZE == 2
return get2ByteValue(opcodePtr);
+#else
+# error LINK_SIZE not supported.
+#endif
}
-#define MAX_PATTERN_SIZE (1 << 16)
+#define MAX_PATTERN_SIZE 1024 * 1024 // Derived by empirical testing of compile time in PCRE and WREC.
+COMPILE_ASSERT(MAX_PATTERN_SIZE < (1 << (8 * LINK_SIZE)), pcre_max_pattern_fits_in_bytecode);
static inline void putLinkValue(unsigned char* opcodePtr, int value)
{
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/CallIdentifier.h b/src/3rdparty/webkit/JavaScriptCore/profiler/CallIdentifier.h
index 6ceef13..c2c25d5 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/CallIdentifier.h
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/CallIdentifier.h
@@ -51,32 +51,34 @@ namespace JSC {
inline bool operator==(const CallIdentifier& ci) const { return ci.m_lineNumber == m_lineNumber && ci.m_name == m_name && ci.m_url == m_url; }
inline bool operator!=(const CallIdentifier& ci) const { return !(*this == ci); }
+ struct Hash {
+ static unsigned hash(const CallIdentifier& key)
+ {
+ unsigned hashCodes[3] = {
+ key.m_name.rep()->hash(),
+ key.m_url.rep()->hash(),
+ key.m_lineNumber
+ };
+ return UString::Rep::computeHash(reinterpret_cast<char*>(hashCodes), sizeof(hashCodes));
+ }
+
+ static bool equal(const CallIdentifier& a, const CallIdentifier& b) { return a == b; }
+ static const bool safeToCompareToEmptyOrDeleted = true;
+ };
+
+ unsigned hash() const { return Hash::hash(*this); }
+
#ifndef NDEBUG
operator const char*() const { return c_str(); }
const char* c_str() const { return m_name.UTF8String().c_str(); }
#endif
};
- struct CallIdentifierHash {
- static unsigned hash(const CallIdentifier& key)
- {
- unsigned hashCodes[3] = {
- key.m_name.rep()->hash(),
- key.m_url.rep()->hash(),
- key.m_lineNumber
- };
- return UString::Rep::computeHash(reinterpret_cast<char*>(hashCodes), sizeof(hashCodes));
- }
-
- static bool equal(const CallIdentifier& a, const CallIdentifier& b) { return a == b; }
- static const bool safeToCompareToEmptyOrDeleted = true;
- };
-
} // namespace JSC
namespace WTF {
- template<> struct DefaultHash<JSC::CallIdentifier> { typedef JSC::CallIdentifierHash Hash; };
+ template<> struct DefaultHash<JSC::CallIdentifier> { typedef JSC::CallIdentifier::Hash Hash; };
template<> struct HashTraits<JSC::CallIdentifier> : GenericHashTraits<JSC::CallIdentifier> {
static void constructDeletedValue(JSC::CallIdentifier& slot)
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/HeavyProfile.cpp b/src/3rdparty/webkit/JavaScriptCore/profiler/HeavyProfile.cpp
index 5ea9d3b..e69de29 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/HeavyProfile.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/HeavyProfile.cpp
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "HeavyProfile.h"
-
-#include "TreeProfile.h"
-
-namespace JSC {
-
-HeavyProfile::HeavyProfile(TreeProfile* treeProfile)
- : Profile(treeProfile->title(), treeProfile->uid())
-{
- m_treeProfile = treeProfile;
- head()->setTotalTime(m_treeProfile->head()->actualTotalTime());
- head()->setSelfTime(m_treeProfile->head()->actualSelfTime());
- generateHeavyStructure();
-}
-
-void HeavyProfile::generateHeavyStructure()
-{
- ProfileNode* treeHead = m_treeProfile->head();
- ProfileNode* currentNode = treeHead->firstChild();
- for (ProfileNode* nextNode = currentNode; nextNode; nextNode = nextNode->firstChild())
- currentNode = nextNode;
-
- // For each node
- HashMap<CallIdentifier, ProfileNode*> foundChildren;
- while (currentNode && currentNode != treeHead) {
- ProfileNode* child = foundChildren.get(currentNode->callIdentifier());
- if (child) // currentNode is in the set already
- mergeProfiles(child, currentNode);
- else { // currentNode is not in the set
- child = addNode(currentNode);
- foundChildren.set(currentNode->callIdentifier(), child);
- }
-
- currentNode = currentNode->traverseNextNodePostOrder();
- }
-}
-
-ProfileNode* HeavyProfile::addNode(ProfileNode* currentNode)
-{
- RefPtr<ProfileNode> node = ProfileNode::create(head(), currentNode);
- head()->addChild(node);
-
- addAncestorsAsChildren(currentNode->parent(), node.get());
- return node.get();
-}
-
-void HeavyProfile::mergeProfiles(ProfileNode* heavyProfileHead, ProfileNode* treeProfileHead)
-{
- ASSERT_ARG(heavyProfileHead, heavyProfileHead);
- ASSERT_ARG(treeProfileHead, treeProfileHead);
-
- ProfileNode* currentTreeNode = treeProfileHead;
- ProfileNode* currentHeavyNode = heavyProfileHead;
- ProfileNode* previousHeavyNode = 0;
-
- while (currentHeavyNode) {
- previousHeavyNode = currentHeavyNode;
-
- currentHeavyNode->setTotalTime(currentHeavyNode->actualTotalTime() + currentTreeNode->actualTotalTime());
- currentHeavyNode->setSelfTime(currentHeavyNode->actualSelfTime() + currentTreeNode->actualSelfTime());
- currentHeavyNode->setNumberOfCalls(currentHeavyNode->numberOfCalls() + currentTreeNode->numberOfCalls());
-
- currentTreeNode = currentTreeNode->parent();
- currentHeavyNode = currentHeavyNode->findChild(currentTreeNode);
- }
-
- // If currentTreeNode is null then we already have the whole tree we wanted to copy.
- // If not we need to copy the subset of the tree that remains different between the two.
- if (currentTreeNode)
- addAncestorsAsChildren(currentTreeNode, previousHeavyNode);
-}
-
-void HeavyProfile::addAncestorsAsChildren(ProfileNode* getFrom, ProfileNode* addTo)
-{
- ASSERT_ARG(getFrom, getFrom);
- ASSERT_ARG(addTo, addTo);
-
- if (!getFrom->head())
- return;
-
- RefPtr<ProfileNode> currentNode = addTo;
- for (ProfileNode* treeAncestor = getFrom; treeAncestor && treeAncestor != getFrom->head(); treeAncestor = treeAncestor->parent()) {
- RefPtr<ProfileNode> newChild = ProfileNode::create(currentNode->head(), treeAncestor);
- currentNode->addChild(newChild);
- currentNode = newChild.release();
- }
-}
-
-} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/HeavyProfile.h b/src/3rdparty/webkit/JavaScriptCore/profiler/HeavyProfile.h
index 903d091..e69de29 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/HeavyProfile.h
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/HeavyProfile.h
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef HeavyProfile_h
-#define HeavyProfile_h
-
-#include "Profile.h"
-#include "ProfileNode.h"
-#include "TreeProfile.h"
-
-namespace JSC {
-
- class UString;
-
- class HeavyProfile : public Profile {
- public:
- static PassRefPtr<HeavyProfile> create(TreeProfile* treeProfile)
- {
- return adoptRef(new HeavyProfile(treeProfile));
- }
-
- virtual Profile* heavyProfile() { return this; }
- virtual Profile* treeProfile()
- {
- return m_treeProfile;
- }
-
-
- private:
- HeavyProfile(TreeProfile*);
- void generateHeavyStructure();
- ProfileNode* addNode(ProfileNode*);
- void mergeProfiles(ProfileNode* heavyProfileHead, ProfileNode* treeProfileHead);
- void addAncestorsAsChildren(ProfileNode* getFrom, ProfileNode* addTo);
-
- TreeProfile* m_treeProfile;
- };
-
-} // namespace JSC
-
-#endif // HeavyProfile_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/Profile.cpp b/src/3rdparty/webkit/JavaScriptCore/profiler/Profile.cpp
index 72e6d21..de75e71 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/Profile.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/Profile.cpp
@@ -27,14 +27,13 @@
#include "Profile.h"
#include "ProfileNode.h"
-#include "TreeProfile.h"
#include <stdio.h>
namespace JSC {
PassRefPtr<Profile> Profile::create(const UString& title, unsigned uid)
{
- return TreeProfile::create(title, uid);
+ return adoptRef(new Profile(title, uid));
}
Profile::Profile(const UString& title, unsigned uid)
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/Profile.h b/src/3rdparty/webkit/JavaScriptCore/profiler/Profile.h
index dd96f77..6bf29f7 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/Profile.h
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/Profile.h
@@ -45,22 +45,11 @@ namespace JSC {
unsigned int uid() const { return m_uid; }
void forEach(void (ProfileNode::*)());
- void sortTotalTimeDescending() { forEach(&ProfileNode::sortTotalTimeDescending); }
- void sortTotalTimeAscending() { forEach(&ProfileNode::sortTotalTimeAscending); }
- void sortSelfTimeDescending() { forEach(&ProfileNode::sortSelfTimeDescending); }
- void sortSelfTimeAscending() { forEach(&ProfileNode::sortSelfTimeAscending); }
- void sortCallsDescending() { forEach(&ProfileNode::sortCallsDescending); }
- void sortCallsAscending() { forEach(&ProfileNode::sortCallsAscending); }
- void sortFunctionNameDescending() { forEach(&ProfileNode::sortFunctionNameDescending); }
- void sortFunctionNameAscending() { forEach(&ProfileNode::sortFunctionNameAscending); }
void focus(const ProfileNode*);
void exclude(const ProfileNode*);
void restoreAll();
- virtual Profile* heavyProfile() = 0;
- virtual Profile* treeProfile() = 0;
-
#ifndef NDEBUG
void debugPrintData() const;
void debugPrintDataSampleStyle() const;
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileGenerator.cpp b/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileGenerator.cpp
index 62e9fe3..1a061cb 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileGenerator.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileGenerator.cpp
@@ -59,10 +59,10 @@ void ProfileGenerator::addParentForConsoleStart(ExecState* exec)
int lineNumber;
intptr_t sourceID;
UString sourceURL;
- JSValuePtr function;
+ JSValue function;
exec->interpreter()->retrieveLastCaller(exec, lineNumber, sourceID, sourceURL, function);
- m_currentNode = ProfileNode::create(Profiler::createCallIdentifier(&exec->globalData(), function ? function->toThisObject(exec) : 0, sourceURL, lineNumber), m_head.get(), m_head.get());
+ m_currentNode = ProfileNode::create(Profiler::createCallIdentifier(&exec->globalData(), function ? function.toThisObject(exec) : 0, sourceURL, lineNumber), m_head.get(), m_head.get());
m_head->insertNode(m_currentNode.get());
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileGenerator.h b/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileGenerator.h
index 54d4565..cccb502 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileGenerator.h
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileGenerator.h
@@ -26,6 +26,7 @@
#ifndef ProfileGenerator_h
#define ProfileGenerator_h
+#include "Profile.h"
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileNode.cpp b/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileNode.cpp
index 3458902..bf0bbcb 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileNode.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileNode.cpp
@@ -204,12 +204,6 @@ ProfileNode* ProfileNode::traverseNextNodePreOrder(bool processChildren) const
return next;
}
-void ProfileNode::sort(bool comparator(const RefPtr<ProfileNode>& , const RefPtr<ProfileNode>& ))
-{
- std::sort(childrenBegin(), childrenEnd(), comparator);
- resetChildrensSiblings();
-}
-
void ProfileNode::setTreeVisible(ProfileNode* node, bool visible)
{
ProfileNode* nodeParent = node->parent();
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileNode.h b/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileNode.h
index b416011..2b5a936 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileNode.h
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/ProfileNode.h
@@ -112,16 +112,6 @@ namespace JSC {
ProfileNode* traverseNextNodePostOrder() const;
ProfileNode* traverseNextNodePreOrder(bool processChildren = true) const;
- void sort(bool (*)(const RefPtr<ProfileNode>&, const RefPtr<ProfileNode>&));
- void sortTotalTimeDescending() { sort(totalTimeDescendingComparator); }
- void sortTotalTimeAscending() { sort(totalTimeAscendingComparator); }
- void sortSelfTimeDescending() { sort(selfTimeDescendingComparator); }
- void sortSelfTimeAscending() { sort(selfTimeAscendingComparator); }
- void sortCallsDescending() { sort(callsDescendingComparator); }
- void sortCallsAscending() { sort(callsAscendingComparator); }
- void sortFunctionNameDescending() { sort(functionNameDescendingComparator); }
- void sortFunctionNameAscending() { sort(functionNameAscendingComparator); }
-
// Views
void calculateVisibleTotalTime();
bool focus(const CallIdentifier&);
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/Profiler.cpp b/src/3rdparty/webkit/JavaScriptCore/profiler/Profiler.cpp
index 3df3b3f..e103fd1 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/Profiler.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/Profiler.cpp
@@ -33,6 +33,7 @@
#include "CallFrame.h"
#include "JSFunction.h"
#include "JSGlobalObject.h"
+#include "Nodes.h"
#include "Profile.h"
#include "ProfileGenerator.h"
#include "ProfileNode.h"
@@ -58,6 +59,8 @@ Profiler* Profiler::profiler()
void Profiler::startProfiling(ExecState* exec, const UString& title)
{
+ ASSERT_ARG(title, !title.isNull());
+
// Check if we currently have a Profile for this global ExecState and title.
// If so return early and don't create a new Profile.
ExecState* globalExec = exec ? exec->lexicalGlobalObject()->globalExec() : 0;
@@ -101,7 +104,7 @@ static inline void dispatchFunctionToProfiles(const Vector<RefPtr<ProfileGenerat
}
}
-void Profiler::willExecute(ExecState* exec, JSValuePtr function)
+void Profiler::willExecute(ExecState* exec, JSValue function)
{
ASSERT(!m_currentProfiles.isEmpty());
@@ -112,12 +115,12 @@ void Profiler::willExecute(ExecState* exec, const UString& sourceURL, int starti
{
ASSERT(!m_currentProfiles.isEmpty());
- CallIdentifier callIdentifier = createCallIdentifier(&exec->globalData(), noValue(), sourceURL, startingLineNumber);
+ CallIdentifier callIdentifier = createCallIdentifier(&exec->globalData(), JSValue(), sourceURL, startingLineNumber);
dispatchFunctionToProfiles(m_currentProfiles, &ProfileGenerator::willExecute, callIdentifier, exec->lexicalGlobalObject()->profileGroup());
}
-void Profiler::didExecute(ExecState* exec, JSValuePtr function)
+void Profiler::didExecute(ExecState* exec, JSValue function)
{
ASSERT(!m_currentProfiles.isEmpty());
@@ -128,17 +131,20 @@ void Profiler::didExecute(ExecState* exec, const UString& sourceURL, int startin
{
ASSERT(!m_currentProfiles.isEmpty());
- dispatchFunctionToProfiles(m_currentProfiles, &ProfileGenerator::didExecute, createCallIdentifier(&exec->globalData(), noValue(), sourceURL, startingLineNumber), exec->lexicalGlobalObject()->profileGroup());
+ dispatchFunctionToProfiles(m_currentProfiles, &ProfileGenerator::didExecute, createCallIdentifier(&exec->globalData(), JSValue(), sourceURL, startingLineNumber), exec->lexicalGlobalObject()->profileGroup());
}
-CallIdentifier Profiler::createCallIdentifier(JSGlobalData* globalData, JSValuePtr function, const UString& defaultSourceURL, int defaultLineNumber)
+CallIdentifier Profiler::createCallIdentifier(JSGlobalData* globalData, JSValue function, const UString& defaultSourceURL, int defaultLineNumber)
{
if (!function)
return CallIdentifier(GlobalCodeExecution, defaultSourceURL, defaultLineNumber);
- if (!function->isObject())
+ if (!function.isObject())
return CallIdentifier("(unknown)", defaultSourceURL, defaultLineNumber);
- if (asObject(function)->inherits(&JSFunction::info))
- return createCallIdentifierFromFunctionImp(globalData, asFunction(function));
+ if (asObject(function)->inherits(&JSFunction::info)) {
+ JSFunction* func = asFunction(function);
+ if (!func->isHostFunction())
+ return createCallIdentifierFromFunctionImp(globalData, func);
+ }
if (asObject(function)->inherits(&InternalFunction::info))
return CallIdentifier(static_cast<InternalFunction*>(asObject(function))->name(globalData), defaultSourceURL, defaultLineNumber);
return CallIdentifier("(" + asObject(function)->className() + " object)", defaultSourceURL, defaultLineNumber);
@@ -146,7 +152,7 @@ CallIdentifier Profiler::createCallIdentifier(JSGlobalData* globalData, JSValueP
CallIdentifier createCallIdentifierFromFunctionImp(JSGlobalData* globalData, JSFunction* function)
{
- const UString& name = function->name(globalData);
+ const UString& name = function->calculatedDisplayName(globalData);
return CallIdentifier(name.isEmpty() ? AnonymousFunction : name, function->body()->sourceURL(), function->body()->lineNo());
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/Profiler.h b/src/3rdparty/webkit/JavaScriptCore/profiler/Profiler.h
index d00bccf..b37f613 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/Profiler.h
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/Profiler.h
@@ -40,7 +40,7 @@ namespace JSC {
class ExecState;
class JSGlobalData;
class JSObject;
- class JSValuePtr;
+ class JSValue;
class ProfileGenerator;
class UString;
@@ -52,14 +52,14 @@ namespace JSC {
}
static Profiler* profiler();
- static CallIdentifier createCallIdentifier(JSGlobalData*, JSValuePtr, const UString& sourceURL, int lineNumber);
+ static CallIdentifier createCallIdentifier(JSGlobalData*, JSValue, const UString& sourceURL, int lineNumber);
void startProfiling(ExecState*, const UString& title);
PassRefPtr<Profile> stopProfiling(ExecState*, const UString& title);
- void willExecute(ExecState*, JSValuePtr function);
+ void willExecute(ExecState*, JSValue function);
void willExecute(ExecState*, const UString& sourceURL, int startingLineNumber);
- void didExecute(ExecState*, JSValuePtr function);
+ void didExecute(ExecState*, JSValue function);
void didExecute(ExecState*, const UString& sourceURL, int startingLineNumber);
const Vector<RefPtr<ProfileGenerator> >& currentProfiles() { return m_currentProfiles; };
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/TreeProfile.cpp b/src/3rdparty/webkit/JavaScriptCore/profiler/TreeProfile.cpp
index 0c7fedb..e69de29 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/TreeProfile.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/TreeProfile.cpp
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "TreeProfile.h"
-
-#include "HeavyProfile.h"
-
-namespace JSC {
-
-PassRefPtr<TreeProfile> TreeProfile::create(const UString& title, unsigned uid)
-{
- return adoptRef(new TreeProfile(title, uid));
-}
-
-TreeProfile::TreeProfile(const UString& title, unsigned uid)
- : Profile(title, uid)
-{
-}
-
-Profile* TreeProfile::heavyProfile()
-{
- if (!m_heavyProfile)
- m_heavyProfile = HeavyProfile::create(this);
-
- return m_heavyProfile.get();
-}
-
-} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/profiler/TreeProfile.h b/src/3rdparty/webkit/JavaScriptCore/profiler/TreeProfile.h
index ebef4d8..e69de29 100644
--- a/src/3rdparty/webkit/JavaScriptCore/profiler/TreeProfile.h
+++ b/src/3rdparty/webkit/JavaScriptCore/profiler/TreeProfile.h
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef TreeProfile_h
-#define TreeProfile_h
-
-#include "Profile.h"
-
-namespace JSC {
-
- class ExecState;
- class HeavyProfile;
- class UString;
-
- class TreeProfile : public Profile {
- public:
- static PassRefPtr<TreeProfile> create(const UString& title, unsigned uid);
-
- virtual Profile* heavyProfile();
- virtual Profile* treeProfile() { return this; }
-
- private:
- TreeProfile(const UString& title, unsigned uid);
- RefPtr<HeavyProfile> m_heavyProfile;
- };
-
-} // namespace JSC
-
-#endif // TreeProfiler_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ArgList.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/ArgList.cpp
index 5ead733..0b5d958 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ArgList.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ArgList.cpp
@@ -30,19 +30,18 @@ namespace JSC {
void ArgList::getSlice(int startIndex, ArgList& result) const
{
- ASSERT(!result.m_isReadOnly);
-
- const_iterator start = min(begin() + startIndex, end());
- result.m_vector.appendRange(start, end());
- result.m_size = result.m_vector.size();
- result.m_buffer = result.m_vector.data();
+ if (startIndex <= 0 || static_cast<unsigned>(startIndex) >= m_argCount) {
+ result = ArgList(m_args, 0);
+ return;
+ }
+ result = ArgList(m_args + startIndex, m_argCount - startIndex);
}
-void ArgList::markLists(ListSet& markSet)
+void MarkedArgumentBuffer::markLists(ListSet& markSet)
{
ListSet::iterator end = markSet.end();
for (ListSet::iterator it = markSet.begin(); it != end; ++it) {
- ArgList* list = *it;
+ MarkedArgumentBuffer* list = *it;
iterator end2 = list->end();
for (iterator it2 = list->begin(); it2 != end2; ++it2)
@@ -51,7 +50,7 @@ void ArgList::markLists(ListSet& markSet)
}
}
-void ArgList::slowAppend(JSValuePtr v)
+void MarkedArgumentBuffer::slowAppend(JSValue v)
{
// As long as our size stays within our Vector's inline
// capacity, all our values are allocated on the stack, and
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ArgList.h b/src/3rdparty/webkit/JavaScriptCore/runtime/ArgList.h
index a1763e0..8e85d7f 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ArgList.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ArgList.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
- * Copyright (C) 2003, 2007, 2008 Apple Computer, Inc.
+ * Copyright (C) 2003, 2007, 2008, 2009 Apple Computer, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -31,11 +31,11 @@
namespace JSC {
- class ArgList : Noncopyable {
+ class MarkedArgumentBuffer : Noncopyable {
private:
static const unsigned inlineCapacity = 8;
typedef Vector<Register, inlineCapacity> VectorType;
- typedef HashSet<ArgList*> ListSet;
+ typedef HashSet<MarkedArgumentBuffer*> ListSet;
public:
typedef VectorType::iterator iterator;
@@ -43,7 +43,7 @@ namespace JSC {
// Constructor for a read-write list, to which you may append values.
// FIXME: Remove all clients of this API, then remove this API.
- ArgList()
+ MarkedArgumentBuffer()
: m_markSet(0)
#ifndef NDEBUG
, m_isReadOnly(false)
@@ -54,7 +54,7 @@ namespace JSC {
}
// Constructor for a read-only list whose data has already been allocated elsewhere.
- ArgList(Register* buffer, size_t size)
+ MarkedArgumentBuffer(Register* buffer, size_t size)
: m_buffer(buffer)
, m_size(size)
, m_markSet(0)
@@ -76,7 +76,7 @@ namespace JSC {
#endif
}
- ~ArgList()
+ ~MarkedArgumentBuffer()
{
if (m_markSet)
m_markSet->remove(this);
@@ -85,10 +85,10 @@ namespace JSC {
size_t size() const { return m_size; }
bool isEmpty() const { return !m_size; }
- JSValuePtr at(ExecState* exec, size_t i) const
+ JSValue at(size_t i) const
{
if (i < m_size)
- return m_buffer[i].jsValue(exec);
+ return m_buffer[i].jsValue();
return jsUndefined();
}
@@ -99,7 +99,7 @@ namespace JSC {
m_size = 0;
}
- void append(JSValuePtr v)
+ void append(JSValue v)
{
ASSERT(!m_isReadOnly);
@@ -114,8 +114,6 @@ namespace JSC {
}
}
- void getSlice(int startIndex, ArgList& result) const;
-
iterator begin() { return m_buffer; }
iterator end() { return m_buffer + m_size; }
@@ -125,7 +123,7 @@ namespace JSC {
static void markLists(ListSet&);
private:
- void slowAppend(JSValuePtr);
+ void slowAppend(JSValue);
Register* m_buffer;
size_t m_size;
@@ -156,6 +154,60 @@ namespace JSC {
void operator delete(void*, size_t);
};
+ class ArgList {
+ friend class JIT;
+ public:
+ typedef JSValue* iterator;
+ typedef const JSValue* const_iterator;
+
+ ArgList()
+ : m_args(0)
+ , m_argCount(0)
+ {
+ }
+
+ ArgList(JSValue* args, unsigned argCount)
+ : m_args(args)
+ , m_argCount(argCount)
+ {
+ }
+
+ ArgList(Register* args, int argCount)
+ : m_args(reinterpret_cast<JSValue*>(args))
+ , m_argCount(argCount)
+ {
+ ASSERT(argCount >= 0);
+ }
+
+ ArgList(const MarkedArgumentBuffer& args)
+ : m_args(reinterpret_cast<JSValue*>(const_cast<Register*>(args.begin())))
+ , m_argCount(args.size())
+ {
+ }
+
+ JSValue at(size_t idx) const
+ {
+ if (idx < m_argCount)
+ return m_args[idx];
+ return jsUndefined();
+ }
+
+ bool isEmpty() const { return !m_argCount; }
+
+ size_t size() const { return m_argCount; }
+
+ iterator begin() { return m_args; }
+ iterator end() { return m_args + m_argCount; }
+
+ const_iterator begin() const { return m_args; }
+ const_iterator end() const { return m_args + m_argCount; }
+
+ void getSlice(int startIndex, ArgList& result) const;
+ private:
+ JSValue* m_args;
+ size_t m_argCount;
+ };
+
} // namespace JSC
#endif // ArgList_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp
index b0429a9..f867fe8 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp
@@ -69,8 +69,50 @@ void Arguments::mark()
d->activation->mark();
}
-void Arguments::fillArgList(ExecState* exec, ArgList& args)
+void Arguments::copyToRegisters(ExecState* exec, Register* buffer, uint32_t maxSize)
{
+ if (UNLIKELY(d->overrodeLength)) {
+ unsigned length = min(get(exec, exec->propertyNames().length).toUInt32(exec), maxSize);
+ for (unsigned i = 0; i < length; i++)
+ buffer[i] = get(exec, i);
+ return;
+ }
+
+ if (LIKELY(!d->deletedArguments)) {
+ unsigned parametersLength = min(min(d->numParameters, d->numArguments), maxSize);
+ unsigned i = 0;
+ for (; i < parametersLength; ++i)
+ buffer[i] = d->registers[d->firstParameterIndex + i].jsValue();
+ for (; i < d->numArguments; ++i)
+ buffer[i] = d->extraArguments[i - d->numParameters].jsValue();
+ return;
+ }
+
+ unsigned parametersLength = min(min(d->numParameters, d->numArguments), maxSize);
+ unsigned i = 0;
+ for (; i < parametersLength; ++i) {
+ if (!d->deletedArguments[i])
+ buffer[i] = d->registers[d->firstParameterIndex + i].jsValue();
+ else
+ buffer[i] = get(exec, i);
+ }
+ for (; i < d->numArguments; ++i) {
+ if (!d->deletedArguments[i])
+ buffer[i] = d->extraArguments[i - d->numParameters].jsValue();
+ else
+ buffer[i] = get(exec, i);
+ }
+}
+
+void Arguments::fillArgList(ExecState* exec, MarkedArgumentBuffer& args)
+{
+ if (UNLIKELY(d->overrodeLength)) {
+ unsigned length = get(exec, exec->propertyNames().length).toUInt32(exec);
+ for (unsigned i = 0; i < length; i++)
+ args.append(get(exec, i));
+ return;
+ }
+
if (LIKELY(!d->deletedArguments)) {
if (LIKELY(!d->numParameters)) {
args.initialize(d->extraArguments, d->numArguments);
@@ -85,9 +127,9 @@ void Arguments::fillArgList(ExecState* exec, ArgList& args)
unsigned parametersLength = min(d->numParameters, d->numArguments);
unsigned i = 0;
for (; i < parametersLength; ++i)
- args.append(d->registers[d->firstParameterIndex + i].jsValue(exec));
+ args.append(d->registers[d->firstParameterIndex + i].jsValue());
for (; i < d->numArguments; ++i)
- args.append(d->extraArguments[i - d->numParameters].jsValue(exec));
+ args.append(d->extraArguments[i - d->numParameters].jsValue());
return;
}
@@ -95,13 +137,13 @@ void Arguments::fillArgList(ExecState* exec, ArgList& args)
unsigned i = 0;
for (; i < parametersLength; ++i) {
if (!d->deletedArguments[i])
- args.append(d->registers[d->firstParameterIndex + i].jsValue(exec));
+ args.append(d->registers[d->firstParameterIndex + i].jsValue());
else
args.append(get(exec, i));
}
for (; i < d->numArguments; ++i) {
if (!d->deletedArguments[i])
- args.append(d->extraArguments[i - d->numParameters].jsValue(exec));
+ args.append(d->extraArguments[i - d->numParameters].jsValue());
else
args.append(get(exec, i));
}
@@ -113,7 +155,7 @@ bool Arguments::getOwnPropertySlot(ExecState* exec, unsigned i, PropertySlot& sl
if (i < d->numParameters) {
slot.setRegisterSlot(&d->registers[d->firstParameterIndex + i]);
} else
- slot.setValue(d->extraArguments[i - d->numParameters].jsValue(exec));
+ slot.setValue(d->extraArguments[i - d->numParameters].jsValue());
return true;
}
@@ -128,7 +170,7 @@ bool Arguments::getOwnPropertySlot(ExecState* exec, const Identifier& propertyNa
if (i < d->numParameters) {
slot.setRegisterSlot(&d->registers[d->firstParameterIndex + i]);
} else
- slot.setValue(d->extraArguments[i - d->numParameters].jsValue(exec));
+ slot.setValue(d->extraArguments[i - d->numParameters].jsValue());
return true;
}
@@ -145,28 +187,28 @@ bool Arguments::getOwnPropertySlot(ExecState* exec, const Identifier& propertyNa
return JSObject::getOwnPropertySlot(exec, propertyName, slot);
}
-void Arguments::put(ExecState* exec, unsigned i, JSValuePtr value, PutPropertySlot& slot)
+void Arguments::put(ExecState* exec, unsigned i, JSValue value, PutPropertySlot& slot)
{
if (i < d->numArguments && (!d->deletedArguments || !d->deletedArguments[i])) {
if (i < d->numParameters)
- d->registers[d->firstParameterIndex + i] = JSValuePtr(value);
+ d->registers[d->firstParameterIndex + i] = JSValue(value);
else
- d->extraArguments[i - d->numParameters] = JSValuePtr(value);
+ d->extraArguments[i - d->numParameters] = JSValue(value);
return;
}
JSObject::put(exec, Identifier(exec, UString::from(i)), value, slot);
}
-void Arguments::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void Arguments::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
bool isArrayIndex;
unsigned i = propertyName.toArrayIndex(&isArrayIndex);
if (isArrayIndex && i < d->numArguments && (!d->deletedArguments || !d->deletedArguments[i])) {
if (i < d->numParameters)
- d->registers[d->firstParameterIndex + i] = JSValuePtr(value);
+ d->registers[d->firstParameterIndex + i] = JSValue(value);
else
- d->extraArguments[i - d->numParameters] = JSValuePtr(value);
+ d->extraArguments[i - d->numParameters] = JSValue(value);
return;
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h
index ebea6ad..72697eb 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h
@@ -63,8 +63,16 @@ namespace JSC {
virtual void mark();
- void fillArgList(ExecState*, ArgList&);
+ void fillArgList(ExecState*, MarkedArgumentBuffer&);
+ uint32_t numProvidedArguments(ExecState* exec) const
+ {
+ if (UNLIKELY(d->overrodeLength))
+ return get(exec, exec->propertyNames().length).toUInt32(exec);
+ return d->numArguments;
+ }
+
+ void copyToRegisters(ExecState* exec, Register* buffer, uint32_t maxSize);
void copyRegisters();
bool isTornOff() const { return d->registerArray; }
void setActivation(JSActivation* activation)
@@ -73,7 +81,7 @@ namespace JSC {
d->registers = &activation->registerAt(0);
}
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType));
}
@@ -82,8 +90,8 @@ namespace JSC {
void getArgumentsData(CallFrame*, JSFunction*&, ptrdiff_t& firstParameterIndex, Register*& argv, int& argc);
virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
virtual bool getOwnPropertySlot(ExecState*, unsigned propertyName, PropertySlot&);
- virtual void put(ExecState*, const Identifier& propertyName, JSValuePtr, PutPropertySlot&);
- virtual void put(ExecState*, unsigned propertyName, JSValuePtr, PutPropertySlot&);
+ virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
+ virtual void put(ExecState*, unsigned propertyName, JSValue, PutPropertySlot&);
virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
virtual bool deleteProperty(ExecState*, unsigned propertyName);
@@ -94,9 +102,9 @@ namespace JSC {
OwnPtr<ArgumentsData> d;
};
- Arguments* asArguments(JSValuePtr);
+ Arguments* asArguments(JSValue);
- inline Arguments* asArguments(JSValuePtr value)
+ inline Arguments* asArguments(JSValue value)
{
ASSERT(asObject(value)->inherits(&Arguments::info));
return static_cast<Arguments*>(asObject(value));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ArrayConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/ArrayConstructor.cpp
index e63abbc..e96bdfc 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ArrayConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ArrayConstructor.cpp
@@ -26,6 +26,7 @@
#include "ArrayPrototype.h"
#include "JSArray.h"
+#include "JSFunction.h"
#include "Lookup.h"
namespace JSC {
@@ -45,15 +46,15 @@ ArrayConstructor::ArrayConstructor(ExecState* exec, PassRefPtr<Structure> struct
static JSObject* constructArrayWithSizeQuirk(ExecState* exec, const ArgList& args)
{
// a single numeric argument denotes the array size (!)
- if (args.size() == 1 && args.at(exec, 0)->isNumber()) {
- uint32_t n = args.at(exec, 0)->toUInt32(exec);
- if (n != args.at(exec, 0)->toNumber(exec))
+ if (args.size() == 1 && args.at(0).isNumber()) {
+ uint32_t n = args.at(0).toUInt32(exec);
+ if (n != args.at(0).toNumber(exec))
return throwError(exec, RangeError, "Array size is not a small enough positive integer.");
return new (exec) JSArray(exec->lexicalGlobalObject()->arrayStructure(), n);
}
// otherwise the array is constructed with the arguments in it
- return new (exec) JSArray(exec, exec->lexicalGlobalObject()->arrayStructure(), args);
+ return new (exec) JSArray(exec->lexicalGlobalObject()->arrayStructure(), args);
}
static JSObject* constructWithArrayConstructor(ExecState* exec, JSObject*, const ArgList& args)
@@ -68,7 +69,7 @@ ConstructType ArrayConstructor::getConstructData(ConstructData& constructData)
return ConstructTypeHost;
}
-static JSValuePtr callArrayConstructor(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL callArrayConstructor(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
return constructArrayWithSizeQuirk(exec, args);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ArrayPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/ArrayPrototype.cpp
index 0d6ebdd..807e59a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ArrayPrototype.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ArrayPrototype.cpp
@@ -1,6 +1,6 @@
/*
* Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
- * Copyright (C) 2003, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2007, 2008, 2009 Apple Inc. All rights reserved.
* Copyright (C) 2003 Peter Kelly (pmk@post.com)
* Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
*
@@ -24,7 +24,10 @@
#include "config.h"
#include "ArrayPrototype.h"
+#include "CodeBlock.h"
+#include "CachedCall.h"
#include "Interpreter.h"
+#include "JIT.h"
#include "ObjectPrototype.h"
#include "Lookup.h"
#include "Operations.h"
@@ -36,25 +39,27 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(ArrayPrototype);
-static JSValuePtr arrayProtoFuncToString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncToLocaleString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncConcat(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncJoin(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncPop(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncPush(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncReverse(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncShift(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncSlice(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncSort(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncSplice(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncUnShift(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncEvery(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncForEach(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncSome(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncIndexOf(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncFilter(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncMap(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr arrayProtoFuncLastIndexOf(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncToString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncToLocaleString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncConcat(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncJoin(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncPop(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncPush(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncReverse(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncShift(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncSlice(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncSort(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncSplice(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncUnShift(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncEvery(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncForEach(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncSome(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncIndexOf(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncFilter(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncMap(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncReduce(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncReduceRight(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL arrayProtoFuncLastIndexOf(ExecState*, JSObject*, JSValue, const ArgList&);
}
@@ -62,6 +67,23 @@ static JSValuePtr arrayProtoFuncLastIndexOf(ExecState*, JSObject*, JSValuePtr, c
namespace JSC {
+static inline bool isNumericCompareFunction(CallType callType, const CallData& callData)
+{
+ if (callType != CallTypeJS)
+ return false;
+
+#if ENABLE(JIT)
+ // If the JIT is enabled then we need to preserve the invariant that every
+ // function with a CodeBlock also has JIT code.
+ callData.js.functionBody->jitCode(callData.js.scopeChain);
+ CodeBlock& codeBlock = callData.js.functionBody->generatedBytecode();
+#else
+ CodeBlock& codeBlock = callData.js.functionBody->bytecode(callData.js.scopeChain);
+#endif
+
+ return codeBlock.isNumericCompareFunction();
+}
+
// ------------------------------ ArrayPrototype ----------------------------
const ClassInfo ArrayPrototype::info = {"Array", &JSArray::info, 0, ExecState::arrayTable};
@@ -86,6 +108,8 @@ const ClassInfo ArrayPrototype::info = {"Array", &JSArray::info, 0, ExecState::a
indexOf arrayProtoFuncIndexOf DontEnum|Function 1
lastIndexOf arrayProtoFuncLastIndexOf DontEnum|Function 1
filter arrayProtoFuncFilter DontEnum|Function 1
+ reduce arrayProtoFuncReduce DontEnum|Function 1
+ reduceRight arrayProtoFuncReduceRight DontEnum|Function 1
map arrayProtoFuncMap DontEnum|Function 1
@end
*/
@@ -104,36 +128,38 @@ bool ArrayPrototype::getOwnPropertySlot(ExecState* exec, const Identifier& prope
// ------------------------------ Array Functions ----------------------------
// Helper function
-static JSValuePtr getProperty(ExecState* exec, JSObject* obj, unsigned index)
+static JSValue getProperty(ExecState* exec, JSObject* obj, unsigned index)
{
PropertySlot slot(obj);
if (!obj->getPropertySlot(exec, index, slot))
- return noValue();
+ return JSValue();
return slot.getValue(exec, index);
}
-static void putProperty(ExecState* exec, JSObject* obj, const Identifier& propertyName, JSValuePtr value)
+static void putProperty(ExecState* exec, JSObject* obj, const Identifier& propertyName, JSValue value)
{
PutPropertySlot slot;
obj->put(exec, propertyName, value, slot);
}
-JSValuePtr arrayProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL arrayProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&JSArray::info))
+ if (!thisValue.isObject(&JSArray::info))
return throwError(exec, TypeError);
JSObject* thisObj = asArray(thisValue);
HashSet<JSObject*>& arrayVisitedElements = exec->globalData().arrayVisitedElements;
- if (arrayVisitedElements.size() > MaxReentryDepth)
- return throwError(exec, RangeError, "Maximum call stack size exceeded.");
+ if (arrayVisitedElements.size() >= MaxSecondaryThreadReentryDepth) {
+ if (!isMainThread() || arrayVisitedElements.size() >= MaxMainThreadReentryDepth)
+ return throwError(exec, RangeError, "Maximum call stack size exceeded.");
+ }
bool alreadyVisited = !arrayVisitedElements.add(thisObj).second;
if (alreadyVisited)
return jsEmptyString(exec); // return an empty string, avoiding infinite recursion.
Vector<UChar, 256> strBuffer;
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
for (unsigned k = 0; k < length; k++) {
if (k >= 1)
strBuffer.append(',');
@@ -143,11 +169,11 @@ JSValuePtr arrayProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisVal
break;
}
- JSValuePtr element = thisObj->get(exec, k);
- if (element->isUndefinedOrNull())
+ JSValue element = thisObj->get(exec, k);
+ if (element.isUndefinedOrNull())
continue;
- UString str = element->toString(exec);
+ UString str = element.toString(exec);
strBuffer.append(str.data(), str.size());
if (!strBuffer.data()) {
@@ -162,22 +188,24 @@ JSValuePtr arrayProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisVal
return jsString(exec, UString(strBuffer.data(), strBuffer.data() ? strBuffer.size() : 0));
}
-JSValuePtr arrayProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL arrayProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&JSArray::info))
+ if (!thisValue.isObject(&JSArray::info))
return throwError(exec, TypeError);
JSObject* thisObj = asArray(thisValue);
HashSet<JSObject*>& arrayVisitedElements = exec->globalData().arrayVisitedElements;
- if (arrayVisitedElements.size() > MaxReentryDepth)
- return throwError(exec, RangeError, "Maximum call stack size exceeded.");
+ if (arrayVisitedElements.size() >= MaxSecondaryThreadReentryDepth) {
+ if (!isMainThread() || arrayVisitedElements.size() >= MaxMainThreadReentryDepth)
+ return throwError(exec, RangeError, "Maximum call stack size exceeded.");
+ }
bool alreadyVisited = !arrayVisitedElements.add(thisObj).second;
if (alreadyVisited)
return jsEmptyString(exec); // return an empty string, avoding infinite recursion.
Vector<UChar, 256> strBuffer;
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
for (unsigned k = 0; k < length; k++) {
if (k >= 1)
strBuffer.append(',');
@@ -187,19 +215,19 @@ JSValuePtr arrayProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValuePtr t
break;
}
- JSValuePtr element = thisObj->get(exec, k);
- if (element->isUndefinedOrNull())
+ JSValue element = thisObj->get(exec, k);
+ if (element.isUndefinedOrNull())
continue;
- JSObject* o = element->toObject(exec);
- JSValuePtr conversionFunction = o->get(exec, exec->propertyNames().toLocaleString);
+ JSObject* o = element.toObject(exec);
+ JSValue conversionFunction = o->get(exec, exec->propertyNames().toLocaleString);
UString str;
CallData callData;
- CallType callType = conversionFunction->getCallData(callData);
+ CallType callType = conversionFunction.getCallData(callData);
if (callType != CallTypeNone)
- str = call(exec, conversionFunction, callType, callData, element, exec->emptyList())->toString(exec);
+ str = call(exec, conversionFunction, callType, callData, element, exec->emptyList()).toString(exec);
else
- str = element->toString(exec);
+ str = element.toString(exec);
strBuffer.append(str.data(), str.size());
if (!strBuffer.data()) {
@@ -214,13 +242,15 @@ JSValuePtr arrayProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValuePtr t
return jsString(exec, UString(strBuffer.data(), strBuffer.data() ? strBuffer.size() : 0));
}
-JSValuePtr arrayProtoFuncJoin(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncJoin(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
HashSet<JSObject*>& arrayVisitedElements = exec->globalData().arrayVisitedElements;
- if (arrayVisitedElements.size() > MaxReentryDepth)
- return throwError(exec, RangeError, "Maximum call stack size exceeded.");
+ if (arrayVisitedElements.size() >= MaxSecondaryThreadReentryDepth) {
+ if (!isMainThread() || arrayVisitedElements.size() >= MaxMainThreadReentryDepth)
+ return throwError(exec, RangeError, "Maximum call stack size exceeded.");
+ }
bool alreadyVisited = !arrayVisitedElements.add(thisObj).second;
if (alreadyVisited)
@@ -229,9 +259,9 @@ JSValuePtr arrayProtoFuncJoin(ExecState* exec, JSObject*, JSValuePtr thisValue,
Vector<UChar, 256> strBuffer;
UChar comma = ',';
- UString separator = args.at(exec, 0)->isUndefined() ? UString(&comma, 1) : args.at(exec, 0)->toString(exec);
+ UString separator = args.at(0).isUndefined() ? UString(&comma, 1) : args.at(0).toString(exec);
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
for (unsigned k = 0; k < length; k++) {
if (k >= 1)
strBuffer.append(separator.data(), separator.size());
@@ -241,11 +271,11 @@ JSValuePtr arrayProtoFuncJoin(ExecState* exec, JSObject*, JSValuePtr thisValue,
break;
}
- JSValuePtr element = thisObj->get(exec, k);
- if (element->isUndefinedOrNull())
+ JSValue element = thisObj->get(exec, k);
+ if (element.isUndefinedOrNull())
continue;
- UString str = element->toString(exec);
+ UString str = element.toString(exec);
strBuffer.append(str.data(), str.size());
if (!strBuffer.data()) {
@@ -260,19 +290,19 @@ JSValuePtr arrayProtoFuncJoin(ExecState* exec, JSObject*, JSValuePtr thisValue,
return jsString(exec, UString(strBuffer.data(), strBuffer.data() ? strBuffer.size() : 0));
}
-JSValuePtr arrayProtoFuncConcat(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncConcat(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
JSArray* arr = constructEmptyArray(exec);
int n = 0;
- JSValuePtr curArg = thisValue->toThisObject(exec);
+ JSValue curArg = thisValue.toThisObject(exec);
ArgList::const_iterator it = args.begin();
ArgList::const_iterator end = args.end();
while (1) {
- if (curArg->isObject(&JSArray::info)) {
- JSArray* curArray = asArray(curArg);
- unsigned length = curArray->length();
+ if (curArg.isObject(&JSArray::info)) {
+ unsigned length = curArg.get(exec, exec->propertyNames().length).toUInt32(exec);
+ JSObject* curObject = curArg.toObject(exec);
for (unsigned k = 0; k < length; ++k) {
- if (JSValuePtr v = getProperty(exec, curArray, k))
+ if (JSValue v = getProperty(exec, curObject, k))
arr->put(exec, n, v);
n++;
}
@@ -282,21 +312,21 @@ JSValuePtr arrayProtoFuncConcat(ExecState* exec, JSObject*, JSValuePtr thisValue
}
if (it == end)
break;
- curArg = (*it).jsValue(exec);
+ curArg = (*it);
++it;
}
arr->setLength(n);
return arr;
}
-JSValuePtr arrayProtoFuncPop(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL arrayProtoFuncPop(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (exec->interpreter()->isJSArray(thisValue))
+ if (isJSArray(&exec->globalData(), thisValue))
return asArray(thisValue)->pop();
- JSObject* thisObj = thisValue->toThisObject(exec);
- JSValuePtr result;
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
+ JSValue result;
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
if (length == 0) {
putProperty(exec, thisObj, exec->propertyNames().length, jsNumber(exec, length));
result = jsUndefined();
@@ -308,33 +338,33 @@ JSValuePtr arrayProtoFuncPop(ExecState* exec, JSObject*, JSValuePtr thisValue, c
return result;
}
-JSValuePtr arrayProtoFuncPush(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncPush(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (exec->interpreter()->isJSArray(thisValue) && args.size() == 1) {
+ if (isJSArray(&exec->globalData(), thisValue) && args.size() == 1) {
JSArray* array = asArray(thisValue);
- array->push(exec, args.begin()->jsValue(exec));
+ array->push(exec, *args.begin());
return jsNumber(exec, array->length());
}
- JSObject* thisObj = thisValue->toThisObject(exec);
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
for (unsigned n = 0; n < args.size(); n++)
- thisObj->put(exec, length + n, args.at(exec, n));
+ thisObj->put(exec, length + n, args.at(n));
length += args.size();
putProperty(exec, thisObj, exec->propertyNames().length, jsNumber(exec, length));
return jsNumber(exec, length);
}
-JSValuePtr arrayProtoFuncReverse(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL arrayProtoFuncReverse(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
unsigned middle = length / 2;
for (unsigned k = 0; k < middle; k++) {
unsigned lk1 = length - k - 1;
- JSValuePtr obj2 = getProperty(exec, thisObj, lk1);
- JSValuePtr obj = getProperty(exec, thisObj, k);
+ JSValue obj2 = getProperty(exec, thisObj, lk1);
+ JSValue obj = getProperty(exec, thisObj, k);
if (obj2)
thisObj->put(exec, k, obj2);
@@ -349,19 +379,19 @@ JSValuePtr arrayProtoFuncReverse(ExecState* exec, JSObject*, JSValuePtr thisValu
return thisObj;
}
-JSValuePtr arrayProtoFuncShift(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL arrayProtoFuncShift(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
- JSValuePtr result;
+ JSObject* thisObj = thisValue.toThisObject(exec);
+ JSValue result;
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
if (length == 0) {
putProperty(exec, thisObj, exec->propertyNames().length, jsNumber(exec, length));
result = jsUndefined();
} else {
result = thisObj->get(exec, 0);
for (unsigned k = 1; k < length; k++) {
- if (JSValuePtr obj = getProperty(exec, thisObj, k))
+ if (JSValue obj = getProperty(exec, thisObj, k))
thisObj->put(exec, k - 1, obj);
else
thisObj->deleteProperty(exec, k - 1);
@@ -372,17 +402,17 @@ JSValuePtr arrayProtoFuncShift(ExecState* exec, JSObject*, JSValuePtr thisValue,
return result;
}
-JSValuePtr arrayProtoFuncSlice(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncSlice(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
// http://developer.netscape.com/docs/manuals/js/client/jsref/array.htm#1193713 or 15.4.4.10
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
// We return a new array
JSArray* resObj = constructEmptyArray(exec);
- JSValuePtr result = resObj;
- double begin = args.at(exec, 0)->toInteger(exec);
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ JSValue result = resObj;
+ double begin = args.at(0).toInteger(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
if (begin >= 0) {
if (begin > length)
begin = length;
@@ -392,10 +422,10 @@ JSValuePtr arrayProtoFuncSlice(ExecState* exec, JSObject*, JSValuePtr thisValue,
begin = 0;
}
double end;
- if (args.at(exec, 1)->isUndefined())
+ if (args.at(1).isUndefined())
end = length;
else {
- end = args.at(exec, 1)->toInteger(exec);
+ end = args.at(1).toInteger(exec);
if (end < 0) {
end += length;
if (end < 0)
@@ -410,30 +440,32 @@ JSValuePtr arrayProtoFuncSlice(ExecState* exec, JSObject*, JSValuePtr thisValue,
int b = static_cast<int>(begin);
int e = static_cast<int>(end);
for (int k = b; k < e; k++, n++) {
- if (JSValuePtr v = getProperty(exec, thisObj, k))
+ if (JSValue v = getProperty(exec, thisObj, k))
resObj->put(exec, n, v);
}
resObj->setLength(n);
return result;
}
-JSValuePtr arrayProtoFuncSort(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncSort(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
- JSValuePtr function = args.at(exec, 0);
+ JSValue function = args.at(0);
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (thisObj->classInfo() == &JSArray::info) {
- if (callType != CallTypeNone)
+ if (isNumericCompareFunction(callType, callData))
+ asArray(thisObj)->sortNumeric(exec, function, callType, callData);
+ else if (callType != CallTypeNone)
asArray(thisObj)->sort(exec, function, callType, callData);
else
asArray(thisObj)->sort(exec);
return thisObj;
}
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
if (!length)
return thisObj;
@@ -441,23 +473,23 @@ JSValuePtr arrayProtoFuncSort(ExecState* exec, JSObject*, JSValuePtr thisValue,
// "Min" sort. Not the fastest, but definitely less code than heapsort
// or quicksort, and much less swapping than bubblesort/insertionsort.
for (unsigned i = 0; i < length - 1; ++i) {
- JSValuePtr iObj = thisObj->get(exec, i);
+ JSValue iObj = thisObj->get(exec, i);
unsigned themin = i;
- JSValuePtr minObj = iObj;
+ JSValue minObj = iObj;
for (unsigned j = i + 1; j < length; ++j) {
- JSValuePtr jObj = thisObj->get(exec, j);
+ JSValue jObj = thisObj->get(exec, j);
double compareResult;
- if (jObj->isUndefined())
+ if (jObj.isUndefined())
compareResult = 1; // don't check minObj because there's no need to differentiate == (0) from > (1)
- else if (minObj->isUndefined())
+ else if (minObj.isUndefined())
compareResult = -1;
else if (callType != CallTypeNone) {
- ArgList l;
+ MarkedArgumentBuffer l;
l.append(jObj);
l.append(minObj);
- compareResult = call(exec, function, callType, callData, exec->globalThisValue(), l)->toNumber(exec);
+ compareResult = call(exec, function, callType, callData, exec->globalThisValue(), l).toNumber(exec);
} else
- compareResult = (jObj->toString(exec) < minObj->toString(exec)) ? -1 : 1;
+ compareResult = (jObj.toString(exec) < minObj.toString(exec)) ? -1 : 1;
if (compareResult < 0) {
themin = j;
@@ -473,17 +505,17 @@ JSValuePtr arrayProtoFuncSort(ExecState* exec, JSObject*, JSValuePtr thisValue,
return thisObj;
}
-JSValuePtr arrayProtoFuncSplice(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncSplice(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
// 15.4.4.12
JSArray* resObj = constructEmptyArray(exec);
- JSValuePtr result = resObj;
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ JSValue result = resObj;
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
if (!args.size())
return jsUndefined();
- int begin = args.at(exec, 0)->toUInt32(exec);
+ int begin = args.at(0).toUInt32(exec);
if (begin < 0)
begin = std::max<int>(begin + length, 0);
else
@@ -491,12 +523,12 @@ JSValuePtr arrayProtoFuncSplice(ExecState* exec, JSObject*, JSValuePtr thisValue
unsigned deleteCount;
if (args.size() > 1)
- deleteCount = std::min<int>(std::max<int>(args.at(exec, 1)->toUInt32(exec), 0), length - begin);
+ deleteCount = std::min<int>(std::max<int>(args.at(1).toUInt32(exec), 0), length - begin);
else
deleteCount = length - begin;
for (unsigned k = 0; k < deleteCount; k++) {
- if (JSValuePtr v = getProperty(exec, thisObj, k + begin))
+ if (JSValue v = getProperty(exec, thisObj, k + begin))
resObj->put(exec, k, v);
}
resObj->setLength(deleteCount);
@@ -505,7 +537,7 @@ JSValuePtr arrayProtoFuncSplice(ExecState* exec, JSObject*, JSValuePtr thisValue
if (additionalArgs != deleteCount) {
if (additionalArgs < deleteCount) {
for (unsigned k = begin; k < length - deleteCount; ++k) {
- if (JSValuePtr v = getProperty(exec, thisObj, k + deleteCount))
+ if (JSValue v = getProperty(exec, thisObj, k + deleteCount))
thisObj->put(exec, k + additionalArgs, v);
else
thisObj->deleteProperty(exec, k + additionalArgs);
@@ -514,7 +546,7 @@ JSValuePtr arrayProtoFuncSplice(ExecState* exec, JSObject*, JSValuePtr thisValue
thisObj->deleteProperty(exec, k - 1);
} else {
for (unsigned k = length - deleteCount; (int)k > begin; --k) {
- if (JSValuePtr obj = getProperty(exec, thisObj, k + deleteCount - 1))
+ if (JSValue obj = getProperty(exec, thisObj, k + deleteCount - 1))
thisObj->put(exec, k + additionalArgs - 1, obj);
else
thisObj->deleteProperty(exec, k + additionalArgs - 1);
@@ -522,101 +554,138 @@ JSValuePtr arrayProtoFuncSplice(ExecState* exec, JSObject*, JSValuePtr thisValue
}
}
for (unsigned k = 0; k < additionalArgs; ++k)
- thisObj->put(exec, k + begin, args.at(exec, k + 2));
+ thisObj->put(exec, k + begin, args.at(k + 2));
putProperty(exec, thisObj, exec->propertyNames().length, jsNumber(exec, length - deleteCount + additionalArgs));
return result;
}
-JSValuePtr arrayProtoFuncUnShift(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncUnShift(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
// 15.4.4.13
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
unsigned nrArgs = args.size();
if (nrArgs) {
for (unsigned k = length; k > 0; --k) {
- if (JSValuePtr v = getProperty(exec, thisObj, k - 1))
+ if (JSValue v = getProperty(exec, thisObj, k - 1))
thisObj->put(exec, k + nrArgs - 1, v);
else
thisObj->deleteProperty(exec, k + nrArgs - 1);
}
}
for (unsigned k = 0; k < nrArgs; ++k)
- thisObj->put(exec, k, args.at(exec, k));
- JSValuePtr result = jsNumber(exec, length + nrArgs);
+ thisObj->put(exec, k, args.at(k));
+ JSValue result = jsNumber(exec, length + nrArgs);
putProperty(exec, thisObj, exec->propertyNames().length, result);
return result;
}
-JSValuePtr arrayProtoFuncFilter(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncFilter(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
- JSValuePtr function = args.at(exec, 0);
+ JSValue function = args.at(0);
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone)
return throwError(exec, TypeError);
- JSObject* applyThis = args.at(exec, 1)->isUndefinedOrNull() ? exec->globalThisValue() : args.at(exec, 1)->toObject(exec);
+ JSObject* applyThis = args.at(1).isUndefinedOrNull() ? exec->globalThisValue() : args.at(1).toObject(exec);
JSArray* resultArray = constructEmptyArray(exec);
unsigned filterIndex = 0;
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
- for (unsigned k = 0; k < length && !exec->hadException(); ++k) {
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
+ unsigned k = 0;
+ if (callType == CallTypeJS && isJSArray(&exec->globalData(), thisObj)) {
+ JSFunction* f = asFunction(function);
+ JSArray* array = asArray(thisObj);
+ CachedCall cachedCall(exec, f, 3, exec->exceptionSlot());
+ for (; k < length && !exec->hadException(); ++k) {
+ if (!array->canGetIndex(k))
+ break;
+ JSValue v = array->getIndex(k);
+ cachedCall.setThis(applyThis);
+ cachedCall.setArgument(0, v);
+ cachedCall.setArgument(1, jsNumber(exec, k));
+ cachedCall.setArgument(2, thisObj);
+
+ JSValue result = cachedCall.call();
+ if (result.toBoolean(exec))
+ resultArray->put(exec, filterIndex++, v);
+ }
+ if (k == length)
+ return resultArray;
+ }
+ for (; k < length && !exec->hadException(); ++k) {
PropertySlot slot(thisObj);
if (!thisObj->getPropertySlot(exec, k, slot))
continue;
- JSValuePtr v = slot.getValue(exec, k);
+ JSValue v = slot.getValue(exec, k);
- ArgList eachArguments;
+ MarkedArgumentBuffer eachArguments;
eachArguments.append(v);
eachArguments.append(jsNumber(exec, k));
eachArguments.append(thisObj);
- JSValuePtr result = call(exec, function, callType, callData, applyThis, eachArguments);
+ JSValue result = call(exec, function, callType, callData, applyThis, eachArguments);
- if (result->toBoolean(exec))
+ if (result.toBoolean(exec))
resultArray->put(exec, filterIndex++, v);
}
return resultArray;
}
-JSValuePtr arrayProtoFuncMap(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncMap(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
- JSValuePtr function = args.at(exec, 0);
+ JSValue function = args.at(0);
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone)
return throwError(exec, TypeError);
- JSObject* applyThis = args.at(exec, 1)->isUndefinedOrNull() ? exec->globalThisValue() : args.at(exec, 1)->toObject(exec);
+ JSObject* applyThis = args.at(1).isUndefinedOrNull() ? exec->globalThisValue() : args.at(1).toObject(exec);
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
JSArray* resultArray = constructEmptyArray(exec, length);
-
- for (unsigned k = 0; k < length && !exec->hadException(); ++k) {
+ unsigned k = 0;
+ if (callType == CallTypeJS && isJSArray(&exec->globalData(), thisObj)) {
+ JSFunction* f = asFunction(function);
+ JSArray* array = asArray(thisObj);
+ CachedCall cachedCall(exec, f, 3, exec->exceptionSlot());
+ for (; k < length && !exec->hadException(); ++k) {
+ if (UNLIKELY(!array->canGetIndex(k)))
+ break;
+
+ cachedCall.setThis(applyThis);
+ cachedCall.setArgument(0, array->getIndex(k));
+ cachedCall.setArgument(1, jsNumber(exec, k));
+ cachedCall.setArgument(2, thisObj);
+
+ resultArray->JSArray::put(exec, k, cachedCall.call());
+ }
+ }
+ for (; k < length && !exec->hadException(); ++k) {
PropertySlot slot(thisObj);
if (!thisObj->getPropertySlot(exec, k, slot))
continue;
- JSValuePtr v = slot.getValue(exec, k);
+ JSValue v = slot.getValue(exec, k);
- ArgList eachArguments;
+ MarkedArgumentBuffer eachArguments;
eachArguments.append(v);
eachArguments.append(jsNumber(exec, k));
eachArguments.append(thisObj);
- JSValuePtr result = call(exec, function, callType, callData, applyThis, eachArguments);
+ JSValue result = call(exec, function, callType, callData, applyThis, eachArguments);
resultArray->put(exec, k, result);
}
@@ -628,34 +697,52 @@ JSValuePtr arrayProtoFuncMap(ExecState* exec, JSObject*, JSValuePtr thisValue, c
// http://developer-test.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:forEach
// http://developer-test.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:some
-JSValuePtr arrayProtoFuncEvery(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncEvery(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
- JSValuePtr function = args.at(exec, 0);
+ JSValue function = args.at(0);
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone)
return throwError(exec, TypeError);
- JSObject* applyThis = args.at(exec, 1)->isUndefinedOrNull() ? exec->globalThisValue() : args.at(exec, 1)->toObject(exec);
-
- JSValuePtr result = jsBoolean(true);
-
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
- for (unsigned k = 0; k < length && !exec->hadException(); ++k) {
+ JSObject* applyThis = args.at(1).isUndefinedOrNull() ? exec->globalThisValue() : args.at(1).toObject(exec);
+
+ JSValue result = jsBoolean(true);
+
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
+ unsigned k = 0;
+ if (callType == CallTypeJS && isJSArray(&exec->globalData(), thisObj)) {
+ JSFunction* f = asFunction(function);
+ JSArray* array = asArray(thisObj);
+ CachedCall cachedCall(exec, f, 3, exec->exceptionSlot());
+ for (; k < length && !exec->hadException(); ++k) {
+ if (UNLIKELY(!array->canGetIndex(k)))
+ break;
+
+ cachedCall.setThis(applyThis);
+ cachedCall.setArgument(0, array->getIndex(k));
+ cachedCall.setArgument(1, jsNumber(exec, k));
+ cachedCall.setArgument(2, thisObj);
+
+ if (!cachedCall.call().toBoolean(exec))
+ return jsBoolean(false);
+ }
+ }
+ for (; k < length && !exec->hadException(); ++k) {
PropertySlot slot(thisObj);
if (!thisObj->getPropertySlot(exec, k, slot))
continue;
- ArgList eachArguments;
+ MarkedArgumentBuffer eachArguments;
eachArguments.append(slot.getValue(exec, k));
eachArguments.append(jsNumber(exec, k));
eachArguments.append(thisObj);
- bool predicateResult = call(exec, function, callType, callData, applyThis, eachArguments)->toBoolean(exec);
+ bool predicateResult = call(exec, function, callType, callData, applyThis, eachArguments).toBoolean(exec);
if (!predicateResult) {
result = jsBoolean(false);
@@ -666,25 +753,42 @@ JSValuePtr arrayProtoFuncEvery(ExecState* exec, JSObject*, JSValuePtr thisValue,
return result;
}
-JSValuePtr arrayProtoFuncForEach(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncForEach(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
- JSValuePtr function = args.at(exec, 0);
+ JSValue function = args.at(0);
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone)
return throwError(exec, TypeError);
- JSObject* applyThis = args.at(exec, 1)->isUndefinedOrNull() ? exec->globalThisValue() : args.at(exec, 1)->toObject(exec);
+ JSObject* applyThis = args.at(1).isUndefinedOrNull() ? exec->globalThisValue() : args.at(1).toObject(exec);
+
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
+ unsigned k = 0;
+ if (callType == CallTypeJS && isJSArray(&exec->globalData(), thisObj)) {
+ JSFunction* f = asFunction(function);
+ JSArray* array = asArray(thisObj);
+ CachedCall cachedCall(exec, f, 3, exec->exceptionSlot());
+ for (; k < length && !exec->hadException(); ++k) {
+ if (UNLIKELY(!array->canGetIndex(k)))
+ break;
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
- for (unsigned k = 0; k < length && !exec->hadException(); ++k) {
+ cachedCall.setThis(applyThis);
+ cachedCall.setArgument(0, array->getIndex(k));
+ cachedCall.setArgument(1, jsNumber(exec, k));
+ cachedCall.setArgument(2, thisObj);
+
+ cachedCall.call();
+ }
+ }
+ for (; k < length && !exec->hadException(); ++k) {
PropertySlot slot(thisObj);
if (!thisObj->getPropertySlot(exec, k, slot))
continue;
- ArgList eachArguments;
+ MarkedArgumentBuffer eachArguments;
eachArguments.append(slot.getValue(exec, k));
eachArguments.append(jsNumber(exec, k));
eachArguments.append(thisObj);
@@ -694,32 +798,50 @@ JSValuePtr arrayProtoFuncForEach(ExecState* exec, JSObject*, JSValuePtr thisValu
return jsUndefined();
}
-JSValuePtr arrayProtoFuncSome(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncSome(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
- JSValuePtr function = args.at(exec, 0);
+ JSValue function = args.at(0);
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone)
return throwError(exec, TypeError);
- JSObject* applyThis = args.at(exec, 1)->isUndefinedOrNull() ? exec->globalThisValue() : args.at(exec, 1)->toObject(exec);
-
- JSValuePtr result = jsBoolean(false);
-
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
- for (unsigned k = 0; k < length && !exec->hadException(); ++k) {
+ JSObject* applyThis = args.at(1).isUndefinedOrNull() ? exec->globalThisValue() : args.at(1).toObject(exec);
+
+ JSValue result = jsBoolean(false);
+
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
+ unsigned k = 0;
+ if (callType == CallTypeJS && isJSArray(&exec->globalData(), thisObj)) {
+ JSFunction* f = asFunction(function);
+ JSArray* array = asArray(thisObj);
+ CachedCall cachedCall(exec, f, 3, exec->exceptionSlot());
+ for (; k < length && !exec->hadException(); ++k) {
+ if (UNLIKELY(!array->canGetIndex(k)))
+ break;
+
+ cachedCall.setThis(applyThis);
+ cachedCall.setArgument(0, array->getIndex(k));
+ cachedCall.setArgument(1, jsNumber(exec, k));
+ cachedCall.setArgument(2, thisObj);
+
+ if (cachedCall.call().toBoolean(exec))
+ return jsBoolean(true);
+ }
+ }
+ for (; k < length && !exec->hadException(); ++k) {
PropertySlot slot(thisObj);
if (!thisObj->getPropertySlot(exec, k, slot))
continue;
- ArgList eachArguments;
+ MarkedArgumentBuffer eachArguments;
eachArguments.append(slot.getValue(exec, k));
eachArguments.append(jsNumber(exec, k));
eachArguments.append(thisObj);
- bool predicateResult = call(exec, function, callType, callData, applyThis, eachArguments)->toBoolean(exec);
+ bool predicateResult = call(exec, function, callType, callData, applyThis, eachArguments).toBoolean(exec);
if (predicateResult) {
result = jsBoolean(true);
@@ -729,16 +851,155 @@ JSValuePtr arrayProtoFuncSome(ExecState* exec, JSObject*, JSValuePtr thisValue,
return result;
}
-JSValuePtr arrayProtoFuncIndexOf(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncReduce(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
+{
+ JSObject* thisObj = thisValue.toThisObject(exec);
+
+ JSValue function = args.at(0);
+ CallData callData;
+ CallType callType = function.getCallData(callData);
+ if (callType == CallTypeNone)
+ return throwError(exec, TypeError);
+
+ unsigned i = 0;
+ JSValue rv;
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
+ if (!length && args.size() == 1)
+ return throwError(exec, TypeError);
+ JSArray* array = 0;
+ if (isJSArray(&exec->globalData(), thisObj))
+ array = asArray(thisObj);
+
+ if (args.size() >= 2)
+ rv = args.at(1);
+ else if (array && array->canGetIndex(0)){
+ rv = array->getIndex(0);
+ i = 1;
+ } else {
+ for (i = 0; i < length; i++) {
+ rv = getProperty(exec, thisObj, i);
+ if (rv)
+ break;
+ }
+ if (!rv)
+ return throwError(exec, TypeError);
+ i++;
+ }
+
+ if (callType == CallTypeJS && array) {
+ CachedCall cachedCall(exec, asFunction(function), 4, exec->exceptionSlot());
+ for (; i < length && !exec->hadException(); ++i) {
+ cachedCall.setThis(jsNull());
+ cachedCall.setArgument(0, rv);
+ JSValue v;
+ if (LIKELY(array->canGetIndex(i)))
+ v = array->getIndex(i);
+ else
+ break; // length has been made unsafe while we enumerate fallback to slow path
+ cachedCall.setArgument(1, v);
+ cachedCall.setArgument(2, jsNumber(exec, i));
+ cachedCall.setArgument(3, array);
+ rv = cachedCall.call();
+ }
+ if (i == length) // only return if we reached the end of the array
+ return rv;
+ }
+
+ for (; i < length && !exec->hadException(); ++i) {
+ JSValue prop = getProperty(exec, thisObj, i);
+ if (!prop)
+ continue;
+
+ MarkedArgumentBuffer eachArguments;
+ eachArguments.append(rv);
+ eachArguments.append(prop);
+ eachArguments.append(jsNumber(exec, i));
+ eachArguments.append(thisObj);
+
+ rv = call(exec, function, callType, callData, jsNull(), eachArguments);
+ }
+ return rv;
+}
+
+JSValue JSC_HOST_CALL arrayProtoFuncReduceRight(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
+{
+ JSObject* thisObj = thisValue.toThisObject(exec);
+
+ JSValue function = args.at(0);
+ CallData callData;
+ CallType callType = function.getCallData(callData);
+ if (callType == CallTypeNone)
+ return throwError(exec, TypeError);
+
+ unsigned i = 0;
+ JSValue rv;
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
+ if (!length && args.size() == 1)
+ return throwError(exec, TypeError);
+ JSArray* array = 0;
+ if (isJSArray(&exec->globalData(), thisObj))
+ array = asArray(thisObj);
+
+ if (args.size() >= 2)
+ rv = args.at(1);
+ else if (array && array->canGetIndex(length - 1)){
+ rv = array->getIndex(length - 1);
+ i = 1;
+ } else {
+ for (i = 0; i < length; i++) {
+ rv = getProperty(exec, thisObj, length - i - 1);
+ if (rv)
+ break;
+ }
+ if (!rv)
+ return throwError(exec, TypeError);
+ i++;
+ }
+
+ if (callType == CallTypeJS && array) {
+ CachedCall cachedCall(exec, asFunction(function), 4, exec->exceptionSlot());
+ for (; i < length && !exec->hadException(); ++i) {
+ unsigned idx = length - i - 1;
+ cachedCall.setThis(jsNull());
+ cachedCall.setArgument(0, rv);
+ if (UNLIKELY(!array->canGetIndex(idx)))
+ break; // length has been made unsafe while we enumerate fallback to slow path
+ cachedCall.setArgument(1, array->getIndex(idx));
+ cachedCall.setArgument(2, jsNumber(exec, idx));
+ cachedCall.setArgument(3, array);
+ rv = cachedCall.call();
+ }
+ if (i == length) // only return if we reached the end of the array
+ return rv;
+ }
+
+ for (; i < length && !exec->hadException(); ++i) {
+ unsigned idx = length - i - 1;
+ JSValue prop = getProperty(exec, thisObj, idx);
+ if (!prop)
+ continue;
+
+ MarkedArgumentBuffer eachArguments;
+ eachArguments.append(rv);
+ eachArguments.append(prop);
+ eachArguments.append(jsNumber(exec, idx));
+ eachArguments.append(thisObj);
+
+ rv = call(exec, function, callType, callData, jsNull(), eachArguments);
+ }
+ return rv;
+}
+
+JSValue JSC_HOST_CALL arrayProtoFuncIndexOf(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
// JavaScript 1.5 Extension by Mozilla
// Documentation: http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:indexOf
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
unsigned index = 0;
- double d = args.at(exec, 1)->toInteger(exec);
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ double d = args.at(1).toInteger(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
if (d < 0)
d += length;
if (d > 0) {
@@ -748,28 +1009,28 @@ JSValuePtr arrayProtoFuncIndexOf(ExecState* exec, JSObject*, JSValuePtr thisValu
index = static_cast<unsigned>(d);
}
- JSValuePtr searchElement = args.at(exec, 0);
+ JSValue searchElement = args.at(0);
for (; index < length; ++index) {
- JSValuePtr e = getProperty(exec, thisObj, index);
+ JSValue e = getProperty(exec, thisObj, index);
if (!e)
continue;
- if (strictEqual(searchElement, e))
+ if (JSValue::strictEqual(searchElement, e))
return jsNumber(exec, index);
}
return jsNumber(exec, -1);
}
-JSValuePtr arrayProtoFuncLastIndexOf(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL arrayProtoFuncLastIndexOf(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
// JavaScript 1.6 Extension by Mozilla
// Documentation: http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:lastIndexOf
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
- unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
int index = length - 1;
- double d = args.at(exec, 1)->toIntegerPreserveNaN(exec);
+ double d = args.at(1).toIntegerPreserveNaN(exec);
if (d < 0) {
d += length;
@@ -779,12 +1040,12 @@ JSValuePtr arrayProtoFuncLastIndexOf(ExecState* exec, JSObject*, JSValuePtr this
if (d < length)
index = static_cast<int>(d);
- JSValuePtr searchElement = args.at(exec, 0);
+ JSValue searchElement = args.at(0);
for (; index >= 0; --index) {
- JSValuePtr e = getProperty(exec, thisObj, index);
+ JSValue e = getProperty(exec, thisObj, index);
if (!e)
continue;
- if (strictEqual(searchElement, e))
+ if (JSValue::strictEqual(searchElement, e))
return jsNumber(exec, index);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanConstructor.cpp
index aa245bb..9fcba37 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanConstructor.cpp
@@ -41,7 +41,7 @@ BooleanConstructor::BooleanConstructor(ExecState* exec, PassRefPtr<Structure> st
JSObject* constructBoolean(ExecState* exec, const ArgList& args)
{
BooleanObject* obj = new (exec) BooleanObject(exec->lexicalGlobalObject()->booleanObjectStructure());
- obj->setInternalValue(jsBoolean(args.at(exec, 0)->toBoolean(exec)));
+ obj->setInternalValue(jsBoolean(args.at(0).toBoolean(exec)));
return obj;
}
@@ -57,9 +57,9 @@ ConstructType BooleanConstructor::getConstructData(ConstructData& constructData)
}
// ECMA 15.6.1
-static JSValuePtr callBooleanConstructor(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL callBooleanConstructor(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsBoolean(args.at(exec, 0)->toBoolean(exec));
+ return jsBoolean(args.at(0).toBoolean(exec));
}
CallType BooleanConstructor::getCallData(CallData& callData)
@@ -68,7 +68,7 @@ CallType BooleanConstructor::getCallData(CallData& callData)
return CallTypeHost;
}
-JSObject* constructBooleanFromImmediateBoolean(ExecState* exec, JSValuePtr immediateBooleanValue)
+JSObject* constructBooleanFromImmediateBoolean(ExecState* exec, JSValue immediateBooleanValue)
{
BooleanObject* obj = new (exec) BooleanObject(exec->lexicalGlobalObject()->booleanObjectStructure());
obj->setInternalValue(immediateBooleanValue);
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanConstructor.h b/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanConstructor.h
index db4e8e2..d9f51ab 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanConstructor.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanConstructor.h
@@ -36,7 +36,7 @@ namespace JSC {
virtual CallType getCallData(CallData&);
};
- JSObject* constructBooleanFromImmediateBoolean(ExecState*, JSValuePtr);
+ JSObject* constructBooleanFromImmediateBoolean(ExecState*, JSValue);
JSObject* constructBoolean(ExecState*, const ArgList&);
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanObject.h
index 68941e3..cfd55fe 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanObject.h
@@ -33,9 +33,9 @@ namespace JSC {
static const ClassInfo info;
};
- BooleanObject* asBooleanObject(JSValuePtr);
+ BooleanObject* asBooleanObject(JSValue);
- inline BooleanObject* asBooleanObject(JSValuePtr value)
+ inline BooleanObject* asBooleanObject(JSValue value)
{
ASSERT(asObject(value)->inherits(&BooleanObject::info));
return static_cast<BooleanObject*>(asObject(value));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanPrototype.cpp
index 77a7a1e..703a568 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanPrototype.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/BooleanPrototype.cpp
@@ -22,6 +22,7 @@
#include "BooleanPrototype.h"
#include "Error.h"
+#include "JSFunction.h"
#include "JSString.h"
#include "ObjectPrototype.h"
#include "PrototypeFunction.h"
@@ -31,8 +32,8 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(BooleanPrototype);
// Functions
-static JSValuePtr booleanProtoFuncToString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr booleanProtoFuncValueOf(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL booleanProtoFuncToString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL booleanProtoFuncValueOf(ExecState*, JSObject*, JSValue, const ArgList&);
// ECMA 15.6.4
@@ -41,8 +42,8 @@ BooleanPrototype::BooleanPrototype(ExecState* exec, PassRefPtr<Structure> struct
{
setInternalValue(jsBoolean(false));
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, booleanProtoFuncToString), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().valueOf, booleanProtoFuncValueOf), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, booleanProtoFuncToString), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().valueOf, booleanProtoFuncValueOf), DontEnum);
}
@@ -50,7 +51,7 @@ BooleanPrototype::BooleanPrototype(ExecState* exec, PassRefPtr<Structure> struct
// ECMA 15.6.4.2 + 15.6.4.3
-JSValuePtr booleanProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL booleanProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
if (thisValue == jsBoolean(false))
return jsNontrivialString(exec, "false");
@@ -58,7 +59,7 @@ JSValuePtr booleanProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisV
if (thisValue == jsBoolean(true))
return jsNontrivialString(exec, "true");
- if (!thisValue->isObject(&BooleanObject::info))
+ if (!thisValue.isObject(&BooleanObject::info))
return throwError(exec, TypeError);
if (asBooleanObject(thisValue)->internalValue() == jsBoolean(false))
@@ -68,12 +69,12 @@ JSValuePtr booleanProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisV
return jsNontrivialString(exec, "true");
}
-JSValuePtr booleanProtoFuncValueOf(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL booleanProtoFuncValueOf(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (JSImmediate::isBoolean(thisValue))
+ if (thisValue.isBoolean())
return thisValue;
- if (!thisValue->isObject(&BooleanObject::info))
+ if (!thisValue.isObject(&BooleanObject::info))
return throwError(exec, TypeError);
return asBooleanObject(thisValue)->internalValue();
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.cpp
index fbb6392..62e42fe 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.cpp
@@ -30,7 +30,7 @@
namespace JSC {
-JSValuePtr call(ExecState* exec, JSValuePtr functionObject, CallType callType, const CallData& callData, JSValuePtr thisValue, const ArgList& args)
+JSValue call(ExecState* exec, JSValue functionObject, CallType callType, const CallData& callData, JSValue thisValue, const ArgList& args)
{
if (callType == CallTypeHost)
return callData.native.function(exec, asObject(functionObject), thisValue, args);
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.h b/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.h
index b8d84cd..d5b0172 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/CallData.h
@@ -29,13 +29,15 @@
#ifndef CallData_h
#define CallData_h
+#include "NativeFunctionWrapper.h"
+
namespace JSC {
class ArgList;
class ExecState;
class FunctionBodyNode;
class JSObject;
- class JSValuePtr;
+ class JSValue;
class ScopeChainNode;
enum CallType {
@@ -44,7 +46,7 @@ namespace JSC {
CallTypeJS
};
- typedef JSValuePtr (*NativeFunction)(ExecState*, JSObject*, JSValuePtr thisValue, const ArgList&);
+ typedef JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*, JSObject*, JSValue thisValue, const ArgList&);
union CallData {
struct {
@@ -56,7 +58,7 @@ namespace JSC {
} js;
};
- JSValuePtr call(ExecState*, JSValuePtr functionObject, CallType, const CallData&, JSValuePtr thisValue, const ArgList&);
+ JSValue call(ExecState*, JSValue functionObject, CallType, const CallData&, JSValue thisValue, const ArgList&);
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
index 69cb05e..1e5eab3 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
@@ -23,13 +23,14 @@
#include "Collector.h"
#include "ArgList.h"
-#include "CollectorHeapIterator.h"
#include "CallFrame.h"
+#include "CollectorHeapIterator.h"
+#include "Interpreter.h"
#include "JSGlobalObject.h"
#include "JSLock.h"
#include "JSString.h"
#include "JSValue.h"
-#include "Interpreter.h"
+#include "Nodes.h"
#include "Tracing.h"
#include <algorithm>
#include <setjmp.h>
@@ -37,11 +38,12 @@
#include <wtf/FastMalloc.h>
#include <wtf/HashCountedSet.h>
#include <wtf/UnusedParam.h>
+#include <wtf/VMTags.h>
#if PLATFORM(DARWIN)
-#include <mach/mach_port.h>
#include <mach/mach_init.h>
+#include <mach/mach_port.h>
#include <mach/task.h>
#include <mach/thread_act.h>
#include <mach/vm_map.h>
@@ -74,9 +76,7 @@ extern int *__libc_stack_end;
#if PLATFORM(SOLARIS)
#include <thread.h>
-#endif
-
-#if PLATFORM(OPENBSD)
+#else
#include <pthread.h>
#endif
@@ -199,7 +199,7 @@ static NEVER_INLINE CollectorBlock* allocateBlock()
#if PLATFORM(DARWIN)
vm_address_t address = 0;
// FIXME: tag the region as a JavaScriptCore heap when we get a registered VM tag: <rdar://problem/6054788>.
- vm_map(current_task(), &address, BLOCK_SIZE, BLOCK_OFFSET_MASK, VM_FLAGS_ANYWHERE, MEMORY_OBJECT_NULL, 0, FALSE, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_DEFAULT);
+ vm_map(current_task(), &address, BLOCK_SIZE, BLOCK_OFFSET_MASK, VM_FLAGS_ANYWHERE | VM_TAG_FOR_COLLECTOR_MEMORY, MEMORY_OBJECT_NULL, 0, FALSE, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_DEFAULT);
#elif PLATFORM(SYMBIAN)
// no memory map in symbian, need to hack with fastMalloc
void* address = fastMalloc(BLOCK_SIZE);
@@ -365,6 +365,9 @@ collect:
// didn't find a block, and GC didn't reclaim anything, need to allocate a new block
size_t numBlocks = heap.numBlocks;
if (usedBlocks == numBlocks) {
+ static const size_t maxNumBlocks = ULONG_MAX / sizeof(CollectorBlock*) / GROWTH_FACTOR;
+ if (numBlocks > maxNumBlocks)
+ CRASH();
numBlocks = max(MIN_ARRAY_SIZE, numBlocks * GROWTH_FACTOR);
heap.numBlocks = numBlocks;
heap.blocks = static_cast<CollectorBlock**>(fastRealloc(heap.blocks, numBlocks * sizeof(CollectorBlock*)));
@@ -483,6 +486,15 @@ static inline void* currentThreadStackBase()
stack_t stack;
pthread_stackseg_np(thread, &stack);
return stack.ss_sp;
+#elif PLATFORM(SYMBIAN)
+ static void* stackBase = 0;
+ if (stackBase == 0) {
+ TThreadStackInfo info;
+ RThread thread;
+ thread.StackInfo(info);
+ stackBase = (void*)info.iBase;
+ }
+ return (void*)stackBase;
#elif PLATFORM(UNIX)
#ifdef UCLIBC_USE_PROC_SELF_MAPS
// Read /proc/self/maps and locate the line whose address
@@ -548,15 +560,6 @@ static inline void* currentThreadStackBase()
}
return static_cast<char*>(stackBase) + stackSize;
#endif
-#elif PLATFORM(SYMBIAN)
- static void* stackBase = 0;
- if (stackBase == 0) {
- TThreadStackInfo info;
- RThread thread;
- thread.StackInfo(info);
- stackBase = (void*)info.iBase;
- }
- return (void*)stackBase;
#else
#error Need a way to get the stack base on this platform
#endif
@@ -768,7 +771,7 @@ typedef CONTEXT PlatformThreadRegisters;
#error Need a thread register struct for this platform
#endif
-size_t getPlatformThreadRegisters(const PlatformThread& platformThread, PlatformThreadRegisters& regs)
+static size_t getPlatformThreadRegisters(const PlatformThread& platformThread, PlatformThreadRegisters& regs)
{
#if PLATFORM(DARWIN)
@@ -906,45 +909,45 @@ void Heap::setGCProtectNeedsLocking()
m_protectedValuesMutex.set(new Mutex);
}
-void Heap::protect(JSValuePtr k)
+void Heap::protect(JSValue k)
{
ASSERT(k);
ASSERT(JSLock::currentThreadIsHoldingLock() || !m_globalData->isSharedInstance);
- if (JSImmediate::isImmediate(k))
+ if (!k.isCell())
return;
if (m_protectedValuesMutex)
m_protectedValuesMutex->lock();
- m_protectedValues.add(k->asCell());
+ m_protectedValues.add(k.asCell());
if (m_protectedValuesMutex)
m_protectedValuesMutex->unlock();
}
-void Heap::unprotect(JSValuePtr k)
+void Heap::unprotect(JSValue k)
{
ASSERT(k);
ASSERT(JSLock::currentThreadIsHoldingLock() || !m_globalData->isSharedInstance);
- if (JSImmediate::isImmediate(k))
+ if (!k.isCell())
return;
if (m_protectedValuesMutex)
m_protectedValuesMutex->lock();
- m_protectedValues.remove(k->asCell());
+ m_protectedValues.remove(k.asCell());
if (m_protectedValuesMutex)
m_protectedValuesMutex->unlock();
}
-Heap* Heap::heap(JSValuePtr v)
+Heap* Heap::heap(JSValue v)
{
- if (JSImmediate::isImmediate(v))
+ if (!v.isCell())
return 0;
- return Heap::cellBlock(v->asCell())->heap;
+ return Heap::cellBlock(v.asCell())->heap;
}
void Heap::markProtectedObjects()
@@ -1084,11 +1087,13 @@ bool Heap::collect()
markStackObjectsConservatively();
markProtectedObjects();
if (m_markListSet && m_markListSet->size())
- ArgList::markLists(*m_markListSet);
- if (m_globalData->exception && !m_globalData->exception->marked())
- m_globalData->exception->mark();
+ MarkedArgumentBuffer::markLists(*m_markListSet);
+ if (m_globalData->exception && !m_globalData->exception.marked())
+ m_globalData->exception.mark();
m_globalData->interpreter->registerFile().markCallFrames(this);
m_globalData->smallStrings.mark();
+ if (m_globalData->scopeNodeBeingReparsed)
+ m_globalData->scopeNodeBeingReparsed->mark();
JAVASCRIPTCORE_GC_MARKED();
@@ -1105,7 +1110,7 @@ bool Heap::collect()
size_t Heap::objectCount()
{
- return primaryHeap.numLiveObjects + numberHeap.numLiveObjects;
+ return primaryHeap.numLiveObjects + numberHeap.numLiveObjects - m_globalData->smallStrings.count();
}
template <HeapType heapType>
@@ -1175,16 +1180,16 @@ size_t Heap::protectedObjectCount()
return result;
}
-static const char* typeName(JSCell* val)
+static const char* typeName(JSCell* cell)
{
- if (val->isString())
+ if (cell->isString())
return "string";
- if (val->isNumber())
+ if (cell->isNumber())
return "number";
- if (val->isGetterSetter())
+ if (cell->isGetterSetter())
return "gettersetter";
- ASSERT(val->isObject());
- const ClassInfo* info = static_cast<JSObject*>(val)->classInfo();
+ ASSERT(cell->isObject());
+ const ClassInfo* info = static_cast<JSObject*>(cell)->classInfo();
return info ? info->className : "Object";
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h
index ba41d60..23f9f15 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h
@@ -39,11 +39,11 @@
namespace JSC {
- class ArgList;
+ class MarkedArgumentBuffer;
class CollectorBlock;
class JSCell;
class JSGlobalData;
- class JSValuePtr;
+ class JSValue;
enum OperationInProgress { NoOperation, Allocation, Collection };
enum HeapType { PrimaryHeap, NumberHeap };
@@ -96,10 +96,10 @@ namespace JSC {
Statistics statistics() const;
void setGCProtectNeedsLocking();
- void protect(JSValuePtr);
- void unprotect(JSValuePtr);
+ void protect(JSValue);
+ void unprotect(JSValue);
- static Heap* heap(JSValuePtr); // 0 for immediate values
+ static Heap* heap(JSValue); // 0 for immediate values
size_t globalObjectCount();
size_t protectedObjectCount();
@@ -113,7 +113,7 @@ namespace JSC {
void markConservatively(void* start, void* end);
- HashSet<ArgList*>& markListSet() { if (!m_markListSet) m_markListSet = new HashSet<ArgList*>; return *m_markListSet; }
+ HashSet<MarkedArgumentBuffer*>& markListSet() { if (!m_markListSet) m_markListSet = new HashSet<MarkedArgumentBuffer*>; return *m_markListSet; }
JSGlobalData* globalData() const { return m_globalData; }
static bool isNumber(JSCell*);
@@ -147,7 +147,7 @@ namespace JSC {
OwnPtr<Mutex> m_protectedValuesMutex; // Only non-null if the client explicitly requested it via setGCPrtotectNeedsLocking().
ProtectCountSet m_protectedValues;
- HashSet<ArgList*>* m_markListSet;
+ HashSet<MarkedArgumentBuffer*>* m_markListSet;
#if ENABLE(JSC_MULTIPLE_THREADS)
void makeUsableFromMultipleThreads();
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/CommonIdentifiers.h b/src/3rdparty/webkit/JavaScriptCore/runtime/CommonIdentifiers.h
index 45b99a8..d4c5d52 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/CommonIdentifiers.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/CommonIdentifiers.h
@@ -24,7 +24,7 @@
#include "Identifier.h"
#include <wtf/Noncopyable.h>
-// ArgList of property names, passed to a macro so we can do set them up various
+// MarkedArgumentBuffer of property names, passed to a macro so we can do set them up various
// ways without repeating the list.
#define JSC_COMMON_IDENTIFIERS_EACH_PROPERTY_NAME(macro) \
macro(__defineGetter__) \
@@ -63,7 +63,8 @@
macro(toPrecision) \
macro(toString) \
macro(UTC) \
- macro(valueOf)
+ macro(valueOf) \
+ macro(displayName)
namespace JSC {
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.cpp
index b4923f7..b8b1581 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.cpp
@@ -50,7 +50,7 @@ Completion checkSyntax(ExecState* exec, const SourceCode& source)
return Completion(Normal);
}
-Completion evaluate(ExecState* exec, ScopeChain& scopeChain, const SourceCode& source, JSValuePtr thisValue)
+Completion evaluate(ExecState* exec, ScopeChain& scopeChain, const SourceCode& source, JSValue thisValue)
{
JSLock lock(exec);
@@ -61,14 +61,14 @@ Completion evaluate(ExecState* exec, ScopeChain& scopeChain, const SourceCode& s
if (!programNode)
return Completion(Throw, Error::create(exec, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url()));
- JSObject* thisObj = (!thisValue || thisValue->isUndefinedOrNull()) ? exec->dynamicGlobalObject() : thisValue->toObject(exec);
+ JSObject* thisObj = (!thisValue || thisValue.isUndefinedOrNull()) ? exec->dynamicGlobalObject() : thisValue.toObject(exec);
- JSValuePtr exception = noValue();
- JSValuePtr result = exec->interpreter()->execute(programNode.get(), exec, scopeChain.node(), thisObj, &exception);
+ JSValue exception;
+ JSValue result = exec->interpreter()->execute(programNode.get(), exec, scopeChain.node(), thisObj, &exception);
if (exception) {
- if (exception->isObject() && asObject(exception)->isWatchdogException())
- return Completion(Interrupted, result);
+ if (exception.isObject() && asObject(exception)->isWatchdogException())
+ return Completion(Interrupted, exception);
return Completion(Throw, exception);
}
return Completion(Normal, result);
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.h
index 9631b50..41c9a64 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Completion.h
@@ -39,24 +39,24 @@ namespace JSC {
*/
class Completion {
public:
- Completion(ComplType type = Normal, JSValuePtr value = noValue())
+ Completion(ComplType type = Normal, JSValue value = JSValue())
: m_type(type)
, m_value(value)
{
}
ComplType complType() const { return m_type; }
- JSValuePtr value() const { return m_value; }
- void setValue(JSValuePtr v) { m_value = v; }
+ JSValue value() const { return m_value; }
+ void setValue(JSValue v) { m_value = v; }
bool isValueCompletion() const { return m_value; }
private:
ComplType m_type;
- JSValuePtr m_value;
+ JSValue m_value;
};
Completion checkSyntax(ExecState*, const SourceCode&);
- Completion evaluate(ExecState*, ScopeChain&, const SourceCode&, JSValuePtr thisValue = noValue());
+ Completion evaluate(ExecState*, ScopeChain&, const SourceCode&, JSValue thisValue = JSValue());
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.cpp
index 7a729ae..7ee59d7 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.cpp
@@ -30,7 +30,7 @@
namespace JSC {
-JSObject* construct(ExecState* exec, JSValuePtr object, ConstructType constructType, const ConstructData& constructData, const ArgList& args)
+JSObject* construct(ExecState* exec, JSValue object, ConstructType constructType, const ConstructData& constructData, const ArgList& args)
{
if (constructType == ConstructTypeHost)
return constructData.native.function(exec, asObject(object), args);
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.h b/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.h
index 559c1bd..9d580d5 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.h
@@ -35,7 +35,7 @@ namespace JSC {
class ExecState;
class FunctionBodyNode;
class JSObject;
- class JSValuePtr;
+ class JSValue;
class ScopeChainNode;
enum ConstructType {
@@ -56,7 +56,7 @@ namespace JSC {
} js;
};
- JSObject* construct(ExecState*, JSValuePtr constructor, ConstructType, const ConstructData&, const ArgList&);
+ JSObject* construct(ExecState*, JSValue constructor, ConstructType, const ConstructData&, const ArgList&);
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/DateConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/DateConstructor.cpp
index 6510f4b..54362d0 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/DateConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/DateConstructor.cpp
@@ -25,6 +25,7 @@
#include "DateInstance.h"
#include "DateMath.h"
#include "DatePrototype.h"
+#include "JSFunction.h"
#include "JSGlobalObject.h"
#include "JSString.h"
#include "ObjectPrototype.h"
@@ -47,18 +48,18 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(DateConstructor);
-static JSValuePtr dateParse(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateNow(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateUTC(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL dateParse(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateNow(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateUTC(ExecState*, JSObject*, JSValue, const ArgList&);
DateConstructor::DateConstructor(ExecState* exec, PassRefPtr<Structure> structure, Structure* prototypeFunctionStructure, DatePrototype* datePrototype)
: InternalFunction(&exec->globalData(), structure, Identifier(exec, datePrototype->classInfo()->className))
{
putDirectWithoutTransition(exec->propertyNames().prototype, datePrototype, DontEnum|DontDelete|ReadOnly);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().parse, dateParse), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 7, exec->propertyNames().UTC, dateUTC), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().now, dateNow), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().parse, dateParse), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 7, exec->propertyNames().UTC, dateUTC), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().now, dateNow), DontEnum);
putDirectWithoutTransition(exec->propertyNames().length, jsNumber(exec, 7), ReadOnly | DontEnum | DontDelete);
}
@@ -73,35 +74,35 @@ JSObject* constructDate(ExecState* exec, const ArgList& args)
if (numArgs == 0) // new Date() ECMA 15.9.3.3
value = getCurrentUTCTime();
else if (numArgs == 1) {
- if (args.at(exec, 0)->isObject(&DateInstance::info))
- value = asDateInstance(args.at(exec, 0))->internalNumber();
+ if (args.at(0).isObject(&DateInstance::info))
+ value = asDateInstance(args.at(0))->internalNumber();
else {
- JSValuePtr primitive = args.at(exec, 0)->toPrimitive(exec);
- if (primitive->isString())
- value = parseDate(primitive->getString());
+ JSValue primitive = args.at(0).toPrimitive(exec);
+ if (primitive.isString())
+ value = parseDate(primitive.getString());
else
- value = primitive->toNumber(exec);
+ value = primitive.toNumber(exec);
}
} else {
- if (isnan(args.at(exec, 0)->toNumber(exec))
- || isnan(args.at(exec, 1)->toNumber(exec))
- || (numArgs >= 3 && isnan(args.at(exec, 2)->toNumber(exec)))
- || (numArgs >= 4 && isnan(args.at(exec, 3)->toNumber(exec)))
- || (numArgs >= 5 && isnan(args.at(exec, 4)->toNumber(exec)))
- || (numArgs >= 6 && isnan(args.at(exec, 5)->toNumber(exec)))
- || (numArgs >= 7 && isnan(args.at(exec, 6)->toNumber(exec))))
+ if (isnan(args.at(0).toNumber(exec))
+ || isnan(args.at(1).toNumber(exec))
+ || (numArgs >= 3 && isnan(args.at(2).toNumber(exec)))
+ || (numArgs >= 4 && isnan(args.at(3).toNumber(exec)))
+ || (numArgs >= 5 && isnan(args.at(4).toNumber(exec)))
+ || (numArgs >= 6 && isnan(args.at(5).toNumber(exec)))
+ || (numArgs >= 7 && isnan(args.at(6).toNumber(exec))))
value = NaN;
else {
GregorianDateTime t;
- int year = args.at(exec, 0)->toInt32(exec);
+ int year = args.at(0).toInt32(exec);
t.year = (year >= 0 && year <= 99) ? year : year - 1900;
- t.month = args.at(exec, 1)->toInt32(exec);
- t.monthDay = (numArgs >= 3) ? args.at(exec, 2)->toInt32(exec) : 1;
- t.hour = args.at(exec, 3)->toInt32(exec);
- t.minute = args.at(exec, 4)->toInt32(exec);
- t.second = args.at(exec, 5)->toInt32(exec);
+ t.month = args.at(1).toInt32(exec);
+ t.monthDay = (numArgs >= 3) ? args.at(2).toInt32(exec) : 1;
+ t.hour = args.at(3).toInt32(exec);
+ t.minute = args.at(4).toInt32(exec);
+ t.second = args.at(5).toInt32(exec);
t.isDST = -1;
- double ms = (numArgs >= 7) ? args.at(exec, 6)->toNumber(exec) : 0;
+ double ms = (numArgs >= 7) ? args.at(6).toNumber(exec) : 0;
value = gregorianDateTimeToMS(t, ms, false);
}
}
@@ -123,7 +124,7 @@ ConstructType DateConstructor::getConstructData(ConstructData& constructData)
}
// ECMA 15.9.2
-static JSValuePtr callDate(ExecState* exec, JSObject*, JSValuePtr, const ArgList&)
+static JSValue JSC_HOST_CALL callDate(ExecState* exec, JSObject*, JSValue, const ArgList&)
{
time_t localTime = time(0);
tm localTM;
@@ -138,37 +139,37 @@ CallType DateConstructor::getCallData(CallData& callData)
return CallTypeHost;
}
-static JSValuePtr dateParse(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL dateParse(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, parseDate(args.at(exec, 0)->toString(exec)));
+ return jsNumber(exec, parseDate(args.at(0).toString(exec)));
}
-static JSValuePtr dateNow(ExecState* exec, JSObject*, JSValuePtr, const ArgList&)
+static JSValue JSC_HOST_CALL dateNow(ExecState* exec, JSObject*, JSValue, const ArgList&)
{
return jsNumber(exec, getCurrentUTCTime());
}
-static JSValuePtr dateUTC(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL dateUTC(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
int n = args.size();
- if (isnan(args.at(exec, 0)->toNumber(exec))
- || isnan(args.at(exec, 1)->toNumber(exec))
- || (n >= 3 && isnan(args.at(exec, 2)->toNumber(exec)))
- || (n >= 4 && isnan(args.at(exec, 3)->toNumber(exec)))
- || (n >= 5 && isnan(args.at(exec, 4)->toNumber(exec)))
- || (n >= 6 && isnan(args.at(exec, 5)->toNumber(exec)))
- || (n >= 7 && isnan(args.at(exec, 6)->toNumber(exec))))
+ if (isnan(args.at(0).toNumber(exec))
+ || isnan(args.at(1).toNumber(exec))
+ || (n >= 3 && isnan(args.at(2).toNumber(exec)))
+ || (n >= 4 && isnan(args.at(3).toNumber(exec)))
+ || (n >= 5 && isnan(args.at(4).toNumber(exec)))
+ || (n >= 6 && isnan(args.at(5).toNumber(exec)))
+ || (n >= 7 && isnan(args.at(6).toNumber(exec))))
return jsNaN(exec);
GregorianDateTime t;
- int year = args.at(exec, 0)->toInt32(exec);
+ int year = args.at(0).toInt32(exec);
t.year = (year >= 0 && year <= 99) ? year : year - 1900;
- t.month = args.at(exec, 1)->toInt32(exec);
- t.monthDay = (n >= 3) ? args.at(exec, 2)->toInt32(exec) : 1;
- t.hour = args.at(exec, 3)->toInt32(exec);
- t.minute = args.at(exec, 4)->toInt32(exec);
- t.second = args.at(exec, 5)->toInt32(exec);
- double ms = (n >= 7) ? args.at(exec, 6)->toNumber(exec) : 0;
+ t.month = args.at(1).toInt32(exec);
+ t.monthDay = (n >= 3) ? args.at(2).toInt32(exec) : 1;
+ t.hour = args.at(3).toInt32(exec);
+ t.minute = args.at(4).toInt32(exec);
+ t.second = args.at(5).toInt32(exec);
+ double ms = (n >= 7) ? args.at(6).toNumber(exec) : 0;
return jsNumber(exec, gregorianDateTimeToMS(t, ms, true));
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/DateInstance.h b/src/3rdparty/webkit/JavaScriptCore/runtime/DateInstance.h
index 8dbca81..0ecd1db 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/DateInstance.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/DateInstance.h
@@ -32,7 +32,7 @@ namespace JSC {
explicit DateInstance(PassRefPtr<Structure>);
virtual ~DateInstance();
- double internalNumber() const { return internalValue()->uncheckedGetNumber(); }
+ double internalNumber() const { return internalValue().uncheckedGetNumber(); }
bool getTime(GregorianDateTime&, int& offset) const;
bool getUTCTime(GregorianDateTime&) const;
@@ -52,9 +52,9 @@ namespace JSC {
mutable Cache* m_cache;
};
- DateInstance* asDateInstance(JSValuePtr);
+ DateInstance* asDateInstance(JSValue);
- inline DateInstance* asDateInstance(JSValuePtr value)
+ inline DateInstance* asDateInstance(JSValue value)
{
ASSERT(asObject(value)->inherits(&DateInstance::info));
return static_cast<DateInstance*>(asObject(value));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/DateMath.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/DateMath.cpp
index 9cfe256..2f8c88c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/DateMath.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/DateMath.cpp
@@ -48,6 +48,7 @@
#include <time.h>
#include <wtf/ASCIICType.h>
#include <wtf/Assertions.h>
+#include <wtf/CurrentTime.h>
#include <wtf/MathExtras.h>
#include <wtf/StringExtras.h>
@@ -67,10 +68,6 @@
#include <sys/timeb.h>
#endif
-#if HAVE(STRINGS_H)
-#include <strings.h>
-#endif
-
using namespace WTF;
namespace JSC {
@@ -291,139 +288,10 @@ double getCurrentUTCTime()
return floor(getCurrentUTCTimeWithMicroseconds());
}
-#if PLATFORM(WIN_OS)
-
-static LARGE_INTEGER qpcFrequency;
-static bool syncedTime;
-
-static double highResUpTime()
-{
- // We use QPC, but only after sanity checking its result, due to bugs:
- // http://support.microsoft.com/kb/274323
- // http://support.microsoft.com/kb/895980
- // http://msdn.microsoft.com/en-us/library/ms644904.aspx ("...you can get different results on different processors due to bugs in the basic input/output system (BIOS) or the hardware abstraction layer (HAL)."
-
- static LARGE_INTEGER qpcLast;
- static DWORD tickCountLast;
- static bool inited;
-
- LARGE_INTEGER qpc;
- QueryPerformanceCounter(&qpc);
- DWORD tickCount = GetTickCount();
-
- if (inited) {
- __int64 qpcElapsed = ((qpc.QuadPart - qpcLast.QuadPart) * 1000) / qpcFrequency.QuadPart;
- __int64 tickCountElapsed;
- if (tickCount >= tickCountLast)
- tickCountElapsed = (tickCount - tickCountLast);
- else {
-#if COMPILER(MINGW)
- __int64 tickCountLarge = tickCount + 0x100000000ULL;
-#else
- __int64 tickCountLarge = tickCount + 0x100000000I64;
-#endif
- tickCountElapsed = tickCountLarge - tickCountLast;
- }
-
- // force a re-sync if QueryPerformanceCounter differs from GetTickCount by more than 500ms.
- // (500ms value is from http://support.microsoft.com/kb/274323)
- __int64 diff = tickCountElapsed - qpcElapsed;
- if (diff > 500 || diff < -500)
- syncedTime = false;
- } else
- inited = true;
-
- qpcLast = qpc;
- tickCountLast = tickCount;
-
- return (1000.0 * qpc.QuadPart) / static_cast<double>(qpcFrequency.QuadPart);;
-}
-
-static double lowResUTCTime()
-{
-#if PLATFORM(WIN_CE)
- SYSTEMTIME systemTime;
- GetSystemTime(&systemTime);
- struct tm tmtime;
- tmtime.tm_year = systemTime.wYear - 1900;
- tmtime.tm_mon = systemTime.wMonth - 1;
- tmtime.tm_mday = systemTime.wDay;
- tmtime.tm_wday = systemTime.wDayOfWeek;
- tmtime.tm_hour = systemTime.wHour;
- tmtime.tm_min = systemTime.wMinute;
- tmtime.tm_sec = systemTime.wSecond;
- time_t timet = mktime(&tmtime);
- return timet * msPerSecond + systemTime.wMilliseconds;
-#else
- struct _timeb timebuffer;
- _ftime(&timebuffer);
- return timebuffer.time * msPerSecond + timebuffer.millitm;
-#endif
-}
-
-static bool qpcAvailable()
-{
- static bool available;
- static bool checked;
-
- if (checked)
- return available;
-
- available = QueryPerformanceFrequency(&qpcFrequency);
- checked = true;
- return available;
-}
-
-#endif
-
+// Returns current time in milliseconds since 1 Jan 1970.
double getCurrentUTCTimeWithMicroseconds()
{
-#if PLATFORM(WIN_OS)
- // Use a combination of ftime and QueryPerformanceCounter.
- // ftime returns the information we want, but doesn't have sufficient resolution.
- // QueryPerformanceCounter has high resolution, but is only usable to measure time intervals.
- // To combine them, we call ftime and QueryPerformanceCounter initially. Later calls will use QueryPerformanceCounter
- // by itself, adding the delta to the saved ftime. We periodically re-sync to correct for drift.
- static bool started;
- static double syncLowResUTCTime;
- static double syncHighResUpTime;
- static double lastUTCTime;
-
- double lowResTime = lowResUTCTime();
-
- if (!qpcAvailable())
- return lowResTime;
-
- double highResTime = highResUpTime();
-
- if (!syncedTime) {
- timeBeginPeriod(1); // increase time resolution around low-res time getter
- syncLowResUTCTime = lowResTime = lowResUTCTime();
- timeEndPeriod(1); // restore time resolution
- syncHighResUpTime = highResTime;
- syncedTime = true;
- }
-
- double highResElapsed = highResTime - syncHighResUpTime;
- double utc = syncLowResUTCTime + highResElapsed;
-
- // force a clock re-sync if we've drifted
- double lowResElapsed = lowResTime - syncLowResUTCTime;
- const double maximumAllowedDriftMsec = 15.625 * 2.0; // 2x the typical low-res accuracy
- if (fabs(highResElapsed - lowResElapsed) > maximumAllowedDriftMsec)
- syncedTime = false;
-
- // make sure time doesn't run backwards (only correct if difference is < 2 seconds, since DST or clock changes could occur)
- const double backwardTimeLimit = 2000.0;
- if (utc < lastUTCTime && (lastUTCTime - utc) < backwardTimeLimit)
- return lastUTCTime;
- lastUTCTime = utc;
-#else
- struct timeval tv;
- gettimeofday(&tv, 0);
- double utc = tv.tv_sec * msPerSecond + tv.tv_usec / 1000.0;
-#endif
- return utc;
+ return currentTime() * 1000.0;
}
void getLocalTime(const time_t* localTime, struct tm* localTM)
@@ -1047,14 +915,14 @@ UString formatTime(const GregorianDateTime &t, bool utc)
snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d GMT", t.hour, t.minute, t.second);
} else {
int offset = abs(gmtoffset(t));
- char tzname[70];
+ char timeZoneName[70];
struct tm gtm = t;
- strftime(tzname, sizeof(tzname), "%Z", &gtm);
+ strftime(timeZoneName, sizeof(timeZoneName), "%Z", &gtm);
- if (tzname[0]) {
+ if (timeZoneName[0]) {
snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d GMT%c%02d%02d (%s)",
t.hour, t.minute, t.second,
- gmtoffset(t) < 0 ? '-' : '+', offset / (60*60), (offset / 60) % 60, tzname);
+ gmtoffset(t) < 0 ? '-' : '+', offset / (60*60), (offset / 60) % 60, timeZoneName);
} else {
snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d GMT%c%02d%02d",
t.hour, t.minute, t.second,
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/DatePrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/DatePrototype.cpp
index 79ab2a2..ff3fb19 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/DatePrototype.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/DatePrototype.cpp
@@ -23,10 +23,16 @@
#include "DatePrototype.h"
#include "DateMath.h"
+#include "Error.h"
#include "JSString.h"
#include "ObjectPrototype.h"
#include "DateInstance.h"
#include <float.h>
+
+#if !PLATFORM(MAC) && HAVE(LANGINFO_H)
+#include <langinfo.h>
+#endif
+
#include <limits.h>
#include <locale.h>
#include <math.h>
@@ -58,50 +64,49 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(DatePrototype);
-static JSValuePtr dateProtoFuncGetDate(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetDay(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetFullYear(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetHours(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetMilliSeconds(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetMinutes(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetMonth(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetSeconds(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetTime(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetTimezoneOffset(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetUTCDate(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetUTCDay(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetUTCFullYear(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetUTCHours(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetUTCMilliseconds(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetUTCMinutes(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetUTCMonth(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetUTCSeconds(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncGetYear(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetDate(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetFullYear(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetHours(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetMilliSeconds(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetMinutes(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetMonth(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetSeconds(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetTime(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetUTCDate(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetUTCFullYear(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetUTCHours(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetUTCMilliseconds(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetUTCMinutes(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetUTCMonth(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetUTCSeconds(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncSetYear(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncToDateString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncToGMTString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncToLocaleDateString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncToLocaleString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncToLocaleTimeString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncToString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncToTimeString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncToUTCString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr dateProtoFuncValueOf(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetDate(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetDay(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetFullYear(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetHours(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetMilliSeconds(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetMinutes(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetMonth(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetSeconds(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetTime(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetTimezoneOffset(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetUTCDate(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetUTCDay(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetUTCFullYear(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetUTCHours(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetUTCMilliseconds(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetUTCMinutes(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetUTCMonth(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetUTCSeconds(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncGetYear(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetDate(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetFullYear(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetHours(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetMilliSeconds(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetMinutes(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetMonth(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetSeconds(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetTime(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetUTCDate(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetUTCFullYear(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetUTCHours(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetUTCMilliseconds(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetUTCMinutes(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetUTCMonth(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetUTCSeconds(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncSetYear(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncToDateString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncToGMTString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncToLocaleDateString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncToLocaleString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncToLocaleTimeString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncToString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncToTimeString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL dateProtoFuncToUTCString(ExecState*, JSObject*, JSValue, const ArgList&);
}
@@ -109,8 +114,13 @@ static JSValuePtr dateProtoFuncValueOf(ExecState*, JSObject*, JSValuePtr, const
namespace JSC {
+enum LocaleDateTimeFormat { LocaleDateAndTime, LocaleDate, LocaleTime };
+
#if PLATFORM(MAC)
+// FIXME: Since this is superior to the strftime-based version, why limit this to PLATFORM(MAC)?
+// Instead we should consider using this whenever PLATFORM(CF) is true.
+
static CFDateFormatterStyle styleFromArgString(const UString& string, CFDateFormatterStyle defaultStyle)
{
if (string == "short")
@@ -124,24 +134,24 @@ static CFDateFormatterStyle styleFromArgString(const UString& string, CFDateForm
return defaultStyle;
}
-static UString formatLocaleDate(ExecState* exec, double time, bool includeDate, bool includeTime, const ArgList& args)
+static JSCell* formatLocaleDate(ExecState* exec, DateInstance*, double timeInMilliseconds, LocaleDateTimeFormat format, const ArgList& args)
{
- CFDateFormatterStyle dateStyle = (includeDate ? kCFDateFormatterLongStyle : kCFDateFormatterNoStyle);
- CFDateFormatterStyle timeStyle = (includeTime ? kCFDateFormatterLongStyle : kCFDateFormatterNoStyle);
+ CFDateFormatterStyle dateStyle = (format != LocaleTime ? kCFDateFormatterLongStyle : kCFDateFormatterNoStyle);
+ CFDateFormatterStyle timeStyle = (format != LocaleDate ? kCFDateFormatterLongStyle : kCFDateFormatterNoStyle);
bool useCustomFormat = false;
UString customFormatString;
- UString arg0String = args.at(exec, 0)->toString(exec);
- if (arg0String == "custom" && !args.at(exec, 1)->isUndefined()) {
+ UString arg0String = args.at(0).toString(exec);
+ if (arg0String == "custom" && !args.at(1).isUndefined()) {
useCustomFormat = true;
- customFormatString = args.at(exec, 1)->toString(exec);
- } else if (includeDate && includeTime && !args.at(exec, 1)->isUndefined()) {
+ customFormatString = args.at(1).toString(exec);
+ } else if (format == LocaleDateAndTime && !args.at(1).isUndefined()) {
dateStyle = styleFromArgString(arg0String, dateStyle);
- timeStyle = styleFromArgString(args.at(exec, 1)->toString(exec), timeStyle);
- } else if (includeDate && !args.at(exec, 0)->isUndefined())
+ timeStyle = styleFromArgString(args.at(1).toString(exec), timeStyle);
+ } else if (format != LocaleTime && !args.at(0).isUndefined())
dateStyle = styleFromArgString(arg0String, dateStyle);
- else if (includeTime && !args.at(exec, 0)->isUndefined())
+ else if (format != LocaleDate && !args.at(0).isUndefined())
timeStyle = styleFromArgString(arg0String, timeStyle);
CFLocaleRef locale = CFLocaleCopyCurrent();
@@ -149,12 +159,12 @@ static UString formatLocaleDate(ExecState* exec, double time, bool includeDate,
CFRelease(locale);
if (useCustomFormat) {
- CFStringRef customFormatCFString = CFStringCreateWithCharacters(0, (UniChar *)customFormatString.data(), customFormatString.size());
+ CFStringRef customFormatCFString = CFStringCreateWithCharacters(0, customFormatString.data(), customFormatString.size());
CFDateFormatterSetFormat(formatter, customFormatCFString);
CFRelease(customFormatCFString);
}
- CFStringRef string = CFDateFormatterCreateStringWithAbsoluteTime(0, formatter, time - kCFAbsoluteTimeIntervalSince1970);
+ CFStringRef string = CFDateFormatterCreateStringWithAbsoluteTime(0, formatter, floor(timeInMilliseconds / msPerSecond) - kCFAbsoluteTimeIntervalSince1970);
CFRelease(formatter);
@@ -166,20 +176,22 @@ static UString formatLocaleDate(ExecState* exec, double time, bool includeDate,
ASSERT(length <= bufferLength);
if (length > bufferLength)
length = bufferLength;
- CFStringGetCharacters(string, CFRangeMake(0, length), reinterpret_cast<UniChar *>(buffer));
+ CFStringGetCharacters(string, CFRangeMake(0, length), buffer);
CFRelease(string);
- return UString(buffer, length);
+ return jsNontrivialString(exec, UString(buffer, length));
}
-#else
+#else // !PLATFORM(MAC)
-enum LocaleDateTimeFormat { LocaleDateAndTime, LocaleDate, LocaleTime };
-
-static JSCell* formatLocaleDate(ExecState* exec, const GregorianDateTime& gdt, const LocaleDateTimeFormat format)
+static JSCell* formatLocaleDate(ExecState* exec, const GregorianDateTime& gdt, LocaleDateTimeFormat format)
{
- static const char* formatStrings[] = {"%#c", "%#x", "%X"};
+#if HAVE(LANGINFO_H)
+ static const nl_item formats[] = { D_T_FMT, D_FMT, T_FMT };
+#else
+ static const char* const formatStrings[] = { "%#c", "%#x", "%X" };
+#endif
// Offset year if needed
struct tm localTM = gdt;
@@ -188,10 +200,26 @@ static JSCell* formatLocaleDate(ExecState* exec, const GregorianDateTime& gdt, c
if (yearNeedsOffset)
localTM.tm_year = equivalentYearForDST(year) - 1900;
+#if HAVE(LANGINFO_H)
+ // We do not allow strftime to generate dates with 2-digits years,
+ // both to avoid ambiguity, and a crash in strncpy, for years that
+ // need offset.
+ char* formatString = strdup(nl_langinfo(formats[format]));
+ char* yPos = strchr(formatString, 'y');
+ if (yPos)
+ *yPos = 'Y';
+#endif
+
// Do the formatting
const int bufsize = 128;
char timebuffer[bufsize];
+
+#if HAVE(LANGINFO_H)
+ size_t ret = strftime(timebuffer, bufsize, formatString, &localTM);
+ free(formatString);
+#else
size_t ret = strftime(timebuffer, bufsize, formatStrings[format], &localTM);
+#endif
if (ret == 0)
return jsEmptyString(exec);
@@ -211,7 +239,15 @@ static JSCell* formatLocaleDate(ExecState* exec, const GregorianDateTime& gdt, c
return jsNontrivialString(exec, timebuffer);
}
-#endif // PLATFORM(WIN_OS)
+static JSCell* formatLocaleDate(ExecState* exec, DateInstance* dateObject, double timeInMilliseconds, LocaleDateTimeFormat format, const ArgList&)
+{
+ GregorianDateTime gregorianDateTime;
+ const bool notUTC = false;
+ dateObject->msToGregorianDateTime(timeInMilliseconds, notUTC, gregorianDateTime);
+ return formatLocaleDate(exec, gregorianDateTime, format);
+}
+
+#endif // !PLATFORM(MAC)
// Converts a list of arguments sent to a Date member function into milliseconds, updating
// ms (representing milliseconds) and t (representing the rest of the date structure) appropriately.
@@ -231,19 +267,19 @@ static bool fillStructuresUsingTimeArgs(ExecState* exec, const ArgList& args, in
// hours
if (maxArgs >= 4 && idx < numArgs) {
t->hour = 0;
- milliseconds += args.at(exec, idx++)->toInt32(exec, ok) * msPerHour;
+ milliseconds += args.at(idx++).toInt32(exec, ok) * msPerHour;
}
// minutes
if (maxArgs >= 3 && idx < numArgs && ok) {
t->minute = 0;
- milliseconds += args.at(exec, idx++)->toInt32(exec, ok) * msPerMinute;
+ milliseconds += args.at(idx++).toInt32(exec, ok) * msPerMinute;
}
// seconds
if (maxArgs >= 2 && idx < numArgs && ok) {
t->second = 0;
- milliseconds += args.at(exec, idx++)->toInt32(exec, ok) * msPerSecond;
+ milliseconds += args.at(idx++).toInt32(exec, ok) * msPerSecond;
}
if (!ok)
@@ -251,7 +287,7 @@ static bool fillStructuresUsingTimeArgs(ExecState* exec, const ArgList& args, in
// milliseconds
if (idx < numArgs) {
- double millis = args.at(exec, idx)->toNumber(exec);
+ double millis = args.at(idx).toNumber(exec);
ok = isfinite(millis);
milliseconds += millis;
} else
@@ -277,16 +313,16 @@ static bool fillStructuresUsingDateArgs(ExecState *exec, const ArgList& args, in
// years
if (maxArgs >= 3 && idx < numArgs)
- t->year = args.at(exec, idx++)->toInt32(exec, ok) - 1900;
+ t->year = args.at(idx++).toInt32(exec, ok) - 1900;
// months
if (maxArgs >= 2 && idx < numArgs && ok)
- t->month = args.at(exec, idx++)->toInt32(exec, ok);
+ t->month = args.at(idx++).toInt32(exec, ok);
// days
if (idx < numArgs && ok) {
t->monthDay = 0;
- *ms += args.at(exec, idx)->toInt32(exec, ok) * msPerDay;
+ *ms += args.at(idx).toInt32(exec, ok) * msPerDay;
}
return ok;
@@ -295,7 +331,6 @@ static bool fillStructuresUsingDateArgs(ExecState *exec, const ArgList& args, in
const ClassInfo DatePrototype::info = {"Date", &DateInstance::info, 0, ExecState::dateTable};
/* Source for DatePrototype.lut.h
- FIXME: We could use templates to simplify the UTC variants.
@begin dateTable
toString dateProtoFuncToString DontEnum|Function 0
toUTCString dateProtoFuncToUTCString DontEnum|Function 0
@@ -304,7 +339,7 @@ const ClassInfo DatePrototype::info = {"Date", &DateInstance::info, 0, ExecState
toLocaleString dateProtoFuncToLocaleString DontEnum|Function 0
toLocaleDateString dateProtoFuncToLocaleDateString DontEnum|Function 0
toLocaleTimeString dateProtoFuncToLocaleTimeString DontEnum|Function 0
- valueOf dateProtoFuncValueOf DontEnum|Function 0
+ valueOf dateProtoFuncGetTime DontEnum|Function 0
getTime dateProtoFuncGetTime DontEnum|Function 0
getFullYear dateProtoFuncGetFullYear DontEnum|Function 0
getUTCFullYear dateProtoFuncGetUTCFullYear DontEnum|Function 0
@@ -343,6 +378,7 @@ const ClassInfo DatePrototype::info = {"Date", &DateInstance::info, 0, ExecState
getYear dateProtoFuncGetYear DontEnum|Function 0
@end
*/
+
// ECMA 15.9.4
DatePrototype::DatePrototype(ExecState* exec, PassRefPtr<Structure> structure)
@@ -359,9 +395,9 @@ bool DatePrototype::getOwnPropertySlot(ExecState* exec, const Identifier& proper
// Functions
-JSValuePtr dateProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -376,9 +412,9 @@ JSValuePtr dateProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisValu
return jsNontrivialString(exec, formatDate(t) + " " + formatTime(t, utc));
}
-JSValuePtr dateProtoFuncToUTCString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncToUTCString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -393,9 +429,9 @@ JSValuePtr dateProtoFuncToUTCString(ExecState* exec, JSObject*, JSValuePtr thisV
return jsNontrivialString(exec, formatDateUTCVariant(t) + " " + formatTime(t, utc));
}
-JSValuePtr dateProtoFuncToDateString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncToDateString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -410,9 +446,9 @@ JSValuePtr dateProtoFuncToDateString(ExecState* exec, JSObject*, JSValuePtr this
return jsNontrivialString(exec, formatDate(t));
}
-JSValuePtr dateProtoFuncToTimeString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncToTimeString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -427,9 +463,9 @@ JSValuePtr dateProtoFuncToTimeString(ExecState* exec, JSObject*, JSValuePtr this
return jsNontrivialString(exec, formatTime(t, utc));
}
-JSValuePtr dateProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -437,23 +473,12 @@ JSValuePtr dateProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValuePtr th
if (isnan(milli))
return jsNontrivialString(exec, "Invalid Date");
-#if PLATFORM(MAC)
- double secs = floor(milli / msPerSecond);
- return jsNontrivialString(exec, formatLocaleDate(exec, secs, true, true, args));
-#else
- UNUSED_PARAM(args);
-
- const bool utc = false;
-
- GregorianDateTime t;
- thisDateObj->msToGregorianDateTime(milli, utc, t);
- return formatLocaleDate(exec, t, LocaleDateAndTime);
-#endif
+ return formatLocaleDate(exec, thisDateObj, milli, LocaleDateAndTime, args);
}
-JSValuePtr dateProtoFuncToLocaleDateString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncToLocaleDateString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -461,23 +486,12 @@ JSValuePtr dateProtoFuncToLocaleDateString(ExecState* exec, JSObject*, JSValuePt
if (isnan(milli))
return jsNontrivialString(exec, "Invalid Date");
-#if PLATFORM(MAC)
- double secs = floor(milli / msPerSecond);
- return jsNontrivialString(exec, formatLocaleDate(exec, secs, true, false, args));
-#else
- UNUSED_PARAM(args);
-
- const bool utc = false;
-
- GregorianDateTime t;
- thisDateObj->msToGregorianDateTime(milli, utc, t);
- return formatLocaleDate(exec, t, LocaleDate);
-#endif
+ return formatLocaleDate(exec, thisDateObj, milli, LocaleDate, args);
}
-JSValuePtr dateProtoFuncToLocaleTimeString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncToLocaleTimeString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -485,36 +499,12 @@ JSValuePtr dateProtoFuncToLocaleTimeString(ExecState* exec, JSObject*, JSValuePt
if (isnan(milli))
return jsNontrivialString(exec, "Invalid Date");
-#if PLATFORM(MAC)
- double secs = floor(milli / msPerSecond);
- return jsNontrivialString(exec, formatLocaleDate(exec, secs, false, true, args));
-#else
- UNUSED_PARAM(args);
-
- const bool utc = false;
-
- GregorianDateTime t;
- thisDateObj->msToGregorianDateTime(milli, utc, t);
- return formatLocaleDate(exec, t, LocaleTime);
-#endif
-}
-
-JSValuePtr dateProtoFuncValueOf(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
-{
- if (!thisValue->isObject(&DateInstance::info))
- return throwError(exec, TypeError);
-
- DateInstance* thisDateObj = asDateInstance(thisValue);
- double milli = thisDateObj->internalNumber();
- if (isnan(milli))
- return jsNaN(exec);
-
- return jsNumber(exec, milli);
+ return formatLocaleDate(exec, thisDateObj, milli, LocaleTime, args);
}
-JSValuePtr dateProtoFuncGetTime(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetTime(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -525,9 +515,9 @@ JSValuePtr dateProtoFuncGetTime(ExecState* exec, JSObject*, JSValuePtr thisValue
return jsNumber(exec, milli);
}
-JSValuePtr dateProtoFuncGetFullYear(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetFullYear(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -542,9 +532,9 @@ JSValuePtr dateProtoFuncGetFullYear(ExecState* exec, JSObject*, JSValuePtr thisV
return jsNumber(exec, 1900 + t.year);
}
-JSValuePtr dateProtoFuncGetUTCFullYear(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetUTCFullYear(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -559,9 +549,9 @@ JSValuePtr dateProtoFuncGetUTCFullYear(ExecState* exec, JSObject*, JSValuePtr th
return jsNumber(exec, 1900 + t.year);
}
-JSValuePtr dateProtoFuncToGMTString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncToGMTString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -576,9 +566,9 @@ JSValuePtr dateProtoFuncToGMTString(ExecState* exec, JSObject*, JSValuePtr thisV
return jsNontrivialString(exec, formatDateUTCVariant(t) + " " + formatTime(t, utc));
}
-JSValuePtr dateProtoFuncGetMonth(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetMonth(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -593,9 +583,9 @@ JSValuePtr dateProtoFuncGetMonth(ExecState* exec, JSObject*, JSValuePtr thisValu
return jsNumber(exec, t.month);
}
-JSValuePtr dateProtoFuncGetUTCMonth(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetUTCMonth(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -610,9 +600,9 @@ JSValuePtr dateProtoFuncGetUTCMonth(ExecState* exec, JSObject*, JSValuePtr thisV
return jsNumber(exec, t.month);
}
-JSValuePtr dateProtoFuncGetDate(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetDate(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -627,9 +617,9 @@ JSValuePtr dateProtoFuncGetDate(ExecState* exec, JSObject*, JSValuePtr thisValue
return jsNumber(exec, t.monthDay);
}
-JSValuePtr dateProtoFuncGetUTCDate(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetUTCDate(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -644,9 +634,9 @@ JSValuePtr dateProtoFuncGetUTCDate(ExecState* exec, JSObject*, JSValuePtr thisVa
return jsNumber(exec, t.monthDay);
}
-JSValuePtr dateProtoFuncGetDay(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetDay(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -661,9 +651,9 @@ JSValuePtr dateProtoFuncGetDay(ExecState* exec, JSObject*, JSValuePtr thisValue,
return jsNumber(exec, t.weekDay);
}
-JSValuePtr dateProtoFuncGetUTCDay(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetUTCDay(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -678,9 +668,9 @@ JSValuePtr dateProtoFuncGetUTCDay(ExecState* exec, JSObject*, JSValuePtr thisVal
return jsNumber(exec, t.weekDay);
}
-JSValuePtr dateProtoFuncGetHours(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetHours(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -695,9 +685,9 @@ JSValuePtr dateProtoFuncGetHours(ExecState* exec, JSObject*, JSValuePtr thisValu
return jsNumber(exec, t.hour);
}
-JSValuePtr dateProtoFuncGetUTCHours(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetUTCHours(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -712,9 +702,9 @@ JSValuePtr dateProtoFuncGetUTCHours(ExecState* exec, JSObject*, JSValuePtr thisV
return jsNumber(exec, t.hour);
}
-JSValuePtr dateProtoFuncGetMinutes(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetMinutes(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -729,9 +719,9 @@ JSValuePtr dateProtoFuncGetMinutes(ExecState* exec, JSObject*, JSValuePtr thisVa
return jsNumber(exec, t.minute);
}
-JSValuePtr dateProtoFuncGetUTCMinutes(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetUTCMinutes(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -746,9 +736,9 @@ JSValuePtr dateProtoFuncGetUTCMinutes(ExecState* exec, JSObject*, JSValuePtr thi
return jsNumber(exec, t.minute);
}
-JSValuePtr dateProtoFuncGetSeconds(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetSeconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -763,9 +753,9 @@ JSValuePtr dateProtoFuncGetSeconds(ExecState* exec, JSObject*, JSValuePtr thisVa
return jsNumber(exec, t.second);
}
-JSValuePtr dateProtoFuncGetUTCSeconds(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetUTCSeconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = true;
@@ -780,9 +770,9 @@ JSValuePtr dateProtoFuncGetUTCSeconds(ExecState* exec, JSObject*, JSValuePtr thi
return jsNumber(exec, t.second);
}
-JSValuePtr dateProtoFuncGetMilliSeconds(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetMilliSeconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -795,9 +785,9 @@ JSValuePtr dateProtoFuncGetMilliSeconds(ExecState* exec, JSObject*, JSValuePtr t
return jsNumber(exec, ms);
}
-JSValuePtr dateProtoFuncGetUTCMilliseconds(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetUTCMilliseconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
@@ -810,9 +800,9 @@ JSValuePtr dateProtoFuncGetUTCMilliseconds(ExecState* exec, JSObject*, JSValuePt
return jsNumber(exec, ms);
}
-JSValuePtr dateProtoFuncGetTimezoneOffset(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetTimezoneOffset(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
@@ -827,29 +817,29 @@ JSValuePtr dateProtoFuncGetTimezoneOffset(ExecState* exec, JSObject*, JSValuePtr
return jsNumber(exec, -gmtoffset(t) / minutesPerHour);
}
-JSValuePtr dateProtoFuncSetTime(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetTime(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
- double milli = timeClip(args.at(exec, 0)->toNumber(exec));
- JSValuePtr result = jsNumber(exec, milli);
+ double milli = timeClip(args.at(0).toNumber(exec));
+ JSValue result = jsNumber(exec, milli);
thisDateObj->setInternalValue(result);
return result;
}
-static JSValuePtr setNewValueFromTimeArgs(ExecState* exec, JSValuePtr thisValue, const ArgList& args, int numArgsToUse, bool inputIsUTC)
+static JSValue setNewValueFromTimeArgs(ExecState* exec, JSValue thisValue, const ArgList& args, int numArgsToUse, bool inputIsUTC)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
double milli = thisDateObj->internalNumber();
if (args.isEmpty() || isnan(milli)) {
- JSValuePtr result = jsNaN(exec);
+ JSValue result = jsNaN(exec);
thisDateObj->setInternalValue(result);
return result;
}
@@ -861,24 +851,24 @@ static JSValuePtr setNewValueFromTimeArgs(ExecState* exec, JSValuePtr thisValue,
thisDateObj->msToGregorianDateTime(milli, inputIsUTC, t);
if (!fillStructuresUsingTimeArgs(exec, args, numArgsToUse, &ms, &t)) {
- JSValuePtr result = jsNaN(exec);
+ JSValue result = jsNaN(exec);
thisDateObj->setInternalValue(result);
return result;
}
- JSValuePtr result = jsNumber(exec, gregorianDateTimeToMS(t, ms, inputIsUTC));
+ JSValue result = jsNumber(exec, gregorianDateTimeToMS(t, ms, inputIsUTC));
thisDateObj->setInternalValue(result);
return result;
}
-static JSValuePtr setNewValueFromDateArgs(ExecState* exec, JSValuePtr thisValue, const ArgList& args, int numArgsToUse, bool inputIsUTC)
+static JSValue setNewValueFromDateArgs(ExecState* exec, JSValue thisValue, const ArgList& args, int numArgsToUse, bool inputIsUTC)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
DateInstance* thisDateObj = asDateInstance(thisValue);
if (args.isEmpty()) {
- JSValuePtr result = jsNaN(exec);
+ JSValue result = jsNaN(exec);
thisDateObj->setInternalValue(result);
return result;
}
@@ -898,110 +888,110 @@ static JSValuePtr setNewValueFromDateArgs(ExecState* exec, JSValuePtr thisValue,
}
if (!fillStructuresUsingDateArgs(exec, args, numArgsToUse, &ms, &t)) {
- JSValuePtr result = jsNaN(exec);
+ JSValue result = jsNaN(exec);
thisDateObj->setInternalValue(result);
return result;
}
- JSValuePtr result = jsNumber(exec, gregorianDateTimeToMS(t, ms, inputIsUTC));
+ JSValue result = jsNumber(exec, gregorianDateTimeToMS(t, ms, inputIsUTC));
thisDateObj->setInternalValue(result);
return result;
}
-JSValuePtr dateProtoFuncSetMilliSeconds(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetMilliSeconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = false;
return setNewValueFromTimeArgs(exec, thisValue, args, 1, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetUTCMilliseconds(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetUTCMilliseconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = true;
return setNewValueFromTimeArgs(exec, thisValue, args, 1, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetSeconds(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetSeconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = false;
return setNewValueFromTimeArgs(exec, thisValue, args, 2, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetUTCSeconds(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetUTCSeconds(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = true;
return setNewValueFromTimeArgs(exec, thisValue, args, 2, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetMinutes(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetMinutes(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = false;
return setNewValueFromTimeArgs(exec, thisValue, args, 3, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetUTCMinutes(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetUTCMinutes(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = true;
return setNewValueFromTimeArgs(exec, thisValue, args, 3, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetHours(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetHours(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = false;
return setNewValueFromTimeArgs(exec, thisValue, args, 4, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetUTCHours(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetUTCHours(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = true;
return setNewValueFromTimeArgs(exec, thisValue, args, 4, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetDate(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetDate(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = false;
return setNewValueFromDateArgs(exec, thisValue, args, 1, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetUTCDate(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetUTCDate(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = true;
return setNewValueFromDateArgs(exec, thisValue, args, 1, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetMonth(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetMonth(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = false;
return setNewValueFromDateArgs(exec, thisValue, args, 2, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetUTCMonth(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetUTCMonth(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = true;
return setNewValueFromDateArgs(exec, thisValue, args, 2, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetFullYear(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetFullYear(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = false;
return setNewValueFromDateArgs(exec, thisValue, args, 3, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetUTCFullYear(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetUTCFullYear(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
const bool inputIsUTC = true;
return setNewValueFromDateArgs(exec, thisValue, args, 3, inputIsUTC);
}
-JSValuePtr dateProtoFuncSetYear(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL dateProtoFuncSetYear(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
DateInstance* thisDateObj = asDateInstance(thisValue);
if (args.isEmpty()) {
- JSValuePtr result = jsNaN(exec);
+ JSValue result = jsNaN(exec);
thisDateObj->setInternalValue(result);
return result;
}
@@ -1021,22 +1011,22 @@ JSValuePtr dateProtoFuncSetYear(ExecState* exec, JSObject*, JSValuePtr thisValue
}
bool ok = true;
- int32_t year = args.at(exec, 0)->toInt32(exec, ok);
+ int32_t year = args.at(0).toInt32(exec, ok);
if (!ok) {
- JSValuePtr result = jsNaN(exec);
+ JSValue result = jsNaN(exec);
thisDateObj->setInternalValue(result);
return result;
}
t.year = (year > 99 || year < 0) ? year - 1900 : year;
- JSValuePtr result = jsNumber(exec, gregorianDateTimeToMS(t, ms, utc));
+ JSValue result = jsNumber(exec, gregorianDateTimeToMS(t, ms, utc));
thisDateObj->setInternalValue(result);
return result;
}
-JSValuePtr dateProtoFuncGetYear(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL dateProtoFuncGetYear(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&DateInstance::info))
+ if (!thisValue.isObject(&DateInstance::info))
return throwError(exec, TypeError);
const bool utc = false;
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/DatePrototype.h b/src/3rdparty/webkit/JavaScriptCore/runtime/DatePrototype.h
index a6bbdf2..5f4d0ec 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/DatePrototype.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/DatePrototype.h
@@ -36,7 +36,7 @@ namespace JSC {
virtual const ClassInfo* classInfo() const { return &info; }
static const ClassInfo info;
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType));
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Error.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Error.cpp
index 5e21c8e..db1d8cc 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Error.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Error.cpp
@@ -26,6 +26,7 @@
#include "ConstructData.h"
#include "ErrorConstructor.h"
+#include "JSFunction.h"
#include "JSGlobalObject.h"
#include "JSObject.h"
#include "JSString.h"
@@ -72,7 +73,7 @@ JSObject* Error::create(ExecState* exec, ErrorType type, const UString& message,
break;
}
- ArgList args;
+ MarkedArgumentBuffer args;
if (message.isEmpty())
args.append(jsString(exec, name));
else
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ErrorConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/ErrorConstructor.cpp
index 2e8a523..07b7e23 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ErrorConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ErrorConstructor.cpp
@@ -41,8 +41,8 @@ ErrorConstructor::ErrorConstructor(ExecState* exec, PassRefPtr<Structure> struct
ErrorInstance* constructError(ExecState* exec, const ArgList& args)
{
ErrorInstance* obj = new (exec) ErrorInstance(exec->lexicalGlobalObject()->errorStructure());
- if (!args.at(exec, 0)->isUndefined())
- obj->putDirect(exec->propertyNames().message, jsString(exec, args.at(exec, 0)->toString(exec)));
+ if (!args.at(0).isUndefined())
+ obj->putDirect(exec->propertyNames().message, jsString(exec, args.at(0).toString(exec)));
return obj;
}
@@ -58,7 +58,7 @@ ConstructType ErrorConstructor::getConstructData(ConstructData& constructData)
}
// ECMA 15.9.2
-static JSValuePtr callErrorConstructor(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL callErrorConstructor(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
// "Error()" gives the sames result as "new Error()"
return constructError(exec, args);
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ErrorPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/ErrorPrototype.cpp
index 35358f7..599390e 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ErrorPrototype.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ErrorPrototype.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "ErrorPrototype.h"
+#include "JSFunction.h"
#include "JSString.h"
#include "ObjectPrototype.h"
#include "PrototypeFunction.h"
@@ -30,7 +31,7 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(ErrorPrototype);
-static JSValuePtr errorProtoFuncToString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL errorProtoFuncToString(ExecState*, JSObject*, JSValue, const ArgList&);
// ECMA 15.9.4
ErrorPrototype::ErrorPrototype(ExecState* exec, PassRefPtr<Structure> structure, Structure* prototypeFunctionStructure)
@@ -41,24 +42,24 @@ ErrorPrototype::ErrorPrototype(ExecState* exec, PassRefPtr<Structure> structure,
putDirectWithoutTransition(exec->propertyNames().name, jsNontrivialString(exec, "Error"), DontEnum);
putDirectWithoutTransition(exec->propertyNames().message, jsNontrivialString(exec, "Unknown error"), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, errorProtoFuncToString), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, errorProtoFuncToString), DontEnum);
}
-JSValuePtr errorProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL errorProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
UString s = "Error";
- JSValuePtr v = thisObj->get(exec, exec->propertyNames().name);
- if (!v->isUndefined())
- s = v->toString(exec);
+ JSValue v = thisObj->get(exec, exec->propertyNames().name);
+ if (!v.isUndefined())
+ s = v.toString(exec);
v = thisObj->get(exec, exec->propertyNames().message);
- if (!v->isUndefined()) {
+ if (!v.isUndefined()) {
// Mozilla-compatible format.
s += ": ";
- s += v->toString(exec);
+ s += v.toString(exec);
}
return jsNontrivialString(exec, s);
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ExceptionHelpers.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/ExceptionHelpers.cpp
index 42ddf04..e63594c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ExceptionHelpers.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ExceptionHelpers.cpp
@@ -31,6 +31,7 @@
#include "CodeBlock.h"
#include "CallFrame.h"
+#include "JSGlobalObjectFunctions.h"
#include "JSObject.h"
#include "JSNotAnObject.h"
#include "Interpreter.h"
@@ -38,16 +39,6 @@
namespace JSC {
-static void substitute(UString& string, const UString& substring)
-{
- int position = string.find("%s");
- ASSERT(position != -1);
- UString newString = string.substr(0, position);
- newString.append(substring);
- newString.append(string.substr(position + 2));
- string = newString;
-}
-
class InterruptedExecutionError : public JSObject {
public:
InterruptedExecutionError(JSGlobalData* globalData)
@@ -56,38 +47,26 @@ public:
}
virtual bool isWatchdogException() const { return true; }
+
+ virtual UString toString(ExecState*) const { return "JavaScript execution exceeded timeout."; }
};
-JSValuePtr createInterruptedExecutionException(JSGlobalData* globalData)
+JSValue createInterruptedExecutionException(JSGlobalData* globalData)
{
return new (globalData) InterruptedExecutionError(globalData);
}
-JSValuePtr createError(ExecState* exec, ErrorType e, const char* msg)
+static JSValue createError(ExecState* exec, ErrorType e, const char* msg)
{
return Error::create(exec, e, msg, -1, -1, 0);
}
-JSValuePtr createError(ExecState* exec, ErrorType e, const char* msg, const Identifier& label)
-{
- UString message = msg;
- substitute(message, label.ustring());
- return Error::create(exec, e, message, -1, -1, 0);
-}
-
-JSValuePtr createError(ExecState* exec, ErrorType e, const char* msg, JSValuePtr v)
-{
- UString message = msg;
- substitute(message, v->toString(exec));
- return Error::create(exec, e, message, -1, -1, 0);
-}
-
-JSValuePtr createStackOverflowError(ExecState* exec)
+JSValue createStackOverflowError(ExecState* exec)
{
return createError(exec, RangeError, "Maximum call stack size exceeded.");
}
-JSValuePtr createUndefinedVariableError(ExecState* exec, const Identifier& ident, unsigned bytecodeOffset, CodeBlock* codeBlock)
+JSValue createUndefinedVariableError(ExecState* exec, const Identifier& ident, unsigned bytecodeOffset, CodeBlock* codeBlock)
{
int startOffset = 0;
int endOffset = 0;
@@ -102,12 +81,10 @@ JSValuePtr createUndefinedVariableError(ExecState* exec, const Identifier& ident
return exception;
}
-bool isStrWhiteSpace(UChar c);
-
-static UString createErrorMessage(ExecState* exec, CodeBlock* codeBlock, int, int expressionStart, int expressionStop, JSValuePtr value, UString error)
+static UString createErrorMessage(ExecState* exec, CodeBlock* codeBlock, int, int expressionStart, int expressionStop, JSValue value, UString error)
{
if (!expressionStop || expressionStart > codeBlock->source()->length()) {
- UString errorText = value->toString(exec);
+ UString errorText = value.toString(exec);
errorText.append(" is ");
errorText.append(error);
return errorText;
@@ -119,7 +96,7 @@ static UString createErrorMessage(ExecState* exec, CodeBlock* codeBlock, int, in
errorText.append('\'');
errorText.append(codeBlock->source()->getRange(expressionStart, expressionStop));
errorText.append("' [");
- errorText.append(value->toString(exec));
+ errorText.append(value.toString(exec));
errorText.append("] is ");
} else {
// No range information, so give a few characters of context
@@ -140,7 +117,7 @@ static UString createErrorMessage(ExecState* exec, CodeBlock* codeBlock, int, in
errorText.append("near '...");
errorText.append(codeBlock->source()->getRange(start, stop));
errorText.append("...' [");
- errorText.append(value->toString(exec));
+ errorText.append(value.toString(exec));
errorText.append("] is ");
}
errorText.append(error);
@@ -148,7 +125,7 @@ static UString createErrorMessage(ExecState* exec, CodeBlock* codeBlock, int, in
return errorText;
}
-JSObject* createInvalidParamError(ExecState* exec, const char* op, JSValuePtr value, unsigned bytecodeOffset, CodeBlock* codeBlock)
+JSObject* createInvalidParamError(ExecState* exec, const char* op, JSValue value, unsigned bytecodeOffset, CodeBlock* codeBlock)
{
UString message = "not a valid argument for '";
message.append(op);
@@ -166,7 +143,7 @@ JSObject* createInvalidParamError(ExecState* exec, const char* op, JSValuePtr va
return exception;
}
-JSObject* createNotAConstructorError(ExecState* exec, JSValuePtr value, unsigned bytecodeOffset, CodeBlock* codeBlock)
+JSObject* createNotAConstructorError(ExecState* exec, JSValue value, unsigned bytecodeOffset, CodeBlock* codeBlock)
{
int startOffset = 0;
int endOffset = 0;
@@ -187,7 +164,7 @@ JSObject* createNotAConstructorError(ExecState* exec, JSValuePtr value, unsigned
return exception;
}
-JSValuePtr createNotAFunctionError(ExecState* exec, JSValuePtr value, unsigned bytecodeOffset, CodeBlock* codeBlock)
+JSValue createNotAFunctionError(ExecState* exec, JSValue value, unsigned bytecodeOffset, CodeBlock* codeBlock)
{
int startOffset = 0;
int endOffset = 0;
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ExceptionHelpers.h b/src/3rdparty/webkit/JavaScriptCore/runtime/ExceptionHelpers.h
index d4dfdd8..09d99dc 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ExceptionHelpers.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ExceptionHelpers.h
@@ -40,16 +40,16 @@ namespace JSC {
class JSGlobalData;
class JSNotAnObjectErrorStub;
class JSObject;
- class JSValuePtr;
+ class JSValue;
class Node;
- JSValuePtr createInterruptedExecutionException(JSGlobalData*);
- JSValuePtr createStackOverflowError(ExecState*);
- JSValuePtr createUndefinedVariableError(ExecState*, const Identifier&, unsigned bytecodeOffset, CodeBlock*);
+ JSValue createInterruptedExecutionException(JSGlobalData*);
+ JSValue createStackOverflowError(ExecState*);
+ JSValue createUndefinedVariableError(ExecState*, const Identifier&, unsigned bytecodeOffset, CodeBlock*);
JSNotAnObjectErrorStub* createNotAnObjectErrorStub(ExecState*, bool isNull);
- JSObject* createInvalidParamError(ExecState*, const char* op, JSValuePtr, unsigned bytecodeOffset, CodeBlock*);
- JSObject* createNotAConstructorError(ExecState*, JSValuePtr, unsigned bytecodeOffset, CodeBlock*);
- JSValuePtr createNotAFunctionError(ExecState*, JSValuePtr, unsigned bytecodeOffset, CodeBlock*);
+ JSObject* createInvalidParamError(ExecState*, const char* op, JSValue, unsigned bytecodeOffset, CodeBlock*);
+ JSObject* createNotAConstructorError(ExecState*, JSValue, unsigned bytecodeOffset, CodeBlock*);
+ JSValue createNotAFunctionError(ExecState*, JSValue, unsigned bytecodeOffset, CodeBlock*);
JSObject* createNotAnObjectError(ExecState*, JSNotAnObjectErrorStub*, unsigned bytecodeOffset, CodeBlock*);
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionConstructor.cpp
index e8cfe65..f4f5cc8 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionConstructor.cpp
@@ -54,7 +54,7 @@ ConstructType FunctionConstructor::getConstructData(ConstructData& constructData
return ConstructTypeHost;
}
-static JSValuePtr callFunctionConstructor(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL callFunctionConstructor(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
return constructFunction(exec, args);
}
@@ -66,7 +66,7 @@ CallType FunctionConstructor::getCallData(CallData& callData)
return CallTypeHost;
}
-static FunctionBodyNode* functionBody(ProgramNode* program)
+FunctionBodyNode* extractFunctionBody(ProgramNode* program)
{
if (!program)
return 0;
@@ -75,17 +75,19 @@ static FunctionBodyNode* functionBody(ProgramNode* program)
if (children.size() != 1)
return 0;
- ExprStatementNode* exprStatement = static_cast<ExprStatementNode*>(children[0].get());
+ StatementNode* exprStatement = children[0];
+ ASSERT(exprStatement);
ASSERT(exprStatement->isExprStatement());
if (!exprStatement || !exprStatement->isExprStatement())
return 0;
- FuncExprNode* funcExpr = static_cast<FuncExprNode*>(exprStatement->expr());
+ ExpressionNode* funcExpr = static_cast<ExprStatementNode*>(exprStatement)->expr();
+ ASSERT(funcExpr);
ASSERT(funcExpr->isFuncExprNode());
if (!funcExpr || !funcExpr->isFuncExprNode())
return 0;
- FunctionBodyNode* body = funcExpr->body();
+ FunctionBodyNode* body = static_cast<FuncExprNode*>(funcExpr)->body();
ASSERT(body);
return body;
}
@@ -93,16 +95,19 @@ static FunctionBodyNode* functionBody(ProgramNode* program)
// ECMA 15.3.2 The Function Constructor
JSObject* constructFunction(ExecState* exec, const ArgList& args, const Identifier& functionName, const UString& sourceURL, int lineNumber)
{
+ // Functions need to have a space following the opening { due to for web compatibility
+ // see https://bugs.webkit.org/show_bug.cgi?id=24350
+ // We also need \n before the closing } to handle // comments at the end of the last line
UString program;
if (args.isEmpty())
- program = "(function(){})";
+ program = "(function() { \n})";
else if (args.size() == 1)
- program = "(function(){" + args.at(exec, 0)->toString(exec) + "})";
+ program = "(function() { " + args.at(0).toString(exec) + "\n})";
else {
- program = "(function(" + args.at(exec, 0)->toString(exec);
+ program = "(function(" + args.at(0).toString(exec);
for (size_t i = 1; i < args.size() - 1; i++)
- program += "," + args.at(exec, i)->toString(exec);
- program += "){" + args.at(exec, args.size() - 1)->toString(exec) + "})";
+ program += "," + args.at(i).toString(exec);
+ program += ") { " + args.at(args.size() - 1).toString(exec) + "\n})";
}
int errLine;
@@ -110,7 +115,7 @@ JSObject* constructFunction(ExecState* exec, const ArgList& args, const Identifi
SourceCode source = makeSource(program, sourceURL, lineNumber);
RefPtr<ProgramNode> programNode = exec->globalData().parser->parse<ProgramNode>(exec, exec->dynamicGlobalObject()->debugger(), source, &errLine, &errMsg);
- FunctionBodyNode* body = functionBody(programNode.get());
+ FunctionBodyNode* body = extractFunctionBody(programNode.get());
if (!body)
return throwError(exec, SyntaxError, errMsg, errLine, source.provider()->asID(), source.provider()->url());
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionConstructor.h b/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionConstructor.h
index e8486dc..124b354 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionConstructor.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionConstructor.h
@@ -26,6 +26,8 @@
namespace JSC {
class FunctionPrototype;
+ class ProgramNode;
+ class FunctionBodyNode;
class FunctionConstructor : public InternalFunction {
public:
@@ -39,6 +41,8 @@ namespace JSC {
JSObject* constructFunction(ExecState*, const ArgList&, const Identifier& functionName, const UString& sourceURL, int lineNumber);
JSObject* constructFunction(ExecState*, const ArgList&);
+ FunctionBodyNode* extractFunctionBody(ProgramNode*);
+
} // namespace JSC
#endif // FunctionConstructor_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.cpp
index 4d9d682..9ba2144 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.cpp
@@ -26,15 +26,16 @@
#include "JSFunction.h"
#include "JSString.h"
#include "Interpreter.h"
+#include "Lexer.h"
#include "PrototypeFunction.h"
namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(FunctionPrototype);
-static JSValuePtr functionProtoFuncToString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr functionProtoFuncApply(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr functionProtoFuncCall(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL functionProtoFuncToString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL functionProtoFuncApply(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL functionProtoFuncCall(ExecState*, JSObject*, JSValue, const ArgList&);
FunctionPrototype::FunctionPrototype(ExecState* exec, PassRefPtr<Structure> structure)
: InternalFunction(&exec->globalData(), structure, exec->propertyNames().nullIdentifier)
@@ -42,14 +43,16 @@ FunctionPrototype::FunctionPrototype(ExecState* exec, PassRefPtr<Structure> stru
putDirectWithoutTransition(exec->propertyNames().length, jsNumber(exec, 0), DontDelete | ReadOnly | DontEnum);
}
-void FunctionPrototype::addFunctionProperties(ExecState* exec, Structure* prototypeFunctionStructure)
+void FunctionPrototype::addFunctionProperties(ExecState* exec, Structure* prototypeFunctionStructure, NativeFunctionWrapper** callFunction, NativeFunctionWrapper** applyFunction)
{
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, functionProtoFuncToString), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 2, exec->propertyNames().apply, functionProtoFuncApply), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().call, functionProtoFuncCall), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, functionProtoFuncToString), DontEnum);
+ *applyFunction = new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 2, exec->propertyNames().apply, functionProtoFuncApply);
+ putDirectFunctionWithoutTransition(exec, *applyFunction, DontEnum);
+ *callFunction = new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().call, functionProtoFuncCall);
+ putDirectFunctionWithoutTransition(exec, *callFunction, DontEnum);
}
-static JSValuePtr callFunctionPrototype(ExecState*, JSObject*, JSValuePtr, const ArgList&)
+static JSValue JSC_HOST_CALL callFunctionPrototype(ExecState*, JSObject*, JSValue, const ArgList&)
{
return jsUndefined();
}
@@ -63,14 +66,34 @@ CallType FunctionPrototype::getCallData(CallData& callData)
// Functions
-JSValuePtr functionProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+// Compatibility hack for the Optimost JavaScript library. (See <rdar://problem/6595040>.)
+static inline void insertSemicolonIfNeeded(UString& functionBody)
{
- if (thisValue->isObject(&JSFunction::info)) {
+ ASSERT(functionBody[0] == '{');
+ ASSERT(functionBody[functionBody.size() - 1] == '}');
+
+ for (size_t i = functionBody.size() - 2; i > 0; --i) {
+ UChar ch = functionBody[i];
+ if (!Lexer::isWhiteSpace(ch) && !Lexer::isLineTerminator(ch)) {
+ if (ch != ';' && ch != '}')
+ functionBody = functionBody.substr(0, i + 1) + ";" + functionBody.substr(i + 1, functionBody.size() - (i + 1));
+ return;
+ }
+ }
+}
+
+JSValue JSC_HOST_CALL functionProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
+{
+ if (thisValue.isObject(&JSFunction::info)) {
JSFunction* function = asFunction(thisValue);
- return jsString(exec, "function " + function->name(&exec->globalData()) + "(" + function->body()->paramString() + ") " + function->body()->toSourceString());
+ if (!function->isHostFunction()) {
+ UString functionBody = function->body()->toSourceString();
+ insertSemicolonIfNeeded(functionBody);
+ return jsString(exec, "function " + function->name(&exec->globalData()) + "(" + function->body()->paramString() + ") " + functionBody);
+ }
}
- if (thisValue->isObject(&InternalFunction::info)) {
+ if (thisValue.isObject(&InternalFunction::info)) {
InternalFunction* function = asInternalFunction(thisValue);
return jsString(exec, "function " + function->name(&exec->globalData()) + "() {\n [native code]\n}");
}
@@ -78,59 +101,44 @@ JSValuePtr functionProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr this
return throwError(exec, TypeError);
}
-JSValuePtr functionProtoFuncApply(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL functionProtoFuncApply(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
CallData callData;
- CallType callType = thisValue->getCallData(callData);
+ CallType callType = thisValue.getCallData(callData);
if (callType == CallTypeNone)
return throwError(exec, TypeError);
- JSValuePtr thisArg = args.at(exec, 0);
- JSValuePtr argArray = args.at(exec, 1);
+ JSValue array = args.at(1);
- JSValuePtr applyThis;
- if (thisArg->isUndefinedOrNull())
- applyThis = exec->globalThisValue();
- else
- applyThis = thisArg->toObject(exec);
-
- ArgList applyArgs;
- if (!argArray->isUndefinedOrNull()) {
- if (!argArray->isObject())
+ MarkedArgumentBuffer applyArgs;
+ if (!array.isUndefinedOrNull()) {
+ if (!array.isObject())
return throwError(exec, TypeError);
- if (asObject(argArray)->classInfo() == &Arguments::info)
- asArguments(argArray)->fillArgList(exec, applyArgs);
- else if (exec->interpreter()->isJSArray(argArray))
- asArray(argArray)->fillArgList(exec, applyArgs);
- else if (asObject(argArray)->inherits(&JSArray::info)) {
- unsigned length = asArray(argArray)->get(exec, exec->propertyNames().length)->toUInt32(exec);
+ if (asObject(array)->classInfo() == &Arguments::info)
+ asArguments(array)->fillArgList(exec, applyArgs);
+ else if (isJSArray(&exec->globalData(), array))
+ asArray(array)->fillArgList(exec, applyArgs);
+ else if (asObject(array)->inherits(&JSArray::info)) {
+ unsigned length = asArray(array)->get(exec, exec->propertyNames().length).toUInt32(exec);
for (unsigned i = 0; i < length; ++i)
- applyArgs.append(asArray(argArray)->get(exec, i));
+ applyArgs.append(asArray(array)->get(exec, i));
} else
return throwError(exec, TypeError);
}
- return call(exec, thisValue, callType, callData, applyThis, applyArgs);
+ return call(exec, thisValue, callType, callData, args.at(0), applyArgs);
}
-JSValuePtr functionProtoFuncCall(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL functionProtoFuncCall(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
CallData callData;
- CallType callType = thisValue->getCallData(callData);
+ CallType callType = thisValue.getCallData(callData);
if (callType == CallTypeNone)
return throwError(exec, TypeError);
- JSValuePtr thisArg = args.at(exec, 0);
-
- JSObject* callThis;
- if (thisArg->isUndefinedOrNull())
- callThis = exec->globalThisValue();
- else
- callThis = thisArg->toObject(exec);
-
- ArgList argsTail;
- args.getSlice(1, argsTail);
- return call(exec, thisValue, callType, callData, callThis, argsTail);
+ ArgList callArgs;
+ args.getSlice(1, callArgs);
+ return call(exec, thisValue, callType, callData, args.at(0), callArgs);
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.h b/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.h
index 33d68b7..607ddab 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.h
@@ -25,12 +25,14 @@
namespace JSC {
+ class PrototypeFunction;
+
class FunctionPrototype : public InternalFunction {
public:
FunctionPrototype(ExecState*, PassRefPtr<Structure>);
- void addFunctionProperties(ExecState*, Structure* prototypeFunctionStructure);
+ void addFunctionProperties(ExecState*, Structure* prototypeFunctionStructure, NativeFunctionWrapper** callFunction, NativeFunctionWrapper** applyFunction);
- static PassRefPtr<Structure> createStructure(JSValuePtr proto)
+ static PassRefPtr<Structure> createStructure(JSValue proto)
{
return Structure::create(proto, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot));
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/GetterSetter.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/GetterSetter.cpp
index d24a024..cd1b40a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/GetterSetter.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/GetterSetter.cpp
@@ -38,17 +38,17 @@ void GetterSetter::mark()
m_setter->mark();
}
-JSValuePtr GetterSetter::toPrimitive(ExecState*, PreferredPrimitiveType) const
+JSValue GetterSetter::toPrimitive(ExecState*, PreferredPrimitiveType) const
{
ASSERT_NOT_REACHED();
return jsNull();
}
-bool GetterSetter::getPrimitiveNumber(ExecState*, double& number, JSValuePtr& value)
+bool GetterSetter::getPrimitiveNumber(ExecState*, double& number, JSValue& value)
{
ASSERT_NOT_REACHED();
number = 0;
- value = noValue();
+ value = JSValue();
return true;
}
@@ -73,7 +73,7 @@ UString GetterSetter::toString(ExecState*) const
JSObject* GetterSetter::toObject(ExecState* exec) const
{
ASSERT_NOT_REACHED();
- return jsNull()->toObject(exec);
+ return jsNull().toObject(exec);
}
bool GetterSetter::isGetterSetter() const
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/GetterSetter.h b/src/3rdparty/webkit/JavaScriptCore/runtime/GetterSetter.h
index 48e1baf..e6b74a1 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/GetterSetter.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/GetterSetter.h
@@ -50,8 +50,8 @@ namespace JSC {
private:
virtual bool isGetterSetter() const;
- virtual JSValuePtr toPrimitive(ExecState*, PreferredPrimitiveType) const;
- virtual bool getPrimitiveNumber(ExecState*, double& number, JSValuePtr& value);
+ virtual JSValue toPrimitive(ExecState*, PreferredPrimitiveType) const;
+ virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue& value);
virtual bool toBoolean(ExecState*) const;
virtual double toNumber(ExecState*) const;
virtual UString toString(ExecState*) const;
@@ -61,9 +61,9 @@ namespace JSC {
JSObject* m_setter;
};
- GetterSetter* asGetterSetter(JSValuePtr);
+ GetterSetter* asGetterSetter(JSValue);
- inline GetterSetter* asGetterSetter(JSValuePtr value)
+ inline GetterSetter* asGetterSetter(JSValue value)
{
ASSERT(asCell(value)->isGetterSetter());
return static_cast<GetterSetter*>(asCell(value));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Identifier.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Identifier.cpp
index 8372010..040c123 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Identifier.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Identifier.cpp
@@ -124,12 +124,12 @@ struct CStringTranslator {
PassRefPtr<UString::Rep> Identifier::add(JSGlobalData* globalData, const char* c)
{
if (!c) {
- UString::Rep::null.hash();
- return &UString::Rep::null;
+ UString::Rep::null().hash();
+ return &UString::Rep::null();
}
if (!c[0]) {
- UString::Rep::empty.hash();
- return &UString::Rep::empty;
+ UString::Rep::empty().hash();
+ return &UString::Rep::empty();
}
if (!c[1])
return add(globalData, globalData->smallStrings.singleCharacterStringRep(static_cast<unsigned char>(c[0])));
@@ -194,8 +194,8 @@ PassRefPtr<UString::Rep> Identifier::add(JSGlobalData* globalData, const UChar*
return add(globalData, globalData->smallStrings.singleCharacterStringRep(c));
}
if (!length) {
- UString::Rep::empty.hash();
- return &UString::Rep::empty;
+ UString::Rep::empty().hash();
+ return &UString::Rep::empty();
}
UCharBuffer buf = {s, length};
pair<HashSet<UString::Rep*>::iterator, bool> addResult = globalData->identifierTable->add<UCharBuffer, UCharBufferTranslator>(buf);
@@ -225,8 +225,8 @@ PassRefPtr<UString::Rep> Identifier::addSlowCase(JSGlobalData* globalData, UStri
}
}
if (!r->len) {
- UString::Rep::empty.hash();
- return &UString::Rep::empty;
+ UString::Rep::empty().hash();
+ return &UString::Rep::empty();
}
return *globalData->identifierTable->add(r).first;
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/InitializeThreading.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/InitializeThreading.cpp
index a17c386..cda9fb1 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/InitializeThreading.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/InitializeThreading.cpp
@@ -49,9 +49,9 @@ static pthread_once_t initializeThreadingKeyOnce = PTHREAD_ONCE_INIT;
static void initializeThreadingOnce()
{
WTF::initializeThreading();
+ initializeUString();
#if ENABLE(JSC_MULTIPLE_THREADS)
s_dtoaP5Mutex = new Mutex;
- UString::null();
initDateMath();
#endif
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/InternalFunction.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/InternalFunction.cpp
index 6714cf5..b5c9571 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/InternalFunction.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/InternalFunction.cpp
@@ -48,4 +48,24 @@ const UString& InternalFunction::name(JSGlobalData* globalData)
return asString(getDirect(globalData->propertyNames->name))->value();
}
+const UString InternalFunction::displayName(JSGlobalData* globalData)
+{
+ JSValue displayName = getDirect(globalData->propertyNames->displayName);
+
+ if (displayName && isJSString(globalData, displayName))
+ return asString(displayName)->value();
+
+ return UString::null();
+}
+
+const UString InternalFunction::calculatedDisplayName(JSGlobalData* globalData)
+{
+ const UString explicitName = displayName(globalData);
+
+ if (!explicitName.isEmpty())
+ return explicitName;
+
+ return name(globalData);
+}
+
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/InternalFunction.h b/src/3rdparty/webkit/JavaScriptCore/runtime/InternalFunction.h
index cc4b917..310644c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/InternalFunction.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/InternalFunction.h
@@ -34,11 +34,13 @@ namespace JSC {
class InternalFunction : public JSObject {
public:
virtual const ClassInfo* classInfo() const;
- static const ClassInfo info;
+ static JS_EXPORTDATA const ClassInfo info;
const UString& name(JSGlobalData*);
+ const UString displayName(JSGlobalData*);
+ const UString calculatedDisplayName(JSGlobalData*);
- static PassRefPtr<Structure> createStructure(JSValuePtr proto)
+ static PassRefPtr<Structure> createStructure(JSValue proto)
{
return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance | HasStandardGetOwnPropertySlot));
}
@@ -51,9 +53,9 @@ namespace JSC {
virtual CallType getCallData(CallData&) = 0;
};
- InternalFunction* asInternalFunction(JSValuePtr);
+ InternalFunction* asInternalFunction(JSValue);
- inline InternalFunction* asInternalFunction(JSValuePtr value)
+ inline InternalFunction* asInternalFunction(JSValue value)
{
ASSERT(asObject(value)->inherits(&InternalFunction::info));
return static_cast<InternalFunction*>(asObject(value));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.cpp
index d03b3f0..8996629 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.cpp
@@ -75,7 +75,7 @@ void JSActivation::mark()
for ( ; i < count; ++i) {
Register& r = registerArray[i];
- if (!r.marked())
+ if (r.jsValue() && !r.marked())
r.mark();
}
}
@@ -85,7 +85,7 @@ bool JSActivation::getOwnPropertySlot(ExecState* exec, const Identifier& propert
if (symbolTableGet(propertyName, slot))
return true;
- if (JSValuePtr* location = getDirectLocation(propertyName)) {
+ if (JSValue* location = getDirectLocation(propertyName)) {
slot.setValueSlot(location);
return true;
}
@@ -99,11 +99,11 @@ bool JSActivation::getOwnPropertySlot(ExecState* exec, const Identifier& propert
// We don't call through to JSObject because there's no way to give an
// activation object getter properties or a prototype.
ASSERT(!hasGetterSetterProperties());
- ASSERT(prototype()->isNull());
+ ASSERT(prototype().isNull());
return false;
}
-void JSActivation::put(ExecState*, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void JSActivation::put(ExecState*, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
@@ -118,7 +118,7 @@ void JSActivation::put(ExecState*, const Identifier& propertyName, JSValuePtr va
}
// FIXME: Make this function honor ReadOnly (const) and DontEnum
-void JSActivation::putWithAttributes(ExecState*, const Identifier& propertyName, JSValuePtr value, unsigned attributes)
+void JSActivation::putWithAttributes(ExecState* exec, const Identifier& propertyName, JSValue value, unsigned attributes)
{
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
@@ -130,7 +130,7 @@ void JSActivation::putWithAttributes(ExecState*, const Identifier& propertyName,
// expose in the activation object.
ASSERT(!hasGetterSetterProperties());
PutPropertySlot slot;
- putDirect(propertyName, value, attributes, true, slot);
+ JSObject::putWithAttributes(exec, propertyName, value, attributes, true, slot);
}
bool JSActivation::deleteProperty(ExecState* exec, const Identifier& propertyName)
@@ -151,7 +151,7 @@ bool JSActivation::isDynamicScope() const
return d()->functionBody->usesEval();
}
-JSValuePtr JSActivation::argumentsGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue JSActivation::argumentsGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
JSActivation* activation = asActivation(slot.slotBase());
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.h
index 222f423..c183dac 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.h
@@ -50,11 +50,13 @@ namespace JSC {
virtual bool isDynamicScope() const;
+ virtual bool isActivationObject() const { return true; }
+
virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
- virtual void put(ExecState*, const Identifier&, JSValuePtr, PutPropertySlot&);
+ virtual void put(ExecState*, const Identifier&, JSValue, PutPropertySlot&);
- virtual void putWithAttributes(ExecState*, const Identifier&, JSValuePtr, unsigned attributes);
+ virtual void putWithAttributes(ExecState*, const Identifier&, JSValue, unsigned attributes);
virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
virtual JSObject* toThisObject(ExecState*) const;
@@ -64,7 +66,7 @@ namespace JSC {
virtual const ClassInfo* classInfo() const { return &info; }
static const ClassInfo info;
- static PassRefPtr<Structure> createStructure(JSValuePtr proto) { return Structure::create(proto, TypeInfo(ObjectType, NeedsThisConversion)); }
+ static PassRefPtr<Structure> createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(ObjectType, NeedsThisConversion)); }
private:
struct JSActivationData : public JSVariableObjectData {
@@ -77,15 +79,15 @@ namespace JSC {
RefPtr<FunctionBodyNode> functionBody;
};
- static JSValuePtr argumentsGetter(ExecState*, const Identifier&, const PropertySlot&);
+ static JSValue argumentsGetter(ExecState*, const Identifier&, const PropertySlot&);
NEVER_INLINE PropertySlot::GetValueFunc getArgumentsGetter();
JSActivationData* d() const { return static_cast<JSActivationData*>(JSVariableObject::d); }
};
- JSActivation* asActivation(JSValuePtr);
+ JSActivation* asActivation(JSValue);
- inline JSActivation* asActivation(JSValuePtr value)
+ inline JSActivation* asActivation(JSValue value)
{
ASSERT(asObject(value)->inherits(&JSActivation::info));
return static_cast<JSActivation*>(asObject(value));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.cpp
index 35d0dec..296ac9d 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.cpp
@@ -24,9 +24,11 @@
#include "JSArray.h"
#include "ArrayPrototype.h"
+#include "CachedCall.h"
#include "PropertyNameArray.h"
#include <wtf/AVLTree.h>
#include <wtf/Assertions.h>
+#include <wtf/OwnPtr.h>
#include <Operations.h>
#define CHECK_ARRAY_CONSISTENCY 0
@@ -65,9 +67,9 @@ ASSERT_CLASS_FITS_IN_CELL(JSArray);
// The definition of MAX_STORAGE_VECTOR_LENGTH is dependant on the definition storageSize
// function below - the MAX_STORAGE_VECTOR_LENGTH limit is defined such that the storage
-// size calculation cannot overflow. (sizeof(ArrayStorage) - sizeof(JSValuePtr)) +
-// (vectorLength * sizeof(JSValuePtr)) must be <= 0xFFFFFFFFU (which is maximum value of size_t).
-#define MAX_STORAGE_VECTOR_LENGTH static_cast<unsigned>((0xFFFFFFFFU - (sizeof(ArrayStorage) - sizeof(JSValuePtr))) / sizeof(JSValuePtr))
+// size calculation cannot overflow. (sizeof(ArrayStorage) - sizeof(JSValue)) +
+// (vectorLength * sizeof(JSValue)) must be <= 0xFFFFFFFFU (which is maximum value of size_t).
+#define MAX_STORAGE_VECTOR_LENGTH static_cast<unsigned>((0xFFFFFFFFU - (sizeof(ArrayStorage) - sizeof(JSValue))) / sizeof(JSValue))
// These values have to be macros to be used in max() and min() without introducing
// a PIC branch in Mach-O binaries, see <rdar://problem/5971391>.
@@ -90,10 +92,10 @@ static inline size_t storageSize(unsigned vectorLength)
// MAX_STORAGE_VECTOR_LENGTH is defined such that provided (vectorLength <= MAX_STORAGE_VECTOR_LENGTH)
// - as asserted above - the following calculation cannot overflow.
- size_t size = (sizeof(ArrayStorage) - sizeof(JSValuePtr)) + (vectorLength * sizeof(JSValuePtr));
+ size_t size = (sizeof(ArrayStorage) - sizeof(JSValue)) + (vectorLength * sizeof(JSValue));
// Assertion to detect integer overflow in previous calculation (should not be possible, provided that
// MAX_STORAGE_VECTOR_LENGTH is correctly defined).
- ASSERT(((size - (sizeof(ArrayStorage) - sizeof(JSValuePtr))) / sizeof(JSValuePtr) == vectorLength) && (size >= (sizeof(ArrayStorage) - sizeof(JSValuePtr))));
+ ASSERT(((size - (sizeof(ArrayStorage) - sizeof(JSValue))) / sizeof(JSValue) == vectorLength) && (size >= (sizeof(ArrayStorage) - sizeof(JSValue))));
return size;
}
@@ -149,12 +151,12 @@ JSArray::JSArray(PassRefPtr<Structure> structure, unsigned initialLength)
m_storage->m_vectorLength = initialCapacity;
m_storage->m_length = initialLength;
- Heap::heap(this)->reportExtraMemoryCost(initialCapacity * sizeof(JSValuePtr));
+ Heap::heap(this)->reportExtraMemoryCost(initialCapacity * sizeof(JSValue));
checkConsistency();
}
-JSArray::JSArray(ExecState* exec, PassRefPtr<Structure> structure, const ArgList& list)
+JSArray::JSArray(PassRefPtr<Structure> structure, const ArgList& list)
: JSObject(structure)
{
unsigned length = list.size();
@@ -171,12 +173,11 @@ JSArray::JSArray(ExecState* exec, PassRefPtr<Structure> structure, const ArgList
size_t i = 0;
ArgList::const_iterator end = list.end();
for (ArgList::const_iterator it = list.begin(); it != end; ++it, ++i)
- storage->m_vector[i] = (*it).jsValue(exec);
+ storage->m_vector[i] = *it;
m_storage = storage;
- // When the array is created non-empty, its cells are filled, so it's really no worse than
- // a property map. Therefore don't report extra memory cost.
+ Heap::heap(this)->reportExtraMemoryCost(storageSize(length));
checkConsistency();
}
@@ -200,7 +201,7 @@ bool JSArray::getOwnPropertySlot(ExecState* exec, unsigned i, PropertySlot& slot
}
if (i < storage->m_vectorLength) {
- JSValuePtr& valueSlot = storage->m_vector[i];
+ JSValue& valueSlot = storage->m_vector[i];
if (valueSlot) {
slot.setValueSlot(&valueSlot);
return true;
@@ -234,7 +235,7 @@ bool JSArray::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName
}
// ECMA 15.4.5.1
-void JSArray::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void JSArray::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
bool isArrayIndex;
unsigned i = propertyName.toArrayIndex(&isArrayIndex);
@@ -244,8 +245,8 @@ void JSArray::put(ExecState* exec, const Identifier& propertyName, JSValuePtr va
}
if (propertyName == exec->propertyNames().length) {
- unsigned newLength = value->toUInt32(exec);
- if (value->toNumber(exec) != static_cast<double>(newLength)) {
+ unsigned newLength = value.toUInt32(exec);
+ if (value.toNumber(exec) != static_cast<double>(newLength)) {
throwError(exec, RangeError, "Invalid array length.");
return;
}
@@ -256,7 +257,7 @@ void JSArray::put(ExecState* exec, const Identifier& propertyName, JSValuePtr va
JSObject::put(exec, propertyName, value, slot);
}
-void JSArray::put(ExecState* exec, unsigned i, JSValuePtr value)
+void JSArray::put(ExecState* exec, unsigned i, JSValue value)
{
checkConsistency();
@@ -267,7 +268,7 @@ void JSArray::put(ExecState* exec, unsigned i, JSValuePtr value)
}
if (i < m_storage->m_vectorLength) {
- JSValuePtr& valueSlot = m_storage->m_vector[i];
+ JSValue& valueSlot = m_storage->m_vector[i];
if (valueSlot) {
valueSlot = value;
checkConsistency();
@@ -283,7 +284,7 @@ void JSArray::put(ExecState* exec, unsigned i, JSValuePtr value)
putSlowCase(exec, i, value);
}
-NEVER_INLINE void JSArray::putSlowCase(ExecState* exec, unsigned i, JSValuePtr value)
+NEVER_INLINE void JSArray::putSlowCase(ExecState* exec, unsigned i, JSValue value)
{
ArrayStorage* storage = m_storage;
SparseArrayValueMap* map = storage->m_sparseValueMap;
@@ -349,14 +350,17 @@ NEVER_INLINE void JSArray::putSlowCase(ExecState* exec, unsigned i, JSValuePtr v
}
unsigned vectorLength = storage->m_vectorLength;
+
+ Heap::heap(this)->reportExtraMemoryCost(storageSize(newVectorLength) - storageSize(vectorLength));
+
if (newNumValuesInVector == storage->m_numValuesInVector + 1) {
for (unsigned j = vectorLength; j < newVectorLength; ++j)
- storage->m_vector[j] = noValue();
+ storage->m_vector[j] = JSValue();
if (i > MIN_SPARSE_ARRAY_INDEX)
map->remove(i);
} else {
for (unsigned j = vectorLength; j < max(vectorLength, MIN_SPARSE_ARRAY_INDEX); ++j)
- storage->m_vector[j] = noValue();
+ storage->m_vector[j] = JSValue();
for (unsigned j = max(vectorLength, MIN_SPARSE_ARRAY_INDEX); j < newVectorLength; ++j)
storage->m_vector[j] = map->take(j);
}
@@ -391,12 +395,12 @@ bool JSArray::deleteProperty(ExecState* exec, unsigned i)
ArrayStorage* storage = m_storage;
if (i < storage->m_vectorLength) {
- JSValuePtr& valueSlot = storage->m_vector[i];
+ JSValue& valueSlot = storage->m_vector[i];
if (!valueSlot) {
checkConsistency();
return false;
}
- valueSlot = noValue();
+ valueSlot = JSValue();
--storage->m_numValuesInVector;
if (m_fastAccessCutoff > i)
m_fastAccessCutoff = i;
@@ -462,10 +466,11 @@ bool JSArray::increaseVectorLength(unsigned newLength)
if (!storage)
return false;
+ Heap::heap(this)->reportExtraMemoryCost(storageSize(newVectorLength) - storageSize(vectorLength));
storage->m_vectorLength = newVectorLength;
for (unsigned i = vectorLength; i < newVectorLength; ++i)
- storage->m_vector[i] = noValue();
+ storage->m_vector[i] = JSValue();
m_storage = storage;
return true;
@@ -485,9 +490,9 @@ void JSArray::setLength(unsigned newLength)
unsigned usedVectorLength = min(length, storage->m_vectorLength);
for (unsigned i = newLength; i < usedVectorLength; ++i) {
- JSValuePtr& valueSlot = storage->m_vector[i];
+ JSValue& valueSlot = storage->m_vector[i];
bool hadValue = valueSlot;
- valueSlot = noValue();
+ valueSlot = JSValue();
storage->m_numValuesInVector -= hadValue;
}
@@ -510,7 +515,7 @@ void JSArray::setLength(unsigned newLength)
checkConsistency();
}
-JSValuePtr JSArray::pop()
+JSValue JSArray::pop()
{
checkConsistency();
@@ -520,19 +525,19 @@ JSValuePtr JSArray::pop()
--length;
- JSValuePtr result;
+ JSValue result;
if (m_fastAccessCutoff > length) {
- JSValuePtr& valueSlot = m_storage->m_vector[length];
+ JSValue& valueSlot = m_storage->m_vector[length];
result = valueSlot;
ASSERT(result);
- valueSlot = noValue();
+ valueSlot = JSValue();
--m_storage->m_numValuesInVector;
m_fastAccessCutoff = length;
} else if (length < m_storage->m_vectorLength) {
- JSValuePtr& valueSlot = m_storage->m_vector[length];
+ JSValue& valueSlot = m_storage->m_vector[length];
result = valueSlot;
- valueSlot = noValue();
+ valueSlot = JSValue();
if (result)
--m_storage->m_numValuesInVector;
else
@@ -559,7 +564,7 @@ JSValuePtr JSArray::pop()
return result;
}
-void JSArray::push(ExecState* exec, JSValuePtr value)
+void JSArray::push(ExecState* exec, JSValue value)
{
checkConsistency();
@@ -599,30 +604,68 @@ void JSArray::mark()
unsigned usedVectorLength = min(storage->m_length, storage->m_vectorLength);
for (unsigned i = 0; i < usedVectorLength; ++i) {
- JSValuePtr value = storage->m_vector[i];
- if (value && !value->marked())
- value->mark();
+ JSValue value = storage->m_vector[i];
+ if (value && !value.marked())
+ value.mark();
}
if (SparseArrayValueMap* map = storage->m_sparseValueMap) {
SparseArrayValueMap::iterator end = map->end();
for (SparseArrayValueMap::iterator it = map->begin(); it != end; ++it) {
- JSValuePtr value = it->second;
- if (!value->marked())
- value->mark();
+ JSValue value = it->second;
+ if (!value.marked())
+ value.mark();
}
}
}
-typedef std::pair<JSValuePtr, UString> ArrayQSortPair;
+static int compareNumbersForQSort(const void* a, const void* b)
+{
+ double da = static_cast<const JSValue*>(a)->uncheckedGetNumber();
+ double db = static_cast<const JSValue*>(b)->uncheckedGetNumber();
+ return (da > db) - (da < db);
+}
+
+typedef std::pair<JSValue, UString> ValueStringPair;
static int compareByStringPairForQSort(const void* a, const void* b)
{
- const ArrayQSortPair* va = static_cast<const ArrayQSortPair*>(a);
- const ArrayQSortPair* vb = static_cast<const ArrayQSortPair*>(b);
+ const ValueStringPair* va = static_cast<const ValueStringPair*>(a);
+ const ValueStringPair* vb = static_cast<const ValueStringPair*>(b);
return compare(va->second, vb->second);
}
+void JSArray::sortNumeric(ExecState* exec, JSValue compareFunction, CallType callType, const CallData& callData)
+{
+ unsigned lengthNotIncludingUndefined = compactForSorting();
+ if (m_storage->m_sparseValueMap) {
+ throwOutOfMemoryError(exec);
+ return;
+ }
+
+ if (!lengthNotIncludingUndefined)
+ return;
+
+ bool allValuesAreNumbers = true;
+ size_t size = m_storage->m_numValuesInVector;
+ for (size_t i = 0; i < size; ++i) {
+ if (!m_storage->m_vector[i].isNumber()) {
+ allValuesAreNumbers = false;
+ break;
+ }
+ }
+
+ if (!allValuesAreNumbers)
+ return sort(exec, compareFunction, callType, callData);
+
+ // For numeric comparison, which is fast, qsort is faster than mergesort. We
+ // also don't require mergesort's stability, since there's no user visible
+ // side-effect from swapping the order of equal primitive values.
+ qsort(m_storage->m_vector, size, sizeof(JSValue), compareNumbersForQSort);
+
+ checkConsistency(SortConsistencyCheck);
+}
+
void JSArray::sort(ExecState* exec)
{
unsigned lengthNotIncludingUndefined = compactForSorting();
@@ -639,15 +682,15 @@ void JSArray::sort(ExecState* exec)
// buffer. Besides, this protects us from crashing if some objects have custom toString methods that return
// random or otherwise changing results, effectively making compare function inconsistent.
- Vector<ArrayQSortPair> values(lengthNotIncludingUndefined);
+ Vector<ValueStringPair> values(lengthNotIncludingUndefined);
if (!values.begin()) {
throwOutOfMemoryError(exec);
return;
}
for (size_t i = 0; i < lengthNotIncludingUndefined; i++) {
- JSValuePtr value = m_storage->m_vector[i];
- ASSERT(!value->isUndefined());
+ JSValue value = m_storage->m_vector[i];
+ ASSERT(!value.isUndefined());
values[i].first = value;
}
@@ -658,7 +701,7 @@ void JSArray::sort(ExecState* exec)
// a toString call raises an exception.
for (size_t i = 0; i < lengthNotIncludingUndefined; i++)
- values[i].second = values[i].first->toString(exec);
+ values[i].second = values[i].first.toString(exec);
if (exec->hadException())
return;
@@ -667,11 +710,11 @@ void JSArray::sort(ExecState* exec)
// than O(N log N).
#if HAVE(MERGESORT)
- mergesort(values.begin(), values.size(), sizeof(ArrayQSortPair), compareByStringPairForQSort);
+ mergesort(values.begin(), values.size(), sizeof(ValueStringPair), compareByStringPairForQSort);
#else
// FIXME: The qsort library function is likely to not be a stable sort.
// ECMAScript-262 does not specify a stable sort, but in practice, browsers perform a stable sort.
- qsort(values.begin(), values.size(), sizeof(ArrayQSortPair), compareByStringPairForQSort);
+ qsort(values.begin(), values.size(), sizeof(ValueStringPair), compareByStringPairForQSort);
#endif
// FIXME: If the toString function changed the length of the array, this might be
@@ -684,7 +727,7 @@ void JSArray::sort(ExecState* exec)
}
struct AVLTreeNodeForArrayCompare {
- JSValuePtr value;
+ JSValue value;
// Child pointers. The high bit of gt is robbed and used as the
// balance factor sign. The high bit of lt is robbed and used as
@@ -695,15 +738,16 @@ struct AVLTreeNodeForArrayCompare {
struct AVLTreeAbstractorForArrayCompare {
typedef int32_t handle; // Handle is an index into m_nodes vector.
- typedef JSValuePtr key;
+ typedef JSValue key;
typedef int32_t size;
Vector<AVLTreeNodeForArrayCompare> m_nodes;
ExecState* m_exec;
- JSValuePtr m_compareFunction;
+ JSValue m_compareFunction;
CallType m_compareCallType;
const CallData* m_compareCallData;
- JSValuePtr m_globalThisValue;
+ JSValue m_globalThisValue;
+ OwnPtr<CachedCall> m_cachedCall;
handle get_less(handle h) { return m_nodes[h].lt & 0x7FFFFFFF; }
void set_less(handle h, handle lh) { m_nodes[h].lt &= 0x80000000; m_nodes[h].lt |= lh; }
@@ -733,16 +777,24 @@ struct AVLTreeAbstractorForArrayCompare {
int compare_key_key(key va, key vb)
{
- ASSERT(!va->isUndefined());
- ASSERT(!vb->isUndefined());
+ ASSERT(!va.isUndefined());
+ ASSERT(!vb.isUndefined());
if (m_exec->hadException())
return 1;
- ArgList arguments;
- arguments.append(va);
- arguments.append(vb);
- double compareResult = call(m_exec, m_compareFunction, m_compareCallType, *m_compareCallData, m_globalThisValue, arguments)->toNumber(m_exec);
+ double compareResult;
+ if (m_cachedCall) {
+ m_cachedCall->setThis(m_globalThisValue);
+ m_cachedCall->setArgument(0, va);
+ m_cachedCall->setArgument(1, vb);
+ compareResult = m_cachedCall->call().toNumber(m_cachedCall->newCallFrame());
+ } else {
+ MarkedArgumentBuffer arguments;
+ arguments.append(va);
+ arguments.append(vb);
+ compareResult = call(m_exec, m_compareFunction, m_compareCallType, *m_compareCallData, m_globalThisValue, arguments).toNumber(m_exec);
+ }
return (compareResult < 0) ? -1 : 1; // Not passing equality through, because we need to store all values, even if equivalent.
}
@@ -752,7 +804,7 @@ struct AVLTreeAbstractorForArrayCompare {
static handle null() { return 0x7FFFFFFF; }
};
-void JSArray::sort(ExecState* exec, JSValuePtr compareFunction, CallType callType, const CallData& callData)
+void JSArray::sort(ExecState* exec, JSValue compareFunction, CallType callType, const CallData& callData)
{
checkConsistency();
@@ -777,6 +829,9 @@ void JSArray::sort(ExecState* exec, JSValuePtr compareFunction, CallType callTyp
tree.abstractor().m_globalThisValue = exec->globalThisValue();
tree.abstractor().m_nodes.resize(usedVectorLength + (m_storage->m_sparseValueMap ? m_storage->m_sparseValueMap->size() : 0));
+ if (callType == CallTypeJS)
+ tree.abstractor().m_cachedCall.set(new CachedCall(exec, asFunction(compareFunction), 2, exec->exceptionSlot()));
+
if (!tree.abstractor().m_nodes.begin()) {
throwOutOfMemoryError(exec);
return;
@@ -790,16 +845,16 @@ void JSArray::sort(ExecState* exec, JSValuePtr compareFunction, CallType callTyp
// Iterate over the array, ignoring missing values, counting undefined ones, and inserting all other ones into the tree.
for (; numDefined < usedVectorLength; ++numDefined) {
- JSValuePtr v = m_storage->m_vector[numDefined];
- if (!v || v->isUndefined())
+ JSValue v = m_storage->m_vector[numDefined];
+ if (!v || v.isUndefined())
break;
tree.abstractor().m_nodes[numDefined].value = v;
tree.insert(numDefined);
}
for (unsigned i = numDefined; i < usedVectorLength; ++i) {
- JSValuePtr v = m_storage->m_vector[i];
+ JSValue v = m_storage->m_vector[i];
if (v) {
- if (v->isUndefined())
+ if (v.isUndefined())
++numUndefined;
else {
tree.abstractor().m_nodes[numDefined].value = v;
@@ -851,7 +906,7 @@ void JSArray::sort(ExecState* exec, JSValuePtr compareFunction, CallType callTyp
// Ensure that unused values in the vector are zeroed out.
for (unsigned i = newUsedVectorLength; i < usedVectorLength; ++i)
- m_storage->m_vector[i] = noValue();
+ m_storage->m_vector[i] = JSValue();
m_fastAccessCutoff = newUsedVectorLength;
m_storage->m_numValuesInVector = newUsedVectorLength;
@@ -859,7 +914,7 @@ void JSArray::sort(ExecState* exec, JSValuePtr compareFunction, CallType callTyp
checkConsistency(SortConsistencyCheck);
}
-void JSArray::fillArgList(ExecState* exec, ArgList& args)
+void JSArray::fillArgList(ExecState* exec, MarkedArgumentBuffer& args)
{
unsigned fastAccessLength = min(m_storage->m_length, m_fastAccessCutoff);
unsigned i = 0;
@@ -869,6 +924,19 @@ void JSArray::fillArgList(ExecState* exec, ArgList& args)
args.append(get(exec, i));
}
+void JSArray::copyToRegisters(ExecState* exec, Register* buffer, uint32_t maxSize)
+{
+ ASSERT(m_storage->m_length == maxSize);
+ UNUSED_PARAM(maxSize);
+ unsigned fastAccessLength = min(m_storage->m_length, m_fastAccessCutoff);
+ unsigned i = 0;
+ for (; i < fastAccessLength; ++i)
+ buffer[i] = getIndex(i);
+ uint32_t size = m_storage->m_length;
+ for (; i < size; ++i)
+ buffer[i] = get(exec, i);
+}
+
unsigned JSArray::compactForSorting()
{
checkConsistency();
@@ -881,14 +949,14 @@ unsigned JSArray::compactForSorting()
unsigned numUndefined = 0;
for (; numDefined < usedVectorLength; ++numDefined) {
- JSValuePtr v = storage->m_vector[numDefined];
- if (!v || v->isUndefined())
+ JSValue v = storage->m_vector[numDefined];
+ if (!v || v.isUndefined())
break;
}
for (unsigned i = numDefined; i < usedVectorLength; ++i) {
- JSValuePtr v = storage->m_vector[i];
+ JSValue v = storage->m_vector[i];
if (v) {
- if (v->isUndefined())
+ if (v.isUndefined())
++numUndefined;
else
storage->m_vector[numDefined++] = v;
@@ -918,7 +986,7 @@ unsigned JSArray::compactForSorting()
for (unsigned i = numDefined; i < newUsedVectorLength; ++i)
storage->m_vector[i] = jsUndefined();
for (unsigned i = newUsedVectorLength; i < usedVectorLength; ++i)
- storage->m_vector[i] = noValue();
+ storage->m_vector[i] = JSValue();
m_fastAccessCutoff = newUsedVectorLength;
storage->m_numValuesInVector = newUsedVectorLength;
@@ -951,7 +1019,7 @@ void JSArray::checkConsistency(ConsistencyCheckType type)
unsigned numValuesInVector = 0;
for (unsigned i = 0; i < m_storage->m_vectorLength; ++i) {
- if (JSValuePtr value = m_storage->m_vector[i]) {
+ if (JSValue value = m_storage->m_vector[i]) {
ASSERT(i < m_storage->m_length);
if (type != DestructorConsistencyCheck)
value->type(); // Likely to crash if the object was deallocated.
@@ -990,16 +1058,16 @@ JSArray* constructEmptyArray(ExecState* exec, unsigned initialLength)
return new (exec) JSArray(exec->lexicalGlobalObject()->arrayStructure(), initialLength);
}
-JSArray* constructArray(ExecState* exec, JSValuePtr singleItemValue)
+JSArray* constructArray(ExecState* exec, JSValue singleItemValue)
{
- ArgList values;
+ MarkedArgumentBuffer values;
values.append(singleItemValue);
- return new (exec) JSArray(exec, exec->lexicalGlobalObject()->arrayStructure(), values);
+ return new (exec) JSArray(exec->lexicalGlobalObject()->arrayStructure(), values);
}
JSArray* constructArray(ExecState* exec, const ArgList& values)
{
- return new (exec) JSArray(exec, exec->lexicalGlobalObject()->arrayStructure(), values);
+ return new (exec) JSArray(exec->lexicalGlobalObject()->arrayStructure(), values);
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.h
index e280022..ea490d8 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.h
@@ -25,7 +25,7 @@
namespace JSC {
- typedef HashMap<unsigned, JSValuePtr> SparseArrayValueMap;
+ typedef HashMap<unsigned, JSValue> SparseArrayValueMap;
struct ArrayStorage {
unsigned m_length;
@@ -33,7 +33,7 @@ namespace JSC {
unsigned m_numValuesInVector;
SparseArrayValueMap* m_sparseValueMap;
void* lazyCreationData; // A JSArray subclass can use this to fill the vector lazily.
- JSValuePtr m_vector[1];
+ JSValue m_vector[1];
};
class JSArray : public JSObject {
@@ -42,47 +42,49 @@ namespace JSC {
public:
explicit JSArray(PassRefPtr<Structure>);
JSArray(PassRefPtr<Structure>, unsigned initialLength);
- JSArray(ExecState*, PassRefPtr<Structure>, const ArgList& initialValues);
+ JSArray(PassRefPtr<Structure>, const ArgList& initialValues);
virtual ~JSArray();
virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
virtual bool getOwnPropertySlot(ExecState*, unsigned propertyName, PropertySlot&);
- virtual void put(ExecState*, unsigned propertyName, JSValuePtr); // FIXME: Make protected and add setItem.
+ virtual void put(ExecState*, unsigned propertyName, JSValue); // FIXME: Make protected and add setItem.
- static const ClassInfo info;
+ static JS_EXPORTDATA const ClassInfo info;
unsigned length() const { return m_storage->m_length; }
void setLength(unsigned); // OK to use on new arrays, but not if it might be a RegExpMatchArray.
void sort(ExecState*);
- void sort(ExecState*, JSValuePtr compareFunction, CallType, const CallData&);
+ void sort(ExecState*, JSValue compareFunction, CallType, const CallData&);
+ void sortNumeric(ExecState*, JSValue compareFunction, CallType, const CallData&);
- void push(ExecState*, JSValuePtr);
- JSValuePtr pop();
+ void push(ExecState*, JSValue);
+ JSValue pop();
bool canGetIndex(unsigned i) { return i < m_fastAccessCutoff; }
- JSValuePtr getIndex(unsigned i)
+ JSValue getIndex(unsigned i)
{
ASSERT(canGetIndex(i));
return m_storage->m_vector[i];
}
bool canSetIndex(unsigned i) { return i < m_fastAccessCutoff; }
- JSValuePtr setIndex(unsigned i, JSValuePtr v)
+ JSValue setIndex(unsigned i, JSValue v)
{
ASSERT(canSetIndex(i));
return m_storage->m_vector[i] = v;
}
- void fillArgList(ExecState*, ArgList&);
+ void fillArgList(ExecState*, MarkedArgumentBuffer&);
+ void copyToRegisters(ExecState*, Register*, uint32_t);
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType));
}
protected:
- virtual void put(ExecState*, const Identifier& propertyName, JSValuePtr, PutPropertySlot&);
+ virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
virtual bool deleteProperty(ExecState*, unsigned propertyName);
virtual void getPropertyNames(ExecState*, PropertyNameArray&);
@@ -95,7 +97,7 @@ namespace JSC {
virtual const ClassInfo* classInfo() const { return &info; }
bool getOwnPropertySlotSlowCase(ExecState*, unsigned propertyName, PropertySlot&);
- void putSlowCase(ExecState*, unsigned propertyName, JSValuePtr);
+ void putSlowCase(ExecState*, unsigned propertyName, JSValue);
bool increaseVectorLength(unsigned newLength);
@@ -108,19 +110,21 @@ namespace JSC {
ArrayStorage* m_storage;
};
- JSArray* asArray(JSValuePtr);
+ JSArray* asArray(JSValue);
JSArray* constructEmptyArray(ExecState*);
JSArray* constructEmptyArray(ExecState*, unsigned initialLength);
- JSArray* constructArray(ExecState*, JSValuePtr singleItemValue);
+ JSArray* constructArray(ExecState*, JSValue singleItemValue);
JSArray* constructArray(ExecState*, const ArgList& values);
- inline JSArray* asArray(JSValuePtr value)
+ inline JSArray* asArray(JSValue value)
{
ASSERT(asObject(value)->inherits(&JSArray::info));
return static_cast<JSArray*>(asObject(value));
}
+ inline bool isJSArray(JSGlobalData* globalData, JSValue v) { return v.isCell() && v.asCell()->vptr() == globalData->jsArrayVPtr; }
+
} // namespace JSC
#endif // JSArray_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.cpp
index 4a19038..2a5e72f 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.cpp
@@ -29,6 +29,8 @@
#include "JSGlobalObject.h"
#include "PropertyNameArray.h"
+using namespace WTF;
+
namespace JSC {
const ClassInfo JSByteArray::s_defaultInfo = { "ByteArray", 0, 0, 0 };
@@ -41,7 +43,7 @@ JSByteArray::JSByteArray(ExecState* exec, PassRefPtr<Structure> structure, ByteA
putDirect(exec->globalData().propertyNames->length, jsNumber(exec, m_storage->length()), ReadOnly | DontDelete);
}
-PassRefPtr<Structure> JSByteArray::createStructure(JSValuePtr prototype)
+PassRefPtr<Structure> JSByteArray::createStructure(JSValue prototype)
{
PassRefPtr<Structure> result = Structure::create(prototype, TypeInfo(ObjectType));
return result;
@@ -52,7 +54,7 @@ bool JSByteArray::getOwnPropertySlot(ExecState* exec, const Identifier& property
bool ok;
unsigned index = propertyName.toUInt32(&ok, false);
if (ok && canAccessIndex(index)) {
- slot.setValue(getIndex(index));
+ slot.setValue(getIndex(exec, index));
return true;
}
return JSObject::getOwnPropertySlot(exec, propertyName, slot);
@@ -61,13 +63,13 @@ bool JSByteArray::getOwnPropertySlot(ExecState* exec, const Identifier& property
bool JSByteArray::getOwnPropertySlot(ExecState* exec, unsigned propertyName, PropertySlot& slot)
{
if (canAccessIndex(propertyName)) {
- slot.setValue(getIndex(propertyName));
+ slot.setValue(getIndex(exec, propertyName));
return true;
}
return JSObject::getOwnPropertySlot(exec, Identifier::from(exec, propertyName), slot);
}
-void JSByteArray::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void JSByteArray::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
bool ok;
unsigned index = propertyName.toUInt32(&ok, false);
@@ -78,7 +80,7 @@ void JSByteArray::put(ExecState* exec, const Identifier& propertyName, JSValuePt
JSObject::put(exec, propertyName, value, slot);
}
-void JSByteArray::put(ExecState* exec, unsigned propertyName, JSValuePtr value)
+void JSByteArray::put(ExecState* exec, unsigned propertyName, JSValue value)
{
setIndex(exec, propertyName, value);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.h
index 895200b..57374e0 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.h
@@ -26,19 +26,20 @@
#ifndef JSByteArray_h
#define JSByteArray_h
-#include "ByteArray.h"
#include "JSObject.h"
+#include <wtf/ByteArray.h>
+
namespace JSC {
class JSByteArray : public JSObject {
- friend class Interpreter;
+ friend class VPtrSet;
public:
bool canAccessIndex(unsigned i) { return i < m_storage->length(); }
- JSValuePtr getIndex(unsigned i)
+ JSValue getIndex(ExecState* exec, unsigned i)
{
ASSERT(canAccessIndex(i));
- return JSImmediate::from(m_storage->data()[i]);
+ return jsNumber(exec, m_storage->data()[i]);
}
void setIndex(unsigned i, int value)
@@ -63,22 +64,22 @@ namespace JSC {
m_storage->data()[i] = static_cast<unsigned char>(value + 0.5);
}
- void setIndex(ExecState* exec, unsigned i, JSValuePtr value)
+ void setIndex(ExecState* exec, unsigned i, JSValue value)
{
- double byteValue = value->toNumber(exec);
+ double byteValue = value.toNumber(exec);
if (exec->hadException())
return;
if (canAccessIndex(i))
setIndex(i, byteValue);
}
- JSByteArray(ExecState* exec, PassRefPtr<Structure>, ByteArray* storage, const JSC::ClassInfo* = &s_defaultInfo);
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype);
+ JSByteArray(ExecState* exec, PassRefPtr<Structure>, WTF::ByteArray* storage, const JSC::ClassInfo* = &s_defaultInfo);
+ static PassRefPtr<Structure> createStructure(JSValue prototype);
virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&);
virtual bool getOwnPropertySlot(JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
- virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValuePtr, JSC::PutPropertySlot&);
- virtual void put(JSC::ExecState*, unsigned propertyName, JSC::JSValuePtr);
+ virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&);
+ virtual void put(JSC::ExecState*, unsigned propertyName, JSC::JSValue);
virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&);
@@ -87,7 +88,7 @@ namespace JSC {
size_t length() const { return m_storage->length(); }
- ByteArray* storage() const { return m_storage.get(); }
+ WTF::ByteArray* storage() const { return m_storage.get(); }
private:
enum VPtrStealingHackType { VPtrStealingHack };
@@ -97,15 +98,18 @@ namespace JSC {
{
}
- RefPtr<ByteArray> m_storage;
+ RefPtr<WTF::ByteArray> m_storage;
const ClassInfo* m_classInfo;
};
- JSByteArray* asByteArray(JSValuePtr value);
- inline JSByteArray* asByteArray(JSValuePtr value)
+ JSByteArray* asByteArray(JSValue value);
+ inline JSByteArray* asByteArray(JSValue value)
{
return static_cast<JSByteArray*>(asCell(value));
}
-}
-#endif
+ inline bool isJSByteArray(JSGlobalData* globalData, JSValue v) { return v.isCell() && v.asCell()->vptr() == globalData->jsByteArrayVPtr; }
+
+} // namespace JSC
+
+#endif // JSByteArray_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.cpp
index c1c1ce4..8cf7943 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.cpp
@@ -100,19 +100,6 @@ bool JSCell::getTruncatedUInt32(uint32_t&) const
return false;
}
-bool JSCell::getNumber(double& numericValue) const
-{
- if (!isNumber())
- return false;
- numericValue = static_cast<const JSNumberCell*>(this)->value();
- return true;
-}
-
-double JSCell::getNumber() const
-{
- return isNumber() ? static_cast<const JSNumberCell*>(this)->value() : NaN;
-}
-
bool JSCell::getString(UString&stringValue) const
{
if (!isString())
@@ -170,12 +157,12 @@ bool JSCell::getOwnPropertySlot(ExecState* exec, unsigned identifier, PropertySl
return true;
}
-void JSCell::put(ExecState* exec, const Identifier& identifier, JSValuePtr value, PutPropertySlot& slot)
+void JSCell::put(ExecState* exec, const Identifier& identifier, JSValue value, PutPropertySlot& slot)
{
toObject(exec)->put(exec, identifier, value, slot);
}
-void JSCell::put(ExecState* exec, unsigned identifier, JSValuePtr value)
+void JSCell::put(ExecState* exec, unsigned identifier, JSValue value)
{
toObject(exec)->put(exec, identifier, value);
}
@@ -210,9 +197,9 @@ const ClassInfo* JSCell::classInfo() const
return 0;
}
-JSValuePtr JSCell::getJSNumber()
+JSValue JSCell::getJSNumber()
{
- return noValue();
+ return JSValue();
}
bool JSCell::isGetterSetter() const
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.h
index 6d963b3..e0a9b4d 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.h
@@ -23,6 +23,7 @@
#ifndef JSCell_h
#define JSCell_h
+#include <wtf/Noncopyable.h>
#include "Structure.h"
#include "JSValue.h"
#include "JSImmediate.h"
@@ -30,16 +31,16 @@
namespace JSC {
- class JSCell : public JSValue {
- friend class JIT;
+ class JSCell : Noncopyable {
friend class GetterSetter;
friend class Heap;
+ friend class JIT;
friend class JSNumberCell;
friend class JSObject;
friend class JSPropertyNameIterator;
friend class JSString;
friend class JSValue;
- friend class Interpreter;
+ friend class VPtrSet;
private:
explicit JSCell(Structure*);
@@ -56,8 +57,6 @@ namespace JSC {
Structure* structure() const;
// Extracting the value.
- bool getNumber(double&) const;
- double getNumber() const; // NaN if not a number
bool getString(UString&) const;
UString getString() const; // null string if not a string
JSObject* getObject(); // NULL if not an object
@@ -67,13 +66,14 @@ namespace JSC {
virtual ConstructType getConstructData(ConstructData&);
// Extracting integer values.
+ // FIXME: remove these methods, can check isNumberCell in JSValue && then call asNumberCell::*.
virtual bool getUInt32(uint32_t&) const;
virtual bool getTruncatedInt32(int32_t&) const;
virtual bool getTruncatedUInt32(uint32_t&) const;
// Basic conversions.
- virtual JSValuePtr toPrimitive(ExecState*, PreferredPrimitiveType) const = 0;
- virtual bool getPrimitiveNumber(ExecState*, double& number, JSValuePtr&) = 0;
+ virtual JSValue toPrimitive(ExecState*, PreferredPrimitiveType) const = 0;
+ virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue&) = 0;
virtual bool toBoolean(ExecState*) const = 0;
virtual double toNumber(ExecState*) const = 0;
virtual UString toString(ExecState*) const = 0;
@@ -88,15 +88,15 @@ namespace JSC {
// Object operations, with the toObject operation included.
virtual const ClassInfo* classInfo() const;
- virtual void put(ExecState*, const Identifier& propertyName, JSValuePtr, PutPropertySlot&);
- virtual void put(ExecState*, unsigned propertyName, JSValuePtr);
+ virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
+ virtual void put(ExecState*, unsigned propertyName, JSValue);
virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
virtual bool deleteProperty(ExecState*, unsigned propertyName);
virtual JSObject* toThisObject(ExecState*) const;
virtual UString toThisString(ExecState*) const;
virtual JSString* toThisJSString(ExecState*);
- virtual JSValuePtr getJSNumber();
+ virtual JSValue getJSNumber();
void* vptr() { return *reinterpret_cast<void**>(this); }
private:
@@ -108,12 +108,11 @@ namespace JSC {
Structure* m_structure;
};
- JSCell* asCell(JSValuePtr);
+ JSCell* asCell(JSValue);
- inline JSCell* asCell(JSValuePtr value)
+ inline JSCell* asCell(JSValue value)
{
- ASSERT(!JSImmediate::isImmediate(value));
- return value->asCell();
+ return value.asCell();
}
inline JSCell::JSCell(Structure* structure)
@@ -157,8 +156,8 @@ namespace JSC {
ALWAYS_INLINE JSCell* JSValue::asCell() const
{
- ASSERT(!JSImmediate::isImmediate(asValue()));
- return const_cast<JSCell*>(reinterpret_cast<const JSCell*>(this));
+ ASSERT(isCell());
+ return m_ptr;
}
inline void* JSCell::operator new(size_t size, JSGlobalData* globalData)
@@ -172,11 +171,6 @@ namespace JSC {
// --- JSValue inlines ----------------------------
- inline bool JSValue::isNumber() const
- {
- return JSImmediate::isNumber(asValue()) || (!JSImmediate::isImmediate(asValue()) && asCell()->isNumber());
- }
-
inline bool JSValue::isString() const
{
return !JSImmediate::isImmediate(asValue()) && asCell()->isString();
@@ -192,11 +186,6 @@ namespace JSC {
return !JSImmediate::isImmediate(asValue()) && asCell()->isObject();
}
- inline double JSValue::getNumber() const
- {
- return JSImmediate::isImmediate(asValue()) ? JSImmediate::toDouble(asValue()) : asCell()->getNumber();
- }
-
inline bool JSValue::getString(UString& s) const
{
return !JSImmediate::isImmediate(asValue()) && asCell()->getString(s);
@@ -247,12 +236,12 @@ namespace JSC {
return JSImmediate::isImmediate(asValue()) || asCell()->marked();
}
- inline JSValuePtr JSValue::toPrimitive(ExecState* exec, PreferredPrimitiveType preferredType) const
+ inline JSValue JSValue::toPrimitive(ExecState* exec, PreferredPrimitiveType preferredType) const
{
return JSImmediate::isImmediate(asValue()) ? asValue() : asCell()->toPrimitive(exec, preferredType);
}
- inline bool JSValue::getPrimitiveNumber(ExecState* exec, double& number, JSValuePtr& value)
+ inline bool JSValue::getPrimitiveNumber(ExecState* exec, double& number, JSValue& value)
{
if (JSImmediate::isImmediate(asValue())) {
number = JSImmediate::toDouble(asValue());
@@ -301,9 +290,9 @@ namespace JSC {
return JSImmediate::isImmediate(asValue()) ? JSImmediate::toString(asValue()) : asCell()->toThisString(exec);
}
- inline JSValuePtr JSValue::getJSNumber()
+ inline JSValue JSValue::getJSNumber()
{
- return JSImmediate::isNumber(asValue()) ? asValue() : JSImmediate::isImmediate(asValue()) ? noValue() : asCell()->getJSNumber();
+ return JSImmediate::isNumber(asValue()) ? asValue() : JSImmediate::isImmediate(asValue()) ? JSValue() : asCell()->getJSNumber();
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.cpp
index a22cb34..f456451 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.cpp
@@ -45,11 +45,29 @@ ASSERT_CLASS_FITS_IN_CELL(JSFunction);
const ClassInfo JSFunction::info = { "Function", &InternalFunction::info, 0, 0 };
+JSFunction::JSFunction(ExecState* exec, PassRefPtr<Structure> structure, int length, const Identifier& name, NativeFunction func)
+ : Base(&exec->globalData(), structure, name)
+#if ENABLE(JIT)
+ , m_body(exec->globalData().nativeFunctionThunk())
+#else
+ , m_body(0)
+#endif
+{
+#if ENABLE(JIT)
+ setNativeFunction(func);
+ putDirect(exec->propertyNames().length, jsNumber(exec, length), DontDelete | ReadOnly | DontEnum);
+#else
+ UNUSED_PARAM(length);
+ UNUSED_PARAM(func);
+ ASSERT_NOT_REACHED();
+#endif
+}
+
JSFunction::JSFunction(ExecState* exec, const Identifier& name, FunctionBodyNode* body, ScopeChainNode* scopeChainNode)
: Base(&exec->globalData(), exec->lexicalGlobalObject()->functionStructure(), name)
, m_body(body)
- , m_scopeChain(scopeChainNode)
{
+ setScopeChain(scopeChainNode);
}
JSFunction::~JSFunction()
@@ -58,55 +76,72 @@ JSFunction::~JSFunction()
// JIT code for other functions may have had calls linked directly to the code for this function; these links
// are based on a check for the this pointer value for this JSFunction - which will no longer be valid once
// this memory is freed and may be reused (potentially for another, different JSFunction).
- if (m_body && m_body->isGenerated())
- m_body->generatedBytecode().unlinkCallers();
+ if (!isHostFunction()) {
+ if (m_body && m_body->isGenerated())
+ m_body->generatedBytecode().unlinkCallers();
+ scopeChain().~ScopeChain();
+ }
+
#endif
}
void JSFunction::mark()
{
Base::mark();
- m_body->mark();
- m_scopeChain.mark();
+ if (!isHostFunction()) {
+ m_body->mark();
+ scopeChain().mark();
+ }
}
CallType JSFunction::getCallData(CallData& callData)
{
+ if (isHostFunction()) {
+ callData.native.function = nativeFunction();
+ return CallTypeHost;
+ }
callData.js.functionBody = m_body.get();
- callData.js.scopeChain = m_scopeChain.node();
+ callData.js.scopeChain = scopeChain().node();
return CallTypeJS;
}
-JSValuePtr JSFunction::call(ExecState* exec, JSValuePtr thisValue, const ArgList& args)
+JSValue JSFunction::call(ExecState* exec, JSValue thisValue, const ArgList& args)
{
- return exec->interpreter()->execute(m_body.get(), exec, this, thisValue->toThisObject(exec), args, m_scopeChain.node(), exec->exceptionSlot());
+ ASSERT(!isHostFunction());
+ return exec->interpreter()->execute(m_body.get(), exec, this, thisValue.toThisObject(exec), args, scopeChain().node(), exec->exceptionSlot());
}
-JSValuePtr JSFunction::argumentsGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue JSFunction::argumentsGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
JSFunction* thisObj = asFunction(slot.slotBase());
+ ASSERT(!thisObj->isHostFunction());
return exec->interpreter()->retrieveArguments(exec, thisObj);
}
-JSValuePtr JSFunction::callerGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue JSFunction::callerGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
JSFunction* thisObj = asFunction(slot.slotBase());
+ ASSERT(!thisObj->isHostFunction());
return exec->interpreter()->retrieveCaller(exec, thisObj);
}
-JSValuePtr JSFunction::lengthGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue JSFunction::lengthGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
JSFunction* thisObj = asFunction(slot.slotBase());
+ ASSERT(!thisObj->isHostFunction());
return jsNumber(exec, thisObj->m_body->parameterCount());
}
bool JSFunction::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
{
+ if (isHostFunction())
+ return Base::getOwnPropertySlot(exec, propertyName, slot);
+
if (propertyName == exec->propertyNames().prototype) {
- JSValuePtr* location = getDirectLocation(propertyName);
+ JSValue* location = getDirectLocation(propertyName);
if (!location) {
- JSObject* prototype = new (exec) JSObject(m_scopeChain.globalObject()->emptyObjectStructure());
+ JSObject* prototype = new (exec) JSObject(scopeChain().globalObject()->emptyObjectStructure());
prototype->putDirect(exec->propertyNames().constructor, this, DontEnum);
putDirect(exec->propertyNames().prototype, prototype, DontDelete);
location = getDirectLocation(propertyName);
@@ -133,8 +168,12 @@ bool JSFunction::getOwnPropertySlot(ExecState* exec, const Identifier& propertyN
return Base::getOwnPropertySlot(exec, propertyName, slot);
}
-void JSFunction::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void JSFunction::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
+ if (isHostFunction()) {
+ Base::put(exec, propertyName, value, slot);
+ return;
+ }
if (propertyName == exec->propertyNames().arguments || propertyName == exec->propertyNames().length)
return;
Base::put(exec, propertyName, value, slot);
@@ -142,6 +181,8 @@ void JSFunction::put(ExecState* exec, const Identifier& propertyName, JSValuePtr
bool JSFunction::deleteProperty(ExecState* exec, const Identifier& propertyName)
{
+ if (isHostFunction())
+ return Base::deleteProperty(exec, propertyName);
if (propertyName == exec->propertyNames().arguments || propertyName == exec->propertyNames().length)
return false;
return Base::deleteProperty(exec, propertyName);
@@ -150,23 +191,26 @@ bool JSFunction::deleteProperty(ExecState* exec, const Identifier& propertyName)
// ECMA 13.2.2 [[Construct]]
ConstructType JSFunction::getConstructData(ConstructData& constructData)
{
+ if (isHostFunction())
+ return ConstructTypeNone;
constructData.js.functionBody = m_body.get();
- constructData.js.scopeChain = m_scopeChain.node();
+ constructData.js.scopeChain = scopeChain().node();
return ConstructTypeJS;
}
JSObject* JSFunction::construct(ExecState* exec, const ArgList& args)
{
+ ASSERT(!isHostFunction());
Structure* structure;
- JSValuePtr prototype = get(exec, exec->propertyNames().prototype);
- if (prototype->isObject())
+ JSValue prototype = get(exec, exec->propertyNames().prototype);
+ if (prototype.isObject())
structure = asObject(prototype)->inheritorID();
else
structure = exec->lexicalGlobalObject()->emptyObjectStructure();
JSObject* thisObj = new (exec) JSObject(structure);
- JSValuePtr result = exec->interpreter()->execute(m_body.get(), exec, this, thisObj, args, m_scopeChain.node(), exec->exceptionSlot());
- if (exec->hadException() || !result->isObject())
+ JSValue result = exec->interpreter()->execute(m_body.get(), exec, this, thisObj, args, scopeChain().node(), exec->exceptionSlot());
+ if (exec->hadException() || !result.isObject())
return thisObj;
return asObject(result);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.h
index 6a43737..b27e515 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.h
@@ -39,29 +39,30 @@ namespace JSC {
class JSFunction : public InternalFunction {
friend class JIT;
- friend class Interpreter;
+ friend class VPtrSet;
typedef InternalFunction Base;
JSFunction(PassRefPtr<Structure> structure)
: InternalFunction(structure)
- , m_scopeChain(NoScopeChain())
{
+ clearScopeChain();
}
public:
+ JSFunction(ExecState*, PassRefPtr<Structure>, int length, const Identifier&, NativeFunction);
JSFunction(ExecState*, const Identifier&, FunctionBodyNode*, ScopeChainNode*);
~JSFunction();
virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
- virtual void put(ExecState*, const Identifier& propertyName, JSValuePtr, PutPropertySlot&);
+ virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
JSObject* construct(ExecState*, const ArgList&);
- JSValuePtr call(ExecState*, JSValuePtr thisValue, const ArgList&);
+ JSValue call(ExecState*, JSValue thisValue, const ArgList&);
- void setScope(const ScopeChain& scopeChain) { m_scopeChain = scopeChain; }
- ScopeChain& scope() { return m_scopeChain; }
+ void setScope(const ScopeChain& scopeChain) { setScopeChain(scopeChain); }
+ ScopeChain& scope() { return scopeChain(); }
void setBody(FunctionBodyNode* body) { m_body = body; }
void setBody(PassRefPtr<FunctionBodyNode> body) { m_body = body; }
@@ -69,30 +70,64 @@ namespace JSC {
virtual void mark();
- static const ClassInfo info;
+ static JS_EXPORTDATA const ClassInfo info;
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType, ImplementsHasInstance));
}
- private:
- virtual const ClassInfo* classInfo() const { return &info; }
+#if ENABLE(JIT)
+ bool isHostFunction() const { return m_body && m_body->isHostFunction(); }
+#else
+ bool isHostFunction() const { return false; }
+#endif
+ NativeFunction nativeFunction()
+ {
+ return *reinterpret_cast<NativeFunction*>(m_data);
+ }
virtual ConstructType getConstructData(ConstructData&);
virtual CallType getCallData(CallData&);
- static JSValuePtr argumentsGetter(ExecState*, const Identifier&, const PropertySlot&);
- static JSValuePtr callerGetter(ExecState*, const Identifier&, const PropertySlot&);
- static JSValuePtr lengthGetter(ExecState*, const Identifier&, const PropertySlot&);
+ private:
+ virtual const ClassInfo* classInfo() const { return &info; }
+
+ static JSValue argumentsGetter(ExecState*, const Identifier&, const PropertySlot&);
+ static JSValue callerGetter(ExecState*, const Identifier&, const PropertySlot&);
+ static JSValue lengthGetter(ExecState*, const Identifier&, const PropertySlot&);
RefPtr<FunctionBodyNode> m_body;
- ScopeChain m_scopeChain;
+ ScopeChain& scopeChain()
+ {
+ ASSERT(!isHostFunction());
+ return *reinterpret_cast<ScopeChain*>(m_data);
+ }
+ void clearScopeChain()
+ {
+ ASSERT(!isHostFunction());
+ new (m_data) ScopeChain(NoScopeChain());
+ }
+ void setScopeChain(ScopeChainNode* sc)
+ {
+ ASSERT(!isHostFunction());
+ new (m_data) ScopeChain(sc);
+ }
+ void setScopeChain(const ScopeChain& sc)
+ {
+ ASSERT(!isHostFunction());
+ *reinterpret_cast<ScopeChain*>(m_data) = sc;
+ }
+ void setNativeFunction(NativeFunction func)
+ {
+ *reinterpret_cast<NativeFunction*>(m_data) = func;
+ }
+ unsigned char m_data[sizeof(void*)];
};
- JSFunction* asFunction(JSValuePtr);
+ JSFunction* asFunction(JSValue);
- inline JSFunction* asFunction(JSValuePtr value)
+ inline JSFunction* asFunction(JSValue value)
{
ASSERT(asObject(value)->inherits(&JSFunction::info));
return static_cast<JSFunction*>(asObject(value));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.cpp
index 62df65e..1594848 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.cpp
@@ -30,15 +30,19 @@
#include "JSGlobalData.h"
#include "ArgList.h"
+#include "Collector.h"
#include "CommonIdentifiers.h"
+#include "FunctionConstructor.h"
+#include "Interpreter.h"
#include "JSActivation.h"
+#include "JSArray.h"
+#include "JSByteArray.h"
#include "JSClassRef.h"
+#include "JSFunction.h"
#include "JSLock.h"
#include "JSNotAnObject.h"
#include "JSStaticScopeObject.h"
-#include "Interpreter.h"
#include "Parser.h"
-#include "Collector.h"
#include "Lexer.h"
#include "Lookup.h"
#include "Nodes.h"
@@ -63,40 +67,80 @@ extern const HashTable regExpTable;
extern const HashTable regExpConstructorTable;
extern const HashTable stringTable;
-JSGlobalData::JSGlobalData(bool isShared)
- : interpreter(new Interpreter)
- , exception(noValue())
- , arrayTable(new HashTable(JSC::arrayTable))
- , dateTable(new HashTable(JSC::dateTable))
- , mathTable(new HashTable(JSC::mathTable))
- , numberTable(new HashTable(JSC::numberTable))
- , regExpTable(new HashTable(JSC::regExpTable))
- , regExpConstructorTable(new HashTable(JSC::regExpConstructorTable))
- , stringTable(new HashTable(JSC::stringTable))
+struct VPtrSet {
+ VPtrSet();
+
+ void* jsArrayVPtr;
+ void* jsByteArrayVPtr;
+ void* jsStringVPtr;
+ void* jsFunctionVPtr;
+};
+
+VPtrSet::VPtrSet()
+{
+ // Bizarrely, calling fastMalloc here is faster than allocating space on the stack.
+ void* storage = fastMalloc(sizeof(CollectorBlock));
+
+ JSCell* jsArray = new (storage) JSArray(JSArray::createStructure(jsNull()));
+ jsArrayVPtr = jsArray->vptr();
+ jsArray->~JSCell();
+
+ JSCell* jsByteArray = new (storage) JSByteArray(JSByteArray::VPtrStealingHack);
+ jsByteArrayVPtr = jsByteArray->vptr();
+ jsByteArray->~JSCell();
+
+ JSCell* jsString = new (storage) JSString(JSString::VPtrStealingHack);
+ jsStringVPtr = jsString->vptr();
+ jsString->~JSCell();
+
+ JSCell* jsFunction = new (storage) JSFunction(JSFunction::createStructure(jsNull()));
+ jsFunctionVPtr = jsFunction->vptr();
+ jsFunction->~JSCell();
+
+ fastFree(storage);
+}
+
+JSGlobalData::JSGlobalData(bool isShared, const VPtrSet& vptrSet)
+ : isSharedInstance(isShared)
+ , clientData(0)
+ , arrayTable(fastNew<HashTable>(JSC::arrayTable))
+ , dateTable(fastNew<HashTable>(JSC::dateTable))
+ , mathTable(fastNew<HashTable>(JSC::mathTable))
+ , numberTable(fastNew<HashTable>(JSC::numberTable))
+ , regExpTable(fastNew<HashTable>(JSC::regExpTable))
+ , regExpConstructorTable(fastNew<HashTable>(JSC::regExpConstructorTable))
+ , stringTable(fastNew<HashTable>(JSC::stringTable))
, activationStructure(JSActivation::createStructure(jsNull()))
, interruptedExecutionErrorStructure(JSObject::createStructure(jsNull()))
, staticScopeStructure(JSStaticScopeObject::createStructure(jsNull()))
, stringStructure(JSString::createStructure(jsNull()))
, notAnObjectErrorStubStructure(JSNotAnObjectErrorStub::createStructure(jsNull()))
, notAnObjectStructure(JSNotAnObject::createStructure(jsNull()))
+#if !USE(ALTERNATE_JSIMMEDIATE)
, numberStructure(JSNumberCell::createStructure(jsNull()))
+#endif
+ , jsArrayVPtr(vptrSet.jsArrayVPtr)
+ , jsByteArrayVPtr(vptrSet.jsByteArrayVPtr)
+ , jsStringVPtr(vptrSet.jsStringVPtr)
+ , jsFunctionVPtr(vptrSet.jsFunctionVPtr)
, identifierTable(createIdentifierTable())
, propertyNames(new CommonIdentifiers(this))
- , emptyList(new ArgList)
- , newParserObjects(0)
- , parserObjectExtraRefCounts(0)
+ , emptyList(new MarkedArgumentBuffer)
, lexer(new Lexer(this))
, parser(new Parser)
+ , interpreter(new Interpreter)
+#if ENABLE(JIT)
+ , jitStubs(this)
+#endif
+ , heap(this)
+ , initializingLazyNumericCompareFunction(false)
, head(0)
, dynamicGlobalObject(0)
- , isSharedInstance(isShared)
- , clientData(0)
- , heap(this)
+ , scopeNodeBeingReparsed(0)
{
#if PLATFORM(MAC)
startProfilerServerIfNeeded();
#endif
- interpreter->initialize(this);
}
JSGlobalData::~JSGlobalData()
@@ -116,13 +160,17 @@ JSGlobalData::~JSGlobalData()
regExpTable->deleteTable();
regExpConstructorTable->deleteTable();
stringTable->deleteTable();
- delete arrayTable;
- delete dateTable;
- delete mathTable;
- delete numberTable;
- delete regExpTable;
- delete regExpConstructorTable;
- delete stringTable;
+#if ENABLE(JIT)
+ lazyNativeFunctionThunk.clear();
+#endif
+
+ fastDelete(const_cast<HashTable*>(arrayTable));
+ fastDelete(const_cast<HashTable*>(dateTable));
+ fastDelete(const_cast<HashTable*>(mathTable));
+ fastDelete(const_cast<HashTable*>(numberTable));
+ fastDelete(const_cast<HashTable*>(regExpTable));
+ fastDelete(const_cast<HashTable*>(regExpConstructorTable));
+ fastDelete(const_cast<HashTable*>(stringTable));
delete parser;
delete lexer;
@@ -134,27 +182,20 @@ JSGlobalData::~JSGlobalData()
delete propertyNames;
deleteIdentifierTable(identifierTable);
- delete newParserObjects;
- delete parserObjectExtraRefCounts;
-
delete clientData;
}
-PassRefPtr<JSGlobalData> JSGlobalData::create()
+PassRefPtr<JSGlobalData> JSGlobalData::create(bool isShared)
{
- return adoptRef(new JSGlobalData);
+ return adoptRef(new JSGlobalData(isShared, VPtrSet()));
}
PassRefPtr<JSGlobalData> JSGlobalData::createLeaked()
{
-#ifndef NDEBUG
Structure::startIgnoringLeaks();
RefPtr<JSGlobalData> data = create();
Structure::stopIgnoringLeaks();
return data.release();
-#else
- return create();
-#endif
}
bool JSGlobalData::sharedInstanceExists()
@@ -166,7 +207,7 @@ JSGlobalData& JSGlobalData::sharedInstance()
{
JSGlobalData*& instance = sharedInstanceInternal();
if (!instance) {
- instance = new JSGlobalData(true);
+ instance = create(true).releaseRef();
#if ENABLE(JSC_MULTIPLE_THREADS)
instance->makeUsableFromMultipleThreads();
#endif
@@ -181,8 +222,31 @@ JSGlobalData*& JSGlobalData::sharedInstanceInternal()
return sharedInstance;
}
-JSGlobalData::ClientData::~ClientData()
+#if ENABLE(JIT)
+
+void JSGlobalData::createNativeThunk()
+{
+ lazyNativeFunctionThunk = FunctionBodyNode::createNativeThunk(this);
+}
+
+#endif
+
+// FIXME: We can also detect forms like v1 < v2 ? -1 : 0, reverse comparison, etc.
+const Vector<Instruction>& JSGlobalData::numericCompareFunction(ExecState* exec)
{
+ if (!lazyNumericCompareFunction.size() && !initializingLazyNumericCompareFunction) {
+ initializingLazyNumericCompareFunction = true;
+ RefPtr<ProgramNode> programNode = parser->parse<ProgramNode>(exec, 0, makeSource(UString("(function (v1, v2) { return v1 - v2; })")), 0, 0);
+ RefPtr<FunctionBodyNode> functionBody = extractFunctionBody(programNode.get());
+ lazyNumericCompareFunction = functionBody->bytecode(exec->scopeChain()).instructions();
+ initializingLazyNumericCompareFunction = false;
+ }
+
+ return lazyNumericCompareFunction;
}
+JSGlobalData::ClientData::~ClientData()
+{
}
+
+} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h
index 67f4178..e53746b 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,39 +29,46 @@
#ifndef JSGlobalData_h
#define JSGlobalData_h
-#include <wtf/Forward.h>
-#include <wtf/HashMap.h>
-#include <wtf/RefCounted.h>
#include "Collector.h"
#include "ExecutableAllocator.h"
-#include "SmallStrings.h"
+#include "JITStubs.h"
#include "JSValue.h"
+#include "SmallStrings.h"
+#include "TimeoutChecker.h"
+#include <wtf/Forward.h>
+#include <wtf/HashMap.h>
+#include <wtf/RefCounted.h>
struct OpaqueJSClass;
struct OpaqueJSClassContextData;
namespace JSC {
- class ArgList;
class CommonIdentifiers;
- class Heap;
+ class FunctionBodyNode;
class IdentifierTable;
+ class Instruction;
+ class Interpreter;
class JSGlobalObject;
class JSObject;
class Lexer;
- class Interpreter;
class Parser;
- class ParserRefCounted;
+ class ScopeNode;
class Structure;
class UString;
struct HashTable;
+ struct VPtrSet;
class JSGlobalData : public RefCounted<JSGlobalData> {
public:
+ struct ClientData {
+ virtual ~ClientData() = 0;
+ };
+
static bool sharedInstanceExists();
static JSGlobalData& sharedInstance();
- static PassRefPtr<JSGlobalData> create();
+ static PassRefPtr<JSGlobalData> create(bool isShared = false);
static PassRefPtr<JSGlobalData> createLeaked();
~JSGlobalData();
@@ -70,12 +77,8 @@ namespace JSC {
void makeUsableFromMultipleThreads() { heap.makeUsableFromMultipleThreads(); }
#endif
- Interpreter* interpreter;
-
- JSValuePtr exception;
-#if ENABLE(JIT)
- void* exceptionLocation;
-#endif
+ bool isSharedInstance;
+ ClientData* clientData;
const HashTable* arrayTable;
const HashTable* dateTable;
@@ -91,48 +94,64 @@ namespace JSC {
RefPtr<Structure> stringStructure;
RefPtr<Structure> notAnObjectErrorStubStructure;
RefPtr<Structure> notAnObjectStructure;
+#if !USE(ALTERNATE_JSIMMEDIATE)
RefPtr<Structure> numberStructure;
+#endif
+
+ void* jsArrayVPtr;
+ void* jsByteArrayVPtr;
+ void* jsStringVPtr;
+ void* jsFunctionVPtr;
IdentifierTable* identifierTable;
CommonIdentifiers* propertyNames;
- const ArgList* emptyList; // Lists are supposed to be allocated on the stack to have their elements properly marked, which is not the case here - but this list has nothing to mark.
-
+ const MarkedArgumentBuffer* emptyList; // Lists are supposed to be allocated on the stack to have their elements properly marked, which is not the case here - but this list has nothing to mark.
SmallStrings smallStrings;
-
- HashMap<OpaqueJSClass*, OpaqueJSClassContextData*> opaqueJSClassData;
- HashSet<ParserRefCounted*>* newParserObjects;
- HashCountedSet<ParserRefCounted*>* parserObjectExtraRefCounts;
+#if ENABLE(ASSEMBLER)
+ ExecutableAllocator executableAllocator;
+#endif
Lexer* lexer;
Parser* parser;
+ Interpreter* interpreter;
+#if ENABLE(JIT)
+ JITThunks jitStubs;
+ FunctionBodyNode* nativeFunctionThunk()
+ {
+ if (!lazyNativeFunctionThunk)
+ createNativeThunk();
+ return lazyNativeFunctionThunk.get();
+ }
+ RefPtr<FunctionBodyNode> lazyNativeFunctionThunk;
+#endif
+ TimeoutChecker timeoutChecker;
+ Heap heap;
- JSGlobalObject* head;
- JSGlobalObject* dynamicGlobalObject;
+ JSValue exception;
+#if ENABLE(JIT)
+ void* exceptionLocation;
+#endif
- bool isSharedInstance;
+ const Vector<Instruction>& numericCompareFunction(ExecState*);
+ Vector<Instruction> lazyNumericCompareFunction;
+ bool initializingLazyNumericCompareFunction;
- struct ClientData {
- virtual ~ClientData() = 0;
- };
+ HashMap<OpaqueJSClass*, OpaqueJSClassContextData*> opaqueJSClassData;
- ClientData* clientData;
+ JSGlobalObject* head;
+ JSGlobalObject* dynamicGlobalObject;
HashSet<JSObject*> arrayVisitedElements;
- Heap heap;
-#if ENABLE(ASSEMBLER)
- PassRefPtr<ExecutablePool> poolForSize(size_t n) { return m_executableAllocator.poolForSize(n); }
-#endif
- private:
- JSGlobalData(bool isShared = false);
-#if ENABLE(ASSEMBLER)
- ExecutableAllocator m_executableAllocator;
-#endif
+ ScopeNode* scopeNodeBeingReparsed;
+ private:
+ JSGlobalData(bool isShared, const VPtrSet&);
static JSGlobalData*& sharedInstanceInternal();
+ void createNativeThunk();
};
-}
+} // namespace JSC
-#endif
+#endif // JSGlobalData_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.cpp
index dfe291c..1e9f670 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.cpp
@@ -47,6 +47,7 @@
#include "FunctionConstructor.h"
#include "FunctionPrototype.h"
#include "GlobalEvalFunction.h"
+#include "JSFunction.h"
#include "JSGlobalObjectFunctions.h"
#include "JSLock.h"
#include "Interpreter.h"
@@ -78,10 +79,10 @@ static const int initialTickCountThreshold = 255;
// Preferred number of milliseconds between each timeout check
static const int preferredScriptCheckTimeInterval = 1000;
-static inline void markIfNeeded(JSValuePtr v)
+static inline void markIfNeeded(JSValue v)
{
- if (v && !v->marked())
- v->mark();
+ if (v && !v.marked())
+ v.mark();
}
static inline void markIfNeeded(const RefPtr<Structure>& s)
@@ -147,7 +148,7 @@ void JSGlobalObject::init(JSObject* thisValue)
reset(prototype());
}
-void JSGlobalObject::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void JSGlobalObject::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
@@ -156,20 +157,20 @@ void JSGlobalObject::put(ExecState* exec, const Identifier& propertyName, JSValu
JSVariableObject::put(exec, propertyName, value, slot);
}
-void JSGlobalObject::putWithAttributes(ExecState* exec, const Identifier& propertyName, JSValuePtr value, unsigned attributes)
+void JSGlobalObject::putWithAttributes(ExecState* exec, const Identifier& propertyName, JSValue value, unsigned attributes)
{
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
if (symbolTablePutWithAttributes(propertyName, value, attributes))
return;
- JSValuePtr valueBefore = getDirect(propertyName);
+ JSValue valueBefore = getDirect(propertyName);
PutPropertySlot slot;
JSVariableObject::put(exec, propertyName, value, slot);
if (!valueBefore) {
- JSValuePtr valueAfter = getDirect(propertyName);
+ JSValue valueAfter = getDirect(propertyName);
if (valueAfter)
- putDirect(propertyName, valueAfter, attributes);
+ JSObject::putWithAttributes(exec, propertyName, valueAfter, attributes);
}
}
@@ -190,12 +191,12 @@ void JSGlobalObject::defineSetter(ExecState* exec, const Identifier& propertyNam
static inline JSObject* lastInPrototypeChain(JSObject* object)
{
JSObject* o = object;
- while (o->prototype()->isObject())
+ while (o->prototype().isObject())
o = asObject(o->prototype());
return o;
}
-void JSGlobalObject::reset(JSValuePtr prototype)
+void JSGlobalObject::reset(JSValue prototype)
{
ExecState* exec = JSGlobalObject::globalExec();
@@ -203,7 +204,11 @@ void JSGlobalObject::reset(JSValuePtr prototype)
d()->functionPrototype = new (exec) FunctionPrototype(exec, FunctionPrototype::createStructure(jsNull())); // The real prototype will be set once ObjectPrototype is created.
d()->prototypeFunctionStructure = PrototypeFunction::createStructure(d()->functionPrototype);
- d()->functionPrototype->addFunctionProperties(exec, d()->prototypeFunctionStructure.get());
+ NativeFunctionWrapper* callFunction = 0;
+ NativeFunctionWrapper* applyFunction = 0;
+ d()->functionPrototype->addFunctionProperties(exec, d()->prototypeFunctionStructure.get(), &callFunction, &applyFunction);
+ d()->callFunction = callFunction;
+ d()->applyFunction = applyFunction;
d()->objectPrototype = new (exec) ObjectPrototype(exec, ObjectPrototype::createStructure(jsNull()), d()->prototypeFunctionStructure.get());
d()->functionPrototype->structure()->setPrototypeWithoutTransition(d()->objectPrototype);
@@ -234,6 +239,8 @@ void JSGlobalObject::reset(JSValuePtr prototype)
d()->regExpPrototype = new (exec) RegExpPrototype(exec, RegExpPrototype::createStructure(d()->objectPrototype), d()->prototypeFunctionStructure.get());
d()->regExpStructure = RegExpObject::createStructure(d()->regExpPrototype);
+ d()->methodCallDummy = constructEmptyObject(exec);
+
ErrorPrototype* errorPrototype = new (exec) ErrorPrototype(exec, ErrorPrototype::createStructure(d()->objectPrototype), d()->prototypeFunctionStructure.get());
d()->errorStructure = ErrorInstance::createStructure(errorPrototype);
@@ -248,13 +255,13 @@ void JSGlobalObject::reset(JSValuePtr prototype)
// Constructors
- JSValuePtr objectConstructor = new (exec) ObjectConstructor(exec, ObjectConstructor::createStructure(d()->functionPrototype), d()->objectPrototype);
- JSValuePtr functionConstructor = new (exec) FunctionConstructor(exec, FunctionConstructor::createStructure(d()->functionPrototype), d()->functionPrototype);
- JSValuePtr arrayConstructor = new (exec) ArrayConstructor(exec, ArrayConstructor::createStructure(d()->functionPrototype), d()->arrayPrototype);
- JSValuePtr stringConstructor = new (exec) StringConstructor(exec, StringConstructor::createStructure(d()->functionPrototype), d()->prototypeFunctionStructure.get(), d()->stringPrototype);
- JSValuePtr booleanConstructor = new (exec) BooleanConstructor(exec, BooleanConstructor::createStructure(d()->functionPrototype), d()->booleanPrototype);
- JSValuePtr numberConstructor = new (exec) NumberConstructor(exec, NumberConstructor::createStructure(d()->functionPrototype), d()->numberPrototype);
- JSValuePtr dateConstructor = new (exec) DateConstructor(exec, DateConstructor::createStructure(d()->functionPrototype), d()->prototypeFunctionStructure.get(), d()->datePrototype);
+ JSCell* objectConstructor = new (exec) ObjectConstructor(exec, ObjectConstructor::createStructure(d()->functionPrototype), d()->objectPrototype);
+ JSCell* functionConstructor = new (exec) FunctionConstructor(exec, FunctionConstructor::createStructure(d()->functionPrototype), d()->functionPrototype);
+ JSCell* arrayConstructor = new (exec) ArrayConstructor(exec, ArrayConstructor::createStructure(d()->functionPrototype), d()->arrayPrototype);
+ JSCell* stringConstructor = new (exec) StringConstructor(exec, StringConstructor::createStructure(d()->functionPrototype), d()->prototypeFunctionStructure.get(), d()->stringPrototype);
+ JSCell* booleanConstructor = new (exec) BooleanConstructor(exec, BooleanConstructor::createStructure(d()->functionPrototype), d()->booleanPrototype);
+ JSCell* numberConstructor = new (exec) NumberConstructor(exec, NumberConstructor::createStructure(d()->functionPrototype), d()->numberPrototype);
+ JSCell* dateConstructor = new (exec) DateConstructor(exec, DateConstructor::createStructure(d()->functionPrototype), d()->prototypeFunctionStructure.get(), d()->datePrototype);
d()->regExpConstructor = new (exec) RegExpConstructor(exec, RegExpConstructor::createStructure(d()->functionPrototype), d()->regExpPrototype);
@@ -269,15 +276,15 @@ void JSGlobalObject::reset(JSValuePtr prototype)
d()->typeErrorConstructor = new (exec) NativeErrorConstructor(exec, nativeErrorStructure, typeErrorPrototype);
d()->URIErrorConstructor = new (exec) NativeErrorConstructor(exec, nativeErrorStructure, URIErrorPrototype);
- d()->objectPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, objectConstructor, DontEnum);
- d()->functionPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, functionConstructor, DontEnum);
- d()->arrayPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, arrayConstructor, DontEnum);
- d()->booleanPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, booleanConstructor, DontEnum);
- d()->stringPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, stringConstructor, DontEnum);
- d()->numberPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, numberConstructor, DontEnum);
- d()->datePrototype->putDirectWithoutTransition(exec->propertyNames().constructor, dateConstructor, DontEnum);
- d()->regExpPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, d()->regExpConstructor, DontEnum);
- errorPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, d()->errorConstructor, DontEnum);
+ d()->objectPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, objectConstructor, DontEnum);
+ d()->functionPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, functionConstructor, DontEnum);
+ d()->arrayPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, arrayConstructor, DontEnum);
+ d()->booleanPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, booleanConstructor, DontEnum);
+ d()->stringPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, stringConstructor, DontEnum);
+ d()->numberPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, numberConstructor, DontEnum);
+ d()->datePrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, dateConstructor, DontEnum);
+ d()->regExpPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, d()->regExpConstructor, DontEnum);
+ errorPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, d()->errorConstructor, DontEnum);
evalErrorPrototype->putDirect(exec->propertyNames().constructor, d()->evalErrorConstructor, DontEnum);
rangeErrorPrototype->putDirect(exec->propertyNames().constructor, d()->rangeErrorConstructor, DontEnum);
@@ -290,21 +297,21 @@ void JSGlobalObject::reset(JSValuePtr prototype)
// FIXME: These properties could be handled by a static hash table.
- putDirectWithoutTransition(Identifier(exec, "Object"), objectConstructor, DontEnum);
- putDirectWithoutTransition(Identifier(exec, "Function"), functionConstructor, DontEnum);
- putDirectWithoutTransition(Identifier(exec, "Array"), arrayConstructor, DontEnum);
- putDirectWithoutTransition(Identifier(exec, "Boolean"), booleanConstructor, DontEnum);
- putDirectWithoutTransition(Identifier(exec, "String"), stringConstructor, DontEnum);
- putDirectWithoutTransition(Identifier(exec, "Number"), numberConstructor, DontEnum);
- putDirectWithoutTransition(Identifier(exec, "Date"), dateConstructor, DontEnum);
- putDirectWithoutTransition(Identifier(exec, "RegExp"), d()->regExpConstructor, DontEnum);
- putDirectWithoutTransition(Identifier(exec, "Error"), d()->errorConstructor, DontEnum);
- putDirectWithoutTransition(Identifier(exec, "EvalError"), d()->evalErrorConstructor);
- putDirectWithoutTransition(Identifier(exec, "RangeError"), d()->rangeErrorConstructor);
- putDirectWithoutTransition(Identifier(exec, "ReferenceError"), d()->referenceErrorConstructor);
- putDirectWithoutTransition(Identifier(exec, "SyntaxError"), d()->syntaxErrorConstructor);
- putDirectWithoutTransition(Identifier(exec, "TypeError"), d()->typeErrorConstructor);
- putDirectWithoutTransition(Identifier(exec, "URIError"), d()->URIErrorConstructor);
+ putDirectFunctionWithoutTransition(Identifier(exec, "Object"), objectConstructor, DontEnum);
+ putDirectFunctionWithoutTransition(Identifier(exec, "Function"), functionConstructor, DontEnum);
+ putDirectFunctionWithoutTransition(Identifier(exec, "Array"), arrayConstructor, DontEnum);
+ putDirectFunctionWithoutTransition(Identifier(exec, "Boolean"), booleanConstructor, DontEnum);
+ putDirectFunctionWithoutTransition(Identifier(exec, "String"), stringConstructor, DontEnum);
+ putDirectFunctionWithoutTransition(Identifier(exec, "Number"), numberConstructor, DontEnum);
+ putDirectFunctionWithoutTransition(Identifier(exec, "Date"), dateConstructor, DontEnum);
+ putDirectFunctionWithoutTransition(Identifier(exec, "RegExp"), d()->regExpConstructor, DontEnum);
+ putDirectFunctionWithoutTransition(Identifier(exec, "Error"), d()->errorConstructor, DontEnum);
+ putDirectFunctionWithoutTransition(Identifier(exec, "EvalError"), d()->evalErrorConstructor);
+ putDirectFunctionWithoutTransition(Identifier(exec, "RangeError"), d()->rangeErrorConstructor);
+ putDirectFunctionWithoutTransition(Identifier(exec, "ReferenceError"), d()->referenceErrorConstructor);
+ putDirectFunctionWithoutTransition(Identifier(exec, "SyntaxError"), d()->syntaxErrorConstructor);
+ putDirectFunctionWithoutTransition(Identifier(exec, "TypeError"), d()->typeErrorConstructor);
+ putDirectFunctionWithoutTransition(Identifier(exec, "URIError"), d()->URIErrorConstructor);
// Set global values.
GlobalPropertyInfo staticGlobals[] = {
@@ -320,43 +327,32 @@ void JSGlobalObject::reset(JSValuePtr prototype)
d()->evalFunction = new (exec) GlobalEvalFunction(exec, GlobalEvalFunction::createStructure(d()->functionPrototype), 1, exec->propertyNames().eval, globalFuncEval, this);
putDirectFunctionWithoutTransition(exec, d()->evalFunction, DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 2, Identifier(exec, "parseInt"), globalFuncParseInt), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "parseFloat"), globalFuncParseFloat), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "isNaN"), globalFuncIsNaN), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "isFinite"), globalFuncIsFinite), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "escape"), globalFuncEscape), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "unescape"), globalFuncUnescape), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "decodeURI"), globalFuncDecodeURI), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "decodeURIComponent"), globalFuncDecodeURIComponent), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "encodeURI"), globalFuncEncodeURI), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "encodeURIComponent"), globalFuncEncodeURIComponent), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 2, Identifier(exec, "parseInt"), globalFuncParseInt), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "parseFloat"), globalFuncParseFloat), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "isNaN"), globalFuncIsNaN), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "isFinite"), globalFuncIsFinite), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "escape"), globalFuncEscape), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "unescape"), globalFuncUnescape), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "decodeURI"), globalFuncDecodeURI), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "decodeURIComponent"), globalFuncDecodeURIComponent), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "encodeURI"), globalFuncEncodeURI), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "encodeURIComponent"), globalFuncEncodeURIComponent), DontEnum);
#ifndef NDEBUG
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "jscprint"), globalFuncJSCPrint), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "jscprint"), globalFuncJSCPrint), DontEnum);
#endif
resetPrototype(prototype);
}
// Set prototype, and also insert the object prototype at the end of the chain.
-void JSGlobalObject::resetPrototype(JSValuePtr prototype)
+void JSGlobalObject::resetPrototype(JSValue prototype)
{
setPrototype(prototype);
- lastInPrototypeChain(this)->setPrototype(d()->objectPrototype);
-}
-
-void JSGlobalObject::setTimeoutTime(unsigned timeoutTime)
-{
- globalData()->interpreter->setTimeoutTime(timeoutTime);
-}
-void JSGlobalObject::startTimeoutCheck()
-{
- globalData()->interpreter->startTimeoutCheck();
-}
-
-void JSGlobalObject::stopTimeoutCheck()
-{
- globalData()->interpreter->stopTimeoutCheck();
+ JSObject* oldLastInPrototypeChain = lastInPrototypeChain(this);
+ JSObject* objectPrototype = d()->objectPrototype;
+ if (oldLastInPrototypeChain != objectPrototype)
+ oldLastInPrototypeChain->setPrototype(objectPrototype);
}
void JSGlobalObject::mark()
@@ -381,6 +377,8 @@ void JSGlobalObject::mark()
markIfNeeded(d()->URIErrorConstructor);
markIfNeeded(d()->evalFunction);
+ markIfNeeded(d()->callFunction);
+ markIfNeeded(d()->applyFunction);
markIfNeeded(d()->objectPrototype);
markIfNeeded(d()->functionPrototype);
@@ -391,6 +389,8 @@ void JSGlobalObject::mark()
markIfNeeded(d()->datePrototype);
markIfNeeded(d()->regExpPrototype);
+ markIfNeeded(d()->methodCallDummy);
+
markIfNeeded(d()->errorStructure);
// No need to mark the other structures, because their prototypes are all
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.h
index 4a10f64..da9a819 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.h
@@ -24,6 +24,7 @@
#include "JSGlobalData.h"
#include "JSVariableObject.h"
+#include "NativeFunctionWrapper.h"
#include "NumberPrototype.h"
#include "StringPrototype.h"
#include <wtf/HashSet.h>
@@ -40,6 +41,7 @@ namespace JSC {
class GlobalEvalFunction;
class NativeErrorConstructor;
class ProgramCodeBlock;
+ class PrototypeFunction;
class RegExpConstructor;
class RegExpPrototype;
class RegisterFile;
@@ -67,6 +69,8 @@ namespace JSC {
, typeErrorConstructor(0)
, URIErrorConstructor(0)
, evalFunction(0)
+ , callFunction(0)
+ , applyFunction(0)
, objectPrototype(0)
, functionPrototype(0)
, arrayPrototype(0)
@@ -75,6 +79,7 @@ namespace JSC {
, numberPrototype(0)
, datePrototype(0)
, regExpPrototype(0)
+ , methodCallDummy(0)
{
}
@@ -104,6 +109,8 @@ namespace JSC {
NativeErrorConstructor* URIErrorConstructor;
GlobalEvalFunction* evalFunction;
+ NativeFunctionWrapper* callFunction;
+ NativeFunctionWrapper* applyFunction;
ObjectPrototype* objectPrototype;
FunctionPrototype* functionPrototype;
@@ -114,6 +121,8 @@ namespace JSC {
DatePrototype* datePrototype;
RegExpPrototype* regExpPrototype;
+ JSObject* methodCallDummy;
+
RefPtr<Structure> argumentsStructure;
RefPtr<Structure> arrayStructure;
RefPtr<Structure> booleanObjectStructure;
@@ -161,8 +170,8 @@ namespace JSC {
virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&, bool& slotIsWriteable);
- virtual void put(ExecState*, const Identifier&, JSValuePtr, PutPropertySlot&);
- virtual void putWithAttributes(ExecState*, const Identifier& propertyName, JSValuePtr value, unsigned attributes);
+ virtual void put(ExecState*, const Identifier&, JSValue, PutPropertySlot&);
+ virtual void putWithAttributes(ExecState*, const Identifier& propertyName, JSValue value, unsigned attributes);
virtual void defineGetter(ExecState*, const Identifier& propertyName, JSObject* getterFunc);
virtual void defineSetter(ExecState*, const Identifier& propertyName, JSObject* setterFunc);
@@ -195,6 +204,8 @@ namespace JSC {
DatePrototype* datePrototype() const { return d()->datePrototype; }
RegExpPrototype* regExpPrototype() const { return d()->regExpPrototype; }
+ JSObject* methodCallDummy() const { return d()->methodCallDummy; }
+
Structure* argumentsStructure() const { return d()->argumentsStructure.get(); }
Structure* arrayStructure() const { return d()->arrayStructure.get(); }
Structure* booleanObjectStructure() const { return d()->booleanObjectStructure.get(); }
@@ -214,10 +225,6 @@ namespace JSC {
void setProfileGroup(unsigned value) { d()->profileGroup = value; }
unsigned profileGroup() const { return d()->profileGroup; }
- void setTimeoutTime(unsigned timeoutTime);
- void startTimeoutCheck();
- void stopTimeoutCheck();
-
Debugger* debugger() const { return d()->debugger; }
void setDebugger(Debugger* debugger) { d()->debugger = debugger; }
@@ -244,19 +251,19 @@ namespace JSC {
void copyGlobalsFrom(RegisterFile&);
void copyGlobalsTo(RegisterFile&);
- void resetPrototype(JSValuePtr prototype);
+ void resetPrototype(JSValue prototype);
JSGlobalData* globalData() { return d()->globalData.get(); }
JSGlobalObjectData* d() const { return static_cast<JSGlobalObjectData*>(JSVariableObject::d); }
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType));
}
protected:
struct GlobalPropertyInfo {
- GlobalPropertyInfo(const Identifier& i, JSValuePtr v, unsigned a)
+ GlobalPropertyInfo(const Identifier& i, JSValue v, unsigned a)
: identifier(i)
, value(v)
, attributes(a)
@@ -264,7 +271,7 @@ namespace JSC {
}
const Identifier identifier;
- JSValuePtr value;
+ JSValue value;
unsigned attributes;
};
void addStaticGlobals(GlobalPropertyInfo*, int count);
@@ -272,16 +279,16 @@ namespace JSC {
private:
// FIXME: Fold reset into init.
void init(JSObject* thisValue);
- void reset(JSValuePtr prototype);
+ void reset(JSValue prototype);
void setRegisters(Register* registers, Register* registerArray, size_t count);
void* operator new(size_t); // can only be allocated with JSGlobalData
};
- JSGlobalObject* asGlobalObject(JSValuePtr);
+ JSGlobalObject* asGlobalObject(JSValue);
- inline JSGlobalObject* asGlobalObject(JSValuePtr value)
+ inline JSGlobalObject* asGlobalObject(JSValue value)
{
ASSERT(asObject(value)->isGlobalObject());
return static_cast<JSGlobalObject*>(asObject(value));
@@ -333,7 +340,7 @@ namespace JSC {
return asGlobalObject(n->object);
}
- inline JSValuePtr Structure::prototypeForLookup(ExecState* exec)
+ inline JSValue Structure::prototypeForLookup(ExecState* exec) const
{
if (typeInfo().type() == ObjectType)
return m_prototype;
@@ -345,6 +352,32 @@ namespace JSC {
return exec->lexicalGlobalObject()->numberPrototype();
}
+ inline StructureChain* Structure::prototypeChain(ExecState* exec) const
+ {
+ // We cache our prototype chain so our clients can share it.
+ if (!isValid(exec, m_cachedPrototypeChain.get())) {
+ JSValue prototype = prototypeForLookup(exec);
+ m_cachedPrototypeChain = StructureChain::create(prototype.isNull() ? 0 : asObject(prototype)->structure());
+ }
+ return m_cachedPrototypeChain.get();
+ }
+
+ inline bool Structure::isValid(ExecState* exec, StructureChain* cachedPrototypeChain) const
+ {
+ if (!cachedPrototypeChain)
+ return false;
+
+ JSValue prototype = prototypeForLookup(exec);
+ RefPtr<Structure>* cachedStructure = cachedPrototypeChain->head();
+ while(*cachedStructure && !prototype.isNull()) {
+ if (asObject(prototype)->structure() != *cachedStructure)
+ return false;
+ ++cachedStructure;
+ prototype = asObject(prototype)->prototype();
+ }
+ return prototype.isNull() && !*cachedStructure;
+ }
+
inline JSGlobalObject* ExecState::dynamicGlobalObject()
{
if (this == lexicalGlobalObject()->globalExec())
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
index ecdddcf..b013957 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
@@ -28,6 +28,7 @@
#include "CallFrame.h"
#include "GlobalEvalFunction.h"
#include "JSGlobalObject.h"
+#include "LiteralParser.h"
#include "JSString.h"
#include "Interpreter.h"
#include "Parser.h"
@@ -47,9 +48,9 @@ using namespace Unicode;
namespace JSC {
-static JSValuePtr encode(ExecState* exec, const ArgList& args, const char* doNotEscape)
+static JSValue encode(ExecState* exec, const ArgList& args, const char* doNotEscape)
{
- UString str = args.at(exec, 0)->toString(exec);
+ UString str = args.at(0).toString(exec);
CString cstr = str.UTF8String(true);
if (!cstr.c_str())
return throwError(exec, URIError, "String contained an illegal UTF-16 sequence.");
@@ -69,10 +70,10 @@ static JSValuePtr encode(ExecState* exec, const ArgList& args, const char* doNot
return jsString(exec, result);
}
-static JSValuePtr decode(ExecState* exec, const ArgList& args, const char* doNotUnescape, bool strict)
+static JSValue decode(ExecState* exec, const ArgList& args, const char* doNotUnescape, bool strict)
{
UString result = "";
- UString str = args.at(exec, 0)->toString(exec);
+ UString str = args.at(0).toString(exec);
int k = 0;
int len = str.size();
const UChar* d = str.data();
@@ -268,18 +269,22 @@ static double parseFloat(const UString& s)
return s.toDouble(true /*tolerant*/, false /* NaN for empty string */);
}
-JSValuePtr globalFuncEval(ExecState* exec, JSObject* function, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncEval(ExecState* exec, JSObject* function, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObject = thisValue->toThisObject(exec);
+ JSObject* thisObject = thisValue.toThisObject(exec);
JSObject* unwrappedObject = thisObject->unwrappedObject();
if (!unwrappedObject->isGlobalObject() || static_cast<JSGlobalObject*>(unwrappedObject)->evalFunction() != function)
return throwError(exec, EvalError, "The \"this\" value passed to eval must be the global object from which eval originated");
- JSValuePtr x = args.at(exec, 0);
- if (!x->isString())
+ JSValue x = args.at(0);
+ if (!x.isString())
return x;
- UString s = x->toString(exec);
+ UString s = x.toString(exec);
+
+ LiteralParser preparser(exec, s);
+ if (JSValue parsedObject = preparser.tryLiteralParse())
+ return parsedObject;
int errLine;
UString errMsg;
@@ -293,42 +298,42 @@ JSValuePtr globalFuncEval(ExecState* exec, JSObject* function, JSValuePtr thisVa
return exec->interpreter()->execute(evalNode.get(), exec, thisObject, static_cast<JSGlobalObject*>(unwrappedObject)->globalScopeChain().node(), exec->exceptionSlot());
}
-JSValuePtr globalFuncParseInt(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncParseInt(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- JSValuePtr value = args.at(exec, 0);
- int32_t radix = args.at(exec, 1)->toInt32(exec);
+ JSValue value = args.at(0);
+ int32_t radix = args.at(1).toInt32(exec);
- if (value->isNumber() && (radix == 0 || radix == 10)) {
- if (JSImmediate::isImmediate(value))
+ if (value.isNumber() && (radix == 0 || radix == 10)) {
+ if (value.isInt32Fast())
return value;
- double d = value->uncheckedGetNumber();
+ double d = value.uncheckedGetNumber();
if (isfinite(d))
- return jsNumber(exec, floor(d));
+ return jsNumber(exec, (d > 0) ? floor(d) : ceil(d));
if (isnan(d) || isinf(d))
return jsNaN(&exec->globalData());
- return JSImmediate::zeroImmediate();
+ return jsNumber(exec, 0);
}
- return jsNumber(exec, parseInt(value->toString(exec), radix));
+ return jsNumber(exec, parseInt(value.toString(exec), radix));
}
-JSValuePtr globalFuncParseFloat(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncParseFloat(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, parseFloat(args.at(exec, 0)->toString(exec)));
+ return jsNumber(exec, parseFloat(args.at(0).toString(exec)));
}
-JSValuePtr globalFuncIsNaN(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncIsNaN(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsBoolean(isnan(args.at(exec, 0)->toNumber(exec)));
+ return jsBoolean(isnan(args.at(0).toNumber(exec)));
}
-JSValuePtr globalFuncIsFinite(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncIsFinite(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- double n = args.at(exec, 0)->toNumber(exec);
+ double n = args.at(0).toNumber(exec);
return jsBoolean(!isnan(n) && !isinf(n));
}
-JSValuePtr globalFuncDecodeURI(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncDecodeURI(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
static const char do_not_unescape_when_decoding_URI[] =
"#$&+,/:;=?@";
@@ -336,12 +341,12 @@ JSValuePtr globalFuncDecodeURI(ExecState* exec, JSObject*, JSValuePtr, const Arg
return decode(exec, args, do_not_unescape_when_decoding_URI, true);
}
-JSValuePtr globalFuncDecodeURIComponent(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncDecodeURIComponent(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
return decode(exec, args, "", true);
}
-JSValuePtr globalFuncEncodeURI(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncEncodeURI(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
static const char do_not_escape_when_encoding_URI[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
@@ -352,7 +357,7 @@ JSValuePtr globalFuncEncodeURI(ExecState* exec, JSObject*, JSValuePtr, const Arg
return encode(exec, args, do_not_escape_when_encoding_URI);
}
-JSValuePtr globalFuncEncodeURIComponent(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncEncodeURIComponent(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
static const char do_not_escape_when_encoding_URI_component[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
@@ -363,7 +368,7 @@ JSValuePtr globalFuncEncodeURIComponent(ExecState* exec, JSObject*, JSValuePtr,
return encode(exec, args, do_not_escape_when_encoding_URI_component);
}
-JSValuePtr globalFuncEscape(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncEscape(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
static const char do_not_escape[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
@@ -373,7 +378,7 @@ JSValuePtr globalFuncEscape(ExecState* exec, JSObject*, JSValuePtr, const ArgLis
UString result = "";
UString s;
- UString str = args.at(exec, 0)->toString(exec);
+ UString str = args.at(0).toString(exec);
const UChar* c = str.data();
for (int k = 0; k < str.size(); k++, c++) {
int u = c[0];
@@ -394,22 +399,22 @@ JSValuePtr globalFuncEscape(ExecState* exec, JSObject*, JSValuePtr, const ArgLis
return jsString(exec, result);
}
-JSValuePtr globalFuncUnescape(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncUnescape(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
UString result = "";
- UString str = args.at(exec, 0)->toString(exec);
+ UString str = args.at(0).toString(exec);
int k = 0;
int len = str.size();
while (k < len) {
const UChar* c = str.data() + k;
UChar u;
if (c[0] == '%' && k <= len - 6 && c[1] == 'u') {
- if (Lexer::isHexDigit(c[2]) && Lexer::isHexDigit(c[3]) && Lexer::isHexDigit(c[4]) && Lexer::isHexDigit(c[5])) {
+ if (isASCIIHexDigit(c[2]) && isASCIIHexDigit(c[3]) && isASCIIHexDigit(c[4]) && isASCIIHexDigit(c[5])) {
u = Lexer::convertUnicode(c[2], c[3], c[4], c[5]);
c = &u;
k += 5;
}
- } else if (c[0] == '%' && k <= len - 3 && Lexer::isHexDigit(c[1]) && Lexer::isHexDigit(c[2])) {
+ } else if (c[0] == '%' && k <= len - 3 && isASCIIHexDigit(c[1]) && isASCIIHexDigit(c[2])) {
u = UChar(Lexer::convertHex(c[1], c[2]));
c = &u;
k += 2;
@@ -422,10 +427,10 @@ JSValuePtr globalFuncUnescape(ExecState* exec, JSObject*, JSValuePtr, const ArgL
}
#ifndef NDEBUG
-JSValuePtr globalFuncJSCPrint(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL globalFuncJSCPrint(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
CStringBuffer string;
- args.at(exec, 0)->toString(exec).getCString(string);
+ args.at(0).toString(exec).getCString(string);
puts(string.data());
return jsUndefined();
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.h
index ea1f106..b1046f2 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.h
@@ -24,34 +24,36 @@
#ifndef JSGlobalObjectFunctions_h
#define JSGlobalObjectFunctions_h
-#include "JSImmediate.h" // temporary until JSValue* becomes a class we can forward-declare
+#include <wtf/unicode/Unicode.h>
namespace JSC {
class ArgList;
class ExecState;
class JSObject;
+ class JSValue;
// FIXME: These functions should really be in JSGlobalObject.cpp, but putting them there
// is a 0.5% reduction.
- JSValuePtr globalFuncEval(ExecState*, JSObject*, JSValuePtr, const ArgList&);
- JSValuePtr globalFuncParseInt(ExecState*, JSObject*, JSValuePtr, const ArgList&);
- JSValuePtr globalFuncParseFloat(ExecState*, JSObject*, JSValuePtr, const ArgList&);
- JSValuePtr globalFuncIsNaN(ExecState*, JSObject*, JSValuePtr, const ArgList&);
- JSValuePtr globalFuncIsFinite(ExecState*, JSObject*, JSValuePtr, const ArgList&);
- JSValuePtr globalFuncDecodeURI(ExecState*, JSObject*, JSValuePtr, const ArgList&);
- JSValuePtr globalFuncDecodeURIComponent(ExecState*, JSObject*, JSValuePtr, const ArgList&);
- JSValuePtr globalFuncEncodeURI(ExecState*, JSObject*, JSValuePtr, const ArgList&);
- JSValuePtr globalFuncEncodeURIComponent(ExecState*, JSObject*, JSValuePtr, const ArgList&);
- JSValuePtr globalFuncEscape(ExecState*, JSObject*, JSValuePtr, const ArgList&);
- JSValuePtr globalFuncUnescape(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncEval(ExecState*, JSObject*, JSValue, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncParseInt(ExecState*, JSObject*, JSValue, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncParseFloat(ExecState*, JSObject*, JSValue, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncIsNaN(ExecState*, JSObject*, JSValue, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncIsFinite(ExecState*, JSObject*, JSValue, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncDecodeURI(ExecState*, JSObject*, JSValue, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncDecodeURIComponent(ExecState*, JSObject*, JSValue, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncEncodeURI(ExecState*, JSObject*, JSValue, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncEncodeURIComponent(ExecState*, JSObject*, JSValue, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncEscape(ExecState*, JSObject*, JSValue, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncUnescape(ExecState*, JSObject*, JSValue, const ArgList&);
#ifndef NDEBUG
- JSValuePtr globalFuncJSCPrint(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+ JSValue JSC_HOST_CALL globalFuncJSCPrint(ExecState*, JSObject*, JSValue, const ArgList&);
#endif
static const double mantissaOverflowLowerBound = 9007199254740992.0;
double parseIntOverflow(const char*, int length, int radix);
+ bool isStrWhiteSpace(UChar);
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp
index 09b3750..201e56c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp
@@ -32,35 +32,31 @@
namespace JSC {
-JSObject* JSImmediate::toThisObject(JSValuePtr v, ExecState* exec)
+JSObject* JSImmediate::toThisObject(JSValue v, ExecState* exec)
{
ASSERT(isImmediate(v));
if (isNumber(v))
- return constructNumberFromImmediateNumber(exec, v);
+ return constructNumber(exec, v);
if (isBoolean(v))
return constructBooleanFromImmediateBoolean(exec, v);
- if (v->isNull())
- return exec->globalThisValue();
-
- JSNotAnObjectErrorStub* exception = createNotAnObjectErrorStub(exec, v->isNull());
- exec->setException(exception);
- return new (exec) JSNotAnObject(exec, exception);
+ ASSERT(v.isUndefinedOrNull());
+ return exec->globalThisValue();
}
-JSObject* JSImmediate::toObject(JSValuePtr v, ExecState* exec)
+JSObject* JSImmediate::toObject(JSValue v, ExecState* exec)
{
ASSERT(isImmediate(v));
if (isNumber(v))
- return constructNumberFromImmediateNumber(exec, v);
+ return constructNumber(exec, v);
if (isBoolean(v))
return constructBooleanFromImmediateBoolean(exec, v);
- JSNotAnObjectErrorStub* exception = createNotAnObjectErrorStub(exec, v->isNull());
+ JSNotAnObjectErrorStub* exception = createNotAnObjectErrorStub(exec, v.isNull());
exec->setException(exception);
return new (exec) JSNotAnObject(exec, exception);
}
-JSObject* JSImmediate::prototype(JSValuePtr v, ExecState* exec)
+JSObject* JSImmediate::prototype(JSValue v, ExecState* exec)
{
ASSERT(isImmediate(v));
if (isNumber(v))
@@ -68,23 +64,34 @@ JSObject* JSImmediate::prototype(JSValuePtr v, ExecState* exec)
if (isBoolean(v))
return exec->lexicalGlobalObject()->booleanPrototype();
- JSNotAnObjectErrorStub* exception = createNotAnObjectErrorStub(exec, v->isNull());
+ JSNotAnObjectErrorStub* exception = createNotAnObjectErrorStub(exec, v.isNull());
exec->setException(exception);
return new (exec) JSNotAnObject(exec, exception);
}
-UString JSImmediate::toString(JSValuePtr v)
+UString JSImmediate::toString(JSValue v)
{
ASSERT(isImmediate(v));
- if (isNumber(v))
+ if (isIntegerNumber(v))
return UString::from(getTruncatedInt32(v));
+#if USE(ALTERNATE_JSIMMEDIATE)
+ if (isNumber(v)) {
+ ASSERT(isDoubleNumber(v));
+ double value = doubleValue(v);
+ if (value == 0.0) // +0.0 or -0.0
+ return "0";
+ return UString::from(value);
+ }
+#else
+ ASSERT(!isNumber(v));
+#endif
if (jsBoolean(false) == v)
return "false";
if (jsBoolean(true) == v)
return "true";
- if (v->isNull())
+ if (v.isNull())
return "null";
- ASSERT(v->isUndefined());
+ ASSERT(v.isUndefined());
return "undefined";
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.h
index 37bca2a..706396e 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.h
@@ -25,6 +25,7 @@
#include <wtf/Assertions.h>
#include <wtf/AlwaysInline.h>
#include <wtf/MathExtras.h>
+#include <wtf/StdLibExtras.h>
#include "JSValue.h"
#include <limits>
#include <limits.h>
@@ -36,10 +37,23 @@ namespace JSC {
class ExecState;
class JSCell;
+ class JSFastMath;
+ class JSGlobalData;
class JSObject;
- class JSValue;
class UString;
+#if USE(ALTERNATE_JSIMMEDIATE)
+ inline intptr_t reinterpretDoubleToIntptr(double value)
+ {
+ return WTF::bitwise_cast<intptr_t>(value);
+ }
+
+ inline double reinterpretIntptrToDouble(intptr_t value)
+ {
+ return WTF::bitwise_cast<double>(value);
+ }
+#endif
+
/*
* A JSValue* is either a pointer to a cell (a heap-allocated object) or an immediate (a type-tagged
* value masquerading as a pointer). The low two bits in a JSValue* are available for type tagging
@@ -84,14 +98,33 @@ namespace JSC {
/*
* On 64-bit platforms, we support an alternative encoding form for immediates, if
- * USE(ALTERNATE_JSIMMEDIATE) is defined.
+ * USE(ALTERNATE_JSIMMEDIATE) is defined. When this format is used, double precision
+ * floating point values may also be encoded as JSImmediates.
+ *
+ * The encoding makes use of unused NaN space in the IEEE754 representation. Any value
+ * with the top 13 bits set represents a QNaN (with the sign bit set). QNaN values
+ * can encode a 51-bit payload. Hardware produced and C-library payloads typically
+ * have a payload of zero. We assume that non-zero payloads are available to encode
+ * pointer and integer values. Since any 64-bit bit pattern where the top 15 bits are
+ * all set represents a NaN with a non-zero payload, we can use this space in the NaN
+ * ranges to encode other values (however there are also other ranges of NaN space that
+ * could have been selected). This range of NaN space is represented by 64-bit numbers
+ * begining with the 16-bit hex patterns 0xFFFE and 0xFFFF - we rely on the fact that no
+ * valid double-precision numbers will begin fall in these ranges.
*
- * The top 16-bits denote the type:
+ * The scheme we have implemented encodes double precision values by adding 2^48 to the
+ * 64-bit integer representation of the number. After this manipulation, no encoded
+ * double-precision value will begin with the pattern 0x0000 or 0xFFFF.
+ *
+ * The top 16-bits denote the type of the encoded JSImmediate:
*
* Pointer: 0000:PPPP:PPPP:PPPP
+ * 0001:****:****:****
+ * Double:{ ...
+ * FFFE:****:****:****
* Integer: FFFF:0000:IIII:IIII
*
- * 32-bit signed integers are marked with the 16-bit tag '0xFFFF'. The tag '0x0000'
+ * 32-bit signed integers are marked with the 16-bit tag 0xFFFF. The tag 0x0000
* denotes a pointer, or another form of tagged immediate. Boolean, null and undefined
* values are encoded in the same manner as the default format.
*/
@@ -99,14 +132,41 @@ namespace JSC {
class JSImmediate {
private:
friend class JIT;
-
+ friend class JSValue;
+ friend class JSFastMath;
+ friend JSValue jsNumber(ExecState* exec, double d);
+ friend JSValue jsNumber(ExecState*, char i);
+ friend JSValue jsNumber(ExecState*, unsigned char i);
+ friend JSValue jsNumber(ExecState*, short i);
+ friend JSValue jsNumber(ExecState*, unsigned short i);
+ friend JSValue jsNumber(ExecState* exec, int i);
+ friend JSValue jsNumber(ExecState* exec, unsigned i);
+ friend JSValue jsNumber(ExecState* exec, long i);
+ friend JSValue jsNumber(ExecState* exec, unsigned long i);
+ friend JSValue jsNumber(ExecState* exec, long long i);
+ friend JSValue jsNumber(ExecState* exec, unsigned long long i);
+ friend JSValue jsNumber(JSGlobalData* globalData, double d);
+ friend JSValue jsNumber(JSGlobalData* globalData, short i);
+ friend JSValue jsNumber(JSGlobalData* globalData, unsigned short i);
+ friend JSValue jsNumber(JSGlobalData* globalData, int i);
+ friend JSValue jsNumber(JSGlobalData* globalData, unsigned i);
+ friend JSValue jsNumber(JSGlobalData* globalData, long i);
+ friend JSValue jsNumber(JSGlobalData* globalData, unsigned long i);
+ friend JSValue jsNumber(JSGlobalData* globalData, long long i);
+ friend JSValue jsNumber(JSGlobalData* globalData, unsigned long long i);
+
#if USE(ALTERNATE_JSIMMEDIATE)
- static const intptr_t TagTypeInteger = 0xffff000000000000ll; // bottom bit set indicates integer, this dominates the following bit
+ // If all bits in the mask are set, this indicates an integer number,
+ // if any but not all are set this value is a double precision number.
+ static const intptr_t TagTypeNumber = 0xffff000000000000ll;
+ // This value is 2^48, used to encode doubles such that the encoded value will begin
+ // with a 16-bit pattern within the range 0x0001..0xFFFE.
+ static const intptr_t DoubleEncodeOffset = 0x1000000000000ll;
#else
- static const intptr_t TagTypeInteger = 0x1; // bottom bit set indicates integer, this dominates the following bit
+ static const intptr_t TagTypeNumber = 0x1; // bottom bit set indicates integer, this dominates the following bit
#endif
static const intptr_t TagBitTypeOther = 0x2; // second bit set indicates immediate other than an integer
- static const intptr_t TagMask = TagTypeInteger | TagBitTypeOther;
+ static const intptr_t TagMask = TagTypeNumber | TagBitTypeOther;
static const intptr_t ExtendedTagMask = 0xC; // extended tag holds a further two bits
static const intptr_t ExtendedTagBitBool = 0x4;
@@ -128,157 +188,102 @@ namespace JSC {
static const int32_t signBit = 0x80000000;
- public:
- static ALWAYS_INLINE bool isImmediate(JSValuePtr v)
+ static ALWAYS_INLINE bool isImmediate(JSValue v)
{
return rawValue(v) & TagMask;
}
- static ALWAYS_INLINE bool isNumber(JSValuePtr v)
+ static ALWAYS_INLINE bool isNumber(JSValue v)
+ {
+ return rawValue(v) & TagTypeNumber;
+ }
+
+ static ALWAYS_INLINE bool isIntegerNumber(JSValue v)
+ {
+#if USE(ALTERNATE_JSIMMEDIATE)
+ return (rawValue(v) & TagTypeNumber) == TagTypeNumber;
+#else
+ return isNumber(v);
+#endif
+ }
+
+#if USE(ALTERNATE_JSIMMEDIATE)
+ static ALWAYS_INLINE bool isDoubleNumber(JSValue v)
{
- return rawValue(v) & TagTypeInteger;
+ return isNumber(v) && !isIntegerNumber(v);
}
+#endif
- static ALWAYS_INLINE bool isPositiveNumber(JSValuePtr v)
+ static ALWAYS_INLINE bool isPositiveIntegerNumber(JSValue v)
{
// A single mask to check for the sign bit and the number tag all at once.
- return (rawValue(v) & (signBit | TagTypeInteger)) == TagTypeInteger;
+ return (rawValue(v) & (signBit | TagTypeNumber)) == TagTypeNumber;
}
- static ALWAYS_INLINE bool isBoolean(JSValuePtr v)
+ static ALWAYS_INLINE bool isBoolean(JSValue v)
{
return (rawValue(v) & FullTagTypeMask) == FullTagTypeBool;
}
- static ALWAYS_INLINE bool isUndefinedOrNull(JSValuePtr v)
+ static ALWAYS_INLINE bool isUndefinedOrNull(JSValue v)
{
// Undefined and null share the same value, bar the 'undefined' bit in the extended tag.
return (rawValue(v) & ~ExtendedTagBitUndefined) == FullTagTypeNull;
}
- static bool isNegative(JSValuePtr v)
- {
- ASSERT(isNumber(v));
- return rawValue(v) & signBit;
- }
-
- static JSValuePtr from(char);
- static JSValuePtr from(signed char);
- static JSValuePtr from(unsigned char);
- static JSValuePtr from(short);
- static JSValuePtr from(unsigned short);
- static JSValuePtr from(int);
- static JSValuePtr from(unsigned);
- static JSValuePtr from(long);
- static JSValuePtr from(unsigned long);
- static JSValuePtr from(long long);
- static JSValuePtr from(unsigned long long);
- static JSValuePtr from(double);
-
- static ALWAYS_INLINE bool isEitherImmediate(JSValuePtr v1, JSValuePtr v2)
+ static JSValue from(char);
+ static JSValue from(signed char);
+ static JSValue from(unsigned char);
+ static JSValue from(short);
+ static JSValue from(unsigned short);
+ static JSValue from(int);
+ static JSValue from(unsigned);
+ static JSValue from(long);
+ static JSValue from(unsigned long);
+ static JSValue from(long long);
+ static JSValue from(unsigned long long);
+ static JSValue from(double);
+
+ static ALWAYS_INLINE bool isEitherImmediate(JSValue v1, JSValue v2)
{
return (rawValue(v1) | rawValue(v2)) & TagMask;
}
- static ALWAYS_INLINE bool isAnyImmediate(JSValuePtr v1, JSValuePtr v2, JSValuePtr v3)
- {
- return (rawValue(v1) | rawValue(v2) | rawValue(v3)) & TagMask;
- }
-
- static ALWAYS_INLINE bool areBothImmediate(JSValuePtr v1, JSValuePtr v2)
+ static ALWAYS_INLINE bool areBothImmediate(JSValue v1, JSValue v2)
{
return isImmediate(v1) & isImmediate(v2);
}
- static ALWAYS_INLINE bool areBothImmediateNumbers(JSValuePtr v1, JSValuePtr v2)
- {
- return rawValue(v1) & rawValue(v2) & TagTypeInteger;
- }
-
- static ALWAYS_INLINE JSValuePtr andImmediateNumbers(JSValuePtr v1, JSValuePtr v2)
- {
- ASSERT(areBothImmediateNumbers(v1, v2));
- return makeValue(rawValue(v1) & rawValue(v2));
- }
-
- static ALWAYS_INLINE JSValuePtr xorImmediateNumbers(JSValuePtr v1, JSValuePtr v2)
- {
- ASSERT(areBothImmediateNumbers(v1, v2));
- return makeValue((rawValue(v1) ^ rawValue(v2)) | TagTypeInteger);
- }
-
- static ALWAYS_INLINE JSValuePtr orImmediateNumbers(JSValuePtr v1, JSValuePtr v2)
- {
- ASSERT(areBothImmediateNumbers(v1, v2));
- return makeValue(rawValue(v1) | rawValue(v2));
- }
-
- static ALWAYS_INLINE JSValuePtr rightShiftImmediateNumbers(JSValuePtr val, JSValuePtr shift)
+ static ALWAYS_INLINE bool areBothImmediateIntegerNumbers(JSValue v1, JSValue v2)
{
- ASSERT(areBothImmediateNumbers(val, shift));
#if USE(ALTERNATE_JSIMMEDIATE)
- return makeValue(static_cast<intptr_t>(static_cast<uint32_t>(static_cast<int32_t>(rawValue(val)) >> ((rawValue(shift) >> IntegerPayloadShift) & 0x1f))) | TagTypeInteger);
+ return (rawValue(v1) & rawValue(v2) & TagTypeNumber) == TagTypeNumber;
#else
- return makeValue((rawValue(val) >> ((rawValue(shift) >> IntegerPayloadShift) & 0x1f)) | TagTypeInteger);
+ return rawValue(v1) & rawValue(v2) & TagTypeNumber;
#endif
}
- static ALWAYS_INLINE bool canDoFastAdditiveOperations(JSValuePtr v)
- {
- // Number is non-negative and an operation involving two of these can't overflow.
- // Checking for allowed negative numbers takes more time than it's worth on SunSpider.
- return (rawValue(v) & (TagTypeInteger + (signBit | (signBit >> 1)))) == TagTypeInteger;
- }
-
- static ALWAYS_INLINE JSValuePtr addImmediateNumbers(JSValuePtr v1, JSValuePtr v2)
- {
- ASSERT(canDoFastAdditiveOperations(v1));
- ASSERT(canDoFastAdditiveOperations(v2));
- return makeValue(rawValue(v1) + rawValue(v2) - TagTypeInteger);
- }
-
- static ALWAYS_INLINE JSValuePtr subImmediateNumbers(JSValuePtr v1, JSValuePtr v2)
- {
- ASSERT(canDoFastAdditiveOperations(v1));
- ASSERT(canDoFastAdditiveOperations(v2));
- return makeValue(rawValue(v1) - rawValue(v2) + TagTypeInteger);
- }
-
- static ALWAYS_INLINE JSValuePtr incImmediateNumber(JSValuePtr v)
- {
- ASSERT(canDoFastAdditiveOperations(v));
- return makeValue(rawValue(v) + (1 << IntegerPayloadShift));
- }
-
- static ALWAYS_INLINE JSValuePtr decImmediateNumber(JSValuePtr v)
- {
- ASSERT(canDoFastAdditiveOperations(v));
- return makeValue(rawValue(v) - (1 << IntegerPayloadShift));
- }
-
- static double toDouble(JSValuePtr);
- static bool toBoolean(JSValuePtr);
- static JSObject* toObject(JSValuePtr, ExecState*);
- static JSObject* toThisObject(JSValuePtr, ExecState*);
- static UString toString(JSValuePtr);
+ static double toDouble(JSValue);
+ static bool toBoolean(JSValue);
+ static JSObject* toObject(JSValue, ExecState*);
+ static JSObject* toThisObject(JSValue, ExecState*);
+ static UString toString(JSValue);
- static bool getUInt32(JSValuePtr, uint32_t&);
- static bool getTruncatedInt32(JSValuePtr, int32_t&);
- static bool getTruncatedUInt32(JSValuePtr, uint32_t&);
+ static bool getUInt32(JSValue, uint32_t&);
+ static bool getTruncatedInt32(JSValue, int32_t&);
+ static bool getTruncatedUInt32(JSValue, uint32_t&);
- static int32_t getTruncatedInt32(JSValuePtr);
- static uint32_t getTruncatedUInt32(JSValuePtr);
+ static int32_t getTruncatedInt32(JSValue);
+ static uint32_t getTruncatedUInt32(JSValue);
- static JSValuePtr trueImmediate();
- static JSValuePtr falseImmediate();
- static JSValuePtr undefinedImmediate();
- static JSValuePtr nullImmediate();
- static JSValuePtr zeroImmediate();
- static JSValuePtr oneImmediate();
+ static JSValue trueImmediate();
+ static JSValue falseImmediate();
+ static JSValue undefinedImmediate();
+ static JSValue nullImmediate();
+ static JSValue zeroImmediate();
+ static JSValue oneImmediate();
- static JSValuePtr impossibleValue();
-
- static JSObject* prototype(JSValuePtr, ExecState*);
+ static JSObject* prototype(JSValue, ExecState*);
private:
#if USE(ALTERNATE_JSIMMEDIATE)
@@ -290,51 +295,71 @@ namespace JSC {
#endif
static const unsigned maxImmediateUInt = maxImmediateInt;
- static ALWAYS_INLINE JSValuePtr makeValue(intptr_t integer)
+ static ALWAYS_INLINE JSValue makeValue(intptr_t integer)
{
- return JSValuePtr::makeImmediate(integer);
+ return JSValue::makeImmediate(integer);
}
+ // With USE(ALTERNATE_JSIMMEDIATE) we want the argument to be zero extended, so the
+ // integer doesn't interfere with the tag bits in the upper word. In the default encoding,
+ // if intptr_t id larger then int32_t we sign extend the value through the upper word.
#if USE(ALTERNATE_JSIMMEDIATE)
- static ALWAYS_INLINE JSValuePtr makeInt(uint32_t value)
+ static ALWAYS_INLINE JSValue makeInt(uint32_t value)
#else
- static ALWAYS_INLINE JSValuePtr makeInt(int32_t value)
+ static ALWAYS_INLINE JSValue makeInt(int32_t value)
#endif
{
- return makeValue((static_cast<intptr_t>(value) << IntegerPayloadShift) | TagTypeInteger);
+ return makeValue((static_cast<intptr_t>(value) << IntegerPayloadShift) | TagTypeNumber);
+ }
+
+#if USE(ALTERNATE_JSIMMEDIATE)
+ static ALWAYS_INLINE JSValue makeDouble(double value)
+ {
+ return makeValue(reinterpretDoubleToIntptr(value) + DoubleEncodeOffset);
}
+#endif
- static ALWAYS_INLINE JSValuePtr makeBool(bool b)
+ static ALWAYS_INLINE JSValue makeBool(bool b)
{
return makeValue((static_cast<intptr_t>(b) << ExtendedPayloadShift) | FullTagTypeBool);
}
- static ALWAYS_INLINE JSValuePtr makeUndefined()
+ static ALWAYS_INLINE JSValue makeUndefined()
{
return makeValue(FullTagTypeUndefined);
}
- static ALWAYS_INLINE JSValuePtr makeNull()
+ static ALWAYS_INLINE JSValue makeNull()
{
return makeValue(FullTagTypeNull);
}
-
- static ALWAYS_INLINE int32_t intValue(JSValuePtr v)
+
+ template<typename T>
+ static JSValue fromNumberOutsideIntegerRange(T);
+
+#if USE(ALTERNATE_JSIMMEDIATE)
+ static ALWAYS_INLINE double doubleValue(JSValue v)
+ {
+ return reinterpretIntptrToDouble(rawValue(v) - DoubleEncodeOffset);
+ }
+#endif
+
+ static ALWAYS_INLINE int32_t intValue(JSValue v)
{
return static_cast<int32_t>(rawValue(v) >> IntegerPayloadShift);
}
- static ALWAYS_INLINE uint32_t uintValue(JSValuePtr v)
+ static ALWAYS_INLINE uint32_t uintValue(JSValue v)
{
return static_cast<uint32_t>(rawValue(v) >> IntegerPayloadShift);
}
- static ALWAYS_INLINE bool boolValue(JSValuePtr v)
+ static ALWAYS_INLINE bool boolValue(JSValue v)
{
return rawValue(v) & ExtendedPayloadBitBoolValue;
}
- static ALWAYS_INLINE intptr_t rawValue(JSValuePtr v)
+ static ALWAYS_INLINE intptr_t rawValue(JSValue v)
{
return v.immediateValue();
}
@@ -342,177 +367,204 @@ namespace JSC {
static double nonInlineNaN();
};
- ALWAYS_INLINE JSValuePtr JSImmediate::trueImmediate() { return makeBool(true); }
- ALWAYS_INLINE JSValuePtr JSImmediate::falseImmediate() { return makeBool(false); }
- ALWAYS_INLINE JSValuePtr JSImmediate::undefinedImmediate() { return makeUndefined(); }
- ALWAYS_INLINE JSValuePtr JSImmediate::nullImmediate() { return makeNull(); }
- ALWAYS_INLINE JSValuePtr JSImmediate::zeroImmediate() { return makeInt(0); }
- ALWAYS_INLINE JSValuePtr JSImmediate::oneImmediate() { return makeInt(1); }
+ ALWAYS_INLINE JSValue JSImmediate::trueImmediate() { return makeBool(true); }
+ ALWAYS_INLINE JSValue JSImmediate::falseImmediate() { return makeBool(false); }
+ ALWAYS_INLINE JSValue JSImmediate::undefinedImmediate() { return makeUndefined(); }
+ ALWAYS_INLINE JSValue JSImmediate::nullImmediate() { return makeNull(); }
+ ALWAYS_INLINE JSValue JSImmediate::zeroImmediate() { return makeInt(0); }
+ ALWAYS_INLINE JSValue JSImmediate::oneImmediate() { return makeInt(1); }
- // This value is impossible because 0x4 is not a valid pointer but a tag of 0 would indicate non-immediate
- ALWAYS_INLINE JSValuePtr JSImmediate::impossibleValue() { return makeValue(0x4); }
+#if USE(ALTERNATE_JSIMMEDIATE)
+ inline bool doubleToBoolean(double value)
+ {
+ return value < 0.0 || value > 0.0;
+ }
- ALWAYS_INLINE bool JSImmediate::toBoolean(JSValuePtr v)
+ ALWAYS_INLINE bool JSImmediate::toBoolean(JSValue v)
+ {
+ ASSERT(isImmediate(v));
+ return isNumber(v) ? isIntegerNumber(v) ? v != zeroImmediate()
+ : doubleToBoolean(doubleValue(v)) : v == trueImmediate();
+ }
+#else
+ ALWAYS_INLINE bool JSImmediate::toBoolean(JSValue v)
{
ASSERT(isImmediate(v));
- intptr_t bits = rawValue(v);
- return (bits & TagTypeInteger)
- ? bits != TagTypeInteger // !0 ints
- : bits == (FullTagTypeBool | ExtendedPayloadBitBoolValue); // bool true
+ return isIntegerNumber(v) ? v != zeroImmediate() : v == trueImmediate();
}
+#endif
- ALWAYS_INLINE uint32_t JSImmediate::getTruncatedUInt32(JSValuePtr v)
+ ALWAYS_INLINE uint32_t JSImmediate::getTruncatedUInt32(JSValue v)
{
- ASSERT(isNumber(v));
+ // FIXME: should probably be asserting isPositiveIntegerNumber here.
+ ASSERT(isIntegerNumber(v));
return intValue(v);
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(char i)
+#if USE(ALTERNATE_JSIMMEDIATE)
+ template<typename T>
+ inline JSValue JSImmediate::fromNumberOutsideIntegerRange(T value)
+ {
+ return makeDouble(static_cast<double>(value));
+ }
+#else
+ template<typename T>
+ inline JSValue JSImmediate::fromNumberOutsideIntegerRange(T)
+ {
+ return JSValue();
+ }
+#endif
+
+ ALWAYS_INLINE JSValue JSImmediate::from(char i)
{
return makeInt(i);
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(signed char i)
+ ALWAYS_INLINE JSValue JSImmediate::from(signed char i)
{
return makeInt(i);
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(unsigned char i)
+ ALWAYS_INLINE JSValue JSImmediate::from(unsigned char i)
{
return makeInt(i);
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(short i)
+ ALWAYS_INLINE JSValue JSImmediate::from(short i)
{
return makeInt(i);
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(unsigned short i)
+ ALWAYS_INLINE JSValue JSImmediate::from(unsigned short i)
{
return makeInt(i);
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(int i)
+ ALWAYS_INLINE JSValue JSImmediate::from(int i)
{
+#if !USE(ALTERNATE_JSIMMEDIATE)
if ((i < minImmediateInt) | (i > maxImmediateInt))
- return noValue();
+ return fromNumberOutsideIntegerRange(i);
+#endif
return makeInt(i);
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(unsigned i)
+ ALWAYS_INLINE JSValue JSImmediate::from(unsigned i)
{
if (i > maxImmediateUInt)
- return noValue();
+ return fromNumberOutsideIntegerRange(i);
return makeInt(i);
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(long i)
+ ALWAYS_INLINE JSValue JSImmediate::from(long i)
{
if ((i < minImmediateInt) | (i > maxImmediateInt))
- return noValue();
+ return fromNumberOutsideIntegerRange(i);
return makeInt(i);
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(unsigned long i)
+ ALWAYS_INLINE JSValue JSImmediate::from(unsigned long i)
{
if (i > maxImmediateUInt)
- return noValue();
+ return fromNumberOutsideIntegerRange(i);
return makeInt(i);
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(long long i)
+ ALWAYS_INLINE JSValue JSImmediate::from(long long i)
{
if ((i < minImmediateInt) | (i > maxImmediateInt))
- return noValue();
+ return JSValue();
return makeInt(static_cast<intptr_t>(i));
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(unsigned long long i)
+ ALWAYS_INLINE JSValue JSImmediate::from(unsigned long long i)
{
if (i > maxImmediateUInt)
- return noValue();
+ return fromNumberOutsideIntegerRange(i);
return makeInt(static_cast<intptr_t>(i));
}
- ALWAYS_INLINE JSValuePtr JSImmediate::from(double d)
+ ALWAYS_INLINE JSValue JSImmediate::from(double d)
{
const int intVal = static_cast<int>(d);
- if ((intVal < minImmediateInt) | (intVal > maxImmediateInt))
- return noValue();
-
// Check for data loss from conversion to int.
if (intVal != d || (!intVal && signbit(d)))
- return noValue();
+ return fromNumberOutsideIntegerRange(d);
- return makeInt(intVal);
+ return from(intVal);
}
- ALWAYS_INLINE int32_t JSImmediate::getTruncatedInt32(JSValuePtr v)
+ ALWAYS_INLINE int32_t JSImmediate::getTruncatedInt32(JSValue v)
{
- ASSERT(isNumber(v));
+ ASSERT(isIntegerNumber(v));
return intValue(v);
}
- ALWAYS_INLINE double JSImmediate::toDouble(JSValuePtr v)
+ ALWAYS_INLINE double JSImmediate::toDouble(JSValue v)
{
ASSERT(isImmediate(v));
- int i;
- if (isNumber(v))
- i = intValue(v);
- else if (rawValue(v) == FullTagTypeUndefined)
+
+ if (isIntegerNumber(v))
+ return intValue(v);
+
+#if USE(ALTERNATE_JSIMMEDIATE)
+ if (isNumber(v)) {
+ ASSERT(isDoubleNumber(v));
+ return doubleValue(v);
+ }
+#else
+ ASSERT(!isNumber(v));
+#endif
+
+ if (rawValue(v) == FullTagTypeUndefined)
return nonInlineNaN();
- else
- i = rawValue(v) >> ExtendedPayloadShift;
- return i;
+
+ ASSERT(JSImmediate::isBoolean(v) || (v == JSImmediate::nullImmediate()));
+ return rawValue(v) >> ExtendedPayloadShift;
}
- ALWAYS_INLINE bool JSImmediate::getUInt32(JSValuePtr v, uint32_t& i)
+ ALWAYS_INLINE bool JSImmediate::getUInt32(JSValue v, uint32_t& i)
{
i = uintValue(v);
- return isPositiveNumber(v);
+ return isPositiveIntegerNumber(v);
}
- ALWAYS_INLINE bool JSImmediate::getTruncatedInt32(JSValuePtr v, int32_t& i)
+ ALWAYS_INLINE bool JSImmediate::getTruncatedInt32(JSValue v, int32_t& i)
{
i = intValue(v);
- return isNumber(v);
+ return isIntegerNumber(v);
}
- ALWAYS_INLINE bool JSImmediate::getTruncatedUInt32(JSValuePtr v, uint32_t& i)
+ ALWAYS_INLINE bool JSImmediate::getTruncatedUInt32(JSValue v, uint32_t& i)
{
return getUInt32(v, i);
}
- inline JSValuePtr jsNull()
- {
- return JSImmediate::nullImmediate();
- }
+ // These are identical logic to the JSValue functions above, and faster than jsNumber(number).toInt32().
+ int32_t toInt32(double);
+ uint32_t toUInt32(double);
+ int32_t toInt32SlowCase(double, bool& ok);
+ uint32_t toUInt32SlowCase(double, bool& ok);
- inline JSValuePtr jsBoolean(bool b)
+ inline JSValue::JSValue(JSNullTag)
{
- return b ? JSImmediate::trueImmediate() : JSImmediate::falseImmediate();
+ *this = JSImmediate::nullImmediate();
}
-
- inline JSValuePtr jsUndefined()
+
+ inline JSValue::JSValue(JSUndefinedTag)
{
- return JSImmediate::undefinedImmediate();
+ *this = JSImmediate::undefinedImmediate();
}
- // These are identical logic to the JSValue functions above, and faster than jsNumber(number)->toInt32().
- int32_t toInt32(double);
- uint32_t toUInt32(double);
- int32_t toInt32SlowCase(double, bool& ok);
- uint32_t toUInt32SlowCase(double, bool& ok);
-
- inline bool JSValue::isUndefined() const
+ inline JSValue::JSValue(JSTrueTag)
{
- return asValue() == jsUndefined();
+ *this = JSImmediate::trueImmediate();
}
- inline bool JSValue::isNull() const
+ inline JSValue::JSValue(JSFalseTag)
{
- return asValue() == jsNull();
+ *this = JSImmediate::falseImmediate();
}
inline bool JSValue::isUndefinedOrNull() const
@@ -545,8 +597,8 @@ namespace JSC {
int32_t i;
if (getTruncatedInt32(i))
return i;
- bool ok;
- return toInt32SlowCase(exec, ok);
+ bool ignored;
+ return toInt32SlowCase(toNumber(exec), ignored);
}
inline uint32_t JSValue::toUInt32(ExecState* exec) const
@@ -554,8 +606,8 @@ namespace JSC {
uint32_t i;
if (getTruncatedUInt32(i))
return i;
- bool ok;
- return toUInt32SlowCase(exec, ok);
+ bool ignored;
+ return toUInt32SlowCase(toNumber(exec), ignored);
}
inline int32_t toInt32(double val)
@@ -583,7 +635,7 @@ namespace JSC {
ok = true;
return i;
}
- return toInt32SlowCase(exec, ok);
+ return toInt32SlowCase(toNumber(exec), ok);
}
inline uint32_t JSValue::toUInt32(ExecState* exec, bool& ok) const
@@ -593,9 +645,142 @@ namespace JSC {
ok = true;
return i;
}
- return toUInt32SlowCase(exec, ok);
+ return toUInt32SlowCase(toNumber(exec), ok);
+ }
+
+ inline bool JSValue::isCell() const
+ {
+ return !JSImmediate::isImmediate(asValue());
+ }
+
+ inline bool JSValue::isInt32Fast() const
+ {
+ return JSImmediate::isIntegerNumber(asValue());
+ }
+
+ inline int32_t JSValue::getInt32Fast() const
+ {
+ ASSERT(isInt32Fast());
+ return JSImmediate::getTruncatedInt32(asValue());
+ }
+
+ inline bool JSValue::isUInt32Fast() const
+ {
+ return JSImmediate::isPositiveIntegerNumber(asValue());
+ }
+
+ inline uint32_t JSValue::getUInt32Fast() const
+ {
+ ASSERT(isUInt32Fast());
+ return JSImmediate::getTruncatedUInt32(asValue());
+ }
+
+ inline JSValue JSValue::makeInt32Fast(int32_t i)
+ {
+ return JSImmediate::from(i);
+ }
+
+ inline bool JSValue::areBothInt32Fast(JSValue v1, JSValue v2)
+ {
+ return JSImmediate::areBothImmediateIntegerNumbers(v1, v2);
}
+ class JSFastMath {
+ public:
+ static ALWAYS_INLINE bool canDoFastBitwiseOperations(JSValue v1, JSValue v2)
+ {
+ return JSImmediate::areBothImmediateIntegerNumbers(v1, v2);
+ }
+
+ static ALWAYS_INLINE JSValue equal(JSValue v1, JSValue v2)
+ {
+ ASSERT(canDoFastBitwiseOperations(v1, v2));
+ return jsBoolean(v1 == v2);
+ }
+
+ static ALWAYS_INLINE JSValue notEqual(JSValue v1, JSValue v2)
+ {
+ ASSERT(canDoFastBitwiseOperations(v1, v2));
+ return jsBoolean(v1 != v2);
+ }
+
+ static ALWAYS_INLINE JSValue andImmediateNumbers(JSValue v1, JSValue v2)
+ {
+ ASSERT(canDoFastBitwiseOperations(v1, v2));
+ return JSImmediate::makeValue(JSImmediate::rawValue(v1) & JSImmediate::rawValue(v2));
+ }
+
+ static ALWAYS_INLINE JSValue xorImmediateNumbers(JSValue v1, JSValue v2)
+ {
+ ASSERT(canDoFastBitwiseOperations(v1, v2));
+ return JSImmediate::makeValue((JSImmediate::rawValue(v1) ^ JSImmediate::rawValue(v2)) | JSImmediate::TagTypeNumber);
+ }
+
+ static ALWAYS_INLINE JSValue orImmediateNumbers(JSValue v1, JSValue v2)
+ {
+ ASSERT(canDoFastBitwiseOperations(v1, v2));
+ return JSImmediate::makeValue(JSImmediate::rawValue(v1) | JSImmediate::rawValue(v2));
+ }
+
+ static ALWAYS_INLINE bool canDoFastRshift(JSValue v1, JSValue v2)
+ {
+ return JSImmediate::areBothImmediateIntegerNumbers(v1, v2);
+ }
+
+ static ALWAYS_INLINE bool canDoFastUrshift(JSValue v1, JSValue v2)
+ {
+ return JSImmediate::areBothImmediateIntegerNumbers(v1, v2) && !(JSImmediate::rawValue(v1) & JSImmediate::signBit);
+ }
+
+ static ALWAYS_INLINE JSValue rightShiftImmediateNumbers(JSValue val, JSValue shift)
+ {
+ ASSERT(canDoFastRshift(val, shift) || canDoFastUrshift(val, shift));
+#if USE(ALTERNATE_JSIMMEDIATE)
+ return JSImmediate::makeValue(static_cast<intptr_t>(static_cast<uint32_t>(static_cast<int32_t>(JSImmediate::rawValue(val)) >> ((JSImmediate::rawValue(shift) >> JSImmediate::IntegerPayloadShift) & 0x1f))) | JSImmediate::TagTypeNumber);
+#else
+ return JSImmediate::makeValue((JSImmediate::rawValue(val) >> ((JSImmediate::rawValue(shift) >> JSImmediate::IntegerPayloadShift) & 0x1f)) | JSImmediate::TagTypeNumber);
+#endif
+ }
+
+ static ALWAYS_INLINE bool canDoFastAdditiveOperations(JSValue v)
+ {
+ // Number is non-negative and an operation involving two of these can't overflow.
+ // Checking for allowed negative numbers takes more time than it's worth on SunSpider.
+ return (JSImmediate::rawValue(v) & (JSImmediate::TagTypeNumber + (JSImmediate::signBit | (JSImmediate::signBit >> 1)))) == JSImmediate::TagTypeNumber;
+ }
+
+ static ALWAYS_INLINE bool canDoFastAdditiveOperations(JSValue v1, JSValue v2)
+ {
+ // Number is non-negative and an operation involving two of these can't overflow.
+ // Checking for allowed negative numbers takes more time than it's worth on SunSpider.
+ return canDoFastAdditiveOperations(v1) && canDoFastAdditiveOperations(v2);
+ }
+
+ static ALWAYS_INLINE JSValue addImmediateNumbers(JSValue v1, JSValue v2)
+ {
+ ASSERT(canDoFastAdditiveOperations(v1, v2));
+ return JSImmediate::makeValue(JSImmediate::rawValue(v1) + JSImmediate::rawValue(v2) - JSImmediate::TagTypeNumber);
+ }
+
+ static ALWAYS_INLINE JSValue subImmediateNumbers(JSValue v1, JSValue v2)
+ {
+ ASSERT(canDoFastAdditiveOperations(v1, v2));
+ return JSImmediate::makeValue(JSImmediate::rawValue(v1) - JSImmediate::rawValue(v2) + JSImmediate::TagTypeNumber);
+ }
+
+ static ALWAYS_INLINE JSValue incImmediateNumber(JSValue v)
+ {
+ ASSERT(canDoFastAdditiveOperations(v));
+ return JSImmediate::makeValue(JSImmediate::rawValue(v) + (1 << JSImmediate::IntegerPayloadShift));
+ }
+
+ static ALWAYS_INLINE JSValue decImmediateNumber(JSValue v)
+ {
+ ASSERT(canDoFastAdditiveOperations(v));
+ return JSImmediate::makeValue(JSImmediate::rawValue(v) - (1 << JSImmediate::IntegerPayloadShift));
+ }
+ };
+
} // namespace JSC
#endif // JSImmediate_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSLock.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSLock.cpp
index 5662a41..7ece5da 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSLock.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSLock.cpp
@@ -119,11 +119,58 @@ bool JSLock::currentThreadIsHoldingLock()
return !!pthread_getspecific(JSLockCount);
}
+// This is fairly nasty. We allow multiple threads to run on the same
+// context, and we do not require any locking semantics in doing so -
+// clients of the API may simply use the context from multiple threads
+// concurently, and assume this will work. In order to make this work,
+// We lock the context when a thread enters, and unlock it when it leaves.
+// However we do not only unlock when the thread returns from its
+// entry point (evaluate script or call function), we also unlock the
+// context if the thread leaves JSC by making a call out to an external
+// function through a callback.
+//
+// All threads using the context share the same JS stack (the RegisterFile).
+// Whenever a thread calls into JSC it starts using the RegisterFile from the
+// previous 'high water mark' - the maximum point the stack has ever grown to
+// (returned by RegisterFile::end()). So if a first thread calls out to a
+// callback, and a second thread enters JSC, then also exits by calling out
+// to a callback, we can be left with stackframes from both threads in the
+// RegisterFile. As such, a problem may occur should the first thread's
+// callback complete first, and attempt to return to JSC. Were we to allow
+// this to happen, and were its stack to grow further, then it may potentially
+// write over the second thread's call frames.
+//
+// In avoid JS stack corruption we enforce a policy of only ever allowing two
+// threads to use a JS context concurrently, and only allowing the second of
+// these threads to execute until it has completed and fully returned from its
+// outermost call into JSC. We enforce this policy using 'lockDropDepth'. The
+// first time a thread exits it will call DropAllLocks - which will do as expected
+// and drop locks allowing another thread to enter. Should another thread, or the
+// same thread again, enter JSC (through evaluate script or call function), and exit
+// again through a callback, then the locks will not be dropped when DropAllLocks
+// is called (since lockDropDepth is non-zero). Since this thread is still holding
+// the locks, only it will re able to re-enter JSC (either be returning from the
+// callback, or by re-entering through another call to evaulate script or call
+// function).
+//
+// This policy is slightly more restricive than it needs to be for correctness -
+// we could validly allow futher entries into JSC from other threads, we only
+// need ensure that callbacks return in the reverse chronological order of the
+// order in which they were made - though implementing the less restrictive policy
+// would likely increase complexity and overhead.
+//
+static unsigned lockDropDepth = 0;
+
JSLock::DropAllLocks::DropAllLocks(ExecState* exec)
: m_lockingForReal(exec->globalData().isSharedInstance)
{
pthread_once(&createJSLockCountOnce, createJSLockCount);
+ if (lockDropDepth++) {
+ m_lockCount = 0;
+ return;
+ }
+
m_lockCount = JSLock::lockCount();
for (intptr_t i = 0; i < m_lockCount; i++)
JSLock::unlock(m_lockingForReal);
@@ -134,6 +181,11 @@ JSLock::DropAllLocks::DropAllLocks(bool lockingForReal)
{
pthread_once(&createJSLockCountOnce, createJSLockCount);
+ if (lockDropDepth++) {
+ m_lockCount = 0;
+ return;
+ }
+
// It is necessary to drop even "unreal" locks, because having a non-zero lock count
// will prevent a real lock from being taken.
@@ -146,6 +198,8 @@ JSLock::DropAllLocks::~DropAllLocks()
{
for (intptr_t i = 0; i < m_lockCount; i++)
JSLock::lock(m_lockingForReal);
+
+ --lockDropDepth;
}
#else
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.cpp
index d4310fc..937dc2b 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.cpp
@@ -37,13 +37,13 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(JSNotAnObject);
// JSValue methods
-JSValuePtr JSNotAnObject::toPrimitive(ExecState* exec, PreferredPrimitiveType) const
+JSValue JSNotAnObject::toPrimitive(ExecState* exec, PreferredPrimitiveType) const
{
ASSERT_UNUSED(exec, exec->hadException() && exec->exception() == m_exception);
return m_exception;
}
-bool JSNotAnObject::getPrimitiveNumber(ExecState* exec, double&, JSValuePtr&)
+bool JSNotAnObject::getPrimitiveNumber(ExecState* exec, double&, JSValue&)
{
ASSERT_UNUSED(exec, exec->hadException() && exec->exception() == m_exception);
return false;
@@ -69,8 +69,7 @@ UString JSNotAnObject::toString(ExecState* exec) const
JSObject* JSNotAnObject::toObject(ExecState* exec) const
{
- UNUSED_PARAM(exec);
- ASSERT(exec->hadException() && exec->exception() == m_exception);
+ ASSERT_UNUSED(exec, exec->hadException() && exec->exception() == m_exception);
return m_exception;
}
@@ -95,12 +94,12 @@ bool JSNotAnObject::getOwnPropertySlot(ExecState* exec, unsigned, PropertySlot&)
return false;
}
-void JSNotAnObject::put(ExecState* exec, const Identifier& , JSValuePtr, PutPropertySlot&)
+void JSNotAnObject::put(ExecState* exec, const Identifier& , JSValue, PutPropertySlot&)
{
ASSERT_UNUSED(exec, exec->hadException() && exec->exception() == m_exception);
}
-void JSNotAnObject::put(ExecState* exec, unsigned, JSValuePtr)
+void JSNotAnObject::put(ExecState* exec, unsigned, JSValue)
{
ASSERT_UNUSED(exec, exec->hadException() && exec->exception() == m_exception);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.h
index c69593f..a8e36bd 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.h
@@ -60,15 +60,15 @@ namespace JSC {
{
}
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType));
}
private:
// JSValue methods
- virtual JSValuePtr toPrimitive(ExecState*, PreferredPrimitiveType) const;
- virtual bool getPrimitiveNumber(ExecState*, double& number, JSValuePtr&);
+ virtual JSValue toPrimitive(ExecState*, PreferredPrimitiveType) const;
+ virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue&);
virtual bool toBoolean(ExecState*) const;
virtual double toNumber(ExecState*) const;
virtual UString toString(ExecState*) const;
@@ -81,8 +81,8 @@ namespace JSC {
virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
virtual bool getOwnPropertySlot(ExecState*, unsigned propertyName, PropertySlot&);
- virtual void put(ExecState*, const Identifier& propertyName, JSValuePtr, PutPropertySlot&);
- virtual void put(ExecState*, unsigned propertyName, JSValuePtr);
+ virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
+ virtual void put(ExecState*, unsigned propertyName, JSValue);
virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
virtual bool deleteProperty(ExecState*, unsigned propertyName);
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNumberCell.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNumberCell.cpp
index efda0c6..669440b 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNumberCell.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNumberCell.cpp
@@ -28,12 +28,14 @@
namespace JSC {
-JSValuePtr JSNumberCell::toPrimitive(ExecState*, PreferredPrimitiveType) const
+#if !USE(ALTERNATE_JSIMMEDIATE)
+
+JSValue JSNumberCell::toPrimitive(ExecState*, PreferredPrimitiveType) const
{
return const_cast<JSNumberCell*>(this);
}
-bool JSNumberCell::getPrimitiveNumber(ExecState*, double& number, JSValuePtr& value)
+bool JSNumberCell::getPrimitiveNumber(ExecState*, double& number, JSValue& value)
{
number = m_value;
value = this;
@@ -96,29 +98,40 @@ bool JSNumberCell::getTruncatedUInt32(uint32_t& uint32) const
return true;
}
-JSValuePtr JSNumberCell::getJSNumber()
+JSValue JSNumberCell::getJSNumber()
{
return this;
}
-NEVER_INLINE JSValuePtr jsNumberCell(ExecState* exec, double d)
+JSValue jsNumberCell(ExecState* exec, double d)
{
return new (exec) JSNumberCell(exec, d);
}
-NEVER_INLINE JSValuePtr jsNaN(ExecState* exec)
+JSValue jsNumberCell(JSGlobalData* globalData, double d)
{
- return new (exec) JSNumberCell(exec, NaN);
+ return new (globalData) JSNumberCell(globalData, d);
}
-NEVER_INLINE JSValuePtr jsNumberCell(JSGlobalData* globalData, double d)
+JSValue jsAPIMangledNumber(ExecState* exec, double d)
{
- return new (globalData) JSNumberCell(globalData, d);
+ return new (exec) JSNumberCell(JSNumberCell::APIMangled, d);
+}
+
+#else
+
+JSValue jsNumberCell(ExecState*, double)
+{
+ ASSERT_NOT_REACHED();
+ return JSValue();
}
-NEVER_INLINE JSValuePtr jsNaN(JSGlobalData* globalData)
+JSValue jsAPIMangledNumber(ExecState*, double)
{
- return new (globalData) JSNumberCell(globalData, NaN);
+ ASSERT_NOT_REACHED();
+ return JSValue();
}
+#endif
+
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNumberCell.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNumberCell.h
index 00d190d..a35e210 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSNumberCell.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSNumberCell.h
@@ -32,6 +32,14 @@
namespace JSC {
+ extern const double NaN;
+ extern const double Inf;
+
+ JSValue jsNumberCell(ExecState*, double);
+ JSValue jsAPIMangledNumber(ExecState*, double);
+
+#if !USE(ALTERNATE_JSIMMEDIATE)
+
class Identifier;
class JSCell;
class JSObject;
@@ -43,15 +51,14 @@ namespace JSC {
class JSNumberCell : public JSCell {
friend class JIT;
- friend JSValuePtr jsNumberCell(JSGlobalData*, double);
- friend JSValuePtr jsNaN(JSGlobalData*);
- friend JSValuePtr jsNumberCell(ExecState*, double);
- friend JSValuePtr jsNaN(ExecState*);
+ friend JSValue jsNumberCell(JSGlobalData*, double);
+ friend JSValue jsNumberCell(ExecState*, double);
+ friend JSValue jsAPIMangledNumber(ExecState*, double);
public:
double value() const { return m_value; }
- virtual JSValuePtr toPrimitive(ExecState*, PreferredPrimitiveType) const;
- virtual bool getPrimitiveNumber(ExecState*, double& number, JSValuePtr& value);
+ virtual JSValue toPrimitive(ExecState*, PreferredPrimitiveType) const;
+ virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue& value);
virtual bool toBoolean(ExecState*) const;
virtual double toNumber(ExecState*) const;
virtual UString toString(ExecState*) const;
@@ -59,10 +66,10 @@ namespace JSC {
virtual UString toThisString(ExecState*) const;
virtual JSObject* toThisObject(ExecState*) const;
- virtual JSValuePtr getJSNumber();
+ virtual JSValue getJSNumber();
- int32_t toInt32() const;
- uint32_t toUInt32() const;
+ static const uintptr_t JSAPIMangledMagicNumber = 0xbbadbeef;
+ bool isAPIMangledNumber() const { return m_structure == reinterpret_cast<Structure*>(JSAPIMangledMagicNumber); }
void* operator new(size_t size, ExecState* exec)
{
@@ -82,7 +89,7 @@ namespace JSC {
#endif
}
- static PassRefPtr<Structure> createStructure(JSValuePtr proto) { return Structure::create(proto, TypeInfo(NumberType, NeedsThisConversion)); }
+ static PassRefPtr<Structure> createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(NumberType, NeedsThisConversion)); }
private:
JSNumberCell(JSGlobalData* globalData, double value)
@@ -97,6 +104,13 @@ namespace JSC {
{
}
+ enum APIMangledTag { APIMangled };
+ JSNumberCell(APIMangledTag, double value)
+ : JSCell(reinterpret_cast<Structure*>(JSAPIMangledMagicNumber))
+ , m_value(value)
+ {
+ }
+
virtual bool getUInt32(uint32_t&) const;
virtual bool getTruncatedInt32(int32_t&) const;
virtual bool getTruncatedUInt32(uint32_t&) const;
@@ -104,157 +118,361 @@ namespace JSC {
double m_value;
};
- extern const double NaN;
- extern const double Inf;
+ JSValue jsNumberCell(JSGlobalData*, double);
- JSNumberCell* asNumberCell(JSValuePtr);
+ inline bool isNumberCell(JSValue v)
+ {
+ return v.isCell() && v.asCell()->isNumber();
+ }
+
+ inline JSNumberCell* asNumberCell(JSValue v)
+ {
+ ASSERT(isNumberCell(v));
+ return static_cast<JSNumberCell*>(v.asCell());
+ }
- JSValuePtr jsNumberCell(JSGlobalData*, double);
- JSValuePtr jsNaN(JSGlobalData*);
- JSValuePtr jsNumberCell(ExecState*, double);
- JSValuePtr jsNaN(ExecState*);
- inline JSNumberCell* asNumberCell(JSValuePtr value)
+ inline JSValue::JSValue(ExecState* exec, double d)
{
- ASSERT(asCell(value)->isNumber());
- return static_cast<JSNumberCell*>(asCell(value));
+ JSValue v = JSImmediate::from(d);
+ *this = v ? v : jsNumberCell(exec, d);
}
- ALWAYS_INLINE JSValuePtr jsNumber(ExecState* exec, double d)
+ inline JSValue::JSValue(ExecState* exec, int i)
{
- JSValuePtr v = JSImmediate::from(d);
- return v ? v : jsNumberCell(exec, d);
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(exec, i);
}
- ALWAYS_INLINE JSValuePtr jsNumber(ExecState* exec, short i)
+ inline JSValue::JSValue(ExecState* exec, unsigned i)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(exec, i);
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(exec, i);
}
- ALWAYS_INLINE JSValuePtr jsNumber(ExecState* exec, unsigned short i)
+ inline JSValue::JSValue(ExecState* exec, long i)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(exec, i);
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(exec, i);
}
- ALWAYS_INLINE JSValuePtr jsNumber(ExecState* exec, int i)
+ inline JSValue::JSValue(ExecState* exec, unsigned long i)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(exec, i);
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(exec, i);
}
- ALWAYS_INLINE JSValuePtr jsNumber(ExecState* exec, unsigned i)
+ inline JSValue::JSValue(ExecState* exec, long long i)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(exec, i);
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(exec, static_cast<double>(i));
}
- ALWAYS_INLINE JSValuePtr jsNumber(ExecState* exec, long i)
+ inline JSValue::JSValue(ExecState* exec, unsigned long long i)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(exec, i);
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(exec, static_cast<double>(i));
}
- ALWAYS_INLINE JSValuePtr jsNumber(ExecState* exec, unsigned long i)
+ inline JSValue::JSValue(JSGlobalData* globalData, double d)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(exec, i);
+ JSValue v = JSImmediate::from(d);
+ *this = v ? v : jsNumberCell(globalData, d);
}
- ALWAYS_INLINE JSValuePtr jsNumber(ExecState* exec, long long i)
+ inline JSValue::JSValue(JSGlobalData* globalData, int i)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(exec, static_cast<double>(i));
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(globalData, i);
}
- ALWAYS_INLINE JSValuePtr jsNumber(ExecState* exec, unsigned long long i)
+ inline JSValue::JSValue(JSGlobalData* globalData, unsigned i)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(exec, static_cast<double>(i));
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(globalData, i);
}
- ALWAYS_INLINE JSValuePtr jsNumber(JSGlobalData* globalData, double d)
+ inline JSValue::JSValue(JSGlobalData* globalData, long i)
{
- JSValuePtr v = JSImmediate::from(d);
- return v ? v : jsNumberCell(globalData, d);
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(globalData, i);
}
- ALWAYS_INLINE JSValuePtr jsNumber(JSGlobalData* globalData, short i)
+ inline JSValue::JSValue(JSGlobalData* globalData, unsigned long i)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(globalData, i);
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(globalData, i);
}
- ALWAYS_INLINE JSValuePtr jsNumber(JSGlobalData* globalData, unsigned short i)
+ inline JSValue::JSValue(JSGlobalData* globalData, long long i)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(globalData, i);
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(globalData, static_cast<double>(i));
}
- ALWAYS_INLINE JSValuePtr jsNumber(JSGlobalData* globalData, int i)
+ inline JSValue::JSValue(JSGlobalData* globalData, unsigned long long i)
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(globalData, i);
+ JSValue v = JSImmediate::from(i);
+ *this = v ? v : jsNumberCell(globalData, static_cast<double>(i));
}
- ALWAYS_INLINE JSValuePtr jsNumber(JSGlobalData* globalData, unsigned i)
+ inline bool JSValue::isDoubleNumber() const
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(globalData, i);
+ return isNumberCell(asValue());
}
- ALWAYS_INLINE JSValuePtr jsNumber(JSGlobalData* globalData, long i)
+ inline double JSValue::getDoubleNumber() const
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(globalData, i);
+ return asNumberCell(asValue())->value();
}
- ALWAYS_INLINE JSValuePtr jsNumber(JSGlobalData* globalData, unsigned long i)
+ inline bool JSValue::isNumber() const
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(globalData, i);
+ return JSImmediate::isNumber(asValue()) || isDoubleNumber();
}
- ALWAYS_INLINE JSValuePtr jsNumber(JSGlobalData* globalData, long long i)
+ inline double JSValue::uncheckedGetNumber() const
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(globalData, static_cast<double>(i));
+ ASSERT(isNumber());
+ return JSImmediate::isImmediate(asValue()) ? JSImmediate::toDouble(asValue()) : getDoubleNumber();
}
- ALWAYS_INLINE JSValuePtr jsNumber(JSGlobalData* globalData, unsigned long long i)
+ inline bool JSValue::isAPIMangledNumber()
{
- JSValuePtr v = JSImmediate::from(i);
- return v ? v : jsNumberCell(globalData, static_cast<double>(i));
+ ASSERT(isNumber());
+ return JSImmediate::isImmediate(asValue()) ? false : asNumberCell(asValue())->isAPIMangledNumber();
}
- // --- JSValue inlines ----------------------------
+#else
+
+ inline JSValue::JSValue(ExecState*, double d)
+ {
+ JSValue v = JSImmediate::from(d);
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(ExecState*, int i)
+ {
+ JSValue v = JSImmediate::from(i);
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(ExecState*, unsigned i)
+ {
+ JSValue v = JSImmediate::from(i);
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(ExecState*, long i)
+ {
+ JSValue v = JSImmediate::from(i);
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(ExecState*, unsigned long i)
+ {
+ JSValue v = JSImmediate::from(i);
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(ExecState*, long long i)
+ {
+ JSValue v = JSImmediate::from(static_cast<double>(i));
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(ExecState*, unsigned long long i)
+ {
+ JSValue v = JSImmediate::from(static_cast<double>(i));
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(JSGlobalData*, double d)
+ {
+ JSValue v = JSImmediate::from(d);
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(JSGlobalData*, int i)
+ {
+ JSValue v = JSImmediate::from(i);
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(JSGlobalData*, unsigned i)
+ {
+ JSValue v = JSImmediate::from(i);
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(JSGlobalData*, long i)
+ {
+ JSValue v = JSImmediate::from(i);
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(JSGlobalData*, unsigned long i)
+ {
+ JSValue v = JSImmediate::from(i);
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(JSGlobalData*, long long i)
+ {
+ JSValue v = JSImmediate::from(static_cast<double>(i));
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline JSValue::JSValue(JSGlobalData*, unsigned long long i)
+ {
+ JSValue v = JSImmediate::from(static_cast<double>(i));
+ ASSERT(v);
+ *this = v;
+ }
+
+ inline bool JSValue::isDoubleNumber() const
+ {
+ return JSImmediate::isDoubleNumber(asValue());
+ }
+
+ inline double JSValue::getDoubleNumber() const
+ {
+ return JSImmediate::doubleValue(asValue());
+ }
+
+ inline bool JSValue::isNumber() const
+ {
+ return JSImmediate::isNumber(asValue());
+ }
inline double JSValue::uncheckedGetNumber() const
{
- ASSERT(JSImmediate::isImmediate(asValue()) || asCell()->isNumber());
- return JSImmediate::isImmediate(asValue()) ? JSImmediate::toDouble(asValue()) : asNumberCell(asValue())->value();
+ ASSERT(isNumber());
+ return JSImmediate::toDouble(asValue());
+ }
+
+#endif
+
+ inline JSValue::JSValue(ExecState*, char i)
+ {
+ ASSERT(JSImmediate::from(i));
+ *this = JSImmediate::from(i);
+ }
+
+ inline JSValue::JSValue(ExecState*, unsigned char i)
+ {
+ ASSERT(JSImmediate::from(i));
+ *this = JSImmediate::from(i);
+ }
+
+ inline JSValue::JSValue(ExecState*, short i)
+ {
+ ASSERT(JSImmediate::from(i));
+ *this = JSImmediate::from(i);
+ }
+
+ inline JSValue::JSValue(ExecState*, unsigned short i)
+ {
+ ASSERT(JSImmediate::from(i));
+ *this = JSImmediate::from(i);
+ }
+
+ inline JSValue::JSValue(JSGlobalData*, char i)
+ {
+ ASSERT(JSImmediate::from(i));
+ *this = JSImmediate::from(i);
+ }
+
+ inline JSValue::JSValue(JSGlobalData*, unsigned char i)
+ {
+ ASSERT(JSImmediate::from(i));
+ *this = JSImmediate::from(i);
}
- inline int32_t JSNumberCell::toInt32() const
+ inline JSValue::JSValue(JSGlobalData*, short i)
{
- if (m_value >= -2147483648.0 && m_value < 2147483648.0)
- return static_cast<int32_t>(m_value);
- bool scratch;
- return JSC::toInt32SlowCase(m_value, scratch);
+ ASSERT(JSImmediate::from(i));
+ *this = JSImmediate::from(i);
}
- inline uint32_t JSNumberCell::toUInt32() const
+ inline JSValue::JSValue(JSGlobalData*, unsigned short i)
{
- if (m_value >= 0.0 && m_value < 4294967296.0)
- return static_cast<uint32_t>(m_value);
- bool scratch;
- return JSC::toUInt32SlowCase(m_value, scratch);
+ ASSERT(JSImmediate::from(i));
+ *this = JSImmediate::from(i);
}
- ALWAYS_INLINE JSValuePtr JSValue::toJSNumber(ExecState* exec) const
+ inline JSValue jsNaN(ExecState* exec)
{
- return JSImmediate::isNumber(asValue()) ? asValue() : jsNumber(exec, this->toNumber(exec));
+ return jsNumber(exec, NaN);
+ }
+
+ inline JSValue jsNaN(JSGlobalData* globalData)
+ {
+ return jsNumber(globalData, NaN);
+ }
+
+ // --- JSValue inlines ----------------------------
+
+ ALWAYS_INLINE JSValue JSValue::toJSNumber(ExecState* exec) const
+ {
+ return isNumber() ? asValue() : jsNumber(exec, this->toNumber(exec));
+ }
+
+ inline bool JSValue::getNumber(double &result) const
+ {
+ if (isInt32Fast())
+ result = getInt32Fast();
+ else if (LIKELY(isDoubleNumber()))
+ result = getDoubleNumber();
+ else {
+ ASSERT(!isNumber());
+ return false;
+ }
+ return true;
+ }
+
+ inline bool JSValue::numberToInt32(int32_t& arg)
+ {
+ if (isInt32Fast())
+ arg = getInt32Fast();
+ else if (LIKELY(isDoubleNumber()))
+ arg = JSC::toInt32(getDoubleNumber());
+ else {
+ ASSERT(!isNumber());
+ return false;
+ }
+ return true;
+ }
+
+ inline bool JSValue::numberToUInt32(uint32_t& arg)
+ {
+ if (isUInt32Fast())
+ arg = getUInt32Fast();
+ else if (LIKELY(isDoubleNumber()))
+ arg = JSC::toUInt32(getDoubleNumber());
+ else if (isInt32Fast()) {
+ // FIXME: I think this case can be merged with the uint case; toUInt32SlowCase
+ // on a negative value is equivalent to simple static_casting.
+ bool ignored;
+ arg = toUInt32SlowCase(getInt32Fast(), ignored);
+ } else {
+ ASSERT(!isNumber());
+ return false;
+ }
+ return true;
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.cpp
index d38c325..415c25d 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.cpp
@@ -69,11 +69,13 @@ void JSObject::mark()
JSCell::mark();
m_structure->mark();
+ PropertyStorage storage = propertyStorage();
+
size_t storageSize = m_structure->propertyStorageSize();
for (size_t i = 0; i < storageSize; ++i) {
- JSValuePtr v = m_propertyStorage[i];
- if (!v->marked())
- v->mark();
+ JSValue v = JSValue::decode(storage[i]);
+ if (!v.marked())
+ v.mark();
}
JSOBJECT_MARK_END();
@@ -98,18 +100,18 @@ static void throwSetterError(ExecState* exec)
}
// ECMA 8.6.2.2
-void JSObject::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void JSObject::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
ASSERT(value);
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
if (propertyName == exec->propertyNames().underscoreProto) {
// Setting __proto__ to a non-object, non-null value is silently ignored to match Mozilla.
- if (!value->isObject() && !value->isNull())
+ if (!value.isObject() && !value.isNull())
return;
- JSValuePtr nextPrototypeValue = value;
- while (nextPrototypeValue && nextPrototypeValue->isObject()) {
+ JSValue nextPrototypeValue = value;
+ while (nextPrototypeValue && nextPrototypeValue.isObject()) {
JSObject* nextPrototype = asObject(nextPrototypeValue)->unwrappedObject();
if (nextPrototype == this) {
throwError(exec, GeneralError, "cyclic __proto__ value");
@@ -123,22 +125,23 @@ void JSObject::put(ExecState* exec, const Identifier& propertyName, JSValuePtr v
}
// Check if there are any setters or getters in the prototype chain
- JSValuePtr prototype;
+ JSValue prototype;
for (JSObject* obj = this; !obj->structure()->hasGetterSetterProperties(); obj = asObject(prototype)) {
prototype = obj->prototype();
- if (prototype->isNull()) {
- putDirect(propertyName, value, 0, true, slot);
+ if (prototype.isNull()) {
+ putDirectInternal(exec->globalData(), propertyName, value, 0, true, slot);
return;
}
}
unsigned attributes;
- if ((m_structure->get(propertyName, attributes) != WTF::notFound) && attributes & ReadOnly)
+ JSCell* specificValue;
+ if ((m_structure->get(propertyName, attributes, specificValue) != WTF::notFound) && attributes & ReadOnly)
return;
for (JSObject* obj = this; ; obj = asObject(prototype)) {
- if (JSValuePtr gs = obj->getDirect(propertyName)) {
- if (gs->isGetterSetter()) {
+ if (JSValue gs = obj->getDirect(propertyName)) {
+ if (gs.isGetterSetter()) {
JSObject* setterFunc = asGetterSetter(gs)->setter();
if (!setterFunc) {
throwSetterError(exec);
@@ -147,7 +150,7 @@ void JSObject::put(ExecState* exec, const Identifier& propertyName, JSValuePtr v
CallData callData;
CallType callType = setterFunc->getCallData(callData);
- ArgList args;
+ MarkedArgumentBuffer args;
args.append(value);
call(exec, setterFunc, callType, callData, this, args);
return;
@@ -159,26 +162,31 @@ void JSObject::put(ExecState* exec, const Identifier& propertyName, JSValuePtr v
}
prototype = obj->prototype();
- if (prototype->isNull())
+ if (prototype.isNull())
break;
}
- putDirect(propertyName, value, 0, true, slot);
+ putDirectInternal(exec->globalData(), propertyName, value, 0, true, slot);
return;
}
-void JSObject::put(ExecState* exec, unsigned propertyName, JSValuePtr value)
+void JSObject::put(ExecState* exec, unsigned propertyName, JSValue value)
{
PutPropertySlot slot;
put(exec, Identifier::from(exec, propertyName), value, slot);
}
-void JSObject::putWithAttributes(ExecState*, const Identifier& propertyName, JSValuePtr value, unsigned attributes)
+void JSObject::putWithAttributes(ExecState* exec, const Identifier& propertyName, JSValue value, unsigned attributes, bool checkReadOnly, PutPropertySlot& slot)
{
- putDirect(propertyName, value, attributes);
+ putDirectInternal(exec->globalData(), propertyName, value, attributes, checkReadOnly, slot);
}
-void JSObject::putWithAttributes(ExecState* exec, unsigned propertyName, JSValuePtr value, unsigned attributes)
+void JSObject::putWithAttributes(ExecState* exec, const Identifier& propertyName, JSValue value, unsigned attributes)
+{
+ putDirectInternal(exec->globalData(), propertyName, value, attributes);
+}
+
+void JSObject::putWithAttributes(ExecState* exec, unsigned propertyName, JSValue value, unsigned attributes)
{
putWithAttributes(exec, Identifier::from(exec, propertyName), value, attributes);
}
@@ -199,7 +207,8 @@ bool JSObject::hasProperty(ExecState* exec, unsigned propertyName) const
bool JSObject::deleteProperty(ExecState* exec, const Identifier& propertyName)
{
unsigned attributes;
- if (m_structure->get(propertyName, attributes) != WTF::notFound) {
+ JSCell* specificValue;
+ if (m_structure->get(propertyName, attributes, specificValue) != WTF::notFound) {
if ((attributes & DontDelete))
return false;
removeDirect(propertyName);
@@ -226,11 +235,11 @@ bool JSObject::deleteProperty(ExecState* exec, unsigned propertyName)
return deleteProperty(exec, Identifier::from(exec, propertyName));
}
-static ALWAYS_INLINE JSValuePtr callDefaultValueFunction(ExecState* exec, const JSObject* object, const Identifier& propertyName)
+static ALWAYS_INLINE JSValue callDefaultValueFunction(ExecState* exec, const JSObject* object, const Identifier& propertyName)
{
- JSValuePtr function = object->get(exec, propertyName);
+ JSValue function = object->get(exec, propertyName);
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone)
return exec->exception();
@@ -239,35 +248,35 @@ static ALWAYS_INLINE JSValuePtr callDefaultValueFunction(ExecState* exec, const
if (exec->hadException())
return exec->exception();
- JSValuePtr result = call(exec, function, callType, callData, const_cast<JSObject*>(object), exec->emptyList());
- ASSERT(!result->isGetterSetter());
+ JSValue result = call(exec, function, callType, callData, const_cast<JSObject*>(object), exec->emptyList());
+ ASSERT(!result.isGetterSetter());
if (exec->hadException())
return exec->exception();
- if (result->isObject())
- return noValue();
+ if (result.isObject())
+ return JSValue();
return result;
}
-bool JSObject::getPrimitiveNumber(ExecState* exec, double& number, JSValuePtr& result)
+bool JSObject::getPrimitiveNumber(ExecState* exec, double& number, JSValue& result)
{
result = defaultValue(exec, PreferNumber);
- number = result->toNumber(exec);
- return !result->isString();
+ number = result.toNumber(exec);
+ return !result.isString();
}
// ECMA 8.6.2.6
-JSValuePtr JSObject::defaultValue(ExecState* exec, PreferredPrimitiveType hint) const
+JSValue JSObject::defaultValue(ExecState* exec, PreferredPrimitiveType hint) const
{
// Must call toString first for Date objects.
if ((hint == PreferString) || (hint != PreferNumber && prototype() == exec->lexicalGlobalObject()->datePrototype())) {
- JSValuePtr value = callDefaultValueFunction(exec, this, exec->propertyNames().toString);
+ JSValue value = callDefaultValueFunction(exec, this, exec->propertyNames().toString);
if (value)
return value;
value = callDefaultValueFunction(exec, this, exec->propertyNames().valueOf);
if (value)
return value;
} else {
- JSValuePtr value = callDefaultValueFunction(exec, this, exec->propertyNames().valueOf);
+ JSValue value = callDefaultValueFunction(exec, this, exec->propertyNames().valueOf);
if (value)
return value;
value = callDefaultValueFunction(exec, this, exec->propertyNames().toString);
@@ -293,8 +302,8 @@ const HashEntry* JSObject::findPropertyHashEntry(ExecState* exec, const Identifi
void JSObject::defineGetter(ExecState* exec, const Identifier& propertyName, JSObject* getterFunction)
{
- JSValuePtr object = getDirect(propertyName);
- if (object && object->isGetterSetter()) {
+ JSValue object = getDirect(propertyName);
+ if (object && object.isGetterSetter()) {
ASSERT(m_structure->hasGetterSetterProperties());
asGetterSetter(object)->setGetter(getterFunction);
return;
@@ -302,7 +311,7 @@ void JSObject::defineGetter(ExecState* exec, const Identifier& propertyName, JSO
PutPropertySlot slot;
GetterSetter* getterSetter = new (exec) GetterSetter;
- putDirect(propertyName, getterSetter, None, true, slot);
+ putDirectInternal(exec->globalData(), propertyName, getterSetter, Getter, true, slot);
// putDirect will change our Structure if we add a new property. For
// getters and setters, though, we also need to change our Structure
@@ -320,8 +329,8 @@ void JSObject::defineGetter(ExecState* exec, const Identifier& propertyName, JSO
void JSObject::defineSetter(ExecState* exec, const Identifier& propertyName, JSObject* setterFunction)
{
- JSValuePtr object = getDirect(propertyName);
- if (object && object->isGetterSetter()) {
+ JSValue object = getDirect(propertyName);
+ if (object && object.isGetterSetter()) {
ASSERT(m_structure->hasGetterSetterProperties());
asGetterSetter(object)->setSetter(setterFunction);
return;
@@ -329,7 +338,7 @@ void JSObject::defineSetter(ExecState* exec, const Identifier& propertyName, JSO
PutPropertySlot slot;
GetterSetter* getterSetter = new (exec) GetterSetter;
- putDirect(propertyName, getterSetter, None, true, slot);
+ putDirectInternal(exec->globalData(), propertyName, getterSetter, Setter, true, slot);
// putDirect will change our Structure if we add a new property. For
// getters and setters, though, we also need to change our Structure
@@ -345,12 +354,12 @@ void JSObject::defineSetter(ExecState* exec, const Identifier& propertyName, JSO
getterSetter->setSetter(setterFunction);
}
-JSValuePtr JSObject::lookupGetter(ExecState*, const Identifier& propertyName)
+JSValue JSObject::lookupGetter(ExecState*, const Identifier& propertyName)
{
JSObject* object = this;
while (true) {
- if (JSValuePtr value = object->getDirect(propertyName)) {
- if (!value->isGetterSetter())
+ if (JSValue value = object->getDirect(propertyName)) {
+ if (!value.isGetterSetter())
return jsUndefined();
JSObject* functionObject = asGetterSetter(value)->getter();
if (!functionObject)
@@ -358,18 +367,18 @@ JSValuePtr JSObject::lookupGetter(ExecState*, const Identifier& propertyName)
return functionObject;
}
- if (!object->prototype() || !object->prototype()->isObject())
+ if (!object->prototype() || !object->prototype().isObject())
return jsUndefined();
object = asObject(object->prototype());
}
}
-JSValuePtr JSObject::lookupSetter(ExecState*, const Identifier& propertyName)
+JSValue JSObject::lookupSetter(ExecState*, const Identifier& propertyName)
{
JSObject* object = this;
while (true) {
- if (JSValuePtr value = object->getDirect(propertyName)) {
- if (!value->isGetterSetter())
+ if (JSValue value = object->getDirect(propertyName)) {
+ if (!value.isGetterSetter())
return jsUndefined();
JSObject* functionObject = asGetterSetter(value)->setter();
if (!functionObject)
@@ -377,24 +386,24 @@ JSValuePtr JSObject::lookupSetter(ExecState*, const Identifier& propertyName)
return functionObject;
}
- if (!object->prototype() || !object->prototype()->isObject())
+ if (!object->prototype() || !object->prototype().isObject())
return jsUndefined();
object = asObject(object->prototype());
}
}
-bool JSObject::hasInstance(ExecState* exec, JSValuePtr value, JSValuePtr proto)
+bool JSObject::hasInstance(ExecState* exec, JSValue value, JSValue proto)
{
- if (!proto->isObject()) {
- throwError(exec, TypeError, "instanceof called on an object with an invalid prototype property.");
+ if (!value.isObject())
return false;
- }
- if (!value->isObject())
+ if (!proto.isObject()) {
+ throwError(exec, TypeError, "instanceof called on an object with an invalid prototype property.");
return false;
+ }
JSObject* object = asObject(value);
- while ((object = object->prototype()->getObject())) {
+ while ((object = object->prototype().getObject())) {
if (proto == object)
return true;
}
@@ -411,7 +420,8 @@ bool JSObject::propertyIsEnumerable(ExecState* exec, const Identifier& propertyN
bool JSObject::getPropertyAttributes(ExecState* exec, const Identifier& propertyName, unsigned& attributes) const
{
- if (m_structure->get(propertyName, attributes) != WTF::notFound)
+ JSCell* specificValue;
+ if (m_structure->get(propertyName, attributes, specificValue) != WTF::notFound)
return true;
// Look in the static hashtable of properties
@@ -424,6 +434,19 @@ bool JSObject::getPropertyAttributes(ExecState* exec, const Identifier& property
return false;
}
+bool JSObject::getPropertySpecificValue(ExecState*, const Identifier& propertyName, JSCell*& specificValue) const
+{
+ unsigned attributes;
+ if (m_structure->get(propertyName, attributes, specificValue) != WTF::notFound)
+ return true;
+
+ // This could be a function within the static table? - should probably
+ // also look in the hash? This currently should not be a problem, since
+ // we've currently always call 'get' first, which should have populated
+ // the normal storage.
+ return false;
+}
+
void JSObject::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames)
{
m_structure->getEnumerablePropertyNames(exec, propertyNames, this);
@@ -436,18 +459,18 @@ bool JSObject::toBoolean(ExecState*) const
double JSObject::toNumber(ExecState* exec) const
{
- JSValuePtr primitive = toPrimitive(exec, PreferNumber);
+ JSValue primitive = toPrimitive(exec, PreferNumber);
if (exec->hadException()) // should be picked up soon in Nodes.cpp
return 0.0;
- return primitive->toNumber(exec);
+ return primitive.toNumber(exec);
}
UString JSObject::toString(ExecState* exec) const
{
- JSValuePtr primitive = toPrimitive(exec, PreferString);
+ JSValue primitive = toPrimitive(exec, PreferString);
if (exec->hadException())
return "";
- return primitive->toString(exec);
+ return primitive.toString(exec);
}
JSObject* JSObject::toObject(ExecState*) const
@@ -471,27 +494,27 @@ void JSObject::removeDirect(const Identifier& propertyName)
if (m_structure->isDictionary()) {
offset = m_structure->removePropertyWithoutTransition(propertyName);
if (offset != WTF::notFound)
- m_propertyStorage[offset] = jsUndefined();
+ putDirectOffset(offset, jsUndefined());
return;
}
RefPtr<Structure> structure = Structure::removePropertyTransition(m_structure, propertyName, offset);
- if (offset != WTF::notFound)
- m_propertyStorage[offset] = jsUndefined();
setStructure(structure.release());
+ if (offset != WTF::notFound)
+ putDirectOffset(offset, jsUndefined());
}
void JSObject::putDirectFunction(ExecState* exec, InternalFunction* function, unsigned attr)
{
- putDirect(Identifier(exec, function->name(&exec->globalData())), function, attr);
+ putDirectFunction(Identifier(exec, function->name(&exec->globalData())), function, attr);
}
void JSObject::putDirectFunctionWithoutTransition(ExecState* exec, InternalFunction* function, unsigned attr)
{
- putDirectWithoutTransition(Identifier(exec, function->name(&exec->globalData())), function, attr);
+ putDirectFunctionWithoutTransition(Identifier(exec, function->name(&exec->globalData())), function, attr);
}
-NEVER_INLINE void JSObject::fillGetterPropertySlot(PropertySlot& slot, JSValuePtr* location)
+NEVER_INLINE void JSObject::fillGetterPropertySlot(PropertySlot& slot, JSValue* location)
{
if (JSObject* getterFunction = asGetterSetter(*location)->getter())
slot.setGetterSlot(getterFunction);
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.h
index 5918b9d..54805f2 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.h
@@ -32,9 +32,17 @@
#include "PutPropertySlot.h"
#include "ScopeChain.h"
#include "Structure.h"
+#include "JSGlobalData.h"
namespace JSC {
+ inline JSCell* getJSFunction(JSGlobalData& globalData, JSValue value)
+ {
+ if (value.isCell() && (value.asCell()->vptr() == globalData.jsFunctionVPtr))
+ return value.asCell();
+ return 0;
+ }
+
class InternalFunction;
class PropertyNameArray;
class Structure;
@@ -49,9 +57,12 @@ namespace JSC {
DontEnum = 1 << 2, // property doesn't appear in (for .. in ..)
DontDelete = 1 << 3, // property can't be deleted
Function = 1 << 4, // property is a function - only used by static hashtables
+ Getter = 1 << 5, // property is a getter
+ Setter = 1 << 6 // property is a setter
};
- typedef JSValuePtr* PropertyStorage;
+ typedef EncodedJSValue* PropertyStorage;
+ typedef const EncodedJSValue* ConstPropertyStorage;
class JSObject : public JSCell {
friend class BatchedTransitionOptimizer;
@@ -69,18 +80,16 @@ namespace JSC {
bool inherits(const ClassInfo* classInfo) const { return JSCell::isObject(classInfo); }
- JSValuePtr prototype() const;
- void setPrototype(JSValuePtr prototype);
+ JSValue prototype() const;
+ void setPrototype(JSValue prototype);
void setStructure(PassRefPtr<Structure>);
Structure* inheritorID();
- PropertyStorage& propertyStorage() { return m_propertyStorage; }
-
virtual UString className() const;
- JSValuePtr get(ExecState*, const Identifier& propertyName) const;
- JSValuePtr get(ExecState*, unsigned propertyName) const;
+ JSValue get(ExecState*, const Identifier& propertyName) const;
+ JSValue get(ExecState*, unsigned propertyName) const;
bool getPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
bool getPropertySlot(ExecState*, unsigned propertyName, PropertySlot&);
@@ -88,11 +97,12 @@ namespace JSC {
virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
virtual bool getOwnPropertySlot(ExecState*, unsigned propertyName, PropertySlot&);
- virtual void put(ExecState*, const Identifier& propertyName, JSValuePtr value, PutPropertySlot&);
- virtual void put(ExecState*, unsigned propertyName, JSValuePtr value);
+ virtual void put(ExecState*, const Identifier& propertyName, JSValue value, PutPropertySlot&);
+ virtual void put(ExecState*, unsigned propertyName, JSValue value);
- virtual void putWithAttributes(ExecState*, const Identifier& propertyName, JSValuePtr value, unsigned attributes);
- virtual void putWithAttributes(ExecState*, unsigned propertyName, JSValuePtr value, unsigned attributes);
+ virtual void putWithAttributes(ExecState*, const Identifier& propertyName, JSValue value, unsigned attributes, bool checkReadOnly, PutPropertySlot& slot);
+ virtual void putWithAttributes(ExecState*, const Identifier& propertyName, JSValue value, unsigned attributes);
+ virtual void putWithAttributes(ExecState*, unsigned propertyName, JSValue value, unsigned attributes);
bool propertyIsEnumerable(ExecState*, const Identifier& propertyName) const;
@@ -103,14 +113,14 @@ namespace JSC {
virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
virtual bool deleteProperty(ExecState*, unsigned propertyName);
- virtual JSValuePtr defaultValue(ExecState*, PreferredPrimitiveType) const;
+ virtual JSValue defaultValue(ExecState*, PreferredPrimitiveType) const;
- virtual bool hasInstance(ExecState*, JSValuePtr, JSValuePtr prototypeProperty);
+ virtual bool hasInstance(ExecState*, JSValue, JSValue prototypeProperty);
virtual void getPropertyNames(ExecState*, PropertyNameArray&);
- virtual JSValuePtr toPrimitive(ExecState*, PreferredPrimitiveType = NoPreference) const;
- virtual bool getPrimitiveNumber(ExecState*, double& number, JSValuePtr& value);
+ virtual JSValue toPrimitive(ExecState*, PreferredPrimitiveType = NoPreference) const;
+ virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue& value);
virtual bool toBoolean(ExecState*) const;
virtual double toNumber(ExecState*) const;
virtual UString toString(ExecState*) const;
@@ -120,34 +130,31 @@ namespace JSC {
virtual JSObject* unwrappedObject();
virtual bool getPropertyAttributes(ExecState*, const Identifier& propertyName, unsigned& attributes) const;
+ bool getPropertySpecificValue(ExecState* exec, const Identifier& propertyName, JSCell*& specificFunction) const;
// This get function only looks at the property map.
- JSValuePtr getDirect(const Identifier& propertyName) const
+ JSValue getDirect(const Identifier& propertyName) const
{
size_t offset = m_structure->get(propertyName);
- return offset != WTF::notFound ? m_propertyStorage[offset] : noValue();
+ return offset != WTF::notFound ? getDirectOffset(offset) : JSValue();
}
- JSValuePtr* getDirectLocation(const Identifier& propertyName)
+ JSValue* getDirectLocation(const Identifier& propertyName)
{
size_t offset = m_structure->get(propertyName);
return offset != WTF::notFound ? locationForOffset(offset) : 0;
}
- JSValuePtr* getDirectLocation(const Identifier& propertyName, unsigned& attributes)
+ JSValue* getDirectLocation(const Identifier& propertyName, unsigned& attributes)
{
- size_t offset = m_structure->get(propertyName, attributes);
+ JSCell* specificFunction;
+ size_t offset = m_structure->get(propertyName, attributes, specificFunction);
return offset != WTF::notFound ? locationForOffset(offset) : 0;
}
- size_t offsetForLocation(JSValuePtr* location)
- {
- return location - m_propertyStorage;
- }
-
- JSValuePtr* locationForOffset(size_t offset)
+ size_t offsetForLocation(JSValue* location) const
{
- return &m_propertyStorage[offset];
+ return location - reinterpret_cast<const JSValue*>(propertyStorage());
}
void transitionTo(Structure*);
@@ -156,36 +163,42 @@ namespace JSC {
bool hasCustomProperties() { return !m_structure->isEmpty(); }
bool hasGetterSetterProperties() { return m_structure->hasGetterSetterProperties(); }
- void putDirect(const Identifier& propertyName, JSValuePtr value, unsigned attr = 0);
- void putDirect(const Identifier& propertyName, JSValuePtr value, unsigned attr, bool checkReadOnly, PutPropertySlot& slot);
+ void putDirect(const Identifier& propertyName, JSValue value, unsigned attr, bool checkReadOnly, PutPropertySlot& slot);
+ void putDirect(const Identifier& propertyName, JSValue value, unsigned attr = 0);
+
+ void putDirectFunction(const Identifier& propertyName, JSCell* value, unsigned attr = 0);
+ void putDirectFunction(const Identifier& propertyName, JSCell* value, unsigned attr, bool checkReadOnly, PutPropertySlot& slot);
void putDirectFunction(ExecState* exec, InternalFunction* function, unsigned attr = 0);
- void putDirectWithoutTransition(const Identifier& propertyName, JSValuePtr value, unsigned attr = 0);
+
+ void putDirectWithoutTransition(const Identifier& propertyName, JSValue value, unsigned attr = 0);
+ void putDirectFunctionWithoutTransition(const Identifier& propertyName, JSCell* value, unsigned attr = 0);
void putDirectFunctionWithoutTransition(ExecState* exec, InternalFunction* function, unsigned attr = 0);
// Fast access to known property offsets.
- JSValuePtr getDirectOffset(size_t offset) { return m_propertyStorage[offset]; }
- void putDirectOffset(size_t offset, JSValuePtr value) { m_propertyStorage[offset] = value; }
+ JSValue getDirectOffset(size_t offset) const { return JSValue::decode(propertyStorage()[offset]); }
+ void putDirectOffset(size_t offset, JSValue value) { propertyStorage()[offset] = JSValue::encode(value); }
- void fillGetterPropertySlot(PropertySlot&, JSValuePtr* location);
+ void fillGetterPropertySlot(PropertySlot&, JSValue* location);
virtual void defineGetter(ExecState*, const Identifier& propertyName, JSObject* getterFunction);
virtual void defineSetter(ExecState*, const Identifier& propertyName, JSObject* setterFunction);
- virtual JSValuePtr lookupGetter(ExecState*, const Identifier& propertyName);
- virtual JSValuePtr lookupSetter(ExecState*, const Identifier& propertyName);
+ virtual JSValue lookupGetter(ExecState*, const Identifier& propertyName);
+ virtual JSValue lookupSetter(ExecState*, const Identifier& propertyName);
virtual bool isGlobalObject() const { return false; }
virtual bool isVariableObject() const { return false; }
+ virtual bool isActivationObject() const { return false; }
virtual bool isWatchdogException() const { return false; }
virtual bool isNotAnObjectErrorStub() const { return false; }
void allocatePropertyStorage(size_t oldSize, size_t newSize);
void allocatePropertyStorageInline(size_t oldSize, size_t newSize);
- bool usingInlineStorage() const { return m_propertyStorage == m_inlineStorage; }
+ bool isUsingInlineStorage() const { return m_structure->isUsingInlineStorage(); }
- static const size_t inlineStorageCapacity = 2;
+ static const size_t inlineStorageCapacity = 3;
static const size_t nonInlineBaseStorageCapacity = 16;
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType, HasStandardGetOwnPropertySlot));
}
@@ -194,6 +207,23 @@ namespace JSC {
bool getOwnPropertySlotForWrite(ExecState*, const Identifier&, PropertySlot&, bool& slotIsWriteable);
private:
+ ConstPropertyStorage propertyStorage() const { return (isUsingInlineStorage() ? m_inlineStorage : m_externalStorage); }
+ PropertyStorage propertyStorage() { return (isUsingInlineStorage() ? m_inlineStorage : m_externalStorage); }
+
+ const JSValue* locationForOffset(size_t offset) const
+ {
+ return reinterpret_cast<const JSValue*>(&propertyStorage()[offset]);
+ }
+
+ JSValue* locationForOffset(size_t offset)
+ {
+ return reinterpret_cast<JSValue*>(&propertyStorage()[offset]);
+ }
+
+ void putDirectInternal(const Identifier& propertyName, JSValue value, unsigned attr, bool checkReadOnly, PutPropertySlot& slot, JSCell*);
+ void putDirectInternal(JSGlobalData&, const Identifier& propertyName, JSValue value, unsigned attr, bool checkReadOnly, PutPropertySlot& slot);
+ void putDirectInternal(JSGlobalData&, const Identifier& propertyName, JSValue value, unsigned attr = 0);
+
bool inlineGetOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
const HashEntry* findPropertyHashEntry(ExecState*, const Identifier& propertyName) const;
@@ -201,15 +231,17 @@ namespace JSC {
RefPtr<Structure> m_inheritorID;
- PropertyStorage m_propertyStorage;
- JSValuePtr m_inlineStorage[inlineStorageCapacity];
+ union {
+ PropertyStorage m_externalStorage;
+ EncodedJSValue m_inlineStorage[inlineStorageCapacity];
+ };
};
- JSObject* asObject(JSValuePtr);
+ JSObject* asObject(JSValue);
JSObject* constructEmptyObject(ExecState*);
-inline JSObject* asObject(JSValuePtr value)
+inline JSObject* asObject(JSValue value)
{
ASSERT(asCell(value)->isObject());
return static_cast<JSObject*>(asCell(value));
@@ -217,28 +249,27 @@ inline JSObject* asObject(JSValuePtr value)
inline JSObject::JSObject(PassRefPtr<Structure> structure)
: JSCell(structure.releaseRef()) // ~JSObject balances this ref()
- , m_propertyStorage(m_inlineStorage)
{
ASSERT(m_structure);
ASSERT(m_structure->propertyStorageCapacity() == inlineStorageCapacity);
ASSERT(m_structure->isEmpty());
- ASSERT(prototype()->isNull() || Heap::heap(this) == Heap::heap(prototype()));
+ ASSERT(prototype().isNull() || Heap::heap(this) == Heap::heap(prototype()));
}
inline JSObject::~JSObject()
{
ASSERT(m_structure);
- if (m_propertyStorage != m_inlineStorage)
- delete [] m_propertyStorage;
+ if (!isUsingInlineStorage())
+ delete [] m_externalStorage;
m_structure->deref();
}
-inline JSValuePtr JSObject::prototype() const
+inline JSValue JSObject::prototype() const
{
return m_structure->storedPrototype();
}
-inline void JSObject::setPrototype(JSValuePtr prototype)
+inline void JSObject::setPrototype(JSValue prototype)
{
ASSERT(prototype);
RefPtr<Structure> newStructure = Structure::changePrototypeTransition(m_structure, prototype);
@@ -258,6 +289,11 @@ inline Structure* JSObject::inheritorID()
return createInheritorID();
}
+inline bool Structure::isUsingInlineStorage() const
+{
+ return (propertyStorageCapacity() == JSObject::inlineStorageCapacity);
+}
+
inline bool JSCell::isObject(const ClassInfo* info) const
{
for (const ClassInfo* ci = classInfo(); ci; ci = ci->parentClass) {
@@ -270,13 +306,13 @@ inline bool JSCell::isObject(const ClassInfo* info) const
// this method is here to be after the inline declaration of JSCell::isObject
inline bool JSValue::isObject(const ClassInfo* classInfo) const
{
- return !JSImmediate::isImmediate(asValue()) && asCell()->isObject(classInfo);
+ return isCell() && asCell()->isObject(classInfo);
}
ALWAYS_INLINE bool JSObject::inlineGetOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
{
- if (JSValuePtr* location = getDirectLocation(propertyName)) {
- if (m_structure->hasGetterSetterProperties() && location[0]->isGetterSetter())
+ if (JSValue* location = getDirectLocation(propertyName)) {
+ if (m_structure->hasGetterSetterProperties() && location[0].isGetterSetter())
fillGetterPropertySlot(slot, location);
else
slot.setValueSlot(this, location, offsetForLocation(location));
@@ -295,8 +331,8 @@ ALWAYS_INLINE bool JSObject::inlineGetOwnPropertySlot(ExecState* exec, const Ide
ALWAYS_INLINE bool JSObject::getOwnPropertySlotForWrite(ExecState* exec, const Identifier& propertyName, PropertySlot& slot, bool& slotIsWriteable)
{
unsigned attributes;
- if (JSValuePtr* location = getDirectLocation(propertyName, attributes)) {
- if (m_structure->hasGetterSetterProperties() && location[0]->isGetterSetter()) {
+ if (JSValue* location = getDirectLocation(propertyName, attributes)) {
+ if (m_structure->hasGetterSetterProperties() && location[0].isGetterSetter()) {
slotIsWriteable = false;
fillGetterPropertySlot(slot, location);
} else {
@@ -339,8 +375,8 @@ inline bool JSObject::getPropertySlot(ExecState* exec, const Identifier& propert
while (true) {
if (object->fastGetOwnPropertySlot(exec, propertyName, slot))
return true;
- JSValuePtr prototype = object->prototype();
- if (!prototype->isObject())
+ JSValue prototype = object->prototype();
+ if (!prototype.isObject())
return false;
object = asObject(prototype);
}
@@ -352,14 +388,14 @@ inline bool JSObject::getPropertySlot(ExecState* exec, unsigned propertyName, Pr
while (true) {
if (object->getOwnPropertySlot(exec, propertyName, slot))
return true;
- JSValuePtr prototype = object->prototype();
- if (!prototype->isObject())
+ JSValue prototype = object->prototype();
+ if (!prototype.isObject())
return false;
object = asObject(prototype);
}
}
-inline JSValuePtr JSObject::get(ExecState* exec, const Identifier& propertyName) const
+inline JSValue JSObject::get(ExecState* exec, const Identifier& propertyName) const
{
PropertySlot slot(this);
if (const_cast<JSObject*>(this)->getPropertySlot(exec, propertyName, slot))
@@ -368,7 +404,7 @@ inline JSValuePtr JSObject::get(ExecState* exec, const Identifier& propertyName)
return jsUndefined();
}
-inline JSValuePtr JSObject::get(ExecState* exec, unsigned propertyName) const
+inline JSValue JSObject::get(ExecState* exec, unsigned propertyName) const
{
PropertySlot slot(this);
if (const_cast<JSObject*>(this)->getPropertySlot(exec, propertyName, slot))
@@ -377,80 +413,139 @@ inline JSValuePtr JSObject::get(ExecState* exec, unsigned propertyName) const
return jsUndefined();
}
-inline void JSObject::putDirect(const Identifier& propertyName, JSValuePtr value, unsigned attr)
-{
- PutPropertySlot slot;
- putDirect(propertyName, value, attr, false, slot);
-}
-
-inline void JSObject::putDirect(const Identifier& propertyName, JSValuePtr value, unsigned attributes, bool checkReadOnly, PutPropertySlot& slot)
+inline void JSObject::putDirectInternal(const Identifier& propertyName, JSValue value, unsigned attributes, bool checkReadOnly, PutPropertySlot& slot, JSCell* specificFunction)
{
+ ASSERT(value);
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
if (m_structure->isDictionary()) {
unsigned currentAttributes;
- size_t offset = m_structure->get(propertyName, currentAttributes);
+ JSCell* currentSpecificFunction;
+ size_t offset = m_structure->get(propertyName, currentAttributes, currentSpecificFunction);
if (offset != WTF::notFound) {
+ if (currentSpecificFunction && (specificFunction != currentSpecificFunction))
+ m_structure->despecifyDictionaryFunction(propertyName);
if (checkReadOnly && currentAttributes & ReadOnly)
return;
- m_propertyStorage[offset] = value;
- slot.setExistingProperty(this, offset);
+ putDirectOffset(offset, value);
+ if (!specificFunction && !currentSpecificFunction)
+ slot.setExistingProperty(this, offset);
return;
}
size_t currentCapacity = m_structure->propertyStorageCapacity();
- offset = m_structure->addPropertyWithoutTransition(propertyName, attributes);
+ offset = m_structure->addPropertyWithoutTransition(propertyName, attributes, specificFunction);
if (currentCapacity != m_structure->propertyStorageCapacity())
allocatePropertyStorage(currentCapacity, m_structure->propertyStorageCapacity());
ASSERT(offset < m_structure->propertyStorageCapacity());
- m_propertyStorage[offset] = value;
- slot.setNewProperty(this, offset);
+ putDirectOffset(offset, value);
+ // See comment on setNewProperty call below.
+ if (!specificFunction)
+ slot.setNewProperty(this, offset);
return;
}
size_t offset;
size_t currentCapacity = m_structure->propertyStorageCapacity();
- if (RefPtr<Structure> structure = Structure::addPropertyTransitionToExistingStructure(m_structure, propertyName, attributes, offset)) {
+ if (RefPtr<Structure> structure = Structure::addPropertyTransitionToExistingStructure(m_structure, propertyName, attributes, specificFunction, offset)) {
if (currentCapacity != structure->propertyStorageCapacity())
allocatePropertyStorage(currentCapacity, structure->propertyStorageCapacity());
ASSERT(offset < structure->propertyStorageCapacity());
- m_propertyStorage[offset] = value;
- slot.setNewProperty(this, offset);
- slot.setWasTransition(true);
setStructure(structure.release());
+ putDirectOffset(offset, value);
+ // See comment on setNewProperty call below.
+ if (!specificFunction)
+ slot.setNewProperty(this, offset);
return;
}
unsigned currentAttributes;
- offset = m_structure->get(propertyName, currentAttributes);
+ JSCell* currentSpecificFunction;
+ offset = m_structure->get(propertyName, currentAttributes, currentSpecificFunction);
if (offset != WTF::notFound) {
if (checkReadOnly && currentAttributes & ReadOnly)
return;
- m_propertyStorage[offset] = value;
+
+ if (currentSpecificFunction && (specificFunction != currentSpecificFunction)) {
+ setStructure(Structure::despecifyFunctionTransition(m_structure, propertyName));
+ putDirectOffset(offset, value);
+ // Function transitions are not currently cachable, so leave the slot in an uncachable state.
+ return;
+ }
+ putDirectOffset(offset, value);
slot.setExistingProperty(this, offset);
return;
}
- RefPtr<Structure> structure = Structure::addPropertyTransition(m_structure, propertyName, attributes, offset);
+ RefPtr<Structure> structure = Structure::addPropertyTransition(m_structure, propertyName, attributes, specificFunction, offset);
if (currentCapacity != structure->propertyStorageCapacity())
allocatePropertyStorage(currentCapacity, structure->propertyStorageCapacity());
ASSERT(offset < structure->propertyStorageCapacity());
- m_propertyStorage[offset] = value;
- slot.setNewProperty(this, offset);
- slot.setWasTransition(true);
setStructure(structure.release());
+ putDirectOffset(offset, value);
+ // Function transitions are not currently cachable, so leave the slot in an uncachable state.
+ if (!specificFunction)
+ slot.setNewProperty(this, offset);
+}
+
+inline void JSObject::putDirectInternal(JSGlobalData& globalData, const Identifier& propertyName, JSValue value, unsigned attributes, bool checkReadOnly, PutPropertySlot& slot)
+{
+ ASSERT(value);
+ ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
+
+ putDirectInternal(propertyName, value, attributes, checkReadOnly, slot, getJSFunction(globalData, value));
+}
+
+inline void JSObject::putDirectInternal(JSGlobalData& globalData, const Identifier& propertyName, JSValue value, unsigned attributes)
+{
+ PutPropertySlot slot;
+ putDirectInternal(propertyName, value, attributes, false, slot, getJSFunction(globalData, value));
+}
+
+inline void JSObject::putDirect(const Identifier& propertyName, JSValue value, unsigned attributes, bool checkReadOnly, PutPropertySlot& slot)
+{
+ ASSERT(value);
+ ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
+
+ putDirectInternal(propertyName, value, attributes, checkReadOnly, slot, 0);
+}
+
+inline void JSObject::putDirect(const Identifier& propertyName, JSValue value, unsigned attributes)
+{
+ PutPropertySlot slot;
+ putDirectInternal(propertyName, value, attributes, false, slot, 0);
+}
+
+inline void JSObject::putDirectFunction(const Identifier& propertyName, JSCell* value, unsigned attributes, bool checkReadOnly, PutPropertySlot& slot)
+{
+ putDirectInternal(propertyName, value, attributes, checkReadOnly, slot, value);
+}
+
+inline void JSObject::putDirectFunction(const Identifier& propertyName, JSCell* value, unsigned attr)
+{
+ PutPropertySlot slot;
+ putDirectInternal(propertyName, value, attr, false, slot, value);
+}
+
+inline void JSObject::putDirectWithoutTransition(const Identifier& propertyName, JSValue value, unsigned attributes)
+{
+ size_t currentCapacity = m_structure->propertyStorageCapacity();
+ size_t offset = m_structure->addPropertyWithoutTransition(propertyName, attributes, 0);
+ if (currentCapacity != m_structure->propertyStorageCapacity())
+ allocatePropertyStorage(currentCapacity, m_structure->propertyStorageCapacity());
+ putDirectOffset(offset, value);
}
-inline void JSObject::putDirectWithoutTransition(const Identifier& propertyName, JSValuePtr value, unsigned attributes)
+inline void JSObject::putDirectFunctionWithoutTransition(const Identifier& propertyName, JSCell* value, unsigned attributes)
{
size_t currentCapacity = m_structure->propertyStorageCapacity();
- size_t offset = m_structure->addPropertyWithoutTransition(propertyName, attributes);
+ size_t offset = m_structure->addPropertyWithoutTransition(propertyName, attributes, value);
if (currentCapacity != m_structure->propertyStorageCapacity())
allocatePropertyStorage(currentCapacity, m_structure->propertyStorageCapacity());
- m_propertyStorage[offset] = value;
+ putDirectOffset(offset, value);
}
inline void JSObject::transitionTo(Structure* newStructure)
@@ -460,21 +555,23 @@ inline void JSObject::transitionTo(Structure* newStructure)
setStructure(newStructure);
}
-inline JSValuePtr JSObject::toPrimitive(ExecState* exec, PreferredPrimitiveType preferredType) const
+inline JSValue JSObject::toPrimitive(ExecState* exec, PreferredPrimitiveType preferredType) const
{
return defaultValue(exec, preferredType);
}
-inline JSValuePtr JSValue::get(ExecState* exec, const Identifier& propertyName) const
+inline JSValue JSValue::get(ExecState* exec, const Identifier& propertyName) const
{
- PropertySlot slot(this);
+ PropertySlot slot(asValue());
return get(exec, propertyName, slot);
}
-inline JSValuePtr JSValue::get(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) const
+inline JSValue JSValue::get(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) const
{
- if (UNLIKELY(JSImmediate::isImmediate(asValue()))) {
+ if (UNLIKELY(!isCell())) {
JSObject* prototype = JSImmediate::prototype(asValue(), exec);
+ if (propertyName == exec->propertyNames().underscoreProto)
+ return prototype;
if (!prototype->getPropertySlot(exec, propertyName, slot))
return jsUndefined();
return slot.getValue(exec, propertyName);
@@ -484,22 +581,22 @@ inline JSValuePtr JSValue::get(ExecState* exec, const Identifier& propertyName,
if (cell->fastGetOwnPropertySlot(exec, propertyName, slot))
return slot.getValue(exec, propertyName);
ASSERT(cell->isObject());
- JSValuePtr prototype = static_cast<JSObject*>(cell)->prototype();
- if (!prototype->isObject())
+ JSValue prototype = static_cast<JSObject*>(cell)->prototype();
+ if (!prototype.isObject())
return jsUndefined();
cell = asObject(prototype);
}
}
-inline JSValuePtr JSValue::get(ExecState* exec, unsigned propertyName) const
+inline JSValue JSValue::get(ExecState* exec, unsigned propertyName) const
{
- PropertySlot slot(this);
+ PropertySlot slot(asValue());
return get(exec, propertyName, slot);
}
-inline JSValuePtr JSValue::get(ExecState* exec, unsigned propertyName, PropertySlot& slot) const
+inline JSValue JSValue::get(ExecState* exec, unsigned propertyName, PropertySlot& slot) const
{
- if (UNLIKELY(JSImmediate::isImmediate(asValue()))) {
+ if (UNLIKELY(!isCell())) {
JSObject* prototype = JSImmediate::prototype(asValue(), exec);
if (!prototype->getPropertySlot(exec, propertyName, slot))
return jsUndefined();
@@ -510,25 +607,25 @@ inline JSValuePtr JSValue::get(ExecState* exec, unsigned propertyName, PropertyS
if (cell->getOwnPropertySlot(exec, propertyName, slot))
return slot.getValue(exec, propertyName);
ASSERT(cell->isObject());
- JSValuePtr prototype = static_cast<JSObject*>(cell)->prototype();
- if (!prototype->isObject())
+ JSValue prototype = static_cast<JSObject*>(cell)->prototype();
+ if (!prototype.isObject())
return jsUndefined();
- cell = prototype->asCell();
+ cell = prototype.asCell();
}
}
-inline void JSValue::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+inline void JSValue::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
- if (UNLIKELY(JSImmediate::isImmediate(asValue()))) {
+ if (UNLIKELY(!isCell())) {
JSImmediate::toObject(asValue(), exec)->put(exec, propertyName, value, slot);
return;
}
asCell()->put(exec, propertyName, value, slot);
}
-inline void JSValue::put(ExecState* exec, unsigned propertyName, JSValuePtr value)
+inline void JSValue::put(ExecState* exec, unsigned propertyName, JSValue value)
{
- if (UNLIKELY(JSImmediate::isImmediate(asValue()))) {
+ if (UNLIKELY(!isCell())) {
JSImmediate::toObject(asValue(), exec)->put(exec, propertyName, value);
return;
}
@@ -539,14 +636,20 @@ ALWAYS_INLINE void JSObject::allocatePropertyStorageInline(size_t oldSize, size_
{
ASSERT(newSize > oldSize);
- JSValuePtr* oldPropertyStorage = m_propertyStorage;
- m_propertyStorage = new JSValuePtr[newSize];
+ // It's important that this function not rely on m_structure, since
+ // we might be in the middle of a transition.
+ bool wasInline = (oldSize == JSObject::inlineStorageCapacity);
+
+ PropertyStorage oldPropertyStorage = (wasInline ? m_inlineStorage : m_externalStorage);
+ PropertyStorage newPropertyStorage = new EncodedJSValue[newSize];
for (unsigned i = 0; i < oldSize; ++i)
- m_propertyStorage[i] = oldPropertyStorage[i];
+ newPropertyStorage[i] = oldPropertyStorage[i];
- if (oldPropertyStorage != m_inlineStorage)
+ if (!wasInline)
delete [] oldPropertyStorage;
+
+ m_externalStorage = newPropertyStorage;
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSPropertyNameIterator.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
index ec8efea..8c7b53d 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
@@ -37,13 +37,13 @@ JSPropertyNameIterator::~JSPropertyNameIterator()
{
}
-JSValuePtr JSPropertyNameIterator::toPrimitive(ExecState*, PreferredPrimitiveType) const
+JSValue JSPropertyNameIterator::toPrimitive(ExecState*, PreferredPrimitiveType) const
{
ASSERT_NOT_REACHED();
- return noValue();
+ return JSValue();
}
-bool JSPropertyNameIterator::getPrimitiveNumber(ExecState*, double&, JSValuePtr&)
+bool JSPropertyNameIterator::getPrimitiveNumber(ExecState*, double&, JSValue&)
{
ASSERT_NOT_REACHED();
return false;
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSPropertyNameIterator.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSPropertyNameIterator.h
index fddb4f6..9817c07 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSPropertyNameIterator.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSPropertyNameIterator.h
@@ -40,12 +40,12 @@ namespace JSC {
class JSPropertyNameIterator : public JSCell {
public:
- static JSPropertyNameIterator* create(ExecState*, JSValuePtr);
+ static JSPropertyNameIterator* create(ExecState*, JSValue);
virtual ~JSPropertyNameIterator();
- virtual JSValuePtr toPrimitive(ExecState*, PreferredPrimitiveType) const;
- virtual bool getPrimitiveNumber(ExecState*, double&, JSValuePtr&);
+ virtual JSValue toPrimitive(ExecState*, PreferredPrimitiveType) const;
+ virtual bool getPrimitiveNumber(ExecState*, double&, JSValue&);
virtual bool toBoolean(ExecState*) const;
virtual double toNumber(ExecState*) const;
virtual UString toString(ExecState*) const;
@@ -53,7 +53,7 @@ namespace JSC {
virtual void mark();
- JSValuePtr next(ExecState*);
+ JSValue next(ExecState*);
void invalidate();
private:
@@ -83,23 +83,23 @@ inline JSPropertyNameIterator::JSPropertyNameIterator(JSObject* object, PassRefP
{
}
-inline JSPropertyNameIterator* JSPropertyNameIterator::create(ExecState* exec, JSValuePtr v)
+inline JSPropertyNameIterator* JSPropertyNameIterator::create(ExecState* exec, JSValue v)
{
- if (v->isUndefinedOrNull())
+ if (v.isUndefinedOrNull())
return new (exec) JSPropertyNameIterator;
- JSObject* o = v->toObject(exec);
+ JSObject* o = v.toObject(exec);
PropertyNameArray propertyNames(exec);
o->getPropertyNames(exec, propertyNames);
return new (exec) JSPropertyNameIterator(o, propertyNames.releaseData());
}
-inline JSValuePtr JSPropertyNameIterator::next(ExecState* exec)
+inline JSValue JSPropertyNameIterator::next(ExecState* exec)
{
if (m_position == m_end)
- return noValue();
+ return JSValue();
- if (m_data->cachedStructure() == m_object->structure() && structureChainsAreEqual(m_data->cachedPrototypeChain(), m_object->structure()->cachedPrototypeChain()))
+ if (m_data->cachedStructure() == m_object->structure() && m_data->cachedPrototypeChain() == m_object->structure()->prototypeChain(exec))
return jsOwnedString(exec, (*m_position++).ustring());
do {
@@ -108,7 +108,7 @@ inline JSValuePtr JSPropertyNameIterator::next(ExecState* exec)
m_position++;
} while (m_position != m_end);
- return noValue();
+ return JSValue();
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSStaticScopeObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSStaticScopeObject.cpp
index 4196822..0253fdd 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSStaticScopeObject.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSStaticScopeObject.cpp
@@ -44,7 +44,7 @@ JSObject* JSStaticScopeObject::toThisObject(ExecState* exec) const
return exec->globalThisValue();
}
-void JSStaticScopeObject::put(ExecState*, const Identifier& propertyName, JSValuePtr value, PutPropertySlot&)
+void JSStaticScopeObject::put(ExecState*, const Identifier& propertyName, JSValue value, PutPropertySlot&)
{
if (symbolTablePut(propertyName, value))
return;
@@ -52,7 +52,7 @@ void JSStaticScopeObject::put(ExecState*, const Identifier& propertyName, JSValu
ASSERT_NOT_REACHED();
}
-void JSStaticScopeObject::putWithAttributes(ExecState*, const Identifier& propertyName, JSValuePtr value, unsigned attributes)
+void JSStaticScopeObject::putWithAttributes(ExecState*, const Identifier& propertyName, JSValue value, unsigned attributes)
{
if (symbolTablePutWithAttributes(propertyName, value, attributes))
return;
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSStaticScopeObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSStaticScopeObject.h
index e1400b7..7e7ce65 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSStaticScopeObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSStaticScopeObject.h
@@ -43,7 +43,7 @@ namespace JSC{
};
public:
- JSStaticScopeObject(ExecState* exec, const Identifier& ident, JSValuePtr value, unsigned attributes)
+ JSStaticScopeObject(ExecState* exec, const Identifier& ident, JSValue value, unsigned attributes)
: JSVariableObject(exec->globalData().staticScopeStructure, new JSStaticScopeObjectData())
{
d()->registerStore = value;
@@ -55,10 +55,10 @@ namespace JSC{
virtual JSObject* toThisObject(ExecState*) const;
virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&, bool& slotIsWriteable);
- virtual void put(ExecState*, const Identifier&, JSValuePtr, PutPropertySlot&);
- void putWithAttributes(ExecState*, const Identifier&, JSValuePtr, unsigned attributes);
+ virtual void put(ExecState*, const Identifier&, JSValue, PutPropertySlot&);
+ void putWithAttributes(ExecState*, const Identifier&, JSValue, unsigned attributes);
- static PassRefPtr<Structure> createStructure(JSValuePtr proto) { return Structure::create(proto, TypeInfo(ObjectType, NeedsThisConversion)); }
+ static PassRefPtr<Structure> createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(ObjectType, NeedsThisConversion)); }
private:
JSStaticScopeObjectData* d() { return static_cast<JSStaticScopeObjectData*>(JSVariableObject::d); }
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.cpp
index e644bf6..86f95e0 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.cpp
@@ -30,12 +30,12 @@
namespace JSC {
-JSValuePtr JSString::toPrimitive(ExecState*, PreferredPrimitiveType) const
+JSValue JSString::toPrimitive(ExecState*, PreferredPrimitiveType) const
{
return const_cast<JSString*>(this);
}
-bool JSString::getPrimitiveNumber(ExecState*, double& number, JSValuePtr& value)
+bool JSString::getPrimitiveNumber(ExecState*, double& number, JSValue& value)
{
value = this;
number = m_value.toDouble();
@@ -88,9 +88,13 @@ bool JSString::getOwnPropertySlot(ExecState* exec, const Identifier& propertyNam
// This function should only be called by JSValue::get.
if (getStringPropertySlot(exec, propertyName, slot))
return true;
+ if (propertyName == exec->propertyNames().underscoreProto) {
+ slot.setValue(exec->lexicalGlobalObject()->stringPrototype());
+ return true;
+ }
slot.setBase(this);
JSObject* object;
- for (JSValuePtr prototype = exec->lexicalGlobalObject()->stringPrototype(); !prototype->isNull(); prototype = object->prototype()) {
+ for (JSValue prototype = exec->lexicalGlobalObject()->stringPrototype(); !prototype.isNull(); prototype = object->prototype()) {
object = asObject(prototype);
if (object->getOwnPropertySlot(exec, propertyName, slot))
return true;
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.h
index a584a3c..900c565 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSString.h
@@ -60,7 +60,7 @@ namespace JSC {
class JSString : public JSCell {
friend class JIT;
- friend class Interpreter;
+ friend class VPtrSet;
public:
JSString(JSGlobalData* globalData, const UString& value)
@@ -90,7 +90,7 @@ namespace JSC {
bool canGetIndex(unsigned i) { return i < static_cast<unsigned>(m_value.size()); }
JSString* getIndex(JSGlobalData*, unsigned);
- static PassRefPtr<Structure> createStructure(JSValuePtr proto) { return Structure::create(proto, TypeInfo(StringType, NeedsThisConversion)); }
+ static PassRefPtr<Structure> createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(StringType, NeedsThisConversion)); }
private:
enum VPtrStealingHackType { VPtrStealingHack };
@@ -99,8 +99,8 @@ namespace JSC {
{
}
- virtual JSValuePtr toPrimitive(ExecState*, PreferredPrimitiveType) const;
- virtual bool getPrimitiveNumber(ExecState*, double& number, JSValuePtr& value);
+ virtual JSValue toPrimitive(ExecState*, PreferredPrimitiveType) const;
+ virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue& value);
virtual bool toBoolean(ExecState*) const;
virtual double toNumber(ExecState*) const;
virtual JSObject* toObject(ExecState*) const;
@@ -117,9 +117,9 @@ namespace JSC {
UString m_value;
};
- JSString* asString(JSValuePtr);
+ JSString* asString(JSValue);
- inline JSString* asString(JSValuePtr value)
+ inline JSString* asString(JSValue value)
{
ASSERT(asCell(value)->isString());
return static_cast<JSString*>(asCell(value));
@@ -202,6 +202,8 @@ namespace JSC {
return false;
}
+ inline bool isJSString(JSGlobalData* globalData, JSValue v) { return v.isCell() && v.asCell()->vptr() == globalData->jsStringVPtr; }
+
// --- JSValue inlines ----------------------------
inline JSString* JSValue::toThisJSString(ExecState* exec)
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp
index 73580b0..885914d 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp
@@ -33,18 +33,16 @@ static const double D32 = 4294967296.0;
// ECMA 9.4
double JSValue::toInteger(ExecState* exec) const
{
- int32_t i;
- if (getTruncatedInt32(i))
- return i;
+ if (isInt32Fast())
+ return getInt32Fast();
double d = toNumber(exec);
return isnan(d) ? 0.0 : trunc(d);
}
double JSValue::toIntegerPreserveNaN(ExecState* exec) const
{
- int32_t i;
- if (getTruncatedInt32(i))
- return i;
+ if (isInt32Fast())
+ return getInt32Fast();
return trunc(toNumber(exec));
}
@@ -68,11 +66,6 @@ int32_t toInt32SlowCase(double d, bool& ok)
return static_cast<int32_t>(d32);
}
-int32_t JSValue::toInt32SlowCase(ExecState* exec, bool& ok) const
-{
- return JSC::toInt32SlowCase(toNumber(exec), ok);
-}
-
uint32_t toUInt32SlowCase(double d, bool& ok)
{
ok = true;
@@ -91,14 +84,4 @@ uint32_t toUInt32SlowCase(double d, bool& ok)
return static_cast<uint32_t>(d32);
}
-uint32_t JSValue::toUInt32SlowCase(ExecState* exec, bool& ok) const
-{
- return JSC::toUInt32SlowCase(toNumber(exec), ok);
-}
-
-float JSValue::toFloat(ExecState* exec) const
-{
- return static_cast<float>(toNumber(exec));
-}
-
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.h
index f04b67f..391425c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.h
@@ -28,12 +28,15 @@
#include "CallData.h"
#include "ConstructData.h"
-#include <wtf/Noncopyable.h>
+#include <wtf/HashTraits.h>
+#include <wtf/AlwaysInline.h>
namespace JSC {
class Identifier;
class JSCell;
+ class JSGlobalData;
+ class JSImmediate;
class JSObject;
class JSString;
class PropertySlot;
@@ -45,12 +48,67 @@ namespace JSC {
enum PreferredPrimitiveType { NoPreference, PreferNumber, PreferString };
- class JSValue : Noncopyable {
- protected:
- JSValue() { }
- virtual ~JSValue() { }
+ typedef void* EncodedJSValue;
+
+ class JSValue {
+ friend class JSImmediate;
+ friend struct JSValueHashTraits;
+ static JSValue makeImmediate(intptr_t value)
+ {
+ return JSValue(reinterpret_cast<JSCell*>(value));
+ }
+
+ intptr_t immediateValue()
+ {
+ return reinterpret_cast<intptr_t>(m_ptr);
+ }
+
public:
+ enum JSNullTag { JSNull };
+ enum JSUndefinedTag { JSUndefined };
+ enum JSTrueTag { JSTrue };
+ enum JSFalseTag { JSFalse };
+
+ static EncodedJSValue encode(JSValue value);
+ static JSValue decode(EncodedJSValue ptr);
+
+ JSValue();
+ JSValue(JSNullTag);
+ JSValue(JSUndefinedTag);
+ JSValue(JSTrueTag);
+ JSValue(JSFalseTag);
+ JSValue(JSCell* ptr);
+ JSValue(const JSCell* ptr);
+
+ // Numbers
+ JSValue(ExecState*, double);
+ JSValue(ExecState*, char);
+ JSValue(ExecState*, unsigned char);
+ JSValue(ExecState*, short);
+ JSValue(ExecState*, unsigned short);
+ JSValue(ExecState*, int);
+ JSValue(ExecState*, unsigned);
+ JSValue(ExecState*, long);
+ JSValue(ExecState*, unsigned long);
+ JSValue(ExecState*, long long);
+ JSValue(ExecState*, unsigned long long);
+ JSValue(JSGlobalData*, double);
+ JSValue(JSGlobalData*, char);
+ JSValue(JSGlobalData*, unsigned char);
+ JSValue(JSGlobalData*, short);
+ JSValue(JSGlobalData*, unsigned short);
+ JSValue(JSGlobalData*, int);
+ JSValue(JSGlobalData*, unsigned);
+ JSValue(JSGlobalData*, long);
+ JSValue(JSGlobalData*, unsigned long);
+ JSValue(JSGlobalData*, long long);
+ JSValue(JSGlobalData*, unsigned long long);
+
+ operator bool() const;
+ bool operator==(const JSValue other) const;
+ bool operator!=(const JSValue other) const;
+
// Querying the type.
bool isUndefined() const;
bool isNull() const;
@@ -65,7 +123,7 @@ namespace JSC {
// Extracting the value.
bool getBoolean(bool&) const;
bool getBoolean() const; // false if not a boolean
- double getNumber() const; // NaN if not a number
+ bool getNumber(double&) const;
double uncheckedGetNumber() const;
bool getString(UString&) const;
UString getString() const; // null string if not a string
@@ -80,143 +138,282 @@ namespace JSC {
bool getTruncatedUInt32(uint32_t&) const;
// Basic conversions.
- JSValuePtr toPrimitive(ExecState*, PreferredPrimitiveType = NoPreference) const;
- bool getPrimitiveNumber(ExecState*, double& number, JSValuePtr&);
+ JSValue toPrimitive(ExecState*, PreferredPrimitiveType = NoPreference) const;
+ bool getPrimitiveNumber(ExecState*, double& number, JSValue&);
bool toBoolean(ExecState*) const;
// toNumber conversion is expected to be side effect free if an exception has
// been set in the ExecState already.
double toNumber(ExecState*) const;
- JSValuePtr toJSNumber(ExecState*) const; // Fast path for when you expect that the value is an immediate number.
-
+ JSValue toJSNumber(ExecState*) const; // Fast path for when you expect that the value is an immediate number.
UString toString(ExecState*) const;
JSObject* toObject(ExecState*) const;
// Integer conversions.
+ // 'x.numberToInt32(output)' is equivalent to 'x.isNumber() && x.toInt32(output)'
double toInteger(ExecState*) const;
double toIntegerPreserveNaN(ExecState*) const;
int32_t toInt32(ExecState*) const;
int32_t toInt32(ExecState*, bool& ok) const;
+ bool numberToInt32(int32_t& arg);
uint32_t toUInt32(ExecState*) const;
uint32_t toUInt32(ExecState*, bool& ok) const;
-
- // Floating point conversions.
- float toFloat(ExecState*) const;
+ bool numberToUInt32(uint32_t& arg);
+
+ // Fast integer operations; these values return results where the value is trivially available
+ // in a convenient form, for use in optimizations. No assumptions should be made based on the
+ // results of these operations, for example !isInt32Fast() does not necessarily indicate the
+ // result of getNumber will not be 0.
+ bool isInt32Fast() const;
+ int32_t getInt32Fast() const;
+ bool isUInt32Fast() const;
+ uint32_t getUInt32Fast() const;
+ static JSValue makeInt32Fast(int32_t);
+ static bool areBothInt32Fast(JSValue, JSValue);
+
+ // Floating point conversions (this is a convenience method for webcore;
+ // signle precision float is not a representation used in JS or JSC).
+ float toFloat(ExecState* exec) const { return static_cast<float>(toNumber(exec)); }
+
+ // API Mangled Numbers
+ bool isAPIMangledNumber();
// Garbage collection.
void mark();
bool marked() const;
// Object operations, with the toObject operation included.
- JSValuePtr get(ExecState*, const Identifier& propertyName) const;
- JSValuePtr get(ExecState*, const Identifier& propertyName, PropertySlot&) const;
- JSValuePtr get(ExecState*, unsigned propertyName) const;
- JSValuePtr get(ExecState*, unsigned propertyName, PropertySlot&) const;
- void put(ExecState*, const Identifier& propertyName, JSValuePtr, PutPropertySlot&);
- void put(ExecState*, unsigned propertyName, JSValuePtr);
- bool deleteProperty(ExecState*, const Identifier& propertyName);
- bool deleteProperty(ExecState*, unsigned propertyName);
+ JSValue get(ExecState*, const Identifier& propertyName) const;
+ JSValue get(ExecState*, const Identifier& propertyName, PropertySlot&) const;
+ JSValue get(ExecState*, unsigned propertyName) const;
+ JSValue get(ExecState*, unsigned propertyName, PropertySlot&) const;
+ void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
+ void put(ExecState*, unsigned propertyName, JSValue);
bool needsThisConversion() const;
JSObject* toThisObject(ExecState*) const;
UString toThisString(ExecState*) const;
JSString* toThisJSString(ExecState*);
- JSValuePtr getJSNumber(); // 0 if this is not a JSNumber or number object
+ static bool equal(ExecState* exec, JSValue v1, JSValue v2);
+ static bool equalSlowCase(ExecState* exec, JSValue v1, JSValue v2);
+ static bool equalSlowCaseInline(ExecState* exec, JSValue v1, JSValue v2);
+ static bool strictEqual(JSValue v1, JSValue v2);
+ static bool strictEqualSlowCase(JSValue v1, JSValue v2);
+ static bool strictEqualSlowCaseInline(JSValue v1, JSValue v2);
- JSValuePtr asValue() const;
+ JSValue getJSNumber(); // JSValue() if this is not a JSNumber or number object
+ bool isCell() const;
JSCell* asCell() const;
private:
- bool getPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
- bool getPropertySlot(ExecState*, unsigned propertyName, PropertySlot&);
- int32_t toInt32SlowCase(ExecState*, bool& ok) const;
- uint32_t toUInt32SlowCase(ExecState*, bool& ok) const;
+ enum HashTableDeletedValueTag { HashTableDeletedValue };
+ JSValue(HashTableDeletedValueTag);
+
+ inline const JSValue asValue() const { return *this; }
+
+ bool isDoubleNumber() const;
+ double getDoubleNumber() const;
+
+ JSCell* m_ptr;
};
- class JSImmediate;
- class JSValueEncodedAsPointer;
+ struct JSValueHashTraits : HashTraits<EncodedJSValue> {
+ static void constructDeletedValue(EncodedJSValue& slot) { slot = JSValue::encode(JSValue(JSValue::HashTableDeletedValue)); }
+ static bool isDeletedValue(EncodedJSValue value) { return value == JSValue::encode(JSValue(JSValue::HashTableDeletedValue)); }
+ };
- class JSValuePtr {
- friend class JSImmediate;
+ // Stand-alone helper functions.
+ inline JSValue jsNull()
+ {
+ return JSValue(JSValue::JSNull);
+ }
- static JSValuePtr makeImmediate(intptr_t value)
- {
- return JSValuePtr(reinterpret_cast<JSValue*>(value));
- }
+ inline JSValue jsUndefined()
+ {
+ return JSValue(JSValue::JSUndefined);
+ }
- intptr_t immediateValue()
- {
- return reinterpret_cast<intptr_t>(m_ptr);
- }
-
- public:
- JSValuePtr()
- : m_ptr(0)
- {
- }
+ inline JSValue jsBoolean(bool b)
+ {
+ return b ? JSValue(JSValue::JSTrue) : JSValue(JSValue::JSFalse);
+ }
- JSValuePtr(JSValue* ptr)
- : m_ptr(ptr)
- {
- }
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, double d)
+ {
+ return JSValue(exec, d);
+ }
- JSValuePtr(const JSValue* ptr)
- : m_ptr(const_cast<JSValue*>(ptr))
- {
- }
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, char i)
+ {
+ return JSValue(exec, i);
+ }
- JSValue* operator->() const
- {
- return m_ptr;
- }
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, unsigned char i)
+ {
+ return JSValue(exec, i);
+ }
- operator bool() const
- {
- return m_ptr;
- }
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, short i)
+ {
+ return JSValue(exec, i);
+ }
- bool operator==(const JSValuePtr other) const
- {
- return m_ptr == other.m_ptr;
- }
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, unsigned short i)
+ {
+ return JSValue(exec, i);
+ }
- bool operator!=(const JSValuePtr other) const
- {
- return m_ptr != other.m_ptr;
- }
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, int i)
+ {
+ return JSValue(exec, i);
+ }
- static JSValueEncodedAsPointer* encode(JSValuePtr value)
- {
- return reinterpret_cast<JSValueEncodedAsPointer*>(value.m_ptr);
- }
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, unsigned i)
+ {
+ return JSValue(exec, i);
+ }
- static JSValuePtr decode(JSValueEncodedAsPointer* ptr)
- {
- return JSValuePtr(reinterpret_cast<JSValue*>(ptr));
- }
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, long i)
+ {
+ return JSValue(exec, i);
+ }
- private:
- JSValue* m_ptr;
- };
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, unsigned long i)
+ {
+ return JSValue(exec, i);
+ }
+
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, long long i)
+ {
+ return JSValue(exec, i);
+ }
+
+ ALWAYS_INLINE JSValue jsNumber(ExecState* exec, unsigned long long i)
+ {
+ return JSValue(exec, i);
+ }
+
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, double d)
+ {
+ return JSValue(globalData, d);
+ }
+
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, char i)
+ {
+ return JSValue(globalData, i);
+ }
+
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, unsigned char i)
+ {
+ return JSValue(globalData, i);
+ }
- inline JSValuePtr JSValue::asValue() const
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, short i)
{
- return JSValuePtr(this);
+ return JSValue(globalData, i);
}
- inline JSValuePtr noValue()
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, unsigned short i)
{
- return JSValuePtr();
+ return JSValue(globalData, i);
}
- inline bool operator==(const JSValuePtr a, const JSValue* b) { return a == JSValuePtr(b); }
- inline bool operator==(const JSValue* a, const JSValuePtr b) { return JSValuePtr(a) == b; }
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, int i)
+ {
+ return JSValue(globalData, i);
+ }
+
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, unsigned i)
+ {
+ return JSValue(globalData, i);
+ }
+
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, long i)
+ {
+ return JSValue(globalData, i);
+ }
+
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, unsigned long i)
+ {
+ return JSValue(globalData, i);
+ }
+
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, long long i)
+ {
+ return JSValue(globalData, i);
+ }
+
+ ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, unsigned long long i)
+ {
+ return JSValue(globalData, i);
+ }
- inline bool operator!=(const JSValuePtr a, const JSValue* b) { return a != JSValuePtr(b); }
- inline bool operator!=(const JSValue* a, const JSValuePtr b) { return JSValuePtr(a) != b; }
+ inline bool operator==(const JSValue a, const JSCell* b) { return a == JSValue(b); }
+ inline bool operator==(const JSCell* a, const JSValue b) { return JSValue(a) == b; }
+
+ inline bool operator!=(const JSValue a, const JSCell* b) { return a != JSValue(b); }
+ inline bool operator!=(const JSCell* a, const JSValue b) { return JSValue(a) != b; }
+
+ // JSValue member functions.
+ inline EncodedJSValue JSValue::encode(JSValue value)
+ {
+ return reinterpret_cast<EncodedJSValue>(value.m_ptr);
+ }
+
+ inline JSValue JSValue::decode(EncodedJSValue ptr)
+ {
+ return JSValue(reinterpret_cast<JSCell*>(ptr));
+ }
+
+ // 0x0 can never occur naturally because it has a tag of 00, indicating a pointer value, but a payload of 0x0, which is in the (invalid) zero page.
+ inline JSValue::JSValue()
+ : m_ptr(0)
+ {
+ }
+
+ // 0x4 can never occur naturally because it has a tag of 00, indicating a pointer value, but a payload of 0x4, which is in the (invalid) zero page.
+ inline JSValue::JSValue(HashTableDeletedValueTag)
+ : m_ptr(reinterpret_cast<JSCell*>(0x4))
+ {
+ }
+
+ inline JSValue::JSValue(JSCell* ptr)
+ : m_ptr(ptr)
+ {
+ }
+
+ inline JSValue::JSValue(const JSCell* ptr)
+ : m_ptr(const_cast<JSCell*>(ptr))
+ {
+ }
+
+ inline JSValue::operator bool() const
+ {
+ return m_ptr;
+ }
+
+ inline bool JSValue::operator==(const JSValue other) const
+ {
+ return m_ptr == other.m_ptr;
+ }
+
+ inline bool JSValue::operator!=(const JSValue other) const
+ {
+ return m_ptr != other.m_ptr;
+ }
+
+ inline bool JSValue::isUndefined() const
+ {
+ return asValue() == jsUndefined();
+ }
+
+ inline bool JSValue::isNull() const
+ {
+ return asValue() == jsNull();
+ }
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.h
index 9bf5c4f..b969da5 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.h
@@ -46,7 +46,7 @@ namespace JSC {
public:
SymbolTable& symbolTable() const { return *d->symbolTable; }
- virtual void putWithAttributes(ExecState*, const Identifier&, JSValuePtr, unsigned attributes) = 0;
+ virtual void putWithAttributes(ExecState*, const Identifier&, JSValue, unsigned attributes) = 0;
virtual bool deleteProperty(ExecState*, const Identifier&);
virtual void getPropertyNames(ExecState*, PropertyNameArray&);
@@ -90,8 +90,8 @@ namespace JSC {
bool symbolTableGet(const Identifier&, PropertySlot&);
bool symbolTableGet(const Identifier&, PropertySlot&, bool& slotIsWriteable);
- bool symbolTablePut(const Identifier&, JSValuePtr);
- bool symbolTablePutWithAttributes(const Identifier&, JSValuePtr, unsigned attributes);
+ bool symbolTablePut(const Identifier&, JSValue);
+ bool symbolTablePutWithAttributes(const Identifier&, JSValue, unsigned attributes);
JSVariableObjectData* d;
};
@@ -117,7 +117,7 @@ namespace JSC {
return false;
}
- inline bool JSVariableObject::symbolTablePut(const Identifier& propertyName, JSValuePtr value)
+ inline bool JSVariableObject::symbolTablePut(const Identifier& propertyName, JSValue value)
{
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
@@ -130,7 +130,7 @@ namespace JSC {
return true;
}
- inline bool JSVariableObject::symbolTablePutWithAttributes(const Identifier& propertyName, JSValuePtr value, unsigned attributes)
+ inline bool JSVariableObject::symbolTablePutWithAttributes(const Identifier& propertyName, JSValue value, unsigned attributes)
{
ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSWrapperObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSWrapperObject.cpp
index c791d93..fb57018 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSWrapperObject.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSWrapperObject.cpp
@@ -29,8 +29,8 @@ ASSERT_CLASS_FITS_IN_CELL(JSWrapperObject);
void JSWrapperObject::mark()
{
JSObject::mark();
- if (m_internalValue && !m_internalValue->marked())
- m_internalValue->mark();
+ if (m_internalValue && !m_internalValue.marked())
+ m_internalValue.mark();
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSWrapperObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/JSWrapperObject.h
index 4ca96f4..2a2e3c6 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSWrapperObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSWrapperObject.h
@@ -33,25 +33,24 @@ namespace JSC {
explicit JSWrapperObject(PassRefPtr<Structure>);
public:
- JSValuePtr internalValue() const { return m_internalValue; }
- void setInternalValue(JSValuePtr);
+ JSValue internalValue() const { return m_internalValue; }
+ void setInternalValue(JSValue);
virtual void mark();
private:
- JSValuePtr m_internalValue;
+ JSValue m_internalValue;
};
inline JSWrapperObject::JSWrapperObject(PassRefPtr<Structure> structure)
: JSObject(structure)
- , m_internalValue(noValue())
{
}
- inline void JSWrapperObject::setInternalValue(JSValuePtr value)
+ inline void JSWrapperObject::setInternalValue(JSValue value)
{
ASSERT(value);
- ASSERT(!value->isObject());
+ ASSERT(!value.isObject());
m_internalValue = value;
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/LiteralParser.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/LiteralParser.cpp
new file mode 100644
index 0000000..10f9a13
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/LiteralParser.cpp
@@ -0,0 +1,306 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "LiteralParser.h"
+
+#include "JSArray.h"
+#include "JSString.h"
+#include <wtf/ASCIICType.h>
+
+namespace JSC {
+
+class LiteralParser::StackGuard {
+public:
+ StackGuard(LiteralParser* parser)
+ : m_parser(parser)
+ {
+ m_parser->m_depth++;
+ }
+ ~StackGuard()
+ {
+ m_parser->m_depth--;
+ }
+ bool isSafe() { return m_parser->m_depth < 10; }
+private:
+ LiteralParser* m_parser;
+};
+
+static bool isSafeStringCharacter(UChar c)
+{
+ return (c >= ' ' && c <= 0xff && c != '\\') || c == '\t';
+}
+
+LiteralParser::TokenType LiteralParser::Lexer::lex(LiteralParserToken& token)
+{
+ while (m_ptr < m_end && isASCIISpace(*m_ptr))
+ ++m_ptr;
+
+ ASSERT(m_ptr <= m_end);
+ if (m_ptr >= m_end) {
+ token.type = TokEnd;
+ token.start = token.end = m_ptr;
+ return TokEnd;
+ }
+ token.type = TokError;
+ token.start = m_ptr;
+ switch (*m_ptr) {
+ case '[':
+ token.type = TokLBracket;
+ token.end = ++m_ptr;
+ return TokLBracket;
+ case ']':
+ token.type = TokRBracket;
+ token.end = ++m_ptr;
+ return TokRBracket;
+ case '(':
+ token.type = TokLParen;
+ token.end = ++m_ptr;
+ return TokLBracket;
+ case ')':
+ token.type = TokRParen;
+ token.end = ++m_ptr;
+ return TokRBracket;
+ case '{':
+ token.type = TokLBrace;
+ token.end = ++m_ptr;
+ return TokLBrace;
+ case '}':
+ token.type = TokRBrace;
+ token.end = ++m_ptr;
+ return TokRBrace;
+ case ',':
+ token.type = TokComma;
+ token.end = ++m_ptr;
+ return TokComma;
+ case ':':
+ token.type = TokColon;
+ token.end = ++m_ptr;
+ return TokColon;
+ case '"':
+ return lexString(token);
+
+ case '-':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ return lexNumber(token);
+ }
+ return TokError;
+}
+
+LiteralParser::TokenType LiteralParser::Lexer::lexString(LiteralParserToken& token)
+{
+ ++m_ptr;
+ while (m_ptr < m_end && isSafeStringCharacter(*m_ptr) && *m_ptr != '"')
+ ++m_ptr;
+ if (m_ptr >= m_end || *m_ptr != '"') {
+ token.type = TokError;
+ token.end = ++m_ptr;
+ return TokError;
+ }
+ token.type = TokString;
+ token.end = ++m_ptr;
+ return TokString;
+}
+
+LiteralParser::TokenType LiteralParser::Lexer::lexNumber(LiteralParserToken& token)
+{
+ // ES5 and json.org define numbers as
+ // number
+ // int
+ // int frac? exp?
+ //
+ // int
+ // -? 0
+ // -? digit1-9 digits?
+ //
+ // digits
+ // digit digits?
+ //
+ // -?(0 | [1-9][0-9]*) ('.' [0-9]+)? ([eE][+-]? [0-9]+)?
+
+ if (m_ptr < m_end && *m_ptr == '-') // -?
+ ++m_ptr;
+
+ // (0 | [1-9][0-9]*)
+ if (m_ptr < m_end && *m_ptr == '0') // 0
+ ++m_ptr;
+ else if (m_ptr < m_end && *m_ptr >= '1' && *m_ptr <= '9') { // [1-9]
+ ++m_ptr;
+ // [0-9]*
+ while (m_ptr < m_end && isASCIIDigit(*m_ptr))
+ ++m_ptr;
+ } else
+ return TokError;
+
+ // ('.' [0-9]+)?
+ if (m_ptr < m_end && *m_ptr == '.') {
+ ++m_ptr;
+ // [0-9]+
+ if (m_ptr >= m_end && !isASCIIDigit(*m_ptr))
+ return TokError;
+
+ ++m_ptr;
+ while (m_ptr < m_end && isASCIIDigit(*m_ptr))
+ ++m_ptr;
+ }
+
+ // ([eE][+-]? [0-9]+)?
+ if (m_ptr < m_end && (*m_ptr == 'e' || *m_ptr == 'E')) { // [eE]
+ ++m_ptr;
+
+ // [-+]?
+ if (m_ptr < m_end && (*m_ptr == '-' || *m_ptr == '+'))
+ ++m_ptr;
+
+ // [0-9]+
+ if (m_ptr >= m_end && !isASCIIDigit(*m_ptr))
+ return TokError;
+
+ ++m_ptr;
+ while (m_ptr < m_end && isASCIIDigit(*m_ptr))
+ ++m_ptr;
+ }
+
+ token.type = TokNumber;
+ token.end = m_ptr;
+ return TokNumber;
+}
+
+JSValue LiteralParser::parseStatement()
+{
+ StackGuard guard(this);
+ if (!guard.isSafe())
+ return abortParse();
+
+ switch (m_lexer.currentToken().type) {
+ case TokLBracket:
+ case TokNumber:
+ case TokString:
+ return parseExpression();
+ case TokLParen: {
+ m_lexer.next();
+ JSValue result = parseExpression();
+ if (m_aborted || m_lexer.currentToken().type != TokRParen)
+ return abortParse();
+ m_lexer.next();
+ return result;
+ }
+ default:
+ return abortParse();
+ }
+}
+
+JSValue LiteralParser::parseExpression()
+{
+ StackGuard guard(this);
+ if (!guard.isSafe())
+ return abortParse();
+ switch (m_lexer.currentToken().type) {
+ case TokLBracket:
+ return parseArray();
+ case TokLBrace:
+ return parseObject();
+ case TokString: {
+ Lexer::LiteralParserToken stringToken = m_lexer.currentToken();
+ m_lexer.next();
+ return jsString(m_exec, UString(stringToken.start + 1, stringToken.end - stringToken.start - 2));
+ }
+ case TokNumber: {
+ Lexer::LiteralParserToken numberToken = m_lexer.currentToken();
+ m_lexer.next();
+ return jsNumber(m_exec, UString(numberToken.start, numberToken.end - numberToken.start).toDouble());
+ }
+ default:
+ return JSValue();
+ }
+}
+
+JSValue LiteralParser::parseArray()
+{
+ StackGuard guard(this);
+ if (!guard.isSafe())
+ return abortParse();
+ JSArray* array = constructEmptyArray(m_exec);
+ while (true) {
+ m_lexer.next();
+ JSValue value = parseExpression();
+ if (m_aborted)
+ return JSValue();
+ if (!value)
+ break;
+ array->push(m_exec, value);
+
+ if (m_lexer.currentToken().type != TokComma)
+ break;
+ }
+ if (m_lexer.currentToken().type != TokRBracket)
+ return abortParse();
+
+ m_lexer.next();
+ return array;
+}
+
+JSValue LiteralParser::parseObject()
+{
+ StackGuard guard(this);
+ if (!guard.isSafe())
+ return abortParse();
+ JSObject* object = constructEmptyObject(m_exec);
+
+ while (m_lexer.next() == TokString) {
+ Lexer::LiteralParserToken identifierToken = m_lexer.currentToken();
+
+ // Check for colon
+ if (m_lexer.next() != TokColon)
+ return abortParse();
+ m_lexer.next();
+
+ JSValue value = parseExpression();
+ if (!value || m_aborted)
+ return abortParse();
+
+ Identifier ident(m_exec, identifierToken.start + 1, identifierToken.end - identifierToken.start - 2);
+ object->putDirect(ident, value);
+
+ if (m_lexer.currentToken().type != TokComma)
+ break;
+ }
+
+ if (m_lexer.currentToken().type != TokRBrace)
+ return abortParse();
+ m_lexer.next();
+ return object;
+}
+
+}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/LiteralParser.h b/src/3rdparty/webkit/JavaScriptCore/runtime/LiteralParser.h
new file mode 100644
index 0000000..a72e3d0
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/LiteralParser.h
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef LiteralParser_h
+#define LiteralParser_h
+
+#include "JSGlobalObjectFunctions.h"
+#include "JSValue.h"
+#include "UString.h"
+
+namespace JSC {
+
+ class LiteralParser {
+ public:
+ LiteralParser(ExecState* exec, const UString& s)
+ : m_exec(exec)
+ , m_lexer(s)
+ , m_depth(0)
+ , m_aborted(false)
+ {
+ }
+
+ JSValue tryLiteralParse()
+ {
+ m_lexer.next();
+ JSValue result = parseStatement();
+ if (m_aborted || m_lexer.currentToken().type != TokEnd)
+ return JSValue();
+ return result;
+ }
+ private:
+
+ enum TokenType { TokLBracket, TokRBracket, TokLBrace, TokRBrace,
+ TokString, TokIdentifier, TokNumber, TokColon,
+ TokLParen, TokRParen, TokComma, TokEnd, TokError };
+
+ class Lexer {
+ public:
+ struct LiteralParserToken {
+ TokenType type;
+ const UChar* start;
+ const UChar* end;
+ };
+ Lexer(const UString& s)
+ : m_string(s)
+ , m_ptr(s.data())
+ , m_end(s.data() + s.size())
+ {
+ }
+
+ TokenType next()
+ {
+ return lex(m_currentToken);
+ }
+
+ const LiteralParserToken& currentToken()
+ {
+ return m_currentToken;
+ }
+
+ private:
+ TokenType lex(LiteralParserToken&);
+ TokenType lexString(LiteralParserToken&);
+ TokenType lexNumber(LiteralParserToken&);
+ LiteralParserToken m_currentToken;
+ UString m_string;
+ const UChar* m_ptr;
+ const UChar* m_end;
+ };
+
+ class StackGuard;
+ JSValue parseStatement();
+ JSValue parseExpression();
+ JSValue parseArray();
+ JSValue parseObject();
+
+ JSValue abortParse()
+ {
+ m_aborted = true;
+ return JSValue();
+ }
+
+ ExecState* m_exec;
+ LiteralParser::Lexer m_lexer;
+ int m_depth;
+ bool m_aborted;
+ };
+}
+
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp
index 98133a8..8359ff7 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.cpp
@@ -20,25 +20,13 @@
#include "config.h"
#include "Lookup.h"
+#include "JSFunction.h"
#include "PrototypeFunction.h"
namespace JSC {
void HashTable::createTable(JSGlobalData* globalData) const
{
-#if ENABLE(PERFECT_HASH_SIZE)
- ASSERT(!table);
- HashEntry* entries = new HashEntry[hashSizeMask + 1];
- for (int i = 0; i <= hashSizeMask; ++i)
- entries[i].setKey(0);
- for (int i = 0; values[i].key; ++i) {
- UString::Rep* identifier = Identifier::add(globalData, values[i].key).releaseRef();
- int hashIndex = identifier->computedHash() & hashSizeMask;
- ASSERT(!entries[hashIndex].key());
- entries[hashIndex].initialize(identifier, values[i].attributes, values[i].value1, values[i].value2);
- }
- table = entries;
-#else
ASSERT(!table);
int linkIndex = compactHashSizeMask + 1;
HashEntry* entries = new HashEntry[compactSize];
@@ -61,17 +49,12 @@ void HashTable::createTable(JSGlobalData* globalData) const
entry->initialize(identifier, values[i].attributes, values[i].value1, values[i].value2);
}
table = entries;
-#endif
}
void HashTable::deleteTable() const
{
if (table) {
-#if ENABLE(PERFECT_HASH_SIZE)
- int max = hashSizeMask + 1;
-#else
int max = compactSize;
-#endif
for (int i = 0; i != max; ++i) {
if (UString::Rep* key = table[i].key())
key->deref();
@@ -84,11 +67,12 @@ void HashTable::deleteTable() const
void setUpStaticFunctionSlot(ExecState* exec, const HashEntry* entry, JSObject* thisObj, const Identifier& propertyName, PropertySlot& slot)
{
ASSERT(entry->attributes() & Function);
- JSValuePtr* location = thisObj->getDirectLocation(propertyName);
+ JSValue* location = thisObj->getDirectLocation(propertyName);
if (!location) {
- PrototypeFunction* function = new (exec) PrototypeFunction(exec, entry->functionLength(), propertyName, entry->function());
- thisObj->putDirect(propertyName, function, entry->attributes());
+ InternalFunction* function = new (exec) NativeFunctionWrapper(exec, exec->lexicalGlobalObject()->prototypeFunctionStructure(), entry->functionLength(), propertyName, entry->function());
+
+ thisObj->putDirectFunction(propertyName, function, entry->attributes());
location = thisObj->getDirectLocation(propertyName);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.h
index 55c3221..3b7353d 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.h
@@ -23,17 +23,12 @@
#include "CallFrame.h"
#include "Identifier.h"
-#include "JSFunction.h"
#include "JSGlobalObject.h"
#include "JSObject.h"
#include "PropertySlot.h"
#include <stdio.h>
#include <wtf/Assertions.h>
-// Set ENABLE_PERFECT_HASH_SIZE to 0 to save memory at the
-// cost of speed. Test your platform as results may vary.
-#define ENABLE_PERFECT_HASH_SIZE 1
-
namespace JSC {
// Hash table generated by the create_hash_table script.
@@ -45,9 +40,9 @@ namespace JSC {
};
// FIXME: There is no reason this get function can't be simpler.
- // ie. typedef JSValuePtr (*GetFunction)(ExecState*, JSObject* baseObject)
+ // ie. typedef JSValue (*GetFunction)(ExecState*, JSObject* baseObject)
typedef PropertySlot::GetValueFunc GetFunction;
- typedef void (*PutFunction)(ExecState*, JSObject* baseObject, JSValuePtr value);
+ typedef void (*PutFunction)(ExecState*, JSObject* baseObject, JSValue value);
class HashEntry {
public:
@@ -57,9 +52,7 @@ namespace JSC {
m_attributes = attributes;
m_u.store.value1 = v1;
m_u.store.value2 = v2;
-#if !ENABLE(PERFECT_HASH_SIZE)
m_next = 0;
-#endif
}
void setKey(UString::Rep* key) { m_key = key; }
@@ -75,10 +68,8 @@ namespace JSC {
intptr_t lexerValue() const { ASSERT(!m_attributes); return m_u.lexer.value; }
-#if !ENABLE(PERFECT_HASH_SIZE)
void setNext(HashEntry *next) { m_next = next; }
HashEntry* next() const { return m_next; }
-#endif
private:
UString::Rep* m_key;
@@ -103,18 +94,14 @@ namespace JSC {
} lexer;
} m_u;
-#if !ENABLE(PERFECT_HASH_SIZE)
HashEntry* m_next;
-#endif
};
struct HashTable {
-#if ENABLE(PERFECT_HASH_SIZE)
- int hashSizeMask; // Precomputed size for the hash table (minus 1).
-#else
+
int compactSize;
int compactHashSizeMask;
-#endif
+
const HashTableValue* values; // Fixed values generated by script.
mutable const HashEntry* table; // Table allocated at runtime.
@@ -148,13 +135,6 @@ namespace JSC {
private:
ALWAYS_INLINE const HashEntry* entry(const Identifier& identifier) const
{
-#if ENABLE(PERFECT_HASH_SIZE)
- ASSERT(table);
- const HashEntry* entry = &table[identifier.ustring().rep()->computedHash() & hashSizeMask];
- if (entry->key() != identifier.ustring().rep())
- return 0;
- return entry;
-#else
ASSERT(table);
const HashEntry* entry = &table[identifier.ustring().rep()->computedHash() & compactHashSizeMask];
@@ -169,7 +149,6 @@ namespace JSC {
} while (entry);
return 0;
-#endif
}
// Convert the hash table keys to identifiers.
@@ -243,16 +222,19 @@ namespace JSC {
* is found it sets the value and returns true, else it returns false.
*/
template <class ThisImp>
- inline bool lookupPut(ExecState* exec, const Identifier& propertyName, JSValuePtr value, const HashTable* table, ThisImp* thisObj)
+ inline bool lookupPut(ExecState* exec, const Identifier& propertyName, JSValue value, const HashTable* table, ThisImp* thisObj)
{
const HashEntry* entry = table->entry(exec, propertyName);
if (!entry)
return false;
- if (entry->attributes() & Function) // function: put as override property
- thisObj->putDirect(propertyName, value);
- else if (!(entry->attributes() & ReadOnly))
+ if (entry->attributes() & Function) { // function: put as override property
+ if (LIKELY(value.isCell()))
+ thisObj->putDirectFunction(propertyName, value.asCell());
+ else
+ thisObj->putDirect(propertyName, value);
+ } else if (!(entry->attributes() & ReadOnly))
entry->propertyPutter()(exec, thisObj, value);
return true;
@@ -265,7 +247,7 @@ namespace JSC {
* then it calls put() on the ParentImp class.
*/
template <class ThisImp, class ParentImp>
- inline void lookupPut(ExecState* exec, const Identifier& propertyName, JSValuePtr value, const HashTable* table, ThisImp* thisObj, PutPropertySlot& slot)
+ inline void lookupPut(ExecState* exec, const Identifier& propertyName, JSValue value, const HashTable* table, ThisImp* thisObj, PutPropertySlot& slot)
{
if (!lookupPut<ThisImp>(exec, propertyName, value, table, thisObj))
thisObj->ParentImp::put(exec, propertyName, value, slot); // not found: forward to parent
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/MathObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/MathObject.cpp
index 5bec2e6..2572bc9 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/MathObject.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/MathObject.cpp
@@ -27,29 +27,30 @@
#include <wtf/Assertions.h>
#include <wtf/MathExtras.h>
#include <wtf/RandomNumber.h>
+#include <wtf/RandomNumberSeed.h>
namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(MathObject);
-static JSValuePtr mathProtoFuncAbs(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncACos(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncASin(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncATan(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncATan2(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncCeil(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncCos(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncExp(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncFloor(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncLog(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncMax(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncMin(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncPow(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncRandom(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncRound(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncSin(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncSqrt(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr mathProtoFuncTan(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncAbs(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncACos(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncASin(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncATan(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncATan2(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncCeil(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncCos(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncExp(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncFloor(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncLog(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncMax(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncMin(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncPow(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncRandom(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncRound(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncSin(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncSqrt(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL mathProtoFuncTan(ExecState*, JSObject*, JSValue, const ArgList&);
}
@@ -95,6 +96,7 @@ MathObject::MathObject(ExecState* exec, PassRefPtr<Structure> structure)
putDirectWithoutTransition(Identifier(exec, "PI"), jsNumber(exec, piDouble), DontDelete | DontEnum | ReadOnly);
putDirectWithoutTransition(Identifier(exec, "SQRT1_2"), jsNumber(exec, sqrt(0.5)), DontDelete | DontEnum | ReadOnly);
putDirectWithoutTransition(Identifier(exec, "SQRT2"), jsNumber(exec, sqrt(2.0)), DontDelete | DontEnum | ReadOnly);
+ WTF::initializeWeakRandomNumberGenerator();
}
// ECMA 15.8
@@ -113,62 +115,62 @@ bool MathObject::getOwnPropertySlot(ExecState* exec, const Identifier& propertyN
// ------------------------------ Functions --------------------------------
-JSValuePtr mathProtoFuncAbs(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncAbs(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, fabs(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, fabs(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncACos(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncACos(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, acos(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, acos(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncASin(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncASin(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, asin(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, asin(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncATan(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncATan(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, atan(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, atan(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncATan2(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncATan2(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, atan2(args.at(exec, 0)->toNumber(exec), args.at(exec, 1)->toNumber(exec)));
+ return jsNumber(exec, atan2(args.at(0).toNumber(exec), args.at(1).toNumber(exec)));
}
-JSValuePtr mathProtoFuncCeil(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncCeil(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, ceil(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, ceil(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncCos(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncCos(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, cos(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, cos(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncExp(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncExp(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, exp(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, exp(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncFloor(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncFloor(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, floor(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, floor(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncLog(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncLog(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, log(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, log(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncMax(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncMax(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
unsigned argsCount = args.size();
double result = -Inf;
for (unsigned k = 0; k < argsCount; ++k) {
- double val = args.at(exec, k)->toNumber(exec);
+ double val = args.at(k).toNumber(exec);
if (isnan(val)) {
result = NaN;
break;
@@ -179,12 +181,12 @@ JSValuePtr mathProtoFuncMax(ExecState* exec, JSObject*, JSValuePtr, const ArgLis
return jsNumber(exec, result);
}
-JSValuePtr mathProtoFuncMin(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncMin(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
unsigned argsCount = args.size();
double result = +Inf;
for (unsigned k = 0; k < argsCount; ++k) {
- double val = args.at(exec, k)->toNumber(exec);
+ double val = args.at(k).toNumber(exec);
if (isnan(val)) {
result = NaN;
break;
@@ -195,12 +197,12 @@ JSValuePtr mathProtoFuncMin(ExecState* exec, JSObject*, JSValuePtr, const ArgLis
return jsNumber(exec, result);
}
-JSValuePtr mathProtoFuncPow(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncPow(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
// ECMA 15.8.2.1.13
- double arg = args.at(exec, 0)->toNumber(exec);
- double arg2 = args.at(exec, 1)->toNumber(exec);
+ double arg = args.at(0).toNumber(exec);
+ double arg2 = args.at(1).toNumber(exec);
if (isnan(arg2))
return jsNaN(exec);
@@ -209,32 +211,32 @@ JSValuePtr mathProtoFuncPow(ExecState* exec, JSObject*, JSValuePtr, const ArgLis
return jsNumber(exec, pow(arg, arg2));
}
-JSValuePtr mathProtoFuncRandom(ExecState* exec, JSObject*, JSValuePtr, const ArgList&)
+JSValue JSC_HOST_CALL mathProtoFuncRandom(ExecState* exec, JSObject*, JSValue, const ArgList&)
{
- return jsNumber(exec, WTF::randomNumber());
+ return jsNumber(exec, WTF::weakRandomNumber());
}
-JSValuePtr mathProtoFuncRound(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncRound(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- double arg = args.at(exec, 0)->toNumber(exec);
+ double arg = args.at(0).toNumber(exec);
if (signbit(arg) && arg >= -0.5)
return jsNumber(exec, -0.0);
return jsNumber(exec, floor(arg + 0.5));
}
-JSValuePtr mathProtoFuncSin(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncSin(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, sin(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, sin(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncSqrt(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncSqrt(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, sqrt(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, sqrt(args.at(0).toNumber(exec)));
}
-JSValuePtr mathProtoFuncTan(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+JSValue JSC_HOST_CALL mathProtoFuncTan(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, tan(args.at(exec, 0)->toNumber(exec)));
+ return jsNumber(exec, tan(args.at(0).toNumber(exec)));
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/MathObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/MathObject.h
index d6163fd..3557d1e 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/MathObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/MathObject.h
@@ -34,7 +34,7 @@ namespace JSC {
virtual const ClassInfo* classInfo() const { return &info; }
static const ClassInfo info;
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType));
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorConstructor.cpp
index 3d043e9..0205fc5 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorConstructor.cpp
@@ -33,7 +33,7 @@ ASSERT_CLASS_FITS_IN_CELL(NativeErrorConstructor);
const ClassInfo NativeErrorConstructor::info = { "Function", &InternalFunction::info, 0, 0 };
NativeErrorConstructor::NativeErrorConstructor(ExecState* exec, PassRefPtr<Structure> structure, NativeErrorPrototype* nativeErrorPrototype)
- : InternalFunction(&exec->globalData(), structure, Identifier(exec, nativeErrorPrototype->getDirect(exec->propertyNames().name)->getString()))
+ : InternalFunction(&exec->globalData(), structure, Identifier(exec, nativeErrorPrototype->getDirect(exec->propertyNames().name).getString()))
, m_errorStructure(ErrorInstance::createStructure(nativeErrorPrototype))
{
putDirect(exec->propertyNames().length, jsNumber(exec, 1), DontDelete | ReadOnly | DontEnum); // ECMA 15.11.7.5
@@ -43,8 +43,8 @@ NativeErrorConstructor::NativeErrorConstructor(ExecState* exec, PassRefPtr<Struc
ErrorInstance* NativeErrorConstructor::construct(ExecState* exec, const ArgList& args)
{
ErrorInstance* object = new (exec) ErrorInstance(m_errorStructure);
- if (!args.at(exec, 0)->isUndefined())
- object->putDirect(exec->propertyNames().message, jsString(exec, args.at(exec, 0)->toString(exec)));
+ if (!args.at(0).isUndefined())
+ object->putDirect(exec->propertyNames().message, jsString(exec, args.at(0).toString(exec)));
return object;
}
@@ -58,8 +58,8 @@ ConstructType NativeErrorConstructor::getConstructData(ConstructData& constructD
constructData.native.function = constructWithNativeErrorConstructor;
return ConstructTypeHost;
}
-
-static JSValuePtr callNativeErrorConstructor(ExecState* exec, JSObject* constructor, JSValuePtr, const ArgList& args)
+
+static JSValue JSC_HOST_CALL callNativeErrorConstructor(ExecState* exec, JSObject* constructor, JSValue, const ArgList& args)
{
return static_cast<NativeErrorConstructor*>(constructor)->construct(exec, args);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/NativeFunctionWrapper.h b/src/3rdparty/webkit/JavaScriptCore/runtime/NativeFunctionWrapper.h
new file mode 100644
index 0000000..d4eeb3b
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/NativeFunctionWrapper.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef NativeFunctionWrapper_h
+#define NativeFunctionWrapper_h
+
+namespace JSC {
+#if ENABLE(JIT) && ENABLE(JIT_OPTIMIZE_NATIVE_CALL)
+ class JSFunction;
+ typedef JSFunction NativeFunctionWrapper;
+#else
+ class PrototypeFunction;
+ typedef PrototypeFunction NativeFunctionWrapper;
+#endif
+}
+
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/NumberConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/NumberConstructor.cpp
index 0da4d69..2840bf0 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/NumberConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/NumberConstructor.cpp
@@ -29,11 +29,11 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(NumberConstructor);
-static JSValuePtr numberConstructorNaNValue(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr numberConstructorNegInfinity(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr numberConstructorPosInfinity(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr numberConstructorMaxValue(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr numberConstructorMinValue(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue numberConstructorNaNValue(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue numberConstructorNegInfinity(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue numberConstructorPosInfinity(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue numberConstructorMaxValue(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue numberConstructorMinValue(ExecState*, const Identifier&, const PropertySlot&);
} // namespace JSC
@@ -68,36 +68,36 @@ bool NumberConstructor::getOwnPropertySlot(ExecState* exec, const Identifier& pr
return getStaticValueSlot<NumberConstructor, InternalFunction>(exec, ExecState::numberTable(exec), this, propertyName, slot);
}
-JSValuePtr numberConstructorNaNValue(ExecState* exec, const Identifier&, const PropertySlot&)
+static JSValue numberConstructorNaNValue(ExecState* exec, const Identifier&, const PropertySlot&)
{
return jsNaN(exec);
}
-JSValuePtr numberConstructorNegInfinity(ExecState* exec, const Identifier&, const PropertySlot&)
+static JSValue numberConstructorNegInfinity(ExecState* exec, const Identifier&, const PropertySlot&)
{
- return jsNumberCell(exec, -Inf);
+ return jsNumber(exec, -Inf);
}
-JSValuePtr numberConstructorPosInfinity(ExecState* exec, const Identifier&, const PropertySlot&)
+static JSValue numberConstructorPosInfinity(ExecState* exec, const Identifier&, const PropertySlot&)
{
- return jsNumberCell(exec, Inf);
+ return jsNumber(exec, Inf);
}
-JSValuePtr numberConstructorMaxValue(ExecState* exec, const Identifier&, const PropertySlot&)
+static JSValue numberConstructorMaxValue(ExecState* exec, const Identifier&, const PropertySlot&)
{
- return jsNumberCell(exec, 1.7976931348623157E+308);
+ return jsNumber(exec, 1.7976931348623157E+308);
}
-JSValuePtr numberConstructorMinValue(ExecState* exec, const Identifier&, const PropertySlot&)
+static JSValue numberConstructorMinValue(ExecState* exec, const Identifier&, const PropertySlot&)
{
- return jsNumberCell(exec, 5E-324);
+ return jsNumber(exec, 5E-324);
}
// ECMA 15.7.1
static JSObject* constructWithNumberConstructor(ExecState* exec, JSObject*, const ArgList& args)
{
NumberObject* object = new (exec) NumberObject(exec->lexicalGlobalObject()->numberObjectStructure());
- double n = args.isEmpty() ? 0 : args.at(exec, 0)->toNumber(exec);
+ double n = args.isEmpty() ? 0 : args.at(0).toNumber(exec);
object->setInternalValue(jsNumber(exec, n));
return object;
}
@@ -109,9 +109,9 @@ ConstructType NumberConstructor::getConstructData(ConstructData& constructData)
}
// ECMA 15.7.2
-static JSValuePtr callNumberConstructor(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL callNumberConstructor(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
- return jsNumber(exec, args.isEmpty() ? 0 : args.at(exec, 0)->toNumber(exec));
+ return jsNumber(exec, args.isEmpty() ? 0 : args.at(0).toNumber(exec));
}
CallType NumberConstructor::getCallData(CallData& callData)
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/NumberConstructor.h b/src/3rdparty/webkit/JavaScriptCore/runtime/NumberConstructor.h
index 070be5f..b1224ec 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/NumberConstructor.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/NumberConstructor.h
@@ -32,11 +32,11 @@ namespace JSC {
NumberConstructor(ExecState*, PassRefPtr<Structure>, NumberPrototype*);
virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
- JSValuePtr getValueProperty(ExecState*, int token) const;
+ JSValue getValueProperty(ExecState*, int token) const;
static const ClassInfo info;
- static PassRefPtr<Structure> createStructure(JSValuePtr proto)
+ static PassRefPtr<Structure> createStructure(JSValue proto)
{
return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance));
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/NumberObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/NumberObject.cpp
index 6613390..0e8df17 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/NumberObject.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/NumberObject.cpp
@@ -36,23 +36,16 @@ NumberObject::NumberObject(PassRefPtr<Structure> structure)
{
}
-JSValuePtr NumberObject::getJSNumber()
+JSValue NumberObject::getJSNumber()
{
return internalValue();
}
-NumberObject* constructNumber(ExecState* exec, JSNumberCell* number)
+NumberObject* constructNumber(ExecState* exec, JSValue number)
{
NumberObject* object = new (exec) NumberObject(exec->lexicalGlobalObject()->numberObjectStructure());
object->setInternalValue(number);
return object;
}
-NumberObject* constructNumberFromImmediateNumber(ExecState* exec, JSValuePtr value)
-{
- NumberObject* object = new (exec) NumberObject(exec->lexicalGlobalObject()->numberObjectStructure());
- object->setInternalValue(value);
- return object;
-}
-
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/NumberObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/NumberObject.h
index 8cc2715..d354b9b 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/NumberObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/NumberObject.h
@@ -25,8 +25,6 @@
namespace JSC {
- class JSNumberCell;
-
class NumberObject : public JSWrapperObject {
public:
explicit NumberObject(PassRefPtr<Structure>);
@@ -36,11 +34,10 @@ namespace JSC {
private:
virtual const ClassInfo* classInfo() const { return &info; }
- virtual JSValuePtr getJSNumber();
+ virtual JSValue getJSNumber();
};
- NumberObject* constructNumber(ExecState*, JSNumberCell*);
- NumberObject* constructNumberFromImmediateNumber(ExecState*, JSValuePtr);
+ NumberObject* constructNumber(ExecState*, JSValue);
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/NumberPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/NumberPrototype.cpp
index 8b45f54..947324c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/NumberPrototype.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/NumberPrototype.cpp
@@ -23,6 +23,7 @@
#include "NumberPrototype.h"
#include "Error.h"
+#include "JSFunction.h"
#include "JSString.h"
#include "PrototypeFunction.h"
#include "dtoa.h"
@@ -35,12 +36,12 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(NumberPrototype);
-static JSValuePtr numberProtoFuncToString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr numberProtoFuncToLocaleString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr numberProtoFuncValueOf(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr numberProtoFuncToFixed(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr numberProtoFuncToExponential(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr numberProtoFuncToPrecision(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL numberProtoFuncToString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL numberProtoFuncToLocaleString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL numberProtoFuncValueOf(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL numberProtoFuncToFixed(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL numberProtoFuncToExponential(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL numberProtoFuncToPrecision(ExecState*, JSObject*, JSValue, const ArgList&);
// ECMA 15.7.4
@@ -51,12 +52,12 @@ NumberPrototype::NumberPrototype(ExecState* exec, PassRefPtr<Structure> structur
// The constructor will be added later, after NumberConstructor has been constructed
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().toString, numberProtoFuncToString), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().toLocaleString, numberProtoFuncToLocaleString), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().valueOf, numberProtoFuncValueOf), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().toFixed, numberProtoFuncToFixed), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().toExponential, numberProtoFuncToExponential), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().toPrecision, numberProtoFuncToPrecision), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().toString, numberProtoFuncToString), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().toLocaleString, numberProtoFuncToLocaleString), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().valueOf, numberProtoFuncValueOf), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().toFixed, numberProtoFuncToFixed), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().toExponential, numberProtoFuncToExponential), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().toPrecision, numberProtoFuncToPrecision), DontEnum);
}
// ------------------------------ Functions ---------------------------
@@ -67,7 +68,8 @@ static UString integerPartNoExp(double d)
{
int decimalPoint;
int sign;
- char* result = WTF::dtoa(d, 0, &decimalPoint, &sign, NULL);
+ char result[80];
+ WTF::dtoa(result, d, 0, &decimalPoint, &sign, NULL);
bool resultIsInfOrNan = (decimalPoint == 9999);
size_t length = strlen(result);
@@ -80,17 +82,16 @@ static UString integerPartNoExp(double d)
Vector<char, 1024> buf(decimalPoint + 1);
if (static_cast<int>(length) <= decimalPoint) {
- strcpy(buf.data(), result);
+ ASSERT(decimalPoint < 1024);
+ memcpy(buf.data(), result, length);
memset(buf.data() + length, '0', decimalPoint - length);
} else
strncpy(buf.data(), result, decimalPoint);
-
buf[decimalPoint] = '\0';
+
str.append(buf.data());
}
- WTF::freedtoa(result);
-
return str;
}
@@ -133,15 +134,15 @@ static double intPow10(int e)
return static_cast<double>(result);
}
-JSValuePtr numberProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL numberProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSValuePtr v = thisValue->getJSNumber();
+ JSValue v = thisValue.getJSNumber();
if (!v)
return throwError(exec, TypeError);
- double radixAsDouble = args.at(exec, 0)->toInteger(exec); // nan -> 0
- if (radixAsDouble == 10 || args.at(exec, 0)->isUndefined())
- return jsString(exec, v->toString(exec));
+ double radixAsDouble = args.at(0).toInteger(exec); // nan -> 0
+ if (radixAsDouble == 10 || args.at(0).isUndefined())
+ return jsString(exec, v.toString(exec));
if (radixAsDouble < 2 || radixAsDouble > 36)
return throwError(exec, RangeError, "toString() radix argument must be between 2 and 36");
@@ -153,7 +154,7 @@ JSValuePtr numberProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisVa
// unless someone finds a precise rule.
char s[2048 + 3];
const char* lastCharInString = s + sizeof(s) - 1;
- double x = v->uncheckedGetNumber();
+ double x = v.uncheckedGetNumber();
if (isnan(x) || isinf(x))
return jsString(exec, UString::from(x));
@@ -197,39 +198,39 @@ JSValuePtr numberProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisVa
return jsString(exec, startOfResultString);
}
-JSValuePtr numberProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL numberProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
// FIXME: Not implemented yet.
- JSValuePtr v = thisValue->getJSNumber();
+ JSValue v = thisValue.getJSNumber();
if (!v)
return throwError(exec, TypeError);
- return jsString(exec, v->toString(exec));
+ return jsString(exec, v.toString(exec));
}
-JSValuePtr numberProtoFuncValueOf(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL numberProtoFuncValueOf(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- JSValuePtr v = thisValue->getJSNumber();
+ JSValue v = thisValue.getJSNumber();
if (!v)
return throwError(exec, TypeError);
return v;
}
-JSValuePtr numberProtoFuncToFixed(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL numberProtoFuncToFixed(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSValuePtr v = thisValue->getJSNumber();
+ JSValue v = thisValue.getJSNumber();
if (!v)
return throwError(exec, TypeError);
- JSValuePtr fractionDigits = args.at(exec, 0);
- double df = fractionDigits->toInteger(exec);
+ JSValue fractionDigits = args.at(0);
+ double df = fractionDigits.toInteger(exec);
if (!(df >= 0 && df <= 20))
return throwError(exec, RangeError, "toFixed() digits argument must be between 0 and 20");
int f = static_cast<int>(df);
- double x = v->uncheckedGetNumber();
+ double x = v.uncheckedGetNumber();
if (isnan(x))
return jsNontrivialString(exec, "NaN");
@@ -277,7 +278,8 @@ static void fractionalPartToString(char* buf, int& i, const char* result, int re
strncpy(buf + i, result + 1, fractionalDigits);
i += fractionalDigits;
} else {
- strcpy(buf + i, result + 1);
+ ASSERT(i + resultLength - 1 < 80);
+ memcpy(buf + i, result + 1, resultLength - 1);
i += static_cast<int>(resultLength) - 1;
}
}
@@ -302,23 +304,23 @@ static void exponentialPartToString(char* buf, int& i, int decimalPoint)
buf[i++] = static_cast<char>('0' + exponential % 10);
}
-JSValuePtr numberProtoFuncToExponential(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL numberProtoFuncToExponential(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSValuePtr v = thisValue->getJSNumber();
+ JSValue v = thisValue.getJSNumber();
if (!v)
return throwError(exec, TypeError);
- double x = v->uncheckedGetNumber();
+ double x = v.uncheckedGetNumber();
if (isnan(x) || isinf(x))
return jsString(exec, UString::from(x));
- JSValuePtr fractionalDigitsValue = args.at(exec, 0);
- double df = fractionalDigitsValue->toInteger(exec);
+ JSValue fractionalDigitsValue = args.at(0);
+ double df = fractionalDigitsValue.toInteger(exec);
if (!(df >= 0 && df <= 20))
return throwError(exec, RangeError, "toExponential() argument must between 0 and 20");
int fractionalDigits = static_cast<int>(df);
- bool includeAllDigits = fractionalDigitsValue->isUndefined();
+ bool includeAllDigits = fractionalDigitsValue.isUndefined();
int decimalAdjust = 0;
if (x && !includeAllDigits) {
@@ -344,7 +346,8 @@ JSValuePtr numberProtoFuncToExponential(ExecState* exec, JSObject*, JSValuePtr t
int decimalPoint;
int sign;
- char* result = WTF::dtoa(x, 0, &decimalPoint, &sign, NULL);
+ char result[80];
+ WTF::dtoa(result, x, 0, &decimalPoint, &sign, NULL);
size_t resultLength = strlen(result);
decimalPoint += decimalAdjust;
@@ -353,9 +356,12 @@ JSValuePtr numberProtoFuncToExponential(ExecState* exec, JSObject*, JSValuePtr t
if (sign)
buf[i++] = '-';
- if (decimalPoint == 999) // ? 9999 is the magical "result is Inf or NaN" value. what's 999??
- strcpy(buf + i, result);
- else {
+ // ? 9999 is the magical "result is Inf or NaN" value. what's 999??
+ if (decimalPoint == 999) {
+ ASSERT(i + resultLength < 80);
+ memcpy(buf + i, result, resultLength);
+ buf[i + resultLength] = '\0';
+ } else {
buf[i++] = result[0];
if (includeAllDigits)
@@ -367,21 +373,19 @@ JSValuePtr numberProtoFuncToExponential(ExecState* exec, JSObject*, JSValuePtr t
}
ASSERT(i <= 80);
- WTF::freedtoa(result);
-
return jsString(exec, buf);
}
-JSValuePtr numberProtoFuncToPrecision(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL numberProtoFuncToPrecision(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSValuePtr v = thisValue->getJSNumber();
+ JSValue v = thisValue.getJSNumber();
if (!v)
return throwError(exec, TypeError);
- double doublePrecision = args.at(exec, 0)->toIntegerPreserveNaN(exec);
- double x = v->uncheckedGetNumber();
- if (args.at(exec, 0)->isUndefined() || isnan(x) || isinf(x))
- return jsString(exec, v->toString(exec));
+ double doublePrecision = args.at(0).toIntegerPreserveNaN(exec);
+ double x = v.uncheckedGetNumber();
+ if (args.at(0).isUndefined() || isnan(x) || isinf(x))
+ return jsString(exec, v.toString(exec));
UString s;
if (x < 0) {
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectConstructor.cpp
index ff97ca4..cf1790f 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectConstructor.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "ObjectConstructor.h"
+#include "JSFunction.h"
#include "JSGlobalObject.h"
#include "ObjectPrototype.h"
@@ -41,10 +42,10 @@ ObjectConstructor::ObjectConstructor(ExecState* exec, PassRefPtr<Structure> stru
// ECMA 15.2.2
static ALWAYS_INLINE JSObject* constructObject(ExecState* exec, const ArgList& args)
{
- JSValuePtr arg = args.at(exec, 0);
- if (arg->isUndefinedOrNull())
+ JSValue arg = args.at(0);
+ if (arg.isUndefinedOrNull())
return new (exec) JSObject(exec->lexicalGlobalObject()->emptyObjectStructure());
- return arg->toObject(exec);
+ return arg.toObject(exec);
}
static JSObject* constructWithObjectConstructor(ExecState* exec, JSObject*, const ArgList& args)
@@ -58,7 +59,7 @@ ConstructType ObjectConstructor::getConstructData(ConstructData& constructData)
return ConstructTypeHost;
}
-static JSValuePtr callObjectConstructor(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL callObjectConstructor(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
return constructObject(exec, args);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectPrototype.cpp
index 696570b..98e4713 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectPrototype.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectPrototype.cpp
@@ -22,6 +22,7 @@
#include "ObjectPrototype.h"
#include "Error.h"
+#include "JSFunction.h"
#include "JSString.h"
#include "PrototypeFunction.h"
@@ -29,58 +30,58 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(ObjectPrototype);
-static JSValuePtr objectProtoFuncValueOf(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr objectProtoFuncHasOwnProperty(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr objectProtoFuncIsPrototypeOf(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr objectProtoFuncDefineGetter(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr objectProtoFuncDefineSetter(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr objectProtoFuncLookupGetter(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr objectProtoFuncLookupSetter(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr objectProtoFuncPropertyIsEnumerable(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr objectProtoFuncToLocaleString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL objectProtoFuncValueOf(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL objectProtoFuncHasOwnProperty(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL objectProtoFuncIsPrototypeOf(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL objectProtoFuncDefineGetter(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL objectProtoFuncDefineSetter(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL objectProtoFuncLookupGetter(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL objectProtoFuncLookupSetter(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL objectProtoFuncPropertyIsEnumerable(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL objectProtoFuncToLocaleString(ExecState*, JSObject*, JSValue, const ArgList&);
ObjectPrototype::ObjectPrototype(ExecState* exec, PassRefPtr<Structure> stucture, Structure* prototypeFunctionStructure)
: JSObject(stucture)
{
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, objectProtoFuncToString), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().toLocaleString, objectProtoFuncToLocaleString), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().valueOf, objectProtoFuncValueOf), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().hasOwnProperty, objectProtoFuncHasOwnProperty), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().propertyIsEnumerable, objectProtoFuncPropertyIsEnumerable), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().isPrototypeOf, objectProtoFuncIsPrototypeOf), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, objectProtoFuncToString), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().toLocaleString, objectProtoFuncToLocaleString), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().valueOf, objectProtoFuncValueOf), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().hasOwnProperty, objectProtoFuncHasOwnProperty), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().propertyIsEnumerable, objectProtoFuncPropertyIsEnumerable), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().isPrototypeOf, objectProtoFuncIsPrototypeOf), DontEnum);
// Mozilla extensions
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 2, exec->propertyNames().__defineGetter__, objectProtoFuncDefineGetter), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 2, exec->propertyNames().__defineSetter__, objectProtoFuncDefineSetter), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().__lookupGetter__, objectProtoFuncLookupGetter), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().__lookupSetter__, objectProtoFuncLookupSetter), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 2, exec->propertyNames().__defineGetter__, objectProtoFuncDefineGetter), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 2, exec->propertyNames().__defineSetter__, objectProtoFuncDefineSetter), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().__lookupGetter__, objectProtoFuncLookupGetter), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().__lookupSetter__, objectProtoFuncLookupSetter), DontEnum);
}
// ------------------------------ Functions --------------------------------
// ECMA 15.2.4.2, 15.2.4.4, 15.2.4.5, 15.2.4.7
-JSValuePtr objectProtoFuncValueOf(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL objectProtoFuncValueOf(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- return thisValue->toThisObject(exec);
+ return thisValue.toThisObject(exec);
}
-JSValuePtr objectProtoFuncHasOwnProperty(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL objectProtoFuncHasOwnProperty(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- return jsBoolean(thisValue->toThisObject(exec)->hasOwnProperty(exec, Identifier(exec, args.at(exec, 0)->toString(exec))));
+ return jsBoolean(thisValue.toThisObject(exec)->hasOwnProperty(exec, Identifier(exec, args.at(0).toString(exec))));
}
-JSValuePtr objectProtoFuncIsPrototypeOf(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL objectProtoFuncIsPrototypeOf(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSObject* thisObj = thisValue->toThisObject(exec);
+ JSObject* thisObj = thisValue.toThisObject(exec);
- if (!args.at(exec, 0)->isObject())
+ if (!args.at(0).isObject())
return jsBoolean(false);
- JSValuePtr v = asObject(args.at(exec, 0))->prototype();
+ JSValue v = asObject(args.at(0))->prototype();
while (true) {
- if (!v->isObject())
+ if (!v.isObject())
return jsBoolean(false);
if (v == thisObj)
return jsBoolean(true);
@@ -88,47 +89,47 @@ JSValuePtr objectProtoFuncIsPrototypeOf(ExecState* exec, JSObject*, JSValuePtr t
}
}
-JSValuePtr objectProtoFuncDefineGetter(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL objectProtoFuncDefineGetter(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
CallData callData;
- if (args.at(exec, 1)->getCallData(callData) == CallTypeNone)
+ if (args.at(1).getCallData(callData) == CallTypeNone)
return throwError(exec, SyntaxError, "invalid getter usage");
- thisValue->toThisObject(exec)->defineGetter(exec, Identifier(exec, args.at(exec, 0)->toString(exec)), asObject(args.at(exec, 1)));
+ thisValue.toThisObject(exec)->defineGetter(exec, Identifier(exec, args.at(0).toString(exec)), asObject(args.at(1)));
return jsUndefined();
}
-JSValuePtr objectProtoFuncDefineSetter(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL objectProtoFuncDefineSetter(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
CallData callData;
- if (args.at(exec, 1)->getCallData(callData) == CallTypeNone)
+ if (args.at(1).getCallData(callData) == CallTypeNone)
return throwError(exec, SyntaxError, "invalid setter usage");
- thisValue->toThisObject(exec)->defineSetter(exec, Identifier(exec, args.at(exec, 0)->toString(exec)), asObject(args.at(exec, 1)));
+ thisValue.toThisObject(exec)->defineSetter(exec, Identifier(exec, args.at(0).toString(exec)), asObject(args.at(1)));
return jsUndefined();
}
-JSValuePtr objectProtoFuncLookupGetter(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL objectProtoFuncLookupGetter(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- return thisValue->toThisObject(exec)->lookupGetter(exec, Identifier(exec, args.at(exec, 0)->toString(exec)));
+ return thisValue.toThisObject(exec)->lookupGetter(exec, Identifier(exec, args.at(0).toString(exec)));
}
-JSValuePtr objectProtoFuncLookupSetter(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL objectProtoFuncLookupSetter(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- return thisValue->toThisObject(exec)->lookupSetter(exec, Identifier(exec, args.at(exec, 0)->toString(exec)));
+ return thisValue.toThisObject(exec)->lookupSetter(exec, Identifier(exec, args.at(0).toString(exec)));
}
-JSValuePtr objectProtoFuncPropertyIsEnumerable(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL objectProtoFuncPropertyIsEnumerable(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- return jsBoolean(thisValue->toThisObject(exec)->propertyIsEnumerable(exec, Identifier(exec, args.at(exec, 0)->toString(exec))));
+ return jsBoolean(thisValue.toThisObject(exec)->propertyIsEnumerable(exec, Identifier(exec, args.at(0).toString(exec))));
}
-JSValuePtr objectProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL objectProtoFuncToLocaleString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- return thisValue->toThisJSString(exec);
+ return thisValue.toThisJSString(exec);
}
-JSValuePtr objectProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL objectProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- return jsNontrivialString(exec, "[object " + thisValue->toThisObject(exec)->className() + "]");
+ return jsNontrivialString(exec, "[object " + thisValue.toThisObject(exec)->className() + "]");
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectPrototype.h b/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectPrototype.h
index 1c432fe..7790ae0 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectPrototype.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ObjectPrototype.h
@@ -30,7 +30,7 @@ namespace JSC {
ObjectPrototype(ExecState*, PassRefPtr<Structure>, Structure* prototypeFunctionStructure);
};
- JSValuePtr objectProtoFuncToString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+ JSValue JSC_HOST_CALL objectProtoFuncToString(ExecState*, JSObject*, JSValue, const ArgList&);
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Operations.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Operations.cpp
index 6f84303..093bbec 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Operations.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Operations.cpp
@@ -35,41 +35,87 @@
namespace JSC {
-// ECMA 11.9.3
-bool equal(ExecState* exec, JSValuePtr v1, JSValuePtr v2)
+bool JSValue::equalSlowCase(ExecState* exec, JSValue v1, JSValue v2)
{
- if (JSImmediate::areBothImmediateNumbers(v1, v2))
- return v1 == v2;
-
return equalSlowCaseInline(exec, v1, v2);
}
-bool equalSlowCase(ExecState* exec, JSValuePtr v1, JSValuePtr v2)
+bool JSValue::strictEqualSlowCase(JSValue v1, JSValue v2)
{
- return equalSlowCaseInline(exec, v1, v2);
+ return strictEqualSlowCaseInline(v1, v2);
}
-bool strictEqual(JSValuePtr v1, JSValuePtr v2)
+NEVER_INLINE JSValue throwOutOfMemoryError(ExecState* exec)
{
- if (JSImmediate::areBothImmediate(v1, v2))
- return v1 == v2;
+ JSObject* error = Error::create(exec, GeneralError, "Out of memory");
+ exec->setException(error);
+ return error;
+}
- if (JSImmediate::isEitherImmediate(v1, v2) & (v1 != JSImmediate::from(0)) & (v2 != JSImmediate::from(0)))
- return false;
+NEVER_INLINE JSValue jsAddSlowCase(CallFrame* callFrame, JSValue v1, JSValue v2)
+{
+ // exception for the Date exception in defaultValue()
+ JSValue p1 = v1.toPrimitive(callFrame);
+ JSValue p2 = v2.toPrimitive(callFrame);
- return strictEqualSlowCaseInline(v1, v2);
+ if (p1.isString() || p2.isString()) {
+ RefPtr<UString::Rep> value = concatenate(p1.toString(callFrame).rep(), p2.toString(callFrame).rep());
+ if (!value)
+ return throwOutOfMemoryError(callFrame);
+ return jsString(callFrame, value.release());
+ }
+
+ return jsNumber(callFrame, p1.toNumber(callFrame) + p2.toNumber(callFrame));
}
-bool strictEqualSlowCase(JSValuePtr v1, JSValuePtr v2)
+JSValue jsTypeStringForValue(CallFrame* callFrame, JSValue v)
{
- return strictEqualSlowCaseInline(v1, v2);
+ if (v.isUndefined())
+ return jsNontrivialString(callFrame, "undefined");
+ if (v.isBoolean())
+ return jsNontrivialString(callFrame, "boolean");
+ if (v.isNumber())
+ return jsNontrivialString(callFrame, "number");
+ if (v.isString())
+ return jsNontrivialString(callFrame, "string");
+ if (v.isObject()) {
+ // Return "undefined" for objects that should be treated
+ // as null when doing comparisons.
+ if (asObject(v)->structure()->typeInfo().masqueradesAsUndefined())
+ return jsNontrivialString(callFrame, "undefined");
+ CallData callData;
+ if (asObject(v)->getCallData(callData) != CallTypeNone)
+ return jsNontrivialString(callFrame, "function");
+ }
+ return jsNontrivialString(callFrame, "object");
}
-NEVER_INLINE JSValuePtr throwOutOfMemoryError(ExecState* exec)
+bool jsIsObjectType(JSValue v)
{
- JSObject* error = Error::create(exec, GeneralError, "Out of memory");
- exec->setException(error);
- return error;
+ if (!v.isCell())
+ return v.isNull();
+
+ JSType type = asCell(v)->structure()->typeInfo().type();
+ if (type == NumberType || type == StringType)
+ return false;
+ if (type == ObjectType) {
+ if (asObject(v)->structure()->typeInfo().masqueradesAsUndefined())
+ return false;
+ CallData callData;
+ if (asObject(v)->getCallData(callData) != CallTypeNone)
+ return false;
+ }
+ return true;
+}
+
+bool jsIsFunctionType(JSValue v)
+{
+ if (v.isObject()) {
+ CallData callData;
+ if (asObject(v)->getCallData(callData) != CallTypeNone)
+ return true;
+ }
+ return false;
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Operations.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Operations.h
index f627c52..acfc6c2 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Operations.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Operations.h
@@ -22,116 +22,313 @@
#ifndef Operations_h
#define Operations_h
+#include "Interpreter.h"
#include "JSImmediate.h"
#include "JSNumberCell.h"
#include "JSString.h"
namespace JSC {
- // ECMA 11.9.3
- bool equal(ExecState*, JSValuePtr, JSValuePtr);
- bool equalSlowCase(ExecState*, JSValuePtr, JSValuePtr);
-
- ALWAYS_INLINE bool equalSlowCaseInline(ExecState* exec, JSValuePtr v1, JSValuePtr v2)
- {
- ASSERT(!JSImmediate::areBothImmediateNumbers(v1, v2));
-
- do {
- if (v1->isNumber() && v2->isNumber())
- return v1->uncheckedGetNumber() == v2->uncheckedGetNumber();
-
- bool s1 = v1->isString();
- bool s2 = v2->isString();
- if (s1 && s2)
- return asString(v1)->value() == asString(v2)->value();
-
- if (v1->isUndefinedOrNull()) {
- if (v2->isUndefinedOrNull())
- return true;
- if (JSImmediate::isImmediate(v2))
- return false;
- return v2->asCell()->structure()->typeInfo().masqueradesAsUndefined();
- }
-
- if (v2->isUndefinedOrNull()) {
- if (JSImmediate::isImmediate(v1))
- return false;
- return v1->asCell()->structure()->typeInfo().masqueradesAsUndefined();
- }
-
- if (v1->isObject()) {
- if (v2->isObject())
- return v1 == v2;
- JSValuePtr p1 = v1->toPrimitive(exec);
- if (exec->hadException())
- return false;
- v1 = p1;
- if (JSImmediate::areBothImmediateNumbers(v1, v2))
- return v1 == v2;
- continue;
- }
-
- if (v2->isObject()) {
- JSValuePtr p2 = v2->toPrimitive(exec);
- if (exec->hadException())
- return false;
- v2 = p2;
- if (JSImmediate::areBothImmediateNumbers(v1, v2))
- return v1 == v2;
- continue;
- }
-
- if (s1 || s2) {
- double d1 = v1->toNumber(exec);
- double d2 = v2->toNumber(exec);
- return d1 == d2;
- }
-
- if (v1->isBoolean()) {
- if (v2->isNumber())
- return static_cast<double>(v1->getBoolean()) == v2->uncheckedGetNumber();
- } else if (v2->isBoolean()) {
- if (v1->isNumber())
- return v1->uncheckedGetNumber() == static_cast<double>(v2->getBoolean());
- }
-
- return v1 == v2;
- } while (true);
- }
-
-
- bool strictEqual(JSValuePtr, JSValuePtr);
- bool strictEqualSlowCase(JSValuePtr, JSValuePtr);
-
- inline bool strictEqualSlowCaseInline(JSValuePtr v1, JSValuePtr v2)
- {
- ASSERT(!JSImmediate::areBothImmediate(v1, v2));
-
- if (JSImmediate::isEitherImmediate(v1, v2)) {
- ASSERT(v1 == JSImmediate::zeroImmediate() || v2 == JSImmediate::zeroImmediate());
- ASSERT(v1 != v2);
-
- // The reason we can't just return false here is that 0 === -0,
- // and while the former is an immediate number, the latter is not.
- if (v1 == JSImmediate::zeroImmediate())
- return asCell(v2)->isNumber() && asNumberCell(v2)->value() == 0;
- return asCell(v1)->isNumber() && asNumberCell(v1)->value() == 0;
- }
-
- if (asCell(v1)->isNumber()) {
- return asCell(v2)->isNumber()
- && asNumberCell(v1)->value() == asNumberCell(v2)->value();
- }
-
- if (asCell(v1)->isString()) {
- return asCell(v2)->isString()
- && asString(v1)->value() == asString(v2)->value();
- }
-
- return v1 == v2;
- }
-
- JSValuePtr throwOutOfMemoryError(ExecState*);
-}
-
-#endif
+ NEVER_INLINE JSValue throwOutOfMemoryError(ExecState*);
+ NEVER_INLINE JSValue jsAddSlowCase(CallFrame*, JSValue, JSValue);
+ JSValue jsTypeStringForValue(CallFrame*, JSValue);
+ bool jsIsObjectType(JSValue);
+ bool jsIsFunctionType(JSValue);
+
+ // ECMA 11.9.3
+ inline bool JSValue::equal(ExecState* exec, JSValue v1, JSValue v2)
+ {
+ if (JSImmediate::areBothImmediateIntegerNumbers(v1, v2))
+ return v1 == v2;
+
+ return equalSlowCase(exec, v1, v2);
+ }
+
+ ALWAYS_INLINE bool JSValue::equalSlowCaseInline(ExecState* exec, JSValue v1, JSValue v2)
+ {
+ ASSERT(!JSImmediate::areBothImmediateIntegerNumbers(v1, v2));
+
+ do {
+ if (v1.isNumber() && v2.isNumber())
+ return v1.uncheckedGetNumber() == v2.uncheckedGetNumber();
+
+ bool s1 = v1.isString();
+ bool s2 = v2.isString();
+ if (s1 && s2)
+ return asString(v1)->value() == asString(v2)->value();
+
+ if (v1.isUndefinedOrNull()) {
+ if (v2.isUndefinedOrNull())
+ return true;
+ if (JSImmediate::isImmediate(v2))
+ return false;
+ return v2.asCell()->structure()->typeInfo().masqueradesAsUndefined();
+ }
+
+ if (v2.isUndefinedOrNull()) {
+ if (JSImmediate::isImmediate(v1))
+ return false;
+ return v1.asCell()->structure()->typeInfo().masqueradesAsUndefined();
+ }
+
+ if (v1.isObject()) {
+ if (v2.isObject())
+ return v1 == v2;
+ JSValue p1 = v1.toPrimitive(exec);
+ if (exec->hadException())
+ return false;
+ v1 = p1;
+ if (JSImmediate::areBothImmediateIntegerNumbers(v1, v2))
+ return v1 == v2;
+ continue;
+ }
+
+ if (v2.isObject()) {
+ JSValue p2 = v2.toPrimitive(exec);
+ if (exec->hadException())
+ return false;
+ v2 = p2;
+ if (JSImmediate::areBothImmediateIntegerNumbers(v1, v2))
+ return v1 == v2;
+ continue;
+ }
+
+ if (s1 || s2) {
+ double d1 = v1.toNumber(exec);
+ double d2 = v2.toNumber(exec);
+ return d1 == d2;
+ }
+
+ if (v1.isBoolean()) {
+ if (v2.isNumber())
+ return static_cast<double>(v1.getBoolean()) == v2.uncheckedGetNumber();
+ } else if (v2.isBoolean()) {
+ if (v1.isNumber())
+ return v1.uncheckedGetNumber() == static_cast<double>(v2.getBoolean());
+ }
+
+ return v1 == v2;
+ } while (true);
+ }
+
+ // ECMA 11.9.3
+ ALWAYS_INLINE bool JSValue::strictEqualSlowCaseInline(JSValue v1, JSValue v2)
+ {
+ ASSERT(!JSImmediate::isEitherImmediate(v1, v2));
+
+ if (v1.asCell()->isString() && v2.asCell()->isString())
+ return asString(v1)->value() == asString(v2)->value();
+
+ return v1 == v2;
+ }
+
+ inline bool JSValue::strictEqual(JSValue v1, JSValue v2)
+ {
+ if (JSImmediate::areBothImmediateIntegerNumbers(v1, v2))
+ return v1 == v2;
+
+ if (v1.isNumber() && v2.isNumber())
+ return v1.uncheckedGetNumber() == v2.uncheckedGetNumber();
+
+ if (JSImmediate::isEitherImmediate(v1, v2))
+ return v1 == v2;
+
+ return strictEqualSlowCaseInline(v1, v2);
+ }
+
+ inline bool jsLess(CallFrame* callFrame, JSValue v1, JSValue v2)
+ {
+ if (JSValue::areBothInt32Fast(v1, v2))
+ return v1.getInt32Fast() < v2.getInt32Fast();
+
+ double n1;
+ double n2;
+ if (v1.getNumber(n1) && v2.getNumber(n2))
+ return n1 < n2;
+
+ JSGlobalData* globalData = &callFrame->globalData();
+ if (isJSString(globalData, v1) && isJSString(globalData, v2))
+ return asString(v1)->value() < asString(v2)->value();
+
+ JSValue p1;
+ JSValue p2;
+ bool wasNotString1 = v1.getPrimitiveNumber(callFrame, n1, p1);
+ bool wasNotString2 = v2.getPrimitiveNumber(callFrame, n2, p2);
+
+ if (wasNotString1 | wasNotString2)
+ return n1 < n2;
+
+ return asString(p1)->value() < asString(p2)->value();
+ }
+
+ inline bool jsLessEq(CallFrame* callFrame, JSValue v1, JSValue v2)
+ {
+ if (JSValue::areBothInt32Fast(v1, v2))
+ return v1.getInt32Fast() <= v2.getInt32Fast();
+
+ double n1;
+ double n2;
+ if (v1.getNumber(n1) && v2.getNumber(n2))
+ return n1 <= n2;
+
+ JSGlobalData* globalData = &callFrame->globalData();
+ if (isJSString(globalData, v1) && isJSString(globalData, v2))
+ return !(asString(v2)->value() < asString(v1)->value());
+
+ JSValue p1;
+ JSValue p2;
+ bool wasNotString1 = v1.getPrimitiveNumber(callFrame, n1, p1);
+ bool wasNotString2 = v2.getPrimitiveNumber(callFrame, n2, p2);
+
+ if (wasNotString1 | wasNotString2)
+ return n1 <= n2;
+
+ return !(asString(p2)->value() < asString(p1)->value());
+ }
+
+ // Fast-path choices here are based on frequency data from SunSpider:
+ // <times> Add case: <t1> <t2>
+ // ---------------------------
+ // 5626160 Add case: 3 3 (of these, 3637690 are for immediate values)
+ // 247412 Add case: 5 5
+ // 20900 Add case: 5 6
+ // 13962 Add case: 5 3
+ // 4000 Add case: 3 5
+
+ ALWAYS_INLINE JSValue jsAdd(CallFrame* callFrame, JSValue v1, JSValue v2)
+ {
+ double left;
+ double right = 0.0;
+
+ bool rightIsNumber = v2.getNumber(right);
+ if (rightIsNumber && v1.getNumber(left))
+ return jsNumber(callFrame, left + right);
+
+ bool leftIsString = v1.isString();
+ if (leftIsString && v2.isString()) {
+ RefPtr<UString::Rep> value = concatenate(asString(v1)->value().rep(), asString(v2)->value().rep());
+ if (!value)
+ return throwOutOfMemoryError(callFrame);
+ return jsString(callFrame, value.release());
+ }
+
+ if (rightIsNumber & leftIsString) {
+ RefPtr<UString::Rep> value = v2.isInt32Fast() ?
+ concatenate(asString(v1)->value().rep(), v2.getInt32Fast()) :
+ concatenate(asString(v1)->value().rep(), right);
+
+ if (!value)
+ return throwOutOfMemoryError(callFrame);
+ return jsString(callFrame, value.release());
+ }
+
+ // All other cases are pretty uncommon
+ return jsAddSlowCase(callFrame, v1, v2);
+ }
+
+ inline size_t countPrototypeChainEntriesAndCheckForProxies(CallFrame* callFrame, JSValue baseValue, const PropertySlot& slot)
+ {
+ JSCell* cell = asCell(baseValue);
+ size_t count = 0;
+
+ while (slot.slotBase() != cell) {
+ JSValue v = cell->structure()->prototypeForLookup(callFrame);
+
+ // If we didn't find slotBase in baseValue's prototype chain, then baseValue
+ // must be a proxy for another object.
+
+ if (v.isNull())
+ return 0;
+
+ cell = asCell(v);
+
+ // Since we're accessing a prototype in a loop, it's a good bet that it
+ // should not be treated as a dictionary.
+ if (cell->structure()->isDictionary())
+ asObject(cell)->setStructure(Structure::fromDictionaryTransition(cell->structure()));
+
+ ++count;
+ }
+
+ ASSERT(count);
+ return count;
+ }
+
+ ALWAYS_INLINE JSValue resolveBase(CallFrame* callFrame, Identifier& property, ScopeChainNode* scopeChain)
+ {
+ ScopeChainIterator iter = scopeChain->begin();
+ ScopeChainIterator next = iter;
+ ++next;
+ ScopeChainIterator end = scopeChain->end();
+ ASSERT(iter != end);
+
+ PropertySlot slot;
+ JSObject* base;
+ while (true) {
+ base = *iter;
+ if (next == end || base->getPropertySlot(callFrame, property, slot))
+ return base;
+
+ iter = next;
+ ++next;
+ }
+
+ ASSERT_NOT_REACHED();
+ return JSValue();
+ }
+
+ ALWAYS_INLINE JSValue concatenateStrings(CallFrame* callFrame, Register* strings, unsigned count)
+ {
+ ASSERT(count >= 3);
+
+ // Estimate the amount of space required to hold the entire string. If all
+ // arguments are strings, we can easily calculate the exact amount of space
+ // required. For any other arguments, for now let's assume they may require
+ // 11 UChars of storage. This is enouch to hold any int, and likely is also
+ // reasonable for the other immediates. We may want to come back and tune
+ // this value at some point.
+ unsigned bufferSize = 0;
+ for (unsigned i = 0; i < count; ++i) {
+ JSValue v = strings[i].jsValue();
+ if (LIKELY(v.isString()))
+ bufferSize += asString(v)->value().size();
+ else
+ bufferSize += 11;
+ }
+
+ // Allocate an output string to store the result.
+ // If the first argument is a String, and if it has the capacity (or can grow
+ // its capacity) to hold the entire result then use this as a base to concatenate
+ // onto. Otherwise, allocate a new empty output buffer.
+ JSValue firstValue = strings[0].jsValue();
+ RefPtr<UString::Rep> resultRep;
+ if (firstValue.isString() && (resultRep = asString(firstValue)->value().rep())->reserveCapacity(bufferSize)) {
+ // We're going to concatenate onto the first string - remove it from the list of items to be appended.
+ ++strings;
+ --count;
+ } else
+ resultRep = UString::Rep::createEmptyBuffer(bufferSize);
+ UString result(resultRep);
+
+ // Loop over the openards, writing them into the output buffer.
+ for (unsigned i = 0; i < count; ++i) {
+ JSValue v = strings[i].jsValue();
+ if (LIKELY(v.isString()))
+ result.append(asString(v)->value());
+ else if (v.isInt32Fast())
+ result.appendNumeric(v.getInt32Fast());
+ else {
+ double d;
+ if (v.getNumber(d))
+ result.appendNumeric(d);
+ else
+ result.append(v.toString(callFrame));
+ }
+ }
+
+ return jsString(callFrame, result);
+ }
+
+} // namespace JSC
+
+#endif // Operations_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyMapHashTable.h b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyMapHashTable.h
index 935df68..44dc2b8 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyMapHashTable.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyMapHashTable.h
@@ -30,20 +30,23 @@ namespace JSC {
UString::Rep* key;
unsigned offset;
unsigned attributes;
+ JSCell* specificValue;
unsigned index;
- PropertyMapEntry(UString::Rep* key, unsigned attributes)
+ PropertyMapEntry(UString::Rep* key, unsigned attributes, JSCell* specificValue)
: key(key)
, offset(0)
, attributes(attributes)
+ , specificValue(specificValue)
, index(0)
{
}
- PropertyMapEntry(UString::Rep* key, unsigned offset, unsigned attributes, unsigned index)
+ PropertyMapEntry(UString::Rep* key, unsigned offset, unsigned attributes, JSCell* specificValue, unsigned index)
: key(key)
, offset(offset)
, attributes(attributes)
+ , specificValue(specificValue)
, index(index)
{
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyNameArray.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyNameArray.cpp
index 47e9d84..0878e73 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyNameArray.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyNameArray.cpp
@@ -27,7 +27,7 @@ static const size_t setThreshold = 20;
void PropertyNameArray::add(UString::Rep* identifier)
{
- ASSERT(identifier == &UString::Rep::null || identifier == &UString::Rep::empty || identifier->identifierTable());
+ ASSERT(identifier == &UString::Rep::null() || identifier == &UString::Rep::empty() || identifier->identifierTable());
size_t size = m_data->propertyNameVector().size();
if (size < setThreshold) {
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyNameArray.h b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyNameArray.h
index 7dc14fe..b4382f4 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyNameArray.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyNameArray.h
@@ -65,14 +65,14 @@ namespace JSC {
PropertyNameArray(JSGlobalData* globalData)
: m_data(PropertyNameArrayData::create())
, m_globalData(globalData)
- , m_cacheable(true)
+ , m_shouldCache(true)
{
}
PropertyNameArray(ExecState* exec)
: m_data(PropertyNameArrayData::create())
, m_globalData(&exec->globalData())
- , m_cacheable(true)
+ , m_shouldCache(true)
{
}
@@ -95,8 +95,8 @@ namespace JSC {
PassRefPtr<PropertyNameArrayData> releaseData() { return m_data.release(); }
- void setCacheable(bool cacheable) { m_cacheable = cacheable; }
- bool cacheable() const { return m_cacheable; }
+ void setShouldCache(bool shouldCache) { m_shouldCache = shouldCache; }
+ bool shouldCache() const { return m_shouldCache; }
private:
typedef HashSet<UString::Rep*, PtrHash<UString::Rep*> > IdentifierSet;
@@ -104,7 +104,7 @@ namespace JSC {
RefPtr<PropertyNameArrayData> m_data;
IdentifierSet m_set;
JSGlobalData* m_globalData;
- bool m_cacheable;
+ bool m_shouldCache;
};
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertySlot.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertySlot.cpp
index 175f271..36fa5d8 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertySlot.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertySlot.cpp
@@ -27,7 +27,7 @@
namespace JSC {
-JSValuePtr PropertySlot::functionGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue PropertySlot::functionGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
// Prevent getter functions from observing execution if an exception is pending.
if (exec->hadException())
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertySlot.h b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertySlot.h
index 1dd1afa..7af60ce 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertySlot.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertySlot.h
@@ -45,30 +45,30 @@ namespace JSC {
clearValue();
}
- explicit PropertySlot(const JSValuePtr base)
+ explicit PropertySlot(const JSValue base)
: m_slotBase(base)
, m_offset(WTF::notFound)
{
clearValue();
}
- typedef JSValuePtr (*GetValueFunc)(ExecState*, const Identifier&, const PropertySlot&);
+ typedef JSValue (*GetValueFunc)(ExecState*, const Identifier&, const PropertySlot&);
- JSValuePtr getValue(ExecState* exec, const Identifier& propertyName) const
+ JSValue getValue(ExecState* exec, const Identifier& propertyName) const
{
if (m_getValue == JSC_VALUE_SLOT_MARKER)
return *m_data.valueSlot;
if (m_getValue == JSC_REGISTER_SLOT_MARKER)
- return (*m_data.registerSlot).jsValue(exec);
+ return (*m_data.registerSlot).jsValue();
return m_getValue(exec, propertyName, *this);
}
- JSValuePtr getValue(ExecState* exec, unsigned propertyName) const
+ JSValue getValue(ExecState* exec, unsigned propertyName) const
{
if (m_getValue == JSC_VALUE_SLOT_MARKER)
return *m_data.valueSlot;
if (m_getValue == JSC_REGISTER_SLOT_MARKER)
- return (*m_data.registerSlot).jsValue(exec);
+ return (*m_data.registerSlot).jsValue();
return m_getValue(exec, Identifier::from(exec, propertyName), *this);
}
@@ -79,17 +79,17 @@ namespace JSC {
return m_offset;
}
- void putValue(JSValuePtr value)
+ void putValue(JSValue value)
{
if (m_getValue == JSC_VALUE_SLOT_MARKER) {
*m_data.valueSlot = value;
return;
}
ASSERT(m_getValue == JSC_REGISTER_SLOT_MARKER);
- *m_data.registerSlot = JSValuePtr(value);
+ *m_data.registerSlot = JSValue(value);
}
- void setValueSlot(JSValuePtr* valueSlot)
+ void setValueSlot(JSValue* valueSlot)
{
ASSERT(valueSlot);
m_getValue = JSC_VALUE_SLOT_MARKER;
@@ -97,7 +97,7 @@ namespace JSC {
m_data.valueSlot = valueSlot;
}
- void setValueSlot(JSValuePtr slotBase, JSValuePtr* valueSlot)
+ void setValueSlot(JSValue slotBase, JSValue* valueSlot)
{
ASSERT(valueSlot);
m_getValue = JSC_VALUE_SLOT_MARKER;
@@ -105,7 +105,7 @@ namespace JSC {
m_data.valueSlot = valueSlot;
}
- void setValueSlot(JSValuePtr slotBase, JSValuePtr* valueSlot, size_t offset)
+ void setValueSlot(JSValue slotBase, JSValue* valueSlot, size_t offset)
{
ASSERT(valueSlot);
m_getValue = JSC_VALUE_SLOT_MARKER;
@@ -114,7 +114,7 @@ namespace JSC {
m_offset = offset;
}
- void setValue(JSValuePtr value)
+ void setValue(JSValue value)
{
ASSERT(value);
m_getValue = JSC_VALUE_SLOT_MARKER;
@@ -131,7 +131,7 @@ namespace JSC {
m_data.registerSlot = registerSlot;
}
- void setCustom(JSValuePtr slotBase, GetValueFunc getValue)
+ void setCustom(JSValue slotBase, GetValueFunc getValue)
{
ASSERT(slotBase);
ASSERT(getValue);
@@ -139,7 +139,7 @@ namespace JSC {
m_slotBase = slotBase;
}
- void setCustomIndex(JSValuePtr slotBase, unsigned index, GetValueFunc getValue)
+ void setCustomIndex(JSValue slotBase, unsigned index, GetValueFunc getValue)
{
ASSERT(slotBase);
ASSERT(getValue);
@@ -161,13 +161,13 @@ namespace JSC {
setValue(jsUndefined());
}
- JSValuePtr slotBase() const
+ JSValue slotBase() const
{
ASSERT(m_slotBase);
return m_slotBase;
}
- void setBase(JSValuePtr base)
+ void setBase(JSValue base)
{
ASSERT(m_slotBase);
ASSERT(base);
@@ -177,33 +177,33 @@ namespace JSC {
void clearBase()
{
#ifndef NDEBUG
- m_slotBase = noValue();
+ m_slotBase = JSValue();
#endif
}
void clearValue()
{
#ifndef NDEBUG
- m_value = noValue();
+ m_value = JSValue();
#endif
}
unsigned index() const { return m_data.index; }
private:
- static JSValuePtr functionGetter(ExecState*, const Identifier&, const PropertySlot&);
+ static JSValue functionGetter(ExecState*, const Identifier&, const PropertySlot&);
GetValueFunc m_getValue;
- JSValuePtr m_slotBase;
+ JSValue m_slotBase;
union {
JSObject* getterFunc;
- JSValuePtr* valueSlot;
+ JSValue* valueSlot;
Register* registerSlot;
unsigned index;
} m_data;
- JSValuePtr m_value;
+ JSValue m_value;
size_t m_offset;
};
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Protect.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Protect.h
index efbc4bb..224164d 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Protect.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Protect.h
@@ -49,18 +49,16 @@ namespace JSC {
gcUnprotect(val);
}
- inline void gcProtect(JSValuePtr value)
+ inline void gcProtect(JSValue value)
{
- if (!value || JSImmediate::isImmediate(value))
- return;
- gcProtect(asCell(value));
+ if (value && value.isCell())
+ gcProtect(asCell(value));
}
- inline void gcUnprotect(JSValuePtr value)
+ inline void gcUnprotect(JSValue value)
{
- if (!value || JSImmediate::isImmediate(value))
- return;
- gcUnprotect(asCell(value));
+ if (value && value.isCell())
+ gcUnprotect(asCell(value));
}
// FIXME: Share more code with RefPtr template? The only differences are the ref/deref operation
@@ -76,7 +74,7 @@ namespace JSC {
T* get() const { return m_ptr; }
operator T*() const { return m_ptr; }
- operator JSValuePtr() const { return JSValuePtr(m_ptr); }
+ operator JSValue() const { return JSValue(m_ptr); }
T* operator->() const { return m_ptr; }
operator bool() const { return m_ptr; }
@@ -89,27 +87,27 @@ namespace JSC {
T* m_ptr;
};
- class ProtectedJSValuePtr {
+ class ProtectedJSValue {
public:
- ProtectedJSValuePtr() {}
- ProtectedJSValuePtr(JSValuePtr value);
- ProtectedJSValuePtr(const ProtectedJSValuePtr&);
- ~ProtectedJSValuePtr();
+ ProtectedJSValue() {}
+ ProtectedJSValue(JSValue value);
+ ProtectedJSValue(const ProtectedJSValue&);
+ ~ProtectedJSValue();
- template <class U> ProtectedJSValuePtr(const ProtectedPtr<U>&);
+ template <class U> ProtectedJSValue(const ProtectedPtr<U>&);
- JSValuePtr get() const { return m_value; }
- operator JSValuePtr() const { return m_value; }
- JSValuePtr operator->() const { return m_value; }
+ JSValue get() const { return m_value; }
+ operator JSValue() const { return m_value; }
+ JSValue operator->() const { return m_value; }
operator bool() const { return m_value; }
bool operator!() const { return !m_value; }
- ProtectedJSValuePtr& operator=(const ProtectedJSValuePtr&);
- ProtectedJSValuePtr& operator=(JSValuePtr);
+ ProtectedJSValue& operator=(const ProtectedJSValue&);
+ ProtectedJSValue& operator=(JSValue);
private:
- JSValuePtr m_value;
+ JSValue m_value;
};
template <class T> inline ProtectedPtr<T>::ProtectedPtr(T* ptr)
@@ -152,39 +150,39 @@ namespace JSC {
return *this;
}
- inline ProtectedJSValuePtr::ProtectedJSValuePtr(JSValuePtr value)
+ inline ProtectedJSValue::ProtectedJSValue(JSValue value)
: m_value(value)
{
gcProtect(m_value);
}
- inline ProtectedJSValuePtr::ProtectedJSValuePtr(const ProtectedJSValuePtr& o)
+ inline ProtectedJSValue::ProtectedJSValue(const ProtectedJSValue& o)
: m_value(o.get())
{
gcProtect(m_value);
}
- inline ProtectedJSValuePtr::~ProtectedJSValuePtr()
+ inline ProtectedJSValue::~ProtectedJSValue()
{
gcUnprotect(m_value);
}
- template <class U> ProtectedJSValuePtr::ProtectedJSValuePtr(const ProtectedPtr<U>& o)
+ template <class U> ProtectedJSValue::ProtectedJSValue(const ProtectedPtr<U>& o)
: m_value(o.get())
{
gcProtect(m_value);
}
- inline ProtectedJSValuePtr& ProtectedJSValuePtr::operator=(const ProtectedJSValuePtr& o)
+ inline ProtectedJSValue& ProtectedJSValue::operator=(const ProtectedJSValue& o)
{
- JSValuePtr ovalue = o.m_value;
+ JSValue ovalue = o.m_value;
gcProtect(ovalue);
gcUnprotect(m_value);
m_value = ovalue;
return *this;
}
- inline ProtectedJSValuePtr& ProtectedJSValuePtr::operator=(JSValuePtr ovalue)
+ inline ProtectedJSValue& ProtectedJSValue::operator=(JSValue ovalue)
{
gcProtect(ovalue);
gcUnprotect(m_value);
@@ -200,17 +198,17 @@ namespace JSC {
template <class T> inline bool operator!=(const ProtectedPtr<T>& a, const T* b) { return a.get() != b; }
template <class T> inline bool operator!=(const T* a, const ProtectedPtr<T>& b) { return a != b.get(); }
- inline bool operator==(const ProtectedJSValuePtr& a, const ProtectedJSValuePtr& b) { return a.get() == b.get(); }
- inline bool operator==(const ProtectedJSValuePtr& a, const JSValuePtr b) { return a.get() == b; }
- template <class T> inline bool operator==(const ProtectedJSValuePtr& a, const ProtectedPtr<T>& b) { return a.get() == JSValuePtr(b.get()); }
- inline bool operator==(const JSValuePtr a, const ProtectedJSValuePtr& b) { return a == b.get(); }
- template <class T> inline bool operator==(const ProtectedPtr<T>& a, const ProtectedJSValuePtr& b) { return JSValuePtr(a.get()) == b.get(); }
-
- inline bool operator!=(const ProtectedJSValuePtr& a, const ProtectedJSValuePtr& b) { return a.get() != b.get(); }
- inline bool operator!=(const ProtectedJSValuePtr& a, const JSValuePtr b) { return a.get() != b; }
- template <class T> inline bool operator!=(const ProtectedJSValuePtr& a, const ProtectedPtr<T>& b) { return a.get() != JSValuePtr(b.get()); }
- inline bool operator!=(const JSValuePtr a, const ProtectedJSValuePtr& b) { return a != b.get(); }
- template <class T> inline bool operator!=(const ProtectedPtr<T>& a, const ProtectedJSValuePtr& b) { return JSValuePtr(a.get()) != b.get(); }
+ inline bool operator==(const ProtectedJSValue& a, const ProtectedJSValue& b) { return a.get() == b.get(); }
+ inline bool operator==(const ProtectedJSValue& a, const JSValue b) { return a.get() == b; }
+ template <class T> inline bool operator==(const ProtectedJSValue& a, const ProtectedPtr<T>& b) { return a.get() == JSValue(b.get()); }
+ inline bool operator==(const JSValue a, const ProtectedJSValue& b) { return a == b.get(); }
+ template <class T> inline bool operator==(const ProtectedPtr<T>& a, const ProtectedJSValue& b) { return JSValue(a.get()) == b.get(); }
+
+ inline bool operator!=(const ProtectedJSValue& a, const ProtectedJSValue& b) { return a.get() != b.get(); }
+ inline bool operator!=(const ProtectedJSValue& a, const JSValue b) { return a.get() != b; }
+ template <class T> inline bool operator!=(const ProtectedJSValue& a, const ProtectedPtr<T>& b) { return a.get() != JSValue(b.get()); }
+ inline bool operator!=(const JSValue a, const ProtectedJSValue& b) { return a != b.get(); }
+ template <class T> inline bool operator!=(const ProtectedPtr<T>& a, const ProtectedJSValue& b) { return JSValue(a.get()) != b.get(); }
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/PutPropertySlot.h b/src/3rdparty/webkit/JavaScriptCore/runtime/PutPropertySlot.h
index 1e2dfe9..eb8ea8a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/PutPropertySlot.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/PutPropertySlot.h
@@ -32,15 +32,15 @@
namespace JSC {
class JSObject;
+ class JSFunction;
class PutPropertySlot {
public:
- enum Type { Invalid, ExistingProperty, NewProperty };
+ enum Type { Uncachable, ExistingProperty, NewProperty };
PutPropertySlot()
- : m_type(Invalid)
+ : m_type(Uncachable)
, m_base(0)
- , m_wasTransition(false)
{
}
@@ -61,18 +61,14 @@ namespace JSC {
Type type() const { return m_type; }
JSObject* base() const { return m_base; }
- bool isCacheable() const { return m_type != Invalid; }
+ bool isCacheable() const { return m_type != Uncachable; }
size_t cachedOffset() const {
ASSERT(isCacheable());
return m_offset;
}
-
- bool wasTransition() const { return m_wasTransition; }
- void setWasTransition(bool wasTransition) { m_wasTransition = wasTransition; }
private:
Type m_type;
JSObject* m_base;
- bool m_wasTransition;
size_t m_offset;
};
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.cpp
index 722914d8..857a316 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.cpp
@@ -20,17 +20,33 @@
#include "config.h"
#include "RegExp.h"
-
-#include "JIT.h"
#include "Lexer.h"
-#include "WRECGenerator.h"
-#include <pcre/pcre.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wtf/Assertions.h>
#include <wtf/OwnArrayPtr.h>
+
+#if ENABLE(YARR)
+
+#include "yarr/RegexCompiler.h"
+#if ENABLE(YARR_JIT)
+#include "yarr/RegexJIT.h"
+#else
+#include "yarr/RegexInterpreter.h"
+#endif
+
+#else
+
+#if ENABLE(WREC)
+#include "JIT.h"
+#include "WRECGenerator.h"
+#endif
+#include <pcre/pcre.h>
+
+#endif
+
namespace JSC {
#if ENABLE(WREC)
@@ -40,62 +56,41 @@ using namespace WREC;
inline RegExp::RegExp(JSGlobalData* globalData, const UString& pattern)
: m_pattern(pattern)
, m_flagBits(0)
- , m_regExp(0)
, m_constructionError(0)
, m_numSubpatterns(0)
{
- UNUSED_PARAM(globalData);
-#if ENABLE(WREC)
- m_wrecFunction = Generator::compileRegExp(globalData, pattern, &m_numSubpatterns, &m_constructionError, m_executablePool);
- if (m_wrecFunction || m_constructionError)
- return;
- // Fall through to non-WREC case.
-#endif
- m_regExp = jsRegExpCompile(reinterpret_cast<const UChar*>(pattern.data()), pattern.size(),
- JSRegExpDoNotIgnoreCase, JSRegExpSingleLine, &m_numSubpatterns, &m_constructionError);
-}
-
-PassRefPtr<RegExp> RegExp::create(JSGlobalData* globalData, const UString& pattern)
-{
- return adoptRef(new RegExp(globalData, pattern));
+ compile(globalData);
}
inline RegExp::RegExp(JSGlobalData* globalData, const UString& pattern, const UString& flags)
: m_pattern(pattern)
, m_flags(flags)
, m_flagBits(0)
- , m_regExp(0)
, m_constructionError(0)
, m_numSubpatterns(0)
{
- UNUSED_PARAM(globalData);
-
// NOTE: The global flag is handled on a case-by-case basis by functions like
// String::match and RegExpObject::match.
if (flags.find('g') != -1)
m_flagBits |= Global;
-
- // FIXME: Eliminate duplication by adding a way ask a JSRegExp what its flags are?
- JSRegExpIgnoreCaseOption ignoreCaseOption = JSRegExpDoNotIgnoreCase;
- if (flags.find('i') != -1) {
+ if (flags.find('i') != -1)
m_flagBits |= IgnoreCase;
- ignoreCaseOption = JSRegExpIgnoreCase;
- }
-
- JSRegExpMultilineOption multilineOption = JSRegExpSingleLine;
- if (flags.find('m') != -1) {
+ if (flags.find('m') != -1)
m_flagBits |= Multiline;
- multilineOption = JSRegExpMultiline;
- }
-#if ENABLE(WREC)
- m_wrecFunction = Generator::compileRegExp(globalData, pattern, &m_numSubpatterns, &m_constructionError, m_executablePool, (m_flagBits & IgnoreCase), (m_flagBits & Multiline));
- if (m_wrecFunction || m_constructionError)
- return;
- // Fall through to non-WREC case.
+ compile(globalData);
+}
+
+#if !ENABLE(YARR)
+RegExp::~RegExp()
+{
+ jsRegExpFree(m_regExp);
+}
#endif
- m_regExp = jsRegExpCompile(reinterpret_cast<const UChar*>(pattern.data()), pattern.size(),
- ignoreCaseOption, multilineOption, &m_numSubpatterns, &m_constructionError);
+
+PassRefPtr<RegExp> RegExp::create(JSGlobalData* globalData, const UString& pattern)
+{
+ return adoptRef(new RegExp(globalData, pattern));
}
PassRefPtr<RegExp> RegExp::create(JSGlobalData* globalData, const UString& pattern, const UString& flags)
@@ -103,9 +98,83 @@ PassRefPtr<RegExp> RegExp::create(JSGlobalData* globalData, const UString& patte
return adoptRef(new RegExp(globalData, pattern, flags));
}
-RegExp::~RegExp()
+#if ENABLE(YARR)
+
+void RegExp::compile(JSGlobalData* globalData)
{
- jsRegExpFree(m_regExp);
+#if ENABLE(YARR_JIT)
+ Yarr::jitCompileRegex(globalData, m_regExpJITCode, m_pattern, m_numSubpatterns, m_constructionError, ignoreCase(), multiline());
+#else
+ UNUSED_PARAM(globalData);
+ m_regExpBytecode.set(Yarr::byteCompileRegex(m_pattern, m_numSubpatterns, m_constructionError, ignoreCase(), multiline()));
+#endif
+}
+
+int RegExp::match(const UString& s, int startOffset, OwnArrayPtr<int>* ovector)
+{
+ if (startOffset < 0)
+ startOffset = 0;
+ if (ovector)
+ ovector->clear();
+
+ if (startOffset > s.size() || s.isNull())
+ return -1;
+
+#if ENABLE(YARR_JIT)
+ if (!!m_regExpJITCode) {
+#else
+ if (m_regExpBytecode) {
+#endif
+ int offsetVectorSize = (m_numSubpatterns + 1) * 3; // FIXME: should be 2 - but adding temporary fallback to pcre.
+ int* offsetVector = new int [offsetVectorSize];
+ ASSERT(offsetVector);
+ for (int j = 0; j < offsetVectorSize; ++j)
+ offsetVector[j] = -1;
+
+ OwnArrayPtr<int> nonReturnedOvector;
+ if (!ovector)
+ nonReturnedOvector.set(offsetVector);
+ else
+ ovector->set(offsetVector);
+
+#if ENABLE(YARR_JIT)
+ int result = Yarr::executeRegex(m_regExpJITCode, s.data(), startOffset, s.size(), offsetVector, offsetVectorSize);
+#else
+ int result = Yarr::interpretRegex(m_regExpBytecode.get(), s.data(), startOffset, s.size(), offsetVector);
+#endif
+
+ if (result < 0) {
+#ifndef NDEBUG
+ // TODO: define up a symbol, rather than magic -1
+ if (result != -1)
+ fprintf(stderr, "jsRegExpExecute failed with result %d\n", result);
+#endif
+ if (ovector)
+ ovector->clear();
+ }
+ return result;
+ }
+
+ return -1;
+}
+
+#else
+
+void RegExp::compile(JSGlobalData* globalData)
+{
+ m_regExp = 0;
+#if ENABLE(WREC)
+ m_wrecFunction = Generator::compileRegExp(globalData, m_pattern, &m_numSubpatterns, &m_constructionError, m_executablePool, ignoreCase(), multiline());
+ if (m_wrecFunction || m_constructionError)
+ return;
+ // Fall through to non-WREC case.
+#else
+ UNUSED_PARAM(globalData);
+#endif
+
+ JSRegExpIgnoreCaseOption ignoreCaseOption = ignoreCase() ? JSRegExpIgnoreCase : JSRegExpDoNotIgnoreCase;
+ JSRegExpMultilineOption multilineOption = multiline() ? JSRegExpMultiline : JSRegExpSingleLine;
+ m_regExp = jsRegExpCompile(reinterpret_cast<const UChar*>(m_pattern.data()), m_pattern.size(), ignoreCaseOption, multilineOption, &m_numSubpatterns, &m_constructionError);
}
int RegExp::match(const UString& s, int startOffset, OwnArrayPtr<int>* ovector)
@@ -122,6 +191,7 @@ int RegExp::match(const UString& s, int startOffset, OwnArrayPtr<int>* ovector)
if (m_wrecFunction) {
int offsetVectorSize = (m_numSubpatterns + 1) * 2;
int* offsetVector = new int [offsetVectorSize];
+ ASSERT(offsetVector);
for (int j = 0; j < offsetVectorSize; ++j)
offsetVector[j] = -1;
@@ -178,4 +248,6 @@ int RegExp::match(const UString& s, int startOffset, OwnArrayPtr<int>* ovector)
return -1;
}
+#endif
+
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.h b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.h
index 139c754..f3be656 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExp.h
@@ -26,6 +26,8 @@
#include "ExecutableAllocator.h"
#include <wtf/Forward.h>
#include <wtf/RefCounted.h>
+#include "yarr/RegexJIT.h"
+#include "yarr/RegexInterpreter.h"
struct JSRegExp;
@@ -37,7 +39,9 @@ namespace JSC {
public:
static PassRefPtr<RegExp> create(JSGlobalData* globalData, const UString& pattern);
static PassRefPtr<RegExp> create(JSGlobalData* globalData, const UString& pattern, const UString& flags);
+#if !ENABLE(YARR)
~RegExp();
+#endif
bool global() const { return m_flagBits & Global; }
bool ignoreCase() const { return m_flagBits & IgnoreCase; }
@@ -56,21 +60,27 @@ namespace JSC {
RegExp(JSGlobalData* globalData, const UString& pattern);
RegExp(JSGlobalData* globalData, const UString& pattern, const UString& flags);
- void compile();
+ void compile(JSGlobalData*);
enum FlagBits { Global = 1, IgnoreCase = 2, Multiline = 4 };
UString m_pattern; // FIXME: Just decompile m_regExp instead of storing this.
UString m_flags; // FIXME: Just decompile m_regExp instead of storing this.
int m_flagBits;
- JSRegExp* m_regExp;
const char* m_constructionError;
unsigned m_numSubpatterns;
+#if ENABLE(YARR_JIT)
+ Yarr::RegexCodeBlock m_regExpJITCode;
+#elif ENABLE(YARR)
+ OwnPtr<Yarr::BytecodePattern> m_regExpBytecode;
+#else
#if ENABLE(WREC)
WREC::CompiledRegExp m_wrecFunction;
RefPtr<ExecutablePool> m_executablePool;
#endif
+ JSRegExp* m_regExp;
+#endif
};
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpConstructor.cpp
index 84a297c..bcd0d07 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpConstructor.cpp
@@ -33,24 +33,24 @@
namespace JSC {
-static JSValuePtr regExpConstructorInput(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorMultiline(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorLastMatch(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorLastParen(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorLeftContext(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorRightContext(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorDollar1(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorDollar2(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorDollar3(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorDollar4(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorDollar5(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorDollar6(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorDollar7(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorDollar8(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpConstructorDollar9(ExecState*, const Identifier&, const PropertySlot&);
-
-static void setRegExpConstructorInput(ExecState*, JSObject*, JSValuePtr);
-static void setRegExpConstructorMultiline(ExecState*, JSObject*, JSValuePtr);
+static JSValue regExpConstructorInput(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorMultiline(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorLastMatch(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorLastParen(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorLeftContext(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorRightContext(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorDollar1(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorDollar2(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorDollar3(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorDollar4(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorDollar5(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorDollar6(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorDollar7(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorDollar8(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpConstructorDollar9(ExecState*, const Identifier&, const PropertySlot&);
+
+static void setRegExpConstructorInput(ExecState*, JSObject*, JSValue);
+static void setRegExpConstructorMultiline(ExecState*, JSObject*, JSValue);
} // namespace JSC
@@ -185,7 +185,7 @@ JSObject* RegExpConstructor::arrayOfMatches(ExecState* exec) const
return new (exec) RegExpMatchesArray(exec, d.get());
}
-JSValuePtr RegExpConstructor::getBackref(ExecState* exec, unsigned i) const
+JSValue RegExpConstructor::getBackref(ExecState* exec, unsigned i) const
{
if (d->lastOvector && i <= d->lastNumSubPatterns) {
int start = d->lastOvector[2 * i];
@@ -195,7 +195,7 @@ JSValuePtr RegExpConstructor::getBackref(ExecState* exec, unsigned i) const
return jsEmptyString(exec);
}
-JSValuePtr RegExpConstructor::getLastParen(ExecState* exec) const
+JSValue RegExpConstructor::getLastParen(ExecState* exec) const
{
unsigned i = d->lastNumSubPatterns;
if (i > 0) {
@@ -207,14 +207,14 @@ JSValuePtr RegExpConstructor::getLastParen(ExecState* exec) const
return jsEmptyString(exec);
}
-JSValuePtr RegExpConstructor::getLeftContext(ExecState* exec) const
+JSValue RegExpConstructor::getLeftContext(ExecState* exec) const
{
if (d->lastOvector)
return jsSubstring(exec, d->lastInput, 0, d->lastOvector[0]);
return jsEmptyString(exec);
}
-JSValuePtr RegExpConstructor::getRightContext(ExecState* exec) const
+JSValue RegExpConstructor::getRightContext(ExecState* exec) const
{
if (d->lastOvector)
return jsSubstring(exec, d->lastInput, d->lastOvector[1], d->lastInput.size() - d->lastOvector[1]);
@@ -226,110 +226,110 @@ bool RegExpConstructor::getOwnPropertySlot(ExecState* exec, const Identifier& pr
return getStaticValueSlot<RegExpConstructor, InternalFunction>(exec, ExecState::regExpConstructorTable(exec), this, propertyName, slot);
}
-JSValuePtr regExpConstructorDollar1(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorDollar1(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getBackref(exec, 1);
}
-JSValuePtr regExpConstructorDollar2(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorDollar2(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getBackref(exec, 2);
}
-JSValuePtr regExpConstructorDollar3(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorDollar3(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getBackref(exec, 3);
}
-JSValuePtr regExpConstructorDollar4(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorDollar4(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getBackref(exec, 4);
}
-JSValuePtr regExpConstructorDollar5(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorDollar5(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getBackref(exec, 5);
}
-JSValuePtr regExpConstructorDollar6(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorDollar6(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getBackref(exec, 6);
}
-JSValuePtr regExpConstructorDollar7(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorDollar7(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getBackref(exec, 7);
}
-JSValuePtr regExpConstructorDollar8(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorDollar8(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getBackref(exec, 8);
}
-JSValuePtr regExpConstructorDollar9(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorDollar9(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getBackref(exec, 9);
}
-JSValuePtr regExpConstructorInput(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorInput(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return jsString(exec, asRegExpConstructor(slot.slotBase())->input());
}
-JSValuePtr regExpConstructorMultiline(ExecState*, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorMultiline(ExecState*, const Identifier&, const PropertySlot& slot)
{
return jsBoolean(asRegExpConstructor(slot.slotBase())->multiline());
}
-JSValuePtr regExpConstructorLastMatch(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorLastMatch(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getBackref(exec, 0);
}
-JSValuePtr regExpConstructorLastParen(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorLastParen(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getLastParen(exec);
}
-JSValuePtr regExpConstructorLeftContext(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorLeftContext(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getLeftContext(exec);
}
-JSValuePtr regExpConstructorRightContext(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpConstructorRightContext(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return asRegExpConstructor(slot.slotBase())->getRightContext(exec);
}
-void RegExpConstructor::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void RegExpConstructor::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
lookupPut<RegExpConstructor, InternalFunction>(exec, propertyName, value, ExecState::regExpConstructorTable(exec), this, slot);
}
-void setRegExpConstructorInput(ExecState* exec, JSObject* baseObject, JSValuePtr value)
+void setRegExpConstructorInput(ExecState* exec, JSObject* baseObject, JSValue value)
{
- asRegExpConstructor(baseObject)->setInput(value->toString(exec));
+ asRegExpConstructor(baseObject)->setInput(value.toString(exec));
}
-void setRegExpConstructorMultiline(ExecState* exec, JSObject* baseObject, JSValuePtr value)
+void setRegExpConstructorMultiline(ExecState* exec, JSObject* baseObject, JSValue value)
{
- asRegExpConstructor(baseObject)->setMultiline(value->toBoolean(exec));
+ asRegExpConstructor(baseObject)->setMultiline(value.toBoolean(exec));
}
// ECMA 15.10.4
JSObject* constructRegExp(ExecState* exec, const ArgList& args)
{
- JSValuePtr arg0 = args.at(exec, 0);
- JSValuePtr arg1 = args.at(exec, 1);
+ JSValue arg0 = args.at(0);
+ JSValue arg1 = args.at(1);
- if (arg0->isObject(&RegExpObject::info)) {
- if (!arg1->isUndefined())
+ if (arg0.isObject(&RegExpObject::info)) {
+ if (!arg1.isUndefined())
return throwError(exec, TypeError, "Cannot supply flags when constructing one RegExp from another.");
return asObject(arg0);
}
- UString pattern = arg0->isUndefined() ? UString("") : arg0->toString(exec);
- UString flags = arg1->isUndefined() ? UString("") : arg1->toString(exec);
+ UString pattern = arg0.isUndefined() ? UString("") : arg0.toString(exec);
+ UString flags = arg1.isUndefined() ? UString("") : arg1.toString(exec);
RefPtr<RegExp> regExp = RegExp::create(&exec->globalData(), pattern, flags);
if (!regExp->isValid())
@@ -349,7 +349,7 @@ ConstructType RegExpConstructor::getConstructData(ConstructData& constructData)
}
// ECMA 15.10.3
-static JSValuePtr callRegExpConstructor(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL callRegExpConstructor(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
return constructRegExp(exec, args);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpConstructor.h b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpConstructor.h
index f8c4366..6823f3f 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpConstructor.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpConstructor.h
@@ -34,12 +34,12 @@ namespace JSC {
public:
RegExpConstructor(ExecState*, PassRefPtr<Structure>, RegExpPrototype*);
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType, ImplementsHasInstance));
}
- virtual void put(ExecState*, const Identifier& propertyName, JSValuePtr, PutPropertySlot&);
+ virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
static const ClassInfo info;
@@ -53,10 +53,10 @@ namespace JSC {
void setMultiline(bool);
bool multiline() const;
- JSValuePtr getBackref(ExecState*, unsigned) const;
- JSValuePtr getLastParen(ExecState*) const;
- JSValuePtr getLeftContext(ExecState*) const;
- JSValuePtr getRightContext(ExecState*) const;
+ JSValue getBackref(ExecState*, unsigned) const;
+ JSValue getLastParen(ExecState*) const;
+ JSValue getLeftContext(ExecState*) const;
+ JSValue getRightContext(ExecState*) const;
private:
virtual ConstructType getConstructData(ConstructData&);
@@ -67,11 +67,11 @@ namespace JSC {
OwnPtr<RegExpConstructorPrivate> d;
};
- RegExpConstructor* asRegExpConstructor(JSValuePtr);
+ RegExpConstructor* asRegExpConstructor(JSValue);
JSObject* constructRegExp(ExecState*, const ArgList&);
- inline RegExpConstructor* asRegExpConstructor(JSValuePtr value)
+ inline RegExpConstructor* asRegExpConstructor(JSValue value)
{
ASSERT(asObject(value)->inherits(&RegExpConstructor::info));
return static_cast<RegExpConstructor*>(asObject(value));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpMatchesArray.h b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpMatchesArray.h
index 3583941..9ae18b9 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpMatchesArray.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpMatchesArray.h
@@ -44,14 +44,14 @@ namespace JSC {
return JSArray::getOwnPropertySlot(exec, propertyName, slot);
}
- virtual void put(ExecState* exec, const Identifier& propertyName, JSValuePtr v, PutPropertySlot& slot)
+ virtual void put(ExecState* exec, const Identifier& propertyName, JSValue v, PutPropertySlot& slot)
{
if (lazyCreationData())
fillArrayInstance(exec);
JSArray::put(exec, propertyName, v, slot);
}
- virtual void put(ExecState* exec, unsigned propertyName, JSValuePtr v)
+ virtual void put(ExecState* exec, unsigned propertyName, JSValue v)
{
if (lazyCreationData())
fillArrayInstance(exec);
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpObject.cpp
index 5a54ad0..687844e 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpObject.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpObject.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "RegExpObject.h"
+#include "Error.h"
#include "JSArray.h"
#include "JSGlobalObject.h"
#include "JSString.h"
@@ -29,12 +30,12 @@
namespace JSC {
-static JSValuePtr regExpObjectGlobal(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpObjectIgnoreCase(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpObjectMultiline(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpObjectSource(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr regExpObjectLastIndex(ExecState*, const Identifier&, const PropertySlot&);
-static void setRegExpObjectLastIndex(ExecState*, JSObject*, JSValuePtr);
+static JSValue regExpObjectGlobal(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpObjectIgnoreCase(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpObjectMultiline(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpObjectSource(ExecState*, const Identifier&, const PropertySlot&);
+static JSValue regExpObjectLastIndex(ExecState*, const Identifier&, const PropertySlot&);
+static void setRegExpObjectLastIndex(ExecState*, JSObject*, JSValue);
} // namespace JSC
@@ -71,54 +72,54 @@ bool RegExpObject::getOwnPropertySlot(ExecState* exec, const Identifier& propert
return getStaticValueSlot<RegExpObject, JSObject>(exec, ExecState::regExpTable(exec), this, propertyName, slot);
}
-JSValuePtr regExpObjectGlobal(ExecState*, const Identifier&, const PropertySlot& slot)
+JSValue regExpObjectGlobal(ExecState*, const Identifier&, const PropertySlot& slot)
{
return jsBoolean(asRegExpObject(slot.slotBase())->regExp()->global());
}
-JSValuePtr regExpObjectIgnoreCase(ExecState*, const Identifier&, const PropertySlot& slot)
+JSValue regExpObjectIgnoreCase(ExecState*, const Identifier&, const PropertySlot& slot)
{
return jsBoolean(asRegExpObject(slot.slotBase())->regExp()->ignoreCase());
}
-JSValuePtr regExpObjectMultiline(ExecState*, const Identifier&, const PropertySlot& slot)
+JSValue regExpObjectMultiline(ExecState*, const Identifier&, const PropertySlot& slot)
{
return jsBoolean(asRegExpObject(slot.slotBase())->regExp()->multiline());
}
-JSValuePtr regExpObjectSource(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpObjectSource(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return jsString(exec, asRegExpObject(slot.slotBase())->regExp()->pattern());
}
-JSValuePtr regExpObjectLastIndex(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue regExpObjectLastIndex(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return jsNumber(exec, asRegExpObject(slot.slotBase())->lastIndex());
}
-void RegExpObject::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void RegExpObject::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
lookupPut<RegExpObject, JSObject>(exec, propertyName, value, ExecState::regExpTable(exec), this, slot);
}
-void setRegExpObjectLastIndex(ExecState* exec, JSObject* baseObject, JSValuePtr value)
+void setRegExpObjectLastIndex(ExecState* exec, JSObject* baseObject, JSValue value)
{
- asRegExpObject(baseObject)->setLastIndex(value->toInteger(exec));
+ asRegExpObject(baseObject)->setLastIndex(value.toInteger(exec));
}
-JSValuePtr RegExpObject::test(ExecState* exec, const ArgList& args)
+JSValue RegExpObject::test(ExecState* exec, const ArgList& args)
{
return jsBoolean(match(exec, args));
}
-JSValuePtr RegExpObject::exec(ExecState* exec, const ArgList& args)
+JSValue RegExpObject::exec(ExecState* exec, const ArgList& args)
{
if (match(exec, args))
return exec->lexicalGlobalObject()->regExpConstructor()->arrayOfMatches(exec);
return jsNull();
}
-static JSValuePtr callRegExpObject(ExecState* exec, JSObject* function, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL callRegExpObject(ExecState* exec, JSObject* function, JSValue, const ArgList& args)
{
return asRegExpObject(function)->exec(exec, args);
}
@@ -134,7 +135,7 @@ bool RegExpObject::match(ExecState* exec, const ArgList& args)
{
RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
- UString input = args.isEmpty() ? regExpConstructor->input() : args.at(exec, 0)->toString(exec);
+ UString input = args.isEmpty() ? regExpConstructor->input() : args.at(0).toString(exec);
if (input.isNull()) {
throwError(exec, GeneralError, "No input to " + toString(exec) + ".");
return false;
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpObject.h
index 4c99c30..fac9978 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpObject.h
@@ -37,16 +37,16 @@ namespace JSC {
void setLastIndex(double lastIndex) { d->lastIndex = lastIndex; }
double lastIndex() const { return d->lastIndex; }
- JSValuePtr test(ExecState*, const ArgList&);
- JSValuePtr exec(ExecState*, const ArgList&);
+ JSValue test(ExecState*, const ArgList&);
+ JSValue exec(ExecState*, const ArgList&);
virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
- virtual void put(ExecState*, const Identifier& propertyName, JSValuePtr, PutPropertySlot&);
+ virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
virtual const ClassInfo* classInfo() const { return &info; }
static const ClassInfo info;
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType));
}
@@ -70,9 +70,9 @@ namespace JSC {
OwnPtr<RegExpObjectData> d;
};
- RegExpObject* asRegExpObject(JSValuePtr);
+ RegExpObject* asRegExpObject(JSValue);
- inline RegExpObject* asRegExpObject(JSValuePtr value)
+ inline RegExpObject* asRegExpObject(JSValue value)
{
ASSERT(asObject(value)->inherits(&RegExpObject::info));
return static_cast<RegExpObject*>(asObject(value));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpPrototype.cpp
index b47d489..b1ab889 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpPrototype.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/RegExpPrototype.cpp
@@ -23,6 +23,7 @@
#include "ArrayPrototype.h"
#include "JSArray.h"
+#include "JSFunction.h"
#include "JSObject.h"
#include "JSString.h"
#include "JSValue.h"
@@ -35,10 +36,10 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(RegExpPrototype);
-static JSValuePtr regExpProtoFuncTest(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr regExpProtoFuncExec(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr regExpProtoFuncCompile(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr regExpProtoFuncToString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL regExpProtoFuncTest(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL regExpProtoFuncExec(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL regExpProtoFuncCompile(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL regExpProtoFuncToString(ExecState*, JSObject*, JSValue, const ArgList&);
// ECMA 15.10.5
@@ -47,44 +48,44 @@ const ClassInfo RegExpPrototype::info = { "RegExpPrototype", 0, 0, 0 };
RegExpPrototype::RegExpPrototype(ExecState* exec, PassRefPtr<Structure> structure, Structure* prototypeFunctionStructure)
: JSObject(structure)
{
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().compile, regExpProtoFuncCompile), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().exec, regExpProtoFuncExec), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().test, regExpProtoFuncTest), DontEnum);
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, regExpProtoFuncToString), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().compile, regExpProtoFuncCompile), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().exec, regExpProtoFuncExec), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().test, regExpProtoFuncTest), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, regExpProtoFuncToString), DontEnum);
}
// ------------------------------ Functions ---------------------------
-JSValuePtr regExpProtoFuncTest(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL regExpProtoFuncTest(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue->isObject(&RegExpObject::info))
+ if (!thisValue.isObject(&RegExpObject::info))
return throwError(exec, TypeError);
return asRegExpObject(thisValue)->test(exec, args);
}
-JSValuePtr regExpProtoFuncExec(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL regExpProtoFuncExec(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue->isObject(&RegExpObject::info))
+ if (!thisValue.isObject(&RegExpObject::info))
return throwError(exec, TypeError);
return asRegExpObject(thisValue)->exec(exec, args);
}
-JSValuePtr regExpProtoFuncCompile(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL regExpProtoFuncCompile(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- if (!thisValue->isObject(&RegExpObject::info))
+ if (!thisValue.isObject(&RegExpObject::info))
return throwError(exec, TypeError);
RefPtr<RegExp> regExp;
- JSValuePtr arg0 = args.at(exec, 0);
- JSValuePtr arg1 = args.at(exec, 1);
+ JSValue arg0 = args.at(0);
+ JSValue arg1 = args.at(1);
- if (arg0->isObject(&RegExpObject::info)) {
- if (!arg1->isUndefined())
+ if (arg0.isObject(&RegExpObject::info)) {
+ if (!arg1.isUndefined())
return throwError(exec, TypeError, "Cannot supply flags when constructing one RegExp from another.");
regExp = asRegExpObject(arg0)->regExp();
} else {
- UString pattern = args.isEmpty() ? UString("") : arg0->toString(exec);
- UString flags = arg1->isUndefined() ? UString("") : arg1->toString(exec);
+ UString pattern = args.isEmpty() ? UString("") : arg0.toString(exec);
+ UString flags = arg1.isUndefined() ? UString("") : arg1.toString(exec);
regExp = RegExp::create(&exec->globalData(), pattern, flags);
}
@@ -96,21 +97,21 @@ JSValuePtr regExpProtoFuncCompile(ExecState* exec, JSObject*, JSValuePtr thisVal
return jsUndefined();
}
-JSValuePtr regExpProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL regExpProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- if (!thisValue->isObject(&RegExpObject::info)) {
- if (thisValue->isObject(&RegExpPrototype::info))
+ if (!thisValue.isObject(&RegExpObject::info)) {
+ if (thisValue.isObject(&RegExpPrototype::info))
return jsNontrivialString(exec, "//");
return throwError(exec, TypeError);
}
- UString result = "/" + asRegExpObject(thisValue)->get(exec, exec->propertyNames().source)->toString(exec);
+ UString result = "/" + asRegExpObject(thisValue)->get(exec, exec->propertyNames().source).toString(exec);
result.append('/');
- if (asRegExpObject(thisValue)->get(exec, exec->propertyNames().global)->toBoolean(exec))
+ if (asRegExpObject(thisValue)->get(exec, exec->propertyNames().global).toBoolean(exec))
result.append('g');
- if (asRegExpObject(thisValue)->get(exec, exec->propertyNames().ignoreCase)->toBoolean(exec))
+ if (asRegExpObject(thisValue)->get(exec, exec->propertyNames().ignoreCase).toBoolean(exec))
result.append('i');
- if (asRegExpObject(thisValue)->get(exec, exec->propertyNames().multiline)->toBoolean(exec))
+ if (asRegExpObject(thisValue)->get(exec, exec->propertyNames().multiline).toBoolean(exec))
result.append('m');
return jsNontrivialString(exec, result);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ScopeChain.h b/src/3rdparty/webkit/JavaScriptCore/runtime/ScopeChain.h
index 32b5e92..6f1560a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ScopeChain.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/ScopeChain.h
@@ -41,6 +41,18 @@ namespace JSC {
{
ASSERT(globalData);
}
+#ifndef NDEBUG
+ // Due to the number of subtle and timing dependent bugs that have occurred due
+ // to deleted but still "valid" ScopeChainNodes we now deliberately clobber the
+ // contents in debug builds.
+ ~ScopeChainNode()
+ {
+ next = 0;
+ object = 0;
+ globalData = 0;
+ globalThis = 0;
+ }
+#endif
ScopeChainNode* next;
JSObject* object;
@@ -171,6 +183,9 @@ namespace JSC {
{
if (m_node)
m_node->deref();
+#ifndef NDEBUG
+ m_node = 0;
+#endif
}
void swap(ScopeChain&);
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/SmallStrings.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/SmallStrings.cpp
index 06811b9..87b49f0 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/SmallStrings.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/SmallStrings.cpp
@@ -29,48 +29,52 @@
#include "JSGlobalObject.h"
#include "JSString.h"
+#include <wtf/Noncopyable.h>
+
namespace JSC {
+static const unsigned numCharactersToStore = 0x100;
-class SmallStringsStorage {
+class SmallStringsStorage : Noncopyable {
public:
SmallStringsStorage();
- ~SmallStringsStorage();
- UString::Rep* rep(unsigned char character) { return &reps[character]; }
+ UString::Rep* rep(unsigned char character) { return &m_reps[character]; }
private:
- UChar characters[0x100];
- UString::Rep* reps;
+ UChar m_characters[numCharactersToStore];
+ UString::BaseString m_base;
+ UString::Rep m_reps[numCharactersToStore];
};
SmallStringsStorage::SmallStringsStorage()
- : reps(static_cast<UString::Rep*>(fastZeroedMalloc(sizeof(UString::Rep) * 0x100)))
+ : m_base(m_characters, numCharactersToStore)
{
- for (unsigned i = 0; i < 0x100; ++i) {
- characters[i] = i;
- reps[i].offset = i;
- reps[i].len = 1;
- reps[i].rc = 1;
- reps[i].baseString = &reps[0];
- }
- reps[0].rc = 0x101;
- reps[0].buf = characters;
-
+ m_base.rc = numCharactersToStore + 1;
// make sure UString doesn't try to reuse the buffer by pretending we have one more character in it
- reps[0].usedCapacity = 0x101;
- reps[0].capacity = 0x101;
-}
+ m_base.usedCapacity = numCharactersToStore + 1;
+ m_base.capacity = numCharactersToStore + 1;
+ m_base.checkConsistency();
-SmallStringsStorage::~SmallStringsStorage()
-{
- fastFree(reps);
+ for (unsigned i = 0; i < numCharactersToStore; ++i)
+ m_characters[i] = i;
+
+ memset(&m_reps, 0, sizeof(m_reps));
+ for (unsigned i = 0; i < numCharactersToStore; ++i) {
+ m_reps[i].offset = i;
+ m_reps[i].len = 1;
+ m_reps[i].rc = 1;
+ m_reps[i].setBaseString(&m_base);
+ m_reps[i].checkConsistency();
+ }
}
SmallStrings::SmallStrings()
: m_emptyString(0)
, m_storage(0)
{
- for (unsigned i = 0; i < 0x100; ++i)
+ COMPILE_ASSERT(numCharactersToStore == sizeof(m_singleCharacterStrings) / sizeof(m_singleCharacterStrings[0]), IsNumCharactersConstInSyncWithClassUsage);
+
+ for (unsigned i = 0; i < numCharactersToStore; ++i)
m_singleCharacterStrings[i] = 0;
}
@@ -82,12 +86,24 @@ void SmallStrings::mark()
{
if (m_emptyString && !m_emptyString->marked())
m_emptyString->mark();
- for (unsigned i = 0; i < 0x100; ++i) {
+ for (unsigned i = 0; i < numCharactersToStore; ++i) {
if (m_singleCharacterStrings[i] && !m_singleCharacterStrings[i]->marked())
m_singleCharacterStrings[i]->mark();
}
}
-
+
+unsigned SmallStrings::count() const
+{
+ unsigned count = 0;
+ if (m_emptyString)
+ ++count;
+ for (unsigned i = 0; i < numCharactersToStore; ++i) {
+ if (m_singleCharacterStrings[i])
+ ++count;
+ }
+ return count;
+}
+
void SmallStrings::createEmptyString(JSGlobalData* globalData)
{
ASSERT(!m_emptyString);
@@ -109,4 +125,4 @@ UString::Rep* SmallStrings::singleCharacterStringRep(unsigned char character)
return m_storage->rep(character);
}
-}
+} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/SmallStrings.h b/src/3rdparty/webkit/JavaScriptCore/runtime/SmallStrings.h
index 7e5f5c8..e7f1170 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/SmallStrings.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/SmallStrings.h
@@ -55,9 +55,11 @@ namespace JSC {
}
UString::Rep* singleCharacterStringRep(unsigned char character);
-
+
void mark();
-
+
+ unsigned count() const;
+
private:
void createEmptyString(JSGlobalData*);
void createSingleCharacterString(JSGlobalData*, unsigned char);
@@ -66,7 +68,7 @@ namespace JSC {
JSString* m_singleCharacterStrings[0x100];
OwnPtr<SmallStringsStorage> m_storage;
};
-
-}
-#endif
+} // namespace JSC
+
+#endif // SmallStrings_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StringConstructor.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/StringConstructor.cpp
index bac819f..6380445 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/StringConstructor.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StringConstructor.cpp
@@ -21,26 +21,27 @@
#include "config.h"
#include "StringConstructor.h"
+#include "JSFunction.h"
#include "JSGlobalObject.h"
#include "PrototypeFunction.h"
#include "StringPrototype.h"
namespace JSC {
-static NEVER_INLINE JSValuePtr stringFromCharCodeSlowCase(ExecState* exec, const ArgList& args)
+static NEVER_INLINE JSValue stringFromCharCodeSlowCase(ExecState* exec, const ArgList& args)
{
UChar* buf = static_cast<UChar*>(fastMalloc(args.size() * sizeof(UChar)));
UChar* p = buf;
ArgList::const_iterator end = args.end();
for (ArgList::const_iterator it = args.begin(); it != end; ++it)
- *p++ = static_cast<UChar>((*it).jsValue(exec)->toUInt32(exec));
+ *p++ = static_cast<UChar>((*it).toUInt32(exec));
return jsString(exec, UString(buf, p - buf, false));
}
-static JSValuePtr stringFromCharCode(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL stringFromCharCode(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
if (LIKELY(args.size() == 1))
- return jsSingleCharacterString(exec, args.at(exec, 0)->toUInt32(exec));
+ return jsSingleCharacterString(exec, args.at(0).toUInt32(exec));
return stringFromCharCodeSlowCase(exec, args);
}
@@ -53,7 +54,7 @@ StringConstructor::StringConstructor(ExecState* exec, PassRefPtr<Structure> stru
putDirectWithoutTransition(exec->propertyNames().prototype, stringPrototype, ReadOnly | DontEnum | DontDelete);
// ECMA 15.5.3.2 fromCharCode()
- putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, prototypeFunctionStructure, 1, exec->propertyNames().fromCharCode, stringFromCharCode), DontEnum);
+ putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, prototypeFunctionStructure, 1, exec->propertyNames().fromCharCode, stringFromCharCode), DontEnum);
// no. of arguments for constructor
putDirectWithoutTransition(exec->propertyNames().length, jsNumber(exec, 1), ReadOnly | DontEnum | DontDelete);
@@ -64,7 +65,7 @@ static JSObject* constructWithStringConstructor(ExecState* exec, JSObject*, cons
{
if (args.isEmpty())
return new (exec) StringObject(exec, exec->lexicalGlobalObject()->stringObjectStructure());
- return new (exec) StringObject(exec, exec->lexicalGlobalObject()->stringObjectStructure(), args.at(exec, 0)->toString(exec));
+ return new (exec) StringObject(exec, exec->lexicalGlobalObject()->stringObjectStructure(), args.at(0).toString(exec));
}
ConstructType StringConstructor::getConstructData(ConstructData& constructData)
@@ -74,11 +75,11 @@ ConstructType StringConstructor::getConstructData(ConstructData& constructData)
}
// ECMA 15.5.1
-static JSValuePtr callStringConstructor(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL callStringConstructor(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
if (args.isEmpty())
return jsEmptyString(exec);
- return jsString(exec, args.at(exec, 0)->toString(exec));
+ return jsString(exec, args.at(0).toString(exec));
}
CallType StringConstructor::getCallData(CallData& callData)
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.cpp
index 093f5de..fb44498 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.cpp
@@ -61,7 +61,7 @@ bool StringObject::getOwnPropertySlot(ExecState* exec, unsigned propertyName, Pr
return JSObject::getOwnPropertySlot(exec, Identifier::from(exec, propertyName), slot);
}
-void StringObject::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void StringObject::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
if (propertyName == exec->propertyNames().length)
return;
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.h b/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.h
index 540c576..ea3a045 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.h
@@ -36,16 +36,16 @@ namespace JSC {
virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
virtual bool getOwnPropertySlot(ExecState*, unsigned propertyName, PropertySlot&);
- virtual void put(ExecState* exec, const Identifier& propertyName, JSValuePtr, PutPropertySlot&);
+ virtual void put(ExecState* exec, const Identifier& propertyName, JSValue, PutPropertySlot&);
virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
virtual void getPropertyNames(ExecState*, PropertyNameArray&);
virtual const ClassInfo* classInfo() const { return &info; }
- static const ClassInfo info;
+ static const JS_EXPORTDATA ClassInfo info;
JSString* internalValue() const { return asString(JSWrapperObject::internalValue());}
- static PassRefPtr<Structure> createStructure(JSValuePtr prototype)
+ static PassRefPtr<Structure> createStructure(JSValue prototype)
{
return Structure::create(prototype, TypeInfo(ObjectType));
}
@@ -59,9 +59,9 @@ namespace JSC {
virtual JSString* toThisJSString(ExecState*);
};
- StringObject* asStringObject(JSValuePtr);
+ StringObject* asStringObject(JSValue);
- inline StringObject* asStringObject(JSValuePtr value)
+ inline StringObject* asStringObject(JSValue value)
{
ASSERT(asObject(value)->inherits(&StringObject::info));
return static_cast<StringObject*>(asObject(value));
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h b/src/3rdparty/webkit/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h
index 72c0f47..bc5c0a5 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h
@@ -42,7 +42,7 @@ namespace JSC {
{
}
- static PassRefPtr<Structure> createStructure(JSValuePtr proto)
+ static PassRefPtr<Structure> createStructure(JSValue proto)
{
return Structure::create(proto, TypeInfo(ObjectType, MasqueradesAsUndefined));
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StringPrototype.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/StringPrototype.cpp
index 1f43cd6..d6939cb 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/StringPrototype.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StringPrototype.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "StringPrototype.h"
+#include "CachedCall.h"
#include "JSArray.h"
#include "JSFunction.h"
#include "ObjectPrototype.h"
@@ -37,36 +38,36 @@ namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(StringPrototype);
-static JSValuePtr stringProtoFuncToString(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncCharAt(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncCharCodeAt(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncConcat(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncIndexOf(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncLastIndexOf(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncMatch(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncReplace(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncSearch(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncSlice(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncSplit(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncSubstr(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncSubstring(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncToLowerCase(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncToUpperCase(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncLocaleCompare(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-
-static JSValuePtr stringProtoFuncBig(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncSmall(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncBlink(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncBold(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncFixed(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncItalics(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncStrike(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncSub(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncSup(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncFontcolor(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncFontsize(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncAnchor(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr stringProtoFuncLink(ExecState*, JSObject*, JSValuePtr, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncToString(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncCharAt(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncCharCodeAt(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncConcat(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncIndexOf(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncLastIndexOf(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncMatch(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncReplace(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncSearch(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncSlice(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncSplit(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncSubstr(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncSubstring(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncToLowerCase(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncToUpperCase(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncLocaleCompare(ExecState*, JSObject*, JSValue, const ArgList&);
+
+static JSValue JSC_HOST_CALL stringProtoFuncBig(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncSmall(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncBlink(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncBold(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncFixed(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncItalics(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncStrike(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncSub(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncSup(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncFontcolor(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncFontsize(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncAnchor(ExecState*, JSObject*, JSValue, const ArgList&);
+static JSValue JSC_HOST_CALL stringProtoFuncLink(ExecState*, JSObject*, JSValue, const ArgList&);
}
@@ -140,13 +141,12 @@ static inline UString substituteBackreferences(const UString& replacement, const
if (i + 1 == replacement.size())
break;
- unsigned short ref = replacement[i + 1];
+ UChar ref = replacement[i + 1];
if (ref == '$') {
// "$$" -> "$"
++i;
substitutedReplacement.append(replacement.data() + offset, i - offset);
offset = i + 1;
- substitutedReplacement.append('$');
continue;
}
@@ -205,21 +205,21 @@ static inline int localeCompare(const UString& a, const UString& b)
return Collator::userDefault()->collate(reinterpret_cast<const ::UChar*>(a.data()), a.size(), reinterpret_cast<const ::UChar*>(b.data()), b.size());
}
-JSValuePtr stringProtoFuncReplace(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncReplace(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- JSString* sourceVal = thisValue->toThisJSString(exec);
+ JSString* sourceVal = thisValue.toThisJSString(exec);
const UString& source = sourceVal->value();
- JSValuePtr pattern = args.at(exec, 0);
+ JSValue pattern = args.at(0);
- JSValuePtr replacement = args.at(exec, 1);
+ JSValue replacement = args.at(1);
UString replacementString;
CallData callData;
- CallType callType = replacement->getCallData(callData);
+ CallType callType = replacement.getCallData(callData);
if (callType == CallTypeNone)
- replacementString = replacement->toString(exec);
+ replacementString = replacement.toString(exec);
- if (pattern->isObject(&RegExpObject::info)) {
+ if (pattern.isObject(&RegExpObject::info)) {
RegExp* reg = asRegExpObject(pattern)->regExp();
bool global = reg->global();
@@ -232,167 +232,223 @@ JSValuePtr stringProtoFuncReplace(ExecState* exec, JSObject*, JSValuePtr thisVal
Vector<UString, 16> replacements;
// This is either a loop (if global is set) or a one-way (if not).
- do {
- int matchIndex;
- int matchLen;
- int* ovector;
- regExpConstructor->performMatch(reg, source, startPosition, matchIndex, matchLen, &ovector);
- if (matchIndex < 0)
- break;
-
- sourceRanges.append(UString::Range(lastIndex, matchIndex - lastIndex));
+ if (global && callType == CallTypeJS) {
+ // reg->numSubpatterns() + 1 for pattern args, + 2 for match start and sourceValue
+ int argCount = reg->numSubpatterns() + 1 + 2;
+ JSFunction* func = asFunction(replacement);
+ CachedCall cachedCall(exec, func, argCount, exec->exceptionSlot());
+ if (exec->hadException())
+ return jsNull();
+ while (true) {
+ int matchIndex;
+ int matchLen;
+ int* ovector;
+ regExpConstructor->performMatch(reg, source, startPosition, matchIndex, matchLen, &ovector);
+ if (matchIndex < 0)
+ break;
+
+ sourceRanges.append(UString::Range(lastIndex, matchIndex - lastIndex));
- if (callType != CallTypeNone) {
int completeMatchStart = ovector[0];
- ArgList args;
-
- for (unsigned i = 0; i < reg->numSubpatterns() + 1; ++i) {
+ unsigned i = 0;
+ for (; i < reg->numSubpatterns() + 1; ++i) {
int matchStart = ovector[i * 2];
int matchLen = ovector[i * 2 + 1] - matchStart;
if (matchStart < 0)
- args.append(jsUndefined());
+ cachedCall.setArgument(i, jsUndefined());
else
- args.append(jsSubstring(exec, source, matchStart, matchLen));
+ cachedCall.setArgument(i, jsSubstring(exec, source, matchStart, matchLen));
}
- args.append(jsNumber(exec, completeMatchStart));
- args.append(sourceVal);
-
- replacements.append(call(exec, replacement, callType, callData, exec->globalThisValue(), args)->toString(exec));
+ cachedCall.setArgument(i++, jsNumber(exec, completeMatchStart));
+ cachedCall.setArgument(i++, sourceVal);
+
+ cachedCall.setThis(exec->globalThisValue());
+ replacements.append(cachedCall.call().toString(cachedCall.newCallFrame()));
if (exec->hadException())
break;
- } else
- replacements.append(substituteBackreferences(replacementString, source, ovector, reg));
- lastIndex = matchIndex + matchLen;
- startPosition = lastIndex;
+ lastIndex = matchIndex + matchLen;
+ startPosition = lastIndex;
- // special case of empty match
- if (matchLen == 0) {
- startPosition++;
- if (startPosition > source.size())
+ // special case of empty match
+ if (matchLen == 0) {
+ startPosition++;
+ if (startPosition > source.size())
+ break;
+ }
+ }
+ } else {
+ do {
+ int matchIndex;
+ int matchLen;
+ int* ovector;
+ regExpConstructor->performMatch(reg, source, startPosition, matchIndex, matchLen, &ovector);
+ if (matchIndex < 0)
break;
- }
- } while (global);
- if (lastIndex < source.size())
- sourceRanges.append(UString::Range(lastIndex, source.size() - lastIndex));
+ sourceRanges.append(UString::Range(lastIndex, matchIndex - lastIndex));
- UString result = source.spliceSubstringsWithSeparators(sourceRanges.data(), sourceRanges.size(), replacements.data(), replacements.size());
+ if (callType != CallTypeNone) {
+ int completeMatchStart = ovector[0];
+ MarkedArgumentBuffer args;
- if (result == source)
+ for (unsigned i = 0; i < reg->numSubpatterns() + 1; ++i) {
+ int matchStart = ovector[i * 2];
+ int matchLen = ovector[i * 2 + 1] - matchStart;
+
+ if (matchStart < 0)
+ args.append(jsUndefined());
+ else
+ args.append(jsSubstring(exec, source, matchStart, matchLen));
+ }
+
+ args.append(jsNumber(exec, completeMatchStart));
+ args.append(sourceVal);
+
+ replacements.append(call(exec, replacement, callType, callData, exec->globalThisValue(), args).toString(exec));
+ if (exec->hadException())
+ break;
+ } else
+ replacements.append(substituteBackreferences(replacementString, source, ovector, reg));
+
+ lastIndex = matchIndex + matchLen;
+ startPosition = lastIndex;
+
+ // special case of empty match
+ if (matchLen == 0) {
+ startPosition++;
+ if (startPosition > source.size())
+ break;
+ }
+ } while (global);
+ }
+
+ if (!lastIndex && replacements.isEmpty())
return sourceVal;
- return jsString(exec, result);
+ if (lastIndex < source.size())
+ sourceRanges.append(UString::Range(lastIndex, source.size() - lastIndex));
+
+ return jsString(exec, source.spliceSubstringsWithSeparators(sourceRanges.data(), sourceRanges.size(),
+ replacements.data(), replacements.size()));
}
- // First arg is a string
- UString patternString = pattern->toString(exec);
+ // Not a regular expression, so treat the pattern as a string.
+
+ UString patternString = pattern.toString(exec);
int matchPos = source.find(patternString);
- int matchLen = patternString.size();
- // Do the replacement
+
if (matchPos == -1)
return sourceVal;
+ int matchLen = patternString.size();
if (callType != CallTypeNone) {
- ArgList args;
+ MarkedArgumentBuffer args;
args.append(jsSubstring(exec, source, matchPos, matchLen));
args.append(jsNumber(exec, matchPos));
args.append(sourceVal);
- replacementString = call(exec, replacement, callType, callData, exec->globalThisValue(), args)->toString(exec);
+ replacementString = call(exec, replacement, callType, callData, exec->globalThisValue(), args).toString(exec);
}
int ovector[2] = { matchPos, matchPos + matchLen };
- return jsString(exec, source.substr(0, matchPos)
- + substituteBackreferences(replacementString, source, ovector, 0)
- + source.substr(matchPos + matchLen));
+ return jsString(exec, source.replaceRange(matchPos, matchLen, substituteBackreferences(replacementString, source, ovector, 0)));
}
-JSValuePtr stringProtoFuncToString(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncToString(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
// Also used for valueOf.
- if (thisValue->isString())
+ if (thisValue.isString())
return thisValue;
- if (thisValue->isObject(&StringObject::info))
+ if (thisValue.isObject(&StringObject::info))
return asStringObject(thisValue)->internalValue();
return throwError(exec, TypeError);
}
-JSValuePtr stringProtoFuncCharAt(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncCharAt(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
unsigned len = s.size();
- JSValuePtr a0 = args.at(exec, 0);
- if (JSImmediate::isNumber(a0)) {
- uint32_t i;
- if (JSImmediate::getUInt32(a0, i) && i < len)
+ JSValue a0 = args.at(0);
+ if (a0.isUInt32Fast()) {
+ uint32_t i = a0.getUInt32Fast();
+ if (i < len)
return jsSingleCharacterSubstring(exec, s, i);
return jsEmptyString(exec);
}
- double dpos = a0->toInteger(exec);
+ double dpos = a0.toInteger(exec);
if (dpos >= 0 && dpos < len)
return jsSingleCharacterSubstring(exec, s, static_cast<unsigned>(dpos));
return jsEmptyString(exec);
}
-JSValuePtr stringProtoFuncCharCodeAt(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncCharCodeAt(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
unsigned len = s.size();
- JSValuePtr a0 = args.at(exec, 0);
- if (JSImmediate::isNumber(a0)) {
- uint32_t i;
- if (JSImmediate::getUInt32(a0, i) && i < len)
+ JSValue a0 = args.at(0);
+ if (a0.isUInt32Fast()) {
+ uint32_t i = a0.getUInt32Fast();
+ if (i < len)
return jsNumber(exec, s.data()[i]);
return jsNaN(exec);
}
- double dpos = a0->toInteger(exec);
+ double dpos = a0.toInteger(exec);
if (dpos >= 0 && dpos < len)
return jsNumber(exec, s[static_cast<int>(dpos)]);
return jsNaN(exec);
}
-JSValuePtr stringProtoFuncConcat(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncConcat(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
ArgList::const_iterator end = args.end();
for (ArgList::const_iterator it = args.begin(); it != end; ++it)
- s += (*it).jsValue(exec)->toString(exec);
+ s += (*it).toString(exec);
return jsString(exec, s);
}
-JSValuePtr stringProtoFuncIndexOf(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncIndexOf(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
int len = s.size();
- JSValuePtr a0 = args.at(exec, 0);
- JSValuePtr a1 = args.at(exec, 1);
- UString u2 = a0->toString(exec);
- double dpos = a1->toInteger(exec);
- if (dpos < 0)
- dpos = 0;
- else if (dpos > len)
- dpos = len;
- return jsNumber(exec, s.find(u2, static_cast<int>(dpos)));
+ JSValue a0 = args.at(0);
+ JSValue a1 = args.at(1);
+ UString u2 = a0.toString(exec);
+ int pos;
+ if (a1.isUndefined())
+ pos = 0;
+ else if (a1.isUInt32Fast())
+ pos = min<uint32_t>(a1.getUInt32Fast(), len);
+ else {
+ double dpos = a1.toInteger(exec);
+ if (dpos < 0)
+ dpos = 0;
+ else if (dpos > len)
+ dpos = len;
+ pos = static_cast<int>(dpos);
+ }
+
+ return jsNumber(exec, s.find(u2, pos));
}
-JSValuePtr stringProtoFuncLastIndexOf(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncLastIndexOf(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
int len = s.size();
- JSValuePtr a0 = args.at(exec, 0);
- JSValuePtr a1 = args.at(exec, 1);
+ JSValue a0 = args.at(0);
+ JSValue a1 = args.at(1);
- UString u2 = a0->toString(exec);
- double dpos = a1->toIntegerPreserveNaN(exec);
+ UString u2 = a0.toString(exec);
+ double dpos = a1.toIntegerPreserveNaN(exec);
if (dpos < 0)
dpos = 0;
else if (!(dpos <= len)) // true for NaN
@@ -400,16 +456,16 @@ JSValuePtr stringProtoFuncLastIndexOf(ExecState* exec, JSObject*, JSValuePtr thi
return jsNumber(exec, s.rfind(u2, static_cast<int>(dpos)));
}
-JSValuePtr stringProtoFuncMatch(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncMatch(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
- JSValuePtr a0 = args.at(exec, 0);
+ JSValue a0 = args.at(0);
UString u = s;
RefPtr<RegExp> reg;
RegExpObject* imp = 0;
- if (a0->isObject(&RegExpObject::info))
+ if (a0.isObject(&RegExpObject::info))
reg = asRegExpObject(a0)->regExp();
else {
/*
@@ -417,7 +473,7 @@ JSValuePtr stringProtoFuncMatch(ExecState* exec, JSObject*, JSValuePtr thisValue
* If regexp is not an object whose [[Class]] property is "RegExp", it is
* replaced with the result of the expression new RegExp(regexp).
*/
- reg = RegExp::create(&exec->globalData(), a0->toString(exec));
+ reg = RegExp::create(&exec->globalData(), a0.toString(exec));
}
RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
int pos;
@@ -431,7 +487,7 @@ JSValuePtr stringProtoFuncMatch(ExecState* exec, JSObject*, JSValuePtr thisValue
}
// return array of matches
- ArgList list;
+ MarkedArgumentBuffer list;
int lastIndex = 0;
while (pos >= 0) {
list.append(jsSubstring(exec, u, pos, matchLength));
@@ -451,15 +507,15 @@ JSValuePtr stringProtoFuncMatch(ExecState* exec, JSObject*, JSValuePtr thisValue
return constructArray(exec, list);
}
-JSValuePtr stringProtoFuncSearch(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncSearch(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
- JSValuePtr a0 = args.at(exec, 0);
+ JSValue a0 = args.at(0);
UString u = s;
RefPtr<RegExp> reg;
- if (a0->isObject(&RegExpObject::info))
+ if (a0.isObject(&RegExpObject::info))
reg = asRegExpObject(a0)->regExp();
else {
/*
@@ -467,7 +523,7 @@ JSValuePtr stringProtoFuncSearch(ExecState* exec, JSObject*, JSValuePtr thisValu
* If regexp is not an object whose [[Class]] property is "RegExp", it is
* replaced with the result of the expression new RegExp(regexp).
*/
- reg = RegExp::create(&exec->globalData(), a0->toString(exec));
+ reg = RegExp::create(&exec->globalData(), a0.toString(exec));
}
RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
int pos;
@@ -476,17 +532,17 @@ JSValuePtr stringProtoFuncSearch(ExecState* exec, JSObject*, JSValuePtr thisValu
return jsNumber(exec, pos);
}
-JSValuePtr stringProtoFuncSlice(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncSlice(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
int len = s.size();
- JSValuePtr a0 = args.at(exec, 0);
- JSValuePtr a1 = args.at(exec, 1);
+ JSValue a0 = args.at(0);
+ JSValue a1 = args.at(1);
// The arg processing is very much like ArrayProtoFunc::Slice
- double start = a0->toInteger(exec);
- double end = a1->isUndefined() ? len : a1->toInteger(exec);
+ double start = a0.toInteger(exec);
+ double end = a1.isUndefined() ? len : a1.toInteger(exec);
double from = start < 0 ? len + start : start;
double to = end < 0 ? len + end : end;
if (to > from && to > 0 && from < len) {
@@ -500,18 +556,18 @@ JSValuePtr stringProtoFuncSlice(ExecState* exec, JSObject*, JSValuePtr thisValue
return jsEmptyString(exec);
}
-JSValuePtr stringProtoFuncSplit(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncSplit(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
- JSValuePtr a0 = args.at(exec, 0);
- JSValuePtr a1 = args.at(exec, 1);
+ JSValue a0 = args.at(0);
+ JSValue a1 = args.at(1);
JSArray* result = constructEmptyArray(exec);
unsigned i = 0;
int p0 = 0;
- unsigned limit = a1->isUndefined() ? 0xFFFFFFFFU : a1->toUInt32(exec);
- if (a0->isObject(&RegExpObject::info)) {
+ unsigned limit = a1.isUndefined() ? 0xFFFFFFFFU : a1.toUInt32(exec);
+ if (a0.isObject(&RegExpObject::info)) {
RegExp* reg = asRegExpObject(a0)->regExp();
if (s.isEmpty() && reg->match(s, 0) >= 0) {
// empty string matched by regexp -> empty array
@@ -538,7 +594,7 @@ JSValuePtr stringProtoFuncSplit(ExecState* exec, JSObject*, JSValuePtr thisValue
}
}
} else {
- UString u2 = a0->toString(exec);
+ UString u2 = a0.toString(exec);
if (u2.isEmpty()) {
if (s.isEmpty()) {
// empty separator matches empty string -> empty array
@@ -562,16 +618,16 @@ JSValuePtr stringProtoFuncSplit(ExecState* exec, JSObject*, JSValuePtr thisValue
return result;
}
-JSValuePtr stringProtoFuncSubstr(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncSubstr(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
int len = s.size();
- JSValuePtr a0 = args.at(exec, 0);
- JSValuePtr a1 = args.at(exec, 1);
+ JSValue a0 = args.at(0);
+ JSValue a1 = args.at(1);
- double start = a0->toInteger(exec);
- double length = a1->isUndefined() ? len : a1->toInteger(exec);
+ double start = a0.toInteger(exec);
+ double length = a1.isUndefined() ? len : a1.toInteger(exec);
if (start >= len || length <= 0)
return jsEmptyString(exec);
if (start < 0) {
@@ -584,16 +640,16 @@ JSValuePtr stringProtoFuncSubstr(ExecState* exec, JSObject*, JSValuePtr thisValu
return jsSubstring(exec, s, static_cast<unsigned>(start), static_cast<unsigned>(length));
}
-JSValuePtr stringProtoFuncSubstring(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncSubstring(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
int len = s.size();
- JSValuePtr a0 = args.at(exec, 0);
- JSValuePtr a1 = args.at(exec, 1);
+ JSValue a0 = args.at(0);
+ JSValue a1 = args.at(1);
- double start = a0->toNumber(exec);
- double end = a1->toNumber(exec);
+ double start = a0.toNumber(exec);
+ double end = a1.toNumber(exec);
if (isnan(start))
start = 0;
if (isnan(end))
@@ -606,7 +662,7 @@ JSValuePtr stringProtoFuncSubstring(ExecState* exec, JSObject*, JSValuePtr thisV
start = len;
if (end > len)
end = len;
- if (a1->isUndefined())
+ if (a1.isUndefined())
end = len;
if (start > end) {
double temp = end;
@@ -616,9 +672,9 @@ JSValuePtr stringProtoFuncSubstring(ExecState* exec, JSObject*, JSValuePtr thisV
return jsSubstring(exec, s, static_cast<unsigned>(start), static_cast<unsigned>(end) - static_cast<unsigned>(start));
}
-JSValuePtr stringProtoFuncToLowerCase(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncToLowerCase(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- JSString* sVal = thisValue->toThisJSString(exec);
+ JSString* sVal = thisValue.toThisJSString(exec);
const UString& s = sVal->value();
int sSize = s.size();
@@ -650,9 +706,9 @@ JSValuePtr stringProtoFuncToLowerCase(ExecState* exec, JSObject*, JSValuePtr thi
return jsString(exec, UString(buffer.releaseBuffer(), length, false));
}
-JSValuePtr stringProtoFuncToUpperCase(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncToUpperCase(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- JSString* sVal = thisValue->toThisJSString(exec);
+ JSString* sVal = thisValue.toThisJSString(exec);
const UString& s = sVal->value();
int sSize = s.size();
@@ -684,96 +740,155 @@ JSValuePtr stringProtoFuncToUpperCase(ExecState* exec, JSObject*, JSValuePtr thi
return jsString(exec, UString(buffer.releaseBuffer(), length, false));
}
-JSValuePtr stringProtoFuncLocaleCompare(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncLocaleCompare(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
if (args.size() < 1)
return jsNumber(exec, 0);
- UString s = thisValue->toThisString(exec);
- JSValuePtr a0 = args.at(exec, 0);
- return jsNumber(exec, localeCompare(s, a0->toString(exec)));
+ UString s = thisValue.toThisString(exec);
+ JSValue a0 = args.at(0);
+ return jsNumber(exec, localeCompare(s, a0.toString(exec)));
}
-JSValuePtr stringProtoFuncBig(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncBig(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- UString s = thisValue->toThisString(exec);
- return jsString(exec, "<big>" + s + "</big>");
+ UString s = thisValue.toThisString(exec);
+ return jsNontrivialString(exec, "<big>" + s + "</big>");
}
-JSValuePtr stringProtoFuncSmall(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncSmall(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- UString s = thisValue->toThisString(exec);
- return jsString(exec, "<small>" + s + "</small>");
+ UString s = thisValue.toThisString(exec);
+ return jsNontrivialString(exec, "<small>" + s + "</small>");
}
-JSValuePtr stringProtoFuncBlink(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncBlink(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- UString s = thisValue->toThisString(exec);
- return jsString(exec, "<blink>" + s + "</blink>");
+ UString s = thisValue.toThisString(exec);
+ return jsNontrivialString(exec, "<blink>" + s + "</blink>");
}
-JSValuePtr stringProtoFuncBold(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncBold(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- UString s = thisValue->toThisString(exec);
- return jsString(exec, "<b>" + s + "</b>");
+ UString s = thisValue.toThisString(exec);
+ return jsNontrivialString(exec, "<b>" + s + "</b>");
}
-JSValuePtr stringProtoFuncFixed(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncFixed(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- UString s = thisValue->toThisString(exec);
+ UString s = thisValue.toThisString(exec);
return jsString(exec, "<tt>" + s + "</tt>");
}
-JSValuePtr stringProtoFuncItalics(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncItalics(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- UString s = thisValue->toThisString(exec);
- return jsString(exec, "<i>" + s + "</i>");
+ UString s = thisValue.toThisString(exec);
+ return jsNontrivialString(exec, "<i>" + s + "</i>");
}
-JSValuePtr stringProtoFuncStrike(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncStrike(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- UString s = thisValue->toThisString(exec);
- return jsString(exec, "<strike>" + s + "</strike>");
+ UString s = thisValue.toThisString(exec);
+ return jsNontrivialString(exec, "<strike>" + s + "</strike>");
}
-JSValuePtr stringProtoFuncSub(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncSub(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- UString s = thisValue->toThisString(exec);
- return jsString(exec, "<sub>" + s + "</sub>");
+ UString s = thisValue.toThisString(exec);
+ return jsNontrivialString(exec, "<sub>" + s + "</sub>");
}
-JSValuePtr stringProtoFuncSup(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
+JSValue JSC_HOST_CALL stringProtoFuncSup(ExecState* exec, JSObject*, JSValue thisValue, const ArgList&)
{
- UString s = thisValue->toThisString(exec);
- return jsString(exec, "<sup>" + s + "</sup>");
+ UString s = thisValue.toThisString(exec);
+ return jsNontrivialString(exec, "<sup>" + s + "</sup>");
}
-JSValuePtr stringProtoFuncFontcolor(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncFontcolor(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
- JSValuePtr a0 = args.at(exec, 0);
- return jsString(exec, "<font color=\"" + a0->toString(exec) + "\">" + s + "</font>");
+ UString s = thisValue.toThisString(exec);
+ JSValue a0 = args.at(0);
+ return jsNontrivialString(exec, "<font color=\"" + a0.toString(exec) + "\">" + s + "</font>");
}
-JSValuePtr stringProtoFuncFontsize(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
+JSValue JSC_HOST_CALL stringProtoFuncFontsize(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
{
- UString s = thisValue->toThisString(exec);
- JSValuePtr a0 = args.at(exec, 0);
- return jsString(exec, "<font size=\"" + a0->toString(exec) + "\">" + s + "</font>");
-}
+ UString s = thisValue.toThisString(exec);
+ JSValue a0 = args.at(0);
-JSValuePtr stringProtoFuncAnchor(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
-{
- UString s = thisValue->toThisString(exec);
- JSValuePtr a0 = args.at(exec, 0);
- return jsString(exec, "<a name=\"" + a0->toString(exec) + "\">" + s + "</a>");
-}
+ uint32_t smallInteger;
+ if (a0.getUInt32(smallInteger) && smallInteger <= 9) {
+ unsigned stringSize = s.size();
+ unsigned bufferSize = 22 + stringSize;
+ UChar* buffer = static_cast<UChar*>(tryFastMalloc(bufferSize * sizeof(UChar)));
+ if (!buffer)
+ return jsUndefined();
+ buffer[0] = '<';
+ buffer[1] = 'f';
+ buffer[2] = 'o';
+ buffer[3] = 'n';
+ buffer[4] = 't';
+ buffer[5] = ' ';
+ buffer[6] = 's';
+ buffer[7] = 'i';
+ buffer[8] = 'z';
+ buffer[9] = 'e';
+ buffer[10] = '=';
+ buffer[11] = '"';
+ buffer[12] = '0' + smallInteger;
+ buffer[13] = '"';
+ buffer[14] = '>';
+ memcpy(&buffer[15], s.data(), stringSize * sizeof(UChar));
+ buffer[15 + stringSize] = '<';
+ buffer[16 + stringSize] = '/';
+ buffer[17 + stringSize] = 'f';
+ buffer[18 + stringSize] = 'o';
+ buffer[19 + stringSize] = 'n';
+ buffer[20 + stringSize] = 't';
+ buffer[21 + stringSize] = '>';
+ return jsNontrivialString(exec, UString(buffer, bufferSize, false));
+ }
-JSValuePtr stringProtoFuncLink(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
-{
- UString s = thisValue->toThisString(exec);
- JSValuePtr a0 = args.at(exec, 0);
- return jsString(exec, "<a href=\"" + a0->toString(exec) + "\">" + s + "</a>");
+ return jsNontrivialString(exec, "<font size=\"" + a0.toString(exec) + "\">" + s + "</font>");
+}
+
+JSValue JSC_HOST_CALL stringProtoFuncAnchor(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
+{
+ UString s = thisValue.toThisString(exec);
+ JSValue a0 = args.at(0);
+ return jsNontrivialString(exec, "<a name=\"" + a0.toString(exec) + "\">" + s + "</a>");
+}
+
+JSValue JSC_HOST_CALL stringProtoFuncLink(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
+{
+ UString s = thisValue.toThisString(exec);
+ JSValue a0 = args.at(0);
+ UString linkText = a0.toString(exec);
+
+ unsigned linkTextSize = linkText.size();
+ unsigned stringSize = s.size();
+ unsigned bufferSize = 15 + linkTextSize + stringSize;
+ UChar* buffer = static_cast<UChar*>(tryFastMalloc(bufferSize * sizeof(UChar)));
+ if (!buffer)
+ return jsUndefined();
+ buffer[0] = '<';
+ buffer[1] = 'a';
+ buffer[2] = ' ';
+ buffer[3] = 'h';
+ buffer[4] = 'r';
+ buffer[5] = 'e';
+ buffer[6] = 'f';
+ buffer[7] = '=';
+ buffer[8] = '"';
+ memcpy(&buffer[9], linkText.data(), linkTextSize * sizeof(UChar));
+ buffer[9 + linkTextSize] = '"';
+ buffer[10 + linkTextSize] = '>';
+ memcpy(&buffer[11 + linkTextSize], s.data(), stringSize * sizeof(UChar));
+ buffer[11 + linkTextSize + stringSize] = '<';
+ buffer[12 + linkTextSize + stringSize] = '/';
+ buffer[13 + linkTextSize + stringSize] = 'a';
+ buffer[14 + linkTextSize + stringSize] = '>';
+ return jsNontrivialString(exec, UString(buffer, bufferSize, false));
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp
index 5fcde7b..3597a5c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp
@@ -65,15 +65,15 @@ static const unsigned newTableSize = 16;
static WTF::RefCountedLeakCounter structureCounter("Structure");
#if ENABLE(JSC_MULTIPLE_THREADS)
-static Mutex ignoreSetMutex;
+static Mutex& ignoreSetMutex = *(new Mutex);
#endif
static bool shouldIgnoreLeaks;
-static HashSet<Structure*> ignoreSet;
+static HashSet<Structure*>& ignoreSet = *(new HashSet<Structure*>);
#endif
#if DUMP_STRUCTURE_ID_STATISTICS
-static HashSet<Structure*> liveStructureSet;
+static HashSet<Structure*>& liveStructureSet = *(new HashSet<Structure*>);
#endif
void Structure::dumpStatistics()
@@ -120,12 +120,10 @@ void Structure::dumpStatistics()
#endif
}
-Structure::Structure(JSValuePtr prototype, const TypeInfo& typeInfo)
+Structure::Structure(JSValue prototype, const TypeInfo& typeInfo)
: m_typeInfo(typeInfo)
, m_prototype(prototype)
- , m_cachedPrototypeChain(0)
- , m_previous(0)
- , m_nameInPrevious(0)
+ , m_specificValueInPrevious(0)
, m_propertyTable(0)
, m_propertyStorageCapacity(JSObject::inlineStorageCapacity)
, m_offset(noOffset)
@@ -136,7 +134,7 @@ Structure::Structure(JSValuePtr prototype, const TypeInfo& typeInfo)
, m_attributesInPrevious(0)
{
ASSERT(m_prototype);
- ASSERT(m_prototype->isObject() || m_prototype->isNull());
+ ASSERT(m_prototype.isObject() || m_prototype.isNull());
m_transitions.singleTransition = 0;
@@ -161,8 +159,8 @@ Structure::~Structure()
if (m_previous->m_usingSingleTransitionSlot) {
m_previous->m_transitions.singleTransition = 0;
} else {
- ASSERT(m_previous->m_transitions.table->contains(make_pair(m_nameInPrevious.get(), m_attributesInPrevious)));
- m_previous->m_transitions.table->remove(make_pair(m_nameInPrevious.get(), m_attributesInPrevious));
+ ASSERT(m_previous->m_transitions.table->contains(make_pair(m_nameInPrevious.get(), make_pair(m_attributesInPrevious, m_specificValueInPrevious))));
+ m_previous->m_transitions.table->remove(make_pair(m_nameInPrevious.get(), make_pair(m_attributesInPrevious, m_specificValueInPrevious)));
}
}
@@ -178,6 +176,8 @@ Structure::~Structure()
if (UString::Rep* key = m_propertyTable->entries()[i].key)
key->deref();
}
+
+ delete m_propertyTable->deletedOffsets;
fastFree(m_propertyTable);
}
@@ -280,59 +280,34 @@ void Structure::materializePropertyMap()
for (ptrdiff_t i = structures.size() - 2; i >= 0; --i) {
structure = structures[i];
structure->m_nameInPrevious->ref();
- PropertyMapEntry entry(structure->m_nameInPrevious.get(), structure->m_offset, structure->m_attributesInPrevious, ++m_propertyTable->lastIndexUsed);
+ PropertyMapEntry entry(structure->m_nameInPrevious.get(), structure->m_offset, structure->m_attributesInPrevious, structure->m_specificValueInPrevious, ++m_propertyTable->lastIndexUsed);
insertIntoPropertyMapHashTable(entry);
}
}
void Structure::getEnumerablePropertyNames(ExecState* exec, PropertyNameArray& propertyNames, JSObject* baseObject)
{
- bool shouldCache = propertyNames.cacheable() && !(propertyNames.size() || m_isDictionary);
+ bool shouldCache = propertyNames.shouldCache() && !(propertyNames.size() || m_isDictionary);
- if (shouldCache) {
- if (m_cachedPropertyNameArrayData) {
- if (structureChainsAreEqual(m_cachedPropertyNameArrayData->cachedPrototypeChain(), cachedPrototypeChain())) {
- propertyNames.setData(m_cachedPropertyNameArrayData);
- return;
- }
+ if (shouldCache && m_cachedPropertyNameArrayData) {
+ if (m_cachedPropertyNameArrayData->cachedPrototypeChain() == prototypeChain(exec)) {
+ propertyNames.setData(m_cachedPropertyNameArrayData);
+ return;
}
- propertyNames.setCacheable(false);
+ clearEnumerationCache();
}
- getEnumerablePropertyNamesInternal(propertyNames);
+ getEnumerableNamesFromPropertyTable(propertyNames);
+ getEnumerableNamesFromClassInfoTable(exec, baseObject->classInfo(), propertyNames);
- // Add properties from the static hashtables of properties
- for (const ClassInfo* info = baseObject->classInfo(); info; info = info->parentClass) {
- const HashTable* table = info->propHashTable(exec);
- if (!table)
- continue;
- table->initializeIfNeeded(exec);
- ASSERT(table->table);
-#if ENABLE(PERFECT_HASH_SIZE)
- int hashSizeMask = table->hashSizeMask;
-#else
- int hashSizeMask = table->compactSize - 1;
-#endif
- const HashEntry* entry = table->table;
- for (int i = 0; i <= hashSizeMask; ++i, ++entry) {
- if (entry->key() && !(entry->attributes() & DontEnum))
- propertyNames.add(entry->key());
- }
- }
-
- if (m_prototype->isObject())
+ if (m_prototype.isObject()) {
+ propertyNames.setShouldCache(false); // No need for our prototypes to waste memory on caching, since they're not being enumerated directly.
asObject(m_prototype)->getPropertyNames(exec, propertyNames);
+ }
if (shouldCache) {
- if (m_cachedPropertyNameArrayData)
- m_cachedPropertyNameArrayData->setCachedStructure(0);
-
m_cachedPropertyNameArrayData = propertyNames.data();
-
- StructureChain* chain = cachedPrototypeChain();
- if (!chain)
- chain = createCachedPrototypeChain();
- m_cachedPropertyNameArrayData->setCachedPrototypeChain(chain);
+ m_cachedPropertyNameArrayData->setCachedPrototypeChain(prototypeChain(exec));
m_cachedPropertyNameArrayData->setCachedStructure(this);
}
}
@@ -352,20 +327,69 @@ void Structure::growPropertyStorageCapacity()
m_propertyStorageCapacity *= 2;
}
-PassRefPtr<Structure> Structure::addPropertyTransitionToExistingStructure(Structure* structure, const Identifier& propertyName, unsigned attributes, size_t& offset)
+void Structure::despecifyDictionaryFunction(const Identifier& propertyName)
+{
+ const UString::Rep* rep = propertyName._ustring.rep();
+
+ materializePropertyMapIfNecessary();
+
+ ASSERT(m_isDictionary);
+ ASSERT(m_propertyTable);
+
+ unsigned i = rep->computedHash();
+
+#if DUMP_PROPERTYMAP_STATS
+ ++numProbes;
+#endif
+
+ unsigned entryIndex = m_propertyTable->entryIndices[i & m_propertyTable->sizeMask];
+ ASSERT(entryIndex != emptyEntryIndex);
+
+ if (rep == m_propertyTable->entries()[entryIndex - 1].key) {
+ m_propertyTable->entries()[entryIndex - 1].specificValue = 0;
+ return;
+ }
+
+#if DUMP_PROPERTYMAP_STATS
+ ++numCollisions;
+#endif
+
+ unsigned k = 1 | doubleHash(rep->computedHash());
+
+ while (1) {
+ i += k;
+
+#if DUMP_PROPERTYMAP_STATS
+ ++numRehashes;
+#endif
+
+ entryIndex = m_propertyTable->entryIndices[i & m_propertyTable->sizeMask];
+ ASSERT(entryIndex != emptyEntryIndex);
+
+ if (rep == m_propertyTable->entries()[entryIndex - 1].key) {
+ m_propertyTable->entries()[entryIndex - 1].specificValue = 0;
+ return;
+ }
+ }
+}
+
+PassRefPtr<Structure> Structure::addPropertyTransitionToExistingStructure(Structure* structure, const Identifier& propertyName, unsigned attributes, JSCell* specificValue, size_t& offset)
{
ASSERT(!structure->m_isDictionary);
ASSERT(structure->typeInfo().type() == ObjectType);
if (structure->m_usingSingleTransitionSlot) {
Structure* existingTransition = structure->m_transitions.singleTransition;
- if (existingTransition && existingTransition->m_nameInPrevious.get() == propertyName.ustring().rep() && existingTransition->m_attributesInPrevious == attributes) {
+ if (existingTransition && existingTransition->m_nameInPrevious.get() == propertyName.ustring().rep()
+ && existingTransition->m_attributesInPrevious == attributes
+ && existingTransition->m_specificValueInPrevious == specificValue) {
+
ASSERT(structure->m_transitions.singleTransition->m_offset != noOffset);
offset = structure->m_transitions.singleTransition->m_offset;
return existingTransition;
}
} else {
- if (Structure* existingTransition = structure->m_transitions.table->get(make_pair(propertyName.ustring().rep(), attributes))) {
+ if (Structure* existingTransition = structure->m_transitions.table->get(make_pair(propertyName.ustring().rep(), make_pair(attributes, specificValue)))) {
ASSERT(existingTransition->m_offset != noOffset);
offset = existingTransition->m_offset;
return existingTransition;
@@ -375,25 +399,27 @@ PassRefPtr<Structure> Structure::addPropertyTransitionToExistingStructure(Struct
return 0;
}
-PassRefPtr<Structure> Structure::addPropertyTransition(Structure* structure, const Identifier& propertyName, unsigned attributes, size_t& offset)
+PassRefPtr<Structure> Structure::addPropertyTransition(Structure* structure, const Identifier& propertyName, unsigned attributes, JSCell* specificValue, size_t& offset)
{
ASSERT(!structure->m_isDictionary);
ASSERT(structure->typeInfo().type() == ObjectType);
- ASSERT(!Structure::addPropertyTransitionToExistingStructure(structure, propertyName, attributes, offset));
+ ASSERT(!Structure::addPropertyTransitionToExistingStructure(structure, propertyName, attributes, specificValue, offset));
if (structure->transitionCount() > s_maxTransitionLength) {
RefPtr<Structure> transition = toDictionaryTransition(structure);
- offset = transition->put(propertyName, attributes);
+ offset = transition->put(propertyName, attributes, specificValue);
if (transition->propertyStorageSize() > transition->propertyStorageCapacity())
transition->growPropertyStorageCapacity();
return transition.release();
}
RefPtr<Structure> transition = create(structure->m_prototype, structure->typeInfo());
+
transition->m_cachedPrototypeChain = structure->m_cachedPrototypeChain;
transition->m_previous = structure;
transition->m_nameInPrevious = propertyName.ustring().rep();
transition->m_attributesInPrevious = attributes;
+ transition->m_specificValueInPrevious = specificValue;
transition->m_propertyStorageCapacity = structure->m_propertyStorageCapacity;
transition->m_hasGetterSetterProperties = structure->m_hasGetterSetterProperties;
@@ -411,7 +437,7 @@ PassRefPtr<Structure> Structure::addPropertyTransition(Structure* structure, con
transition->createPropertyMapHashTable();
}
- offset = transition->put(propertyName, attributes);
+ offset = transition->put(propertyName, attributes, specificValue);
if (transition->propertyStorageSize() > transition->propertyStorageCapacity())
transition->growPropertyStorageCapacity();
@@ -427,9 +453,9 @@ PassRefPtr<Structure> Structure::addPropertyTransition(Structure* structure, con
structure->m_usingSingleTransitionSlot = false;
StructureTransitionTable* transitionTable = new StructureTransitionTable;
structure->m_transitions.table = transitionTable;
- transitionTable->add(make_pair(existingTransition->m_nameInPrevious.get(), existingTransition->m_attributesInPrevious), existingTransition);
+ transitionTable->add(make_pair(existingTransition->m_nameInPrevious.get(), make_pair(existingTransition->m_attributesInPrevious, existingTransition->m_specificValueInPrevious)), existingTransition);
}
- structure->m_transitions.table->add(make_pair(propertyName.ustring().rep(), attributes), transition.get());
+ structure->m_transitions.table->add(make_pair(propertyName.ustring().rep(), make_pair(attributes, specificValue)), transition.get());
return transition.release();
}
@@ -444,7 +470,7 @@ PassRefPtr<Structure> Structure::removePropertyTransition(Structure* structure,
return transition.release();
}
-PassRefPtr<Structure> Structure::changePrototypeTransition(Structure* structure, JSValuePtr prototype)
+PassRefPtr<Structure> Structure::changePrototypeTransition(Structure* structure, JSValue prototype)
{
RefPtr<Structure> transition = create(prototype, structure->typeInfo());
@@ -460,6 +486,25 @@ PassRefPtr<Structure> Structure::changePrototypeTransition(Structure* structure,
return transition.release();
}
+PassRefPtr<Structure> Structure::despecifyFunctionTransition(Structure* structure, const Identifier& replaceFunction)
+{
+ RefPtr<Structure> transition = create(structure->storedPrototype(), structure->typeInfo());
+
+ transition->m_propertyStorageCapacity = structure->m_propertyStorageCapacity;
+ transition->m_hasGetterSetterProperties = structure->m_hasGetterSetterProperties;
+
+ // Don't set m_offset, as one can not transition to this.
+
+ structure->materializePropertyMapIfNecessary();
+ transition->m_propertyTable = structure->copyPropertyTable();
+ transition->m_isPinnedPropertyTable = true;
+
+ bool removed = transition->despecifyFunction(replaceFunction);
+ ASSERT_UNUSED(removed, removed);
+
+ return transition.release();
+}
+
PassRefPtr<Structure> Structure::getterSetterTransition(Structure* structure)
{
RefPtr<Structure> transition = create(structure->storedPrototype(), structure->typeInfo());
@@ -507,14 +552,14 @@ PassRefPtr<Structure> Structure::fromDictionaryTransition(Structure* structure)
return structure;
}
-size_t Structure::addPropertyWithoutTransition(const Identifier& propertyName, unsigned attributes)
+size_t Structure::addPropertyWithoutTransition(const Identifier& propertyName, unsigned attributes, JSCell* specificValue)
{
ASSERT(!m_transitions.singleTransition);
materializePropertyMapIfNecessary();
m_isPinnedPropertyTable = true;
- size_t offset = put(propertyName, attributes);
+ size_t offset = put(propertyName, attributes, specificValue);
if (propertyStorageSize() > propertyStorageCapacity())
growPropertyStorageCapacity();
clearEnumerationCache();
@@ -534,20 +579,6 @@ size_t Structure::removePropertyWithoutTransition(const Identifier& propertyName
return offset;
}
-StructureChain* Structure::createCachedPrototypeChain()
-{
- ASSERT(typeInfo().type() == ObjectType);
- ASSERT(!m_cachedPrototypeChain);
-
- JSValuePtr prototype = storedPrototype();
- if (JSImmediate::isImmediate(prototype))
- return 0;
-
- RefPtr<StructureChain> chain = StructureChain::create(asObject(prototype)->structure());
- setCachedPrototypeChain(chain.release());
- return cachedPrototypeChain();
-}
-
#if DUMP_PROPERTYMAP_STATS
static int numProbes;
@@ -604,16 +635,12 @@ PropertyMapHashTable* Structure::copyPropertyTable()
return newTable;
}
-size_t Structure::get(const Identifier& propertyName, unsigned& attributes)
+size_t Structure::get(const UString::Rep* rep, unsigned& attributes, JSCell*& specificValue)
{
- ASSERT(!propertyName.isNull());
-
materializePropertyMapIfNecessary();
if (!m_propertyTable)
return notFound;
- UString::Rep* rep = propertyName._ustring.rep();
-
unsigned i = rep->computedHash();
#if DUMP_PROPERTYMAP_STATS
@@ -626,6 +653,7 @@ size_t Structure::get(const Identifier& propertyName, unsigned& attributes)
if (rep == m_propertyTable->entries()[entryIndex - 1].key) {
attributes = m_propertyTable->entries()[entryIndex - 1].attributes;
+ specificValue = m_propertyTable->entries()[entryIndex - 1].specificValue;
return m_propertyTable->entries()[entryIndex - 1].offset;
}
@@ -648,12 +676,64 @@ size_t Structure::get(const Identifier& propertyName, unsigned& attributes)
if (rep == m_propertyTable->entries()[entryIndex - 1].key) {
attributes = m_propertyTable->entries()[entryIndex - 1].attributes;
+ specificValue = m_propertyTable->entries()[entryIndex - 1].specificValue;
return m_propertyTable->entries()[entryIndex - 1].offset;
}
}
}
-size_t Structure::put(const Identifier& propertyName, unsigned attributes)
+bool Structure::despecifyFunction(const Identifier& propertyName)
+{
+ ASSERT(!propertyName.isNull());
+
+ materializePropertyMapIfNecessary();
+ if (!m_propertyTable)
+ return false;
+
+ UString::Rep* rep = propertyName._ustring.rep();
+
+ unsigned i = rep->computedHash();
+
+#if DUMP_PROPERTYMAP_STATS
+ ++numProbes;
+#endif
+
+ unsigned entryIndex = m_propertyTable->entryIndices[i & m_propertyTable->sizeMask];
+ if (entryIndex == emptyEntryIndex)
+ return false;
+
+ if (rep == m_propertyTable->entries()[entryIndex - 1].key) {
+ ASSERT(m_propertyTable->entries()[entryIndex - 1].specificValue);
+ m_propertyTable->entries()[entryIndex - 1].specificValue = 0;
+ return true;
+ }
+
+#if DUMP_PROPERTYMAP_STATS
+ ++numCollisions;
+#endif
+
+ unsigned k = 1 | doubleHash(rep->computedHash());
+
+ while (1) {
+ i += k;
+
+#if DUMP_PROPERTYMAP_STATS
+ ++numRehashes;
+#endif
+
+ entryIndex = m_propertyTable->entryIndices[i & m_propertyTable->sizeMask];
+ if (entryIndex == emptyEntryIndex)
+ return false;
+
+ if (rep == m_propertyTable->entries()[entryIndex - 1].key) {
+ ASSERT(m_propertyTable->entries()[entryIndex - 1].specificValue);
+ m_propertyTable->entries()[entryIndex - 1].specificValue = 0;
+ return true;
+ }
+ }
+}
+
+size_t Structure::put(const Identifier& propertyName, unsigned attributes, JSCell* specificValue)
{
ASSERT(!propertyName.isNull());
ASSERT(get(propertyName) == notFound);
@@ -723,6 +803,7 @@ size_t Structure::put(const Identifier& propertyName, unsigned attributes)
rep->ref();
m_propertyTable->entries()[entryIndex - 1].key = rep;
m_propertyTable->entries()[entryIndex - 1].attributes = attributes;
+ m_propertyTable->entries()[entryIndex - 1].specificValue = specificValue;
m_propertyTable->entries()[entryIndex - 1].index = ++m_propertyTable->lastIndexUsed;
unsigned newOffset;
@@ -795,6 +876,7 @@ size_t Structure::remove(const Identifier& propertyName)
key->deref();
m_propertyTable->entries()[entryIndex - 1].key = 0;
m_propertyTable->entries()[entryIndex - 1].attributes = 0;
+ m_propertyTable->entries()[entryIndex - 1].specificValue = 0;
m_propertyTable->entries()[entryIndex - 1].offset = 0;
if (!m_propertyTable->deletedOffsets)
@@ -922,7 +1004,7 @@ static int comparePropertyMapEntryIndices(const void* a, const void* b)
return 0;
}
-void Structure::getEnumerablePropertyNamesInternal(PropertyNameArray& propertyNames)
+void Structure::getEnumerableNamesFromPropertyTable(PropertyNameArray& propertyNames)
{
materializePropertyMapIfNecessary();
if (!m_propertyTable)
@@ -979,6 +1061,25 @@ void Structure::getEnumerablePropertyNamesInternal(PropertyNameArray& propertyNa
}
}
+void Structure::getEnumerableNamesFromClassInfoTable(ExecState* exec, const ClassInfo* classInfo, PropertyNameArray& propertyNames)
+{
+ // Add properties from the static hashtables of properties
+ for (; classInfo; classInfo = classInfo->parentClass) {
+ const HashTable* table = classInfo->propHashTable(exec);
+ if (!table)
+ continue;
+ table->initializeIfNeeded(exec);
+ ASSERT(table->table);
+
+ int hashSizeMask = table->compactSize - 1;
+ const HashEntry* entry = table->table;
+ for (int i = 0; i <= hashSizeMask; ++i, ++entry) {
+ if (entry->key() && !(entry->attributes() & DontEnum))
+ propertyNames.add(entry->key());
+ }
+ }
+}
+
#if DO_PROPERTYMAP_CONSTENCY_CHECK
void Structure::checkConsistency()
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.h
index c326b3f..866999d 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.h
@@ -51,7 +51,7 @@ namespace JSC {
class Structure : public RefCounted<Structure> {
public:
friend class JIT;
- static PassRefPtr<Structure> create(JSValuePtr prototype, const TypeInfo& typeInfo)
+ static PassRefPtr<Structure> create(JSValue prototype, const TypeInfo& typeInfo)
{
return adoptRef(new Structure(prototype, typeInfo));
}
@@ -61,10 +61,11 @@ namespace JSC {
static void dumpStatistics();
- static PassRefPtr<Structure> addPropertyTransition(Structure*, const Identifier& propertyName, unsigned attributes, size_t& offset);
- static PassRefPtr<Structure> addPropertyTransitionToExistingStructure(Structure*, const Identifier& propertyName, unsigned attributes, size_t& offset);
+ static PassRefPtr<Structure> addPropertyTransition(Structure*, const Identifier& propertyName, unsigned attributes, JSCell* specificValue, size_t& offset);
+ static PassRefPtr<Structure> addPropertyTransitionToExistingStructure(Structure*, const Identifier& propertyName, unsigned attributes, JSCell* specificValue, size_t& offset);
static PassRefPtr<Structure> removePropertyTransition(Structure*, const Identifier& propertyName, size_t& offset);
- static PassRefPtr<Structure> changePrototypeTransition(Structure*, JSValuePtr prototype);
+ static PassRefPtr<Structure> changePrototypeTransition(Structure*, JSValue prototype);
+ static PassRefPtr<Structure> despecifyFunctionTransition(Structure*, const Identifier&);
static PassRefPtr<Structure> getterSetterTransition(Structure*);
static PassRefPtr<Structure> toDictionaryTransition(Structure*);
static PassRefPtr<Structure> fromDictionaryTransition(Structure*);
@@ -73,34 +74,38 @@ namespace JSC {
void mark()
{
- if (!m_prototype->marked())
- m_prototype->mark();
+ if (!m_prototype.marked())
+ m_prototype.mark();
}
// These should be used with caution.
- size_t addPropertyWithoutTransition(const Identifier& propertyName, unsigned attributes);
+ size_t addPropertyWithoutTransition(const Identifier& propertyName, unsigned attributes, JSCell* specificValue);
size_t removePropertyWithoutTransition(const Identifier& propertyName);
- void setPrototypeWithoutTransition(JSValuePtr prototype) { m_prototype = prototype; }
+ void setPrototypeWithoutTransition(JSValue prototype) { m_prototype = prototype; }
bool isDictionary() const { return m_isDictionary; }
const TypeInfo& typeInfo() const { return m_typeInfo; }
- JSValuePtr storedPrototype() const { return m_prototype; }
- JSValuePtr prototypeForLookup(ExecState*);
+ JSValue storedPrototype() const { return m_prototype; }
+ JSValue prototypeForLookup(ExecState*) const;
+ StructureChain* prototypeChain(ExecState*) const;
Structure* previousID() const { return m_previous.get(); }
- StructureChain* createCachedPrototypeChain();
- void setCachedPrototypeChain(PassRefPtr<StructureChain> cachedPrototypeChain) { m_cachedPrototypeChain = cachedPrototypeChain; }
- StructureChain* cachedPrototypeChain() const { return m_cachedPrototypeChain.get(); }
-
void growPropertyStorageCapacity();
size_t propertyStorageCapacity() const { return m_propertyStorageCapacity; }
size_t propertyStorageSize() const { return m_propertyTable ? m_propertyTable->keyCount + (m_propertyTable->deletedOffsets ? m_propertyTable->deletedOffsets->size() : 0) : m_offset + 1; }
+ bool isUsingInlineStorage() const;
size_t get(const Identifier& propertyName);
- size_t get(const Identifier& propertyName, unsigned& attributes);
+ size_t get(const UString::Rep* rep, unsigned& attributes, JSCell*& specificValue);
+ size_t get(const Identifier& propertyName, unsigned& attributes, JSCell*& specificValue)
+ {
+ ASSERT(!propertyName.isNull());
+ return get(propertyName._ustring.rep(), attributes, specificValue);
+ }
+
void getEnumerablePropertyNames(ExecState*, PropertyNameArray&, JSObject*);
bool hasGetterSetterProperties() const { return m_hasGetterSetterProperties; }
@@ -108,12 +113,16 @@ namespace JSC {
bool isEmpty() const { return m_propertyTable ? !m_propertyTable->keyCount : m_offset == noOffset; }
+ JSCell* specificValue() { return m_specificValueInPrevious; }
+ void despecifyDictionaryFunction(const Identifier& propertyName);
+
private:
- Structure(JSValuePtr prototype, const TypeInfo&);
+ Structure(JSValue prototype, const TypeInfo&);
- size_t put(const Identifier& propertyName, unsigned attributes);
+ size_t put(const Identifier& propertyName, unsigned attributes, JSCell* specificValue);
size_t remove(const Identifier& propertyName);
- void getEnumerablePropertyNamesInternal(PropertyNameArray&);
+ void getEnumerableNamesFromPropertyTable(PropertyNameArray&);
+ void getEnumerableNamesFromClassInfoTable(ExecState*, const ClassInfo*, PropertyNameArray&);
void expandPropertyMapHashTable();
void rehashPropertyMapHashTable();
@@ -123,6 +132,8 @@ namespace JSC {
void insertIntoPropertyMapHashTable(const PropertyMapEntry&);
void checkConsistency();
+ bool despecifyFunction(const Identifier&);
+
PropertyMapHashTable* copyPropertyTable();
void materializePropertyMap();
void materializePropertyMapIfNecessary()
@@ -134,16 +145,13 @@ namespace JSC {
void clearEnumerationCache();
- void* addressOfCount()
- {
- return &m_refCount;
- }
-
signed char transitionCount() const
{
// Since the number of transitions is always the same as m_offset, we keep the size of Structure down by not storing both.
return m_offset == noOffset ? 0 : m_offset + 1;
}
+
+ bool isValid(ExecState*, StructureChain* cachedPrototypeChain) const;
static const unsigned emptyEntryIndex = 0;
@@ -153,8 +161,8 @@ namespace JSC {
TypeInfo m_typeInfo;
- JSValuePtr m_prototype;
- RefPtr<StructureChain> m_cachedPrototypeChain;
+ JSValue m_prototype;
+ mutable RefPtr<StructureChain> m_cachedPrototypeChain;
RefPtr<Structure> m_previous;
RefPtr<UString::Rep> m_nameInPrevious;
@@ -163,6 +171,7 @@ namespace JSC {
Structure* singleTransition;
StructureTransitionTable* table;
} m_transitions;
+ JSCell* m_specificValueInPrevious;
RefPtr<PropertyNameArrayData> m_cachedPropertyNameArrayData;
@@ -175,7 +184,7 @@ namespace JSC {
bool m_isPinnedPropertyTable : 1;
bool m_hasGetterSetterProperties : 1;
bool m_usingSingleTransitionSlot : 1;
- unsigned m_attributesInPrevious : 5;
+ unsigned m_attributesInPrevious : 7;
};
inline size_t Structure::get(const Identifier& propertyName)
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp
index 84c67c3..085876c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp
@@ -32,42 +32,18 @@
namespace JSC {
-StructureChain::StructureChain(Structure* structure)
+StructureChain::StructureChain(Structure* head)
{
- size_t size = 1;
-
- Structure* tmp = structure;
- while (!tmp->storedPrototype()->isNull()) {
+ size_t size = 0;
+ for (Structure* current = head; current; current = current->storedPrototype().isNull() ? 0 : asObject(current->storedPrototype())->structure())
++size;
- tmp = asCell(tmp->storedPrototype())->structure();
- }
m_vector.set(new RefPtr<Structure>[size + 1]);
- size_t i;
- for (i = 0; i < size - 1; ++i) {
- m_vector[i] = structure;
- structure = asObject(structure->storedPrototype())->structure();
- }
- m_vector[i] = structure;
- m_vector[i + 1] = 0;
-}
-
-bool structureChainsAreEqual(StructureChain* chainA, StructureChain* chainB)
-{
- if (!chainA || !chainB)
- return false;
-
- RefPtr<Structure>* a = chainA->head();
- RefPtr<Structure>* b = chainB->head();
- while (1) {
- if (*a != *b)
- return false;
- if (!*a)
- return true;
- a++;
- b++;
- }
+ size_t i = 0;
+ for (Structure* current = head; current; current = current->storedPrototype().isNull() ? 0 : asObject(current->storedPrototype())->structure())
+ m_vector[i++] = current;
+ m_vector[i] = 0;
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.h b/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.h
index a3a1be2..795e649 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.h
@@ -37,18 +37,15 @@ namespace JSC {
class StructureChain : public RefCounted<StructureChain> {
public:
- static PassRefPtr<StructureChain> create(Structure* structure) { return adoptRef(new StructureChain(structure)); }
-
+ static PassRefPtr<StructureChain> create(Structure* head) { return adoptRef(new StructureChain(head)); }
RefPtr<Structure>* head() { return m_vector.get(); }
private:
- StructureChain(Structure* structure);
+ StructureChain(Structure* head);
OwnArrayPtr<RefPtr<Structure> > m_vector;
};
- bool structureChainsAreEqual(StructureChain*, StructureChain*);
-
} // namespace JSC
#endif // StructureChain_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StructureTransitionTable.h b/src/3rdparty/webkit/JavaScriptCore/runtime/StructureTransitionTable.h
index 1543049..804cbeb 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/StructureTransitionTable.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StructureTransitionTable.h
@@ -37,7 +37,7 @@ namespace JSC {
class Structure;
struct StructureTransitionTableHash {
- typedef std::pair<RefPtr<UString::Rep>, unsigned> Key;
+ typedef std::pair<RefPtr<UString::Rep>, std::pair<unsigned, JSCell*> > Key;
static unsigned hash(const Key& p)
{
return p.first->computedHash();
@@ -53,13 +53,14 @@ namespace JSC {
struct StructureTransitionTableHashTraits {
typedef WTF::HashTraits<RefPtr<UString::Rep> > FirstTraits;
- typedef WTF::GenericHashTraits<unsigned> SecondTraits;
- typedef std::pair<FirstTraits::TraitType, SecondTraits::TraitType> TraitType;
+ typedef WTF::GenericHashTraits<unsigned> SecondFirstTraits;
+ typedef WTF::GenericHashTraits<JSCell*> SecondSecondTraits;
+ typedef std::pair<FirstTraits::TraitType, std::pair<SecondFirstTraits::TraitType, SecondSecondTraits::TraitType> > TraitType;
- static const bool emptyValueIsZero = FirstTraits::emptyValueIsZero && SecondTraits::emptyValueIsZero;
- static TraitType emptyValue() { return std::make_pair(FirstTraits::emptyValue(), SecondTraits::emptyValue()); }
+ static const bool emptyValueIsZero = FirstTraits::emptyValueIsZero && SecondFirstTraits::emptyValueIsZero && SecondSecondTraits::emptyValueIsZero;
+ static TraitType emptyValue() { return std::make_pair(FirstTraits::emptyValue(), std::make_pair(SecondFirstTraits::emptyValue(), SecondSecondTraits::emptyValue())); }
- static const bool needsDestruction = FirstTraits::needsDestruction || SecondTraits::needsDestruction;
+ static const bool needsDestruction = FirstTraits::needsDestruction || SecondFirstTraits::needsDestruction || SecondSecondTraits::needsDestruction;
static void constructDeletedValue(TraitType& slot) { FirstTraits::constructDeletedValue(slot.first); }
static bool isDeletedValue(const TraitType& value) { return FirstTraits::isDeletedValue(value.first); }
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.cpp
new file mode 100644
index 0000000..30ba6e9
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.cpp
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "TimeoutChecker.h"
+
+#include "CallFrame.h"
+#include "JSGlobalObject.h"
+
+#if PLATFORM(DARWIN)
+#include <mach/mach.h>
+#endif
+
+#if HAVE(SYS_TIME_H)
+#include <sys/time.h>
+#endif
+
+#if PLATFORM(WIN_OS)
+#include <windows.h>
+#endif
+
+#if PLATFORM(QT)
+#include <QDateTime>
+#endif
+
+using namespace std;
+
+namespace JSC {
+
+// Number of ticks before the first timeout check is done.
+static const int ticksUntilFirstCheck = 1024;
+
+// Number of milliseconds between each timeout check.
+static const int intervalBetweenChecks = 1000;
+
+// Returns the time the current thread has spent executing, in milliseconds.
+static inline unsigned getCPUTime()
+{
+#if PLATFORM(DARWIN)
+ mach_msg_type_number_t infoCount = THREAD_BASIC_INFO_COUNT;
+ thread_basic_info_data_t info;
+
+ // Get thread information
+ mach_port_t threadPort = mach_thread_self();
+ thread_info(threadPort, THREAD_BASIC_INFO, reinterpret_cast<thread_info_t>(&info), &infoCount);
+ mach_port_deallocate(mach_task_self(), threadPort);
+
+ unsigned time = info.user_time.seconds * 1000 + info.user_time.microseconds / 1000;
+ time += info.system_time.seconds * 1000 + info.system_time.microseconds / 1000;
+
+ return time;
+#elif HAVE(SYS_TIME_H)
+ // FIXME: This should probably use getrusage with the RUSAGE_THREAD flag.
+ struct timeval tv;
+ gettimeofday(&tv, 0);
+ return tv.tv_sec * 1000 + tv.tv_usec / 1000;
+#elif PLATFORM(QT)
+ QDateTime t = QDateTime::currentDateTime();
+ return t.toTime_t() * 1000 + t.time().msec();
+#elif PLATFORM(WIN_OS)
+ union {
+ FILETIME fileTime;
+ unsigned long long fileTimeAsLong;
+ } userTime, kernelTime;
+
+ // GetThreadTimes won't accept NULL arguments so we pass these even though
+ // they're not used.
+ FILETIME creationTime, exitTime;
+
+ GetThreadTimes(GetCurrentThread(), &creationTime, &exitTime, &kernelTime.fileTime, &userTime.fileTime);
+
+ return userTime.fileTimeAsLong / 10000 + kernelTime.fileTimeAsLong / 10000;
+#else
+#error Platform does not have getCurrentTime function
+#endif
+}
+
+TimeoutChecker::TimeoutChecker()
+ : m_timeoutInterval(0)
+ , m_startCount(0)
+{
+ reset();
+}
+
+void TimeoutChecker::reset()
+{
+ m_ticksUntilNextCheck = ticksUntilFirstCheck;
+ m_timeAtLastCheck = 0;
+ m_timeExecuting = 0;
+}
+
+bool TimeoutChecker::didTimeOut(ExecState* exec)
+{
+ unsigned currentTime = getCPUTime();
+
+ if (!m_timeAtLastCheck) {
+ // Suspicious amount of looping in a script -- start timing it
+ m_timeAtLastCheck = currentTime;
+ return false;
+ }
+
+ unsigned timeDiff = currentTime - m_timeAtLastCheck;
+
+ if (timeDiff == 0)
+ timeDiff = 1;
+
+ m_timeExecuting += timeDiff;
+ m_timeAtLastCheck = currentTime;
+
+ // Adjust the tick threshold so we get the next checkTimeout call in the
+ // interval specified in intervalBetweenChecks.
+ m_ticksUntilNextCheck = static_cast<unsigned>((static_cast<float>(intervalBetweenChecks) / timeDiff) * m_ticksUntilNextCheck);
+ // If the new threshold is 0 reset it to the default threshold. This can happen if the timeDiff is higher than the
+ // preferred script check time interval.
+ if (m_ticksUntilNextCheck == 0)
+ m_ticksUntilNextCheck = ticksUntilFirstCheck;
+
+ if (m_timeoutInterval && m_timeExecuting > m_timeoutInterval) {
+ if (exec->dynamicGlobalObject()->shouldInterruptScript())
+ return true;
+
+ reset();
+ }
+
+ return false;
+}
+
+} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.h b/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.h
new file mode 100644
index 0000000..7bfa6d0
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef TimeoutChecker_h
+#define TimeoutChecker_h
+
+#include <wtf/Assertions.h>
+
+namespace JSC {
+
+ class ExecState;
+
+ class TimeoutChecker {
+ public:
+ TimeoutChecker();
+
+ void setTimeoutInterval(unsigned timeoutInterval) { m_timeoutInterval = timeoutInterval; }
+
+ unsigned ticksUntilNextCheck() { return m_ticksUntilNextCheck; }
+
+ void start()
+ {
+ if (!m_startCount)
+ reset();
+ ++m_startCount;
+ }
+
+ void stop()
+ {
+ ASSERT(m_startCount);
+ --m_startCount;
+ }
+
+ void reset();
+
+ bool didTimeOut(ExecState*);
+
+ private:
+ unsigned m_timeoutInterval;
+ unsigned m_timeAtLastCheck;
+ unsigned m_timeExecuting;
+ unsigned m_startCount;
+ unsigned m_ticksUntilNextCheck;
+ };
+
+} // namespace JSC
+
+#endif // TimeoutChecker_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/TypeInfo.h b/src/3rdparty/webkit/JavaScriptCore/runtime/TypeInfo.h
index 52da347..70aeed3 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/TypeInfo.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/TypeInfo.h
@@ -35,13 +35,22 @@ namespace JSC {
static const unsigned MasqueradesAsUndefined = 1;
static const unsigned ImplementsHasInstance = 1 << 1;
static const unsigned OverridesHasInstance = 1 << 2;
- static const unsigned NeedsThisConversion = 1 << 3;
- static const unsigned HasStandardGetOwnPropertySlot = 1 << 4;
+ static const unsigned ImplementsDefaultHasInstance = 1 << 3;
+ static const unsigned NeedsThisConversion = 1 << 4;
+ static const unsigned HasStandardGetOwnPropertySlot = 1 << 5;
class TypeInfo {
friend class JIT;
public:
- TypeInfo(JSType type, unsigned flags = 0) : m_type(type), m_flags(flags) { }
+ TypeInfo(JSType type, unsigned flags = 0)
+ : m_type(type)
+ {
+ // ImplementsDefaultHasInstance means (ImplementsHasInstance & !OverridesHasInstance)
+ if ((flags & (ImplementsHasInstance | OverridesHasInstance)) == ImplementsHasInstance)
+ m_flags = flags | ImplementsDefaultHasInstance;
+ else
+ m_flags = flags;
+ }
JSType type() const { return m_type; }
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/UString.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/UString.cpp
index 45df248..0eb46da 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/UString.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/UString.cpp
@@ -1,7 +1,8 @@
/*
* Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
* Copyright (C) 2007 Cameron Zwarich (cwzwarich@uwaterloo.ca)
+ * Copyright (C) 2009 Google Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -61,6 +62,9 @@ namespace JSC {
extern const double NaN;
extern const double Inf;
+// This number must be at least 2 to avoid sharing empty, null as well as 1 character strings from SmallStrings.
+static const int minLengthToShare = 30;
+
static inline size_t overflowIndicator() { return std::numeric_limits<size_t>::max(); }
static inline size_t maxUChars() { return std::numeric_limits<size_t>::max() / sizeof(UChar); }
@@ -92,7 +96,7 @@ static inline void copyChars(UChar* destination, const UChar* source, unsigned n
memcpy(destination, source, numCharacters * sizeof(UChar));
}
-COMPILE_ASSERT(sizeof(UChar) == 2, uchar_is_2_bytes)
+COMPILE_ASSERT(sizeof(UChar) == 2, uchar_is_2_bytes);
CString::CString(const char* c)
: m_length(strlen(c))
@@ -186,86 +190,59 @@ bool operator==(const CString& c1, const CString& c2)
// These static strings are immutable, except for rc, whose initial value is chosen to
// reduce the possibility of it becoming zero due to ref/deref not being thread-safe.
static UChar sharedEmptyChar;
-UString::Rep UString::Rep::null = { 0, 0, INT_MAX / 2, 0, 1, &UString::Rep::null, 0, 0, 0, 0, 0, 0 };
-UString::Rep UString::Rep::empty = { 0, 0, INT_MAX / 2, 0, 1, &UString::Rep::empty, 0, &sharedEmptyChar, 0, 0, 0, 0 };
-
-static char* statBuffer = 0; // Only used for debugging via UString::ascii().
+UString::BaseString* UString::Rep::nullBaseString;
+UString::BaseString* UString::Rep::emptyBaseString;
+UString* UString::nullUString;
-PassRefPtr<UString::Rep> UString::Rep::createCopying(const UChar* d, int l)
+static void initializeStaticBaseString(UString::BaseString& base)
{
- UChar* copyD = static_cast<UChar*>(fastMalloc(l * sizeof(UChar)));
- copyChars(copyD, d, l);
- return create(copyD, l);
+ base.rc = INT_MAX / 2;
+ base.m_identifierTableAndFlags.setFlag(UString::Rep::StaticFlag);
+ base.checkConsistency();
}
-PassRefPtr<UString::Rep> UString::Rep::create(UChar* d, int l)
+void initializeUString()
{
- Rep* r = new Rep;
- r->offset = 0;
- r->len = l;
- r->rc = 1;
- r->_hash = 0;
- r->m_identifierTable = 0;
- r->baseString = r;
- r->reportedCost = 0;
- r->buf = d;
- r->usedCapacity = l;
- r->capacity = l;
- r->usedPreCapacity = 0;
- r->preCapacity = 0;
+ UString::Rep::nullBaseString = new UString::BaseString(0, 0);
+ initializeStaticBaseString(*UString::Rep::nullBaseString);
- r->checkConsistency();
+ UString::Rep::emptyBaseString = new UString::BaseString(&sharedEmptyChar, 0);
+ initializeStaticBaseString(*UString::Rep::emptyBaseString);
- // steal the single reference this Rep was created with
- return adoptRef(r);
+ UString::nullUString = new UString;
}
-PassRefPtr<UString::Rep> UString::Rep::create(PassRefPtr<Rep> base, int offset, int length)
-{
- ASSERT(base);
- base->checkConsistency();
-
- int baseOffset = base->offset;
-
- base = base->baseString;
-
- ASSERT(-(offset + baseOffset) <= base->usedPreCapacity);
- ASSERT(offset + baseOffset + length <= base->usedCapacity);
-
- Rep* r = new Rep;
- r->offset = baseOffset + offset;
- r->len = length;
- r->rc = 1;
- r->_hash = 0;
- r->m_identifierTable = 0;
- r->baseString = base.releaseRef();
- r->reportedCost = 0;
- r->buf = 0;
- r->usedCapacity = 0;
- r->capacity = 0;
- r->usedPreCapacity = 0;
- r->preCapacity = 0;
-
- r->checkConsistency();
+static char* statBuffer = 0; // Only used for debugging via UString::ascii().
- // steal the single reference this Rep was created with
- return adoptRef(r);
+PassRefPtr<UString::Rep> UString::Rep::createCopying(const UChar* d, int l)
+{
+ UChar* copyD = static_cast<UChar*>(fastMalloc(l * sizeof(UChar)));
+ copyChars(copyD, d, l);
+ return create(copyD, l);
}
PassRefPtr<UString::Rep> UString::Rep::createFromUTF8(const char* string)
{
if (!string)
- return &UString::Rep::null;
+ return &UString::Rep::null();
size_t length = strlen(string);
Vector<UChar, 1024> buffer(length);
UChar* p = buffer.data();
if (conversionOK != convertUTF8ToUTF16(&string, string + length, &p, p + length))
- return &UString::Rep::null;
+ return &UString::Rep::null();
return UString::Rep::createCopying(buffer.data(), p - buffer.data());
}
+PassRefPtr<UString::Rep> UString::Rep::create(UChar* string, int length, PassRefPtr<UString::SharedUChar> sharedBuffer)
+{
+ PassRefPtr<UString::Rep> rep = create(string, length);
+ rep->baseString()->setSharedBuffer(sharedBuffer);
+ rep->checkConsistency();
+ return rep;
+}
+
void UString::Rep::destroy()
{
checkConsistency();
@@ -275,10 +252,15 @@ void UString::Rep::destroy()
if (!isStatic()) {
if (identifierTable())
Identifier::remove(this);
- if (baseString == this)
- fastFree(buf);
- else
- baseString->deref();
+
+ UString::BaseString* base = baseString();
+ if (base == this) {
+ if (m_sharedBuffer)
+ m_sharedBuffer->deref();
+ else
+ fastFree(base->buf);
+ } else
+ base->deref();
delete this;
}
@@ -380,17 +362,10 @@ unsigned UString::Rep::computeHash(const char* s, int l)
#ifndef NDEBUG
void UString::Rep::checkConsistency() const
{
- // Only base strings have non-zero shared data.
- if (this != baseString) {
- ASSERT(!buf);
- ASSERT(!usedCapacity);
- ASSERT(!capacity);
- ASSERT(!usedPreCapacity);
- ASSERT(!preCapacity);
- }
+ const UString::BaseString* base = baseString();
// There is no recursion for base strings.
- ASSERT(baseString == baseString->baseString);
+ ASSERT(base == base->baseString());
if (isStatic()) {
// There are only two static strings: null and empty.
@@ -401,63 +376,148 @@ void UString::Rep::checkConsistency() const
}
// The string fits in buffer.
- ASSERT(baseString->usedPreCapacity <= baseString->preCapacity);
- ASSERT(baseString->usedCapacity <= baseString->capacity);
- ASSERT(-offset <= baseString->usedPreCapacity);
- ASSERT(offset + len <= baseString->usedCapacity);
+ ASSERT(base->usedPreCapacity <= base->preCapacity);
+ ASSERT(base->usedCapacity <= base->capacity);
+ ASSERT(-offset <= base->usedPreCapacity);
+ ASSERT(offset + len <= base->usedCapacity);
}
#endif
-// put these early so they can be inlined
-static inline size_t expandedSize(size_t size, size_t otherSize)
+UString::SharedUChar* UString::BaseString::sharedBuffer()
{
- // Do the size calculation in two parts, returning overflowIndicator if
- // we overflow the maximum value that we can handle.
- if (size > maxUChars())
- return overflowIndicator();
-
- size_t expandedSize = ((size + 10) / 10 * 11) + 1;
- if (maxUChars() - expandedSize < otherSize)
- return overflowIndicator();
+ if (len < minLengthToShare)
+ return 0;
- return expandedSize + otherSize;
+ if (!m_sharedBuffer)
+ setSharedBuffer(SharedUChar::create(new OwnFastMallocPtr<UChar>(buf)));
+ return m_sharedBuffer;
}
-inline int UString::usedCapacity() const
+void UString::BaseString::setSharedBuffer(PassRefPtr<UString::SharedUChar> sharedBuffer)
{
- return m_rep->baseString->usedCapacity;
+ // The manual steps below are because m_sharedBuffer can't be a RefPtr. m_sharedBuffer
+ // is in a union with another variable to avoid making BaseString any larger.
+ if (m_sharedBuffer)
+ m_sharedBuffer->deref();
+ m_sharedBuffer = sharedBuffer.releaseRef();
}
-inline int UString::usedPreCapacity() const
+bool UString::BaseString::slowIsBufferReadOnly()
{
- return m_rep->baseString->usedPreCapacity;
+ // The buffer may not be modified as soon as the underlying data has been shared with another class.
+ if (m_sharedBuffer->isShared())
+ return true;
+
+ // At this point, we know it that the underlying buffer isn't shared outside of this base class,
+ // so get rid of m_sharedBuffer.
+ OwnPtr<OwnFastMallocPtr<UChar> > mallocPtr(m_sharedBuffer->release());
+ UChar* unsharedBuf = const_cast<UChar*>(mallocPtr->release());
+ setSharedBuffer(0);
+ preCapacity += (buf - unsharedBuf);
+ buf = unsharedBuf;
+ return false;
}
+// Put these early so they can be inlined.
+static inline size_t expandedSize(size_t capacitySize, size_t precapacitySize)
+{
+ // Combine capacitySize & precapacitySize to produce a single size to allocate,
+ // check that doing so does not result in overflow.
+ size_t size = capacitySize + precapacitySize;
+ if (size < capacitySize)
+ return overflowIndicator();
+
+ // Small Strings (up to 4 pages):
+ // Expand the allocation size to 112.5% of the amount requested. This is largely sicking
+ // to our previous policy, however 112.5% is cheaper to calculate.
+ if (size < 0x4000) {
+ size_t expandedSize = ((size + (size >> 3)) | 15) + 1;
+ // Given the limited range within which we calculate the expansion in this
+ // fashion the above calculation should never overflow.
+ ASSERT(expandedSize >= size);
+ ASSERT(expandedSize < maxUChars());
+ return expandedSize;
+ }
+
+ // Medium Strings (up to 128 pages):
+ // For pages covering multiple pages over-allocation is less of a concern - any unused
+ // space will not be paged in if it is not used, so this is purely a VM overhead. For
+ // these strings allocate 2x the requested size.
+ if (size < 0x80000) {
+ size_t expandedSize = ((size + size) | 0xfff) + 1;
+ // Given the limited range within which we calculate the expansion in this
+ // fashion the above calculation should never overflow.
+ ASSERT(expandedSize >= size);
+ ASSERT(expandedSize < maxUChars());
+ return expandedSize;
+ }
+
+ // Large Strings (to infinity and beyond!):
+ // Revert to our 112.5% policy - probably best to limit the amount of unused VM we allow
+ // any individual string be responsible for.
+ size_t expandedSize = ((size + (size >> 3)) | 0xfff) + 1;
+
+ // Check for overflow - any result that is at least as large as requested (but
+ // still below the limit) is okay.
+ if ((expandedSize >= size) && (expandedSize < maxUChars()))
+ return expandedSize;
+ return overflowIndicator();
+}
static inline bool expandCapacity(UString::Rep* rep, int requiredLength)
{
rep->checkConsistency();
+ ASSERT(!rep->baseString()->isBufferReadOnly());
- UString::Rep* r = rep->baseString;
+ UString::BaseString* base = rep->baseString();
- if (requiredLength > r->capacity) {
- size_t newCapacity = expandedSize(requiredLength, r->preCapacity);
- UChar* oldBuf = r->buf;
- r->buf = reallocChars(r->buf, newCapacity);
- if (!r->buf) {
- r->buf = oldBuf;
+ if (requiredLength > base->capacity) {
+ size_t newCapacity = expandedSize(requiredLength, base->preCapacity);
+ UChar* oldBuf = base->buf;
+ base->buf = reallocChars(base->buf, newCapacity);
+ if (!base->buf) {
+ base->buf = oldBuf;
return false;
}
- r->capacity = newCapacity - r->preCapacity;
+ base->capacity = newCapacity - base->preCapacity;
}
- if (requiredLength > r->usedCapacity)
- r->usedCapacity = requiredLength;
+ if (requiredLength > base->usedCapacity)
+ base->usedCapacity = requiredLength;
rep->checkConsistency();
return true;
}
+bool UString::Rep::reserveCapacity(int capacity)
+{
+ // If this is an empty string there is no point 'growing' it - just allocate a new one.
+ // If the BaseString is shared with another string that is using more capacity than this
+ // string is, then growing the buffer won't help.
+ // If the BaseString's buffer is readonly, then it isn't allowed to grow.
+ UString::BaseString* base = baseString();
+ if (!base->buf || !base->capacity || (offset + len) != base->usedCapacity || base->isBufferReadOnly())
+ return false;
+
+ // If there is already sufficient capacity, no need to grow!
+ if (capacity <= base->capacity)
+ return true;
+
+ checkConsistency();
+
+ size_t newCapacity = expandedSize(capacity, base->preCapacity);
+ UChar* oldBuf = base->buf;
+ base->buf = reallocChars(base->buf, newCapacity);
+ if (!base->buf) {
+ base->buf = oldBuf;
+ return false;
+ }
+ base->capacity = newCapacity - base->preCapacity;
+
+ checkConsistency();
+ return true;
+}
+
void UString::expandCapacity(int requiredLength)
{
if (!JSC::expandCapacity(m_rep.get(), requiredLength))
@@ -467,42 +527,43 @@ void UString::expandCapacity(int requiredLength)
void UString::expandPreCapacity(int requiredPreCap)
{
m_rep->checkConsistency();
+ ASSERT(!m_rep->baseString()->isBufferReadOnly());
- Rep* r = m_rep->baseString;
+ BaseString* base = m_rep->baseString();
- if (requiredPreCap > r->preCapacity) {
- size_t newCapacity = expandedSize(requiredPreCap, r->capacity);
- int delta = newCapacity - r->capacity - r->preCapacity;
+ if (requiredPreCap > base->preCapacity) {
+ size_t newCapacity = expandedSize(requiredPreCap, base->capacity);
+ int delta = newCapacity - base->capacity - base->preCapacity;
UChar* newBuf = allocChars(newCapacity);
if (!newBuf) {
makeNull();
return;
}
- copyChars(newBuf + delta, r->buf, r->capacity + r->preCapacity);
- fastFree(r->buf);
- r->buf = newBuf;
+ copyChars(newBuf + delta, base->buf, base->capacity + base->preCapacity);
+ fastFree(base->buf);
+ base->buf = newBuf;
- r->preCapacity = newCapacity - r->capacity;
+ base->preCapacity = newCapacity - base->capacity;
}
- if (requiredPreCap > r->usedPreCapacity)
- r->usedPreCapacity = requiredPreCap;
+ if (requiredPreCap > base->usedPreCapacity)
+ base->usedPreCapacity = requiredPreCap;
m_rep->checkConsistency();
}
-PassRefPtr<UString::Rep> createRep(const char* c)
+static PassRefPtr<UString::Rep> createRep(const char* c)
{
if (!c)
- return &UString::Rep::null;
+ return &UString::Rep::null();
if (!c[0])
- return &UString::Rep::empty;
+ return &UString::Rep::empty();
size_t length = strlen(c);
UChar* d = allocChars(length);
if (!d)
- return &UString::Rep::null;
+ return &UString::Rep::null();
else {
for (size_t i = 0; i < length; i++)
d[i] = static_cast<unsigned char>(c[i]); // use unsigned char to zero-extend instead of sign-extend
@@ -519,7 +580,7 @@ UString::UString(const char* c)
UString::UString(const UChar* c, int length)
{
if (length == 0)
- m_rep = &Rep::empty;
+ m_rep = &Rep::empty();
else
m_rep = Rep::createCopying(c, length);
}
@@ -527,7 +588,7 @@ UString::UString(const UChar* c, int length)
UString::UString(UChar* c, int length, bool copy)
{
if (length == 0)
- m_rep = &Rep::empty;
+ m_rep = &Rep::empty();
else if (copy)
m_rep = Rep::createCopying(c, length);
else
@@ -537,11 +598,22 @@ UString::UString(UChar* c, int length, bool copy)
UString::UString(const Vector<UChar>& buffer)
{
if (!buffer.size())
- m_rep = &Rep::empty;
+ m_rep = &Rep::empty();
else
m_rep = Rep::createCopying(buffer.data(), buffer.size());
}
+static ALWAYS_INLINE int newCapacityWithOverflowCheck(const int currentCapacity, const int extendLength, const bool plusOne = false)
+{
+ ASSERT_WITH_MESSAGE(extendLength >= 0, "extendedLength = %d", extendLength);
+
+ const int plusLength = plusOne ? 1 : 0;
+ if (currentCapacity > std::numeric_limits<int>::max() - extendLength - plusLength)
+ CRASH();
+
+ return currentCapacity + extendLength + plusLength;
+}
+
static ALWAYS_INLINE PassRefPtr<UString::Rep> concatenate(PassRefPtr<UString::Rep> r, const UChar* tData, int tSize)
{
RefPtr<UString::Rep> rep = r;
@@ -551,6 +623,7 @@ static ALWAYS_INLINE PassRefPtr<UString::Rep> concatenate(PassRefPtr<UString::Re
int thisSize = rep->size();
int thisOffset = rep->offset;
int length = thisSize + tSize;
+ UString::BaseString* base = rep->baseString();
// possible cases:
if (tSize == 0) {
@@ -558,34 +631,34 @@ static ALWAYS_INLINE PassRefPtr<UString::Rep> concatenate(PassRefPtr<UString::Re
} else if (thisSize == 0) {
// this is empty
rep = UString::Rep::createCopying(tData, tSize);
- } else if (rep->baseIsSelf() && rep->rc == 1) {
+ } else if (rep == base && !base->isShared()) {
// this is direct and has refcount of 1 (so we can just alter it directly)
- if (!expandCapacity(rep.get(), thisOffset + length))
- rep = &UString::Rep::null;
+ if (!expandCapacity(rep.get(), newCapacityWithOverflowCheck(thisOffset, length)))
+ rep = &UString::Rep::null();
if (rep->data()) {
copyChars(rep->data() + thisSize, tData, tSize);
rep->len = length;
rep->_hash = 0;
}
- } else if (thisOffset + thisSize == rep->baseString->usedCapacity && thisSize >= minShareSize) {
+ } else if (thisOffset + thisSize == base->usedCapacity && thisSize >= minShareSize && !base->isBufferReadOnly()) {
// this reaches the end of the buffer - extend it if it's long enough to append to
- if (!expandCapacity(rep.get(), thisOffset + length))
- rep = &UString::Rep::null;
+ if (!expandCapacity(rep.get(), newCapacityWithOverflowCheck(thisOffset, length)))
+ rep = &UString::Rep::null();
if (rep->data()) {
copyChars(rep->data() + thisSize, tData, tSize);
rep = UString::Rep::create(rep, 0, length);
}
} else {
- // this is shared with someone using more capacity, gotta make a whole new string
+ // This is shared in some way that prevents us from modifying base, so we must make a whole new string.
size_t newCapacity = expandedSize(length, 0);
UChar* d = allocChars(newCapacity);
if (!d)
- rep = &UString::Rep::null;
+ rep = &UString::Rep::null();
else {
copyChars(d, rep->data(), thisSize);
copyChars(d + thisSize, tData, tSize);
rep = UString::Rep::create(d, length);
- rep->capacity = newCapacity;
+ rep->baseString()->capacity = newCapacity;
}
}
@@ -604,6 +677,7 @@ static ALWAYS_INLINE PassRefPtr<UString::Rep> concatenate(PassRefPtr<UString::Re
int thisOffset = rep->offset;
int tSize = static_cast<int>(strlen(t));
int length = thisSize + tSize;
+ UString::BaseString* base = rep->baseString();
// possible cases:
if (thisSize == 0) {
@@ -611,9 +685,9 @@ static ALWAYS_INLINE PassRefPtr<UString::Rep> concatenate(PassRefPtr<UString::Re
rep = createRep(t);
} else if (tSize == 0) {
// t is empty, we'll just return *this below.
- } else if (rep->baseIsSelf() && rep->rc == 1) {
+ } else if (rep == base && !base->isShared()) {
// this is direct and has refcount of 1 (so we can just alter it directly)
- expandCapacity(rep.get(), thisOffset + length);
+ expandCapacity(rep.get(), newCapacityWithOverflowCheck(thisOffset, length));
UChar* d = rep->data();
if (d) {
for (int i = 0; i < tSize; ++i)
@@ -621,9 +695,9 @@ static ALWAYS_INLINE PassRefPtr<UString::Rep> concatenate(PassRefPtr<UString::Re
rep->len = length;
rep->_hash = 0;
}
- } else if (thisOffset + thisSize == rep->baseString->usedCapacity && thisSize >= minShareSize) {
+ } else if (thisOffset + thisSize == base->usedCapacity && thisSize >= minShareSize && !base->isBufferReadOnly()) {
// this string reaches the end of the buffer - extend it
- expandCapacity(rep.get(), thisOffset + length);
+ expandCapacity(rep.get(), newCapacityWithOverflowCheck(thisOffset, length));
UChar* d = rep->data();
if (d) {
for (int i = 0; i < tSize; ++i)
@@ -631,17 +705,17 @@ static ALWAYS_INLINE PassRefPtr<UString::Rep> concatenate(PassRefPtr<UString::Re
rep = UString::Rep::create(rep, 0, length);
}
} else {
- // this is shared with someone using more capacity, gotta make a whole new string
+ // This is shared in some way that prevents us from modifying base, so we must make a whole new string.
size_t newCapacity = expandedSize(length, 0);
UChar* d = allocChars(newCapacity);
if (!d)
- rep = &UString::Rep::null;
+ rep = &UString::Rep::null();
else {
copyChars(d, rep->data(), thisSize);
for (int i = 0; i < tSize; ++i)
d[thisSize + i] = static_cast<unsigned char>(t[i]); // use unsigned char to zero-extend instead of sign-extend
rep = UString::Rep::create(d, length);
- rep->capacity = newCapacity;
+ rep->baseString()->capacity = newCapacity;
}
}
@@ -656,13 +730,19 @@ PassRefPtr<UString::Rep> concatenate(UString::Rep* a, UString::Rep* b)
b->checkConsistency();
int aSize = a->size();
- int aOffset = a->offset;
int bSize = b->size();
- int bOffset = b->offset;
- int length = aSize + bSize;
+ int aOffset = a->offset;
// possible cases:
+ UString::BaseString* aBase = a->baseString();
+ if (bSize == 1 && aOffset + aSize == aBase->usedCapacity && aOffset + aSize < aBase->capacity && !aBase->isBufferReadOnly()) {
+ // b is a single character (common fast case)
+ ++aBase->usedCapacity;
+ a->data()[aSize] = b->data()[0];
+ return UString::Rep::create(a, 0, aSize + 1);
+ }
+
// a is empty
if (aSize == 0)
return b;
@@ -670,21 +750,19 @@ PassRefPtr<UString::Rep> concatenate(UString::Rep* a, UString::Rep* b)
if (bSize == 0)
return a;
- if (bSize == 1 && aOffset + aSize == a->baseString->usedCapacity && aOffset + length <= a->baseString->capacity) {
- // b is a single character (common fast case)
- a->baseString->usedCapacity = aOffset + length;
- a->data()[aSize] = b->data()[0];
- return UString::Rep::create(a, 0, length);
- }
+ int bOffset = b->offset;
+ int length = aSize + bSize;
- if (aOffset + aSize == a->baseString->usedCapacity && aSize >= minShareSize && 4 * aSize >= bSize &&
- (-bOffset != b->baseString->usedPreCapacity || aSize >= bSize)) {
+ UString::BaseString* bBase = b->baseString();
+ if (aOffset + aSize == aBase->usedCapacity && aSize >= minShareSize && 4 * aSize >= bSize
+ && (-bOffset != bBase->usedPreCapacity || aSize >= bSize) && !aBase->isBufferReadOnly()) {
// - a reaches the end of its buffer so it qualifies for shared append
// - also, it's at least a quarter the length of b - appending to a much shorter
// string does more harm than good
// - however, if b qualifies for prepend and is longer than a, we'd rather prepend
+
UString x(a);
- x.expandCapacity(aOffset + length);
+ x.expandCapacity(newCapacityWithOverflowCheck(aOffset, length));
if (!a->data() || !x.data())
return 0;
copyChars(a->data() + aSize, b->data(), bSize);
@@ -697,7 +775,7 @@ PassRefPtr<UString::Rep> concatenate(UString::Rep* a, UString::Rep* b)
return result;
}
- if (-bOffset == b->baseString->usedPreCapacity && bSize >= minShareSize && 4 * bSize >= aSize) {
+ if (-bOffset == bBase->usedPreCapacity && bSize >= minShareSize && 4 * bSize >= aSize && !bBase->isBufferReadOnly()) {
// - b reaches the beginning of its buffer so it qualifies for shared prepend
// - also, it's at least a quarter the length of a - prepending to a much shorter
// string does more harm than good
@@ -723,7 +801,7 @@ PassRefPtr<UString::Rep> concatenate(UString::Rep* a, UString::Rep* b)
copyChars(d, a->data(), aSize);
copyChars(d + aSize, b->data(), bSize);
PassRefPtr<UString::Rep> result = UString::Rep::create(d, length);
- result->capacity = newCapacity;
+ result->baseString()->capacity = newCapacity;
a->checkConsistency();
b->checkConsistency();
@@ -775,7 +853,8 @@ PassRefPtr<UString::Rep> concatenate(UString::Rep* rep, double d)
int decimalPoint;
int sign;
- char* result = WTF::dtoa(d, 0, &decimalPoint, &sign, NULL);
+ char result[80];
+ WTF::dtoa(result, d, 0, &decimalPoint, &sign, NULL);
int length = static_cast<int>(strlen(result));
int i = 0;
@@ -826,15 +905,7 @@ PassRefPtr<UString::Rep> concatenate(UString::Rep* rep, double d)
buf[i++] = '\0';
}
- WTF::freedtoa(result);
-
- return concatenate(rep, buf);
-}
-
-const UString& UString::null()
-{
- static UString* n = new UString; // Should be called from main thread at least once to be safely initialized.
- return *n;
+ return concatenate(rep, buf);
}
UString UString::from(int i)
@@ -922,8 +993,9 @@ UString UString::from(double d)
char buf[80];
int decimalPoint;
int sign;
-
- char* result = WTF::dtoa(d, 0, &decimalPoint, &sign, NULL);
+
+ char result[80];
+ WTF::dtoa(result, d, 0, &decimalPoint, &sign, NULL);
int length = static_cast<int>(strlen(result));
int i = 0;
@@ -974,9 +1046,7 @@ UString UString::from(double d)
buf[i++] = '\0';
}
- WTF::freedtoa(result);
-
- return UString(buf);
+ return UString(buf);
}
UString UString::spliceSubstringsWithSeparators(const Range* substringRanges, int rangeCount, const UString* separators, int separatorCount) const
@@ -1021,6 +1091,28 @@ UString UString::spliceSubstringsWithSeparators(const Range* substringRanges, in
return UString::Rep::create(buffer, totalLength);
}
+UString UString::replaceRange(int rangeStart, int rangeLength, const UString& replacement) const
+{
+ m_rep->checkConsistency();
+
+ int replacementLength = replacement.size();
+ int totalLength = size() - rangeLength + replacementLength;
+ if (totalLength == 0)
+ return "";
+
+ UChar* buffer = allocChars(totalLength);
+ if (!buffer)
+ return null();
+
+ copyChars(buffer, data(), rangeStart);
+ copyChars(buffer + rangeStart, replacement.data(), replacementLength);
+ int rangeEnd = rangeStart + rangeLength;
+ copyChars(buffer + rangeStart + replacementLength, data() + rangeEnd, size() - rangeEnd);
+
+ return UString::Rep::create(buffer, totalLength);
+}
+
+
UString& UString::append(const UString &t)
{
m_rep->checkConsistency();
@@ -1030,6 +1122,7 @@ UString& UString::append(const UString &t)
int thisOffset = m_rep->offset;
int tSize = t.size();
int length = thisSize + tSize;
+ BaseString* base = m_rep->baseString();
// possible cases:
if (thisSize == 0) {
@@ -1037,23 +1130,23 @@ UString& UString::append(const UString &t)
*this = t;
} else if (tSize == 0) {
// t is empty
- } else if (m_rep->baseIsSelf() && m_rep->rc == 1) {
+ } else if (m_rep == base && !base->isShared()) {
// this is direct and has refcount of 1 (so we can just alter it directly)
- expandCapacity(thisOffset + length);
+ expandCapacity(newCapacityWithOverflowCheck(thisOffset, length));
if (data()) {
copyChars(m_rep->data() + thisSize, t.data(), tSize);
m_rep->len = length;
m_rep->_hash = 0;
}
- } else if (thisOffset + thisSize == usedCapacity() && thisSize >= minShareSize) {
+ } else if (thisOffset + thisSize == base->usedCapacity && thisSize >= minShareSize && !base->isBufferReadOnly()) {
// this reaches the end of the buffer - extend it if it's long enough to append to
- expandCapacity(thisOffset + length);
+ expandCapacity(newCapacityWithOverflowCheck(thisOffset, length));
if (data()) {
copyChars(m_rep->data() + thisSize, t.data(), tSize);
m_rep = Rep::create(m_rep, 0, length);
}
} else {
- // this is shared with someone using more capacity, gotta make a whole new string
+ // This is shared in some way that prevents us from modifying base, so we must make a whole new string.
size_t newCapacity = expandedSize(length, 0);
UChar* d = allocChars(newCapacity);
if (!d)
@@ -1062,7 +1155,7 @@ UString& UString::append(const UString &t)
copyChars(d, data(), thisSize);
copyChars(d + thisSize, t.data(), tSize);
m_rep = Rep::create(d, length);
- m_rep->capacity = newCapacity;
+ m_rep->baseString()->capacity = newCapacity;
}
}
@@ -1078,6 +1171,18 @@ UString& UString::append(const UChar* tData, int tSize)
return *this;
}
+UString& UString::appendNumeric(int i)
+{
+ m_rep = concatenate(rep(), i);
+ return *this;
+}
+
+UString& UString::appendNumeric(double d)
+{
+ m_rep = concatenate(rep(), d);
+ return *this;
+}
+
UString& UString::append(const char* t)
{
m_rep = concatenate(m_rep.release(), t);
@@ -1090,6 +1195,7 @@ UString& UString::append(UChar c)
int thisOffset = m_rep->offset;
int length = size();
+ BaseString* base = m_rep->baseString();
// possible cases:
if (length == 0) {
@@ -1101,27 +1207,27 @@ UString& UString::append(UChar c)
else {
d[0] = c;
m_rep = Rep::create(d, 1);
- m_rep->capacity = newCapacity;
+ m_rep->baseString()->capacity = newCapacity;
}
- } else if (m_rep->baseIsSelf() && m_rep->rc == 1) {
+ } else if (m_rep == base && !base->isShared()) {
// this is direct and has refcount of 1 (so we can just alter it directly)
- expandCapacity(thisOffset + length + 1);
+ expandCapacity(newCapacityWithOverflowCheck(thisOffset, length, true));
UChar* d = m_rep->data();
if (d) {
d[length] = c;
m_rep->len = length + 1;
m_rep->_hash = 0;
}
- } else if (thisOffset + length == usedCapacity() && length >= minShareSize) {
+ } else if (thisOffset + length == base->usedCapacity && length >= minShareSize && !base->isBufferReadOnly()) {
// this reaches the end of the string - extend it and share
- expandCapacity(thisOffset + length + 1);
+ expandCapacity(newCapacityWithOverflowCheck(thisOffset, length, true));
UChar* d = m_rep->data();
if (d) {
d[length] = c;
m_rep = Rep::create(m_rep, 0, length + 1);
}
} else {
- // this is shared with someone using more capacity, gotta make a whole new string
+ // This is shared in some way that prevents us from modifying base, so we must make a whole new string.
size_t newCapacity = expandedSize(length + 1, 0);
UChar* d = allocChars(newCapacity);
if (!d)
@@ -1130,7 +1236,7 @@ UString& UString::append(UChar c)
copyChars(d, data(), length);
d[length] = c;
m_rep = Rep::create(d, length + 1);
- m_rep->capacity = newCapacity;
+ m_rep->baseString()->capacity = newCapacity;
}
}
@@ -1185,19 +1291,20 @@ char* UString::ascii() const
UString& UString::operator=(const char* c)
{
if (!c) {
- m_rep = &Rep::null;
+ m_rep = &Rep::null();
return *this;
}
if (!c[0]) {
- m_rep = &Rep::empty;
+ m_rep = &Rep::empty();
return *this;
}
int l = static_cast<int>(strlen(c));
UChar* d;
- if (m_rep->rc == 1 && l <= m_rep->capacity && m_rep->baseIsSelf() && m_rep->offset == 0 && m_rep->preCapacity == 0) {
- d = m_rep->buf;
+ BaseString* base = m_rep->baseString();
+ if (!base->isShared() && l <= base->capacity && m_rep == base && m_rep->offset == 0 && base->preCapacity == 0) {
+ d = base->buf;
m_rep->_hash = 0;
m_rep->len = l;
} else {
@@ -1413,12 +1520,24 @@ uint32_t UString::toStrictUInt32(bool* ok) const
int UString::find(const UString& f, int pos) const
{
- int sz = size();
int fsz = f.size();
- if (sz < fsz)
- return -1;
+
if (pos < 0)
pos = 0;
+
+ if (fsz == 1) {
+ UChar ch = f[0];
+ const UChar* end = data() + size();
+ for (const UChar* c = data() + pos; c < end; c++) {
+ if (*c == ch)
+ return static_cast<int>(c - data());
+ }
+ return -1;
+ }
+
+ int sz = size();
+ if (sz < fsz)
+ return -1;
if (fsz == 0)
return pos;
const UChar* end = data() + sz - fsz;
@@ -1502,19 +1621,6 @@ UString UString::substr(int pos, int len) const
return UString(Rep::create(m_rep, pos, len));
}
-bool operator==(const UString& s1, const UString& s2)
-{
- int size = s1.size();
- switch (size) {
- case 0:
- return !s2.size();
- case 1:
- return s2.size() == 1 && s1.data()[0] == s2.data()[0];
- default:
- return s2.size() == size && memcmp(s1.data(), s2.data(), size * sizeof(UChar)) == 0;
- }
-}
-
bool operator==(const UString& s1, const char *s2)
{
if (s2 == 0)
@@ -1626,13 +1732,13 @@ CString UString::UTF8String(bool strict) const
// For use in error handling code paths -- having this not be inlined helps avoid PIC branches to fetch the global on Mac OS X.
NEVER_INLINE void UString::makeNull()
{
- m_rep = &Rep::null;
+ m_rep = &Rep::null();
}
// For use in error handling code paths -- having this not be inlined helps avoid PIC branches to fetch the global on Mac OS X.
NEVER_INLINE UString::Rep* UString::nullRep()
{
- return &Rep::null;
+ return &Rep::null();
}
} // namespace JSC
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/UString.h b/src/3rdparty/webkit/JavaScriptCore/runtime/UString.h
index 75403c0..6852d91 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/UString.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/UString.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
* Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -26,8 +27,10 @@
#include <stdint.h>
#include <string.h>
#include <wtf/Assertions.h>
-#include <wtf/FastMalloc.h>
+#include <wtf/CrossThreadRefCounted.h>
+#include <wtf/OwnFastMallocPtr.h>
#include <wtf/PassRefPtr.h>
+#include <wtf/PtrAndFlags.h>
#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
#include <wtf/unicode/Unicode.h>
@@ -74,10 +77,26 @@ namespace JSC {
friend class JIT;
public:
- struct Rep {
+ typedef CrossThreadRefCounted<OwnFastMallocPtr<UChar> > SharedUChar;
+ struct BaseString;
+ struct Rep : Noncopyable {
friend class JIT;
- static PassRefPtr<Rep> create(UChar*, int);
+ static PassRefPtr<Rep> create(UChar* buffer, int length)
+ {
+ return adoptRef(new BaseString(buffer, length));
+ }
+
+ static PassRefPtr<Rep> createEmptyBuffer(size_t size)
+ {
+ // Guard against integer overflow
+ if (size < (std::numeric_limits<size_t>::max() / sizeof(UChar))) {
+ if (void * buf = tryFastMalloc(size * sizeof(UChar)))
+ return adoptRef(new BaseString(static_cast<UChar*>(buf), 0, size));
+ }
+ return adoptRef(new BaseString(0, 0, 0));
+ }
+
static PassRefPtr<Rep> createCopying(const UChar*, int);
static PassRefPtr<Rep> create(PassRefPtr<Rep> base, int offset, int length);
@@ -85,10 +104,13 @@ namespace JSC {
// Returns UString::Rep::null for null input or conversion failure.
static PassRefPtr<Rep> createFromUTF8(const char*);
+ // Uses SharedUChar to have joint ownership over the UChar*.
+ static PassRefPtr<Rep> create(UChar*, int, PassRefPtr<SharedUChar>);
+
void destroy();
- bool baseIsSelf() const { return baseString == this; }
- UChar* data() const { return baseString->buf + baseString->preCapacity + offset; }
+ bool baseIsSelf() const { return m_identifierTableAndFlags.isFlagSet(BaseStringFlag); }
+ UChar* data() const;
int size() const { return len; }
unsigned hash() const { if (_hash == 0) _hash = computeHash(data(), len); return _hash; }
@@ -98,35 +120,115 @@ namespace JSC {
static unsigned computeHash(const char*, int length);
static unsigned computeHash(const char* s) { return computeHash(s, strlen(s)); }
- IdentifierTable* identifierTable() const { return reinterpret_cast<IdentifierTable*>(m_identifierTable & ~static_cast<uintptr_t>(1)); }
- void setIdentifierTable(IdentifierTable* table) { ASSERT(!isStatic()); m_identifierTable = reinterpret_cast<intptr_t>(table); }
+ IdentifierTable* identifierTable() const { return m_identifierTableAndFlags.get(); }
+ void setIdentifierTable(IdentifierTable* table) { ASSERT(!isStatic()); m_identifierTableAndFlags.set(table); }
- bool isStatic() const { return m_identifierTable & 1; }
- void setStatic(bool v) { ASSERT(!identifierTable()); m_identifierTable = v; }
+ bool isStatic() const { return m_identifierTableAndFlags.isFlagSet(StaticFlag); }
+ void setStatic(bool);
+ void setBaseString(PassRefPtr<BaseString>);
+ BaseString* baseString();
+ const BaseString* baseString() const;
Rep* ref() { ++rc; return this; }
ALWAYS_INLINE void deref() { if (--rc == 0) destroy(); }
void checkConsistency() const;
+ enum UStringFlags {
+ StaticFlag,
+ BaseStringFlag
+ };
// unshared data
int offset;
int len;
int rc; // For null and empty static strings, this field does not reflect a correct count, because ref/deref are not thread-safe. A special case in destroy() guarantees that these do not get deleted.
mutable unsigned _hash;
- intptr_t m_identifierTable; // A pointer to identifier table. The lowest bit is used to indicate whether the string is static (null or empty).
- UString::Rep* baseString;
- size_t reportedCost;
+ PtrAndFlags<IdentifierTable, UStringFlags> m_identifierTableAndFlags;
+
+ static BaseString& null() { return *nullBaseString; }
+ static BaseString& empty() { return *emptyBaseString; }
- // potentially shared data. 0 if backed up by a base string.
+ bool reserveCapacity(int capacity);
+
+ protected:
+ // Constructor for use by BaseString subclass; they use the union with m_baseString for another purpose.
+ Rep(int length)
+ : offset(0)
+ , len(length)
+ , rc(1)
+ , _hash(0)
+ , m_baseString(0)
+ {
+ }
+
+ Rep(PassRefPtr<BaseString> base, int offsetInBase, int length)
+ : offset(offsetInBase)
+ , len(length)
+ , rc(1)
+ , _hash(0)
+ , m_baseString(base.releaseRef())
+ {
+ checkConsistency();
+ }
+
+ union {
+ // If !baseIsSelf()
+ BaseString* m_baseString;
+ // If baseIsSelf()
+ SharedUChar* m_sharedBuffer;
+ };
+
+ private:
+ // For SmallStringStorage which allocates an array and does initialization manually.
+ Rep() { }
+
+ friend class SmallStringsStorage;
+ friend void initializeUString();
+ JS_EXPORTDATA static BaseString* nullBaseString;
+ JS_EXPORTDATA static BaseString* emptyBaseString;
+ };
+
+
+ struct BaseString : public Rep {
+ bool isShared() { return rc != 1 || isBufferReadOnly(); }
+ void setSharedBuffer(PassRefPtr<SharedUChar>);
+ SharedUChar* sharedBuffer();
+
+ bool isBufferReadOnly()
+ {
+ if (!m_sharedBuffer)
+ return false;
+ return slowIsBufferReadOnly();
+ }
+
+ // potentially shared data.
UChar* buf;
- int usedCapacity;
- int capacity;
- int usedPreCapacity;
int preCapacity;
+ int usedPreCapacity;
+ int capacity;
+ int usedCapacity;
+
+ size_t reportedCost;
+
+ private:
+ BaseString(UChar* buffer, int length, int additionalCapacity = 0)
+ : Rep(length)
+ , buf(buffer)
+ , preCapacity(0)
+ , usedPreCapacity(0)
+ , capacity(length + additionalCapacity)
+ , usedCapacity(length)
+ , reportedCost(0)
+ {
+ m_identifierTableAndFlags.setFlag(BaseStringFlag);
+ checkConsistency();
+ }
+
+ bool slowIsBufferReadOnly();
- static Rep null;
- static Rep empty;
+ friend struct Rep;
+ friend class SmallStringsStorage;
+ friend void initializeUString();
};
public:
@@ -175,11 +277,15 @@ namespace JSC {
UString spliceSubstringsWithSeparators(const Range* substringRanges, int rangeCount, const UString* separators, int separatorCount) const;
+ UString replaceRange(int rangeStart, int RangeEnd, const UString& replacement) const;
+
UString& append(const UString&);
UString& append(const char*);
UString& append(UChar);
UString& append(char c) { return append(static_cast<UChar>(static_cast<unsigned char>(c))); }
UString& append(const UChar*, int size);
+ UString& appendNumeric(int);
+ UString& appendNumeric(double);
bool getCString(CStringBuffer&) const;
@@ -204,7 +310,7 @@ namespace JSC {
const UChar* data() const { return m_rep->data(); }
- bool isNull() const { return (m_rep == &Rep::null); }
+ bool isNull() const { return (m_rep == &Rep::null()); }
bool isEmpty() const { return (!m_rep->len); }
bool is8Bit() const;
@@ -230,7 +336,7 @@ namespace JSC {
UString substr(int pos = 0, int len = -1) const;
- static const UString& null();
+ static const UString& null() { return *nullUString; }
Rep* rep() const { return m_rep.get(); }
static Rep* nullRep();
@@ -243,15 +349,26 @@ namespace JSC {
size_t cost() const;
+ // Attempt to grow this string such that it can grow to a total length of 'capacity'
+ // without reallocation. This may fail a number of reasons - if the BasicString is
+ // shared and another string is using part of the capacity beyond our end point, if
+ // the realloc fails, or if this string is empty and has no storage.
+ //
+ // This method returns a boolean indicating success.
+ bool reserveCapacity(int capacity)
+ {
+ return m_rep->reserveCapacity(capacity);
+ }
+
private:
- int usedCapacity() const;
- int usedPreCapacity() const;
void expandCapacity(int requiredLength);
void expandPreCapacity(int requiredPreCap);
void makeNull();
RefPtr<Rep> m_rep;
+ static UString* nullUString;
+ friend void initializeUString();
friend bool operator==(const UString&, const UString&);
friend PassRefPtr<Rep> concatenate(Rep*, Rep*); // returns 0 if out of memory
};
@@ -259,7 +376,26 @@ namespace JSC {
PassRefPtr<UString::Rep> concatenate(UString::Rep*, int);
PassRefPtr<UString::Rep> concatenate(UString::Rep*, double);
- bool operator==(const UString&, const UString&);
+ inline bool operator==(const UString& s1, const UString& s2)
+ {
+ int size = s1.size();
+ switch (size) {
+ case 0:
+ return !s2.size();
+ case 1:
+ return s2.size() == 1 && s1.data()[0] == s2.data()[0];
+ case 2: {
+ if (s2.size() != 2)
+ return false;
+ const UChar* d1 = s1.data();
+ const UChar* d2 = s2.data();
+ return (d1[0] == d2[0]) & (d1[1] == d2[1]);
+ }
+ default:
+ return s2.size() == size && memcmp(s1.data(), s2.data(), size * sizeof(UChar)) == 0;
+ }
+ }
+
inline bool operator!=(const UString& s1, const UString& s2)
{
@@ -298,6 +434,54 @@ namespace JSC {
bool equal(const UString::Rep*, const UString::Rep*);
+ inline PassRefPtr<UString::Rep> UString::Rep::create(PassRefPtr<UString::Rep> rep, int offset, int length)
+ {
+ ASSERT(rep);
+ rep->checkConsistency();
+
+ int repOffset = rep->offset;
+
+ PassRefPtr<BaseString> base = rep->baseString();
+
+ ASSERT(-(offset + repOffset) <= base->usedPreCapacity);
+ ASSERT(offset + repOffset + length <= base->usedCapacity);
+
+ // Steal the single reference this Rep was created with.
+ return adoptRef(new Rep(base, repOffset + offset, length));
+ }
+
+ inline UChar* UString::Rep::data() const
+ {
+ const BaseString* base = baseString();
+ return base->buf + base->preCapacity + offset;
+ }
+
+ inline void UString::Rep::setStatic(bool v)
+ {
+ ASSERT(!identifierTable());
+ if (v)
+ m_identifierTableAndFlags.setFlag(StaticFlag);
+ else
+ m_identifierTableAndFlags.clearFlag(StaticFlag);
+ }
+
+ inline void UString::Rep::setBaseString(PassRefPtr<BaseString> base)
+ {
+ ASSERT(base != this);
+ ASSERT(!baseIsSelf());
+ m_baseString = base.releaseRef();
+ }
+
+ inline UString::BaseString* UString::Rep::baseString()
+ {
+ return !baseIsSelf() ? m_baseString : reinterpret_cast<BaseString*>(this) ;
+ }
+
+ inline const UString::BaseString* UString::Rep::baseString() const
+ {
+ return const_cast<Rep*>(this)->baseString();
+ }
+
#ifdef NDEBUG
inline void UString::Rep::checkConsistency() const
{
@@ -305,7 +489,7 @@ namespace JSC {
#endif
inline UString::UString()
- : m_rep(&Rep::null)
+ : m_rep(&Rep::null())
{
}
@@ -328,8 +512,9 @@ namespace JSC {
inline size_t UString::cost() const
{
- size_t capacity = (m_rep->baseString->capacity + m_rep->baseString->preCapacity) * sizeof(UChar);
- size_t reportedCost = m_rep->baseString->reportedCost;
+ BaseString* base = m_rep->baseString();
+ size_t capacity = (base->capacity + base->preCapacity) * sizeof(UChar);
+ size_t reportedCost = base->reportedCost;
ASSERT(capacity >= reportedCost);
size_t capacityDelta = capacity - reportedCost;
@@ -337,7 +522,7 @@ namespace JSC {
if (capacityDelta < static_cast<size_t>(minShareSize))
return 0;
- m_rep->baseString->reportedCost = capacity;
+ base->reportedCost = capacity;
return capacityDelta;
}
@@ -347,6 +532,7 @@ namespace JSC {
static unsigned hash(JSC::UString::Rep* key) { return key->computedHash(); }
};
+ void initializeUString();
} // namespace JSC
namespace WTF {
diff --git a/src/3rdparty/webkit/JavaScriptCore/wrec/WREC.cpp b/src/3rdparty/webkit/JavaScriptCore/wrec/WREC.cpp
index 099931b..145a1ce 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wrec/WREC.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wrec/WREC.cpp
@@ -40,12 +40,9 @@ using namespace WTF;
namespace JSC { namespace WREC {
-// Patterns longer than this can hang the compiler.
-static const int MaxPatternSize = (1 << 13);
-
CompiledRegExp Generator::compileRegExp(JSGlobalData* globalData, const UString& pattern, unsigned* numSubpatterns_ptr, const char** error_ptr, RefPtr<ExecutablePool>& pool, bool ignoreCase, bool multiline)
{
- if (pattern.size() > MaxPatternSize) {
+ if (pattern.size() > MAX_PATTERN_SIZE) {
*error_ptr = "regular expression too large";
return 0;
}
@@ -80,7 +77,7 @@ CompiledRegExp Generator::compileRegExp(JSGlobalData* globalData, const UString&
}
*numSubpatterns_ptr = parser.numSubpatterns();
- pool = globalData->poolForSize(generator.size());
+ pool = globalData->executableAllocator.poolForSize(generator.size());
return reinterpret_cast<CompiledRegExp>(generator.copyCode(pool.get()));
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/wrec/WRECGenerator.cpp b/src/3rdparty/webkit/JavaScriptCore/wrec/WRECGenerator.cpp
index dd48484..e2e8aba 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wrec/WRECGenerator.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wrec/WRECGenerator.cpp
@@ -40,16 +40,7 @@ namespace JSC { namespace WREC {
void Generator::generateEnter()
{
-#if PLATFORM(X86_64)
- // On x86-64 edi and esi are caller preserved, so nothing to do here.
- // The four arguments have been passed in the registers %rdi, %rsi,
- // %rdx, %rcx - shuffle these into the expected locations.
- move(X86::edi, input); // (arg 1) edi -> eax
- move(X86::ecx, output); // (arg 4) ecx -> edi
- move(X86::edx, length); // (arg 3) edx -> ecx
- move(X86::esi, index); // (arg 2) esi -> edx
-
-#else
+#if PLATFORM(X86)
// On x86 edi & esi are callee preserved registers.
push(X86::edi);
push(X86::esi);
@@ -67,24 +58,20 @@ void Generator::generateEnter()
peek(output, 3);
#endif
#endif
-
-#ifndef NDEBUG
- // ASSERT that the output register is not null.
- Jump outputNotNull = jnzPtr(output);
- breakpoint();
- outputNotNull.link(this);
-#endif
}
void Generator::generateReturnSuccess()
{
+ ASSERT(returnRegister != index);
+ ASSERT(returnRegister != output);
+
// Set return value.
- pop(X86::eax); // match begin
- store32(X86::eax, output);
+ pop(returnRegister); // match begin
+ store32(returnRegister, output);
store32(index, Address(output, 4)); // match end
// Restore callee save registers.
-#if !PLATFORM(X86_64)
+#if PLATFORM(X86)
pop(X86::esi);
pop(X86::edi);
#endif
@@ -100,14 +87,14 @@ void Generator::generateIncrementIndex(Jump* failure)
{
peek(index);
if (failure)
- *failure = je32(length, index);
+ *failure = branch32(Equal, length, index);
add32(Imm32(1), index);
poke(index);
}
void Generator::generateLoadCharacter(JumpList& failures)
{
- failures.append(je32(length, index));
+ failures.append(branch32(Equal, length, index));
load16(BaseIndex(input, index, TimesTwo), character);
}
@@ -115,14 +102,15 @@ void Generator::generateLoadCharacter(JumpList& failures)
// were part of the input string.
void Generator::generateJumpIfNotEndOfInput(Label target)
{
- jle32(index, length, target);
+ branch32(LessThanOrEqual, index, length, target);
}
void Generator::generateReturnFailure()
{
pop();
- move(Imm32(-1), X86::eax);
-#if !PLATFORM(X86_64)
+ move(Imm32(-1), returnRegister);
+
+#if PLATFORM(X86)
pop(X86::esi);
pop(X86::edi);
#endif
@@ -145,7 +133,7 @@ void Generator::generateBackreferenceQuantifier(JumpList& failures, Quantifier::
GenerateBackreferenceFunctor functor(subpatternId);
load32(Address(output, (2 * subpatternId) * sizeof(int)), character);
- Jump skipIfEmpty = je32(Address(output, ((2 * subpatternId) + 1) * sizeof(int)), character);
+ Jump skipIfEmpty = branch32(Equal, Address(output, ((2 * subpatternId) + 1) * sizeof(int)), character);
ASSERT(quantifierType == Quantifier::Greedy || quantifierType == Quantifier::NonGreedy);
if (quantifierType == Quantifier::Greedy)
@@ -175,7 +163,7 @@ void Generator::generateNonGreedyQuantifier(JumpList& failures, GenerateAtomFunc
Label alternativeFailed(this);
pop(index);
if (max != Quantifier::Infinity)
- je32(repeatCount, Imm32(max), quantifierFailed);
+ branch32(Equal, repeatCount, Imm32(max), quantifierFailed);
// (1) Read an atom.
if (min)
@@ -187,7 +175,7 @@ void Generator::generateNonGreedyQuantifier(JumpList& failures, GenerateAtomFunc
// (2) Keep reading if we're under the minimum.
if (min > 1)
- jl32(repeatCount, Imm32(min), readAtom);
+ branch32(LessThan, repeatCount, Imm32(min), readAtom);
// (3) Test the rest of the alternative.
if (!min)
@@ -221,7 +209,7 @@ void Generator::generateGreedyQuantifier(JumpList& failures, GenerateAtomFunctor
else if (max == 1)
doneReadingAtomsList.append(jump());
else {
- jne32(repeatCount, Imm32(max), readAtom);
+ branch32(NotEqual, repeatCount, Imm32(max), readAtom);
doneReadingAtomsList.append(jump());
}
@@ -238,7 +226,7 @@ void Generator::generateGreedyQuantifier(JumpList& failures, GenerateAtomFunctor
// (2) Verify that we have enough atoms.
doneReadingAtomsList.link(this);
- jl32(repeatCount, Imm32(min), quantifierFailed);
+ branch32(LessThan, repeatCount, Imm32(min), quantifierFailed);
// (3) Test the rest of the alternative.
push(index);
@@ -277,7 +265,7 @@ bool Generator::generatePatternCharacterPair(JumpList& failures, int ch1, int ch
// Optimistically consume 2 characters.
add32(Imm32(2), index);
- failures.append(jg32(index, length));
+ failures.append(branch32(GreaterThan, index, length));
// Load the characters we just consumed, offset -2 characters from index.
load32(BaseIndex(input, index, TimesTwo, -2 * 2), character);
@@ -306,7 +294,7 @@ bool Generator::generatePatternCharacterPair(JumpList& failures, int ch1, int ch
}
int pair = ch1 | (ch2 << 16);
- failures.append(jne32(character, Imm32(pair)));
+ failures.append(branch32(NotEqual, character, Imm32(pair)));
return true;
}
@@ -328,14 +316,14 @@ void Generator::generatePatternCharacter(JumpList& failures, int ch)
ch |= 32;
} else if (!isASCII(ch) && ((lower = Unicode::toLower(ch)) != (upper = Unicode::toUpper(ch)))) {
// handle unicode case sentitive characters - branch to success on upper
- isUpper = je32(character, Imm32(upper));
+ isUpper = branch32(Equal, character, Imm32(upper));
hasUpper = true;
ch = lower;
}
}
// checks for ch, or lower case version of ch, if insensitive
- failures.append(jne32(character, Imm32((unsigned short)ch)));
+ failures.append(branch32(NotEqual, character, Imm32((unsigned short)ch)));
if (m_parser.ignoreCase() && hasUpper) {
// for unicode case insensitive matches, branch here if upper matches.
@@ -357,33 +345,33 @@ void Generator::generateCharacterClassInvertedRange(JumpList& failures, JumpList
// check if there are any ranges or matches below lo. If not, just jl to failure -
// if there is anything else to check, check that first, if it falls through jmp to failure.
if ((*matchIndex < matchCount) && (matches[*matchIndex] < lo)) {
- Jump loOrAbove = jge32(character, Imm32((unsigned short)lo));
+ Jump loOrAbove = branch32(GreaterThanOrEqual, character, Imm32((unsigned short)lo));
// generate code for all ranges before this one
if (which)
generateCharacterClassInvertedRange(failures, matchDest, ranges, which, matchIndex, matches, matchCount);
- do {
- matchDest.append(je32(character, Imm32((unsigned short)matches[*matchIndex])));
+ while ((*matchIndex < matchCount) && (matches[*matchIndex] < lo)) {
+ matchDest.append(branch32(Equal, character, Imm32((unsigned short)matches[*matchIndex])));
++*matchIndex;
- } while ((*matchIndex < matchCount) && (matches[*matchIndex] < lo));
+ }
failures.append(jump());
loOrAbove.link(this);
} else if (which) {
- Jump loOrAbove = jge32(character, Imm32((unsigned short)lo));
+ Jump loOrAbove = branch32(GreaterThanOrEqual, character, Imm32((unsigned short)lo));
generateCharacterClassInvertedRange(failures, matchDest, ranges, which, matchIndex, matches, matchCount);
failures.append(jump());
loOrAbove.link(this);
} else
- failures.append(jl32(character, Imm32((unsigned short)lo)));
+ failures.append(branch32(LessThan, character, Imm32((unsigned short)lo)));
while ((*matchIndex < matchCount) && (matches[*matchIndex] <= hi))
++*matchIndex;
- matchDest.append(jle32(character, Imm32((unsigned short)hi)));
+ matchDest.append(branch32(LessThanOrEqual, character, Imm32((unsigned short)hi)));
// fall through to here, the value is above hi.
// shuffle along & loop around if there are any more matches to handle.
@@ -397,12 +385,12 @@ void Generator::generateCharacterClassInverted(JumpList& matchDest, const Charac
{
Jump unicodeFail;
if (charClass.numMatchesUnicode || charClass.numRangesUnicode) {
- Jump isAscii = jle32(character, Imm32(0x7f));
+ Jump isAscii = branch32(LessThanOrEqual, character, Imm32(0x7f));
if (charClass.numMatchesUnicode) {
for (unsigned i = 0; i < charClass.numMatchesUnicode; ++i) {
UChar ch = charClass.matchesUnicode[i];
- matchDest.append(je32(character, Imm32(ch)));
+ matchDest.append(branch32(Equal, character, Imm32(ch)));
}
}
@@ -411,8 +399,8 @@ void Generator::generateCharacterClassInverted(JumpList& matchDest, const Charac
UChar lo = charClass.rangesUnicode[i].begin;
UChar hi = charClass.rangesUnicode[i].end;
- Jump below = jl32(character, Imm32(lo));
- matchDest.append(jle32(character, Imm32(hi)));
+ Jump below = branch32(LessThan, character, Imm32(lo));
+ matchDest.append(branch32(LessThanOrEqual, character, Imm32(hi)));
below.link(this);
}
}
@@ -426,7 +414,7 @@ void Generator::generateCharacterClassInverted(JumpList& matchDest, const Charac
JumpList failures;
generateCharacterClassInvertedRange(failures, matchDest, charClass.ranges, charClass.numRanges, &matchIndex, charClass.matches, charClass.numMatches);
while (matchIndex < charClass.numMatches)
- matchDest.append(je32(character, Imm32((unsigned short)charClass.matches[matchIndex++])));
+ matchDest.append(branch32(Equal, character, Imm32((unsigned short)charClass.matches[matchIndex++])));
failures.link(this);
} else if (charClass.numMatches) {
@@ -443,13 +431,13 @@ void Generator::generateCharacterClassInverted(JumpList& matchDest, const Charac
if (isASCIIUpper(ch))
continue;
}
- matchDest.append(je32(character, Imm32((unsigned short)ch)));
+ matchDest.append(branch32(Equal, character, Imm32((unsigned short)ch)));
}
if (unsigned countAZaz = matchesAZaz.size()) {
or32(Imm32(32), character);
for (unsigned i = 0; i < countAZaz; ++i)
- matchDest.append(je32(character, Imm32(matchesAZaz[i])));
+ matchDest.append(branch32(Equal, character, Imm32(matchesAZaz[i])));
}
}
@@ -533,7 +521,7 @@ void Generator::generateAssertionBOL(JumpList& failures)
JumpList previousIsNewline;
// begin of input == success
- previousIsNewline.append(je32(index, Imm32(0)));
+ previousIsNewline.append(branch32(Equal, index, Imm32(0)));
// now check prev char against newline characters.
load16(BaseIndex(input, index, TimesTwo, -2), character);
@@ -543,7 +531,7 @@ void Generator::generateAssertionBOL(JumpList& failures)
previousIsNewline.link(this);
} else
- failures.append(jne32(index, Imm32(0)));
+ failures.append(branch32(NotEqual, index, Imm32(0)));
}
void Generator::generateAssertionEOL(JumpList& failures)
@@ -556,7 +544,7 @@ void Generator::generateAssertionEOL(JumpList& failures)
failures.append(jump());
nextIsNewline.link(this);
} else {
- failures.append(jne32(length, index));
+ failures.append(branch32(NotEqual, length, index));
}
}
@@ -568,7 +556,7 @@ void Generator::generateAssertionWordBoundary(JumpList& failures, bool invert)
// (1) Check if the previous value was a word char
// (1.1) check for begin of input
- Jump atBegin = je32(index, Imm32(0));
+ Jump atBegin = branch32(Equal, index, Imm32(0));
// (1.2) load the last char, and chck if is word character
load16(BaseIndex(input, index, TimesTwo, -2), character);
JumpList previousIsWord;
@@ -625,14 +613,14 @@ void Generator::generateBackreference(JumpList& failures, unsigned subpatternId)
skipIncrement.link(this);
// check if we're at the end of backref (if we are, success!)
- Jump endOfBackRef = je32(Address(output, ((2 * subpatternId) + 1) * sizeof(int)), repeatCount);
+ Jump endOfBackRef = branch32(Equal, Address(output, ((2 * subpatternId) + 1) * sizeof(int)), repeatCount);
load16(BaseIndex(input, repeatCount, MacroAssembler::TimesTwo), character);
// check if we've run out of input (this would be a can o'fail)
- Jump endOfInput = je32(length, index);
+ Jump endOfInput = branch32(Equal, length, index);
- je16(character, BaseIndex(input, index, TimesTwo), topOfLoop);
+ branch16(Equal, BaseIndex(input, index, TimesTwo), character, topOfLoop);
endOfInput.link(this);
diff --git a/src/3rdparty/webkit/JavaScriptCore/wrec/WRECGenerator.h b/src/3rdparty/webkit/JavaScriptCore/wrec/WRECGenerator.h
index af4101a..8562cac 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wrec/WRECGenerator.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wrec/WRECGenerator.h
@@ -62,13 +62,29 @@ namespace JSC {
{
}
+#if PLATFORM(X86)
static const RegisterID input = X86::eax;
- static const RegisterID length = X86::ecx;
static const RegisterID index = X86::edx;
- static const RegisterID character = X86::esi;
+ static const RegisterID length = X86::ecx;
static const RegisterID output = X86::edi;
+
+ static const RegisterID character = X86::esi;
static const RegisterID repeatCount = X86::ebx; // How many times the current atom repeats in the current match.
-
+
+ static const RegisterID returnRegister = X86::eax;
+#endif
+#if PLATFORM(X86_64)
+ static const RegisterID input = X86::edi;
+ static const RegisterID index = X86::esi;
+ static const RegisterID length = X86::edx;
+ static const RegisterID output = X86::ecx;
+
+ static const RegisterID character = X86::eax;
+ static const RegisterID repeatCount = X86::ebx; // How many times the current atom repeats in the current match.
+
+ static const RegisterID returnRegister = X86::eax;
+#endif
+
void generateEnter();
void generateSaveIndex();
void generateIncrementIndex(Jump* failure = 0);
diff --git a/src/3rdparty/webkit/JavaScriptCore/wrec/WRECParser.cpp b/src/3rdparty/webkit/JavaScriptCore/wrec/WRECParser.cpp
index be42a34..1709bf9 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wrec/WRECParser.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wrec/WRECParser.cpp
@@ -233,38 +233,42 @@ bool Parser::parseParentheses(JumpList& failures)
// unsupported parentheses, we fall back on PCRE.
switch (type) {
- case Generator::Assertion:
+ case Generator::Assertion: {
m_generator.generateParenthesesAssertion(failures);
if (consume() != ')') {
setError(ParenthesesUnmatched);
return false;
}
-
- // A quantifier after an assertion is meaningless, since assertions
- // don't move index forward. So, we discard it.
- consumeQuantifier();
- break;
- case Generator::InvertedAssertion:
+ Quantifier quantifier = consumeQuantifier();
+ if (quantifier.type != Quantifier::None && quantifier.min == 0) {
+ setError(ParenthesesNotSupported);
+ return false;
+ }
+
+ return true;
+ }
+ case Generator::InvertedAssertion: {
m_generator.generateParenthesesInvertedAssertion(failures);
if (consume() != ')') {
setError(ParenthesesUnmatched);
return false;
}
-
- // A quantifier after an assertion is meaningless, since assertions
- // don't move index forward. So, we discard it.
- consumeQuantifier();
- break;
+ Quantifier quantifier = consumeQuantifier();
+ if (quantifier.type != Quantifier::None && quantifier.min == 0) {
+ setError(ParenthesesNotSupported);
+ return false;
+ }
+
+ return true;
+ }
default:
setError(ParenthesesNotSupported);
return false;
}
-
- return true;
}
bool Parser::parseCharacterClass(JumpList& failures)
@@ -457,7 +461,9 @@ Escape Parser::consumeEscape(bool inCharacterClass)
consume();
int control = consume();
- if (!isASCIIAlpha(control)) {
+ // To match Firefox, inside a character class, we also accept numbers
+ // and '_' as control characters.
+ if ((!inCharacterClass && !isASCIIAlpha(control)) || (!isASCIIAlphanumeric(control) && control != '_')) {
state.restore();
return PatternCharacterEscape('\\');
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/ASCIICType.h b/src/3rdparty/webkit/JavaScriptCore/wtf/ASCIICType.h
index 0c2ca70..0c3c29f 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/ASCIICType.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/ASCIICType.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -149,4 +149,18 @@ namespace WTF {
inline bool isASCIIPrintable(int c) { return c >= ' ' && c <= '~'; }
}
+using WTF::isASCII;
+using WTF::isASCIIAlpha;
+using WTF::isASCIIAlphanumeric;
+using WTF::isASCIIDigit;
+using WTF::isASCIIHexDigit;
+using WTF::isASCIILower;
+using WTF::isASCIIOctalDigit;
+using WTF::isASCIIPrintable;
+using WTF::isASCIISpace;
+using WTF::isASCIIUpper;
+using WTF::toASCIIHexValue;
+using WTF::toASCIILower;
+using WTF::toASCIIUpper;
+
#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/AVLTree.h b/src/3rdparty/webkit/JavaScriptCore/wtf/AVLTree.h
index 18db8ff..d7470e7 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/AVLTree.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/AVLTree.h
@@ -764,7 +764,7 @@ AVLTree<Abstractor, maxDepth, BSet>::remove(key k)
handle h = abs.root;
handle parent = null(), child;
- int cmp, cmp_shortened_sub_with_path;
+ int cmp, cmp_shortened_sub_with_path = 0;
for (;;) {
if (h == null())
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/AlwaysInline.h b/src/3rdparty/webkit/JavaScriptCore/wtf/AlwaysInline.h
index d39b2b9..64fdd99 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/AlwaysInline.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/AlwaysInline.h
@@ -22,7 +22,7 @@
#ifndef ALWAYS_INLINE
#if COMPILER(GCC) && defined(NDEBUG) && !COMPILER(MINGW)
-#define ALWAYS_INLINE inline __attribute__ ((__always_inline__))
+#define ALWAYS_INLINE inline __attribute__((__always_inline__))
#elif COMPILER(MSVC) && defined(NDEBUG)
#define ALWAYS_INLINE __forceinline
#else
@@ -32,7 +32,7 @@
#ifndef NEVER_INLINE
#if COMPILER(GCC)
-#define NEVER_INLINE __attribute__ ((__noinline__))
+#define NEVER_INLINE __attribute__((__noinline__))
#else
#define NEVER_INLINE
#endif
@@ -53,3 +53,11 @@
#define LIKELY(x) (x)
#endif
#endif
+
+#ifndef NO_RETURN
+#if COMPILER(GCC)
+#define NO_RETURN __attribute((__noreturn__))
+#else
+#define NO_RETURN
+#endif
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h
index c17e501..9643517 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h
@@ -194,7 +194,7 @@ while (0)
/* COMPILE_ASSERT */
#ifndef COMPILE_ASSERT
-#define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1];
+#define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
#endif
/* FATAL */
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ByteArray.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/ByteArray.cpp
index 4b88fd6..526f147 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ByteArray.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/ByteArray.cpp
@@ -26,7 +26,7 @@
#include "config.h"
#include "ByteArray.h"
-namespace JSC {
+namespace WTF {
PassRefPtr<ByteArray> ByteArray::create(size_t size)
{
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/ByteArray.h b/src/3rdparty/webkit/JavaScriptCore/wtf/ByteArray.h
index 7448942..33f0877 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/ByteArray.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/ByteArray.h
@@ -29,8 +29,8 @@
#include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h"
-namespace JSC {
- class ByteArray : public RefCounted<ByteArray> {
+namespace WTF {
+ class ByteArray : public RefCountedBase {
public:
unsigned length() const { return m_size; }
@@ -55,6 +55,16 @@ namespace JSC {
unsigned char* data() { return m_data; }
+ void deref()
+ {
+ if (derefBase()) {
+ // We allocated with new unsigned char[] in create(),
+ // and then used placement new to construct the object.
+ this->~ByteArray();
+ delete[] reinterpret_cast<unsigned char*>(this);
+ }
+ }
+
static PassRefPtr<ByteArray> create(size_t size);
private:
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/CONTRIBUTORS.pthreads-win32 b/src/3rdparty/webkit/JavaScriptCore/wtf/CONTRIBUTORS.pthreads-win32
new file mode 100644
index 0000000..7de0f26
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/CONTRIBUTORS.pthreads-win32
@@ -0,0 +1,137 @@
+This is a copy of CONTRIBUTORS file for the Pthreads-win32 library, downloaded
+from http://sourceware.org/cgi-bin/cvsweb.cgi/~checkout~/pthreads/CONTRIBUTORS?rev=1.32&cvsroot=pthreads-win32
+
+Included here to compliment the Pthreads-win32 license header in wtf/ThreadingWin.cpp file.
+WebKit is using derived sources of ThreadCondition code from Pthreads-win32.
+
+-------------------------------------------------------------------------------
+
+Contributors (in approximate order of appearance)
+
+[See also the ChangeLog file where individuals are
+attributed in log entries. Likewise in the FAQ file.]
+
+Ben Elliston bje at cygnus dot com
+ Initiated the project;
+ setup the project infrastructure (CVS, web page, etc.);
+ early prototype routines.
+Ross Johnson rpj at callisto dot canberra dot edu dot au
+ early prototype routines;
+ ongoing project coordination/maintenance;
+ implementation of spin locks and barriers;
+ various enhancements;
+ bug fixes;
+ documentation;
+ testsuite.
+Robert Colquhoun rjc at trump dot net dot au
+ Early bug fixes.
+John E. Bossom John dot Bossom at cognos dot com
+ Contributed substantial original working implementation;
+ bug fixes;
+ ongoing guidance and standards interpretation.
+Anders Norlander anorland at hem2 dot passagen dot se
+ Early enhancements and runtime checking for supported
+ Win32 routines.
+Tor Lillqvist tml at iki dot fi
+ General enhancements;
+ early bug fixes to condition variables.
+Scott Lightner scott at curriculum dot com
+ Bug fix.
+Kevin Ruland Kevin dot Ruland at anheuser-busch dot com
+ Various bug fixes.
+Mike Russo miker at eai dot com
+ Bug fix.
+Mark E. Armstrong avail at pacbell dot net
+ Bug fixes.
+Lorin Hochstein lmh at xiphos dot ca
+ general bug fixes; bug fixes to condition variables.
+Peter Slacik Peter dot Slacik at tatramed dot sk
+ Bug fixes.
+Mumit Khan khan at xraylith dot wisc dot edu
+ Fixes to work with Mingw32.
+Milan Gardian mg at tatramed dot sk
+ Bug fixes and reports/analyses of obscure problems.
+Aurelio Medina aureliom at crt dot com
+ First implementation of read-write locks.
+Graham Dumpleton Graham dot Dumpleton at ra dot pad dot otc dot telstra dot com dot au
+ Bug fix in condition variables.
+Tristan Savatier tristan at mpegtv dot com
+ WinCE port.
+Erik Hensema erik at hensema dot xs4all dot nl
+ Bug fixes.
+Rich Peters rpeters at micro-magic dot com
+Todd Owen towen at lucidcalm dot dropbear dot id dot au
+ Bug fixes to dll loading.
+Jason Nye jnye at nbnet dot nb dot ca
+ Implementation of async cancelation.
+Fred Forester fforest at eticomm dot net
+Kevin D. Clark kclark at cabletron dot com
+David Baggett dmb at itasoftware dot com
+ Bug fixes.
+Paul Redondo paul at matchvision dot com
+Scott McCaskill scott at 3dfx dot com
+ Bug fixes.
+Jef Gearhart jgearhart at tpssys dot com
+ Bug fix.
+Arthur Kantor akantor at bexusa dot com
+ Mutex enhancements.
+Steven Reddie smr at essemer dot com dot au
+ Bug fix.
+Alexander Terekhov TEREKHOV at de dot ibm dot com
+ Re-implemented and improved read-write locks;
+ (with Louis Thomas) re-implemented and improved
+ condition variables;
+ enhancements to semaphores;
+ enhancements to mutexes;
+ new mutex implementation in 'futex' style;
+ suggested a robust implementation of pthread_once
+ similar to that implemented by V.Kliathcko;
+ system clock change handling re CV timeouts;
+ bug fixes.
+Thomas Pfaff tpfaff at gmx dot net
+ Changes to make C version usable with C++ applications;
+ re-implemented mutex routines to avoid Win32 mutexes
+ and TryEnterCriticalSection;
+ procedure to fix Mingw32 thread-safety issues.
+Franco Bez franco dot bez at gmx dot de
+ procedure to fix Mingw32 thread-safety issues.
+Louis Thomas lthomas at arbitrade dot com
+ (with Alexander Terekhov) re-implemented and improved
+ condition variables.
+David Korn dgk at research dot att dot com
+ Ported to UWIN.
+Phil Frisbie, Jr. phil at hawksoft dot com
+ Bug fix.
+Ralf Brese Ralf dot Brese at pdb4 dot siemens dot de
+ Bug fix.
+prionx at juno dot com prionx at juno dot com
+ Bug fixes.
+Max Woodbury mtew at cds dot duke dot edu
+ POSIX versioning conditionals;
+ reduced namespace pollution;
+ idea to separate routines to reduce statically
+ linked image sizes.
+Rob Fanner rfanner at stonethree dot com
+ Bug fix.
+Michael Johnson michaelj at maine dot rr dot com
+ Bug fix.
+Nicolas Barry boozai at yahoo dot com
+ Bug fixes.
+Piet van Bruggen pietvb at newbridges dot nl
+ Bug fix.
+Makoto Kato raven at oldskool dot jp
+ AMD64 port.
+Panagiotis E. Hadjidoukas peh at hpclab dot ceid dot upatras dot gr
+ Contributed the QueueUserAPCEx package which
+ makes preemptive async cancelation possible.
+Will Bryant will dot bryant at ecosm dot com
+ Borland compiler patch and makefile.
+Anuj Goyal anuj dot goyal at gmail dot com
+ Port to Digital Mars compiler.
+Gottlob Frege gottlobfrege at gmail dot com
+ re-implemented pthread_once (version 2)
+ (pthread_once cancellation added by rpj).
+Vladimir Kliatchko vladimir at kliatchko dot com
+ reimplemented pthread_once with the same form
+ as described by A.Terekhov (later version 2);
+ implementation of MCS (Mellor-Crummey/Scott) locks. \ No newline at end of file
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/CrossThreadRefCounted.h b/src/3rdparty/webkit/JavaScriptCore/wtf/CrossThreadRefCounted.h
new file mode 100644
index 0000000..281dfa6
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/CrossThreadRefCounted.h
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CrossThreadRefCounted_h
+#define CrossThreadRefCounted_h
+
+#include <wtf/Noncopyable.h>
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+#include <wtf/Threading.h>
+
+namespace WTF {
+
+ // Used to allowing sharing data across classes and threads (like ThreadedSafeShared).
+ //
+ // Why not just use ThreadSafeShared?
+ // ThreadSafeShared can have a significant perf impact when used in low level classes
+ // (like UString) that get ref/deref'ed a lot. This class has the benefit of doing fast ref
+ // counts like RefPtr whenever possible, but it has the downside that you need to copy it
+ // to use it on another thread.
+ //
+ // Is this class threadsafe?
+ // While each instance of the class is not threadsafe, the copied instance is threadsafe
+ // with respect to the original and any other copies. The underlying m_data is jointly
+ // owned by the original instance and all copies.
+ template<class T>
+ class CrossThreadRefCounted : Noncopyable {
+ public:
+ static PassRefPtr<CrossThreadRefCounted<T> > create(T* data)
+ {
+ return adoptRef(new CrossThreadRefCounted<T>(data, 0));
+ }
+
+ // Used to make an instance that can be used on another thread.
+ PassRefPtr<CrossThreadRefCounted<T> > crossThreadCopy();
+
+ void ref();
+ void deref();
+ T* release();
+
+ bool isShared() const
+ {
+ return !m_refCounter.hasOneRef() || (m_threadSafeRefCounter && !m_threadSafeRefCounter->hasOneRef());
+ }
+
+#ifndef NDEBUG
+ bool mayBePassedToAnotherThread() const { ASSERT(!m_threadId); return m_refCounter.hasOneRef(); }
+#endif
+
+ private:
+ CrossThreadRefCounted(T* data, ThreadSafeSharedBase* threadedCounter)
+ : m_threadSafeRefCounter(threadedCounter)
+ , m_data(data)
+#ifndef NDEBUG
+ , m_threadId(0)
+#endif
+ {
+ }
+
+ ~CrossThreadRefCounted()
+ {
+ if (!m_threadSafeRefCounter)
+ delete m_data;
+ }
+
+ void threadSafeDeref();
+
+ RefCountedBase m_refCounter;
+ ThreadSafeSharedBase* m_threadSafeRefCounter;
+ T* m_data;
+#ifndef NDEBUG
+ ThreadIdentifier m_threadId;
+#endif
+ };
+
+ template<class T>
+ void CrossThreadRefCounted<T>::ref()
+ {
+ ASSERT(!m_threadId || m_threadId == currentThread());
+ m_refCounter.ref();
+#ifndef NDEBUG
+ // Store the threadId as soon as the ref count gets to 2.
+ // The class gets created with a ref count of 1 and then passed
+ // to another thread where to ref count get increased. This
+ // is a heuristic but it seems to always work and has helped
+ // find some bugs.
+ if (!m_threadId && m_refCounter.refCount() == 2)
+ m_threadId = currentThread();
+#endif
+ }
+
+ template<class T>
+ void CrossThreadRefCounted<T>::deref()
+ {
+ ASSERT(!m_threadId || m_threadId == currentThread());
+ if (m_refCounter.derefBase()) {
+ threadSafeDeref();
+ delete this;
+ } else {
+#ifndef NDEBUG
+ // Clear the threadId when the ref goes to 1 because it
+ // is safe to be passed to another thread at this point.
+ if (m_threadId && m_refCounter.refCount() == 1)
+ m_threadId = 0;
+#endif
+ }
+ }
+
+ template<class T>
+ T* CrossThreadRefCounted<T>::release()
+ {
+ ASSERT(!isShared());
+
+ T* data = m_data;
+ m_data = 0;
+ return data;
+ }
+
+ template<class T>
+ PassRefPtr<CrossThreadRefCounted<T> > CrossThreadRefCounted<T>::crossThreadCopy()
+ {
+ if (m_threadSafeRefCounter)
+ m_threadSafeRefCounter->ref();
+ else
+ m_threadSafeRefCounter = new ThreadSafeSharedBase(2);
+ return adoptRef(new CrossThreadRefCounted<T>(m_data, m_threadSafeRefCounter));
+ }
+
+
+ template<class T>
+ void CrossThreadRefCounted<T>::threadSafeDeref()
+ {
+ if (m_threadSafeRefCounter && m_threadSafeRefCounter->derefBase()) {
+ delete m_threadSafeRefCounter;
+ m_threadSafeRefCounter = 0;
+ }
+ }
+} // namespace WTF
+
+using WTF::CrossThreadRefCounted;
+
+#endif // CrossThreadRefCounted_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.cpp
new file mode 100644
index 0000000..7ce9d65
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.cpp
@@ -0,0 +1,232 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2008 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CurrentTime.h"
+
+#if PLATFORM(WIN_OS)
+// Windows is first since we want to use hires timers, despite PLATFORM(CF)
+// being defined.
+// If defined, WIN32_LEAN_AND_MEAN disables timeBeginPeriod/timeEndPeriod.
+#undef WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <math.h>
+#include <stdint.h>
+#if HAVE(SYS_TIMEB_H)
+#include <sys/timeb.h>
+#endif
+#if !PLATFORM(WIN_CE)
+#include <sys/types.h>
+#endif
+#include <time.h>
+#elif PLATFORM(CF)
+#include <CoreFoundation/CFDate.h>
+#elif PLATFORM(GTK)
+#include <glib.h>
+#elif PLATFORM(WX)
+#include <wx/datetime.h>
+#else // Posix systems relying on the gettimeofday()
+#include <sys/time.h>
+#endif
+
+namespace WTF {
+
+const double msPerSecond = 1000.0;
+
+#if PLATFORM(WIN_OS)
+
+static LARGE_INTEGER qpcFrequency;
+static bool syncedTime;
+
+static double highResUpTime()
+{
+ // We use QPC, but only after sanity checking its result, due to bugs:
+ // http://support.microsoft.com/kb/274323
+ // http://support.microsoft.com/kb/895980
+ // http://msdn.microsoft.com/en-us/library/ms644904.aspx ("...you can get different results on different processors due to bugs in the basic input/output system (BIOS) or the hardware abstraction layer (HAL)."
+
+ static LARGE_INTEGER qpcLast;
+ static DWORD tickCountLast;
+ static bool inited;
+
+ LARGE_INTEGER qpc;
+ QueryPerformanceCounter(&qpc);
+ DWORD tickCount = GetTickCount();
+
+ if (inited) {
+ __int64 qpcElapsed = ((qpc.QuadPart - qpcLast.QuadPart) * 1000) / qpcFrequency.QuadPart;
+ __int64 tickCountElapsed;
+ if (tickCount >= tickCountLast)
+ tickCountElapsed = (tickCount - tickCountLast);
+ else {
+#if COMPILER(MINGW)
+ __int64 tickCountLarge = tickCount + 0x100000000ULL;
+#else
+ __int64 tickCountLarge = tickCount + 0x100000000I64;
+#endif
+ tickCountElapsed = tickCountLarge - tickCountLast;
+ }
+
+ // force a re-sync if QueryPerformanceCounter differs from GetTickCount by more than 500ms.
+ // (500ms value is from http://support.microsoft.com/kb/274323)
+ __int64 diff = tickCountElapsed - qpcElapsed;
+ if (diff > 500 || diff < -500)
+ syncedTime = false;
+ } else
+ inited = true;
+
+ qpcLast = qpc;
+ tickCountLast = tickCount;
+
+ return (1000.0 * qpc.QuadPart) / static_cast<double>(qpcFrequency.QuadPart);
+}
+
+static double lowResUTCTime()
+{
+#if PLATFORM(WIN_CE)
+ SYSTEMTIME systemTime;
+ GetSystemTime(&systemTime);
+ struct tm tmtime;
+ tmtime.tm_year = systemTime.wYear - 1900;
+ tmtime.tm_mon = systemTime.wMonth - 1;
+ tmtime.tm_mday = systemTime.wDay;
+ tmtime.tm_wday = systemTime.wDayOfWeek;
+ tmtime.tm_hour = systemTime.wHour;
+ tmtime.tm_min = systemTime.wMinute;
+ tmtime.tm_sec = systemTime.wSecond;
+ time_t timet = mktime(&tmtime);
+ return timet * msPerSecond + systemTime.wMilliseconds;
+#else // PLATFORM(WIN_CE)
+ struct _timeb timebuffer;
+ _ftime(&timebuffer);
+ return timebuffer.time * msPerSecond + timebuffer.millitm;
+#endif // PLATFORM(WIN_CE)
+}
+
+static bool qpcAvailable()
+{
+ static bool available;
+ static bool checked;
+
+ if (checked)
+ return available;
+
+ available = QueryPerformanceFrequency(&qpcFrequency);
+ checked = true;
+ return available;
+}
+
+double currentTime()
+{
+ // Use a combination of ftime and QueryPerformanceCounter.
+ // ftime returns the information we want, but doesn't have sufficient resolution.
+ // QueryPerformanceCounter has high resolution, but is only usable to measure time intervals.
+ // To combine them, we call ftime and QueryPerformanceCounter initially. Later calls will use QueryPerformanceCounter
+ // by itself, adding the delta to the saved ftime. We periodically re-sync to correct for drift.
+ static bool started;
+ static double syncLowResUTCTime;
+ static double syncHighResUpTime;
+ static double lastUTCTime;
+
+ double lowResTime = lowResUTCTime();
+
+ if (!qpcAvailable())
+ return lowResTime / 1000.0;
+
+ double highResTime = highResUpTime();
+
+ if (!syncedTime) {
+ timeBeginPeriod(1); // increase time resolution around low-res time getter
+ syncLowResUTCTime = lowResTime = lowResUTCTime();
+ timeEndPeriod(1); // restore time resolution
+ syncHighResUpTime = highResTime;
+ syncedTime = true;
+ }
+
+ double highResElapsed = highResTime - syncHighResUpTime;
+ double utc = syncLowResUTCTime + highResElapsed;
+
+ // force a clock re-sync if we've drifted
+ double lowResElapsed = lowResTime - syncLowResUTCTime;
+ const double maximumAllowedDriftMsec = 15.625 * 2.0; // 2x the typical low-res accuracy
+ if (fabs(highResElapsed - lowResElapsed) > maximumAllowedDriftMsec)
+ syncedTime = false;
+
+ // make sure time doesn't run backwards (only correct if difference is < 2 seconds, since DST or clock changes could occur)
+ const double backwardTimeLimit = 2000.0;
+ if (utc < lastUTCTime && (lastUTCTime - utc) < backwardTimeLimit)
+ return lastUTCTime / 1000.0;
+ lastUTCTime = utc;
+ return utc / 1000.0;
+}
+
+#elif PLATFORM(CF)
+
+double currentTime()
+{
+ return CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970;
+}
+
+#elif PLATFORM(GTK)
+
+// Note: GTK on Windows will pick up the PLATFORM(WIN) implementation above which provides
+// better accuracy compared with Windows implementation of g_get_current_time:
+// (http://www.google.com/codesearch/p?hl=en#HHnNRjks1t0/glib-2.5.2/glib/gmain.c&q=g_get_current_time).
+// Non-Windows GTK builds could use gettimeofday() directly but for the sake of consistency lets use GTK function.
+double currentTime()
+{
+ GTimeVal now;
+ g_get_current_time(&now);
+ return static_cast<double>(now.tv_sec) + static_cast<double>(now.tv_usec / 1000000.0);
+}
+
+#elif PLATFORM(WX)
+
+double currentTime()
+{
+ wxDateTime now = wxDateTime::UNow();
+ return (double)now.GetTicks() + (double)(now.GetMillisecond() / 1000.0);
+}
+
+#else // Other Posix systems rely on the gettimeofday().
+
+double currentTime()
+{
+ struct timeval now;
+ struct timezone zone;
+
+ gettimeofday(&now, &zone);
+ return static_cast<double>(now.tv_sec) + (double)(now.tv_usec / 1000000.0);
+}
+
+#endif
+
+} // namespace WTF
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h b/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h
new file mode 100644
index 0000000..31f1ec8
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2008 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CurrentTime_h
+#define CurrentTime_h
+
+namespace WTF {
+
+ // Returns the current system (UTC) time in seconds, starting January 1, 1970.
+ // Precision varies depending on a platform but usually is as good or better
+ // than a millisecond.
+ double currentTime();
+
+} // namespace WTF
+
+using WTF::currentTime;
+
+#endif // CurrentTime_h
+
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Deque.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Deque.h
index 70c546b..c371d38 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/Deque.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Deque.h
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -75,9 +76,14 @@ namespace WTF {
template<typename U> void append(const U&);
template<typename U> void prepend(const U&);
void removeFirst();
+ void remove(iterator&);
+ void remove(const_iterator&);
void clear();
+ template<typename Predicate>
+ iterator findIf(Predicate&);
+
private:
friend class DequeIteratorBase<T>;
@@ -85,6 +91,7 @@ namespace WTF {
typedef VectorTypeOperations<T> TypeOperations;
typedef DequeIteratorBase<T> IteratorBase;
+ void remove(size_t position);
void invalidateIterators();
void destroyAll();
void checkValidity() const;
@@ -124,6 +131,7 @@ namespace WTF {
private:
void addToIteratorsList();
+ void removeFromIteratorsList();
void checkValidity() const;
void checkValidity(const Base&) const;
@@ -348,7 +356,7 @@ namespace WTF {
destroyAll();
}
- template <typename T>
+ template<typename T>
inline void Deque<T>::swap(Deque<T>& other)
{
checkValidity();
@@ -361,7 +369,7 @@ namespace WTF {
other.checkValidity();
}
- template <typename T>
+ template<typename T>
inline void Deque<T>::clear()
{
checkValidity();
@@ -373,6 +381,18 @@ namespace WTF {
}
template<typename T>
+ template<typename Predicate>
+ inline DequeIterator<T> Deque<T>::findIf(Predicate& predicate)
+ {
+ iterator end_iterator = end();
+ for (iterator it = begin(); it != end_iterator; ++it) {
+ if (predicate(*it))
+ return it;
+ }
+ return end_iterator;
+ }
+
+ template<typename T>
inline void Deque<T>::expandCapacityIfNeeded()
{
if (m_start) {
@@ -447,10 +467,48 @@ namespace WTF {
checkValidity();
}
+ template<typename T>
+ inline void Deque<T>::remove(iterator& it)
+ {
+ it.checkValidity();
+ remove(it.m_index);
+ }
+
+ template<typename T>
+ inline void Deque<T>::remove(const_iterator& it)
+ {
+ it.checkValidity();
+ remove(it.m_index);
+ }
+
+ template<typename T>
+ inline void Deque<T>::remove(size_t position)
+ {
+ if (position == m_end)
+ return;
+
+ checkValidity();
+ invalidateIterators();
+
+ T* buffer = m_buffer.buffer();
+ TypeOperations::destruct(&buffer[position], &buffer[position + 1]);
+
+ // Find which segment of the circular buffer contained the remove element, and only move elements in that part.
+ if (position >= m_start) {
+ TypeOperations::moveOverlapping(buffer + m_start, buffer + position, buffer + m_start + 1);
+ m_start = (m_start + 1) % m_buffer.capacity();
+ } else {
+ TypeOperations::moveOverlapping(buffer + position + 1, buffer + m_end, buffer + position);
+ m_end = (m_end - 1 + m_buffer.capacity()) % m_buffer.capacity();
+ }
+ checkValidity();
+ }
+
#ifdef NDEBUG
template<typename T> inline void DequeIteratorBase<T>::checkValidity() const { }
template<typename T> inline void DequeIteratorBase<T>::checkValidity(const DequeIteratorBase<T>&) const { }
template<typename T> inline void DequeIteratorBase<T>::addToIteratorsList() { }
+ template<typename T> inline void DequeIteratorBase<T>::removeFromIteratorsList() { }
#else
template<typename T>
void DequeIteratorBase<T>::checkValidity() const
@@ -480,6 +538,30 @@ namespace WTF {
}
m_previous = 0;
}
+
+ template<typename T>
+ void DequeIteratorBase<T>::removeFromIteratorsList()
+ {
+ if (!m_deque) {
+ ASSERT(!m_next);
+ ASSERT(!m_previous);
+ } else {
+ if (m_next) {
+ ASSERT(m_next->m_previous == this);
+ m_next->m_previous = m_previous;
+ }
+ if (m_previous) {
+ ASSERT(m_deque->m_iterators != this);
+ ASSERT(m_previous->m_next == this);
+ m_previous->m_next = m_next;
+ } else {
+ ASSERT(m_deque->m_iterators == this);
+ m_deque->m_iterators = m_next;
+ }
+ }
+ m_next = 0;
+ m_previous = 0;
+ }
#endif
template<typename T>
@@ -507,30 +589,25 @@ namespace WTF {
}
template<typename T>
+ inline DequeIteratorBase<T>& DequeIteratorBase<T>::operator=(const Base& other)
+ {
+ checkValidity();
+ other.checkValidity();
+ removeFromIteratorsList();
+
+ m_deque = other.m_deque;
+ m_index = other.m_index;
+ addToIteratorsList();
+ checkValidity();
+ return *this;
+ }
+
+ template<typename T>
inline DequeIteratorBase<T>::~DequeIteratorBase()
{
#ifndef NDEBUG
- // Delete iterator from doubly-linked list of iterators.
- if (!m_deque) {
- ASSERT(!m_next);
- ASSERT(!m_previous);
- } else {
- if (m_next) {
- ASSERT(m_next->m_previous == this);
- m_next->m_previous = m_previous;
- }
- if (m_previous) {
- ASSERT(m_deque->m_iterators != this);
- ASSERT(m_previous->m_next == this);
- m_previous->m_next = m_next;
- } else {
- ASSERT(m_deque->m_iterators == this);
- m_deque->m_iterators = m_next;
- }
- }
+ removeFromIteratorsList();
m_deque = 0;
- m_next = 0;
- m_previous = 0;
#endif
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/FastAllocBase.h b/src/3rdparty/webkit/JavaScriptCore/wtf/FastAllocBase.h
new file mode 100644
index 0000000..71e6bfa
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/FastAllocBase.h
@@ -0,0 +1,400 @@
+/*
+ * Copyright (C) 2008, 2009 Paul Pedriana <ppedriana@ea.com>. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef FastAllocBase_h
+#define FastAllocBase_h
+
+// Provides customizable overrides of fastMalloc/fastFree and operator new/delete
+//
+// Provided functionality:
+// namespace WTF {
+// class FastAllocBase;
+//
+// T* fastNew<T>();
+// T* fastNew<T>(arg);
+// T* fastNew<T>(arg, arg);
+// T* fastNewArray<T>(count);
+// void fastDelete(T* p);
+// void fastDeleteArray(T* p);
+// void fastNonNullDelete(T* p);
+// void fastNonNullDeleteArray(T* p);
+// }
+//
+// FastDelete assumes that the underlying
+//
+// Example usage:
+// class Widget : public FastAllocBase { ... };
+//
+// char* charPtr = fastNew<char>();
+// fastDelete(charPtr);
+//
+// char* charArrayPtr = fastNewArray<char>(37);
+// fastDeleteArray(charArrayPtr);
+//
+// void** voidPtrPtr = fastNew<void*>();
+// fastDelete(voidPtrPtr);
+//
+// void** voidPtrArrayPtr = fastNewArray<void*>(37);
+// fastDeleteArray(voidPtrArrayPtr);
+//
+// POD* podPtr = fastNew<POD>();
+// fastDelete(podPtr);
+//
+// POD* podArrayPtr = fastNewArray<POD>(37);
+// fastDeleteArray(podArrayPtr);
+//
+// Object* objectPtr = fastNew<Object>();
+// fastDelete(objectPtr);
+//
+// Object* objectArrayPtr = fastNewArray<Object>(37);
+// fastDeleteArray(objectArrayPtr);
+//
+
+#include <new>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include "FastMalloc.h"
+#include "TypeTraits.h"
+#include <wtf/Assertions.h>
+
+namespace WTF {
+
+ class FastAllocBase {
+ public:
+ // Placement operator new.
+ void* operator new(size_t, void* p) { return p; }
+ void* operator new[](size_t, void* p) { return p; }
+
+ void* operator new(size_t size)
+ {
+ void* p = fastMalloc(size);
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeClassNew);
+ return p;
+ }
+
+ void operator delete(void* p)
+ {
+ fastMallocMatchValidateFree(p, Internal::AllocTypeClassNew);
+ fastFree(p);
+ }
+
+ void* operator new[](size_t size)
+ {
+ void* p = fastMalloc(size);
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeClassNewArray);
+ return p;
+ }
+
+ void operator delete[](void* p)
+ {
+ fastMallocMatchValidateFree(p, Internal::AllocTypeClassNewArray);
+ fastFree(p);
+ }
+ };
+
+ // fastNew / fastDelete
+
+ template <typename T>
+ inline T* fastNew()
+ {
+ void* p = fastMalloc(sizeof(T));
+
+ if (!p)
+ return 0;
+
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNew);
+ return ::new(p) T;
+ }
+
+ template <typename T, typename Arg1>
+ inline T* fastNew(Arg1 arg1)
+ {
+ void* p = fastMalloc(sizeof(T));
+
+ if (!p)
+ return 0;
+
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNew);
+ return ::new(p) T(arg1);
+ }
+
+ template <typename T, typename Arg1, typename Arg2>
+ inline T* fastNew(Arg1 arg1, Arg2 arg2)
+ {
+ void* p = fastMalloc(sizeof(T));
+
+ if (!p)
+ return 0;
+
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNew);
+ return ::new(p) T(arg1, arg2);
+ }
+
+ template <typename T, typename Arg1, typename Arg2, typename Arg3>
+ inline T* fastNew(Arg1 arg1, Arg2 arg2, Arg3 arg3)
+ {
+ void* p = fastMalloc(sizeof(T));
+
+ if (!p)
+ return 0;
+
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNew);
+ return ::new(p) T(arg1, arg2, arg3);
+ }
+
+ template <typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+ inline T* fastNew(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4)
+ {
+ void* p = fastMalloc(sizeof(T));
+
+ if (!p)
+ return 0;
+
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNew);
+ return ::new(p) T(arg1, arg2, arg3, arg4);
+ }
+
+ template <typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+ inline T* fastNew(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5)
+ {
+ void* p = fastMalloc(sizeof(T));
+
+ if (!p)
+ return 0;
+
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNew);
+ return ::new(p) T(arg1, arg2, arg3, arg4, arg5);
+ }
+
+ namespace Internal {
+
+ // We define a union of pointer to an integer and pointer to T.
+ // When non-POD arrays are allocated we add a few leading bytes to tell what
+ // the size of the array is. We return to the user the pointer to T.
+ // The way to think of it is as if we allocate a struct like so:
+ // struct Array {
+ // AllocAlignmentInteger m_size;
+ // T m_T[array count];
+ // };
+
+ template <typename T>
+ union ArraySize {
+ AllocAlignmentInteger* size;
+ T* t;
+ };
+
+ // This is a support template for fastNewArray.
+ // This handles the case wherein T has a trivial ctor and a trivial dtor.
+ template <typename T, bool trivialCtor, bool trivialDtor>
+ struct NewArrayImpl {
+ static T* fastNewArray(size_t count)
+ {
+ T* p = static_cast<T*>(fastMalloc(sizeof(T) * count));
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNewArray);
+ return p;
+ }
+ };
+
+ // This is a support template for fastNewArray.
+ // This handles the case wherein T has a non-trivial ctor and a trivial dtor.
+ template <typename T>
+ struct NewArrayImpl<T, false, true> {
+ static T* fastNewArray(size_t count)
+ {
+ T* p = static_cast<T*>(fastMalloc(sizeof(T) * count));
+
+ if (!p)
+ return 0;
+
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNewArray);
+
+ for (T* pObject = p, *pObjectEnd = pObject + count; pObject != pObjectEnd; ++pObject)
+ ::new(pObject) T;
+
+ return p;
+ }
+ };
+
+ // This is a support template for fastNewArray.
+ // This handles the case wherein T has a trivial ctor and a non-trivial dtor.
+ template <typename T>
+ struct NewArrayImpl<T, true, false> {
+ static T* fastNewArray(size_t count)
+ {
+ void* p = fastMalloc(sizeof(AllocAlignmentInteger) + (sizeof(T) * count));
+ ArraySize<T> a = { static_cast<AllocAlignmentInteger*>(p) };
+
+ if (!p)
+ return 0;
+
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNewArray);
+ *a.size++ = count;
+ // No need to construct the objects in this case.
+
+ return a.t;
+ }
+ };
+
+ // This is a support template for fastNewArray.
+ // This handles the case wherein T has a non-trivial ctor and a non-trivial dtor.
+ template <typename T>
+ struct NewArrayImpl<T, false, false> {
+ static T* fastNewArray(size_t count)
+ {
+ void* p = fastMalloc(sizeof(AllocAlignmentInteger) + (sizeof(T) * count));
+ ArraySize<T> a = { static_cast<AllocAlignmentInteger*>(p) };
+
+ if (!p)
+ return 0;
+
+ fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNewArray);
+ *a.size++ = count;
+
+ for (T* pT = a.t, *pTEnd = pT + count; pT != pTEnd; ++pT)
+ ::new(pT) T;
+
+ return a.t;
+ }
+ };
+ } // namespace Internal
+
+ template <typename T>
+ inline T* fastNewArray(size_t count)
+ {
+ return Internal::NewArrayImpl<T, WTF::HasTrivialConstructor<T>::value, WTF::HasTrivialDestructor<T>::value>::fastNewArray(count);
+ }
+
+ template <typename T>
+ inline void fastDelete(T* p)
+ {
+ if (!p)
+ return;
+
+ fastMallocMatchValidateFree(p, Internal::AllocTypeFastNew);
+ p->~T();
+ fastFree(p);
+ }
+
+ namespace Internal {
+ // This is a support template for fastDeleteArray.
+ // This handles the case wherein T has a trivial dtor.
+ template <typename T, bool trivialDtor>
+ struct DeleteArrayImpl {
+ static void fastDeleteArray(void* p)
+ {
+ // No need to destruct the objects in this case.
+ // We expect that fastFree checks for null.
+ fastMallocMatchValidateFree(p, Internal::AllocTypeFastNewArray);
+ fastFree(p);
+ }
+ };
+
+ // This is a support template for fastDeleteArray.
+ // This handles the case wherein T has a non-trivial dtor.
+ template <typename T>
+ struct DeleteArrayImpl<T, false> {
+ static void fastDeleteArray(T* p)
+ {
+ if (!p)
+ return;
+
+ ArraySize<T> a;
+ a.t = p;
+ a.size--; // Decrement size pointer
+
+ T* pEnd = p + *a.size;
+ while (pEnd-- != p)
+ pEnd->~T();
+
+ fastMallocMatchValidateFree(a.size, Internal::AllocTypeFastNewArray);
+ fastFree(a.size);
+ }
+ };
+
+ } // namespace Internal
+
+ template <typename T>
+ void fastDeleteArray(T* p)
+ {
+ Internal::DeleteArrayImpl<T, WTF::HasTrivialDestructor<T>::value>::fastDeleteArray(p);
+ }
+
+
+ template <typename T>
+ inline void fastNonNullDelete(T* p)
+ {
+ fastMallocMatchValidateFree(p, Internal::AllocTypeFastNew);
+ p->~T();
+ fastFree(p);
+ }
+
+ namespace Internal {
+ // This is a support template for fastDeleteArray.
+ // This handles the case wherein T has a trivial dtor.
+ template <typename T, bool trivialDtor>
+ struct NonNullDeleteArrayImpl {
+ static void fastNonNullDeleteArray(void* p)
+ {
+ fastMallocMatchValidateFree(p, Internal::AllocTypeFastNewArray);
+ // No need to destruct the objects in this case.
+ fastFree(p);
+ }
+ };
+
+ // This is a support template for fastDeleteArray.
+ // This handles the case wherein T has a non-trivial dtor.
+ template <typename T>
+ struct NonNullDeleteArrayImpl<T, false> {
+ static void fastNonNullDeleteArray(T* p)
+ {
+ ArraySize<T> a;
+ a.t = p;
+ a.size--;
+
+ T* pEnd = p + *a.size;
+ while (pEnd-- != p)
+ pEnd->~T();
+
+ fastMallocMatchValidateFree(a.size, Internal::AllocTypeFastNewArray);
+ fastFree(a.size);
+ }
+ };
+
+ } // namespace Internal
+
+ template <typename T>
+ void fastNonNullDeleteArray(T* p)
+ {
+ Internal::NonNullDeleteArrayImpl<T, WTF::HasTrivialDestructor<T>::value>::fastNonNullDeleteArray(p);
+ }
+
+
+} // namespace WTF
+
+#endif // FastAllocBase_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.cpp
index 4387d61..f114160 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.cpp
@@ -78,6 +78,7 @@
#include "FastMalloc.h"
#include "Assertions.h"
+#include <limits>
#if ENABLE(JSC_MULTIPLE_THREADS)
#include <pthread.h>
#endif
@@ -94,7 +95,7 @@
#define FORCE_SYSTEM_MALLOC 1
#endif
-#define TCMALLOC_TRACK_DECOMMITED_SPANS (HAVE(VIRTUALALLOC))
+#define TCMALLOC_TRACK_DECOMMITED_SPANS (HAVE(VIRTUALALLOC) || HAVE(MADV_FREE_REUSE))
#ifndef NDEBUG
namespace WTF {
@@ -151,6 +152,19 @@ void fastMallocAllow()
namespace WTF {
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+
+namespace Internal {
+
+void fastMallocMatchFailed(void*)
+{
+ CRASH();
+}
+
+} // namespace Internal
+
+#endif
+
void* fastZeroedMalloc(size_t n)
{
void* result = fastMalloc(n);
@@ -183,13 +197,34 @@ namespace WTF {
void* tryFastMalloc(size_t n)
{
ASSERT(!isForbidden());
+
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ if (std::numeric_limits<size_t>::max() - sizeof(AllocAlignmentInteger) <= n) // If overflow would occur...
+ return 0;
+
+ void* result = malloc(n + sizeof(AllocAlignmentInteger));
+ if (!result)
+ return 0;
+
+ *static_cast<AllocAlignmentInteger*>(result) = Internal::AllocTypeMalloc;
+ result = static_cast<AllocAlignmentInteger*>(result) + 1;
+
+ return result;
+#else
return malloc(n);
+#endif
}
void* fastMalloc(size_t n)
{
ASSERT(!isForbidden());
+
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ void* result = tryFastMalloc(n);
+#else
void* result = malloc(n);
+#endif
+
if (!result)
CRASH();
return result;
@@ -198,13 +233,36 @@ void* fastMalloc(size_t n)
void* tryFastCalloc(size_t n_elements, size_t element_size)
{
ASSERT(!isForbidden());
+
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ size_t totalBytes = n_elements * element_size;
+ if (n_elements > 1 && element_size && (totalBytes / element_size) != n_elements || (std::numeric_limits<size_t>::max() - sizeof(AllocAlignmentInteger) <= totalBytes))
+ return 0;
+
+ totalBytes += sizeof(AllocAlignmentInteger);
+ void* result = malloc(totalBytes);
+ if (!result)
+ return 0;
+
+ memset(result, 0, totalBytes);
+ *static_cast<AllocAlignmentInteger*>(result) = Internal::AllocTypeMalloc;
+ result = static_cast<AllocAlignmentInteger*>(result) + 1;
+ return result;
+#else
return calloc(n_elements, element_size);
+#endif
}
void* fastCalloc(size_t n_elements, size_t element_size)
{
ASSERT(!isForbidden());
+
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ void* result = tryFastCalloc(n_elements, element_size);
+#else
void* result = calloc(n_elements, element_size);
+#endif
+
if (!result)
CRASH();
return result;
@@ -213,19 +271,57 @@ void* fastCalloc(size_t n_elements, size_t element_size)
void fastFree(void* p)
{
ASSERT(!isForbidden());
+
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ if (!p)
+ return;
+
+ AllocAlignmentInteger* header = Internal::fastMallocMatchValidationValue(p);
+ if (*header != Internal::AllocTypeMalloc)
+ Internal::fastMallocMatchFailed(p);
+ free(header);
+#else
free(p);
+#endif
}
void* tryFastRealloc(void* p, size_t n)
{
ASSERT(!isForbidden());
+
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ if (p) {
+ if (std::numeric_limits<size_t>::max() - sizeof(AllocAlignmentInteger) <= n) // If overflow would occur...
+ return 0;
+ AllocAlignmentInteger* header = Internal::fastMallocMatchValidationValue(p);
+ if (*header != Internal::AllocTypeMalloc)
+ Internal::fastMallocMatchFailed(p);
+ void* result = realloc(header, n + sizeof(AllocAlignmentInteger));
+ if (!result)
+ return 0;
+
+ // This should not be needed because the value is already there:
+ // *static_cast<AllocAlignmentInteger*>(result) = Internal::AllocTypeMalloc;
+ result = static_cast<AllocAlignmentInteger*>(result) + 1;
+ return result;
+ } else {
+ return fastMalloc(n);
+ }
+#else
return realloc(p, n);
+#endif
}
void* fastRealloc(void* p, size_t n)
{
ASSERT(!isForbidden());
+
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ void* result = tryFastRealloc(p, n);
+#else
void* result = realloc(p, n);
+#endif
+
if (!result)
CRASH();
return result;
@@ -265,6 +361,7 @@ extern "C" const int jscore_fastmalloc_introspection = 0;
#include "TCSystemAlloc.h"
#include <algorithm>
#include <errno.h>
+#include <limits>
#include <new>
#include <pthread.h>
#include <stdarg.h>
@@ -321,9 +418,11 @@ namespace WTF {
#define CHECK_CONDITION ASSERT
#if PLATFORM(DARWIN)
+class Span;
+class TCMalloc_Central_FreeListPadded;
class TCMalloc_PageHeap;
class TCMalloc_ThreadCache;
-class TCMalloc_Central_FreeListPadded;
+template <typename T> class PageHeapAllocator;
class FastMallocZone {
public:
@@ -339,7 +438,7 @@ public:
static void statistics(malloc_zone_t*, malloc_statistics_t* stats) { memset(stats, 0, sizeof(malloc_statistics_t)); }
private:
- FastMallocZone(TCMalloc_PageHeap*, TCMalloc_ThreadCache**, TCMalloc_Central_FreeListPadded*);
+ FastMallocZone(TCMalloc_PageHeap*, TCMalloc_ThreadCache**, TCMalloc_Central_FreeListPadded*, PageHeapAllocator<Span>*, PageHeapAllocator<TCMalloc_ThreadCache>*);
static size_t size(malloc_zone_t*, const void*);
static void* zoneMalloc(malloc_zone_t*, size_t);
static void* zoneCalloc(malloc_zone_t*, size_t numItems, size_t size);
@@ -352,6 +451,8 @@ private:
TCMalloc_PageHeap* m_pageHeap;
TCMalloc_ThreadCache** m_threadHeaps;
TCMalloc_Central_FreeListPadded* m_centralCaches;
+ PageHeapAllocator<Span>* m_spanAllocator;
+ PageHeapAllocator<TCMalloc_ThreadCache>* m_pageHeapAllocator;
};
#endif
@@ -820,6 +921,9 @@ class PageHeapAllocator {
char* free_area_;
size_t free_avail_;
+ // Linked list of all regions allocated by this allocator
+ void* allocated_regions_;
+
// Free list of already carved objects
void* free_list_;
@@ -830,6 +934,7 @@ class PageHeapAllocator {
void Init() {
ASSERT(kAlignedSize <= kAllocIncrement);
inuse_ = 0;
+ allocated_regions_ = 0;
free_area_ = NULL;
free_avail_ = 0;
free_list_ = NULL;
@@ -844,9 +949,14 @@ class PageHeapAllocator {
} else {
if (free_avail_ < kAlignedSize) {
// Need more room
- free_area_ = reinterpret_cast<char*>(MetaDataAlloc(kAllocIncrement));
- if (free_area_ == NULL) CRASH();
- free_avail_ = kAllocIncrement;
+ char* new_allocation = reinterpret_cast<char*>(MetaDataAlloc(kAllocIncrement));
+ if (!new_allocation)
+ CRASH();
+
+ *(void**)new_allocation = allocated_regions_;
+ allocated_regions_ = new_allocation;
+ free_area_ = new_allocation + kAlignedSize;
+ free_avail_ = kAllocIncrement - kAlignedSize;
}
result = free_area_;
free_area_ += kAlignedSize;
@@ -863,6 +973,18 @@ class PageHeapAllocator {
}
int inuse() const { return inuse_; }
+
+#if defined(WTF_CHANGES) && PLATFORM(DARWIN)
+ template <class Recorder>
+ void recordAdministrativeRegions(Recorder& recorder, const RemoteMemoryReader& reader)
+ {
+ vm_address_t adminAllocation = reinterpret_cast<vm_address_t>(allocated_regions_);
+ while (adminAllocation) {
+ recorder.recordRegion(adminAllocation, kAllocIncrement);
+ adminAllocation = *reader(reinterpret_cast<vm_address_t*>(adminAllocation));
+ }
+ }
+#endif
};
// -------------------------------------------------------------------------
@@ -1037,11 +1159,30 @@ template <int BITS> class MapSelector {
typedef PackedCache<BITS, uint64_t> CacheType;
};
+#if defined(WTF_CHANGES)
+#if PLATFORM(X86_64)
+// On all known X86-64 platforms, the upper 16 bits are always unused and therefore
+// can be excluded from the PageMap key.
+// See http://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details
+
+static const size_t kBitsUnusedOn64Bit = 16;
+#else
+static const size_t kBitsUnusedOn64Bit = 0;
+#endif
+
+// A three-level map for 64-bit machines
+template <> class MapSelector<64> {
+ public:
+ typedef TCMalloc_PageMap3<64 - kPageShift - kBitsUnusedOn64Bit> Type;
+ typedef PackedCache<64, uint64_t> CacheType;
+};
+#endif
+
// A two-level map for 32-bit machines
template <> class MapSelector<32> {
public:
- typedef TCMalloc_PageMap2<32-kPageShift> Type;
- typedef PackedCache<32-kPageShift, uint16_t> CacheType;
+ typedef TCMalloc_PageMap2<32 - kPageShift> Type;
+ typedef PackedCache<32 - kPageShift, uint16_t> CacheType;
};
// -------------------------------------------------------------------------
@@ -1359,8 +1500,14 @@ static ALWAYS_INLINE void mergeDecommittedStates(Span*, Span*) { }
#else
static ALWAYS_INLINE void mergeDecommittedStates(Span* destination, Span* other)
{
- if (other->decommitted)
+ if (destination->decommitted && !other->decommitted) {
+ TCMalloc_SystemRelease(reinterpret_cast<void*>(other->start << kPageShift),
+ static_cast<size_t>(other->length << kPageShift));
+ } else if (other->decommitted && !destination->decommitted) {
+ TCMalloc_SystemRelease(reinterpret_cast<void*>(destination->start << kPageShift),
+ static_cast<size_t>(destination->length << kPageShift));
destination->decommitted = true;
+ }
}
#endif
@@ -3244,7 +3391,20 @@ template <bool crashOnFailure>
ALWAYS_INLINE
#endif
void* malloc(size_t size) {
- void* result = do_malloc(size);
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ if (std::numeric_limits<size_t>::max() - sizeof(AllocAlignmentInteger) <= size) // If overflow would occur...
+ return 0;
+ size += sizeof(AllocAlignmentInteger);
+ void* result = do_malloc(size);
+ if (!result)
+ return 0;
+
+ *static_cast<AllocAlignmentInteger*>(result) = Internal::AllocTypeMalloc;
+ result = static_cast<AllocAlignmentInteger*>(result) + 1;
+#else
+ void* result = do_malloc(size);
+#endif
+
#ifndef WTF_CHANGES
MallocHook::InvokeNewHook(result, size);
#endif
@@ -3258,7 +3418,18 @@ void free(void* ptr) {
#ifndef WTF_CHANGES
MallocHook::InvokeDeleteHook(ptr);
#endif
- do_free(ptr);
+
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ if (!ptr)
+ return;
+
+ AllocAlignmentInteger* header = Internal::fastMallocMatchValidationValue(ptr);
+ if (*header != Internal::AllocTypeMalloc)
+ Internal::fastMallocMatchFailed(ptr);
+ do_free(header);
+#else
+ do_free(ptr);
+#endif
}
#ifndef WTF_CHANGES
@@ -3281,22 +3452,39 @@ template <bool crashOnFailure>
ALWAYS_INLINE
#endif
void* calloc(size_t n, size_t elem_size) {
- const size_t totalBytes = n * elem_size;
+ size_t totalBytes = n * elem_size;
// Protect against overflow
if (n > 1 && elem_size && (totalBytes / elem_size) != n)
return 0;
-
- void* result = do_malloc(totalBytes);
- if (result != NULL) {
+
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ if (std::numeric_limits<size_t>::max() - sizeof(AllocAlignmentInteger) <= totalBytes) // If overflow would occur...
+ return 0;
+
+ totalBytes += sizeof(AllocAlignmentInteger);
+ void* result = do_malloc(totalBytes);
+ if (!result)
+ return 0;
+
memset(result, 0, totalBytes);
- }
+ *static_cast<AllocAlignmentInteger*>(result) = Internal::AllocTypeMalloc;
+ result = static_cast<AllocAlignmentInteger*>(result) + 1;
+#else
+ void* result = do_malloc(totalBytes);
+ if (result != NULL) {
+ memset(result, 0, totalBytes);
+ }
+#endif
+
#ifndef WTF_CHANGES
MallocHook::InvokeNewHook(result, totalBytes);
#endif
return result;
}
+// Since cfree isn't used anywhere, we don't compile it in.
+#ifndef WTF_CHANGES
#ifndef WTF_CHANGES
extern "C"
#endif
@@ -3306,6 +3494,7 @@ void cfree(void* ptr) {
#endif
do_free(ptr);
}
+#endif
#ifndef WTF_CHANGES
extern "C"
@@ -3328,10 +3517,14 @@ ALWAYS_INLINE
#endif
void* realloc(void* old_ptr, size_t new_size) {
if (old_ptr == NULL) {
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ void* result = malloc(new_size);
+#else
void* result = do_malloc(new_size);
#ifndef WTF_CHANGES
MallocHook::InvokeNewHook(result, new_size);
#endif
+#endif
return result;
}
if (new_size == 0) {
@@ -3342,6 +3535,16 @@ void* realloc(void* old_ptr, size_t new_size) {
return NULL;
}
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ if (std::numeric_limits<size_t>::max() - sizeof(AllocAlignmentInteger) <= new_size) // If overflow would occur...
+ return 0;
+ new_size += sizeof(AllocAlignmentInteger);
+ AllocAlignmentInteger* header = Internal::fastMallocMatchValidationValue(old_ptr);
+ if (*header != Internal::AllocTypeMalloc)
+ Internal::fastMallocMatchFailed(old_ptr);
+ old_ptr = header;
+#endif
+
// Get the size of the old entry
const PageID p = reinterpret_cast<uintptr_t>(old_ptr) >> kPageShift;
size_t cl = pageheap->GetSizeClassIfCached(p);
@@ -3378,8 +3581,14 @@ void* realloc(void* old_ptr, size_t new_size) {
// that we already know the sizeclass of old_ptr. The benefit
// would be small, so don't bother.
do_free(old_ptr);
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ new_ptr = static_cast<AllocAlignmentInteger*>(new_ptr) + 1;
+#endif
return new_ptr;
} else {
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+ old_ptr = pByte + sizeof(AllocAlignmentInteger); // Set old_ptr back to the user pointer.
+#endif
return old_ptr;
}
}
@@ -3608,6 +3817,7 @@ public:
void visit(void* ptr) { m_freeObjects.add(ptr); }
bool isFreeObject(void* ptr) const { return m_freeObjects.contains(ptr); }
+ bool isFreeObject(vm_address_t ptr) const { return isFreeObject(reinterpret_cast<void*>(ptr)); }
size_t freeObjectCount() const { return m_freeObjects.size(); }
void findFreeObjects(TCMalloc_ThreadCache* threadCache)
@@ -3658,7 +3868,9 @@ class PageMapMemoryUsageRecorder {
vm_range_recorder_t* m_recorder;
const RemoteMemoryReader& m_reader;
const FreeObjectFinder& m_freeObjectFinder;
- mutable HashSet<void*> m_seenPointers;
+
+ HashSet<void*> m_seenPointers;
+ Vector<Span*> m_coalescedSpans;
public:
PageMapMemoryUsageRecorder(task_t task, void* context, unsigned typeMask, vm_range_recorder_t* recorder, const RemoteMemoryReader& reader, const FreeObjectFinder& freeObjectFinder)
@@ -3670,51 +3882,133 @@ public:
, m_freeObjectFinder(freeObjectFinder)
{ }
- int visit(void* ptr) const
+ ~PageMapMemoryUsageRecorder()
+ {
+ ASSERT(!m_coalescedSpans.size());
+ }
+
+ void recordPendingRegions()
+ {
+ Span* lastSpan = m_coalescedSpans[m_coalescedSpans.size() - 1];
+ vm_range_t ptrRange = { m_coalescedSpans[0]->start << kPageShift, 0 };
+ ptrRange.size = (lastSpan->start << kPageShift) - ptrRange.address + (lastSpan->length * kPageSize);
+
+ // Mark the memory region the spans represent as a candidate for containing pointers
+ if (m_typeMask & MALLOC_PTR_REGION_RANGE_TYPE)
+ (*m_recorder)(m_task, m_context, MALLOC_PTR_REGION_RANGE_TYPE, &ptrRange, 1);
+
+ if (!(m_typeMask & MALLOC_PTR_IN_USE_RANGE_TYPE)) {
+ m_coalescedSpans.clear();
+ return;
+ }
+
+ Vector<vm_range_t, 1024> allocatedPointers;
+ for (size_t i = 0; i < m_coalescedSpans.size(); ++i) {
+ Span *theSpan = m_coalescedSpans[i];
+ if (theSpan->free)
+ continue;
+
+ vm_address_t spanStartAddress = theSpan->start << kPageShift;
+ vm_size_t spanSizeInBytes = theSpan->length * kPageSize;
+
+ if (!theSpan->sizeclass) {
+ // If it's an allocated large object span, mark it as in use
+ if (!m_freeObjectFinder.isFreeObject(spanStartAddress))
+ allocatedPointers.append((vm_range_t){spanStartAddress, spanSizeInBytes});
+ } else {
+ const size_t objectSize = ByteSizeForClass(theSpan->sizeclass);
+
+ // Mark each allocated small object within the span as in use
+ const vm_address_t endOfSpan = spanStartAddress + spanSizeInBytes;
+ for (vm_address_t object = spanStartAddress; object + objectSize <= endOfSpan; object += objectSize) {
+ if (!m_freeObjectFinder.isFreeObject(object))
+ allocatedPointers.append((vm_range_t){object, objectSize});
+ }
+ }
+ }
+
+ (*m_recorder)(m_task, m_context, MALLOC_PTR_IN_USE_RANGE_TYPE, allocatedPointers.data(), allocatedPointers.size());
+
+ m_coalescedSpans.clear();
+ }
+
+ int visit(void* ptr)
{
if (!ptr)
return 1;
Span* span = m_reader(reinterpret_cast<Span*>(ptr));
+ if (!span->start)
+ return 1;
+
if (m_seenPointers.contains(ptr))
return span->length;
m_seenPointers.add(ptr);
- // Mark the memory used for the Span itself as an administrative region
- vm_range_t ptrRange = { reinterpret_cast<vm_address_t>(ptr), sizeof(Span) };
- if (m_typeMask & (MALLOC_PTR_REGION_RANGE_TYPE | MALLOC_ADMIN_REGION_RANGE_TYPE))
- (*m_recorder)(m_task, m_context, MALLOC_ADMIN_REGION_RANGE_TYPE, &ptrRange, 1);
+ if (!m_coalescedSpans.size()) {
+ m_coalescedSpans.append(span);
+ return span->length;
+ }
- ptrRange.address = span->start << kPageShift;
- ptrRange.size = span->length * kPageSize;
+ Span* previousSpan = m_coalescedSpans[m_coalescedSpans.size() - 1];
+ vm_address_t previousSpanStartAddress = previousSpan->start << kPageShift;
+ vm_size_t previousSpanSizeInBytes = previousSpan->length * kPageSize;
- // Mark the memory region the span represents as candidates for containing pointers
- if (m_typeMask & (MALLOC_PTR_REGION_RANGE_TYPE | MALLOC_ADMIN_REGION_RANGE_TYPE))
- (*m_recorder)(m_task, m_context, MALLOC_PTR_REGION_RANGE_TYPE, &ptrRange, 1);
+ // If the new span is adjacent to the previous span, do nothing for now.
+ vm_address_t spanStartAddress = span->start << kPageShift;
+ if (spanStartAddress == previousSpanStartAddress + previousSpanSizeInBytes) {
+ m_coalescedSpans.append(span);
+ return span->length;
+ }
- if (!span->free && (m_typeMask & MALLOC_PTR_IN_USE_RANGE_TYPE)) {
- // If it's an allocated large object span, mark it as in use
- if (span->sizeclass == 0 && !m_freeObjectFinder.isFreeObject(reinterpret_cast<void*>(ptrRange.address)))
- (*m_recorder)(m_task, m_context, MALLOC_PTR_IN_USE_RANGE_TYPE, &ptrRange, 1);
- else if (span->sizeclass) {
- const size_t byteSize = ByteSizeForClass(span->sizeclass);
- unsigned totalObjects = (span->length << kPageShift) / byteSize;
- ASSERT(span->refcount <= totalObjects);
- char* ptr = reinterpret_cast<char*>(span->start << kPageShift);
+ // New span is not adjacent to previous span, so record the spans coalesced so far.
+ recordPendingRegions();
+ m_coalescedSpans.append(span);
- // Mark each allocated small object within the span as in use
- for (unsigned i = 0; i < totalObjects; i++) {
- char* thisObject = ptr + (i * byteSize);
- if (m_freeObjectFinder.isFreeObject(thisObject))
- continue;
+ return span->length;
+ }
+};
- vm_range_t objectRange = { reinterpret_cast<vm_address_t>(thisObject), byteSize };
- (*m_recorder)(m_task, m_context, MALLOC_PTR_IN_USE_RANGE_TYPE, &objectRange, 1);
- }
- }
+class AdminRegionRecorder {
+ task_t m_task;
+ void* m_context;
+ unsigned m_typeMask;
+ vm_range_recorder_t* m_recorder;
+ const RemoteMemoryReader& m_reader;
+
+ Vector<vm_range_t, 1024> m_pendingRegions;
+
+public:
+ AdminRegionRecorder(task_t task, void* context, unsigned typeMask, vm_range_recorder_t* recorder, const RemoteMemoryReader& reader)
+ : m_task(task)
+ , m_context(context)
+ , m_typeMask(typeMask)
+ , m_recorder(recorder)
+ , m_reader(reader)
+ { }
+
+ void recordRegion(vm_address_t ptr, size_t size)
+ {
+ if (m_typeMask & MALLOC_ADMIN_REGION_RANGE_TYPE)
+ m_pendingRegions.append((vm_range_t){ ptr, size });
+ }
+
+ void visit(void *ptr, size_t size)
+ {
+ recordRegion(reinterpret_cast<vm_address_t>(ptr), size);
+ }
+
+ void recordPendingRegions()
+ {
+ if (m_pendingRegions.size()) {
+ (*m_recorder)(m_task, m_context, MALLOC_ADMIN_REGION_RANGE_TYPE, m_pendingRegions.data(), m_pendingRegions.size());
+ m_pendingRegions.clear();
}
+ }
- return span->length;
+ ~AdminRegionRecorder()
+ {
+ ASSERT(!m_pendingRegions.size());
}
};
@@ -3737,10 +4031,22 @@ kern_return_t FastMallocZone::enumerate(task_t task, void* context, unsigned typ
TCMalloc_PageHeap::PageMap* pageMap = &pageHeap->pagemap_;
PageMapFreeObjectFinder pageMapFinder(memoryReader, finder);
- pageMap->visit(pageMapFinder, memoryReader);
+ pageMap->visitValues(pageMapFinder, memoryReader);
PageMapMemoryUsageRecorder usageRecorder(task, context, typeMask, recorder, memoryReader, finder);
- pageMap->visit(usageRecorder, memoryReader);
+ pageMap->visitValues(usageRecorder, memoryReader);
+ usageRecorder.recordPendingRegions();
+
+ AdminRegionRecorder adminRegionRecorder(task, context, typeMask, recorder, memoryReader);
+ pageMap->visitAllocations(adminRegionRecorder, memoryReader);
+
+ PageHeapAllocator<Span>* spanAllocator = memoryReader(mzone->m_spanAllocator);
+ PageHeapAllocator<TCMalloc_ThreadCache>* pageHeapAllocator = memoryReader(mzone->m_pageHeapAllocator);
+
+ spanAllocator->recordAdministrativeRegions(adminRegionRecorder, memoryReader);
+ pageHeapAllocator->recordAdministrativeRegions(adminRegionRecorder, memoryReader);
+
+ adminRegionRecorder.recordPendingRegions();
return 0;
}
@@ -3781,15 +4087,24 @@ void* FastMallocZone::zoneRealloc(malloc_zone_t*, void*, size_t)
extern "C" {
malloc_introspection_t jscore_fastmalloc_introspection = { &FastMallocZone::enumerate, &FastMallocZone::goodSize, &FastMallocZone::check, &FastMallocZone::print,
- &FastMallocZone::log, &FastMallocZone::forceLock, &FastMallocZone::forceUnlock, &FastMallocZone::statistics };
+ &FastMallocZone::log, &FastMallocZone::forceLock, &FastMallocZone::forceUnlock, &FastMallocZone::statistics
+
+#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
+ , 0 // zone_locked will not be called on the zone unless it advertises itself as version five or higher.
+#endif
+
+ };
}
-FastMallocZone::FastMallocZone(TCMalloc_PageHeap* pageHeap, TCMalloc_ThreadCache** threadHeaps, TCMalloc_Central_FreeListPadded* centralCaches)
+FastMallocZone::FastMallocZone(TCMalloc_PageHeap* pageHeap, TCMalloc_ThreadCache** threadHeaps, TCMalloc_Central_FreeListPadded* centralCaches, PageHeapAllocator<Span>* spanAllocator, PageHeapAllocator<TCMalloc_ThreadCache>* pageHeapAllocator)
: m_pageHeap(pageHeap)
, m_threadHeaps(threadHeaps)
, m_centralCaches(centralCaches)
+ , m_spanAllocator(spanAllocator)
+ , m_pageHeapAllocator(pageHeapAllocator)
{
memset(&m_zone, 0, sizeof(m_zone));
+ m_zone.version = 4;
m_zone.zone_name = "JavaScriptCore FastMalloc";
m_zone.size = &FastMallocZone::size;
m_zone.malloc = &FastMallocZone::zoneMalloc;
@@ -3805,7 +4120,7 @@ FastMallocZone::FastMallocZone(TCMalloc_PageHeap* pageHeap, TCMalloc_ThreadCache
void FastMallocZone::init()
{
- static FastMallocZone zone(pageheap, &thread_heaps, static_cast<TCMalloc_Central_FreeListPadded*>(central_cache));
+ static FastMallocZone zone(pageheap, &thread_heaps, static_cast<TCMalloc_Central_FreeListPadded*>(central_cache), &span_allocator, &threadheap_allocator);
}
#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h b/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h
index f1264ac..9e13cf9 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h
@@ -56,6 +56,95 @@ namespace WTF {
};
FastMallocStatistics fastMallocStatistics();
+ // This defines a type which holds an unsigned integer and is the same
+ // size as the minimally aligned memory allocation.
+ typedef unsigned long long AllocAlignmentInteger;
+
+ namespace Internal {
+ enum AllocType { // Start with an unusual number instead of zero, because zero is common.
+ AllocTypeMalloc = 0x375d6750, // Encompasses fastMalloc, fastZeroedMalloc, fastCalloc, fastRealloc.
+ AllocTypeClassNew, // Encompasses class operator new from FastAllocBase.
+ AllocTypeClassNewArray, // Encompasses class operator new[] from FastAllocBase.
+ AllocTypeFastNew, // Encompasses fastNew.
+ AllocTypeFastNewArray, // Encompasses fastNewArray.
+ AllocTypeNew, // Encompasses global operator new.
+ AllocTypeNewArray // Encompasses global operator new[].
+ };
+ }
+
+#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
+
+ // Malloc validation is a scheme whereby a tag is attached to an
+ // allocation which identifies how it was originally allocated.
+ // This allows us to verify that the freeing operation matches the
+ // allocation operation. If memory is allocated with operator new[]
+ // but freed with free or delete, this system would detect that.
+ // In the implementation here, the tag is an integer prepended to
+ // the allocation memory which is assigned one of the AllocType
+ // enumeration values. An alternative implementation of this
+ // scheme could store the tag somewhere else or ignore it.
+ // Users of FastMalloc don't need to know or care how this tagging
+ // is implemented.
+
+ namespace Internal {
+
+ // Return the AllocType tag associated with the allocated block p.
+ inline AllocType fastMallocMatchValidationType(const void* p)
+ {
+ const AllocAlignmentInteger* type = static_cast<const AllocAlignmentInteger*>(p) - 1;
+ return static_cast<AllocType>(*type);
+ }
+
+ // Return the address of the AllocType tag associated with the allocated block p.
+ inline AllocAlignmentInteger* fastMallocMatchValidationValue(void* p)
+ {
+ return reinterpret_cast<AllocAlignmentInteger*>(static_cast<char*>(p) - sizeof(AllocAlignmentInteger));
+ }
+
+ // Set the AllocType tag to be associaged with the allocated block p.
+ inline void setFastMallocMatchValidationType(void* p, AllocType allocType)
+ {
+ AllocAlignmentInteger* type = static_cast<AllocAlignmentInteger*>(p) - 1;
+ *type = static_cast<AllocAlignmentInteger>(allocType);
+ }
+
+ // Handle a detected alloc/free mismatch. By default this calls CRASH().
+ void fastMallocMatchFailed(void* p);
+
+ } // namespace Internal
+
+ // This is a higher level function which is used by FastMalloc-using code.
+ inline void fastMallocMatchValidateMalloc(void* p, Internal::AllocType allocType)
+ {
+ if (!p)
+ return;
+
+ Internal::setFastMallocMatchValidationType(p, allocType);
+ }
+
+ // This is a higher level function which is used by FastMalloc-using code.
+ inline void fastMallocMatchValidateFree(void* p, Internal::AllocType allocType)
+ {
+ if (!p)
+ return;
+
+ if (Internal::fastMallocMatchValidationType(p) != allocType)
+ Internal::fastMallocMatchFailed(p);
+ Internal::setFastMallocMatchValidationType(p, Internal::AllocTypeMalloc); // Set it to this so that fastFree thinks it's OK.
+ }
+
+#else
+
+ inline void fastMallocMatchValidateMalloc(void*, Internal::AllocType)
+ {
+ }
+
+ inline void fastMallocMatchValidateFree(void*, Internal::AllocType)
+ {
+ }
+
+#endif
+
} // namespace WTF
using WTF::fastMalloc;
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/GOwnPtr.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/GOwnPtr.cpp
index 58869f4..432885f 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/GOwnPtr.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/GOwnPtr.cpp
@@ -56,4 +56,10 @@ template <> void freeOwnedGPtr<GDir>(GDir* ptr)
g_dir_close(ptr);
}
+template <> void freeOwnedGPtr<GHashTable>(GHashTable* ptr)
+{
+ if (ptr)
+ g_hash_table_unref(ptr);
+}
+
} // namespace WTF
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/GOwnPtr.h b/src/3rdparty/webkit/JavaScriptCore/wtf/GOwnPtr.h
index bbb793a..8d03ff2 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/GOwnPtr.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/GOwnPtr.h
@@ -35,6 +35,7 @@ namespace WTF {
template<> void freeOwnedGPtr<GMutex>(GMutex*);
template<> void freeOwnedGPtr<GPatternSpec>(GPatternSpec*);
template<> void freeOwnedGPtr<GDir>(GDir*);
+ template<> void freeOwnedGPtr<GHashTable>(GHashTable*);
template <typename T> class GOwnPtr : Noncopyable {
public:
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/HashTraits.h b/src/3rdparty/webkit/JavaScriptCore/wtf/HashTraits.h
index b3c0b7a..c8d40f7 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/HashTraits.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/HashTraits.h
@@ -21,8 +21,8 @@
#ifndef WTF_HashTraits_h
#define WTF_HashTraits_h
-#include "Assertions.h"
#include "HashFunctions.h"
+#include "TypeTraits.h"
#include <utility>
#include <limits>
@@ -31,47 +31,6 @@ namespace WTF {
using std::pair;
using std::make_pair;
- template<typename T> struct IsInteger { static const bool value = false; };
- template<> struct IsInteger<bool> { static const bool value = true; };
- template<> struct IsInteger<char> { static const bool value = true; };
- template<> struct IsInteger<signed char> { static const bool value = true; };
- template<> struct IsInteger<unsigned char> { static const bool value = true; };
- template<> struct IsInteger<short> { static const bool value = true; };
- template<> struct IsInteger<unsigned short> { static const bool value = true; };
- template<> struct IsInteger<int> { static const bool value = true; };
- template<> struct IsInteger<unsigned int> { static const bool value = true; };
- template<> struct IsInteger<long> { static const bool value = true; };
- template<> struct IsInteger<unsigned long> { static const bool value = true; };
- template<> struct IsInteger<long long> { static const bool value = true; };
- template<> struct IsInteger<unsigned long long> { static const bool value = true; };
-
-#if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
- template<> struct IsInteger<wchar_t> { static const bool value = true; };
-#endif
-
- COMPILE_ASSERT(IsInteger<bool>::value, WTF_IsInteger_bool_true);
- COMPILE_ASSERT(IsInteger<char>::value, WTF_IsInteger_char_true);
- COMPILE_ASSERT(IsInteger<signed char>::value, WTF_IsInteger_signed_char_true);
- COMPILE_ASSERT(IsInteger<unsigned char>::value, WTF_IsInteger_unsigned_char_true);
- COMPILE_ASSERT(IsInteger<short>::value, WTF_IsInteger_short_true);
- COMPILE_ASSERT(IsInteger<unsigned short>::value, WTF_IsInteger_unsigned_short_true);
- COMPILE_ASSERT(IsInteger<int>::value, WTF_IsInteger_int_true);
- COMPILE_ASSERT(IsInteger<unsigned int>::value, WTF_IsInteger_unsigned_int_true);
- COMPILE_ASSERT(IsInteger<long>::value, WTF_IsInteger_long_true);
- COMPILE_ASSERT(IsInteger<unsigned long>::value, WTF_IsInteger_unsigned_long_true);
- COMPILE_ASSERT(IsInteger<long long>::value, WTF_IsInteger_long_long_true);
- COMPILE_ASSERT(IsInteger<unsigned long long>::value, WTF_IsInteger_unsigned_long_long_true);
-
-#if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
- COMPILE_ASSERT(IsInteger<wchar_t>::value, WTF_IsInteger_wchar_t_true);
-#endif
-
- COMPILE_ASSERT(!IsInteger<char*>::value, WTF_IsInteger_char_pointer_false);
- COMPILE_ASSERT(!IsInteger<const char* >::value, WTF_IsInteger_const_char_pointer_false);
- COMPILE_ASSERT(!IsInteger<volatile char* >::value, WTF_IsInteger_volatile_char_pointer__false);
- COMPILE_ASSERT(!IsInteger<double>::value, WTF_IsInteger_double_false);
- COMPILE_ASSERT(!IsInteger<float>::value, WTF_IsInteger_float_false);
-
template<typename T> struct HashTraits;
template<bool isInteger, typename T> struct GenericHashTraitsBase;
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/MainThread.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/MainThread.cpp
index c7a6caa..3c19b7a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/MainThread.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/MainThread.cpp
@@ -29,26 +29,25 @@
#include "config.h"
#include "MainThread.h"
+#include "CurrentTime.h"
+#include "Deque.h"
#include "StdLibExtras.h"
#include "Threading.h"
-#include "Vector.h"
namespace WTF {
struct FunctionWithContext {
MainThreadFunction* function;
void* context;
- ThreadCondition* syncFlag;
- FunctionWithContext(MainThreadFunction* function = 0, void* context = 0, ThreadCondition* syncFlag = 0)
+ FunctionWithContext(MainThreadFunction* function = 0, void* context = 0)
: function(function)
, context(context)
- , syncFlag(syncFlag)
{
}
};
-typedef Vector<FunctionWithContext> FunctionQueue;
+typedef Deque<FunctionWithContext> FunctionQueue;
static bool callbacksPaused; // This global variable is only accessed from main thread.
@@ -64,12 +63,14 @@ static FunctionQueue& functionQueue()
return staticFunctionQueue;
}
-#if !PLATFORM(WIN)
void initializeMainThread()
{
mainThreadFunctionQueueMutex();
+ initializeMainThreadPlatform();
}
-#endif
+
+// 0.1 sec delays in UI is approximate threshold when they become noticeable. Have a limit that's half of that.
+static const double maxRunLoopSuspensionTime = 0.05;
void dispatchFunctionsFromMainThread()
{
@@ -78,52 +79,42 @@ void dispatchFunctionsFromMainThread()
if (callbacksPaused)
return;
- FunctionQueue queueCopy;
- {
- MutexLocker locker(mainThreadFunctionQueueMutex());
- queueCopy.swap(functionQueue());
- }
+ double startTime = currentTime();
+
+ FunctionWithContext invocation;
+ while (true) {
+ {
+ MutexLocker locker(mainThreadFunctionQueueMutex());
+ if (!functionQueue().size())
+ break;
+ invocation = functionQueue().first();
+ functionQueue().removeFirst();
+ }
- for (unsigned i = 0; i < queueCopy.size(); ++i) {
- FunctionWithContext& invocation = queueCopy[i];
invocation.function(invocation.context);
- if (invocation.syncFlag)
- invocation.syncFlag->signal();
+
+ // If we are running accumulated functions for too long so UI may become unresponsive, we need to
+ // yield so the user input can be processed. Otherwise user may not be able to even close the window.
+ // This code has effect only in case the scheduleDispatchFunctionsOnMainThread() is implemented in a way that
+ // allows input events to be processed before we are back here.
+ if (currentTime() - startTime > maxRunLoopSuspensionTime) {
+ scheduleDispatchFunctionsOnMainThread();
+ break;
+ }
}
}
void callOnMainThread(MainThreadFunction* function, void* context)
{
ASSERT(function);
-
+ bool needToSchedule = false;
{
MutexLocker locker(mainThreadFunctionQueueMutex());
+ needToSchedule = functionQueue().size() == 0;
functionQueue().append(FunctionWithContext(function, context));
}
-
- scheduleDispatchFunctionsOnMainThread();
-}
-
-void callOnMainThreadAndWait(MainThreadFunction* function, void* context)
-{
- ASSERT(function);
-
- if (isMainThread()) {
- function(context);
- return;
- }
-
- ThreadCondition syncFlag;
- Mutex conditionMutex;
-
- {
- MutexLocker locker(mainThreadFunctionQueueMutex());
- functionQueue().append(FunctionWithContext(function, context, &syncFlag));
- conditionMutex.lock();
- }
-
- scheduleDispatchFunctionsOnMainThread();
- syncFlag.wait(conditionMutex);
+ if (needToSchedule)
+ scheduleDispatchFunctionsOnMainThread();
}
void setMainThreadCallbacksPaused(bool paused)
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/MainThread.h b/src/3rdparty/webkit/JavaScriptCore/wtf/MainThread.h
index 953b986..01ce804 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/MainThread.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/MainThread.h
@@ -37,7 +37,6 @@ class Mutex;
typedef void MainThreadFunction(void*);
void callOnMainThread(MainThreadFunction*, void* context);
-void callOnMainThreadAndWait(MainThreadFunction*, void* context);
void setMainThreadCallbacksPaused(bool paused);
@@ -45,9 +44,10 @@ void setMainThreadCallbacksPaused(bool paused);
void initializeMainThread();
// These functions are internal to the callOnMainThread implementation.
-void dispatchFunctionsFromMainThread();
+void initializeMainThreadPlatform();
void scheduleDispatchFunctionsOnMainThread();
Mutex& mainThreadFunctionQueueMutex();
+void dispatchFunctionsFromMainThread();
} // namespace WTF
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h b/src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h
index 481211d..9549f37 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,6 +30,7 @@
#ifndef MessageQueue_h
#define MessageQueue_h
+#include <limits>
#include <wtf/Assertions.h>
#include <wtf/Deque.h>
#include <wtf/Noncopyable.h>
@@ -36,6 +38,12 @@
namespace WTF {
+ enum MessageQueueWaitResult {
+ MessageQueueTerminated, // Queue was destroyed while waiting for message.
+ MessageQueueTimeout, // Timeout was specified and it expired.
+ MessageQueueMessageReceived, // A message was successfully received and returned.
+ };
+
template<typename DataType>
class MessageQueue : Noncopyable {
public:
@@ -44,6 +52,8 @@ namespace WTF {
void append(const DataType&);
void prepend(const DataType&);
bool waitForMessage(DataType&);
+ template<typename Predicate>
+ MessageQueueWaitResult waitForMessageFilteredWithTimeout(DataType&, Predicate&, double absoluteTime);
void kill();
bool tryGetMessage(DataType&);
@@ -52,7 +62,11 @@ namespace WTF {
// The result of isEmpty() is only valid if no other thread is manipulating the queue at the same time.
bool isEmpty();
+ static double infiniteTime() { return std::numeric_limits<double>::max(); }
+
private:
+ static bool alwaysTruePredicate(DataType&) { return true; }
+
mutable Mutex m_mutex;
ThreadCondition m_condition;
Deque<DataType> m_queue;
@@ -78,18 +92,34 @@ namespace WTF {
template<typename DataType>
inline bool MessageQueue<DataType>::waitForMessage(DataType& result)
{
+ MessageQueueWaitResult exitReason = waitForMessageFilteredWithTimeout(result, MessageQueue<DataType>::alwaysTruePredicate, infiniteTime());
+ ASSERT(exitReason == MessageQueueTerminated || exitReason == MessageQueueMessageReceived);
+ return exitReason == MessageQueueMessageReceived;
+ }
+
+ template<typename DataType>
+ template<typename Predicate>
+ inline MessageQueueWaitResult MessageQueue<DataType>::waitForMessageFilteredWithTimeout(DataType& result, Predicate& predicate, double absoluteTime)
+ {
MutexLocker lock(m_mutex);
-
- while (!m_killed && m_queue.isEmpty())
- m_condition.wait(m_mutex);
+ bool timedOut = false;
+
+ DequeConstIterator<DataType> found = m_queue.end();
+ while (!m_killed && !timedOut && (found = m_queue.findIf(predicate)) == m_queue.end())
+ timedOut = !m_condition.timedWait(m_mutex, absoluteTime);
+
+ ASSERT(!timedOut || absoluteTime != infiniteTime());
if (m_killed)
- return false;
+ return MessageQueueTerminated;
- ASSERT(!m_queue.isEmpty());
- result = m_queue.first();
- m_queue.removeFirst();
- return true;
+ if (timedOut)
+ return MessageQueueTimeout;
+
+ ASSERT(found != m_queue.end());
+ result = *found;
+ m_queue.remove(found);
+ return MessageQueueMessageReceived;
}
template<typename DataType>
@@ -129,8 +159,13 @@ namespace WTF {
MutexLocker lock(m_mutex);
return m_killed;
}
-}
+} // namespace WTF
using WTF::MessageQueue;
+// MessageQueueWaitResult enum and all its values.
+using WTF::MessageQueueWaitResult;
+using WTF::MessageQueueTerminated;
+using WTF::MessageQueueTimeout;
+using WTF::MessageQueueMessageReceived;
#endif // MessageQueue_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/NotFound.h b/src/3rdparty/webkit/JavaScriptCore/wtf/NotFound.h
index f0bb866..4263bce 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/NotFound.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/NotFound.h
@@ -32,4 +32,6 @@ namespace WTF {
} // namespace WTF
+using WTF::notFound;
+
#endif // NotFound_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/OwnFastMallocPtr.h b/src/3rdparty/webkit/JavaScriptCore/wtf/OwnFastMallocPtr.h
new file mode 100644
index 0000000..5c0d064
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/OwnFastMallocPtr.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef OwnFastMallocPtr_h
+#define OwnFastMallocPtr_h
+
+#include "FastMalloc.h"
+#include "Noncopyable.h"
+
+namespace WTF {
+
+ template<class T> class OwnFastMallocPtr : Noncopyable {
+ public:
+ explicit OwnFastMallocPtr(T* ptr) : m_ptr(ptr)
+ {
+ }
+
+ ~OwnFastMallocPtr()
+ {
+ fastFree(m_ptr);
+ }
+
+ T* get() const { return m_ptr; }
+ T* release() { T* ptr = m_ptr; m_ptr = 0; return ptr; }
+
+ private:
+ T* m_ptr;
+ };
+
+} // namespace WTF
+
+using WTF::OwnFastMallocPtr;
+
+#endif // OwnFastMallocPtr_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtr.h b/src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtr.h
index 256b55c..9e4bd32 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtr.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtr.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -21,53 +21,35 @@
#ifndef WTF_OwnPtr_h
#define WTF_OwnPtr_h
+#include "Assertions.h"
+#include "Noncopyable.h"
+#include "OwnPtrCommon.h"
+#include "TypeTraits.h"
#include <algorithm>
#include <memory>
-#include <wtf/Assertions.h>
-#include <wtf/Noncopyable.h>
-
-#if PLATFORM(WIN)
-
-typedef struct HBITMAP__* HBITMAP;
-typedef struct HBRUSH__* HBRUSH;
-typedef struct HFONT__* HFONT;
-typedef struct HPALETTE__* HPALETTE;
-typedef struct HPEN__* HPEN;
-typedef struct HRGN__* HRGN;
-
-#endif
namespace WTF {
// Unlike most of our smart pointers, OwnPtr can take either the pointer type or the pointed-to type.
- // FIXME: Share a single RemovePointer class template with RetainPtr.
- template <typename T> struct OwnPtrRemovePointer { typedef T type; };
- template <typename T> struct OwnPtrRemovePointer<T*> { typedef T type; };
-
- template <typename T> inline void deleteOwnedPtr(T* ptr)
- {
- typedef char known[sizeof(T) ? 1 : -1];
- if (sizeof(known))
- delete ptr;
- }
-
-#if PLATFORM(WIN)
- void deleteOwnedPtr(HBITMAP);
- void deleteOwnedPtr(HBRUSH);
- void deleteOwnedPtr(HFONT);
- void deleteOwnedPtr(HPALETTE);
- void deleteOwnedPtr(HPEN);
- void deleteOwnedPtr(HRGN);
-#endif
+ template <typename T> class PassOwnPtr;
template <typename T> class OwnPtr : Noncopyable {
public:
- typedef typename OwnPtrRemovePointer<T>::type ValueType;
+ typedef typename RemovePointer<T>::Type ValueType;
typedef ValueType* PtrType;
explicit OwnPtr(PtrType ptr = 0) : m_ptr(ptr) { }
OwnPtr(std::auto_ptr<ValueType> autoPtr) : m_ptr(autoPtr.release()) { }
+ // See comment in PassOwnPtr.h for why this takes a const reference.
+ template <typename U> OwnPtr(const PassOwnPtr<U>& o);
+
+ // This copy constructor is used implicitly by gcc when it generates
+ // transients for assigning a PassOwnPtr<T> object to a stack-allocated
+ // OwnPtr<T> object. It should never be called explicitly and gcc
+ // should optimize away the constructor when generating code.
+ OwnPtr(const OwnPtr<ValueType>& o);
+
~OwnPtr() { deleteOwnedPtr(m_ptr); }
PtrType get() const { return m_ptr; }
@@ -89,19 +71,50 @@ namespace WTF {
typedef PtrType OwnPtr::*UnspecifiedBoolType;
operator UnspecifiedBoolType() const { return m_ptr ? &OwnPtr::m_ptr : 0; }
+ OwnPtr& operator=(const PassOwnPtr<T>&);
+ template <typename U> OwnPtr& operator=(const PassOwnPtr<U>&);
+
void swap(OwnPtr& o) { std::swap(m_ptr, o.m_ptr); }
private:
PtrType m_ptr;
};
-
- template <typename T> inline void swap(OwnPtr<T>& a, OwnPtr<T>& b) { a.swap(b); }
+
+ template <typename T> template <typename U> inline OwnPtr<T>::OwnPtr(const PassOwnPtr<U>& o)
+ : m_ptr(o.release())
+ {
+ }
+
+ template <typename T> inline OwnPtr<T>& OwnPtr<T>::operator=(const PassOwnPtr<T>& o)
+ {
+ T* ptr = m_ptr;
+ m_ptr = o.release();
+ ASSERT(!ptr || m_ptr != ptr);
+ if (ptr)
+ deleteOwnedPtr(ptr);
+ return *this;
+ }
+
+ template <typename T> template <typename U> inline OwnPtr<T>& OwnPtr<T>::operator=(const PassOwnPtr<U>& o)
+ {
+ T* ptr = m_ptr;
+ m_ptr = o.release();
+ ASSERT(!ptr || m_ptr != ptr);
+ if (ptr)
+ deleteOwnedPtr(ptr);
+ return *this;
+ }
+
+ template <typename T> inline void swap(OwnPtr<T>& a, OwnPtr<T>& b)
+ {
+ a.swap(b);
+ }
template <typename T, typename U> inline bool operator==(const OwnPtr<T>& a, U* b)
- {
+ {
return a.get() == b;
}
-
+
template <typename T, typename U> inline bool operator==(T* a, const OwnPtr<U>& b)
{
return a == b.get();
@@ -113,10 +126,10 @@ namespace WTF {
}
template <typename T, typename U> inline bool operator!=(T* a, const OwnPtr<U>& b)
- {
+ {
return a != b.get();
}
-
+
template <typename T> inline typename OwnPtr<T>::PtrType getPtr(const OwnPtr<T>& p)
{
return p.get();
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtrCommon.h b/src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtrCommon.h
new file mode 100644
index 0000000..6cd8bdd
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/OwnPtrCommon.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WTF_OwnPtrCommon_h
+#define WTF_OwnPtrCommon_h
+
+#if PLATFORM(WIN)
+typedef struct HBITMAP__* HBITMAP;
+typedef struct HBRUSH__* HBRUSH;
+typedef struct HFONT__* HFONT;
+typedef struct HPALETTE__* HPALETTE;
+typedef struct HPEN__* HPEN;
+typedef struct HRGN__* HRGN;
+#endif
+
+namespace WTF {
+
+ template <typename T> inline void deleteOwnedPtr(T* ptr)
+ {
+ typedef char known[sizeof(T) ? 1 : -1];
+ if (sizeof(known))
+ delete ptr;
+ }
+
+#if PLATFORM(WIN)
+ void deleteOwnedPtr(HBITMAP);
+ void deleteOwnedPtr(HBRUSH);
+ void deleteOwnedPtr(HFONT);
+ void deleteOwnedPtr(HPALETTE);
+ void deleteOwnedPtr(HPEN);
+ void deleteOwnedPtr(HRGN);
+#endif
+
+} // namespace WTF
+
+#endif // WTF_OwnPtrCommon_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/PassOwnPtr.h b/src/3rdparty/webkit/JavaScriptCore/wtf/PassOwnPtr.h
new file mode 100644
index 0000000..ae70457
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/PassOwnPtr.h
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WTF_PassOwnPtr_h
+#define WTF_PassOwnPtr_h
+
+#include "Assertions.h"
+#include "OwnPtrCommon.h"
+#include "TypeTraits.h"
+
+namespace WTF {
+
+ // Unlike most of our smart pointers, PassOwnPtr can take either the pointer type or the pointed-to type.
+
+ template <typename T> class OwnPtr;
+
+ template <typename T> class PassOwnPtr {
+ public:
+ typedef typename RemovePointer<T>::Type ValueType;
+ typedef ValueType* PtrType;
+
+ PassOwnPtr(PtrType ptr = 0) : m_ptr(ptr) { }
+ // It somewhat breaks the type system to allow transfer of ownership out of
+ // a const PassOwnPtr. However, it makes it much easier to work with PassOwnPtr
+ // temporaries, and we don't really have a need to use real const PassOwnPtrs
+ // anyway.
+ PassOwnPtr(const PassOwnPtr& o) : m_ptr(o.release()) { }
+ template <typename U> PassOwnPtr(const PassOwnPtr<U>& o) : m_ptr(o.release()) { }
+
+ ~PassOwnPtr() { deleteOwnedPtr(m_ptr); }
+
+ PtrType get() const { return m_ptr; }
+
+ void clear() { m_ptr = 0; }
+ PtrType release() const { PtrType ptr = m_ptr; m_ptr = 0; return ptr; }
+
+ ValueType& operator*() const { ASSERT(m_ptr); return *m_ptr; }
+ PtrType operator->() const { ASSERT(m_ptr); return m_ptr; }
+
+ bool operator!() const { return !m_ptr; }
+
+ // This conversion operator allows implicit conversion to bool but not to other integer types.
+ typedef PtrType PassOwnPtr::*UnspecifiedBoolType;
+ operator UnspecifiedBoolType() const { return m_ptr ? &PassOwnPtr::m_ptr : 0; }
+
+ PassOwnPtr& operator=(T*);
+ PassOwnPtr& operator=(const PassOwnPtr<T>&);
+ template <typename U> PassOwnPtr& operator=(const PassOwnPtr<U>&);
+
+ private:
+ mutable PtrType m_ptr;
+ };
+
+ template <typename T> inline PassOwnPtr<T>& PassOwnPtr<T>::operator=(T* optr)
+ {
+ T* ptr = m_ptr;
+ m_ptr = optr;
+ ASSERT(!ptr || m_ptr != ptr);
+ if (ptr)
+ deleteOwnedPtr(ptr);
+ return *this;
+ }
+
+ template <typename T> inline PassOwnPtr<T>& PassOwnPtr<T>::operator=(const PassOwnPtr<T>& optr)
+ {
+ T* ptr = m_ptr;
+ m_ptr = optr.release();
+ ASSERT(!ptr || m_ptr != ptr);
+ if (ptr)
+ deleteOwnedPtr(ptr);
+ return *this;
+ }
+
+ template <typename T> template <typename U> inline PassOwnPtr<T>& PassOwnPtr<T>::operator=(const PassOwnPtr<U>& optr)
+ {
+ T* ptr = m_ptr;
+ m_ptr = optr.release();
+ ASSERT(!ptr || m_ptr != ptr);
+ if (ptr)
+ deleteOwnedPtr(ptr);
+ return *this;
+ }
+
+ template <typename T, typename U> inline bool operator==(const PassOwnPtr<T>& a, const PassOwnPtr<U>& b)
+ {
+ return a.get() == b.get();
+ }
+
+ template <typename T, typename U> inline bool operator==(const PassOwnPtr<T>& a, const OwnPtr<U>& b)
+ {
+ return a.get() == b.get();
+ }
+
+ template <typename T, typename U> inline bool operator==(const OwnPtr<T>& a, const PassOwnPtr<U>& b)
+ {
+ return a.get() == b.get();
+ }
+
+ template <typename T, typename U> inline bool operator==(const PassOwnPtr<T>& a, U* b)
+ {
+ return a.get() == b;
+ }
+
+ template <typename T, typename U> inline bool operator==(T* a, const PassOwnPtr<U>& b)
+ {
+ return a == b.get();
+ }
+
+ template <typename T, typename U> inline bool operator!=(const PassOwnPtr<T>& a, const PassOwnPtr<U>& b)
+ {
+ return a.get() != b.get();
+ }
+
+ template <typename T, typename U> inline bool operator!=(const PassOwnPtr<T>& a, const OwnPtr<U>& b)
+ {
+ return a.get() != b.get();
+ }
+
+ template <typename T, typename U> inline bool operator!=(const OwnPtr<T>& a, const PassOwnPtr<U>& b)
+ {
+ return a.get() != b.get();
+ }
+
+ template <typename T, typename U> inline bool operator!=(const PassOwnPtr<T>& a, U* b)
+ {
+ return a.get() != b;
+ }
+
+ template <typename T, typename U> inline bool operator!=(T* a, const PassOwnPtr<U>& b)
+ {
+ return a != b.get();
+ }
+
+ template <typename T, typename U> inline PassOwnPtr<T> static_pointer_cast(const PassOwnPtr<U>& p)
+ {
+ return PassOwnPtr<T>(static_cast<T*>(p.release()));
+ }
+
+ template <typename T, typename U> inline PassOwnPtr<T> const_pointer_cast(const PassOwnPtr<U>& p)
+ {
+ return PassOwnPtr<T>(const_cast<T*>(p.release()));
+ }
+
+ template <typename T> inline T* getPtr(const PassOwnPtr<T>& p)
+ {
+ return p.get();
+ }
+
+} // namespace WTF
+
+using WTF::PassOwnPtr;
+using WTF::const_pointer_cast;
+using WTF::static_pointer_cast;
+
+#endif // WTF_PassOwnPtr_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/PassRefPtr.h b/src/3rdparty/webkit/JavaScriptCore/wtf/PassRefPtr.h
index c1dc309..d80ed62 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/PassRefPtr.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/PassRefPtr.h
@@ -40,7 +40,7 @@ namespace WTF {
PassRefPtr(const PassRefPtr& o) : m_ptr(o.releaseRef()) {}
template <typename U> PassRefPtr(const PassRefPtr<U>& o) : m_ptr(o.releaseRef()) { }
- ALWAYS_INLINE ~PassRefPtr() { if (T* ptr = m_ptr) ptr->deref(); }
+ ALWAYS_INLINE ~PassRefPtr() { if (UNLIKELY(m_ptr != 0)) m_ptr->deref(); }
template <class U>
PassRefPtr(const RefPtr<U>& o) : m_ptr(o.get()) { if (T* ptr = m_ptr) ptr->ref(); }
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
index 6c27123..b08e08c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
@@ -40,6 +40,12 @@
/* be used regardless of operating environment */
#ifdef __APPLE__
#define WTF_PLATFORM_DARWIN 1
+#include <AvailabilityMacros.h>
+#if !defined(MAC_OS_X_VERSION_10_5) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
+#define BUILDING_ON_TIGER 1
+#elif !defined(MAC_OS_X_VERSION_10_6) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
+#define BUILDING_ON_LEOPARD 1
+#endif
#endif
/* PLATFORM(WIN_OS) */
@@ -58,6 +64,13 @@
#include <ce_time.h>
#endif
+/* PLATFORM(LINUX) */
+/* Operating system level dependencies for Linux-like systems that */
+/* should be used regardless of operating environment */
+#ifdef __linux__
+#define WTF_PLATFORM_LINUX 1
+#endif
+
/* PLATFORM(FREEBSD) */
/* Operating system level dependencies for FreeBSD-like systems that */
/* should be used regardless of operating environment */
@@ -208,11 +221,15 @@
/* PLATFORM(X86_64) */
#if defined(__x86_64__) \
- || defined(__ia64__) \
|| defined(_M_X64)
#define WTF_PLATFORM_X86_64 1
#endif
+/* PLATFORM(SH4) */
+#if defined(__SH4__)
+#define WTF_PLATFORM_SH4 1
+#endif
+
/* PLATFORM(SPARC64) */
#if defined(__sparc64__)
#define WTF_PLATFORM_SPARC64 1
@@ -301,9 +318,7 @@
#define ENABLE_DASHBOARD_SUPPORT 1
#endif
#define HAVE_READLINE 1
-#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
-#define HAVE_DTRACE 1
-#endif
+#define HAVE_RUNLOOP_TIMER 1
#endif
#if PLATFORM(CHROMIUM) && PLATFORM(DARWIN)
@@ -316,6 +331,7 @@
#endif
#if PLATFORM(WX)
+#define ENABLE_ASSEMBLER 1
#define WTF_USE_CURL 1
#define WTF_USE_PTHREADS 1
#endif
@@ -332,13 +348,10 @@
#endif
#endif /* !defined(HAVE_ACCESSIBILITY) */
-#if COMPILER(GCC)
-#define HAVE_COMPUTED_GOTO 1
-#endif
-
#if PLATFORM(DARWIN)
#define HAVE_ERRNO_H 1
+#define HAVE_LANGINFO_H 1
#define HAVE_MMAP 1
#define HAVE_MERGESORT 1
#define HAVE_SBRK 1
@@ -347,6 +360,11 @@
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TIMEB_H 1
+#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
+#define HAVE_MADV_FREE_REUSE 1
+#define HAVE_MADV_FREE 1
+#endif
+
#elif PLATFORM(WIN_OS)
#define HAVE_FLOAT_H 1
@@ -375,6 +393,7 @@
/* FIXME: is this actually used or do other platforms generate their own config.h? */
#define HAVE_ERRNO_H 1
+#define HAVE_LANGINFO_H 1
#define HAVE_MMAP 1
#define HAVE_SBRK 1
#define HAVE_STRINGS_H 1
@@ -385,6 +404,12 @@
/* ENABLE macro defaults */
+/* fastMalloc match validation allows for runtime verification that
+ new is matched by delete, fastMalloc is matched by fastFree, etc. */
+#if !defined(ENABLE_FAST_MALLOC_MATCH_VALIDATION)
+#define ENABLE_FAST_MALLOC_MATCH_VALIDATION 0
+#endif
+
#if !defined(ENABLE_ICONDATABASE)
#define ENABLE_ICONDATABASE 1
#endif
@@ -417,16 +442,15 @@
#define ENABLE_OPCODE_STATS 0
#endif
-#if !defined(ENABLE_CODEBLOCK_SAMPLING)
+#define ENABLE_SAMPLING_COUNTERS 0
+#define ENABLE_SAMPLING_FLAGS 0
+#define ENABLE_OPCODE_SAMPLING 0
#define ENABLE_CODEBLOCK_SAMPLING 0
+#if ENABLE(CODEBLOCK_SAMPLING) && !ENABLE(OPCODE_SAMPLING)
+#error "CODEBLOCK_SAMPLING requires OPCODE_SAMPLING"
#endif
-
-#if ENABLE(CODEBLOCK_SAMPLING) && !defined(ENABLE_OPCODE_SAMPLING)
-#define ENABLE_OPCODE_SAMPLING 1
-#endif
-
-#if !defined(ENABLE_OPCODE_SAMPLING)
-#define ENABLE_OPCODE_SAMPLING 0
+#if ENABLE(OPCODE_SAMPLING) || ENABLE(SAMPLING_FLAGS)
+#define ENABLE_SAMPLING_THREAD 1
#endif
#if !defined(ENABLE_GEOLOCATION)
@@ -437,51 +461,80 @@
#define ENABLE_TEXT_CARET 1
#endif
+#if !defined(ENABLE_ON_FIRST_TEXTAREA_FOCUS_SELECT_ALL)
+#define ENABLE_ON_FIRST_TEXTAREA_FOCUS_SELECT_ALL 0
+#endif
+
+#if !defined(WTF_USE_ALTERNATE_JSIMMEDIATE) && PLATFORM(X86_64) && PLATFORM(MAC)
+#define WTF_USE_ALTERNATE_JSIMMEDIATE 1
+#endif
+
+#if !defined(ENABLE_REPAINT_THROTTLING)
+#define ENABLE_REPAINT_THROTTLING 0
+#endif
+
#if !defined(ENABLE_JIT)
-/* x86-64 support is under development. */
+/* The JIT is tested & working on x86_64 Mac */
#if PLATFORM(X86_64) && PLATFORM(MAC)
- #define ENABLE_JIT 0
- #define WTF_USE_JIT_STUB_ARGUMENT_REGISTER 1
- #define ENABLE_JIT_OPTIMIZE_CALL 1
- #define ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS 1
- #define WTF_USE_ALTERNATE_JSIMMEDIATE 1
+ #define ENABLE_JIT 1
/* The JIT is tested & working on x86 Mac */
#elif PLATFORM(X86) && PLATFORM(MAC)
#define ENABLE_JIT 1
#define WTF_USE_JIT_STUB_ARGUMENT_VA_LIST 1
- #define ENABLE_JIT_OPTIMIZE_CALL 1
- #define ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS 1
- #define ENABLE_JIT_OPTIMIZE_ARITHMETIC 1
/* The JIT is tested & working on x86 Windows */
#elif PLATFORM(X86) && PLATFORM(WIN)
#define ENABLE_JIT 1
- #define WTF_USE_JIT_STUB_ARGUMENT_REGISTER 1
+#endif
#define ENABLE_JIT_OPTIMIZE_CALL 1
+ #define ENABLE_JIT_OPTIMIZE_NATIVE_CALL 1
#define ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS 1
#define ENABLE_JIT_OPTIMIZE_ARITHMETIC 1
+ #define ENABLE_JIT_OPTIMIZE_METHOD_CALLS 1
#endif
+
+#if PLATFORM(X86_64)
+ #define JSC_HOST_CALL
+#elif COMPILER(MSVC)
+ #define JSC_HOST_CALL __fastcall
+#elif COMPILER(GCC) && PLATFORM(X86)
+ #define JSC_HOST_CALL __attribute__ ((fastcall))
+#else
+ #if ENABLE(JIT)
+ #error Need to support register calling convention in this compiler
+ #else
+ #define JSC_HOST_CALL
+ #endif
#endif
-#if ENABLE(JIT)
-#if !(USE(JIT_STUB_ARGUMENT_VA_LIST) || USE(JIT_STUB_ARGUMENT_REGISTER) || USE(JIT_STUB_ARGUMENT_STACK))
-#error Please define one of the JIT_STUB_ARGUMENT settings.
-#elif (USE(JIT_STUB_ARGUMENT_VA_LIST) && USE(JIT_STUB_ARGUMENT_REGISTER)) \
- || (USE(JIT_STUB_ARGUMENT_VA_LIST) && USE(JIT_STUB_ARGUMENT_STACK)) \
- || (USE(JIT_STUB_ARGUMENT_REGISTER) && USE(JIT_STUB_ARGUMENT_STACK))
-#error Please do not define more than one of the JIT_STUB_ARGUMENT settings.
+#if COMPILER(GCC) && !ENABLE(JIT)
+#define HAVE_COMPUTED_GOTO 1
#endif
+
+#if ENABLE(JIT) && defined(COVERAGE)
+ #define WTF_USE_INTERPRETER 0
+#else
+ #define WTF_USE_INTERPRETER 1
#endif
-/* WREC supports x86 & x86-64, and has been tested on Mac and Windows ('cept on 64-bit on Mac). */
-#if (!defined(ENABLE_WREC) && PLATFORM(X86) && PLATFORM(MAC)) \
- || (!defined(ENABLE_WREC) && PLATFORM(X86_64) && PLATFORM(MAC)) \
- || (!defined(ENABLE_WREC) && PLATFORM(X86) && PLATFORM(WIN))
-#define ENABLE_WREC 1
+/* Yet Another Regex Runtime. */
+/* YARR supports x86 & x86-64, and has been tested on Mac and Windows. */
+#if (!defined(ENABLE_YARR_JIT) && PLATFORM(X86) && PLATFORM(MAC)) \
+ || (!defined(ENABLE_YARR_JIT) && PLATFORM(X86_64) && PLATFORM(MAC)) \
+ || (!defined(ENABLE_YARR_JIT) && PLATFORM(X86) && PLATFORM(WIN))
+#define ENABLE_YARR 1
+#define ENABLE_YARR_JIT 1
+#endif
+/* Sanity Check */
+#if ENABLE(YARR_JIT) && !ENABLE(YARR)
+#error "YARR_JIT requires YARR"
#endif
-#if ENABLE(JIT) || ENABLE(WREC)
+#if ENABLE(JIT) || ENABLE(YARR_JIT)
#define ENABLE_ASSEMBLER 1
#endif
+/* Setting this flag prevents the assembler from using RWX memory; this may improve
+ security but currectly comes at a significant performance cost. */
+#define ENABLE_ASSEMBLER_WX_EXCLUSIVE 0
#if !defined(ENABLE_PAN_SCROLLING) && PLATFORM(WIN_OS)
#define ENABLE_PAN_SCROLLING 1
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/PtrAndFlags.h b/src/3rdparty/webkit/JavaScriptCore/wtf/PtrAndFlags.h
new file mode 100644
index 0000000..477e893
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/PtrAndFlags.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2009, Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef PtrAndFlags_h
+#define PtrAndFlags_h
+
+#include <wtf/Assertions.h>
+
+namespace WTF {
+ template<class T, typename FlagEnum> class PtrAndFlags {
+ public:
+ PtrAndFlags() : m_ptrAndFlags(0) {}
+
+ bool isFlagSet(FlagEnum flagNumber) const { ASSERT(flagNumber < 2); return m_ptrAndFlags & (1 << flagNumber); }
+ void setFlag(FlagEnum flagNumber) { ASSERT(flagNumber < 2); m_ptrAndFlags |= (1 << flagNumber);}
+ void clearFlag(FlagEnum flagNumber) { ASSERT(flagNumber < 2); m_ptrAndFlags &= ~(1 << flagNumber);}
+ T* get() const { return reinterpret_cast<T*>(m_ptrAndFlags & ~3); }
+ void set(T* ptr) { ASSERT(!(reinterpret_cast<intptr_t>(ptr) & 3)); m_ptrAndFlags = reinterpret_cast<intptr_t>(ptr) | (m_ptrAndFlags & 3);}
+ private:
+ intptr_t m_ptrAndFlags;
+ };
+} // namespace WTF
+
+using WTF::PtrAndFlags;
+
+#endif // PtrAndFlags_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.cpp
index e569227..c94d5a4 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.cpp
@@ -36,6 +36,16 @@
namespace WTF {
+double weakRandomNumber()
+{
+#if COMPILER(MSVC) && defined(_CRT_RAND_S)
+ // rand_s is incredibly slow on windows so we fall back on rand for Math.random
+ return (rand() + (rand() / (RAND_MAX + 1.0))) / (RAND_MAX + 1.0);
+#else
+ return randomNumber();
+#endif
+}
+
double randomNumber()
{
#if !ENABLE(JSC_MULTIPLE_THREADS)
@@ -46,42 +56,39 @@ double randomNumber()
}
#endif
- uint32_t part1;
- uint32_t part2;
- uint64_t fullRandom;
#if COMPILER(MSVC) && defined(_CRT_RAND_S)
- rand_s(&part1);
- rand_s(&part2);
- fullRandom = part1;
- fullRandom <<= 32;
- fullRandom |= part2;
+ uint32_t bits;
+ rand_s(&bits);
+ return static_cast<double>(bits) / (static_cast<double>(std::numeric_limits<uint32_t>::max()) + 1.0);
#elif PLATFORM(DARWIN)
- part1 = arc4random();
- part2 = arc4random();
- fullRandom = part1;
- fullRandom <<= 32;
- fullRandom |= part2;
+ uint32_t bits = arc4random();
+ return static_cast<double>(bits) / (static_cast<double>(std::numeric_limits<uint32_t>::max()) + 1.0);
#elif PLATFORM(UNIX)
- part1 = random() & (RAND_MAX - 1);
- part2 = random() & (RAND_MAX - 1);
+ uint32_t part1 = random() & (RAND_MAX - 1);
+ uint32_t part2 = random() & (RAND_MAX - 1);
// random only provides 31 bits
- fullRandom = part1;
+ uint64_t fullRandom = part1;
fullRandom <<= 31;
fullRandom |= part2;
+
+ // Mask off the low 53bits
+ fullRandom &= (1LL << 53) - 1;
+ return static_cast<double>(fullRandom)/static_cast<double>(1LL << 53);
#else
- part1 = rand() & (RAND_MAX - 1);
- part2 = rand() & (RAND_MAX - 1);
+ uint32_t part1 = rand() & (RAND_MAX - 1);
+ uint32_t part2 = rand() & (RAND_MAX - 1);
// rand only provides 31 bits, and the low order bits of that aren't very random
// so we take the high 26 bits of part 1, and the high 27 bits of part2.
part1 >>= 5; // drop the low 5 bits
part2 >>= 4; // drop the low 4 bits
- fullRandom = part1;
+ uint64_t fullRandom = part1;
fullRandom <<= 27;
fullRandom |= part2;
-#endif
+
// Mask off the low 53bits
fullRandom &= (1LL << 53) - 1;
return static_cast<double>(fullRandom)/static_cast<double>(1LL << 53);
+#endif
}
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.h b/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.h
index 3540344..fe1687c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.h
@@ -28,9 +28,15 @@
namespace WTF {
- // Returns a pseudo-random number in the range [0, 1)
+ // Returns a pseudo-random number in the range [0, 1), attempts to be
+ // cryptographically secure if possible on the target platform
double randomNumber();
+ // Returns a pseudo-random number in the range [0, 1), attempts to
+ // produce a reasonable "random" number fast.
+ // We only need this because rand_s is so slow on windows.
+ double weakRandomNumber();
+
}
#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumberSeed.h b/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumberSeed.h
index c7af3d6..161377f 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumberSeed.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumberSeed.h
@@ -61,6 +61,15 @@ inline void initializeRandomNumberGenerator()
#endif
}
+inline void initializeWeakRandomNumberGenerator()
+{
+#if COMPILER(MSVC) && defined(_CRT_RAND_S)
+ // We need to initialise windows rand() explicitly for Math.random
+ unsigned seed = 0;
+ rand_s(&seed);
+ srand(seed);
+#endif
+}
}
#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/RefCounted.h b/src/3rdparty/webkit/JavaScriptCore/wtf/RefCounted.h
index ac8e167..c174145 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/RefCounted.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/RefCounted.h
@@ -49,15 +49,17 @@ public:
}
protected:
- RefCountedBase(int initialRefCount)
- : m_refCount(initialRefCount)
+ RefCountedBase()
+ : m_refCount(1)
#ifndef NDEBUG
, m_deletionHasBegun(false)
#endif
{
}
- ~RefCountedBase() {}
+ ~RefCountedBase()
+ {
+ }
// Returns whether the pointer should be freed or not.
bool derefBase()
@@ -75,7 +77,23 @@ protected:
return false;
}
-protected:
+ // Helper for generating JIT code. Please do not use for non-JIT purposes.
+ int* addressOfCount()
+ {
+ return &m_refCount;
+ }
+
+#ifndef NDEBUG
+ bool deletionHasBegun() const
+ {
+ return m_deletionHasBegun;
+ }
+#endif
+
+private:
+ template<class T>
+ friend class CrossThreadRefCounted;
+
int m_refCount;
#ifndef NDEBUG
bool m_deletionHasBegun;
@@ -85,11 +103,6 @@ protected:
template<class T> class RefCounted : public RefCountedBase {
public:
- RefCounted(int initialRefCount = 1)
- : RefCountedBase(initialRefCount)
- {
- }
-
void deref()
{
if (derefBase())
@@ -97,7 +110,9 @@ public:
}
protected:
- ~RefCounted() {}
+ ~RefCounted()
+ {
+ }
};
} // namespace WTF
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/RetainPtr.h b/src/3rdparty/webkit/JavaScriptCore/wtf/RetainPtr.h
index a66a127..77f25e0 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/RetainPtr.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/RetainPtr.h
@@ -21,6 +21,7 @@
#ifndef RetainPtr_h
#define RetainPtr_h
+#include "TypeTraits.h"
#include <algorithm>
#include <CoreFoundation/CoreFoundation.h>
@@ -30,14 +31,6 @@
namespace WTF {
- template <typename T> struct RemovePointer {
- typedef T type;
- };
-
- template <typename T> struct RemovePointer<T*> {
- typedef T type;
- };
-
// Unlike most most of our smart pointers, RetainPtr can take either the pointer type or the pointed-to type,
// so both RetainPtr<NSDictionary> and RetainPtr<CFDictionaryRef> will work.
@@ -56,7 +49,7 @@ namespace WTF {
template <typename T> class RetainPtr {
public:
- typedef typename RemovePointer<T>::type ValueType;
+ typedef typename RemovePointer<T>::Type ValueType;
typedef ValueType* PtrType;
RetainPtr() : m_ptr(0) {}
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/StdLibExtras.h b/src/3rdparty/webkit/JavaScriptCore/wtf/StdLibExtras.h
index ddc5a58..afc5e8a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/StdLibExtras.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/StdLibExtras.h
@@ -23,7 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#ifndef WTF_StdLibExtras_h
+#define WTF_StdLibExtras_h
+
#include <wtf/Platform.h>
+#include <wtf/Assertions.h>
// Use these to declare and define a static local variable (static T;) so that
// it is leaked so that its destructors are not called at exit. Using this
@@ -36,3 +40,24 @@
#define DEFINE_STATIC_LOCAL(type, name, arguments) \
static type& name = *new type arguments
#endif
+
+namespace WTF {
+
+ /*
+ * C++'s idea of a reinterpret_cast lacks sufficient cojones.
+ */
+ template<typename TO, typename FROM>
+ TO bitwise_cast(FROM from)
+ {
+ COMPILE_ASSERT(sizeof(TO) == sizeof(FROM), WTF_bitwise_cast_sizeof_casted_types_is_equal);
+ union {
+ FROM from;
+ TO to;
+ } u;
+ u.from = from;
+ return u.to;
+ }
+
+} // namespace WTF
+
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/StringExtras.h b/src/3rdparty/webkit/JavaScriptCore/wtf/StringExtras.h
index 881b066..926fd61 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/StringExtras.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/StringExtras.h
@@ -29,6 +29,10 @@
#include <stdarg.h>
#include <stdio.h>
+#if HAVE(STRINGS_H)
+#include <strings.h>
+#endif
+
#if COMPILER(MSVC)
inline int snprintf(char* buffer, size_t count, const char* format, ...)
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/TCPageMap.h b/src/3rdparty/webkit/JavaScriptCore/wtf/TCPageMap.h
index 21a87e4..3f56c24 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/TCPageMap.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/TCPageMap.h
@@ -54,7 +54,6 @@
#endif
#include <string.h>
-
#include "Assertions.h"
// Single-level array
@@ -164,7 +163,7 @@ class TCMalloc_PageMap2 {
#ifdef WTF_CHANGES
template<class Visitor, class MemoryReader>
- void visit(const Visitor& visitor, const MemoryReader& reader)
+ void visitValues(Visitor& visitor, const MemoryReader& reader)
{
for (int i = 0; i < ROOT_LENGTH; i++) {
if (!root_[i])
@@ -175,6 +174,14 @@ class TCMalloc_PageMap2 {
;
}
}
+
+ template<class Visitor, class MemoryReader>
+ void visitAllocations(Visitor& visitor, const MemoryReader&) {
+ for (int i = 0; i < ROOT_LENGTH; i++) {
+ if (root_[i])
+ visitor.visit(root_[i], sizeof(Leaf));
+ }
+ }
#endif
};
@@ -266,7 +273,7 @@ class TCMalloc_PageMap3 {
#ifdef WTF_CHANGES
template<class Visitor, class MemoryReader>
- void visit(const Visitor& visitor, const MemoryReader& reader) {
+ void visitValues(Visitor& visitor, const MemoryReader& reader) {
Node* root = reader(root_);
for (int i = 0; i < INTERIOR_LENGTH; i++) {
if (!root->ptrs[i])
@@ -283,6 +290,26 @@ class TCMalloc_PageMap3 {
}
}
}
+
+ template<class Visitor, class MemoryReader>
+ void visitAllocations(Visitor& visitor, const MemoryReader& reader) {
+ visitor.visit(root_, sizeof(Node));
+
+ Node* root = reader(root_);
+ for (int i = 0; i < INTERIOR_LENGTH; i++) {
+ if (!root->ptrs[i])
+ continue;
+
+ visitor.visit(root->ptrs[i], sizeof(Node));
+ Node* n = reader(root->ptrs[i]);
+ for (int j = 0; j < INTERIOR_LENGTH; j++) {
+ if (!n->ptrs[j])
+ continue;
+
+ visitor.visit(n->ptrs[j], sizeof(Leaf));
+ }
+ }
+ }
#endif
};
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.cpp
index 9c147b2..478ce63 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.cpp
@@ -381,11 +381,24 @@ void* TCMalloc_SystemAlloc(size_t size, size_t *actual_size, size_t alignment) {
return NULL;
}
+#if HAVE(MADV_FREE_REUSE)
+
+void TCMalloc_SystemRelease(void* start, size_t length)
+{
+ while (madvise(start, length, MADV_FREE_REUSABLE) == -1 && errno == EAGAIN) { }
+}
+
+#elif HAVE(MADV_FREE) || HAVE(MADV_DONTNEED)
+
void TCMalloc_SystemRelease(void* start, size_t length)
{
- UNUSED_PARAM(start);
- UNUSED_PARAM(length);
-#if HAVE(MADV_DONTNEED)
+ // MADV_FREE clears the modified bit on pages, which allows
+ // them to be discarded immediately.
+#if HAVE(MADV_FREE)
+ const int advice = MADV_FREE;
+#else
+ const int advice = MADV_DONTNEED;
+#endif
if (FLAGS_malloc_devmem_start) {
// It's not safe to use MADV_DONTNEED if we've been mapping
// /dev/mem for heap memory
@@ -412,26 +425,45 @@ void TCMalloc_SystemRelease(void* start, size_t length)
// Note -- ignoring most return codes, because if this fails it
// doesn't matter...
while (madvise(reinterpret_cast<char*>(new_start), new_end - new_start,
- MADV_DONTNEED) == -1 &&
+ advice) == -1 &&
errno == EAGAIN) {
// NOP
}
- return;
}
-#endif
+}
-#if HAVE(MMAP)
+#elif HAVE(MMAP)
+
+void TCMalloc_SystemRelease(void* start, size_t length)
+{
void* newAddress = mmap(start, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
// If the mmap failed then that's ok, we just won't return the memory to the system.
ASSERT_UNUSED(newAddress, newAddress == start || newAddress == reinterpret_cast<void*>(MAP_FAILED));
- return;
-#endif
}
-#if HAVE(VIRTUALALLOC)
+#else
+
+// Platforms that don't support returning memory use an empty inline version of TCMalloc_SystemRelease
+// declared in TCSystemAlloc.h
+
+#endif
+
+#if HAVE(MADV_FREE_REUSE)
+
void TCMalloc_SystemCommit(void* start, size_t length)
{
- UNUSED_PARAM(start);
- UNUSED_PARAM(length);
+ while (madvise(start, length, MADV_FREE_REUSE) == -1 && errno == EAGAIN) { }
}
+
+#elif HAVE(VIRTUALALLOC)
+
+void TCMalloc_SystemCommit(void*, size_t)
+{
+}
+
+#else
+
+// Platforms that don't need to explicitly commit memory use an empty inline version of TCMalloc_SystemCommit
+// declared in TCSystemAlloc.h
+
#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.h b/src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.h
index 0caf718..8e3a01a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.h
@@ -62,9 +62,13 @@ extern void* TCMalloc_SystemAlloc(size_t bytes, size_t *actual_bytes,
// be released, partial pages will not.)
extern void TCMalloc_SystemRelease(void* start, size_t length);
-#if HAVE(VIRTUALALLOC)
extern void TCMalloc_SystemCommit(void* start, size_t length);
-#else
+
+#if !HAVE(MADV_FREE_REUSE) && !HAVE(MADV_DONTNEED) && !HAVE(MMAP)
+inline void TCMalloc_SystemRelease(void*, size_t) { }
+#endif
+
+#if !HAVE(VIRTUALALLOC) && !HAVE(MADV_FREE_REUSE)
inline void TCMalloc_SystemCommit(void*, size_t) { }
#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecific.h b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecific.h
index 7603802..b07a9a2 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecific.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecific.h
@@ -45,13 +45,15 @@
#if USE(PTHREADS)
#include <pthread.h>
+#elif PLATFORM(QT)
+#include <QThreadStorage>
#elif PLATFORM(WIN_OS)
#include <windows.h>
#endif
namespace WTF {
-#if !USE(PTHREADS) && PLATFORM(WIN_OS)
+#if !USE(PTHREADS) && !PLATFORM(QT) && PLATFORM(WIN_OS)
// ThreadSpecificThreadExit should be called each time when a thread is detached.
// This is done automatically for threads created with WTF::createThread.
void ThreadSpecificThreadExit();
@@ -66,7 +68,7 @@ public:
~ThreadSpecific();
private:
-#if !USE(PTHREADS) && PLATFORM(WIN_OS)
+#if !USE(PTHREADS) && !PLATFORM(QT) && PLATFORM(WIN_OS)
friend void ThreadSpecificThreadExit();
#endif
@@ -74,7 +76,7 @@ private:
void set(T*);
void static destroy(void* ptr);
-#if USE(PTHREADS) || PLATFORM(WIN_OS)
+#if USE(PTHREADS) || PLATFORM(QT) || PLATFORM(WIN_OS)
struct Data : Noncopyable {
Data(T* value, ThreadSpecific<T>* owner) : value(value), owner(owner) {}
@@ -88,6 +90,8 @@ private:
#if USE(PTHREADS)
pthread_key_t m_key;
+#elif PLATFORM(QT)
+ QThreadStorage<Data*> m_key;
#elif PLATFORM(WIN_OS)
int m_index;
#endif
@@ -122,6 +126,37 @@ inline void ThreadSpecific<T>::set(T* ptr)
pthread_setspecific(m_key, new Data(ptr, this));
}
+#elif PLATFORM(QT)
+
+template<typename T>
+inline ThreadSpecific<T>::ThreadSpecific()
+{
+}
+
+template<typename T>
+inline ThreadSpecific<T>::~ThreadSpecific()
+{
+ Data* data = static_cast<Data*>(m_key.localData());
+ if (data)
+ data->destructor(data);
+}
+
+template<typename T>
+inline T* ThreadSpecific<T>::get()
+{
+ Data* data = static_cast<Data*>(m_key.localData());
+ return data ? data->value : 0;
+}
+
+template<typename T>
+inline void ThreadSpecific<T>::set(T* ptr)
+{
+ ASSERT(!get());
+ Data* data = new Data(ptr, this);
+ data->destructor = &ThreadSpecific<T>::destroy;
+ m_key.setLocalData(data);
+}
+
#elif PLATFORM(WIN_OS)
// The maximum number of TLS keys that can be created. For simplification, we assume that:
@@ -129,8 +164,8 @@ inline void ThreadSpecific<T>::set(T* ptr)
// 2) We do not need to hold many instances of ThreadSpecific<> data. This fixed number should be far enough.
const int kMaxTlsKeySize = 256;
-extern long g_tls_key_count;
-extern DWORD g_tls_keys[kMaxTlsKeySize];
+long& tlsKeyCount();
+DWORD* tlsKeys();
template<typename T>
inline ThreadSpecific<T>::ThreadSpecific()
@@ -140,23 +175,23 @@ inline ThreadSpecific<T>::ThreadSpecific()
if (tls_key == TLS_OUT_OF_INDEXES)
CRASH();
- m_index = InterlockedIncrement(&g_tls_key_count) - 1;
+ m_index = InterlockedIncrement(&tlsKeyCount()) - 1;
if (m_index >= kMaxTlsKeySize)
CRASH();
- g_tls_keys[m_index] = tls_key;
+ tlsKeys()[m_index] = tls_key;
}
template<typename T>
inline ThreadSpecific<T>::~ThreadSpecific()
{
// Does not invoke destructor functions. They will be called from ThreadSpecificThreadExit when the thread is detached.
- TlsFree(g_tls_keys[m_index]);
+ TlsFree(tlsKeys()[m_index]);
}
template<typename T>
inline T* ThreadSpecific<T>::get()
{
- Data* data = static_cast<Data*>(TlsGetValue(g_tls_keys[m_index]));
+ Data* data = static_cast<Data*>(TlsGetValue(tlsKeys()[m_index]));
return data ? data->value : 0;
}
@@ -166,7 +201,7 @@ inline void ThreadSpecific<T>::set(T* ptr)
ASSERT(!get());
Data* data = new Data(ptr, this);
data->destructor = &ThreadSpecific<T>::destroy;
- TlsSetValue(g_tls_keys[m_index], data);
+ TlsSetValue(tlsKeys()[m_index], data);
}
#else
@@ -189,8 +224,10 @@ inline void ThreadSpecific<T>::destroy(void* ptr)
#if USE(PTHREADS)
pthread_setspecific(data->owner->m_key, 0);
+#elif PLATFORM(QT)
+ data->owner->m_key.setLocalData(0);
#elif PLATFORM(WIN_OS)
- TlsSetValue(g_tls_keys[data->owner->m_index], 0);
+ TlsSetValue(tlsKeys()[data->owner->m_index], 0);
#else
#error ThreadSpecific is not implemented for this platform.
#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecificWin.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecificWin.cpp
index 1a3febb..f2c0cad 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecificWin.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecificWin.cpp
@@ -29,14 +29,23 @@
namespace WTF {
-long g_tls_key_count = 0;
-DWORD g_tls_keys[kMaxTlsKeySize];
+long& tlsKeyCount()
+{
+ static long count;
+ return count;
+}
+
+DWORD* tlsKeys()
+{
+ static DWORD keys[kMaxTlsKeySize];
+ return keys;
+}
void ThreadSpecificThreadExit()
{
- for (long i = 0; i < g_tls_key_count; i++) {
+ for (long i = 0; i < tlsKeyCount(); i++) {
// The layout of ThreadSpecific<T>::Data does not depend on T. So we are safe to do the static cast to ThreadSpecific<int> in order to access its data member.
- ThreadSpecific<int>::Data* data = static_cast<ThreadSpecific<int>::Data*>(TlsGetValue(g_tls_keys[i]));
+ ThreadSpecific<int>::Data* data = static_cast<ThreadSpecific<int>::Data*>(TlsGetValue(tlsKeys()[i]));
if (data)
data->destructor(data);
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.cpp
index 0179dcc..bd25ee7 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,16 +26,21 @@
#include "config.h"
#include "Threading.h"
+#include <string.h>
+
namespace WTF {
struct NewThreadContext {
- NewThreadContext(ThreadFunction entryPoint, void* data)
+ NewThreadContext(ThreadFunction entryPoint, void* data, const char* name)
: entryPoint(entryPoint)
, data(data)
- { }
+ , name(name)
+ {
+ }
ThreadFunction entryPoint;
void* data;
+ const char* name;
Mutex creationMutex;
};
@@ -44,6 +49,8 @@ static void* threadEntryPoint(void* contextData)
{
NewThreadContext* context = reinterpret_cast<NewThreadContext*>(contextData);
+ setThreadNameInternal(context->name);
+
// Block until our creating thread has completed any extra setup work
{
MutexLocker locker(context->creationMutex);
@@ -59,7 +66,14 @@ static void* threadEntryPoint(void* contextData)
ThreadIdentifier createThread(ThreadFunction entryPoint, void* data, const char* name)
{
- NewThreadContext* context = new NewThreadContext(entryPoint, data);
+ // Visual Studio has a 31-character limit on thread names. Longer names will
+ // be truncated silently, but we'd like callers to know about the limit.
+#if !LOG_DISABLED
+ if (strlen(name) > 31)
+ LOG_ERROR("Thread name \"%s\" is longer than 31 characters and will be truncated by Visual Studio", name);
+#endif
+
+ NewThreadContext* context = new NewThreadContext(entryPoint, data, name);
// Prevent the thread body from executing until we've established the thread identifier
MutexLocker locker(context->creationMutex);
@@ -72,6 +86,8 @@ ThreadIdentifier createThread(ThreadFunction entryPoint, void* data, const char*
// This function is deprecated but needs to be kept around for backward
// compatibility. Use the 3-argument version of createThread above.
+ThreadIdentifier createThread(ThreadFunction entryPoint, void* data);
+
ThreadIdentifier createThread(ThreadFunction entryPoint, void* data)
{
return createThread(entryPoint, data, 0);
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h
index 156013d..02fa3a4 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h
@@ -108,10 +108,17 @@ namespace WTF {
typedef uint32_t ThreadIdentifier;
typedef void* (*ThreadFunction)(void* argument);
-// Returns 0 if thread creation failed
+// Returns 0 if thread creation failed.
+// The thread name must be a literal since on some platforms it's passed in to the thread.
ThreadIdentifier createThread(ThreadFunction, void*, const char* threadName);
+
+// Internal platform-specific createThread implementation.
ThreadIdentifier createThreadInternal(ThreadFunction, void*, const char* threadName);
+// Called in the thread during initialization.
+// Helpful for platforms where the thread name must be set from within the thread.
+void setThreadNameInternal(const char* threadName);
+
ThreadIdentifier currentThread();
bool isMainThread();
int waitForThreadCompletion(ThreadIdentifier, void**);
@@ -132,12 +139,15 @@ struct PlatformMutex {
size_t m_recursionCount;
};
struct PlatformCondition {
- size_t m_timedOut;
- size_t m_blocked;
- size_t m_waitingForRemoval;
- HANDLE m_gate;
- HANDLE m_queue;
- HANDLE m_mutex;
+ size_t m_waitersGone;
+ size_t m_waitersBlocked;
+ size_t m_waitersToUnblock;
+ HANDLE m_blockLock;
+ HANDLE m_blockQueue;
+ HANDLE m_unblockLock;
+
+ bool timedWait(PlatformMutex&, DWORD durationMilliseconds);
+ void signal(bool unblockAll);
};
#else
typedef void* PlatformMutex;
@@ -167,8 +177,9 @@ public:
~ThreadCondition();
void wait(Mutex& mutex);
- // Returns true if the condition was signaled before the timeout, false if the timeout was reached
- bool timedWait(Mutex&, double interval);
+ // Returns true if the condition was signaled before absoluteTime, false if the absoluteTime was reached or is in the past.
+ // The absoluteTime is in seconds, starting on January 1, 1970. The time is assumed to use the same time zone as WTF::currentTime().
+ bool timedWait(Mutex&, double absoluteTime);
void signal();
void broadcast();
@@ -201,9 +212,9 @@ inline int atomicDecrement(int volatile* addend) { return __gnu_cxx::__exchange_
#endif
-template<class T> class ThreadSafeShared : Noncopyable {
+class ThreadSafeSharedBase : Noncopyable {
public:
- ThreadSafeShared(int initialRefCount = 1)
+ ThreadSafeSharedBase(int initialRefCount = 1)
: m_refCount(initialRefCount)
{
}
@@ -218,20 +229,6 @@ public:
#endif
}
- void deref()
- {
-#if USE(LOCKFREE_THREADSAFESHARED)
- if (atomicDecrement(&m_refCount) <= 0)
-#else
- {
- MutexLocker locker(m_mutex);
- --m_refCount;
- }
- if (m_refCount <= 0)
-#endif
- delete static_cast<T*>(this);
- }
-
bool hasOneRef()
{
return refCount() == 1;
@@ -245,13 +242,50 @@ public:
return static_cast<int const volatile &>(m_refCount);
}
+protected:
+ // Returns whether the pointer should be freed or not.
+ bool derefBase()
+ {
+#if USE(LOCKFREE_THREADSAFESHARED)
+ if (atomicDecrement(&m_refCount) <= 0)
+ return true;
+#else
+ int refCount;
+ {
+ MutexLocker locker(m_mutex);
+ --m_refCount;
+ refCount = m_refCount;
+ }
+ if (refCount <= 0)
+ return true;
+#endif
+ return false;
+ }
+
private:
+ template<class T>
+ friend class CrossThreadRefCounted;
+
int m_refCount;
#if !USE(LOCKFREE_THREADSAFESHARED)
mutable Mutex m_mutex;
#endif
};
+template<class T> class ThreadSafeShared : public ThreadSafeSharedBase {
+public:
+ ThreadSafeShared(int initialRefCount = 1)
+ : ThreadSafeSharedBase(initialRefCount)
+ {
+ }
+
+ void deref()
+ {
+ if (derefBase())
+ delete static_cast<T*>(this);
+ }
+};
+
// This function must be called from the main thread. It is safe to call it repeatedly.
// Darwin is an exception to this rule: it is OK to call it from any thread, the only requirement is that the calls are not reentrant.
void initializeThreading();
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingGtk.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingGtk.cpp
deleted file mode 100644
index 777d55b..0000000
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingGtk.cpp
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "Threading.h"
-
-#if !USE(PTHREADS)
-
-#include "HashMap.h"
-#include "MainThread.h"
-#include "RandomNumberSeed.h"
-
-#include <glib.h>
-
-namespace WTF {
-
-static Mutex* atomicallyInitializedStaticMutex;
-
-static ThreadIdentifier mainThreadIdentifier;
-
-static Mutex& threadMapMutex()
-{
- static Mutex mutex;
- return mutex;
-}
-
-void initializeThreading()
-{
- if (!g_thread_supported())
- g_thread_init(NULL);
- ASSERT(g_thread_supported());
-
- if (!atomicallyInitializedStaticMutex) {
- atomicallyInitializedStaticMutex = new Mutex;
- threadMapMutex();
- initializeRandomNumberGenerator();
- mainThreadIdentifier = currentThread();
- initializeMainThread();
- }
-}
-
-void lockAtomicallyInitializedStaticMutex()
-{
- ASSERT(atomicallyInitializedStaticMutex);
- atomicallyInitializedStaticMutex->lock();
-}
-
-void unlockAtomicallyInitializedStaticMutex()
-{
- atomicallyInitializedStaticMutex->unlock();
-}
-
-static HashMap<ThreadIdentifier, GThread*>& threadMap()
-{
- static HashMap<ThreadIdentifier, GThread*> map;
- return map;
-}
-
-static ThreadIdentifier identifierByGthreadHandle(GThread*& thread)
-{
- MutexLocker locker(threadMapMutex());
-
- HashMap<ThreadIdentifier, GThread*>::iterator i = threadMap().begin();
- for (; i != threadMap().end(); ++i) {
- if (i->second == thread)
- return i->first;
- }
-
- return 0;
-}
-
-static ThreadIdentifier establishIdentifierForThread(GThread*& thread)
-{
- ASSERT(!identifierByGthreadHandle(thread));
-
- MutexLocker locker(threadMapMutex());
-
- static ThreadIdentifier identifierCount = 1;
-
- threadMap().add(identifierCount, thread);
-
- return identifierCount++;
-}
-
-static GThread* threadForIdentifier(ThreadIdentifier id)
-{
- MutexLocker locker(threadMapMutex());
-
- return threadMap().get(id);
-}
-
-static void clearThreadForIdentifier(ThreadIdentifier id)
-{
- MutexLocker locker(threadMapMutex());
-
- ASSERT(threadMap().contains(id));
-
- threadMap().remove(id);
-}
-
-ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, const char*)
-{
- GThread* thread;
- if (!(thread = g_thread_create(entryPoint, data, TRUE, 0))) {
- LOG_ERROR("Failed to create thread at entry point %p with data %p", entryPoint, data);
- return 0;
- }
-
- ThreadIdentifier threadID = establishIdentifierForThread(thread);
- return threadID;
-}
-
-int waitForThreadCompletion(ThreadIdentifier threadID, void** result)
-{
- ASSERT(threadID);
-
- GThread* thread = threadForIdentifier(threadID);
-
- void* joinResult = g_thread_join(thread);
- if (result)
- *result = joinResult;
-
- clearThreadForIdentifier(threadID);
- return 0;
-}
-
-void detachThread(ThreadIdentifier)
-{
-}
-
-ThreadIdentifier currentThread()
-{
- GThread* currentThread = g_thread_self();
- if (ThreadIdentifier id = identifierByGthreadHandle(currentThread))
- return id;
- return establishIdentifierForThread(currentThread);
-}
-
-bool isMainThread()
-{
- return currentThread() == mainThreadIdentifier;
-}
-
-Mutex::Mutex()
- : m_mutex(g_mutex_new())
-{
-}
-
-Mutex::~Mutex()
-{
-}
-
-void Mutex::lock()
-{
- g_mutex_lock(m_mutex.get());
-}
-
-bool Mutex::tryLock()
-{
- return g_mutex_trylock(m_mutex.get());
-}
-
-void Mutex::unlock()
-{
- g_mutex_unlock(m_mutex.get());
-}
-
-ThreadCondition::ThreadCondition()
- : m_condition(g_cond_new())
-{
-}
-
-ThreadCondition::~ThreadCondition()
-{
-}
-
-void ThreadCondition::wait(Mutex& mutex)
-{
- g_cond_wait(m_condition.get(), mutex.impl().get());
-}
-
-bool ThreadCondition::timedWait(Mutex& mutex, double interval)
-{
- if (interval < 0.0) {
- wait(mutex);
- return true;
- }
-
- int intervalSeconds = static_cast<int>(interval);
- int intervalMicroseconds = static_cast<int>((interval - intervalSeconds) * 1000000.0);
-
- GTimeVal targetTime;
- g_get_current_time(&targetTime);
-
- targetTime.tv_sec += intervalSeconds;
- targetTime.tv_usec += intervalMicroseconds;
- if (targetTime.tv_usec > 1000000) {
- targetTime.tv_usec -= 1000000;
- targetTime.tv_sec++;
- }
-
- return g_cond_timed_wait(m_condition.get(), mutex.impl().get(), &targetTime);
-}
-
-void ThreadCondition::signal()
-{
- g_cond_signal(m_condition.get());
-}
-
-void ThreadCondition::broadcast()
-{
- g_cond_broadcast(m_condition.get());
-}
-
-
-}
-
-#endif // !USE(PTHREADS)
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingNone.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingNone.cpp
index 832cd0c..e713102 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingNone.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingNone.cpp
@@ -33,10 +33,11 @@
namespace WTF {
void initializeThreading() { }
-ThreadIdentifier createThreadInternal(ThreadFunction, void*, const char*) { return 0; }
+ThreadIdentifier createThreadInternal(ThreadFunction, void*, const char*) { return ThreadIdentifier(); }
+void setThreadNameInternal(const char*) { }
int waitForThreadCompletion(ThreadIdentifier, void**) { return 0; }
void detachThread(ThreadIdentifier) { }
-ThreadIdentifier currentThread() { return 0; }
+ThreadIdentifier currentThread() { return ThreadIdentifier(); }
bool isMainThread() { return true; }
Mutex::Mutex() { }
@@ -48,7 +49,7 @@ void Mutex::unlock() { }
ThreadCondition::ThreadCondition() { }
ThreadCondition::~ThreadCondition() { }
void ThreadCondition::wait(Mutex& mutex) { }
-bool ThreadCondition::timedWait(Mutex& mutex, double interval) { return false; }
+bool ThreadCondition::timedWait(Mutex& mutex, double absoluteTime) { return false; }
void ThreadCondition::signal() { }
void ThreadCondition::broadcast() { }
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp
index f111fcf..3f5cbf5 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2009 Apple Inc. All rights reserved.
* Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com)
*
* Redistribution and use in source and binary forms, with or without
@@ -26,27 +26,33 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
#include "config.h"
#include "Threading.h"
-#include "StdLibExtras.h"
-
#if USE(PTHREADS)
+#include "CurrentTime.h"
#include "HashMap.h"
#include "MainThread.h"
#include "RandomNumberSeed.h"
-
+#include "StdLibExtras.h"
+#include "UnusedParam.h"
#include <errno.h>
+#include <limits.h>
#include <sys/time.h>
+#if PLATFORM(ANDROID)
+#include "jni_utility.h"
+#endif
+
namespace WTF {
typedef HashMap<ThreadIdentifier, pthread_t> ThreadMap;
static Mutex* atomicallyInitializedStaticMutex;
-#if !PLATFORM(DARWIN)
+#if !PLATFORM(DARWIN) || PLATFORM(CHROMIUM)
static ThreadIdentifier mainThreadIdentifier; // The thread that was the first to call initializeThreading(), which must be the main thread.
#endif
@@ -62,7 +68,7 @@ void initializeThreading()
atomicallyInitializedStaticMutex = new Mutex;
threadMapMutex();
initializeRandomNumberGenerator();
-#if !PLATFORM(DARWIN)
+#if !PLATFORM(DARWIN) || PLATFORM(CHROMIUM)
mainThreadIdentifier = currentThread();
#endif
initializeMainThread();
@@ -108,14 +114,14 @@ static ThreadIdentifier establishIdentifierForPthreadHandle(pthread_t& pthreadHa
static ThreadIdentifier identifierCount = 1;
threadMap().add(identifierCount, pthreadHandle);
-
+
return identifierCount++;
}
static pthread_t pthreadHandleForIdentifier(ThreadIdentifier id)
{
MutexLocker locker(threadMapMutex());
-
+
return threadMap().get(id);
}
@@ -124,31 +130,76 @@ static void clearPthreadHandleForIdentifier(ThreadIdentifier id)
MutexLocker locker(threadMapMutex());
ASSERT(threadMap().contains(id));
-
+
threadMap().remove(id);
}
+#if PLATFORM(ANDROID)
+// On the Android platform, threads must be registered with the VM before they run.
+struct ThreadData {
+ ThreadFunction entryPoint;
+ void* arg;
+};
+
+static void* runThreadWithRegistration(void* arg)
+{
+ ThreadData* data = static_cast<ThreadData*>(arg);
+ JavaVM* vm = JSC::Bindings::getJavaVM();
+ JNIEnv* env;
+ void* ret = 0;
+ if (vm->AttachCurrentThread(&env, 0) == JNI_OK) {
+ ret = data->entryPoint(data->arg);
+ vm->DetachCurrentThread();
+ }
+ delete data;
+ return ret;
+}
+
+ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, const char*)
+{
+ pthread_t threadHandle;
+ ThreadData* threadData = new ThreadData();
+ threadData->entryPoint = entryPoint;
+ threadData->arg = data;
+
+ if (pthread_create(&threadHandle, 0, runThreadWithRegistration, static_cast<void*>(threadData))) {
+ LOG_ERROR("Failed to create pthread at entry point %p with data %p", entryPoint, data);
+ return 0;
+ }
+ return establishIdentifierForPthreadHandle(threadHandle);
+}
+#else
ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, const char*)
{
pthread_t threadHandle;
- if (pthread_create(&threadHandle, NULL, entryPoint, data)) {
+ if (pthread_create(&threadHandle, 0, entryPoint, data)) {
LOG_ERROR("Failed to create pthread at entry point %p with data %p", entryPoint, data);
return 0;
}
return establishIdentifierForPthreadHandle(threadHandle);
}
+#endif
+
+void setThreadNameInternal(const char* threadName)
+{
+#if PLATFORM(DARWIN) && !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
+ pthread_setname_np(threadName);
+#else
+ UNUSED_PARAM(threadName);
+#endif
+}
int waitForThreadCompletion(ThreadIdentifier threadID, void** result)
{
ASSERT(threadID);
-
+
pthread_t pthreadHandle = pthreadHandleForIdentifier(threadID);
-
+
int joinResult = pthread_join(pthreadHandle, result);
if (joinResult == EDEADLK)
LOG_ERROR("ThreadIdentifier %u was found to be deadlocked trying to quit", threadID);
-
+
clearPthreadHandleForIdentifier(threadID);
return joinResult;
}
@@ -156,11 +207,11 @@ int waitForThreadCompletion(ThreadIdentifier threadID, void** result)
void detachThread(ThreadIdentifier threadID)
{
ASSERT(threadID);
-
+
pthread_t pthreadHandle = pthreadHandleForIdentifier(threadID);
-
+
pthread_detach(pthreadHandle);
-
+
clearPthreadHandleForIdentifier(threadID);
}
@@ -174,7 +225,7 @@ ThreadIdentifier currentThread()
bool isMainThread()
{
-#if PLATFORM(DARWIN)
+#if PLATFORM(DARWIN) && !PLATFORM(CHROMIUM)
return pthread_main_np();
#else
return currentThread() == mainThreadIdentifier;
@@ -193,27 +244,27 @@ Mutex::~Mutex()
void Mutex::lock()
{
- if (pthread_mutex_lock(&m_mutex) != 0)
- ASSERT(false);
+ int result = pthread_mutex_lock(&m_mutex);
+ ASSERT_UNUSED(result, !result);
}
-
+
bool Mutex::tryLock()
{
int result = pthread_mutex_trylock(&m_mutex);
-
+
if (result == 0)
return true;
- else if (result == EBUSY)
+ if (result == EBUSY)
return false;
- ASSERT(false);
+ ASSERT_NOT_REACHED();
return false;
}
void Mutex::unlock()
{
- if (pthread_mutex_unlock(&m_mutex) != 0)
- ASSERT(false);
+ int result = pthread_mutex_unlock(&m_mutex);
+ ASSERT_UNUSED(result, !result);
}
ThreadCondition::ThreadCondition()
@@ -228,48 +279,42 @@ ThreadCondition::~ThreadCondition()
void ThreadCondition::wait(Mutex& mutex)
{
- if (pthread_cond_wait(&m_condition, &mutex.impl()) != 0)
- ASSERT(false);
+ int result = pthread_cond_wait(&m_condition, &mutex.impl());
+ ASSERT_UNUSED(result, !result);
}
-bool ThreadCondition::timedWait(Mutex& mutex, double secondsToWait)
+bool ThreadCondition::timedWait(Mutex& mutex, double absoluteTime)
{
- if (secondsToWait < 0.0) {
+ if (absoluteTime < currentTime())
+ return false;
+
+ if (absoluteTime > INT_MAX) {
wait(mutex);
return true;
}
- int intervalSeconds = static_cast<int>(secondsToWait);
- int intervalMicroseconds = static_cast<int>((secondsToWait - intervalSeconds) * 1000000.0);
-
- // Current time comes in sec/microsec
- timeval currentTime;
- gettimeofday(&currentTime, NULL);
+ int timeSeconds = static_cast<int>(absoluteTime);
+ int timeNanoseconds = static_cast<int>((absoluteTime - timeSeconds) * 1E9);
- // Target time comes in sec/nanosec
timespec targetTime;
- targetTime.tv_sec = currentTime.tv_sec + intervalSeconds;
- targetTime.tv_nsec = (currentTime.tv_usec + intervalMicroseconds) * 1000;
- if (targetTime.tv_nsec > 1000000000) {
- targetTime.tv_nsec -= 1000000000;
- targetTime.tv_sec++;
- }
+ targetTime.tv_sec = timeSeconds;
+ targetTime.tv_nsec = timeNanoseconds;
return pthread_cond_timedwait(&m_condition, &mutex.impl(), &targetTime) == 0;
}
void ThreadCondition::signal()
{
- if (pthread_cond_signal(&m_condition) != 0)
- ASSERT(false);
+ int result = pthread_cond_signal(&m_condition);
+ ASSERT_UNUSED(result, !result);
}
void ThreadCondition::broadcast()
{
- if (pthread_cond_broadcast(&m_condition) != 0)
- ASSERT(false);
+ int result = pthread_cond_broadcast(&m_condition);
+ ASSERT_UNUSED(result, !result);
}
-
+
} // namespace WTF
#endif // USE(PTHREADS)
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingWin.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingWin.cpp
index 3626a37..ea18656 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingWin.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingWin.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -24,40 +25,61 @@
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * There are numerous academic and practical works on how to implement pthread_cond_wait/pthread_cond_signal/pthread_cond_broadcast
+ * functions on Win32. Here is one example: http://www.cs.wustl.edu/~schmidt/win32-cv-1.html which is widely credited as a 'starting point'
+ * of modern attempts. There are several more or less proven implementations, one in Boost C++ library (http://www.boost.org) and another
+ * in pthreads-win32 (http://sourceware.org/pthreads-win32/).
+ *
+ * The number of articles and discussions is the evidence of significant difficulties in implementing these primitives correctly.
+ * The brief search of revisions, ChangeLog entries, discussions in comp.programming.threads and other places clearly documents
+ * numerous pitfalls and performance problems the authors had to overcome to arrive to the suitable implementations.
+ * Optimally, WebKit would use one of those supported/tested libraries directly. To roll out our own implementation is impractical,
+ * if even for the lack of sufficient testing. However, a faithful reproduction of the code from one of the popular supported
+ * libraries seems to be a good compromise.
+ *
+ * The early Boost implementation (http://www.boxbackup.org/trac/browser/box/nick/win/lib/win32/boost_1_32_0/libs/thread/src/condition.cpp?rev=30)
+ * is identical to pthreads-win32 (http://sourceware.org/cgi-bin/cvsweb.cgi/pthreads/pthread_cond_wait.c?rev=1.10&content-type=text/x-cvsweb-markup&cvsroot=pthreads-win32).
+ * Current Boost uses yet another (although seemingly equivalent) algorithm which came from their 'thread rewrite' effort.
*
- * =============================================================================
- * Note: The implementation of condition variables under the Windows
- * plaform was based on that of the excellent BOOST C++ library. It
- * has been rewritten to fit in with the WebKit architecture and to
- * use its coding conventions.
- * =============================================================================
+ * This file includes timedWait/signal/broadcast implementations translated to WebKit coding style from the latest algorithm by
+ * Alexander Terekhov and Louis Thomas, as captured here: http://sourceware.org/cgi-bin/cvsweb.cgi/pthreads/pthread_cond_wait.c?rev=1.10&content-type=text/x-cvsweb-markup&cvsroot=pthreads-win32
+ * It replaces the implementation of their previous algorithm, also documented in the same source above.
+ * The naming and comments are left very close to original to enable easy cross-check.
*
- * The Boost license is virtually identical to the Apple variation at the
- * top of this file, but is included here for completeness:
+ * The corresponding Pthreads-win32 License is included below, and CONTRIBUTORS file which it refers to is added to
+ * source directory (as CONTRIBUTORS.pthreads-win32).
+ */
+
+/*
+ * Pthreads-win32 - POSIX Threads Library for Win32
+ * Copyright(C) 1998 John E. Bossom
+ * Copyright(C) 1999,2005 Pthreads-win32 contributors
*
- * Boost Software License - Version 1.0 - August 17th, 2003
+ * Contact Email: rpj@callisto.canberra.edu.au
*
- * Permission is hereby granted, free of charge, to any person or organization
- * obtaining a copy of the software and accompanying documentation covered by
- * this license (the "Software") to use, reproduce, display, distribute,
- * execute, and transmit the Software, and to prepare derivative works of the
- * Software, and to permit third-parties to whom the Software is furnished to
- * do so, all subject to the following:
+ * The current list of contributors is contained
+ * in the file CONTRIBUTORS included with the source
+ * code distribution. The list can also be seen at the
+ * following World Wide Web location:
+ * http://sources.redhat.com/pthreads-win32/contributors.html
*
- * The copyright notices in the Software and this entire statement, including
- * the above license grant, this restriction and the following disclaimer,
- * must be included in all copies of the Software, in whole or in part, and
- * all derivative works of the Software, unless such copies or derivative
- * works are solely in the form of machine-executable object code generated by
- * a source language processor.
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
*
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
- * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
- * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library in the file COPYING.LIB;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#include "config.h"
@@ -69,13 +91,14 @@
#endif
#include <process.h>
#include <windows.h>
+#include <wtf/CurrentTime.h>
#include <wtf/HashMap.h>
#include <wtf/MathExtras.h>
#include <wtf/RandomNumberSeed.h>
namespace WTF {
-// MS_VC_EXCEPTION, THREADNAME_INFO, and setThreadName all come from <http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx>.
+// MS_VC_EXCEPTION, THREADNAME_INFO, and setThreadNameInternal all come from <http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx>.
static const DWORD MS_VC_EXCEPTION = 0x406D1388;
#pragma pack(push, 8)
@@ -87,16 +110,12 @@ typedef struct tagTHREADNAME_INFO {
} THREADNAME_INFO;
#pragma pack(pop)
-static void setThreadName(DWORD dwThreadID, LPCSTR szThreadName)
+void setThreadNameInternal(const char* szThreadName)
{
- // Visual Studio has a 31-character limit on thread names. Longer names will
- // be truncated silently, but we'd like callers to know about the limit.
- ASSERT_ARG(szThreadName, strlen(szThreadName) <= 31);
-
THREADNAME_INFO info;
info.dwType = 0x1000;
info.szName = szThreadName;
- info.dwThreadID = dwThreadID;
+ info.dwThreadID = GetCurrentThreadId();
info.dwFlags = 0;
__try {
@@ -134,7 +153,7 @@ void initializeThreading()
initializeRandomNumberGenerator();
initializeMainThread();
mainThreadIdentifier = currentThread();
- setThreadName(mainThreadIdentifier, "Main Thread");
+ setThreadNameInternal("Main Thread");
}
}
@@ -197,9 +216,6 @@ ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, con
return 0;
}
- if (threadName)
- setThreadName(threadIdentifier, threadName);
-
threadID = static_cast<ThreadIdentifier>(threadIdentifier);
storeThreadHandleByIdentifier(threadIdentifier, threadHandle);
@@ -214,11 +230,11 @@ int waitForThreadCompletion(ThreadIdentifier threadID, void** result)
if (!threadHandle)
LOG_ERROR("ThreadIdentifier %u did not correspond to an active thread when trying to quit", threadID);
- DWORD joinResult = ::WaitForSingleObject(threadHandle, INFINITE);
+ DWORD joinResult = WaitForSingleObject(threadHandle, INFINITE);
if (joinResult == WAIT_FAILED)
LOG_ERROR("ThreadIdentifier %u was found to be deadlocked trying to quit", threadID);
- ::CloseHandle(threadHandle);
+ CloseHandle(threadHandle);
clearThreadHandleForIdentifier(threadID);
return joinResult;
@@ -227,16 +243,16 @@ int waitForThreadCompletion(ThreadIdentifier threadID, void** result)
void detachThread(ThreadIdentifier threadID)
{
ASSERT(threadID);
-
+
HANDLE threadHandle = threadHandleForIdentifier(threadID);
if (threadHandle)
- ::CloseHandle(threadHandle);
+ CloseHandle(threadHandle);
clearThreadHandleForIdentifier(threadID);
}
ThreadIdentifier currentThread()
{
- return static_cast<ThreadIdentifier>(::GetCurrentThreadId());
+ return static_cast<ThreadIdentifier>(GetCurrentThreadId());
}
bool isMainThread()
@@ -247,17 +263,17 @@ bool isMainThread()
Mutex::Mutex()
{
m_mutex.m_recursionCount = 0;
- ::InitializeCriticalSection(&m_mutex.m_internalMutex);
+ InitializeCriticalSection(&m_mutex.m_internalMutex);
}
Mutex::~Mutex()
{
- ::DeleteCriticalSection(&m_mutex.m_internalMutex);
+ DeleteCriticalSection(&m_mutex.m_internalMutex);
}
void Mutex::lock()
{
- ::EnterCriticalSection(&m_mutex.m_internalMutex);
+ EnterCriticalSection(&m_mutex.m_internalMutex);
++m_mutex.m_recursionCount;
}
@@ -269,14 +285,14 @@ bool Mutex::tryLock()
// treats this as a successful case, it changes the behavior of several
// tests in WebKit that check to see if the current thread already
// owned this mutex (see e.g., IconDatabase::getOrCreateIconRecord)
- DWORD result = ::TryEnterCriticalSection(&m_mutex.m_internalMutex);
+ DWORD result = TryEnterCriticalSection(&m_mutex.m_internalMutex);
if (result != 0) { // We got the lock
// If this thread already had the lock, we must unlock and
// return false so that we mimic the behavior of POSIX's
// pthread_mutex_trylock:
if (m_mutex.m_recursionCount > 0) {
- ::LeaveCriticalSection(&m_mutex.m_internalMutex);
+ LeaveCriticalSection(&m_mutex.m_internalMutex);
return false;
}
@@ -290,183 +306,168 @@ bool Mutex::tryLock()
void Mutex::unlock()
{
--m_mutex.m_recursionCount;
- ::LeaveCriticalSection(&m_mutex.m_internalMutex);
-}
-
-static const long MaxSemaphoreCount = static_cast<long>(~0UL >> 1);
-
-ThreadCondition::ThreadCondition()
-{
- m_condition.m_timedOut = 0;
- m_condition.m_blocked = 0;
- m_condition.m_waitingForRemoval = 0;
- m_condition.m_gate = ::CreateSemaphore(0, 1, 1, 0);
- m_condition.m_queue = ::CreateSemaphore(0, 0, MaxSemaphoreCount, 0);
- m_condition.m_mutex = ::CreateMutex(0, 0, 0);
-
- if (!m_condition.m_gate || !m_condition.m_queue || !m_condition.m_mutex) {
- if (m_condition.m_gate)
- ::CloseHandle(m_condition.m_gate);
- if (m_condition.m_queue)
- ::CloseHandle(m_condition.m_queue);
- if (m_condition.m_mutex)
- ::CloseHandle(m_condition.m_mutex);
- }
+ LeaveCriticalSection(&m_mutex.m_internalMutex);
}
-ThreadCondition::~ThreadCondition()
-{
- ::CloseHandle(m_condition.m_gate);
- ::CloseHandle(m_condition.m_queue);
- ::CloseHandle(m_condition.m_mutex);
-}
-
-void ThreadCondition::wait(Mutex& mutex)
+bool PlatformCondition::timedWait(PlatformMutex& mutex, DWORD durationMilliseconds)
{
- PlatformMutex& cs = mutex.impl();
-
// Enter the wait state.
- DWORD res = ::WaitForSingleObject(m_condition.m_gate, INFINITE);
+ DWORD res = WaitForSingleObject(m_blockLock, INFINITE);
ASSERT(res == WAIT_OBJECT_0);
- ++m_condition.m_blocked;
- res = ::ReleaseSemaphore(m_condition.m_gate, 1, 0);
+ ++m_waitersBlocked;
+ res = ReleaseSemaphore(m_blockLock, 1, 0);
ASSERT(res);
- ::LeaveCriticalSection(&cs.m_internalMutex);
+ LeaveCriticalSection(&mutex.m_internalMutex);
- res = ::WaitForSingleObject(m_condition.m_queue, INFINITE);
- ASSERT(res == WAIT_OBJECT_0);
+ // Main wait - use timeout.
+ bool timedOut = (WaitForSingleObject(m_blockQueue, durationMilliseconds) == WAIT_TIMEOUT);
- res = ::WaitForSingleObject(m_condition.m_mutex, INFINITE);
+ res = WaitForSingleObject(m_unblockLock, INFINITE);
ASSERT(res == WAIT_OBJECT_0);
- size_t wasWaiting = m_condition.m_waitingForRemoval;
- size_t wasTimedOut = m_condition.m_timedOut;
- if (wasWaiting != 0) {
- if (--m_condition.m_waitingForRemoval == 0) {
- if (m_condition.m_blocked != 0) {
- res = ::ReleaseSemaphore(m_condition.m_gate, 1, 0); // open m_gate
- ASSERT(res);
- wasWaiting = 0;
- }
- else if (m_condition.m_timedOut != 0)
- m_condition.m_timedOut = 0;
- }
- } else if (++m_condition.m_timedOut == ((std::numeric_limits<unsigned>::max)() / 2)) {
- // timeout occured, normalize the m_condition.m_timedOut count
+
+ int signalsLeft = m_waitersToUnblock;
+
+ if (m_waitersToUnblock)
+ --m_waitersToUnblock;
+ else if (++m_waitersGone == (INT_MAX / 2)) { // timeout/canceled or spurious semaphore
+ // timeout or spurious wakeup occured, normalize the m_waitersGone count
// this may occur if many calls to wait with a timeout are made and
// no call to notify_* is made
- res = ::WaitForSingleObject(m_condition.m_gate, INFINITE);
+ res = WaitForSingleObject(m_blockLock, INFINITE);
ASSERT(res == WAIT_OBJECT_0);
- m_condition.m_blocked -= m_condition.m_timedOut;
- res = ::ReleaseSemaphore(m_condition.m_gate, 1, 0);
+ m_waitersBlocked -= m_waitersGone;
+ res = ReleaseSemaphore(m_blockLock, 1, 0);
ASSERT(res);
- m_condition.m_timedOut = 0;
+ m_waitersGone = 0;
}
- res = ::ReleaseMutex(m_condition.m_mutex);
+
+ res = ReleaseMutex(m_unblockLock);
ASSERT(res);
- if (wasWaiting == 1) {
- for (/**/ ; wasTimedOut; --wasTimedOut) {
- // better now than spurious later
- res = ::WaitForSingleObject(m_condition.m_queue, INFINITE);
- ASSERT(res == WAIT_OBJECT_0);
- }
- res = ::ReleaseSemaphore(m_condition.m_gate, 1, 0);
+ if (signalsLeft == 1) {
+ res = ReleaseSemaphore(m_blockLock, 1, 0); // Open the gate.
ASSERT(res);
}
- ::EnterCriticalSection (&cs.m_internalMutex);
-}
+ EnterCriticalSection (&mutex.m_internalMutex);
-bool ThreadCondition::timedWait(Mutex& mutex, double interval)
-{
- // Empty for now
- ASSERT(false);
- return false;
+ return !timedOut;
}
-void ThreadCondition::signal()
+void PlatformCondition::signal(bool unblockAll)
{
- unsigned signals = 0;
+ unsigned signalsToIssue = 0;
- DWORD res = ::WaitForSingleObject(m_condition.m_mutex, INFINITE);
+ DWORD res = WaitForSingleObject(m_unblockLock, INFINITE);
ASSERT(res == WAIT_OBJECT_0);
- if (m_condition.m_waitingForRemoval != 0) { // the m_gate is already closed
- if (m_condition.m_blocked == 0) {
- res = ::ReleaseMutex(m_condition.m_mutex);
+ if (m_waitersToUnblock) { // the gate is already closed
+ if (!m_waitersBlocked) { // no-op
+ res = ReleaseMutex(m_unblockLock);
ASSERT(res);
return;
}
- ++m_condition.m_waitingForRemoval;
- --m_condition.m_blocked;
-
- signals = 1;
- } else {
- res = ::WaitForSingleObject(m_condition.m_gate, INFINITE);
+ if (unblockAll) {
+ signalsToIssue = m_waitersBlocked;
+ m_waitersToUnblock += m_waitersBlocked;
+ m_waitersBlocked = 0;
+ } else {
+ signalsToIssue = 1;
+ ++m_waitersToUnblock;
+ --m_waitersBlocked;
+ }
+ } else if (m_waitersBlocked > m_waitersGone) {
+ res = WaitForSingleObject(m_blockLock, INFINITE); // Close the gate.
ASSERT(res == WAIT_OBJECT_0);
- if (m_condition.m_blocked > m_condition.m_timedOut) {
- if (m_condition.m_timedOut != 0) {
- m_condition.m_blocked -= m_condition.m_timedOut;
- m_condition.m_timedOut = 0;
- }
- signals = m_condition.m_waitingForRemoval = 1;
- --m_condition.m_blocked;
+ if (m_waitersGone != 0) {
+ m_waitersBlocked -= m_waitersGone;
+ m_waitersGone = 0;
+ }
+ if (unblockAll) {
+ signalsToIssue = m_waitersBlocked;
+ m_waitersToUnblock = m_waitersBlocked;
+ m_waitersBlocked = 0;
} else {
- res = ::ReleaseSemaphore(m_condition.m_gate, 1, 0);
- ASSERT(res);
+ signalsToIssue = 1;
+ m_waitersToUnblock = 1;
+ --m_waitersBlocked;
}
+ } else { // No-op.
+ res = ReleaseMutex(m_unblockLock);
+ ASSERT(res);
+ return;
}
- res =::ReleaseMutex(m_condition.m_mutex);
+ res = ReleaseMutex(m_unblockLock);
ASSERT(res);
- if (signals) {
- res = ::ReleaseSemaphore(m_condition.m_queue, signals, 0);
+ if (signalsToIssue) {
+ res = ReleaseSemaphore(m_blockQueue, signalsToIssue, 0);
ASSERT(res);
}
}
-void ThreadCondition::broadcast()
+static const long MaxSemaphoreCount = static_cast<long>(~0UL >> 1);
+
+ThreadCondition::ThreadCondition()
{
- unsigned signals = 0;
+ m_condition.m_waitersGone = 0;
+ m_condition.m_waitersBlocked = 0;
+ m_condition.m_waitersToUnblock = 0;
+ m_condition.m_blockLock = CreateSemaphore(0, 1, 1, 0);
+ m_condition.m_blockQueue = CreateSemaphore(0, 0, MaxSemaphoreCount, 0);
+ m_condition.m_unblockLock = CreateMutex(0, 0, 0);
+
+ if (!m_condition.m_blockLock || !m_condition.m_blockQueue || !m_condition.m_unblockLock) {
+ if (m_condition.m_blockLock)
+ CloseHandle(m_condition.m_blockLock);
+ if (m_condition.m_blockQueue)
+ CloseHandle(m_condition.m_blockQueue);
+ if (m_condition.m_unblockLock)
+ CloseHandle(m_condition.m_unblockLock);
+ }
+}
- DWORD res = ::WaitForSingleObject(m_condition.m_mutex, INFINITE);
- ASSERT(res == WAIT_OBJECT_0);
+ThreadCondition::~ThreadCondition()
+{
+ CloseHandle(m_condition.m_blockLock);
+ CloseHandle(m_condition.m_blockQueue);
+ CloseHandle(m_condition.m_unblockLock);
+}
- if (m_condition.m_waitingForRemoval != 0) { // the m_gate is already closed
- if (m_condition.m_blocked == 0) {
- res = ::ReleaseMutex(m_condition.m_mutex);
- ASSERT(res);
- return;
- }
+void ThreadCondition::wait(Mutex& mutex)
+{
+ m_condition.timedWait(mutex.impl(), INFINITE);
+}
- m_condition.m_waitingForRemoval += (signals = m_condition.m_blocked);
- m_condition.m_blocked = 0;
- } else {
- res = ::WaitForSingleObject(m_condition.m_gate, INFINITE);
- ASSERT(res == WAIT_OBJECT_0);
- if (m_condition.m_blocked > m_condition.m_timedOut) {
- if (m_condition.m_timedOut != 0) {
- m_condition.m_blocked -= m_condition.m_timedOut;
- m_condition.m_timedOut = 0;
- }
- signals = m_condition.m_waitingForRemoval = m_condition.m_blocked;
- m_condition.m_blocked = 0;
- } else {
- res = ::ReleaseSemaphore(m_condition.m_gate, 1, 0);
- ASSERT(res);
- }
- }
+bool ThreadCondition::timedWait(Mutex& mutex, double absoluteTime)
+{
+ double currentTime = WTF::currentTime();
- res = ::ReleaseMutex(m_condition.m_mutex);
- ASSERT(res);
+ // Time is in the past - return immediately.
+ if (absoluteTime < currentTime)
+ return false;
- if (signals) {
- res = ::ReleaseSemaphore(m_condition.m_queue, signals, 0);
- ASSERT(res);
+ // Time is too far in the future (and would overflow unsigned long) - wait forever.
+ if (absoluteTime - currentTime > static_cast<double>(INT_MAX) / 1000.0) {
+ wait(mutex);
+ return true;
}
+
+ double intervalMilliseconds = (absoluteTime - currentTime) * 1000.0;
+ return m_condition.timedWait(mutex.impl(), static_cast<unsigned long>(intervalMilliseconds));
+}
+
+void ThreadCondition::signal()
+{
+ m_condition.signal(false); // Unblock only 1 thread.
+}
+
+void ThreadCondition::broadcast()
+{
+ m_condition.signal(true); // Unblock all threads.
}
} // namespace WTF
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.cpp
new file mode 100644
index 0000000..36fc6c6
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.cpp
@@ -0,0 +1,120 @@
+ /*
+ * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+#include "TypeTraits.h"
+
+#include "Assertions.h"
+
+namespace WTF {
+
+COMPILE_ASSERT(IsInteger<bool>::value, WTF_IsInteger_bool_true);
+COMPILE_ASSERT(IsInteger<char>::value, WTF_IsInteger_char_true);
+COMPILE_ASSERT(IsInteger<signed char>::value, WTF_IsInteger_signed_char_true);
+COMPILE_ASSERT(IsInteger<unsigned char>::value, WTF_IsInteger_unsigned_char_true);
+COMPILE_ASSERT(IsInteger<short>::value, WTF_IsInteger_short_true);
+COMPILE_ASSERT(IsInteger<unsigned short>::value, WTF_IsInteger_unsigned_short_true);
+COMPILE_ASSERT(IsInteger<int>::value, WTF_IsInteger_int_true);
+COMPILE_ASSERT(IsInteger<unsigned int>::value, WTF_IsInteger_unsigned_int_true);
+COMPILE_ASSERT(IsInteger<long>::value, WTF_IsInteger_long_true);
+COMPILE_ASSERT(IsInteger<unsigned long>::value, WTF_IsInteger_unsigned_long_true);
+COMPILE_ASSERT(IsInteger<long long>::value, WTF_IsInteger_long_long_true);
+COMPILE_ASSERT(IsInteger<unsigned long long>::value, WTF_IsInteger_unsigned_long_long_true);
+#if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
+COMPILE_ASSERT(IsInteger<wchar_t>::value, WTF_IsInteger_wchar_t_true);
+#endif
+COMPILE_ASSERT(!IsInteger<char*>::value, WTF_IsInteger_char_pointer_false);
+COMPILE_ASSERT(!IsInteger<const char*>::value, WTF_IsInteger_const_char_pointer_false);
+COMPILE_ASSERT(!IsInteger<volatile char*>::value, WTF_IsInteger_volatile_char_pointer_false);
+COMPILE_ASSERT(!IsInteger<double>::value, WTF_IsInteger_double_false);
+COMPILE_ASSERT(!IsInteger<float>::value, WTF_IsInteger_float_false);
+
+COMPILE_ASSERT(IsPod<bool>::value, WTF_IsPod_bool_true);
+COMPILE_ASSERT(IsPod<char>::value, WTF_IsPod_char_true);
+COMPILE_ASSERT(IsPod<signed char>::value, WTF_IsPod_signed_char_true);
+COMPILE_ASSERT(IsPod<unsigned char>::value, WTF_IsPod_unsigned_char_true);
+COMPILE_ASSERT(IsPod<short>::value, WTF_IsPod_short_true);
+COMPILE_ASSERT(IsPod<unsigned short>::value, WTF_IsPod_unsigned_short_true);
+COMPILE_ASSERT(IsPod<int>::value, WTF_IsPod_int_true);
+COMPILE_ASSERT(IsPod<unsigned int>::value, WTF_IsPod_unsigned_int_true);
+COMPILE_ASSERT(IsPod<long>::value, WTF_IsPod_long_true);
+COMPILE_ASSERT(IsPod<unsigned long>::value, WTF_IsPod_unsigned_long_true);
+COMPILE_ASSERT(IsPod<long long>::value, WTF_IsPod_long_long_true);
+COMPILE_ASSERT(IsPod<unsigned long long>::value, WTF_IsPod_unsigned_long_long_true);
+#if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
+COMPILE_ASSERT(IsPod<wchar_t>::value, WTF_IsPod_wchar_t_true);
+#endif
+COMPILE_ASSERT(IsPod<char*>::value, WTF_IsPod_char_pointer_true);
+COMPILE_ASSERT(IsPod<const char*>::value, WTF_IsPod_const_char_pointer_true);
+COMPILE_ASSERT(IsPod<volatile char*>::value, WTF_IsPod_volatile_char_pointer_true);
+COMPILE_ASSERT(IsPod<double>::value, WTF_IsPod_double_true);
+COMPILE_ASSERT(IsPod<long double>::value, WTF_IsPod_long_double_true);
+COMPILE_ASSERT(IsPod<float>::value, WTF_IsPod_float_true);
+COMPILE_ASSERT(!IsPod<IsPod<bool> >::value, WTF_IsPod_struct_false);
+
+enum IsConvertibleToIntegerCheck { };
+COMPILE_ASSERT(IsConvertibleToInteger<IsConvertibleToIntegerCheck>::value, WTF_IsConvertibleToInteger_enum_true);
+COMPILE_ASSERT(IsConvertibleToInteger<bool>::value, WTF_IsConvertibleToInteger_bool_true);
+COMPILE_ASSERT(IsConvertibleToInteger<char>::value, WTF_IsConvertibleToInteger_char_true);
+COMPILE_ASSERT(IsConvertibleToInteger<signed char>::value, WTF_IsConvertibleToInteger_signed_char_true);
+COMPILE_ASSERT(IsConvertibleToInteger<unsigned char>::value, WTF_IsConvertibleToInteger_unsigned_char_true);
+COMPILE_ASSERT(IsConvertibleToInteger<short>::value, WTF_IsConvertibleToInteger_short_true);
+COMPILE_ASSERT(IsConvertibleToInteger<unsigned short>::value, WTF_IsConvertibleToInteger_unsigned_short_true);
+COMPILE_ASSERT(IsConvertibleToInteger<int>::value, WTF_IsConvertibleToInteger_int_true);
+COMPILE_ASSERT(IsConvertibleToInteger<unsigned int>::value, WTF_IsConvertibleToInteger_unsigned_int_true);
+COMPILE_ASSERT(IsConvertibleToInteger<long>::value, WTF_IsConvertibleToInteger_long_true);
+COMPILE_ASSERT(IsConvertibleToInteger<unsigned long>::value, WTF_IsConvertibleToInteger_unsigned_long_true);
+COMPILE_ASSERT(IsConvertibleToInteger<long long>::value, WTF_IsConvertibleToInteger_long_long_true);
+COMPILE_ASSERT(IsConvertibleToInteger<unsigned long long>::value, WTF_IsConvertibleToInteger_unsigned_long_long_true);
+#if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
+COMPILE_ASSERT(IsConvertibleToInteger<wchar_t>::value, WTF_IsConvertibleToInteger_wchar_t_true);
+#endif
+COMPILE_ASSERT(IsConvertibleToInteger<double>::value, WTF_IsConvertibleToInteger_double_true);
+COMPILE_ASSERT(IsConvertibleToInteger<long double>::value, WTF_IsConvertibleToInteger_long_double_true);
+COMPILE_ASSERT(IsConvertibleToInteger<float>::value, WTF_IsConvertibleToInteger_float_true);
+COMPILE_ASSERT(!IsConvertibleToInteger<char*>::value, WTF_IsConvertibleToInteger_char_pointer_false);
+COMPILE_ASSERT(!IsConvertibleToInteger<const char*>::value, WTF_IsConvertibleToInteger_const_char_pointer_false);
+COMPILE_ASSERT(!IsConvertibleToInteger<volatile char*>::value, WTF_IsConvertibleToInteger_volatile_char_pointer_false);
+COMPILE_ASSERT(!IsConvertibleToInteger<IsConvertibleToInteger<bool> >::value, WTF_IsConvertibleToInteger_struct_false);
+
+COMPILE_ASSERT((IsSameType<bool, bool>::value), WTF_IsSameType_bool_true);
+COMPILE_ASSERT((IsSameType<int*, int*>::value), WTF_IsSameType_int_pointer_true);
+COMPILE_ASSERT((!IsSameType<int, int*>::value), WTF_IsSameType_int_int_pointer_false);
+COMPILE_ASSERT((!IsSameType<bool, const bool>::value), WTF_IsSameType_const_change_false);
+COMPILE_ASSERT((!IsSameType<bool, volatile bool>::value), WTF_IsSameType_volatile_change_false);
+
+COMPILE_ASSERT((IsSameType<bool, RemoveConst<const bool>::Type>::value), WTF_test_RemoveConst_const_bool);
+COMPILE_ASSERT((!IsSameType<bool, RemoveConst<volatile bool>::Type>::value), WTF_test_RemoveConst_volatile_bool);
+
+COMPILE_ASSERT((IsSameType<bool, RemoveVolatile<bool>::Type>::value), WTF_test_RemoveVolatile_bool);
+COMPILE_ASSERT((!IsSameType<bool, RemoveVolatile<const bool>::Type>::value), WTF_test_RemoveVolatile_const_bool);
+COMPILE_ASSERT((IsSameType<bool, RemoveVolatile<volatile bool>::Type>::value), WTF_test_RemoveVolatile_volatile_bool);
+
+COMPILE_ASSERT((IsSameType<bool, RemoveConstVolatile<bool>::Type>::value), WTF_test_RemoveConstVolatile_bool);
+COMPILE_ASSERT((IsSameType<bool, RemoveConstVolatile<const bool>::Type>::value), WTF_test_RemoveConstVolatile_const_bool);
+COMPILE_ASSERT((IsSameType<bool, RemoveConstVolatile<volatile bool>::Type>::value), WTF_test_RemoveConstVolatile_volatile_bool);
+COMPILE_ASSERT((IsSameType<bool, RemoveConstVolatile<const volatile bool>::Type>::value), WTF_test_RemoveConstVolatile_const_volatile_bool);
+
+COMPILE_ASSERT((IsSameType<int, RemovePointer<int>::Type>::value), WTF_Test_RemovePointer_int);
+COMPILE_ASSERT((IsSameType<int, RemovePointer<int*>::Type>::value), WTF_Test_RemovePointer_int_pointer);
+COMPILE_ASSERT((!IsSameType<int, RemovePointer<int**>::Type>::value), WTF_Test_RemovePointer_int_pointer_pointer);
+
+} // namespace WTF
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.h b/src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.h
new file mode 100644
index 0000000..6ce6a3e
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.h
@@ -0,0 +1,339 @@
+ /*
+ * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TypeTraits_h
+#define TypeTraits_h
+
+#include "Platform.h"
+
+#if (defined(__GLIBCXX__) && (__GLIBCXX__ >= 20070724) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && (_MSC_VER >= 1600))
+#include <type_traits>
+#endif
+
+namespace WTF {
+
+ // The following are provided in this file:
+ //
+ // IsInteger<T>::value
+ // IsPod<T>::value, see the definition for a note about its limitations
+ // IsConvertibleToInteger<T>::value
+ //
+ // IsSameType<T, U>::value
+ //
+ // RemovePointer<T>::Type
+ // RemoveConst<T>::Type
+ // RemoveVolatile<T>::Type
+ // RemoveConstVolatile<T>::Type
+ //
+ // COMPILE_ASSERT's in TypeTraits.cpp illustrate their usage and what they do.
+
+ template<typename T> struct IsInteger { static const bool value = false; };
+ template<> struct IsInteger<bool> { static const bool value = true; };
+ template<> struct IsInteger<char> { static const bool value = true; };
+ template<> struct IsInteger<signed char> { static const bool value = true; };
+ template<> struct IsInteger<unsigned char> { static const bool value = true; };
+ template<> struct IsInteger<short> { static const bool value = true; };
+ template<> struct IsInteger<unsigned short> { static const bool value = true; };
+ template<> struct IsInteger<int> { static const bool value = true; };
+ template<> struct IsInteger<unsigned int> { static const bool value = true; };
+ template<> struct IsInteger<long> { static const bool value = true; };
+ template<> struct IsInteger<unsigned long> { static const bool value = true; };
+ template<> struct IsInteger<long long> { static const bool value = true; };
+ template<> struct IsInteger<unsigned long long> { static const bool value = true; };
+#if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
+ template<> struct IsInteger<wchar_t> { static const bool value = true; };
+#endif
+
+ // IsPod is misnamed as it doesn't cover all plain old data (pod) types.
+ // Specifically, it doesn't allow for enums or for structs.
+ template <typename T> struct IsPod { static const bool value = IsInteger<T>::value; };
+ template <> struct IsPod<float> { static const bool value = true; };
+ template <> struct IsPod<double> { static const bool value = true; };
+ template <> struct IsPod<long double> { static const bool value = true; };
+ template <typename P> struct IsPod<P*> { static const bool value = true; };
+
+ template<typename T> class IsConvertibleToInteger {
+ // Avoid "possible loss of data" warning when using Microsoft's C++ compiler
+ // by not converting int's to doubles.
+ template<bool performCheck, typename U> class IsConvertibleToDouble;
+ template<typename U> class IsConvertibleToDouble<false, U> {
+ public:
+ static const bool value = false;
+ };
+
+ template<typename U> class IsConvertibleToDouble<true, U> {
+ typedef char YesType;
+ struct NoType {
+ char padding[8];
+ };
+
+ static YesType floatCheck(long double);
+ static NoType floatCheck(...);
+ static T& t;
+ public:
+ static const bool value = sizeof(floatCheck(t)) == sizeof(YesType);
+ };
+
+ public:
+ static const bool value = IsInteger<T>::value || IsConvertibleToDouble<!IsInteger<T>::value, T>::value;
+ };
+
+ template <typename T, typename U> struct IsSameType {
+ static const bool value = false;
+ };
+
+ template <typename T> struct IsSameType<T, T> {
+ static const bool value = true;
+ };
+
+ template <typename T> struct RemoveConst {
+ typedef T Type;
+ };
+
+ template <typename T> struct RemoveConst<const T> {
+ typedef T Type;
+ };
+
+ template <typename T> struct RemoveVolatile {
+ typedef T Type;
+ };
+
+ template <typename T> struct RemoveVolatile<volatile T> {
+ typedef T Type;
+ };
+
+ template <typename T> struct RemoveConstVolatile {
+ typedef typename RemoveVolatile<typename RemoveConst<T>::Type>::Type Type;
+ };
+
+ template <typename T> struct RemovePointer {
+ typedef T Type;
+ };
+
+ template <typename T> struct RemovePointer<T*> {
+ typedef T Type;
+ };
+
+#if (defined(__GLIBCXX__) && (__GLIBCXX__ >= 20070724) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && (_MSC_VER >= 1600))
+
+ // GCC's libstdc++ 20070724 and later supports C++ TR1 type_traits in the std namespace.
+ // VC10 (VS2010) and later support C++ TR1 type_traits in the std::tr1 namespace.
+ template<typename T> struct HasTrivialConstructor : public std::tr1::has_trivial_constructor<T> { };
+ template<typename T> struct HasTrivialDestructor : public std::tr1::has_trivial_destructor<T> { };
+
+#else
+
+ // This compiler doesn't provide type traits, so we provide basic HasTrivialConstructor
+ // and HasTrivialDestructor definitions. The definitions here include most built-in
+ // scalar types but do not include POD structs and classes. For the intended purposes of
+ // type_traits this results correct but potentially less efficient code.
+ template <typename T, T v>
+ struct IntegralConstant {
+ static const T value = v;
+ typedef T value_type;
+ typedef IntegralConstant<T, v> type;
+ };
+
+ typedef IntegralConstant<bool, true> true_type;
+ typedef IntegralConstant<bool, false> false_type;
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ // VC8 (VS2005) and later have built-in compiler support for HasTrivialConstructor / HasTrivialDestructor,
+ // but for some unexplained reason it doesn't work on built-in types.
+ template <typename T> struct HasTrivialConstructor : public IntegralConstant<bool, __has_trivial_constructor(T)>{ };
+ template <typename T> struct HasTrivialDestructor : public IntegralConstant<bool, __has_trivial_destructor(T)>{ };
+#else
+ template <typename T> struct HasTrivialConstructor : public false_type{ };
+ template <typename T> struct HasTrivialDestructor : public false_type{ };
+#endif
+
+ template <typename T> struct HasTrivialConstructor<T*> : public true_type{ };
+ template <typename T> struct HasTrivialDestructor<T*> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<float> : public true_type{ };
+ template <> struct HasTrivialConstructor<const float> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile float> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile float> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<double> : public true_type{ };
+ template <> struct HasTrivialConstructor<const double> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile double> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile double> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<long double> : public true_type{ };
+ template <> struct HasTrivialConstructor<const long double> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile long double> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile long double> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<unsigned char> : public true_type{ };
+ template <> struct HasTrivialConstructor<const unsigned char> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile unsigned char> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile unsigned char> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<unsigned short> : public true_type{ };
+ template <> struct HasTrivialConstructor<const unsigned short> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile unsigned short> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile unsigned short> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<unsigned int> : public true_type{ };
+ template <> struct HasTrivialConstructor<const unsigned int> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile unsigned int> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile unsigned int> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<unsigned long> : public true_type{ };
+ template <> struct HasTrivialConstructor<const unsigned long> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile unsigned long> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile unsigned long> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<unsigned long long> : public true_type{ };
+ template <> struct HasTrivialConstructor<const unsigned long long> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile unsigned long long> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile unsigned long long> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<signed char> : public true_type{ };
+ template <> struct HasTrivialConstructor<const signed char> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile signed char> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile signed char> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<signed short> : public true_type{ };
+ template <> struct HasTrivialConstructor<const signed short> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile signed short> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile signed short> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<signed int> : public true_type{ };
+ template <> struct HasTrivialConstructor<const signed int> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile signed int> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile signed int> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<signed long> : public true_type{ };
+ template <> struct HasTrivialConstructor<const signed long> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile signed long> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile signed long> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<signed long long> : public true_type{ };
+ template <> struct HasTrivialConstructor<const signed long long> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile signed long long> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile signed long long> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<bool> : public true_type{ };
+ template <> struct HasTrivialConstructor<const bool> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile bool> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile bool> : public true_type{ };
+
+ template <> struct HasTrivialConstructor<char> : public true_type{ };
+ template <> struct HasTrivialConstructor<const char> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile char> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile char> : public true_type{ };
+
+ #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+ template <> struct HasTrivialConstructor<wchar_t> : public true_type{ };
+ template <> struct HasTrivialConstructor<const wchar_t> : public true_type{ };
+ template <> struct HasTrivialConstructor<volatile wchar_t> : public true_type{ };
+ template <> struct HasTrivialConstructor<const volatile wchar_t> : public true_type{ };
+ #endif
+
+ template <> struct HasTrivialDestructor<float> : public true_type{ };
+ template <> struct HasTrivialDestructor<const float> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile float> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile float> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<double> : public true_type{ };
+ template <> struct HasTrivialDestructor<const double> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile double> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile double> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<long double> : public true_type{ };
+ template <> struct HasTrivialDestructor<const long double> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile long double> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile long double> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<unsigned char> : public true_type{ };
+ template <> struct HasTrivialDestructor<const unsigned char> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile unsigned char> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile unsigned char> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<unsigned short> : public true_type{ };
+ template <> struct HasTrivialDestructor<const unsigned short> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile unsigned short> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile unsigned short> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<unsigned int> : public true_type{ };
+ template <> struct HasTrivialDestructor<const unsigned int> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile unsigned int> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile unsigned int> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<unsigned long> : public true_type{ };
+ template <> struct HasTrivialDestructor<const unsigned long> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile unsigned long> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile unsigned long> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<unsigned long long> : public true_type{ };
+ template <> struct HasTrivialDestructor<const unsigned long long> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile unsigned long long> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile unsigned long long> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<signed char> : public true_type{ };
+ template <> struct HasTrivialDestructor<const signed char> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile signed char> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile signed char> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<signed short> : public true_type{ };
+ template <> struct HasTrivialDestructor<const signed short> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile signed short> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile signed short> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<signed int> : public true_type{ };
+ template <> struct HasTrivialDestructor<const signed int> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile signed int> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile signed int> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<signed long> : public true_type{ };
+ template <> struct HasTrivialDestructor<const signed long> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile signed long> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile signed long> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<signed long long> : public true_type{ };
+ template <> struct HasTrivialDestructor<const signed long long> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile signed long long> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile signed long long> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<bool> : public true_type{ };
+ template <> struct HasTrivialDestructor<const bool> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile bool> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile bool> : public true_type{ };
+
+ template <> struct HasTrivialDestructor<char> : public true_type{ };
+ template <> struct HasTrivialDestructor<const char> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile char> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile char> : public true_type{ };
+
+ #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+ template <> struct HasTrivialDestructor<wchar_t> : public true_type{ };
+ template <> struct HasTrivialDestructor<const wchar_t> : public true_type{ };
+ template <> struct HasTrivialDestructor<volatile wchar_t> : public true_type{ };
+ template <> struct HasTrivialDestructor<const volatile wchar_t> : public true_type{ };
+ #endif
+
+#endif // __GLIBCXX__, etc.
+
+} // namespace WTF
+
+#endif // TypeTraits_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/VMTags.h b/src/3rdparty/webkit/JavaScriptCore/wtf/VMTags.h
new file mode 100644
index 0000000..519f518
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/VMTags.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef VMTags_h
+#define VMTags_h
+
+#include <wtf/Platform.h>
+
+// On Mac OS X, the VM subsystem allows tagging memory requested from mmap and vm_map
+// in order to aid tools that inspect system memory use.
+#if PLATFORM(DARWIN) && !defined(BUILDING_ON_TIGER)
+
+#include <mach/vm_statistics.h>
+
+#if defined(VM_MEMORY_JAVASCRIPT_CORE) && defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
+#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_CORE)
+#define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE)
+#define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
+#else
+#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(63)
+#define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY VM_MAKE_TAG(64)
+#define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(65)
+#endif // defined(VM_MEMORY_JAVASCRIPT_CORE) && defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
+
+#else // PLATFORM(DARWIN) && !defined(BUILDING_ON_TIGER)
+
+#define VM_TAG_FOR_COLLECTOR_MEMORY -1
+#define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY -1
+#define VM_TAG_FOR_REGISTERFILE_MEMORY -1
+
+#endif // PLATFORM(DARWIN) && !defined(BUILDING_ON_TIGER)
+
+#endif // VMTags_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h
index 880b45d..dcfeb29 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h
@@ -377,7 +377,8 @@ namespace WTF {
VectorBuffer(size_t capacity)
: Base(inlineBuffer(), inlineCapacity)
{
- allocateBuffer(capacity);
+ if (capacity > inlineCapacity)
+ Base::allocateBuffer(capacity);
}
~VectorBuffer()
@@ -389,6 +390,10 @@ namespace WTF {
{
if (newCapacity > inlineCapacity)
Base::allocateBuffer(newCapacity);
+ else {
+ m_buffer = inlineBuffer();
+ m_capacity = inlineCapacity;
+ }
}
void deallocateBuffer(T* bufferToDeallocate)
@@ -503,6 +508,7 @@ namespace WTF {
void grow(size_t size);
void resize(size_t size);
void reserveCapacity(size_t newCapacity);
+ void reserveInitialCapacity(size_t initialCapacity);
void shrinkCapacity(size_t newCapacity);
void shrinkToFit() { shrinkCapacity(size()); }
@@ -686,7 +692,7 @@ namespace WTF {
}
template<typename T, size_t inlineCapacity>
- void Vector<T, inlineCapacity>::resize(size_t size)
+ inline void Vector<T, inlineCapacity>::resize(size_t size)
{
if (size <= m_size)
TypeOperations::destruct(begin() + size, end());
@@ -733,6 +739,15 @@ namespace WTF {
}
template<typename T, size_t inlineCapacity>
+ inline void Vector<T, inlineCapacity>::reserveInitialCapacity(size_t initialCapacity)
+ {
+ ASSERT(!m_size);
+ ASSERT(capacity() == inlineCapacity);
+ if (initialCapacity > inlineCapacity)
+ m_buffer.allocateBuffer(initialCapacity);
+ }
+
+ template<typename T, size_t inlineCapacity>
void Vector<T, inlineCapacity>::shrinkCapacity(size_t newCapacity)
{
if (newCapacity >= capacity())
@@ -766,6 +781,8 @@ namespace WTF {
if (!begin())
return;
}
+ if (newSize < m_size)
+ CRASH();
T* dest = end();
for (size_t i = 0; i < dataSize; ++i)
new (&dest[i]) T(data[i]);
@@ -773,7 +790,7 @@ namespace WTF {
}
template<typename T, size_t inlineCapacity> template<typename U>
- inline void Vector<T, inlineCapacity>::append(const U& val)
+ ALWAYS_INLINE void Vector<T, inlineCapacity>::append(const U& val)
{
const U* ptr = &val;
if (size() == capacity()) {
@@ -827,6 +844,8 @@ namespace WTF {
if (!begin())
return;
}
+ if (newSize < m_size)
+ CRASH();
T* spot = begin() + position;
TypeOperations::moveOverlapping(spot, end(), spot + dataSize);
for (size_t i = 0; i < dataSize; ++i)
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/VectorTraits.h b/src/3rdparty/webkit/JavaScriptCore/wtf/VectorTraits.h
index 6efe36c..7974b9a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/VectorTraits.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/VectorTraits.h
@@ -22,6 +22,7 @@
#define WTF_VectorTraits_h
#include "RefPtr.h"
+#include "TypeTraits.h"
#include <utility>
#include <memory>
@@ -29,24 +30,6 @@ using std::pair;
namespace WTF {
- template <typename T> struct IsPod { static const bool value = false; };
- template <> struct IsPod<bool> { static const bool value = true; };
- template <> struct IsPod<char> { static const bool value = true; };
- template <> struct IsPod<signed char> { static const bool value = true; };
- template <> struct IsPod<unsigned char> { static const bool value = true; };
- template <> struct IsPod<short> { static const bool value = true; };
- template <> struct IsPod<unsigned short> { static const bool value = true; };
- template <> struct IsPod<int> { static const bool value = true; };
- template <> struct IsPod<unsigned int> { static const bool value = true; };
- template <> struct IsPod<long> { static const bool value = true; };
- template <> struct IsPod<unsigned long> { static const bool value = true; };
- template <> struct IsPod<long long> { static const bool value = true; };
- template <> struct IsPod<unsigned long long> { static const bool value = true; };
- template <> struct IsPod<float> { static const bool value = true; };
- template <> struct IsPod<double> { static const bool value = true; };
- template <> struct IsPod<long double> { static const bool value = true; };
- template <typename P> struct IsPod<P *> { static const bool value = true; };
-
template<bool isPod, typename T>
class VectorTraitsBase;
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.cpp
index adbb115..9509388 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.cpp
@@ -150,6 +150,8 @@
#include <wtf/FastMalloc.h>
#include <wtf/Threading.h>
+#include <stdio.h>
+
#if COMPILER(MSVC)
#pragma warning(disable: 4244)
#pragma warning(disable: 4245)
@@ -189,13 +191,13 @@ typedef union { double d; uint32_t L[2]; } U;
#endif
#else
#ifdef IEEE_8087
-#define word0(x) ((U*)&x)->L[1]
-#define word1(x) ((U*)&x)->L[0]
+#define word0(x) (x)->L[1]
+#define word1(x) (x)->L[0]
#else
-#define word0(x) ((U*)&x)->L[0]
-#define word1(x) ((U*)&x)->L[1]
+#define word0(x) (x)->L[0]
+#define word1(x) (x)->L[1]
#endif
-#define dval(x) ((U*)&x)->d
+#define dval(x) (x)->d
#endif
/* The following definition of Storeinc is appropriate for MIPS processors.
@@ -275,32 +277,29 @@ typedef union { double d; uint32_t L[2]; } U;
#define Kmax 15
-struct Bigint {
- struct Bigint* next;
- int k, maxwds, sign, wds;
- uint32_t x[1];
-};
-
-static Bigint* Balloc(int k)
-{
- int x = 1 << k;
- Bigint* rv = (Bigint*)fastMalloc(sizeof(Bigint) + (x - 1)*sizeof(uint32_t));
- rv->k = k;
- rv->maxwds = x;
- rv->next = 0;
- rv->sign = rv->wds = 0;
-
- return rv;
-}
-
-static void Bfree(Bigint* v)
-{
- fastFree(v);
-}
+struct BigInt {
+ BigInt() : sign(0), wds(0) { }
+ BigInt(const BigInt& other) : sign(other.sign), wds(other.wds)
+ {
+ for (int i = 0; i < 64; ++i)
+ x[i] = other.x[i];
+ }
-#define Bcopy(x, y) memcpy((char*)&x->sign, (char*)&y->sign, y->wds * sizeof(int32_t) + 2 * sizeof(int))
+ BigInt& operator=(const BigInt& other)
+ {
+ sign = other.sign;
+ wds = other.wds;
+ for (int i = 0; i < 64; ++i)
+ x[i] = other.x[i];
+ return *this;
+ }
+
+ int sign;
+ int wds;
+ uint32_t x[64];
+};
-static Bigint* multadd(Bigint* b, int m, int a) /* multiply by m and add a */
+static void multadd(BigInt& b, int m, int a) /* multiply by m and add a */
{
#ifdef USE_LONG_LONG
unsigned long long carry;
@@ -308,8 +307,8 @@ static Bigint* multadd(Bigint* b, int m, int a) /* multiply by m and add a */
uint32_t carry;
#endif
- int wds = b->wds;
- uint32_t* x = b->x;
+ int wds = b.wds;
+ uint32_t* x = b.x;
int i = 0;
carry = a;
do {
@@ -333,19 +332,12 @@ static Bigint* multadd(Bigint* b, int m, int a) /* multiply by m and add a */
} while (++i < wds);
if (carry) {
- if (wds >= b->maxwds) {
- Bigint* b1 = Balloc(b->k + 1);
- Bcopy(b1, b);
- Bfree(b);
- b = b1;
- }
- b->x[wds++] = (uint32_t)carry;
- b->wds = wds;
+ b.x[wds++] = (uint32_t)carry;
+ b.wds = wds;
}
- return b;
}
-static Bigint* s2b(const char* s, int nd0, int nd, uint32_t y9)
+static void s2b(BigInt& b, const char* s, int nd0, int nd, uint32_t y9)
{
int k;
int32_t y;
@@ -353,27 +345,26 @@ static Bigint* s2b(const char* s, int nd0, int nd, uint32_t y9)
for (k = 0, y = 1; x > y; y <<= 1, k++) { }
#ifdef Pack_32
- Bigint* b = Balloc(k);
- b->x[0] = y9;
- b->wds = 1;
+ b.sign = 0;
+ b.x[0] = y9;
+ b.wds = 1;
#else
- Bigint* b = Balloc(k + 1);
- b->x[0] = y9 & 0xffff;
- b->wds = (b->x[1] = y9 >> 16) ? 2 : 1;
+ b.sign = 0;
+ b.x[0] = y9 & 0xffff;
+ b.wds = (b->x[1] = y9 >> 16) ? 2 : 1;
#endif
int i = 9;
if (9 < nd0) {
s += 9;
do {
- b = multadd(b, 10, *s++ - '0');
+ multadd(b, 10, *s++ - '0');
} while (++i < nd0);
s++;
} else
s += 10;
for (; i < nd; i++)
- b = multadd(b, 10, *s++ - '0');
- return b;
+ multadd(b, 10, *s++ - '0');
}
static int hi0bits(uint32_t x)
@@ -446,21 +437,21 @@ static int lo0bits (uint32_t* y)
return k;
}
-static Bigint* i2b(int i)
+static void i2b(BigInt& b, int i)
{
- Bigint* b;
-
- b = Balloc(1);
- b->x[0] = i;
- b->wds = 1;
- return b;
+ b.sign = 0;
+ b.x[0] = i;
+ b.wds = 1;
}
-static Bigint* mult(Bigint* a, Bigint* b)
+static void mult(BigInt& aRef, const BigInt& bRef)
{
- Bigint* c;
- int k, wa, wb, wc;
- uint32_t *x, *xa, *xae, *xb, *xbe, *xc, *xc0;
+ const BigInt* a = &aRef;
+ const BigInt* b = &bRef;
+ BigInt c;
+ int wa, wb, wc;
+ const uint32_t *x = 0, *xa, *xb, *xae, *xbe;
+ uint32_t *xc, *xc0;
uint32_t y;
#ifdef USE_LONG_LONG
unsigned long long carry, z;
@@ -469,24 +460,22 @@ static Bigint* mult(Bigint* a, Bigint* b)
#endif
if (a->wds < b->wds) {
- c = a;
+ const BigInt* tmp = a;
a = b;
- b = c;
+ b = tmp;
}
- k = a->k;
+
wa = a->wds;
wb = b->wds;
wc = wa + wb;
- if (wc > a->maxwds)
- k++;
- c = Balloc(k);
- for (x = c->x, xa = x + wc; x < xa; x++)
- *x = 0;
+
+ for (xc = c.x, xa = xc + wc; xc < xa; xc++)
+ *xc = 0;
xa = a->x;
xae = xa + wa;
xb = b->x;
xbe = xb + wb;
- xc0 = c->x;
+ xc0 = c.x;
#ifdef USE_LONG_LONG
for (; xb < xbe; xc0++) {
if ((y = *xb++)) {
@@ -548,33 +537,43 @@ static Bigint* mult(Bigint* a, Bigint* b)
}
#endif
#endif
- for (xc0 = c->x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) { }
- c->wds = wc;
- return c;
+ for (xc0 = c.x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) { }
+ c.wds = wc;
+ aRef = c;
}
-static Bigint* p5s;
+struct P5Node {
+ BigInt val;
+ P5Node* next;
+};
+
+static P5Node* p5s;
static int p5s_count;
-static Bigint* pow5mult(Bigint* b, int k)
+static ALWAYS_INLINE void pow5mult(BigInt& b, int k)
{
static int p05[3] = { 5, 25, 125 };
if (int i = k & 3)
- b = multadd(b, p05[i - 1], 0);
+ multadd(b, p05[i - 1], 0);
if (!(k >>= 2))
- return b;
+ return;
#if ENABLE(JSC_MULTIPLE_THREADS)
s_dtoaP5Mutex->lock();
#endif
- Bigint* p5 = p5s;
+ P5Node* p5 = p5s;
+
if (!p5) {
/* first time */
- p5 = p5s = i2b(625);
+ p5 = new P5Node;
+ i2b(p5->val, 625);
+ p5->next = 0;
+ p5s = p5;
p5s_count = 1;
}
+
int p5s_count_local = p5s_count;
#if ENABLE(JSC_MULTIPLE_THREADS)
s_dtoaP5Mutex->unlock();
@@ -582,11 +581,9 @@ static Bigint* pow5mult(Bigint* b, int k)
int p5s_used = 0;
for (;;) {
- if (k & 1) {
- Bigint* b1 = mult(b, p5);
- Bfree(b);
- b = b1;
- }
+ if (k & 1)
+ mult(b, p5->val);
+
if (!(k >>= 1))
break;
@@ -596,7 +593,10 @@ static Bigint* pow5mult(Bigint* b, int k)
#endif
if (p5s_used == p5s_count) {
ASSERT(!p5->next);
- p5->next = mult(p5, p5);
+ p5->next = new P5Node;
+ p5->next->next = 0;
+ p5->next->val = p5->val;
+ mult(p5->next->val, p5->next->val);
++p5s_count;
}
@@ -607,30 +607,21 @@ static Bigint* pow5mult(Bigint* b, int k)
}
p5 = p5->next;
}
-
- return b;
}
-static Bigint* lshift(Bigint* b, int k)
+static ALWAYS_INLINE void lshift(BigInt& b, int k)
{
- Bigint* result = b;
-
#ifdef Pack_32
int n = k >> 5;
#else
int n = k >> 4;
#endif
- int k1 = b->k;
- int n1 = n + b->wds + 1;
- for (int i = b->maxwds; n1 > i; i <<= 1)
- k1++;
- if (b->k < k1)
- result = Balloc(k1);
+ int n1 = n + b.wds + 1;
- const uint32_t* srcStart = b->x;
- uint32_t* dstStart = result->x;
- const uint32_t* src = srcStart + b->wds - 1;
+ const uint32_t* srcStart = b.x;
+ uint32_t* dstStart = b.x;
+ const uint32_t* src = srcStart + b.wds - 1;
uint32_t* dst = dstStart + n1 - 1;
#ifdef Pack_32
if (k &= 0x1f) {
@@ -642,7 +633,7 @@ static Bigint* lshift(Bigint* b, int k)
}
*dst = hiSubword;
ASSERT(dst == dstStart + n);
- result->wds = b->wds + n + (result->x[n1 - 1] != 0);
+ b.wds = b.wds + n + (b.x[n1 - 1] != 0);
}
#else
if (k &= 0xf) {
@@ -661,30 +652,26 @@ static Bigint* lshift(Bigint* b, int k)
do {
*--dst = *src--;
} while (src >= srcStart);
- result->wds = b->wds + n;
+ b.wds = b.wds + n;
}
for (dst = dstStart + n; dst != dstStart; )
*--dst = 0;
-
- if (result != b)
- Bfree(b);
- return result;
}
-static int cmp(Bigint* a, Bigint* b)
+static int cmp(const BigInt& a, const BigInt& b)
{
- uint32_t *xa, *xa0, *xb, *xb0;
+ const uint32_t *xa, *xa0, *xb, *xb0;
int i, j;
- i = a->wds;
- j = b->wds;
- ASSERT(i <= 1 || a->x[i - 1]);
- ASSERT(j <= 1 || b->x[j - 1]);
+ i = a.wds;
+ j = b.wds;
+ ASSERT(i <= 1 || a.x[i - 1]);
+ ASSERT(j <= 1 || b.x[j - 1]);
if (i -= j)
return i;
- xa0 = a->x;
+ xa0 = a.x;
xa = xa0 + j;
- xb0 = b->x;
+ xb0 = b.x;
xb = xb0 + j;
for (;;) {
if (*--xa != *--xb)
@@ -695,35 +682,37 @@ static int cmp(Bigint* a, Bigint* b)
return 0;
}
-static Bigint* diff(Bigint* a, Bigint* b)
+static ALWAYS_INLINE void diff(BigInt& c, const BigInt& aRef, const BigInt& bRef)
{
- Bigint* c;
+ const BigInt* a = &aRef;
+ const BigInt* b = &bRef;
int i, wa, wb;
- uint32_t *xa, *xae, *xb, *xbe, *xc;
+ uint32_t *xc;
- i = cmp(a,b);
+ i = cmp(*a, *b);
if (!i) {
- c = Balloc(0);
- c->wds = 1;
- c->x[0] = 0;
- return c;
+ c.sign = 0;
+ c.wds = 1;
+ c.x[0] = 0;
+ return;
}
if (i < 0) {
- c = a;
+ const BigInt* tmp = a;
a = b;
- b = c;
+ b = tmp;
i = 1;
} else
i = 0;
- c = Balloc(a->k);
- c->sign = i;
+
+ c.wds = 0;
+ c.sign = i;
wa = a->wds;
- xa = a->x;
- xae = xa + wa;
+ const uint32_t* xa = a->x;
+ const uint32_t* xae = xa + wa;
wb = b->wds;
- xb = b->x;
- xbe = xb + wb;
- xc = c->x;
+ const uint32_t* xb = b->x;
+ const uint32_t* xbe = xb + wb;
+ xc = c.x;
#ifdef USE_LONG_LONG
unsigned long long borrow = 0;
do {
@@ -768,14 +757,13 @@ static Bigint* diff(Bigint* a, Bigint* b)
#endif
while (!*--xc)
wa--;
- c->wds = wa;
- return c;
+ c.wds = wa;
}
-static double ulp(double x)
+static double ulp(U *x)
{
register int32_t L;
- double a;
+ U u;
L = (word0(x) & Exp_mask) - (P - 1) * Exp_msk1;
#ifndef Avoid_Underflow
@@ -783,57 +771,57 @@ static double ulp(double x)
if (L > 0) {
#endif
#endif
- word0(a) = L;
- word1(a) = 0;
+ word0(&u) = L;
+ word1(&u) = 0;
#ifndef Avoid_Underflow
#ifndef Sudden_Underflow
} else {
L = -L >> Exp_shift;
if (L < Exp_shift) {
- word0(a) = 0x80000 >> L;
- word1(a) = 0;
+ word0(&u) = 0x80000 >> L;
+ word1(&u) = 0;
} else {
- word0(a) = 0;
+ word0(&u) = 0;
L -= Exp_shift;
- word1(a) = L >= 31 ? 1 : 1 << 31 - L;
+ word1(&u) = L >= 31 ? 1 : 1 << 31 - L;
}
}
#endif
#endif
- return dval(a);
+ return dval(&u);
}
-static double b2d(Bigint* a, int* e)
+static double b2d(const BigInt& a, int* e)
{
- uint32_t* xa;
- uint32_t* xa0;
+ const uint32_t* xa;
+ const uint32_t* xa0;
uint32_t w;
uint32_t y;
uint32_t z;
int k;
- double d;
+ U d;
-#define d0 word0(d)
-#define d1 word1(d)
+#define d0 word0(&d)
+#define d1 word1(&d)
- xa0 = a->x;
- xa = xa0 + a->wds;
+ xa0 = a.x;
+ xa = xa0 + a.wds;
y = *--xa;
ASSERT(y);
k = hi0bits(y);
*e = 32 - k;
#ifdef Pack_32
if (k < Ebits) {
- d0 = Exp_1 | y >> Ebits - k;
+ d0 = Exp_1 | (y >> (Ebits - k));
w = xa > xa0 ? *--xa : 0;
- d1 = y << (32 - Ebits) + k | w >> Ebits - k;
+ d1 = (y << (32 - Ebits + k)) | (w >> (Ebits - k));
goto ret_d;
}
z = xa > xa0 ? *--xa : 0;
if (k -= Ebits) {
- d0 = Exp_1 | y << k | z >> 32 - k;
+ d0 = Exp_1 | (y << k) | (z >> (32 - k));
y = xa > xa0 ? *--xa : 0;
- d1 = z << k | y >> 32 - k;
+ d1 = (z << k) | (y >> (32 - k));
} else {
d0 = Exp_1 | y;
d1 = z;
@@ -857,12 +845,11 @@ static double b2d(Bigint* a, int* e)
ret_d:
#undef d0
#undef d1
- return dval(d);
+ return dval(&d);
}
-static Bigint* d2b(double d, int* e, int* bits)
+static ALWAYS_INLINE void d2b(BigInt& b, U* d, int* e, int* bits)
{
- Bigint* b;
int de, k;
uint32_t *x, y, z;
#ifndef Sudden_Underflow
@@ -871,12 +858,13 @@ static Bigint* d2b(double d, int* e, int* bits)
#define d0 word0(d)
#define d1 word1(d)
+ b.sign = 0;
#ifdef Pack_32
- b = Balloc(1);
+ b.wds = 1;
#else
- b = Balloc(2);
+ b.wds = 2;
#endif
- x = b->x;
+ x = b.x;
z = d0 & Frac_mask;
d0 &= 0x7fffffff; /* clear sign bit, which we ignore */
@@ -889,21 +877,21 @@ static Bigint* d2b(double d, int* e, int* bits)
#ifdef Pack_32
if ((y = d1)) {
if ((k = lo0bits(&y))) {
- x[0] = y | z << 32 - k;
+ x[0] = y | (z << (32 - k));
z >>= k;
} else
x[0] = y;
#ifndef Sudden_Underflow
i =
#endif
- b->wds = (x[1] = z) ? 2 : 1;
+ b.wds = (x[1] = z) ? 2 : 1;
} else {
k = lo0bits(&z);
x[0] = z;
#ifndef Sudden_Underflow
i =
#endif
- b->wds = 1;
+ b.wds = 1;
k += 32;
}
#else
@@ -958,30 +946,29 @@ static Bigint* d2b(double d, int* e, int* bits)
#endif
}
#endif
- return b;
}
#undef d0
#undef d1
-static double ratio(Bigint* a, Bigint* b)
+static double ratio(const BigInt& a, const BigInt& b)
{
- double da, db;
+ U da, db;
int k, ka, kb;
- dval(da) = b2d(a, &ka);
- dval(db) = b2d(b, &kb);
+ dval(&da) = b2d(a, &ka);
+ dval(&db) = b2d(b, &kb);
#ifdef Pack_32
- k = ka - kb + 32 * (a->wds - b->wds);
+ k = ka - kb + 32 * (a.wds - b.wds);
#else
- k = ka - kb + 16 * (a->wds - b->wds);
+ k = ka - kb + 16 * (a.wds - b.wds);
#endif
if (k > 0)
- word0(da) += k * Exp_msk1;
+ word0(&da) += k * Exp_msk1;
else {
k = -k;
- word0(db) += k * Exp_msk1;
+ word0(&db) += k * Exp_msk1;
}
- return dval(da) / dval(db);
+ return dval(&da) / dval(&db);
}
static const double tens[] = {
@@ -1031,7 +1018,7 @@ static int match(const char** sp, const char* t)
}
#ifndef No_Hex_NaN
-static void hexnan(double* rvp, const char** sp)
+static void hexnan(U* rvp, const char** sp)
{
uint32_t c, x[2];
const char* s;
@@ -1070,8 +1057,8 @@ static void hexnan(double* rvp, const char** sp)
x[1] = (x[1] << 4) | c;
}
if ((x[0] &= 0xfffff) || x[1]) {
- word0(*rvp) = Exp_mask | x[0];
- word1(*rvp) = x[1];
+ word0(rvp) = Exp_mask | x[0];
+ word1(rvp) = x[1];
}
}
#endif /*No_Hex_NaN*/
@@ -1085,16 +1072,17 @@ double strtod(const char* s00, char** se)
int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dsign,
e, e1, esign, i, j, k, nd, nd0, nf, nz, nz0, sign;
const char *s, *s0, *s1;
- double aadj, aadj1, adj, rv, rv0;
+ double aadj, aadj1;
+ U aadj2, adj, rv, rv0;
int32_t L;
uint32_t y, z;
- Bigint *bb = NULL, *bb1 = NULL, *bd = NULL, *bd0 = NULL, *bs = NULL, *delta = NULL;
+ BigInt bb, bb1, bd, bd0, bs, delta;
#ifdef SET_INEXACT
int inexact, oldinexact;
#endif
sign = nz0 = nz = 0;
- dval(rv) = 0.;
+ dval(&rv) = 0;
for (s = s00; ; s++)
switch (*s) {
case '-':
@@ -1209,16 +1197,16 @@ dig_done:
--s;
if (!match(&s,"inity"))
++s;
- word0(rv) = 0x7ff00000;
- word1(rv) = 0;
+ word0(&rv) = 0x7ff00000;
+ word1(&rv) = 0;
goto ret;
}
break;
case 'n':
case 'N':
if (match(&s, "an")) {
- word0(rv) = NAN_WORD0;
- word1(rv) = NAN_WORD1;
+ word0(&rv) = NAN_WORD0;
+ word1(&rv) = NAN_WORD1;
#ifndef No_Hex_NaN
if (*s == '(') /*)*/
hexnan(&rv, &s);
@@ -1243,21 +1231,20 @@ ret0:
if (!nd0)
nd0 = nd;
k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1;
- dval(rv) = y;
+ dval(&rv) = y;
if (k > 9) {
#ifdef SET_INEXACT
if (k > DBL_DIG)
oldinexact = get_inexact();
#endif
- dval(rv) = tens[k - 9] * dval(rv) + z;
+ dval(&rv) = tens[k - 9] * dval(&rv) + z;
}
- bd0 = 0;
if (nd <= DBL_DIG && Flt_Rounds == 1) {
if (!e)
goto ret;
if (e > 0) {
if (e <= Ten_pmax) {
- /* rv = */ rounded_product(dval(rv), tens[e]);
+ /* rv = */ rounded_product(dval(&rv), tens[e]);
goto ret;
}
i = DBL_DIG - nd;
@@ -1266,14 +1253,14 @@ ret0:
* this for larger i values.
*/
e -= i;
- dval(rv) *= tens[i];
- /* rv = */ rounded_product(dval(rv), tens[e]);
+ dval(&rv) *= tens[i];
+ /* rv = */ rounded_product(dval(&rv), tens[e]);
goto ret;
}
}
#ifndef Inaccurate_Divide
else if (e >= -Ten_pmax) {
- /* rv = */ rounded_quotient(dval(rv), tens[-e]);
+ /* rv = */ rounded_quotient(dval(&rv), tens[-e]);
goto ret;
}
#endif
@@ -1293,7 +1280,7 @@ ret0:
if (e1 > 0) {
if ((i = e1 & 15))
- dval(rv) *= tens[i];
+ dval(&rv) *= tens[i];
if (e1 &= ~15) {
if (e1 > DBL_MAX_10_EXP) {
ovfl:
@@ -1301,38 +1288,36 @@ ovfl:
errno = ERANGE;
#endif
/* Can't trust HUGE_VAL */
- word0(rv) = Exp_mask;
- word1(rv) = 0;
+ word0(&rv) = Exp_mask;
+ word1(&rv) = 0;
#ifdef SET_INEXACT
/* set overflow bit */
- dval(rv0) = 1e300;
- dval(rv0) *= dval(rv0);
+ dval(&rv0) = 1e300;
+ dval(&rv0) *= dval(&rv0);
#endif
- if (bd0)
- goto retfree;
goto ret;
}
e1 >>= 4;
for (j = 0; e1 > 1; j++, e1 >>= 1)
if (e1 & 1)
- dval(rv) *= bigtens[j];
+ dval(&rv) *= bigtens[j];
/* The last multiplication could overflow. */
- word0(rv) -= P * Exp_msk1;
- dval(rv) *= bigtens[j];
- if ((z = word0(rv) & Exp_mask) > Exp_msk1 * (DBL_MAX_EXP + Bias - P))
+ word0(&rv) -= P * Exp_msk1;
+ dval(&rv) *= bigtens[j];
+ if ((z = word0(&rv) & Exp_mask) > Exp_msk1 * (DBL_MAX_EXP + Bias - P))
goto ovfl;
if (z > Exp_msk1 * (DBL_MAX_EXP + Bias - 1 - P)) {
/* set to largest number */
/* (Can't trust DBL_MAX) */
- word0(rv) = Big0;
- word1(rv) = Big1;
+ word0(&rv) = Big0;
+ word1(&rv) = Big1;
} else
- word0(rv) += P * Exp_msk1;
+ word0(&rv) += P * Exp_msk1;
}
} else if (e1 < 0) {
e1 = -e1;
if ((i = e1 & 15))
- dval(rv) /= tens[i];
+ dval(&rv) /= tens[i];
if (e1 >>= 4) {
if (e1 >= 1 << n_bigtens)
goto undfl;
@@ -1341,42 +1326,40 @@ ovfl:
scale = 2 * P;
for (j = 0; e1 > 0; j++, e1 >>= 1)
if (e1 & 1)
- dval(rv) *= tinytens[j];
- if (scale && (j = (2 * P) + 1 - ((word0(rv) & Exp_mask) >> Exp_shift)) > 0) {
+ dval(&rv) *= tinytens[j];
+ if (scale && (j = (2 * P) + 1 - ((word0(&rv) & Exp_mask) >> Exp_shift)) > 0) {
/* scaled rv is denormal; zap j low bits */
if (j >= 32) {
- word1(rv) = 0;
+ word1(&rv) = 0;
if (j >= 53)
- word0(rv) = (P + 2) * Exp_msk1;
+ word0(&rv) = (P + 2) * Exp_msk1;
else
- word0(rv) &= 0xffffffff << j - 32;
+ word0(&rv) &= 0xffffffff << (j - 32);
} else
- word1(rv) &= 0xffffffff << j;
+ word1(&rv) &= 0xffffffff << j;
}
#else
for (j = 0; e1 > 1; j++, e1 >>= 1)
if (e1 & 1)
- dval(rv) *= tinytens[j];
+ dval(&rv) *= tinytens[j];
/* The last multiplication could underflow. */
- dval(rv0) = dval(rv);
- dval(rv) *= tinytens[j];
- if (!dval(rv)) {
- dval(rv) = 2. * dval(rv0);
- dval(rv) *= tinytens[j];
+ dval(&rv0) = dval(&rv);
+ dval(&rv) *= tinytens[j];
+ if (!dval(&rv)) {
+ dval(&rv) = 2. * dval(&rv0);
+ dval(&rv) *= tinytens[j];
#endif
- if (!dval(rv)) {
+ if (!dval(&rv)) {
undfl:
- dval(rv) = 0.;
+ dval(&rv) = 0.;
#ifndef NO_ERRNO
errno = ERANGE;
#endif
- if (bd0)
- goto retfree;
goto ret;
}
#ifndef Avoid_Underflow
- word0(rv) = Tiny0;
- word1(rv) = Tiny1;
+ word0(&rv) = Tiny0;
+ word1(&rv) = Tiny1;
/* The refinement below will clean
* this approximation up.
*/
@@ -1389,13 +1372,12 @@ undfl:
/* Put digits into bd: true value = bd * 10^e */
- bd0 = s2b(s0, nd0, nd, y);
+ s2b(bd0, s0, nd0, nd, y);
for (;;) {
- bd = Balloc(bd0->k);
- Bcopy(bd, bd0);
- bb = d2b(dval(rv), &bbe, &bbbits); /* rv = bb * 2^bbe */
- bs = i2b(1);
+ bd = bd0;
+ d2b(bb, &rv, &bbe, &bbbits); /* rv = bb * 2^bbe */
+ i2b(bs, 1);
if (e >= 0) {
bb2 = bb5 = 0;
@@ -1442,33 +1424,31 @@ undfl:
bs2 -= i;
}
if (bb5 > 0) {
- bs = pow5mult(bs, bb5);
- bb1 = mult(bs, bb);
- Bfree(bb);
- bb = bb1;
+ pow5mult(bs, bb5);
+ mult(bb, bs);
}
if (bb2 > 0)
- bb = lshift(bb, bb2);
+ lshift(bb, bb2);
if (bd5 > 0)
- bd = pow5mult(bd, bd5);
+ pow5mult(bd, bd5);
if (bd2 > 0)
- bd = lshift(bd, bd2);
+ lshift(bd, bd2);
if (bs2 > 0)
- bs = lshift(bs, bs2);
- delta = diff(bb, bd);
- dsign = delta->sign;
- delta->sign = 0;
+ lshift(bs, bs2);
+ diff(delta, bb, bd);
+ dsign = delta.sign;
+ delta.sign = 0;
i = cmp(delta, bs);
if (i < 0) {
/* Error is less than half an ulp -- check for
* special case of mantissa a power of two.
*/
- if (dsign || word1(rv) || word0(rv) & Bndry_mask
+ if (dsign || word1(&rv) || word0(&rv) & Bndry_mask
#ifdef Avoid_Underflow
- || (word0(rv) & Exp_mask) <= (2 * P + 1) * Exp_msk1
+ || (word0(&rv) & Exp_mask) <= (2 * P + 1) * Exp_msk1
#else
- || (word0(rv) & Exp_mask) <= Exp_msk1
+ || (word0(&rv) & Exp_mask) <= Exp_msk1
#endif
) {
#ifdef SET_INEXACT
@@ -1477,14 +1457,14 @@ undfl:
#endif
break;
}
- if (!delta->x[0] && delta->wds <= 1) {
+ if (!delta.x[0] && delta.wds <= 1) {
/* exact result */
#ifdef SET_INEXACT
inexact = 0;
#endif
break;
}
- delta = lshift(delta,Log2P);
+ lshift(delta, Log2P);
if (cmp(delta, bs) > 0)
goto drop_down;
break;
@@ -1492,26 +1472,26 @@ undfl:
if (i == 0) {
/* exactly half-way between */
if (dsign) {
- if ((word0(rv) & Bndry_mask1) == Bndry_mask1
- && word1(rv) == (
+ if ((word0(&rv) & Bndry_mask1) == Bndry_mask1
+ && word1(&rv) == (
#ifdef Avoid_Underflow
- (scale && (y = word0(rv) & Exp_mask) <= 2 * P * Exp_msk1)
+ (scale && (y = word0(&rv) & Exp_mask) <= 2 * P * Exp_msk1)
? (0xffffffff & (0xffffffff << (2 * P + 1 - (y >> Exp_shift)))) :
#endif
0xffffffff)) {
/*boundary case -- increment exponent*/
- word0(rv) = (word0(rv) & Exp_mask) + Exp_msk1;
- word1(rv) = 0;
+ word0(&rv) = (word0(&rv) & Exp_mask) + Exp_msk1;
+ word1(&rv) = 0;
#ifdef Avoid_Underflow
dsign = 0;
#endif
break;
}
- } else if (!(word0(rv) & Bndry_mask) && !word1(rv)) {
+ } else if (!(word0(&rv) & Bndry_mask) && !word1(&rv)) {
drop_down:
/* boundary case -- decrement exponent */
#ifdef Sudden_Underflow /*{{*/
- L = word0(rv) & Exp_mask;
+ L = word0(&rv) & Exp_mask;
#ifdef Avoid_Underflow
if (L <= (scale ? (2 * P + 1) * Exp_msk1 : Exp_msk1))
#else
@@ -1522,7 +1502,7 @@ drop_down:
#else /*Sudden_Underflow}{*/
#ifdef Avoid_Underflow
if (scale) {
- L = word0(rv) & Exp_mask;
+ L = word0(&rv) & Exp_mask;
if (L <= (2 * P + 1) * Exp_msk1) {
if (L > (P + 2) * Exp_msk1)
/* round even ==> */
@@ -1533,20 +1513,20 @@ drop_down:
}
}
#endif /*Avoid_Underflow*/
- L = (word0(rv) & Exp_mask) - Exp_msk1;
+ L = (word0(&rv) & Exp_mask) - Exp_msk1;
#endif /*Sudden_Underflow}}*/
- word0(rv) = L | Bndry_mask1;
- word1(rv) = 0xffffffff;
+ word0(&rv) = L | Bndry_mask1;
+ word1(&rv) = 0xffffffff;
break;
}
- if (!(word1(rv) & LSB))
+ if (!(word1(&rv) & LSB))
break;
if (dsign)
- dval(rv) += ulp(dval(rv));
+ dval(&rv) += ulp(&rv);
else {
- dval(rv) -= ulp(dval(rv));
+ dval(&rv) -= ulp(&rv);
#ifndef Sudden_Underflow
- if (!dval(rv))
+ if (!dval(&rv))
goto undfl;
#endif
}
@@ -1558,9 +1538,9 @@ drop_down:
if ((aadj = ratio(delta, bs)) <= 2.) {
if (dsign)
aadj = aadj1 = 1.;
- else if (word1(rv) || word0(rv) & Bndry_mask) {
+ else if (word1(&rv) || word0(&rv) & Bndry_mask) {
#ifndef Sudden_Underflow
- if (word1(rv) == Tiny1 && !word0(rv))
+ if (word1(&rv) == Tiny1 && !word0(&rv))
goto undfl;
#endif
aadj = 1.;
@@ -1592,23 +1572,23 @@ drop_down:
aadj1 += 0.5;
#endif /*Check_FLT_ROUNDS*/
}
- y = word0(rv) & Exp_mask;
+ y = word0(&rv) & Exp_mask;
/* Check for overflow */
if (y == Exp_msk1 * (DBL_MAX_EXP + Bias - 1)) {
- dval(rv0) = dval(rv);
- word0(rv) -= P * Exp_msk1;
- adj = aadj1 * ulp(dval(rv));
- dval(rv) += adj;
- if ((word0(rv) & Exp_mask) >= Exp_msk1 * (DBL_MAX_EXP + Bias - P)) {
- if (word0(rv0) == Big0 && word1(rv0) == Big1)
+ dval(&rv0) = dval(&rv);
+ word0(&rv) -= P * Exp_msk1;
+ adj.d = aadj1 * ulp(&rv);
+ dval(&rv) += adj.d;
+ if ((word0(&rv) & Exp_mask) >= Exp_msk1 * (DBL_MAX_EXP + Bias - P)) {
+ if (word0(&rv0) == Big0 && word1(&rv0) == Big1)
goto ovfl;
- word0(rv) = Big0;
- word1(rv) = Big1;
+ word0(&rv) = Big0;
+ word1(&rv) = Big1;
goto cont;
} else
- word0(rv) += P * Exp_msk1;
+ word0(&rv) += P * Exp_msk1;
} else {
#ifdef Avoid_Underflow
if (scale && y <= 2 * P * Exp_msk1) {
@@ -1618,30 +1598,32 @@ drop_down:
aadj = z;
aadj1 = dsign ? aadj : -aadj;
}
- word0(aadj1) += (2 * P + 1) * Exp_msk1 - y;
+ dval(&aadj2) = aadj1;
+ word0(&aadj2) += (2 * P + 1) * Exp_msk1 - y;
+ aadj1 = dval(&aadj2);
}
- adj = aadj1 * ulp(dval(rv));
- dval(rv) += adj;
+ adj.d = aadj1 * ulp(&rv);
+ dval(&rv) += adj.d;
#else
#ifdef Sudden_Underflow
- if ((word0(rv) & Exp_mask) <= P * Exp_msk1) {
- dval(rv0) = dval(rv);
- word0(rv) += P * Exp_msk1;
- adj = aadj1 * ulp(dval(rv));
- dval(rv) += adj;
- if ((word0(rv) & Exp_mask) <= P * Exp_msk1)
+ if ((word0(&rv) & Exp_mask) <= P * Exp_msk1) {
+ dval(&rv0) = dval(&rv);
+ word0(&rv) += P * Exp_msk1;
+ adj.d = aadj1 * ulp(&rv);
+ dval(&rv) += adj.d;
+ if ((word0(&rv) & Exp_mask) <= P * Exp_msk1)
{
- if (word0(rv0) == Tiny0 && word1(rv0) == Tiny1)
+ if (word0(&rv0) == Tiny0 && word1(&rv0) == Tiny1)
goto undfl;
- word0(rv) = Tiny0;
- word1(rv) = Tiny1;
+ word0(&rv) = Tiny0;
+ word1(&rv) = Tiny1;
goto cont;
}
else
- word0(rv) -= P * Exp_msk1;
+ word0(&rv) -= P * Exp_msk1;
} else {
- adj = aadj1 * ulp(dval(rv));
- dval(rv) += adj;
+ adj.d = aadj1 * ulp(&rv);
+ dval(&rv) += adj.d;
}
#else /*Sudden_Underflow*/
/* Compute adj so that the IEEE rounding rules will
@@ -1656,12 +1638,12 @@ drop_down:
if (!dsign)
aadj1 = -aadj1;
}
- adj = aadj1 * ulp(dval(rv));
- dval(rv) += adj;
+ adj.d = aadj1 * ulp(&rv);
+ dval(&rv) += adj.d;
#endif /*Sudden_Underflow*/
#endif /*Avoid_Underflow*/
}
- z = word0(rv) & Exp_mask;
+ z = word0(&rv) & Exp_mask;
#ifndef SET_INEXACT
#ifdef Avoid_Underflow
if (!scale)
@@ -1671,7 +1653,7 @@ drop_down:
L = (int32_t)aadj;
aadj -= L;
/* The tolerances below are conservative. */
- if (dsign || word1(rv) || word0(rv) & Bndry_mask) {
+ if (dsign || word1(&rv) || word0(&rv) & Bndry_mask) {
if (aadj < .4999999 || aadj > .5000001)
break;
} else if (aadj < .4999999 / FLT_RADIX)
@@ -1679,53 +1661,44 @@ drop_down:
}
#endif
cont:
- Bfree(bb);
- Bfree(bd);
- Bfree(bs);
- Bfree(delta);
+ ;
}
#ifdef SET_INEXACT
if (inexact) {
if (!oldinexact) {
- word0(rv0) = Exp_1 + (70 << Exp_shift);
- word1(rv0) = 0;
- dval(rv0) += 1.;
+ word0(&rv0) = Exp_1 + (70 << Exp_shift);
+ word1(&rv0) = 0;
+ dval(&rv0) += 1.;
}
} else if (!oldinexact)
clear_inexact();
#endif
#ifdef Avoid_Underflow
if (scale) {
- word0(rv0) = Exp_1 - 2 * P * Exp_msk1;
- word1(rv0) = 0;
- dval(rv) *= dval(rv0);
+ word0(&rv0) = Exp_1 - 2 * P * Exp_msk1;
+ word1(&rv0) = 0;
+ dval(&rv) *= dval(&rv0);
#ifndef NO_ERRNO
/* try to avoid the bug of testing an 8087 register value */
- if (word0(rv) == 0 && word1(rv) == 0)
+ if (word0(&rv) == 0 && word1(&rv) == 0)
errno = ERANGE;
#endif
}
#endif /* Avoid_Underflow */
#ifdef SET_INEXACT
- if (inexact && !(word0(rv) & Exp_mask)) {
+ if (inexact && !(word0(&rv) & Exp_mask)) {
/* set underflow bit */
- dval(rv0) = 1e-300;
- dval(rv0) *= dval(rv0);
+ dval(&rv0) = 1e-300;
+ dval(&rv0) *= dval(&rv0);
}
#endif
-retfree:
- Bfree(bb);
- Bfree(bd);
- Bfree(bs);
- Bfree(bd0);
- Bfree(delta);
ret:
if (se)
- *se = (char*)s;
- return sign ? -dval(rv) : dval(rv);
+ *se = const_cast<char*>(s);
+ return sign ? -dval(&rv) : dval(&rv);
}
-static int quorem(Bigint* b, Bigint* S)
+static ALWAYS_INLINE int quorem(BigInt& b, BigInt& S)
{
int n;
uint32_t *bx, *bxe, q, *sx, *sxe;
@@ -1738,13 +1711,13 @@ static int quorem(Bigint* b, Bigint* S)
#endif
#endif
- n = S->wds;
- ASSERT_WITH_MESSAGE(b->wds <= n, "oversize b in quorem");
- if (b->wds < n)
+ n = S.wds;
+ ASSERT_WITH_MESSAGE(b.wds <= n, "oversize b in quorem");
+ if (b.wds < n)
return 0;
- sx = S->x;
+ sx = S.x;
sxe = sx + --n;
- bx = b->x;
+ bx = b.x;
bxe = bx + n;
q = *bxe / (*sxe + 1); /* ensure q <= true quotient */
ASSERT_WITH_MESSAGE(q <= 9, "oversized quotient in quorem");
@@ -1779,18 +1752,18 @@ static int quorem(Bigint* b, Bigint* S)
#endif
} while (sx <= sxe);
if (!*bxe) {
- bx = b->x;
+ bx = b.x;
while (--bxe > bx && !*bxe)
--n;
- b->wds = n;
+ b.wds = n;
}
}
if (cmp(b, S) >= 0) {
q++;
borrow = 0;
carry = 0;
- bx = b->x;
- sx = S->x;
+ bx = b.x;
+ sx = S.x;
do {
#ifdef USE_LONG_LONG
ys = *sx++ + carry;
@@ -1818,68 +1791,17 @@ static int quorem(Bigint* b, Bigint* S)
#endif
#endif
} while (sx <= sxe);
- bx = b->x;
+ bx = b.x;
bxe = bx + n;
if (!*bxe) {
while (--bxe > bx && !*bxe)
--n;
- b->wds = n;
+ b.wds = n;
}
}
return q;
}
-#if !ENABLE(JSC_MULTIPLE_THREADS)
-static char* dtoa_result;
-#endif
-
-static char* rv_alloc(int i)
-{
- int k;
-
- int j = sizeof(uint32_t);
- for (k = 0;
- sizeof(Bigint) - sizeof(uint32_t) - sizeof(int) + j <= (unsigned)i;
- j <<= 1)
- k++;
- int* r = (int*)Balloc(k);
- *r = k;
- return
-#if !ENABLE(JSC_MULTIPLE_THREADS)
- dtoa_result =
-#endif
- (char*)(r + 1);
-}
-
-static char* nrv_alloc(const char* s, char** rve, int n)
-{
- char* rv = rv_alloc(n);
- char* t = rv;
-
- while ((*t = *s++))
- t++;
- if (rve)
- *rve = t;
- return rv;
-}
-
-/* freedtoa(s) must be used to free values s returned by dtoa
- * when MULTIPLE_THREADS is #defined. It should be used in all cases,
- * but for consistency with earlier versions of dtoa, it is optional
- * when MULTIPLE_THREADS is not defined.
- */
-
-void freedtoa(char* s)
-{
- Bigint* b = (Bigint*)((int*)s - 1);
- b->maxwds = 1 << (b->k = *(int*)b);
- Bfree(b);
-#if !ENABLE(JSC_MULTIPLE_THREADS)
- if (s == dtoa_result)
- dtoa_result = 0;
-#endif
-}
-
/* dtoa for IEEE arithmetic (dmg): convert double to ASCII string.
*
* Inspired by "How to Print Floating-Point Numbers Accurately" by
@@ -1914,7 +1836,7 @@ void freedtoa(char* s)
* calculation.
*/
-char* dtoa(double d, int ndigits, int* decpt, int* sign, char** rve)
+void dtoa(char* result, double dd, int ndigits, int* decpt, int* sign, char** rve)
{
/*
Arguments ndigits, decpt, sign are similar to those
@@ -1933,38 +1855,37 @@ char* dtoa(double d, int ndigits, int* decpt, int* sign, char** rve)
int denorm;
uint32_t x;
#endif
- Bigint *b, *b1, *delta, *mlo = NULL, *mhi, *S;
- double d2, ds, eps;
+ BigInt b, b1, delta, mlo, mhi, S;
+ U d2, eps, u;
+ double ds;
char *s, *s0;
#ifdef SET_INEXACT
int inexact, oldinexact;
#endif
-#if !ENABLE(JSC_MULTIPLE_THREADS)
- if (dtoa_result) {
- freedtoa(dtoa_result);
- dtoa_result = 0;
- }
-#endif
-
- if (word0(d) & Sign_bit) {
+ u.d = dd;
+ if (word0(&u) & Sign_bit) {
/* set sign for everything, including 0's and NaNs */
*sign = 1;
- word0(d) &= ~Sign_bit; /* clear sign bit */
+ word0(&u) &= ~Sign_bit; /* clear sign bit */
} else
*sign = 0;
- if ((word0(d) & Exp_mask) == Exp_mask)
+ if ((word0(&u) & Exp_mask) == Exp_mask)
{
/* Infinity or NaN */
*decpt = 9999;
- if (!word1(d) && !(word0(d) & 0xfffff))
- return nrv_alloc("Infinity", rve, 8);
- return nrv_alloc("NaN", rve, 3);
+ if (!word1(&u) && !(word0(&u) & 0xfffff))
+ strcpy(result, "Infinity");
+ else
+ strcpy(result, "NaN");
+ return;
}
- if (!dval(d)) {
+ if (!dval(&u)) {
*decpt = 1;
- return nrv_alloc("0", rve, 1);
+ result[0] = '0';
+ result[1] = '\0';
+ return;
}
#ifdef SET_INEXACT
@@ -1972,15 +1893,15 @@ char* dtoa(double d, int ndigits, int* decpt, int* sign, char** rve)
inexact = 1;
#endif
- b = d2b(dval(d), &be, &bbits);
+ d2b(b, &u, &be, &bbits);
#ifdef Sudden_Underflow
- i = (int)(word0(d) >> Exp_shift1 & (Exp_mask >> Exp_shift1));
+ i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask >> Exp_shift1));
#else
- if ((i = (int)(word0(d) >> Exp_shift1 & (Exp_mask >> Exp_shift1)))) {
+ if ((i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask >> Exp_shift1)))) {
#endif
- dval(d2) = dval(d);
- word0(d2) &= Frac_mask1;
- word0(d2) |= Exp_11;
+ dval(&d2) = dval(&u);
+ word0(&d2) &= Frac_mask1;
+ word0(&d2) |= Exp_11;
/* log(x) ~=~ log(1.5) + (x-1.5)/1.5
* log10(x) = log(x) / log(10)
@@ -2011,21 +1932,21 @@ char* dtoa(double d, int ndigits, int* decpt, int* sign, char** rve)
/* d is denormalized */
i = bbits + be + (Bias + (P - 1) - 1);
- x = i > 32 ? word0(d) << 64 - i | word1(d) >> i - 32
- : word1(d) << 32 - i;
- dval(d2) = x;
- word0(d2) -= 31 * Exp_msk1; /* adjust exponent */
+ x = (i > 32) ? (word0(&u) << (64 - i)) | (word1(&u) >> (i - 32))
+ : word1(&u) << (32 - i);
+ dval(&d2) = x;
+ word0(&d2) -= 31 * Exp_msk1; /* adjust exponent */
i -= (Bias + (P - 1) - 1) + 1;
denorm = 1;
}
#endif
- ds = (dval(d2) - 1.5) * 0.289529654602168 + 0.1760912590558 + (i * 0.301029995663981);
+ ds = (dval(&d2) - 1.5) * 0.289529654602168 + 0.1760912590558 + (i * 0.301029995663981);
k = (int)ds;
if (ds < 0. && ds != k)
k--; /* want k = floor(ds) */
k_check = 1;
if (k >= 0 && k <= Ten_pmax) {
- if (dval(d) < tens[k])
+ if (dval(&u) < tens[k])
k--;
k_check = 0;
}
@@ -2059,14 +1980,14 @@ char* dtoa(double d, int ndigits, int* decpt, int* sign, char** rve)
ilim = ilim1 = -1;
i = 18;
ndigits = 0;
- s = s0 = rv_alloc(i);
+ s = s0 = result;
if (ilim >= 0 && ilim <= Quick_max && try_quick) {
/* Try to get by with floating-point arithmetic. */
i = 0;
- dval(d2) = dval(d);
+ dval(&d2) = dval(&u);
k0 = k;
ilim0 = ilim;
ieps = 2; /* conservative */
@@ -2076,7 +1997,7 @@ char* dtoa(double d, int ndigits, int* decpt, int* sign, char** rve)
if (j & Bletch) {
/* prevent overflows */
j &= Bletch - 1;
- dval(d) /= bigtens[n_bigtens - 1];
+ dval(&u) /= bigtens[n_bigtens - 1];
ieps++;
}
for (; j; j >>= 1, i++) {
@@ -2085,32 +2006,32 @@ char* dtoa(double d, int ndigits, int* decpt, int* sign, char** rve)
ds *= bigtens[i];
}
}
- dval(d) /= ds;
+ dval(&u) /= ds;
} else if ((j1 = -k)) {
- dval(d) *= tens[j1 & 0xf];
+ dval(&u) *= tens[j1 & 0xf];
for (j = j1 >> 4; j; j >>= 1, i++) {
if (j & 1) {
ieps++;
- dval(d) *= bigtens[i];
+ dval(&u) *= bigtens[i];
}
}
}
- if (k_check && dval(d) < 1. && ilim > 0) {
+ if (k_check && dval(&u) < 1. && ilim > 0) {
if (ilim1 <= 0)
goto fast_failed;
ilim = ilim1;
k--;
- dval(d) *= 10.;
+ dval(&u) *= 10.;
ieps++;
}
- dval(eps) = (ieps * dval(d)) + 7.;
- word0(eps) -= (P - 1) * Exp_msk1;
+ dval(&eps) = (ieps * dval(&u)) + 7.;
+ word0(&eps) -= (P - 1) * Exp_msk1;
if (ilim == 0) {
- S = mhi = 0;
- dval(d) -= 5.;
- if (dval(d) > dval(eps))
+ S = mhi = BigInt();
+ dval(&u) -= 5.;
+ if (dval(&u) > dval(&eps))
goto one_digit;
- if (dval(d) < -dval(eps))
+ if (dval(&u) < -dval(&eps))
goto no_digits;
goto fast_failed;
}
@@ -2119,36 +2040,36 @@ char* dtoa(double d, int ndigits, int* decpt, int* sign, char** rve)
/* Use Steele & White method of only
* generating digits needed.
*/
- dval(eps) = (0.5 / tens[ilim - 1]) - dval(eps);
+ dval(&eps) = (0.5 / tens[ilim - 1]) - dval(&eps);
for (i = 0;;) {
- L = (long int)dval(d);
- dval(d) -= L;
+ L = (long int)dval(&u);
+ dval(&u) -= L;
*s++ = '0' + (int)L;
- if (dval(d) < dval(eps))
- goto ret1;
- if (1. - dval(d) < dval(eps))
+ if (dval(&u) < dval(&eps))
+ goto ret;
+ if (1. - dval(&u) < dval(&eps))
goto bump_up;
if (++i >= ilim)
break;
- dval(eps) *= 10.;
- dval(d) *= 10.;
+ dval(&eps) *= 10.;
+ dval(&u) *= 10.;
}
} else {
#endif
/* Generate ilim digits, then fix them up. */
- dval(eps) *= tens[ilim - 1];
- for (i = 1;; i++, dval(d) *= 10.) {
- L = (int32_t)(dval(d));
- if (!(dval(d) -= L))
+ dval(&eps) *= tens[ilim - 1];
+ for (i = 1;; i++, dval(&u) *= 10.) {
+ L = (int32_t)(dval(&u));
+ if (!(dval(&u) -= L))
ilim = i;
*s++ = '0' + (int)L;
if (i == ilim) {
- if (dval(d) > 0.5 + dval(eps))
+ if (dval(&u) > 0.5 + dval(&eps))
goto bump_up;
- else if (dval(d) < 0.5 - dval(eps)) {
+ else if (dval(&u) < 0.5 - dval(&eps)) {
while (*--s == '0') { }
s++;
- goto ret1;
+ goto ret;
}
break;
}
@@ -2158,7 +2079,7 @@ char* dtoa(double d, int ndigits, int* decpt, int* sign, char** rve)
#endif
fast_failed:
s = s0;
- dval(d) = dval(d2);
+ dval(&u) = dval(&d2);
k = k0;
ilim = ilim0;
}
@@ -2169,31 +2090,31 @@ fast_failed:
/* Yes. */
ds = tens[k];
if (ndigits < 0 && ilim <= 0) {
- S = mhi = 0;
- if (ilim < 0 || dval(d) <= 5 * ds)
+ S = mhi = BigInt();
+ if (ilim < 0 || dval(&u) <= 5 * ds)
goto no_digits;
goto one_digit;
}
- for (i = 1;; i++, dval(d) *= 10.) {
- L = (int32_t)(dval(d) / ds);
- dval(d) -= L * ds;
+ for (i = 1;; i++, dval(&u) *= 10.) {
+ L = (int32_t)(dval(&u) / ds);
+ dval(&u) -= L * ds;
#ifdef Check_FLT_ROUNDS
/* If FLT_ROUNDS == 2, L will usually be high by 1 */
- if (dval(d) < 0) {
+ if (dval(&u) < 0) {
L--;
- dval(d) += ds;
+ dval(&u) += ds;
}
#endif
*s++ = '0' + (int)L;
- if (!dval(d)) {
+ if (!dval(&u)) {
#ifdef SET_INEXACT
inexact = 0;
#endif
break;
}
if (i == ilim) {
- dval(d) += dval(d);
- if (dval(d) > ds || dval(d) == ds && L & 1) {
+ dval(&u) += dval(&u);
+ if (dval(&u) > ds || (dval(&u) == ds && (L & 1))) {
bump_up:
while (*--s == '9')
if (s == s0) {
@@ -2206,12 +2127,12 @@ bump_up:
break;
}
}
- goto ret1;
+ goto ret;
}
m2 = b2;
m5 = b5;
- mhi = mlo = 0;
+ mhi = mlo = BigInt();
if (leftright) {
i =
#ifndef Sudden_Underflow
@@ -2220,7 +2141,7 @@ bump_up:
1 + P - bbits;
b2 += i;
s2 += i;
- mhi = i2b(1);
+ i2b(mhi, 1);
}
if (m2 > 0 && s2 > 0) {
i = m2 < s2 ? m2 : s2;
@@ -2231,26 +2152,24 @@ bump_up:
if (b5 > 0) {
if (leftright) {
if (m5 > 0) {
- mhi = pow5mult(mhi, m5);
- b1 = mult(mhi, b);
- Bfree(b);
- b = b1;
+ pow5mult(mhi, m5);
+ mult(b, mhi);
}
if ((j = b5 - m5))
- b = pow5mult(b, j);
+ pow5mult(b, j);
} else
- b = pow5mult(b, b5);
+ pow5mult(b, b5);
}
- S = i2b(1);
+ i2b(S, 1);
if (s5 > 0)
- S = pow5mult(S, s5);
+ pow5mult(S, s5);
/* Check for special case that d is a normalized power of 2. */
spec_case = 0;
- if (!word1(d) && !(word0(d) & Bndry_mask)
+ if (!word1(&u) && !(word0(&u) & Bndry_mask)
#ifndef Sudden_Underflow
- && word0(d) & (Exp_mask & ~Exp_msk1)
+ && word0(&u) & (Exp_mask & ~Exp_msk1)
#endif
) {
/* The special case */
@@ -2267,10 +2186,10 @@ bump_up:
* can do shifts and ors to compute the numerator for q.
*/
#ifdef Pack_32
- if ((i = ((s5 ? 32 - hi0bits(S->x[S->wds - 1]) : 1) + s2) & 0x1f))
+ if ((i = ((s5 ? 32 - hi0bits(S.x[S.wds - 1]) : 1) + s2) & 0x1f))
i = 32 - i;
#else
- if ((i = ((s5 ? 32 - hi0bits(S->x[S->wds - 1]) : 1) + s2) & 0xf))
+ if ((i = ((s5 ? 32 - hi0bits(S.x[S.wds - 1]) : 1) + s2) & 0xf))
i = 16 - i;
#endif
if (i > 4) {
@@ -2285,22 +2204,22 @@ bump_up:
s2 += i;
}
if (b2 > 0)
- b = lshift(b, b2);
+ lshift(b, b2);
if (s2 > 0)
- S = lshift(S, s2);
+ lshift(S, s2);
if (k_check) {
if (cmp(b,S) < 0) {
k--;
- b = multadd(b, 10, 0); /* we botched the k estimate */
+ multadd(b, 10, 0); /* we botched the k estimate */
if (leftright)
- mhi = multadd(mhi, 10, 0);
+ multadd(mhi, 10, 0);
ilim = ilim1;
}
}
if (leftright) {
if (m2 > 0)
- mhi = lshift(mhi, m2);
+ lshift(mhi, m2);
/* Compute mlo -- check for special case
* that d is a normalized power of 2.
@@ -2308,9 +2227,8 @@ bump_up:
mlo = mhi;
if (spec_case) {
- mhi = Balloc(mhi->k);
- Bcopy(mhi, mlo);
- mhi = lshift(mhi, Log2P);
+ mhi = mlo;
+ lshift(mhi, Log2P);
}
for (i = 1;;i++) {
@@ -2319,10 +2237,9 @@ bump_up:
* that will round to d?
*/
j = cmp(b, mlo);
- delta = diff(S, mhi);
- j1 = delta->sign ? 1 : cmp(b, delta);
- Bfree(delta);
- if (j1 == 0 && !(word1(d) & 1)) {
+ diff(delta, S, mhi);
+ j1 = delta.sign ? 1 : cmp(b, delta);
+ if (j1 == 0 && !(word1(&u) & 1)) {
if (dig == '9')
goto round_9_up;
if (j > 0)
@@ -2334,17 +2251,17 @@ bump_up:
*s++ = dig;
goto ret;
}
- if (j < 0 || j == 0 && !(word1(d) & 1)) {
- if (!b->x[0] && b->wds <= 1) {
+ if (j < 0 || (j == 0 && !(word1(&u) & 1))) {
+ if (!b.x[0] && b.wds <= 1) {
#ifdef SET_INEXACT
inexact = 0;
#endif
goto accept_dig;
}
if (j1 > 0) {
- b = lshift(b, 1);
+ lshift(b, 1);
j1 = cmp(b, S);
- if ((j1 > 0 || j1 == 0 && dig & 1) && dig++ == '9')
+ if ((j1 > 0 || (j1 == 0 && (dig & 1))) && dig++ == '9')
goto round_9_up;
}
accept_dig:
@@ -2363,18 +2280,14 @@ round_9_up:
*s++ = dig;
if (i == ilim)
break;
- b = multadd(b, 10, 0);
- if (mlo == mhi)
- mlo = mhi = multadd(mhi, 10, 0);
- else {
- mlo = multadd(mlo, 10, 0);
- mhi = multadd(mhi, 10, 0);
- }
+ multadd(b, 10, 0);
+ multadd(mlo, 10, 0);
+ multadd(mhi, 10, 0);
}
} else
for (i = 1;; i++) {
*s++ = dig = quorem(b,S) + '0';
- if (!b->x[0] && b->wds <= 1) {
+ if (!b.x[0] && b.wds <= 1) {
#ifdef SET_INEXACT
inexact = 0;
#endif
@@ -2382,14 +2295,14 @@ round_9_up:
}
if (i >= ilim)
break;
- b = multadd(b, 10, 0);
+ multadd(b, 10, 0);
}
/* Round off last digit */
- b = lshift(b, 1);
+ lshift(b, 1);
j = cmp(b, S);
- if (j > 0 || j == 0 && dig & 1) {
+ if (j > 0 || (j == 0 && (dig & 1))) {
roundoff:
while (*--s == '9')
if (s == s0) {
@@ -2411,29 +2324,20 @@ one_digit:
k++;
goto ret;
ret:
- Bfree(S);
- if (mhi) {
- if (mlo && mlo != mhi)
- Bfree(mlo);
- Bfree(mhi);
- }
-ret1:
#ifdef SET_INEXACT
if (inexact) {
if (!oldinexact) {
- word0(d) = Exp_1 + (70 << Exp_shift);
- word1(d) = 0;
- dval(d) += 1.;
+ word0(&u) = Exp_1 + (70 << Exp_shift);
+ word1(&u) = 0;
+ dval(&u) += 1.;
}
} else if (!oldinexact)
clear_inexact();
#endif
- Bfree(b);
*s = 0;
*decpt = k + 1;
if (rve)
*rve = s;
- return s0;
}
} // namespace WTF
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.h b/src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.h
index ed858c0..cbec7c7 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.h
@@ -30,8 +30,7 @@ namespace WTF {
extern WTF::Mutex* s_dtoaP5Mutex;
double strtod(const char* s00, char** se);
- char* dtoa(double d, int ndigits, int* decpt, int* sign, char** rve);
- void freedtoa(char* s);
+ void dtoa(char* result, double d, int ndigits, int* decpt, int* sign, char** rve);
} // namespace WTF
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/qt/MainThreadQt.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/qt/MainThreadQt.cpp
index 1914600..7b2d0f2 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/qt/MainThreadQt.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/qt/MainThreadQt.cpp
@@ -58,12 +58,15 @@ void MainThreadInvoker::dispatch()
Q_GLOBAL_STATIC(MainThreadInvoker, webkit_main_thread_invoker)
+void initializeMainThreadPlatform()
+{
+}
void scheduleDispatchFunctionsOnMainThread()
{
QMetaObject::invokeMethod(webkit_main_thread_invoker(), "dispatch", Qt::QueuedConnection);
}
-}
+} // namespace WTF
#include "MainThreadQt.moc"
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingQt.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/qt/ThreadingQt.cpp
index 1a40d52..1fdd2bb 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingQt.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/qt/ThreadingQt.cpp
@@ -29,6 +29,7 @@
#include "config.h"
#include "Threading.h"
+#include "CurrentTime.h"
#include "HashMap.h"
#include "MainThread.h"
#include "RandomNumberSeed.h"
@@ -161,6 +162,10 @@ ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, con
return establishIdentifierForThread(threadRef);
}
+void setThreadNameInternal(const char*)
+{
+}
+
int waitForThreadCompletion(ThreadIdentifier threadID, void** result)
{
ASSERT(threadID);
@@ -233,15 +238,22 @@ void ThreadCondition::wait(Mutex& mutex)
m_condition->wait(mutex.impl());
}
-bool ThreadCondition::timedWait(Mutex& mutex, double secondsToWait)
+bool ThreadCondition::timedWait(Mutex& mutex, double absoluteTime)
{
- if (secondsToWait < 0.0) {
+ double currentTime = WTF::currentTime();
+
+ // Time is in the past - return immediately.
+ if (absoluteTime < currentTime)
+ return false;
+
+ // Time is too far in the future (and would overflow unsigned long) - wait forever.
+ if (absoluteTime - currentTime > static_cast<double>(INT_MAX) / 1000.0) {
wait(mutex);
return true;
}
- unsigned long millisecondsToWait = static_cast<unsigned long>(secondsToWait * 1000.0);
- return m_condition->wait(mutex.impl(), millisecondsToWait);
+ double intervalMilliseconds = (absoluteTime - currentTime) * 1000.0;
+ return m_condition->wait(mutex.impl(), static_cast<unsigned long>(intervalMilliseconds));
}
void ThreadCondition::signal()
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/Unicode.h b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/Unicode.h
index 5b849e4..f86a9b7 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/Unicode.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/Unicode.h
@@ -28,10 +28,12 @@
#include "qt4/UnicodeQt4.h"
#elif USE(ICU_UNICODE)
#include <wtf/unicode/icu/UnicodeIcu.h>
+#elif USE(GLIB_UNICODE)
+#include <wtf/unicode/glib/UnicodeGLib.h>
#else
#error "Unknown Unicode implementation"
#endif
-COMPILE_ASSERT(sizeof(UChar) == 2, UCharIsTwoBytes)
+COMPILE_ASSERT(sizeof(UChar) == 2, UCharIsTwoBytes);
#endif // WTF_UNICODE_H
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp
new file mode 100644
index 0000000..a779b36
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2008 Jürg Billeter <j@bitron.ch>
+ * Copyright (C) 2008 Dominik Röttsches <dominik.roettsches@access-company.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "UnicodeGLib.h"
+
+namespace WTF {
+namespace Unicode {
+
+UChar32 foldCase(UChar32 ch)
+{
+ GOwnPtr<GError> gerror;
+
+ GOwnPtr<char> utf8char;
+ utf8char.set(g_ucs4_to_utf8(reinterpret_cast<gunichar*>(&ch), 1, 0, 0, &gerror.outPtr()));
+ if (gerror)
+ return ch;
+
+ GOwnPtr<char> utf8caseFolded;
+ utf8caseFolded.set(g_utf8_casefold(utf8char.get(), -1));
+
+ GOwnPtr<gunichar> ucs4Result;
+ ucs4Result.set(g_utf8_to_ucs4_fast(utf8caseFolded.get(), -1, 0));
+
+ return *ucs4Result;
+}
+
+int foldCase(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error)
+{
+ *error = false;
+ GOwnPtr<GError> gerror;
+
+ GOwnPtr<char> utf8src;
+ utf8src.set(g_utf16_to_utf8(src, srcLength, 0, 0, &gerror.outPtr()));
+ if (gerror) {
+ *error = true;
+ return -1;
+ }
+
+ GOwnPtr<char> utf8result;
+ utf8result.set(g_utf8_casefold(utf8src.get(), -1));
+
+ long utf16resultLength = -1;
+ GOwnPtr<UChar> utf16result;
+ utf16result.set(g_utf8_to_utf16(utf8result.get(), -1, 0, &utf16resultLength, &gerror.outPtr()));
+ if (gerror) {
+ *error = true;
+ return -1;
+ }
+
+ if (utf16resultLength > resultLength) {
+ *error = true;
+ return utf16resultLength;
+ }
+ memcpy(result, utf16result.get(), utf16resultLength * sizeof(UChar));
+
+ return utf16resultLength;
+}
+
+int toLower(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error)
+{
+ *error = false;
+ GOwnPtr<GError> gerror;
+
+ GOwnPtr<char> utf8src;
+ utf8src.set(g_utf16_to_utf8(src, srcLength, 0, 0, &gerror.outPtr()));
+ if (gerror) {
+ *error = true;
+ return -1;
+ }
+
+ GOwnPtr<char> utf8result;
+ utf8result.set(g_utf8_strdown(utf8src.get(), -1));
+
+ long utf16resultLength = -1;
+ GOwnPtr<UChar> utf16result;
+ utf16result.set(g_utf8_to_utf16(utf8result.get(), -1, 0, &utf16resultLength, &gerror.outPtr()));
+ if (gerror) {
+ *error = true;
+ return -1;
+ }
+
+ if (utf16resultLength > resultLength) {
+ *error = true;
+ return utf16resultLength;
+ }
+ memcpy(result, utf16result.get(), utf16resultLength * sizeof(UChar));
+
+ return utf16resultLength;
+}
+
+int toUpper(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error)
+{
+ *error = false;
+ GOwnPtr<GError> gerror;
+
+ GOwnPtr<char> utf8src;
+ utf8src.set(g_utf16_to_utf8(src, srcLength, 0, 0, &gerror.outPtr()));
+ if (gerror) {
+ *error = true;
+ return -1;
+ }
+
+ GOwnPtr<char> utf8result;
+ utf8result.set(g_utf8_strup(utf8src.get(), -1));
+
+ long utf16resultLength = -1;
+ GOwnPtr<UChar> utf16result;
+ utf16result.set(g_utf8_to_utf16(utf8result.get(), -1, 0, &utf16resultLength, &gerror.outPtr()));
+ if (gerror) {
+ *error = true;
+ return -1;
+ }
+
+ if (utf16resultLength > resultLength) {
+ *error = true;
+ return utf16resultLength;
+ }
+ memcpy(result, utf16result.get(), utf16resultLength * sizeof(UChar));
+
+ return utf16resultLength;
+}
+
+Direction direction(UChar32 c)
+{
+ PangoBidiType type = pango_bidi_type_for_unichar(c);
+ switch (type) {
+ case PANGO_BIDI_TYPE_L:
+ return LeftToRight;
+ case PANGO_BIDI_TYPE_R:
+ return RightToLeft;
+ case PANGO_BIDI_TYPE_AL:
+ return RightToLeftArabic;
+ case PANGO_BIDI_TYPE_LRE:
+ return LeftToRightEmbedding;
+ case PANGO_BIDI_TYPE_RLE:
+ return RightToLeftEmbedding;
+ case PANGO_BIDI_TYPE_LRO:
+ return LeftToRightOverride;
+ case PANGO_BIDI_TYPE_RLO:
+ return RightToLeftOverride;
+ case PANGO_BIDI_TYPE_PDF:
+ return PopDirectionalFormat;
+ case PANGO_BIDI_TYPE_EN:
+ return EuropeanNumber;
+ case PANGO_BIDI_TYPE_AN:
+ return ArabicNumber;
+ case PANGO_BIDI_TYPE_ES:
+ return EuropeanNumberSeparator;
+ case PANGO_BIDI_TYPE_ET:
+ return EuropeanNumberTerminator;
+ case PANGO_BIDI_TYPE_CS:
+ return CommonNumberSeparator;
+ case PANGO_BIDI_TYPE_NSM:
+ return NonSpacingMark;
+ case PANGO_BIDI_TYPE_BN:
+ return BoundaryNeutral;
+ case PANGO_BIDI_TYPE_B:
+ return BlockSeparator;
+ case PANGO_BIDI_TYPE_S:
+ return SegmentSeparator;
+ case PANGO_BIDI_TYPE_WS:
+ return WhiteSpaceNeutral;
+ default:
+ return OtherNeutral;
+ }
+}
+
+int umemcasecmp(const UChar* a, const UChar* b, int len)
+{
+ GOwnPtr<char> utf8a;
+ GOwnPtr<char> utf8b;
+
+ utf8a.set(g_utf16_to_utf8(a, len, 0, 0, 0));
+ utf8b.set(g_utf16_to_utf8(b, len, 0, 0, 0));
+
+ GOwnPtr<char> foldedA;
+ GOwnPtr<char> foldedB;
+
+ foldedA.set(g_utf8_casefold(utf8a.get(), -1));
+ foldedB.set(g_utf8_casefold(utf8b.get(), -1));
+
+ // FIXME: umemcasecmp needs to mimic u_memcasecmp of icu
+ // from the ICU docs:
+ // "Compare two strings case-insensitively using full case folding.
+ // his is equivalent to u_strcmp(u_strFoldCase(s1, n, options), u_strFoldCase(s2, n, options))."
+ //
+ // So it looks like we don't need the full g_utf8_collate here,
+ // but really a bitwise comparison of casefolded unicode chars (not utf-8 bytes).
+ // As there is no direct equivalent to this icu function in GLib, for now
+ // we'll use g_utf8_collate():
+
+ return g_utf8_collate(foldedA.get(), foldedB.get());
+}
+
+}
+}
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h
new file mode 100644
index 0000000..c03d3ec
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2006 George Staikos <staikos@kde.org>
+ * Copyright (C) 2006 Alexey Proskuryakov <ap@nypop.com>
+ * Copyright (C) 2007 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2008 Jürg Billeter <j@bitron.ch>
+ * Copyright (C) 2008 Dominik Röttsches <dominik.roettsches@access-company.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef UnicodeGLib_h
+#define UnicodeGLib_h
+
+#include "UnicodeMacrosFromICU.h"
+#include <wtf/GOwnPtr.h>
+
+#include <glib.h>
+#include <pango/pango.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+typedef uint16_t UChar;
+typedef int32_t UChar32;
+
+namespace WTF {
+namespace Unicode {
+
+enum Direction {
+ LeftToRight,
+ RightToLeft,
+ EuropeanNumber,
+ EuropeanNumberSeparator,
+ EuropeanNumberTerminator,
+ ArabicNumber,
+ CommonNumberSeparator,
+ BlockSeparator,
+ SegmentSeparator,
+ WhiteSpaceNeutral,
+ OtherNeutral,
+ LeftToRightEmbedding,
+ LeftToRightOverride,
+ RightToLeftArabic,
+ RightToLeftEmbedding,
+ RightToLeftOverride,
+ PopDirectionalFormat,
+ NonSpacingMark,
+ BoundaryNeutral
+};
+
+enum DecompositionType {
+ DecompositionNone,
+ DecompositionCanonical,
+ DecompositionCompat,
+ DecompositionCircle,
+ DecompositionFinal,
+ DecompositionFont,
+ DecompositionFraction,
+ DecompositionInitial,
+ DecompositionIsolated,
+ DecompositionMedial,
+ DecompositionNarrow,
+ DecompositionNoBreak,
+ DecompositionSmall,
+ DecompositionSquare,
+ DecompositionSub,
+ DecompositionSuper,
+ DecompositionVertical,
+ DecompositionWide,
+};
+
+enum CharCategory {
+ NoCategory = 0,
+ Other_NotAssigned = U_MASK(G_UNICODE_UNASSIGNED),
+ Letter_Uppercase = U_MASK(G_UNICODE_UPPERCASE_LETTER),
+ Letter_Lowercase = U_MASK(G_UNICODE_LOWERCASE_LETTER),
+ Letter_Titlecase = U_MASK(G_UNICODE_TITLECASE_LETTER),
+ Letter_Modifier = U_MASK(G_UNICODE_MODIFIER_LETTER),
+ Letter_Other = U_MASK(G_UNICODE_OTHER_LETTER),
+
+ Mark_NonSpacing = U_MASK(G_UNICODE_NON_SPACING_MARK),
+ Mark_Enclosing = U_MASK(G_UNICODE_ENCLOSING_MARK),
+ Mark_SpacingCombining = U_MASK(G_UNICODE_COMBINING_MARK),
+
+ Number_DecimalDigit = U_MASK(G_UNICODE_DECIMAL_NUMBER),
+ Number_Letter = U_MASK(G_UNICODE_LETTER_NUMBER),
+ Number_Other = U_MASK(G_UNICODE_OTHER_NUMBER),
+
+ Separator_Space = U_MASK(G_UNICODE_SPACE_SEPARATOR),
+ Separator_Line = U_MASK(G_UNICODE_LINE_SEPARATOR),
+ Separator_Paragraph = U_MASK(G_UNICODE_PARAGRAPH_SEPARATOR),
+
+ Other_Control = U_MASK(G_UNICODE_CONTROL),
+ Other_Format = U_MASK(G_UNICODE_FORMAT),
+ Other_PrivateUse = U_MASK(G_UNICODE_PRIVATE_USE),
+ Other_Surrogate = U_MASK(G_UNICODE_SURROGATE),
+
+ Punctuation_Dash = U_MASK(G_UNICODE_DASH_PUNCTUATION),
+ Punctuation_Open = U_MASK(G_UNICODE_OPEN_PUNCTUATION),
+ Punctuation_Close = U_MASK(G_UNICODE_CLOSE_PUNCTUATION),
+ Punctuation_Connector = U_MASK(G_UNICODE_CONNECT_PUNCTUATION),
+ Punctuation_Other = U_MASK(G_UNICODE_OTHER_PUNCTUATION),
+
+ Symbol_Math = U_MASK(G_UNICODE_MATH_SYMBOL),
+ Symbol_Currency = U_MASK(G_UNICODE_CURRENCY_SYMBOL),
+ Symbol_Modifier = U_MASK(G_UNICODE_MODIFIER_SYMBOL),
+ Symbol_Other = U_MASK(G_UNICODE_OTHER_SYMBOL),
+
+ Punctuation_InitialQuote = U_MASK(G_UNICODE_INITIAL_PUNCTUATION),
+ Punctuation_FinalQuote = U_MASK(G_UNICODE_FINAL_PUNCTUATION)
+};
+
+UChar32 foldCase(UChar32);
+
+int foldCase(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error);
+
+int toLower(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error);
+
+inline UChar32 toLower(UChar32 c)
+{
+ return g_unichar_tolower(c);
+}
+
+inline UChar32 toUpper(UChar32 c)
+{
+ return g_unichar_toupper(c);
+}
+
+int toUpper(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error);
+
+inline UChar32 toTitleCase(UChar32 c)
+{
+ return g_unichar_totitle(c);
+}
+
+inline bool isArabicChar(UChar32 c)
+{
+ return c >= 0x0600 && c <= 0x06FF;
+}
+
+inline bool isFormatChar(UChar32 c)
+{
+ return g_unichar_type(c) == G_UNICODE_FORMAT;
+}
+
+inline bool isSeparatorSpace(UChar32 c)
+{
+ return g_unichar_type(c) == G_UNICODE_SPACE_SEPARATOR;
+}
+
+inline bool isPrintableChar(UChar32 c)
+{
+ return g_unichar_isprint(c);
+}
+
+inline bool isDigit(UChar32 c)
+{
+ return g_unichar_isdigit(c);
+}
+
+inline bool isPunct(UChar32 c)
+{
+ return g_unichar_ispunct(c);
+}
+
+inline bool hasLineBreakingPropertyComplexContext(UChar32 c)
+{
+ // FIXME
+ return false;
+}
+
+inline bool hasLineBreakingPropertyComplexContextOrIdeographic(UChar32 c)
+{
+ // FIXME
+ return false;
+}
+
+inline UChar32 mirroredChar(UChar32 c)
+{
+ gunichar mirror = 0;
+ g_unichar_get_mirror_char(c, &mirror);
+ return mirror;
+}
+
+inline CharCategory category(UChar32 c)
+{
+ if (c > 0xffff)
+ return NoCategory;
+
+ return (CharCategory) U_MASK(g_unichar_type(c));
+}
+
+Direction direction(UChar32);
+
+inline bool isLower(UChar32 c)
+{
+ return g_unichar_islower(c);
+}
+
+inline int digitValue(UChar32 c)
+{
+ return g_unichar_digit_value(c);
+}
+
+inline uint8_t combiningClass(UChar32 c)
+{
+ // FIXME
+ // return g_unichar_combining_class(c);
+ return 0;
+}
+
+inline DecompositionType decompositionType(UChar32 c)
+{
+ // FIXME
+ return DecompositionNone;
+}
+
+int umemcasecmp(const UChar*, const UChar*, int len);
+
+}
+}
+
+#endif
+
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h
new file mode 100644
index 0000000..5d3eca6
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2006 George Staikos <staikos@kde.org>
+ * Copyright (C) 2006 Alexey Proskuryakov <ap@nypop.com>
+ * Copyright (C) 2007 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2008 Jürg Billeter <j@bitron.ch>
+ * Copyright (C) 2008 Dominik Röttsches <dominik.roettsches@access-company.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef UnicodeMacrosFromICU_h
+#define UnicodeMacrosFromICU_h
+
+// some defines from ICU
+
+#define U16_IS_LEAD(c) (((c)&0xfffffc00)==0xd800)
+#define U16_IS_TRAIL(c) (((c)&0xfffffc00)==0xdc00)
+#define U16_SURROGATE_OFFSET ((0xd800<<10UL)+0xdc00-0x10000)
+#define U16_GET_SUPPLEMENTARY(lead, trail) \
+ (((UChar32)(lead)<<10UL)+(UChar32)(trail)-U16_SURROGATE_OFFSET)
+
+#define U16_LEAD(supplementary) (UChar)(((supplementary)>>10)+0xd7c0)
+#define U16_TRAIL(supplementary) (UChar)(((supplementary)&0x3ff)|0xdc00)
+
+#define U_IS_SURROGATE(c) (((c)&0xfffff800)==0xd800)
+#define U16_IS_SINGLE(c) !U_IS_SURROGATE(c)
+#define U16_IS_SURROGATE(c) U_IS_SURROGATE(c)
+#define U16_IS_SURROGATE_LEAD(c) (((c)&0x400)==0)
+
+#define U16_PREV(s, start, i, c) { \
+ (c)=(s)[--(i)]; \
+ if(U16_IS_TRAIL(c)) { \
+ uint16_t __c2; \
+ if((i)>(start) && U16_IS_LEAD(__c2=(s)[(i)-1])) { \
+ --(i); \
+ (c)=U16_GET_SUPPLEMENTARY(__c2, (c)); \
+ } \
+ } \
+}
+
+#define U16_NEXT(s, i, length, c) { \
+ (c)=(s)[(i)++]; \
+ if(U16_IS_LEAD(c)) { \
+ uint16_t __c2; \
+ if((i)<(length) && U16_IS_TRAIL(__c2=(s)[(i)])) { \
+ ++(i); \
+ (c)=U16_GET_SUPPLEMENTARY((c), __c2); \
+ } \
+ } \
+}
+
+#define U_MASK(x) ((uint32_t)1<<(x))
+
+#endif
+
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h
index 608aea6..35c6fbf 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h
@@ -179,6 +179,17 @@ inline bool isPunct(UChar32 c)
return !!u_ispunct(c);
}
+inline bool hasLineBreakingPropertyComplexContext(UChar32 c)
+{
+ return u_getIntPropertyValue(c, UCHAR_LINE_BREAK) == U_LB_COMPLEX_CONTEXT;
+}
+
+inline bool hasLineBreakingPropertyComplexContextOrIdeographic(UChar32 c)
+{
+ int32_t prop = u_getIntPropertyValue(c, UCHAR_LINE_BREAK);
+ return prop == U_LB_COMPLEX_CONTEXT || prop == U_LB_IDEOGRAPHIC;
+}
+
inline UChar32 mirroredChar(UChar32 c)
{
return u_charMirror(c);
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/qt4/UnicodeQt4.h b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/qt4/UnicodeQt4.h
index d7d78ce..1531694 100644
--- a/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/qt4/UnicodeQt4.h
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/unicode/qt4/UnicodeQt4.h
@@ -92,6 +92,17 @@ typedef uint32_t UChar32;
} \
}
+#define U16_PREV(s, start, i, c) { \
+ (c)=(s)[--(i)]; \
+ if(U16_IS_TRAIL(c)) { \
+ uint16_t __c2; \
+ if((i)>(start) && U16_IS_LEAD(__c2=(s)[(i)-1])) { \
+ --(i); \
+ (c)=U16_GET_SUPPLEMENTARY(__c2, (c)); \
+ } \
+ } \
+}
+
#define U_MASK(x) ((uint32_t)1<<(x))
namespace WTF {
@@ -352,6 +363,12 @@ inline bool isLower(UChar32 c)
return QChar::category(c) == QChar::Letter_Lowercase;
}
+inline bool hasLineBreakingPropertyComplexContext(UChar32)
+{
+ // FIXME: Implement this to return whether the character has line breaking property SA (Complex Context).
+ return false;
+}
+
inline UChar32 mirroredChar(UChar32 c)
{
return QChar::mirroredChar(c);
diff --git a/src/3rdparty/webkit/JavaScriptCore/yarr/RegexCompiler.cpp b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexCompiler.cpp
new file mode 100644
index 0000000..c7b3c81
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexCompiler.cpp
@@ -0,0 +1,728 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "RegexCompiler.h"
+
+#include "RegexInterpreter.h"
+#include "RegexPattern.h"
+#include <wtf/Vector.h>
+
+#if ENABLE(YARR)
+
+using namespace WTF;
+
+namespace JSC { namespace Yarr {
+
+class CharacterClassConstructor {
+public:
+ CharacterClassConstructor(bool isCaseInsensitive = false)
+ : m_isCaseInsensitive(isCaseInsensitive)
+ {
+ }
+
+ void reset()
+ {
+ m_matches.clear();
+ m_ranges.clear();
+ m_matchesUnicode.clear();
+ m_rangesUnicode.clear();
+ }
+
+ void append(const CharacterClass* other)
+ {
+ for (size_t i = 0; i < other->m_matches.size(); ++i)
+ addSorted(m_matches, other->m_matches[i]);
+ for (size_t i = 0; i < other->m_ranges.size(); ++i)
+ addSortedRange(m_ranges, other->m_ranges[i].begin, other->m_ranges[i].end);
+ for (size_t i = 0; i < other->m_matchesUnicode.size(); ++i)
+ addSorted(m_matchesUnicode, other->m_matchesUnicode[i]);
+ for (size_t i = 0; i < other->m_rangesUnicode.size(); ++i)
+ addSortedRange(m_rangesUnicode, other->m_rangesUnicode[i].begin, other->m_rangesUnicode[i].end);
+ }
+
+ void putChar(UChar ch)
+ {
+ if (ch <= 0x7f) {
+ if (m_isCaseInsensitive && isASCIIAlpha(ch)) {
+ addSorted(m_matches, toASCIIUpper(ch));
+ addSorted(m_matches, toASCIILower(ch));
+ } else
+ addSorted(m_matches, ch);
+ } else {
+ UChar upper, lower;
+ if (m_isCaseInsensitive && ((upper = Unicode::toUpper(ch)) != (lower = Unicode::toLower(ch)))) {
+ addSorted(m_matchesUnicode, upper);
+ addSorted(m_matchesUnicode, lower);
+ } else
+ addSorted(m_matchesUnicode, ch);
+ }
+ }
+
+ // returns true if this character has another case, and 'ch' is the upper case form.
+ static inline bool isUnicodeUpper(UChar ch)
+ {
+ return ch != Unicode::toLower(ch);
+ }
+
+ // returns true if this character has another case, and 'ch' is the lower case form.
+ static inline bool isUnicodeLower(UChar ch)
+ {
+ return ch != Unicode::toUpper(ch);
+ }
+
+ void putRange(UChar lo, UChar hi)
+ {
+ if (lo <= 0x7f) {
+ char asciiLo = lo;
+ char asciiHi = std::min(hi, (UChar)0x7f);
+ addSortedRange(m_ranges, lo, asciiHi);
+
+ if (m_isCaseInsensitive) {
+ if ((asciiLo <= 'Z') && (asciiHi >= 'A'))
+ addSortedRange(m_ranges, std::max(asciiLo, 'A')+('a'-'A'), std::min(asciiHi, 'Z')+('a'-'A'));
+ if ((asciiLo <= 'z') && (asciiHi >= 'a'))
+ addSortedRange(m_ranges, std::max(asciiLo, 'a')+('A'-'a'), std::min(asciiHi, 'z')+('A'-'a'));
+ }
+ }
+ if (hi >= 0x80) {
+ uint32_t unicodeCurr = std::max(lo, (UChar)0x80);
+ addSortedRange(m_rangesUnicode, unicodeCurr, hi);
+
+ if (m_isCaseInsensitive) {
+ while (unicodeCurr <= hi) {
+ // If the upper bound of the range (hi) is 0xffff, the increments to
+ // unicodeCurr in this loop may take it to 0x10000. This is fine
+ // (if so we won't re-enter the loop, since the loop condition above
+ // will definitely fail) - but this does mean we cannot use a UChar
+ // to represent unicodeCurr, we must use a 32-bit value instead.
+ ASSERT(unicodeCurr <= 0xffff);
+
+ if (isUnicodeUpper(unicodeCurr)) {
+ UChar lowerCaseRangeBegin = Unicode::toLower(unicodeCurr);
+ UChar lowerCaseRangeEnd = lowerCaseRangeBegin;
+ while ((++unicodeCurr <= hi) && isUnicodeUpper(unicodeCurr) && (Unicode::toLower(unicodeCurr) == (lowerCaseRangeEnd + 1)))
+ lowerCaseRangeEnd++;
+ addSortedRange(m_rangesUnicode, lowerCaseRangeBegin, lowerCaseRangeEnd);
+ } else if (isUnicodeLower(unicodeCurr)) {
+ UChar upperCaseRangeBegin = Unicode::toUpper(unicodeCurr);
+ UChar upperCaseRangeEnd = upperCaseRangeBegin;
+ while ((++unicodeCurr <= hi) && isUnicodeLower(unicodeCurr) && (Unicode::toUpper(unicodeCurr) == (upperCaseRangeEnd + 1)))
+ upperCaseRangeEnd++;
+ addSortedRange(m_rangesUnicode, upperCaseRangeBegin, upperCaseRangeEnd);
+ } else
+ ++unicodeCurr;
+ }
+ }
+ }
+ }
+
+ CharacterClass* charClass()
+ {
+ CharacterClass* characterClass = new CharacterClass();
+
+ characterClass->m_matches.append(m_matches);
+ characterClass->m_ranges.append(m_ranges);
+ characterClass->m_matchesUnicode.append(m_matchesUnicode);
+ characterClass->m_rangesUnicode.append(m_rangesUnicode);
+
+ reset();
+
+ return characterClass;
+ }
+
+private:
+ void addSorted(Vector<UChar>& matches, UChar ch)
+ {
+ unsigned pos = 0;
+ unsigned range = matches.size();
+
+ // binary chop, find position to insert char.
+ while (range) {
+ unsigned index = range >> 1;
+
+ int val = matches[pos+index] - ch;
+ if (!val)
+ return;
+ else if (val > 0)
+ range = index;
+ else {
+ pos += (index+1);
+ range -= (index+1);
+ }
+ }
+
+ if (pos == matches.size())
+ matches.append(ch);
+ else
+ matches.insert(pos, ch);
+ }
+
+ void addSortedRange(Vector<CharacterRange>& ranges, UChar lo, UChar hi)
+ {
+ unsigned end = ranges.size();
+
+ // Simple linear scan - I doubt there are that many ranges anyway...
+ // feel free to fix this with something faster (eg binary chop).
+ for (unsigned i = 0; i < end; ++i) {
+ // does the new range fall before the current position in the array
+ if (hi < ranges[i].begin) {
+ // optional optimization: concatenate appending ranges? - may not be worthwhile.
+ if (hi == (ranges[i].begin - 1)) {
+ ranges[i].begin = lo;
+ return;
+ }
+ ranges.insert(i, CharacterRange(lo, hi));
+ return;
+ }
+ // Okay, since we didn't hit the last case, the end of the new range is definitely at or after the begining
+ // If the new range start at or before the end of the last range, then the overlap (if it starts one after the
+ // end of the last range they concatenate, which is just as good.
+ if (lo <= (ranges[i].end + 1)) {
+ // found an intersect! we'll replace this entry in the array.
+ ranges[i].begin = std::min(ranges[i].begin, lo);
+ ranges[i].end = std::max(ranges[i].end, hi);
+
+ // now check if the new range can subsume any subsequent ranges.
+ unsigned next = i+1;
+ // each iteration of the loop we will either remove something from the list, or break the loop.
+ while (next < ranges.size()) {
+ if (ranges[next].begin <= (ranges[i].end + 1)) {
+ // the next entry now overlaps / concatenates this one.
+ ranges[i].end = std::max(ranges[i].end, ranges[next].end);
+ ranges.remove(next);
+ } else
+ break;
+ }
+
+ return;
+ }
+ }
+
+ // CharacterRange comes after all existing ranges.
+ ranges.append(CharacterRange(lo, hi));
+ }
+
+ bool m_isCaseInsensitive;
+
+ Vector<UChar> m_matches;
+ Vector<CharacterRange> m_ranges;
+ Vector<UChar> m_matchesUnicode;
+ Vector<CharacterRange> m_rangesUnicode;
+};
+
+
+CharacterClass* newlineCreate()
+{
+ CharacterClass* characterClass = new CharacterClass();
+
+ characterClass->m_matches.append('\n');
+ characterClass->m_matches.append('\r');
+ characterClass->m_matchesUnicode.append(0x2028);
+ characterClass->m_matchesUnicode.append(0x2029);
+
+ return characterClass;
+}
+
+CharacterClass* digitsCreate()
+{
+ CharacterClass* characterClass = new CharacterClass();
+
+ characterClass->m_ranges.append(CharacterRange('0', '9'));
+
+ return characterClass;
+}
+
+CharacterClass* spacesCreate()
+{
+ CharacterClass* characterClass = new CharacterClass();
+
+ characterClass->m_matches.append(' ');
+ characterClass->m_ranges.append(CharacterRange('\t', '\r'));
+ characterClass->m_matchesUnicode.append(0x00a0);
+ characterClass->m_matchesUnicode.append(0x1680);
+ characterClass->m_matchesUnicode.append(0x180e);
+ characterClass->m_matchesUnicode.append(0x2028);
+ characterClass->m_matchesUnicode.append(0x2029);
+ characterClass->m_matchesUnicode.append(0x202f);
+ characterClass->m_matchesUnicode.append(0x205f);
+ characterClass->m_matchesUnicode.append(0x3000);
+ characterClass->m_rangesUnicode.append(CharacterRange(0x2000, 0x200a));
+
+ return characterClass;
+}
+
+CharacterClass* wordcharCreate()
+{
+ CharacterClass* characterClass = new CharacterClass();
+
+ characterClass->m_matches.append('_');
+ characterClass->m_ranges.append(CharacterRange('0', '9'));
+ characterClass->m_ranges.append(CharacterRange('A', 'Z'));
+ characterClass->m_ranges.append(CharacterRange('a', 'z'));
+
+ return characterClass;
+}
+
+CharacterClass* nondigitsCreate()
+{
+ CharacterClass* characterClass = new CharacterClass();
+
+ characterClass->m_ranges.append(CharacterRange(0, '0' - 1));
+ characterClass->m_ranges.append(CharacterRange('9' + 1, 0x7f));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x80, 0xffff));
+
+ return characterClass;
+}
+
+CharacterClass* nonspacesCreate()
+{
+ CharacterClass* characterClass = new CharacterClass();
+
+ characterClass->m_ranges.append(CharacterRange(0, '\t' - 1));
+ characterClass->m_ranges.append(CharacterRange('\r' + 1, ' ' - 1));
+ characterClass->m_ranges.append(CharacterRange(' ' + 1, 0x7f));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x0080, 0x009f));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x00a1, 0x167f));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x1681, 0x180d));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x180f, 0x1fff));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x200b, 0x2027));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x202a, 0x202e));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x2030, 0x205e));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x2060, 0x2fff));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x3001, 0xffff));
+
+ return characterClass;
+}
+
+CharacterClass* nonwordcharCreate()
+{
+ CharacterClass* characterClass = new CharacterClass();
+
+ characterClass->m_matches.append('`');
+ characterClass->m_ranges.append(CharacterRange(0, '0' - 1));
+ characterClass->m_ranges.append(CharacterRange('9' + 1, 'A' - 1));
+ characterClass->m_ranges.append(CharacterRange('Z' + 1, '_' - 1));
+ characterClass->m_ranges.append(CharacterRange('z' + 1, 0x7f));
+ characterClass->m_rangesUnicode.append(CharacterRange(0x80, 0xffff));
+
+ return characterClass;
+}
+
+
+class RegexPatternConstructor {
+public:
+ RegexPatternConstructor(RegexPattern& pattern)
+ : m_pattern(pattern)
+ , m_characterClassConstructor(pattern.m_ignoreCase)
+ {
+ }
+
+ ~RegexPatternConstructor()
+ {
+ }
+
+ void reset()
+ {
+ m_pattern.reset();
+ m_characterClassConstructor.reset();
+ }
+
+ void assertionBOL()
+ {
+ m_alternative->m_terms.append(PatternTerm::BOL());
+ }
+ void assertionEOL()
+ {
+ m_alternative->m_terms.append(PatternTerm::EOL());
+ }
+ void assertionWordBoundary(bool invert)
+ {
+ m_alternative->m_terms.append(PatternTerm::WordBoundary(invert));
+ }
+
+ void atomPatternCharacter(UChar ch)
+ {
+ // We handle case-insensitive checking of unicode characters which do have both
+ // cases by handling them as if they were defined using a CharacterClass.
+ if (m_pattern.m_ignoreCase && !isASCII(ch) && (Unicode::toUpper(ch) != Unicode::toLower(ch))) {
+ atomCharacterClassBegin();
+ atomCharacterClassAtom(ch);
+ atomCharacterClassEnd();
+ } else
+ m_alternative->m_terms.append(PatternTerm(ch));
+ }
+
+ void atomBuiltInCharacterClass(BuiltInCharacterClassID classID, bool invert)
+ {
+ switch (classID) {
+ case DigitClassID:
+ m_alternative->m_terms.append(PatternTerm(m_pattern.digitsCharacterClass(), invert));
+ break;
+ case SpaceClassID:
+ m_alternative->m_terms.append(PatternTerm(m_pattern.spacesCharacterClass(), invert));
+ break;
+ case WordClassID:
+ m_alternative->m_terms.append(PatternTerm(m_pattern.wordcharCharacterClass(), invert));
+ break;
+ case NewlineClassID:
+ m_alternative->m_terms.append(PatternTerm(m_pattern.newlineCharacterClass(), invert));
+ break;
+ }
+ }
+
+ void atomCharacterClassBegin(bool invert = false)
+ {
+ m_invertCharacterClass = invert;
+ }
+
+ void atomCharacterClassAtom(UChar ch)
+ {
+ m_characterClassConstructor.putChar(ch);
+ }
+
+ void atomCharacterClassRange(UChar begin, UChar end)
+ {
+ m_characterClassConstructor.putRange(begin, end);
+ }
+
+ void atomCharacterClassBuiltIn(BuiltInCharacterClassID classID, bool invert)
+ {
+ ASSERT(classID != NewlineClassID);
+
+ switch (classID) {
+ case DigitClassID:
+ m_characterClassConstructor.append(invert ? m_pattern.nondigitsCharacterClass() : m_pattern.digitsCharacterClass());
+ break;
+
+ case SpaceClassID:
+ m_characterClassConstructor.append(invert ? m_pattern.nonspacesCharacterClass() : m_pattern.spacesCharacterClass());
+ break;
+
+ case WordClassID:
+ m_characterClassConstructor.append(invert ? m_pattern.nonwordcharCharacterClass() : m_pattern.wordcharCharacterClass());
+ break;
+
+ default:
+ ASSERT_NOT_REACHED();
+ }
+ }
+
+ void atomCharacterClassEnd()
+ {
+ CharacterClass* newCharacterClass = m_characterClassConstructor.charClass();
+ m_pattern.m_userCharacterClasses.append(newCharacterClass);
+ m_alternative->m_terms.append(PatternTerm(newCharacterClass, m_invertCharacterClass));
+ }
+
+ void atomParenthesesSubpatternBegin(bool capture = true)
+ {
+ unsigned subpatternId = m_pattern.m_numSubpatterns + 1;
+ if (capture)
+ m_pattern.m_numSubpatterns++;
+
+ PatternDisjunction* parenthesesDisjunction = new PatternDisjunction(m_alternative);
+ m_pattern.m_disjunctions.append(parenthesesDisjunction);
+ m_alternative->m_terms.append(PatternTerm(PatternTerm::TypeParenthesesSubpattern, subpatternId, parenthesesDisjunction, capture));
+ m_alternative = parenthesesDisjunction->addNewAlternative();
+ }
+
+ void atomParentheticalAssertionBegin(bool invert = false)
+ {
+ PatternDisjunction* parenthesesDisjunction = new PatternDisjunction(m_alternative);
+ m_pattern.m_disjunctions.append(parenthesesDisjunction);
+ m_alternative->m_terms.append(PatternTerm(PatternTerm::TypeParentheticalAssertion, m_pattern.m_numSubpatterns + 1, parenthesesDisjunction, invert));
+ m_alternative = parenthesesDisjunction->addNewAlternative();
+ }
+
+ void atomParenthesesEnd()
+ {
+ ASSERT(m_alternative->m_parent);
+ ASSERT(m_alternative->m_parent->m_parent);
+ m_alternative = m_alternative->m_parent->m_parent;
+
+ m_alternative->lastTerm().parentheses.lastSubpatternId = m_pattern.m_numSubpatterns;
+ }
+
+ void atomBackReference(unsigned subpatternId)
+ {
+ ASSERT(subpatternId);
+ m_pattern.m_maxBackReference = std::max(m_pattern.m_maxBackReference, subpatternId);
+
+ if (subpatternId > m_pattern.m_numSubpatterns) {
+ m_alternative->m_terms.append(PatternTerm::ForwardReference());
+ return;
+ }
+
+ PatternAlternative* currentAlternative = m_alternative;
+ ASSERT(currentAlternative);
+
+ // Note to self: if we waited until the AST was baked, we could also remove forwards refs
+ while ((currentAlternative = currentAlternative->m_parent->m_parent)) {
+ PatternTerm& term = currentAlternative->lastTerm();
+ ASSERT((term.type == PatternTerm::TypeParenthesesSubpattern) || (term.type == PatternTerm::TypeParentheticalAssertion));
+
+ if ((term.type == PatternTerm::TypeParenthesesSubpattern) && term.invertOrCapture && (subpatternId == term.subpatternId)) {
+ m_alternative->m_terms.append(PatternTerm::ForwardReference());
+ return;
+ }
+ }
+
+ m_alternative->m_terms.append(PatternTerm(subpatternId));
+ }
+
+ PatternDisjunction* copyDisjunction(PatternDisjunction* disjunction)
+ {
+ PatternDisjunction* newDisjunction = new PatternDisjunction();
+
+ newDisjunction->m_parent = disjunction->m_parent;
+ for (unsigned alt = 0; alt < disjunction->m_alternatives.size(); ++alt) {
+ PatternAlternative* alternative = disjunction->m_alternatives[alt];
+ PatternAlternative* newAlternative = newDisjunction->addNewAlternative();
+ for (unsigned i = 0; i < alternative->m_terms.size(); ++i)
+ newAlternative->m_terms.append(copyTerm(alternative->m_terms[i]));
+ }
+
+ m_pattern.m_disjunctions.append(newDisjunction);
+ return newDisjunction;
+ }
+
+ PatternTerm copyTerm(PatternTerm& term)
+ {
+ if ((term.type != PatternTerm::TypeParenthesesSubpattern) && (term.type != PatternTerm::TypeParentheticalAssertion))
+ return PatternTerm(term);
+
+ PatternTerm termCopy = term;
+ termCopy.parentheses.disjunction = copyDisjunction(termCopy.parentheses.disjunction);
+ return termCopy;
+ }
+
+ void quantifyAtom(unsigned min, unsigned max, bool greedy)
+ {
+ ASSERT(min <= max);
+ ASSERT(m_alternative->m_terms.size());
+
+ if (!max) {
+ m_alternative->removeLastTerm();
+ return;
+ }
+
+ PatternTerm& term = m_alternative->lastTerm();
+ ASSERT(term.type > PatternTerm::TypeAssertionWordBoundary);
+ ASSERT((term.quantityCount == 1) && (term.quantityType == QuantifierFixedCount));
+
+ // For any assertion with a zero minimum, not matching is valid and has no effect,
+ // remove it. Otherwise, we need to match as least once, but there is no point
+ // matching more than once, so remove the quantifier. It is not entirely clear
+ // from the spec whether or not this behavior is correct, but I believe this
+ // matches Firefox. :-/
+ if (term.type == PatternTerm::TypeParentheticalAssertion) {
+ if (!min)
+ m_alternative->removeLastTerm();
+ return;
+ }
+
+ if (min == 0)
+ term.quantify(max, greedy ? QuantifierGreedy : QuantifierNonGreedy);
+ else if (min == max)
+ term.quantify(min, QuantifierFixedCount);
+ else {
+ term.quantify(min, QuantifierFixedCount);
+ m_alternative->m_terms.append(copyTerm(term));
+ // NOTE: this term is interesting from an analysis perspective, in that it can be ignored.....
+ m_alternative->lastTerm().quantify((max == UINT_MAX) ? max : max - min, greedy ? QuantifierGreedy : QuantifierNonGreedy);
+ if (m_alternative->lastTerm().type == PatternTerm::TypeParenthesesSubpattern)
+ m_alternative->lastTerm().parentheses.isCopy = true;
+ }
+ }
+
+ void disjunction()
+ {
+ m_alternative = m_alternative->m_parent->addNewAlternative();
+ }
+
+ void regexBegin()
+ {
+ m_pattern.m_body = new PatternDisjunction();
+ m_alternative = m_pattern.m_body->addNewAlternative();
+ m_pattern.m_disjunctions.append(m_pattern.m_body);
+ }
+ void regexEnd()
+ {
+ }
+ void regexError()
+ {
+ }
+
+ unsigned setupAlternativeOffsets(PatternAlternative* alternative, unsigned currentCallFrameSize, unsigned initialInputPosition)
+ {
+ alternative->m_hasFixedSize = true;
+ unsigned currentInputPosition = initialInputPosition;
+
+ for (unsigned i = 0; i < alternative->m_terms.size(); ++i) {
+ PatternTerm& term = alternative->m_terms[i];
+
+ switch (term.type) {
+ case PatternTerm::TypeAssertionBOL:
+ case PatternTerm::TypeAssertionEOL:
+ case PatternTerm::TypeAssertionWordBoundary:
+ term.inputPosition = currentInputPosition;
+ break;
+
+ case PatternTerm::TypeBackReference:
+ term.inputPosition = currentInputPosition;
+ term.frameLocation = currentCallFrameSize;
+ currentCallFrameSize += RegexStackSpaceForBackTrackInfoBackReference;
+ alternative->m_hasFixedSize = false;
+ break;
+
+ case PatternTerm::TypeForwardReference:
+ break;
+
+ case PatternTerm::TypePatternCharacter:
+ term.inputPosition = currentInputPosition;
+ if (term.quantityType != QuantifierFixedCount) {
+ term.frameLocation = currentCallFrameSize;
+ currentCallFrameSize += RegexStackSpaceForBackTrackInfoPatternCharacter;
+ alternative->m_hasFixedSize = false;
+ } else
+ currentInputPosition += term.quantityCount;
+ break;
+
+ case PatternTerm::TypeCharacterClass:
+ term.inputPosition = currentInputPosition;
+ if (term.quantityType != QuantifierFixedCount) {
+ term.frameLocation = currentCallFrameSize;
+ currentCallFrameSize += RegexStackSpaceForBackTrackInfoCharacterClass;
+ alternative->m_hasFixedSize = false;
+ } else
+ currentInputPosition += term.quantityCount;
+ break;
+
+ case PatternTerm::TypeParenthesesSubpattern:
+ // Note: for fixed once parentheses we will ensure at least the minimum is available; others are on their own.
+ term.frameLocation = currentCallFrameSize;
+ if ((term.quantityCount == 1) && !term.parentheses.isCopy) {
+ if (term.quantityType == QuantifierFixedCount) {
+ currentCallFrameSize = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize, currentInputPosition);
+ currentInputPosition += term.parentheses.disjunction->m_minimumSize;
+ } else {
+ currentCallFrameSize += RegexStackSpaceForBackTrackInfoParenthesesOnce;
+ currentCallFrameSize = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize, currentInputPosition);
+ }
+ term.inputPosition = currentInputPosition;
+ } else {
+ term.inputPosition = currentInputPosition;
+ setupDisjunctionOffsets(term.parentheses.disjunction, 0, currentInputPosition);
+ currentCallFrameSize += RegexStackSpaceForBackTrackInfoParentheses;
+ }
+ // Fixed count of 1 could be accepted, if they have a fixed size *AND* if all alternatives are of the same length.
+ alternative->m_hasFixedSize = false;
+ break;
+
+ case PatternTerm::TypeParentheticalAssertion:
+ term.inputPosition = currentInputPosition;
+ term.frameLocation = currentCallFrameSize;
+ currentCallFrameSize = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize + RegexStackSpaceForBackTrackInfoParentheticalAssertion, currentInputPosition);
+ break;
+ }
+ }
+
+ alternative->m_minimumSize = currentInputPosition - initialInputPosition;
+ return currentCallFrameSize;
+ }
+
+ unsigned setupDisjunctionOffsets(PatternDisjunction* disjunction, unsigned initialCallFrameSize, unsigned initialInputPosition)
+ {
+ if ((disjunction != m_pattern.m_body) && (disjunction->m_alternatives.size() > 1))
+ initialCallFrameSize += RegexStackSpaceForBackTrackInfoAlternative;
+
+ unsigned minimumInputSize = UINT_MAX;
+ unsigned maximumCallFrameSize = 0;
+ bool hasFixedSize = true;
+
+ for (unsigned alt = 0; alt < disjunction->m_alternatives.size(); ++alt) {
+ PatternAlternative* alternative = disjunction->m_alternatives[alt];
+ unsigned currentAlternativeCallFrameSize = setupAlternativeOffsets(alternative, initialCallFrameSize, initialInputPosition);
+ minimumInputSize = min(minimumInputSize, alternative->m_minimumSize);
+ maximumCallFrameSize = max(maximumCallFrameSize, currentAlternativeCallFrameSize);
+ hasFixedSize &= alternative->m_hasFixedSize;
+ }
+
+ ASSERT(minimumInputSize != UINT_MAX);
+ ASSERT(maximumCallFrameSize >= initialCallFrameSize);
+
+ disjunction->m_hasFixedSize = hasFixedSize;
+ disjunction->m_minimumSize = minimumInputSize;
+ disjunction->m_callFrameSize = maximumCallFrameSize;
+ return maximumCallFrameSize;
+ }
+
+ void setupOffsets()
+ {
+ setupDisjunctionOffsets(m_pattern.m_body, 0, 0);
+ }
+
+private:
+ RegexPattern& m_pattern;
+ PatternAlternative* m_alternative;
+ CharacterClassConstructor m_characterClassConstructor;
+ bool m_invertCharacterClass;
+};
+
+
+const char* compileRegex(const UString& patternString, RegexPattern& pattern)
+{
+ RegexPatternConstructor constructor(pattern);
+
+ if (const char* error = parse(constructor, patternString))
+ return error;
+
+ // If the pattern contains illegal backreferences reset & reparse.
+ // Quoting Netscape's "What's new in JavaScript 1.2",
+ // "Note: if the number of left parentheses is less than the number specified
+ // in \#, the \# is taken as an octal escape as described in the next row."
+ if (pattern.containsIllegalBackReference()) {
+ unsigned numSubpatterns = pattern.m_numSubpatterns;
+
+ constructor.reset();
+#ifndef NDEBUG
+ const char* error =
+#endif
+ parse(constructor, patternString, numSubpatterns);
+
+ ASSERT(!error);
+ ASSERT(numSubpatterns == pattern.m_numSubpatterns);
+ }
+
+ constructor.setupOffsets();
+
+ return false;
+};
+
+
+} }
+
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/yarr/RegexCompiler.h b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexCompiler.h
new file mode 100644
index 0000000..3ed2be9
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexCompiler.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RegexCompiler_h
+#define RegexCompiler_h
+
+#include <wtf/Platform.h>
+
+#if ENABLE(YARR)
+
+#include <wtf/unicode/Unicode.h>
+#include "RegexParser.h"
+#include "RegexPattern.h"
+
+namespace JSC { namespace Yarr {
+
+const char* compileRegex(const UString& patternString, RegexPattern& pattern);
+
+} } // namespace JSC::Yarr
+
+#endif
+
+#endif // RegexCompiler_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.cpp b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.cpp
new file mode 100644
index 0000000..b0aae65
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.cpp
@@ -0,0 +1,1638 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "RegexInterpreter.h"
+
+#include "RegexCompiler.h"
+#include "RegexPattern.h"
+
+#ifndef NDEBUG
+#include <stdio.h>
+#endif
+
+#if ENABLE(YARR)
+
+using namespace WTF;
+
+namespace JSC { namespace Yarr {
+
+class Interpreter {
+public:
+ struct ParenthesesDisjunctionContext;
+
+ struct BackTrackInfoPatternCharacter {
+ uintptr_t matchAmount;
+ };
+ struct BackTrackInfoCharacterClass {
+ uintptr_t matchAmount;
+ };
+ struct BackTrackInfoBackReference {
+ uintptr_t begin; // Not really needed for greedy quantifiers.
+ uintptr_t matchAmount; // Not really needed for fixed quantifiers.
+ };
+ struct BackTrackInfoAlternative {
+ uintptr_t offset;
+ };
+ struct BackTrackInfoParentheticalAssertion {
+ uintptr_t begin;
+ };
+ struct BackTrackInfoParenthesesOnce {
+ uintptr_t inParentheses;
+ };
+ struct BackTrackInfoParentheses {
+ uintptr_t matchAmount;
+ ParenthesesDisjunctionContext* lastContext;
+ uintptr_t prevBegin;
+ uintptr_t prevEnd;
+ };
+
+ static inline void appendParenthesesDisjunctionContext(BackTrackInfoParentheses* backTrack, ParenthesesDisjunctionContext* context)
+ {
+ context->next = backTrack->lastContext;
+ backTrack->lastContext = context;
+ ++backTrack->matchAmount;
+ }
+
+ static inline void popParenthesesDisjunctionContext(BackTrackInfoParentheses* backTrack)
+ {
+ ASSERT(backTrack->matchAmount);
+ ASSERT(backTrack->lastContext);
+ backTrack->lastContext = backTrack->lastContext->next;
+ --backTrack->matchAmount;
+ }
+
+ struct DisjunctionContext
+ {
+ DisjunctionContext()
+ : term(0)
+ {
+ }
+
+ void* operator new(size_t, void* where)
+ {
+ return where;
+ }
+
+ int term;
+ unsigned matchBegin;
+ unsigned matchEnd;
+ uintptr_t frame[1];
+ };
+
+ DisjunctionContext* allocDisjunctionContext(ByteDisjunction* disjunction)
+ {
+ return new(malloc(sizeof(DisjunctionContext) + (disjunction->m_frameSize - 1) * sizeof(uintptr_t))) DisjunctionContext();
+ }
+
+ void freeDisjunctionContext(DisjunctionContext* context)
+ {
+ free(context);
+ }
+
+ struct ParenthesesDisjunctionContext
+ {
+ ParenthesesDisjunctionContext(int* output, ByteTerm& term)
+ : next(0)
+ {
+ unsigned firstSubpatternId = term.atom.subpatternId;
+ unsigned numNestedSubpatterns = term.atom.parenthesesDisjunction->m_numSubpatterns;
+
+ for (unsigned i = 0; i < (numNestedSubpatterns << 1); ++i) {
+ subpatternBackup[i] = output[(firstSubpatternId << 1) + i];
+ output[(firstSubpatternId << 1) + i] = -1;
+ }
+
+ new(getDisjunctionContext(term)) DisjunctionContext();
+ }
+
+ void* operator new(size_t, void* where)
+ {
+ return where;
+ }
+
+ void restoreOutput(int* output, unsigned firstSubpatternId, unsigned numNestedSubpatterns)
+ {
+ for (unsigned i = 0; i < (numNestedSubpatterns << 1); ++i)
+ output[(firstSubpatternId << 1) + i] = subpatternBackup[i];
+ }
+
+ DisjunctionContext* getDisjunctionContext(ByteTerm& term)
+ {
+ return reinterpret_cast<DisjunctionContext*>(&(subpatternBackup[term.atom.parenthesesDisjunction->m_numSubpatterns << 1]));
+ }
+
+ ParenthesesDisjunctionContext* next;
+ int subpatternBackup[1];
+ };
+
+ ParenthesesDisjunctionContext* allocParenthesesDisjunctionContext(ByteDisjunction* disjunction, int* output, ByteTerm& term)
+ {
+ return new(malloc(sizeof(ParenthesesDisjunctionContext) + (((term.atom.parenthesesDisjunction->m_numSubpatterns << 1) - 1) * sizeof(int)) + sizeof(DisjunctionContext) + (disjunction->m_frameSize - 1) * sizeof(uintptr_t))) ParenthesesDisjunctionContext(output, term);
+ }
+
+ void freeParenthesesDisjunctionContext(ParenthesesDisjunctionContext* context)
+ {
+ free(context);
+ }
+
+ class InputStream {
+ public:
+ InputStream(const UChar* input, unsigned start, unsigned length)
+ : input(input)
+ , pos(start)
+ , length(length)
+ {
+ }
+
+ void next()
+ {
+ ++pos;
+ }
+
+ void rewind(unsigned amount)
+ {
+ ASSERT(pos >= amount);
+ pos -= amount;
+ }
+
+ int read()
+ {
+ ASSERT(pos < length);
+ if (pos < length)
+ return input[pos];
+ return -1;
+ }
+
+ int readChecked(int position)
+ {
+ ASSERT(position < 0);
+ ASSERT((unsigned)-position <= pos);
+ unsigned p = pos + position;
+ ASSERT(p < length);
+ return input[p];
+ }
+
+ int reread(unsigned from)
+ {
+ ASSERT(from < length);
+ return input[from];
+ }
+
+ int prev()
+ {
+ ASSERT(!(pos > length));
+ if (pos && length)
+ return input[pos - 1];
+ return -1;
+ }
+
+ unsigned getPos()
+ {
+ return pos;
+ }
+
+ void setPos(unsigned p)
+ {
+ pos = p;
+ }
+
+ bool atStart()
+ {
+ return pos == 0;
+ }
+
+ bool atEnd()
+ {
+ return pos == length;
+ }
+
+ bool checkInput(int count)
+ {
+ if ((pos + count) <= length) {
+ pos += count;
+ return true;
+ } else
+ return false;
+ }
+
+ void uncheckInput(int count)
+ {
+ pos -= count;
+ }
+
+ bool atStart(int position)
+ {
+ return (pos + position) == 0;
+ }
+
+ bool atEnd(int position)
+ {
+ return (pos + position) == length;
+ }
+
+ private:
+ const UChar* input;
+ unsigned pos;
+ unsigned length;
+ };
+
+ bool testCharacterClass(CharacterClass* characterClass, int ch)
+ {
+ if (ch & 0xFF80) {
+ for (unsigned i = 0; i < characterClass->m_matchesUnicode.size(); ++i)
+ if (ch == characterClass->m_matchesUnicode[i])
+ return true;
+ for (unsigned i = 0; i < characterClass->m_rangesUnicode.size(); ++i)
+ if ((ch >= characterClass->m_rangesUnicode[i].begin) && (ch <= characterClass->m_rangesUnicode[i].end))
+ return true;
+ } else {
+ for (unsigned i = 0; i < characterClass->m_matches.size(); ++i)
+ if (ch == characterClass->m_matches[i])
+ return true;
+ for (unsigned i = 0; i < characterClass->m_ranges.size(); ++i)
+ if ((ch >= characterClass->m_ranges[i].begin) && (ch <= characterClass->m_ranges[i].end))
+ return true;
+ }
+
+ return false;
+ }
+
+ bool tryConsumeCharacter(int testChar)
+ {
+ if (input.atEnd())
+ return false;
+
+ int ch = input.read();
+
+ if (pattern->m_ignoreCase ? ((Unicode::toLower(testChar) == ch) || (Unicode::toUpper(testChar) == ch)) : (testChar == ch)) {
+ input.next();
+ return true;
+ }
+ return false;
+ }
+
+ bool checkCharacter(int testChar, int inputPosition)
+ {
+ return testChar == input.readChecked(inputPosition);
+ }
+
+ bool checkCasedCharacter(int loChar, int hiChar, int inputPosition)
+ {
+ int ch = input.readChecked(inputPosition);
+ return (loChar == ch) || (hiChar == ch);
+ }
+
+ bool tryConsumeCharacterClass(CharacterClass* characterClass, bool invert)
+ {
+ if (input.atEnd())
+ return false;
+
+ bool match = testCharacterClass(characterClass, input.read());
+
+ if (invert)
+ match = !match;
+
+ if (match) {
+ input.next();
+ return true;
+ }
+ return false;
+ }
+
+ bool checkCharacterClass(CharacterClass* characterClass, bool invert, int inputPosition)
+ {
+ bool match = testCharacterClass(characterClass, input.readChecked(inputPosition));
+ return invert ? !match : match;
+ }
+
+ bool tryConsumeBackReference(int matchBegin, int matchEnd, int inputOffset)
+ {
+ int matchSize = matchEnd - matchBegin;
+
+ if (!input.checkInput(matchSize))
+ return false;
+
+ for (int i = 0; i < matchSize; ++i) {
+ if (!checkCharacter(input.reread(matchBegin + i), inputOffset - matchSize + i)) {
+ input.uncheckInput(matchSize);
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ bool matchAssertionBOL(ByteTerm& term)
+ {
+ return (input.atStart(term.inputPosition)) || (pattern->m_multiline && testCharacterClass(pattern->newlineCharacterClass, input.readChecked(term.inputPosition - 1)));
+ }
+
+ bool matchAssertionEOL(ByteTerm& term)
+ {
+ if (term.inputPosition)
+ return (input.atEnd(term.inputPosition)) || (pattern->m_multiline && testCharacterClass(pattern->newlineCharacterClass, input.readChecked(term.inputPosition)));
+ else
+ return (input.atEnd()) || (pattern->m_multiline && testCharacterClass(pattern->newlineCharacterClass, input.read()));
+ }
+
+ bool matchAssertionWordBoundary(ByteTerm& term)
+ {
+ bool prevIsWordchar = !input.atStart(term.inputPosition) && testCharacterClass(pattern->wordcharCharacterClass, input.readChecked(term.inputPosition - 1));
+ bool readIsWordchar;
+ if (term.inputPosition)
+ readIsWordchar = !input.atEnd(term.inputPosition) && testCharacterClass(pattern->wordcharCharacterClass, input.readChecked(term.inputPosition));
+ else
+ readIsWordchar = !input.atEnd() && testCharacterClass(pattern->wordcharCharacterClass, input.read());
+
+ bool wordBoundary = prevIsWordchar != readIsWordchar;
+ return term.invert() ? !wordBoundary : wordBoundary;
+ }
+
+ bool backtrackPatternCharacter(ByteTerm& term, DisjunctionContext* context)
+ {
+ BackTrackInfoPatternCharacter* backTrack = reinterpret_cast<BackTrackInfoPatternCharacter*>(context->frame + term.frameLocation);
+
+ switch (term.atom.quantityType) {
+ case QuantifierFixedCount:
+ break;
+
+ case QuantifierGreedy:
+ if (backTrack->matchAmount) {
+ --backTrack->matchAmount;
+ input.uncheckInput(1);
+ return true;
+ }
+ break;
+
+ case QuantifierNonGreedy:
+ if ((backTrack->matchAmount < term.atom.quantityCount) && input.checkInput(1)) {
+ ++backTrack->matchAmount;
+ if (checkCharacter(term.atom.patternCharacter, term.inputPosition - 1))
+ return true;
+ }
+ input.uncheckInput(backTrack->matchAmount);
+ break;
+ }
+
+ return false;
+ }
+
+ bool backtrackPatternCasedCharacter(ByteTerm& term, DisjunctionContext* context)
+ {
+ BackTrackInfoPatternCharacter* backTrack = reinterpret_cast<BackTrackInfoPatternCharacter*>(context->frame + term.frameLocation);
+
+ switch (term.atom.quantityType) {
+ case QuantifierFixedCount:
+ break;
+
+ case QuantifierGreedy:
+ if (backTrack->matchAmount) {
+ --backTrack->matchAmount;
+ input.uncheckInput(1);
+ return true;
+ }
+ break;
+
+ case QuantifierNonGreedy:
+ if ((backTrack->matchAmount < term.atom.quantityCount) && input.checkInput(1)) {
+ ++backTrack->matchAmount;
+ if (checkCasedCharacter(term.atom.casedCharacter.lo, term.atom.casedCharacter.hi, term.inputPosition - 1))
+ return true;
+ }
+ input.uncheckInput(backTrack->matchAmount);
+ break;
+ }
+
+ return false;
+ }
+
+ bool matchCharacterClass(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeCharacterClass);
+ BackTrackInfoPatternCharacter* backTrack = reinterpret_cast<BackTrackInfoPatternCharacter*>(context->frame + term.frameLocation);
+
+ switch (term.atom.quantityType) {
+ case QuantifierFixedCount: {
+ for (unsigned matchAmount = 0; matchAmount < term.atom.quantityCount; ++matchAmount) {
+ if (!checkCharacterClass(term.atom.characterClass, term.invert(), term.inputPosition + matchAmount))
+ return false;
+ }
+ return true;
+ }
+
+ case QuantifierGreedy: {
+ unsigned matchAmount = 0;
+ while ((matchAmount < term.atom.quantityCount) && input.checkInput(1)) {
+ if (!checkCharacterClass(term.atom.characterClass, term.invert(), term.inputPosition - 1)) {
+ input.uncheckInput(1);
+ break;
+ }
+ ++matchAmount;
+ }
+ backTrack->matchAmount = matchAmount;
+
+ return true;
+ }
+
+ case QuantifierNonGreedy:
+ backTrack->matchAmount = 0;
+ return true;
+ }
+
+ ASSERT_NOT_REACHED();
+ return false;
+ }
+
+ bool backtrackCharacterClass(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeCharacterClass);
+ BackTrackInfoPatternCharacter* backTrack = reinterpret_cast<BackTrackInfoPatternCharacter*>(context->frame + term.frameLocation);
+
+ switch (term.atom.quantityType) {
+ case QuantifierFixedCount:
+ break;
+
+ case QuantifierGreedy:
+ if (backTrack->matchAmount) {
+ --backTrack->matchAmount;
+ input.uncheckInput(1);
+ return true;
+ }
+ break;
+
+ case QuantifierNonGreedy:
+ if ((backTrack->matchAmount < term.atom.quantityCount) && input.checkInput(1)) {
+ ++backTrack->matchAmount;
+ if (checkCharacterClass(term.atom.characterClass, term.invert(), term.inputPosition - 1))
+ return true;
+ }
+ input.uncheckInput(backTrack->matchAmount);
+ break;
+ }
+
+ return false;
+ }
+
+ bool matchBackReference(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeBackReference);
+ BackTrackInfoBackReference* backTrack = reinterpret_cast<BackTrackInfoBackReference*>(context->frame + term.frameLocation);
+
+ int matchBegin = output[(term.atom.subpatternId << 1)];
+ int matchEnd = output[(term.atom.subpatternId << 1) + 1];
+ ASSERT((matchBegin == -1) == (matchEnd == -1));
+ ASSERT(matchBegin <= matchEnd);
+
+ if (matchBegin == matchEnd)
+ return true;
+
+ switch (term.atom.quantityType) {
+ case QuantifierFixedCount: {
+ backTrack->begin = input.getPos();
+ for (unsigned matchAmount = 0; matchAmount < term.atom.quantityCount; ++matchAmount) {
+ if (!tryConsumeBackReference(matchBegin, matchEnd, term.inputPosition)) {
+ input.setPos(backTrack->begin);
+ return false;
+ }
+ }
+ return true;
+ }
+
+ case QuantifierGreedy: {
+ unsigned matchAmount = 0;
+ while ((matchAmount < term.atom.quantityCount) && tryConsumeBackReference(matchBegin, matchEnd, term.inputPosition))
+ ++matchAmount;
+ backTrack->matchAmount = matchAmount;
+ return true;
+ }
+
+ case QuantifierNonGreedy:
+ backTrack->begin = input.getPos();
+ backTrack->matchAmount = 0;
+ return true;
+ }
+
+ ASSERT_NOT_REACHED();
+ return false;
+ }
+
+ bool backtrackBackReference(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeBackReference);
+ BackTrackInfoBackReference* backTrack = reinterpret_cast<BackTrackInfoBackReference*>(context->frame + term.frameLocation);
+
+ int matchBegin = output[(term.atom.subpatternId << 1)];
+ int matchEnd = output[(term.atom.subpatternId << 1) + 1];
+ ASSERT((matchBegin == -1) == (matchEnd == -1));
+ ASSERT(matchBegin <= matchEnd);
+
+ if (matchBegin == matchEnd)
+ return false;
+
+ switch (term.atom.quantityType) {
+ case QuantifierFixedCount:
+ // for quantityCount == 1, could rewind.
+ input.setPos(backTrack->begin);
+ break;
+
+ case QuantifierGreedy:
+ if (backTrack->matchAmount) {
+ --backTrack->matchAmount;
+ input.rewind(matchEnd - matchBegin);
+ return true;
+ }
+ break;
+
+ case QuantifierNonGreedy:
+ if ((backTrack->matchAmount < term.atom.quantityCount) && tryConsumeBackReference(matchBegin, matchEnd, term.inputPosition)) {
+ ++backTrack->matchAmount;
+ return true;
+ } else
+ input.setPos(backTrack->begin);
+ break;
+ }
+
+ return false;
+ }
+
+ void recordParenthesesMatch(ByteTerm& term, ParenthesesDisjunctionContext* context)
+ {
+ if (term.capture()) {
+ unsigned subpatternId = term.atom.subpatternId;
+ output[(subpatternId << 1)] = context->getDisjunctionContext(term)->matchBegin + term.inputPosition;
+ output[(subpatternId << 1) + 1] = context->getDisjunctionContext(term)->matchEnd + term.inputPosition;
+ }
+ }
+ void resetMatches(ByteTerm& term, ParenthesesDisjunctionContext* context)
+ {
+ unsigned firstSubpatternId = term.atom.subpatternId;
+ unsigned count = term.atom.parenthesesDisjunction->m_numSubpatterns;
+ context->restoreOutput(output, firstSubpatternId, count);
+ }
+ void resetAssertionMatches(ByteTerm& term)
+ {
+ unsigned firstSubpatternId = term.atom.subpatternId;
+ unsigned count = term.atom.parenthesesDisjunction->m_numSubpatterns;
+ for (unsigned i = 0; i < (count << 1); ++i)
+ output[(firstSubpatternId << 1) + i] = -1;
+ }
+ bool parenthesesDoBacktrack(ByteTerm& term, BackTrackInfoParentheses* backTrack)
+ {
+ while (backTrack->matchAmount) {
+ ParenthesesDisjunctionContext* context = backTrack->lastContext;
+
+ if (matchDisjunction(term.atom.parenthesesDisjunction, context->getDisjunctionContext(term), true))
+ return true;
+
+ resetMatches(term, context);
+ freeParenthesesDisjunctionContext(context);
+ popParenthesesDisjunctionContext(backTrack);
+ }
+
+ return false;
+ }
+
+ bool matchParenthesesOnceBegin(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeParenthesesSubpatternOnceBegin);
+ ASSERT(term.atom.quantityCount == 1);
+
+ BackTrackInfoParenthesesOnce* backTrack = reinterpret_cast<BackTrackInfoParenthesesOnce*>(context->frame + term.frameLocation);
+
+ switch (term.atom.quantityType) {
+ case QuantifierGreedy: {
+ // set this speculatively; if we get to the parens end this will be true.
+ backTrack->inParentheses = 1;
+ break;
+ }
+ case QuantifierNonGreedy: {
+ backTrack->inParentheses = 0;
+ context->term += term.atom.parenthesesWidth;
+ return true;
+ }
+ case QuantifierFixedCount:
+ break;
+ }
+
+ if (term.capture()) {
+ unsigned subpatternId = term.atom.subpatternId;
+ output[(subpatternId << 1)] = input.getPos() + term.inputPosition;
+ }
+
+ return true;
+ }
+
+ bool matchParenthesesOnceEnd(ByteTerm& term, DisjunctionContext*)
+ {
+ ASSERT(term.type == ByteTerm::TypeParenthesesSubpatternOnceEnd);
+ ASSERT(term.atom.quantityCount == 1);
+
+ if (term.capture()) {
+ unsigned subpatternId = term.atom.subpatternId;
+ output[(subpatternId << 1) + 1] = input.getPos() + term.inputPosition;
+ }
+ return true;
+ }
+
+ bool backtrackParenthesesOnceBegin(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeParenthesesSubpatternOnceBegin);
+ ASSERT(term.atom.quantityCount == 1);
+
+ BackTrackInfoParenthesesOnce* backTrack = reinterpret_cast<BackTrackInfoParenthesesOnce*>(context->frame + term.frameLocation);
+
+ if (term.capture()) {
+ unsigned subpatternId = term.atom.subpatternId;
+ output[(subpatternId << 1)] = -1;
+ output[(subpatternId << 1) + 1] = -1;
+ }
+
+ switch (term.atom.quantityType) {
+ case QuantifierGreedy:
+ // if we backtrack to this point, there is another chance - try matching nothing.
+ ASSERT(backTrack->inParentheses);
+ backTrack->inParentheses = 0;
+ context->term += term.atom.parenthesesWidth;
+ return true;
+ case QuantifierNonGreedy:
+ ASSERT(backTrack->inParentheses);
+ case QuantifierFixedCount:
+ break;
+ }
+
+ return false;
+ }
+
+ bool backtrackParenthesesOnceEnd(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeParenthesesSubpatternOnceEnd);
+ ASSERT(term.atom.quantityCount == 1);
+
+ BackTrackInfoParenthesesOnce* backTrack = reinterpret_cast<BackTrackInfoParenthesesOnce*>(context->frame + term.frameLocation);
+
+ switch (term.atom.quantityType) {
+ case QuantifierGreedy:
+ if (!backTrack->inParentheses) {
+ context->term -= term.atom.parenthesesWidth;
+ return false;
+ }
+ case QuantifierNonGreedy:
+ if (!backTrack->inParentheses) {
+ // now try to match the parens; set this speculatively.
+ backTrack->inParentheses = 1;
+ if (term.capture()) {
+ unsigned subpatternId = term.atom.subpatternId;
+ output[(subpatternId << 1) + 1] = input.getPos() + term.inputPosition;
+ }
+ context->term -= term.atom.parenthesesWidth;
+ return true;
+ }
+ case QuantifierFixedCount:
+ break;
+ }
+
+ return false;
+ }
+
+ bool matchParentheticalAssertionBegin(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeParentheticalAssertionBegin);
+ ASSERT(term.atom.quantityCount == 1);
+
+ BackTrackInfoParentheticalAssertion* backTrack = reinterpret_cast<BackTrackInfoParentheticalAssertion*>(context->frame + term.frameLocation);
+
+ backTrack->begin = input.getPos();
+ return true;
+ }
+
+ bool matchParentheticalAssertionEnd(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeParentheticalAssertionEnd);
+ ASSERT(term.atom.quantityCount == 1);
+
+ BackTrackInfoParentheticalAssertion* backTrack = reinterpret_cast<BackTrackInfoParentheticalAssertion*>(context->frame + term.frameLocation);
+
+ input.setPos(backTrack->begin);
+
+ // We've reached the end of the parens; if they are inverted, this is failure.
+ if (term.invert()) {
+ context->term -= term.atom.parenthesesWidth;
+ return false;
+ }
+
+ return true;
+ }
+
+ bool backtrackParentheticalAssertionBegin(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeParentheticalAssertionBegin);
+ ASSERT(term.atom.quantityCount == 1);
+
+ // We've failed to match parens; if they are inverted, this is win!
+ if (term.invert()) {
+ context->term += term.atom.parenthesesWidth;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool backtrackParentheticalAssertionEnd(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeParentheticalAssertionEnd);
+ ASSERT(term.atom.quantityCount == 1);
+
+ BackTrackInfoParentheticalAssertion* backTrack = reinterpret_cast<BackTrackInfoParentheticalAssertion*>(context->frame + term.frameLocation);
+
+ input.setPos(backTrack->begin);
+
+ context->term -= term.atom.parenthesesWidth;
+ return false;
+ }
+
+ bool matchParentheses(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeParenthesesSubpattern);
+
+ BackTrackInfoParentheses* backTrack = reinterpret_cast<BackTrackInfoParentheses*>(context->frame + term.frameLocation);
+
+ unsigned subpatternId = term.atom.subpatternId;
+ ByteDisjunction* disjunctionBody = term.atom.parenthesesDisjunction;
+
+ backTrack->prevBegin = output[(subpatternId << 1)];
+ backTrack->prevEnd = output[(subpatternId << 1) + 1];
+
+ backTrack->matchAmount = 0;
+ backTrack->lastContext = 0;
+
+ switch (term.atom.quantityType) {
+ case QuantifierFixedCount: {
+ // While we haven't yet reached our fixed limit,
+ while (backTrack->matchAmount < term.atom.quantityCount) {
+ // Try to do a match, and it it succeeds, add it to the list.
+ ParenthesesDisjunctionContext* context = allocParenthesesDisjunctionContext(disjunctionBody, output, term);
+ if (matchDisjunction(disjunctionBody, context->getDisjunctionContext(term)))
+ appendParenthesesDisjunctionContext(backTrack, context);
+ else {
+ // The match failed; try to find an alternate point to carry on from.
+ resetMatches(term, context);
+ freeParenthesesDisjunctionContext(context);
+ if (!parenthesesDoBacktrack(term, backTrack))
+ return false;
+ }
+ }
+
+ ASSERT(backTrack->matchAmount == term.atom.quantityCount);
+ ParenthesesDisjunctionContext* context = backTrack->lastContext;
+ recordParenthesesMatch(term, context);
+ return true;
+ }
+
+ case QuantifierGreedy: {
+ while (backTrack->matchAmount < term.atom.quantityCount) {
+ ParenthesesDisjunctionContext* context = allocParenthesesDisjunctionContext(disjunctionBody, output, term);
+ if (matchNonZeroDisjunction(disjunctionBody, context->getDisjunctionContext(term)))
+ appendParenthesesDisjunctionContext(backTrack, context);
+ else {
+ resetMatches(term, context);
+ freeParenthesesDisjunctionContext(context);
+ break;
+ }
+ }
+
+ if (backTrack->matchAmount) {
+ ParenthesesDisjunctionContext* context = backTrack->lastContext;
+ recordParenthesesMatch(term, context);
+ }
+ return true;
+ }
+
+ case QuantifierNonGreedy:
+ return true;
+ }
+
+ ASSERT_NOT_REACHED();
+ return false;
+ }
+
+ // Rules for backtracking differ depending on whether this is greedy or non-greedy.
+ //
+ // Greedy matches never should try just adding more - you should already have done
+ // the 'more' cases. Always backtrack, at least a leetle bit. However cases where
+ // you backtrack an item off the list needs checking, since we'll never have matched
+ // the one less case. Tracking forwards, still add as much as possible.
+ //
+ // Non-greedy, we've already done the one less case, so don't match on popping.
+ // We haven't done the one more case, so always try to add that.
+ //
+ bool backtrackParentheses(ByteTerm& term, DisjunctionContext* context)
+ {
+ ASSERT(term.type == ByteTerm::TypeParenthesesSubpattern);
+
+ BackTrackInfoParentheses* backTrack = reinterpret_cast<BackTrackInfoParentheses*>(context->frame + term.frameLocation);
+
+ if (term.capture()) {
+ unsigned subpatternId = term.atom.subpatternId;
+ output[(subpatternId << 1)] = backTrack->prevBegin;
+ output[(subpatternId << 1) + 1] = backTrack->prevEnd;
+ }
+
+ ByteDisjunction* disjunctionBody = term.atom.parenthesesDisjunction;
+
+ switch (term.atom.quantityType) {
+ case QuantifierFixedCount: {
+ ASSERT(backTrack->matchAmount == term.atom.quantityCount);
+
+ ParenthesesDisjunctionContext* context = 0;
+
+ if (!parenthesesDoBacktrack(term, backTrack))
+ return false;
+
+ // While we haven't yet reached our fixed limit,
+ while (backTrack->matchAmount < term.atom.quantityCount) {
+ // Try to do a match, and it it succeeds, add it to the list.
+ context = allocParenthesesDisjunctionContext(disjunctionBody, output, term);
+ if (matchDisjunction(disjunctionBody, context->getDisjunctionContext(term)))
+ appendParenthesesDisjunctionContext(backTrack, context);
+ else {
+ // The match failed; try to find an alternate point to carry on from.
+ resetMatches(term, context);
+ freeParenthesesDisjunctionContext(context);
+ if (!parenthesesDoBacktrack(term, backTrack))
+ return false;
+ }
+ }
+
+ ASSERT(backTrack->matchAmount == term.atom.quantityCount);
+ context = backTrack->lastContext;
+ recordParenthesesMatch(term, context);
+ return true;
+ }
+
+ case QuantifierGreedy: {
+ if (!backTrack->matchAmount)
+ return false;
+
+ ParenthesesDisjunctionContext* context = backTrack->lastContext;
+ if (matchNonZeroDisjunction(disjunctionBody, context->getDisjunctionContext(term), true)) {
+ while (backTrack->matchAmount < term.atom.quantityCount) {
+ ParenthesesDisjunctionContext* context = allocParenthesesDisjunctionContext(disjunctionBody, output, term);
+ if (matchNonZeroDisjunction(disjunctionBody, context->getDisjunctionContext(term)))
+ appendParenthesesDisjunctionContext(backTrack, context);
+ else {
+ resetMatches(term, context);
+ freeParenthesesDisjunctionContext(context);
+ break;
+ }
+ }
+ } else {
+ resetMatches(term, context);
+ freeParenthesesDisjunctionContext(context);
+ popParenthesesDisjunctionContext(backTrack);
+ }
+
+ if (backTrack->matchAmount) {
+ ParenthesesDisjunctionContext* context = backTrack->lastContext;
+ recordParenthesesMatch(term, context);
+ }
+ return true;
+ }
+
+ case QuantifierNonGreedy: {
+ // If we've not reached the limit, try to add one more match.
+ if (backTrack->matchAmount < term.atom.quantityCount) {
+ ParenthesesDisjunctionContext* context = allocParenthesesDisjunctionContext(disjunctionBody, output, term);
+ if (matchNonZeroDisjunction(disjunctionBody, context->getDisjunctionContext(term))) {
+ appendParenthesesDisjunctionContext(backTrack, context);
+ recordParenthesesMatch(term, context);
+ return true;
+ } else {
+ resetMatches(term, context);
+ freeParenthesesDisjunctionContext(context);
+ }
+ }
+
+ // Nope - okay backtrack looking for an alternative.
+ while (backTrack->matchAmount) {
+ ParenthesesDisjunctionContext* context = backTrack->lastContext;
+ if (matchNonZeroDisjunction(disjunctionBody, context->getDisjunctionContext(term), true)) {
+ // successful backtrack! we're back in the game!
+ if (backTrack->matchAmount) {
+ context = backTrack->lastContext;
+ recordParenthesesMatch(term, context);
+ }
+ return true;
+ }
+
+ // pop a match off the stack
+ resetMatches(term, context);
+ freeParenthesesDisjunctionContext(context);
+ popParenthesesDisjunctionContext(backTrack);
+ }
+
+ return false;
+ }
+ }
+
+ ASSERT_NOT_REACHED();
+ return false;
+ }
+
+#define MATCH_NEXT() { ++context->term; goto matchAgain; }
+#define BACKTRACK() { --context->term; goto backtrack; }
+#define currentTerm() (disjunction->terms[context->term])
+ bool matchDisjunction(ByteDisjunction* disjunction, DisjunctionContext* context, bool btrack = false)
+ {
+ if (btrack)
+ BACKTRACK();
+
+ context->matchBegin = input.getPos();
+ context->term = 0;
+
+ matchAgain:
+ ASSERT(context->term < static_cast<int>(disjunction->terms.size()));
+
+ switch (currentTerm().type) {
+ case ByteTerm::TypeSubpatternBegin:
+ MATCH_NEXT();
+ case ByteTerm::TypeSubpatternEnd:
+ context->matchEnd = input.getPos();
+ return true;
+
+ case ByteTerm::TypeBodyAlternativeBegin:
+ MATCH_NEXT();
+ case ByteTerm::TypeBodyAlternativeDisjunction:
+ case ByteTerm::TypeBodyAlternativeEnd:
+ context->matchEnd = input.getPos();
+ return true;
+
+ case ByteTerm::TypeAlternativeBegin:
+ MATCH_NEXT();
+ case ByteTerm::TypeAlternativeDisjunction:
+ case ByteTerm::TypeAlternativeEnd: {
+ int offset = currentTerm().alternative.end;
+ BackTrackInfoAlternative* backTrack = reinterpret_cast<BackTrackInfoAlternative*>(context->frame + currentTerm().frameLocation);
+ backTrack->offset = offset;
+ context->term += offset;
+ MATCH_NEXT();
+ }
+
+ case ByteTerm::TypeAssertionBOL:
+ if (matchAssertionBOL(currentTerm()))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeAssertionEOL:
+ if (matchAssertionEOL(currentTerm()))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeAssertionWordBoundary:
+ if (matchAssertionWordBoundary(currentTerm()))
+ MATCH_NEXT();
+ BACKTRACK();
+
+ case ByteTerm::TypePatternCharacterOnce:
+ case ByteTerm::TypePatternCharacterFixed: {
+ for (unsigned matchAmount = 0; matchAmount < currentTerm().atom.quantityCount; ++matchAmount) {
+ if (!checkCharacter(currentTerm().atom.patternCharacter, currentTerm().inputPosition + matchAmount))
+ BACKTRACK();
+ }
+ MATCH_NEXT();
+ }
+ case ByteTerm::TypePatternCharacterGreedy: {
+ BackTrackInfoPatternCharacter* backTrack = reinterpret_cast<BackTrackInfoPatternCharacter*>(context->frame + currentTerm().frameLocation);
+ unsigned matchAmount = 0;
+ while ((matchAmount < currentTerm().atom.quantityCount) && input.checkInput(1)) {
+ if (!checkCharacter(currentTerm().atom.patternCharacter, currentTerm().inputPosition - 1)) {
+ input.uncheckInput(1);
+ break;
+ }
+ ++matchAmount;
+ }
+ backTrack->matchAmount = matchAmount;
+
+ MATCH_NEXT();
+ }
+ case ByteTerm::TypePatternCharacterNonGreedy: {
+ BackTrackInfoPatternCharacter* backTrack = reinterpret_cast<BackTrackInfoPatternCharacter*>(context->frame + currentTerm().frameLocation);
+ backTrack->matchAmount = 0;
+ MATCH_NEXT();
+ }
+
+ case ByteTerm::TypePatternCasedCharacterOnce:
+ case ByteTerm::TypePatternCasedCharacterFixed: {
+ for (unsigned matchAmount = 0; matchAmount < currentTerm().atom.quantityCount; ++matchAmount) {
+ if (!checkCasedCharacter(currentTerm().atom.casedCharacter.lo, currentTerm().atom.casedCharacter.hi, currentTerm().inputPosition + matchAmount))
+ BACKTRACK();
+ }
+ MATCH_NEXT();
+ }
+ case ByteTerm::TypePatternCasedCharacterGreedy: {
+ BackTrackInfoPatternCharacter* backTrack = reinterpret_cast<BackTrackInfoPatternCharacter*>(context->frame + currentTerm().frameLocation);
+ unsigned matchAmount = 0;
+ while ((matchAmount < currentTerm().atom.quantityCount) && input.checkInput(1)) {
+ if (!checkCasedCharacter(currentTerm().atom.casedCharacter.lo, currentTerm().atom.casedCharacter.hi, currentTerm().inputPosition - 1)) {
+ input.uncheckInput(1);
+ break;
+ }
+ ++matchAmount;
+ }
+ backTrack->matchAmount = matchAmount;
+
+ MATCH_NEXT();
+ }
+ case ByteTerm::TypePatternCasedCharacterNonGreedy: {
+ BackTrackInfoPatternCharacter* backTrack = reinterpret_cast<BackTrackInfoPatternCharacter*>(context->frame + currentTerm().frameLocation);
+ backTrack->matchAmount = 0;
+ MATCH_NEXT();
+ }
+
+ case ByteTerm::TypeCharacterClass:
+ if (matchCharacterClass(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeBackReference:
+ if (matchBackReference(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeParenthesesSubpattern:
+ if (matchParentheses(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeParenthesesSubpatternOnceBegin:
+ if (matchParenthesesOnceBegin(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeParenthesesSubpatternOnceEnd:
+ if (matchParenthesesOnceEnd(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeParentheticalAssertionBegin:
+ if (matchParentheticalAssertionBegin(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeParentheticalAssertionEnd:
+ if (matchParentheticalAssertionEnd(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+
+ case ByteTerm::TypeCheckInput:
+ if (input.checkInput(currentTerm().checkInputCount))
+ MATCH_NEXT();
+ BACKTRACK();
+ }
+
+ // We should never fall-through to here.
+ ASSERT_NOT_REACHED();
+
+ backtrack:
+ ASSERT(context->term < static_cast<int>(disjunction->terms.size()));
+
+ switch (currentTerm().type) {
+ case ByteTerm::TypeSubpatternBegin:
+ return false;
+ case ByteTerm::TypeSubpatternEnd:
+ ASSERT_NOT_REACHED();
+
+ case ByteTerm::TypeBodyAlternativeBegin:
+ case ByteTerm::TypeBodyAlternativeDisjunction: {
+ int offset = currentTerm().alternative.next;
+ context->term += offset;
+ if (offset > 0)
+ MATCH_NEXT();
+
+ if (input.atEnd())
+ return false;
+
+ input.next();
+ context->matchBegin = input.getPos();
+ MATCH_NEXT();
+ }
+ case ByteTerm::TypeBodyAlternativeEnd:
+ ASSERT_NOT_REACHED();
+
+ case ByteTerm::TypeAlternativeBegin:
+ case ByteTerm::TypeAlternativeDisjunction: {
+ int offset = currentTerm().alternative.next;
+ context->term += offset;
+ if (offset > 0)
+ MATCH_NEXT();
+ BACKTRACK();
+ }
+ case ByteTerm::TypeAlternativeEnd: {
+ // We should never backtrack back into an alternative of the main body of the regex.
+ BackTrackInfoAlternative* backTrack = reinterpret_cast<BackTrackInfoAlternative*>(context->frame + currentTerm().frameLocation);
+ unsigned offset = backTrack->offset;
+ context->term -= offset;
+ BACKTRACK();
+ }
+
+ case ByteTerm::TypeAssertionBOL:
+ case ByteTerm::TypeAssertionEOL:
+ case ByteTerm::TypeAssertionWordBoundary:
+ BACKTRACK();
+
+ case ByteTerm::TypePatternCharacterOnce:
+ case ByteTerm::TypePatternCharacterFixed:
+ case ByteTerm::TypePatternCharacterGreedy:
+ case ByteTerm::TypePatternCharacterNonGreedy:
+ if (backtrackPatternCharacter(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypePatternCasedCharacterOnce:
+ case ByteTerm::TypePatternCasedCharacterFixed:
+ case ByteTerm::TypePatternCasedCharacterGreedy:
+ case ByteTerm::TypePatternCasedCharacterNonGreedy:
+ if (backtrackPatternCasedCharacter(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeCharacterClass:
+ if (backtrackCharacterClass(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeBackReference:
+ if (backtrackBackReference(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeParenthesesSubpattern:
+ if (backtrackParentheses(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeParenthesesSubpatternOnceBegin:
+ if (backtrackParenthesesOnceBegin(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeParenthesesSubpatternOnceEnd:
+ if (backtrackParenthesesOnceEnd(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeParentheticalAssertionBegin:
+ if (backtrackParentheticalAssertionBegin(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+ case ByteTerm::TypeParentheticalAssertionEnd:
+ if (backtrackParentheticalAssertionEnd(currentTerm(), context))
+ MATCH_NEXT();
+ BACKTRACK();
+
+ case ByteTerm::TypeCheckInput:
+ input.uncheckInput(currentTerm().checkInputCount);
+ BACKTRACK();
+ }
+
+ ASSERT_NOT_REACHED();
+ return false;
+ }
+
+ bool matchNonZeroDisjunction(ByteDisjunction* disjunction, DisjunctionContext* context, bool btrack = false)
+ {
+ if (matchDisjunction(disjunction, context, btrack)) {
+ while (context->matchBegin == context->matchEnd) {
+ if (!matchDisjunction(disjunction, context, true))
+ return false;
+ }
+ return true;
+ }
+
+ return false;
+ }
+
+ int interpret()
+ {
+ for (unsigned i = 0; i < ((pattern->m_body->m_numSubpatterns + 1) << 1); ++i)
+ output[i] = -1;
+
+ DisjunctionContext* context = allocDisjunctionContext(pattern->m_body.get());
+
+ if (matchDisjunction(pattern->m_body.get(), context)) {
+ output[0] = context->matchBegin;
+ output[1] = context->matchEnd;
+ }
+
+ freeDisjunctionContext(context);
+
+ return output[0];
+ }
+
+ Interpreter(BytecodePattern* pattern, int* output, const UChar* inputChar, unsigned start, unsigned length)
+ : pattern(pattern)
+ , output(output)
+ , input(inputChar, start, length)
+ {
+ }
+
+private:
+ BytecodePattern *pattern;
+ int* output;
+ InputStream input;
+};
+
+
+
+class ByteCompiler {
+ struct ParenthesesStackEntry {
+ unsigned beginTerm;
+ unsigned savedAlternativeIndex;
+ ParenthesesStackEntry(unsigned beginTerm, unsigned savedAlternativeIndex/*, unsigned subpatternId, bool capture = false*/)
+ : beginTerm(beginTerm)
+ , savedAlternativeIndex(savedAlternativeIndex)
+ {
+ }
+ };
+
+public:
+ ByteCompiler(RegexPattern& pattern)
+ : m_pattern(pattern)
+ {
+ bodyDisjunction = 0;
+ currentAlternativeIndex = 0;
+ }
+
+ BytecodePattern* compile()
+ {
+ regexBegin(m_pattern.m_numSubpatterns, m_pattern.m_body->m_callFrameSize);
+ emitDisjunction(m_pattern.m_body);
+ regexEnd();
+
+ return new BytecodePattern(bodyDisjunction, m_allParenthesesInfo, m_pattern);
+ }
+
+ void checkInput(unsigned count)
+ {
+ bodyDisjunction->terms.append(ByteTerm::CheckInput(count));
+ }
+
+ void assertionBOL(int inputPosition)
+ {
+ bodyDisjunction->terms.append(ByteTerm::BOL(inputPosition));
+ }
+
+ void assertionEOL(int inputPosition)
+ {
+ bodyDisjunction->terms.append(ByteTerm::EOL(inputPosition));
+ }
+
+ void assertionWordBoundary(bool invert, int inputPosition)
+ {
+ bodyDisjunction->terms.append(ByteTerm::WordBoundary(invert, inputPosition));
+ }
+
+ void atomPatternCharacter(UChar ch, int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType)
+ {
+ if (m_pattern.m_ignoreCase) {
+ UChar lo = Unicode::toLower(ch);
+ UChar hi = Unicode::toUpper(ch);
+
+ if (lo != hi) {
+ bodyDisjunction->terms.append(ByteTerm(lo, hi, inputPosition, frameLocation, quantityCount, quantityType));
+ return;
+ }
+ }
+
+ bodyDisjunction->terms.append(ByteTerm(ch, inputPosition, frameLocation, quantityCount, quantityType));
+ }
+
+ void atomCharacterClass(CharacterClass* characterClass, bool invert, int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType)
+ {
+ bodyDisjunction->terms.append(ByteTerm(characterClass, invert, inputPosition));
+
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].atom.quantityCount = quantityCount;
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].atom.quantityType = quantityType;
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
+ }
+
+ void atomBackReference(unsigned subpatternId, int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType)
+ {
+ ASSERT(subpatternId);
+
+ bodyDisjunction->terms.append(ByteTerm::BackReference(subpatternId, inputPosition));
+
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].atom.quantityCount = quantityCount;
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].atom.quantityType = quantityType;
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
+ }
+
+ void atomParenthesesSubpatternBegin(unsigned subpatternId, bool capture, int inputPosition, unsigned frameLocation, unsigned alternativeFrameLocation)
+ {
+ int beginTerm = bodyDisjunction->terms.size();
+
+ bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpatternOnceBegin, subpatternId, capture, inputPosition));
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
+ bodyDisjunction->terms.append(ByteTerm::AlternativeBegin());
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = alternativeFrameLocation;
+
+ m_parenthesesStack.append(ParenthesesStackEntry(beginTerm, currentAlternativeIndex));
+ currentAlternativeIndex = beginTerm + 1;
+ }
+
+ void atomParentheticalAssertionBegin(unsigned subpatternId, bool invert, unsigned frameLocation, unsigned alternativeFrameLocation)
+ {
+ int beginTerm = bodyDisjunction->terms.size();
+
+ bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParentheticalAssertionBegin, subpatternId, invert, 0));
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = frameLocation;
+ bodyDisjunction->terms.append(ByteTerm::AlternativeBegin());
+ bodyDisjunction->terms[bodyDisjunction->terms.size() - 1].frameLocation = alternativeFrameLocation;
+
+ m_parenthesesStack.append(ParenthesesStackEntry(beginTerm, currentAlternativeIndex));
+ currentAlternativeIndex = beginTerm + 1;
+ }
+
+ unsigned popParenthesesStack()
+ {
+ ASSERT(m_parenthesesStack.size());
+ int stackEnd = m_parenthesesStack.size() - 1;
+ unsigned beginTerm = m_parenthesesStack[stackEnd].beginTerm;
+ currentAlternativeIndex = m_parenthesesStack[stackEnd].savedAlternativeIndex;
+ m_parenthesesStack.shrink(stackEnd);
+
+ ASSERT(beginTerm < bodyDisjunction->terms.size());
+ ASSERT(currentAlternativeIndex < bodyDisjunction->terms.size());
+
+ return beginTerm;
+ }
+
+#ifndef NDEBUG
+ void dumpDisjunction(ByteDisjunction* disjunction)
+ {
+ printf("ByteDisjunction(%p):\n\t", disjunction);
+ for (unsigned i = 0; i < disjunction->terms.size(); ++i)
+ printf("{ %d } ", disjunction->terms[i].type);
+ printf("\n");
+ }
+#endif
+
+ void closeAlternative(int beginTerm)
+ {
+ int origBeginTerm = beginTerm;
+ ASSERT(bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeAlternativeBegin);
+ int endIndex = bodyDisjunction->terms.size();
+
+ unsigned frameLocation = bodyDisjunction->terms[beginTerm].frameLocation;
+
+ if (!bodyDisjunction->terms[beginTerm].alternative.next)
+ bodyDisjunction->terms.remove(beginTerm);
+ else {
+ while (bodyDisjunction->terms[beginTerm].alternative.next) {
+ beginTerm += bodyDisjunction->terms[beginTerm].alternative.next;
+ ASSERT(bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeAlternativeDisjunction);
+ bodyDisjunction->terms[beginTerm].alternative.end = endIndex - beginTerm;
+ bodyDisjunction->terms[beginTerm].frameLocation = frameLocation;
+ }
+
+ bodyDisjunction->terms[beginTerm].alternative.next = origBeginTerm - beginTerm;
+
+ bodyDisjunction->terms.append(ByteTerm::AlternativeEnd());
+ bodyDisjunction->terms[endIndex].frameLocation = frameLocation;
+ }
+ }
+
+ void closeBodyAlternative()
+ {
+ int beginTerm = 0;
+ int origBeginTerm = 0;
+ ASSERT(bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeBodyAlternativeBegin);
+ int endIndex = bodyDisjunction->terms.size();
+
+ unsigned frameLocation = bodyDisjunction->terms[beginTerm].frameLocation;
+
+ while (bodyDisjunction->terms[beginTerm].alternative.next) {
+ beginTerm += bodyDisjunction->terms[beginTerm].alternative.next;
+ ASSERT(bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeBodyAlternativeDisjunction);
+ bodyDisjunction->terms[beginTerm].alternative.end = endIndex - beginTerm;
+ bodyDisjunction->terms[beginTerm].frameLocation = frameLocation;
+ }
+
+ bodyDisjunction->terms[beginTerm].alternative.next = origBeginTerm - beginTerm;
+
+ bodyDisjunction->terms.append(ByteTerm::BodyAlternativeEnd());
+ bodyDisjunction->terms[endIndex].frameLocation = frameLocation;
+ }
+
+ void atomParenthesesEnd(bool doInline, unsigned lastSubpatternId, int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType, unsigned callFrameSize = 0)
+ {
+ unsigned beginTerm = popParenthesesStack();
+ closeAlternative(beginTerm + 1);
+ unsigned endTerm = bodyDisjunction->terms.size();
+
+ bool isAssertion = bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeParentheticalAssertionBegin;
+ bool invertOrCapture = bodyDisjunction->terms[beginTerm].invertOrCapture;
+ unsigned subpatternId = bodyDisjunction->terms[beginTerm].atom.subpatternId;
+
+ bodyDisjunction->terms.append(ByteTerm(isAssertion ? ByteTerm::TypeParentheticalAssertionEnd : ByteTerm::TypeParenthesesSubpatternOnceEnd, subpatternId, invertOrCapture, inputPosition));
+ bodyDisjunction->terms[beginTerm].atom.parenthesesWidth = endTerm - beginTerm;
+ bodyDisjunction->terms[endTerm].atom.parenthesesWidth = endTerm - beginTerm;
+ bodyDisjunction->terms[endTerm].frameLocation = frameLocation;
+
+ if (doInline) {
+ bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount;
+ bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType;
+ bodyDisjunction->terms[endTerm].atom.quantityCount = quantityCount;
+ bodyDisjunction->terms[endTerm].atom.quantityType = quantityType;
+ } else {
+ ByteTerm& parenthesesBegin = bodyDisjunction->terms[beginTerm];
+ ASSERT(parenthesesBegin.type == ByteTerm::TypeParenthesesSubpatternOnceBegin);
+
+ bool invertOrCapture = parenthesesBegin.invertOrCapture;
+ unsigned subpatternId = parenthesesBegin.atom.subpatternId;
+
+ unsigned numSubpatterns = lastSubpatternId - subpatternId + 1;
+ ByteDisjunction* parenthesesDisjunction = new ByteDisjunction(numSubpatterns, callFrameSize);
+
+ parenthesesDisjunction->terms.append(ByteTerm::SubpatternBegin());
+ for (unsigned termInParentheses = beginTerm + 1; termInParentheses < endTerm; ++termInParentheses)
+ parenthesesDisjunction->terms.append(bodyDisjunction->terms[termInParentheses]);
+ parenthesesDisjunction->terms.append(ByteTerm::SubpatternEnd());
+
+ bodyDisjunction->terms.shrink(beginTerm);
+
+ m_allParenthesesInfo.append(parenthesesDisjunction);
+ bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpattern, subpatternId, parenthesesDisjunction, invertOrCapture, inputPosition));
+
+ bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount;
+ bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType;
+ bodyDisjunction->terms[beginTerm].frameLocation = frameLocation;
+ }
+ }
+
+ void regexBegin(unsigned numSubpatterns, unsigned callFrameSize)
+ {
+ bodyDisjunction = new ByteDisjunction(numSubpatterns, callFrameSize);
+ bodyDisjunction->terms.append(ByteTerm::BodyAlternativeBegin());
+ bodyDisjunction->terms[0].frameLocation = 0;
+ currentAlternativeIndex = 0;
+ }
+
+ void regexEnd()
+ {
+ closeBodyAlternative();
+ }
+
+ void alterantiveBodyDisjunction()
+ {
+ int newAlternativeIndex = bodyDisjunction->terms.size();
+ bodyDisjunction->terms[currentAlternativeIndex].alternative.next = newAlternativeIndex - currentAlternativeIndex;
+ bodyDisjunction->terms.append(ByteTerm::BodyAlternativeDisjunction());
+
+ currentAlternativeIndex = newAlternativeIndex;
+ }
+
+ void alterantiveDisjunction()
+ {
+ int newAlternativeIndex = bodyDisjunction->terms.size();
+ bodyDisjunction->terms[currentAlternativeIndex].alternative.next = newAlternativeIndex - currentAlternativeIndex;
+ bodyDisjunction->terms.append(ByteTerm::AlternativeDisjunction());
+
+ currentAlternativeIndex = newAlternativeIndex;
+ }
+
+ void emitDisjunction(PatternDisjunction* disjunction, unsigned inputCountAlreadyChecked = 0, unsigned parenthesesInputCountAlreadyChecked = 0)
+ {
+ for (unsigned alt = 0; alt < disjunction->m_alternatives.size(); ++alt) {
+ unsigned currentCountAlreadyChecked = inputCountAlreadyChecked;
+
+ if (alt) {
+ if (disjunction == m_pattern.m_body)
+ alterantiveBodyDisjunction();
+ else
+ alterantiveDisjunction();
+ }
+
+ PatternAlternative* alternative = disjunction->m_alternatives[alt];
+ unsigned minimumSize = alternative->m_minimumSize;
+
+ ASSERT(minimumSize >= parenthesesInputCountAlreadyChecked);
+ unsigned countToCheck = minimumSize - parenthesesInputCountAlreadyChecked;
+ if (countToCheck)
+ checkInput(countToCheck);
+ currentCountAlreadyChecked += countToCheck;
+
+ for (unsigned i = 0; i < alternative->m_terms.size(); ++i) {
+ PatternTerm& term = alternative->m_terms[i];
+
+ switch (term.type) {
+ case PatternTerm::TypeAssertionBOL:
+ assertionBOL(term.inputPosition - currentCountAlreadyChecked);
+ break;
+
+ case PatternTerm::TypeAssertionEOL:
+ assertionEOL(term.inputPosition - currentCountAlreadyChecked);
+ break;
+
+ case PatternTerm::TypeAssertionWordBoundary:
+ assertionWordBoundary(term.invertOrCapture, term.inputPosition - currentCountAlreadyChecked);
+ break;
+
+ case PatternTerm::TypePatternCharacter:
+ atomPatternCharacter(term.patternCharacter, term.inputPosition - currentCountAlreadyChecked, term.frameLocation, term.quantityCount, term.quantityType);
+ break;
+
+ case PatternTerm::TypeCharacterClass:
+ atomCharacterClass(term.characterClass, term.invertOrCapture, term.inputPosition - currentCountAlreadyChecked, term.frameLocation, term.quantityCount, term.quantityType);
+ break;
+
+ case PatternTerm::TypeBackReference:
+ atomBackReference(term.subpatternId, term.inputPosition - currentCountAlreadyChecked, term.frameLocation, term.quantityCount, term.quantityType);
+ break;
+
+ case PatternTerm::TypeForwardReference:
+ break;
+
+ case PatternTerm::TypeParenthesesSubpattern: {
+ unsigned disjunctionAlreadyCheckedCount = 0;
+ if ((term.quantityCount == 1) && !term.parentheses.isCopy) {
+ if (term.quantityType == QuantifierFixedCount) {
+ disjunctionAlreadyCheckedCount = term.parentheses.disjunction->m_minimumSize;
+ unsigned delegateEndInputOffset = term.inputPosition - currentCountAlreadyChecked;
+ atomParenthesesSubpatternBegin(term.parentheses.subpatternId, term.invertOrCapture, delegateEndInputOffset - disjunctionAlreadyCheckedCount, term.frameLocation, term.frameLocation);
+ emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, term.parentheses.disjunction->m_minimumSize);
+ atomParenthesesEnd(true, term.parentheses.lastSubpatternId, delegateEndInputOffset, term.frameLocation, term.quantityCount, term.quantityType, term.parentheses.disjunction->m_callFrameSize);
+ } else {
+ unsigned delegateEndInputOffset = term.inputPosition - currentCountAlreadyChecked;
+ atomParenthesesSubpatternBegin(term.parentheses.subpatternId, term.invertOrCapture, delegateEndInputOffset - disjunctionAlreadyCheckedCount, term.frameLocation, term.frameLocation + RegexStackSpaceForBackTrackInfoParenthesesOnce);
+ emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, 0);
+ atomParenthesesEnd(true, term.parentheses.lastSubpatternId, delegateEndInputOffset, term.frameLocation, term.quantityCount, term.quantityType, term.parentheses.disjunction->m_callFrameSize);
+ }
+ } else {
+ unsigned delegateEndInputOffset = term.inputPosition - currentCountAlreadyChecked;
+ atomParenthesesSubpatternBegin(term.parentheses.subpatternId, term.invertOrCapture, delegateEndInputOffset - disjunctionAlreadyCheckedCount, term.frameLocation, 0);
+ emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, 0);
+ atomParenthesesEnd(false, term.parentheses.lastSubpatternId, delegateEndInputOffset, term.frameLocation, term.quantityCount, term.quantityType, term.parentheses.disjunction->m_callFrameSize);
+ }
+ break;
+ }
+
+ case PatternTerm::TypeParentheticalAssertion: {
+ unsigned alternativeFrameLocation = term.inputPosition + RegexStackSpaceForBackTrackInfoParentheticalAssertion;
+
+ atomParentheticalAssertionBegin(term.parentheses.subpatternId, term.invertOrCapture, term.frameLocation, alternativeFrameLocation);
+ emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, 0);
+ atomParenthesesEnd(true, term.parentheses.lastSubpatternId, 0, term.frameLocation, term.quantityCount, term.quantityType);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+private:
+ RegexPattern& m_pattern;
+ ByteDisjunction* bodyDisjunction;
+ unsigned currentAlternativeIndex;
+ Vector<ParenthesesStackEntry> m_parenthesesStack;
+ Vector<ByteDisjunction*> m_allParenthesesInfo;
+};
+
+
+BytecodePattern* byteCompileRegex(const UString& patternString, unsigned& numSubpatterns, const char*& error, bool ignoreCase, bool multiline)
+{
+ RegexPattern pattern(ignoreCase, multiline);
+
+ if ((error = compileRegex(patternString, pattern)))
+ return 0;
+
+ numSubpatterns = pattern.m_numSubpatterns;
+
+ return ByteCompiler(pattern).compile();
+}
+
+int interpretRegex(BytecodePattern* regex, const UChar* input, unsigned start, unsigned length, int* output)
+{
+ return Interpreter(regex, output, input, start, length).interpret();
+}
+
+
+COMPILE_ASSERT(sizeof(Interpreter::BackTrackInfoPatternCharacter) == (RegexStackSpaceForBackTrackInfoPatternCharacter * sizeof(uintptr_t)), CheckRegexStackSpaceForBackTrackInfoPatternCharacter);
+COMPILE_ASSERT(sizeof(Interpreter::BackTrackInfoCharacterClass) == (RegexStackSpaceForBackTrackInfoCharacterClass * sizeof(uintptr_t)), CheckRegexStackSpaceForBackTrackInfoCharacterClass);
+COMPILE_ASSERT(sizeof(Interpreter::BackTrackInfoBackReference) == (RegexStackSpaceForBackTrackInfoBackReference * sizeof(uintptr_t)), CheckRegexStackSpaceForBackTrackInfoBackReference);
+COMPILE_ASSERT(sizeof(Interpreter::BackTrackInfoAlternative) == (RegexStackSpaceForBackTrackInfoAlternative * sizeof(uintptr_t)), CheckRegexStackSpaceForBackTrackInfoAlternative);
+COMPILE_ASSERT(sizeof(Interpreter::BackTrackInfoParentheticalAssertion) == (RegexStackSpaceForBackTrackInfoParentheticalAssertion * sizeof(uintptr_t)), CheckRegexStackSpaceForBackTrackInfoParentheticalAssertion);
+COMPILE_ASSERT(sizeof(Interpreter::BackTrackInfoParenthesesOnce) == (RegexStackSpaceForBackTrackInfoParenthesesOnce * sizeof(uintptr_t)), CheckRegexStackSpaceForBackTrackInfoParenthesesOnce);
+COMPILE_ASSERT(sizeof(Interpreter::BackTrackInfoParentheses) == (RegexStackSpaceForBackTrackInfoParentheses * sizeof(uintptr_t)), CheckRegexStackSpaceForBackTrackInfoParentheses);
+
+
+} }
+
+#endif
diff --git a/src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.h b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.h
new file mode 100644
index 0000000..a8c122a
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.h
@@ -0,0 +1,337 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RegexInterpreter_h
+#define RegexInterpreter_h
+
+#include <wtf/Platform.h>
+
+#if ENABLE(YARR)
+
+#include <wtf/unicode/Unicode.h>
+#include "RegexParser.h"
+#include "RegexPattern.h"
+
+namespace JSC { namespace Yarr {
+
+class ByteDisjunction;
+
+struct ByteTerm {
+ enum Type {
+ TypeBodyAlternativeBegin,
+ TypeBodyAlternativeDisjunction,
+ TypeBodyAlternativeEnd,
+ TypeAlternativeBegin,
+ TypeAlternativeDisjunction,
+ TypeAlternativeEnd,
+ TypeSubpatternBegin,
+ TypeSubpatternEnd,
+ TypeAssertionBOL,
+ TypeAssertionEOL,
+ TypeAssertionWordBoundary,
+ TypePatternCharacterOnce,
+ TypePatternCharacterFixed,
+ TypePatternCharacterGreedy,
+ TypePatternCharacterNonGreedy,
+ TypePatternCasedCharacterOnce,
+ TypePatternCasedCharacterFixed,
+ TypePatternCasedCharacterGreedy,
+ TypePatternCasedCharacterNonGreedy,
+ TypeCharacterClass,
+ TypeBackReference,
+ TypeParenthesesSubpattern,
+ TypeParenthesesSubpatternOnceBegin,
+ TypeParenthesesSubpatternOnceEnd,
+ TypeParentheticalAssertionBegin,
+ TypeParentheticalAssertionEnd,
+ TypeCheckInput,
+ } type;
+ bool invertOrCapture;
+ union {
+ struct {
+ union {
+ UChar patternCharacter;
+ struct {
+ UChar lo;
+ UChar hi;
+ } casedCharacter;
+ CharacterClass* characterClass;
+ unsigned subpatternId;
+ };
+ union {
+ ByteDisjunction* parenthesesDisjunction;
+ unsigned parenthesesWidth;
+ };
+ QuantifierType quantityType;
+ unsigned quantityCount;
+ } atom;
+ struct {
+ int next;
+ int end;
+ } alternative;
+ unsigned checkInputCount;
+ };
+ unsigned frameLocation;
+ int inputPosition;
+
+ ByteTerm(UChar ch, int inputPos, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType)
+ : frameLocation(frameLocation)
+ {
+ switch (quantityType) {
+ case QuantifierFixedCount:
+ type = (quantityCount == 1) ? ByteTerm::TypePatternCharacterOnce : ByteTerm::TypePatternCharacterFixed;
+ break;
+ case QuantifierGreedy:
+ type = ByteTerm::TypePatternCharacterGreedy;
+ break;
+ case QuantifierNonGreedy:
+ type = ByteTerm::TypePatternCharacterNonGreedy;
+ break;
+ }
+
+ atom.patternCharacter = ch;
+ atom.quantityType = quantityType;
+ atom.quantityCount = quantityCount;
+ inputPosition = inputPos;
+ }
+
+ ByteTerm(UChar lo, UChar hi, int inputPos, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType)
+ : frameLocation(frameLocation)
+ {
+ switch (quantityType) {
+ case QuantifierFixedCount:
+ type = (quantityCount == 1) ? ByteTerm::TypePatternCasedCharacterOnce : ByteTerm::TypePatternCasedCharacterFixed;
+ break;
+ case QuantifierGreedy:
+ type = ByteTerm::TypePatternCasedCharacterGreedy;
+ break;
+ case QuantifierNonGreedy:
+ type = ByteTerm::TypePatternCasedCharacterNonGreedy;
+ break;
+ }
+
+ atom.casedCharacter.lo = lo;
+ atom.casedCharacter.hi = hi;
+ atom.quantityType = quantityType;
+ atom.quantityCount = quantityCount;
+ inputPosition = inputPos;
+ }
+
+ ByteTerm(CharacterClass* characterClass, bool invert, int inputPos)
+ : type(ByteTerm::TypeCharacterClass)
+ , invertOrCapture(invert)
+ {
+ atom.characterClass = characterClass;
+ atom.quantityType = QuantifierFixedCount;
+ atom.quantityCount = 1;
+ inputPosition = inputPos;
+ }
+
+ ByteTerm(Type type, unsigned subpatternId, ByteDisjunction* parenthesesInfo, bool invertOrCapture, int inputPos)
+ : type(type)
+ , invertOrCapture(invertOrCapture)
+ {
+ atom.subpatternId = subpatternId;
+ atom.parenthesesDisjunction = parenthesesInfo;
+ atom.quantityType = QuantifierFixedCount;
+ atom.quantityCount = 1;
+ inputPosition = inputPos;
+ }
+
+ ByteTerm(Type type, bool invert = false)
+ : type(type)
+ , invertOrCapture(invert)
+ {
+ atom.quantityType = QuantifierFixedCount;
+ atom.quantityCount = 1;
+ }
+
+ ByteTerm(Type type, unsigned subpatternId, bool invertOrCapture, int inputPos)
+ : type(type)
+ , invertOrCapture(invertOrCapture)
+ {
+ atom.subpatternId = subpatternId;
+ atom.quantityType = QuantifierFixedCount;
+ atom.quantityCount = 1;
+ inputPosition = inputPos;
+ }
+
+ static ByteTerm BOL(int inputPos)
+ {
+ ByteTerm term(TypeAssertionBOL);
+ term.inputPosition = inputPos;
+ return term;
+ }
+
+ static ByteTerm CheckInput(unsigned count)
+ {
+ ByteTerm term(TypeCheckInput);
+ term.checkInputCount = count;
+ return term;
+ }
+
+ static ByteTerm EOL(int inputPos)
+ {
+ ByteTerm term(TypeAssertionEOL);
+ term.inputPosition = inputPos;
+ return term;
+ }
+
+ static ByteTerm WordBoundary(bool invert, int inputPos)
+ {
+ ByteTerm term(TypeAssertionWordBoundary, invert);
+ term.inputPosition = inputPos;
+ return term;
+ }
+
+ static ByteTerm BackReference(unsigned subpatternId, int inputPos)
+ {
+ return ByteTerm(TypeBackReference, subpatternId, false, inputPos);
+ }
+
+ static ByteTerm BodyAlternativeBegin()
+ {
+ ByteTerm term(TypeBodyAlternativeBegin);
+ term.alternative.next = 0;
+ term.alternative.end = 0;
+ return term;
+ }
+
+ static ByteTerm BodyAlternativeDisjunction()
+ {
+ ByteTerm term(TypeBodyAlternativeDisjunction);
+ term.alternative.next = 0;
+ term.alternative.end = 0;
+ return term;
+ }
+
+ static ByteTerm BodyAlternativeEnd()
+ {
+ ByteTerm term(TypeBodyAlternativeEnd);
+ term.alternative.next = 0;
+ term.alternative.end = 0;
+ return term;
+ }
+
+ static ByteTerm AlternativeBegin()
+ {
+ ByteTerm term(TypeAlternativeBegin);
+ term.alternative.next = 0;
+ term.alternative.end = 0;
+ return term;
+ }
+
+ static ByteTerm AlternativeDisjunction()
+ {
+ ByteTerm term(TypeAlternativeDisjunction);
+ term.alternative.next = 0;
+ term.alternative.end = 0;
+ return term;
+ }
+
+ static ByteTerm AlternativeEnd()
+ {
+ ByteTerm term(TypeAlternativeEnd);
+ term.alternative.next = 0;
+ term.alternative.end = 0;
+ return term;
+ }
+
+ static ByteTerm SubpatternBegin()
+ {
+ return ByteTerm(TypeSubpatternBegin);
+ }
+
+ static ByteTerm SubpatternEnd()
+ {
+ return ByteTerm(TypeSubpatternEnd);
+ }
+
+ bool invert()
+ {
+ return invertOrCapture;
+ }
+
+ bool capture()
+ {
+ return invertOrCapture;
+ }
+};
+
+class ByteDisjunction {
+public:
+ ByteDisjunction(unsigned numSubpatterns, unsigned frameSize)
+ : m_numSubpatterns(numSubpatterns)
+ , m_frameSize(frameSize)
+ {
+ }
+
+ Vector<ByteTerm> terms;
+ unsigned m_numSubpatterns;
+ unsigned m_frameSize;
+};
+
+struct BytecodePattern {
+ BytecodePattern(ByteDisjunction* body, Vector<ByteDisjunction*> allParenthesesInfo, RegexPattern& pattern)
+ : m_body(body)
+ , m_ignoreCase(pattern.m_ignoreCase)
+ , m_multiline(pattern.m_multiline)
+ {
+ newlineCharacterClass = pattern.newlineCharacterClass();
+ wordcharCharacterClass = pattern.wordcharCharacterClass();
+
+ m_allParenthesesInfo.append(allParenthesesInfo);
+ m_userCharacterClasses.append(pattern.m_userCharacterClasses);
+ // 'Steal' the RegexPattern's CharacterClasses! We clear its
+ // array, so that it won't delete them on destruction. We'll
+ // take responsibility for that.
+ pattern.m_userCharacterClasses.clear();
+ }
+
+ ~BytecodePattern()
+ {
+ deleteAllValues(m_allParenthesesInfo);
+ deleteAllValues(m_userCharacterClasses);
+ }
+
+ OwnPtr<ByteDisjunction> m_body;
+ bool m_ignoreCase;
+ bool m_multiline;
+
+ CharacterClass* newlineCharacterClass;
+ CharacterClass* wordcharCharacterClass;
+private:
+ Vector<ByteDisjunction*> m_allParenthesesInfo;
+ Vector<CharacterClass*> m_userCharacterClasses;
+};
+
+BytecodePattern* byteCompileRegex(const UString& pattern, unsigned& numSubpatterns, const char*& error, bool ignoreCase = false, bool multiline = false);
+int interpretRegex(BytecodePattern* v_regex, const UChar* input, unsigned start, unsigned length, int* output);
+
+} } // namespace JSC::Yarr
+
+#endif
+
+#endif // RegexInterpreter_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.cpp b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.cpp
new file mode 100644
index 0000000..a64dd8d
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.cpp
@@ -0,0 +1,1390 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "RegexJIT.h"
+
+#include "ASCIICType.h"
+#include "JSGlobalData.h"
+#include "MacroAssembler.h"
+#include "RegexCompiler.h"
+
+#include "pcre.h" // temporary, remove when fallback is removed.
+
+#if ENABLE(YARR_JIT)
+
+using namespace WTF;
+
+namespace JSC { namespace Yarr {
+
+
+class RegexGenerator : private MacroAssembler {
+ friend void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& pattern, unsigned& numSubpatterns, const char*& error, bool ignoreCase, bool multiline);
+
+#if PLATFORM(X86)
+ static const RegisterID input = X86::eax;
+ static const RegisterID index = X86::edx;
+ static const RegisterID length = X86::ecx;
+ static const RegisterID output = X86::edi;
+
+ static const RegisterID regT0 = X86::ebx;
+ static const RegisterID regT1 = X86::esi;
+
+ static const RegisterID returnRegister = X86::eax;
+#endif
+#if PLATFORM(X86_64)
+ static const RegisterID input = X86::edi;
+ static const RegisterID index = X86::esi;
+ static const RegisterID length = X86::edx;
+ static const RegisterID output = X86::ecx;
+
+ static const RegisterID regT0 = X86::eax;
+ static const RegisterID regT1 = X86::ebx;
+
+ static const RegisterID returnRegister = X86::eax;
+#endif
+
+ void optimizeAlternative(PatternAlternative* alternative)
+ {
+ if (!alternative->m_terms.size())
+ return;
+
+ for (unsigned i = 0; i < alternative->m_terms.size() - 1; ++i) {
+ PatternTerm& term = alternative->m_terms[i];
+ PatternTerm& nextTerm = alternative->m_terms[i + 1];
+
+ if ((term.type == PatternTerm::TypeCharacterClass)
+ && (term.quantityType == QuantifierFixedCount)
+ && (nextTerm.type == PatternTerm::TypePatternCharacter)
+ && (nextTerm.quantityType == QuantifierFixedCount)) {
+ PatternTerm termCopy = term;
+ alternative->m_terms[i] = nextTerm;
+ alternative->m_terms[i + 1] = termCopy;
+ }
+ }
+ }
+
+ void matchCharacterClassRange(RegisterID character, JumpList& failures, JumpList& matchDest, const CharacterRange* ranges, unsigned count, unsigned* matchIndex, const UChar* matches, unsigned matchCount)
+ {
+ do {
+ // pick which range we're going to generate
+ int which = count >> 1;
+ char lo = ranges[which].begin;
+ char hi = ranges[which].end;
+
+ // check if there are any ranges or matches below lo. If not, just jl to failure -
+ // if there is anything else to check, check that first, if it falls through jmp to failure.
+ if ((*matchIndex < matchCount) && (matches[*matchIndex] < lo)) {
+ Jump loOrAbove = branch32(GreaterThanOrEqual, character, Imm32((unsigned short)lo));
+
+ // generate code for all ranges before this one
+ if (which)
+ matchCharacterClassRange(character, failures, matchDest, ranges, which, matchIndex, matches, matchCount);
+
+ while ((*matchIndex < matchCount) && (matches[*matchIndex] < lo)) {
+ matchDest.append(branch32(Equal, character, Imm32((unsigned short)matches[*matchIndex])));
+ ++*matchIndex;
+ }
+ failures.append(jump());
+
+ loOrAbove.link(this);
+ } else if (which) {
+ Jump loOrAbove = branch32(GreaterThanOrEqual, character, Imm32((unsigned short)lo));
+
+ matchCharacterClassRange(character, failures, matchDest, ranges, which, matchIndex, matches, matchCount);
+ failures.append(jump());
+
+ loOrAbove.link(this);
+ } else
+ failures.append(branch32(LessThan, character, Imm32((unsigned short)lo)));
+
+ while ((*matchIndex < matchCount) && (matches[*matchIndex] <= hi))
+ ++*matchIndex;
+
+ matchDest.append(branch32(LessThanOrEqual, character, Imm32((unsigned short)hi)));
+ // fall through to here, the value is above hi.
+
+ // shuffle along & loop around if there are any more matches to handle.
+ unsigned next = which + 1;
+ ranges += next;
+ count -= next;
+ } while (count);
+ }
+
+ void matchCharacterClass(RegisterID character, JumpList& matchDest, const CharacterClass* charClass)
+ {
+ Jump unicodeFail;
+ if (charClass->m_matchesUnicode.size() || charClass->m_rangesUnicode.size()) {
+ Jump isAscii = branch32(LessThanOrEqual, character, Imm32(0x7f));
+
+ if (charClass->m_matchesUnicode.size()) {
+ for (unsigned i = 0; i < charClass->m_matchesUnicode.size(); ++i) {
+ UChar ch = charClass->m_matchesUnicode[i];
+ matchDest.append(branch32(Equal, character, Imm32(ch)));
+ }
+ }
+
+ if (charClass->m_rangesUnicode.size()) {
+ for (unsigned i = 0; i < charClass->m_rangesUnicode.size(); ++i) {
+ UChar lo = charClass->m_rangesUnicode[i].begin;
+ UChar hi = charClass->m_rangesUnicode[i].end;
+
+ Jump below = branch32(LessThan, character, Imm32(lo));
+ matchDest.append(branch32(LessThanOrEqual, character, Imm32(hi)));
+ below.link(this);
+ }
+ }
+
+ unicodeFail = jump();
+ isAscii.link(this);
+ }
+
+ if (charClass->m_ranges.size()) {
+ unsigned matchIndex = 0;
+ JumpList failures;
+ matchCharacterClassRange(character, failures, matchDest, charClass->m_ranges.begin(), charClass->m_ranges.size(), &matchIndex, charClass->m_matches.begin(), charClass->m_matches.size());
+ while (matchIndex < charClass->m_matches.size())
+ matchDest.append(branch32(Equal, character, Imm32((unsigned short)charClass->m_matches[matchIndex++])));
+
+ failures.link(this);
+ } else if (charClass->m_matches.size()) {
+ // optimization: gather 'a','A' etc back together, can mask & test once.
+ Vector<char> matchesAZaz;
+
+ for (unsigned i = 0; i < charClass->m_matches.size(); ++i) {
+ char ch = charClass->m_matches[i];
+ if (m_pattern.m_ignoreCase) {
+ if (isASCIILower(ch)) {
+ matchesAZaz.append(ch);
+ continue;
+ }
+ if (isASCIIUpper(ch))
+ continue;
+ }
+ matchDest.append(branch32(Equal, character, Imm32((unsigned short)ch)));
+ }
+
+ if (unsigned countAZaz = matchesAZaz.size()) {
+ or32(Imm32(32), character);
+ for (unsigned i = 0; i < countAZaz; ++i)
+ matchDest.append(branch32(Equal, character, Imm32(matchesAZaz[i])));
+ }
+ }
+
+ if (charClass->m_matchesUnicode.size() || charClass->m_rangesUnicode.size())
+ unicodeFail.link(this);
+ }
+
+ // Jumps if input not available; will have (incorrectly) incremented already!
+ Jump jumpIfNoAvailableInput(unsigned countToCheck)
+ {
+ add32(Imm32(countToCheck), index);
+ return branch32(Above, index, length);
+ }
+
+ Jump jumpIfAvailableInput(unsigned countToCheck)
+ {
+ add32(Imm32(countToCheck), index);
+ return branch32(BelowOrEqual, index, length);
+ }
+
+ Jump checkInput()
+ {
+ return branch32(BelowOrEqual, index, length);
+ }
+
+ Jump atEndOfInput()
+ {
+ return branch32(Equal, index, length);
+ }
+
+ Jump notAtEndOfInput()
+ {
+ return branch32(NotEqual, index, length);
+ }
+
+ Jump jumpIfCharEquals(UChar ch, int inputPosition)
+ {
+ return branch16(Equal, BaseIndex(input, index, TimesTwo, inputPosition * sizeof(UChar)), Imm32(ch));
+ }
+
+ Jump jumpIfCharNotEquals(UChar ch, int inputPosition)
+ {
+ return branch16(NotEqual, BaseIndex(input, index, TimesTwo, inputPosition * sizeof(UChar)), Imm32(ch));
+ }
+
+ void readCharacter(int inputPosition, RegisterID reg)
+ {
+ load16(BaseIndex(input, index, TimesTwo, inputPosition * sizeof(UChar)), reg);
+ }
+
+ void storeToFrame(RegisterID reg, unsigned frameLocation)
+ {
+ poke(reg, frameLocation);
+ }
+
+ void storeToFrame(Imm32 imm, unsigned frameLocation)
+ {
+ poke(imm, frameLocation);
+ }
+
+ DataLabelPtr storeToFrameWithPatch(unsigned frameLocation)
+ {
+ return storePtrWithPatch(ImmPtr(0), Address(stackPointerRegister, frameLocation * sizeof(void*)));
+ }
+
+ void loadFromFrame(unsigned frameLocation, RegisterID reg)
+ {
+ peek(reg, frameLocation);
+ }
+
+ void loadFromFrameAndJump(unsigned frameLocation)
+ {
+ jump(Address(stackPointerRegister, frameLocation * sizeof(void*)));
+ }
+
+ struct AlternativeBacktrackRecord {
+ DataLabelPtr dataLabel;
+ Label backtrackLocation;
+
+ AlternativeBacktrackRecord(DataLabelPtr dataLabel, Label backtrackLocation)
+ : dataLabel(dataLabel)
+ , backtrackLocation(backtrackLocation)
+ {
+ }
+ };
+
+ struct TermGenerationState {
+ TermGenerationState(PatternDisjunction* disjunction, unsigned checkedTotal)
+ : disjunction(disjunction)
+ , checkedTotal(checkedTotal)
+ {
+ }
+
+ void resetAlternative()
+ {
+ isBackTrackGenerated = false;
+ alt = 0;
+ }
+ bool alternativeValid()
+ {
+ return alt < disjunction->m_alternatives.size();
+ }
+ void nextAlternative()
+ {
+ ++alt;
+ }
+ PatternAlternative* alternative()
+ {
+ return disjunction->m_alternatives[alt];
+ }
+
+ void resetTerm()
+ {
+ ASSERT(alternativeValid());
+ t = 0;
+ }
+ bool termValid()
+ {
+ ASSERT(alternativeValid());
+ return t < alternative()->m_terms.size();
+ }
+ void nextTerm()
+ {
+ ASSERT(alternativeValid());
+ ++t;
+ }
+ PatternTerm& term()
+ {
+ ASSERT(alternativeValid());
+ return alternative()->m_terms[t];
+ }
+
+ PatternTerm& lookaheadTerm()
+ {
+ ASSERT(alternativeValid());
+ ASSERT((t + 1) < alternative()->m_terms.size());
+ return alternative()->m_terms[t + 1];
+ }
+ bool isSinglePatternCharacterLookaheadTerm()
+ {
+ ASSERT(alternativeValid());
+ return ((t + 1) < alternative()->m_terms.size())
+ && (lookaheadTerm().type == PatternTerm::TypePatternCharacter)
+ && (lookaheadTerm().quantityType == QuantifierFixedCount)
+ && (lookaheadTerm().quantityCount == 1);
+ }
+
+ int inputOffset()
+ {
+ return term().inputPosition - checkedTotal;
+ }
+
+ void jumpToBacktrack(Jump jump, MacroAssembler* masm)
+ {
+ if (isBackTrackGenerated)
+ jump.linkTo(backtrackLabel, masm);
+ else
+ backTrackJumps.append(jump);
+ }
+ void jumpToBacktrack(JumpList& jumps, MacroAssembler* masm)
+ {
+ if (isBackTrackGenerated)
+ jumps.linkTo(backtrackLabel, masm);
+ else
+ backTrackJumps.append(jumps);
+ }
+ bool plantJumpToBacktrackIfExists(MacroAssembler* masm)
+ {
+ if (isBackTrackGenerated) {
+ masm->jump(backtrackLabel);
+ return true;
+ }
+ return false;
+ }
+ void addBacktrackJump(Jump jump)
+ {
+ backTrackJumps.append(jump);
+ }
+ void setBacktrackGenerated(Label label)
+ {
+ isBackTrackGenerated = true;
+ backtrackLabel = label;
+ }
+ void linkAlternativeBacktracks(MacroAssembler* masm)
+ {
+ isBackTrackGenerated = false;
+ backTrackJumps.link(masm);
+ }
+ void linkAlternativeBacktracksTo(Label label, MacroAssembler* masm)
+ {
+ isBackTrackGenerated = false;
+ backTrackJumps.linkTo(label, masm);
+ }
+ void propagateBacktrackingFrom(TermGenerationState& nestedParenthesesState, MacroAssembler* masm)
+ {
+ jumpToBacktrack(nestedParenthesesState.backTrackJumps, masm);
+ if (nestedParenthesesState.isBackTrackGenerated)
+ setBacktrackGenerated(nestedParenthesesState.backtrackLabel);
+ }
+
+ PatternDisjunction* disjunction;
+ int checkedTotal;
+ private:
+ unsigned alt;
+ unsigned t;
+ JumpList backTrackJumps;
+ Label backtrackLabel;
+ bool isBackTrackGenerated;
+ };
+
+ void generateAssertionBOL(TermGenerationState& state)
+ {
+ PatternTerm& term = state.term();
+
+ if (m_pattern.m_multiline) {
+ const RegisterID character = regT0;
+
+ JumpList matchDest;
+ if (!term.inputPosition)
+ matchDest.append(branch32(Equal, index, Imm32(state.checkedTotal)));
+
+ readCharacter(state.inputOffset() - 1, character);
+ matchCharacterClass(character, matchDest, m_pattern.newlineCharacterClass());
+ state.jumpToBacktrack(jump(), this);
+
+ matchDest.link(this);
+ } else {
+ // Erk, really should poison out these alternatives early. :-/
+ if (term.inputPosition)
+ state.jumpToBacktrack(jump(), this);
+ else
+ state.jumpToBacktrack(branch32(NotEqual, index, Imm32(state.checkedTotal)), this);
+ }
+ }
+
+ void generateAssertionEOL(TermGenerationState& state)
+ {
+ PatternTerm& term = state.term();
+
+ if (m_pattern.m_multiline) {
+ const RegisterID character = regT0;
+
+ JumpList matchDest;
+ if (term.inputPosition == state.checkedTotal)
+ matchDest.append(atEndOfInput());
+
+ readCharacter(state.inputOffset(), character);
+ matchCharacterClass(character, matchDest, m_pattern.newlineCharacterClass());
+ state.jumpToBacktrack(jump(), this);
+
+ matchDest.link(this);
+ } else {
+ if (term.inputPosition == state.checkedTotal)
+ state.jumpToBacktrack(notAtEndOfInput(), this);
+ // Erk, really should poison out these alternatives early. :-/
+ else
+ state.jumpToBacktrack(jump(), this);
+ }
+ }
+
+ // Also falls though on nextIsNotWordChar.
+ void matchAssertionWordchar(TermGenerationState& state, JumpList& nextIsWordChar, JumpList& nextIsNotWordChar)
+ {
+ const RegisterID character = regT0;
+ PatternTerm& term = state.term();
+
+ if (term.inputPosition == state.checkedTotal)
+ nextIsNotWordChar.append(atEndOfInput());
+
+ readCharacter(state.inputOffset(), character);
+ matchCharacterClass(character, nextIsWordChar, m_pattern.wordcharCharacterClass());
+ }
+
+ void generateAssertionWordBoundary(TermGenerationState& state)
+ {
+ const RegisterID character = regT0;
+ PatternTerm& term = state.term();
+
+ Jump atBegin;
+ JumpList matchDest;
+ if (!term.inputPosition)
+ atBegin = branch32(Equal, index, Imm32(state.checkedTotal));
+ readCharacter(state.inputOffset() - 1, character);
+ matchCharacterClass(character, matchDest, m_pattern.wordcharCharacterClass());
+ if (!term.inputPosition)
+ atBegin.link(this);
+
+ // We fall through to here if the last character was not a wordchar.
+ JumpList nonWordCharThenWordChar;
+ JumpList nonWordCharThenNonWordChar;
+ if (term.invertOrCapture) {
+ matchAssertionWordchar(state, nonWordCharThenNonWordChar, nonWordCharThenWordChar);
+ nonWordCharThenWordChar.append(jump());
+ } else {
+ matchAssertionWordchar(state, nonWordCharThenWordChar, nonWordCharThenNonWordChar);
+ nonWordCharThenNonWordChar.append(jump());
+ }
+ state.jumpToBacktrack(nonWordCharThenNonWordChar, this);
+
+ // We jump here if the last character was a wordchar.
+ matchDest.link(this);
+ JumpList wordCharThenWordChar;
+ JumpList wordCharThenNonWordChar;
+ if (term.invertOrCapture) {
+ matchAssertionWordchar(state, wordCharThenNonWordChar, wordCharThenWordChar);
+ wordCharThenWordChar.append(jump());
+ } else {
+ matchAssertionWordchar(state, wordCharThenWordChar, wordCharThenNonWordChar);
+ // This can fall-though!
+ }
+
+ state.jumpToBacktrack(wordCharThenWordChar, this);
+
+ nonWordCharThenWordChar.link(this);
+ wordCharThenNonWordChar.link(this);
+ }
+
+ void generatePatternCharacterSingle(TermGenerationState& state)
+ {
+ const RegisterID character = regT0;
+ UChar ch = state.term().patternCharacter;
+
+ if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) {
+ readCharacter(state.inputOffset(), character);
+ or32(Imm32(32), character);
+ state.jumpToBacktrack(branch32(NotEqual, character, Imm32(Unicode::toLower(ch))), this);
+ } else {
+ ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch)));
+ state.jumpToBacktrack(jumpIfCharNotEquals(ch, state.inputOffset()), this);
+ }
+ }
+
+ void generatePatternCharacterPair(TermGenerationState& state)
+ {
+ const RegisterID character = regT0;
+ UChar ch1 = state.term().patternCharacter;
+ UChar ch2 = state.lookaheadTerm().patternCharacter;
+
+ int mask = 0;
+ int chPair = ch1 | (ch2 << 16);
+
+ if (m_pattern.m_ignoreCase) {
+ if (isASCIIAlpha(ch1))
+ mask |= 32;
+ if (isASCIIAlpha(ch2))
+ mask |= 32 << 16;
+ }
+
+ if (mask) {
+ load32(BaseIndex(input, index, TimesTwo, state.inputOffset() * sizeof(UChar)), character);
+ or32(Imm32(mask), character);
+ state.jumpToBacktrack(branch32(NotEqual, character, Imm32(chPair | mask)), this);
+ } else
+ state.jumpToBacktrack(branch32(NotEqual, BaseIndex(input, index, TimesTwo, state.inputOffset() * sizeof(UChar)), Imm32(chPair)), this);
+ }
+
+ void generatePatternCharacterFixed(TermGenerationState& state)
+ {
+ const RegisterID character = regT0;
+ const RegisterID countRegister = regT1;
+ PatternTerm& term = state.term();
+ UChar ch = term.patternCharacter;
+
+ move(index, countRegister);
+ sub32(Imm32(term.quantityCount), countRegister);
+
+ Label loop(this);
+ if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) {
+ load16(BaseIndex(input, countRegister, TimesTwo, (state.inputOffset() + term.quantityCount) * sizeof(UChar)), character);
+ or32(Imm32(32), character);
+ state.jumpToBacktrack(branch32(NotEqual, character, Imm32(Unicode::toLower(ch))), this);
+ } else {
+ ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch)));
+ state.jumpToBacktrack(branch16(NotEqual, BaseIndex(input, countRegister, TimesTwo, (state.inputOffset() + term.quantityCount) * sizeof(UChar)), Imm32(ch)), this);
+ }
+ add32(Imm32(1), countRegister);
+ branch32(NotEqual, countRegister, index).linkTo(loop, this);
+ }
+
+ void generatePatternCharacterGreedy(TermGenerationState& state)
+ {
+ const RegisterID character = regT0;
+ const RegisterID countRegister = regT1;
+ PatternTerm& term = state.term();
+ UChar ch = term.patternCharacter;
+
+ move(Imm32(0), countRegister);
+
+ JumpList failures;
+ Label loop(this);
+ failures.append(atEndOfInput());
+ if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) {
+ readCharacter(state.inputOffset(), character);
+ or32(Imm32(32), character);
+ failures.append(branch32(NotEqual, character, Imm32(Unicode::toLower(ch))));
+ } else {
+ ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch)));
+ failures.append(jumpIfCharNotEquals(ch, state.inputOffset()));
+ }
+ add32(Imm32(1), countRegister);
+ add32(Imm32(1), index);
+ branch32(NotEqual, countRegister, Imm32(term.quantityCount)).linkTo(loop, this);
+ failures.append(jump());
+
+ Label backtrackBegin(this);
+ loadFromFrame(term.frameLocation, countRegister);
+ state.jumpToBacktrack(branchTest32(Zero, countRegister), this);
+ sub32(Imm32(1), countRegister);
+ sub32(Imm32(1), index);
+
+ failures.link(this);
+
+ storeToFrame(countRegister, term.frameLocation);
+
+ state.setBacktrackGenerated(backtrackBegin);
+ }
+
+ void generatePatternCharacterNonGreedy(TermGenerationState& state)
+ {
+ const RegisterID character = regT0;
+ const RegisterID countRegister = regT1;
+ PatternTerm& term = state.term();
+ UChar ch = term.patternCharacter;
+
+ move(Imm32(0), countRegister);
+
+ Jump firstTimeDoNothing = jump();
+
+ Label hardFail(this);
+ sub32(countRegister, index);
+ state.jumpToBacktrack(jump(), this);
+
+ Label backtrackBegin(this);
+ loadFromFrame(term.frameLocation, countRegister);
+
+ atEndOfInput().linkTo(hardFail, this);
+ branch32(Equal, countRegister, Imm32(term.quantityCount), hardFail);
+ if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) {
+ readCharacter(state.inputOffset(), character);
+ or32(Imm32(32), character);
+ branch32(NotEqual, character, Imm32(Unicode::toLower(ch))).linkTo(hardFail, this);
+ } else {
+ ASSERT(!m_pattern.m_ignoreCase || (Unicode::toLower(ch) == Unicode::toUpper(ch)));
+ jumpIfCharNotEquals(ch, state.inputOffset()).linkTo(hardFail, this);
+ }
+
+ add32(Imm32(1), countRegister);
+ add32(Imm32(1), index);
+
+ firstTimeDoNothing.link(this);
+ storeToFrame(countRegister, term.frameLocation);
+
+ state.setBacktrackGenerated(backtrackBegin);
+ }
+
+ void generateCharacterClassSingle(TermGenerationState& state)
+ {
+ const RegisterID character = regT0;
+ PatternTerm& term = state.term();
+
+ JumpList matchDest;
+ readCharacter(state.inputOffset(), character);
+ matchCharacterClass(character, matchDest, term.characterClass);
+
+ if (term.invertOrCapture)
+ state.jumpToBacktrack(matchDest, this);
+ else {
+ state.jumpToBacktrack(jump(), this);
+ matchDest.link(this);
+ }
+ }
+
+ void generateCharacterClassFixed(TermGenerationState& state)
+ {
+ const RegisterID character = regT0;
+ const RegisterID countRegister = regT1;
+ PatternTerm& term = state.term();
+
+ move(index, countRegister);
+ sub32(Imm32(term.quantityCount), countRegister);
+
+ Label loop(this);
+ JumpList matchDest;
+ load16(BaseIndex(input, countRegister, TimesTwo, (state.inputOffset() + term.quantityCount) * sizeof(UChar)), character);
+ matchCharacterClass(character, matchDest, term.characterClass);
+
+ if (term.invertOrCapture)
+ state.jumpToBacktrack(matchDest, this);
+ else {
+ state.jumpToBacktrack(jump(), this);
+ matchDest.link(this);
+ }
+
+ add32(Imm32(1), countRegister);
+ branch32(NotEqual, countRegister, index).linkTo(loop, this);
+ }
+
+ void generateCharacterClassGreedy(TermGenerationState& state)
+ {
+ const RegisterID character = regT0;
+ const RegisterID countRegister = regT1;
+ PatternTerm& term = state.term();
+
+ move(Imm32(0), countRegister);
+
+ JumpList failures;
+ Label loop(this);
+ failures.append(atEndOfInput());
+
+ if (term.invertOrCapture) {
+ readCharacter(state.inputOffset(), character);
+ matchCharacterClass(character, failures, term.characterClass);
+ } else {
+ JumpList matchDest;
+ readCharacter(state.inputOffset(), character);
+ matchCharacterClass(character, matchDest, term.characterClass);
+ failures.append(jump());
+ matchDest.link(this);
+ }
+
+ add32(Imm32(1), countRegister);
+ add32(Imm32(1), index);
+ branch32(NotEqual, countRegister, Imm32(term.quantityCount)).linkTo(loop, this);
+ failures.append(jump());
+
+ Label backtrackBegin(this);
+ loadFromFrame(term.frameLocation, countRegister);
+ state.jumpToBacktrack(branchTest32(Zero, countRegister), this);
+ sub32(Imm32(1), countRegister);
+ sub32(Imm32(1), index);
+
+ failures.link(this);
+
+ storeToFrame(countRegister, term.frameLocation);
+
+ state.setBacktrackGenerated(backtrackBegin);
+ }
+
+ void generateCharacterClassNonGreedy(TermGenerationState& state)
+ {
+ const RegisterID character = regT0;
+ const RegisterID countRegister = regT1;
+ PatternTerm& term = state.term();
+
+ move(Imm32(0), countRegister);
+
+ Jump firstTimeDoNothing = jump();
+
+ Label hardFail(this);
+ sub32(countRegister, index);
+ state.jumpToBacktrack(jump(), this);
+
+ Label backtrackBegin(this);
+ loadFromFrame(term.frameLocation, countRegister);
+
+ atEndOfInput().linkTo(hardFail, this);
+ branch32(Equal, countRegister, Imm32(term.quantityCount), hardFail);
+
+ JumpList matchDest;
+ readCharacter(state.inputOffset(), character);
+ matchCharacterClass(character, matchDest, term.characterClass);
+
+ if (term.invertOrCapture)
+ matchDest.linkTo(hardFail, this);
+ else {
+ jump(hardFail);
+ matchDest.link(this);
+ }
+
+ add32(Imm32(1), countRegister);
+ add32(Imm32(1), index);
+
+ firstTimeDoNothing.link(this);
+ storeToFrame(countRegister, term.frameLocation);
+
+ state.setBacktrackGenerated(backtrackBegin);
+ }
+
+ void generateParenthesesDisjunction(PatternTerm& parenthesesTerm, TermGenerationState& state, unsigned alternativeFrameLocation)
+ {
+ ASSERT((parenthesesTerm.type == PatternTerm::TypeParenthesesSubpattern) || (parenthesesTerm.type == PatternTerm::TypeParentheticalAssertion));
+ ASSERT(parenthesesTerm.quantityCount == 1);
+
+ PatternDisjunction* disjunction = parenthesesTerm.parentheses.disjunction;
+ unsigned preCheckedCount = ((parenthesesTerm.quantityType == QuantifierFixedCount) && (parenthesesTerm.type != PatternTerm::TypeParentheticalAssertion)) ? disjunction->m_minimumSize : 0;
+
+ if (disjunction->m_alternatives.size() == 1) {
+ state.resetAlternative();
+ ASSERT(state.alternativeValid());
+ PatternAlternative* alternative = state.alternative();
+ optimizeAlternative(alternative);
+
+ int countToCheck = alternative->m_minimumSize - preCheckedCount;
+ if (countToCheck) {
+ ASSERT((parenthesesTerm.type == PatternTerm::TypeParentheticalAssertion) || (parenthesesTerm.quantityType != QuantifierFixedCount));
+
+ // FIXME: This is quite horrible. The call to 'plantJumpToBacktrackIfExists'
+ // will be forced to always trampoline into here, just to decrement the index.
+ // Ick.
+ Jump skip = jump();
+
+ Label backtrackBegin(this);
+ sub32(Imm32(countToCheck), index);
+ state.addBacktrackJump(jump());
+
+ skip.link(this);
+
+ state.setBacktrackGenerated(backtrackBegin);
+
+ state.jumpToBacktrack(jumpIfNoAvailableInput(countToCheck), this);
+ state.checkedTotal += countToCheck;
+ }
+
+ for (state.resetTerm(); state.termValid(); state.nextTerm())
+ generateTerm(state);
+
+ state.checkedTotal -= countToCheck;
+ } else {
+ JumpList successes;
+
+ for (state.resetAlternative(); state.alternativeValid(); state.nextAlternative()) {
+
+ PatternAlternative* alternative = state.alternative();
+ optimizeAlternative(alternative);
+
+ ASSERT(alternative->m_minimumSize >= preCheckedCount);
+ int countToCheck = alternative->m_minimumSize - preCheckedCount;
+ if (countToCheck) {
+ state.addBacktrackJump(jumpIfNoAvailableInput(countToCheck));
+ state.checkedTotal += countToCheck;
+ }
+
+ for (state.resetTerm(); state.termValid(); state.nextTerm())
+ generateTerm(state);
+
+ // Matched an alternative.
+ DataLabelPtr dataLabel = storeToFrameWithPatch(alternativeFrameLocation);
+ successes.append(jump());
+
+ // Alternative did not match.
+ Label backtrackLocation(this);
+
+ // Can we backtrack the alternative? - if so, do so. If not, just fall through to the next one.
+ state.plantJumpToBacktrackIfExists(this);
+
+ state.linkAlternativeBacktracks(this);
+
+ if (countToCheck) {
+ sub32(Imm32(countToCheck), index);
+ state.checkedTotal -= countToCheck;
+ }
+
+ m_backtrackRecords.append(AlternativeBacktrackRecord(dataLabel, backtrackLocation));
+ }
+ // We fall through to here when the last alternative fails.
+ // Add a backtrack out of here for the parenthese handling code to link up.
+ state.addBacktrackJump(jump());
+
+ // Generate a trampoline for the parens code to backtrack to, to retry the
+ // next alternative.
+ state.setBacktrackGenerated(label());
+ loadFromFrameAndJump(alternativeFrameLocation);
+
+ // FIXME: both of the above hooks are a little inefficient, in that you
+ // may end up trampolining here, just to trampoline back out to the
+ // parentheses code, or vice versa. We can probably eliminate a jump
+ // by restructuring, but coding this way for now for simplicity during
+ // development.
+
+ successes.link(this);
+ }
+ }
+
+ void generateParenthesesSingle(TermGenerationState& state)
+ {
+ const RegisterID indexTemporary = regT0;
+ PatternTerm& term = state.term();
+ PatternDisjunction* disjunction = term.parentheses.disjunction;
+ ASSERT(term.quantityCount == 1);
+
+ unsigned preCheckedCount = ((term.quantityCount == 1) && (term.quantityType == QuantifierFixedCount)) ? disjunction->m_minimumSize : 0;
+
+ unsigned parenthesesFrameLocation = term.frameLocation;
+ unsigned alternativeFrameLocation = parenthesesFrameLocation;
+ if (term.quantityType != QuantifierFixedCount)
+ alternativeFrameLocation += RegexStackSpaceForBackTrackInfoParenthesesOnce;
+
+ // optimized case - no capture & no quantifier can be handled in a light-weight manner.
+ if (!term.invertOrCapture && (term.quantityType == QuantifierFixedCount)) {
+ TermGenerationState parenthesesState(disjunction, state.checkedTotal);
+ generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation);
+ // this expects that any backtracks back out of the parentheses will be in the
+ // parenthesesState's backTrackJumps vector, and that if they need backtracking
+ // they will have set an entry point on the parenthesesState's backtrackLabel.
+ state.propagateBacktrackingFrom(parenthesesState, this);
+ } else {
+ Jump nonGreedySkipParentheses;
+ Label nonGreedyTryParentheses;
+ if (term.quantityType == QuantifierGreedy)
+ storeToFrame(Imm32(1), parenthesesFrameLocation);
+ else if (term.quantityType == QuantifierNonGreedy) {
+ storeToFrame(Imm32(0), parenthesesFrameLocation);
+ nonGreedySkipParentheses = jump();
+ nonGreedyTryParentheses = label();
+ storeToFrame(Imm32(1), parenthesesFrameLocation);
+ }
+
+ // store the match start index
+ if (term.invertOrCapture) {
+ int inputOffset = state.inputOffset() - preCheckedCount;
+ if (inputOffset) {
+ move(index, indexTemporary);
+ add32(Imm32(inputOffset), indexTemporary);
+ store32(indexTemporary, Address(output, (term.parentheses.subpatternId << 1) * sizeof(int)));
+ } else
+ store32(index, Address(output, (term.parentheses.subpatternId << 1) * sizeof(int)));
+ }
+
+ // generate the body of the parentheses
+ TermGenerationState parenthesesState(disjunction, state.checkedTotal);
+ generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation);
+
+ // store the match end index
+ if (term.invertOrCapture) {
+ int inputOffset = state.inputOffset();
+ if (inputOffset) {
+ move(index, indexTemporary);
+ add32(Imm32(state.inputOffset()), indexTemporary);
+ store32(indexTemporary, Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int)));
+ } else
+ store32(index, Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int)));
+ }
+ Jump success = jump();
+
+ // A failure AFTER the parens jumps here
+ Label backtrackFromAfterParens(this);
+
+ if (term.quantityType == QuantifierGreedy) {
+ // If this is zero we have now tested with both with and without the parens.
+ loadFromFrame(parenthesesFrameLocation, indexTemporary);
+ state.jumpToBacktrack(branchTest32(Zero, indexTemporary), this);
+ } else if (term.quantityType == QuantifierNonGreedy) {
+ // If this is zero we have now tested with both with and without the parens.
+ loadFromFrame(parenthesesFrameLocation, indexTemporary);
+ branchTest32(Zero, indexTemporary).linkTo(nonGreedyTryParentheses, this);
+ }
+
+ parenthesesState.plantJumpToBacktrackIfExists(this);
+ // A failure WITHIN the parens jumps here
+ parenthesesState.linkAlternativeBacktracks(this);
+ if (term.invertOrCapture) {
+ store32(Imm32(-1), Address(output, (term.parentheses.subpatternId << 1) * sizeof(int)));
+ store32(Imm32(-1), Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int)));
+ }
+
+ if (term.quantityType == QuantifierGreedy)
+ storeToFrame(Imm32(0), parenthesesFrameLocation);
+ else
+ state.jumpToBacktrack(jump(), this);
+
+ state.setBacktrackGenerated(backtrackFromAfterParens);
+ if (term.quantityType == QuantifierNonGreedy)
+ nonGreedySkipParentheses.link(this);
+ success.link(this);
+ }
+ }
+
+ void generateParentheticalAssertion(TermGenerationState& state)
+ {
+ PatternTerm& term = state.term();
+ PatternDisjunction* disjunction = term.parentheses.disjunction;
+ ASSERT(term.quantityCount == 1);
+ ASSERT(term.quantityType == QuantifierFixedCount);
+
+ unsigned parenthesesFrameLocation = term.frameLocation;
+ unsigned alternativeFrameLocation = parenthesesFrameLocation + RegexStackSpaceForBackTrackInfoParentheticalAssertion;
+
+ int countCheckedAfterAssertion = state.checkedTotal - term.inputPosition;
+
+ if (term.invertOrCapture) {
+ // Inverted case
+ storeToFrame(index, parenthesesFrameLocation);
+
+ state.checkedTotal -= countCheckedAfterAssertion;
+ if (countCheckedAfterAssertion)
+ sub32(Imm32(countCheckedAfterAssertion), index);
+
+ TermGenerationState parenthesesState(disjunction, state.checkedTotal);
+ generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation);
+ // Success! - which means - Fail!
+ loadFromFrame(parenthesesFrameLocation, index);
+ state.jumpToBacktrack(jump(), this);
+
+ // And fail means success.
+ parenthesesState.linkAlternativeBacktracks(this);
+ loadFromFrame(parenthesesFrameLocation, index);
+
+ state.checkedTotal += countCheckedAfterAssertion;
+ } else {
+ // Normal case
+ storeToFrame(index, parenthesesFrameLocation);
+
+ state.checkedTotal -= countCheckedAfterAssertion;
+ if (countCheckedAfterAssertion)
+ sub32(Imm32(countCheckedAfterAssertion), index);
+
+ TermGenerationState parenthesesState(disjunction, state.checkedTotal);
+ generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation);
+ // Success! - which means - Success!
+ loadFromFrame(parenthesesFrameLocation, index);
+ Jump success = jump();
+
+ parenthesesState.linkAlternativeBacktracks(this);
+ loadFromFrame(parenthesesFrameLocation, index);
+ state.jumpToBacktrack(jump(), this);
+
+ success.link(this);
+
+ state.checkedTotal += countCheckedAfterAssertion;
+ }
+ }
+
+ void generateTerm(TermGenerationState& state)
+ {
+ PatternTerm& term = state.term();
+
+ switch (term.type) {
+ case PatternTerm::TypeAssertionBOL:
+ generateAssertionBOL(state);
+ break;
+
+ case PatternTerm::TypeAssertionEOL:
+ generateAssertionEOL(state);
+ break;
+
+ case PatternTerm::TypeAssertionWordBoundary:
+ generateAssertionWordBoundary(state);
+ break;
+
+ case PatternTerm::TypePatternCharacter:
+ switch (term.quantityType) {
+ case QuantifierFixedCount:
+ if (term.quantityCount == 1) {
+ if (state.isSinglePatternCharacterLookaheadTerm() && (state.lookaheadTerm().inputPosition == (term.inputPosition + 1))) {
+ generatePatternCharacterPair(state);
+ state.nextTerm();
+ } else
+ generatePatternCharacterSingle(state);
+ } else
+ generatePatternCharacterFixed(state);
+ break;
+ case QuantifierGreedy:
+ generatePatternCharacterGreedy(state);
+ break;
+ case QuantifierNonGreedy:
+ generatePatternCharacterNonGreedy(state);
+ break;
+ }
+ break;
+
+ case PatternTerm::TypeCharacterClass:
+ switch (term.quantityType) {
+ case QuantifierFixedCount:
+ if (term.quantityCount == 1)
+ generateCharacterClassSingle(state);
+ else
+ generateCharacterClassFixed(state);
+ break;
+ case QuantifierGreedy:
+ generateCharacterClassGreedy(state);
+ break;
+ case QuantifierNonGreedy:
+ generateCharacterClassNonGreedy(state);
+ break;
+ }
+ break;
+
+ case PatternTerm::TypeBackReference:
+ m_generationFailed = true;
+ break;
+
+ case PatternTerm::TypeForwardReference:
+ break;
+
+ case PatternTerm::TypeParenthesesSubpattern:
+ if ((term.quantityCount == 1) && !term.parentheses.isCopy)
+ generateParenthesesSingle(state);
+ else
+ m_generationFailed = true;
+ break;
+
+ case PatternTerm::TypeParentheticalAssertion:
+ generateParentheticalAssertion(state);
+ break;
+ }
+ }
+
+ void generateDisjunction(PatternDisjunction* disjunction)
+ {
+ TermGenerationState state(disjunction, 0);
+ state.resetAlternative();
+
+ // Plant a check to see if there is sufficient input available to run the first alternative.
+ // Jumping back to the label 'firstAlternative' will get to this check, jumping to
+ // 'firstAlternativeInputChecked' will jump directly to matching the alternative having
+ // skipped this check.
+
+ Label firstAlternative(this);
+
+ // check availability for the next alternative
+ int countCheckedForCurrentAlternative = 0;
+ int countToCheckForFirstAlternative = 0;
+ bool hasShorterAlternatives = false;
+ JumpList notEnoughInputForPreviousAlternative;
+
+ if (state.alternativeValid()) {
+ PatternAlternative* alternative = state.alternative();
+ countToCheckForFirstAlternative = alternative->m_minimumSize;
+ state.checkedTotal += countToCheckForFirstAlternative;
+ if (countToCheckForFirstAlternative)
+ notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForFirstAlternative));
+ countCheckedForCurrentAlternative = countToCheckForFirstAlternative;
+ }
+
+ Label firstAlternativeInputChecked(this);
+
+ while (state.alternativeValid()) {
+ // Track whether any alternatives are shorter than the first one.
+ hasShorterAlternatives = hasShorterAlternatives || (countCheckedForCurrentAlternative < countToCheckForFirstAlternative);
+
+ PatternAlternative* alternative = state.alternative();
+ optimizeAlternative(alternative);
+
+ for (state.resetTerm(); state.termValid(); state.nextTerm())
+ generateTerm(state);
+
+ // If we get here, the alternative matched.
+ if (m_pattern.m_body->m_callFrameSize)
+ addPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister);
+
+ ASSERT(index != returnRegister);
+ if (m_pattern.m_body->m_hasFixedSize) {
+ move(index, returnRegister);
+ if (alternative->m_minimumSize)
+ sub32(Imm32(alternative->m_minimumSize), returnRegister);
+ } else
+ pop(returnRegister);
+ store32(index, Address(output, 4));
+ store32(returnRegister, output);
+
+ generateReturn();
+
+ state.nextAlternative();
+
+ // if there are any more alternatives, plant the check for input before looping.
+ if (state.alternativeValid()) {
+ PatternAlternative* nextAlternative = state.alternative();
+ int countToCheckForNextAlternative = nextAlternative->m_minimumSize;
+
+ if (countCheckedForCurrentAlternative > countToCheckForNextAlternative) { // CASE 1: current alternative was longer than the next one.
+ // If we get here, there the last input checked failed.
+ notEnoughInputForPreviousAlternative.link(this);
+
+ // Check if sufficent input available to run the next alternative
+ notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForNextAlternative - countCheckedForCurrentAlternative));
+ // We are now in the correct state to enter the next alternative; this add is only required
+ // to mirror and revert operation of the sub32, just below.
+ add32(Imm32(countCheckedForCurrentAlternative - countToCheckForNextAlternative), index);
+
+ // If we get here, there the last input checked passed.
+ state.linkAlternativeBacktracks(this);
+ // No need to check if we can run the next alternative, since it is shorter -
+ // just update index.
+ sub32(Imm32(countCheckedForCurrentAlternative - countToCheckForNextAlternative), index);
+ } else if (countCheckedForCurrentAlternative < countToCheckForNextAlternative) { // CASE 2: next alternative is longer than the current one.
+ // If we get here, there the last input checked failed.
+ // If there is insufficient input to run the current alternative, and the next alternative is longer,
+ // then there is definitely not enough input to run it - don't even check. Just adjust index, as if
+ // we had checked.
+ notEnoughInputForPreviousAlternative.link(this);
+ add32(Imm32(countToCheckForNextAlternative - countCheckedForCurrentAlternative), index);
+ notEnoughInputForPreviousAlternative.append(jump());
+
+ // The next alternative is longer than the current one; check the difference.
+ state.linkAlternativeBacktracks(this);
+ notEnoughInputForPreviousAlternative.append(jumpIfNoAvailableInput(countToCheckForNextAlternative - countCheckedForCurrentAlternative));
+ } else { // CASE 3: Both alternatives are the same length.
+ ASSERT(countCheckedForCurrentAlternative == countToCheckForNextAlternative);
+
+ // If the next alterative is the same length as this one, then no need to check the input -
+ // if there was sufficent input to run the current alternative then there is sufficient
+ // input to run the next one; if not, there isn't.
+ state.linkAlternativeBacktracks(this);
+ }
+
+ state.checkedTotal -= countCheckedForCurrentAlternative;
+ countCheckedForCurrentAlternative = countToCheckForNextAlternative;
+ state.checkedTotal += countCheckedForCurrentAlternative;
+ }
+ }
+
+ // If we get here, all Alternatives failed...
+
+ state.checkedTotal -= countCheckedForCurrentAlternative;
+
+ // How much more input need there be to be able to retry from the first alternative?
+ // examples:
+ // /yarr_jit/ or /wrec|pcre/
+ // In these examples we need check for one more input before looping.
+ // /yarr_jit|pcre/
+ // In this case we need check for 5 more input to loop (+4 to allow for the first alterative
+ // being four longer than the last alternative checked, and another +1 to effectively move
+ // the start position along by one).
+ // /yarr|rules/ or /wrec|notsomuch/
+ // In these examples, provided that there was sufficient input to have just been matching for
+ // the second alternative we can loop without checking for available input (since the second
+ // alternative is longer than the first). In the latter example we need to decrement index
+ // (by 4) so the start position is only progressed by 1 from the last iteration.
+ int incrementForNextIter = (countToCheckForFirstAlternative - countCheckedForCurrentAlternative) + 1;
+
+ // First, deal with the cases where there was sufficient input to try the last alternative.
+ if (incrementForNextIter > 0) // We need to check for more input anyway, fall through to the checking below.
+ state.linkAlternativeBacktracks(this);
+ else if (m_pattern.m_body->m_hasFixedSize && !incrementForNextIter) // No need to update anything, link these backtracks straight to the to pof the loop!
+ state.linkAlternativeBacktracksTo(firstAlternativeInputChecked, this);
+ else { // no need to check the input, but we do have some bookkeeping to do first.
+ state.linkAlternativeBacktracks(this);
+
+ // Where necessary update our preserved start position.
+ if (!m_pattern.m_body->m_hasFixedSize) {
+ move(index, regT0);
+ sub32(Imm32(countCheckedForCurrentAlternative - 1), regT0);
+ poke(regT0, m_pattern.m_body->m_callFrameSize);
+ }
+
+ // Update index if necessary, and loop (without checking).
+ if (incrementForNextIter)
+ add32(Imm32(incrementForNextIter), index);
+ jump().linkTo(firstAlternativeInputChecked, this);
+ }
+
+ notEnoughInputForPreviousAlternative.link(this);
+ // Update our idea of the start position, if we're tracking this.
+ if (!m_pattern.m_body->m_hasFixedSize) {
+ if (countCheckedForCurrentAlternative - 1) {
+ move(index, regT0);
+ sub32(Imm32(countCheckedForCurrentAlternative - 1), regT0);
+ poke(regT0, m_pattern.m_body->m_callFrameSize);
+ } else
+ poke(index, m_pattern.m_body->m_callFrameSize);
+ }
+ // Check if there is sufficent input to run the first alternative again.
+ jumpIfAvailableInput(incrementForNextIter).linkTo(firstAlternativeInputChecked, this);
+ // No - insufficent input to run the first alteranative, are there any other alternatives we
+ // might need to check? If so, the last check will have left the index incremented by
+ // (countToCheckForFirstAlternative + 1), so we need test whether countToCheckForFirstAlternative
+ // LESS input is available, to have the effect of just progressing the start position by 1
+ // from the last iteration. If this check passes we can just jump up to the check associated
+ // with the first alternative in the loop. This is a bit sad, since we'll end up trying the
+ // first alternative again, and this check will fail (otherwise the check planted just above
+ // here would have passed). This is a bit sad, however it saves trying to do something more
+ // complex here in compilation, and in the common case we should end up coallescing the checks.
+ //
+ // FIXME: a nice improvement here may be to stop trying to match sooner, based on the least
+ // of the minimum-alterantive-lengths. E.g. if I have two alternatives of length 200 and 150,
+ // and a string of length 100, we'll end up looping index from 0 to 100, checking whether there
+ // is sufficient input to run either alternative (constantly failing). If there had been only
+ // one alternative, or if the shorter alternative had come first, we would have terminated
+ // immediately. :-/
+ if (hasShorterAlternatives)
+ jumpIfAvailableInput(-countToCheckForFirstAlternative).linkTo(firstAlternative, this);
+ // index will now be a bit garbled (depending on whether 'hasShorterAlternatives' is true,
+ // it has either been incremented by 1 or by (countToCheckForFirstAlternative + 1) ...
+ // but since we're about to return a failure this doesn't really matter!)
+
+ unsigned frameSize = m_pattern.m_body->m_callFrameSize;
+ if (!m_pattern.m_body->m_hasFixedSize)
+ ++frameSize;
+ if (frameSize)
+ addPtr(Imm32(frameSize * sizeof(void*)), stackPointerRegister);
+
+ move(Imm32(-1), returnRegister);
+
+ generateReturn();
+ }
+
+ void generateEnter()
+ {
+ // On x86 edi & esi are callee preserved registers.
+ push(X86::ebp);
+ move(stackPointerRegister, X86::ebp);
+#if PLATFORM(X86)
+ // TODO: do we need spill registers to fill the output pointer if there are no sub captures?
+ push(X86::ebx);
+ push(X86::edi);
+ push(X86::esi);
+ // load output into edi (2 = saved ebp + return address).
+#if COMPILER(MSVC)
+ loadPtr(Address(X86::ebp, 2 * sizeof(void*)), input);
+ loadPtr(Address(X86::ebp, 3 * sizeof(void*)), index);
+ loadPtr(Address(X86::ebp, 4 * sizeof(void*)), length);
+ loadPtr(Address(X86::ebp, 5 * sizeof(void*)), output);
+#else
+ loadPtr(Address(X86::ebp, 2 * sizeof(void*)), output);
+#endif
+#endif
+ }
+
+ void generateReturn()
+ {
+#if PLATFORM(X86)
+ pop(X86::esi);
+ pop(X86::edi);
+ pop(X86::ebx);
+#endif
+ pop(X86::ebp);
+ ret();
+ }
+
+public:
+ RegexGenerator(RegexPattern& pattern)
+ : m_pattern(pattern)
+ , m_generationFailed(false)
+ {
+ }
+
+ void generate()
+ {
+ generateEnter();
+
+ // TODO: do I really want this on the stack?
+ if (!m_pattern.m_body->m_hasFixedSize)
+ push(index);
+
+ if (m_pattern.m_body->m_callFrameSize)
+ subPtr(Imm32(m_pattern.m_body->m_callFrameSize * sizeof(void*)), stackPointerRegister);
+
+ generateDisjunction(m_pattern.m_body);
+ }
+
+ void compile(JSGlobalData* globalData, RegexCodeBlock& jitObject)
+ {
+ generate();
+
+ PatchBuffer patchBuffer(this, globalData->executableAllocator.poolForSize(size()));
+
+ for (unsigned i = 0; i < m_backtrackRecords.size(); ++i)
+ patchBuffer.patch(m_backtrackRecords[i].dataLabel, patchBuffer.locationOf(m_backtrackRecords[i].backtrackLocation));
+
+ jitObject.set(patchBuffer.finalizeCode());
+ }
+
+ bool generationFailed()
+ {
+ return m_generationFailed;
+ }
+
+private:
+ RegexPattern& m_pattern;
+ Vector<AlternativeBacktrackRecord> m_backtrackRecords;
+ bool m_generationFailed;
+};
+
+void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& patternString, unsigned& numSubpatterns, const char*& error, bool ignoreCase, bool multiline)
+{
+ RegexPattern pattern(ignoreCase, multiline);
+
+ if ((error = compileRegex(patternString, pattern)))
+ return;
+
+ numSubpatterns = pattern.m_numSubpatterns;
+
+ RegexGenerator generator(pattern);
+ generator.compile(globalData, jitObject);
+
+ if (generator.generationFailed()) {
+ JSRegExpIgnoreCaseOption ignoreCaseOption = ignoreCase ? JSRegExpIgnoreCase : JSRegExpDoNotIgnoreCase;
+ JSRegExpMultilineOption multilineOption = multiline ? JSRegExpMultiline : JSRegExpSingleLine;
+ jitObject.setFallback(jsRegExpCompile(reinterpret_cast<const UChar*>(patternString.data()), patternString.size(), ignoreCaseOption, multilineOption, &numSubpatterns, &error));
+ }
+}
+
+int executeRegex(RegexCodeBlock& jitObject, const UChar* input, unsigned start, unsigned length, int* output, int outputArraySize)
+{
+ if (JSRegExp* fallback = jitObject.getFallback())
+ return (jsRegExpExecute(fallback, input, length, start, output, outputArraySize) < 0) ? -1 : output[0];
+
+ return jitObject.execute(input, start, length, output);
+}
+
+}}
+
+#endif
+
+
+
+
+
diff --git a/src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.h b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.h
new file mode 100644
index 0000000..5b0df9d
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RegexJIT_h
+#define RegexJIT_h
+
+#include <wtf/Platform.h>
+
+#if ENABLE(YARR_JIT)
+
+#include "MacroAssembler.h"
+#include "RegexPattern.h"
+#include <UString.h>
+
+#include <pcre.h>
+struct JSRegExp; // temporary, remove when fallback is removed.
+
+#if PLATFORM(X86) && !COMPILER(MSVC)
+#define YARR_CALL __attribute__ ((regparm (3)))
+#else
+#define YARR_CALL
+#endif
+
+namespace JSC {
+
+class JSGlobalData;
+class ExecutablePool;
+
+namespace Yarr {
+
+class RegexCodeBlock {
+ typedef int (*RegexJITCode)(const UChar* input, unsigned start, unsigned length, int* output) YARR_CALL;
+
+public:
+ RegexCodeBlock()
+ : m_fallback(0)
+ {
+ }
+
+ ~RegexCodeBlock()
+ {
+ if (m_fallback)
+ jsRegExpFree(m_fallback);
+ }
+
+ JSRegExp* getFallback() { return m_fallback; }
+ void setFallback(JSRegExp* fallback) { m_fallback = fallback; }
+
+ bool operator!() { return !m_ref.m_code.executableAddress(); }
+ void set(MacroAssembler::CodeRef ref) { m_ref = ref; }
+
+ int execute(const UChar* input, unsigned start, unsigned length, int* output)
+ {
+ return reinterpret_cast<RegexJITCode>(m_ref.m_code.executableAddress())(input, start, length, output);
+ }
+
+private:
+ MacroAssembler::CodeRef m_ref;
+ JSRegExp* m_fallback;
+};
+
+void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& pattern, unsigned& numSubpatterns, const char*& error, bool ignoreCase = false, bool multiline = false);
+int executeRegex(RegexCodeBlock& jitObject, const UChar* input, unsigned start, unsigned length, int* output, int outputArraySize);
+
+} } // namespace JSC::Yarr
+
+#endif
+
+#endif // RegexJIT_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/yarr/RegexParser.h b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexParser.h
new file mode 100644
index 0000000..64e8463
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexParser.h
@@ -0,0 +1,854 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RegexParser_h
+#define RegexParser_h
+
+#include <wtf/Platform.h>
+
+#if ENABLE(YARR)
+
+#include <UString.h>
+#include <wtf/ASCIICType.h>
+#include <wtf/unicode/Unicode.h>
+#include <limits.h>
+
+namespace JSC { namespace Yarr {
+
+enum BuiltInCharacterClassID {
+ DigitClassID,
+ SpaceClassID,
+ WordClassID,
+ NewlineClassID,
+};
+
+// The Parser class should not be used directly - only via the Yarr::parse() method.
+template<class Delegate>
+class Parser {
+private:
+ template<class FriendDelegate>
+ friend const char* parse(FriendDelegate& delegate, const UString& pattern, unsigned backReferenceLimit);
+
+ enum ErrorCode {
+ NoError,
+ PatternTooLarge,
+ QuantifierOutOfOrder,
+ QuantifierWithoutAtom,
+ MissingParentheses,
+ ParenthesesUnmatched,
+ ParenthesesTypeInvalid,
+ CharacterClassUnmatched,
+ CharacterClassOutOfOrder,
+ EscapeUnterminated,
+ NumberOfErrorCodes
+ };
+
+ /*
+ * CharacterClassParserDelegate:
+ *
+ * The class CharacterClassParserDelegate is used in the parsing of character
+ * classes. This class handles detection of character ranges. This class
+ * implements enough of the delegate interface such that it can be passed to
+ * parseEscape() as an EscapeDelegate. This allows parseEscape() to be reused
+ * to perform the parsing of escape characters in character sets.
+ */
+ class CharacterClassParserDelegate {
+ public:
+ CharacterClassParserDelegate(Delegate& delegate, ErrorCode& err)
+ : m_delegate(delegate)
+ , m_err(err)
+ , m_state(empty)
+ {
+ }
+
+ /*
+ * begin():
+ *
+ * Called at beginning of construction.
+ */
+ void begin(bool invert)
+ {
+ m_delegate.atomCharacterClassBegin(invert);
+ }
+
+ /*
+ * atomPatternCharacterUnescaped():
+ *
+ * This method is called directly from parseCharacterClass(), to report a new
+ * pattern character token. This method differs from atomPatternCharacter(),
+ * which will be called from parseEscape(), since a hypen provided via this
+ * method may be indicating a character range, but a hyphen parsed by
+ * parseEscape() cannot be interpreted as doing so.
+ */
+ void atomPatternCharacterUnescaped(UChar ch)
+ {
+ switch (m_state) {
+ case empty:
+ m_character = ch;
+ m_state = cachedCharacter;
+ break;
+
+ case cachedCharacter:
+ if (ch == '-')
+ m_state = cachedCharacterHyphen;
+ else {
+ m_delegate.atomCharacterClassAtom(m_character);
+ m_character = ch;
+ }
+ break;
+
+ case cachedCharacterHyphen:
+ if (ch >= m_character)
+ m_delegate.atomCharacterClassRange(m_character, ch);
+ else
+ m_err = CharacterClassOutOfOrder;
+ m_state = empty;
+ }
+ }
+
+ /*
+ * atomPatternCharacter():
+ *
+ * Adds a pattern character, called by parseEscape(), as such will not
+ * interpret a hyphen as indicating a character range.
+ */
+ void atomPatternCharacter(UChar ch)
+ {
+ // Flush if a character is already pending to prevent the
+ // hyphen from begin interpreted as indicating a range.
+ if((ch == '-') && (m_state == cachedCharacter))
+ flush();
+
+ atomPatternCharacterUnescaped(ch);
+ }
+
+ /*
+ * atomBuiltInCharacterClass():
+ *
+ * Adds a built-in character class, called by parseEscape().
+ */
+ void atomBuiltInCharacterClass(BuiltInCharacterClassID classID, bool invert)
+ {
+ flush();
+ m_delegate.atomCharacterClassBuiltIn(classID, invert);
+ }
+
+ /*
+ * end():
+ *
+ * Called at end of construction.
+ */
+ void end()
+ {
+ flush();
+ m_delegate.atomCharacterClassEnd();
+ }
+
+ // parseEscape() should never call these delegate methods when
+ // invoked with inCharacterClass set.
+ void assertionWordBoundary(bool) { ASSERT_NOT_REACHED(); }
+ void atomBackReference(unsigned) { ASSERT_NOT_REACHED(); }
+
+ private:
+ void flush()
+ {
+ if (m_state != empty) // either cachedCharacter or cachedCharacterHyphen
+ m_delegate.atomCharacterClassAtom(m_character);
+ if (m_state == cachedCharacterHyphen)
+ m_delegate.atomCharacterClassAtom('-');
+ m_state = empty;
+ }
+
+ Delegate& m_delegate;
+ ErrorCode& m_err;
+ enum CharacterClassConstructionState {
+ empty,
+ cachedCharacter,
+ cachedCharacterHyphen,
+ } m_state;
+ UChar m_character;
+ };
+
+ Parser(Delegate& delegate, const UString& pattern, unsigned backReferenceLimit)
+ : m_delegate(delegate)
+ , m_backReferenceLimit(backReferenceLimit)
+ , m_err(NoError)
+ , m_data(pattern.data())
+ , m_size(pattern.size())
+ , m_index(0)
+ , m_parenthesesNestingDepth(0)
+ {
+ }
+
+ /*
+ * parseEscape():
+ *
+ * Helper for parseTokens() AND parseCharacterClass().
+ * Unlike the other parser methods, this function does not report tokens
+ * directly to the member delegate (m_delegate), instead tokens are
+ * emitted to the delegate provided as an argument. In the case of atom
+ * escapes, parseTokens() will call parseEscape() passing m_delegate as
+ * an argument, and as such the escape will be reported to the delegate.
+ *
+ * However this method may also be used by parseCharacterClass(), in which
+ * case a CharacterClassParserDelegate will be passed as the delegate that
+ * tokens should be added to. A boolean flag is also provided to indicate
+ * whether that an escape in a CharacterClass is being parsed (some parsing
+ * rules change in this context).
+ *
+ * The boolean value returned by this method indicates whether the token
+ * parsed was an atom (outside of a characted class \b and \B will be
+ * interpreted as assertions).
+ */
+ template<bool inCharacterClass, class EscapeDelegate>
+ bool parseEscape(EscapeDelegate& delegate)
+ {
+ ASSERT(!m_err);
+ ASSERT(peek() == '\\');
+ consume();
+
+ if (atEndOfPattern()) {
+ m_err = EscapeUnterminated;
+ return false;
+ }
+
+ switch (peek()) {
+ // Assertions
+ case 'b':
+ consume();
+ if (inCharacterClass)
+ delegate.atomPatternCharacter('\b');
+ else {
+ delegate.assertionWordBoundary(false);
+ return false;
+ }
+ break;
+ case 'B':
+ consume();
+ if (inCharacterClass)
+ delegate.atomPatternCharacter('B');
+ else {
+ delegate.assertionWordBoundary(true);
+ return false;
+ }
+ break;
+
+ // CharacterClassEscape
+ case 'd':
+ consume();
+ delegate.atomBuiltInCharacterClass(DigitClassID, false);
+ break;
+ case 's':
+ consume();
+ delegate.atomBuiltInCharacterClass(SpaceClassID, false);
+ break;
+ case 'w':
+ consume();
+ delegate.atomBuiltInCharacterClass(WordClassID, false);
+ break;
+ case 'D':
+ consume();
+ delegate.atomBuiltInCharacterClass(DigitClassID, true);
+ break;
+ case 'S':
+ consume();
+ delegate.atomBuiltInCharacterClass(SpaceClassID, true);
+ break;
+ case 'W':
+ consume();
+ delegate.atomBuiltInCharacterClass(WordClassID, true);
+ break;
+
+ // DecimalEscape
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': {
+ // To match Firefox, we parse an invalid backreference in the range [1-7] as an octal escape.
+ // First, try to parse this as backreference.
+ if (!inCharacterClass) {
+ ParseState state = saveState();
+
+ unsigned backReference = consumeNumber();
+ if (backReference <= m_backReferenceLimit) {
+ delegate.atomBackReference(backReference);
+ break;
+ }
+
+ restoreState(state);
+ }
+
+ // Not a backreference, and not octal.
+ if (peek() >= '8') {
+ delegate.atomPatternCharacter('\\');
+ break;
+ }
+
+ // Fall-through to handle this as an octal escape.
+ }
+
+ // Octal escape
+ case '0':
+ delegate.atomPatternCharacter(consumeOctal());
+ break;
+
+ // ControlEscape
+ case 'f':
+ consume();
+ delegate.atomPatternCharacter('\f');
+ break;
+ case 'n':
+ consume();
+ delegate.atomPatternCharacter('\n');
+ break;
+ case 'r':
+ consume();
+ delegate.atomPatternCharacter('\r');
+ break;
+ case 't':
+ consume();
+ delegate.atomPatternCharacter('\t');
+ break;
+ case 'v':
+ consume();
+ delegate.atomPatternCharacter('\v');
+ break;
+
+ // ControlLetter
+ case 'c': {
+ ParseState state = saveState();
+ consume();
+ if (!atEndOfPattern()) {
+ int control = consume();
+
+ // To match Firefox, inside a character class, we also accept numbers and '_' as control characters.
+ if (inCharacterClass ? WTF::isASCIIAlphanumeric(control) || (control == '_') : WTF::isASCIIAlpha(control)) {
+ delegate.atomPatternCharacter(control & 0x1f);
+ break;
+ }
+ }
+ restoreState(state);
+ delegate.atomPatternCharacter('\\');
+ break;
+ }
+
+ // HexEscape
+ case 'x': {
+ consume();
+ int x = tryConsumeHex(2);
+ if (x == -1)
+ delegate.atomPatternCharacter('x');
+ else
+ delegate.atomPatternCharacter(x);
+ break;
+ }
+
+ // UnicodeEscape
+ case 'u': {
+ consume();
+ int u = tryConsumeHex(4);
+ if (u == -1)
+ delegate.atomPatternCharacter('u');
+ else
+ delegate.atomPatternCharacter(u);
+ break;
+ }
+
+ // IdentityEscape
+ default:
+ delegate.atomPatternCharacter(consume());
+ }
+
+ return true;
+ }
+
+ /*
+ * parseAtomEscape(), parseCharacterClassEscape():
+ *
+ * These methods alias to parseEscape().
+ */
+ bool parseAtomEscape()
+ {
+ return parseEscape<false>(m_delegate);
+ }
+ void parseCharacterClassEscape(CharacterClassParserDelegate& delegate)
+ {
+ parseEscape<true>(delegate);
+ }
+
+ /*
+ * parseCharacterClass():
+ *
+ * Helper for parseTokens(); calls dirctly and indirectly (via parseCharacterClassEscape)
+ * to an instance of CharacterClassParserDelegate, to describe the character class to the
+ * delegate.
+ */
+ void parseCharacterClass()
+ {
+ ASSERT(!m_err);
+ ASSERT(peek() == '[');
+ consume();
+
+ CharacterClassParserDelegate characterClassConstructor(m_delegate, m_err);
+
+ characterClassConstructor.begin(tryConsume('^'));
+
+ while (!atEndOfPattern()) {
+ switch (peek()) {
+ case ']':
+ consume();
+ characterClassConstructor.end();
+ return;
+
+ case '\\':
+ parseCharacterClassEscape(characterClassConstructor);
+ break;
+
+ default:
+ characterClassConstructor.atomPatternCharacterUnescaped(consume());
+ }
+
+ if (m_err)
+ return;
+ }
+
+ m_err = CharacterClassUnmatched;
+ }
+
+ /*
+ * parseParenthesesBegin():
+ *
+ * Helper for parseTokens(); checks for parentheses types other than regular capturing subpatterns.
+ */
+ void parseParenthesesBegin()
+ {
+ ASSERT(!m_err);
+ ASSERT(peek() == '(');
+ consume();
+
+ if (tryConsume('?')) {
+ if (atEndOfPattern()) {
+ m_err = ParenthesesTypeInvalid;
+ return;
+ }
+
+ switch (consume()) {
+ case ':':
+ m_delegate.atomParenthesesSubpatternBegin(false);
+ break;
+
+ case '=':
+ m_delegate.atomParentheticalAssertionBegin();
+ break;
+
+ case '!':
+ m_delegate.atomParentheticalAssertionBegin(true);
+ break;
+
+ default:
+ m_err = ParenthesesTypeInvalid;
+ }
+ } else
+ m_delegate.atomParenthesesSubpatternBegin();
+
+ ++m_parenthesesNestingDepth;
+ }
+
+ /*
+ * parseParenthesesEnd():
+ *
+ * Helper for parseTokens(); checks for parse errors (due to unmatched parentheses).
+ */
+ void parseParenthesesEnd()
+ {
+ ASSERT(!m_err);
+ ASSERT(peek() == ')');
+ consume();
+
+ if (m_parenthesesNestingDepth > 0)
+ m_delegate.atomParenthesesEnd();
+ else
+ m_err = ParenthesesUnmatched;
+
+ --m_parenthesesNestingDepth;
+ }
+
+ /*
+ * parseQuantifier():
+ *
+ * Helper for parseTokens(); checks for parse errors and non-greedy quantifiers.
+ */
+ void parseQuantifier(bool lastTokenWasAnAtom, unsigned min, unsigned max)
+ {
+ ASSERT(!m_err);
+ ASSERT(min <= max);
+
+ if (lastTokenWasAnAtom)
+ m_delegate.quantifyAtom(min, max, !tryConsume('?'));
+ else
+ m_err = QuantifierWithoutAtom;
+ }
+
+ /*
+ * parseTokens():
+ *
+ * This method loops over the input pattern reporting tokens to the delegate.
+ * The method returns when a parse error is detected, or the end of the pattern
+ * is reached. One piece of state is tracked around the loop, which is whether
+ * the last token passed to the delegate was an atom (this is necessary to detect
+ * a parse error when a quantifier provided without an atom to quantify).
+ */
+ void parseTokens()
+ {
+ bool lastTokenWasAnAtom = false;
+
+ while (!atEndOfPattern()) {
+ switch (peek()) {
+ case '|':
+ consume();
+ m_delegate.disjunction();
+ lastTokenWasAnAtom = false;
+ break;
+
+ case '(':
+ parseParenthesesBegin();
+ lastTokenWasAnAtom = false;
+ break;
+
+ case ')':
+ parseParenthesesEnd();
+ lastTokenWasAnAtom = true;
+ break;
+
+ case '^':
+ consume();
+ m_delegate.assertionBOL();
+ lastTokenWasAnAtom = false;
+ break;
+
+ case '$':
+ consume();
+ m_delegate.assertionEOL();
+ lastTokenWasAnAtom = false;
+ break;
+
+ case '.':
+ consume();
+ m_delegate.atomBuiltInCharacterClass(NewlineClassID, true);
+ lastTokenWasAnAtom = true;
+ break;
+
+ case '[':
+ parseCharacterClass();
+ lastTokenWasAnAtom = true;
+ break;
+
+ case '\\':
+ lastTokenWasAnAtom = parseAtomEscape();
+ break;
+
+ case '*':
+ consume();
+ parseQuantifier(lastTokenWasAnAtom, 0, UINT_MAX);
+ lastTokenWasAnAtom = false;
+ break;
+
+ case '+':
+ consume();
+ parseQuantifier(lastTokenWasAnAtom, 1, UINT_MAX);
+ lastTokenWasAnAtom = false;
+ break;
+
+ case '?':
+ consume();
+ parseQuantifier(lastTokenWasAnAtom, 0, 1);
+ lastTokenWasAnAtom = false;
+ break;
+
+ case '{': {
+ ParseState state = saveState();
+
+ consume();
+ if (peekIsDigit()) {
+ unsigned min = consumeNumber();
+ unsigned max = min;
+
+ if (tryConsume(','))
+ max = peekIsDigit() ? consumeNumber() : UINT_MAX;
+
+ if (tryConsume('}')) {
+ if (min <= max)
+ parseQuantifier(lastTokenWasAnAtom, min, max);
+ else
+ m_err = QuantifierOutOfOrder;
+ lastTokenWasAnAtom = false;
+ break;
+ }
+ }
+
+ restoreState(state);
+ } // if we did not find a complete quantifer, fall through to the default case.
+
+ default:
+ m_delegate.atomPatternCharacter(consume());
+ lastTokenWasAnAtom = true;
+ }
+
+ if (m_err)
+ return;
+ }
+
+ if (m_parenthesesNestingDepth > 0)
+ m_err = MissingParentheses;
+ }
+
+ /*
+ * parse():
+ *
+ * This method calls regexBegin(), calls parseTokens() to parse over the input
+ * patterns, calls regexEnd() or regexError() as appropriate, and converts any
+ * error code to a const char* for a result.
+ */
+ const char* parse()
+ {
+ m_delegate.regexBegin();
+
+ if (m_size > MAX_PATTERN_SIZE)
+ m_err = PatternTooLarge;
+ else
+ parseTokens();
+ ASSERT(atEndOfPattern() || m_err);
+
+ if (m_err)
+ m_delegate.regexError();
+ else
+ m_delegate.regexEnd();
+
+ // The order of this array must match the ErrorCode enum.
+ static const char* errorMessages[NumberOfErrorCodes] = {
+ 0, // NoError
+ "regular expression too large",
+ "numbers out of order in {} quantifier",
+ "nothing to repeat",
+ "missing )",
+ "unmatched parentheses",
+ "unrecognized character after (?",
+ "missing terminating ] for character class",
+ "range out of order in character class",
+ "\\ at end of pattern"
+ };
+
+ return errorMessages[m_err];
+ }
+
+
+ // Misc helper functions:
+
+ typedef unsigned ParseState;
+
+ ParseState saveState()
+ {
+ return m_index;
+ }
+
+ void restoreState(ParseState state)
+ {
+ m_index = state;
+ }
+
+ bool atEndOfPattern()
+ {
+ ASSERT(m_index <= m_size);
+ return m_index == m_size;
+ }
+
+ int peek()
+ {
+ ASSERT(m_index < m_size);
+ return m_data[m_index];
+ }
+
+ bool peekIsDigit()
+ {
+ return !atEndOfPattern() && WTF::isASCIIDigit(peek());
+ }
+
+ unsigned peekDigit()
+ {
+ ASSERT(peekIsDigit());
+ return peek() - '0';
+ }
+
+ int consume()
+ {
+ ASSERT(m_index < m_size);
+ return m_data[m_index++];
+ }
+
+ unsigned consumeDigit()
+ {
+ ASSERT(peekIsDigit());
+ return consume() - '0';
+ }
+
+ unsigned consumeNumber()
+ {
+ unsigned n = consumeDigit();
+ // check for overflow.
+ for (unsigned newValue; peekIsDigit() && ((newValue = n * 10 + peekDigit()) >= n); ) {
+ n = newValue;
+ consume();
+ }
+ return n;
+ }
+
+ unsigned consumeOctal()
+ {
+ ASSERT(WTF::isASCIIOctalDigit(peek()));
+
+ unsigned n = consumeDigit();
+ while (n < 32 && !atEndOfPattern() && WTF::isASCIIOctalDigit(peek()))
+ n = n * 8 + consumeDigit();
+ return n;
+ }
+
+ bool tryConsume(UChar ch)
+ {
+ if (atEndOfPattern() || (m_data[m_index] != ch))
+ return false;
+ ++m_index;
+ return true;
+ }
+
+ int tryConsumeHex(int count)
+ {
+ ParseState state = saveState();
+
+ int n = 0;
+ while (count--) {
+ if (atEndOfPattern() || !WTF::isASCIIHexDigit(peek())) {
+ restoreState(state);
+ return -1;
+ }
+ n = (n << 4) | WTF::toASCIIHexValue(consume());
+ }
+ return n;
+ }
+
+ Delegate& m_delegate;
+ unsigned m_backReferenceLimit;
+ ErrorCode m_err;
+ const UChar* m_data;
+ unsigned m_size;
+ unsigned m_index;
+ unsigned m_parenthesesNestingDepth;
+
+ // Derived by empirical testing of compile time in PCRE and WREC.
+ static const unsigned MAX_PATTERN_SIZE = 1024 * 1024;
+};
+
+/*
+ * Yarr::parse():
+ *
+ * The parse method is passed a pattern to be parsed and a delegate upon which
+ * callbacks will be made to record the parsed tokens forming the regex.
+ * Yarr::parse() returns null on success, or a const C string providing an error
+ * message where a parse error occurs.
+ *
+ * The Delegate must implement the following interface:
+ *
+ * void assertionBOL();
+ * void assertionEOL();
+ * void assertionWordBoundary(bool invert);
+ *
+ * void atomPatternCharacter(UChar ch);
+ * void atomBuiltInCharacterClass(BuiltInCharacterClassID classID, bool invert);
+ * void atomCharacterClassBegin(bool invert)
+ * void atomCharacterClassAtom(UChar ch)
+ * void atomCharacterClassRange(UChar begin, UChar end)
+ * void atomCharacterClassBuiltIn(BuiltInCharacterClassID classID, bool invert)
+ * void atomCharacterClassEnd()
+ * void atomParenthesesSubpatternBegin(bool capture = true);
+ * void atomParentheticalAssertionBegin(bool invert = false);
+ * void atomParenthesesEnd();
+ * void atomBackReference(unsigned subpatternId);
+ *
+ * void quantifyAtom(unsigned min, unsigned max, bool greedy);
+ *
+ * void disjunction();
+ *
+ * void regexBegin();
+ * void regexEnd();
+ * void regexError();
+ *
+ * Before any call recording tokens are made, regexBegin() will be called on the
+ * delegate once. Once parsing is complete either regexEnd() or regexError() will
+ * be called, as appropriate.
+ *
+ * The regular expression is described by a sequence of assertion*() and atom*()
+ * callbacks to the delegate, describing the terms in the regular expression.
+ * Following an atom a quantifyAtom() call may occur to indicate that the previous
+ * atom should be quantified. In the case of atoms described across multiple
+ * calls (parentheses and character classes) the call to quantifyAtom() will come
+ * after the call to the atom*End() method, never after atom*Begin().
+ *
+ * Character classes may either be described by a single call to
+ * atomBuiltInCharacterClass(), or by a sequence of atomCharacterClass*() calls.
+ * In the latter case, ...Begin() will be called, followed by a sequence of
+ * calls to ...Atom(), ...Range(), and ...BuiltIn(), followed by a call to ...End().
+ *
+ * Sequences of atoms and assertions are broken into alternatives via calls to
+ * disjunction(). Assertions, atoms, and disjunctions emitted between calls to
+ * atomParenthesesBegin() and atomParenthesesEnd() form the body of a subpattern.
+ * atomParenthesesBegin() is passed a subpatternId. In the case of a regular
+ * capturing subpattern, this will be the subpatternId associated with these
+ * parentheses, and will also by definition be the lowest subpatternId of these
+ * parentheses and of any nested paretheses. The atomParenthesesEnd() method
+ * is passed the subpatternId of the last capturing subexpression nested within
+ * these paretheses. In the case of a capturing subpattern with no nested
+ * capturing subpatterns, the same subpatternId will be passed to the begin and
+ * end functions. In the case of non-capturing subpatterns the subpatternId
+ * passed to the begin method is also the first possible subpatternId that might
+ * be nested within these paretheses. If a set of non-capturing parentheses does
+ * not contain any capturing subpatterns, then the subpatternId passed to begin
+ * will be greater than the subpatternId passed to end.
+ */
+
+template<class Delegate>
+const char* parse(Delegate& delegate, const UString& pattern, unsigned backReferenceLimit = UINT_MAX)
+{
+ return Parser<Delegate>(delegate, pattern, backReferenceLimit).parse();
+}
+
+} } // namespace JSC::Yarr
+
+#endif
+
+#endif // RegexParser_h
diff --git a/src/3rdparty/webkit/JavaScriptCore/yarr/RegexPattern.h b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexPattern.h
new file mode 100644
index 0000000..fb1b0ab
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/yarr/RegexPattern.h
@@ -0,0 +1,356 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RegexPattern_h
+#define RegexPattern_h
+
+#include <wtf/Platform.h>
+
+#if ENABLE(YARR)
+
+#include <wtf/Vector.h>
+#include <wtf/unicode/Unicode.h>
+
+
+namespace JSC { namespace Yarr {
+
+#define RegexStackSpaceForBackTrackInfoPatternCharacter 1 // Only for !fixed quantifiers.
+#define RegexStackSpaceForBackTrackInfoCharacterClass 1 // Only for !fixed quantifiers.
+#define RegexStackSpaceForBackTrackInfoBackReference 2
+#define RegexStackSpaceForBackTrackInfoAlternative 1 // One per alternative.
+#define RegexStackSpaceForBackTrackInfoParentheticalAssertion 1
+#define RegexStackSpaceForBackTrackInfoParenthesesOnce 1 // Only for !fixed quantifiers.
+#define RegexStackSpaceForBackTrackInfoParentheses 4
+
+struct PatternDisjunction;
+
+struct CharacterRange {
+ UChar begin;
+ UChar end;
+
+ CharacterRange(UChar begin, UChar end)
+ : begin(begin)
+ , end(end)
+ {
+ }
+};
+
+struct CharacterClass {
+ Vector<UChar> m_matches;
+ Vector<CharacterRange> m_ranges;
+ Vector<UChar> m_matchesUnicode;
+ Vector<CharacterRange> m_rangesUnicode;
+};
+
+enum QuantifierType {
+ QuantifierFixedCount,
+ QuantifierGreedy,
+ QuantifierNonGreedy,
+};
+
+struct PatternTerm {
+ enum Type {
+ TypeAssertionBOL,
+ TypeAssertionEOL,
+ TypeAssertionWordBoundary,
+ TypePatternCharacter,
+ TypeCharacterClass,
+ TypeBackReference,
+ TypeForwardReference,
+ TypeParenthesesSubpattern,
+ TypeParentheticalAssertion,
+ } type;
+ bool invertOrCapture;
+ union {
+ UChar patternCharacter;
+ CharacterClass* characterClass;
+ unsigned subpatternId;
+ struct {
+ PatternDisjunction* disjunction;
+ unsigned subpatternId;
+ unsigned lastSubpatternId;
+ bool isCopy;
+ } parentheses;
+ };
+ QuantifierType quantityType;
+ unsigned quantityCount;
+ int inputPosition;
+ unsigned frameLocation;
+
+ PatternTerm(UChar ch)
+ : type(PatternTerm::TypePatternCharacter)
+ {
+ patternCharacter = ch;
+ quantityType = QuantifierFixedCount;
+ quantityCount = 1;
+ }
+
+ PatternTerm(CharacterClass* charClass, bool invert)
+ : type(PatternTerm::TypeCharacterClass)
+ , invertOrCapture(invert)
+ {
+ characterClass = charClass;
+ quantityType = QuantifierFixedCount;
+ quantityCount = 1;
+ }
+
+ PatternTerm(Type type, unsigned subpatternId, PatternDisjunction* disjunction, bool invertOrCapture)
+ : type(type)
+ , invertOrCapture(invertOrCapture)
+ {
+ parentheses.disjunction = disjunction;
+ parentheses.subpatternId = subpatternId;
+ parentheses.isCopy = false;
+ quantityType = QuantifierFixedCount;
+ quantityCount = 1;
+ }
+
+ PatternTerm(Type type, bool invert = false)
+ : type(type)
+ , invertOrCapture(invert)
+ {
+ quantityType = QuantifierFixedCount;
+ quantityCount = 1;
+ }
+
+ PatternTerm(unsigned spatternId)
+ : type(TypeBackReference)
+ , invertOrCapture(invertOrCapture)
+ {
+ subpatternId = spatternId;
+ quantityType = QuantifierFixedCount;
+ quantityCount = 1;
+ }
+
+ static PatternTerm ForwardReference()
+ {
+ return PatternTerm(TypeForwardReference);
+ }
+
+ static PatternTerm BOL()
+ {
+ return PatternTerm(TypeAssertionBOL);
+ }
+
+ static PatternTerm EOL()
+ {
+ return PatternTerm(TypeAssertionEOL);
+ }
+
+ static PatternTerm WordBoundary(bool invert)
+ {
+ return PatternTerm(TypeAssertionWordBoundary, invert);
+ }
+
+ bool invert()
+ {
+ return invertOrCapture;
+ }
+
+ bool capture()
+ {
+ return invertOrCapture;
+ }
+
+ void quantify(unsigned count, QuantifierType type)
+ {
+ quantityCount = count;
+ quantityType = type;
+ }
+};
+
+struct PatternAlternative {
+ PatternAlternative(PatternDisjunction* disjunction)
+ : m_parent(disjunction)
+ {
+ }
+
+ PatternTerm& lastTerm()
+ {
+ ASSERT(m_terms.size());
+ return m_terms[m_terms.size() - 1];
+ }
+
+ void removeLastTerm()
+ {
+ ASSERT(m_terms.size());
+ m_terms.shrink(m_terms.size() - 1);
+ }
+
+ Vector<PatternTerm> m_terms;
+ PatternDisjunction* m_parent;
+ unsigned m_minimumSize;
+ bool m_hasFixedSize;
+};
+
+struct PatternDisjunction {
+ PatternDisjunction(PatternAlternative* parent = 0)
+ : m_parent(parent)
+ {
+ }
+
+ ~PatternDisjunction()
+ {
+ deleteAllValues(m_alternatives);
+ }
+
+ PatternAlternative* addNewAlternative()
+ {
+ PatternAlternative* alternative = new PatternAlternative(this);
+ m_alternatives.append(alternative);
+ return alternative;
+ }
+
+ Vector<PatternAlternative*> m_alternatives;
+ PatternAlternative* m_parent;
+ unsigned m_minimumSize;
+ unsigned m_callFrameSize;
+ bool m_hasFixedSize;
+};
+
+// You probably don't want to be calling these functions directly
+// (please to be calling newlineCharacterClass() et al on your
+// friendly neighborhood RegexPattern instance to get nicely
+// cached copies).
+CharacterClass* newlineCreate();
+CharacterClass* digitsCreate();
+CharacterClass* spacesCreate();
+CharacterClass* wordcharCreate();
+CharacterClass* nondigitsCreate();
+CharacterClass* nonspacesCreate();
+CharacterClass* nonwordcharCreate();
+
+struct RegexPattern {
+ RegexPattern(bool ignoreCase, bool multiline)
+ : m_ignoreCase(ignoreCase)
+ , m_multiline(multiline)
+ , m_numSubpatterns(0)
+ , m_maxBackReference(0)
+ , newlineCached(0)
+ , digitsCached(0)
+ , spacesCached(0)
+ , wordcharCached(0)
+ , nondigitsCached(0)
+ , nonspacesCached(0)
+ , nonwordcharCached(0)
+ {
+ }
+
+ ~RegexPattern()
+ {
+ deleteAllValues(m_disjunctions);
+ deleteAllValues(m_userCharacterClasses);
+ }
+
+ void reset()
+ {
+ m_numSubpatterns = 0;
+ m_maxBackReference = 0;
+
+ newlineCached = 0;
+ digitsCached = 0;
+ spacesCached = 0;
+ wordcharCached = 0;
+ nondigitsCached = 0;
+ nonspacesCached = 0;
+ nonwordcharCached = 0;
+
+ deleteAllValues(m_disjunctions);
+ m_disjunctions.clear();
+ deleteAllValues(m_userCharacterClasses);
+ m_userCharacterClasses.clear();
+ }
+
+ bool containsIllegalBackReference()
+ {
+ return m_maxBackReference > m_numSubpatterns;
+ }
+
+ CharacterClass* newlineCharacterClass()
+ {
+ if (!newlineCached)
+ m_userCharacterClasses.append(newlineCached = newlineCreate());
+ return newlineCached;
+ }
+ CharacterClass* digitsCharacterClass()
+ {
+ if (!digitsCached)
+ m_userCharacterClasses.append(digitsCached = digitsCreate());
+ return digitsCached;
+ }
+ CharacterClass* spacesCharacterClass()
+ {
+ if (!spacesCached)
+ m_userCharacterClasses.append(spacesCached = spacesCreate());
+ return spacesCached;
+ }
+ CharacterClass* wordcharCharacterClass()
+ {
+ if (!wordcharCached)
+ m_userCharacterClasses.append(wordcharCached = wordcharCreate());
+ return wordcharCached;
+ }
+ CharacterClass* nondigitsCharacterClass()
+ {
+ if (!nondigitsCached)
+ m_userCharacterClasses.append(nondigitsCached = nondigitsCreate());
+ return nondigitsCached;
+ }
+ CharacterClass* nonspacesCharacterClass()
+ {
+ if (!nonspacesCached)
+ m_userCharacterClasses.append(nonspacesCached = nonspacesCreate());
+ return nonspacesCached;
+ }
+ CharacterClass* nonwordcharCharacterClass()
+ {
+ if (!nonwordcharCached)
+ m_userCharacterClasses.append(nonwordcharCached = nonwordcharCreate());
+ return nonwordcharCached;
+ }
+
+ bool m_ignoreCase;
+ bool m_multiline;
+ unsigned m_numSubpatterns;
+ unsigned m_maxBackReference;
+ PatternDisjunction* m_body;
+ Vector<PatternDisjunction*, 4> m_disjunctions;
+ Vector<CharacterClass*> m_userCharacterClasses;
+
+private:
+ CharacterClass* newlineCached;
+ CharacterClass* digitsCached;
+ CharacterClass* spacesCached;
+ CharacterClass* wordcharCached;
+ CharacterClass* nondigitsCached;
+ CharacterClass* nonspacesCached;
+ CharacterClass* nonwordcharCached;
+};
+
+} } // namespace JSC::Yarr
+
+#endif
+
+#endif // RegexPattern_h
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 7d5d1c5..f3e81c1 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -4,8 +4,8 @@ This is a snapshot of the Qt port of WebKit from
The commit imported was from the
- origin/qtwebkit-4.5 branch/tag
+ origin/qtwebkit-4.6-staging branch/tag
and has the sha1 checksum
- 4ee8af9348b3f57d3c0f3575ae0a58336cf07a92
+ 751940f0f1fb2599250632d7f0a3ead3930466af
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index 072beee..14190f6 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,25 +1,5978 @@
-2009-05-19 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+2009-06-10 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
Reviewed by Simon Hausmann.
- Do not call the parent implementation (Widget::) in show() and hide()
- of the PluginViewQt, as it always changes the visible state of the
- platformWidget (equal to the platformPluginWidget in the Qt port),
- thus ignoring the isParentVisible() test.
+ Fix the build of PluginView on Qt with 64-bit where we disable plugins
+ at compile time.
- * plugins/qt/PluginViewQt.cpp:
- (WebCore::PluginView::show):
- (WebCore::PluginView::hide):
+ Use the FooNone.cpp files at compile-time.
-2009-04-22 Tamas Szirbucz <szirbucz.tamas@stud.u-szeged.hu>
+ * plugins/PluginPackageNone.cpp:
+ * plugins/mac/PluginPackageMac.cpp:
+ * plugins/mac/PluginViewMac.cpp:
+
+2009-06-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Don't enable ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH on Windows
+
+ This define was brought in after refactoring some code from
+ PluginPackage(Qt|Gtk).cpp into the shared PluginPackage.cpp.
+
+ * WebCore.pro:
+
+2009-06-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Use $QMAKE_PATH_SEP instead of hardcoded / to fix Windows build
+
+ * WebCore.pro:
+
+2009-06-08 Laszlo Gombos <laszlo.1.gombos@nokia.com>
Reviewed by Ariya Hidayat.
- https://bugs.webkit.org/show_bug.cgi?id=25023
- Delete reply in QNetworkReplyHandler::abort() to avoid leak.
+ [Qt] Build fix when NETSCAPE_PLUGIN_API support is turned off
+ https://bugs.webkit.org/show_bug.cgi?id=26244
+
+ * WebCore.pro: Define PLUGIN_PACKAGE_SIMPLE_HASH only if
+ NETSCAPE_PLUGIN_API is turned on
+ * plugins/PluginPackage.cpp: Guard initializeBrowserFuncs()
+ * plugins/PluginViewNone.cpp: Match guards with PluginView.h
+
+2009-06-07 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - fix <rdar://problem/6931661> -[WebView _selectionIsAll] returns YES
+ when the selection is inside a text field.
+
+ * editing/VisibleSelection.cpp:
+ (WebCore::VisibleSelection::isAll): Return false if the selection is in
+ a shadow tree.
+
+2009-06-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26106
+ [GTK] Crashes when you keep a combo open during a page transition, then close it
+
+ Hide the combo popup and disconnect from its signals during
+ PopupMenu destruction to handle this exceptional case with no
+ crash.
+
+ * platform/gtk/PopupMenuGtk.cpp:
+ (WebCore::PopupMenu::~PopupMenu):
+ (WebCore::PopupMenu::menuUnmapped):
+
+2009-06-06 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for <rdar://problem/6930540>
+ REGRESSION (r43797): Serif and fantasy font-family names are wrong in result of getComputedStyle
+
+ Test: fast/css/font-family-builtins.html
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::identifierForFamily): Fix typo. Fantasy family should be
+ -webkit-fantasy not, -webkit-serif.
+
+2009-06-06 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Brady Eidson.
+
+ Fix for <rdar://problem/6936235>
+ Need to support StorageEvent.storageArea to meet the Web Storage spec
+
+ * storage/LocalStorageArea.cpp:
+ (WebCore::LocalStorageArea::dispatchStorageEvent): Pass the localStorage for
+ the frame being dispatched to.
+ * storage/SessionStorageArea.cpp:
+ (WebCore::SessionStorageArea::dispatchStorageEvent): Ditto, only for sessionStorage.
+
+ * storage/StorageEvent.cpp:
+ (WebCore::StorageEvent::StorageEvent):
+ (WebCore::StorageEvent::initStorageEvent):
+ * storage/StorageEvent.h:
+ (WebCore::StorageEvent::create):
+ (WebCore::StorageEvent::storageArea):
+ * storage/StorageEvent.idl:
+ Add storageArea member.
+
+2009-06-05 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Anders Carlsson.
+
+ Fix WMLInputElement initialization code. Don't call initialize() on attach(), let
+ WMLCardElement handle initialization once, after the document has been parsed.
+
+ To keep layout tests working introduce a new function in Document.idl: initializeWMLPageState().
+ WMLTestCase.js (the wml/ layout test framework) will use it to simulate a regular WML document,
+ whose variable state gets initialized on WMLDocument::finishedParsing(). Force initialization
+ of the WML variable state, right after the dynamically created elements have been inserted into the tree.
+
+ * dom/Document.cpp:
+ (WebCore::Document::initializeWMLPageState):
+ * dom/Document.h:
+ * dom/Document.idl:
+ * wml/WMLCardElement.cpp:
+ (WebCore::WMLCardElement::handleIntrinsicEventIfNeeded):
+ * wml/WMLDocument.cpp:
+ (WebCore::WMLDocument::finishedParsing):
+ (WebCore::WMLDocument::initialize):
+ * wml/WMLDocument.h:
+ * wml/WMLInputElement.cpp:
+ (WebCore::WMLInputElement::initialize):
+ * wml/WMLInputElement.h:
+
+2009-06-05 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Add ononline and onoffline attributes for the <body> element.
+
+ * html/HTMLAttributeNames.in: Added ononlineAttr and onofflineAttr.
+ * html/HTMLBodyElement.cpp:
+ (WebCore::HTMLBodyElement::parseMappedAttribute): Map ononlineAttr
+ and onofflineAttr to window event listeners.
+
+2009-06-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Add missing includes of config.h
+
+ * platform/qt/QWebPopup.cpp:
+ * platform/text/qt/TextBreakIteratorQt.cpp:
+
+2009-06-05 Fumitoshi Ukai <ukai@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26215
+ Try to fix the Chromium build.
+
+ * platform/graphics/chromium/GlyphPageTreeNodeChromiumWin.cpp:
+ (WebCore::fillBMPGlyphs):
+ (WebCore::fillNonBMPGlyphs):
+
+2009-06-05 Shinichiro Hamaji <hamaji@chromium.org>
+
+ Bug 26160: Compile fails in MacOSX when GNU fileutils are installed
+
+ <https://bugs.webkit.org/show_bug.cgi?id=26160>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Use /bin/ln instead of ln for cases where this command is used with -h option.
+ As this option is not supported by GNU fileutils, this change helps users
+ who have GNU fileutils in their PATH.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-06-03 Ben Murdoch <benm@google.com>
+
+ <https://bugs.webkit.org/show_bug.cgi?id=25710> HTML5 Database stops executing transactions if the URL hash changes while a transaction is open and an XHR is in progress.
+
+ Reviewed by Alexey Proskuryakov.
+
+ Fix a bug that causes database transactions to fail if a history navigation to a hash fragment of the same document is made while resources (e.g. an XHR) are loading
+
+ Test: storage/hash-change-with-xhr.html
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::stopLoading):
+ * loader/DocumentLoader.h:
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::stopLoading):
+ (WebCore::FrameLoader::stopAllLoaders):
+ * loader/FrameLoader.h:
+ * loader/FrameLoaderTypes.h:
+ (WebCore::):
+ * page/Page.cpp:
+ (WebCore::Page::goToItem):
+ * WebCore.base.exp:
+
+2009-06-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Make sure the correct config.h is included when shadowbuilding
+
+ * WebCore.pro:
+
+2009-06-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Fix Qt build after r44452
* platform/network/qt/QNetworkReplyHandler.cpp:
- (WebCore::QNetworkReplyHandler::abort):
+ (WebCore::QNetworkReplyHandler::sendResponseIfNeeded):
+
+2009-06-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Remove some dead code (MenuEventProxy)
+
+ * WebCore.pro:
+ * platform/ContextMenu.h:
+ * platform/qt/ContextMenuQt.cpp:
+ * platform/qt/MenuEventProxy.h: Removed.
+
+2009-06-05 Xan Lopez <xlopez@igalia.com>
+
+ More build fixes.
+
+ * platform/graphics/gtk/GlyphPageTreeNodePango.cpp:
+ (WebCore::GlyphPage::fill):
+
+2009-06-05 Xan Lopez <xlopez@igalia.com>
+
+ Fix the GTK+ build.
+
+ * GNUmakefile.am:
+ * platform/graphics/gtk/FontCacheGtk.cpp:
+ (WebCore::FontCache::getFontDataForCharacters):
+ * platform/graphics/gtk/GlyphPageTreeNodeGtk.cpp:
+ (WebCore::GlyphPage::fill):
+
+2009-06-05 Antti Koivisto <antti@apple.com>
+
+ Try to fix Windows (and possibly other platforms) build.
+
+ Restore ResourceResponseBase::lastModifiedDate() and setLastModifiedDate() removed in previous commit.
+ for now since PluginStream used on some platforms expects them and calculations differ from plain
+ Last-modified header value.
+
+ Also include <wtf/MathExtras.h> to get isfinite().
+
+ * platform/network/ResourceResponseBase.cpp:
+ (WebCore::ResourceResponseBase::adopt):
+ (WebCore::ResourceResponseBase::copyData):
+ (WebCore::ResourceResponseBase::setLastModifiedDate):
+ (WebCore::ResourceResponseBase::lastModifiedDate):
+ * platform/network/ResourceResponseBase.h:
+ * platform/network/cf/ResourceResponseCFNet.cpp:
+ (WebCore::ResourceResponse::platformLazyInit):
+
+2009-06-03 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Dave Kilzer.
+
+ https://bugs.webkit.org/show_bug.cgi?id=13128
+ Safari not obeying cache header
+
+ Implement RFC 2616 cache expiration calculations in WebKit instead of
+ relying on the networking layer.
+
+ * ForwardingHeaders/runtime/DateMath.h: Added.
+ * WebCore.base.exp:
+ * loader/Cache.cpp:
+ (WebCore::Cache::revalidationSucceeded):
+ * loader/CachedResource.cpp:
+ (WebCore::CachedResource::CachedResource):
+ (WebCore::CachedResource::isExpired):
+ (WebCore::CachedResource::currentAge):
+ (WebCore::CachedResource::freshnessLifetime):
+ (WebCore::CachedResource::setResponse):
+ (WebCore::CachedResource::updateResponseAfterRevalidation):
+ (WebCore::CachedResource::mustRevalidate):
+ * loader/CachedResource.h:
+ * platform/network/ResourceResponseBase.cpp:
+ (WebCore::ResourceResponseBase::ResourceResponseBase):
+ (WebCore::ResourceResponseBase::adopt):
+ (WebCore::ResourceResponseBase::copyData):
+ (WebCore::ResourceResponseBase::setHTTPHeaderField):
+ (WebCore::ResourceResponseBase::parseCacheControlDirectives):
+ (WebCore::ResourceResponseBase::cacheControlContainsNoCache):
+ (WebCore::ResourceResponseBase::cacheControlContainsMustRevalidate):
+ (WebCore::ResourceResponseBase::cacheControlMaxAge):
+ (WebCore::parseDateValueInHeader):
+ (WebCore::ResourceResponseBase::date):
+ (WebCore::ResourceResponseBase::age):
+ (WebCore::ResourceResponseBase::expires):
+ (WebCore::ResourceResponseBase::lastModified):
+ (WebCore::ResourceResponseBase::isAttachment):
+ (WebCore::ResourceResponseBase::compare):
+ * platform/network/ResourceResponseBase.h:
+ * platform/network/cf/ResourceResponseCFNet.cpp:
+ (WebCore::ResourceResponse::platformLazyInit):
+ * platform/network/mac/ResourceResponseMac.mm:
+ (WebCore::ResourceResponse::platformLazyInit):
+
+2009-06-04 Roland Steiner <rolandsteiner@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Bug 26201: Remove superfluous 'if' statements in RenderTable::addChild
+ https://bugs.webkit.org/show_bug.cgi?id=26201
+
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::addChild): remove superfluous 'if' statements
+
+
+2009-06-04 Roland Steiner <rolandsteiner@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Bug 26202: add macros for primitive values to simplify CSSStyleSelector::applyProperty
+ https://bugs.webkit.org/show_bug.cgi?id=26202
+
+ * css/CSSStyleSelector.cpp: add HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE[_WITH_VALUE] macros
+ (WebCore::CSSStyleSelector::applyProperty): use new macros
+
+2009-06-04 Roland Steiner <rolandsteiner@google.com>
+
+ Reviewed by Eric Seidel
+
+ Bug 26203: Move parsing of 'attr(X)' values to own method
+ https://bugs.webkit.org/show_bug.cgi?id=26203
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseAttr): new method
+ (WebCore::CSSParser::parseContent): use new parseAttr method
+ * css/CSSParser.h:
+ (WebCore::CSSParser::parseAttr): new method
+
+2009-06-04 Roland Steiner <rolandsteiner@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Bug 26205: RenderTableSection::addChild : correct comment
+ https://bugs.webkit.org/show_bug.cgi?id=26205
+
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::addChild): correct comment
+
+2009-06-04 Roland Steiner <rolandsteiner@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Bug 26204: RenderBlock : simplify handleSpecialChild, comment correction
+ https://bugs.webkit.org/show_bug.cgi?id=26204
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::handleSpecialChild): simplify usage
+ (WebCore::RenderBlock::handlePositionedChild): simplify usage
+ (WebCore::RenderBlock::handleFloatingChild): simplify usage
+ (WebCore::RenderBlock::handleRunInChild): simplify usage
+ (WebCore::RenderBlock::layoutBlock): correct comment
+ (WebCore::RenderBlock::layoutBlockChildren): simplify loop, change call to handleSpecialChild
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::handleSpecialChild): change signature
+ (WebCore::RenderBlock::handlePositionedChild): change signature
+ (WebCore::RenderBlock::handleFloatingChild): change signature
+ (WebCore::RenderBlock::handleRunInChild): change signature
+
+2009-06-04 Dan Bernstein <mitz@apple.com>
+
+ - retry to fix the Tiger build
+
+ * platform/graphics/mac/SimpleFontDataMac.mm:
+ (WebCore::initFontData):
+
+2009-06-04 Dan Bernstein <mitz@apple.com>
+
+ - try to fix the Tiger build
+
+ * platform/graphics/SimpleFontData.h:
+
+2009-06-04 Dan Bernstein <mitz@apple.com>
+
+ - try to fix the Leopard and Tiger builds
+
+ * platform/graphics/SimpleFontData.h:
+
+2009-06-04 Dan Bernstein <mitz@apple.com>
+
+ - try to fix the Windows build
+
+ * platform/graphics/win/UniscribeController.cpp:
+ (WebCore::UniscribeController::shapeAndPlaceItem):
+
+2009-06-04 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - make SimpleFontData's data members private
+ - rename SimpleFontData's m_font member to m_platformData
+
+ * platform/graphics/Font.h:
+ (WebCore::Font::spaceWidth):
+ * platform/graphics/SimpleFontData.cpp:
+ (WebCore::SimpleFontData::SimpleFontData):
+ * platform/graphics/SimpleFontData.h:
+ (WebCore::SimpleFontData::platformData):
+ (WebCore::SimpleFontData::spaceWidth):
+ (WebCore::SimpleFontData::adjustedSpaceWidth):
+ (WebCore::SimpleFontData::syntheticBoldOffset):
+ (WebCore::SimpleFontData::spaceGlyph):
+ (WebCore::SimpleFontData::getNSFont):
+ (WebCore::SimpleFontData::getQtFont):
+ (WebCore::SimpleFontData::getWxFont):
+ * platform/graphics/WidthIterator.cpp:
+ (WebCore::WidthIterator::advance):
+ * platform/graphics/cairo/FontCairo.cpp:
+ (WebCore::Font::drawGlyphs):
+ * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::smallCapsFontData):
+ (WebCore::SimpleFontData::determinePitch):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ * platform/graphics/chromium/SimpleFontDataLinux.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::smallCapsFontData):
+ (WebCore::SimpleFontData::containsCharacters):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ * platform/graphics/gtk/FontGtk.cpp:
+ (WebCore::setPangoAttributes):
+ * platform/graphics/gtk/SimpleFontDataGtk.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::containsCharacters):
+ (WebCore::SimpleFontData::determinePitch):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ (WebCore::SimpleFontData::setFont):
+ * platform/graphics/gtk/SimpleFontDataPango.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::containsCharacters):
+ (WebCore::SimpleFontData::determinePitch):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ (WebCore::SimpleFontData::setFont):
+ * platform/graphics/mac/CoreTextController.cpp:
+ (WebCore::CoreTextController::adjustGlyphsAndAdvances):
+ * platform/graphics/mac/FontMac.mm:
+ (WebCore::Font::drawGlyphs):
+ * platform/graphics/mac/FontMacATSUI.mm:
+ (WebCore::initializeATSUStyle):
+ (WebCore::overrideLayoutOperation):
+ (WebCore::ATSULayoutParameters::initialize):
+ * platform/graphics/mac/SimpleFontDataMac.mm:
+ (WebCore::initFontData):
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ (WebCore::SimpleFontData::smallCapsFontData):
+ (WebCore::SimpleFontData::containsCharacters):
+ (WebCore::SimpleFontData::determinePitch):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ (WebCore::SimpleFontData::checkShapesArabic):
+ (WebCore::SimpleFontData::getCTFont):
+ * platform/graphics/qt/SimpleFontDataQt.cpp:
+ (WebCore::SimpleFontData::determinePitch):
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/win/FontCGWin.cpp:
+ (WebCore::drawGDIGlyphs):
+ (WebCore::Font::drawGlyphs):
+ * platform/graphics/win/SimpleFontDataCGWin.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ * platform/graphics/win/SimpleFontDataCairoWin.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::platformDestroy):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ (WebCore::SimpleFontData::setFont):
+ * platform/graphics/win/SimpleFontDataWin.cpp:
+ (WebCore::SimpleFontData::initGDIFont):
+ (WebCore::SimpleFontData::smallCapsFontData):
+ (WebCore::SimpleFontData::containsCharacters):
+ (WebCore::SimpleFontData::determinePitch):
+ (WebCore::SimpleFontData::widthForGDIGlyph):
+ (WebCore::SimpleFontData::scriptFontProperties):
+ * platform/graphics/wx/SimpleFontDataWx.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::determinePitch):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+
+2009-06-04 Paul Godavari <paul@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Initialize the width of PopupMenuListBox properly for Mac Chromium.
+
+ Added a test that works only with this patch applied. The test is
+ a manual one, since the hit testing infrastructure in the layout
+ tests sends keyboard and mouse events to the main window and not
+ the cocoa control that implements the popup up, which means we can't
+ select items from the popup up.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25904
+
+
+ * manual-tests/select-narrow-width.html: Added.
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupListBox::PopupListBox):
+ (WebCore::PopupContainer::showExternal):
+
+2009-06-04 Brent Fulgham <bfulgham@webkit.org>
+
+ Unreviewed Windows build correction.
+
+ * WebCore.vcproj/WebCore.vcproj: Add missing 'ReplaceNodeWithSpanCommand.cpp'
+ and 'ReplaceNodeWithSpanCommand.h'
+
+2009-02-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Justin Garcia.
+
+ Make sure execCommand("bold") on <b style="text-decoration: underline">test</b>
+ only removes the bold and not the underline.
+ https://bugs.webkit.org/show_bug.cgi?id=23496
+
+ Test: editing/execCommand/convert-style-elements-to-spans.html
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * css/CSSStyleDeclaration.h:
+ (WebCore::CSSStyleDeclaration::isEmpty):
+ * dom/NamedAttrMap.h:
+ (WebCore::NamedAttrMap::isEmpty):
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::isUnstyledStyleSpan):
+ (WebCore::isSpanWithoutAttributesOrUnstyleStyleSpan):
+ (WebCore::ApplyStyleCommand::applyBlockStyle):
+ (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
+ (WebCore::ApplyStyleCommand::implicitlyStyledElementShouldBeRemovedWhenApplyingStyle):
+ (WebCore::ApplyStyleCommand::replaceWithSpanOrRemoveIfWithoutAttributes):
+ (WebCore::ApplyStyleCommand::removeCSSStyle):
+ (WebCore::ApplyStyleCommand::applyTextDecorationStyle):
+ (WebCore::ApplyStyleCommand::removeInlineStyle):
+ (WebCore::ApplyStyleCommand::addInlineStyleIfNeeded):
+ * editing/ApplyStyleCommand.h:
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::replaceNodeWithSpanPreservingChildrenAndAttributes):
+ * editing/CompositeEditCommand.h:
+ * editing/RemoveNodePreservingChildrenCommand.cpp:
+ (WebCore::RemoveNodePreservingChildrenCommand::RemoveNodePreservingChildrenCommand):
+ * editing/ReplaceNodeWithSpanCommand.cpp: Added.
+ (WebCore::ReplaceNodeWithSpanCommand::ReplaceNodeWithSpanCommand):
+ (WebCore::swapInNodePreservingAttributesAndChildren):
+ (WebCore::ReplaceNodeWithSpanCommand::doApply):
+ (WebCore::ReplaceNodeWithSpanCommand::doUnapply):
+ * editing/ReplaceNodeWithSpanCommand.h: Added.
+ (WebCore::ReplaceNodeWithSpanCommand::create):
+
+2009-06-04 Brent Fulgham <bfulgham@webkit.org>
+
+ Unreviewed build fix for Windows Cairo target.
+
+ Add missing post-build command to copy history/cf contents
+ to output directory.
+
+ * WebCore.vcproj/WebCore.vcproj: Update Debug_Cairo and Release_Cairo
+ target post-build steps with copy commands.
+
+2009-06-04 Pierre d'Herbemont <pdherbemont@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ <rdar://problem/6854695> Movie controller thumb fails to scale with full page zoom
+
+ Account for zoom level when drawing media controller thumb on Windows.
+
+ * rendering/RenderMediaControls.cpp:
+ (WebCore::RenderMediaControls::adjustMediaSliderThumbSize):
+
+2009-06-04 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Move DOM window focus/blur out of SelectionController and into FocusController. Make sure it
+ fires on the focused frame when the page activation state changes also. This is covered by an existing
+ layout test (albeit badly). I have modified the test to be correct.
+
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::setFocused):
+ * page/FocusController.cpp:
+ (WebCore::FocusController::setFocusedFrame):
+ (WebCore::FocusController::setActive):
+
+2009-06-04 Albert J. Wong <ajwong@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26148
+ Adding in empty files to stage the extract of RenderThemeChromiumSkia
+ from RenderThemeChromiumLinux and RenderThemeChromiumWindows.
+
+ * rendering/RenderThemeChromiumSkia.cpp: Added.
+ * rendering/RenderThemeChromiumSkia.h: Added.
+
+2009-06-04 Andrei Popescu <andreip@google.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25562
+ Potential crash after ApplicationCacheStorage::storeNewestCache() fails
+
+ Fix the crash by checking the return value of cacheStorage().storeNewestCache(this)
+ in WebCore::ApplicationCacheGroup::checkIfLoadIsComplete. If storeNewestCache failed,
+ we run the cache failure steps:
+
+ 1. Fire the error events to all pending master entries, as well any other cache hosts
+ currently associated with a cache in this group.
+ 2. Disassociate the pending master entries from the failed new cache.
+ 3. Reinstate the old "newest cache", if there was one.
+
+ We also introduce two other changes:
+
+ 1. a mechanism to rollback storageID changes to the in-memory resource
+ objects when the storing of an ApplicationCache object fails.
+
+ 2. defer removing the pending master entries from the list of pending master entries
+ until the entire load is complete. This matches the HTML 5 spec better. To track
+ if the load is complete we now introduce a counter for those pending master entries
+ that haven't yet finshed downloading.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::ApplicationCacheGroup): initializes the new counter to 0
+ (WebCore::ApplicationCacheGroup::selectCache): increments the counter when a new pending
+ master entry is added.
+ (WebCore::ApplicationCacheGroup::finishedLoadingMainResource): decrements the counter
+ instead of removing the pending master entry.
+ (WebCore::ApplicationCacheGroup::failedLoadingMainResource): decrements the counter
+ instead of removing the pending master entry.
+ (WebCore::ApplicationCacheGroup::setNewestCache): removes an assertion that no longer
+ holds true. In particular, the newest cache is not necessarily new anymore. We can
+ set an old cache as the new cache. This can happen if we failed to store a newly
+ downloaded cache to the database and we are now reinstating the former newest cache.
+ (WebCore::ApplicationCacheGroup::manifestNotFound): resets the counter to 0.
+ (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): check if the loading is complete
+ based on the counter instead of the list of pending master entries. Empty the list of
+ master entries if the load is complete.
+ * loader/appcache/ApplicationCacheGroup.h: add the new counter.
+ * loader/appcache/ApplicationCacheStorage.cpp: introduce the journaling mechanism for
+ in-memory resource objects.
+ (WebCore::ResourceStorageIDJournal::~ResourceStorageIDJournal):
+ (WebCore::ResourceStorageIDJournal::add):
+ (WebCore::ResourceStorageIDJournal::commit):
+ (WebCore::ResourceStorageIDJournal::Record::Record):
+ (WebCore::ResourceStorageIDJournal::Record::restore):
+ (WebCore::ApplicationCacheStorage::store): log the changes to the in-memory resource
+ objects.
+ (WebCore::ApplicationCacheStorage::storeNewestCache): create the journal object.
+ * loader/appcache/ApplicationCacheStorage.h: modify the signature of
+ bool store(ApplicationCache*) to add a pointer to the logger object used to
+ trace the changes to the storageID of the resource objects.
+
+2009-06-04 Jeremy Orlow <jorlow@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26154
+ Allow underscores in the hostnames we parse out of databaseIdentifiers.
+ This code is used for HTML 5 database support.
+
+ * page/SecurityOrigin.cpp:
+ (WebCore::SecurityOrigin::createFromDatabaseIdentifier):
+
+2009-06-04 Mihnea Ovidenie <mihnea@adobe.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 26084: Multiple missing images in webkit-mask-image prevent rendering
+ https://bugs.webkit.org/show_bug.cgi?id=26084
+
+ When painting multiple images, make sure that at least one image is valid before pushing a transparency layer.
+
+ Added a manual test.
+
+ * manual-tests/mask-composite-missing-images.html: Added.
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::paintMaskImages):
+
+2009-06-04 Jeremy Orlow <jorlow@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26180
+ Add a fast path for SecurityOrigin::equal. If "other == this" (where
+ other is the other security origin), then we really don't need to do
+ all the other (expensive) comparisons. We know it's equal.
+
+ * page/SecurityOrigin.cpp:
+ (WebCore::SecurityOrigin::equal):
+
+2009-06-03 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Improvements in how selection behaves with focus/activation and a reversion back to using isActive
+ in the scrollbar theme code to remove a Chromium ifdef.
+
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::SelectionController):
+ Make the controller set its focused state correctly upon initial creation.
+
+ (WebCore::SelectionController::setSelection):
+ Make selection willing to shift the focus node if the selection is focused even if the
+ selection is not active. Whether or not the Page is active is irrelevant to focus changes.
+
+ (WebCore::SelectionController::setFocused):
+ * editing/SelectionController.h:
+ (WebCore::SelectionController::isFocused):
+ Add a new isFocused() method so that code can check if the Selection is focused without caring
+ about the active state.
+
+ * page/Frame.cpp:
+ (WebCore::Frame::setFocusedNodeIfNeeded):
+ Allow focus shifts even when the selection is not active.
+
+ * platform/mac/ScrollbarThemeMac.mm:
+ (WebCore::ScrollbarThemeMac::paint):
+ Revert Dan's change to directly talk to AppKit for checking active state. Now that the WebCore isActive
+ method works, ditch the Chromium-specific #ifdef and go back to the original code.
+
+2009-06-04 Pierre d'Herbemont <pdherbemont@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Test: media/before-load-member-access.html
+
+ https://bugs.webkit.org/show_bug.cgi?id=26081
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::played): Ensure that if m_playedTimeRanges,
+ is not initialized we return a valid range, and don't attempt to use it.
+
+2009-06-03 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Simon Hausmann.
+
+ Implement a way to invalidate the FontCache used by the Qt port.
+
+ * platform/graphics/qt/FontCacheQt.cpp:
+ (WebCore::FontCache::invalidate):
+
+2009-06-04 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Ariya Hidayat.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26015
+
+ [Qt] Single-threaded QtWebKit configuration
+
+ Turn off Database, DOM storage, icon database and Web Workers support
+ when ENABLE_SINGLE_THREADED is turned on.
+
+ Set SQLITE_THREADSAFE to false to turn off SQLite mutexes
+ when ENABLE_SINGLE_THREADED is turned on.
+
+ * WebCore.pro:
+
+2009-06-03 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - add some assertions that Font methods are used on the main thread
+
+ * platform/graphics/Font.cpp:
+ (WebCore::Font::setShouldUseSmoothing):
+ * platform/graphics/Font.h:
+ (WebCore::Font::primaryFont):
+ * platform/graphics/FontFastPath.cpp:
+ (WebCore::Font::glyphDataForCharacter):
+
+2009-06-03 Dan Bernstein <mitz@apple.com>
+
+ - Windows build fix
+
+ Rolled out apparently-accidental changes to config.h from r44398. These
+ were not part of the patch as reviewed.
+
+ * config.h:
+
+2009-06-03 Dmitry Titov <dimich@chromium.org>
+
+ Not reviewed, Chromium build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26177
+ Reverting 'private' to 'protected' on 2 classes.
+ Chromium glue layer (not yet in Webkit tree) relies on ability to derive
+ Chromium-specific platform classes and access the data members.
+ See bug for more details.
+
+ * platform/PlatformMouseEvent.h:
+ * platform/PlatformWheelEvent.h:
+
+2009-06-03 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser <simonfr@apple.com>.
+
+ Fixed https://bugs.webkit.org/show_bug.cgi?id=26162
+
+ This corrects an error when destroying an animation
+ or transition where endAnimation was never getting
+ called and therefore the hardware animation was never
+ getting removed.
+
+ This includes a manual-test since it's really impossible
+ to make a meaningful automatic test for an animation
+ bug like this.
+
+ This has no effect unless accelerated compositing is
+ enabled.
+
+ * manual-tests/interrupted-compound-transform.html: Added.
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::~ImplicitAnimation):
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::~KeyframeAnimation):
+
+2009-06-03 Adam Langley <agl@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Make the scrollbar thumb size twice the width for Chromium Linux. This
+ matches Firefox on Linux.
+
+ This will need layout test pixel results to be rebaselined in the
+ Chromium tree.
+
+ http://code.google.com/p/chromium/issues/detail?id=12602
+ https://bugs.webkit.org/show_bug.cgi?id=26176
+
+ * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
+ (WebCore::ScrollbarThemeChromiumLinux::minimumThumbLength):
+ * platform/chromium/ScrollbarThemeChromiumLinux.h:
+
+2009-06-03 Adam Langley <agl@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Change Chromium scrollbar theme code to use different classes on
+ Windows and Linux rather than suppling symbols. The ScrollbarTheme
+ class is already using virtual dispatch, so there's no reason not to.
+
+ This should not affect any layout tests.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26174
+
+ * platform/chromium/ScrollbarThemeChromium.cpp:
+ * platform/chromium/ScrollbarThemeChromium.h:
+ * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
+ (WebCore::ScrollbarTheme::nativeTheme):
+ (WebCore::ScrollbarThemeChromiumLinux::scrollbarThickness):
+ (WebCore::ScrollbarThemeChromiumLinux::paintTrackPiece):
+ (WebCore::ScrollbarThemeChromiumLinux::paintButton):
+ (WebCore::ScrollbarThemeChromiumLinux::paintThumb):
+ (WebCore::ScrollbarThemeChromiumLinux::buttonSize):
+ * platform/chromium/ScrollbarThemeChromiumLinux.h: Added.
+ * platform/chromium/ScrollbarThemeChromiumWin.cpp:
+ (WebCore::ScrollbarTheme::nativeTheme):
+ (WebCore::ScrollbarThemeChromiumWin::scrollbarThickness):
+ (WebCore::ScrollbarThemeChromiumWin::invalidateOnMouseEnterExit):
+ (WebCore::ScrollbarThemeChromiumWin::shouldSnapBackToDragOrigin):
+ (WebCore::ScrollbarThemeChromiumWin::paintTrackPiece):
+ (WebCore::ScrollbarThemeChromiumWin::paintButton):
+ (WebCore::ScrollbarThemeChromiumWin::paintThumb):
+ (WebCore::ScrollbarThemeChromiumWin::getThemeState):
+ (WebCore::ScrollbarThemeChromiumWin::getThemeArrowState):
+ (WebCore::ScrollbarThemeChromiumWin::getClassicThemeState):
+ (WebCore::ScrollbarThemeChromiumWin::buttonSize):
+ * platform/chromium/ScrollbarThemeChromiumWin.h: Added.
+
+2009-06-03 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Enabling debugger requires that Scripts panel is already attached to the
+ render tree. The reason is that recompile events result in script sources
+ being added into the source frames. Prior to the global options introduced,
+ debugger was enabled from the Scripts panel, so that it was guaranteed to
+ exist. The InspectorController::enableDebugger API calls with no inspector
+ frontend showing were failing though.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26145
+
+ * WebCore.base.exp:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::setWindowVisible):
+ (WebCore::InspectorController::scriptObjectReady):
+ (WebCore::InspectorController::enableDebuggerFromFrontend):
+ (WebCore::InspectorController::enableDebugger):
+ * inspector/InspectorController.h:
+ * inspector/InspectorController.idl:
+ * inspector/InspectorFrontend.cpp:
+ (WebCore::InspectorFrontend::attachDebuggerWhenShown):
+ * inspector/InspectorFrontend.h:
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel.prototype.show):
+ (WebInspector.ScriptsPanel.prototype.attachDebuggerWhenShown):
+ * inspector/front-end/inspector.js:
+ (WebInspector.attachDebuggerWhenShown):
+
+2009-06-03 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ - fix a regression from the previous patch
+
+ * platform/graphics/Font.cpp: Initialize shouldUseFontSmoothing to true.
+
+2009-06-03 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ - eliminate WebCoreTextRenderer
+
+ * WebCore.base.exp: Updated.
+ * WebCore.xcodeproj/project.pbxproj: Removed WebCoreTextRenderer.{h,mm}
+ and promoted WebFontCache.h to private.
+ * platform/graphics/Font.cpp:
+ (WebCore::Font::setShouldUseSmoothing): Added this static setter for
+ a new file-static boolean.
+ (WebCore::Font::shouldUseSmoothing): Added this static getter.
+ * platform/graphics/Font.h: Decleared setShouldUseSmoothing() and
+ shouldUseSmoothing().
+ * platform/graphics/mac/FontMac.mm:
+ (WebCore::Font::drawGlyphs): Use Font::shouldUseSmoothing() instead of
+ WebCoreShouldUseFontSmoothing().
+ * platform/graphics/mac/WebLayer.mm: Removed unneeded #import.
+ * platform/mac/WebCoreTextRenderer.h: Removed.
+ * platform/mac/WebCoreTextRenderer.mm: Removed.
+
+2009-06-03 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ v8's ScriptController::evaluate should protect the Frame like the jsc version.
+ https://bugs.webkit.org/show_bug.cgi?id=26172
+
+ This change is simply copying protections done for Frame in the method
+ WebCore::ScriptController::evaluate in the file js/ScriptController.cpp.
+
+ * bindings/v8/ScriptController.cpp:
+ (WebCore::ScriptController::evaluate):
+
+2009-06-03 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - fix <rdar://problem/6841120> Use CTFontManager notifications instead
+ of ATS notifications
+
+ * platform/graphics/FontCache.h: Made it an error to destroy a
+ FontCache instance.
+ * platform/graphics/mac/FontCacheMac.mm:
+ (WebCore::fontCacheRegisteredFontsChangedNotificationCallback): Added
+ this notification callback for the
+ kCTFontManagerRegisteredFontsChangedNotification, which calls
+ invalidate().
+ (WebCore::FontCache::platformInit): Register for
+ kCTFontManagerRegisteredFontsChangedNotification.
+
+2009-06-03 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Use CGContextShowGlyphsWithAdvances to get more accurate text rendering on Mac.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26161
+
+ * platform/wx/wxcode/mac/carbon/non-kerned-drawing.cpp:
+ (WebCore::drawTextWithSpacing):
+
+2009-06-03 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Reorder ResourcesPanel components initialization to unfreeze resource list scroller.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26159
+
+ * inspector/front-end/ResourcesPanel.js:
+ (WebInspector.ResourcesPanel):
+
+2009-06-03 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ - Fix for crash (preceded by assertion) in InspectorController::didCommitLoad
+ when reloading or navigating with the Inspector open.
+ - Fix for Inspector's Elements panel being empty when Inspector first appears.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26134
+ https://bugs.webkit.org/show_bug.cgi?id=26135
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::scriptObjectReady):
+ (WebCore::InspectorController::didLoadResourceFromMemoryCache):
+ (WebCore::InspectorController::identifierForInitialRequest):
+ (WebCore::InspectorController::ensureResourceTrackingSettingsLoaded):
+ * inspector/InspectorController.h:
+
+2009-06-03 Adam Roben <aroben@apple.com>
+
+ Windows build fix after r44379
+
+ * svg/graphics/SVGImage.cpp: Move EmptyClients.h back down below the
+ other #includes to fix a compiler warning on Windows.
+
+2009-06-02 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Simon Hausmann.
+
+ Add workaround for crash in Linux Flash Player when hosted by
+ another toolkit than GTK+. Bug fixed at the Flash Player bugzilla,
+ issue (FP-2140).
+
+ * plugins/qt/PluginViewQt.cpp:
+ (WebCore::PluginView::setNPWindowIfNeeded):
+
+2009-06-01 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Simon Hausmann.
+
+ Refactor the Qt plugin code to use NPP_SetWindow correctly,
+ to make resizing of plugins work.
+
+ Attention was paid to make sure that the windowed plugins scroll
+ synchronized with the page view. A manual test has been added.
+
+ * manual-tests/qt/plugin-iframe.html: Added.
+ * plugins/PluginView.cpp:
+ (WebCore::PluginView::setFrameRect):
+ (WebCore::PluginView::frameRectsChanged):
+ * plugins/PluginView.h:
+ * plugins/qt/PluginContainerQt.cpp:
+ (PluginContainerQt::PluginContainerQt):
+ * plugins/qt/PluginContainerQt.h:
+ * plugins/qt/PluginPackageQt.cpp:
+ (WebCore::PluginPackage::load):
+ * plugins/qt/PluginViewQt.cpp:
+ (WebCore::PluginView::updatePluginWidget):
+ (WebCore::PluginView::paint):
+ (WebCore::PluginView::setParent):
+ (WebCore::PluginView::setNPWindowRect):
+ (WebCore::PluginView::setNPWindowIfNeeded):
+ (WebCore::PluginView::handlePostReadFile):
+ (WebCore::PluginView::getValue):
+ (WebCore::PluginView::invalidateRect):
+ (WebCore::PluginView::init):
+
+2009-06-02 Darin Adler <darin@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Bug 26112: viewless WebKit -- make events work
+ https://bugs.webkit.org/show_bug.cgi?id=26112
+
+ The main fix here is to make mouse and wheel event coordinates in the coordinate
+ system of the top level NSView rather than the NSWindow when in the viewless mode.
+ This is the design Hyatt chose, but the event part of it wasn't done yet.
+
+ Also fix FrameView to do normal reference counting instead of a strange model with
+ an explicit deref near creation time.
+
+ * WebCore.base.exp: Updated.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::eventLoopHandleMouseUp): Moved this function into the file
+ to reduce conditionals in the header.
+ (WebCore::EventHandler::eventLoopHandleMouseDragged): Ditto.
+
+ * page/EventHandler.h: Reduced includes. Fixed formatting of Objective-C types.
+ Made currentNSEvent a static member function. Added sendContextMenuEvent and
+ eventMayStartDrag functions that takes NSEvent * so the conversion to PlatformMouseEvent
+ can be done here rather than in WebKit. Reduced #if by making eventLoopHandleMouseUp and
+ eventLoopHandleMouseDragged unconditional.
+
+ * page/Frame.cpp:
+ (WebCore::Frame::setView): Made this take a PassRefPtr since it takes ownership.
+ (WebCore::Frame::createView): Changed to use RefPtr and FrameView::create and remove
+ the explicit deref.
+
+ * page/Frame.h: Changed setView to take a PassRefPtr.
+
+ * page/FrameTree.cpp: Added newly-needed include.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::FrameView): Got rid of one of the two constructors, and removed
+ the initialization of m_refCount and call to show from the reamining one.
+ (WebCore::FrameView::create): Added two create functions that do what the two
+ constructors did before, except that they return a PassRefPtr to make sure the
+ reference counting is handled correctly.
+ (WebCore::FrameView::~FrameView): Removed assertion from when FrameView implemented
+ its own reference counting.
+
+ * page/FrameView.h: Inherit from RefCounted for reference counting. Made the
+ constructor private and added create functions. Got rid of the hand-implemented
+ reference counting in this class.
+
+ * page/mac/EventHandlerMac.mm:
+ (WebCore::currentNSEventSlot): Renamed currentEvent to currentNSEventSlot to
+ make it more clear how it relates to currentNSEvent.
+ (WebCore::EventHandler::currentNSEvent): Updated.
+ (WebCore::CurrentEventScope::CurrentEventScope): Added. Use to set/reset the
+ current event in a foolproof way.
+ (WebCore::CurrentEventScope::~CurrentEventScope): Ditto.
+ (WebCore::EventHandler::wheelEvent): Use CurrentEventScope. Pass the platform
+ window in when constructing the PlatformWheelEvent.
+ (WebCore::EventHandler::keyEvent): Use CurrentEventScope.
+ (WebCore::lastEventIsMouseUp): Use currentNSEvent.
+ (WebCore::EventHandler::passMouseDownEventToWidget): Ditto.
+ (WebCore::EventHandler::eventLoopHandleMouseDragged): Ditto.
+ (WebCore::EventHandler::eventLoopHandleMouseUp): Ditto.
+ (WebCore::EventHandler::passSubframeEventToSubframe): Use
+ currentPlatformMouseEvent to get a mouse event that has the appropriate
+ platform window passed to create it.
+ (WebCore::EventHandler::passWheelEventToWidget): Ditto.
+ (WebCore::EventHandler::mouseDown): Ditto.
+ (WebCore::EventHandler::mouseDragged): Ditto.
+ (WebCore::EventHandler::mouseUp): Ditto.
+ (WebCore::EventHandler::mouseMoved): Ditto.
+ (WebCore::EventHandler::currentPlatformMouseEvent): Added. Passes the
+ platform window that's now needed to create a PlatformMouseEvent.
+ (WebCore::EventHandler::sendContextMenuEvent): Added.
+ (WebCore::EventHandler::eventMayStartDrag): Added.
+
+ * platform/HostWindow.h: Removed unneeded includes and constructor definition.
+
+ * platform/PlatformMouseEvent.h: Sorted things in alphabetical order.
+ Changed Mac constructor to take a windowView as well as the event. This is
+ needed in viewless mode, since the "window" is actually an NSView, so the
+ event has to know which view to compute the coordinates with. Made the
+ same change to pointForEvent.
+ * platform/PlatformWheelEvent.h: Ditto.
+
+ * platform/mac/PlatformMouseEventMac.mm:
+ (WebCore::pointForEvent): Convert point from window coordinates to view
+ coordinates if a windowView is passed in. This is used in viewless mode.
+ (WebCore::PlatformMouseEvent::PlatformMouseEvent): Ditto.
+ * platform/mac/WheelEventMac.mm:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent): Ditto.
+
+ * platform/mac/WidgetMac.mm:
+ (WebCore::Widget::convertFromContainingWindow): Fixed case where there
+ is no platform widget and no parent. Before it would yield unpredictable
+ results because of dispatching to a nil object and returning a structure.
+ Now it returns the point without changing coordinates at all, which is what
+ we need for this case in viewless mode.
+
+ * rendering/RenderApplet.cpp: Removed unneeded includes.
+ (WebCore::RenderApplet::intrinsicSize): Use widget function.
+ (WebCore::RenderApplet::createWidgetIfNecessary): Ditto.
+
+ * rendering/RenderApplet.h: Make more things private. Get rid of unneeded
+ explicit destructor.
+
+ * rendering/RenderFrame.cpp: Removed unneeded includes.
+ (WebCore::RenderFrame::edgeInfo): Updated to use node function so header
+ doesn't have to define element function.
+ (WebCore::RenderFrame::viewCleared): Ditto. Also changed to use widget
+ function.
+
+ * rendering/RenderFrame.h: Removed unneeded includes. Made some things
+ private. Got rid of element function.
+
+ * rendering/RenderPart.cpp: Removed unneeded includes.
+ (WebCore::RenderPart::~RenderPart): Changed to use clearWidget function.
+ (WebCore::RenderPart::setWidget): Changed to use widget function.
+ (WebCore::RenderPart::deleteWidget): Changed to use passed-in widget.
+ This is now only called by the clearWidget function.
+
+ * rendering/RenderPart.h: Removed unneeded forward declarations.
+ Made more functions private. Updated deleteWidget to take widget argument.
+
+ * rendering/RenderPartObject.cpp:
+ (WebCore::RenderPartObject::~RenderPartObject): use frameView function
+ instead of getting at m_view directly.
+ (WebCore::RenderPartObject::updateWidget): Ditto.
+ (WebCore::RenderPartObject::layout): Ditto. Same for widget and m_widget.
+ (WebCore::RenderPartObject::viewCleared): Ditto.
+
+ * rendering/RenderPartObject.h: Made some functions private.
+
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::RenderWidget): Initialize m_frameView with
+ construction syntax instead of assignment.
+ (WebCore::RenderWidget::destroy): Updated for name change of m_view
+ to m_frameView.
+ (WebCore::RenderWidget::~RenderWidget): Use clearWidget to delete
+ the widget.
+ (WebCore::RenderWidget::setWidget): Use clearWidget.
+ (WebCore::RenderWidget::paint): Updated for name change of m_view
+ to m_frameView.
+ (WebCore::RenderWidget::deleteWidget): Changed to use passed-in widget.
+
+ * rendering/RenderWidget.h: Made many functions protected, others
+ private and made all data members private.
+
+ * svg/animation/SMILTime.h: Removed unhelpful max and min functions. These
+ just do what std::max and std::min will already do automatically for this
+ type, so they are not helpful.
+
+ * svg/graphics/SVGImage.cpp:
+ (WebCore::SVGImage::SVGImage): Removed unneeded initial values for types
+ that initialize to zero without anything explicit.
+ (WebCore::SVGImage::~SVGImage): Update since m_frame and m_frameView are
+ no longer stored.
+ (WebCore::SVGImage::setContainerSize): Ditto.
+ (WebCore::SVGImage::usesContainerSize): Ditto.
+ (WebCore::SVGImage::size): Ditto.
+ (WebCore::SVGImage::hasRelativeWidth): Ditto.
+ (WebCore::SVGImage::hasRelativeHeight): Ditto.
+ (WebCore::SVGImage::draw): Ditto.
+ (WebCore::SVGImage::nativeImageForCurrentFrame): Ditto.
+ (WebCore::SVGImage::dataChanged): Ditto.
+
+ * svg/graphics/SVGImage.h: Removed unneeded includes and unneeded data
+ members m_document, m_frame, m_frameView, and m_minSize.
+
+2009-06-02 Adam Langley <agl@google.com>
+
+ Reviewed by Eric Seidel.
+
+ The previous code was assuming that we'll be painting buttons on the scrollbar
+ which isn't true on Linux. To reproduce, resize a page with scrollbars until
+ they are less than two widths high.
+
+ This will need pixel test baselines to be updated in the Chromium tree.
+
+ * platform/chromium/ScrollbarThemeChromium.cpp: move this function...
+ * platform/chromium/ScrollbarThemeChromiumWin.cpp:
+ (WebCore::ScrollbarThemeChromium::trackRect): ... to here
+ * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
+ (WebCore::ScrollbarThemeChromium::trackRect): add an alternative which
+ doesn't remove the track when the scrollbar is less than two widths
+ high.
+
+2009-06-02 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ Remove workaround that was added to address <rdar://problem/5488678> as it no longer affects our Tiger builds.
+
+ * Configurations/Base.xcconfig:
+
+2009-06-02 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ Insert*List on an stand-alone image in a content editable region ASSERTS
+ ASSERTION FAILED: isStartOfParagraph(startOfParagraphToMove)
+ https://bugs.webkit.org/show_bug.cgi?id=19066
+
+ Attempt to fix this by noticing that we inserted the list inside
+ the selection which includes the image, and re-adjust the selection
+ to not include the list before trying to move the image into
+ the list item.
+
+ Test: editing/execCommand/list-wrapping-image-crash.html
+
+ * editing/InsertListCommand.cpp:
+ (WebCore::InsertListCommand::doApply):
+
+2009-06-02 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Rename PositionIterator members in hope of further clarity
+ https://bugs.webkit.org/show_bug.cgi?id=24854
+
+ Rename m_parent to m_anchorNode (since although it's always the parent
+ of the previous m_child member, it is not always the parent of the effective position)
+ Rename m_child to m_nodeAfterPositionInAnchor to make clear that it's the node
+ directly following the position. This member is often NULL, but is always
+ a child of m_parent, now m_anchorNode if set.
+ Rename m_offset to m_offsetInAnchor (since it's interpreted relative to m_anchorNode)
+
+ * dom/PositionIterator.cpp:
+ (WebCore::PositionIterator::operator Position):
+ (WebCore::PositionIterator::increment):
+ (WebCore::PositionIterator::decrement):
+ (WebCore::PositionIterator::atStart):
+ (WebCore::PositionIterator::atEnd):
+ (WebCore::PositionIterator::atStartOfNode):
+ (WebCore::PositionIterator::atEndOfNode):
+ (WebCore::PositionIterator::isCandidate):
+ * dom/PositionIterator.h:
+ (WebCore::PositionIterator::PositionIterator):
+ (WebCore::PositionIterator::node):
+ (WebCore::PositionIterator::offsetInLeafNode):
+
+2009-06-02 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Bug 17167: Failures in fast/dom/Node/initial-values.html
+
+ This partly solve a compatibility issue with other browsers. It will also
+ make us more consistent while handling XHTML element.
+
+ The issue is that when we create an XHTML element inside an HTML document
+ (as it is the case when calling createElementNS), we default to the HTML
+ behaviour in nodeName. As we cannot test if an HTMLElement is an XHTML
+ element, our fix is to check whether it has a prefix and then default
+ to XML behaviour for nodeName.
+
+ * html/HTMLElement.cpp:
+ (WebCore::HTMLElement::nodeName): Add a prefix check before
+ returning the uppercase tagName (HTML behaviour).
+
+2009-06-02 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ Add a compareBoundaryPoints which takes RangeBoundaryPoints
+ https://bugs.webkit.org/show_bug.cgi?id=25500
+
+ I noticed the need for this function when removing compareBoundaryPoints(Position, Position)
+ This patch is almost entirely minus lines.
+
+ No functional changes, thus no tests.
+
+ * dom/Range.cpp:
+ (WebCore::Range::setStart):
+ (WebCore::Range::setEnd):
+ (WebCore::Range::compareBoundaryPoints):
+ (WebCore::Range::boundaryPointsValid):
+ * dom/Range.h:
+
+2009-06-02 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ Remove Range::compareBoundaryPoints(Position, Position) per Darin's suggestion in bug 25056
+ https://bugs.webkit.org/show_bug.cgi?id=25500
+
+ Darin indicated the Range should deal only with primitive DOM node/offset
+ pairs, and that Position (which is a more robust editing construct) should have
+ its own comparison functions and that Range.h should not mention Position at all.
+
+ Turns out that Position already has a comparePositions() function (which knows
+ how to additionally handled positions in shadow trees). So I've just changed
+ all callers of compareBoundaryPoints(Position, Position) to use the existing
+ comparePositions() function. I've also added a comparePositions which takes
+ VisiblePositions for convenience.
+
+ * dom/Range.cpp:
+ * dom/Range.h:
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::updateStartEnd):
+ (WebCore::ApplyStyleCommand::applyBlockStyle):
+ (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
+ (WebCore::ApplyStyleCommand::applyInlineStyle):
+ (WebCore::ApplyStyleCommand::applyInlineStyleToRange):
+ (WebCore::ApplyStyleCommand::removeInlineStyle):
+ (WebCore::ApplyStyleCommand::nodeFullySelected):
+ (WebCore::ApplyStyleCommand::nodeFullyUnselected):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::deleteInsignificantText):
+ (WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
+ (WebCore::CompositeEditCommand::moveParagraphs):
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::initializeStartEnd):
+ (WebCore::DeleteSelectionCommand::handleGeneralDelete):
+ (WebCore::DeleteSelectionCommand::mergeParagraphs):
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::nodeWillBeRemoved):
+ * editing/VisibleSelection.cpp:
+ (WebCore::VisibleSelection::toNormalizedRange):
+ * editing/htmlediting.cpp:
+ (WebCore::comparePositions):
+ * editing/htmlediting.h:
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleMousePressEventSingleClick):
+
+2009-06-02 Albert J. Wong <ajwong@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26122
+ Upstream v8_utility.h functions into V8Utilities.h. This patch has
+ some transitional code to make upstreaming easier. This code will
+ be deleted in a few days.
+
+ * bindings/v8/ScriptFunctionCall.cpp:
+ (WebCore::ScriptFunctionCall::construct): NewInstance -> newInstance.
+ * bindings/v8/V8Utilities.h:
+ (WebCore::AllowAllocation::AllowAllocation): Function added.
+ (WebCore::AllowAllocation::~AllowAllocation): Function added.
+ (WebCore::SafeAllocation::NewInstance): Function added.
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::WorkerContextExecutionProxy::initContextIfNeeded):
+ NewInstance -> newInstance.
+ (WebCore::WorkerContextExecutionProxy::toV8): NewInstance ->
+ newInstance.
+
+2009-06-02 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - fix <rdar://problem/6940747> Search field’s focus ring is outset
+
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::RenderThemeWin::adjustSearchFieldStyle): Set the focused
+ search field outline offset to -2.
+
+2009-06-02 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Add list of unimplemented event handlers to DOMWindow.
+
+ * page/DOMWindow.idl:
+
+2009-06-02 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26133
+ Adapt and import py-dom-xpath tests
+
+ Tests: fast/xpath/py-dom-xpath/abbreviations.html
+ fast/xpath/py-dom-xpath/axes.html
+ fast/xpath/py-dom-xpath/data.html
+ fast/xpath/py-dom-xpath/expressions.html
+ fast/xpath/py-dom-xpath/functions.html
+ fast/xpath/py-dom-xpath/nodetests.html
+ fast/xpath/py-dom-xpath/paths.html
+ fast/xpath/py-dom-xpath/predicates.html
+
+ Fix bugs found with this test suite:
+ - name and local-name were incorrect for processing instructions (XPath expanded-name
+ doesn't match DOM exactly);
+ - name, local-name and namespace functions should crash on attribute nodes;
+ - attemps to make node sets from other types were not detected as errors.
+
+ No performance impact.
+
+ * xml/XPathExpressionNode.h: Track type conversion errors that happen during evaluation.
+ An error won't stop evaluation, but an exception will be raised afterwards. We could also
+ detect conversion errors at compile time, but not if we're going to support XPath variables
+ (which is unnecessary for XPathEvaluator, but will be necessary if we decide to make our own
+ XSLT one day).
+
+ * xml/XPathExpression.cpp: (WebCore::XPathExpression::evaluate): Check whether a type
+ conversion exception occurred during evaluation, and raise an excpetion if it did.
+
+ * xml/XPathFunctions.cpp:
+ (WebCore::XPath::expandedNameLocalPart):
+ (WebCore::XPath::expandedName):
+ XPath name(), local-name() and namespace-uri() functions are defined in terms of expanded-name,
+ which doesn't match anything available via DOM exactly. Calculate the expanded name properly.
+ (WebCore::XPath::FunNamespaceURI::evaluate): This function could crash if used with an
+ attribute node, because it released what was possibly the only reference to attribute node
+ before using it. Changed the function to avoid such situation.
+ (WebCore::XPath::FunLocalName::evaluate): Ditto. Also, used the new expandedNameLocalPart()
+ to work properly with processing instruction nodes.
+ (WebCore::XPath::FunName::evaluate): Ditto (using expandedName()).
+ (WebCore::XPath::FunCount::evaluate): Signal an error if the argument is not a node-set
+ (by using toNodeSet unconditionally, which will raise an error, and return an empty set).
+
+ * xml/XPathPath.cpp: (WebCore::XPath::Filter::evaluate): Signal an error if the expression
+ evaluation result is not a node-set.
+
+ * xml/XPathPath.h: (WebCore::XPath::Filter::resultType): A Filter's result is actually
+ always a node-set (this is not so for FilterExpr production in the spec, but is for us,
+ because we don't naively map BNF productions to classes).
+
+ * xml/XPathPredicate.cpp: (WebCore::XPath::Union::evaluate): Signal an error if either side
+ is not a node-set.
+
+ * xml/XPathStep.cpp: Removed an unnecesary include.
+
+ * xml/XPathValue.cpp:
+ (WebCore::XPath::Value::toNodeSet): Signal an error if conversion fails.
+ (WebCore::XPath::Value::modifiableNodeSet): Ditto.
+ (WebCore::XPath::Value::toNumber): Don't allow inputs that don't match XPath Number production
+ (in particular, those using exponential notation).
+
+2009-06-01 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Brady Eidson.
+
+ Part of https://bugs.webkit.org/show_bug.cgi?id=26100
+ Add missing event handler properties to the DOMWindow
+
+ Added oncontextmenu, oninput, and onmessage event handlers to
+ the DOMWindow. Aditionally, the onloadstart, onprogress, onstalled,
+ and onsuspend event handlers were implemented but not added to
+ DOMWindow.idl.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::oninput):
+ (WebCore::DOMWindow::setOninput):
+ (WebCore::DOMWindow::onmessage):
+ (WebCore::DOMWindow::setOnmessage):
+ (WebCore::DOMWindow::oncontextmenu):
+ (WebCore::DOMWindow::setOncontextmenu):
+ * page/DOMWindow.h:
+ * page/DOMWindow.idl:
+
+2009-06-01 Jeremy Orlow <jorlow@chromium.org>
+
+ Reviewed by Darin Adler. Landed by Adam Barth.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26123
+
+ Remove a redundant checkEncodedString call when constructing a
+ KURL object from a string.
+
+ * platform/KURL.cpp:
+ (WebCore::KURL::KURL):
+
+2009-06-01 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, build fix.
+
+ Reposition platform guard, improperly placed by http://trac.webkit.org/changeset/44340
+ Bad Dimitri.
+
+ * platform/KeyboardCodes.h: Repositioned the guard to avoid nested
+ WebCore namespace declarations.
+
+2009-06-01 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, build fix.
+
+ * platform/KeyboardCodes.h: Integrated contents of platform/chromium/KeyboardCodes.h
+ with a stern FIXME.
+ * platform/chromium/KeyboardCodes.h: Removed.
+
+2009-06-01 Nikolas Zimmermann <zimmermann@kde.org>
+
+ Reviewed by Eric Seidel.
+
+ Fix assertion error in --filters enabled debug builds.
+ Instead of using RefPtr<AtomicStringImpl> as keys for the hash maps in SVGFilterBuilder, just use AtomicString objects.
+
+ * svg/graphics/filters/SVGFilterBuilder.cpp:
+ (WebCore::SVGFilterBuilder::SVGFilterBuilder):
+ (WebCore::SVGFilterBuilder::add):
+ (WebCore::SVGFilterBuilder::getEffectById):
+ * svg/graphics/filters/SVGFilterBuilder.h:
+
+2009-06-01 Nikolas Zimmermann <zimmermann@kde.org>
+
+ Reviewed by Eric Seidel.
+
+ Fix --filters enabled build on Mac.
+ Remove unnecessary 'boundingBox' parameter from finishRenderSVGContent() method.
+ Kill several warnings, to make build pass.
+
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::paint):
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::paint):
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::paint):
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::paint):
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::SVGRenderBase::finishRenderSVGContent):
+ * rendering/SVGRenderSupport.h:
+ * rendering/SVGRootInlineBox.cpp:
+ (WebCore::SVGRootInlineBoxPaintWalker::chunkEndCallback):
+ * svg/SVGFEGaussianBlurElement.cpp:
+ (WebCore::SVGFEGaussianBlurElement::setStdDeviation):
+ * svg/graphics/filters/SVGFEFlood.cpp:
+ (WebCore::FEFlood::FEFlood):
+
+2009-06-01 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Dave Hyatt.
+
+ Fix Chromium build by adding an #ifdef, restoring the code path to that
+ before http://trac.webkit.org/changeset/44287.
+
+ * platform/mac/ScrollbarThemeMac.mm:
+ (WebCore::ScrollbarThemeMac::paint): Added an #ifdef.
+
+2009-06-01 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Remove last pieces of the old SVG filter system. They are not
+ usable with our current filter system. The new filter effects
+ will replace the functionality step by step.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * svg/graphics/cairo: Removed.
+ * svg/graphics/cairo/SVGResourceFilterCairo.cpp: Removed.
+ * svg/graphics/cg: Removed.
+ * svg/graphics/cg/SVGResourceFilterCg.cpp: Removed.
+ * svg/graphics/cg/SVGResourceFilterCg.mm: Removed.
+ * svg/graphics/filters/SVGFilterEffect.cpp: Removed.
+ * svg/graphics/filters/SVGFilterEffect.h: Removed.
+ * svg/graphics/filters/cg: Removed.
+ * svg/graphics/filters/cg/SVGFEHelpersCg.h: Removed.
+ * svg/graphics/filters/cg/SVGFEHelpersCg.mm: Removed.
+ * svg/graphics/filters/cg/SVGFilterEffectCg.mm: Removed.
+ * svg/graphics/filters/cg/WKArithmeticFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKArithmeticFilter.h: Removed.
+ * svg/graphics/filters/cg/WKArithmeticFilter.m: Removed.
+ * svg/graphics/filters/cg/WKComponentMergeFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKComponentMergeFilter.h: Removed.
+ * svg/graphics/filters/cg/WKComponentMergeFilter.m: Removed.
+ * svg/graphics/filters/cg/WKDiffuseLightingFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKDiffuseLightingFilter.h: Removed.
+ * svg/graphics/filters/cg/WKDiffuseLightingFilter.m: Removed.
+ * svg/graphics/filters/cg/WKDiscreteTransferFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKDiscreteTransferFilter.h: Removed.
+ * svg/graphics/filters/cg/WKDiscreteTransferFilter.m: Removed.
+ * svg/graphics/filters/cg/WKDisplacementMapFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKDisplacementMapFilter.h: Removed.
+ * svg/graphics/filters/cg/WKDisplacementMapFilter.m: Removed.
+ * svg/graphics/filters/cg/WKDistantLightFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKDistantLightFilter.h: Removed.
+ * svg/graphics/filters/cg/WKDistantLightFilter.m: Removed.
+ * svg/graphics/filters/cg/WKGammaTransferFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKGammaTransferFilter.h: Removed.
+ * svg/graphics/filters/cg/WKGammaTransferFilter.m: Removed.
+ * svg/graphics/filters/cg/WKIdentityTransferFilter.h: Removed.
+ * svg/graphics/filters/cg/WKIdentityTransferFilter.m: Removed.
+ * svg/graphics/filters/cg/WKLinearTransferFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKLinearTransferFilter.h: Removed.
+ * svg/graphics/filters/cg/WKLinearTransferFilter.m: Removed.
+ * svg/graphics/filters/cg/WKNormalMapFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKNormalMapFilter.h: Removed.
+ * svg/graphics/filters/cg/WKNormalMapFilter.m: Removed.
+ * svg/graphics/filters/cg/WKPointLightFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKPointLightFilter.h: Removed.
+ * svg/graphics/filters/cg/WKPointLightFilter.m: Removed.
+ * svg/graphics/filters/cg/WKSpecularLightingFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKSpecularLightingFilter.h: Removed.
+ * svg/graphics/filters/cg/WKSpecularLightingFilter.m: Removed.
+ * svg/graphics/filters/cg/WKSpotLightFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKSpotLightFilter.h: Removed.
+ * svg/graphics/filters/cg/WKSpotLightFilter.m: Removed.
+ * svg/graphics/filters/cg/WKTableTransferFilter.cikernel: Removed.
+ * svg/graphics/filters/cg/WKTableTransferFilter.h: Removed.
+ * svg/graphics/filters/cg/WKTableTransferFilter.m: Removed.
+ * svg/graphics/mac: Removed.
+ * svg/graphics/mac/SVGResourceFilterPlatformDataMac.h: Removed.
+ * svg/graphics/mac/SVGResourceFilterPlatformDataMac.mm: Removed.
+ * svg/graphics/qt: Removed.
+ * svg/graphics/qt/SVGResourceFilterQt.cpp: Removed.
+ * svg/graphics/skia: Removed.
+ * svg/graphics/skia/SVGResourceFilterSkia.cpp: Removed.
+
+2009-06-01 Dmitry Titov <dimich@chromium.org>
+
+ Fix the previous checkin (ttp://trac.webkit.org/changeset/44327).
+ This adds a comment suggested during review.
+
+ * platform/ThreadGlobalData.cpp:
+ (WebCore::ThreadGlobalData::~ThreadGlobalData): Add comment clarifying the change.
+
+2009-06-01 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25973
+ Avoid calling CurrentThread() in thread-specific destructors in OSX Chromium.
+ Pthreads invoke thread-specific destructors after WTF::detachThread() is called and ThreadIdentifier
+ for the thread removed from the WTF thread map. Calling CurrentThread() in such destructor causes
+ the ThreadIdentifier to be re-created and inserted into the map again. Since Pthreads on OSX reuse
+ the pthread_t between threads, the next created thread will have the same pthread_t and cause an assert
+ in establishIdentifierForPthreadHandle() since the id is already in the map.
+
+ The behavior is covered by existing test LayoutTests/fast/workers/worker-terminate.html, which currently fails
+ on OSX Chromium and will stop failing after this change.
+
+ * platform/ThreadGlobalData.h:
+ * platform/ThreadGlobalData.cpp:
+ (WebCore::ThreadGlobalData::~ThreadGlobalData):
+ Store the result of "isMainThread()" in a member variable during construction of thread-specific data
+ to avoid calling IsMainThread() in destructor, since the latter calls CurrentThread() in OSX Chromium.
+
+2009-06-01 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Alder and Maciej Stachowiak.
+
+ Bug 26057: StringImpl should share buffers with UString.
+ https://bugs.webkit.org/show_bug.cgi?id=26057
+
+ This change results in the following performance improvements:
+ On http://www.hixie.ch/tests/adhoc/perf/dom/artificial/core/001.html
+ the time went from 78ms to 40ms for append (other times remained constant).
+
+ On http://www.hixie.ch/tests/adhoc/perf/dom/artificial/core/002.html,
+ the time went from 3900ms to 2600ms.
+
+ For http://dromaeo.com/?dom, the time for DomModification improved by ~6%.
+ Other tests in dom seemed to be faster across several runs but within the
+ margin of error (except DOM Attributes which was slightly ~1.5% worse).
+
+ Existing tests cover this code and there is no new functionality
+ that is exposed to test.
+
+ * platform/text/AtomicString.cpp:
+ (WebCore::AtomicString::add):
+ * platform/text/String.cpp:
+ (WebCore::String::String):
+ (WebCore::String::operator UString):
+ * platform/text/StringImpl.cpp:
+ (WebCore::StringImpl::StringImpl):
+ (WebCore::StringImpl::~StringImpl):
+ (WebCore::StringImpl::create): Consumes a shared buffer.
+ (WebCore::StringImpl::ustring): Shares the StringImpl's buffer with the UString.
+ (WebCore::StringImpl::sharedBuffer): Exposes the buffer that may be shared.
+ * platform/text/StringImpl.h:
+ (WebCore::StringImpl::hasTerminatingNullCharacter):
+ (WebCore::StringImpl::inTable):
+ (WebCore::StringImpl::setInTable): Converted the bools to be inside of PtrAndFlags
+ to avoid growing StringImpl in size.
+
+2009-06-01 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, build fix.
+
+ V8 bindings follow-up to to DOMWindow-related cleanup:
+ http://trac.webkit.org/changeset/44215
+
+ * bindings/v8/ScriptController.cpp: Removed disconnectFrame(), relocated
+ its body to destructor.
+ * bindings/v8/ScriptController.h: Removed disconnectFrame() decl.
+
+2009-05-28 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ - Add panel enabler to the resources panel.
+ - Add session / always options into the panel enabler.
+ - Make enabled status for three panels sticky (globally).
+ - Persist enabled status using InspectorController::Settings
+ - Make InspectorController produce no network-related overhead when
+ resources panel is not enabled.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26046
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::InspectorController):
+ (WebCore::InspectorController::setWindowVisible):
+ (WebCore::InspectorController::populateScriptObjects):
+ (WebCore::InspectorController::identifierForInitialRequest):
+ (WebCore::InspectorController::willSendRequest):
+ (WebCore::InspectorController::didReceiveResponse):
+ (WebCore::InspectorController::didReceiveContentLength):
+ (WebCore::InspectorController::didFinishLoading):
+ (WebCore::InspectorController::didFailLoading):
+ (WebCore::InspectorController::resourceRetrievedByXMLHttpRequest):
+ (WebCore::InspectorController::scriptImported):
+ (WebCore::InspectorController::enableResourceTracking):
+ (WebCore::InspectorController::disableResourceTracking):
+ (WebCore::InspectorController::startUserInitiatedProfiling):
+ (WebCore::InspectorController::enableProfiler):
+ (WebCore::InspectorController::disableProfiler):
+ (WebCore::InspectorController::enableDebugger):
+ (WebCore::InspectorController::disableDebugger):
+ * inspector/InspectorController.h:
+ (WebCore::InspectorController::Setting::Setting):
+ (WebCore::InspectorController::resourceTrackingEnabled):
+ * inspector/InspectorController.idl:
+ * inspector/InspectorFrontend.cpp:
+ (WebCore::InspectorFrontend::resourceTrackingWasEnabled):
+ (WebCore::InspectorFrontend::resourceTrackingWasDisabled):
+ * inspector/InspectorFrontend.h:
+ * inspector/front-end/PanelEnablerView.js:
+ (WebInspector.PanelEnablerView.enableOption):
+ (WebInspector.PanelEnablerView):
+ (WebInspector.PanelEnablerView.prototype._windowResized):
+ (WebInspector.PanelEnablerView.prototype.alwaysWasChosen):
+ * inspector/front-end/ProfilesPanel.js:
+ (WebInspector.ProfilesPanel.prototype._enableProfiling):
+ (WebInspector.ProfilesPanel.prototype._toggleProfiling):
+ * inspector/front-end/ResourcesPanel.js:
+ (WebInspector.ResourcesPanel):
+ (WebInspector.ResourcesPanel.prototype.get statusBarItems):
+ (WebInspector.ResourcesPanel.prototype.resourceTrackingWasEnabled):
+ (WebInspector.ResourcesPanel.prototype.resourceTrackingWasDisabled):
+ (WebInspector.ResourcesPanel.prototype.reset):
+ (WebInspector.ResourcesPanel.prototype._updateSidebarWidth):
+ (WebInspector.ResourcesPanel.prototype._enableResourceTracking):
+ (WebInspector.ResourcesPanel.prototype._toggleResourceTracking):
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel.prototype._enableDebugging):
+ (WebInspector.ScriptsPanel.prototype._toggleDebugging):
+ * inspector/front-end/inspector.css:
+ * inspector/front-end/inspector.js:
+ (WebInspector.resourceTrackingWasEnabled):
+ (WebInspector.resourceTrackingWasDisabled):
+
+2009-06-01 Drew Wilson <atwilson@google.com>
+
+ Reviewed by Darin Adler. Landed (and tweaked) by Adam Barth.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25902
+
+ Added WorkerContext.close()
+
+ Test: fast/workers/worker-close.html
+
+ * workers/WorkerContext.cpp:
+ (WebCore::WorkerContext::close):
+ * workers/WorkerContext.h:
+ * workers/WorkerContext.idl:
+ * workers/WorkerMessagingProxy.cpp:
+ (WebCore::WorkerMessagingProxy::workerContextDestroyedInternal):
+
+2009-06-01 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=12471
+ XPathResult not invalidated for documents retrieved via XMLHttpRequest
+
+ Test: fast/xpath/detached-subtree-invalidate-iterator.html and existing tests in dom/svg/level3/xpath.
+
+ Use DOM tree version instead of DOMSubtreeModified events to invalidate, which is more
+ reliable and much faster.
+
+ * xml/XPathExpression.cpp:
+ (WebCore::XPathExpression::evaluate):
+ * xml/XPathResult.cpp:
+ (WebCore::XPathResult::XPathResult):
+ (WebCore::XPathResult::~XPathResult):
+ (WebCore::XPathResult::invalidIteratorState):
+ (WebCore::XPathResult::iterateNext):
+ * xml/XPathResult.h:
+ (WebCore::XPathResult::create):
+
+2009-06-01 Brett Wilson <brettw@chromium.org>
+
+ Reviewed by Darin Adler. Landed by Adam Barth.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25750
+
+ Test: fast/transforms/bounding-rect-zoom.html
+
+ Make getClientRects and getBoundingClientRect account for ther zoom
+ factor.
+
+ * dom/Element.cpp:
+ (WebCore::adjustFloatPointForAbsoluteZoom):
+ (WebCore::adjustFloatQuadForAbsoluteZoom):
+ (WebCore::adjustIntRectForAbsoluteZoom):
+ (WebCore::Element::getClientRects):
+ (WebCore::Element::getBoundingClientRect):
+
+2009-06-01 Tony Chang <tony@chromium.org>
+
+ Reviewed by Dimitri Glazkov. Landed by Adam Barth.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26026
+
+ Fix an infinite loop when using the keyboard in Chromium select
+ popups.
+
+ Not testable since it involves sending a keyboard event to
+ the popup, which is not possible (eventSender sends the key
+ events through webview, we want to go through the webwidget).
+
+ * platform/chromium/PopupMenuChromium.cpp:
+
+2009-06-01 Nate Chapin <japhet@google.com>
+
+ Reviewed by Dimitri Glazkov. Landed by Adam Barth.
+
+ If a url with an anchor is being loaded, ensure that the anchor remains locked in view until the page
+ has finished loading compeltely or the user has manually scrolled. Refreshing an anchor url after
+ scrolling to a new location on the page will still result in jumping to the new location.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26034
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::gotoAnchor): Set anchor lock after navigating to anchor.
+ (WebCore::FrameLoader::completed): Release anchor lock.
+ * page/FrameView.cpp:
+ (WebCore::FrameView::FrameView): Ensure anchor lock starts unset.
+ (WebCore::FrameView::reset): Ensure anchor lock starts unset.
+ (WebCore::FrameView::layout): If anchor lock is set, force a gotoAnchor() after layout.
+ (WebCore::FrameView::scrollRectIntoViewRecursively): Release anchor lock if a programmatic scroll begins.
+ (WebCore::FrameView::setWasScrolledByUser): Release anchor lock if user manually scrolls.
+ (WebCore::FrameView::setScrollPosition): Release anchor lock if a programmatic scroll begins.
+ * page/FrameView.h:
+ (WebCore::FrameView::lockedToAnchor): Added.
+ (WebCore::FrameView::setLockedToAnchor): Added.
+
+2009-05-31 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ WebKit needs cross-platform filter system
+ [https://bugs.webkit.org/show_bug.cgi?id=19991]
+
+ A short clean-up. FilterBuilder is SVG specific. Move it
+ to svg/graphics/filters and rename it to SVGFilterBuilder.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.xcodeproj/project.pbxproj:
+ * svg/FilterBuilder.cpp: Removed.
+ * svg/FilterBuilder.h: Removed.
+ * svg/SVGFilterElement.cpp:
+ * svg/SVGFilterPrimitiveStandardAttributes.h:
+ * svg/graphics/SVGResourceFilter.cpp:
+ (WebCore::SVGResourceFilter::SVGResourceFilter):
+ * svg/graphics/SVGResourceFilter.h:
+ (WebCore::SVGResourceFilter::builder):
+ * svg/graphics/filters/SVGFilterBuilder.cpp: Added.
+ (WebCore::SVGFilterBuilder::SVGFilterBuilder):
+ (WebCore::SVGFilterBuilder::add):
+ (WebCore::SVGFilterBuilder::getEffectById):
+ (WebCore::SVGFilterBuilder::clearEffects):
+ * svg/graphics/filters/SVGFilterBuilder.h: Added.
+ (WebCore::SVGFilterBuilder::lastEffect):
+
+2009-05-31 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=13233
+ Need to implement an optimizing XPath evaluator
+
+ Avoid sorting results of hierarchical paths that are naturally sorted. On a flat data structure
+ with 128K nodes and a simple XPath expression, this changes evaluation time from 1.5 minutes
+ to 33 ms.
+
+ * xml/XPathNodeSet.h: Keep track of whether subtrees rooted at nodes in set are disjoint,
+ which is useful for optimization.
+ (WebCore::XPath::NodeSet::NodeSet): Removed, it was identical to compiler generated one.
+ (WebCore::XPath::NodeSet::operator=): Ditto.
+ (WebCore::XPath::NodeSet::swap): Ditto.
+ (WebCore::XPath::NodeSet::isSorted): Single element sets are always sorted, even if sort()
+ was never called.
+ (WebCore::XPath::NodeSet::markSubtreesDisjoint): Just like being sorted, the new flag is
+ maintained by callers.
+ (WebCore::XPath::NodeSet::subtreesAreDisjoint): A single element set only has one subtree.
+ Currently, the only way for a set to gain this flag is to be produced from a single element
+ set with a hierarchical location path.
+
+ * xml/XPathPath.cpp: (WebCore::XPath::LocationPath::evaluate): Use the new flag to avoid
+ maintaining a set of unique nodes, and to avoid sorting the result.
+
+2009-05-31 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=13233
+ Need to implement an optimizing XPath evaluator
+
+ This patch adds some infrastructure and simple optimizations. Namely,
+ - we now avoid building a full NodeSet just to evaluate a predicate in some cases;
+ - "/descendant-or-self::node()/child::" is optimized to iterate the tree once when possible;
+
+ * xml/XPathExpressionNode.cpp:
+ (WebCore::XPath::Expression::Expression):
+ * xml/XPathExpressionNode.h:
+ (WebCore::XPath::Expression::addSubExpression):
+ (WebCore::XPath::Expression::isContextNodeSensitive):
+ (WebCore::XPath::Expression::isContextPositionSensitive):
+ (WebCore::XPath::Expression::isContextSizeSensitive):
+ (WebCore::XPath::Expression::setIsContextNodeSensitive):
+ (WebCore::XPath::Expression::setIsContextPositionSensitive):
+ (WebCore::XPath::Expression::setIsContextSizeSensitive):
+ XPath expression now knows its result type, and whether evaluation depends on context.
+
+ * xml/XPathFunctions.cpp:
+ (WebCore::XPath::FunLast::resultType):
+ (WebCore::XPath::FunLast::FunLast):
+ (WebCore::XPath::FunPosition::resultType):
+ (WebCore::XPath::FunPosition::FunPosition):
+ (WebCore::XPath::FunCount::resultType):
+ (WebCore::XPath::FunId::resultType):
+ (WebCore::XPath::FunLocalName::resultType):
+ (WebCore::XPath::FunLocalName::FunLocalName):
+ (WebCore::XPath::FunNamespaceURI::resultType):
+ (WebCore::XPath::FunNamespaceURI::FunNamespaceURI):
+ (WebCore::XPath::FunName::resultType):
+ (WebCore::XPath::FunName::FunName):
+ (WebCore::XPath::FunString::resultType):
+ (WebCore::XPath::FunString::FunString):
+ (WebCore::XPath::FunConcat::resultType):
+ (WebCore::XPath::FunStartsWith::resultType):
+ (WebCore::XPath::FunContains::resultType):
+ (WebCore::XPath::FunSubstringBefore::resultType):
+ (WebCore::XPath::FunSubstringAfter::resultType):
+ (WebCore::XPath::FunSubstring::resultType):
+ (WebCore::XPath::FunStringLength::resultType):
+ (WebCore::XPath::FunStringLength::FunStringLength):
+ (WebCore::XPath::FunNormalizeSpace::resultType):
+ (WebCore::XPath::FunNormalizeSpace::FunNormalizeSpace):
+ (WebCore::XPath::FunTranslate::resultType):
+ (WebCore::XPath::FunBoolean::resultType):
+ (WebCore::XPath::FunNot::resultType):
+ (WebCore::XPath::FunTrue::resultType):
+ (WebCore::XPath::FunFalse::resultType):
+ (WebCore::XPath::FunLang::resultType):
+ (WebCore::XPath::FunLang::FunLang):
+ (WebCore::XPath::FunNumber::resultType):
+ (WebCore::XPath::FunNumber::FunNumber):
+ (WebCore::XPath::FunSum::resultType):
+ (WebCore::XPath::FunFloor::resultType):
+ (WebCore::XPath::FunCeiling::resultType):
+ (WebCore::XPath::FunRound::resultType):
+ (WebCore::XPath::Function::setArguments):
+ Set optimization details for the expression. Normally, a function does not introduce context
+ node set dependency, but some use context node as default argument, or otherwise use the context.
+
+ * xml/XPathFunctions.h: Tweaked style.
+
+ * xml/XPathPath.cpp:
+ (WebCore::XPath::Filter::Filter): A filter is as context node set sensitive as its expression is.
+ (WebCore::XPath::LocationPath::LocationPath): A location path can only be context node sensitive,
+ and only if the path relative.
+ (WebCore::XPath::LocationPath::appendStep): Invoke compile-time Step optimizations.
+ (WebCore::XPath::LocationPath::insertFirstStep): Ditto.
+ (WebCore::XPath::Path::Path): A path is as context node set sensitive as its filter is.
+
+ * xml/XPathPath.h:
+ (WebCore::XPath::Filter::resultType): Result type of a filter is the same as of its expression
+ (useful filters return NodeSets, of course).
+ (WebCore::XPath::LocationPath::setAbsolute): An absolute location path if context node set
+ insensitive.
+ (WebCore::XPath::LocationPath::resultType): A path's result is always a node set.
+ (WebCore::XPath::Path::resultType): Ditto.
+
+ * xml/XPathPredicate.h:
+ (WebCore::XPath::Number::resultType): Return a proper result type.
+ (WebCore::XPath::StringExpression::resultType): Ditto.
+ (WebCore::XPath::Negative::resultType): Ditto.
+ (WebCore::XPath::NumericOp::resultType): Ditto.
+ (WebCore::XPath::EqTestOp::resultType): Ditto.
+ (WebCore::XPath::LogicalOp::resultType): Ditto.
+ (WebCore::XPath::Union::resultType): Ditto.
+ (WebCore::XPath::Predicate::isContextPositionSensitive): A predicate can be context position
+ sensitive even if its expression is not, because e.g. [5] is a shortcut for [position()=5].
+ (WebCore::XPath::Predicate::isContextSizeSensitive): This matches expression result.
+
+ * xml/XPathStep.h:
+ (WebCore::XPath::Step::NodeTest::Kind): Removed unused ElementNodeTest, which was previously
+ borrowed from XPath 2.0 to express some optimizations.
+ (WebCore::XPath::Step::NodeTest::mergedPredicates): To avoid building a huge node set and
+ filtering it with predicates, we now try to apply predicates while enumerating an axis.
+ (WebCore::XPath::Step::nodeTest): Expose m_nodeTest.
+
+ * xml/XPathStep.cpp:
+ (WebCore::XPath::Step::~Step): The step owns NodeTest merged predicates, so it is still
+ possible to copy NodeTests.
+ (WebCore::XPath::Step::optimize): Merge predicates into NodeTest if possible.
+ (WebCore::XPath::optimizeStepPair): Optimize some expressions containing "//".
+ (WebCore::XPath::Step::predicatesAreContextListInsensitive): The above optimization is only
+ possible if there are no context sensitive predicates for "//".
+ (WebCore::XPath::Step::evaluate): Track context position for the first merged predicate.
+ (WebCore::XPath::nodeMatchesBasicTest): Check whether the node matches node test, ignoring
+ merged predicates.
+ (WebCore::XPath::nodeMatches): Additionally check merged predicates, and update position.
+ (WebCore::XPath::Step::nodesInAxis): Check merged predicates in optimized attribute code
+ path.
+
+ * xml/XPathVariableReference.h: (WebCore::XPath::VariableReference::resultType): Variable
+ references are not used with XPathEvaluator, so we'll only need them if we decide to
+ reimplement XSLT. The type of variable reference is not known at compile time.
+
+2009-05-31 Sam Weinig <sam@webkit.org>
+
+ Rubber-stamped by Dan Bernstein.
+
+ Remove unused JSEventTargetBase.h
+
+ * GNUmakefile.am:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSEventTargetBase.h: Removed.
+
+2009-05-31 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Part of https://bugs.webkit.org/show_bug.cgi?id=26100
+ Add missing event handler properties to the DOMWindow
+
+ Add missing oncanplay, oncanplaythrough, ondurationchange, onemptied,
+ onended, onloadeddata, onloadedmetadata, onpause, onplay, onplaying,
+ onratechange, onseeked, onseeking, ontimeupdate, onvolumechange,
+ onwaiting, onloadstart, onprogress, onstalled, onsuspend, ondrag,
+ ondragend, ondragenter, ondragleave, ondragover, ondragstart and
+ ondrop event handlers to the DOMWindow.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::ondrag):
+ (WebCore::DOMWindow::setOndrag):
+ (WebCore::DOMWindow::ondragend):
+ (WebCore::DOMWindow::setOndragend):
+ (WebCore::DOMWindow::ondragenter):
+ (WebCore::DOMWindow::setOndragenter):
+ (WebCore::DOMWindow::ondragleave):
+ (WebCore::DOMWindow::setOndragleave):
+ (WebCore::DOMWindow::ondragover):
+ (WebCore::DOMWindow::setOndragover):
+ (WebCore::DOMWindow::ondragstart):
+ (WebCore::DOMWindow::setOndragstart):
+ (WebCore::DOMWindow::ondrop):
+ (WebCore::DOMWindow::setOndrop):
+ (WebCore::DOMWindow::oncanplay):
+ (WebCore::DOMWindow::setOncanplay):
+ (WebCore::DOMWindow::oncanplaythrough):
+ (WebCore::DOMWindow::setOncanplaythrough):
+ (WebCore::DOMWindow::ondurationchange):
+ (WebCore::DOMWindow::setOndurationchange):
+ (WebCore::DOMWindow::onemptied):
+ (WebCore::DOMWindow::setOnemptied):
+ (WebCore::DOMWindow::onended):
+ (WebCore::DOMWindow::setOnended):
+ (WebCore::DOMWindow::onloadeddata):
+ (WebCore::DOMWindow::setOnloadeddata):
+ (WebCore::DOMWindow::onloadedmetadata):
+ (WebCore::DOMWindow::setOnloadedmetadata):
+ (WebCore::DOMWindow::onpause):
+ (WebCore::DOMWindow::setOnpause):
+ (WebCore::DOMWindow::onplay):
+ (WebCore::DOMWindow::setOnplay):
+ (WebCore::DOMWindow::onplaying):
+ (WebCore::DOMWindow::setOnplaying):
+ (WebCore::DOMWindow::onratechange):
+ (WebCore::DOMWindow::setOnratechange):
+ (WebCore::DOMWindow::onseeked):
+ (WebCore::DOMWindow::setOnseeked):
+ (WebCore::DOMWindow::onseeking):
+ (WebCore::DOMWindow::setOnseeking):
+ (WebCore::DOMWindow::ontimeupdate):
+ (WebCore::DOMWindow::setOntimeupdate):
+ (WebCore::DOMWindow::onvolumechange):
+ (WebCore::DOMWindow::setOnvolumechange):
+ (WebCore::DOMWindow::onwaiting):
+ (WebCore::DOMWindow::setOnwaiting):
+ (WebCore::DOMWindow::onloadstart):
+ (WebCore::DOMWindow::setOnloadstart):
+ (WebCore::DOMWindow::onprogress):
+ (WebCore::DOMWindow::setOnprogress):
+ (WebCore::DOMWindow::onstalled):
+ (WebCore::DOMWindow::setOnstalled):
+ (WebCore::DOMWindow::onsuspend):
+ (WebCore::DOMWindow::setOnsuspend):
+ * page/DOMWindow.h:
+ * page/DOMWindow.idl:
+
+2009-05-31 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Part of https://bugs.webkit.org/show_bug.cgi?id=26100
+ Add missing event handler properties to the DOMWindow
+
+ Add missing onstorage event handler to the DOMWindow.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::onstorage):
+ (WebCore::DOMWindow::setOnstorage):
+ * page/DOMWindow.h:
+ * page/DOMWindow.idl:
+
+2009-05-30 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=26110
+ Update online/offline events to match the current spec.
+ - Also adds window.ononline and window.onoffline event handler
+ properties.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::onoffline):
+ (WebCore::DOMWindow::setOnoffline):
+ (WebCore::DOMWindow::ononline):
+ (WebCore::DOMWindow::setOnonline):
+ * page/DOMWindow.h:
+ * page/DOMWindow.idl:
+ * page/Page.cpp:
+ (WebCore::networkStateChanged):
+
+2009-05-31 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ WebKit needs cross-platform filter system
+ [https://bugs.webkit.org/show_bug.cgi?id=19991]
+
+ Make use of the new filter system in WebCore for SVG. Deleted Mac bindings
+ and replace it by a platform independent code. Calculation of subRegions
+ is missing but needed for a first filter effect.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/graphics/filters/Filter.h:
+ (WebCore::Filter::~Filter):
+ (WebCore::Filter::setSourceImage):
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::SVGRenderBase::prepareToRenderSVGContent):
+ (WebCore::SVGRenderBase::finishRenderSVGContent):
+ * svg/FilterBuilder.h:
+ (WebCore::FilterBuilder::lastEffect):
+ * svg/SVGFEBlendElement.cpp:
+ (WebCore::SVGFEBlendElement::SVGFEBlendElement):
+ (WebCore::SVGFEBlendElement::build):
+ * svg/SVGFEBlendElement.h:
+ * svg/SVGFEColorMatrixElement.cpp:
+ (WebCore::SVGFEColorMatrixElement::SVGFEColorMatrixElement):
+ (WebCore::SVGFEColorMatrixElement::build):
+ * svg/SVGFEColorMatrixElement.h:
+ * svg/SVGFEComponentTransferElement.cpp:
+ (WebCore::SVGFEComponentTransferElement::SVGFEComponentTransferElement):
+ (WebCore::SVGFEComponentTransferElement::build):
+ * svg/SVGFEComponentTransferElement.h:
+ * svg/SVGFECompositeElement.cpp:
+ (WebCore::SVGFECompositeElement::SVGFECompositeElement):
+ (WebCore::SVGFECompositeElement::build):
+ * svg/SVGFECompositeElement.h:
+ * svg/SVGFEDiffuseLightingElement.cpp:
+ (WebCore::SVGFEDiffuseLightingElement::SVGFEDiffuseLightingElement):
+ (WebCore::SVGFEDiffuseLightingElement::build):
+ * svg/SVGFEDiffuseLightingElement.h:
+ * svg/SVGFEDisplacementMapElement.cpp:
+ (WebCore::SVGFEDisplacementMapElement::SVGFEDisplacementMapElement):
+ (WebCore::SVGFEDisplacementMapElement::build):
+ * svg/SVGFEDisplacementMapElement.h:
+ * svg/SVGFEFloodElement.cpp:
+ (WebCore::SVGFEFloodElement::SVGFEFloodElement):
+ (WebCore::SVGFEFloodElement::build):
+ * svg/SVGFEFloodElement.h:
+ * svg/SVGFEGaussianBlurElement.cpp:
+ (WebCore::SVGFEGaussianBlurElement::SVGFEGaussianBlurElement):
+ (WebCore::SVGFEGaussianBlurElement::build):
+ * svg/SVGFEGaussianBlurElement.h:
+ * svg/SVGFEImageElement.cpp:
+ (WebCore::SVGFEImageElement::SVGFEImageElement):
+ (WebCore::SVGFEImageElement::notifyFinished):
+ (WebCore::SVGFEImageElement::build):
+ * svg/SVGFEImageElement.h:
+ * svg/SVGFEMergeElement.cpp:
+ (WebCore::SVGFEMergeElement::SVGFEMergeElement):
+ (WebCore::SVGFEMergeElement::build):
+ * svg/SVGFEMergeElement.h:
+ * svg/SVGFEOffsetElement.cpp:
+ (WebCore::SVGFEOffsetElement::SVGFEOffsetElement):
+ (WebCore::SVGFEOffsetElement::build):
+ * svg/SVGFEOffsetElement.h:
+ * svg/SVGFESpecularLightingElement.cpp:
+ (WebCore::SVGFESpecularLightingElement::SVGFESpecularLightingElement):
+ (WebCore::SVGFESpecularLightingElement::build):
+ * svg/SVGFESpecularLightingElement.h:
+ * svg/SVGFETileElement.cpp:
+ (WebCore::SVGFETileElement::SVGFETileElement):
+ (WebCore::SVGFETileElement::build):
+ * svg/SVGFETileElement.h:
+ * svg/SVGFETurbulenceElement.cpp:
+ (WebCore::SVGFETurbulenceElement::SVGFETurbulenceElement):
+ (WebCore::SVGFETurbulenceElement::build):
+ * svg/SVGFETurbulenceElement.h:
+ * svg/SVGFilterElement.cpp:
+ (WebCore::SVGFilterElement::canvasResource):
+ * svg/SVGFilterPrimitiveStandardAttributes.cpp:
+ (WebCore::SVGFilterPrimitiveStandardAttributes::setStandardAttributes):
+ * svg/SVGFilterPrimitiveStandardAttributes.h:
+ (WebCore::SVGFilterPrimitiveStandardAttributes::contextElement):
+ * svg/graphics/SVGResourceFilter.cpp:
+ (WebCore::SVGResourceFilter::SVGResourceFilter):
+ (WebCore::SVGResourceFilter::addFilterEffect):
+ (WebCore::SVGResourceFilter::filterBBoxForItemBBox):
+ (WebCore::SVGResourceFilter::prepareFilter):
+ (WebCore::SVGResourceFilter::applyFilter):
+ (WebCore::SVGResourceFilter::externalRepresentation):
+ * svg/graphics/SVGResourceFilter.h:
+ (WebCore::SVGResourceFilter::filterBoundingBox):
+ (WebCore::SVGResourceFilter::setFilterBoundingBox):
+ (WebCore::SVGResourceFilter::itemBoundingBox):
+ (WebCore::SVGResourceFilter::setItemBoundingBox):
+ (WebCore::SVGResourceFilter::builder):
+
+2009-05-31 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ WebKit needs cross-platform filter system
+ [https://bugs.webkit.org/show_bug.cgi?id=19991]
+
+ Adding 'in1' attribute support for <feFlood>, as specified in SVG 1.1.
+ This change helps creating test cases, once filters are activated.
+
+ * svg/SVGFEFloodElement.cpp:
+ (WebCore::SVGFEFloodElement::SVGFEFloodElement):
+ (WebCore::SVGFEFloodElement::parseMappedAttribute):
+ (WebCore::SVGFEFloodElement::build):
+ * svg/SVGFEFloodElement.h:
+ * svg/SVGFEFloodElement.idl:
+ * svg/graphics/filters/SVGFEFlood.cpp:
+ (WebCore::FEFlood::FEFlood):
+ (WebCore::FEFlood::create):
+ * svg/graphics/filters/SVGFEFlood.h:
+
+2009-05-31 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ WebKit needs cross-platform filter system
+ [https://bugs.webkit.org/show_bug.cgi?id=19991]
+
+ Replace all occurrences of SVGResourceFilter by Filter. This is the last
+ step for a SVG independent filter system. Every other part of WebCore can
+ use the filter system by creating a new Filter object.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/graphics/filters/FEBlend.cpp:
+ (WebCore::FEBlend::apply):
+ * platform/graphics/filters/FEBlend.h:
+ * platform/graphics/filters/FEColorMatrix.cpp:
+ (WebCore::FEColorMatrix::apply):
+ * platform/graphics/filters/FEColorMatrix.h:
+ * platform/graphics/filters/FEComponentTransfer.cpp:
+ (WebCore::FEComponentTransfer::apply):
+ * platform/graphics/filters/FEComponentTransfer.h:
+ * platform/graphics/filters/FEComposite.cpp:
+ (WebCore::FEComposite::apply):
+ * platform/graphics/filters/FEComposite.h:
+ * platform/graphics/filters/Filter.h: Added.
+ (WebCore::Filter::setSourceImage):
+ (WebCore::Filter::sourceImage):
+ * platform/graphics/filters/FilterEffect.h:
+ * platform/graphics/filters/SourceAlpha.cpp:
+ (WebCore::SourceAlpha::apply):
+ * platform/graphics/filters/SourceAlpha.h:
+ * platform/graphics/filters/SourceGraphic.cpp:
+ (WebCore::SourceGraphic::apply):
+ * platform/graphics/filters/SourceGraphic.h:
+ * svg/Filter.cpp: Removed.
+ * svg/Filter.h: Removed.
+ * svg/graphics/filters/SVGFEConvolveMatrix.cpp:
+ (WebCore::FEConvolveMatrix::apply):
+ * svg/graphics/filters/SVGFEConvolveMatrix.h:
+ * svg/graphics/filters/SVGFEDiffuseLighting.cpp:
+ (WebCore::FEDiffuseLighting::apply):
+ * svg/graphics/filters/SVGFEDiffuseLighting.h:
+ * svg/graphics/filters/SVGFEDisplacementMap.cpp:
+ (WebCore::FEDisplacementMap::apply):
+ * svg/graphics/filters/SVGFEDisplacementMap.h:
+ * svg/graphics/filters/SVGFEFlood.cpp:
+ (WebCore::FEFlood::apply):
+ * svg/graphics/filters/SVGFEFlood.h:
+ * svg/graphics/filters/SVGFEGaussianBlur.cpp:
+ (WebCore::FEGaussianBlur::apply):
+ * svg/graphics/filters/SVGFEGaussianBlur.h:
+ * svg/graphics/filters/SVGFEImage.cpp:
+ (WebCore::FEImage::apply):
+ * svg/graphics/filters/SVGFEImage.h:
+ * svg/graphics/filters/SVGFEMerge.cpp:
+ (WebCore::FEMerge::apply):
+ * svg/graphics/filters/SVGFEMerge.h:
+ * svg/graphics/filters/SVGFEMorphology.cpp:
+ (WebCore::FEMorphology::apply):
+ * svg/graphics/filters/SVGFEMorphology.h:
+ * svg/graphics/filters/SVGFEOffset.cpp:
+ (WebCore::FEOffset::apply):
+ * svg/graphics/filters/SVGFEOffset.h:
+ * svg/graphics/filters/SVGFESpecularLighting.cpp:
+ (WebCore::FESpecularLighting::apply):
+ * svg/graphics/filters/SVGFESpecularLighting.h:
+ * svg/graphics/filters/SVGFETile.cpp:
+ (WebCore::FETile::apply):
+ * svg/graphics/filters/SVGFETile.h:
+ * svg/graphics/filters/SVGFETurbulence.cpp:
+ (WebCore::FETurbulence::apply):
+ * svg/graphics/filters/SVGFETurbulence.h:
+ * svg/graphics/filters/SVGFilter.cpp: Added.
+ (WebCore::SVGFilter::SVGFilter):
+ (WebCore::SVGFilter::calculateEffectSubRegion):
+ (WebCore::SVGFilter::create):
+ * svg/graphics/filters/SVGFilter.h: Added.
+
+2009-05-30 Kevin Ollivier <kevino@theolliviers.com>
+
+ Build fix for platforms without plugins support.
+
+ * plugins/PluginViewNone.cpp:
+ (WebCore::PluginView::userAgentStatic):
+ (WebCore::PluginView::getValueStatic):
+
+2009-05-30 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Darin Adler.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=25979
+
+ Fix regression, local WML files won't load anymore, as the mimetype isn't correctly detected.
+ Bug filed at <rdar://problem/6917571> to cover this CFNetwork limitation.
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
+
+2009-05-29 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=26091
+ Make storage events match the current spec.
+ - Storage event listeners are added to the window.
+ - Storage events are dispatched to the window.
+
+ Updated existing tests.
+
+ * dom/Document.cpp:
+ (WebCore::Document::dispatchWindowEvent):
+ * dom/Document.h:
+ * dom/Node.cpp:
+ * dom/Node.h:
+ * html/HTMLBodyElement.cpp:
+ (WebCore::HTMLBodyElement::parseMappedAttribute):
+ * storage/LocalStorageArea.cpp:
+ (WebCore::LocalStorageArea::dispatchStorageEvent):
+ * storage/SessionStorageArea.cpp:
+ (WebCore::SessionStorageArea::dispatchStorageEvent):
+
+2009-05-30 Darin Adler <darin@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ Bug 26097: REGRESSION (r44283): Tab key doesn't work when focus is on a <select> element
+
+ Test: fast/forms/focus-control-to-page.html
+
+ * dom/SelectElement.h: Made destructor protected. Tweaked a bit.
+
+ * html/HTMLSelectElement.cpp: Removed unneeded includes.
+ (WebCore::HTMLSelectElement::remove): Removed unneeded range check of the
+ result of optionToListIndex.
+ (WebCore::HTMLSelectElement::parseMappedAttribute): Removed code to set the
+ unused attribute, m_minwidth.
+ (WebCore::HTMLSelectElement::defaultEventHandler): The actual bug fix.
+ Call through to the base class defaultEventHandler if the event hasn't
+ been handled yet.
+
+ * html/HTMLSelectElement.h: Removed unneeded includes. Made a lot more functions
+ private. Removed unused minWidth function and m_minwidth data member.
+
+2009-05-30 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Holger Freyther.
+
+ The two KeyboardCodes.h files are basically identical and the
+ qt one is properly #ifdef-ed for different win32 systems. Share
+ them between Qt and Gtk implementations.
+
+ * GNUmakefile.am:
+ * platform/KeyboardCodes.h: Copied from WebCore/platform/qt/KeyboardCodes.h.
+ * platform/gtk/KeyboardCodes.h: Removed.
+ * platform/qt/KeyboardCodes.h: Removed.
+
+2009-05-30 Jeremy Orlow <jorlow@chromium.org>
+
+ Reviewed by Sam Weinig.
+
+ LocalStorage and SessionStorage's implicit setters do not correctly
+ handle null. The custom JS bindings should convert to strings
+ unconditionally and not try to handle null specially.
+ https://bugs.webkit.org/show_bug.cgi?id=25970
+
+ Tests: storage/domstorage/localstorage/string-conversion.html
+ storage/domstorage/sessionstorage/string-conversion.html
+
+ * bindings/js/JSStorageCustom.cpp:
+ (WebCore::JSStorage::customPut):
+
+2009-05-30 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix <rdar://problem/6935192> REGRESSION (Safari 3-TOT): Scroll
+ bars in key window draw as inactive if the WebView is not active
+
+ Test: platform/mac/scrollbars/key-window-not-first-responder.html
+
+ * platform/mac/ScrollbarThemeMac.mm:
+ (WebCore::ScrollbarThemeMac::paint): Use the window's key state instead
+ of the WebView's first responder state to switch between active and
+ inactive state.
+
+2009-05-30 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=18445
+ <rdar://problem/5931174> Assertion failure in CSSGradientValue::image
+ with -webkit-gradient as body's background
+
+ Test: fast/backgrounds/body-generated-image-propagated-to-root.html
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended): Check if this
+ is the root element painting a background layer propagated from the
+ body, and if it is, use the body's renderer as the client to
+ StyleImage::image().
+
+2009-05-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build fix for AXObjectCache.
+
+ For !HAVE(ACCESSIBILITY) postNotification was defined twice. Move
+ that into the #ifdef.
+
+ * accessibility/AXObjectCache.cpp:
+
+2009-05-29 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=26072
+
+ Add support for the last missing WML element: <select>. This patch adds WMLSelectElement, providing
+ the same functionality HTMLSelectElement has. The WML specific features will follow soon.
+
+ Add simple testcase covering <select> element rendering: fast/wml/select.wml
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/OptionElement.cpp:
+ (WebCore::OptionElement::optionIndex):
+ (WebCore::isOptionElement):
+ * dom/OptionElement.h:
+ * dom/OptionGroupElement.cpp:
+ (WebCore::isOptionGroupElement):
+ * dom/OptionGroupElement.h:
+ * dom/SelectElement.cpp:
+ (WebCore::SelectElement::accessKeySetSelectedIndex):
+ (WebCore::toSelectElement):
+ * dom/SelectElement.h:
+ * html/HTMLOptionElement.cpp:
+ (WebCore::HTMLOptionElement::index):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::accessKeySetSelectedIndex):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::paintItemForeground):
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::itemIsEnabled):
+ (WebCore::RenderMenuList::itemIsLabel):
+ * wml/WMLFormControlElement.cpp:
+ (WebCore::WMLFormControlElement::attach):
+ (WebCore::WMLFormControlElement::recalcStyle):
+ * wml/WMLFormControlElement.h:
+ * wml/WMLInputElement.cpp:
+ (WebCore::WMLInputElement::attach):
+ * wml/WMLOptGroupElement.cpp:
+ (WebCore::WMLOptGroupElement::insertBefore):
+ (WebCore::WMLOptGroupElement::replaceChild):
+ (WebCore::WMLOptGroupElement::removeChild):
+ (WebCore::WMLOptGroupElement::appendChild):
+ (WebCore::WMLOptGroupElement::removeChildren):
+ (WebCore::ownerSelectElement):
+ (WebCore::WMLOptGroupElement::accessKeyAction):
+ (WebCore::WMLOptGroupElement::childrenChanged):
+ (WebCore::WMLOptGroupElement::parseMappedAttribute):
+ (WebCore::WMLOptGroupElement::attach):
+ (WebCore::WMLOptGroupElement::detach):
+ (WebCore::WMLOptGroupElement::recalcSelectOptions):
+ * wml/WMLOptionElement.cpp:
+ (WebCore::ownerSelectElement):
+ (WebCore::WMLOptionElement::accessKeyAction):
+ (WebCore::WMLOptionElement::childrenChanged):
+ (WebCore::WMLOptionElement::parseMappedAttribute):
+ (WebCore::WMLOptionElement::attach):
+ (WebCore::WMLOptionElement::detach):
+ (WebCore::WMLOptionElement::insertedIntoDocument):
+ * wml/WMLSelectElement.cpp: Added.
+ (WebCore::WMLSelectElement::WMLSelectElement):
+ (WebCore::WMLSelectElement::~WMLSelectElement):
+ (WebCore::WMLSelectElement::formControlType):
+ (WebCore::WMLSelectElement::isKeyboardFocusable):
+ (WebCore::WMLSelectElement::isMouseFocusable):
+ (WebCore::WMLSelectElement::selectAll):
+ (WebCore::WMLSelectElement::recalcStyle):
+ (WebCore::WMLSelectElement::dispatchFocusEvent):
+ (WebCore::WMLSelectElement::dispatchBlurEvent):
+ (WebCore::WMLSelectElement::selectedIndex):
+ (WebCore::WMLSelectElement::setSelectedIndex):
+ (WebCore::WMLSelectElement::saveFormControlState):
+ (WebCore::WMLSelectElement::restoreFormControlState):
+ (WebCore::WMLSelectElement::childrenChanged):
+ (WebCore::WMLSelectElement::parseMappedAttribute):
+ (WebCore::WMLSelectElement::createRenderer):
+ (WebCore::WMLSelectElement::appendFormData):
+ (WebCore::WMLSelectElement::optionToListIndex):
+ (WebCore::WMLSelectElement::listToOptionIndex):
+ (WebCore::WMLSelectElement::reset):
+ (WebCore::WMLSelectElement::defaultEventHandler):
+ (WebCore::WMLSelectElement::accessKeyAction):
+ (WebCore::WMLSelectElement::setActiveSelectionAnchorIndex):
+ (WebCore::WMLSelectElement::setActiveSelectionEndIndex):
+ (WebCore::WMLSelectElement::updateListBoxSelection):
+ (WebCore::WMLSelectElement::listBoxOnChange):
+ (WebCore::WMLSelectElement::menuListOnChange):
+ (WebCore::WMLSelectElement::activeSelectionStartListIndex):
+ (WebCore::WMLSelectElement::activeSelectionEndListIndex):
+ (WebCore::WMLSelectElement::accessKeySetSelectedIndex):
+ (WebCore::WMLSelectElement::setRecalcListItems):
+ (WebCore::WMLSelectElement::scrollToSelection):
+ (WebCore::WMLSelectElement::insertedIntoTree):
+ * wml/WMLSelectElement.h: Added.
+ (WebCore::WMLSelectElement::canSelectAll):
+ (WebCore::WMLSelectElement::canStartSelection):
+ (WebCore::WMLSelectElement::size):
+ (WebCore::WMLSelectElement::multiple):
+ (WebCore::WMLSelectElement::listItems):
+ * wml/WMLTagNames.in:
+
+2009-05-29 David Levin <levin@chromium.org>
+
+ Reviewed by NOBODY (build fix for windows).
+
+ http://trac.webkit.org/changeset/44279 left in a "Vector<WCHAR> localeNameBuf"
+ that it was trying to replace. Resulting in this variable being defined twice (and
+ the second time incorrectly).
+
+ * platform/win/Language.cpp:
+ (WebCore::localeInfo):
+
+2009-05-29 Takeshi Yoshino <tyoshino@google.com>
+
+ Reviewed by Darin Alder.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26018
+
+ Fix behavior of the Element View of the Web Inspector for double
+ clicking the element outline tree.
+
+ Double clicking the element outline tree should
+ 1) on attribute: enter attribute editing mode
+ 2) on text: enter text editing mode
+ 3) otherwise: change root node to the parent element of double clicked
+ element.
+
+ Now, 3) is broken. For example, clicking <html> clears the element
+ outline view.
+
+ rootDOMNode should be updated to this.representedObject.parentNode, not
+ this.parent.representedObject which is parent inside the element
+ outline tree itself.
+
+ * inspector/front-end/ElementsTreeOutline.js:
+ (WebInspector.ElementsTreeElement.prototype.ondblclick):
+
+2009-05-29 David Moore <davemoore@google.com>
+
+ Reviewed by Darin Alder.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26001
+ Change many of the uses of String::adopt() to String::createUninitialized().
+ This allows those strings to use an inlined buffer for their characters.
+
+ * dom/StyleElement.cpp:
+ Loop over nodes to precompute length of string and then
+ write the characters into the allocated inline buffer
+ (WebCore::StyleElement::process):
+ * dom/Text.cpp:
+ Loop over nodes to precompute length of string and then
+ write the characters into the allocated inline buffer
+ (WebCore::Text::wholeText):
+ (WebCore::Text::rendererIsNeeded):
+ (WebCore::Text::createRenderer):
+ (WebCore::Text::createWithLengthLimit):
+ (WebCore::Text::formatForDebugger):
+ * platform/text/String.cpp:
+ (WebCore::String::append):
+ (WebCore::String::insert):
+ (WebCore::String::truncate):
+ (WebCore::String::remove):
+ * platform/text/StringBuilder.cpp:
+ (WebCore::StringBuilder::toString):
+ * platform/text/StringImpl.cpp:
+ (WebCore::StringImpl::lower):
+ (WebCore::StringImpl::upper):
+ (WebCore::StringImpl::secure):
+ (WebCore::StringImpl::foldCase):
+ (WebCore::StringImpl::replace):
+ * platform/text/TextCodecLatin1.cpp:
+ (WebCore::TextCodecLatin1::decode):
+ * platform/text/TextCodecUserDefined.cpp:
+ (WebCore::TextCodecUserDefined::decode):
+ * platform/win/Language.cpp:
+ (WebCore::localeInfo):
+
+2009-05-29 Takeshi Yoshino <tyoshino@google.com>
+
+ Reviewed by Darin Alder.
+
+ Bug 25911: Apply href in base elements to anchors shown on the source viewer
+ https://bugs.webkit.org/show_bug.cgi?id=25911
+
+ In rendering HTML sources, parse base elements to apply the base URI to
+ anchors shown on the source viewer.
+
+ This issue was originally reported to the Chromium issue tracker.
+ http://code.google.com/p/chromium/issues/detail?id=2418
+
+ Test: fast/frames/viewsource-link-on-href-value.html
+
+ * html/HTMLViewSourceDocument.cpp:
+ (WebCore::HTMLViewSourceDocument::addViewSourceToken):
+
+2009-05-29 Rob Buis <rwlbuis@gmail.com>
+
+ Reviewed by David Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22429
+ document.styleSheets collection ignores media=presentation
+
+ Ensure that stylesheets though <link> show up in document.styleSheets regardless of media attribute.
+
+ Test: fast/css/sheet-collection-link.html
+
+ * html/HTMLLinkElement.cpp:
+ (WebCore::HTMLLinkElement::process):
+
+2009-05-29 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26069
+ Fix a crash in custom V8 bindings code for XMLHttpRequest.
+
+ Test: fast/xmlhttprequest/xmlhttprequest-open-after-iframe-onload-remove-self.html
+
+ * bindings/v8/custom/V8XMLHttpRequestCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-05-29 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Bug 26074: SQLTransaction::executeSQL does an unnecessary call to String::copy.
+ https://bugs.webkit.org/show_bug.cgi?id=26074
+
+ The constructor for SQLStatement already does a copy for this string.
+
+ * storage/SQLTransaction.cpp:
+ (WebCore::SQLTransaction::executeSQL):
+
+2009-05-29 Darin Adler <darin@apple.com>
+
+ Fix build; the new Cairo code compiled on Windows only.
+
+ * platform/graphics/gtk/FontPlatformData.h: Added syntheticBold
+ and syntheticOblique functions as in the Windows version to make it
+ easier to use this cross-platform. Later we can make data members
+ private as in the Windows version.
+ * platform/graphics/mac/FontPlatformData.h: Ditto.
+
+2009-05-29 Alexander Macdonald <alexmac@adobe.com>
+
+ Reviewed by Darin Adler.
+
+ Added support for synthetic bold/oblique font rendering
+ on platforms that use cairo.
+
+ * platform/graphics/SimpleFontData.h:
+ * platform/graphics/cairo/FontCairo.cpp:
+ (WebCore::Font::drawGlyphs):
+ * platform/graphics/gtk/SimpleFontDataGtk.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ * platform/graphics/gtk/SimpleFontDataPango.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ * platform/graphics/win/SimpleFontDataCairoWin.cpp:
+ (WebCore::SimpleFontData::platformInit):
+
+2009-05-29 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 26024: AX: possible to fail assertion because AXPostNotification calls accessibilityIsIgnored
+ https://bugs.webkit.org/show_bug.cgi?id=26024
+
+ AX notifications are posted after a one shot timer so that notifications are not performed mid-layout.
+ Consolidated postNotification and postNotificationToElement into one method.
+
+ * accessibility/AXObjectCache.cpp:
+ (WebCore::AXObjectCache::AXObjectCache):
+ (WebCore::AXObjectCache::notificationPostTimerFired):
+ (WebCore::AXObjectCache::postNotification):
+ (WebCore::AXObjectCache::selectedChildrenChanged):
+ * accessibility/AXObjectCache.h:
+ (WebCore::AXObjectCache::postNotification):
+ (WebCore::AXObjectCache::postPlatformNotification):
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::handleActiveDescendantChanged):
+ * accessibility/chromium/AXObjectCacheChromium.cpp:
+ (WebCore::AXObjectCache::postPlatformNotification):
+ * accessibility/gtk/AXObjectCacheAtk.cpp:
+ (WebCore::AXObjectCache::postPlatformNotification):
+ * accessibility/mac/AXObjectCacheMac.mm:
+ (WebCore::AXObjectCache::postPlatformNotification):
+ * accessibility/win/AXObjectCacheWin.cpp:
+ (WebCore::AXObjectCache::postPlatformNotification):
+ * dom/Document.cpp:
+ (WebCore::Document::implicitClose):
+ * editing/Editor.cpp:
+ (WebCore::Editor::respondToChangedContents):
+ * editing/mac/SelectionControllerMac.mm:
+ (WebCore::SelectionController::notifyAccessibilityForSelectionChange):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::layout):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::setInnerTextValue):
+
+2009-05-29 Brent Fulgham <bfulgham@webkit.org>
+
+ Reviewed by Adam Roben.
+
+ Build fix for Windows Cairo target.
+ https://bugs.webkit.org/show_bug.cgi?id=25972
+
+ Compiler mistakenly selects SMILTime min/max instead of STL version,
+ resulting in a build error. This change makes the meaning of the
+ min/max explicit and avoids the problem.
+
+ * html/TimeRanges.h:
+ (WebCore::TimeRanges::Range::unionWithOverlappingOrContiguousRange):
+
+2009-05-29 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Jan Alonzo.
+
+ Make SoupMessage a member of ResourceRequest, instead of creating
+ it in startHttp. Implement updating of ResourceRequest from
+ SoupMessage, and vice versa.
+
+ * GNUmakefile.am:
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::~ResourceHandle):
+ (WebCore::gotHeadersCallback):
+ (WebCore::ResourceHandle::startHttp):
+ * platform/network/soup/ResourceRequest.h:
+ (WebCore::ResourceRequest::ResourceRequest):
+ (WebCore::ResourceRequest::~ResourceRequest):
+ * platform/network/soup/ResourceRequestSoup.cpp: Added.
+ (WTF::SoupURI):
+ (WebCore::ResourceRequest::soupMessage):
+ (WebCore::ResourceRequest::ResourceRequest):
+ (WebCore::ResourceRequest::doUpdateResourceRequest):
+ (WebCore::ResourceRequest::doUpdatePlatformRequest):
+
+2009-05-28 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26068
+ V8: Remove the remaining b8::Locker usage in worker code.
+ This completes the fix for https://bugs.webkit.org/show_bug.cgi?id=25944,
+ since the patches for enabling timers and that bug have "crossed in the queue".
+ Existing LayoutTests/fast/workers/worker-timeout.html covers this fix (will start work in Chromium).
+
+ * bindings/v8/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::execute):
+
+2009-05-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Simplify the Accept-Encoding header we are sending out, for it
+ seems some servers do not enjoy parsing the full, explicit
+ version.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::startHttp):
+
+2009-05-28 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Added a new build flag --filters. This replaces the old --svg-filters and enables
+ other parts of WebKit to use some basic filters of platform/graphics/filters if needed.
+ This patch also fixes a bug in dom/DOMImplementation.cpp where we used SVG_FILTER. This flag
+ doesn't exist and was replaced by FILTERS as well as all SVG_FILTERS occurrences.
+ Filters are not working yet. This patch is just a preperation. Filters are deactivated by
+ default.
+
+ * Configurations/FeatureDefines.xcconfig:
+ * DerivedSources.make:
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * bindings/objc/DOM.mm:
+ (WebCore::createElementClassMap):
+ * dom/DOMImplementation.cpp:
+ (WebCore::isSVG10Feature):
+ (WebCore::isSVG11Feature):
+ * page/DOMWindow.idl:
+ * platform/graphics/filters/FEBlend.cpp:
+ * platform/graphics/filters/FEBlend.h:
+ * platform/graphics/filters/FEColorMatrix.cpp:
+ * platform/graphics/filters/FEColorMatrix.h:
+ * platform/graphics/filters/FEComponentTransfer.cpp:
+ * platform/graphics/filters/FEComponentTransfer.h:
+ * platform/graphics/filters/FEComposite.cpp:
+ * platform/graphics/filters/FEComposite.h:
+ * platform/graphics/filters/FilterEffect.cpp:
+ * platform/graphics/filters/FilterEffect.h:
+ * platform/graphics/filters/SourceAlpha.cpp:
+ * platform/graphics/filters/SourceAlpha.h:
+ * platform/graphics/filters/SourceGraphic.cpp:
+ * platform/graphics/filters/SourceGraphic.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::selfWillPaint):
+ * rendering/RenderSVGModelObject.cpp:
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::selfWillPaint):
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::SVGRenderBase::prepareToRenderSVGContent):
+ (WebCore::SVGRenderBase::finishRenderSVGContent):
+ (WebCore::SVGRenderBase::filterBoundingBoxForRenderer):
+ * svg/Filter.cpp:
+ * svg/Filter.h:
+ * svg/FilterBuilder.cpp:
+ * svg/FilterBuilder.h:
+ * svg/SVGComponentTransferFunctionElement.cpp:
+ * svg/SVGComponentTransferFunctionElement.h:
+ * svg/SVGComponentTransferFunctionElement.idl:
+ * svg/SVGFEBlendElement.cpp:
+ * svg/SVGFEBlendElement.h:
+ * svg/SVGFEBlendElement.idl:
+ * svg/SVGFEColorMatrixElement.cpp:
+ * svg/SVGFEColorMatrixElement.h:
+ * svg/SVGFEColorMatrixElement.idl:
+ * svg/SVGFEComponentTransferElement.cpp:
+ * svg/SVGFEComponentTransferElement.h:
+ * svg/SVGFEComponentTransferElement.idl:
+ * svg/SVGFECompositeElement.cpp:
+ * svg/SVGFECompositeElement.h:
+ * svg/SVGFECompositeElement.idl:
+ * svg/SVGFEDiffuseLightingElement.cpp:
+ * svg/SVGFEDiffuseLightingElement.h:
+ * svg/SVGFEDiffuseLightingElement.idl:
+ * svg/SVGFEDisplacementMapElement.cpp:
+ * svg/SVGFEDisplacementMapElement.h:
+ * svg/SVGFEDisplacementMapElement.idl:
+ * svg/SVGFEDistantLightElement.cpp:
+ * svg/SVGFEDistantLightElement.h:
+ * svg/SVGFEDistantLightElement.idl:
+ * svg/SVGFEFloodElement.cpp:
+ * svg/SVGFEFloodElement.h:
+ * svg/SVGFEFloodElement.idl:
+ * svg/SVGFEFuncAElement.cpp:
+ * svg/SVGFEFuncAElement.h:
+ * svg/SVGFEFuncAElement.idl:
+ * svg/SVGFEFuncBElement.cpp:
+ * svg/SVGFEFuncBElement.h:
+ * svg/SVGFEFuncBElement.idl:
+ * svg/SVGFEFuncGElement.cpp:
+ * svg/SVGFEFuncGElement.h:
+ * svg/SVGFEFuncGElement.idl:
+ * svg/SVGFEFuncRElement.cpp:
+ * svg/SVGFEFuncRElement.h:
+ * svg/SVGFEFuncRElement.idl:
+ * svg/SVGFEGaussianBlurElement.cpp:
+ * svg/SVGFEGaussianBlurElement.h:
+ * svg/SVGFEGaussianBlurElement.idl:
+ * svg/SVGFEImageElement.cpp:
+ * svg/SVGFEImageElement.h:
+ * svg/SVGFEImageElement.idl:
+ * svg/SVGFELightElement.cpp:
+ * svg/SVGFELightElement.h:
+ * svg/SVGFEMergeElement.cpp:
+ * svg/SVGFEMergeElement.h:
+ * svg/SVGFEMergeElement.idl:
+ * svg/SVGFEMergeNodeElement.cpp:
+ * svg/SVGFEMergeNodeElement.h:
+ * svg/SVGFEMergeNodeElement.idl:
+ * svg/SVGFEOffsetElement.cpp:
+ * svg/SVGFEOffsetElement.h:
+ * svg/SVGFEOffsetElement.idl:
+ * svg/SVGFEPointLightElement.cpp:
+ * svg/SVGFEPointLightElement.h:
+ * svg/SVGFEPointLightElement.idl:
+ * svg/SVGFESpecularLightingElement.cpp:
+ * svg/SVGFESpecularLightingElement.h:
+ * svg/SVGFESpecularLightingElement.idl:
+ * svg/SVGFESpotLightElement.cpp:
+ * svg/SVGFESpotLightElement.h:
+ * svg/SVGFESpotLightElement.idl:
+ * svg/SVGFETileElement.cpp:
+ * svg/SVGFETileElement.h:
+ * svg/SVGFETileElement.idl:
+ * svg/SVGFETurbulenceElement.cpp:
+ * svg/SVGFETurbulenceElement.h:
+ * svg/SVGFETurbulenceElement.idl:
+ * svg/SVGFilterElement.cpp:
+ * svg/SVGFilterElement.h:
+ * svg/SVGFilterElement.idl:
+ * svg/SVGFilterPrimitiveStandardAttributes.cpp:
+ * svg/SVGFilterPrimitiveStandardAttributes.h:
+ * svg/graphics/SVGResourceFilter.cpp:
+ * svg/graphics/SVGResourceFilter.h:
+ * svg/graphics/cairo/SVGResourceFilterCairo.cpp:
+ * svg/graphics/cg/SVGResourceFilterCg.cpp:
+ * svg/graphics/cg/SVGResourceFilterCg.mm:
+ * svg/graphics/filters/SVGDistantLightSource.h:
+ * svg/graphics/filters/SVGFEConvolveMatrix.cpp:
+ * svg/graphics/filters/SVGFEConvolveMatrix.h:
+ * svg/graphics/filters/SVGFEDiffuseLighting.cpp:
+ * svg/graphics/filters/SVGFEDiffuseLighting.h:
+ * svg/graphics/filters/SVGFEDisplacementMap.cpp:
+ * svg/graphics/filters/SVGFEDisplacementMap.h:
+ * svg/graphics/filters/SVGFEFlood.cpp:
+ * svg/graphics/filters/SVGFEFlood.h:
+ * svg/graphics/filters/SVGFEGaussianBlur.cpp:
+ * svg/graphics/filters/SVGFEGaussianBlur.h:
+ * svg/graphics/filters/SVGFEImage.cpp:
+ * svg/graphics/filters/SVGFEImage.h:
+ * svg/graphics/filters/SVGFEMerge.cpp:
+ * svg/graphics/filters/SVGFEMerge.h:
+ * svg/graphics/filters/SVGFEMorphology.cpp:
+ * svg/graphics/filters/SVGFEMorphology.h:
+ * svg/graphics/filters/SVGFEOffset.cpp:
+ * svg/graphics/filters/SVGFEOffset.h:
+ * svg/graphics/filters/SVGFESpecularLighting.cpp:
+ * svg/graphics/filters/SVGFESpecularLighting.h:
+ * svg/graphics/filters/SVGFETile.cpp:
+ * svg/graphics/filters/SVGFETile.h:
+ * svg/graphics/filters/SVGFETurbulence.cpp:
+ * svg/graphics/filters/SVGFETurbulence.h:
+ * svg/graphics/filters/SVGFilterEffect.cpp:
+ * svg/graphics/filters/SVGFilterEffect.h:
+ * svg/graphics/filters/SVGLightSource.cpp:
+ * svg/graphics/filters/SVGLightSource.h:
+ * svg/graphics/filters/SVGPointLightSource.h:
+ * svg/graphics/filters/SVGSpotLightSource.h:
+ * svg/graphics/filters/cg/SVGFEHelpersCg.h:
+ * svg/graphics/filters/cg/SVGFEHelpersCg.mm:
+ * svg/graphics/filters/cg/SVGFilterEffectCg.mm:
+ * svg/graphics/filters/cg/WKArithmeticFilter.h:
+ * svg/graphics/filters/cg/WKArithmeticFilter.m:
+ * svg/graphics/filters/cg/WKComponentMergeFilter.h:
+ * svg/graphics/filters/cg/WKComponentMergeFilter.m:
+ * svg/graphics/filters/cg/WKDiffuseLightingFilter.h:
+ * svg/graphics/filters/cg/WKDiffuseLightingFilter.m:
+ * svg/graphics/filters/cg/WKDiscreteTransferFilter.h:
+ * svg/graphics/filters/cg/WKDiscreteTransferFilter.m:
+ * svg/graphics/filters/cg/WKDisplacementMapFilter.h:
+ * svg/graphics/filters/cg/WKDisplacementMapFilter.m:
+ * svg/graphics/filters/cg/WKDistantLightFilter.h:
+ * svg/graphics/filters/cg/WKDistantLightFilter.m:
+ * svg/graphics/filters/cg/WKGammaTransferFilter.h:
+ * svg/graphics/filters/cg/WKGammaTransferFilter.m:
+ * svg/graphics/filters/cg/WKIdentityTransferFilter.h:
+ * svg/graphics/filters/cg/WKIdentityTransferFilter.m:
+ * svg/graphics/filters/cg/WKLinearTransferFilter.h:
+ * svg/graphics/filters/cg/WKLinearTransferFilter.m:
+ * svg/graphics/filters/cg/WKNormalMapFilter.h:
+ * svg/graphics/filters/cg/WKNormalMapFilter.m:
+ * svg/graphics/filters/cg/WKPointLightFilter.h:
+ * svg/graphics/filters/cg/WKPointLightFilter.m:
+ * svg/graphics/filters/cg/WKSpecularLightingFilter.h:
+ * svg/graphics/filters/cg/WKSpecularLightingFilter.m:
+ * svg/graphics/filters/cg/WKSpotLightFilter.h:
+ * svg/graphics/filters/cg/WKSpotLightFilter.m:
+ * svg/graphics/filters/cg/WKTableTransferFilter.h:
+ * svg/graphics/filters/cg/WKTableTransferFilter.m:
+ * svg/graphics/mac/SVGResourceFilterPlatformDataMac.h:
+ * svg/graphics/mac/SVGResourceFilterPlatformDataMac.mm:
+ * svg/graphics/qt/SVGResourceFilterQt.cpp:
+ * svg/graphics/skia/SVGResourceFilterSkia.cpp:
+ * svg/svgtags.in:
+
+2009-05-28 Brett Wilson <brettw@chromium.org>
+
+ Unreviewed, build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26067
+
+ Add casts for scale function to make more explicit what is happening
+ and fix a compiler warning.
+
+ * platform/graphics/IntSize.h:
+ (WebCore::IntSize::scale):
+
+2009-05-28 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Remove the returnValueSlot concept from JSDOMWindowBase. Now that windows
+ are not cleared on navigation it is no longer necessary.
+
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::JSDOMWindowBase::JSDOMWindowBaseData::JSDOMWindowBaseData):
+ (WebCore::JSDOMWindowBase::willRemoveFromWindowShell):
+ * bindings/js/JSDOMWindowBase.h:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::showModalDialog):
+
+2009-05-19 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo and Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25415
+ [GTK][ATK] Please implement support for get_text_at_offset
+
+ Implement atk_text_get_text_{at,after,before}_offset.
+
+ * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-05-28 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Rubber-stamped by Darin Adler.
+
+ Remove unnecessary destructor from InputElementData/OptionElementData.
+
+ * dom/InputElement.cpp:
+ * dom/InputElement.h:
+ * dom/OptionElement.cpp:
+ * dom/OptionElement.h:
+
+2009-05-28 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Darin Adler.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=26062
+
+ Refactor code from all virtual methods in HTMLSelectElement (that are also needed for WMLSelectElement)
+ in the recently introduced SelectElement abstract base class. Follow the same design sheme that InputElement uses.
+
+ A follow-up patch can now easily add WMLSelectElement.
+
+ * dom/OptionElement.h:
+ * dom/SelectElement.cpp:
+ (WebCore::SelectElement::selectAll):
+ (WebCore::SelectElement::saveLastSelection):
+ (WebCore::isOptionElement):
+ (WebCore::isOptionGroupElement):
+ (WebCore::SelectElement::nextSelectableListIndex):
+ (WebCore::SelectElement::previousSelectableListIndex):
+ (WebCore::SelectElement::setActiveSelectionAnchorIndex):
+ (WebCore::SelectElement::setActiveSelectionEndIndex):
+ (WebCore::SelectElement::updateListBoxSelection):
+ (WebCore::SelectElement::listBoxOnChange):
+ (WebCore::SelectElement::menuListOnChange):
+ (WebCore::SelectElement::scrollToSelection):
+ (WebCore::SelectElement::recalcStyle):
+ (WebCore::SelectElement::setRecalcListItems):
+ (WebCore::SelectElement::recalcListItems):
+ (WebCore::SelectElement::selectedIndex):
+ (WebCore::SelectElement::setSelectedIndex):
+ (WebCore::SelectElement::optionToListIndex):
+ (WebCore::SelectElement::listToOptionIndex):
+ (WebCore::SelectElement::dispatchFocusEvent):
+ (WebCore::SelectElement::dispatchBlurEvent):
+ (WebCore::SelectElement::deselectItems):
+ (WebCore::SelectElement::saveFormControlState):
+ (WebCore::SelectElement::restoreFormControlState):
+ (WebCore::SelectElement::parseMultipleAttribute):
+ (WebCore::SelectElement::appendFormData):
+ (WebCore::SelectElement::reset):
+ (WebCore::SelectElement::menuListDefaultEventHandler):
+ (WebCore::SelectElement::listBoxDefaultEventHandler):
+ (WebCore::SelectElement::defaultEventHandler):
+ (WebCore::SelectElement::lastSelectedListIndex):
+ (WebCore::stripLeadingWhiteSpace):
+ (WebCore::SelectElement::typeAheadFind):
+ (WebCore::SelectElement::insertedIntoTree):
+ (WebCore::SelectElementData::SelectElementData):
+ (WebCore::SelectElementData::checkListItems):
+ (WebCore::SelectElementData::listItems):
+ * dom/SelectElement.h:
+ (WebCore::SelectElementData::multiple):
+ (WebCore::SelectElementData::setMultiple):
+ (WebCore::SelectElementData::size):
+ (WebCore::SelectElementData::setSize):
+ (WebCore::SelectElementData::usesMenuList):
+ (WebCore::SelectElementData::lastOnChangeIndex):
+ (WebCore::SelectElementData::setLastOnChangeIndex):
+ (WebCore::SelectElementData::lastOnChangeSelection):
+ (WebCore::SelectElementData::activeSelectionState):
+ (WebCore::SelectElementData::setActiveSelectionState):
+ (WebCore::SelectElementData::activeSelectionAnchorIndex):
+ (WebCore::SelectElementData::setActiveSelectionAnchorIndex):
+ (WebCore::SelectElementData::activeSelectionEndIndex):
+ (WebCore::SelectElementData::setActiveSelectionEndIndex):
+ (WebCore::SelectElementData::cachedStateForActiveSelection):
+ (WebCore::SelectElementData::shouldRecalcListItems):
+ (WebCore::SelectElementData::setShouldRecalcListItems):
+ (WebCore::SelectElementData::rawListItems):
+ (WebCore::SelectElementData::repeatingChar):
+ (WebCore::SelectElementData::setRepeatingChar):
+ (WebCore::SelectElementData::lastCharTime):
+ (WebCore::SelectElementData::setLastCharTime):
+ (WebCore::SelectElementData::typedString):
+ (WebCore::SelectElementData::setTypedString):
+ * html/HTMLOptionElement.h:
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::HTMLSelectElement):
+ (WebCore::HTMLSelectElement::recalcStyle):
+ (WebCore::HTMLSelectElement::formControlType):
+ (WebCore::HTMLSelectElement::selectedIndex):
+ (WebCore::HTMLSelectElement::deselectItems):
+ (WebCore::HTMLSelectElement::setSelectedIndex):
+ (WebCore::HTMLSelectElement::activeSelectionStartListIndex):
+ (WebCore::HTMLSelectElement::activeSelectionEndListIndex):
+ (WebCore::HTMLSelectElement::saveFormControlState):
+ (WebCore::HTMLSelectElement::restoreFormControlState):
+ (WebCore::HTMLSelectElement::parseMappedAttribute):
+ (WebCore::HTMLSelectElement::canSelectAll):
+ (WebCore::HTMLSelectElement::selectAll):
+ (WebCore::HTMLSelectElement::createRenderer):
+ (WebCore::HTMLSelectElement::appendFormData):
+ (WebCore::HTMLSelectElement::optionToListIndex):
+ (WebCore::HTMLSelectElement::listToOptionIndex):
+ (WebCore::HTMLSelectElement::recalcListItems):
+ (WebCore::HTMLSelectElement::setRecalcListItems):
+ (WebCore::HTMLSelectElement::reset):
+ (WebCore::HTMLSelectElement::dispatchFocusEvent):
+ (WebCore::HTMLSelectElement::dispatchBlurEvent):
+ (WebCore::HTMLSelectElement::defaultEventHandler):
+ (WebCore::HTMLSelectElement::setActiveSelectionAnchorIndex):
+ (WebCore::HTMLSelectElement::setActiveSelectionEndIndex):
+ (WebCore::HTMLSelectElement::updateListBoxSelection):
+ (WebCore::HTMLSelectElement::menuListOnChange):
+ (WebCore::HTMLSelectElement::listBoxOnChange):
+ (WebCore::HTMLSelectElement::saveLastSelection):
+ (WebCore::HTMLSelectElement::setOption):
+ (WebCore::HTMLSelectElement::scrollToSelection):
+ (WebCore::HTMLSelectElement::insertedIntoTree):
+ * html/HTMLSelectElement.h:
+ (WebCore::HTMLSelectElement::size):
+ (WebCore::HTMLSelectElement::multiple):
+ (WebCore::HTMLSelectElement::listItems):
+ * wml/WMLOptionElement.cpp:
+ (WebCore::WMLOptionElement::text):
+ * wml/WMLOptionElement.h:
+
+
+ * dom/OptionElement.h:
+ * dom/SelectElement.cpp:
+ (WebCore::SelectElement::selectAll):
+ (WebCore::SelectElement::saveLastSelection):
+ (WebCore::isOptionElement):
+ (WebCore::isOptionGroupElement):
+ (WebCore::SelectElement::nextSelectableListIndex):
+ (WebCore::SelectElement::previousSelectableListIndex):
+ (WebCore::SelectElement::setActiveSelectionAnchorIndex):
+ (WebCore::SelectElement::setActiveSelectionEndIndex):
+ (WebCore::SelectElement::updateListBoxSelection):
+ (WebCore::SelectElement::listBoxOnChange):
+ (WebCore::SelectElement::menuListOnChange):
+ (WebCore::SelectElement::scrollToSelection):
+ (WebCore::SelectElement::recalcStyle):
+ (WebCore::SelectElement::setRecalcListItems):
+ (WebCore::SelectElement::recalcListItems):
+ (WebCore::SelectElement::selectedIndex):
+ (WebCore::SelectElement::setSelectedIndex):
+ (WebCore::SelectElement::optionToListIndex):
+ (WebCore::SelectElement::listToOptionIndex):
+ (WebCore::SelectElement::dispatchFocusEvent):
+ (WebCore::SelectElement::dispatchBlurEvent):
+ (WebCore::SelectElement::deselectItems):
+ (WebCore::SelectElement::saveFormControlState):
+ (WebCore::SelectElement::restoreFormControlState):
+ (WebCore::SelectElement::parseMultipleAttribute):
+ (WebCore::SelectElement::appendFormData):
+ (WebCore::SelectElement::reset):
+ (WebCore::SelectElement::menuListDefaultEventHandler):
+ (WebCore::SelectElement::listBoxDefaultEventHandler):
+ (WebCore::SelectElement::defaultEventHandler):
+ (WebCore::SelectElement::lastSelectedListIndex):
+ (WebCore::stripLeadingWhiteSpace):
+ (WebCore::SelectElement::typeAheadFind):
+ (WebCore::SelectElement::insertedIntoTree):
+ (WebCore::SelectElementData::SelectElementData):
+ (WebCore::SelectElementData::~SelectElementData):
+ (WebCore::SelectElementData::checkListItems):
+ (WebCore::SelectElementData::listItems):
+ * dom/SelectElement.h:
+ (WebCore::SelectElementData::multiple):
+ (WebCore::SelectElementData::setMultiple):
+ (WebCore::SelectElementData::size):
+ (WebCore::SelectElementData::setSize):
+ (WebCore::SelectElementData::usesMenuList):
+ (WebCore::SelectElementData::lastOnChangeIndex):
+ (WebCore::SelectElementData::setLastOnChangeIndex):
+ (WebCore::SelectElementData::lastOnChangeSelection):
+ (WebCore::SelectElementData::activeSelectionState):
+ (WebCore::SelectElementData::setActiveSelectionState):
+ (WebCore::SelectElementData::activeSelectionAnchorIndex):
+ (WebCore::SelectElementData::setActiveSelectionAnchorIndex):
+ (WebCore::SelectElementData::activeSelectionEndIndex):
+ (WebCore::SelectElementData::setActiveSelectionEndIndex):
+ (WebCore::SelectElementData::cachedStateForActiveSelection):
+ (WebCore::SelectElementData::shouldRecalcListItems):
+ (WebCore::SelectElementData::setShouldRecalcListItems):
+ (WebCore::SelectElementData::rawListItems):
+ (WebCore::SelectElementData::repeatingChar):
+ (WebCore::SelectElementData::setRepeatingChar):
+ (WebCore::SelectElementData::lastCharTime):
+ (WebCore::SelectElementData::setLastCharTime):
+ (WebCore::SelectElementData::typedString):
+ (WebCore::SelectElementData::setTypedString):
+ * html/HTMLOptionElement.h:
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::HTMLSelectElement):
+ (WebCore::HTMLSelectElement::recalcStyle):
+ (WebCore::HTMLSelectElement::formControlType):
+ (WebCore::HTMLSelectElement::selectedIndex):
+ (WebCore::HTMLSelectElement::deselectItems):
+ (WebCore::HTMLSelectElement::setSelectedIndex):
+ (WebCore::HTMLSelectElement::activeSelectionStartListIndex):
+ (WebCore::HTMLSelectElement::activeSelectionEndListIndex):
+ (WebCore::HTMLSelectElement::saveFormControlState):
+ (WebCore::HTMLSelectElement::restoreFormControlState):
+ (WebCore::HTMLSelectElement::parseMappedAttribute):
+ (WebCore::HTMLSelectElement::canSelectAll):
+ (WebCore::HTMLSelectElement::selectAll):
+ (WebCore::HTMLSelectElement::createRenderer):
+ (WebCore::HTMLSelectElement::appendFormData):
+ (WebCore::HTMLSelectElement::optionToListIndex):
+ (WebCore::HTMLSelectElement::listToOptionIndex):
+ (WebCore::HTMLSelectElement::recalcListItems):
+ (WebCore::HTMLSelectElement::setRecalcListItems):
+ (WebCore::HTMLSelectElement::reset):
+ (WebCore::HTMLSelectElement::dispatchFocusEvent):
+ (WebCore::HTMLSelectElement::dispatchBlurEvent):
+ (WebCore::HTMLSelectElement::defaultEventHandler):
+ (WebCore::HTMLSelectElement::setActiveSelectionAnchorIndex):
+ (WebCore::HTMLSelectElement::setActiveSelectionEndIndex):
+ (WebCore::HTMLSelectElement::updateListBoxSelection):
+ (WebCore::HTMLSelectElement::menuListOnChange):
+ (WebCore::HTMLSelectElement::listBoxOnChange):
+ (WebCore::HTMLSelectElement::saveLastSelection):
+ (WebCore::HTMLSelectElement::setOption):
+ (WebCore::HTMLSelectElement::scrollToSelection):
+ (WebCore::HTMLSelectElement::insertedIntoTree):
+ * html/HTMLSelectElement.h:
+ (WebCore::HTMLSelectElement::size):
+ (WebCore::HTMLSelectElement::multiple):
+ (WebCore::HTMLSelectElement::listItems):
+ * wml/WMLOptionElement.cpp:
+ (WebCore::WMLOptionElement::text):
+ * wml/WMLOptionElement.h:
+
+2009-05-28 Adam Roben <aroben@apple.com>
+
+ Don't try to use the new combobox parts on Vista in Classic mode
+
+ Fixes:
+ <rdar://problem/6929277> REGRESSION (r42289+r42350): Windows Classic
+ theme: drop down lists in Preferences get a line/square
+ <rdar://problem/6929298> REGRESSION (r42289): Windows Classic: drop
+ down lists are black with a circle on many sites
+
+ Reviewed by Steve Falkenburg.
+
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::RenderThemeWin::paintMenuList): Only use the new combobox
+ parts when we have a theme (i.e., when we're not in Classic mode).
+ When we don't have a theme, fall back to the pre-r42289 code.
+
+2009-05-27 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25659
+ Avoid calling frameCount() unnecessarily (which could lead to extra
+ GIF decoding).
+
+ * platform/graphics/BitmapImage.cpp:
+ (WebCore::BitmapImage::destroyDecodedDataIfNecessary):
+
+2009-05-28 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=8736
+
+ Tests: fast/borders/border-radius-constraints.html
+ fast/borders/border-radius-split-inline.html
+
+ When the sum of the corner radii on a side exceed the length of the side,
+ reduce the radii according to CSS 3 rules.
+
+ Add RenderStyle::getBorderRadiiForRect() to fetch corner radii, applying
+ the constraints. Use that for painting borders, box-shadow, clipping replaced
+ elements
+
+ * platform/graphics/IntSize.h:
+ (WebCore::IntSize::scale):
+ Add a scale method that scales by a float (using C rounding rules, like IntRect::scale()).
+
+ * platform/graphics/Path.cpp:
+ Make the QUARTER const static.
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::pushContentsClip):
+ Use getBorderRadiiForRect to fetch border radii.
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended):
+ Use getBorderRadiiForRect to fetch border radii.
+
+ (WebCore::RenderBoxModelObject::paintBorder):
+ Use getBorderRadiiForRect to fetch border radii, and fix a bug when drawing
+ borders for split inlines, which used to apply the radii for each segment,
+ and no longer does.
+
+ (WebCore::RenderBoxModelObject::paintBoxShadow):
+ Use getBorderRadiiForRect to fetch border radii.
+
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::paint):
+ Use getBorderRadiiForRect to fetch border radii for clipping.
+
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::paint):
+ Use getBorderRadiiForRect to fetch border radii for clipping.
+
+ * rendering/style/RenderStyle.h:
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::getBorderRadiiForRect):
+ New bottleneck method to fetch corner radiil given a rect, applying the constraint
+ rules.
+
+2009-05-28 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26005
+ Optimization for XPath //* does not preserve context size
+
+ Test: fast/xpath/position.html
+
+ Fixed the bug by removing the incorrect optimization, and made enough micro-optimizations to
+ get a performance progression on my tests.
+
+ * xml/XPathPath.h: Removed broken optimizeStepPair().
+
+ * xml/XPathPath.cpp:
+ (WebCore::XPath::LocationPath::evaluate): Style fix.
+ (WebCore::XPath::LocationPath::appendStep): Don't call optimizeStepPair().
+ (WebCore::XPath::LocationPath::insertFirstStep): Ditto.
+ (WebCore::XPath::Path::Path): Style fix.
+
+ * xml/XPathStep.cpp:
+ (WebCore::XPath::primaryNodeType): Turned this member function into a static inline helper.
+ (WebCore::XPath::nodeMatches): Ditto. Don't check for namespace axis, which is unsupported
+ (and might never be).
+ (WebCore::XPath::Step::nodesInAxis): Updated for the new nodeMatches() signature.
+
+ * xml/XPathStep.h:
+ (WebCore::XPath::Step::NodeTest::data):
+ (WebCore::XPath::Step::NodeTest::namespaceURI):
+ Made these data members AtomicString to avoid repeated conversions. This is the biggest
+ performance win here.
+
+ * xml/XPathUtil.cpp: (WebCore::XPath::stringValue): Reserve some capacity upfront.
+
+2009-05-28 Stephen White <senorblanco@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ When creating a linear or radial gradient with a single stop
+ at offset 1.0, the Skia layer was allocating 3 stops, but only
+ filling 2, leaving one uninitialized. Only 2 stops are necessary
+ in this case, at offsets (0.0, 1.0).
+
+ http://bugs.webkit.org/show_bug.cgi?id=26063
+
+ Covered by: LayoutTests/svg/W3C-SVG-1.1/pservers-grad-16-b.svg
+ LayoutTests/svg/custom/gradient-stop-corner-cases.svg
+ LayoutTests/svg/custom/js-late-gradient-and-object-creation.svg
+
+ * platform/graphics/skia/GradientSkia.cpp:
+ (WebCore::totalStopsNeeded):
+
+2009-05-28 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26041
+ Allow adding resource source to WebInspector.SourceFrame asynchronously.
+
+ Provide common implementation for InspectorController::addResourceSourceToFrame and
+ InspectorController::addSourceToFrame methods.
+
+ * bindings/js/JSInspectorControllerCustom.cpp:
+ * bindings/v8/custom/V8InspectorControllerCustom.cpp:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::addResourceSourceToFrame):
+ * inspector/InspectorController.h:
+ * inspector/InspectorController.idl:
+ * inspector/front-end/SourceFrame.js:
+ (WebInspector.SourceFrame.prototype.revealLine):
+ (WebInspector.SourceFrame.prototype.highlightLine):
+ (WebInspector.SourceFrame.prototype._loaded):
+ (WebInspector.SourceFrame.prototype._isContentLoaded):
+ * inspector/front-end/SourceView.js:
+ (WebInspector.SourceView.prototype.setupSourceFrameIfNeeded):
+ (WebInspector.SourceView.prototype._contentLoaded):
+
+2009-05-28 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Xan Lopez.
+
+ After r44177 we had a problem when increasing the size
+ of the window the scrollbars stayed and were not hidden.
+ This was due WebCore giving up on the Scrollbar as it became
+ unnecessary but the GtkAdjustment remained unchanged.
+ So from the point of view of the GtkScrolledWindow scrolling
+ was still necessary and the GtkScrollbar kept being displayed.
+
+ Solve the issue by resetting the GtkAdjustment in the
+ destructor of ScrollbarGtk.
+
+ * platform/gtk/ScrollbarGtk.cpp:
+ (ScrollbarGtk::~ScrollbarGtk):
+
+2009-05-28 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Clean up window.open()'s use of lexical and dynamic scope.
+
+ (Added one unreviewed tweak: use dynamicFrame instead of lexicalFrame
+ for DOMWindow::allowPopUp.)
+
+ Test: http/tests/security/frameNavigation/context-for-window-open.html
+
+ * bindings/js/JSDOMBinding.cpp:
+ (WebCore::toDynamicFrame):
+ (WebCore::processingUserGesture):
+ (WebCore::completeURL):
+ * bindings/js/JSDOMBinding.h:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::createWindow):
+ (WebCore::JSDOMWindow::open):
+ (WebCore::JSDOMWindow::showModalDialog):
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL):
+ (WebCore::createWindow):
+
+2009-05-27 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26056
+ XPath string() function can be very slow
+
+ * xml/XPathUtil.cpp: (WebCore::XPath::stringValue): Use an intermediate Vector when appending.
+
+2009-05-27 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - fix <rdar://problem/6927761> <isindex> placeholder text is unstylable
+ and initially not visible
+
+ Test: fast/forms/isindex-placeholder.html
+
+ * css/html4.css: Added a default style for <isindex> placeholder text.
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::parseMappedAttribute): Changed to call
+ the new protected function updatePlaceholderVisibility().
+ * html/HTMLInputElement.h:
+ (WebCore::HTMLInputElement::updatePlaceholderVisibility): Added this
+ protected function to allow HTMLIsIndexElement::parseMappedAttribute()
+ to invoke InputElement::updatePlaceholderVisibility().
+ * html/HTMLIsIndexElement.cpp:
+ (WebCore::HTMLIsIndexElement::parseMappedAttribute): Call
+ updatePlaceholderVisibility() when parsing the placeholder attribute.
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::createInnerTextStyle): If there
+ is no placeholder pseudo-element style, use the normal style.
+
+2009-05-27 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ More cleanup of DOMWindow related functions.
+
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::JSDOMWindowBase::willRemoveFromWindowShell): Renamed from JSDOMWindowBase::clear()
+ * bindings/js/JSDOMWindowBase.h:
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::showModalDialog): Update Comment.
+
+ * bindings/js/JSDOMWindowShell.cpp:
+ * bindings/js/JSDOMWindowShell.h:
+ Remove JSDOMWindowShell::clear(). It was unused.
+
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::clearWindowShell):
+
+2009-05-27 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Miscellaneous cleanup of DOMWindow related functions.
+
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::~JSDOMGlobalObject): Fix poorly named variables.
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::JSDOMWindowBase::supportsProfiling): Don't jump through hoops
+ checking for null frames if the build does not support profiling.
+ (WebCore::JSDOMWindowBase::clear): Use setCurrentEvent(0) instead of calling
+ clearHelperObjectProperties(). It is clearer.
+ * bindings/js/JSDOMWindowBase.h:
+ Removed now unused clearHelperObjectProperties() function, empty disconnectFrame()
+ function, and the empty destructor.
+ * bindings/js/JSDOMWindowShell.cpp:
+ * bindings/js/JSDOMWindowShell.h:
+ Remove disconnectFrame() which only called JSDOMWindowBase::disconnectFrame(), which
+ is a no-op.
+ * page/Frame.cpp:
+ (WebCore::Frame::~Frame):
+ (WebCore::Frame::pageDestroyed):
+ Remove calls to JSDOMWindowShell::disconnectFrame() which only called
+ JSDOMWindowBase::disconnectFrame(), which is a no-op.
+
+2009-05-27 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25974
+ Remove extra qualifiers from the ScheduledAction decl.
+
+ * bindings/v8/ScheduledAction.h: Removed extraneous class qualifiers.
+
+2009-05-27 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed make distcheck fix. One more missing file.
+
+ * GNUmakefile.am:
+
+2009-05-27 Antonio Gomes <antonio.gomes@openbossa.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fixed trunk build on Linux after r44126.
+
+ * WebCore.pro:
+
+2009-05-27 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ <rdar://problem/6926046> REGRESSION (r43972): http://www.youtube.com/html5 crashes on open
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::MediaPlayer::load): Don't look for a media engine based on an empty MIME type.
+
+2009-05-27 David Levin <levin@chromium.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ Bug 26029: FrameLoader::canLoad should allow calls with just a security origin
+ https://bugs.webkit.org/show_bug.cgi?id=26029
+
+ No functional changes, so no tests.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::canLoad):
+ * loader/FrameLoader.h:
+
+2009-05-27 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed build fix.
+
+ Remove file that does not exist from the build.
+
+ * GNUmakefile.am:
+
+2009-05-27 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Darin Adler.
+
+ Remove two unneeded protected constructors, these classes have pure-virtual functions, and can't be constructed anyway.
+
+ * dom/InputElement.h:
+ * dom/OptionGroupElement.h:
+
+2009-05-27 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=17725
+ XPath should be case insensitive for HTML
+
+ Test: fast/xpath/node-name-case-sensitivity.html
+
+ * xml/XPathStep.cpp: (WebCore::XPath::Step::nodeMatches): Made node name check case insensitive
+ for HTML elements in HTML documents.
+
+2009-05-27 John Sullivan <sullivan@apple.com>
+
+ fixed <rdar://problem/6925482> repro crash in WebCore::DragController::dragExited dropping
+ bookmarks (at least) over Top Sites (at least)
+
+ Reviewed by Kevin Decker
+
+ * page/DragController.cpp:
+ (WebCore::DragController::dragExited):
+ nil check m_documentUnderMouse and take the "local file" case if it's nil
+
+2009-05-27 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Gustavo Noronha.
+
+ When building on window, consider Windows specific files.
+
+ * GNUmakefile.am:
+
+2009-05-27 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=26031
+
+ InputElementData is too heavy, save storing two pointers by passing them
+ directly to the static helper functions (the only place which needs them).
+
+ * dom/InputElement.cpp:
+ (WebCore::InputElement::dispatchFocusEvent):
+ (WebCore::InputElement::dispatchBlurEvent):
+ (WebCore::InputElement::updatePlaceholderVisibility):
+ (WebCore::InputElement::updateFocusAppearance):
+ (WebCore::InputElement::updateSelectionRange):
+ (WebCore::InputElement::aboutToUnload):
+ (WebCore::InputElement::setValueFromRenderer):
+ (WebCore::InputElement::constrainValue):
+ (WebCore::InputElement::handleBeforeTextInsertedEvent):
+ (WebCore::InputElement::parseSizeAttribute):
+ (WebCore::InputElement::parseMaxLengthAttribute):
+ (WebCore::InputElement::updateValueIfNeeded):
+ (WebCore::InputElement::notifyFormStateChanged):
+ (WebCore::InputElementData::InputElementData):
+ * dom/InputElement.h:
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::HTMLInputElement):
+ (WebCore::HTMLInputElement::updateFocusAppearance):
+ (WebCore::HTMLInputElement::aboutToUnload):
+ (WebCore::HTMLInputElement::dispatchFocusEvent):
+ (WebCore::HTMLInputElement::dispatchBlurEvent):
+ (WebCore::HTMLInputElement::setInputType):
+ (WebCore::HTMLInputElement::setSelectionRange):
+ (WebCore::HTMLInputElement::parseMappedAttribute):
+ (WebCore::HTMLInputElement::setValue):
+ (WebCore::HTMLInputElement::setValueFromRenderer):
+ (WebCore::HTMLInputElement::setFileListFromRenderer):
+ (WebCore::HTMLInputElement::defaultEventHandler):
+ (WebCore::HTMLInputElement::constrainValue):
+ * wml/WMLInputElement.cpp:
+ (WebCore::WMLInputElement::WMLInputElement):
+ (WebCore::WMLInputElement::dispatchFocusEvent):
+ (WebCore::WMLInputElement::dispatchBlurEvent):
+ (WebCore::WMLInputElement::updateFocusAppearance):
+ (WebCore::WMLInputElement::aboutToUnload):
+ (WebCore::WMLInputElement::setValue):
+ (WebCore::WMLInputElement::setValueFromRenderer):
+ (WebCore::WMLInputElement::parseMappedAttribute):
+ (WebCore::WMLInputElement::defaultEventHandler):
+ (WebCore::WMLInputElement::constrainValue):
+
+2009-05-27 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=26033
+
+ OptionElementData saves an Element pointer, which is unnessary.
+ Just pass it to the static function calls directly.
+
+ * dom/OptionElement.cpp:
+ (WebCore::OptionElement::setSelectedState):
+ (WebCore::OptionElement::collectOptionText):
+ (WebCore::OptionElement::collectOptionTextRespectingGroupLabel):
+ (WebCore::OptionElement::collectOptionValue):
+ (WebCore::OptionElementData::OptionElementData):
+ * dom/OptionElement.h:
+ * html/HTMLOptionElement.cpp:
+ (WebCore::HTMLOptionElement::HTMLOptionElement):
+ (WebCore::HTMLOptionElement::text):
+ (WebCore::HTMLOptionElement::value):
+ (WebCore::HTMLOptionElement::setSelected):
+ (WebCore::HTMLOptionElement::setSelectedState):
+ (WebCore::HTMLOptionElement::textIndentedToRespectGroupLabel):
+ * wml/WMLOptionElement.cpp:
+ (WebCore::WMLOptionElement::WMLOptionElement):
+ (WebCore::WMLOptionElement::setSelectedState):
+ (WebCore::WMLOptionElement::value):
+ (WebCore::WMLOptionElement::textIndentedToRespectGroupLabel):
+
+2009-05-27 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Maciej Stachowiak.
+
+ When building with MinGW, don't use the __declspec(dl{import,export})
+ decorations and rely on the linker to use its nifty auto-import feature.
+ It is extremely hard to get the decorations right with MinGW in general
+ and impossible in WebKit, where the resulting shared library is linking
+ together some static libraries.
+
+ * config.h:
+
+2009-05-26 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25613
+
+ Add a WebCore::Widget that can embed GtkWidget with and
+ without a GdkWindow. This can be used to embed any GtkWidget.
+
+ Some bits are directly copied from the Scrollbar implementation
+ but can not be easily shared here.
+
+ * GNUmakefile.am:
+ * platform/gtk/GtkPluginWidget.cpp: Added.
+ (WebCore::GtkPluginWidget::GtkPluginWidget):
+ (WebCore::GtkPluginWidget::invalidateRect):
+ (WebCore::GtkPluginWidget::frameRectsChanged):
+ (WebCore::GtkPluginWidget::paint):
+ * platform/gtk/GtkPluginWidget.h: Added.
+
+2009-05-26 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25613.
+
+ Implement Widget::setIsSelected for Gtk+ by searching
+ for a property of the name "webkit-widget-is-selected" and if
+ such property exists we are going to set it. We expect
+ the property to take a boolean.
+
+ * platform/gtk/WidgetGtk.cpp:
+ (WebCore::Widget::setIsSelected):
+
+2009-05-26 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Brady Eidson.
+
+ Fix for <rdar://problem/6916371>
+ iWeb 'Announce' button does nothing after publishing to MobileMe
+
+ Add ability to force content sniffing for all urls (including file: urls)
+
+ * WebCore.base.exp:
+ * platform/network/ResourceHandle.cpp:
+ (WebCore::ResourceHandle::shouldContentSniffURL):
+ (WebCore::ResourceHandle::forceContentSniffing):
+ * platform/network/ResourceHandle.h:
+
+2009-05-26 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25996
+
+ [Qt] Dead-code stripping for unix
+
+ * WebCore.pro: Turn on GCC dead-code stripping flags for Unix
+
+2009-05-10 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25646
+
+ [GTK] Send onscroll events for the main FrameView
+
+ WebKit/GTK+ is currently not sending any onscroll
+ events for a frame with external adjustments. This is
+ due the fact that the value-changed signal of the GtkAdjustment
+ is handled by WebCore::ScrollView directly and is not going through
+ the WebCore::Scrollbar -> WebCore::ScrollbarClient ->
+ WebCore::FrameView::valueChanged -> WebCore::ScrollView::valueChanged
+ path.
+
+ Fix the above problem by wrapping the GtkAdjustment we get
+ assigned from GTK+ in a ScrollbarGtk that will not have any
+ visual appearance. Remove code from ScrollView that knows
+ about adjustments and create a special case for
+ WebCore::ScrollView::createScrollbar that will create such
+ a special WebCore::ScrollbarGtk.
+
+ * platform/ScrollView.cpp: Remove adjustment code
+ (WebCore::ScrollView::setHasHorizontalScrollbar):
+ (WebCore::ScrollView::setHasVerticalScrollbar):
+ (WebCore::ScrollView::updateScrollbars):
+ (WebCore::ScrollView::wheelEvent):
+ * platform/ScrollView.h: Remove adjustment code
+ * platform/gtk/ScrollViewGtk.cpp:
+ (WebCore::ScrollView::platformDestroy):
+ (WebCore::ScrollView::createScrollbar):
+ (WebCore::ScrollView::setGtkAdjustments):
+ * platform/gtk/ScrollbarGtk.cpp:
+ (ScrollbarGtk::createScrollbar): Special case.
+ (ScrollbarGtk::ScrollbarGtk): New ctor and work on the adjustment
+ (ScrollbarGtk::~ScrollbarGtk): Disconnect signal
+ (ScrollbarGtk::frameRectsChanged): Do nothing when we lack a platformWidget
+ * platform/gtk/ScrollbarGtk.h:
+
+2009-05-26 Cameron Zwarich <zwarich@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Bug 26035: Make ImageSource::frameHasAlphaAtIndex() return false for JPEGs with CG
+ <https://bugs.webkit.org/show_bug.cgi?id=26035>
+ <rdar://problem/6924087>
+
+ * platform/graphics/cg/ImageSourceCG.cpp:
+ (WebCore::ImageSource::frameHasAlphaAtIndex): return false if the image
+ is JPEG, there is no image type, or m_decoder is null.
+
+2009-05-26 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build fix for the JPEGImageDecoder.
+
+ Revision 44167 removed stdio.h from the included headers and
+ this will lead to an error that FILE is not known inside the
+ jpeglib.h Put back the stdio.h include.
+
+ * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
+
+2009-05-26 Yichao Yin <yichao.yin@torchmobile.com.cn>
+
+ Reviewed by Maciej Stachowiak.
+
+ Fix the crash issue while running layout tests after enalbed XHTMLMP
+ https://bugs.webkit.org/show_bug.cgi?id=26017
+
+ * dom/Document.cpp:
+ (WebCore::Document::isXHTMLMPDocument):
+
+2009-05-26 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6901751>
+ REGRESSION (r35515): Tiger crash painting the selection on registration page of car2go.com
+
+ Don't use the WKCGContextIsSafeToClip function; it wasn't working correctly. Instead, just disable
+ the improved selection drawing on Tiger.
+
+ * WebCore.Tiger.exp:
+ * platform/graphics/cg/GraphicsContextCG.cpp:
+ (WebCore::GraphicsContext::fillPath):
+ (WebCore::GraphicsContext::strokePath):
+ (WebCore::GraphicsContext::fillRect):
+ (WebCore::GraphicsContext::clip):
+ (WebCore::GraphicsContext::clipOut):
+ (WebCore::GraphicsContext::clipOutEllipseInRect):
+ (WebCore::GraphicsContext::clipPath):
+ (WebCore::GraphicsContext::addInnerRoundedRectClip):
+ (WebCore::GraphicsContext::strokeRect):
+ * platform/mac/WebCoreSystemInterface.h:
+ * platform/mac/WebCoreSystemInterface.mm:
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::fillSelectionGaps):
+
+2009-05-26 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25709 part two
+ Mostly cosmetic changes, mainly to get image decoders for Cairo build to
+ comply with WebKit style guidelines:
+ * Fix header guard names
+ * Fix initializer list wrapping
+ * Fix class/function "{" wrapping
+ * Fix wrapping of long boolean expressions
+ * Fix whitespace around operators
+ * Eliminate whitespace on otherwise-blank lines
+ * No {} on single-line conditional arms
+ * Use 0 instead of NULL
+ * Don't #include "config.h" in headers
+
+ Also a few non-cosmetic changes:
+ * Remove unneeded #ifdef protecting the contents of these files. The
+ platforms listed don't match who uses these files anymore (even
+ without considering Skia), and platforms which don't use them at all
+ (like CG) aren't harmed by the files, since they don't have
+ equivalently-named classes. It's simpler to just ditch these.
+ * Convert a use of Vector<>& into SharedBuffer*, since that's how the
+ data is really stored anyway.
+ * Use size() instead of m_size, for consistency with Skia code, and
+ future-proofing (if a particular decoder wants to specialize this).
+ * Move an ASSERT that was slightly more aggressive than necessary.
+ * Change variable names/types for clarity/accuracy and to match Skia.
+ * Remove unnecessary macro magic to work around a problem which no
+ longer exists in the third-party JPEG headers.
+ * Stop silencing a portability warning about setjmp (the vcproj/vsprops
+ are the right place for this)
+ * In Skia code, don't explicitly check |m_failed| before calling
+ isSizeAvailable(), which itself checks |m_failed|.
+
+ * platform/image-decoders/ImageDecoder.h: Fix header guards, "{" wrapping.
+ (WebCore::RGBA32Buffer::):
+ (WebCore::RGBA32Buffer::RGBA32Buffer): Fix initializer list wrapping.
+ (WebCore::ImageDecoder::ImageDecoder): Fix initializer list wrapping.
+ * platform/image-decoders/bmp/BMPImageDecoder.cpp: Remove unneeded #ifdef.
+ * platform/image-decoders/bmp/BMPImageDecoder.h: Fix header guards, "{" wrapping.
+ * platform/image-decoders/gif/GIFImageDecoder.cpp: Remove unneeded #ifdef, fix "{" wrapping.
+ (WebCore::GIFImageDecoderPrivate::GIFImageDecoderPrivate): Use an initializer instead of a block-level statement.
+ (WebCore::GIFImageDecoderPrivate::decode): Expect a SharedBuffer.
+ (WebCore::GIFImageDecoderPrivate::getColorMap):
+ (WebCore::GIFImageDecoder::GIFImageDecoder): Fix initializer list wrapping.
+ (WebCore::GIFImageDecoder::frameCount): Add comment.
+ (WebCore::GIFImageDecoder::frameBufferAtIndex): Explicitly cast, fix whitespace around operators.
+ (WebCore::GIFImageDecoder::decode): Pass a SharedBuffer.
+ (WebCore::GIFImageDecoder::initFrameBuffer): Use size() instead of m_size, move ASSERT, fix boolean wrapping, fix indenting.
+ (WebCore::GIFImageDecoder::prepEmptyFrameBuffer): Use size() instead of m_size.
+ (WebCore::GIFImageDecoder::haveDecodedRow): Use size() instead of m_size, eliminate unneeded whitespace, change variable name.
+ (WebCore::GIFImageDecoder::frameComplete): Use size() instead of m_size, no {} on single-line conditional arms, fix boolean wrapping.
+ * platform/image-decoders/gif/GIFImageDecoder.h: Fix header guards, "{" wrapping.
+ * platform/image-decoders/gif/GIFImageReader.cpp: Remove unneeded #ifdef.
+ (GIFImageReader::read):
+ * platform/image-decoders/gif/GIFImageReader.h: Fix header guards, change variable type.
+ * platform/image-decoders/ico/ICOImageDecoder.cpp: Remove unneeded #ifdef.
+ * platform/image-decoders/ico/ICOImageDecoder.h: Fix header guards, "{" wrapping.
+ * platform/image-decoders/jpeg/JPEGImageDecoder.cpp: Remove unneeded #ifdef, macro magic, silencing of warning.
+ (WebCore::JPEGImageDecoder::outputScanlines): Use size() instead of m_size, change variable name.
+ * platform/image-decoders/jpeg/JPEGImageDecoder.h: Fix header guards, "{" wrapping.
+ * platform/image-decoders/png/PNGImageDecoder.cpp: Remove unneeded #ifdef, silencing of warning, change variable type.
+ (WebCore::PNGImageReader::PNGImageReader): Fix initializer list wrapping.
+ (WebCore::PNGImageReader::close): Add comment, zero another member for consistency.
+ (WebCore::PNGImageDecoder::PNGImageDecoder): Fix indenting.
+ (WebCore::PNGImageDecoder::decodingFailed): Define in .cpp, not .h.
+ (WebCore::PNGImageDecoder::rowAvailable):
+ * platform/image-decoders/png/PNGImageDecoder.h: Fix header guards, "{" wrapping.
+ * platform/image-decoders/skia/GIFImageDecoder.cpp:
+ (WebCore::GIFImageDecoder::isSizeAvailable): Don't check m_failed unnecessarily.
+ (WebCore::GIFImageDecoder::frameBufferAtIndex): Fix whitespace around operators.
+ * platform/image-decoders/skia/GIFImageReader.h: "unsigned" is sufficient to convey "unsigned int".
+ * platform/image-decoders/skia/ImageDecoder.h: Remove unnecessary #includes.
+ (WebCore::ImageDecoder::ImageDecoder): Fix initializer list wrapping.
+ * platform/image-decoders/skia/JPEGImageDecoder.cpp:
+ (WebCore::JPEGImageReader::JPEGImageReader): Use 0 instead of NULL.
+ (WebCore::JPEGImageDecoder::isSizeAvailable): Don't check m_failed unnecessarily.
+ * platform/image-decoders/skia/PNGImageDecoder.cpp:
+ (WebCore::PNGImageReader::PNGImageReader): Fix initializer list wrapping.
+ (WebCore::PNGImageDecoder::PNGImageDecoder): Fix indenting.
+ (WebCore::PNGImageDecoder::isSizeAvailable): Don't check m_failed unnecessarily.
+ (WebCore::rowAvailable):
+ * platform/image-decoders/skia/XBMImageDecoder.h: Don't #include config.h.
+ * platform/image-decoders/xbm/XBMImageDecoder.cpp: Remove unneeded #ifdef.
+ * platform/image-decoders/xbm/XBMImageDecoder.h: Fix header guards, "{" wrapping.
+
+2009-05-26 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25944
+ Remove the uses of V8 Locker in worker execution code. No additional test is needed.
+ The normal WebKit layout tests should cover it. However, layout tests that start
+ multiple workers will fail to pass due to test shell limitation in Chromium. To cover
+ this, UI tests will be added (http://code.google.com/p/chromium/issues/detail?id=12554).
+
+ * bindings/v8/V8WorkerContextEventListener.cpp:
+ (WebCore::V8WorkerContextEventListener::handleEvent):
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::WorkerContextExecutionProxy::dispose):
+ (WebCore::WorkerContextExecutionProxy::initV8IfNeeded):
+ (WebCore::WorkerContextExecutionProxy::evaluate):
+ (WebCore::WorkerContextExecutionProxy::findOrCreateEventListenerHelper):
+ (WebCore::WorkerContextExecutionProxy::RemoveEventListener):
+
+2009-05-26 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25974
+ Enable timers in Chromuim workers.
+
+ * bindings/v8/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::execute): Added function which can execute a callback using WorkerContext.
+ * bindings/v8/ScheduledAction.h:
+ (WebCore::ScheduledAction::ScheduledAction): added url parameter to capture the worker's location.
+ * bindings/v8/custom/V8WorkerContextCustom.cpp:
+ (WebCore::SetTimeoutOrInterval): replaced NotImplemented with code to create ScheduledAction and DOMTimer.
+ Also, removed declarations for clearTimeout/clearInterval callbacks since they are now directly generated from IDL.
+
+2009-05-26 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23649
+ Update V8 bindings to match SQLTransactionErrorCallback change.
+
+ * bindings/v8/custom/V8CustomSQLTransactionErrorCallback.cpp:
+ (WebCore::V8CustomSQLTransactionErrorCallback::handleEvent): Changed to return void.
+ * bindings/v8/custom/V8CustomSQLTransactionErrorCallback.h: Ditto.
+
+2009-05-26 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Move FilterEffect to platform/graphics/filters. First step to get an
+ SVG independent filter system.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/graphics/filters/FilterEffect.cpp: Added.
+ (WebCore::FilterEffect::FilterEffect):
+ (WebCore::FilterEffect::~FilterEffect):
+ (WebCore::FilterEffect::externalRepresentation):
+ * platform/graphics/filters/FilterEffect.h: Added.
+ (WebCore::FilterEffect::xBoundingBoxMode):
+ (WebCore::FilterEffect::setXBoundingBoxMode):
+ (WebCore::FilterEffect::yBoundingBoxMode):
+ (WebCore::FilterEffect::setYBoundingBoxMode):
+ (WebCore::FilterEffect::widthBoundingBoxMode):
+ (WebCore::FilterEffect::setWidthBoundingBoxMode):
+ (WebCore::FilterEffect::heightBoundingBoxMode):
+ (WebCore::FilterEffect::setHeightBoundingBoxMode):
+ (WebCore::FilterEffect::subRegion):
+ (WebCore::FilterEffect::setSubRegion):
+ (WebCore::FilterEffect::resultImage):
+ (WebCore::FilterEffect::setEffectBuffer):
+ * svg/FilterEffect.cpp: Removed.
+ * svg/FilterEffect.h: Removed.
+
+2009-05-26 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23649
+ Update SQLTransactionErrorCallback to not return a value per changes in
+ HTML5 spec.
+
+ Test: storage/transaction-error-callback.html
+
+ * bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
+ (WebCore::JSCustomSQLTransactionErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionErrorCallback.h:
+ * storage/SQLTransaction.cpp:
+ (WebCore::SQLTransaction::SQLTransaction):
+ (WebCore::SQLTransaction::postflightAndCommit):
+ (WebCore::SQLTransaction::handleTransactionError):
+ (WebCore::SQLTransaction::deliverTransactionErrorCallback):
+ (WebCore::SQLTransaction::cleanupAfterTransactionErrorCallback):
+ * storage/SQLTransaction.h:
+ * storage/SQLTransactionErrorCallback.h:
+
+2009-05-26 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=25969
+
+ Detect the case where we can fit without scrollbars when the view shrinks, so that we don't mistakenly
+ continue to show scrollbars.
+
+ Added two tests in fast/dynamic.
+
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::updateScrollbars):
+
+2009-05-26 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Bug 25801: change AccessibilityAria -> AccessibilityARIA
+ https://bugs.webkit.org/show_bug.cgi?id=25801
+
+ * GNUmakefile.am:
+ * WebCore.order:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * accessibility/AXObjectCache.cpp:
+ (WebCore::AXObjectCache::getOrCreate):
+ * accessibility/AccessibilityARIAGrid.cpp: Copied from WebCore/accessibility/AccessibilityAriaGrid.cpp.
+ (WebCore::AccessibilityARIAGrid::AccessibilityARIAGrid):
+ (WebCore::AccessibilityARIAGrid::~AccessibilityARIAGrid):
+ (WebCore::AccessibilityARIAGrid::create):
+ (WebCore::AccessibilityARIAGrid::addChild):
+ (WebCore::AccessibilityARIAGrid::addChildren):
+ (WebCore::AccessibilityARIAGrid::cellForColumnAndRow):
+ * accessibility/AccessibilityARIAGrid.h: Copied from WebCore/accessibility/AccessibilityAriaGrid.h.
+ * accessibility/AccessibilityARIAGridCell.cpp: Copied from WebCore/accessibility/AccessibilityAriaGridCell.cpp.
+ (WebCore::AccessibilityARIAGridCell::AccessibilityARIAGridCell):
+ (WebCore::AccessibilityARIAGridCell::~AccessibilityARIAGridCell):
+ (WebCore::AccessibilityARIAGridCell::create):
+ (WebCore::AccessibilityARIAGridCell::parentTable):
+ (WebCore::AccessibilityARIAGridCell::rowIndexRange):
+ (WebCore::AccessibilityARIAGridCell::columnIndexRange):
+ * accessibility/AccessibilityARIAGridCell.h: Copied from WebCore/accessibility/AccessibilityAriaGridCell.h.
+ * accessibility/AccessibilityARIAGridRow.cpp: Copied from WebCore/accessibility/AccessibilityAriaGridRow.cpp.
+ (WebCore::AccessibilityARIAGridRow::AccessibilityARIAGridRow):
+ (WebCore::AccessibilityARIAGridRow::~AccessibilityARIAGridRow):
+ (WebCore::AccessibilityARIAGridRow::create):
+ (WebCore::AccessibilityARIAGridRow::parentTable):
+ (WebCore::AccessibilityARIAGridRow::headerObject):
+ * accessibility/AccessibilityARIAGridRow.h: Copied from WebCore/accessibility/AccessibilityAriaGridRow.h.
+ * accessibility/AccessibilityAriaGrid.cpp: Removed.
+ * accessibility/AccessibilityAriaGrid.h: Removed.
+ * accessibility/AccessibilityAriaGridCell.cpp: Removed.
+ * accessibility/AccessibilityAriaGridCell.h: Removed.
+ * accessibility/AccessibilityAriaGridRow.cpp: Removed.
+ * accessibility/AccessibilityAriaGridRow.h: Removed.
+
+2009-05-26 Stephen White <senorblanco@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26012
+
+ Fix the Skia path to normalize the given source rect when
+ drawing patterns, so it accepts negative width/height (as CG does).
+ Fixes Chromium bug http://www.crbug.com/6167.
+ * platform/graphics/skia/ImageSkia.cpp:
+ (WebCore::Image::drawPattern):
+
+2009-05-26 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Serialize calls to WebInspector. This is the first step where method
+ calls are being serialized to arrays (not yet JSON stringified ones) and
+ are being dispatched on the client. This change also allows client to override
+ InspectorFrontend, so that the serialized calls can be made on a given object
+ instead of in-process WebInspector global. This will be the main control flow
+ when InspectorController is decoupled from the in-process frontend.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26010
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::scriptObjectReady):
+ (WebCore::InspectorController::overrideFrontendObject):
+ (WebCore::InspectorController::show):
+ (WebCore::InspectorController::populateScriptObjects):
+ * inspector/InspectorController.h:
+ * inspector/InspectorFrontend.cpp:
+ (WebCore::InspectorFrontend::addMessageToConsole):
+ (WebCore::InspectorFrontend::addResource):
+ (WebCore::InspectorFrontend::updateResource):
+ (WebCore::InspectorFrontend::removeResource):
+ (WebCore::InspectorFrontend::updateFocusedNode):
+ (WebCore::InspectorFrontend::setAttachedWindow):
+ (WebCore::InspectorFrontend::inspectedWindowScriptObjectCleared):
+ (WebCore::InspectorFrontend::showPanel):
+ (WebCore::InspectorFrontend::populateInterface):
+ (WebCore::InspectorFrontend::reset):
+ (WebCore::InspectorFrontend::debuggerWasEnabled):
+ (WebCore::InspectorFrontend::debuggerWasDisabled):
+ (WebCore::InspectorFrontend::profilerWasEnabled):
+ (WebCore::InspectorFrontend::profilerWasDisabled):
+ (WebCore::InspectorFrontend::parsedScriptSource):
+ (WebCore::InspectorFrontend::failedToParseScriptSource):
+ (WebCore::InspectorFrontend::addProfile):
+ (WebCore::InspectorFrontend::setRecordingProfile):
+ (WebCore::InspectorFrontend::pausedScript):
+ (WebCore::InspectorFrontend::resumedScript):
+ (WebCore::InspectorFrontend::addDatabase):
+ (WebCore::InspectorFrontend::addDOMStorage):
+ (WebCore::InspectorFrontend::newFunctionCall):
+ (WebCore::InspectorFrontend::callSimpleFunction):
+ * inspector/InspectorFrontend.h:
+ * inspector/front-end/inspector.js:
+ (WebInspector.dispatch):
+
+2009-05-25 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6918671> REGRESSION (r41700): Crashes in debug DumpRenderTree at RefCountedBase::ref().
+
+ * dom/QualifiedName.cpp: (WebCore::QualifiedName::QualifiedName):
+ * dom/QualifiedName.h: (WebCore::QualifiedName::QualifiedNameImpl::QualifiedNameImpl):
+ Adjust empty namespace before QNameComponentsTranslator black magic, not after.
+
+2009-05-25 David Levin <levin@chromium.org>
+
+ Reviewed by Maciej Stachowiak and Oliver Hunt.
+
+ Added forwarding headers.
+
+ * ForwardingHeaders/wtf/CrossThreadRefCounted.h: Added.
+ * ForwardingHeaders/wtf/OwnFastMallocPtr.h: Added.
+
+2009-05-25 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - WebCore side of <rdar://problem/6914001>.
+
+ Add a new m_allowPopupsFromPlugin flag.
+
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::ScriptController):
+ (WebCore::ScriptController::processingUserGesture):
+ * bindings/js/ScriptController.h:
+ (WebCore::ScriptController::setAllowPopupsFromPlugin):
+ (WebCore::ScriptController::allowPopupsFromPlugin):
+
+2009-05-25 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26006
+
+ Sort out our use of dynamicGlobalObject and lexicalGlobalObject for
+ window.location. The correct use appears to be as follows:
+
+ 1) Use dynamicGlobalObject to find the user gesture.
+ 2) Use dynamicGlobalObject to complete URLs.
+ 3) Use lexicalGlobalObject to find the referrer.
+ 4) Use lexicalGlobalObject for the frame navigation checks.
+ 5) Use lexicalGlobalObject for the XSS checks.
+
+ Tests: http/tests/security/frameNavigation/context-for-location-assign.html
+ http/tests/security/frameNavigation/context-for-location-href.html
+ http/tests/security/frameNavigation/context-for-location.html
+
+ * bindings/js/JSDOMBinding.cpp:
+ (WebCore::shouldAllowNavigation):
+ (WebCore::toLexicalFrame):
+ (WebCore::processingUserGesture):
+ (WebCore::completeURL):
+ * bindings/js/JSDOMBinding.h:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::setLocation):
+ * bindings/js/JSLocationCustom.cpp:
+ (WebCore::navigateIfAllowed):
+ (WebCore::JSLocation::setHref):
+ (WebCore::JSLocation::replace):
+ (WebCore::JSLocation::reload):
+ (WebCore::JSLocation::assign):
+ (WebCore::JSLocation::toString):
+ (WebCore::JSLocationPrototype::customPut):
+ * bindings/v8/V8Utilities.cpp:
+ (WebCore::processingUserGesture):
+ (WebCore::shouldAllowNavigation):
+ (WebCore::completeURL):
+ (WebCore::navigateIfAllowed):
+ * bindings/v8/V8Utilities.h:
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ (WebCore::V8Custom::WindowSetLocation):
+ * bindings/v8/custom/V8LocationCustom.cpp:
+ (WebCore::ACCESSOR_SETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-05-25 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Maciej Stachowiak.
+
+ With Windows compilers older then MSVC 2005, the functions
+ gmtime_s and localtime_s don't exist. The gmtime and localtime are
+ on Windows always thread safe. So use them in the cases where
+ gmtime_s and localtime_s are not present.
+
+ * loader/FTPDirectoryDocument.cpp:
+ * loader/FTPDirectoryParser.cpp:
+
+2009-05-25 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Simon Hausmann.
+
+ Follow up on r44120. PluginPackageMac.cpp is used
+ by Qt on Mac and contained a copy of the m_browserFunc
+ assignments and ::equal, ::hash and ::compareFileVersion.
+ Change it to use the ones from PluginPackage.cpp as well.
+
+ * plugins/mac/PluginPackageMac.cpp:
+ (WebCore::PluginPackage::load):
+
+2009-05-25 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25612
+
+ Support conditionals in the tag factories, by placing
+ feature #ifdefs around the individual factory functions
+ and the registration.
+
+ Made the Audio and Video elements conditional in the tag factories
+
+ * html/HTMLTagNames.in:
+ * dom/make_names.pl:
+
+2009-05-25 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Fix the Gtk build when video is disabled.
+
+ * GNUmakefile.am: Always generate and compile the IDL files for the media
+ elements. They contain proper feature #ifdefs.
+
+2009-05-25 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Fix the Qt build when video is disabled.
+
+ * WebCore.pro: Always generate the IDL files for the media elements. They
+ contain proper ENABLE(VIDEO) #ifdefs.
+
+2009-05-25 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26004
+
+ The origin for postMessage should follow lexical scope, not dynamic
+ scope. Yes, this is a super-obscure corner case.
+
+ Test: http/tests/security/postMessage/origin-follows-lexical-scope.html
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::postMessage):
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-05-24 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Mark Rowe.
+
+ Fix build bustage related to PassOwnPtr changes.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25999
+
+ * platform/graphics/chromium/TransparencyWin.cpp:
+
+2009-05-24 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25988
+
+ Minor cleanup in PluginPackage::hash. Let the compiler
+ figure out the size of the array. Do not have it in the
+ definition and specially not the in the call to
+ StringImpl::hash.
+
+ * plugins/PluginPackage.cpp:
+ (WebCore::PluginPackage::hash):
+
+2009-05-24 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25988
+
+ Move ::hash, ::equal and ::compareFileVersion from
+ the duplicated copies in PluginPackageQt.cpp and
+ PluginPackageGtk to PluginPackage.cpp. We need to #ifdef
+ this for the PluginPackageWin version. Use the new style
+ ENABLE() for this feature/policy and enable it in the Gtk+
+ and Qt buildsystem.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * plugins/PluginPackage.cpp:
+ (WebCore::PluginPackage::hash):
+ (WebCore::PluginPackage::equal):
+ (WebCore::PluginPackage::compareFileVersion):
+ * plugins/gtk/PluginPackageGtk.cpp:
+ * plugins/qt/PluginPackageQt.cpp:
+
+2009-05-24 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25988
+
+ So far the initialization of the browserfuncs struct
+ is done in PluginPackageQt, PluginPackageGtk and
+ PluginPackageWin there is no need for this duplication.
+
+ The PluginPackageWin version got copied to PluginPackage
+
+ * plugins/PluginPackage.cpp:
+ (WebCore::PluginPackage::initializeBrowserFuncs):
+ * plugins/PluginPackage.h:
+ * plugins/gtk/PluginPackageGtk.cpp:
+ (WebCore::PluginPackage::load):
+ * plugins/qt/PluginPackageQt.cpp:
+ (WebCore::PluginPackage::load):
+ * plugins/win/PluginPackageWin.cpp:
+ (WebCore::PluginPackage::load):
+
+2009-05-24 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ WebKit needs cross-platform filter system
+ [https://bugs.webkit.org/show_bug.cgi?id=19991]
+
+ Added standard input for filter system.
+
+ No testcases were added. Filter system is still off.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/graphics/filters/SourceAlpha.cpp: Added.
+ (WebCore::SourceAlpha::create):
+ (WebCore::SourceAlpha::effectName):
+ (WebCore::SourceAlpha::apply):
+ (WebCore::SourceAlpha::dump):
+ * platform/graphics/filters/SourceAlpha.h: Added.
+ (WebCore::SourceAlpha::SourceAlpha):
+ * platform/graphics/filters/SourceGraphic.cpp: Added.
+ (WebCore::SourceGraphic::create):
+ (WebCore::SourceGraphic::effectName):
+ (WebCore::SourceGraphic::apply):
+ (WebCore::SourceGraphic::dump):
+ * platform/graphics/filters/SourceGraphic.h: Added.
+ (WebCore::SourceGraphic::SourceGraphic):
+ * svg/FilterBuilder.cpp: Added.
+ (WebCore::FilterBuilder::FilterBuilder):
+ (WebCore::FilterBuilder::add):
+ (WebCore::FilterBuilder::getEffectById):
+ (WebCore::FilterBuilder::clearEffects):
+ * svg/FilterBuilder.h:
+
+2009-05-24 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25612
+
+ Add support conditionals in the JSC bindings generator code for attributes,
+ by placing feature #ifdefs around the setters/getters.
+
+ Made the audio and video element specific DOM attributes conditional
+ in the generated code, by moving the #ifdefs from the IDL files into
+ the generated code. This allows for re-using the same generated code
+ with or without ENABLE(VIDEO).
+
+ * page/DOMWindow.idl:
+ * bindings/scripts/CodeGeneratorJS.pm:
+
+2009-05-23 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build fix for Qt. Change signature to have PassOwnPtr.
+
+ * platform/text/qt/TextCodecQt.cpp:
+ (WebCore::newTextCodecQt):
+
+2009-05-23 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - clean up ColorMac a little
+
+ * platform/graphics/mac/ColorMac.h: Whitespace change.
+ * platform/graphics/mac/ColorMac.mm: Removed redundant #import
+ statements and sorted the remaining ones.
+ (WebCore::makeRGBAFromNSColor): Replaced four Objective-C method calls
+ with a single call and removed redundant casts to int.
+ (WebCore::nsColor): Removed ".0f" from number literals used as CGFloats.
+ In one case, this avoids an intermediate conversion to float before
+ conversion to double on 64-bit.
+ (WebCore::CGColorFromNSColor): Replaced four Objective-C method calls
+ with a single call.
+ (WebCore::focusRingColor):
+ (+[WebCoreControlTintObserver controlTintDidChange]): Whitespace change.
+
+2009-05-23 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] ROLE_ROW_HEADER should not be used for list item bullets/numbers
+ https://bugs.webkit.org/show_bug.cgi?id=25900
+
+ Use ATK_ROLE_TEXT for ListMarkerRole.
+
+ * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
+ (atkRole):
+
+2009-05-23 David Kilzer <ddkilzer@apple.com>
+
+ Reformat WebCore::requiresContextForWordBoundary()
+
+ * platform/text/TextBoundaries.h:
+ (WebCore::requiresContextForWordBoundary):
+
+2009-05-23 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Not reviewed. Roll out ResourceHandle patch, that I accidently included in my last commit.
+
+ * platform/network/ResourceHandle.cpp:
+ (WebCore::ResourceHandle::shouldContentSniffURL):
+
+2009-05-23 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Darin Adler.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=23808
+
+ After a long journey, add the last missing ABC to share form control element support with HTMLSelectElement.
+ RenderListBox/RenderMenuList operates on SelectElement instead of HTMLSelectElement now, querying selected index etc.
+ This makes it possible to use these render objects for ie. WML, as it's done before for input & option elements.
+
+ WMLSelectElement will be created soon, in a follow-up patch, adding more methods to SelectElement, sharing code between
+ HTMLSelectElement/WMLSelectElement.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * accessibility/AccessibilityListBox.cpp:
+ (WebCore::AccessibilityListBox::addChildren):
+ (WebCore::AccessibilityListBox::doAccessibilityHitTest):
+ * accessibility/AccessibilityListBoxOption.cpp:
+ (WebCore::AccessibilityListBoxOption::listBoxOptionIndex):
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::actionElement):
+ * dom/Element.h:
+ (WebCore::Element::isFormControlElement):
+ (WebCore::Element::dispatchFormControlChangeEvent):
+ * dom/SelectElement.cpp: Added.
+ (WebCore::toSelectElement):
+ * dom/SelectElement.h: Added.
+ (WebCore::SelectElement::~SelectElement):
+ * html/HTMLFormControlElement.cpp:
+ (WebCore::HTMLFormControlElement::dispatchFormControlChangeEvent):
+ * html/HTMLFormControlElement.h:
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::setChecked):
+ (WebCore::HTMLInputElement::defaultEventHandler):
+ * html/HTMLOptionElement.cpp:
+ (WebCore::HTMLOptionElement::index):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::selectedIndex):
+ (WebCore::HTMLSelectElement::lastSelectedListIndex):
+ (WebCore::HTMLSelectElement::deselectItems):
+ (WebCore::HTMLSelectElement::setSelectedIndex):
+ (WebCore::HTMLSelectElement::length):
+ (WebCore::HTMLSelectElement::remove):
+ (WebCore::HTMLSelectElement::value):
+ (WebCore::HTMLSelectElement::setValue):
+ (WebCore::HTMLSelectElement::saveFormControlState):
+ (WebCore::HTMLSelectElement::restoreFormControlState):
+ (WebCore::HTMLSelectElement::selectAll):
+ (WebCore::HTMLSelectElement::appendFormData):
+ (WebCore::HTMLSelectElement::optionToListIndex):
+ (WebCore::HTMLSelectElement::listToOptionIndex):
+ (WebCore::HTMLSelectElement::recalcListItems):
+ (WebCore::HTMLSelectElement::reset):
+ (WebCore::HTMLSelectElement::dispatchFocusEvent):
+ (WebCore::HTMLSelectElement::dispatchBlurEvent):
+ (WebCore::HTMLSelectElement::menuListDefaultEventHandler):
+ (WebCore::HTMLSelectElement::listBoxDefaultEventHandler):
+ (WebCore::HTMLSelectElement::setActiveSelectionAnchorIndex):
+ (WebCore::HTMLSelectElement::updateListBoxSelection):
+ (WebCore::HTMLSelectElement::menuListOnChange):
+ (WebCore::HTMLSelectElement::listBoxOnChange):
+ (WebCore::HTMLSelectElement::saveLastSelection):
+ (WebCore::HTMLSelectElement::typeAheadFind):
+ (WebCore::HTMLSelectElement::nextSelectableListIndex):
+ (WebCore::HTMLSelectElement::previousSelectableListIndex):
+ (WebCore::HTMLSelectElement::setLength):
+ (WebCore::HTMLSelectElement::checkListItems):
+ * html/HTMLSelectElement.h:
+ (WebCore::HTMLSelectElement::size):
+ (WebCore::HTMLSelectElement::multiple):
+ (WebCore::HTMLSelectElement::listItems):
+ (WebCore::HTMLSelectElement::setActiveSelectionEndIndex):
+ * platform/network/ResourceHandle.cpp:
+ (WebCore::ResourceHandle::shouldContentSniffURL):
+ * rendering/RenderFileUploadControl.cpp:
+ (WebCore::RenderFileUploadControl::valueChanged):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::RenderListBox):
+ (WebCore::RenderListBox::updateFromElement):
+ (WebCore::RenderListBox::scrollToRevealSelection):
+ (WebCore::RenderListBox::size):
+ (WebCore::RenderListBox::numItems):
+ (WebCore::RenderListBox::paintItemForeground):
+ (WebCore::RenderListBox::paintItemBackground):
+ (WebCore::RenderListBox::panScroll):
+ (WebCore::RenderListBox::autoscroll):
+ (WebCore::RenderListBox::stopAutoscroll):
+ (WebCore::RenderListBox::valueChanged):
+ (WebCore::RenderListBox::nodeAtPoint):
+ * rendering/RenderListBox.h:
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::RenderMenuList):
+ (WebCore::RenderMenuList::updateOptionsWidth):
+ (WebCore::RenderMenuList::updateFromElement):
+ (WebCore::RenderMenuList::setTextFromOption):
+ (WebCore::RenderMenuList::showPopup):
+ (WebCore::RenderMenuList::valueChanged):
+ (WebCore::RenderMenuList::itemText):
+ (WebCore::RenderMenuList::itemIsEnabled):
+ (WebCore::RenderMenuList::itemStyle):
+ (WebCore::RenderMenuList::itemBackgroundColor):
+ (WebCore::RenderMenuList::listSize):
+ (WebCore::RenderMenuList::selectedIndex):
+ (WebCore::RenderMenuList::itemIsSeparator):
+ (WebCore::RenderMenuList::itemIsLabel):
+ (WebCore::RenderMenuList::itemIsSelected):
+ (WebCore::RenderMenuList::setTextFromItem):
+ * rendering/RenderMenuList.h:
+ * rendering/RenderSlider.cpp:
+ (WebCore::RenderSlider::setValueForPosition):
+
+2009-05-23 David Kilzer <ddkilzer@apple.com>
+
+ Fix Gtk/Qt builds for PassOwnPtr
+
+ * platform/graphics/cairo/ImageCairo.cpp:
+ (WebCore::Image::drawPattern): Use an OwnPtr<ImageBuffer>
+ instead of an std::auto_ptr<ImageBuffer> to store the result of
+ ImageBuffer::create() now that it returns a
+ PassOwnPtr<ImageBuffer>.
+ * platform/graphics/qt/PathQt.cpp:
+ (WebCore::Path::strokeContains): Ditto.
+ (WebCore::Path::strokeBoundingRect): Ditto.
+
+2009-05-23 David Kilzer <ddkilzer@apple.com>
+
+ Part 2 of 2: Bug 25495: Implement PassOwnPtr and replace uses of std::auto_ptr
+
+ <https://bugs.webkit.org/show_bug.cgi?id=25495>
+
+ Reviewed by Oliver Hunt.
+
+ No test cases added since there is no change in behavior.
+
+ * WebCore.base.exp: Updated export for
+ HistoryItem::setRedirectURLs() which now takes a PassOwnPtr.
+ * dom/Node.cpp:
+ (WebCore::Node::childNodes): Use NodeListsNodeData::create()
+ instead of new NodeListsNodeData.
+ (WebCore::Node::registerDynamicNodeList): Ditto.
+ (WebCore::Node::getElementsByTagNameNS): Ditto.
+ (WebCore::Node::getElementsByName): Ditto.
+ (WebCore::Node::getElementsByClassName): Ditto.
+ * dom/NodeRareData.h:
+ (WebCore::NodeListsNodeData::create): Added. Implements
+ create() pattern popularized by RefCounted classes.
+ (WebCore::NodeListsNodeData::NodeListsNodeData): Declared
+ private constructor.
+ (WebCore::NodeRareData::setNodeLists): Now takes a PassOwnPtr<>
+ instead of an auto_ptr<>.
+ * history/HistoryItem.cpp:
+ (WebCore::HistoryItem::setRedirectURLs): Ditto.
+ * history/HistoryItem.h:
+ (WebCore::HistoryItem::setRedirectURLs): Ditto.
+ * html/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::drawTextInternal): Use
+ OwnPtr<> instead of auto_ptr<> for stack variable.
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::createImageBuffer): Updated to use
+ assignment operator now that ImageBuffer::create() returns a
+ PassOwnPtr<>.
+ * loader/EmptyClients.h:
+ (WebCore::EmptyChromeClient::createHTMLParserQuirks): Return a
+ PassOwnPtr<> instead of a raw HTMLParserQuirks pointer.
+ * page/ChromeClient.h:
+ (WebCore::ChromeClient::createHTMLParserQuirks): Ditto.
+ * platform/graphics/GeneratedImage.cpp:
+ (WebCore::GeneratedImage::drawPattern): Use OwnPtr<> instead of
+ auto_ptr<> for stack variable.
+ * platform/graphics/ImageBuffer.h:
+ (WebCore::ImageBuffer::create): Return PassOwnPtr<> instead of
+ auto_ptr<>. Use OwnPtr<> instead of auto_ptr<> for stack
+ variable.
+ * platform/mac/ScrollbarThemeMac.mm:
+ (WebCore::ScrollbarThemeMac::paint): Use OwnPtr<> instead of
+ auto_ptr<> for stack variable.
+ * platform/text/TextCodec.h:
+ (WebCore::NewTextCodecFunction): Return PassOwnPtr<> instead of
+ auto_ptr<>.
+ * platform/text/TextCodecICU.cpp:
+ (WebCore::newTextCodecICU): Ditto.
+ * platform/text/TextCodecLatin1.cpp:
+ (WebCore::newStreamingTextDecoderWindowsLatin1): Ditto.
+ * platform/text/TextCodecUTF16.cpp:
+ (WebCore::newStreamingTextDecoderUTF16LE): Ditto.
+ (WebCore::newStreamingTextDecoderUTF16BE): Ditto.
+ * platform/text/TextCodecUserDefined.cpp:
+ (WebCore::newStreamingTextDecoderUserDefined): Ditto.
+ * platform/text/TextEncodingRegistry.cpp:
+ (WebCore::newTextCodec): Ditto.
+ * platform/text/TextEncodingRegistry.h:
+ (WebCore::newTextCodec): Ditto.
+ * platform/text/mac/TextCodecMac.cpp:
+ (WebCore::newTextCodecMac): Ditto.
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended): Use
+ OwnPtr<> instead of auto_ptr<> for stack variable.
+ * svg/SVGMaskElement.cpp:
+ (WebCore::SVGMaskElement::drawMaskerContent): Ditto. Return
+ OwnPtr<> instead of auto_ptr<>.
+ * svg/SVGMaskElement.h:
+ (WebCore::SVGMaskElement::drawMaskerContent): Return OwnPtr<>
+ instead of auto_ptr<>.
+ * svg/SVGPatternElement.cpp:
+ (WebCore::SVGPatternElement::buildPattern): Use OwnPtr<> instead
+ of auto_ptr<> for stack variable.
+ * svg/graphics/SVGImage.cpp:
+ (WebCore::SVGImage::nativeImageForCurrentFrame): Updated to use
+ assignment operator now that ImageBuffer::create() returns a
+ PassOwnPtr<>.
+ * svg/graphics/SVGPaintServerGradient.cpp:
+ (WebCore::createMaskAndSwapContextForTextGradient): Use OwnPtr<>
+ instead of auto_ptr<> for stack variable.
+ * svg/graphics/SVGPaintServerPattern.cpp:
+ (WebCore::SVGPaintServerPattern::setTile): Updated to take a
+ PassOwnPtr<> instead of an auto_ptr<>.
+ (WebCore::SVGPaintServerPattern::setup): Use OwnPtr<> instead of
+ auto_ptr<> for stack variable.
+ * svg/graphics/SVGPaintServerPattern.h:
+ (WebCore::SVGPaintServerPattern::setTile): Updated to take a
+ PassOwnPtr<> instead of an auto_ptr<>.
+ * svg/graphics/SVGResourceMasker.cpp:
+ (WebCore::SVGResourceMasker::applyMask): Updated to use
+ assignment operator now that SVGMaskElement::drawMaskerContent()
+ returns a PassOwnPtr<>. Use OwnPtr<> instead of auto_ptr<> for
+ stack variable.
+
+2009-05-23 David Kilzer <ddkilzer@apple.com>
+
+ Part 1 of 2: Bug 25495: Implement PassOwnPtr and replace uses of std::auto_ptr
+
+ <https://bugs.webkit.org/show_bug.cgi?id=25495>
+
+ Reviewed by Oliver Hunt.
+
+ * ForwardingHeaders/wtf/OwnPtrCommon.h: Added.
+ * ForwardingHeaders/wtf/PassOwnPtr.h: Added.
+ * WebCore.vcproj/WebCore.vcproj: Added OwnPtrCommon.h and
+ PassOwnPtr.h.
+
+2009-05-23 David Kilzer <ddkilzer@apple.com>
+
+ Fix Mac builds by backing out r44093
+
+ * bindings/js/JSCustomPositionCallback.cpp:
+ * bindings/js/JSCustomPositionCallback.h:
+ * bindings/js/JSCustomPositionErrorCallback.cpp:
+ * bindings/js/JSCustomPositionErrorCallback.h:
+ * bindings/js/JSGeolocationCustom.cpp:
+ * page/Geolocation.cpp:
+ * page/Geolocation.idl:
+ * page/Geoposition.cpp:
+ * page/Geoposition.h:
+ * page/Geoposition.idl:
+ * page/Navigator.cpp:
+ (WebCore::Navigator::disconnectFrame):
+ (WebCore::Navigator::geolocation):
+ * page/PositionError.idl:
+ * platform/GeolocationService.cpp:
+ (WebCore::GeolocationService::create):
+
+2009-05-23 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Eric Seidel.
+
+ Add GEOLOCATION guards around Geolocation API code
+ https://bugs.webkit.org/show_bug.cgi?id=25756
+
+ * bindings/js/JSCustomPositionCallback.cpp:
+ * bindings/js/JSCustomPositionCallback.h:
+ * bindings/js/JSCustomPositionErrorCallback.cpp:
+ * bindings/js/JSCustomPositionErrorCallback.h:
+ * bindings/js/JSGeolocationCustom.cpp:
+ * page/Geolocation.cpp:
+ * page/Geolocation.idl:
+ * page/Geoposition.cpp:
+ * page/Geoposition.h:
+ * page/Geoposition.idl:
+ * page/Navigator.cpp:
+ (WebCore::Navigator::disconnectFrame):
+ (WebCore::Navigator::geolocation):
+ * page/PositionError.idl:
+ * platform/GeolocationService.cpp:
+
+2009-05-23 David Kilzer <ddkilzer@apple.com>
+
+ Rename startupdateStyleIfNeededDispatcher to startUpdateStyleIfNeededDispatcher
+
+ In r42377, startUpdateRenderingDispatcher() was renamed to
+ startupdateStyleIfNeededDispatcher(), but the camelCase "U" was
+ dropped. This change restores it.
+
+ * WebCore.order:
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::startUpdateStyleIfNeededDispatcher):
+ (WebCore::AnimationControllerPrivate::addEventToDispatch):
+ (WebCore::AnimationControllerPrivate::addNodeChangeToDispatch):
+ (WebCore::AnimationControllerPrivate::pauseAnimationAtTime):
+ (WebCore::AnimationControllerPrivate::pauseTransitionAtTime):
+ * page/animation/AnimationControllerPrivate.h:
+
+2009-05-23 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build-fix for Qt. Disable SVG Filters.
+
+ SVG Filters can not be built right now and Qt should not have
+ them enabled anyway as they do not carry out any filtering.
+
+ * WebCore.pro:
+
+2009-05-23 Dirk Schulze <krit@webkit.org>
+
+ Unreviewed build-fix for gtk. Remove source input files
+ for SVG filter system from the build for the moment and
+ add them later again.
+
+ * GNUmakefile.am:
+
+2009-05-23 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ WebKit needs cross-platform filter system
+ [https://bugs.webkit.org/show_bug.cgi?id=19991]
+
+ Preparing Filter primitves for the new filter system.
+
+ No testcases were added. SVG filters are off by default.
+
+ * GNUmakefile.am:
+ * platform/graphics/filters/FEBlend.cpp:
+ (WebCore::FEBlend::apply):
+ * platform/graphics/filters/FEBlend.h:
+ * platform/graphics/filters/FEColorMatrix.cpp:
+ (WebCore::FEColorMatrix::apply):
+ * platform/graphics/filters/FEColorMatrix.h:
+ * platform/graphics/filters/FEComponentTransfer.cpp:
+ (WebCore::FEComponentTransfer::apply):
+ * platform/graphics/filters/FEComponentTransfer.h:
+ * platform/graphics/filters/FEComposite.cpp:
+ (WebCore::FEComposite::apply):
+ * platform/graphics/filters/FEComposite.h:
+ * svg/Filter.h:
+ * svg/FilterBuilder.h:
+ (WebCore::FilterBuilder::lastFilter):
+ * svg/FilterEffect.cpp:
+ (WebCore::FilterEffect::FilterEffect):
+ * svg/FilterEffect.h:
+ (WebCore::FilterEffect::xBoundingBoxMode):
+ (WebCore::FilterEffect::setXBoundingBoxMode):
+ (WebCore::FilterEffect::yBoundingBoxMode):
+ (WebCore::FilterEffect::setYBoundingBoxMode):
+ (WebCore::FilterEffect::widthBoundingBoxMode):
+ (WebCore::FilterEffect::setWidthBoundingBoxMode):
+ (WebCore::FilterEffect::heightBoundingBoxMode):
+ (WebCore::FilterEffect::setHeightBoundingBoxMode):
+ (WebCore::FilterEffect::subRegion):
+ (WebCore::FilterEffect::setSubRegion):
+ (WebCore::FilterEffect::resultImage):
+ (WebCore::FilterEffect::setEffectBuffer):
+ * svg/graphics/filters/SVGFEConvolveMatrix.cpp:
+ (WebCore::FEConvolveMatrix::apply):
+ * svg/graphics/filters/SVGFEConvolveMatrix.h:
+ * svg/graphics/filters/SVGFEDiffuseLighting.cpp:
+ (WebCore::FEDiffuseLighting::apply):
+ * svg/graphics/filters/SVGFEDiffuseLighting.h:
+ * svg/graphics/filters/SVGFEDisplacementMap.cpp:
+ (WebCore::FEDisplacementMap::apply):
+ * svg/graphics/filters/SVGFEDisplacementMap.h:
+ * svg/graphics/filters/SVGFEFlood.cpp:
+ (WebCore::FEFlood::apply):
+ * svg/graphics/filters/SVGFEFlood.h:
+ * svg/graphics/filters/SVGFEGaussianBlur.cpp:
+ (WebCore::FEGaussianBlur::apply):
+ * svg/graphics/filters/SVGFEGaussianBlur.h:
+ * svg/graphics/filters/SVGFEImage.cpp:
+ (WebCore::FEImage::apply):
+ * svg/graphics/filters/SVGFEImage.h:
+ * svg/graphics/filters/SVGFEMerge.cpp:
+ (WebCore::FEMerge::apply):
+ * svg/graphics/filters/SVGFEMerge.h:
+ * svg/graphics/filters/SVGFEMorphology.cpp:
+ (WebCore::FEMorphology::apply):
+ * svg/graphics/filters/SVGFEMorphology.h:
+ * svg/graphics/filters/SVGFEOffset.cpp:
+ (WebCore::FEOffset::apply):
+ * svg/graphics/filters/SVGFEOffset.h:
+ * svg/graphics/filters/SVGFESpecularLighting.cpp:
+ (WebCore::FESpecularLighting::apply):
+ * svg/graphics/filters/SVGFESpecularLighting.h:
+ * svg/graphics/filters/SVGFETile.cpp:
+ (WebCore::FETile::apply):
+ * svg/graphics/filters/SVGFETile.h:
+ * svg/graphics/filters/SVGFETurbulence.cpp:
+ (WebCore::FETurbulence::apply):
+ * svg/graphics/filters/SVGFETurbulence.h:
+
+2009-05-22 Dirk Schulze <krit@webkit.org>
+
+ Unreviewed build-fix for gtk. Breakage caused by a wrong call of ImageBuffer.
+
+ * platform/graphics/cairo/ImageCairo.cpp:
+ (WebCore::Image::drawPattern):
+
+2009-05-22 Dirk Schulze <vbs85@gmx.de>
+
+ Reviewed by Eric Seidel.
+
+ Added the use of tileRect() for a correct drawing of
+ border-images.
+
+ Testcases for border-image are in fast/borders like
+ border-image-01.html and will be activated for cairo, once
+ gtk supports pixel tests.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19652
+ [CAIRO] wrong drawing of border-image
+
+ * platform/graphics/cairo/ImageCairo.cpp:
+ (WebCore::Image::drawPattern):
+
+2009-05-22 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25684
+
+ Ask the Scrollbar for the orientation.
+
+ Use Scrollbar::orientation to figure out the
+ direction of scrolling.
+
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::valueChanged):
+
+2009-05-22 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6916082> Incorrect handling of % as CSS value.
+
+ Test: fast/css/percent-character-as-value.html
+
+ * css/CSSGrammar.y: Make a stray % character reliably cause
+ CSS parsing to succeed, but the CSS value to be ignored because
+ of incorrect type. A type of 0 has this effect.
+
+2009-05-22 Brent Fulgham <bfulgham@webkit.org>
+
+ Reviewed by Adam Roben.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25971
+ Correct a handful of build errors in the Windows Cairo variant
+ due to missing VIDEO support.
+
+ * WebCore.vcproj/WebCore.vcproj: Exclude RenderMediaControls for
+ the Cairo-based Windows target.
+ * rendering/RenderThemeWin.cpp: Avoid #include of RenderMediaControls
+ for non-VIDEO builds.
+
+2009-05-22 David Kilzer <ddkilzer@apple.com>
+
+ One <limits> is enough
+
+ * html/HTMLMediaElement.cpp: Removed duplicate #include <limits>.
+
+2009-05-22 Jon Honeycutt <jhoneycutt@apple.com>
+
+ <rdar://problem/6915957> REGRESSION: Hang when leaving page with VLC
+ plug-in
+
+ Reviewed by Steve Falkenburg.
+
+ * plugins/win/PluginPackageWin.cpp:
+ (WebCore::PluginPackage::determineQuirks):
+ Look for the VLC plug-in's new name.
+
+2009-05-22 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25966
+
+ Remove redudant member from Chromium's ResourceRequest. We already
+ have this data in the cross-platform ResourceRequestBase. Also, rename
+ ChromiumBridge parameter to be consistant with the new name for this
+ piece of data.
+
+ * platform/chromium/ChromiumBridge.h:
+ * platform/network/chromium/ResourceRequest.h:
+
+2009-05-22 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Only account for overhang for multi-character strings.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25961
+
+ * platform/wx/wxcode/win/fontprops.cpp:
+ (GetTextExtent):
+
+2009-05-22 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix. Switch to CURL cookies so we can benefit from API updates.
+
+ * platform/wx/TemporaryLinkStubs.cpp:
+ * webcore-wx.bkl:
+
+2009-05-22 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25709 part one
+ Indent contents of namespaces in header files, to comply with the
+ style guide. No functional change.
+
+ * platform/image-decoders/ImageDecoder.h:
+ (WebCore::RGBA32Buffer::):
+ (WebCore::RGBA32Buffer::RGBA32Buffer):
+ (WebCore::RGBA32Buffer::clear):
+ (WebCore::RGBA32Buffer::bytes):
+ (WebCore::RGBA32Buffer::rect):
+ (WebCore::RGBA32Buffer::height):
+ (WebCore::RGBA32Buffer::status):
+ (WebCore::RGBA32Buffer::duration):
+ (WebCore::RGBA32Buffer::disposalMethod):
+ (WebCore::RGBA32Buffer::hasAlpha):
+ (WebCore::RGBA32Buffer::setRect):
+ (WebCore::RGBA32Buffer::ensureHeight):
+ (WebCore::RGBA32Buffer::setStatus):
+ (WebCore::RGBA32Buffer::setDuration):
+ (WebCore::RGBA32Buffer::setDisposalMethod):
+ (WebCore::RGBA32Buffer::setHasAlpha):
+ (WebCore::RGBA32Buffer::setRGBA):
+ (WebCore::ImageDecoder::m_failed):
+ (WebCore::ImageDecoder::~ImageDecoder):
+ (WebCore::ImageDecoder::setData):
+ (WebCore::ImageDecoder::size):
+ (WebCore::ImageDecoder::frameCount):
+ (WebCore::ImageDecoder::repetitionCount):
+ (WebCore::ImageDecoder::supportsAlpha):
+ (WebCore::ImageDecoder::failed):
+ (WebCore::ImageDecoder::setFailed):
+ (WebCore::ImageDecoder::clearFrameBufferCache):
+ * platform/image-decoders/bmp/BMPImageDecoder.h:
+ (WebCore::BMPImageDecoder::filenameExtension):
+ * platform/image-decoders/gif/GIFImageDecoder.h:
+ (WebCore::GIFImageDecoder::filenameExtension):
+ (WebCore::GIFImageDecoder::frameDurationAtIndex):
+ (WebCore::GIFImageDecoder::):
+ * platform/image-decoders/ico/ICOImageDecoder.h:
+ (WebCore::ICOImageDecoder::filenameExtension):
+ * platform/image-decoders/jpeg/JPEGImageDecoder.h:
+ (WebCore::JPEGImageDecoder::filenameExtension):
+ (WebCore::JPEGImageDecoder::supportsAlpha):
+ (WebCore::JPEGImageDecoder::reader):
+ (WebCore::JPEGImageDecoder::setSize):
+ * platform/image-decoders/png/PNGImageDecoder.h:
+ (WebCore::PNGImageDecoder::filenameExtension):
+ (WebCore::PNGImageDecoder::reader):
+ (WebCore::PNGImageDecoder::decodingFailed):
+ * platform/image-decoders/xbm/XBMImageDecoder.h:
+ (WebCore::XBMImageDecoder::filenameExtension):
+
+2009-05-22 Dominik Röttsches <dominik.roettsches@access-company.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15914
+ [GTK] Implement Unicode functionality using GLib
+
+ Minor changes that allow building a hybrid version of WebKit
+ that has WTF Unicode backend based on GLib functions while
+ text codecs and TextBreakIterator remain based on ICU.
+
+ Fixed some includes that were assuming a WTF ICU backend and
+ introduced temporary usage of WTF_USE_GLIB_ICU_UNICODE_HYBRID
+ macro.
+
+ * platform/ThreadGlobalData.cpp:
+ (WebCore::ThreadGlobalData::ThreadGlobalData):
+ (WebCore::ThreadGlobalData::~ThreadGlobalData):
+ * platform/ThreadGlobalData.h:
+ * platform/text/TextBoundariesICU.cpp:
+ * platform/text/TextCodecICU.h:
+ * platform/text/TextEncoding.cpp:
+ (WebCore::TextEncoding::encode):
+ * platform/text/TextEncodingRegistry.cpp:
+ (WebCore::buildBaseTextCodecMaps):
+ (WebCore::extendTextCodecMaps):
+
+2009-05-22 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25955
+
+ Remove the policyBaseURL parameter from setCookie. This parameter is
+ redundant with the document parameter.
+
+ * WebCore.base.exp:
+ * WebCore.order:
+ * dom/Document.cpp:
+ (WebCore::Document::setCookie):
+ * platform/CookieJar.h:
+ * platform/mac/CookieJar.mm:
+ (WebCore::setCookies):
+ * platform/network/chromium/CookieJarChromium.cpp:
+ (WebCore::setCookies):
+ * platform/network/curl/CookieJarCurl.cpp:
+ (WebCore::setCookies):
+ * platform/network/soup/CookieJarSoup.cpp:
+ (WebCore::setCookies):
+ * platform/network/win/CookieJarCFNetWin.cpp:
+ (WebCore::setCookies):
+ * platform/network/win/CookieJarWin.cpp:
+ (WebCore::setCookies):
+ * platform/qt/CookieJarQt.cpp:
+ (WebCore::setCookies):
+
+2009-05-22 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25955
+
+ Rename policyBaseURL and mainDocumentURL to firstPartyForCookies. The
+ previous names were confusing and inaccurate.
+
+ * WebCore.order:
+ * dom/Document.cpp:
+ (WebCore::Document::setCookie):
+ * dom/Document.h:
+ (WebCore::Document::firstPartyForCookies):
+ (WebCore::Document::setFirstPartyForCookies):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::begin):
+ (WebCore::FrameLoader::updateFirstPartyForCookies):
+ (WebCore::FrameLoader::setFirstPartyForCookies):
+ (WebCore::FrameLoader::open):
+ (WebCore::FrameLoader::addExtraFieldsToRequest):
+ (WebCore::FrameLoader::loadResourceSynchronously):
+ * loader/FrameLoader.h:
+ * loader/MainResourceLoader.cpp:
+ (WebCore::MainResourceLoader::willSendRequest):
+ (WebCore::ResourceRequestBase::adopt):
+ (WebCore::ResourceRequestBase::copyData):
+ (WebCore::ResourceRequestBase::firstPartyForCookies):
+ (WebCore::ResourceRequestBase::setFirstPartyForCookies):
+ (WebCore::equalIgnoringHeaderFields):
+ * platform/network/ResourceRequestBase.h:
+ * platform/network/cf/ResourceRequestCFNet.cpp:
+ (WebCore::ResourceRequest::doUpdatePlatformRequest):
+ (WebCore::ResourceRequest::doUpdateResourceRequest):
+ * platform/network/chromium/CookieJarChromium.cpp:
+ (WebCore::setCookies):
+ * platform/network/mac/ResourceRequestMac.mm:
+ (WebCore::ResourceRequest::doUpdateResourceRequest):
+ (WebCore::ResourceRequest::doUpdatePlatformRequest):
+ * platform/network/ResourceRequestBase.cpp:
+ (WebCore::ResourceRequestBase::firstPartyForCookies):
+ (WebCore::ResourceRequestBase::setFirstPartyForCookies):
+ * platform/network/chromium/CookieJarChromium.cpp:
+ (WebCore::setCookies):
+ * platform/network/curl/CookieJarCurl.cpp:
+ (WebCore::setCookies):
+ * platform/network/soup/CookieJarSoup.cpp:
+ (WebCore::setCookies):
+ * platform/network/win/CookieJarCFNetWin.cpp:
+ (WebCore::setCookies):
+ * platform/network/win/CookieJarWin.cpp:
+ (WebCore::setCookies):
+ * platform/qt/CookieJarQt.cpp:
+ (WebCore::setCookies):
+
+2009-05-22 Pavel Feldman <pfeldman@chromium.org>
+
+ Fix the call to editingCancelled to be this._editingCancelled, since
+ editingCancelled doesn't exist and throws an exception.
+
+ <https://bugs.webkit.org/show_bug.cgi?id=24881>
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/front-end/ElementsTreeOutline.js:
+ (WebInspector.ElementsTreeElement.prototype._attributeEditingCommitted):
+
+2009-05-22 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25928
+ Several errors detected by cppcheck
+
+ Fix all (the only one) problem in cross-platform code found by the tool. Port maintainers
+ should take a look at other reports.
+
+ * css/CSSParser.cpp: (WebCore::CSSParser::addProperty): Don't leak the property even if there
+ are billions of those.
+
+2009-05-22 Shinichiro Hamaji <hamaji@google.com>
+
+ Reviewed by Oliver Hunt.
+
+ Remove optimization path alpha=0 case from GraphicContext(CG|Skia).
+ This optimization doesn't make sense for some composite mode (e.g., 'copy' operation).
+
+ https://bugs.webkit.org/show_bug.cgi?id=25956
+
+ * platform/graphics/cg/GraphicsContextCG.cpp:
+ (WebCore::GraphicsContext::drawRect):
+ (WebCore::GraphicsContext::drawLine):
+ (WebCore::GraphicsContext::strokeArc):
+ (WebCore::GraphicsContext::drawConvexPolygon):
+ (WebCore::GraphicsContext::fillPath):
+ (WebCore::GraphicsContext::strokePath):
+ (WebCore::GraphicsContext::fillRect):
+ (WebCore::GraphicsContext::fillRoundedRect):
+ (WebCore::GraphicsContext::strokeRect):
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::drawConvexPolygon):
+ (WebCore::GraphicsContext::drawEllipse):
+ (WebCore::GraphicsContext::fillPath):
+ (WebCore::GraphicsContext::fillRect):
+ (WebCore::GraphicsContext::strokePath):
+ (WebCore::GraphicsContext::strokeRect):
+
+2009-05-22 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed build fix.
+
+ Revert the whole thing, since we can't figure out a way to make it
+ work in all platforms.
+
+ * rendering/SVGInlineTextBox.cpp:
+ (WebCore::pathForDecoration):
+ * svg/SVGLength.cpp:
+ (WebCore::SVGLength::PercentageOfViewport):
+
+2009-05-22 Xan Lopez <xlopez@igalia.com>
+
+ Try to fix Windows build.
+
+ Apparently it can't tell if '1.0f' is float or double, so cast to
+ float.
+
+ * rendering/SVGInlineTextBox.cpp:
+ (WebCore::pathForDecoration):
+
+2009-05-22 Xan Lopez <xlopez@igalia.com>
+
+ Try to fix breakage from the previous patch.
+
+ * rendering/SVGInlineTextBox.cpp:
+ (WebCore::pathForDecoration):
+ * svg/SVGLength.cpp:
+ (WebCore::SVGLength::PercentageOfViewport):
+
+2009-05-15 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25805
+ In debug build, mingw win32 build has problems with powf
+
+ Change C-style calls to powf and sqrtf to C++-style calls to
+ overloaded pow and sqrt. This solves also a problem with mingw
+ compiler during the debug build.
+
+ * rendering/SVGInlineTextBox.cpp:
+ (WebCore::pathForDecoration):
+ * svg/SVGLength.cpp:
+ (WebCore::SVGLength::PercentageOfViewport):
+
+2009-05-21 Stephanie Lewis <slewis@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ <rdar://problem/6913680> Update image caching options.
+ Disable extra ImageIO cache because we already handle caching decoded image data.
+
+ * platform/graphics/cg/ImageSourceCG.cpp:
+ (WebCore::imageSourceOptions):
+
+2009-05-21 Albert J. Wong <ajwong@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Bug 25903: Create a default UI theme for media controls in Chromium.
+ https://bugs.webkit.org/show_bug.cgi?id=25903
+
+ Implement a default UI for chromium. Add a style sheet for Chromium
+ media controls with good defaults and implemented basic draw functions
+ for play/pause & mute buttons.
+
+ * css/mediaControlsChromium.css: Added.
+ * rendering/RenderThemeChromiumLinux.cpp:
+ (WebCore::RenderThemeChromiumWin::extraMediaControlsStyleSheet): Export
+ our custom media controls style sheet.
+ (WebCore::RenderThemeChromiumLinux::paintMediaButtonInternal): Paint
+ buttons respecting chromium media controls color scheme.
+ (WebCore::RenderThemeChromiumLinux::paintMediaPlayButton): Paint logic
+ specific to play/pause button.
+ (WebCore::RenderThemeChromiumLinux::paintMediaMuteButton): Paint
+ specific to mute button.
+ * rendering/RenderThemeChromiumLinux.h: Appropriate header changes.
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::RenderThemeChromiumWin::extraMediaControlsStyleSheet): Export
+ our custom media controls style sheet.
+ (WebCore::RenderThemeChromiumWin::paintMediaButtonInternal): Paint
+ buttons respecting chromium media controls color scheme.
+ (WebCore::RenderThemeChromiumWin::paintMediaPlayButton): Paint logic
+ specific to play/pause button.
+ (WebCore::RenderThemeChromiumWin::paintMediaMuteButton): Paint specific
+ to mute button.
+ (WebCore::RenderThemeChromiumWin::setDefaultFontSize): Appropriate
+ header changes.
+ * rendering/RenderThemeChromiumWin.h:
+
+2009-05-21 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ When stripping the query from a file:// URL, do not leave a trailing question mark.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25940
+
+ * platform/network/curl/ResourceHandleManager.cpp:
+ (WebCore::ResourceHandleManager::initializeHandle):
+
+2009-05-21 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Notify ImageObserver::didDraw to help the cache purge alive resources.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25942
+
+ * platform/graphics/wx/ImageWx.cpp:
+ (WebCore::BitmapImage::draw):
+ (WebCore::BitmapImage::drawPattern):
+
+2009-05-21 Evan Martin <evan@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Flesh out font fallback for Chromium's Skia port.
+ getLastResortFallbackFont should fall back on well-known fonts.
+ https://bugs.webkit.org/show_bug.cgi?id=25860
+
+ * platform/graphics/chromium/FontCacheLinux.cpp:
+ (WebCore::FontCache::getLastResortFallbackFont): try known font names.
+
+2009-05-21 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - speculative fix for <rdar://problem/6890716> crash at
+ FontCache::purgeInactiveFontData + 199
+
+ * platform/graphics/FontCache.cpp:
+ (WebCore::FontCache::purgeInactiveFontData): Deleting a SimpleFontData
+ can cause releaseFontData() to be called, which modifies
+ gInactiveFontData. Therefore, avoid deleting SimpleFontData instances
+ while iterating over gInactiveFontData and delete them afterwards.
+
+2009-05-21 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Test for <rdar://problem/6910832> | https://bugs.webkit.org/show_bug.cgi?id=25907
+ Incorrect URL returned to the DOM while the user drags a file
+
+ * page/DragController.cpp:
+ (WebCore::DragController::dragExited):
+ (WebCore::DragController::tryDHTMLDrag): Don't base our decision on KURL,
+ since that only looks at the text of the document's URL. Do base our
+ decision on the securityOrigin(), which knows more about the document's
+ actual origin.
+
+2009-05-21 Dan Bernstein <mitz@apple.com>
+
+ Rubber-stamped by Mark Rowe.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=25947
+ Assertion failure in FrameLoader::transitionToCommitted on launch in
+ Safari with r43985
+
+ Rolled out r43979.
+
+ * platform/MIMETypeRegistry.cpp:
+ (WebCore::initializeSupportedNonImageMimeTypes):
+ (WebCore::MIMETypeRegistry::isSupportedNonImageMIMEType):
+
+2009-05-21 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Brady Eidson and Mark Rowe.
+
+ Fix for <rdar://problem/6901522>
+ REGRESSION: Office 2008: Preview with browser is not shown, and Finder window is in the front of Safari
+
+ If the NSURLRequest is annotated with a "ForceHTMLMIMEType" property, force
+ the MIME type to be text/html.
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
+
+2009-05-21 Kevin Ollivier <kevino@theolliviers.com>
+
+ Blind windows fix after last commit.
+
+ * platform/Logging.cpp:
+ (WebCore::getChannelFromName):
+
+2009-05-21 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Use an environment variable to control which logs are on and off.
+ Also, make a generic function for translating channel name to its log.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25936
+
+ * platform/Logging.cpp:
+ (WebCore::getChannelFromName):
+ * platform/Logging.h:
+ * platform/wx/LoggingWx.cpp:
+ (WebCore::InitializeLoggingChannelsIfNecessary):
+
+2009-05-21 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Bug 25946: Chromium needs MIMETypeRegistry::getMediaMIMETypeForExtension implementation.
+ https://bugs.webkit.org/show_bug.cgi?id=25946
+
+ A very simple implementation to keep it working. A bug has been filed in the chromium db
+ (http://code.google.com/p/chromium/issues/detail?id=12441) to investigate doing something more
+ complete.
+
+ * platform/chromium/MimeTypeRegistryChromium.cpp:
+ (WebCore::MIMETypeRegistry::getMediaMIMETypeForExtension):
+
+2009-05-20 Siddhartha Chattopadhyaya <sidchat@google.com>
+
+ Reviewed by Justin Garcia.
+
+ Add automatic spell correction support in WebKit
+
+ https://bugs.webkit.org/show_bug.cgi?id=24953
+
+ * editing/Editor.cpp:
+ (WebCore::findFirstMisspellingInRange):
+ (WebCore::Editor::advanceToNextMisspelling):
+ (WebCore::Editor::markMisspellingsAfterTypingToPosition):
+ (WebCore::markAllMisspellingsInRange):
+ (WebCore::markMisspellingsOrBadGrammar):
+ (WebCore::Editor::markMisspellings):
+ (WebCore::Editor::markBadGrammar):
+ (WebCore::Editor::markMisspellingsAndBadGrammar):
+ * editing/Editor.h:
+ * loader/EmptyClients.h:
+ (WebCore::EmptyEditorClient::getAutoCorrectSuggestionForMisspelledWord):
+ * page/EditorClient.h:
+
+2009-05-21 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Darin Adler.
+
+ Text files which have sub MIME types are treated as not displayable
+ http://bugs.webkit.org/show_bug.cgi?id=24903
+
+ * platform/MIMETypeRegistry.cpp:
+ (WebCore::initializeSupportedNonImageMimeTypes):
+ (WebCore::MIMETypeRegistry::isSupportedNonImageMIMEType): Regard any
+ MIME type beginning with "text/" as supported and remove all "text/"
+ types from the list.
+
+2009-05-21 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by David Kilzer.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25890
+ Implement Network logging channel on Mac
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::~ResourceHandle):
+ (WebCore::ResourceHandle::start):
+ (WebCore::ResourceHandle::cancel):
+ (WebCore::ResourceHandle::setDefersLoading):
+ (-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]):
+ (-[WebCoreResourceHandleAsDelegate connectionShouldUseCredentialStorage:]):
+ (-[WebCoreResourceHandleAsDelegate connection:didReceiveAuthenticationChallenge:]):
+ (-[WebCoreResourceHandleAsDelegate connection:didCancelAuthenticationChallenge:]):
+ (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
+ (-[WebCoreResourceHandleAsDelegate connection:didReceiveData:lengthReceived:]):
+ (-[WebCoreResourceHandleAsDelegate connection:willStopBufferingData:]):
+ (-[WebCoreResourceHandleAsDelegate connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:]):
+ (-[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:]):
+ (-[WebCoreResourceHandleAsDelegate connection:didFailWithError:]):
+ (-[WebCoreResourceHandleAsDelegate connection:willCacheResponse:]):
+ Added logging for async requests (as these are most interesting).
+
+2009-05-21 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by David Kilzer.
+
+ <rdar://problem/6902197> WebCore doesn't know about all of the MIME types supported by QTKit
+
+ Add a static table to map from some common file extensions to their MIME types so it
+ is possible to detect support even when the platform mapping is incomplete. Use the
+ table to lookup types not found by UTI on the OSX, and when looking for a media engine
+ with a generic or missing type.
+
+ * platform/MIMETypeRegistry.cpp:
+ (WebCore::initializeMediaTypeMaps): New, initialize the mediaMIMETypeForExtensionMap.
+ (WebCore::MIMETypeRegistry::getMediaMIMETypeForExtension): New. Look for the specified
+ MIME type in the static mapping table if the platform specific getMIMETypeForExtension
+ doesn't find a match.
+ * platform/MIMETypeRegistry.h: Declare getMediaMIMETypeForExtension.
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::MediaPlayer::load): When the type passed is empty, "application/octet-stream", or
+ "text/plain", try to look it up based on the file extension with getMediaMIMETypeForExtension.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::addFileTypesToCache): See if getMediaMIMETypeForExtension can map from file extension
+ to MIME type if UTI fails.
+
+2009-05-21 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Clean up DragController
+ https://bugs.webkit.org/show_bug.cgi?id=25926
+
+ I renamed m_document to m_documentUnderMouse to better document what it does
+ I could call it m_lastDocumentUnderMouse to be most-accurate, but this seemed
+ long enough.
+
+ I also saw copy/paste code involving clearing the selection when moving out of
+ one document and into another. I moved that code into a function called
+ mouseMovedIntoDocument.
+
+ I also got rid of a couple needless null-checks after confirming via source
+ inspection they were not ever possible.
+ In Mac WebKit it's not possible to have a Page that doesn't have a mainFrame()
+ I left an ASSERT(m_page->mainFrame()) in case some other port ever violates this.
+ It's also not possible to return a document from documentAtPoint that is not
+ in a frame (as such a document would not be rendered).
+
+ No functional changes, thus no tests.
+
+ * page/DragController.cpp:
+ (WebCore::DragController::DragController):
+ (WebCore::DragController::dragIsMove):
+ (WebCore::DragController::dragExited):
+ (WebCore::DragController::performDrag):
+ (WebCore::DragController::mouseMovedIntoDocument):
+ (WebCore::DragController::dragEnteredOrUpdated):
+ (WebCore::DragController::tryDocumentDrag):
+ (WebCore::DragController::operationForLoad):
+ (WebCore::DragController::concludeEditDrag):
+ (WebCore::DragController::canProcessDrag):
+ (WebCore::DragController::tryDHTMLDrag):
+ (WebCore::DragController::placeDragCaret):
+ * page/DragController.h:
+ (WebCore::DragController::documentUnderMouse):
+
+2009-05-21 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Rename DragController::dragOperation() to sourceDragOperation() for clarity
+ Remove unused setDragOperation()
+
+ There are two times DragOperation is used. The source specifies
+ what drag operations it supports (in a mask) and the destination
+ picks a subset of those as DragOperations it supports if a drop were
+ to occur. I was confused when I first saw this accessor as to which
+ it meant. It turns out that this is only used when WebKit starts a
+ drag, and we keep it around so that we can provide this information
+ to other Mac OS X applications when they ask. I've renamed the method
+ for clarity so the next person in this code will be less confused.
+
+ No functional changes, thus no tests.
+
+ * page/DragController.h:
+ (WebCore::DragController::sourceDragOperation):
+
+2009-05-21 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ - WebCore part of <rdar://problem/6901751> REGRESSION (r35515): Tiger
+ crash painting the selection on registration page of car2go.com
+
+ A bug in old versions of Core Graphics causes memory corruption to occur
+ when clipping under certain conditions. Make the clipping functions
+ fail silently under those conditions.
+
+ Test: fast/block/float/selection-gap-clip-out-tiger-crash.html
+
+ * WebCore.Tiger.exp: Added wkCGContextIsSafeToClip
+ * platform/graphics/cg/GraphicsContextCG.cpp:
+ (WebCore::safeCGContextClip): Added a wrapper around CGContextClip that,
+ on Tiger, bails out if wkCGContextIsSafeToClip() returns false.
+ (WebCore::safeCGContextEOClip): Ditto for CGContextEOClip.
+ (WebCore::safeCGContextClipToRect): Ditto for CGContextClipToRect.
+ (WebCore::GraphicsContext::fillPath): Changed to call the safe variants
+ of CGContextClip, CGContextEOClip and CGContextClipToRect.
+ (WebCore::GraphicsContext::strokePath): Ditto.
+ (WebCore::GraphicsContext::fillRect): Ditto.
+ (WebCore::GraphicsContext::clip): Ditto.
+ (WebCore::GraphicsContext::clipOut): Ditto.
+ (WebCore::GraphicsContext::clipOutEllipseInRect): Ditto.
+ (WebCore::GraphicsContext::clipPath): Ditto.
+ (WebCore::GraphicsContext::addInnerRoundedRectClip): Ditto.
+ (WebCore::GraphicsContext::strokeRect): Ditto.
+ * platform/mac/WebCoreSystemInterface.h: Added wkCGContextIsSafeToClip.
+ * platform/mac/WebCoreSystemInterface.mm: Added wkCGContextIsSafeToClip.
+
+2009-05-21 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25910
+ WebkitGTK r43960 cannot compile
+
+ Do not include local copy of guriescape header, which was
+ removed. We now use the copy in glib.
+
+ * platform/gtk/FileSystemGtk.cpp:
+
+2009-05-20 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25706
+
+ It turns out the CurrentContext wasn't currect either because it gave
+ us the frame for the write() function itself. We actually want the
+ *calling* context.
+
+ * bindings/v8/custom/V8HTMLDocumentCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-05-20 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Implement Image::loadPlatformResource.
+
+ Install the four resources we are using. For the icons
+ where an icon name is specified by freedeskop.org try to
+ map the WebCore name to that name and fallback to the
+ internal icon. For everything else use the internal icon
+ name. Remove the temporary link stub as this is not
+ required any more.
+
+ * GNUmakefile.am: Install the png files, set DATA_DIR again
+ * Resources/panIcon.png: Copied from WebKit/win/WebKit.vcproj/panIcon.png.
+ * platform/graphics/gtk/ImageGtk.cpp:
+ (WTF::GtkIconInfo): Add template specialization for GtkIconInfo
+ (WebCore::getIconFileNameOrFallback): Use GtkIconTheme to get the icon
+ (WebCore::loadResourceIntoSharedBuffer):
+ (WebCore::Image::loadPlatformResource): Implement
+ * platform/gtk/TemporaryLinkStubs.cpp: Remove link stub
+
+2009-05-20 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19357
+
+ [GTK] The Gtk+ port wants to have a themable
+ urlIcon too.
+
+ * loader/icon/IconDatabase.cpp:
+
+2009-05-20 Stephanie Lewis <slewis@apple.com>
+
+ Update the order files. <rdar://problem/6881750> Generate new order files.
+
+ * WebCore.order:
+
+2009-05-20 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Fix some assertion failures in plug-in tests on the Windows debug build bot.
+
+ * plugins/PluginStream.cpp:
+ (WebCore::PluginStream::startStream): Switch to using protocolIsJavaScript.
+ * plugins/PluginView.cpp:
+ (WebCore::scriptStringIfJavaScriptURL): Ditto.
+
+2009-05-20 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ More protocolInHTTPFamily() cleanup.
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::send):
+
+2009-05-20 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for <rdar://problem/6905475>
+ Office 2008: Entourage: Crash when you switch to "My Day" view
+
+ The host function callback callObjCFallbackObject was not annotated
+ with JSC_HOST_CALL which meant that when it was called by the JIT, which
+ expects the JSC_HOST_CALL calling convention, the arguments are not in the
+ expected places.
+
+ * bridge/objc/objc_runtime.mm:
+ (JSC::Bindings::callObjCFallbackObject): Added missing JSC_HOST_CALL
+ annotation on callObjCFallbackObject.
+
+2009-05-20 David Levin <levin@chromium.org>
+
+ Not Reviewed, build fix.
+
+ Need to disable this assert while the chormium code is fixed for it.
+
+ * platform/KURLGoogle.cpp:
+ (WebCore::KURL::protocolIs):
+
+2009-05-20 David Levin <levin@chromium.org>
+
+ Not Reviewed, build fix.
+
+ Change KURLGoogle.cpp to mirror the KURL.cpp changes done in
+ http://trac.webkit.org/changeset/43929. Fix assert placement.
+
+ * platform/KURLGoogle.cpp:
+ (WebCore::KURL::protocolIs):
+ (WebCore::protocolIs):
+
+2009-05-20 Nate Chapin <japhet@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ Upstream V8 bindings for V8DomWindow.
+ https://bugs.webkit.org/show_bug.cgi?id=25869
+
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ (WebCore::V8Custom::WindowSetTimeoutImpl): Moved from v8_custom.cpp.
+ (WebCore::isAscii): Moved from v8_custom.cpp.
+ (WebCore::convertBase64): Moved from v8_custom.cpp.
+ (WebCore::CALLBACK_FUNC_DECL): Moved from v8_custom.cpp.
+ (WebCore::eventNameFromAttributeName): Moved from v8_custom.cpp.
+ (WebCore::ACCESSOR_SETTER): Moved from v8_custom.cpp.
+ (WebCore::ACCESSOR_GETTER): Moved from v8_custom.cpp.
+ (WebCore::NAMED_ACCESS_CHECK): Moved from v8_custom.cpp.
+ (WebCore::INDEXED_ACCESS_CHECK): Moved from v8_custom.cpp.
+
+2009-05-21 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Jan Alonzo.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::parseDataUrl): Always use Glib Base64 decoding.
+
+2009-05-21 Christian Dywan <christian@twotoasts.de>
+
+ Rubberstamped by Gustavo Noronha.
+
+ * platform/network/curl/ResourceHandleManager.cpp:
+ (WebCore::parseDataUrl): Remove Gtk/ Glib Base64 decoding.
+
+2009-05-20 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha.
+
+ * GNUmakefile.am:
+ * platform/gtk/guriescape.c:
+ * platform/gtk/guriescape.h: Remove copies of g_uri_escape_string and
+ g_uri_unescape_string now that we require Glib 2.16.
+
+2009-05-20 David Levin <levin@chromium.org>
+
+ Not Reviewed, build fix.
+
+ Change KURLGoogle.cpp to mirror the KURL.cpp changes done in
+ http://trac.webkit.org/changeset/43929.
+
+ * platform/KURLGoogle.cpp:
+ (WebCore::protocolIsJavaScript):
+ (WebCore::protocolIs):
+
+2009-05-20 Brady Eidson <beidson@apple.com>
+
+ Rubberstamped by Sam Weinig
+
+ At all call sites that check if a KURL has either the http or https protocol,
+ use the KURL::protocolInHTTPFamily() accessor, instead.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::iconURL):
+ (WebCore::FrameLoader::didOpenURL):
+ (WebCore::FrameLoader::open):
+
+ * loader/appcache/ApplicationCache.cpp:
+ (WebCore::ApplicationCache::requestIsHTTPOrHTTPSGet):
+
+ * loader/loader.cpp:
+ (WebCore::Loader::load):
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::send):
+
+2009-05-20 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix <rdar://problem/6904941> and https://bugs.webkit.org/show_bug.cgi?id=25300
+
+ KURL parsing changes back in r30243 and r30815 made javascript urls that use the form
+ "javascript://" be detected as invalid hierarchical URLs. When a KURL is marked as
+ invalid, you can no longer ask it a question such as "is your protocol javascript?"
+ Therefore FrameLoader wouldn't recognize them as javascript URLs and instead try to
+ navigate to them.
+
+ URL parsing rules aside, such URLs are in use in the wild (Microsoft's Virtual Earth
+ being a high profile example) and actually represent valid javascript.
+
+ Whenever checking for javascript urls, the new protocolIsJavaScript() should be used
+ as it functions on a String which doesn't have to pass KURLs parsing rules.
+
+ Test: fast/loader/javascript-url-hierarchical-execution.html
+
+ * bindings/js/JSAttrCustom.cpp:
+ (WebCore::JSAttr::setValue): Use protocolIsJavaScript().
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::setLocation): Ditto.
+ (WebCore::createWindow): Ditto.
+ (WebCore::JSDOMWindow::open): Ditto.
+ * bindings/js/JSElementCustom.cpp:
+ (WebCore::allowSettingSrcToJavascriptURL): Ditto.
+ * bindings/js/JSHTMLFrameElementCustom.cpp:
+ (WebCore::allowSettingJavascriptURL): Ditto.
+ * bindings/js/JSHTMLIFrameElementCustom.cpp:
+ (WebCore::JSHTMLIFrameElement::setSrc): Ditto.
+ * bindings/js/JSLocationCustom.cpp:
+ (WebCore::navigateIfAllowed): Ditto.
+ (WebCore::JSLocation::reload): Ditto.
+ * editing/markup.cpp:
+ (WebCore::appendQuotedURLAttributeValue): Ditto.
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::parseMappedAttribute): Ditto.
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::requestFrame): Ditto.
+ (WebCore::FrameLoader::submitForm): Ditto.
+ (WebCore::FrameLoader::executeIfJavaScriptURL): Ditto.
+
+ * platform/KURL.cpp:
+ (WebCore::KURL::init): Use protocolIsJavaScript().
+ (WebCore::KURL::protocolIs): ASSERT that the protocol being asked about is not javascript.
+ Such checks should go through protocolIsJavaScript() instead.
+ (WebCore::encodeRelativeString): Use protocolIsJavaScript().
+ (WebCore::protocolIsJavaScript):
+ * platform/KURL.h:
2009-05-20 Holger Hans Peter Freyther <zecke@selfish.org>
@@ -37,16 +5990,947 @@
* plugins/qt/PluginPackageQt.cpp:
(WebCore::PluginPackage::load): Fix assignment
-2009-05-11 Yael Aharon <yael.aharon@nokia.com>
+2009-05-20 Sam Weinig <sam@webkit.org>
- Reviewed by Holger Freyther.
+ Reviewed by Timothy Hatcher.
- Change Qt port to match the mac and windows ports, and unregister plugins when plugins are stopped.
- Not doing that can cause assersion failure.
- https://bugs.webkit.org/show_bug.cgi?id=25702
+ Make absoluteRectsForRange and absoluteQuadsForRange non-virtual
+ and only exist on RenderText.
+
+ * dom/Range.cpp:
+ (WebCore::Range::textRects):
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::drawNodeHighlight): Use absoluteQuads instead
+ of absoluteQuadsForRange since no range is being specifiec.
+ * rendering/RenderObject.cpp:
+ * rendering/RenderObject.h:
+ * rendering/RenderText.h:
+
+2009-05-20 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Implement AtkObject::focus-event and
+ AtkObject::state-changed:focused signal emission.
+
+ Adds a new handleFocusedUIElementChangedWithRenderers, only in the
+ GTK port, called at the same point than
+ handleFocusedUIElementChanged but with two parameters, the old and
+ the newly focused RenderObjects. We need this, since the ATK
+ signals require us to pass the objects involved in the focus
+ change as arguments.
+
+ * accessibility/AXObjectCache.h:
+ * accessibility/gtk/AXObjectCacheAtk.cpp:
+ (WebCore::AXObjectCache::handleFocusedUIElementChangedWithRenderers):
+ * dom/Document.cpp:
+ (WebCore::Document::setFocusedNode):
+
+2009-05-20 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25834
+
+ Make ChromeClient a interface again
+
+ With recent additions to ChromeClient.h empty defaults were
+ added. This is bad for porters as these changes go unnoticed
+ and at runtime no notImplemented warning is logged and grepping
+ for notImplemented will not show anything. Change this Client
+ to be like the other Clients again and always have pure virtuals
+ (but for stuff inside #ifdef PLATFORM(MAC)).
+
+ Update the various WebKit/* implementations to compile again.
+
+ * loader/EmptyClients.h: Add empty defaults
+ (WebCore::EmptyChromeClient::setCursor):
+ (WebCore::EmptyChromeClient::scrollRectIntoView):
+ (WebCore::EmptyChromeClient::requestGeolocationPermissionForFrame):
+ * page/ChromeClient.h: Make methods pure virtual
+
+2009-05-19 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Simon Hausmann.
+
+ Fix a bug where a non visible plugin would show it self in a
+ sibling frame. The problem was due to our clipping. In Qt,
+ if setMask is set with an empty QRegion, no clipping will
+ be performed, so in that case we hide the PluginContainer
+
+ Added manual test.
+
+ * plugins/qt/PluginContainerQt.cpp:
+ (PluginContainerQt::adjustGeometry):
+ * manual-tests/qt/plugin-sibling-frame-include.html
+ * manual-tests/qt/plugin-sibling-frame.html
+
+2009-05-19 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Simon Hausmann.
+
+ Do not call the parent implementation (Widget::) in show() and hide()
+ of the PluginViewQt, as it always changes the visible state of the
+ platformWidget (equal to the platformPluginWidget in the Qt port),
+ thus ignoring the isParentVisible() test.
* plugins/qt/PluginViewQt.cpp:
- (WebCore::PluginView::stop):
+ (WebCore::PluginView::show):
+ (WebCore::PluginView::hide):
+
+2009-05-20 Yichao Yin <yichao.yin@torchmobile.com.cn>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23452
+ Change the implementation of HTMLNoScriptElement to avoid the pain of
+ adding virtual function for XHTMLMP support
+
+ Includes changes suggested by Simon Fraser.
+
+ * dom/Node.cpp:
+ (WebCore::Node::styleForRenderer):
+ * dom/Node.h:
+ * html/HTMLNoScriptElement.cpp:
+ * html/HTMLNoScriptElement.h:
+
+2009-05-20 Kevin Ollivier <kevino@theolliviers.com>
+
+ CURL backend build fix. Make sure URL is always set.
+
+ * platform/network/curl/ResourceHandleManager.cpp:
+ (WebCore::ResourceHandleManager::downloadTimerCallback):
+
+2009-05-20 Yongjun Zhang <yongjun.zhang@nokia.com>
+
+ Reviewed by George Staikos.
+
+ Fix Qt WebKit build break in Mac OS.
+
+ * platform/FileSystem.h:
+
+2009-05-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Eric Seidel.
+
+ Enable code that was commented out waiting for a way to get a
+ GdkPixbuf from an image, effectively enabling copying images to
+ the clipboard.
+
+ * platform/gtk/PasteboardGtk.cpp:
+ (WebCore::Pasteboard::writeImage):
+
+2009-05-20 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25414
+ [GTK] ROLE_PANEL should not be used for paragraphs and list items.
+
+ Implement Atk list item role for list items.
+
+ * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
+ (webkit_accessible_get_role):
+
+2009-05-20 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25414
+ [GTK] ROLE_PANEL should not be used for paragraphs and list items.
+
+ Implement Atk paragraph role for paragraph elements.
+
+ * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
+ (webkit_accessible_get_role):
+
+2009-05-20 Eric Seidel <eric@webkit.org>
+
+ Fix bug URL in ChangeLogs in r43903.
+ https://bugs.webkit.org/show_bug.cgi?id=25742
+
+2009-05-20 Takeshi Yoshino <tyoshino@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Bug 24539: Fix RenderThemeChromiumWin::paintTextFieldInternal() not to hide background image.
+ https://bugs.webkit.org/show_bug.cgi?id=25742
+
+ Fix RenderThemeChromiumWin::paintTextFieldInternal().
+
+ We shouldn't paint the content area of text fields when o->style() has
+ background image or transparent background color. paintTextFieldInternal() is
+ used for painting inner area of HTML option elements by Chromium.
+
+ When we pass fillContentArea = true to ChromiumBridge::paintTextField, it hides
+ the background image rendered by RenderBoxModelObject. So, we should set
+ fillContentArea = false in such case.
+
+ Besides, when background-color:transparent is specified for CSS property,
+ o->style().backgroundColor returns black color with alpha channel == 0. But
+ since ThemeEngine for Windows behind ChromiumBridge::paintTextField cannot
+ recognize alpha channel, it fills the rect with black. I made workaround to set
+ fillContentArea = false when alpha channel == 0 to avoid this.
+
+ And more, I'd like to fallback the color passed to ChromiumBridge to white when
+ o->style()->backgroundColor() is invalid.
+
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::RenderThemeChromiumWin::paintTextFieldInternal):
+
+2009-05-20 Shinichiro Hamaji <hamaji@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25417
+ Map CompositeCopy to Skia's kSrc_Mode composite operation.
+
+ Test: fast/canvas/canvas-composite-alpha.html
+
+ * platform/graphics/skia/SkiaUtils.cpp:
+ (WebCore::):
+
+2009-05-20 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Rubber-stamped by Xan Lopez.
+
+ Remove misplaced extern "C"
+
+ * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-05-20 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Expose password field with role of PASSWORD_TEXT
+ https://bugs.webkit.org/show_bug.cgi?id=25682
+
+ Check if input type is a password field and return
+ ATK_ROLE_PASSWORD_TEXT if it is.
+
+ * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-05-20 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by George Staikos.
+
+ BUG 25845: [Qt] Fix QtWebKit pkgconfig dependencies
+ <https://bugs.webkit.org/show_bug.cgi?id=25845>
+
+ * WebCore.pro: Remove QtDBus; remove QtXml if Qt >= 4.4
+
+2009-05-20 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by George Staikos.
+
+ BUG 25843: [Qt] Remove qt-port build flag
+ <https://bugs.webkit.org/show_bug.cgi?id=25843>
+
+ * bridge/testbindings.pro:
+
+2009-05-20 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25824
+
+ [Qt] Cleanup - move files exclusive to JAVASCRIPT_DEBUGGER
+ and WORKERS under the appropriate build section
+
+ * WebCore.pro:
+
+2009-05-20 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Unreviewed Qt build fix, after r43892.
+
+ * platform/graphics/qt/ImageQt.cpp: included ImageObservser.h
+
+2009-05-20 Yongjun Zhang <yongjun.zhang@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25856
+ [Qt] notify an image has been drawn, to help Cache purge alive decoded data.
+
+ * platform/graphics/qt/ImageQt.cpp:
+ (WebCore::Image::drawPattern):
+ (WebCore::BitmapImage::draw):
+
+2009-05-20 David Levin <levin@chromium.org>
+
+ Reviewed by NOBODY, layout tests fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23727
+ This reverts commit r43888.
+
+ Once that change was checked in many of the fast/flexbox0*.html
+ tests (and others) started failing.
+
+ * WebCore.pro:
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseValue):
+ * css/CSSPropertyNames.in:
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::applyProperty):
+ * css/CSSValueKeywords.in:
+ * rendering/RenderMarquee.cpp:
+ (WebCore::RenderMarquee::updateMarqueePosition):
+ (WebCore::RenderMarquee::timerFired):
+
+2009-05-19 Yichao Yin <yichao.yin@torchmobile.com.cn>
+
+ Reviewed by George Staikos.
+
+ Add XHTMLMP support to Webkit
+ Update the configure files for building XHTMLMP-enabled WebKit on different platform
+ https://bugs.webkit.org/show_bug.cgi?id=23452
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCoreSources.bkl:
+
+2009-05-19 Antti Koivisto <antti@apple.com>
+
+ I can't figure out how to make this not timing dependent, making it manual test instead.
+
+ * manual-tests/preload-scanner-entities.html: Added.
+
+2009-05-19 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Antti Koivisto.
+
+ <rdar://problem/6886382> REGRESSION (Safari 4PB -> ToT): HTTP cache revalidation broken.
+
+ This was caused in http://trac.webkit.org/changeset/41425, which fixed an image caching bug
+ in QuickLooks (rdar://problem/6619630).
+
+ We need to respect the DocumentLoader's request cache policy when deciding the cache policy
+ for subresources, but the check (originally removed in r39304 and added back in in the same
+ place in r41424) needs to be tweaked and relocated a bit.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::subresourceCachePolicy): Renamed from cachePolicy(). Move checking
+ the DocumentLoader's request to a more appropriate place. Add code to handle the recently
+ added FIXME regarding POSTs. Add a new FIXME describing a great way to make this code
+ cleaner in the future.
+ * loader/FrameLoader.h:
+
+ * loader/DocLoader.cpp:
+ (WebCore::DocLoader::cachePolicy): Calls the newly renamed subresourceCachePolicy().
+
+2009-05-19 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 25872: aria-labeledby appends all siblings instead of all children to aria name
+ https://bugs.webkit.org/show_bug.cgi?id=25872
+
+ When setting the aria-labeledby text it should stay within the element identified by the id
+ when searching through the sibling list.
+
+ This also removes an outdated assert in getDocumentLinks. Its possible for the document to
+ think an element is a link, but accessibility can treat it differently (eg. its ARIA role is different).
+
+ Test: accessibility/aria-labelledby-stay-within.html
+
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::ariaAccessiblityName):
+ (WebCore::AccessibilityRenderObject::getDocumentLinks):
+
+2009-05-19 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Darin Adler).
+
+ <rdar://problem/6902674> REGRESSION: Query parameters are sometimes incorrect in URL (23135)
+
+ Push characters back in correct order when entity parsing fails after 3 characters.
+
+ Test: fast/tokenizer/preload-scanner-entities.html
+
+ * html/PreloadScanner.cpp:
+ (WebCore::PreloadScanner::consumeEntity):
+
+2009-05-19 Paul Godavari <paul@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Fix a crash in Mac Chromium when displaying an HTML select element
+ with no items.
+ https://bugs.webkit.org/show_bug.cgi?id=25874
+
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupContainer::showExternal):
+
+2009-05-19 Nate Chapin <japhet@google.com>
+
+ Reviewed by Darin Fisher.
+
+ Upstream V8 bindings for CanvasRenderingContext2D.
+ https://bugs.webkit.org/show_bug.cgi?id=25858
+
+ * bindings/v8/custom/V8CanvasRenderingContext2DCustom.cpp: Moved bindings from v8_custom.cpp.
+
+2009-05-19 Jessie Berlin <jberlin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Windows Build Fix.
+
+ * WebCore.vcproj/WebCore.vcproj: Copy accessibility headers from WebCore.
+
+2009-05-19 Timothy Hatcher <timothy@apple.com>
+
+ <rdar://problem/6889218> REGRESSION: Some iChat transcript resources are not
+ loaded because willSendRequest doesn't happen immediately
+
+ Reviewed by Antti Koivisto.
+
+ * WebCore.base.exp: Export Loader::servePendingRequests().
+
+2009-05-19 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Bug 25859: Need to upstream ScriptController.* for v8.
+ https://bugs.webkit.org/show_bug.cgi?id=25859
+
+ Fixing the header file (which I accidentally made identical to the cpp file).
+
+ * bindings/v8/ScriptController.h:
+
+2009-05-19 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler and Brady Eidson.
+
+ <rdar://problem/6900582> REGRESSION (r42446?): UA Profiler in http://stevesouders.com/ua/ stalls
+
+ The problem was that Document::removeAllEventListeners() was called for a wrong document
+ when a CachedFrame was destroyed.
+
+ Cannot be tested automatically, because DRT doesn't have a b/f cache.
+
+ * dom/Document.cpp: (WebCore::Document::domWindow): Make sure that this doesn't return an
+ unrelated window even if document's m_frame pointer is stale.
+
+ * history/CachedFrame.cpp: (WebCore::CachedFrame::clear): Added a FIXME about strange behavior.
+
+2009-05-19 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Split InspectorController into InspectorController and InspectorFrontend. Latter encapsulates all frontend interaction and is the only entity allowed to make ScriptFunctionCalls. The further plan is to serialize these script function calls.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25419
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * inspector/ConsoleMessage.cpp:
+ (WebCore::ConsoleMessage::addToConsole):
+ * inspector/ConsoleMessage.h:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::~InspectorController):
+ (WebCore::InspectorController::inspect):
+ (WebCore::InspectorController::focusNode):
+ (WebCore::InspectorController::setWindowVisible):
+ (WebCore::InspectorController::addConsoleMessage):
+ (WebCore::InspectorController::setAttachedWindow):
+ (WebCore::InspectorController::inspectedWindowScriptObjectCleared):
+ (WebCore::InspectorController::scriptObjectReady):
+ (WebCore::InspectorController::showPanel):
+ (WebCore::InspectorController::close):
+ (WebCore::InspectorController::populateScriptObjects):
+ (WebCore::InspectorController::resetScriptObjects):
+ (WebCore::InspectorController::pruneResources):
+ (WebCore::InspectorController::didCommitLoad):
+ (WebCore::InspectorController::didLoadResourceFromMemoryCache):
+ (WebCore::InspectorController::identifierForInitialRequest):
+ (WebCore::InspectorController::willSendRequest):
+ (WebCore::InspectorController::didReceiveResponse):
+ (WebCore::InspectorController::didReceiveContentLength):
+ (WebCore::InspectorController::didFinishLoading):
+ (WebCore::InspectorController::didFailLoading):
+ (WebCore::InspectorController::resourceRetrievedByXMLHttpRequest):
+ (WebCore::InspectorController::scriptImported):
+ (WebCore::InspectorController::didOpenDatabase):
+ (WebCore::InspectorController::didUseDOMStorage):
+ (WebCore::InspectorController::addScriptProfile):
+ (WebCore::InspectorController::toggleRecordButton):
+ (WebCore::InspectorController::enableProfiler):
+ (WebCore::InspectorController::disableProfiler):
+ (WebCore::InspectorController::enableDebugger):
+ (WebCore::InspectorController::disableDebugger):
+ (WebCore::InspectorController::didParseSource):
+ (WebCore::InspectorController::failedToParseSource):
+ (WebCore::InspectorController::didPause):
+ (WebCore::InspectorController::didContinue):
+ * inspector/InspectorController.h:
+ * inspector/InspectorDOMStorageResource.cpp:
+ (WebCore::InspectorDOMStorageResource::bind):
+ * inspector/InspectorDOMStorageResource.h:
+ * inspector/InspectorDatabaseResource.cpp:
+ (WebCore::InspectorDatabaseResource::bind):
+ * inspector/InspectorDatabaseResource.h:
+ * inspector/InspectorFrontend.cpp: Added.
+ (WebCore::callSimpleFunction):
+ (WebCore::InspectorFrontend::InspectorFrontend):
+ (WebCore::InspectorFrontend::~InspectorFrontend):
+ (WebCore::InspectorFrontend::newJSONObject):
+ (WebCore::InspectorFrontend::addMessageToConsole):
+ (WebCore::InspectorFrontend::addResource):
+ (WebCore::InspectorFrontend::updateResource):
+ (WebCore::InspectorFrontend::removeResource):
+ (WebCore::InspectorFrontend::updateFocusedNode):
+ (WebCore::InspectorFrontend::setAttachedWindow):
+ (WebCore::InspectorFrontend::inspectedWindowScriptObjectCleared):
+ (WebCore::InspectorFrontend::showPanel):
+ (WebCore::InspectorFrontend::populateInterface):
+ (WebCore::InspectorFrontend::reset):
+ (WebCore::InspectorFrontend::debuggerWasEnabled):
+ (WebCore::InspectorFrontend::debuggerWasDisabled):
+ (WebCore::InspectorFrontend::profilerWasEnabled):
+ (WebCore::InspectorFrontend::profilerWasDisabled):
+ (WebCore::InspectorFrontend::parsedScriptSource):
+ (WebCore::InspectorFrontend::failedToParseScriptSource):
+ (WebCore::InspectorFrontend::addProfile):
+ (WebCore::InspectorFrontend::setRecordingProfile):
+ (WebCore::InspectorFrontend::pausedScript):
+ (WebCore::InspectorFrontend::resumedScript):
+ (WebCore::InspectorFrontend::addDatabase):
+ (WebCore::InspectorFrontend::addDOMStorage):
+ * inspector/InspectorFrontend.h: Added.
+ * inspector/InspectorResource.cpp:
+ (WebCore::InspectorResource::createScriptObject):
+ (WebCore::InspectorResource::updateScriptObject):
+ (WebCore::InspectorResource::releaseScriptObject):
+ * inspector/InspectorResource.h:
+
+2009-05-19 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Introduce JSONObject that wraps ScriptObject and ScriptState* for further serialization
+
+ https://bugs.webkit.org/show_bug.cgi?id=25419
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * inspector/ConsoleMessage.cpp:
+ (WebCore::ConsoleMessage::addToConsole):
+ * inspector/InspectorDOMStorageResource.cpp:
+ (WebCore::InspectorDOMStorageResource::bind):
+ * inspector/InspectorDatabaseResource.cpp:
+ (WebCore::InspectorDatabaseResource::bind):
+ * inspector/InspectorResource.cpp:
+ (WebCore::populateHeadersObject):
+ (WebCore::InspectorResource::createScriptObject):
+ (WebCore::InspectorResource::updateScriptObject):
+ * inspector/JSONObject.cpp: Added.
+ (WebCore::JSONObject::JSONObject):
+ (WebCore::JSONObject::set):
+ (WebCore::JSONObject::scriptObject):
+ (WebCore::JSONObject::createNew):
+ * inspector/JSONObject.h: Added.
+
+2009-05-19 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Refactor InpectorController so that it does not instantiate resource/console/database/domresource javascript objects. Move instantiation into the javascript.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25419
+
+ * inspector/ConsoleMessage.cpp:
+ (WebCore::ConsoleMessage::addToConsole):
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::didReceiveResponse):
+ (WebCore::InspectorController::didReceiveContentLength):
+ (WebCore::InspectorController::didFinishLoading):
+ (WebCore::InspectorController::didFailLoading):
+ (WebCore::InspectorController::resourceRetrievedByXMLHttpRequest):
+ (WebCore::InspectorController::scriptImported):
+ * inspector/InspectorDOMStorageResource.cpp:
+ (WebCore::InspectorDOMStorageResource::InspectorDOMStorageResource):
+ (WebCore::InspectorDOMStorageResource::bind):
+ (WebCore::InspectorDOMStorageResource::unbind):
+ * inspector/InspectorDOMStorageResource.h:
+ * inspector/InspectorDatabaseResource.cpp:
+ (WebCore::InspectorDatabaseResource::InspectorDatabaseResource):
+ (WebCore::InspectorDatabaseResource::bind):
+ (WebCore::InspectorDatabaseResource::unbind):
+ * inspector/InspectorDatabaseResource.h:
+ * inspector/InspectorResource.cpp:
+ (WebCore::InspectorResource::InspectorResource):
+ (WebCore::populateHeadersObject):
+ (WebCore::InspectorResource::createScriptObject):
+ (WebCore::InspectorResource::updateScriptObject):
+ (WebCore::InspectorResource::releaseScriptObject):
+ * inspector/InspectorResource.h:
+ * inspector/front-end/Console.js:
+ (WebInspector.ConsoleMessage):
+ * inspector/front-end/inspector.js:
+ (WebInspector.addResource):
+ (WebInspector.updateResource):
+ (WebInspector.removeResource):
+ (WebInspector.addDatabase):
+ (WebInspector.addDOMStorage):
+ (WebInspector.reset):
+ (WebInspector.addMessageToConsole):
+
+2009-05-19 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Ariya Hidayat.
+
+ The Qt port has code that disables scrolling optimizations
+ when the root contains native windows, such as windowed plugins.
+
+ This code broke when detaching iframes containing windowed
+ plugins.
+
+ Each ScrollView now knows how many native windows it and its
+ children contain, and when it is detached, that number is
+ substracted from its old parents.
+
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::scrollContents):
+ (WebCore::ScrollView::setParent):
+ * platform/ScrollView.h:
+ * platform/qt/ScrollViewQt.cpp:
+ (WebCore::ScrollView::adjustWidgetsPreventingBlittingCount):
+ (WebCore::ScrollView::platformAddChild):
+ (WebCore::ScrollView::platformRemoveChild):
+
+2009-05-18 David Kilzer <ddkilzer@apple.com>
+
+ Tiger build fix for r43850
+
+ * platform/mac/ClipboardMac.mm: Added typedef for NSUinteger
+ when building on Tiger.
+
+2009-05-18 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ ClipboardMac cleanup
+ https://bugs.webkit.org/show_bug.cgi?id=25847
+
+ I'm mostly just moving code, however there are 3 changes I made while moving, detailed below.
+
+ No functional changes, so no tests.
+
+ * platform/mac/ClipboardMac.mm:
+ (WebCore::ClipboardMac::clearData):
+ (WebCore::absoluteURLsFromPasteboardFilenames):
+ Broke out logic for filenames into its own function to make the caller more readable.
+ (WebCore::absoluteURLsFromPasteboard):
+ Broke out logic from getData into absoluteURLsFromPasteboard. This returns an NSArray
+ so that we can use -[NSArray componentsJoinedByString] in the caller (which is
+ cleaner than the manual "\n" addition before).
+ This also access to the full list of file urls for future callers.
+ (WebCore::ClipboardMac::getData):
+ unsigned count = (type == "URL") ? 1 : [fileList count]; is now an
+ explicit check for "URL", before it was a check for != "text/uri-list" which
+ was much more confusing in my opinion. text/uri-list and URL are the only
+ two types which map to NSURLPboardType in cocoaTypeFromMIMEType().
+ (WebCore::ClipboardMac::types):
+ I removed an extra if (!types) check, right before [types count]. In Obj-C
+ messaging nil will return 0 (size of a pointer), so it's safe to message nil
+ here and expect it to return 0.
+
+2009-05-18 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Bug 25859: Need to upstream ScriptController.* for v8.
+ https://bugs.webkit.org/show_bug.cgi?id=25859
+
+ * bindings/v8/ScriptController.cpp: Added.
+ * bindings/v8/ScriptController.h: Added.
+
+2009-05-18 Yichao Yin <yichao.yin@torchmobile.com.cn>
+
+ Reviewed by George Staikos.
+
+ Change ScriptElement to support XHTMLMP in a better way
+ https://bugs.webkit.org/show_bug.cgi?id=23452
+
+ * dom/ScriptElement.h:
+ * html/HTMLScriptElement.h:
+ * svg/SVGScriptElement.h:
+ (WebCore::SVGScriptElement::shouldExecuteAsJavaScript):
+
+2009-05-18 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix, finish up changes after the accessibility dir split.
+
+ * webcore-base.bkl:
+
+2009-05-18 Yichao Yin <yichao.yin@torchmobile.com.cn>
+
+ Reviewed by George Staikos (and others).
+
+ Add XHTMLMP support to Webkit
+ https://bugs.webkit.org/show_bug.cgi?id=23452
+ XHTMLMP is a strict subset of XHTML 1.1. It extends XHTML Basic and add enhanced
+ functionality. Most of the functionalities have already been implemented by Webkit.
+
+ The changes include:
+ 1) Adding <noscript> support
+ 2) Document conformance validation
+ 3) User Agent conformance validation
+
+ refer to the specification: OMA-WAP-XHTMLMP-V1_1-20061020-A.pdf
+
+ Tests: fast/xhtmlmp/check-doctype-declaration.xhtml
+ fast/xhtmlmp/check-rootelement.xhtml
+ fast/xhtmlmp/noscript-in-multiscripts.xhtml
+ fast/xhtmlmp/noscript-nested.xhtml
+ fast/xhtmlmp/noscript.xhtml
+
+ * dom/DOMImplementation.cpp:
+ (WebCore::DOMImplementation::createDocument):
+ * dom/Document.cpp:
+ (WebCore::Document::Document):
+ (WebCore::Document::isXHTMLMPDocument):
+ * dom/Document.h:
+ (WebCore::Document::shouldProcessNoscriptElement):
+ (WebCore::Document::setShouldProcessNoscriptElement):
+ * dom/Node.cpp:
+ (WebCore::Node::createRendererIfNeeded):
+ * dom/Node.h:
+ * dom/XMLTokenizer.h:
+ (WebCore::XMLTokenizer::setIsXHTMLMPDocument):
+ (WebCore::XMLTokenizer::isXHTMLMPDocument):
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::XMLTokenizer::XMLTokenizer):
+ (WebCore::XMLTokenizer::startElementNs):
+ (WebCore::XMLTokenizer::endElementNs):
+ (WebCore::XMLTokenizer::endDocument):
+ (WebCore::XMLTokenizer::internalSubset):
+ (WebCore::getEntityHandler):
+ (WebCore::externalSubsetHandler):
+ * dom/XMLTokenizerQt.cpp:
+ (WebCore::XMLTokenizer::XMLTokenizer):
+ (WebCore::XMLTokenizer::parse):
+ (WebCore::XMLTokenizer::parseStartElement):
+ (WebCore::XMLTokenizer::parseEndElement):
+ (WebCore::):
+ * dom/make_names.pl:
+ * html/HTMLElement.cpp:
+ (WebCore::HTMLElement::rendererIsNeeded):
+ * html/HTMLNoScriptElement.cpp: Added.
+ (WebCore::HTMLNoScriptElement::HTMLNoScriptElement):
+ (WebCore::HTMLNoScriptElement::~HTMLNoScriptElement):
+ (WebCore::HTMLNoScriptElement::checkDTD):
+ (WebCore::HTMLNoScriptElement::attach):
+ (WebCore::HTMLNoScriptElement::recalcStyle):
+ (WebCore::HTMLNoScriptElement::childShouldCreateRenderer):
+ (WebCore::HTMLNoScriptElement::styleForRenderer):
+ * html/HTMLNoScriptElement.h: Added.
+ (WebCore::HTMLNoScriptElement::rendererIsNeeded):
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::getNode):
+ (WebCore::HTMLParser::isInline):
+ * html/HTMLTagNames.in:
+ * html/HTMLTokenizer.cpp:
+ (WebCore::HTMLTokenizer::scriptHandler):
+ (WebCore::HTMLTokenizer::notifyFinished):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::addExtraFieldsToRequest):
+ * platform/MIMETypeRegistry.cpp:
+ (WebCore::initializeSupportedNonImageMimeTypes):
+
+2009-05-18 Mark Rowe <mrowe@apple.com>
+
+ Fix the build.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-05-18 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Rubber-stamped by Gustavo Noronha.
+
+ Fixed build for the Qt port by adding the WebCore/accessibility
+ directory to the includepath.
+
+ * WebCore.pro:
+
+2009-05-18 Chris Fleizach <cfleizach@apple.com>
+
+ Bug 25776: accessibility should have its own folder in WebCore project
+ https://bugs.webkit.org/show_bug.cgi?id=25776
+
+ Speculative fix for windows build failure.
+
+ * WebCore.vcproj/WebCoreCommon.vsprops:
+
+2009-05-18 David Kilzer <ddkilzer@apple.com>
+
+ Bug 20652: WebKit doesn't display favicons with MIME type image/vnd.microsoft.icon
+
+ <https://bugs.webkit.org/show_bug.cgi?id=20652>
+
+ Reviewed by Darin Adler.
+
+ Test: http/tests/misc/favicon-as-image.html
+
+ * inspector/front-end/inspector.js: Added
+ image/vnd.microsoft.icon to WebInspector.MIMETypes.
+ * platform/MIMETypeRegistry.cpp:
+ (WebCore::initializeSupportedImageMIMETypes): Added
+ image/vnd.microsoft.icon to list of supported image and image
+ resource MIME types.
+
+2009-05-18 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 25776: accessibility should have its own folder in WebCore project
+ https://bugs.webkit.org/show_bug.cgi?id=25776
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * accessibility: Added.
+ * accessibility/AXObjectCache.cpp: Copied from WebCore/page/AXObjectCache.cpp.
+ * accessibility/AXObjectCache.h: Copied from WebCore/page/AXObjectCache.h.
+ * accessibility/AccessibilityAriaGrid.cpp: Copied from WebCore/page/AccessibilityAriaGrid.cpp.
+ * accessibility/AccessibilityAriaGrid.h: Copied from WebCore/page/AccessibilityAriaGrid.h.
+ * accessibility/AccessibilityAriaGridCell.cpp: Copied from WebCore/page/AccessibilityAriaGridCell.cpp.
+ * accessibility/AccessibilityAriaGridCell.h: Copied from WebCore/page/AccessibilityAriaGridCell.h.
+ * accessibility/AccessibilityAriaGridRow.cpp: Copied from WebCore/page/AccessibilityAriaGridRow.cpp.
+ * accessibility/AccessibilityAriaGridRow.h: Copied from WebCore/page/AccessibilityAriaGridRow.h.
+ * accessibility/AccessibilityImageMapLink.cpp: Copied from WebCore/page/AccessibilityImageMapLink.cpp.
+ * accessibility/AccessibilityImageMapLink.h: Copied from WebCore/page/AccessibilityImageMapLink.h.
+ * accessibility/AccessibilityList.cpp: Copied from WebCore/page/AccessibilityList.cpp.
+ * accessibility/AccessibilityList.h: Copied from WebCore/page/AccessibilityList.h.
+ * accessibility/AccessibilityListBox.cpp: Copied from WebCore/page/AccessibilityListBox.cpp.
+ * accessibility/AccessibilityListBox.h: Copied from WebCore/page/AccessibilityListBox.h.
+ * accessibility/AccessibilityListBoxOption.cpp: Copied from WebCore/page/AccessibilityListBoxOption.cpp.
+ * accessibility/AccessibilityListBoxOption.h: Copied from WebCore/page/AccessibilityListBoxOption.h.
+ * accessibility/AccessibilityObject.cpp: Copied from WebCore/page/AccessibilityObject.cpp.
+ * accessibility/AccessibilityObject.h: Copied from WebCore/page/AccessibilityObject.h.
+ * accessibility/AccessibilityRenderObject.cpp: Copied from WebCore/page/AccessibilityRenderObject.cpp.
+ * accessibility/AccessibilityRenderObject.h: Copied from WebCore/page/AccessibilityRenderObject.h.
+ * accessibility/AccessibilityTable.cpp: Copied from WebCore/page/AccessibilityTable.cpp.
+ * accessibility/AccessibilityTable.h: Copied from WebCore/page/AccessibilityTable.h.
+ * accessibility/AccessibilityTableCell.cpp: Copied from WebCore/page/AccessibilityTableCell.cpp.
+ * accessibility/AccessibilityTableCell.h: Copied from WebCore/page/AccessibilityTableCell.h.
+ * accessibility/AccessibilityTableColumn.cpp: Copied from WebCore/page/AccessibilityTableColumn.cpp.
+ * accessibility/AccessibilityTableColumn.h: Copied from WebCore/page/AccessibilityTableColumn.h.
+ * accessibility/AccessibilityTableHeaderContainer.cpp: Copied from WebCore/page/AccessibilityTableHeaderContainer.cpp.
+ * accessibility/AccessibilityTableHeaderContainer.h: Copied from WebCore/page/AccessibilityTableHeaderContainer.h.
+ * accessibility/AccessibilityTableRow.cpp: Copied from WebCore/page/AccessibilityTableRow.cpp.
+ * accessibility/AccessibilityTableRow.h: Copied from WebCore/page/AccessibilityTableRow.h.
+ * accessibility/chromium: Added.
+ * accessibility/chromium/AXObjectCacheChromium.cpp: Copied from WebCore/page/chromium/AXObjectCacheChromium.cpp.
+ * accessibility/chromium/AccessibilityObjectChromium.cpp: Copied from WebCore/page/chromium/AccessibilityObjectChromium.cpp.
+ * accessibility/chromium/AccessibilityObjectWrapper.h: Copied from WebCore/page/chromium/AccessibilityObjectWrapper.h.
+ * accessibility/gtk: Added.
+ * accessibility/gtk/AXObjectCacheAtk.cpp: Copied from WebCore/page/gtk/AXObjectCacheAtk.cpp.
+ * accessibility/gtk/AccessibilityObjectAtk.cpp: Copied from WebCore/page/gtk/AccessibilityObjectAtk.cpp.
+ * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp: Copied from WebCore/page/gtk/AccessibilityObjectWrapperAtk.cpp.
+ * accessibility/gtk/AccessibilityObjectWrapperAtk.h: Copied from WebCore/page/gtk/AccessibilityObjectWrapperAtk.h.
+ * accessibility/mac: Added.
+ * accessibility/mac/AXObjectCacheMac.mm: Copied from WebCore/page/mac/AXObjectCacheMac.mm.
+ * accessibility/mac/AccessibilityObjectMac.mm: Copied from WebCore/page/mac/AccessibilityObjectMac.mm.
+ * accessibility/mac/AccessibilityObjectWrapper.h: Copied from WebCore/page/mac/AccessibilityObjectWrapper.h.
+ * accessibility/mac/AccessibilityObjectWrapper.mm: Copied from WebCore/page/mac/AccessibilityObjectWrapper.mm.
+ * accessibility/qt: Added.
+ * accessibility/qt/AccessibilityObjectQt.cpp: Copied from WebCore/page/qt/AccessibilityObjectQt.cpp.
+ * accessibility/win: Added.
+ * accessibility/win/AXObjectCacheWin.cpp: Copied from WebCore/page/win/AXObjectCacheWin.cpp.
+ * accessibility/win/AccessibilityObjectWin.cpp: Copied from WebCore/page/win/AccessibilityObjectWin.cpp.
+ * accessibility/win/AccessibilityObjectWrapperWin.h: Copied from WebCore/page/win/AccessibilityObjectWrapperWin.h.
+ * accessibility/wx: Added.
+ * accessibility/wx/AccessibilityObjectWx.cpp: Copied from WebCore/page/wx/AccessibilityObjectWx.cpp.
+ * page/AXObjectCache.cpp: Removed.
+ * page/AXObjectCache.h: Removed.
+ * page/AccessibilityAriaGrid.cpp: Removed.
+ * page/AccessibilityAriaGrid.h: Removed.
+ * page/AccessibilityAriaGridCell.cpp: Removed.
+ * page/AccessibilityAriaGridCell.h: Removed.
+ * page/AccessibilityAriaGridRow.cpp: Removed.
+ * page/AccessibilityAriaGridRow.h: Removed.
+ * page/AccessibilityImageMapLink.cpp: Removed.
+ * page/AccessibilityImageMapLink.h: Removed.
+ * page/AccessibilityList.cpp: Removed.
+ * page/AccessibilityList.h: Removed.
+ * page/AccessibilityListBox.cpp: Removed.
+ * page/AccessibilityListBox.h: Removed.
+ * page/AccessibilityListBoxOption.cpp: Removed.
+ * page/AccessibilityListBoxOption.h: Removed.
+ * page/AccessibilityObject.cpp: Removed.
+ * page/AccessibilityObject.h: Removed.
+ * page/AccessibilityRenderObject.cpp: Removed.
+ * page/AccessibilityRenderObject.h: Removed.
+ * page/AccessibilityTable.cpp: Removed.
+ * page/AccessibilityTable.h: Removed.
+ * page/AccessibilityTableCell.cpp: Removed.
+ * page/AccessibilityTableCell.h: Removed.
+ * page/AccessibilityTableColumn.cpp: Removed.
+ * page/AccessibilityTableColumn.h: Removed.
+ * page/AccessibilityTableHeaderContainer.cpp: Removed.
+ * page/AccessibilityTableHeaderContainer.h: Removed.
+ * page/AccessibilityTableRow.cpp: Removed.
+ * page/AccessibilityTableRow.h: Removed.
+ * page/chromium/AXObjectCacheChromium.cpp: Removed.
+ * page/chromium/AccessibilityObjectChromium.cpp: Removed.
+ * page/chromium/AccessibilityObjectWrapper.h: Removed.
+ * page/gtk/AXObjectCacheAtk.cpp: Removed.
+ * page/gtk/AccessibilityObjectAtk.cpp: Removed.
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp: Removed.
+ * page/gtk/AccessibilityObjectWrapperAtk.h: Removed.
+ * page/mac/AXObjectCacheMac.mm: Removed.
+ * page/mac/AccessibilityObjectMac.mm: Removed.
+ * page/mac/AccessibilityObjectWrapper.h: Removed.
+ * page/mac/AccessibilityObjectWrapper.mm: Removed.
+ * page/qt/AccessibilityObjectQt.cpp: Removed.
+ * page/win/AXObjectCacheWin.cpp: Removed.
+ * page/win/AccessibilityObjectWin.cpp: Removed.
+ * page/win/AccessibilityObjectWrapperWin.h: Removed.
+ * page/wx/AccessibilityObjectWx.cpp: Removed.
+
+2009-05-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25854
+ [GTK] Should tell servers we only support identity as content encoding
+
+ Let servers know we only support identity as content
+ encoding. We will implement this in libsoup.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::startHttp):
+
+2009-05-18 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6881160> REGRESSION (r41425): Unable to create battle.net account due to
+ CAPTCHA failure.
+
+ The problem was that after loading and displaying a CAPTCHA image, it was loaded from
+ the server again due to preloading. So, the server expected the last loaded (invisible)
+ CAPTCHA text to be typed and posted back.
+
+ I don't know how to make tests for preloading.
+
+ * loader/DocLoader.cpp: (WebCore::DocLoader::checkForPendingPreloads): There is never a reason
+ to preload after loading for real - and if cache policy is CachePolicyReload, that actually
+ results in another load from network layer.
+
+ * loader/FrameLoader.cpp: (WebCore::FrameLoader::cachePolicy): It's not good for cachePolicy()
+ to lie, but I don't know how to re-do r41425 properly. Added a FIXME.
2009-05-18 Ariya Hidayat <ariya.hidayat@nokia.com>
@@ -79,6 +6963,414 @@
(WebCore::FontFallbackList::releaseFontData):
(WebCore::FontFallbackList::fontDataAt):
+2009-05-15 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Style fixes
+
+ * GNUmakefile.am:
+
+2009-05-17 George Staikos <george.staikos@torchmobile.com>
+
+ Not reviewed - build fix.
+
+ Fix typo: constr -> const.
+
+ * wml/WMLInputElement.h:
+ (WebCore::WMLInputElement::setPlaceholder):
+
+2009-05-17 Darin Adler <darin@apple.com>
+
+ Fix done by Simon Fraser (reviewed by me).
+
+ <rdar://problem/6893775> Page with screen-only stylesheet with overflow and height
+ transitions has bad layout and overlapping garbled text when printing
+
+ * manual-tests/print-with-height-transition-in-screen-stylesheet.html: Added.
+
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationController::updateAnimations): Don't run transitions when printing.
+
+2009-05-17 Darin Adler <darin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ <rdar://problem/6870241> REGRESSION: Programmatically selected popup menu item not shown
+
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::setSelectedIndex): Added a call to updateFromElement and
+ also a type check on the selected index to avoid a bad cast to HTMLOptionElement.
+
+ * manual-tests/select-option-in-onload.html: Added.
+
+2009-05-17 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Anders Carlsson
+
+ Rename local variables for readability.
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintBorder):
+
+2009-05-17 Darin Adler <darin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Bug 25840: fix some warnings seen on the GTK bot
+ https://bugs.webkit.org/show_bug.cgi?id=25840
+
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::platformScrollbarModes): Initialize results here.
+ This is really just to quiet warnings. I think this code is unreachable.
+ Someone could put ASSERT_NOT_REACHED() in here too at some point.
+
+ * plugins/PluginStream.cpp:
+ (WebCore::PluginStream::startStream): Use proper printf format for int
+ here, %d, not %lu. This could cause a real problem when compiled 64-bit,
+ so it's good to fix.
+
+ * rendering/RenderTextControl.cpp:
+ (WebCore::getNextSoftBreak): Initialize breakOffset to 0 here. This is
+ really just to quiet the warning, but still seems like a good idea.
+
+2009-05-17 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 25769: Fix accessibility warnings on GTK
+ https://bugs.webkit.org/show_bug.cgi?id=25769
+
+ * page/AccessibilityTable.cpp:
+ (WebCore::AccessibilityTable::columnCount): Get rid of excess const.
+ (WebCore::AccessibilityTable::rowCount): Ditto.
+ * page/AccessibilityTable.h: Ditto.
+
+2009-05-17 Kai Brüning <kai@granus.net>
+
+ Reviewed by Darin Adler.
+
+ bug 25822: DOM normalize does not remove empty text node between element nodes
+ https://bugs.webkit.org/show_bug.cgi?id=25822
+
+ Test: fast/dom/Node/normalize.html
+
+ * dom/Node.cpp:
+ (WebCore::Node::normalize): Changed to remove any empty text nodes.
+
+2009-05-16 Dave Moore <davemoore@google.com>
+
+ Reviewed by Darin Adler.
+
+ Allow Strings to be created with one malloc node with no copying
+ https://bugs.webkit.org/show_bug.cgi?id=25779
+
+ Add new methods to String and StringImpl, refactoring existing
+ methods in StringImpl to use new createUninitialized() method.
+
+ * platform/text/PlatformString.h:
+ (WebCore::String::createUninitialized):
+ * platform/text/StringImpl.cpp:
+ (WebCore::StringImpl::createUninitialized):
+ (WebCore::StringImpl::create):
+ * platform/text/StringImpl.h:
+
+2009-05-16 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6827041> WebCore should stop throwing away the CGImageSourceRef to
+ dramatically improve animated GIF decoding performance
+
+ Recent versions of ImageIO discard previously decoded image frames if the client
+ application no longer holds references to them, so there's no need to throw away
+ the decoder unless we're explicitly asked to destroy all of the frames.
+
+ This drops peak CPU usage when displaying <http://www.aintitcool.com/files/HoD2.gif>
+ from over 90% to below 3%.
+
+ * platform/graphics/cg/ImageSourceCG.cpp:
+ (WebCore::ImageSource::clear):
+
+2009-05-16 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ - fix <rdar://problem/6873305> Two distinct characters are not displayed
+ correctly with 2 of the font selections from the stickies widget
+
+ Test: platform/mac/editing/pasteboard/text-precomposed.html
+
+ Ensure that "text/plain" data retrieved from the clipboard is always
+ precomposed. This makes Clipboard::getData() and
+ Pasteboard::documentFragment() consistent with Pasteboard::plainText()
+ and -[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:].
+
+ * platform/mac/ClipboardMac.mm:
+ (WebCore::ClipboardMac::getData):
+ * platform/mac/PasteboardMac.mm:
+ (WebCore::Pasteboard::documentFragment):
+
+2009-05-16 Mark Rowe <mrowe@apple.com>
+
+ Build fix.
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::valueForFamily): Declare valueForFamily as static.
+
+2009-05-15 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6883872> REGRESSION (r43243): computed style for font-family is returning
+ only the generic font, if any generic font is in the family list
+
+ Test: fast/css/getComputedStyle/computed-style-font-family.html
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ Sorted computedProperties alphabetically. Added CSSPropertyClip and CSSPropertyWordBreak.
+ (WebCore::identifierForFamily): Added. Maps internal font family names to identifiers.
+ (WebCore::valueForFamily): Added. Creates either an identifier or a string as appropriate.
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue): Implemented the font-family
+ property as specified in the CSS standard. Fixed clip to return "auto" when there is no
+ clip set instead of nothing at all. Gave inheritableProperties and numInheritableProperties
+ internal linkage since there was no reason for them to have external linkage.
+
+2009-05-15 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25741
+
+ Append instead of throwing when insertItemBefore gets an out-of-bound
+ index.
+
+ Test: svg/dom/svglist-insertItemBefore-appends.html
+
+ * svg/SVGList.h:
+ (WebCore::SVGList::insertItemBefore):
+
+2009-05-15 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=25829
+
+ Fix -webkit-background-clip:text when the renderer had a non (0,0) x, y offset.
+
+ Test: fast/backgrounds/background-clip-text.html
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended):
+
+2009-05-15 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - fix <rdar://problem/6888244> REGRESSION: Using the Up or Down keyboard
+ arrows, I can't navigate caret between To Do items in a Note message
+
+ Test: editing/selection/move-by-line-004.html
+
+ * editing/visible_units.cpp:
+ (WebCore::enclosingNodeWithNonInlineRenderer): Added this helper
+ function.
+ (WebCore::previousLinePosition): When advancing to the next candidate
+ node, stop when leaving the closest ancestor of the original node that
+ is not an inline. The code, incorrectly, was trying to exit the closest
+ ancestor of that type which was editable, and therefore missing other
+ blocks in the same editable root.
+ (WebCore::nextLinePosition): Ditto.
+
+2009-05-15 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Jan Alonzo.
+
+ Converting filename to uri by concatenating strings is broken
+ on Windows. So, don't do it for that platform.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::startGio):
+
+2009-05-15 Nate Chapin <japhet@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ Upstream V8 bindings for HTMLOptionsCollection and HTMLSelectElementCollection.
+ https://bugs.webkit.org/show_bug.cgi?id=25739
+
+ * bindings/v8/V8Collection.cpp: Added.
+ (WebCore::toOptionsCollectionSetter): Moved from v8_custom.cpp.
+ * bindings/v8/V8Collection.h: Added prototype for toOptionsCollectionSetter().
+ * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:
+ (WebCore::INDEXED_PROPERTY_SETTER): Moved from v8_custom.cpp.
+ * bindings/v8/custom/V8HTMLSelectElementCollectionCustom.cpp: Added.
+ (WebCore::NAMED_PROPERTY_GETTER): Moved from v8_custom.cpp.
+ (WebCore::INDEXED_PROPERTY_SETTER): Moved from v8_custom.cpp.
+
+2009-05-15 David Kilzer <ddkilzer@apple.com>
+
+ <rdar://problem/6649936> Add *.exp export files to WebCore Xcode project
+
+ Reviewed by Darin Adler and Timothy Hatcher.
+
+ * WebCore.xcodeproj/project.pbxproj: Added Exports group, moved
+ WebCore.base.exp into the group, and added 10 other *.exp files
+ in WebCore.
+
+2009-05-15 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25826
+ Change type to only have custom getter in JCS.
+
+ * html/HTMLInputElement.idl: Changed CustomGetter attribute to JSCCustomGetter.
+
+2009-05-15 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Dave Kilzer.
+
+ Add a settings entry to en/disable web font support
+ https://bugs.webkit.org/show_bug.cgi?id=25239
+
+ * css/CSSFontSelector.cpp:
+ (WebCore::CSSFontSelector::addFontFaceRule):
+
+2009-05-15 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Steve Falkenburg.
+
+ Remove dead youtube site specific hack that was commented out.
+
+ * bindings/js/JSNavigatorCustom.cpp:
+ * page/Navigator.idl:
+
+2009-05-15 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Beth Dakin.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=25826
+ <rdar://problem/6884742>
+ REGRESSION: In Gmail's Edit Link dialog, I can't type in the Link To: field (due to <input type=url> support)
+
+ Added a site specific quirk for mail.google.com which returns "text" when getting the type of an <input type=url>
+
+ * bindings/js/JSHTMLInputElementCustom.cpp:
+ (WebCore::needsGmailQuirk):
+ (WebCore::JSHTMLInputElement::type):
+ * html/HTMLInputElement.idl:
+
+2009-05-14 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25810
+ Upstream V8 DOM Wrapper map declarations.
+
+ No behavior change, so no tests.
+
+ * bindings/v8/V8DOMMap.h:
+ (WebCore::WeakReferenceMap::WeakReferenceMap): Added.
+ (WebCore::WeakReferenceMap::~WeakReferenceMap): Added.
+ (WebCore::WeakReferenceMap::get): Added.
+ (WebCore::WeakReferenceMap::set): Added.
+ (WebCore::WeakReferenceMap::forget): Added.
+ (WebCore::WeakReferenceMap::contains): Added.
+ (WebCore::WeakReferenceMap::impl): Added.
+ (WebCore::DOMWrapperMap::DOMWrapperMap): Added.
+
+2009-05-15 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=25773
+
+ Rename GraphicsLayer::graphicsContextsFlipped() to
+ GraphicsLayer::compositingCoordinatesOrientation() in order to clarify the usage.
+
+ Clean up code around the GraphicsLayer "contents" layer that makes use of this
+ flag, by removing the setHasContentsLayer() method, and just using setContentsLayer(),
+ which can then always do the flipping if necessary.
+
+ Only affects ACCELERATED_COMPOSITING builds.
+
+ * platform/graphics/GraphicsLayer.h:
+ (WebCore::GraphicsLayer::):
+ * platform/graphics/mac/GraphicsLayerCA.h:
+ (WebCore::GraphicsLayerCA::contentsLayer):
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::GraphicsLayer::compositingCoordinatesOrientation):
+ (WebCore::GraphicsLayerCA::setBackgroundColor):
+ (WebCore::GraphicsLayerCA::clearBackgroundColor):
+ (WebCore::GraphicsLayerCA::setContentsToImage):
+ (WebCore::GraphicsLayerCA::clearContents):
+ (WebCore::GraphicsLayerCA::swapFromOrToTiledLayer):
+ (WebCore::GraphicsLayerCA::setContentsLayer):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::ensureRootPlatformLayer):
+
+2009-05-15 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25765
+
+ Avoid calling setNeedsStyleRecalc() when we are
+ putting an animated page in the cache. This avoids
+ the assert and subsequent problems with a dirty
+ page going into the cache.
+
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::endAnimation):
+
+2009-05-15 Francisco Tolmasky <francisco@280north.com>
+
+ BUG 25467: JavaScript debugger should use function.displayName as the function's name in the call stack
+ <https://bugs.webkit.org/show_bug.cgi?id=25467>
+
+ Reviewed by Adam Roben.
+
+ * inspector/JavaScriptCallFrame.cpp:
+ (WebCore::JavaScriptCallFrame::functionName): Use calculatedFunctionName which takes into account displayName
+ * inspector/front-end/CallStackSidebarPane.js: Remove "|| anonymous function" since it is handled internally just like in profiles
+ (WebInspector.CallStackSidebarPane.prototype.update):
+
+2009-05-15 Alexey Proskuryakov <ap@webkit.org>
+
+ Windows build fix (and a matching Mac change, to avoid unnecessarily diverging the implementations).
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::ResourceHandle::start):
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::start):
+ Check strings with isEmpty(), not relying on any implicit conversions.
+
+2009-05-15 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler, Brady Eidson and Eric Carlson.
+
+ <rdar://problem/6875643> REGRESSION: Unable to download file with FTP URL that includes
+ username and password (Lightwave 9.6 for Mac from Newtek site)
+
+ CFNetwork only invokes didReceiveAuthenticationChallenge for HTTP requests. Credentials
+ for other protocols (including FTP) should be included as part of the URL.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::ResourceHandle::start):
+ (WebCore::WebCoreSynchronousLoader::load):
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::start):
+ (+[WebCoreSynchronousLoader loadRequest:allowStoredCredentials:returningResponse:error:]):
+ Put credentials in URL for non-HTTP requests.
+
+ * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::makeSimpleCrossOriginAccessRequest):
+ Bail out quickly if the URL is non-HTTP. Cross-origin requests require specific HTTP
+ headers to be received, so they cannot work with other protocols.
+
2009-05-15 Ariya Hidayat <ariya.hidayat@nokia.com>
Reviewed by Holger Freyther.
@@ -106,6 +7398,788 @@
(WebCore::ImageDecoderQt::reset): Resetted the flag.
* platform/graphics/qt/ImageDecoderQt.h: Added m_hasAlphaChannel.
+2009-05-15 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ Finish support for disabling the JavaScript Debugger and Profiler
+ at compile time in WebCore
+ https://bugs.webkit.org/show_bug.cgi?id=24917
+
+ * bindings/js/JSInspectorControllerCustom.cpp: ENABLE_JAVASCRIPT_DEBUGGER guard
+ * bindings/js/JSJavaScriptCallFrameCustom.cpp: Ditto.
+ * inspector/JavaScriptCallFrame.cpp: Ditto.
+ * inspector/JavaScriptCallFrame.h: Ditto.
+ * inspector/JavaScriptCallFrame.idl: Ditto.
+ * inspector/JavaScriptDebugListener.h: Ditto.
+ * inspector/JavaScriptDebugServer.cpp: Ditto.
+ * inspector/JavaScriptDebugServer.h: Ditto.
+ * inspector/JavaScriptProfile.cpp: Ditto.
+ * inspector/JavaScriptProfile.h: Ditto.
+ * inspector/JavaScriptProfileNode.cpp: Ditto.
+ * inspector/JavaScriptProfileNode.h: Ditto.
+ * page/Console.cpp: Use guard ENABLE(JAVASCRIPT_DEBUGGER) instead of USE(JSC)
+ * page/Console.h: Ditto.
+ * page/Console.idl: Use guard ENABLE(JAVASCRIPT_DEBUGGER) instead of !defined(V8_BINDING)
+
+2009-05-15 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Dimitri Glazkov
+
+ http://bugs.webkit.org/show_bug.cgi?id=25464
+
+ Improve the font fallback for characters belonging to 'common' scripts
+ in ChromiumWin port. Make characters like Danda, Double Danda (punctuation
+ marks in North Indian scripts) and currency signs (e.g. Thai Baht)
+ rendered correctly in Chromium on Win.
+
+ Tests: fast/text/international/danda-space.html
+ fast/text/international/thai-baht-space.html
+
+ * platform/graphics/chromium/FontUtilsChromiumWin.cpp:
+ (WebCore::FontMap::getScriptBasedOnUnicodeBlock):
+ (WebCore::FontMap::getScript):
+ (WebCore::getFallbackFamily):
+
+2009-05-15 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25731
+ [Qt] Cleanup - move files exclusive to XPATH and XSLT under the
+ appropriate build section
+
+ * WebCore.pro:
+
+2009-05-14 Evan Martin <evan@chromium.org>
+
+ Reviewed by Eric Seidel and Darin Fisher.
+
+ Fix a font-related leak in Chromium's Skia backend found by Valgrind.
+ https://bugs.webkit.org/show_bug.cgi?id=25760
+
+ * platform/graphics/chromium/FontCacheLinux.cpp:
+ (WebCore::FontCache::getFontDataForCharacters):
+ Use caches instead of "new" on every call.
+
+2009-05-14 Rahul Kuchhal <kuchhal@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Initialize m_spreadMethod in the second constructor too. Not sure if
+ a test case can be written, so no test case.
+ https://bugs.webkit.org/show_bug.cgi?id=25814
+
+ No test possible: spreadMethod() is only used by SVG, doesn't seem possible to hit
+ this case, since several other SVG tests already should be calling
+ spreadMethod().
+
+ * platform/graphics/Gradient.cpp:
+ (WebCore::Gradient::Gradient):
+
+2009-05-14 Simon Fraser <simon.fraser@apple.com>
+
+ No review.
+
+ Fix Windows build after renaming MediaControlElements to MediaControlElementType.
+
+ * rendering/RenderMediaControls.cpp:
+ (WebCore::RenderMediaControls::paintMediaControlsPart):
+ * rendering/RenderMediaControls.h:
+
+2009-05-14 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/6739671> Movie controller’s play button does not change into a pause
+ button
+
+ Fix a controls repaint issue when the playing state of a video changes by
+ educating the MediaControlInputElements about the state they are currently
+ displaying, and making them repaint when that state changes. This applies
+ to the play/pause and mute/unmute buttons, which both have two states.
+
+ * rendering/MediaControlElements.cpp:
+ (WebCore::MediaControlInputElement::MediaControlInputElement):
+ (WebCore::MediaControlSeekButtonElement::MediaControlSeekButtonElement):
+ (WebCore::MediaControlTimelineElement::MediaControlTimelineElement):
+ (WebCore::MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement):
+ Pass in and initialize the MediaControlElementType.
+
+ (WebCore::MediaControlInputElement::update):
+ Update the display type too
+
+ (WebCore::MediaControlInputElement::setDisplayType):
+ (WebCore::MediaControlMuteButtonElement::MediaControlMuteButtonElement):
+ (WebCore::MediaControlMuteButtonElement::updateDisplayType):
+ Choose muted vs. unmuted display.
+
+ (WebCore::MediaControlPlayButtonElement::MediaControlPlayButtonElement):
+ (WebCore::MediaControlPlayButtonElement::updateDisplayType):
+ Choose play vs. paused display.
+
+ * rendering/MediaControlElements.h:
+ Renamed the MediaControlElements enum to MediaControlElementType.
+ (WebCore::MediaControlInputElement::updateDisplayType):
+ Add a MediaControlElementType member variable with a setter to allow
+ the element to know what type it is displaying.
+
+2009-05-14 Dean Jackson <dino@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25197
+
+ Add support for aspect-ratio and orientation
+ media queries.
+
+ Tests: fast/media/mq-aspect-ratio.html
+ fast/media/mq-orientation.html
+
+ * css/MediaFeatureNames.h:
+ * css/MediaQueryEvaluator.cpp:
+ (WebCore::orientationMediaFeatureEval):
+ (WebCore::aspect_ratioMediaFeatureEval):
+ (WebCore::min_aspect_ratioMediaFeatureEval):
+ (WebCore::max_aspect_ratioMediaFeatureEval):
+ * css/MediaQueryExp.h:
+ (WebCore::MediaQueryExp::isViewportDependent):
+
+2009-05-14 Kevin McCullough <kmccullough@apple.com>
+
+ - Resubmitting previous patch, correctly this time.
+
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::splitTreeToNode):
+ * editing/IndentOutdentCommand.cpp:
+ (WebCore::IndentOutdentCommand::outdentParagraph):
+
+2009-05-14 Kevin McCullough <kmccullough@apple.com>
+
+ - Rolling out to fix a bug and the build
+
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::splitTreeToNode):
+ * editing/IndentOutdentCommand.cpp:
+ (WebCore::IndentOutdentCommand::outdentParagraph):
+
+2009-05-14 Kevin McCullough <kmccullough@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6510362> In some situations message content is messed up
+ when indentation is decreased
+
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::splitTreeToNode): Calling recursively
+ here served to do nothing because this function will return if the
+ second argument is the parent of the first. Not only does this now work
+ as intended, but is necessary for the rest of this fix.
+ * editing/IndentOutdentCommand.cpp:
+ (WebCore::IndentOutdentCommand::outdentParagraph): To determine if we
+ are the last node in a <blockquote>, and can therefore remove the
+ <blockquote> we need the endOfEnclosingBlock to extend to the end of
+ the <blockquote> not just the next block, which could be a <div>, for
+ example.
+ - Also If a <blockquote> is removed, but it's the child of another
+ <blockquote> then its children are now children of the top <blockquote>.
+ In this case we want to split the parent <blockquote> because the next
+ paragraph assumes that it is the first node in its <blockquote> and if
+ that is not true, various bugs arise.
+
+2009-05-14 Brady Eidson <beidson@apple.com>
+
+ Build fix.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::setDefaultMIMEType):
+
+2009-05-14 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Adam Roben.
+
+ Fix http/tests/xmlhttprequest/cache-override.html on Windows
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::setDefaultMIMEType): Modify the previous response so it maintains all of its data.
+ (WebCore::didReceiveResponse): Call setDefaultMIMEType() when needed.
+ (WebCore::WebCoreSynchronousLoader::load): Ditto.
+
+2009-05-14 Paul Godavari <paul@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Bug: Mac Chromium popup menus are not positioned correctly
+ on scrolled pages:
+ https://bugs.webkit.org/show_bug.cgi?id=25772
+
+ Fix Mac Chromium popup menu placement by taking into
+ account any scrolling in the current window. This mirrors
+ the positioning done in PopupContainer::show(), which is
+ used on Chromium Windows and linux.
+
+ Also fixed indenting for this method.
+
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupContainer::showExternal):
+
+2009-05-14 Drew Wilson <atwilson@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25774
+ Upstream V8MessagePortCustom.cpp from the chromium repository.
+
+ * bindings/v8/custom/V8MessagePortCustom.cpp: Added.
+ (WebCore::ACCESSOR_GETTER):
+ (WebCore::ACCESSOR_SETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-05-14 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=25777
+
+ StyleGeneratedImage::imageSize() needs to take zooming into account for
+ fixed-size images (i.e. canvas) so that canvas-as-image-background
+ renders correctly with zooming.
+
+ Test: fast/canvas/canvas-bg-zoom.html
+
+ * rendering/style/StyleGeneratedImage.cpp:
+ (WebCore::StyleGeneratedImage::imageSize):
+
+2009-05-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Patch originally by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25796
+ <rdar://problem/6886654> Shouldn't set referer and origin in Loader::Host::servePendingRequests().
+
+ Test: http/tests/security/credentials-in-referer.html
+
+ * loader/loader.cpp: (WebCore::Loader::Host::servePendingRequests): This will be done in
+ SubresourceLoader::create() anyway.
+
+2009-05-14 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 25797: Pages with image maps are not properly read with Voiceover
+ https://bugs.webkit.org/show_bug.cgi?id=25797
+
+ * page/AccessibilityImageMapLink.h:
+ (WebCore::AccessibilityImageMapLink::isEnabled):
+
+2009-05-14 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6887762> and https://bugs.webkit.org/show_bug.cgi?id=25790
+
+ Nuke the bogus ASSERT and add a legitimate ASSERT with a little help from a new accessor.
+
+ * platform/network/ResourceHandle.cpp:
+ (WebCore::ResourceHandle::shouldContentSniff):
+ * platform/network/ResourceHandle.h:
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::createCFURLResponseWithDefaultMIMEType):
+ (WebCore::didReceiveResponse):
+
+2009-05-14 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25791
+ Bug 25791: HTMLMediaElement: implement 'startTime' attribute
+
+ Support the recently added HTMLMediaElement 'startTime' attribute. This is a read-only
+ value that only the media engine can know, so we just need to add the attribute
+ to HTMLMediaElement and add methods to MediaPlayer and MediaPlayerPrivateInterface so
+ the engine can make it available.
+
+ Test: media/media-startTime.html
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::startTime): New.
+ * html/HTMLMediaElement.h:
+ * html/HTMLMediaElement.idl:
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::MediaPlayer::startTime): New.
+ * platform/graphics/MediaPlayer.h:
+
+ * platform/graphics/MediaPlayerPrivate.h:
+ (WebCore::MediaPlayerPrivateInterface::startTime): New.
+
+2009-05-14 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Ariya Hidayat.
+
+ Only create a QWidget wrapper for the plugin in the case it is not
+ in the Qt window mapper, and thus receiving events from the Qt
+ event system. Native Qt based plugins running in process, will
+ already be in the window mapper, and thus creating a wrapper,
+ stops them from getting events from Qt, as they are redirected
+ to the wrapper.
+
+ * plugins/qt/PluginContainerQt.cpp:
+ (PluginContainerQt::on_clientIsEmbedded):
+
+2009-05-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25784
+ Leaks seen on HTTP tests
+
+ We should change ResourceHandleMac.mm to use smart pointers some day, but this is a minimal fix.
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::loadResourceSynchronously): Release mutable request copy made for
+ disabling content sniffing, matching the normal code path.
+ (-[WebCoreSynchronousLoader connection:willSendRequest:redirectResponse:]): Release m_user
+ and m_pass before overwriting.
+ (-[WebCoreSynchronousLoader connection:didReceiveAuthenticationChallenge:]): Ditto.
+
+2009-05-14 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25418
+ Remove new lines from event handler wrapper to make line numbers
+ in the wrapped script conside with the lines in the original script.
+
+ * bindings/v8/V8LazyEventListener.cpp:
+ (WebCore::V8LazyEventListener::getListenerFunction):
+ (WebCore::V8LazyEventListener::getWrappedListenerFunction):
+
+2009-05-14 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Remove a JSC-specific include that is already added by including
+ ScriptController.
+
+ No change in behavior, so no tests.
+
+ * dom/Document.cpp: Removed JSDOMBinding include.
+
+2009-05-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Brady Eidson.
+
+ <rdar://problem/4072827> Downloaded non-ASCII file name becomes garbled
+
+ Hopefully, a final stroke. When updating ResourceRequest from a platform request, a wrong
+ CFString function was used, so a user-friendly name was stored in encoding fallback array.
+
+ * platform/network/cf/ResourceRequestCFNet.cpp: (WebCore::ResourceRequest::doUpdateResourceRequest):
+ * platform/network/mac/ResourceRequestMac.mm: (WebCore::ResourceRequest::doUpdateResourceRequest):
+
+2009-05-14 Ben Murdoch <benm@google.com>
+
+ Reviewed by Darin Adler.
+
+ Add more ENABLE_DATABASE guards.
+ https://bugs.webkit.org/show_bug.cgi?id=25616
+
+ See also https://bugs.webkit.org/show_bug.cgi?id=24776 (original set of guards)
+
+ * bindings/js/JSSQLResultSetRowListCustom.cpp:
+ * bindings/v8/custom/V8CustomSQLStatementCallback.cpp:
+ * bindings/v8/custom/V8CustomSQLStatementCallback.h:
+ * bindings/v8/custom/V8CustomSQLStatementErrorCallback.cpp:
+ * bindings/v8/custom/V8CustomSQLStatementErrorCallback.h:
+ * bindings/v8/custom/V8CustomSQLTransactionCallback.cpp:
+ * bindings/v8/custom/V8CustomSQLTransactionCallback.h:
+ * bindings/v8/custom/V8CustomSQLTransactionErrorCallback.cpp:
+ * bindings/v8/custom/V8CustomSQLTransactionErrorCallback.h:
+ * bindings/v8/custom/V8DatabaseCustom.cpp:
+ * bindings/v8/custom/V8SQLResultSetRowListCustom.cpp:
+ * bindings/v8/custom/V8SQLTransactionCustom.cpp:
+ * storage/Database.cpp:
+ * storage/DatabaseDetails.h:
+ * storage/OriginUsageRecord.cpp:
+ * storage/OriginUsageRecord.h:
+ * storage/SQLError.h:
+ * storage/SQLError.idl:
+ * storage/SQLResultSet.cpp:
+ * storage/SQLResultSet.h:
+ * storage/SQLResultSet.idl:
+ * storage/SQLResultSetRowList.cpp:
+ * storage/SQLResultSetRowList.h:
+ * storage/SQLResultSetRowList.idl:
+ * storage/SQLStatementCallback.h:
+ * storage/SQLStatementErrorCallback.h:
+ * storage/SQLTransactionCallback.h:
+ * storage/SQLTransactionErrorCallback.h:
+
+2009-05-11 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25787
+
+ Gtk was the last platform to not unregister plugins when
+ the plugin is stopped. Catch up with r43550.
+
+ * plugins/gtk/PluginViewGtk.cpp:
+ (WebCore::PluginView::stop):
+
+2009-05-14 Adam Roben <aroben@apple.com>
+
+ Make WebCore.vcproj's pre-build event work again
+
+ * WebCore.vcproj/WebCore.vcproj: Removed empty override of the
+ pre-build event that was accidentally left in when the pre-build event
+ was moved to WebCoreCommon.vsprops.
+
+2009-05-14 Darin Adler <darin@apple.com>
+
+ * manual-tests/right-click-crash.html: Added.
+
+2009-05-14 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Darin Adler.
+
+ <rdar://problem/6681868> When building with Xcode 3.1.3 should be using gcc 4.2
+
+ The meaning of XCODE_VERSION_ACTUAL is more sensible in newer versions of Xcode.
+ Update our logic to select the compiler version to use the more appropriate XCODE_VERSION_MINOR
+ if the version of Xcode supports it, and fall back to XCODE_VERSION_ACTUAL if not.
+
+ * Configurations/Base.xcconfig:
+
+2009-05-13 Anders Carlsson <andersca@apple.com>
+
+ Fix build.
+
+ * WebCore.NPAPI.exp:
+
+2009-05-13 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Fix invalid memory write seen in HTMLCanvasElement by Valgrind
+ https://bugs.webkit.org/show_bug.cgi?id=25759
+
+ I can't think of any way to catch this with a layout test, so no test.
+
+ * css/CSSCanvasValue.cpp:
+ (WebCore::CSSCanvasValue::canvasDestroyed):
+ * css/CSSCanvasValue.h:
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::~HTMLCanvasElement):
+ * html/HTMLCanvasElement.h:
+
+2009-05-13 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ - fix <rdar://problem/5483015> Replies in Mail are drawn first without
+ the user style sheet and then redrawn with the style sheet
+
+ Test: platform/mac/fast/loader/user-stylesheet-fast-path.html
+
+ * page/mac/FrameMac.mm:
+ (WebCore::Frame::setUserStyleSheetLocation): For data URLs with
+ base64-encoded UTF-8 data, just decode the style sheet here an apply
+ it synchronously instead of invoking an asynchronous loader.
+
+2009-05-13 Chris Fleizach <cfleizach@apple.com>
+
+ Bug 25755: Implement ARIA grid role
+ https://bugs.webkit.org/show_bug.cgi?id=25755
+
+ Fix build bustage from last checkin.
+
+ * page/AccessibilityAriaGrid.cpp:
+ (WebCore::AccessibilityAriaGrid::addChild):
+
+2009-05-13 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 25755: Implement ARIA grid role
+ https://bugs.webkit.org/show_bug.cgi?id=25755
+
+ Test: accessibility/aria-tables.html
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * page/AXObjectCache.cpp:
+ (WebCore::AXObjectCache::nodeIsAriaType):
+ (WebCore::AXObjectCache::getOrCreate):
+ * page/AXObjectCache.h:
+ * page/AccessibilityAriaGrid.cpp: Added.
+ (WebCore::AccessibilityAriaGrid::AccessibilityAriaGrid):
+ (WebCore::AccessibilityAriaGrid::~AccessibilityAriaGrid):
+ (WebCore::AccessibilityAriaGrid::create):
+ (WebCore::AccessibilityAriaGrid::addChild):
+ (WebCore::AccessibilityAriaGrid::addChildren):
+ (WebCore::AccessibilityAriaGrid::cellForColumnAndRow):
+ * page/AccessibilityAriaGrid.h: Added.
+ (WebCore::AccessibilityAriaGrid::isAriaTable):
+ * page/AccessibilityAriaGridCell.cpp: Added.
+ (WebCore::AccessibilityAriaGridCell::AccessibilityAriaGridCell):
+ (WebCore::AccessibilityAriaGridCell::~AccessibilityAriaGridCell):
+ (WebCore::AccessibilityAriaGridCell::create):
+ (WebCore::AccessibilityAriaGridCell::parentTable):
+ (WebCore::AccessibilityAriaGridCell::rowIndexRange):
+ (WebCore::AccessibilityAriaGridCell::columnIndexRange):
+ * page/AccessibilityAriaGridCell.h: Added.
+ * page/AccessibilityAriaGridRow.cpp: Added.
+ (WebCore::AccessibilityAriaGridRow::AccessibilityAriaGridRow):
+ (WebCore::AccessibilityAriaGridRow::~AccessibilityAriaGridRow):
+ (WebCore::AccessibilityAriaGridRow::create):
+ (WebCore::AccessibilityAriaGridRow::parentTable):
+ (WebCore::AccessibilityAriaGridRow::headerObject):
+ * page/AccessibilityAriaGridRow.h: Added.
+ * page/AccessibilityList.cpp:
+ (WebCore::AccessibilityList::accessibilityIsIgnored):
+ * page/AccessibilityList.h:
+ * page/AccessibilityObject.h:
+ (WebCore::):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::RoleEntry::):
+ * page/AccessibilityTable.cpp:
+ (WebCore::AccessibilityTable::AccessibilityTable):
+ (WebCore::AccessibilityTable::isTableExposableThroughAccessibility):
+ * page/AccessibilityTable.h:
+ (WebCore::AccessibilityTable::isAriaTable):
+ * page/AccessibilityTableCell.cpp:
+ (WebCore::AccessibilityTableCell::parentTable):
+ (WebCore::AccessibilityTableCell::isTableCell):
+ (WebCore::AccessibilityTableCell::titleUIElement):
+ * page/AccessibilityTableCell.h:
+ * page/AccessibilityTableColumn.cpp:
+ (WebCore::AccessibilityTableColumn::setParentTable):
+ (WebCore::AccessibilityTableColumn::headerObject):
+ * page/AccessibilityTableRow.cpp:
+ (WebCore::AccessibilityTableRow::isTableRow):
+ (WebCore::AccessibilityTableRow::parentTable):
+ * page/AccessibilityTableRow.h:
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (RoleEntry::):
+
+2009-05-13 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Bug 25763: Need to move v8 custom binding to the custom directory.
+ https://bugs.webkit.org/show_bug.cgi?id=25763
+
+ No test due to no change in behavior.
+
+ * bindings/v8/custom/V8CanvasPixelArrayCustom.cpp: Renamed from WebCore/bindings/v8/V8CanvasPixelArrayCustom.cpp.
+
+2009-05-13 Nate Chapin <japhet@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ Fix LayoutTests/fast/dom/Element/attr-param-typechecking.html crashing with V8.
+ https://bugs.webkit.org/show_bug.cgi?id=25758
+
+ * bindings/v8/custom/V8ElementCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL): return the result of throwError() if it is called.
+
+2009-05-13 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Dave Hyatt.
+
+ Fix a number of bugs relating to RTL and text-overflow:ellipsis.
+ Also refactor the relevant code to make it a little clearer.
+
+ This CL fixes 3 fundamental issues:
+ - Corrects behavior if the truncated InlineTextBox's directionality is
+ different from the overall flow direction - bug 25135.
+ - Make decoration drawing in InlineFlowbox RTL-aware - bug 24206.
+ - Full truncation on InlineBoxes in RTL flow - bug 24186
+ - Add tests for the above + reorder/cleanup tests for easier
+ interpretation of outcome.
+
+ The code for placing ellipsis has been refactored to use
+ left/right notation rather than a single variable whose meaning
+ could differ based on flow directionality.
+
+ To support differing inline directionality vs flow directionality,
+ different variables are now used in InlineTextBox::placeEllipsisBox to
+ track the two.
+
+ The drawing mode for underlines in standards mode now correctly handles
+ RTL truncation and relevant test where added.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24186
+ https://bugs.webkit.org/show_bug.cgi?id=25135
+ https://bugs.webkit.org/show_bug.cgi?id=24206
+
+ Tests: fast/css/text-overflow-ellipsis-bidi.html
+ fast/css/text-overflow-ellipsis-strict.html
+
+ * rendering/InlineBox.cpp:
+ (WebCore::InlineBox::placeEllipsisBox):
+ * rendering/InlineBox.h:
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::paintTextDecorations):
+ (WebCore::InlineFlowBox::placeEllipsisBox):
+ * rendering/InlineFlowBox.h:
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::placeEllipsisBox):
+ (WebCore::InlineTextBox::paint):
+ * rendering/InlineTextBox.h:
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutVerticalBox):
+ * rendering/RootInlineBox.cpp:
+ (WebCore::RootInlineBox::placeEllipsis):
+ (WebCore::RootInlineBox::placeEllipsisBox):
+ * rendering/RootInlineBox.h:
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::checkLinesForTextOverflow):
+
+2009-05-13 Dmitry Titov <dimich@chromium.org>
+
+ Rubber-stamped by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25746
+ Revert http://trac.webkit.org/changeset/43507 which caused crash in PPC nightlies with Safari 4.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::matchFunc):
+ (WebCore::openFunc):
+ (WebCore::createStringParser):
+ (WebCore::createMemoryParser):
+ * loader/icon/IconDatabase.cpp:
+ (WebCore::IconDatabase::open):
+ * platform/sql/SQLiteDatabase.cpp:
+ (WebCore::SQLiteDatabase::SQLiteDatabase):
+ (WebCore::SQLiteDatabase::close):
+ * storage/DatabaseThread.cpp:
+ (WebCore::DatabaseThread::DatabaseThread):
+ (WebCore::DatabaseThread::start):
+ (WebCore::DatabaseThread::databaseThread):
+ * storage/LocalStorageThread.cpp:
+ (WebCore::LocalStorageThread::LocalStorageThread):
+ (WebCore::LocalStorageThread::start):
+ (WebCore::LocalStorageThread::localStorageThread):
+ (WebCore::LocalStorageThread::scheduleImport):
+ (WebCore::LocalStorageThread::scheduleSync):
+ (WebCore::LocalStorageThread::terminate):
+ * workers/WorkerThread.cpp:
+ (WebCore::WorkerThread::WorkerThread):
+ (WebCore::WorkerThread::start):
+
+2009-05-13 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Fix for <rdar://problem/6872894> REGRESSION (r41896-42143): First letter cut off in styled select menus
+
+ Make sure to do rounded clipping for overflow and controls relative to the border box and not to the overflow/control clip rect
+ (which is typically clipped to the padding or content box). Doing so was causing rounded clips to be incorrectly applied to padding and
+ content.
+
+ Added fast/overflow/border-radius-clipping.html
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::pushContentsClip):
+
+2009-05-13 Darin Adler <darin@apple.com>
+
+ Revert the parser arena change. It was a slowdown, not a speedup.
+ Better luck next time (I'll break it up into pieces).
+
+2009-05-13 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Beth Dakin and Darin Adler.
+
+ Fix for <rdar://problem/6869687> REGRESSION (r41203): Facebook friend suggestions disappear on update.
+
+ Make sure that renderers are marked for layout if a style change causes them to switch from having a self-painting layer
+ to a non-self-painting layer (and vice versa).
+
+ Move misplaced layer repainting code that was in RenderBox up into RenderBoxModelObject so that inlines with layers
+ repaint properly on opacity changes, etc.
+
+ Added fast/repaint/opacity-change-on-overflow-float.html.
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::styleWillChange):
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::styleWillChange):
+ (WebCore::RenderBoxModelObject::styleDidChange):
+ * rendering/RenderBoxModelObject.h:
+
+2009-05-13 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Not reviewed, build fix.
+
+ Move an include, needed by Debugger under the corresponding guard.
+
+ * inspector/InspectorController.cpp: Moved parser/SourceCode under JAVASCRIPT_DEBUGGER
+ guard.
+
+2009-05-13 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Bug 25394: REGRESSION: crash in DocumentLoader::addResponse due to bad |this| pointer
+ https://bugs.webkit.org/show_bug.cgi?id=25394
+
+ Test: http/tests/xmlhttprequest/frame-unload-abort-crash.html
+
+ * loader/SubresourceLoader.cpp:
+ (WebCore::SubresourceLoader::create):
+ Add another check to subresource loader to avoid doing any loads in frames
+ when the loaders are being stopped.
+
+2009-05-13 Stephan Haller <nomad@froevel.de>
+
+ Reviewed by Gustavo Noronha.
+
+ Wrong handling of file upload if no file selected
+ https://bugs.webkit.org/show_bug.cgi?id=25649
+
+ Fixed returned path if path is empty
+
+ * WebCore/platform/gtk/FileSystemGtk.cpp:
+
+2009-05-13 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ - fix <rdar://problem/6805567> REGRESSION (r42348): Notes flicker white
+ when loading
+
+ Tests: fast/frames/content-opacity-1.html
+ fast/frames/content-opacity-2.html
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::reset): Reset m_contentIsOpaque to false.
+ (WebCore::FrameView::useSlowRepaints): Use slow repaints if the content
+ is not known to be opaque.
+ (WebCore::FrameView::setContentIsOpaque): Added. Sets m_contentIsOpaque
+ and enables or disables fast repaints accordingly.
+ * page/FrameView.h:
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended): Removed the
+ document()->haveStylesheetsLoaded() condition in determining whether the
+ root is opaque. This is what was causing the bug, as iframes were
+ considered to be opaque, and thus painted an opaque white background,
+ whenever they were pending a style sheet load.
+ Changed to call FrameView::setContentIsOpaqe() instead of
+ setUseSlowRepaints(), which allows the frame to go back to fast repaints
+ if the content becomes opaque.
+ Corrected the check for background color opacity: any alpha value other
+ than 255--not just zero--is not opaque.
+
2009-05-13 Ariya Hidayat <ariya.hidayat@nokia.com>
Reviewed by Sam Weinig.
@@ -116,6 +8190,5018 @@
* platform/graphics/qt/GraphicsContextQt.cpp:
(WebCore::toQtCompositionMode):
+2009-05-13 Darin Adler <darin@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Bug 25674: syntax tree nodes should use arena allocation
+ https://bugs.webkit.org/show_bug.cgi?id=25674
+
+ * bindings/js/JSDOMBinding.h: Removed include of JSFunction.h.
+ We don't want the entire DOM binding to depend on that file.
+
+ * bindings/js/JSAudioConstructor.cpp: Added include of Error.h.
+ Before we inherited this automatically because JDDOMBinding.h
+ included JSFunction.h, but that was excessive.
+ * bindings/js/JSDOMWindowCustom.cpp: Ditto.
+ * bindings/js/JSHTMLInputElementCustom.cpp: Ditto.
+ * bindings/js/JSImageConstructor.cpp: Ditto.
+ * bindings/js/JSLazyEventListener.cpp: Ditto, but for JSFunction.h.
+ * bindings/js/JSMessageChannelConstructor.cpp: Ditto.
+ * bindings/js/JSOptionConstructor.cpp: Ditto.
+ * bindings/js/JSWorkerConstructor.cpp: Ditto.
+ * bindings/js/JSXMLHttpRequestConstructor.cpp: Ditto.
+ * bridge/jni/jni_jsobject.mm: Ditto, but for SourceCode.h.
+ * inspector/InspectorController.cpp: Ditto.
+
+ * inspector/JavaScriptDebugServer.cpp:
+ (WebCore::JavaScriptDebugServer::recompileAllJSFunctions):
+ Moved mose of this function into the base class in JavaScriptCore,
+ so the details of compilation don't have to be exposed.
+
+2009-05-13 Douglas R. Davidson <ddavidso@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6879145>
+ Generate a contextual menu item allowing autocorrections to
+ easily be changed back. Refrain from re-correcting items
+ that have already been autocorrected once.
+
+ * dom/DocumentMarker.h:
+ * editing/Editor.cpp:
+ (WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
+ (WebCore::Editor::changeBackToReplacedString):
+ * editing/Editor.h:
+ * page/ContextMenuController.cpp:
+ (WebCore::ContextMenuController::contextMenuItemSelected):
+ * page/mac/WebCoreViewFactory.h:
+ * platform/ContextMenu.cpp:
+ (WebCore::ContextMenu::populate):
+ (WebCore::ContextMenu::checkOrEnableIfNeeded):
+ * platform/ContextMenuItem.h:
+ * platform/LocalizedStrings.h:
+ * platform/mac/LocalizedStringsMac.mm:
+ (WebCore::contextMenuItemTagChangeBack):
+ * rendering/HitTestResult.cpp:
+ (WebCore::HitTestResult::replacedString):
+ * rendering/HitTestResult.h:
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::computeRectForReplacementMarker):
+ (WebCore::InlineTextBox::paintDocumentMarkers):
+ * rendering/InlineTextBox.h:
+
+2009-05-13 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Rubber Stamped by Oliver Hunt.
+
+ [GTK] Fix Gtk+/X11 build on OSX
+
+ Including the CoreFoundation header here and X11 headers
+ later will result in different definitions of Boolean. The
+ CoreFoundation include does not seem to be necessary here
+ and my mac build was successfull without it. I will remove
+ it for now. If the build bots disagree this will be replaced
+ by a #if PLATFORM(CF).
+
+ * platform/FileSystem.h:
+
+2009-05-13 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Rubber Stamped by Gustavo Noronha.
+
+ [GTK] Move the #ifdef around for a buildfix for Gtk+ on OSX
+
+ When building Gtk+ on OSX we ended up declaring
+ setNPWindowIfNeeded twice. Fix that by moving
+ the #if PLATFORM(GTK) up and using elif instead of
+ else.
+
+ * plugins/PluginView.h:
+
+2009-05-13 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25685
+ [GTK] Middle click paste form the pasteboard
+
+ The kit wants to paste from at least two different
+ clipboards. By introducing getCurrentTarget to the
+ PasteboardHelper interface we can make this decision
+ in the kit.
+ Use the new method in PasteboardGtk to get the right
+ GdkClipboard for the paste operation.
+
+ * platform/gtk/PasteboardGtk.cpp:
+ (WebCore::Pasteboard::documentFragment):
+ (WebCore::Pasteboard::plainText):
+ * platform/gtk/PasteboardHelper.h:
+
+2009-05-13 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6438177> QTMoviePreferredTransformAttribute only supported on SnowLeopard
+ <rdar://problem/6872468> QTMovieOpenForPlaybackAttribute only supported on SnowLeopard
+
+ QTMoviePreferredTransformAttribute and QTMovieOpenForPlaybackAttribute are not supported
+ on Tiger or Leopard.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::setNetworkState): Remove invalid ASSERT.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::createQTMovie): Only request QTMoviePreferredTransformAttribute
+ when !BUILDING_ON_TIGER and !BUILDING_ON_LEOPARD.
+ (WebCore::MediaPlayerPrivate::cacheMovieScale): Only ask for QTMovieOpenForPlaybackAttribute
+ when !BUILDING_ON_TIGER and !BUILDING_ON_LEOPARD,
+
+2009-05-12 Roland Steiner <rolandsteiner@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Bug 25738: Skia: CSS border style not cleared for SVG object
+ https://bugs.webkit.org/show_bug.cgi?id=25738
+
+ If no dashing is set, this change reverts to solid stroke
+ (previously the code bailed and left the old setting, whatever it was)
+
+ Test case listed in above bug entry.
+ (Additional complications due to each platform rendering dotted lines differently -
+ c.f. https://bugs.webkit.org/show_bug.cgi?id=25737)
+
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::setLineDash):
+
+2009-05-11 Erik Arvidsson <arv@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Bug 21903: Adds DOM bindings for the placeholder property of the
+ HTMLInputElement.
+ https://bugs.webkit.org/show_bug.cgi?id=21903
+
+ Test: fast/forms/placeholder-dom-property.html
+
+ * dom/InputElement.cpp:
+ (WebCore::InputElement::updatePlaceholderVisibility):
+ * dom/InputElement.h:
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::placeholder):
+ (WebCore::HTMLInputElement::setPlaceholder):
+ * html/HTMLInputElement.h:
+ * html/HTMLInputElement.idl:
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::updateFromElement):
+ * wml/WMLInputElement.h:
+ (WebCore::WMLInputElement::placeholder):
+ (WebCore::WMLInputElement::setPlaceholder):
+
+2009-05-12 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25706
+
+ Change V8 bindings to match JSC bindings with respect to using
+ the lexical or dynamic global object.
+
+ Tests: http/tests/security/aboutBlank/security-context-grandchildren-lexical.html
+ http/tests/security/aboutBlank/security-context-grandchildren-write-lexical.html
+ http/tests/security/aboutBlank/security-context-grandchildren-writeln-lexical.html
+
+ * bindings/v8/custom/V8HTMLDocumentCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-03-19 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6702386> Incorrect bound check in SVGList::insertItemBefore
+
+ SVGList::insertItemBefore would not perform a bounds check on the
+ index it was provided, potentially leading to a buffer overflow.
+
+ Test: svg/dom/svglist-exception-on-out-bounds-error.html
+
+ * svg/SVGList.h:
+ (WebCore::SVGList::insertItemBefore):
+
+2009-05-12 Paul Godavari <paul@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Bug 25708: Cannot choose menu items in popups with many entries in Chromium
+ https://bugs.webkit.org/show_bug.cgi?id=25708
+
+ This change sets the window size for popups on Mac to include all items
+ in the menu. This is required for hit testing on Mac, where we use native
+ controls to manage the popups and don't want to artificially limit the
+ valid hit testing region to a limited scroll window.
+
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupListBox::layout):
+
+2009-05-12 Stephen White <senorblanco@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Fixes to build with latest skia: SkTypeface::Create() is now
+ SkTypeface::CreateFromName(); computeBounds() has been reworked
+ as getBounds(). The changes are placed behind an #ifdef for now,
+ so that we can roll back the skia version in Chromium if necessary
+ without having to roll back this change.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25705
+
+ * platform/graphics/chromium/FontCacheLinux.cpp:
+ (WebCore::FontCache::createFontPlatformData):
+ * platform/graphics/skia/PathSkia.cpp:
+ (WebCore::Path::boundingRect):
+ (WebCore::boundingBoxForCurrentStroke):
+ * platform/graphics/skia/SkiaUtils.cpp:
+ (WebCore::SkPathContainsPoint):
+
+2009-05-12 Nate Chapin <japhet@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25732
+ Update V8ElementCustom.cpp to match the current API of V8Proxy.
+
+ (WebCore::ACCESSOR_SETTER): Change retrieveActiveFrame() to retrieveFrameForEnteredContext().
+
+2009-05-12 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25694
+ HTMLParser::createHead() ASSERT: Creating an element, calling document.open() and writing
+ to the document NULL ptr
+
+ Test: fast/parser/implicit-head-in-fragment-crash.html
+
+ * html/HTMLParser.cpp: (WebCore::HTMLParser::bodyCreateErrorCheck): Do not try to implicitly
+ create <head> when parsing a fragment.
+
+2009-05-12 Soren Gjesse <sgjesse@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25687
+ Missing check for valid function in V8 bindings for toString function for event listeners.
+
+ * bindings/v8/V8LazyEventListener.cpp:
+ (WebCore::V8LazyEventListener::getWrappedListenerFunction): Added empty handle checks.
+
+2009-05-11 Yael Aharon <yael.aharon@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ Change Qt port to match the mac and windows ports, and unregister plugins when plugins are stopped.
+ Not doing that can cause assersion failure.
+ https://bugs.webkit.org/show_bug.cgi?id=25702
+
+ * plugins/qt/PluginViewQt.cpp:
+ (WebCore::PluginView::stop):
+
+2009-05-11 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ Bug 25714: [Qt] Decouple HTML5 Database support from the
+ SQLite/generic database support in the Qt port
+
+ <https://bugs.webkit.org/show_bug.cgi?id=25714>
+
+ * WebCore.pro:
+
+2009-05-11 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 25713: AX: Control Elements not identified in HTML content
+ https://bugs.webkit.org/show_bug.cgi?id=25713
+
+ Test: accessibility/onclick-handlers.html
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::mouseButtonListener):
+
+2009-05-11 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6276843> REGRESSION: TextIterator generates
+ an extra newline for ranges that start outside of body
+
+ * editing/TextIterator.cpp:
+ (WebCore::TextIterator::shouldRepresentNodeOffsetZero):
+ Check startPos for null, not just currPos.
+
+2009-05-11 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 25700: Regression:WebKit:cmd-left and cmd-right use to go to the beginning and end of a line in Mail
+ https://bugs.webkit.org/show_bug.cgi?id=25700
+
+ Keyboard selection movement handlers need to also watch for the Cmd key when Accessibility is enabled.
+ Note: This code is only used when accessibility is enabled.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleKeyboardSelectionMovement):
+
+2009-05-11 David Kilzer <ddkilzer@apple.com>
+
+ Bug 25087: Test for ENABLE_FOO macros consistently in IDL files
+
+ <https://bugs.webkit.org/show_bug.cgi?id=25087>
+
+ Reviewed by Timothy Hatcher.
+
+ Change tests for ENABLE macros to check for both existence and
+ value:
+
+ - Negative: #if !defined(ENABLE_FOO) || !ENABLE_FOO
+ - Positive: #if defined(ENABLE_FOO) && ENABLE_FOO
+
+ * css/CSSCharsetRule.idl:
+ * css/CSSPrimitiveValue.idl:
+ * css/RGBColor.idl:
+ * dom/Attr.idl:
+ * dom/DOMCoreException.idl:
+ * dom/DOMImplementation.idl:
+ * dom/Document.idl:
+ * dom/Element.idl:
+ * dom/Event.idl:
+ * dom/EventException.idl:
+ * dom/KeyboardEvent.idl:
+ * dom/MessagePort.idl:
+ * dom/MouseEvent.idl:
+ * dom/Node.idl:
+ * dom/ProcessingInstruction.idl:
+ * dom/Range.idl:
+ * dom/RangeException.idl:
+ * dom/WheelEvent.idl:
+ * html/CanvasPixelArray.idl:
+ * html/HTMLAnchorElement.idl:
+ * html/HTMLAppletElement.idl:
+ * html/HTMLAreaElement.idl:
+ * html/HTMLBaseFontElement.idl:
+ * html/HTMLCanvasElement.idl:
+ * html/HTMLDocument.idl:
+ * html/HTMLElement.idl:
+ * html/HTMLEmbedElement.idl:
+ * html/HTMLFrameElement.idl:
+ * html/HTMLIFrameElement.idl:
+ * html/HTMLImageElement.idl:
+ * html/HTMLInputElement.idl:
+ * html/HTMLLinkElement.idl:
+ * html/HTMLObjectElement.idl:
+ * html/HTMLOptionElement.idl:
+ * html/HTMLOptionsCollection.idl:
+ * html/HTMLSelectElement.idl:
+ * html/HTMLStyleElement.idl:
+ * html/ImageData.idl:
+ * inspector/InspectorController.idl:
+ * loader/appcache/DOMApplicationCache.idl:
+ * page/Console.idl:
+ * page/Coordinates.idl:
+ * page/DOMSelection.idl:
+ * page/DOMWindow.idl:
+ * page/Geoposition.idl:
+ * page/History.idl:
+ * page/Location.idl:
+ * page/Navigator.idl:
+ * svg/SVGElementInstance.idl:
+ * svg/SVGException.idl:
+ * workers/WorkerContext.idl:
+ * xml/XMLHttpRequestException.idl:
+ * xml/XPathException.idl:
+
+2009-05-11 Norbert Leser <norbert.leser@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 24538: class/struct mixup in forward declarations
+ https://bugs.webkit.org/show_bug.cgi?id=24538
+
+ * inspector/InspectorResource.h:
+ * loader/CachedFont.h:
+ * loader/appcache/ApplicationCache.h:
+ * rendering/RenderBlock.h:
+ * rendering/RootInlineBox.h:
+ * rendering/SVGInlineTextBox.h:
+ * svg/SVGGlyphElement.h:
+ * svg/SVGHKernElement.h:
+
+2009-05-11 Norbert Leser <norbert.leser@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 24539: Unresolved CSSMutableStyleDeclaration
+ https://bugs.webkit.org/show_bug.cgi?id=24539
+
+ The Symbian tools can't compile and link this without this include.
+ It's not clear why this is different from other toolsets or why it affects
+ only this header file, but adding the include for now.
+
+ * editing/RemoveCSSPropertyCommand.h: Added include of CSSMutableStyleDeclaration.h.
+
+2009-05-11 Alice Liu <alice.liu@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25701
+ REGRESSION(r38788 & r42020): styled searchfields look wrong on Windows, affects Facebook
+
+ Test: fast/forms/search-styled.html
+
+ * css/themeWin.css:
+ Remove the overriding of -webkit-appearance for searchfields. This will cause background
+ images to not be honored when styling searchfields
+
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::RenderThemeWin::adjustSearchFieldStyle):
+ * rendering/RenderThemeWin.h:
+ Re-instate final adjustments to searchfield styling that were removed in r42020
+
+2009-05-11 Brady Eidson <beidson@apple.com>
+
+ Fix Windows build
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::createCFURLResponseWithDefaultMIMEType):
+
+2009-05-11 Nate Chapin <japhet@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25626
+ Update V8ElementCustom.cpp to match the current API of Node.
+
+ * bindings/v8/custom/V8ElementCustom.cpp:
+ (WebCore::ACCESSOR_SETTER): Changed a couple of method names to match current names.
+ (WebCore::ACCESSOR_GETTER): Changed a method name to match current name.
+
+2009-05-11 Brady Eidson <beidson@apple.com>
+
+ Fix Windows build
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::createCFURLResponseWithDefaultMIMEType):
+ (WebCore::WebCoreSynchronousLoader::load):
+
+2009-05-11 Brady Eidson <beidson@apple.com>
+
+ Fix Windows build
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::createCFURLResponseWithDefaultMIMEType):
+
+2009-05-11 Nate Chapin <japhet@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ V8CustomBinding.cpp is missing a header file
+
+ https://bugs.webkit.org/show_bug.cgi?id=25644
+
+ * bindings/v8/custom/V8CustomBinding.cpp: Added #include "V8Proxy.h".
+
+2009-05-11 Aaron Boodman <aa@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25634
+ Change V8Proxy::retrieveActiveFrame() call sites to V8Proxy::retrieveFrameForEnteredContext().
+
+ Also, change instances of ScriptController::retrieveActiveFrame() to
+ V8::retrieveFrameForEnteredContext() for consistency.
+
+
+ See http://codereview.chromium.org/113085 for the corresponding Chromium change.
+
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ (WebCore::V8Custom::WindowSetLocation):
+ * bindings/v8/custom/V8HTMLDocumentCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8LocationCustom.cpp:
+ (WebCore::navigateIfAllowed):
+ (WebCore::ACCESSOR_SETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-05-11 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/5972751> Local image files (BMP, ico) can be misidentified as HTML.
+
+ First part of the fix - Disable content sniffing for file resources which never should've been happening anyways.
+ Second part of the fix - If the networking layer doesn't give us back a MIME type default to "application/octet-stream".
+
+ * platform/MIMETypeRegistry.cpp:
+ (WebCore::defaultMIMEType): "application/octet-stream"
+ * platform/MIMETypeRegistry.h:
+
+ * platform/network/ResourceHandle.cpp:
+ (WebCore::ResourceHandle::create): If content sniffing is true, double check with "shouldContentSniffRequest()" which
+ might override it to false.
+ (WebCore::ResourceHandle::shouldContentSniffURL): Return false for file:// urls, true for everything else.
+ * platform/network/ResourceHandle.h:
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::createCFURLResponseWithDefaultMIMEType): Create a copy of the CFURLRequest with the default MIME type instead
+ of null.
+ (WebCore::didReceiveResponse): If the MIME type for the response is null, create a copy with the default MIME type.
+ (WebCore::WebCoreSynchronousLoader::load): Use shouldContentSniffRequest() to make synchronous loads have the same
+ sniffing policy as asynchronous loads. Also, correct a null MIME type by creating a copy with the default type.
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::loadResourceSynchronously): Use shouldContentSniffRequest() to make synchronous loads have the
+ same sniffing policy as asynchronous loads.
+ (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]): Set up the [NSURLResponse MIMEType] swizzling if
+ it hasn't been set up yet.
+ (_web_NSURLResponse_MIMEType): Either return the actual MIME type of the response, or the default MIME type if it's nil.
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::loadRequestAsynchronously): Remove the workaround added in r29370 as it will now be covered by
+ the new mechanism.
+
+2009-05-11 David Kilzer <ddkilzer@apple.com>
+
+ Fix typo "APPLICATION_CAHE_DYNAMIC_ENTRIES" to "APPLICATION_CACHE_DYNAMIC_ENTRIES"
+
+ This was added in r39816 to disable dynamic entries. They are
+ still disabled after fixing the typo since this feature define
+ is never set anywhere.
+
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ * loader/appcache/DOMApplicationCache.idl:
+
+2009-05-11 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov and Adam Roben.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25348
+ Change WTF::ThreadIdentifier to be an actual (but wrapped) thread id, remove ThreadMap.
+
+ Most of the change is in WTF.
+ Unless noted, all the following files changed to use the new ThreadIdentifier::isValid()
+ method instead of just doing 'if(m_threadID)' kind of checks, since ThreadIdentifier
+ is now a class rather then an integer.
+ Also, there is no need to initialize threadID in constructors to 0 now.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::libxmlLoaderThread): use DEFINE_STATIC_LOCAL and accessor function for static thread id,
+ since now ThreadIdentifier needs construction and we avoid having global initializers.
+ (WebCore::matchFunc): use the new accessor function.
+ (WebCore::openFunc): ditto.
+ (WebCore::createStringParser): ditto.
+ (WebCore::createMemoryParser): ditto.
+ * loader/icon/IconDatabase.cpp:
+ (WebCore::IconDatabase::open):
+ * platform/sql/SQLiteDatabase.cpp:
+ (WebCore::SQLiteDatabase::SQLiteDatabase):
+ (WebCore::SQLiteDatabase::close):
+ * storage/DatabaseThread.cpp:
+ (WebCore::DatabaseThread::start):
+ (WebCore::DatabaseThread::databaseThread): remove m_threadID from debug output.
+ * storage/LocalStorageThread.cpp:
+ (WebCore::LocalStorageThread::start):
+ (WebCore::LocalStorageThread::scheduleImport):
+ (WebCore::LocalStorageThread::scheduleSync):
+ (WebCore::LocalStorageThread::terminate):
+ * workers/WorkerThread.cpp:
+ (WebCore::WorkerThread::start):
+ (WebCore::WorkerThread::WorkerThread):
+ (WebCore::WorkerThread::start):
+
+2009-05-11 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Remove unused header that declared one function which was never defined anywhere.
+
+ * WebCore.vcproj/WebCore.vcproj:
+ * platform/network/cf/ResourceResponseCFNet.cpp: Change to include ResourceResponse.h (which really means
+ platform/network/cf/ResourceResponse.h)
+ * platform/network/cf/ResourceResponseCFNet.h: Removed.
+
+2009-05-11 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25213
+ Fix assert during Inspector destruction.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::inspectedPageDestroyed): Moved closing
+ inspector above removing InspectorController object to fix JS errors,
+ added clearing inspector page ptr.
+
+2009-05-11 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ [Qt] Make sure that public APIs are properly exported on all Qt platforms
+ https://bugs.webkit.org/show_bug.cgi?id=25601
+
+ * WebCore.pro: Define QT_MAKEDLL for all non-static builds, not just for win
+
+2009-05-11 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24284
+
+ * WebCore.pro: duplicated values removed from INCLUDEPATH
+
+2009-05-11 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Eric Seidel.
+
+ Build fix Symbian; clean Up WebKit/Qt if ENABLE_NETSCAPE_PLUGIN_API=0
+ https://bugs.webkit.org/show_bug.cgi?id=24688
+
+ * WebCore.pro: Use platform independent plugin stubs if ENABLE_NETSCAPE_PLUGIN_API=0
+ * platform/qt/TemporaryLinkStubs.cpp: Remove stub functions for plugins
+
+2009-05-10 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix a crash when deactivating a document that had adopted a <form>
+ element
+
+ Test: fast/dom/HTMLFormElement/document-deactivation-callback-crash.html
+
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::didMoveToNewOwnerDocument): Corrected the
+ logic here: <form> elements should be registered for document activation
+ callbacks if and only if autocomplete is off.
+
+2009-05-10 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6867598> REGRESSION (r42483): Have to enter credentials twice when trying
+ to view protected MobileMe video
+
+ Add a temporary workaround.
+
+ * platform/network/ResourceHandleInternal.h:
+ (WebCore::ResourceHandleInternal::ResourceHandleInternal):
+ Added an m_useSiteSpecificQuirks boolean (Mac-only). A Frame pointer is only available when
+ starting a request, so we need to store this data for later use.
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::start): Initialize m_useSiteSpecificQuirks.
+ (WebCore::ResourceHandle::receivedCredential): Use per-session credentials with gallery.me.com.
+
+2009-05-10 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6870383> Have to enter credentials twice when downloading from a protected page
+
+ * platform/network/cf/AuthenticationCF.cpp:
+ * platform/network/cf/AuthenticationCF.h:
+ (WebCore::WebCoreCredentialStorage::set):
+ (WebCore::WebCoreCredentialStorage::get):
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ Move WebCore credential storage to AuthenticationCF, so that WebKit could use it (macthing
+ an earlier Mac change).
+
+2009-05-10 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Match newer XMLHttpRequest draft and make withCredential setter raise an exception when
+ called at a wrong time.
+
+ No test, because we are waiting for a newer version of system frameworks to test the attribute.
+
+ * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::setWithCredentials):
+ * xml/XMLHttpRequest.h:
+ * xml/XMLHttpRequest.idl:
+ Raise INVALID_STATE_ERR if the state is not OPENED, or if the send() flag is true.
+
+2009-05-10 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Dave Kilzer.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=25602
+ REGRESSION: fast/overflow/overflow-focus-ring.html seems double-drawn
+ on ToT
+
+ Test: fast/layers/self-painting-outline.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::paintLayer): Paint the layer's own outline only
+ if it is a self-painting layer.
+
+2009-05-09 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Geoffrey Garen and Mark Rowe.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=25666
+ Assertion failure in Node::setDocument()
+ (willMoveToNewOwnerDocumentWasCalled) when adopting a <form> element
+
+ Test: fast/dom/HTMLFormElement/adopt-assertion.html
+
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::willMoveToNewOwnerDocument): Overrides of
+ this method are required to call the base class implementation. Do it.
+ (WebCore::HTMLFormElement::didMoveToNewOwnerDocument): Ditto.
+
+2009-03-29 Kevin Ollivier <kevino@theolliviers.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ WebCore::DocumentLoader::mainReceivedError now asserts if error.isNull(), so
+ make sure CURL does not create empty ResourceError() objects.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24927
+
+ * platform/network/curl/ResourceHandleManager.cpp:
+ (WebCore::ResourceHandleManager::downloadTimerCallback):
+
+2009-05-09 Gustavo Noronha Silva <gns@gnome.org>
+
+ Build fix, adding missing files to make dist.
+
+ * GNUmakefile.am:
+
+2009-05-08 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=25656
+
+ Reduce the inline capacity of CSSParserValueList's m_values
+ vector to reduce the size of CSSParserValueList from 544 to 160 bytes in 64-bit.
+
+ * css/CSSParserValues.h:
+
+2009-05-08 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Not reviewed. Used sort-Xcode-project-file to sort the XCode project file - it hasn't been done for a while.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-05-08 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix <rdar://problem/6864786> REGRESSION: Crash below
+ ApplyStyleCommand::applyInlineStyleToRange when reviewing a patch in
+ Bugzilla
+
+ Test: editing/style/apply-through-end-of-document.html
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::applyInlineStyleToRange): Added a null
+ check for the case of a range extending through the end of the document,
+ in which pastEndNode is 0.
+
+2009-05-08 Douglas R. Davidson <ddavidso@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ <rdar://problem/6857446> REGRESSION (Safari 3-4): Contraction base
+ marked as misspelled even though contraction is a word
+ Make sure spelling underline does not persist on words like
+ <doesn't>.
+
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::typingAddedToOpenCommand):
+
+2009-05-08 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Make sure the path's refdata isn't deleted before we're done with the object.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25652
+
+ * platform/graphics/wx/PathWx.cpp:
+ (WebCore::Path::~Path):
+ (WebCore::Path::Path):
+ (WebCore::Path::translate):
+
+2009-05-08 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for memory leak on Mac.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25650
+
+ * platform/wx/wxcode/mac/carbon/fontprops.cpp:
+ (wxFontProperties::wxFontProperties):
+
+2009-05-08 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6857446> REGRESSION (r37591): Cannot print or
+ preview from maps.yandex.ru
+
+ We need to fall into the stretchesToViewHeight() quirk when we are
+ printing and we are the root and the root has percentage height OR
+ when we are the body and the root has percentage height. Otherwise
+ we have a height of 0 and can run into painting troubles.
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::calcHeight):
+
+2009-05-08 Douglas Davidson <ddavidso@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fixes for <rdar://problem/6852771>.
+ Prevent text checking replacement immediately after an apostrophe
+ and automatic link addition except immediately after typing.
+
+ * editing/Editor.cpp:
+ (WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
+
+2009-05-08 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25627
+ Bug 25627: HTMLMediaElement: some errors should fire on <source> elements
+
+ Update for HTML5 spec change to fire 'error' events on <source> element
+ when there is a failure while processing/loading a <source>.
+
+ Test: media/video-source-error.html
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::enqueueEvent): Remove white-space.
+ (WebCore::HTMLMediaElement::loadInternal): Call cancelPendingEventsAndCallbacks instead
+ of just calling m_pendingEvents.clear() as we now also need to cancel pending errors on
+ all <source> element.
+ (WebCore::HTMLMediaElement::selectMediaResource): Call isSafeToLoadURL() here instead of in
+ loadResource() as we need to report errors differently depending on the type of failure. Use
+ KURL instead of String.
+ (WebCore::HTMLMediaElement::loadNextSourceChild): nextSourceChild -> selectNextSourceChild.
+ Fail silently when there are no more <source> canditates because that is what spec mandates.
+ Keep url as KURL instead of converting to String.
+ (WebCore::HTMLMediaElement::loadResource): ASSERT that the URL is safe to load as we now
+ assume the safety check now done before this function. Takes KURL instead of String.
+ (WebCore::HTMLMediaElement::isSafeToLoadURL): New, checks to see if a url is safe to load, logs
+ failure if not.
+ (WebCore::HTMLMediaElement::noneSupported): MEDIA_ERR_NONE_SUPPORTED -> MEDIA_ERR_SRC_NOT_SUPPORTED
+ (WebCore::HTMLMediaElement::cancelPendingEventsAndCallbacks): New, clear all events pending on
+ the media and all source elements.
+ (WebCore::HTMLMediaElement::setNetworkState): Fire an error on the source element when the
+ the failure happened while processing one. Only call nonSupported() when the failure happened
+ while processing media element 'src' attribute.
+ (WebCore::HTMLMediaElement::havePotentialSourceChild): nextSourceChild -> selectNextSourceChild.
+ Deal with selectNextSourceChild returning a KURL instead of a String.
+ (WebCore::HTMLMediaElement::selectNextSourceChild): Renamed from nextSourceChild, add optional
+ param to control whether or not errors are fired on a source element when it will not be used.
+ Check safety of url here instead of waiting until loadResource(). Return a KURL instead of a
+ String.
+ (WebCore::HTMLMediaElement::initialURL): nextSourceChild -> selectNextSourceChild. Keep url as
+ a KURL instead of a String.
+ * html/HTMLMediaElement.h:
+ (WebCore::HTMLMediaElement::):
+
+ * html/HTMLSourceElement.cpp:
+ (WebCore::HTMLSourceElement::HTMLSourceElement): Initialize timer related variables.
+ (WebCore::HTMLSourceElement::scheduleErrorEvent): New, start one-shot timer to fire an error
+ event ASAP.
+ (WebCore::HTMLSourceElement::cancelPendingErrorEvent): New, cancel pending error event.
+ (WebCore::HTMLSourceElement::errorEventTimerFired): New, fire error event if it has not been
+ cancelled.
+ * html/HTMLSourceElement.h:
+
+ * html/MediaError.h:
+ (WebCore::MediaError::): MEDIA_ERR_NONE_SUPPORTED -> MEDIA_ERR_SRC_NOT_SUPPORTED
+ * html/MediaError.idl: Ditto
+
+2009-05-08 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ - fix <rdar://problem/6859955> Undoing typed text after selecting all
+ leaves non-text areas highlighted
+
+ Test: fast/repaint/selection-clear.html
+
+ When RenderView::clearSelection() is called from
+ SelectionController::nodeWillBeRemoved(), selected renderers may already
+ be marked for layout, which means that they can no longer compute
+ their selection repaint info. Instead, an empty IntRect (or GapRects) is
+ returned, leading to incomplete repaint.
+
+ The fix is not to rely on individual renderers when clearing the
+ selection, but instead, cache the bounding rectangle of the selected
+ blocks' GapRects when setting the selection, and invalidate that
+ entire rectangle when clearing it.
+
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::setSelection): Added a parameter saying whether
+ the repainting of selected blocks should include both
+ previously-selected areas and newly-selected areas or only
+ newly-selected areas. The default is both. Also compute
+ m_cachedSelectionBounds to be the bounding rectangle of the
+ new selection's BlockSelectionInfos' GapRects.
+ (WebCore::RenderView::clearSelection): Repaint m_cachedSelectionBounds,
+ and tell setSelection() that it should not paint areas that were in
+ the old selection's BlockSelectionInfos' GapRects.
+ * rendering/RenderView.h:
+ (WebCore::RenderView::):
+
+2009-05-08 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ <rdar://problem/6868773> NPN_GetAuthenticationInfo does not work with non-permanent credentials
+
+ * WebCore.base.exp:
+ * platform/network/mac/AuthenticationMac.h:
+ (WebCore::WebCoreCredentialStorage::set):
+ (WebCore::WebCoreCredentialStorage::get):
+ * platform/network/mac/AuthenticationMac.mm:
+ * platform/network/mac/ResourceHandleMac.mm:
+ Moved WebCoreCredentialStorage to AuthenticationMac, so that it could be used from WebKit.
+
+2009-05-08 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Fix the Qt build, add missing JSC_HOST_CALL macros to the runtime
+ call methods.
+
+ * bridge/qt/qt_runtime.h:
+
+2009-05-08 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Add missing strings to localizedStrings.js
+ https://bugs.webkit.org/show_bug.cgi?id=25635
+
+ Add the strings "Delete", "Key", "Refresh" and "Value".
+
+ * English.lproj/localizedStrings.js:
+
+2009-05-08 Robert Hogan <robert@roberthogan.net>
+
+ Reviewed, tweaked and landed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24992
+ [Qt] crash at http://browserspy.dk/browser.php
+
+ This cannot be easily tested in DRT, because it relies on interaction with QApplication,
+ but the added assertions guard against re-introducing this issue.
+
+ * loader/FrameLoader.cpp: (WebCore::FrameLoader::didOpenURL): Don't make client calls
+ while the frame is being constructed, because the intermediate state without a document
+ is something we don't want to expose.
+
+ * page/Frame.cpp:
+ (WebCore::Frame::setJSStatusBarText): Assert that the frame has a document, which is an
+ approximation of it being in a consistent state for client calls.
+ (WebCore::Frame::setJSDefaultStatusBarText): Ditto.
+
+2009-05-07 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Oliver Hunt.
+
+ Fix <https://bugs.webkit.org/show_bug.cgi?id=25640>.
+ Bug 25640: Crash on quit in r43384 nightly build on Leopard w/ Safari 4 beta installed
+
+ Roll out r43366 as it removed symbols that Safari 4 Beta uses.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::matchFunc):
+ (WebCore::openFunc):
+ (WebCore::createStringParser):
+ (WebCore::createMemoryParser):
+ * loader/icon/IconDatabase.cpp:
+ (WebCore::IconDatabase::open):
+ * platform/sql/SQLiteDatabase.cpp:
+ (WebCore::SQLiteDatabase::SQLiteDatabase):
+ (WebCore::SQLiteDatabase::close):
+ * storage/DatabaseThread.cpp:
+ (WebCore::DatabaseThread::DatabaseThread):
+ (WebCore::DatabaseThread::start):
+ (WebCore::DatabaseThread::databaseThread):
+ * storage/LocalStorageThread.cpp:
+ (WebCore::LocalStorageThread::LocalStorageThread):
+ (WebCore::LocalStorageThread::start):
+ (WebCore::LocalStorageThread::localStorageThread):
+ (WebCore::LocalStorageThread::scheduleImport):
+ (WebCore::LocalStorageThread::scheduleSync):
+ (WebCore::LocalStorageThread::terminate):
+ * workers/WorkerThread.cpp:
+ (WebCore::WorkerThread::WorkerThread):
+ (WebCore::WorkerThread::start):
+
+2009-05-08 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Unify scrolling code via adjustments and keys. Use the WebCore
+ defined constants, since that's what people are most used to at
+ this point.
+
+ * platform/gtk/ScrollViewGtk.cpp:
+ (WebCore::ScrollView::platformHandleHorizontalAdjustment):
+ (WebCore::ScrollView::platformHandleVerticalAdjustment):
+
+2009-05-07 David Levin <levin@chromium.org>
+
+ Reviewed by NOBODY.
+ Suggested by Oliver Hunt.
+
+ Rolling back http://trac.webkit.org/changeset/43385
+ because we have to use mac artwork for the underline on OSX.
+
+ * platform/graphics/cg/GraphicsContextCG.cpp:
+ * platform/graphics/mac/GraphicsContextMac.mm:
+ (WebCore::createPatternColor):
+ (WebCore::GraphicsContext::drawLineForMisspellingOrBadGrammar):
+ * platform/graphics/win/GraphicsContextCGWin.cpp:
+ (WebCore::setCGStrokeColor):
+ (WebCore::spellingPatternColor):
+ (WebCore::grammarPatternColor):
+ (WebCore::GraphicsContext::drawLineForMisspellingOrBadGrammar):
+
+2009-05-07 John Grabowski <jrg@chromium.org>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25573
+ Unify use of CG-common routine for drawLineForMisspellingOrBadGrammar.
+ Cleanup for WebKit, but required for Chromium happiness.
+
+ * platform/graphics/cg/GraphicsContextCG.cpp:
+ (WebCore::spellingPatternColor):
+ (WebCore::grammarPatternColor):
+ (WebCore::GraphicsContext::drawLineForMisspellingOrBadGrammar):
+ * platform/graphics/mac/GraphicsContextMac.mm:
+ * platform/graphics/win/GraphicsContextCGWin.cpp:
+
+2009-05-07 Darin Adler <darin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Bug 25575: Registered mutation event listener crashes HTMLMediaElement
+ https://bugs.webkit.org/show_bug.cgi?id=25575
+
+ Test: fast/media/video-controls-with-mutation-event-handler.html
+
+ * rendering/MediaControlElements.cpp:
+ (WebCore::MediaControlTimelineElement::MediaControlTimelineElement): Don't call setAttribute.
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::createTimeline): Call setAttribute here.
+
+2009-05-07 Simon Fraser <simon.fraser@apple.com>
+
+ Rubber Stamped by Dave Hyatt
+
+ Shuffle the data members to minimize padding.
+
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::RenderTableSection):
+ * rendering/RenderTableSection.h:
+
+2009-05-07 Simon Fraser <simon.fraser@apple.com>
+
+ Rubber Stamped by Dave Hyatt
+
+ Shuffle the data members to make Events 8 bytes smaller in 64-bit.
+
+ * dom/Event.cpp:
+ (WebCore::Event::Event):
+ * dom/Event.h:
+
+2009-05-07 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Beth Dakin.
+
+ Fix regression caused by r41469, add test case to prevent it from
+ happening again.
+ https://bugs.webkit.org/show_bug.cgi?id=25252
+
+ hasLayer() was true during removeOnlyThisLayer()/
+ updateLayerPositions()
+ which caused updateLayerPosition()'s walk up the render tree to
+ include offsets from the layer we were about to remove.
+
+ I'm not 100% convinced that this wasn't a bug in
+ updateLayerPosition() or in RenderBoxModelObject::styleDidChange,
+ because the layer in question is not the containing block for the
+ block which gets laid out wrong. But this restores the previous
+ behavior and adds a test. So the next time someone is in here re-
+ factoring, they will at least know if they break something.
+
+ Test: fast/layers/remove-only-this-layer-update.html
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::destroyLayer):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::removeOnlyThisLayer):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::destroy):
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::destroy):
+
+2009-05-07 Dmitry Titov <dimich@chromium.org>
+
+ Attempt to fix GTK build.
+
+ * platform/graphics/GlyphPageTreeNode.h: add #include <string.h> to ensure memcpy and memset are defined.
+
+2009-05-07 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Improve native call performance
+
+ Add calling convention declarations where necessary, and update bindings
+ script to generate them as well.
+
+ * bindings/js/JSHTMLCollectionCustom.cpp:
+ (WebCore::callHTMLCollection):
+ * bindings/js/JSNodeListCustom.cpp:
+ (WebCore::callNodeList):
+ * bindings/js/JSPluginElementFunctions.cpp:
+ (WebCore::callPlugin):
+ * bindings/js/JSQuarantinedObjectWrapper.h:
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * bridge/runtime_method.cpp:
+ (JSC::callRuntimeMethod):
+ * bridge/runtime_object.cpp:
+ (JSC::callRuntimeObject):
+
+2009-05-07 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Dave Hyatt.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=25617
+
+ Fix memory/performance regression because of too much form control related abstraction just for WMLs sake.
+
+ Remove FormControlElement and FormControlElementWithState base classes, as the overhead is too high for the
+ gain. HTML has no benefit of that kind of abstraction, so we're going to move the functionality to Element directly.
+
+ The functions now living in FormControlElement(WithState) lived in Node/Element/HTMLFormControlElement before.
+ This patches moves all of them in a central place in Element.h, as virtual functions with an inline default implementation.
+ To avoid confusion like isEnabled() living on Node, before the creation of the FormControlElement abstraction layer, all
+ methods are renamed to clarify where they belong to. All renames are listed here:
+
+ From FormControlElement:
+ - isEnabled() -> isEnabledFormControl()
+ - isReadOnly() -> isReadOnlyFormControl()
+ - isTextControl() -> isTextFormControl()
+ - valueMatchesRenderer() -> formControlValueMatchesRenderer()
+ - setValueMatchesRenderer() -> setFormControlValueMatchesRenderer()
+ - name() -> formControlName()
+ - type() -> formControlType()
+
+ From FormControlElementWithState:
+ - saveState() -> saveFormControlState()
+ - restoreState() -> restoreFormControlState()
+
+ A lot of Element -> FormControlElement(WithState) casting is gone again, so it's not only a memory, but also a performance progression.
+
+ No testcases affected, no new tests needed.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::canShareStyleWithElement):
+ (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector):
+ * dom/Document.cpp:
+ (WebCore::Document::formElementsState):
+ * dom/Document.h:
+ (WebCore::Document::registerFormElementWithState):
+ (WebCore::Document::unregisterFormElementWithState):
+ * dom/Element.h:
+ (WebCore::Element::isFormControlElement):
+ (WebCore::Element::isEnabledFormControl):
+ (WebCore::Element::isReadOnlyFormControl):
+ (WebCore::Element::isTextFormControl):
+ (WebCore::Element::formControlValueMatchesRenderer):
+ (WebCore::Element::setFormControlValueMatchesRenderer):
+ (WebCore::Element::formControlName):
+ (WebCore::Element::formControlType):
+ (WebCore::Element::saveFormControlState):
+ (WebCore::Element::restoreFormControlState):
+ * dom/FormControlElement.cpp: Removed.
+ * dom/FormControlElement.h: Removed.
+ * dom/FormControlElementWithState.cpp: Removed.
+ * dom/FormControlElementWithState.h: Removed.
+ * dom/InputElement.cpp:
+ (WebCore::InputElement::setValueFromRenderer):
+ * html/HTMLButtonElement.cpp:
+ (WebCore::HTMLButtonElement::formControlType):
+ * html/HTMLButtonElement.h:
+ * html/HTMLFieldSetElement.cpp:
+ (WebCore::HTMLFieldSetElement::formControlType):
+ * html/HTMLFieldSetElement.h:
+ * html/HTMLFormControlElement.cpp:
+ (WebCore::HTMLFormControlElement::attach):
+ (WebCore::HTMLFormControlElement::formControlName):
+ (WebCore::HTMLFormControlElement::willValidate):
+ (WebCore::HTMLFormControlElementWithState::HTMLFormControlElementWithState):
+ (WebCore::HTMLFormControlElementWithState::~HTMLFormControlElementWithState):
+ (WebCore::HTMLFormControlElementWithState::willMoveToNewOwnerDocument):
+ (WebCore::HTMLFormControlElementWithState::didMoveToNewOwnerDocument):
+ (WebCore::HTMLFormControlElementWithState::finishParsingChildren):
+ * html/HTMLFormControlElement.h:
+ (WebCore::HTMLFormControlElement::isTextFormControl):
+ (WebCore::HTMLFormControlElement::isEnabledFormControl):
+ (WebCore::HTMLFormControlElement::formControlValueMatchesRenderer):
+ (WebCore::HTMLFormControlElement::setFormControlValueMatchesRenderer):
+ (WebCore::HTMLFormControlElement::isReadOnlyFormControl):
+ (WebCore::HTMLFormControlElement::type):
+ (WebCore::HTMLFormControlElement::name):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::formControlName):
+ (WebCore::HTMLInputElement::formControlType):
+ (WebCore::HTMLInputElement::saveFormControlState):
+ (WebCore::HTMLInputElement::restoreFormControlState):
+ (WebCore::HTMLInputElement::parseMappedAttribute):
+ (WebCore::HTMLInputElement::detach):
+ (WebCore::HTMLInputElement::setValue):
+ (WebCore::HTMLInputElement::setFileListFromRenderer):
+ * html/HTMLInputElement.h:
+ (WebCore::HTMLInputElement::readOnly):
+ (WebCore::HTMLInputElement::isTextFormControl):
+ * html/HTMLKeygenElement.cpp:
+ (WebCore::HTMLKeygenElement::formControlType):
+ * html/HTMLKeygenElement.h:
+ * html/HTMLLegendElement.cpp:
+ (WebCore::HTMLLegendElement::formControlType):
+ * html/HTMLLegendElement.h:
+ * html/HTMLOptGroupElement.cpp:
+ (WebCore::HTMLOptGroupElement::formControlType):
+ * html/HTMLOptGroupElement.h:
+ * html/HTMLOptionElement.cpp:
+ (WebCore::HTMLOptionElement::formControlType):
+ * html/HTMLOptionElement.h:
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::formControlType):
+ (WebCore::HTMLSelectElement::saveFormControlState):
+ (WebCore::HTMLSelectElement::restoreFormControlState):
+ * html/HTMLSelectElement.h:
+ * html/HTMLTextAreaElement.cpp:
+ (WebCore::HTMLTextAreaElement::HTMLTextAreaElement):
+ (WebCore::HTMLTextAreaElement::formControlType):
+ (WebCore::HTMLTextAreaElement::saveFormControlState):
+ (WebCore::HTMLTextAreaElement::restoreFormControlState):
+ (WebCore::HTMLTextAreaElement::updateValue):
+ (WebCore::HTMLTextAreaElement::setValue):
+ * html/HTMLTextAreaElement.h:
+ (WebCore::HTMLTextAreaElement::readOnly):
+ (WebCore::HTMLTextAreaElement::isTextFormControl):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::isEnabled):
+ (WebCore::AccessibilityRenderObject::canSetFocusAttribute):
+ * page/DragController.cpp:
+ (WebCore::DragController::concludeEditDrag):
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::itemIsEnabled):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::updateUserModifyProperty):
+ (WebCore::RenderTextControl::setInnerTextValue):
+ * rendering/RenderTextControl.h:
+ * rendering/RenderTextControlMultiLine.cpp:
+ (WebCore::RenderTextControlMultiLine::subtreeHasChanged):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::updateFromElement):
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::isEnabled):
+ (WebCore::RenderTheme::isReadOnlyControl):
+ * rendering/RenderThemeChromiumMac.mm:
+ (WebCore::RenderThemeChromiumMac::adjustMenuListStyle):
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::adjustMenuListStyle):
+ * rendering/RenderThemeSafari.cpp:
+ (WebCore::RenderThemeSafari::adjustMenuListStyle):
+ * wml/WMLFormControlElement.cpp:
+ * wml/WMLFormControlElement.h:
+ (WebCore::WMLFormControlElement::isReadOnlyFormControl):
+ (WebCore::WMLFormControlElement::isTextFormControl):
+ (WebCore::WMLFormControlElement::formControlValueMatchesRenderer):
+ (WebCore::WMLFormControlElement::setFormControlValueMatchesRenderer):
+ * wml/WMLInputElement.cpp:
+ (WebCore::WMLInputElement::WMLInputElement):
+ (WebCore::WMLInputElement::isKeyboardFocusable):
+ (WebCore::WMLInputElement::isMouseFocusable):
+ (WebCore::WMLInputElement::dispatchBlurEvent):
+ (WebCore::WMLInputElement::formControlType):
+ (WebCore::WMLInputElement::formControlName):
+ (WebCore::WMLInputElement::setValue):
+ (WebCore::WMLInputElement::saveFormControlState):
+ (WebCore::WMLInputElement::restoreFormControlState):
+ (WebCore::WMLInputElement::parseMappedAttribute):
+ (WebCore::WMLInputElement::detach):
+ (WebCore::WMLInputElement::appendFormData):
+ (WebCore::WMLInputElement::init):
+ * wml/WMLInputElement.h:
+ (WebCore::WMLInputElement::isTextFormControl):
+ * wml/WMLOptGroupElement.cpp:
+ (WebCore::WMLOptGroupElement::formControlType):
+ * wml/WMLOptGroupElement.h:
+ * wml/WMLOptionElement.cpp:
+ (WebCore::WMLOptionElement::formControlType):
+ * wml/WMLOptionElement.h:
+
+2009-05-07 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov and Adam Roben.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25348
+ Change WTF::ThreadIdentifier to be an actual (but wrapped) thread id, remove ThreadMap.
+
+ Most of the change is in WTF.
+ Unless noted, all the following files changed to use the new ThreadIdentifier::isValid()
+ method instead of just doing 'if(m_threadID)' kind of checks, since ThreadIdentifier
+ is now a class rather then an integer.
+ Also, there is no need to initialize threadID in constructors to 0 now.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::libxmlLoaderThread): use DEFINE_STATIC_LOCAL and accessor function for static thread id,
+ since now ThreadIdentifier needs construction and we avoid having global initializers.
+ (WebCore::matchFunc): use the new accessor function.
+ (WebCore::openFunc): ditto.
+ (WebCore::createStringParser): ditto.
+ (WebCore::createMemoryParser): ditto.
+ * loader/icon/IconDatabase.cpp:
+ (WebCore::IconDatabase::open):
+ * platform/sql/SQLiteDatabase.cpp:
+ (WebCore::SQLiteDatabase::SQLiteDatabase):
+ (WebCore::SQLiteDatabase::close):
+ * storage/DatabaseThread.cpp:
+ (WebCore::DatabaseThread::start):
+ (WebCore::DatabaseThread::databaseThread): remove m_threadID from debug output.
+ * storage/LocalStorageThread.cpp:
+ (WebCore::LocalStorageThread::start):
+ (WebCore::LocalStorageThread::scheduleImport):
+ (WebCore::LocalStorageThread::scheduleSync):
+ (WebCore::LocalStorageThread::terminate):
+ * workers/WorkerThread.cpp:
+ (WebCore::WorkerThread::start):
+ (WebCore::WorkerThread::WorkerThread):
+ (WebCore::WorkerThread::start):
+
+2009-05-07 Simon Fraser <simon.fraser@apple.com>
+
+ Rubber Stamped by Dave Hyatt
+
+ Shuffle the data members to minimize padding.
+
+ * dom/ClassNames.h:
+
+2009-05-07 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/6864062> Shrink GlyphPage from 4112 to 2576 bytes in 64-bit
+ https://bugs.webkit.org/show_bug.cgi?id=25605
+
+ Shrink GlyphPage by splitting the array of GlyphData, which has lots
+ of padding, into separate Glyph and SimpleFontData* arrays.
+
+ * platform/graphics/Font.h:
+ glyphDataForCharacter has to return a GlyphData by value now.
+
+ * platform/graphics/FontFastPath.cpp:
+ (WebCore::Font::glyphDataForCharacter):
+ Return GlyphData by value.
+
+ * platform/graphics/GlyphPageTreeNode.cpp:
+ (WebCore::GlyphPageTreeNode::initializePage):
+ Better encapsulation of GlyphPage, using the new methods.
+
+ * platform/graphics/Font.h:
+ * platform/graphics/FontFastPath.cpp:
+ (WebCore::Font::glyphDataForCharacter):
+ * platform/graphics/GlyphPageTreeNode.cpp:
+ (WebCore::GlyphPageTreeNode::initializePage):
+ * platform/graphics/GlyphPageTreeNode.h:
+ (WebCore::GlyphData::GlyphData):
+ (WebCore::GlyphPage::indexForCharacter):
+ (WebCore::GlyphPage::glyphDataForCharacter):
+ (WebCore::GlyphPage::glyphDataForIndex):
+ (WebCore::GlyphPage::glyphAt):
+ (WebCore::GlyphPage::fontDataForCharacter):
+ (WebCore::GlyphPage::setGlyphDataForCharacter):
+ (WebCore::GlyphPage::setGlyphDataForIndex):
+ (WebCore::GlyphPage::copyFrom):
+ (WebCore::GlyphPage::clear):
+
+2009-05-07 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25625
+ Implement Image/Option constructors in V8 bindings.
+
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ (WebCore::NAMED_PROPERTY_GETTER): Removed old JS-based code.
+ * bindings/v8/custom/V8HTMLImageElementConstructor.cpp: Added.
+ * bindings/v8/custom/V8HTMLOptionElementConstructor.cpp: Added.
+
+2009-05-07 Brady Eidson <beidson@apple.com>
+
+ I hate myself for doing this, but need to fix that ChangeLog entry.
+
+ * ChangeLog:
+
+2009-05-07 Brady Eidson <beidson@apple.com>
+
+ Rubberstamped by Darin Adler
+
+ * html/HTMLParser.cpp: Use the correct style of BUILDING_ON_* for WebCore.
+ * html/HTMLParser.h: Ditto
+
+2009-05-07 David Hyatt <hyatt@apple.com>
+
+ Restore intrinsic margins to all form controls on Mac and Windows. Some of this regressed in 43007
+ when textareas were given explicit margins. Some of it had already regressed earlier whenever intrinsic
+ margins were turned off in themeWin.css.
+
+ Reviewed by Beth Dakin.
+
+ * css/html4.css:
+ * css/themeWin.css:
+
+2009-05-07 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler and Alexey Proskuryakov.
+
+ <rdar://problem/6863795> Exception occurs in Mail when attempting to create signatures due to <head> element creation
+
+ * dom/Document.cpp:
+ (WebCore::Document::implicitClose): Check shouldCreateImplicitHead() before creating it.
+
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::handleError): Check shouldCreateImplicitHead() before creating it.
+ (WebCore::HTMLParser::bodyCreateErrorCheck): Ditto.
+ (WebCore::shouldCreateImplicitHead): For Tiger/Leopard when running under Mail, the implicit <head> shouldn't be created.
+ * html/HTMLParser.h:
+ (WebCore::shouldCreateImplicitHead): Inline implementation for non-Tiger/Leopard platforms
+
+2009-05-07 Antony Sargent <asargent@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Fix a memory leak in V8EventListenerList::remove.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25618
+
+ No new functionality so no new tests.
+
+ * bindings/v8/V8EventListenerList.cpp:
+ (WebCore::V8EventListenerList::remove):
+
+2009-05-07 Darin Fisher <darin@chromium.org>
+
+ Fix Chromium build bustage.
+
+ * bindings/v8/custom/V8HTMLFormElementCustom.cpp: Add missing
+ HTMLCollection.h include.
+
+2009-05-07 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 25598: AX: if a radio button has a label and a title, the label is not exposed
+ https://bugs.webkit.org/show_bug.cgi?id=25598
+
+ Test: accessibility/radio-button-title-label.html
+
+ * page/AccessibilityObject.h:
+ (WebCore::AccessibilityObject::exposesTitleUIElement):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::exposesTitleUIElement):
+ (WebCore::AccessibilityRenderObject::titleUIElement):
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+ * page/AccessibilityRenderObject.h:
+
+2009-05-07 Darin Fisher <darin@chromium.org>
+
+ Fix Chromium build bustage.
+
+ * bindings/v8/custom/V8HTMLFormElementCustom.cpp:
+ (WebCore::INDEXED_PROPERTY_GETTER): ":" should be "::"
+
+2009-05-07 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25610
+ [GTK] text.caretOffset is reportedly always 0
+
+ Use the right function to get the caret offset in an
+ element. selectionStart() would only work for text
+ controls (there's even an ASSERT when calculating the selected
+ text range). Instead just get the selection and get the offset of
+ the start position.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-05-07 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix support for antialiased CSS border-radius
+
+ WebKit implements border-radius by drawing a double-size border,
+ and then letting the clip constrain the border to the right width
+ and position. This requires support for antialiased clipping, as
+ well as painting, to get a nice smooth border.
+
+ Qt only does antialiased clipping if the anti-alias flag is set
+ at the time of clipping, so we have to enable this in the method
+ addInnerRoundedRectClip(), as well as when we draw the border.
+
+ Currently the raster-engine is the only Qt paint engine to support
+ anti-aliased clipping, but the OpenGL and Mac paint engines could
+ potentially support this in the future.
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContext::strokeArc):
+ (WebCore::GraphicsContext::addInnerRoundedRectClip):
+
+2009-05-07 Adam Langley <agl@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Render empty optgroup elements.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24900
+
+ Currently, optgroup elements which are empty are not rendered. The
+ HTML specification gives no guidance on this situation.
+
+ However, the test for being empty is that they have no children, thus
+ this will not render:
+ <optgroup label="test"></optgroup>
+ while this /will/ render (because of the text node child):
+ <optgroup label="test"> </optgroup>
+
+ This patch will cause both cases to render which matches IE's and
+ Firefox's behaviour.
+
+ The difference only appears when opening the select element and does
+ not appear in the render tree. Thus, a manual layout-test is required.
+
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::recalcListItems):
+ * manual-tests/optgroup-empty-and-nested.html: Added.
+
+2009-05-06 Julie Parent <jparent@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Bug 25608: Unused m_frame in ChromiumClipboard.
+ https://bugs.webkit.org/show_bug.cgi?id=25608
+
+ * platform/chromium/ClipboardChromium.h:
+
+ No tests added as this is only removing dead code, no functional changes.
+
+2009-05-06 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Simon Fraser and Justin Garcia.
+
+ - fix another part of <rdar://problem/6703873> Triple-click quoted line
+ and type Return creates an extra quoted blank line
+
+ Test: editing/inserting/6703873-2.html
+
+ * editing/BreakBlockquoteCommand.cpp:
+ (WebCore::BreakBlockquoteCommand::doApply): Corrected the logic for
+ determining the first node that should go into the new blockquote
+ given the split position: if it is at the end of a container, use the
+ next node after the container. Otherwise, use the child at the
+ position's offset.
+
+2009-05-06 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix, fixes for wx trunk builds.
+
+ * platform/graphics/wx/ImageWx.cpp:
+ (WebCore::BitmapImage::draw):
+ * platform/wx/RenderThemeWx.cpp:
+ * platform/wx/wxcode/mac/carbon/fontprops.cpp:
+ (wxFontProperties::wxFontProperties):
+
+2009-05-06 Albert J. Wong <ajwong@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25597
+ Fix API drift compile errors that occurred while this was ifdef-ed out.
+ The two big issues were that RenderObject::element() became
+ RenderObject::node() and some of the wk* drawing functions had
+ an extra theme parameter added to the argument list.
+
+ * rendering/RenderThemeChromiumMac.mm:
+ (WebCore::RenderThemeChromiumMac::paintMediaFullscreenButton):
+ (WebCore::RenderThemeChromiumMac::paintMediaMuteButton):
+ (WebCore::RenderThemeChromiumMac::paintMediaPlayButton):
+ (WebCore::RenderThemeChromiumMac::paintMediaSeekBackButton):
+ (WebCore::RenderThemeChromiumMac::paintMediaSeekForwardButton):
+ (WebCore::RenderThemeChromiumMac::paintMediaSliderTrack):
+ (WebCore::RenderThemeChromiumMac::paintMediaSliderThumb):
+
+2009-05-06 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25385
+ Upstream changes to V8 bindings for supporting nested workers.
+
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::WorkerContextExecutionProxy::ToV8Object):
+ (WebCore::WorkerContextExecutionProxy::EventTargetToV8Object):
+ * bindings/v8/custom/V8WorkerCustom.cpp:
+ (WebCore::getEventListener):
+ (WebCore::ACCESSOR_SETTER WorkerOnmessage):
+ (WebCore::CALLBACK_FUNC_DECL WorkerAddEventListener):
+
+2009-05-06 Dave Moore <davemoore@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25513
+ The V8 bindings convert every javascript property to its associated css style
+ name. It then calls functions that convert that name to an id. This makes
+ getting or setting css styles on elements slow.
+
+ The patch fixes this by caching the results of the transformation, mapping a
+ javascript property name to its css property id. It then calls the already
+ public webkit methods that take the id in place of the string property names.
+
+ * bindings/v8/custom/V8CSSStyleDeclarationCustom.cpp:
+
+2009-05-06 Nate Chapin <japhet@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25591
+ Upstream V8HTMLFormElement from the Chromium repository.
+
+ * bindings/v8/custom/V8HTMLFormElementCustom.cpp:
+ (WebCore::INDEXED_PROPERTY_GETTER HTMLFormElement): Upstreamed from Chromium repository
+ (WebCore::NAMED_PROPERTY_GETTER HTMLFormElement): Changed empty element return case to return notHandledByInterceptor();
+ (WebCore::CALLBACK_FUNC_DECL HTMLFormElementSubmit): Upstreamed from Chromium repository
+
+2009-05-06 Albert J. Wong <ajwong@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25595
+ Upstream V8CanvasPixelArrayCustom from chromium port tree.
+
+ * bindings/v8/V8CanvasPixelArrayCustom.cpp: Added.
+
+2009-05-06 Simon Fraser <simon.fraser@apple.com>
+
+ Rubber-stampted by Eric Seidel
+
+ Add braces to clarify logic flow in RenderObject::adjustStyleDifference.
+ Only affects ACCELERATED_COMPOSITING builds.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::adjustStyleDifference):
+
+2009-05-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ <rdar://problem/6862550> Reduce size of RenderText in 64-bit
+
+ Rearrange data members of RenderText so that an int comes
+ first, to minimize padding.
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::RenderText):
+ * rendering/RenderText.h:
+
+2009-05-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ <rdar://problem/6862823> Reduce size of RenderStyle in 64-bit
+
+ Rearrange data members of RenderStyle to minimize padding
+ when building for 64-bit.
+
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::RenderStyle):
+ * rendering/style/RenderStyle.h:
+ (WebCore::):
+
+2009-05-06 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25596
+
+ Fixes Chromium build bustage caused by r43317 (making
+ RefCountedBase::m_refCount private)
+
+ * page/chromium/AccessibilityObjectWrapper.h:
+ (WebCore::AccessibilityObjectWrapper::AccessibilityObjectWrapper):
+
+2009-05-06 Hin-Chung Lam <hclam@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25593
+
+ Refactor for MediaPlayerPrivate for Chromium port. Remove
+ the implementation of MediaPlayerPrivateInferface from it.
+
+ * platform\graphics\chromium\MediaPlayerPrivateChromium.h:
+
+2009-05-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt, Dan Bernstein
+
+ <rdar://problem/6860197> Reduce the size of FontFallbackList in 64-bit
+
+ Re-order the data members of FontFallbackList to save 8 bytes when building 64-bit.
+
+ * platform/graphics/FontFallbackList.cpp:
+ (WebCore::FontFallbackList::FontFallbackList):
+ * platform/graphics/FontFallbackList.h:
+
+2009-05-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler, Dan Bernstein
+
+ <rdar://problem/6860068> Reduce size of InlineBox in 64-bit
+
+ Re-order the data members of InlineBox to save 8 bytes when building 64-bit.
+
+ * rendering/InlineBox.h:
+ (WebCore::InlineBox::InlineBox):
+
+2009-05-06 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25588
+ Adding the custom v8 bindings Document.location.
+
+ * bindings/v8/custom/V8DocumentLocationCustom.cpp: Added.
+
+2009-05-06 Kevin McCullough <kmccullough@apple.com>
+
+ -Clarified a comment
+
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+
+2009-05-06 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Not reviewed. Fix WML enabled builds by including "MappedAttribute.h" in several places.
+
+ * wml/WMLAElement.cpp:
+ * wml/WMLAccessElement.cpp:
+ * wml/WMLBRElement.cpp:
+ * wml/WMLCardElement.cpp:
+ * wml/WMLDoElement.cpp:
+ * wml/WMLElement.cpp:
+ * wml/WMLFieldSetElement.cpp:
+ * wml/WMLGoElement.cpp:
+ * wml/WMLImageElement.cpp:
+ * wml/WMLInputElement.cpp:
+ * wml/WMLMetaElement.cpp:
+ * wml/WMLOnEventElement.cpp:
+ * wml/WMLOptGroupElement.cpp:
+ * wml/WMLOptionElement.cpp:
+ * wml/WMLPElement.cpp:
+ * wml/WMLPostfieldElement.cpp:
+ * wml/WMLSetvarElement.cpp:
+ * wml/WMLTableElement.cpp:
+ * wml/WMLTemplateElement.cpp:
+ * wml/WMLTimerElement.cpp:
+
+2009-05-06 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25526
+ [Gtk] Additional support is needed for caret browsing
+
+ Emit AtkText::text-selection-changed when the selection changes
+ and the current selection is of Range (ie, the start and end
+ positions are different) type. This seems to match what Gecko
+ does.
+
+ * editing/gtk/SelectionControllerGtk.cpp:
+ (WebCore::SelectionController::notifyAccessibilityForSelectionChange):
+
+2009-05-05 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25526
+ [Gtk] Additional support is needed for caret browsing
+
+ Emit AtkText::text-caret-moved when selection changes.
+
+ * GNUmakefile.am:
+ * editing/SelectionController.h:
+ * editing/gtk/SelectionController.cpp: Added.
+ (WebCore::SelectionController::notifyAccessibilityForSelectionChange):
+
+2009-05-06 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Use mozilla cursors for the previously not implemented
+ cursors. The manual-tests/cursor.html is looking complete
+ now.
+
+ * platform/gtk/CursorGtk.cpp:
+ (WebCore::cellCursor):
+ (WebCore::noDropCursor):
+ (WebCore::progressCursor):
+ (WebCore::noneCursor):
+ (WebCore::notAllowedCursor):
+ (WebCore::grabCursor):
+ (WebCore::grabbingCursor):
+ * platform/gtk/CursorGtk.h:
+
+2009-05-06 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Xan Lopez.
+
+ Properly indent the header file.
+
+ * platform/gtk/CursorGtk.h:
+
+2009-05-06 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Use the mozilla copyright header. Use MPL1.1/GPL2.0
+ and LGPL2.1 as the license compared to LGPL2.0.
+
+ * platform/gtk/CursorGtk.h:
+
+2009-05-06 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Move PluginView::invalidateRegion from the
+ TemporaryLinkStubs to PluginViewGtk.cpp and implement
+ it with a call to Widget::invalidate() just like
+ mac is doing. Optimisations would have to be window
+ system specific.
+
+ * platform/gtk/TemporaryLinkStubs.cpp:
+ * plugins/gtk/PluginViewGtk.cpp:
+ (WebCore::PluginView::invalidateRegion):
+
+2009-05-06 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ Misc fixes to InspectorClientGtk.
+
+ * GNUmakefile.am: Add localizedStrings.js to webinspector_DATA.
+ This prevents copious amounts "Localized string not found" errors
+ in the console
+
+2009-05-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Ariya Hidayat.
+
+ Fix the Qt build on Windows.
+
+ * platform/graphics/GraphicsContext.h:
+ (WebCore::GraphicsContext::shouldIncludeChildWindows): Implemented dummy accessor.
+
+2009-05-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ Tweak WebCore.pro for being able to override the generated sources dir for the
+ generated_files target.
+
+ * WebCore.pro:
+
+2009-05-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ Fix the Qt/Windows build, use iface instead of interface to avoid conflict
+ with VS2005 headers.
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::SelectorChecker::checkPseudoState):
+
+2009-05-06 Joerg Bornemann <joerg.bornemann@trolltech.com>
+
+ Reviewed by Simon Hausmann.
+
+ We need to include StringExtras.h on Windows CE to access the strdup function.
+
+ * plugins/PluginStream.cpp:
+
+2009-05-06 Soren Gjesse <sgjesse@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Changed the toString behaviour for non document dom node event handlers in the V8 bindings.
+ https://bugs.webkit.org/show_bug.cgi?id=25544
+
+ In the V8 bindings non document dom node event handlers are wrapped in a number of with blocks and uses an inner
+ function. This causes the default toString on such a handler to return all this wrapper code. As some web sites
+ use the source of an event handler to create new functions this wrapper code causes compatibility problems.
+
+ Create a specific toString function for these handlers which will return a function source compatible with the
+ source returned by the JSC bindings and other browsers.
+
+ Test: fast/events/event-function-toString.html
+
+ * bindings/v8/ScriptEventListener.cpp:
+ (WebCore::createAttributeEventListener):
+ * bindings/v8/V8LazyEventListener.cpp:
+ (WebCore::V8LazyEventListener::V8LazyEventListener):
+ (WebCore::V8LazyEventListener::getListenerFunction):
+ (WebCore::V8LazyEventListenerToString):
+ (WebCore::V8LazyEventListener::getWrappedListenerFunction):
+ * bindings/v8/V8LazyEventListener.h:
+ (WebCore::V8LazyEventListener::create):
+
+2009-05-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Build QtWebKit as a framework on Mac
+
+ This implies both debug and release build by default, unless
+ one of the --debug or --release config options are passed to
+ the build-webkit script.
+
+ Frameworks can be disabled by passing CONFIG+=webkit_no_framework
+ to the build-webkit script.
+
+ To be able to build both debug and release targets in parallel
+ we have to use separate output directories for the generated
+ sources, which is not optimal, but required to avoid race conditions.
+
+ An optimization would be to only require this spit-up on Mac.
+
+ * WebCore.pro:
+
+2009-05-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Use $$GENERATED_SOURCES_DIR as output when running bison
+
+ A couple of the generators left the bison output file in the source
+ tree, and then moved it into $$GENERATED_SOURCES_DIR, which did not
+ work well when building release and debug configurations in parallel.
+
+ * WebCore.pro:
+
+2009-05-06 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Justin Garcia.
+
+ - fix an assertion failure in RemoveNodeCommand() when deleting a <br>
+ between a block and a mail blockquote
+
+ Test: editing/deleting/removeNodeCommand-assert.html
+
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::mergeParagraphs): Pass the start block
+ to prune() instead of passing m_upstreamStart.node(), because the latter
+ may have been removed already.
+
+2009-05-05 Eric Seidel <eric@webkit.org>
+
+ No review, roll out only.
+
+ Roll out r23072 since it broke layout tests
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+
+2009-05-05 Ben Murdoch <benm@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Add #if ENABLE(DATABASE) guards around database code so toggling ENABLE_DATABASE off does not break builds.
+ https://bugs.webkit.org/show_bug.cgi?id=24776
+
+ No functional changes, thus no tests.
+
+ * bindings/js/JSCustomSQLStatementCallback.cpp:
+ * bindings/js/JSCustomSQLStatementCallback.h:
+ * bindings/js/JSCustomSQLStatementErrorCallback.cpp:
+ * bindings/js/JSCustomSQLStatementErrorCallback.h:
+ * bindings/js/JSCustomSQLTransactionCallback.cpp:
+ * bindings/js/JSCustomSQLTransactionCallback.h:
+ * bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
+ * bindings/js/JSCustomSQLTransactionErrorCallback.h:
+ * bindings/js/JSDatabaseCustom.cpp:
+ * bindings/js/JSSQLTransactionCustom.cpp:
+ * loader/EmptyClients.h:
+ * page/ChromeClient.h:
+ * storage/ChangeVersionWrapper.cpp:
+ * storage/ChangeVersionWrapper.h:
+ * storage/Database.cpp:
+ (WebCore::Database::databaseInfoTableName):
+ * storage/Database.h:
+ * storage/Database.idl:
+ * storage/DatabaseTask.cpp:
+ * storage/DatabaseTask.h:
+ * storage/DatabaseThread.cpp:
+ * storage/DatabaseThread.h:
+ * storage/DatabaseTracker.cpp:
+ * storage/DatabaseTracker.h:
+ * storage/DatabaseTrackerClient.h:
+ * storage/OriginQuotaManager.cpp:
+ * storage/OriginQuotaManager.h:
+ * storage/SQLStatement.cpp:
+ * storage/SQLStatement.h:
+ * storage/SQLTransaction.cpp:
+ * storage/SQLTransaction.h:
+ * storage/SQLTransaction.idl:
+
+2009-05-05 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Add some documentation to InlineBox::x(),y().
+ https://bugs.webkit.org/show_bug.cgi?id=25378
+
+ * rendering/InlineBox.h:
+
+2009-05-05 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Eric Seidel.
+
+ Disable all the SVG features for WebKit/Qt if ENABLE_SVG=0
+ https://bugs.webkit.org/show_bug.cgi?id=24693
+
+ * WebCore.pro:
+
+2009-05-05 Sankar Aditya Tanguturi <sankaraditya@gmail.com>
+
+ Reviewed by Eric Seidel.
+
+ Anonymous blocks should not be exposed in accessibility tree.
+ Part of https://bugs.webkit.org/show_bug.cgi?id=23072
+
+ Tests: accessibility/ignore-anonymous-block.html
+ platform/win/accessibility/document-role.html
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):Return
+ true for Anonymous blocks. Matching Firefox 2.0.0.14
+
+2009-05-05 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ http://bugs.webkit.org/show_bug.cgi?id=25487
+
+ For euc-kr and other 8bit Korean encodings
+ (similar to euc-kr/windows-949), make document.charset return
+ EUC-KR instead of windows-949. The latter is not recognized by
+ Korean web servers.
+
+ Add domName method to TextEncoding to deal with cases where
+ our internal encoding name does not match what's widely recognized
+ by web servers. Currently, the only case is 'windows-949' (internal
+ name) vs 'EUC-KR'.
+
+ Test: fast/encoding/euckr-name.html
+
+ * dom/Document.cpp:
+ (WebCore::Document::encoding): Call TextEncoding.domName() instead
+ of TextEncoding.name().
+ * platform/text/TextEncoding.cpp:
+ (WebCore::TextEncoding::domName): For the canonical name 'windows-949',
+ return 'EUC-KR'. Otherwise, just return the canonical name.
+ * platform/text/TextEncoding.h:
+
+2009-05-05 Adam Langley <agl@google.com>
+
+ Reviewed by Darin Adler.
+
+ Rendering fix for <select> elements.
+ https://bugs.webkit.org/show_bug.cgi?id=25558
+
+ When switching a <select> element from display:none to default
+ display, we would fail to invalidate the parent's pref widths in some
+ situations:
+
+ When attaching the element, RenderMenuList::updateOptionsWidth would
+ call setNeedsLayoutAndPrefWidthsRecalc before the parent pointer was
+ set. This would mark the pref widths as dirty, but not for any parent
+ objects.
+
+ When RenderObjectChildList::appendChildNode later calls
+ setNeedsLayoutAndPrefWidthsRecalc again, with a valid parent pointer,
+ nothing would be done because the pref widths were already dirty for.
+ the RenderMenuList.
+
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::updateOptionsWidth):
+
+2009-05-05 Antony Sargent <asargent@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Switch V8EventListenerList to use HashTable<T>.
+ https://bugs.webkit.org/show_bug.cgi?id=25496
+
+ This avoids some tricky issues with event listener removal in the
+ current implementation and has slightly better performance.
+
+ No new functionality so no new tests.
+
+ * bindings/v8/V8EventListenerList.cpp: Added V8EventListenerListIterator.
+ * bindings/v8/V8EventListenerList.h:
+ (WebCore::V8EventListenerList::size):
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::WorkerContextExecutionProxy::initContextIfNeeded):
+
+2009-05-05 Darin Fisher <darin@chromium.org>
+
+ Fixing build bustage.
+
+ Add some missing includes to fix the Chromium build.
+
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ * bindings/v8/custom/V8HTMLDocumentCustom.cpp:
+
+2009-05-05 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25570
+
+ history.{back,forward,go} should always be dispatched asynchronously,
+ even when the history navigation would just result in scrolling the
+ page. This matches the behavior of other browsers like IE and FF.
+
+ Test: fast/history/back-forward-is-asynchronous.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::scheduleHistoryNavigation):
+
+2009-05-05 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Add an ASSERT(useTransforms) to mapLocalToContainer implementations in SVG.
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+ https://bugs.webkit.org/show_bug.cgi?id=25568
+
+ Adding this ASSERT exposed a bug in SVGPaintServerPattern::setup
+ which was causing transformed SVG text when filled/stroked with a
+ pattern using patternUnits=objectBoundingBox to draw incorrectly.
+
+ I fixed the incorrect drawing (by removing the broken code) and added
+ two test cases to test the fix:
+ * svg/transforms/text-with-pattern-inside-transformed-html.xhtml
+ * svg/transforms/text-with-pattern-with-svg-transform.svg
+
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::mapLocalToContainer):
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::SVGRenderBase::mapLocalToContainer):
+ * svg/graphics/SVGPaintServerPattern.cpp:
+ (WebCore::SVGPaintServerPattern::setup):
+
+2009-05-05 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25554
+
+ Support HTML5 text control input types: email, number, tel, url
+
+ Test: fast/html/text-field-input-types.html
+
+ * bindings/objc/DOMHTML.mm:
+ (-[DOMHTMLInputElement _isTextField]): Call HTMLInputElement::isTextField directly.
+ * html/HTMLInputElement.cpp: Use the new types where appropriate.
+ (WebCore::HTMLInputElement::setInputType):
+ (WebCore::HTMLInputElement::type):
+ (WebCore::HTMLInputElement::saveState):
+ (WebCore::HTMLInputElement::restoreState):
+ (WebCore::HTMLInputElement::accessKeyAction):
+ (WebCore::HTMLInputElement::rendererIsNeeded):
+ (WebCore::HTMLInputElement::createRenderer):
+ (WebCore::HTMLInputElement::appendFormData):
+ (WebCore::HTMLInputElement::valueWithDefault):
+ (WebCore::HTMLInputElement::storesValueSeparateFromAttribute):
+ (WebCore::HTMLInputElement::defaultEventHandler):
+ * html/HTMLInputElement.h: Ditto.
+ (WebCore::HTMLInputElement::):
+ (WebCore::HTMLInputElement::isTextField):
+
+2009-04-01 miggilin <mr.diggilin@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Mouse wheel scrolling and keyboard shortcut support for wx.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24797
+
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::wheelEvent):
+ * platform/wx/KeyboardEventWx.cpp:
+ (WebCore::windowsKeyCodeForKeyEvent):
+ (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
+ * platform/wx/ScrollViewWx.cpp:
+ (WebCore::ScrollView::platformSetScrollPosition):
+
+2009-05-05 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix for Windows, add missing include.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24798
+
+ * platform/wx/wxcode/win/non-kerned-drawing.cpp:
+
+2009-05-05 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 25574: AXImageMap children links don't respond properly to accessibilityHitTest:
+ https://bugs.webkit.org/show_bug.cgi?id=25574
+
+ Enable accessibility hit-testing for image map links.
+ Allow image map links to return AXURLs and AXAccessKey information.
+
+ Test: platform/mac/accessibility/imagemap-hittest.html
+
+ * page/AccessibilityImageMapLink.cpp:
+ (WebCore::AccessibilityImageMapLink::url):
+ * page/AccessibilityImageMapLink.h:
+ * page/AccessibilityObject.h:
+ (WebCore::AccessibilityObject::minValueForRange):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityParentForImageMap):
+ (WebCore::AccessibilityRenderObject::accessibilityImageMapHitTest):
+ (WebCore::AccessibilityRenderObject::doAccessibilityHitTest):
+ * page/AccessibilityRenderObject.h:
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper accessibilityAttributeNames]):
+
+2009-05-05 Kevin McCullough <kmccullough@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6552129> Select a quote line and paste elsewhere, you
+ get that line and an extra quoted blank line
+ <rdar://problem/6609308> Triple-click a quoted header line, copy, paste
+ onto an empty line makes an extra quoted line
+
+ - When pasting a blockquote with a newline, make sure we put the newline
+ outside of the blockquote so that it is not quoted.
+
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+
+2009-05-05 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ Call moz_gtk_shutdown on RenderThemeGtk destruction.
+
+ * platform/gtk/RenderThemeGtk.cpp:
+ (WebCore::RenderThemeGtk::~RenderThemeGtk):
+ * platform/gtk/RenderThemeGtk.h:
+
+2009-05-05 Darin Adler <darin@apple.com>
+
+ Reviewed by Steve Falkenburg.
+
+ <rdar://problem/6858340> REGRESSION: can't drag local HTML files into Safari because CFURLCreateWithFileSystemPath inserts "localhost"
+
+ * platform/win/ClipboardUtilitiesWin.cpp: (WebCore::urlFromPath): Remove localhost.
+
+2009-05-05 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Brady Eidson.
+
+ Safety-check m_documentLoader before dereferencing. While it seems
+ unlikely this could fail (as Safari 3 shipped without this),
+ technically almost any call can change or reset m_documentLoader.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::receivedFirstData):
+
+2009-05-05 Dan Bernstein <mitz@apple.com>
+
+ - Tiger build fix
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::toCSSIdentifier):
+
+2009-05-05 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25303
+ No need to ref the internal buffer inside the Skia ImageDecoder.
+
+ * platform/image-decoders/skia/ImageDecoder.h:
+ (WebCore::RGBA32Buffer::RGBA32Buffer):
+ (WebCore::RGBA32Buffer::operator=):
+ (WebCore::RGBA32Buffer::clear):
+ (WebCore::RGBA32Buffer::copyBitmapData):
+ (WebCore::RGBA32Buffer::bitmap):
+ (WebCore::RGBA32Buffer::setSize):
+ (WebCore::RGBA32Buffer::width):
+ (WebCore::RGBA32Buffer::height):
+ (WebCore::RGBA32Buffer::hasAlpha):
+ (WebCore::RGBA32Buffer::setStatus):
+ (WebCore::RGBA32Buffer::setHasAlpha):
+ (WebCore::RGBA32Buffer::setRGBA):
+
+2009-05-05 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=24192
+ <rdar://problem/5760774> Replying to a Mail message that contains
+ fixed width text can change the size of the text
+
+ Covered by existing tests: editing/pasteboard/5027857.html
+ editing/pasteboard/paste-pre-002.html
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getFontSizeCSSValuePreferringKeyword):
+ Added. If the font-size is keyword-based, returns the keyword value
+ instead of the pixel size.
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue): If
+ font-family is a generic family, return the generic family instead of
+ the the internal string -webkit-[serif|sans-serif|cursive|fantasy
+ |monospace].
+ (WebCore::CSSComputedStyleDeclaration::copyInheritableProperties):
+ For the font-size property, prefer a keyword value over a pixel size.
+ * css/CSSComputedStyleDeclaration.h:
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::StyleChange::currentlyHasStyle): For the font-size property,
+ call getFontSizeCSSValuePreferringKeyword().
+ * platform/graphics/FontDescription.h:
+ (WebCore::FontDescription::keywordSize): Changed the return type to
+ unsigned.
+ (WebCore::FontDescription::setKeywordSize): Changed the parameter type
+ to unsigned.
+ (WebCore::FontDescription::m_keywordSize): Changed the type of this
+ 4-bit field to unsigned, because it takes values as high as 8.
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Fix http/tests/misc/DOMContentLoaded-event.html
+
+ The native call performance improvement removed a few places where we
+ unintentionally performed a toThisObject conversion. This patch updates
+ the bindings codegen to not rely on this bug.
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+
+2009-05-05 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Xan Lopez and Gustavo Noronha.
+
+ Implement WebCore::directoryName for Gtk+.
+
+ * platform/gtk/FileSystemGtk.cpp:
+ (WebCore::directoryName):
+
+2009-05-05 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Roben.
+
+ Fix mappedAttributes() access without NULL check
+ https://bugs.webkit.org/show_bug.cgi?id=25553
+
+ SVGStyledElement::getPresentationAttribute was using mappedAttributes()
+ without checking for NULL.
+
+ HTMLInputElement::setInputType also doesn't NULL check, but I was not
+ able to get it to crash with a test case so I just added an ASSERT.
+
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::setInputType):
+ * svg/SVGStyledElement.cpp:
+ (WebCore::SVGStyledElement::getPresentationAttribute):
+
+2009-05-05 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Xan Lopez.
+
+ Implement WebCore::imageTitle for Gtk+.
+
+ * platform/gtk/LocalizedStringsGtk.cpp:
+ (WebCore::imageTitle):
+
+2009-05-05 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Bug 25559: Improve native function call performance
+ <https://bugs.webkit.org/show_bug.cgi?id=25559>
+
+ Add forwarding header necessary for compilation, and fix debugger
+ to correctly account for change in JSFunction behaviour.
+
+ * ForwardingHeaders/jit/JITCode.h: Added.
+ * inspector/JavaScriptDebugServer.cpp:
+ (WebCore::JavaScriptDebugServer::recompileAllJSFunctions):
+
+2009-05-05 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Ariya Hidayat.
+
+ Make convertValueToQVariant more robust against null JSValues.
+
+ Don't require the caller to do the null check.
+
+ * bridge/qt/qt_runtime.cpp:
+ (JSC::Bindings::convertValueToQVariant):
+
+2009-05-05 Eric Seidel <eric@webkit.org>
+
+ No review, just a revert.
+
+ Roll out http://trac.webkit.org/changeset/43213 as it caused 4 tests to crash.
+
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::mapLocalToContainer):
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::SVGRenderBase::mapLocalToContainer):
+
+2009-05-04 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Dave Hyatt.
+
+ <rdar://problem/6576889> REGRESSION (r35185): Cannot watch Flash movies on omg.yahoo.com
+
+ The problem was caused by missing <head> element - we used to create it when moving a
+ misplaced <style> element, but we now handle those in place. Other browsers always create
+ a <head> element.
+
+ There is no guarantee that a <head> element always exists - first, it can be removed with
+ removeChild or innerHTML, and also, we don't currently create it for frameset documents, or
+ for manually created ones (e.g. ImageDocument).
+
+ Test: fast/parser/head-element-for-yahoo-player.html
+
+ * dom/Document.cpp: (WebCore::Document::implicitClose): Create a <head> element for about:blank.
+ A removed comment talked about rdar://3758785, but that problem doesn't re-occur even if this
+ code is removed completely.
+
+ * html/HTMLHtmlElement.cpp: (WebCore::HTMLHtmlElement::checkDTD): No longer allow <script>
+ elements as children of <html>. This isn't directly related to this bug, but it was easier
+ to fix both at once (IE and Firefox both don't allow such mispositioned <script> elements).
+
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::handleError): Move <script> to <head> if <body> hasn't been created yet.
+ Create a <head> it a <body> is created implicitly to contain some other element.
+ (WebCore::HTMLParser::bodyCreateErrorCheck): Ensure that a <head> exists when <body> is
+ explicitly present in source.
+ (WebCore::HTMLParser::createHead): Do the work even if <html> element hasn't been created yet.
+
+2009-05-04 Jakub Wieczorek <faw217@gmail.com>
+
+ Reviewed by Simon Hausmann.
+
+ As Qtish implementation of MIMETypeRegistry::getMIMETypeForExtension()
+ returns the application/octet-stream mimetype when it can't associate
+ extension with any mimetype, it can happen that the application/octet-stream
+ mimetype will hit the list of supported image formats. For instance,
+ it is possible when QImageReader or QImageWriter support an extension
+ that is not in the extensions map.
+
+ Make sure that this mimetype is not treated as displayable image type.
+
+ * platform/MIMETypeRegistry.cpp:
+ (WebCore::initializeSupportedImageMIMETypes):
+ (WebCore::initializeSupportedImageMIMETypesForEncoding):
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ ASSERT(useTransforms) in SVG mapLocalToContainer implementations
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::mapLocalToContainer):
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::SVGRenderBase::mapLocalToContainer):
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Remove m_absoluteBounds hack from RenderSVGText
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ No functional changes (SVGs inside CSS transformed HTML should theoretically repaint better)
+
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::layout):
+ * rendering/RenderSVGText.h:
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Remove the vestigial calculateLocalTransform()
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ RenderSVGContainer is now the only render which needs this
+ function, but it no longer returns the unused bool.
+
+ calculateLocalTransform() previously was called by the DOM before
+ transform updates were part of layout().
+
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::layout):
+ * rendering/RenderForeignObject.h:
+ (WebCore::RenderForeignObject::localTransform):
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::layout):
+ * rendering/RenderPath.h:
+ * rendering/RenderSVGContainer.cpp:
+ * rendering/RenderSVGContainer.h:
+ (WebCore::RenderSVGContainer::calculateLocalTransform):
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::layout):
+ * rendering/RenderSVGImage.h:
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::layout):
+ * rendering/RenderSVGText.h:
+ * rendering/RenderSVGTransformableContainer.cpp:
+ (WebCore::RenderSVGTransformableContainer::calculateLocalTransform):
+ * rendering/RenderSVGTransformableContainer.h:
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Move more code into SVGRenderBase
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ clippedOverflowRectForRepaint, computeRectForRepaint and mapLocalToContainer
+ are now all shared via SVGRenderBase.
+
+ RenderForeignObject should also be sharing this code, but I've left it
+ alone for now, as changing that would likely cause test changes.
+
+ No test changes. It's possible that transformed <svg:image> elements will
+ now show up with better metrics in the inspector.
+
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::clippedOverflowRectForRepaint):
+ (WebCore::RenderSVGImage::computeRectForRepaint):
+ (WebCore::RenderSVGImage::mapLocalToContainer):
+ * rendering/RenderSVGImage.h:
+ * rendering/RenderSVGModelObject.cpp:
+ (WebCore::RenderSVGModelObject::clippedOverflowRectForRepaint):
+ (WebCore::RenderSVGModelObject::computeRectForRepaint):
+ (WebCore::RenderSVGModelObject::mapLocalToContainer):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::clippedOverflowRectForRepaint):
+ (WebCore::RenderSVGText::computeRectForRepaint):
+ (WebCore::RenderSVGText::mapLocalToContainer):
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::SVGRenderBase::clippedOverflowRectForRepaint):
+ (WebCore::SVGRenderBase::computeRectForRepaint):
+ (WebCore::SVGRenderBase::mapLocalToContainer):
+ * rendering/SVGRenderSupport.h:
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Add SVGRenderBase to share logic between SVG renderers
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ I've added an SVGRenderBase base class which is shared by
+ all of the SVG renders now. This patch is just moving code
+ there are no functional changes in this patch.
+
+ Currently I've left these functions in SVGRenderSupport.h
+ In a later patch I will rename SVGRenderSupport.* to SVGRenderBase.*
+
+ clampImageBufferSizeToViewport now takes a FrameView* which makes some code easier to read.
+
+ * rendering/RenderSVGBlock.h:
+ * rendering/RenderSVGImage.h:
+ * rendering/RenderSVGModelObject.h:
+ * rendering/RenderSVGRoot.h:
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::SVGRenderBase::prepareToRenderSVGContent):
+ (WebCore::SVGRenderBase::finishRenderSVGContent):
+ (WebCore::clampImageBufferSizeToViewport):
+ (WebCore::SVGRenderBase::computeContainerBoundingBox):
+ (WebCore::SVGRenderBase::filterBoundingBoxForRenderer):
+ * rendering/SVGRenderSupport.h:
+ * rendering/SVGRootInlineBox.cpp:
+ (WebCore::SVGRootInlineBoxPaintWalker::chunkStartCallback):
+ (WebCore::SVGRootInlineBoxPaintWalker::chunkEndCallback):
+ (WebCore::SVGRootInlineBox::paint):
+ * svg/SVGMaskElement.cpp:
+ (WebCore::SVGMaskElement::drawMaskerContent):
+ * svg/SVGPatternElement.cpp:
+ (WebCore::SVGPatternElement::buildPattern):
+ * svg/graphics/SVGPaintServerGradient.cpp:
+ (WebCore::createMaskAndSwapContextForTextGradient):
+ (WebCore::clipToTextMask):
+
+2009-05-05 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Unreviewed SVG build fix.
+
+ Include MappedAttribute.h after r43187.
+
+ * svg/SVGComponentTransferFunctionElement.cpp:
+ * svg/SVGFEBlendElement.cpp:
+ * svg/SVGFEColorMatrixElement.cpp:
+ * svg/SVGFEComponentTransferElement.cpp:
+ * svg/SVGFECompositeElement.cpp:
+ * svg/SVGFEDiffuseLightingElement.cpp:
+ * svg/SVGFEDisplacementMapElement.cpp:
+ * svg/SVGFEGaussianBlurElement.cpp:
+ * svg/SVGFEImageElement.cpp:
+ * svg/SVGFELightElement.cpp:
+ * svg/SVGFEMergeNodeElement.cpp:
+ * svg/SVGFEOffsetElement.cpp:
+ * svg/SVGFESpecularLightingElement.cpp:
+ * svg/SVGFETileElement.cpp:
+ * svg/SVGFETurbulenceElement.cpp:
+ * svg/SVGFilterElement.cpp:
+ * svg/SVGFilterPrimitiveStandardAttributes.cpp:
+
+2009-05-04 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Sam 'The Belly' Weinig
+
+ <rdar://problem/6828894> - Facebook photo uploader applet broken on Leopard only
+
+ In r41568 we started adding a default codebase attribute to <applet> tags if they didn't specify one
+ themselves. Leopard's Java plug-in mishandles this case and fails to load code for the applet.
+
+ The spirit of r41568 can be maintained by removing the "default codebase" piece and only performing
+ the canLoad() check if a codebase was actually set on the applet tag.
+
+ * html/HTMLAppletElement.cpp:
+ (WebCore::HTMLAppletElement::createRenderer): Don't create a default codebase attribute.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::createJavaAppletWidget): Only perform the canLoad() check if the codebase was set.
+
+2009-05-04 Adam Roben <aroben@apple.com>
+
+ Windows build fix
+
+ * html/HTMLCollection.h:
+ * html/HTMLFormElement.h:
+ Declare CollectionCache as a struct, not a class, to match its
+ definition.
+
+2009-05-04 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin, Oliver Hunt.
+
+ Bug 25557: REGRESSION: Canvas elements are ignored instead of being exposed as AXImage
+ https://bugs.webkit.org/show_bug.cgi?id=25557
+
+ Test: accessibility/canvas.html
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+ (WebCore::AccessibilityRenderObject::roleValue):
+
+2009-05-04 Brady Eidson <beidson@apple.com>
+
+ Fix an ancient Changelog entry where Sam Weinig flat out lied and confused my exploration of a bug.
+
+ * ChangeLog
+
+2009-05-04 Kai Brüning <kai@granus.net>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24883
+ 24883: Bad success test in parseXMLDocumentFragment in XMLTokenizerLibxml2.cpp
+
+ Fixed test whether all the chunk has been processed to correctly count utf8 bytes.
+
+ Test: fast/innerHTML/innerHTML-nbsp.xhtml
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::parseXMLDocumentFragment):
+
+2009-05-04 Darin Adler <darin@apple.com>
+
+ Reviewed by Eric Seidel.
+
+ Bug 24924: remove Document.h include of Attr.h and HTMLCollection.h,
+ and NamedMappedAttrMap.h include of MappedAttribute.h
+ https://bugs.webkit.org/show_bug.cgi?id=24924
+
+ Make compiles faster, and debugging info smaller.
+
+ * GNUmakefile.am: Added new source files.
+ * WebCore.pro: Ditto.
+ * WebCore.scons: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * WebCoreSources.bkl: Ditto.
+
+ * bindings/js/JSHTMLCollectionCustom.cpp:
+ (WebCore::toJS): Updated for new collection type names.
+
+ * dom/Document.cpp:
+ (WebCore::Document::createAttribute): Added. No longer inline.
+ (WebCore::Document::images): Updated for new collection type names.
+ (WebCore::Document::applets): Ditto.
+ (WebCore::Document::embeds): Ditto.
+ (WebCore::Document::plugins): Ditto.
+ (WebCore::Document::objects): Ditto.
+ (WebCore::Document::scripts): Ditto.
+ (WebCore::Document::links): Ditto.
+ (WebCore::Document::forms): Ditto.
+ (WebCore::Document::anchors): Ditto.
+ (WebCore::Document::all): Ditto.
+ (WebCore::Document::windowNamedItems): Ditto.
+ (WebCore::Document::documentNamedItems): Ditto.
+ (WebCore::Document::nameCollectionInfo): Ditto.
+
+ * dom/Document.h: Changed around includes and forward declarations.
+ Updated for changes to collection types.
+
+ * dom/NamedMappedAttrMap.h: Removed include of MappedAttribute.h.
+
+ * html/CollectionCache.cpp: Copied from WebCore/html/HTMLCollection.cpp.
+ Contains the class that used to be HTMLCollection::CollectionInfo.
+ * html/CollectionCache.h: Copied from WebCore/html/HTMLCollection.h.
+ Ditto.
+
+ * html/CollectionType.h: Copied from WebCore/html/HTMLCollection.h.
+ Has the enum that used to be HTMLCollection::Type.
+
+ * html/HTMLCollection.cpp:
+ (WebCore::HTMLCollection::HTMLCollection): Update for collection type change.
+ (WebCore::HTMLCollection::create): Ditto.
+ (WebCore::HTMLCollection::resetCollectionInfo): Ditto.
+ (WebCore::HTMLCollection::itemAfter): Ditto.
+ * html/HTMLCollection.h: Ditto.
+
+ * html/HTMLElement.cpp:
+ (WebCore::HTMLElement::children): Updated for new collection type names.
+ * html/HTMLFormCollection.cpp:
+ (WebCore::HTMLFormCollection::formCollectionInfo): Ditto.
+ (WebCore::HTMLFormCollection::HTMLFormCollection): Ditto.
+ * html/HTMLFormCollection.h: Ditto.
+ * html/HTMLFormElement.h: Ditto.
+ * html/HTMLMapElement.cpp:
+ (WebCore::HTMLMapElement::areas): Ditto.
+ * html/HTMLNameCollection.cpp:
+ (WebCore::HTMLNameCollection::HTMLNameCollection): Ditto.
+ * html/HTMLNameCollection.h:
+ (WebCore::HTMLNameCollection::create): Ditto.
+ * html/HTMLSelectElement.h:
+ (WebCore::HTMLSelectElement::collectionInfo): Ditto.
+ * html/HTMLTableElement.cpp:
+ (WebCore::HTMLTableElement::tBodies):Ditto.
+ * html/HTMLTableRowElement.cpp:
+ (WebCore::HTMLTableRowElement::cells):Ditto.
+ * html/HTMLTableRowsCollection.cpp:
+ (WebCore::HTMLTableRowsCollection::HTMLTableRowsCollection): Ditto.
+ * html/HTMLTableSectionElement.cpp:
+ (WebCore::HTMLTableSectionElement::rows): Ditto.
+
+ * bindings/js/JSDOMWindowBase.cpp: Added newly-needed includes.
+ * bindings/js/JSHTMLFrameSetElementCustom.cpp: Ditto.
+ * css/CSSStyleSelector.cpp: Ditto.
+ * dom/Element.cpp: Ditto.
+ * dom/InputElement.cpp: Ditto.
+ * dom/NamedAttrMap.cpp: Ditto.
+ * dom/NamedMappedAttrMap.cpp: Ditto.
+ * dom/Node.cpp: Ditto.
+ * dom/StyledElement.cpp: Ditto.
+ * dom/StyledElement.h: Ditto.
+ * editing/ApplyStyleCommand.cpp: Ditto.
+ * editing/DeleteSelectionCommand.cpp: Ditto.
+ * editing/Editor.cpp: Ditto.
+ * editing/EditorCommand.cpp: Ditto.
+ * editing/InsertParagraphSeparatorCommand.cpp: Ditto.
+ * editing/ReplaceSelectionCommand.cpp: Ditto.
+ * editing/markup.cpp: Ditto.
+ * html/CanvasRenderingContext2D.cpp: Ditto.
+ * html/HTMLAnchorElement.cpp: Ditto.
+ * html/HTMLAppletElement.cpp: Ditto.
+ * html/HTMLAreaElement.cpp: Ditto.
+ * html/HTMLBRElement.cpp: Ditto.
+ * html/HTMLBaseElement.cpp: Ditto.
+ * html/HTMLBodyElement.cpp: Ditto.
+ * html/HTMLButtonElement.cpp: Ditto.
+ * html/HTMLCanvasElement.cpp: Ditto.
+ * html/HTMLDivElement.cpp: Ditto.
+ * html/HTMLEmbedElement.cpp: Ditto.
+ * html/HTMLFontElement.cpp: Ditto.
+ * html/HTMLFormControlElement.cpp: Ditto.
+ * html/HTMLFormElement.cpp: Ditto.
+ * html/HTMLFrameElement.cpp: Ditto.
+ * html/HTMLFrameElementBase.cpp: Ditto.
+ * html/HTMLFrameSetElement.cpp: Ditto.
+ * html/HTMLHRElement.cpp: Ditto.
+ * html/HTMLIFrameElement.cpp: Ditto.
+ * html/HTMLImageElement.cpp: Ditto.
+ * html/HTMLInputElement.cpp: Ditto.
+ * html/HTMLIsIndexElement.cpp: Ditto.
+ * html/HTMLKeygenElement.cpp: Ditto.
+ * html/HTMLLIElement.cpp: Ditto.
+ * html/HTMLLinkElement.cpp: Ditto.
+ * html/HTMLMarqueeElement.cpp: Ditto.
+ * html/HTMLMetaElement.cpp: Ditto.
+ * html/HTMLOListElement.cpp: Ditto.
+ * html/HTMLObjectElement.cpp: Ditto.
+ * html/HTMLOptionElement.cpp: Ditto.
+ * html/HTMLParagraphElement.cpp: Ditto.
+ * html/HTMLParamElement.cpp: Ditto.
+ * html/HTMLPlugInElement.cpp: Ditto.
+ * html/HTMLPreElement.cpp: Ditto.
+ * html/HTMLScriptElement.cpp: Ditto.
+ * html/HTMLSelectElement.cpp: Ditto.
+ * html/HTMLStyleElement.cpp: Ditto.
+ * html/HTMLTableCaptionElement.cpp: Ditto.
+ * html/HTMLTableCellElement.cpp: Ditto.
+ * html/HTMLTableColElement.cpp: Ditto.
+ * html/HTMLTablePartElement.cpp: Ditto.
+ * html/HTMLTextAreaElement.cpp: Ditto.
+ * html/HTMLTokenizer.cpp: Ditto.
+ * html/HTMLUListElement.cpp: Ditto.
+ * html/HTMLVideoElement.cpp: Ditto.
+ * html/HTMLViewSourceDocument.cpp: Ditto.
+ * loader/ImageDocument.cpp: Ditto.
+ * page/Frame.cpp: Ditto.
+ * rendering/RenderTreeAsText.cpp: Ditto.
+ * svg/SVGAElement.cpp: Ditto.
+ * svg/SVGAnimateMotionElement.cpp: Ditto.
+ * svg/SVGAnimateTransformElement.cpp: Ditto.
+ * svg/SVGAnimationElement.cpp: Ditto.
+ * svg/SVGCircleElement.cpp: Ditto.
+ * svg/SVGClipPathElement.cpp: Ditto.
+ * svg/SVGCursorElement.cpp: Ditto.
+ * svg/SVGElement.cpp: Ditto.
+ * svg/SVGEllipseElement.cpp: Ditto.
+ * svg/SVGExternalResourcesRequired.cpp: Ditto.
+ * svg/SVGFitToViewBox.cpp: Ditto.
+ * svg/SVGFontFaceElement.cpp: Ditto.
+ * svg/SVGFontFaceUriElement.cpp: Ditto.
+ * svg/SVGForeignObjectElement.cpp: Ditto.
+ * svg/SVGGlyphElement.cpp: Ditto.
+ * svg/SVGGradientElement.cpp: Ditto.
+ * svg/SVGImageElement.cpp: Ditto.
+ * svg/SVGLangSpace.cpp: Ditto.
+ * svg/SVGLineElement.cpp: Ditto.
+ * svg/SVGLinearGradientElement.cpp: Ditto.
+ * svg/SVGMarkerElement.cpp: Ditto.
+ * svg/SVGMaskElement.cpp: Ditto.
+ * svg/SVGPathElement.cpp: Ditto.
+ * svg/SVGPatternElement.cpp: Ditto.
+ * svg/SVGPolyElement.cpp: Ditto.
+ * svg/SVGRadialGradientElement.cpp: Ditto.
+ * svg/SVGRectElement.cpp: Ditto.
+ * svg/SVGSVGElement.cpp: Ditto.
+ * svg/SVGScriptElement.cpp: Ditto.
+ * svg/SVGStopElement.cpp: Ditto.
+ * svg/SVGStyleElement.cpp: Ditto.
+ * svg/SVGStyledElement.cpp: Ditto.
+ * svg/SVGStyledTransformableElement.cpp: Ditto.
+ * svg/SVGTests.cpp: Ditto.
+ * svg/SVGTextContentElement.cpp: Ditto.
+ * svg/SVGTextElement.cpp: Ditto.
+ * svg/SVGTextPathElement.cpp: Ditto.
+ * svg/SVGTextPositioningElement.cpp: Ditto.
+ * svg/SVGURIReference.cpp: Ditto.
+ * svg/SVGUseElement.cpp: Ditto.
+ * svg/SVGViewElement.cpp: Ditto.
+ * svg/animation/SVGSMILElement.cpp: Ditto.
+ * xml/XPathStep.cpp: Ditto.
+
+2009-05-04 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Do not instantiate hidden WebInspector panels. Otherwise they are hitting unimplemented InspectorController methods.
+ https://bugs.webkit.org/show_bug.cgi?id=25520
+
+ * inspector/front-end/inspector.js:
+ (WebInspector.loaded):
+
+2009-05-04 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6839881> With "Mail Contents of This Page" in Safari images don't appear in the Tiger Mail compose window
+
+ DocumentLoader::subresource() is the implementation for the WebKit API [WebDataSource subresourceForURL:] and has
+ particularly sticky behavior.
+
+ If the DocumentLoader represents a WebArchive, this method should return ArchiveResources from that archive. However, we
+ prefer CachedResources over ArchiveResources because they might represent fresher data than what was originally loaded
+ from the WebArchive.
+
+ In some instances, CachedResources are created and associated with the DocumentLoader but not immediately run through the
+ loading delegate machinery. This was always a possibility, but the Preload Scanner made this significantly more likely.
+
+ When this happens and someone asks the WebDataSource for a subresource, it would prefer the CachedResource over an
+ ArchiveResource it has even if the CachedResource hasn't been loaded yet. The CachedResource has nil data, so no
+ WebResource is returned, and the client thinks the subresource doesn't exist even though it does.
+
+ This broke Tiger Mail and probably various other WebKit applications but has a fairly straightforward fix.
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::subresource): If there is a CachedResource but it hasn't been loaded yet, fallback to the
+ ArchiveResource.
+
+2009-05-04 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Adam Roben.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25545
+ Bug 25545: HTMLMediaElement: display anamorphic video correctly
+
+ Tell QuickTime to use clean aperture mode so movies with non-square pixels are sized
+ and displayed correctly.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::createQTMovie): Ask QuickTime to use clean aperture mode.
+ * platform/graphics/win/QTMovieWin.cpp:
+ (QTMovieWin::load): Ditto. Add ASSERT to ensure that static movie property array isn't
+ filled beyond capacity.
+
+2009-05-03 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix <https://bugs.webkit.org/show_bug.cgi?id=25332>.
+ Bug 25332: Plug-in inserted in to DOM of PluginDocument fails to load
+
+ Only the first plug-in in a PluginDocument can use the main resource data. For all
+ subsequent plug-ins, such as the plug-in that ClickToFlash inserts when swapping itself
+ out for the real Flash plug-in, we need to load the resource data in the same manner
+ as for other embedded plug-ins.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadPlugin):
+
+2009-05-04 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Rubber-stamped by Ariya Hidayat.
+
+ Update the qrc file for the Web Inspector in the Qt build
+ with missing files.
+
+ * inspector/front-end/WebKit.qrc:
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by George Staikos.
+
+ Move absoluteRects and absoluteQuads into RenderSVGInline and remove absoluteTransform() usage
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ * rendering/RenderSVGInline.cpp:
+ (WebCore::RenderSVGInline::absoluteRects):
+ (WebCore::RenderSVGInline::absoluteQuads):
+ * rendering/RenderSVGInline.h:
+ * rendering/RenderSVGTSpan.cpp:
+ * rendering/RenderSVGTSpan.h:
+ * rendering/RenderSVGTextPath.cpp:
+ * rendering/RenderSVGTextPath.h:
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by George Staikos.
+
+ Move RenderSVGText off of localToAbsolute()
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::absoluteRects):
+ (WebCore::RenderSVGText::absoluteQuads):
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by George Staikos.
+
+ Remove broken absoluteTransform() code from RenderSVGInlineText
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ This improved SVG text focus rings.
+ This also improved SVG.getScreenCTM() results.
+
+ SVGSVGElement::getScreenCTM was passing "true" for the second argument in
+ localToAbsolute, which is "fixed" it meant to pass "true" for the
+ third argument (useTransforms). That change alone caused no layout test changes, however
+ before I fixed this, it was hitting ASSERT(!fixed) in RenderSVGRoot::mapLocalToContainer
+
+ mapLocalToContainer implementations really should be shared,
+ but I'll do that in a later patch.
+
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::styleDidChange):
+ (WebCore::RenderSVGInlineText::absoluteQuads):
+ (WebCore::RenderSVGInlineText::computeRepaintRectForRange):
+ (WebCore::RenderSVGInlineText::computeRepaintQuadForRange):
+ * rendering/RenderSVGInlineText.h:
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::mapLocalToContainer):
+ * rendering/RenderSVGRoot.h:
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::mapLocalToContainer):
+ * rendering/RenderSVGText.h:
+ * svg/SVGSVGElement.cpp:
+ (WebCore::SVGSVGElement::getScreenCTM):
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by George Staikos.
+
+ Remove dead code from RenderPath
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ * rendering/RenderPath.cpp:
+ * rendering/RenderPath.h:
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by George Staikos.
+
+ Share layout code between RenderSVGViewportContainer and RenderSVGContainer
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::layout):
+ * rendering/RenderSVGContainer.h:
+ (WebCore::RenderSVGContainer::calcViewport):
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::applyViewportClip):
+ * rendering/RenderSVGViewportContainer.h:
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by George Staikos.
+
+ Remove redundant disableLayoutState() calls
+ https://bugs.webkit.org/show_bug.cgi?id=25532
+
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::layout):
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::layout):
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::layout):
+
+2009-05-03 Eric Seidel <eric@webkit.org>
+
+ Reviewed by George Staikos.
+
+ Simplify RenderForeignObject::paint and fix a repaint bug.
+ Paint now calls applyTransformToPaintInfo which correctly transforms the damage rect.
+ https://bugs.webkit.org/show_bug.cgi?id=16939
+
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::paint):
+
+2009-05-03 Hironori Bono <hbono@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Test: editing/spelling/spellcheck-attribute.html
+
+ Bug 14552: Add a way to disable spell checking for specific element
+ https://bugs.webkit.org/show_bug.cgi?id=14552
+
+ For compatibility with Firefox, this code ascends the DOM tree when an element does
+ not have its "spellcheck" attribute.
+
+ * editing/Editor.cpp:
+ (WebCore::markMisspellingsOrBadGrammar): Retrieve the value of the "spellcheck"
+ attribute of an element before calling a spell checker or a grammar checker.
+ * html/HTMLAttributeNames.in: Add a "spellcheck" attribute.
+
+2009-05-03 Sam Weinig <sam@webkit.org>
+
+ Roll JSC API number marshaling back in one last time (I hope).
+
+2009-05-03 Sam Weinig <sam@webkit.org>
+
+ Roll JSC API number marshaling back out. It still breaks windows.
+
+2009-05-03 Sam Weinig <sam@webkit.org>
+
+ Roll JSC API number marshaling back in.
+
+2009-05-02 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - another fix for <rdar://problem/6617298> Typing delete on an unquoted
+ blank line unquotes the preceding, quoted blank line
+
+ Test: editing/deleting/type-delete-after-quote-2.html
+
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::DeleteSelectionCommand): Initialize
+ m_startsAtEmptyLine.
+ (WebCore::DeleteSelectionCommand::handleSpecialCaseBRDelete): When the
+ selection starts at an empty line, do not prevent the merging of blocks.
+ This is what allows the text after the line break to be merged into the
+ block containing the line break. Also set m_startsAtEmptyLine to true.
+ (WebCore::DeleteSelectionCommand::mergeParagraphs): If
+ m_startsAtEmptyLine is true, create a placeholder BR to serve as the
+ merge destination.
+ * editing/DeleteSelectionCommand.h:
+
+2009-05-02 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Simplified null-ish JSValues.
+
+ Replaced calls to noValue() with calls to JSValue() (which is what
+ noValue() returned). Removed noValue().
+
+ Removed "JSValue()" initialiazers, since default construction happens...
+ by default.
+
+ * bindings/js/JSDOMBinding.cpp:
+ (WebCore::setDOMException):
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::open):
+ (WebCore::JSDOMWindow::showModalDialog):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSEventListener::handleEvent):
+ * bindings/js/JSJavaScriptCallFrameCustom.cpp:
+ (WebCore::JSJavaScriptCallFrame::evaluate):
+ * bindings/js/JSSQLResultSetRowListCustom.cpp:
+ (WebCore::JSSQLResultSetRowList::item):
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::evaluate):
+ * bindings/js/ScriptValue.h:
+ (WebCore::ScriptValue::ScriptValue):
+ (WebCore::ScriptValue::hasNoValue):
+ * bindings/js/WorkerScriptController.cpp:
+ (WebCore::WorkerScriptController::evaluate):
+ * bridge/jni/jni_instance.cpp:
+ (JavaInstance::invokeMethod):
+ * bridge/jni/jni_runtime.cpp:
+ (JavaField::dispatchValueFromInstance):
+ (JavaField::dispatchSetValueToInstance):
+ * bridge/runtime.h:
+ (JSC::Bindings::Instance::invokeConstruct):
+
+2009-05-02 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6631735> Crash in WebCore::CSSStyleSelector::applyProperty(int, WebCore::CSSValue*) (RenderStyle.h:454)
+
+ Avoid re-entering style selector from load delegates by not issuing resource loads synchronously during attach().
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::suspendPostAttachCallbacks):
+ (WebCore::ContainerNode::resumePostAttachCallbacks):
+ (WebCore::ContainerNode::attach):
+ * dom/Element.cpp:
+ (WebCore::Element::attach):
+ * loader/loader.cpp:
+ (WebCore::Loader::Loader):
+ (WebCore::Loader::servePendingRequests):
+ (WebCore::Loader::suspendPendingRequests):
+ (WebCore::Loader::resumePendingRequests):
+ (WebCore::Loader::Host::servePendingRequests):
+ * loader/loader.h:
+ (WebCore::Loader::isSuspendingPendingRequests):
+
+2009-05-02 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 25352: REGRESSION(r42322): style isn't applied at bmwusa.com
+ https://bugs.webkit.org/show_bug.cgi?id=25352
+ rdar://problem/6823239
+
+ Test: http/tests/mime/standard-mode-loads-stylesheet-with-text-css-and-invalid-type.html
+
+ * platform/network/HTTPParsers.cpp:
+ (WebCore::extractMIMETypeFromMediaType): Allow comma as a separator.
+
+2009-05-02 Darin Adler <darin@apple.com>
+
+ Reviewed by Brady Eidson.
+
+ Bug 25491: WebFrame leak when a subframe removes itself
+ https://bugs.webkit.org/show_bug.cgi?id=25491
+ rdar://problem/6833859
+
+ Test: fast/loading/subframe-removes-itself.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::checkLoadCompleteForThisFrame): When isStopping is true,
+ treat load as complete, even if isLoadingInAPISense is still returning true.
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Roll out JavaScriptCore API number marshaling.
+
+ * bindings/js/ScriptValue.cpp:
+ (WebCore::ScriptValue::isEqual):
+ * inspector/JavaScriptProfile.cpp:
+ (WebCore::getHeadCallback):
+ * inspector/JavaScriptProfileNode.cpp:
+ (WebCore::getChildren):
+ (WebCore::getParent):
+ (WebCore::getHead):
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Fix build.
+
+ * workers/WorkerContext.idl:
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Cleanup workers code a bit.
+
+ * bindings/js/JSWorkerContextBase.cpp:
+ (WebCore::toJS):
+ * bindings/js/JSWorkerContextBase.h:
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::customGetOwnPropertySlot):
+ * workers/WorkerContext.h:
+ (WebCore::WorkerContext::toWorkerContext):
+ (WebCore::WorkerContext::self):
+ (WebCore::WorkerContext::setOnmessage):
+ (WebCore::WorkerContext::onmessage):
+ * workers/WorkerContext.idl:
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ A little clean up.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::createJavaAppletWidget):
+
+2009-05-01 Sam Weinig <sam@webkit.org>
+
+ Fix the build.
+
+ * bindings/js/ScriptValue.cpp:
+ (WebCore::ScriptValue::isEqual):
+ * inspector/JavaScriptProfile.cpp:
+ (WebCore::getHeadCallback):
+ * inspector/JavaScriptProfileNode.cpp:
+ (WebCore::getChildren):
+ (WebCore::getParent):
+ (WebCore::getHead):
+
+2009-05-01 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Oliver Hunt and Sam "Jon 'The Belly' Honeycutt" Weinig
+
+ Fix <rdar://problem/6848867> Addition of DOCTYPE node breaks Tiger Mail
+
+ * bindings/objc/DOMHTML.mm:
+ (-[DOMHTMLDocument firstChild]): Add a Tiger Mail version of this method that skips DOCTYPE nodes.
+
+2009-05-01 Geoffrey Garen <ggaren@apple.com>
+
+ Rubber Stamped by Sam Weinig.
+
+ Renamed JSValuePtr => JSValue.
+
+ * bindings/js/JSAttrCustom.cpp:
+ (WebCore::JSAttr::setValue):
+ * bindings/js/JSCDATASectionCustom.cpp:
+ (WebCore::toJSNewlyCreated):
+ * bindings/js/JSCSSRuleCustom.cpp:
+ (WebCore::toJS):
+ * bindings/js/JSCSSStyleDeclarationCustom.cpp:
+ (WebCore::JSCSSStyleDeclaration::nameGetter):
+ (WebCore::JSCSSStyleDeclaration::customPut):
+ * bindings/js/JSCSSValueCustom.cpp:
+ (WebCore::toJS):
+ * bindings/js/JSCanvasRenderingContext2DCustom.cpp:
+ (WebCore::toJS):
+ (WebCore::toHTMLCanvasStyle):
+ (WebCore::JSCanvasRenderingContext2D::strokeStyle):
+ (WebCore::JSCanvasRenderingContext2D::setStrokeStyle):
+ (WebCore::JSCanvasRenderingContext2D::fillStyle):
+ (WebCore::JSCanvasRenderingContext2D::setFillStyle):
+ (WebCore::JSCanvasRenderingContext2D::setFillColor):
+ (WebCore::JSCanvasRenderingContext2D::setStrokeColor):
+ (WebCore::JSCanvasRenderingContext2D::strokeRect):
+ (WebCore::JSCanvasRenderingContext2D::drawImage):
+ (WebCore::JSCanvasRenderingContext2D::drawImageFromRect):
+ (WebCore::JSCanvasRenderingContext2D::setShadow):
+ (WebCore::JSCanvasRenderingContext2D::createPattern):
+ (WebCore::JSCanvasRenderingContext2D::putImageData):
+ (WebCore::JSCanvasRenderingContext2D::fillText):
+ (WebCore::JSCanvasRenderingContext2D::strokeText):
+ * bindings/js/JSClipboardCustom.cpp:
+ (WebCore::JSClipboard::types):
+ (WebCore::JSClipboard::clearData):
+ (WebCore::JSClipboard::getData):
+ (WebCore::JSClipboard::setData):
+ (WebCore::JSClipboard::setDragImage):
+ * bindings/js/JSConsoleCustom.cpp:
+ (WebCore::JSConsole::profiles):
+ * bindings/js/JSCoordinatesCustom.cpp:
+ (WebCore::JSCoordinates::altitude):
+ (WebCore::JSCoordinates::altitudeAccuracy):
+ (WebCore::JSCoordinates::heading):
+ (WebCore::JSCoordinates::speed):
+ * bindings/js/JSCustomPositionCallback.cpp:
+ (WebCore::JSCustomPositionCallback::handleEvent):
+ * bindings/js/JSCustomPositionErrorCallback.cpp:
+ (WebCore::JSCustomPositionErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLStatementCallback.cpp:
+ (WebCore::JSCustomSQLStatementCallback::handleEvent):
+ * bindings/js/JSCustomSQLStatementErrorCallback.cpp:
+ (WebCore::JSCustomSQLStatementErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionCallback.cpp:
+ (WebCore::JSCustomSQLTransactionCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
+ (WebCore::JSCustomSQLTransactionErrorCallback::handleEvent):
+ * bindings/js/JSCustomVoidCallback.cpp:
+ (WebCore::JSCustomVoidCallback::handleEvent):
+ (WebCore::toVoidCallback):
+ * bindings/js/JSCustomVoidCallback.h:
+ * bindings/js/JSCustomXPathNSResolver.cpp:
+ (WebCore::JSCustomXPathNSResolver::create):
+ (WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):
+ * bindings/js/JSCustomXPathNSResolver.h:
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ (WebCore::JSDOMApplicationCache::hasItem):
+ (WebCore::JSDOMApplicationCache::add):
+ (WebCore::JSDOMApplicationCache::remove):
+ (WebCore::JSDOMApplicationCache::addEventListener):
+ (WebCore::JSDOMApplicationCache::removeEventListener):
+ * bindings/js/JSDOMBinding.cpp:
+ (WebCore::jsStringOrNull):
+ (WebCore::jsOwnedStringOrNull):
+ (WebCore::jsStringOrUndefined):
+ (WebCore::jsStringOrFalse):
+ (WebCore::valueToStringWithNullCheck):
+ (WebCore::valueToStringWithUndefinedOrNullCheck):
+ (WebCore::reportException):
+ (WebCore::reportCurrentException):
+ (WebCore::setDOMException):
+ (WebCore::objectToStringFunctionGetter):
+ * bindings/js/JSDOMBinding.h:
+ (WebCore::getDOMObjectWrapper):
+ (WebCore::getDOMNodeWrapper):
+ (WebCore::toJS):
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::findJSEventListener):
+ (WebCore::JSDOMGlobalObject::findOrCreateJSEventListener):
+ (WebCore::JSDOMGlobalObject::createJSAttributeEventListener):
+ * bindings/js/JSDOMGlobalObject.h:
+ * bindings/js/JSDOMStringListCustom.cpp:
+ (WebCore::JSDOMStringList::getByIndex):
+ (WebCore::JSDOMStringList::item):
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::JSDOMWindowBase::childFrameGetter):
+ (WebCore::JSDOMWindowBase::indexGetter):
+ (WebCore::JSDOMWindowBase::namedItemGetter):
+ (WebCore::JSDOMWindowBase::getOwnPropertySlot):
+ (WebCore::JSDOMWindowBase::put):
+ (WebCore::JSDOMWindowBase::setReturnValueSlot):
+ (WebCore::toJS):
+ (WebCore::toJSDOMWindow):
+ * bindings/js/JSDOMWindowBase.h:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::lookupGetter):
+ (WebCore::JSDOMWindow::lookupSetter):
+ (WebCore::JSDOMWindow::history):
+ (WebCore::JSDOMWindow::location):
+ (WebCore::JSDOMWindow::setLocation):
+ (WebCore::JSDOMWindow::crypto):
+ (WebCore::JSDOMWindow::event):
+ (WebCore::JSDOMWindow::image):
+ (WebCore::JSDOMWindow::option):
+ (WebCore::JSDOMWindow::audio):
+ (WebCore::JSDOMWindow::webKitPoint):
+ (WebCore::JSDOMWindow::webKitCSSMatrix):
+ (WebCore::JSDOMWindow::xmlHttpRequest):
+ (WebCore::JSDOMWindow::xsltProcessor):
+ (WebCore::JSDOMWindow::messageChannel):
+ (WebCore::JSDOMWindow::worker):
+ (WebCore::createWindow):
+ (WebCore::JSDOMWindow::open):
+ (WebCore::JSDOMWindow::showModalDialog):
+ (WebCore::JSDOMWindow::postMessage):
+ (WebCore::JSDOMWindow::setTimeout):
+ (WebCore::JSDOMWindow::setInterval):
+ (WebCore::JSDOMWindow::atob):
+ (WebCore::JSDOMWindow::btoa):
+ (WebCore::JSDOMWindow::addEventListener):
+ (WebCore::JSDOMWindow::removeEventListener):
+ (WebCore::toDOMWindow):
+ * bindings/js/JSDOMWindowCustom.h:
+ (WebCore::nonCachingStaticFunctionGetter):
+ (WebCore::JSDOMWindow::customPut):
+ * bindings/js/JSDOMWindowShell.cpp:
+ (WebCore::JSDOMWindowShell::put):
+ (WebCore::JSDOMWindowShell::putWithAttributes):
+ (WebCore::JSDOMWindowShell::lookupGetter):
+ (WebCore::JSDOMWindowShell::lookupSetter):
+ (WebCore::toJS):
+ * bindings/js/JSDOMWindowShell.h:
+ (WebCore::JSDOMWindowShell::createStructure):
+ * bindings/js/JSDatabaseCustom.cpp:
+ (WebCore::JSDatabase::changeVersion):
+ (WebCore::JSDatabase::transaction):
+ * bindings/js/JSDocumentCustom.cpp:
+ (WebCore::JSDocument::location):
+ (WebCore::JSDocument::setLocation):
+ (WebCore::toJS):
+ * bindings/js/JSElementCustom.cpp:
+ (WebCore::JSElement::setAttribute):
+ (WebCore::JSElement::setAttributeNode):
+ (WebCore::JSElement::setAttributeNS):
+ (WebCore::JSElement::setAttributeNodeNS):
+ (WebCore::toJSNewlyCreated):
+ * bindings/js/JSEventCustom.cpp:
+ (WebCore::JSEvent::clipboardData):
+ (WebCore::toJS):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSEventListener::handleEvent):
+ * bindings/js/JSEventTarget.cpp:
+ (WebCore::toJS):
+ (WebCore::toEventTarget):
+ * bindings/js/JSEventTarget.h:
+ * bindings/js/JSEventTargetBase.h:
+ * bindings/js/JSGeolocationCustom.cpp:
+ (WebCore::createPositionOptions):
+ (WebCore::JSGeolocation::getCurrentPosition):
+ (WebCore::JSGeolocation::watchPosition):
+ * bindings/js/JSHTMLAllCollection.h:
+ (WebCore::JSHTMLAllCollection::createStructure):
+ * bindings/js/JSHTMLAppletElementCustom.cpp:
+ (WebCore::JSHTMLAppletElement::customPut):
+ (WebCore::JSHTMLAppletElement::nameGetter):
+ * bindings/js/JSHTMLCollectionCustom.cpp:
+ (WebCore::getNamedItems):
+ (WebCore::callHTMLCollection):
+ (WebCore::JSHTMLCollection::nameGetter):
+ (WebCore::JSHTMLCollection::item):
+ (WebCore::JSHTMLCollection::namedItem):
+ (WebCore::toJS):
+ * bindings/js/JSHTMLDocumentCustom.cpp:
+ (WebCore::JSHTMLDocument::nameGetter):
+ (WebCore::JSHTMLDocument::all):
+ (WebCore::JSHTMLDocument::setAll):
+ (WebCore::JSHTMLDocument::open):
+ (WebCore::JSHTMLDocument::write):
+ (WebCore::JSHTMLDocument::writeln):
+ * bindings/js/JSHTMLEmbedElementCustom.cpp:
+ (WebCore::JSHTMLEmbedElement::customPut):
+ (WebCore::JSHTMLEmbedElement::nameGetter):
+ * bindings/js/JSHTMLFormElementCustom.cpp:
+ (WebCore::JSHTMLFormElement::nameGetter):
+ (WebCore::JSHTMLFormElement::submit):
+ * bindings/js/JSHTMLFrameElementCustom.cpp:
+ (WebCore::JSHTMLFrameElement::setSrc):
+ (WebCore::JSHTMLFrameElement::setLocation):
+ * bindings/js/JSHTMLFrameSetElementCustom.cpp:
+ (WebCore::JSHTMLFrameSetElement::nameGetter):
+ * bindings/js/JSHTMLIFrameElementCustom.cpp:
+ (WebCore::JSHTMLIFrameElement::setSrc):
+ * bindings/js/JSHTMLInputElementCustom.cpp:
+ (WebCore::JSHTMLInputElement::selectionStart):
+ (WebCore::JSHTMLInputElement::setSelectionStart):
+ (WebCore::JSHTMLInputElement::selectionEnd):
+ (WebCore::JSHTMLInputElement::setSelectionEnd):
+ (WebCore::JSHTMLInputElement::setSelectionRange):
+ * bindings/js/JSHTMLObjectElementCustom.cpp:
+ (WebCore::JSHTMLObjectElement::customPut):
+ (WebCore::JSHTMLObjectElement::nameGetter):
+ * bindings/js/JSHTMLOptionsCollectionCustom.cpp:
+ (WebCore::JSHTMLOptionsCollection::length):
+ (WebCore::JSHTMLOptionsCollection::setLength):
+ (WebCore::JSHTMLOptionsCollection::indexSetter):
+ (WebCore::JSHTMLOptionsCollection::add):
+ (WebCore::JSHTMLOptionsCollection::remove):
+ * bindings/js/JSHTMLSelectElementCustom.cpp:
+ (WebCore::JSHTMLSelectElement::remove):
+ (WebCore::selectIndexSetter):
+ (WebCore::JSHTMLSelectElement::indexSetter):
+ * bindings/js/JSHTMLSelectElementCustom.h:
+ * bindings/js/JSHistoryCustom.cpp:
+ (WebCore::nonCachingStaticBackFunctionGetter):
+ (WebCore::nonCachingStaticForwardFunctionGetter):
+ (WebCore::nonCachingStaticGoFunctionGetter):
+ (WebCore::JSHistory::customPut):
+ * bindings/js/JSImageDataCustom.cpp:
+ (WebCore::toJS):
+ * bindings/js/JSInspectedObjectWrapper.cpp:
+ (WebCore::JSInspectedObjectWrapper::wrap):
+ (WebCore::JSInspectedObjectWrapper::prepareIncomingValue):
+ * bindings/js/JSInspectedObjectWrapper.h:
+ (WebCore::JSInspectedObjectWrapper::wrapOutgoingValue):
+ * bindings/js/JSInspectorCallbackWrapper.cpp:
+ (WebCore::JSInspectorCallbackWrapper::wrap):
+ (WebCore::JSInspectorCallbackWrapper::prepareIncomingValue):
+ * bindings/js/JSInspectorCallbackWrapper.h:
+ (WebCore::JSInspectorCallbackWrapper::wrapOutgoingValue):
+ * bindings/js/JSInspectorControllerCustom.cpp:
+ (WebCore::JSInspectorController::highlightDOMNode):
+ (WebCore::JSInspectorController::addResourceSourceToFrame):
+ (WebCore::JSInspectorController::addSourceToFrame):
+ (WebCore::JSInspectorController::getResourceDocumentNode):
+ (WebCore::JSInspectorController::search):
+ (WebCore::JSInspectorController::databaseTableNames):
+ (WebCore::JSInspectorController::inspectedWindow):
+ (WebCore::JSInspectorController::setting):
+ (WebCore::JSInspectorController::setSetting):
+ (WebCore::JSInspectorController::wrapCallback):
+ (WebCore::JSInspectorController::currentCallFrame):
+ (WebCore::JSInspectorController::profiles):
+ * bindings/js/JSJavaScriptCallFrameCustom.cpp:
+ (WebCore::JSJavaScriptCallFrame::evaluate):
+ (WebCore::JSJavaScriptCallFrame::thisObject):
+ (WebCore::JSJavaScriptCallFrame::type):
+ (WebCore::JSJavaScriptCallFrame::scopeChain):
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::JSLazyEventListener::parseCode):
+ * bindings/js/JSLocationCustom.cpp:
+ (WebCore::nonCachingStaticReplaceFunctionGetter):
+ (WebCore::nonCachingStaticReloadFunctionGetter):
+ (WebCore::nonCachingStaticAssignFunctionGetter):
+ (WebCore::JSLocation::customPut):
+ (WebCore::JSLocation::setHref):
+ (WebCore::JSLocation::setProtocol):
+ (WebCore::JSLocation::setHost):
+ (WebCore::JSLocation::setHostname):
+ (WebCore::JSLocation::setPort):
+ (WebCore::JSLocation::setPathname):
+ (WebCore::JSLocation::setSearch):
+ (WebCore::JSLocation::setHash):
+ (WebCore::JSLocation::replace):
+ (WebCore::JSLocation::reload):
+ (WebCore::JSLocation::assign):
+ (WebCore::JSLocation::toString):
+ (WebCore::JSLocationPrototype::customPut):
+ * bindings/js/JSMessagePortCustom.cpp:
+ (WebCore::JSMessagePort::startConversation):
+ (WebCore::JSMessagePort::addEventListener):
+ (WebCore::JSMessagePort::removeEventListener):
+ * bindings/js/JSMimeTypeArrayCustom.cpp:
+ (WebCore::JSMimeTypeArray::nameGetter):
+ * bindings/js/JSNamedNodeMapCustom.cpp:
+ (WebCore::JSNamedNodeMap::nameGetter):
+ * bindings/js/JSNamedNodesCollection.cpp:
+ (WebCore::JSNamedNodesCollection::lengthGetter):
+ (WebCore::JSNamedNodesCollection::indexGetter):
+ * bindings/js/JSNamedNodesCollection.h:
+ (WebCore::JSNamedNodesCollection::createStructure):
+ * bindings/js/JSNavigatorCustom.cpp:
+ (WebCore::needsYouTubeQuirk):
+ (WebCore::JSNavigator::appVersion):
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::JSNode::insertBefore):
+ (WebCore::JSNode::replaceChild):
+ (WebCore::JSNode::removeChild):
+ (WebCore::JSNode::appendChild):
+ (WebCore::JSNode::addEventListener):
+ (WebCore::JSNode::removeEventListener):
+ (WebCore::createWrapper):
+ (WebCore::toJSNewlyCreated):
+ (WebCore::toJS):
+ * bindings/js/JSNodeFilterCondition.cpp:
+ (WebCore::JSNodeFilterCondition::JSNodeFilterCondition):
+ (WebCore::JSNodeFilterCondition::acceptNode):
+ * bindings/js/JSNodeFilterCondition.h:
+ (WebCore::JSNodeFilterCondition::create):
+ * bindings/js/JSNodeFilterCustom.cpp:
+ (WebCore::JSNodeFilter::acceptNode):
+ (WebCore::toNodeFilter):
+ * bindings/js/JSNodeIteratorCustom.cpp:
+ (WebCore::JSNodeIterator::nextNode):
+ (WebCore::JSNodeIterator::previousNode):
+ * bindings/js/JSNodeListCustom.cpp:
+ (WebCore::callNodeList):
+ (WebCore::JSNodeList::nameGetter):
+ * bindings/js/JSPluginArrayCustom.cpp:
+ (WebCore::JSPluginArray::nameGetter):
+ * bindings/js/JSPluginCustom.cpp:
+ (WebCore::JSPlugin::nameGetter):
+ * bindings/js/JSPluginElementFunctions.cpp:
+ (WebCore::runtimeObjectGetter):
+ (WebCore::runtimeObjectPropertyGetter):
+ (WebCore::runtimeObjectCustomPut):
+ (WebCore::callPlugin):
+ * bindings/js/JSPluginElementFunctions.h:
+ * bindings/js/JSQuarantinedObjectWrapper.cpp:
+ (WebCore::JSQuarantinedObjectWrapper::asWrapper):
+ (WebCore::JSQuarantinedObjectWrapper::cachedValueGetter):
+ (WebCore::JSQuarantinedObjectWrapper::transferExceptionToExecState):
+ (WebCore::JSQuarantinedObjectWrapper::getOwnPropertySlot):
+ (WebCore::JSQuarantinedObjectWrapper::put):
+ (WebCore::JSQuarantinedObjectWrapper::construct):
+ (WebCore::JSQuarantinedObjectWrapper::hasInstance):
+ (WebCore::JSQuarantinedObjectWrapper::call):
+ * bindings/js/JSQuarantinedObjectWrapper.h:
+ (WebCore::JSQuarantinedObjectWrapper::createStructure):
+ * bindings/js/JSRGBColor.cpp:
+ (WebCore::getJSRGBColor):
+ (jsRGBColorRed):
+ (jsRGBColorGreen):
+ (jsRGBColorBlue):
+ * bindings/js/JSRGBColor.h:
+ (WebCore::JSRGBColor::createStructure):
+ * bindings/js/JSSQLResultSetRowListCustom.cpp:
+ (WebCore::JSSQLResultSetRowList::item):
+ * bindings/js/JSSQLTransactionCustom.cpp:
+ (WebCore::JSSQLTransaction::executeSql):
+ * bindings/js/JSSVGElementInstanceCustom.cpp:
+ (WebCore::JSSVGElementInstance::addEventListener):
+ (WebCore::JSSVGElementInstance::removeEventListener):
+ (WebCore::toJS):
+ * bindings/js/JSSVGLengthCustom.cpp:
+ (WebCore::JSSVGLength::value):
+ (WebCore::JSSVGLength::convertToSpecifiedUnits):
+ * bindings/js/JSSVGMatrixCustom.cpp:
+ (WebCore::JSSVGMatrix::inverse):
+ (WebCore::JSSVGMatrix::rotateFromVector):
+ * bindings/js/JSSVGPathSegCustom.cpp:
+ (WebCore::toJS):
+ * bindings/js/JSSVGPathSegListCustom.cpp:
+ (WebCore::JSSVGPathSegList::clear):
+ (WebCore::JSSVGPathSegList::initialize):
+ (WebCore::JSSVGPathSegList::getItem):
+ (WebCore::JSSVGPathSegList::insertItemBefore):
+ (WebCore::JSSVGPathSegList::replaceItem):
+ (WebCore::JSSVGPathSegList::removeItem):
+ (WebCore::JSSVGPathSegList::appendItem):
+ * bindings/js/JSSVGPointListCustom.cpp:
+ (WebCore::finishGetter):
+ (WebCore::finishSetter):
+ (WebCore::finishSetterReadOnlyResult):
+ (WebCore::JSSVGPointList::clear):
+ (WebCore::JSSVGPointList::initialize):
+ (WebCore::JSSVGPointList::getItem):
+ (WebCore::JSSVGPointList::insertItemBefore):
+ (WebCore::JSSVGPointList::replaceItem):
+ (WebCore::JSSVGPointList::removeItem):
+ (WebCore::JSSVGPointList::appendItem):
+ * bindings/js/JSSVGTransformListCustom.cpp:
+ (WebCore::finishGetter):
+ (WebCore::finishSetter):
+ (WebCore::finishSetterReadOnlyResult):
+ (WebCore::JSSVGTransformList::clear):
+ (WebCore::JSSVGTransformList::initialize):
+ (WebCore::JSSVGTransformList::getItem):
+ (WebCore::JSSVGTransformList::insertItemBefore):
+ (WebCore::JSSVGTransformList::replaceItem):
+ (WebCore::JSSVGTransformList::removeItem):
+ (WebCore::JSSVGTransformList::appendItem):
+ * bindings/js/JSStorageCustom.cpp:
+ (WebCore::JSStorage::nameGetter):
+ (WebCore::JSStorage::deleteProperty):
+ (WebCore::JSStorage::customPut):
+ * bindings/js/JSStyleSheetCustom.cpp:
+ (WebCore::toJS):
+ * bindings/js/JSStyleSheetListCustom.cpp:
+ (WebCore::JSStyleSheetList::nameGetter):
+ * bindings/js/JSTextCustom.cpp:
+ (WebCore::toJSNewlyCreated):
+ * bindings/js/JSTreeWalkerCustom.cpp:
+ (WebCore::JSTreeWalker::parentNode):
+ (WebCore::JSTreeWalker::firstChild):
+ (WebCore::JSTreeWalker::lastChild):
+ (WebCore::JSTreeWalker::nextSibling):
+ (WebCore::JSTreeWalker::previousSibling):
+ (WebCore::JSTreeWalker::previousNode):
+ (WebCore::JSTreeWalker::nextNode):
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::self):
+ (WebCore::JSWorkerContext::setSelf):
+ (WebCore::JSWorkerContext::xmlHttpRequest):
+ (WebCore::JSWorkerContext::importScripts):
+ (WebCore::JSWorkerContext::addEventListener):
+ (WebCore::JSWorkerContext::removeEventListener):
+ (WebCore::JSWorkerContext::setTimeout):
+ (WebCore::JSWorkerContext::setInterval):
+ * bindings/js/JSWorkerCustom.cpp:
+ (WebCore::JSWorker::addEventListener):
+ (WebCore::JSWorker::removeEventListener):
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::open):
+ (WebCore::JSXMLHttpRequest::setRequestHeader):
+ (WebCore::JSXMLHttpRequest::send):
+ (WebCore::JSXMLHttpRequest::getResponseHeader):
+ (WebCore::JSXMLHttpRequest::overrideMimeType):
+ (WebCore::JSXMLHttpRequest::addEventListener):
+ (WebCore::JSXMLHttpRequest::removeEventListener):
+ (WebCore::JSXMLHttpRequest::responseText):
+ * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
+ (WebCore::JSXMLHttpRequestUpload::addEventListener):
+ (WebCore::JSXMLHttpRequestUpload::removeEventListener):
+ * bindings/js/JSXSLTProcessorCustom.cpp:
+ (WebCore::JSXSLTProcessor::importStylesheet):
+ (WebCore::JSXSLTProcessor::transformToFragment):
+ (WebCore::JSXSLTProcessor::transformToDocument):
+ (WebCore::JSXSLTProcessor::setParameter):
+ (WebCore::JSXSLTProcessor::getParameter):
+ (WebCore::JSXSLTProcessor::removeParameter):
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::create):
+ (WebCore::ScheduledAction::ScheduledAction):
+ (WebCore::ScheduledAction::executeFunctionInContext):
+ * bindings/js/ScheduledAction.h:
+ * bindings/js/ScriptCallStack.cpp:
+ (WebCore::ScriptCallStack::ScriptCallStack):
+ (WebCore::ScriptCallStack::initialize):
+ * bindings/js/ScriptCallStack.h:
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::jsObjectForPluginElement):
+ * bindings/js/ScriptFunctionCall.cpp:
+ (WebCore::ScriptFunctionCall::appendArgument):
+ (WebCore::ScriptFunctionCall::call):
+ (WebCore::ScriptFunctionCall::construct):
+ * bindings/js/ScriptFunctionCall.h:
+ * bindings/js/ScriptObject.cpp:
+ (WebCore::ScriptGlobalObject::get):
+ * bindings/js/ScriptValue.h:
+ (WebCore::ScriptValue::ScriptValue):
+ (WebCore::ScriptValue::jsValue):
+ * bindings/objc/WebScriptObject.mm:
+ (-[WebScriptObject callWebScriptMethod:withArguments:]):
+ (-[WebScriptObject evaluateWebScript:]):
+ (-[WebScriptObject valueForKey:]):
+ (-[WebScriptObject webScriptValueAtIndex:]):
+ (+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]):
+ * bindings/objc/WebScriptObjectPrivate.h:
+ * bridge/NP_jsobject.cpp:
+ (_NPN_InvokeDefault):
+ (_NPN_Invoke):
+ (_NPN_Evaluate):
+ (_NPN_GetProperty):
+ (_NPN_HasMethod):
+ (_NPN_Construct):
+ * bridge/c/c_instance.cpp:
+ (JSC::Bindings::CInstance::invokeMethod):
+ (JSC::Bindings::CInstance::invokeDefaultMethod):
+ (JSC::Bindings::CInstance::invokeConstruct):
+ (JSC::Bindings::CInstance::defaultValue):
+ (JSC::Bindings::CInstance::stringValue):
+ (JSC::Bindings::CInstance::numberValue):
+ (JSC::Bindings::CInstance::booleanValue):
+ (JSC::Bindings::CInstance::valueOf):
+ * bridge/c/c_instance.h:
+ * bridge/c/c_runtime.cpp:
+ (JSC::Bindings::CField::valueFromInstance):
+ (JSC::Bindings::CField::setValueToInstance):
+ * bridge/c/c_runtime.h:
+ * bridge/c/c_utility.cpp:
+ (JSC::Bindings::convertValueToNPVariant):
+ (JSC::Bindings::convertNPVariantToValue):
+ * bridge/c/c_utility.h:
+ * bridge/jni/jni_instance.cpp:
+ (JavaInstance::stringValue):
+ (JavaInstance::numberValue):
+ (JavaInstance::booleanValue):
+ (JavaInstance::invokeMethod):
+ (JavaInstance::defaultValue):
+ (JavaInstance::valueOf):
+ * bridge/jni/jni_instance.h:
+ * bridge/jni/jni_jsobject.h:
+ * bridge/jni/jni_jsobject.mm:
+ (JavaJSObject::call):
+ (JavaJSObject::eval):
+ (JavaJSObject::getMember):
+ (JavaJSObject::getSlot):
+ (JavaJSObject::convertValueToJObject):
+ (JavaJSObject::convertJObjectToValue):
+ * bridge/jni/jni_objc.mm:
+ (JSC::Bindings::dispatchJNICall):
+ * bridge/jni/jni_runtime.cpp:
+ (JavaArray::convertJObjectToArray):
+ (JavaField::dispatchValueFromInstance):
+ (JavaField::valueFromInstance):
+ (JavaField::dispatchSetValueToInstance):
+ (JavaField::setValueToInstance):
+ (JavaArray::setValueAt):
+ (JavaArray::valueAt):
+ * bridge/jni/jni_runtime.h:
+ * bridge/jni/jni_utility.cpp:
+ (JSC::Bindings::convertArrayInstanceToJavaArray):
+ (JSC::Bindings::convertValueToJValue):
+ * bridge/jni/jni_utility.h:
+ * bridge/objc/WebScriptObject.h:
+ * bridge/objc/objc_class.h:
+ * bridge/objc/objc_class.mm:
+ (JSC::Bindings::ObjcClass::fallbackObject):
+ * bridge/objc/objc_instance.h:
+ * bridge/objc/objc_instance.mm:
+ (ObjcInstance::invokeMethod):
+ (ObjcInstance::invokeDefaultMethod):
+ (ObjcInstance::setValueOfUndefinedField):
+ (ObjcInstance::getValueOfUndefinedField):
+ (ObjcInstance::defaultValue):
+ (ObjcInstance::stringValue):
+ (ObjcInstance::numberValue):
+ (ObjcInstance::booleanValue):
+ (ObjcInstance::valueOf):
+ * bridge/objc/objc_runtime.h:
+ (JSC::Bindings::ObjcFallbackObjectImp::createStructure):
+ * bridge/objc/objc_runtime.mm:
+ (JSC::Bindings::ObjcField::valueFromInstance):
+ (JSC::Bindings::convertValueToObjcObject):
+ (JSC::Bindings::ObjcField::setValueToInstance):
+ (JSC::Bindings::ObjcArray::setValueAt):
+ (JSC::Bindings::ObjcArray::valueAt):
+ (JSC::Bindings::ObjcFallbackObjectImp::put):
+ (JSC::Bindings::callObjCFallbackObject):
+ (JSC::Bindings::ObjcFallbackObjectImp::defaultValue):
+ * bridge/objc/objc_utility.h:
+ * bridge/objc/objc_utility.mm:
+ (JSC::Bindings::convertValueToObjcValue):
+ (JSC::Bindings::convertNSStringToString):
+ (JSC::Bindings::convertObjcValueToValue):
+ * bridge/runtime.h:
+ (JSC::Bindings::Class::fallbackObject):
+ (JSC::Bindings::Instance::setValueOfUndefinedField):
+ (JSC::Bindings::Instance::invokeDefaultMethod):
+ (JSC::Bindings::Instance::invokeConstruct):
+ (JSC::Bindings::Instance::put):
+ * bridge/runtime_array.cpp:
+ (JSC::RuntimeArray::lengthGetter):
+ (JSC::RuntimeArray::indexGetter):
+ (JSC::RuntimeArray::put):
+ * bridge/runtime_array.h:
+ (JSC::RuntimeArray::createStructure):
+ * bridge/runtime_method.cpp:
+ (JSC::RuntimeMethod::lengthGetter):
+ (JSC::callRuntimeMethod):
+ * bridge/runtime_method.h:
+ (JSC::RuntimeMethod::createStructure):
+ * bridge/runtime_object.cpp:
+ (JSC::RuntimeObjectImp::fallbackObjectGetter):
+ (JSC::RuntimeObjectImp::fieldGetter):
+ (JSC::RuntimeObjectImp::methodGetter):
+ (JSC::RuntimeObjectImp::put):
+ (JSC::RuntimeObjectImp::defaultValue):
+ (JSC::callRuntimeObject):
+ (JSC::callRuntimeConstructor):
+ * bridge/runtime_object.h:
+ (JSC::RuntimeObjectImp::createStructure):
+ * inspector/JavaScriptCallFrame.cpp:
+ (WebCore::JavaScriptCallFrame::evaluate):
+ * inspector/JavaScriptCallFrame.h:
+ * inspector/JavaScriptProfile.cpp:
+ (WebCore::toJS):
+ * inspector/JavaScriptProfile.h:
+ * inspector/JavaScriptProfileNode.cpp:
+ (WebCore::toJS):
+ * inspector/JavaScriptProfileNode.h:
+
+2009-05-01 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25485
+ Only use visitedURL in Qt. This is a follow-up change to http://trac.webkit.org/changeset/43052,
+ which broke Chromium build.
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::SelectorChecker::checkPseudoState): Moved guards around to
+ provide separate code paths for Qt and non-Qt ports. Also restored original
+ order of execution.
+
+2009-05-01 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ <rdar://problem/6839222>
+ CrashTracer: Lots of crashes in Safari in hash table remove function inside DocumentLoader::removeSubresourceLoader
+
+ After calling m_client->didFail(), check if the subresource loader has reached its terminal state. If that's the case,
+ return early to avoid calling removeSubresourceLoader on a null document loader. I don't think this is allowed to happen
+ which is why I've added the ASSERT.
+
+ * loader/SubresourceLoader.cpp:
+ (WebCore::SubresourceLoader::didCancel):
+
+2009-05-01 Timothy Hatcher <timothy@apple.com>
+
+ Disallow the deletion UI for elements that have any overflow clipping.
+ Also disallow the UI for the body element it isn't practical to delete,
+ and the deletion UI would be clipped.
+
+ <rdar://problem/6840161> Deletion UI can be clipped by some
+ elements (with overflow: hidden)
+
+ Reviewed by Darin Adler.
+
+ * editing/DeleteButtonController.cpp:
+ (WebCore::isDeletableElement):
+
+2009-05-01 Timothy Hatcher <timothy@apple.com>
+
+ Decrease the minimum height for deleteable elements to 16px, and increase the
+ minimum width to 48px. This allows deleting shorter items like navigation bars.
+
+ <rdar://problem/6840735> Deletion UI does not show up for short
+ elements (22px or less)
+
+ Reviewed by Adele Peterson.
+
+ * editing/DeleteButtonController.cpp:
+ (WebCore::isDeletableElement):
+
+2009-05-01 Timothy Hatcher <timothy@apple.com>
+
+ Clean up the comments and logic in the code for picking a
+ deleteable element for the deletion UI.
+
+ Reviewed by Adele Peterson.
+
+ * editing/DeleteButtonController.cpp:
+ (WebCore::isDeletableElement):
+
+2009-05-01 Kevin McCullough <kmccullough@apple.com>
+
+ Reviewed by Adele Peterson and Darin Adler.
+
+ <rdar://problem/4815598> Stuck in double spacing mode after pasting a
+ paragraph with padding/margin (or table mode !)
+
+ A lot of the issues in this bug were resolved on Mail's side by using
+ WebKit to convert to plain text. This is the final issue, that floating
+ style stays on copied nodes causing them to float when they are pasted
+ which is not what the user intended.
+
+ * editing/markup.cpp:
+ (WebCore::removeExteriorStyles):
+ (WebCore::):
+ (WebCore::appendStartMarkup):
+ (WebCore::getStartMarkup):
+ (WebCore::createMarkup):
+
+2009-05-01 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Add a FrameLoaderClient callback for the ResourceRetrievedByXMLHttpRequest.
+ This is the only resource-related information that is available in InspectorController
+ and is missing in the FrameLoaderClient.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25347
+
+ * WebCore.xcodeproj/project.pbxproj: Made ScriptSource private.
+ * dom/Document.cpp: Made a call to a client along with the call to the InspectorController.
+ (WebCore::Document::resourceRetrievedByXMLHttpRequest):
+ * loader/EmptyClients.h: Added stub implementation.
+ (WebCore::EmptyFrameLoaderClient::dispatchDidLoadResourceByXMLHttpRequest):
+ * loader/FrameLoader.cpp: Call initiating dispatches.
+ (WebCore::FrameLoader::resourceRetrievedByXMLHttpRequest):
+ * loader/FrameLoader.h:
+ * loader/FrameLoaderClient.h:
+
+2009-04-30 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for <rdar://problem/6841106> REGRESSION: Crash drag selecting
+ To Do's in a Mail note (excessive recursion in mouse drag tracking)
+
+ Oliver's recent change to dragging seems to have revealed a long-
+ time bug in passSubframeEventToSubframe where we did not set
+ m_sendingEventToSubview to true before calling
+ handleMouseMoveEvent() in the NSMouseMoved case. This patch fixes
+ that and adds ASSERTions around all of the places where
+ m_sendingEventToSubview is set to true and then false to make sure
+ we are not trampling its state.
+
+ * page/mac/EventHandlerMac.mm:
+ (WebCore::EventHandler::eventLoopHandleMouseDragged):
+ (WebCore::EventHandler::eventLoopHandleMouseUp):
+ (WebCore::EventHandler::passSubframeEventToSubframe):
+ (WebCore::EventHandler::passWheelEventToWidget):
+
+2009-04-30 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ MediaDocument falls back to plug-in unnecessarily
+ https://bugs.webkit.org/show_bug.cgi?id=25504
+ <rdar://problem/6844702>
+
+ Don't allow harmless media types to cause a MediaDocument to fall
+ back to PluginDocument.
+
+ Test: media/video-document-types.html
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::disableUnsupportedTracks): add timecode, timecode 64,
+ odsm, and sdsm to allowed track types.
+
+ * platform/graphics/win/QTMovieWin.cpp:
+ (QTMovieWin::disableUnsupportedTracks): Ditto.
+
+2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Add CHROMIUM guard to unfork Document.cpp
+
+ * dom/Document.cpp:
+ (WebCore::Document::setFocusedNode): Added guard.
+
+2009-04-30 David Kilzer <ddkilzer@apple.com>
+
+ Use OwnPtr<HTMLParserQuirks> for m_parserQuirks
+
+ Reviewed by Geoff Garen.
+
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::~HTMLParser): Removed unneeded code.
+ * html/HTMLParser.h: Made m_parserQuirks an OwnPtr.
+
+2009-04-30 David Kilzer <ddkilzer@apple.com>
+
+ Provide a mechanism to create a quirks delegate for HTMLParser
+
+ Reviewed by David Hyatt.
+
+ No tests since there is no change in behavior.
+
+ HTMLParserQuirks.h defines an abstract base class that may be
+ extended as needed. The ChromeClient::createHTMLParserQuirks()
+ factory method should be used to return an HTMLParserQuirks
+ subclassed object when needed.
+
+ * WebCore.xcodeproj/project.pbxproj: Added HTMLParserQuirks.h.
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::HTMLParser): Initialize m_parserQuirks
+ using ChromeClient::createHTMLParserQuirks().
+ (WebCore::HTMLParser::~HTMLParser): Delete m_parserQuirks if
+ set.
+ (WebCore::HTMLParser::reset): Call HTMLParserQuirks::reset() if
+ m_parserQuirks is set.
+ (WebCore::HTMLParser::insertNode): Call
+ HTMLParserQuirks::shouldInsertNode() if m_parserQuirks is set,
+ and return early if it returns false.
+ (WebCore::HTMLParser::popBlock): Call
+ HTMLParserQuirks::shouldPopBlock() if m_parserQuirks is set, and
+ return early if it returns false.
+ * html/HTMLParser.h: Added m_parserQuirks.
+ * html/HTMLParserQuirks.h: Added.
+ (WebCore::HTMLParserQuirks::HTMLParserQuirks):
+ (WebCore::HTMLParserQuirks::~HTMLParserQuirks):
+ * loader/EmptyClients.h:
+ (WebCore::EmptyChromeClient::createHTMLParserQuirks): Added.
+ * page/ChromeClient.h:
+ (WebCore::ChromeClient::createHTMLParserQuirks): Added.
+
+2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25492
+ Add JSC guards around node wrapper cache calls. These are not used by V8.
+
+ Also, remove JSDOMBinding include, which is brought in by ScriptController.
+
+ * dom/Document.cpp:
+ (WebCore::Document::~Document): Added JSC guard.
+ * dom/Node.cpp:
+ (WebCore::Node::setDocument): Ditto and removed JSDOMBinding include.
+
+2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25493
+ Remove debugger/profiler custom method stubs, catching V8 bindings up to
+ http://trac.webkit.org/changeset/43072.
+
+ * bindings/v8/custom/V8InspectorControllerCustom.cpp: Removed method stubs.
+
+2009-04-30 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/6839338> VoiceOver does not take into account transforms when drawing outlines
+
+ Use transform-aware quad methods when computing the boundingBoxRect for
+ an AccessibilityRenderObject. The code follows RenderObject::absoluteBoundingBoxRect().
+
+ Test: accessibility/transformed-element.html
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::boundingBoxRect):
+
+2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, Chromium build fix.
+
+ Catch up to ScriptObject changes from http://trac.webkit.org/changeset/42512.
+
+ * bindings/v8/ScriptObject.cpp:
+ (WebCore::ScriptGlobalObject::get): Renamed from getObject.
+ (WebCore::ScriptGlobalObject::remove): Added.
+ * bindings/v8/ScriptObject.h: Ditto.
+
+2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25470
+ Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler.
+
+ * WebCore.pro: Fix copy-paste error.
+
+2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25470
+ Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler.
+
+ * GNUmakefile.am: Add ENABLE_JAVASCRIPT_DEBUGGER definitions.
+ * WebCore.pro: Ditto.
+
+2009-04-02 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Change Position to pre-compute the AnchorType and store it.
+ Also store a "legacy editing mode" bit on the Position.
+ https://bugs.webkit.org/show_bug.cgi?id=24763
+
+ The old Postion(node, offset) constructor creates legacy positions
+ but there are new constructors to create explicitly anchored positions
+ which the next patch will use.
+
+ Once we fix all the "position-fixup" functions (like rangeCompliantEquivalent) to
+ only affect legacy positions, we will be able to distinguish
+ between [table, 1] and [table, after] in the code correctly!
+
+ * WebCore.base.exp:
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/Position.cpp:
+ (WebCore::Position::Position):
+ (WebCore::Position::moveToPosition):
+ (WebCore::Position::moveToOffset):
+ (WebCore::Position::anchorTypeForLegacyEditingPosition):
+ (WebCore::Position::element):
+ * dom/Position.h:
+ (WebCore::Position::):
+ (WebCore::Position::Position):
+ (WebCore::Position::anchorType):
+ (WebCore::Position::deprecatedEditingOffset):
+
+2009-04-30 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Fix bug where the WorkerLocation and WorkerNavigator wrappers would be
+ collected even if the WorkerContext is still alive.
+
+ Test: fast/workers/worker-context-gc.html
+
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::mark):
+ * workers/WorkerContext.cpp:
+ (WebCore::WorkerContext::WorkerContext):
+ (WebCore::WorkerContext::completeURL):
+ (WebCore::WorkerContext::location):
+ * workers/WorkerContext.h:
+ (WebCore::WorkerContext::optionalNavigator):
+ (WebCore::WorkerContext::optionalLocation):
+
+2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25470
+ Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler.
+
+ * Configurations/FeatureDefines.xcconfig: Added ENABLE_JAVASCRIPT_DEBUGGER.
+ * WebCore.vcproj/build-generated-files.sh: Ditto.
+ * bindings/js/JSConsoleCustom.cpp: Added ENABLE(JAVASCRIPT_DEBUGGER) guard.
+ * bindings/js/JSDOMWindowBase.cpp: Ditto.
+ * bindings/js/JSInspectorControllerCustom.cpp: Ditto.
+ * inspector/InspectorController.cpp: Moved profiler/debugger methods under
+ ENABLE(JAVASCRIPT_DEBUGGER) flag.
+ * inspector/InspectorController.h: Ditto.
+ * inspector/InspectorController.idl: Added ENABLE(JAVASCRIPT_DEBUGGER) guard.
+ * page/Console.cpp: Replaced USE(JSC) with ENABLE(JAVASCRIPT_DEBUGGER) guard.
+
+2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25275
+ This patch snuck in a re-definition of a local.
+
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ (WebCore::NAMED_PROPERTY_GETTER): Removed re-definition.
+
+2009-04-30 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Fix a leak introduced yesterday. Don't allocate a ScheduledAction
+ if the toString()ing throws an exception.
+
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::create):
+
+2009-04-30 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25379
+ <rdar://problem/6809460> REGRESSION (r41772): Selecting a bank in American Express Pay Bill fails
+
+ Test: fast/forms/multiple-selected-options-innerHTML.html
+
+ This problem was caused by an inconsistency at when Node::instertedIntoTree() is called.
+ For normal HTML parsing, it is called immediately after an element is inserted, but for
+ innerHTML, it is only called after the whole subtree is inserted into a document.
+
+ It may make sense to harmonize these cases one day, but for now, I only made the minimal
+ changes necessary to fix the bug.
+
+ * html/HTMLSelectElement.cpp: (WebCore::HTMLSelectElement::insertedIntoTree):
+ * html/HTMLSelectElement.h:
+ Recalculate list items when a SELECT element is inserted. OPTION elements cannot decide
+ which one to keep selected themselves, because their logic assumes normal parsing, with
+ insertedIntoTree() called after each element is inserted.
+
+2009-04-30 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25342
+ Add MessageSource and MessageLevel parameters to the ChromeClient::addMessageToConsole.
+
+ Chromium async/out-of-process version of WebInspector is currently not based on
+ InspectorController. The reason was that we did not want to interfere with
+ the unforking effort, yet wanted to experiment. So we came up with these
+ agents concept that basically mimic InspectorController, but separating 'agent'
+ nature from the 'transport'. Now that InspectorController is unforked, I am
+ planning to bring these concepts into the WebKit land and use what we have in
+ Chromium as a proof of concept / experimental playground.
+
+ * loader/EmptyClients.h: added MessageSource and MessageLevel parameters.
+ (WebCore::EmptyChromeClient::addMessageToConsole): ditto
+ * page/ChromeClient.h: ditto
+ * page/Console.cpp: Used new method signature.
+ (WebCore::Console::addMessage): ditto
+
+2009-04-30 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=25476
+ <rdar://problem/6841919> REGRESSION (r42987): Welcome to Safari 4
+ animation is jittery
+
+ Reverted r42987.
+
+ * platform/graphics/cg/ImageCG.cpp:
+ (WebCore::BitmapImage::draw):
+
+2009-04-30 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Maciej Stachowiak
+
+ <rdar://problem/3785248> http://www.greekembassy.org/ gets in an infinite reload loop
+ https://bugs.webkit.org/show_bug.cgi?id=21193
+
+ Some websites use for attributes in script elements to specify events that the script
+ should be run for. One example is greekembassy.org which has the following in their <head>:
+
+ <script for=window event=onresize>
+ location.reload(false);
+ </script>
+
+ Since we don't support the full for attribute syntax, we would just blissfully ignore the
+ condition and execute the code unconditionally. This caused breakage on multiple real-world
+ sites besides greekembassy.org.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16915 and <rdar://problem/4471751> track adding full
+ support for the for attribute in scripts. In the meantime it's best to not execute them
+ unconditionally.
+
+ Test: fast/dom/HTMLScriptElement/script-for-attribute-unexpected-execution.html
+
+ * dom/ScriptElement.cpp:
+ (WebCore::ScriptElementData::shouldExecuteAsJavaScript): After all other checks have
+ passed, only return true if there is no for attribute in the script element.
+ * dom/ScriptElement.h:
+
+ * html/HTMLScriptElement.cpp:
+ (WebCore::HTMLScriptElement::forAttributeValue): Return the attribute value, if any.
+ * html/HTMLScriptElement.h:
+
+ * svg/SVGScriptElement.cpp:
+ (WebCore::SVGScriptElement::forAttributeValue): Return an empty string (like the other
+ attribute getters do for SVGScriptElement)
+ * svg/SVGScriptElement.h:
+
+2009-04-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Darin Adler.
+
+ The Qt API exposes a global history patch CSSStyleSelector to make API consumers work again
+
+ https://bugs.webkit.org/show_bug.cgi?id=20952
+
+ The QtWebKit port made the mistake of exposing a global history. This broke
+ with the addition of PageGroup and LinkHash. This needs to be repaired
+ for Qt4.5.
+
+ Add a function to LinkHash.cpp that is resolving a URL. Use this
+ function from within CSSStyleSelector to forward the url to the
+ QWebHistoryInterface API.
+
+ It is sad that there is a path within visitedLinkHash which is now
+ doing a memcpy, it is sad to add a PLATFORM(QT) define to CSSStyleSelector
+ and using QtWebKit types within WebCore is a layering violation as well.
+
+ PageGroup::setShouldTrackVisitedLinks is currently not enabled. For
+ Qt4.6 a second version of the QWebHistoryInterface is going to be
+ added which will fix things up.
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::SelectorChecker::checkPseudoState):
+ * platform/LinkHash.cpp:
+ (WebCore::visitedURL):
+ (WebCore::visitedLinkHash):
+ * platform/LinkHash.h:
+
+2009-04-30 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Fix the Qt build.
+
+ * platform/graphics/SimpleFontData.cpp: Don't use initCharWidths() for the Qt build.
+ * platform/graphics/qt/SimpleFontDataQt.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit): Instead initialize the average and
+ max char widths from QFontMetrics.
+
+2009-04-30 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Unreview build fix after r43037.
+
+ Use MarkedArgumentBuffer instead of ArgList.
+
+ * bridge/qt/qt_runtime.cpp:
+ (JSC::Bindings::QtConnectionObject::execute):
+
+2009-04-29 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=25440
+ setTimeout should stringify non-string/non-function first arguments
+
+ Test: fast/dom/Window/setTimeout-string-argument.html
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::setTimeout):
+ (WebCore::JSDOMWindow::setInterval):
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::setTimeout):
+ (WebCore::JSWorkerContext::setInterval):
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::create):
+ * bindings/js/ScheduledAction.h:
+
+2009-04-29 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ - WebCore part of <rdar://problem/6609509> Select All and then Delete
+ should put Mail editing back into the same state as a new message
+
+ Test: editing/deleting/in-visibly-empty-root.html
+
+ * WebCore.base.exp: Exported VisibleSelection::isAll(bool).
+ * editing/SelectionController.h:
+ (WebCore::SelectionController::isAll): Added. Calls through to
+ VisibleSelection.
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::makeEditableRootEmpty): Added. Removes all children
+ of the root editable element the selection is in, other than a
+ placeholder. Returns true iff it did anything.
+ (WebCore::TypingCommand::deleteKeyPressed): When there is only a single
+ visible position in the root editable element, but it has children other
+ than a placeholder, remove those children.
+ * editing/TypingCommand.h:
+ * editing/VisiblePosition.h:
+ Added a StayInEditableContent enum and a FIXME.
+ * editing/VisibleSelection.cpp:
+ (WebCore::VisibleSelection::isAll): Added. Returns whether the
+ selection encompasses all visible positions, either in the document or
+ in the editable root.
+ * editing/VisibleSelection.h:
+
+2009-04-29 Sam Weinig <sam@webkit.org>
+
+ Fix style nit.
+
+ * editing/visible_units.cpp:
+ (WebCore::getLeafBoxesInLogicalOrder):
+
+2009-04-29 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ For now just drop the deferred layout on the floor, since it causes an infinite hang in mail. Even
+ trying to schedule a relayout for later leaves you in a state where you hit the needsLayout painting
+ assertions.
+
+ Basically what Mail is doing is crazy, and we can't support it other than to just drop the last layout
+ and not do it (which is basically what was happening before).
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::setContentsSize):
+ (WebCore::FrameView::needsLayout):
+
+2009-04-29 Douglas Davidson <ddavidso@apple.com>
+
+ Reviewed by Justin Garcia.
+
+ <rdar://problem/6836921> Mail exhibits issues with text checking, e.g. menu items not always validated correctly
+
+ Updates to the text checking code to enable text checking even if spellchecking is turned off
+ and fix an off-by-one error in selection handling.
+
+ * editing/Editor.cpp:
+ (WebCore::Editor::markMisspellingsAfterTypingToPosition):
+ (WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
+ (WebCore::Editor::markMisspellingsAndBadGrammar):
+ * editing/Editor.h:
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::markMisspellingsAfterTyping):
+
+2009-04-29 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Clean up ArgList to be a trivial type
+
+ Start using MarkedArgumentBuffer to create argument lists for function calls
+
+ * bindings/js/JSClipboardCustom.cpp:
+ (WebCore::JSClipboard::types):
+ * bindings/js/JSConsoleCustom.cpp:
+ (WebCore::JSConsole::profiles):
+ * bindings/js/JSCustomPositionCallback.cpp:
+ (WebCore::JSCustomPositionCallback::handleEvent):
+ * bindings/js/JSCustomPositionErrorCallback.cpp:
+ (WebCore::JSCustomPositionErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLStatementCallback.cpp:
+ (WebCore::JSCustomSQLStatementCallback::handleEvent):
+ * bindings/js/JSCustomSQLStatementErrorCallback.cpp:
+ (WebCore::JSCustomSQLStatementErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionCallback.cpp:
+ (WebCore::JSCustomSQLTransactionCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
+ (WebCore::JSCustomSQLTransactionErrorCallback::handleEvent):
+ * bindings/js/JSCustomVoidCallback.cpp:
+ (WebCore::JSCustomVoidCallback::handleEvent):
+ * bindings/js/JSCustomXPathNSResolver.cpp:
+ (WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSEventListener::handleEvent):
+ * bindings/js/JSInspectorControllerCustom.cpp:
+ (WebCore::JSInspectorController::profiles):
+ (WebCore::JSInspectorController::search):
+ (WebCore::JSInspectorController::databaseTableNames):
+ (WebCore::JSInspectorController::setting):
+ * bindings/js/JSJavaScriptCallFrameCustom.cpp:
+ (WebCore::JSJavaScriptCallFrame::scopeChain):
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::JSLazyEventListener::parseCode):
+ * bindings/js/JSNodeFilterCondition.cpp:
+ (WebCore::JSNodeFilterCondition::acceptNode):
+ * bindings/js/JSQuarantinedObjectWrapper.cpp:
+ (WebCore::JSQuarantinedObjectWrapper::construct):
+ (WebCore::JSQuarantinedObjectWrapper::call):
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::ScheduledAction):
+ (WebCore::ScheduledAction::executeFunctionInContext):
+ * bindings/js/ScriptFunctionCall.h:
+ * bindings/objc/WebScriptObject.mm:
+ (getListFromNSArray):
+ (-[WebScriptObject callWebScriptMethod:withArguments:]):
+ * bridge/NP_jsobject.cpp:
+ (getListFromVariantArgs):
+ (_NPN_InvokeDefault):
+ (_NPN_Invoke):
+ (_NPN_Construct):
+ * bridge/jni/jni_jsobject.h:
+ * bridge/jni/jni_jsobject.mm:
+ (JavaJSObject::call):
+ (JavaJSObject::getListFromJArray):
+
+2009-04-29 Eric Seidel <eric@webkit.org>
+
+ No review, build fix only.
+
+ Fix m_offset uses added while I wasn't looking.
+
+ * editing/visible_units.cpp:
+ (WebCore::logicalStartPositionForLine):
+ (WebCore::logicalEndPositionForLine):
+
+2009-04-29 Xiaomei Ji <xji@chromium.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix https://bugs.webkit.org/show_bug.cgi?id=24168
+ RTL: Home/End key does not behave correctly in mixed bidi text in RTL document
+
+ Test: editing/selection/home-end.html
+
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::modifyExtendingForward): Change calling endOfLine()
+ to logicalEndOfLine() when granularity is LineBoundary.
+ (WebCore::SelectionController::modifyMovingForward): Change calling endOfLine()
+ to logicalEndOfLine() when granularity is LineBoundary
+ (WebCore::SelectionController::modifyExtendingBackward): Change calling
+ startOfLine() to logicalStartOfLine() when granularity is LineBoundary.
+ (WebCore::SelectionController::modifyMovingBackward): Change calling startOfLine()
+ to logicalStartOfLine() when granularity is LineBoundary.
+ * editing/visible_units.cpp:
+ (WebCore::getLeafBoxesInLogicalOrder): Added. Reconstruct leaf boxes in logical order.
+ (WebCore::getLogicalStartBoxAndNode): Added.
+ (WebCore::getLogicalEndBoxAndNode): Added.
+ (WebCore::logicalStartPositionForLine): Added. Similar to startPositionForLine.
+ (WebCore::logicalStartOfLine): Added. Similar to startOfLine.
+ (WebCore::logicalEndPositionForLine): Added. Similar to endPositionForLine.
+ (WebCore::inSameLogicalLine): Added.
+ (WebCore::logicalEndOfLine): Added. Similar to endOfLine.
+ * editing/visible_units.h:
+
+2009-04-29 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Make m_offset private and change all callers to use deprecatedEditingOffset().
+ https://bugs.webkit.org/show_bug.cgi?id=25472
+
+ Per Darin's suggestion, this was just a simple search replace
+ of .m_offset with .deprecatedEditingOffset().
+
+ There was one change in InsertParagraphSeparatorCommand::doApply to use
+ Position::moveToOffset(0) instead of .m_offset = 0;
+
+ * dom/Position.cpp:
+ (WebCore::Position::rendersInDifferentPosition):
+ (WebCore::Position::leadingWhitespacePosition):
+ * dom/Position.h:
+ (WebCore::Position::deprecatedEditingOffset):
+ (WebCore::Position::moveToOffset):
+ (WebCore::operator==):
+ * dom/PositionIterator.h:
+ (WebCore::PositionIterator::PositionIterator):
+ * dom/Range.cpp:
+ (WebCore::Range::create):
+ (WebCore::Range::compareBoundaryPoints):
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
+ (WebCore::ApplyStyleCommand::applyInlineStyleToRange):
+ (WebCore::ApplyStyleCommand::removeInlineStyle):
+ (WebCore::ApplyStyleCommand::nodeFullySelected):
+ (WebCore::ApplyStyleCommand::nodeFullyUnselected):
+ (WebCore::ApplyStyleCommand::splitTextAtStartIfNeeded):
+ (WebCore::ApplyStyleCommand::splitTextAtEndIfNeeded):
+ (WebCore::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
+ (WebCore::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
+ (WebCore::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
+ (WebCore::ApplyStyleCommand::mergeEndWithNextIfIdentical):
+ (WebCore::ApplyStyleCommand::joinChildTextNodes):
+ * editing/BreakBlockquoteCommand.cpp:
+ (WebCore::BreakBlockquoteCommand::doApply):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::insertNodeAt):
+ (WebCore::CompositeEditCommand::positionOutsideTabSpan):
+ (WebCore::CompositeEditCommand::rebalanceWhitespaceAt):
+ (WebCore::CompositeEditCommand::prepareWhitespaceAtPositionForSplit):
+ (WebCore::CompositeEditCommand::deleteInsignificantText):
+ (WebCore::CompositeEditCommand::moveParagraphs):
+ (WebCore::CompositeEditCommand::breakOutOfEmptyMailBlockquotedParagraph):
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::updatePositionForNodeRemoval):
+ (WebCore::updatePositionForTextRemoval):
+ (WebCore::DeleteSelectionCommand::handleGeneralDelete):
+ (WebCore::DeleteSelectionCommand::fixupWhitespace):
+ * editing/Editor.cpp:
+ (WebCore::Editor::setComposition):
+ (WebCore::Editor::advanceToNextMisspelling):
+ (WebCore::Editor::getCompositionSelection):
+ * editing/InsertLineBreakCommand.cpp:
+ (WebCore::InsertLineBreakCommand::doApply):
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+ * editing/InsertTextCommand.cpp:
+ (WebCore::InsertTextCommand::performTrivialReplace):
+ (WebCore::InsertTextCommand::input):
+ (WebCore::InsertTextCommand::insertTab):
+ * editing/MoveSelectionCommand.cpp:
+ (WebCore::MoveSelectionCommand::doApply):
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplaceSelectionCommand::doApply):
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::debugRenderer):
+ * editing/TextIterator.cpp:
+ (WebCore::TextIterator::rangeFromLocationAndLength):
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::deleteKeyPressed):
+ (WebCore::TypingCommand::forwardDeleteKeyPressed):
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::characterAfter):
+ (WebCore::VisiblePosition::debugPosition):
+ (WebCore::makeRange):
+ (WebCore::setStart):
+ (WebCore::setEnd):
+ * editing/VisibleSelection.cpp:
+ (WebCore::VisibleSelection::toNormalizedRange):
+ (WebCore::makeSearchRange):
+ (WebCore::VisibleSelection::debugPosition):
+ (WebCore::VisibleSelection::showTreeForThis):
+ * editing/htmlediting.cpp:
+ (WebCore::comparePositions):
+ (WebCore::rangeCompliantEquivalent):
+ * editing/visible_units.cpp:
+ (WebCore::previousBoundary):
+ (WebCore::nextBoundary):
+ (WebCore::startPositionForLine):
+ (WebCore::startOfLine):
+ (WebCore::endPositionForLine):
+ (WebCore::nextLinePosition):
+ (WebCore::startOfParagraph):
+ (WebCore::endOfParagraph):
+ (WebCore::logicalStartPositionForLine):
+ (WebCore::logicalEndPositionForLine):
+ * page/AccessibilityObject.cpp:
+ (WebCore::updateAXLineStartForVisiblePosition):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::indexForVisiblePosition):
+ * page/DOMSelection.cpp:
+ (WebCore::DOMSelection::anchorOffset):
+ (WebCore::DOMSelection::focusOffset):
+ (WebCore::DOMSelection::baseOffset):
+ (WebCore::DOMSelection::extentOffset):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleMousePressEventSingleClick):
+ * page/Frame.cpp:
+ (WebCore::Frame::selectionLayoutChanged):
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (textMarkerForVisiblePosition):
+ (visiblePositionForTextMarker):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::indexForVisiblePosition):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::writeSelection):
+
+2009-04-29 Eric Seidel <eric@webkit.org>
+
+ No review, rolling out a patch.
+
+ Revert http://trac.webkit.org/changeset/43019
+
+ New tests failed because I removed the tabs from them
+ when landing (since we avoid tabs in WebKit files).
+ I couldn't tell if the new results were correct with
+ spaces or not.
+
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::modifyExtendingForward):
+ (WebCore::SelectionController::modifyMovingForward):
+ (WebCore::SelectionController::modifyExtendingBackward):
+ (WebCore::SelectionController::modifyMovingBackward):
+ * editing/visible_units.cpp:
+ * editing/visible_units.h:
+
+2009-04-29 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for <rdar://problem/6828164>, Mail hits the !root->needsLayout() assert because it re-marks the FrameView for layout
+ when the FrameView is resized. This bug was exposed by the elimination of the separate WebKit layout
+ flag on Mac.
+
+ FrameView now defers setNeedsLayouts during size changes. Once all of the size changes are finished (including re-entrant ones
+ from WebDynamicScrollbarsView and ScrollView::updateScrollbars) we then do a layout if necessary.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::FrameView):
+ (WebCore::FrameView::setContentsSize):
+ (WebCore::FrameView::layout):
+ (WebCore::FrameView::needsLayout):
+ (WebCore::FrameView::setNeedsLayout):
+ * page/FrameView.h:
+
+2009-04-29 Eric Seidel <eric@webkit.org>
+
+ No review, rolling out a patch.
+
+ Revert 43020 as it caused accessibility/lists.html to fail
+ and no one is around to tell me if it's a progression or not.
+
+ * page/AccessibilityObject.h:
+ (WebCore::):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::roleValue):
+ (WebCore::AccessibilityRenderObject::canSetFocusAttribute):
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (RoleEntry::):
+
+2009-04-29 Sankar Aditya Tanguturi <sankaraditya@gmail.com>
+
+ Reviewed by Jon Honeycutt.
+
+ Add a new accessibility role for list items. Part of
+ http://bugs.webkit.org/show_id.cgi?id=20013
+
+ Tests: platform/win/accessibility/listitem-role.html
+
+ * page/AccessibilityObject.h:
+ (WebCore::): Add ListItemRole to accessibilityRole enum.
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::roleValue):Return
+ listItemRole when rendered object is a list item.
+ (WebCore::AccessibilityRenderObject::canSetFocusAttribute): Return
+ true for ListItemRole, matching firefox.
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (RoleEntry::): Map ListItemRole with NSAccessibilityGroupRole in
+ MAC.
+
+2009-04-29 Xiaomei Ji <xji@chromium.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix https://bugs.webkit.org/show_bug.cgi?id=24168
+ RTL: Home/End key does not behave correctly in mixed bidi text in RTL document
+
+ Test: editing/selection/home-end.html
+
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::modifyExtendingForward): Change calling endOfLine()
+ to logicalEndOfLine() when granularity is LineBoundary.
+ (WebCore::SelectionController::modifyMovingForward): Change calling endOfLine()
+ to logicalEndOfLine() when granularity is LineBoundary
+ (WebCore::SelectionController::modifyExtendingBackward): Change calling
+ startOfLine() to logicalStartOfLine() when granularity is LineBoundary.
+ (WebCore::SelectionController::modifyMovingBackward): Change calling startOfLine()
+ to logicalStartOfLine() when granularity is LineBoundary.
+ * editing/visible_units.cpp:
+ (WebCore::getLeafBoxesInLogicalOrder): Added. Reconstruct leaf boxes in logical order.
+ (WebCore::getLogicalStartBoxAndNode): Added.
+ (WebCore::getLogicalEndBoxAndNode): Added.
+ (WebCore::logicalStartPositionForLine): Added. Similar to startPositionForLine.
+ (WebCore::logicalStartOfLine): Added. Similar to startOfLine.
+ (WebCore::logicalEndPositionForLine): Added. Similar to endPositionForLine.
+ (WebCore::inSameLogicalLine): Added.
+ (WebCore::logicalEndOfLine): Added. Similar to endOfLine.
+ * editing/visible_units.h:
+
+2009-04-29 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Eric Seidel.
+
+ Update location while page is loading.
+ https://bugs.webkit.org/show_bug.cgi?id=21597
+
+ Tested by:
+ - fast/dom/location-new-window-no-crash
+ - fast/dom/Window/window-open-pending-url
+
+ * page/Location.cpp:
+
+2009-04-29 Feng Qian <feng@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Add Android port files to WebCore/platform.
+ https://bugs.webkit.org/show_bug.cgi?id=23296
+
+ * platform/android: Added.
+ * platform/android/ClipboardAndroid.cpp: Added.
+ * platform/android/ClipboardAndroid.h: Added.
+
+2009-04-29 Feng Qian <feng@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Add Android-specific files to the WebCore/page directory.
+ https://bugs.webkit.org/show_bug.cgi?id=23295
+
+ * page/android: Added.
+ * page/android/DragControllerAndroid.cpp: Added.
+ * page/android/EventHandlerAndroid.cpp: Added.
+ * page/android/InspectorControllerAndroid.cpp: Added.
+
+2009-04-29 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Extract PageGroupLoadDeferrer from Chrome.cpp
+
+ * GNUmakefile.am: added PageGroupLoadDeferrer
+ * WebCore.pro: ditto
+ * WebCore.scons: ditto
+ * WebCore.vcproj/WebCore.vcproj: ditto
+ * WebCore.xcodeproj/project.pbxproj: ditto
+ * WebCoreSources.bkl: ditto
+ * page/Chrome.cpp: PageGroupLoadDeferrer impl moved to a separate class.
+ * page/PageGroupLoadDeferrer.cpp: Added.
+ (WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer):
+ (WebCore::PageGroupLoadDeferrer::~PageGroupLoadDeferrer):
+ * page/PageGroupLoadDeferrer.h: Added.
+
+2009-04-24 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Dan Bernstein.
+
+ Make textarea and text input metrics more closely match IEs.
+
+ This involves:
+ -set text input width to size*avgCharWidth + maxCharWidth - avgCharWidth
+ -set textarea width to cols*avgCharWidth
+ -Make default CSS match IEs
+ -Correctly initializing m_avgCharWidth and m_maxCharWidth for each platform and SVG.
+
+ Those values for textarea and inputs were derived by doing a ton of manual
+ testing of IE's width values for various textareas and fonts. On Windows we match
+ IE exactly except for a couple fonts of the ~12 tested.
+
+ To get the average and max character width of a font, we do the following
+ for each platform:
+ -Win: TextMetrics expose avgCharWidth and maxCharWidth
+ -SVG: avgCharWidth = width of an '0', fallback on width of a space glyph, then m_xHeight
+ maxCharWidth = width of a 'W' for roman fonts, fallback on m_ascent
+ -Linux: avgCharWidth = width of an '0', fallback on m_xHeight
+ maxCharWidth = max of avgCharWidth and m_ascent
+ -Mac: Calculate the avgCharWidth and grab the maxCharWidth off the font.
+ If either one is non-positive, then calculate the value using the Linux approach.
+
+ Tests: fast/forms/text-control-intrinsic-widths.html
+ fast/forms/textarea-metrics.html
+ svg/custom/svg-fonts-in-text-controls.html
+
+ * css/html4.css:
+ * css/themeWin.css:
+ * platform/graphics/SimpleFontData.cpp:
+ (WebCore::SimpleFontData::SimpleFontData):
+ (WebCore::SimpleFontData::initCharWidths):
+ * platform/graphics/SimpleFontData.h:
+ (WebCore::SimpleFontData::maxCharWidth):
+ (WebCore::SimpleFontData::avgCharWidth):
+ * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/chromium/SimpleFontDataLinux.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/gtk/SimpleFontDataGtk.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/gtk/SimpleFontDataPango.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/mac/SimpleFontDataMac.mm:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/qt/SimpleFontDataQt.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/win/SimpleFontDataCGWin.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/win/SimpleFontDataCairoWin.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/win/SimpleFontDataWin.cpp:
+ (WebCore::SimpleFontData::initGDIFont):
+ * platform/graphics/wx/SimpleFontDataWx.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::calcPrefWidths):
+ * rendering/RenderTextControlMultiLine.cpp:
+ (WebCore::RenderTextControlMultiLine::createInnerTextStyle):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::preferredContentWidth):
+
+2009-04-29 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ * bindings/objc/DOMCSS.mm:
+ (kitClass): Added CSS_INITIAL to the switch statement, and changed to use the WebCore
+ type and not the binding type.
+
+2009-04-29 John Abd-El-Malek <jam@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ Reverted my previous change to add resetChromiumPluginCache().
+ https://bugs.webkit.org/show_bug.cgi?id=25318
+
+ * plugins/chromium/PluginDataChromium.cpp:
+
+2009-04-29 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6573742> - Problem dragging standalone images from Safari to Mail
+
+ Roll out trac.webkit.org/changeset/35867 which fixed <rdar://problem/6153432>
+
+ Cloned <rdar://problem/6153432> to <rdar://problem/6839881> to find a better fix for that Tiger Mail bug.
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::subresource): Remove the preload referenced check.
+
+2009-04-29 Alpha Lam <hclam@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25430
+
+ Provide style sheet for UI controls of media elements for Chromium port.
+
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::RenderThemeChromiumWin::extraMediaControlsStyleSheet):
+
+2009-04-29 John Abd-El-Malek <jam@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Expose sudden termination to Chromium port.
+ https://bugs.webkit.org/show_bug.cgi?id=25457
+
+ * platform/SuddenTermination.h:
+ * platform/chromium/ChromiumBridge.h:
+ * platform/chromium/SuddenTerminationChromium.cpp: Added.
+ (WebCore::disableSuddenTermination):
+ (WebCore::enableSuddenTermination):
+
+2009-04-29 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Remove unused EventListeners.
+
+ * page/DOMWindow.idl:
+
+2009-04-29 Yury Semikhatsky <yurys@chromium.org>
+
+ Reveal current execution line once SourceFrame content is loaded.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25448
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/front-end/SourceFrame.js:
+ (WebInspector.SourceFrame.prototype._loaded):
+
2009-04-29 Ariya Hidayat <ariya.hidayat@nokia.com>
Reviewed by Simon Fraser.
@@ -126,6 +13212,1297 @@
* platform/graphics/qt/ImageBufferQt.cpp:
(WebCore::ImageBufferData::ImageBufferData):
+2009-04-28 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Fix the Qt build.
+
+ * bridge/qt/qt_runtime.cpp:
+ (JSC::Bindings::findMethodIndex): Removed exec param from at() call.
+ (JSC::Bindings::QtRuntimeConnectionMethod::call): Ditto.
+
+2009-04-28 Geoffrey Garen <ggaren@apple.com>
+
+ Rubber stamped by Beth Dakin.
+
+ Missed one.
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+
+2009-04-28 Geoffrey Garen <ggaren@apple.com>
+
+ Rubber stamped by Beth Dakin.
+
+ Removed scaffolding supporting dynamically converting between 32bit and
+ 64bit value representations.
+
+ * bindings/js/JSAudioConstructor.cpp:
+ (WebCore::constructAudio):
+ * bindings/js/JSCanvasRenderingContext2DCustom.cpp:
+ (WebCore::JSCanvasRenderingContext2D::setFillColor):
+ (WebCore::JSCanvasRenderingContext2D::setStrokeColor):
+ (WebCore::JSCanvasRenderingContext2D::strokeRect):
+ (WebCore::JSCanvasRenderingContext2D::drawImage):
+ (WebCore::JSCanvasRenderingContext2D::drawImageFromRect):
+ (WebCore::JSCanvasRenderingContext2D::setShadow):
+ (WebCore::JSCanvasRenderingContext2D::createPattern):
+ (WebCore::JSCanvasRenderingContext2D::putImageData):
+ (WebCore::JSCanvasRenderingContext2D::fillText):
+ (WebCore::JSCanvasRenderingContext2D::strokeText):
+ * bindings/js/JSClipboardCustom.cpp:
+ (WebCore::JSClipboard::clearData):
+ (WebCore::JSClipboard::getData):
+ (WebCore::JSClipboard::setData):
+ (WebCore::JSClipboard::setDragImage):
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ (WebCore::JSDOMApplicationCache::hasItem):
+ (WebCore::JSDOMApplicationCache::add):
+ (WebCore::JSDOMApplicationCache::remove):
+ (WebCore::JSDOMApplicationCache::addEventListener):
+ (WebCore::JSDOMApplicationCache::removeEventListener):
+ * bindings/js/JSDOMStringListCustom.cpp:
+ (WebCore::JSDOMStringList::item):
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::open):
+ (WebCore::JSDOMWindow::showModalDialog):
+ (WebCore::JSDOMWindow::postMessage):
+ (WebCore::JSDOMWindow::setTimeout):
+ (WebCore::JSDOMWindow::setInterval):
+ (WebCore::JSDOMWindow::atob):
+ (WebCore::JSDOMWindow::btoa):
+ (WebCore::JSDOMWindow::addEventListener):
+ (WebCore::JSDOMWindow::removeEventListener):
+ * bindings/js/JSDatabaseCustom.cpp:
+ (WebCore::JSDatabase::changeVersion):
+ (WebCore::JSDatabase::transaction):
+ * bindings/js/JSElementCustom.cpp:
+ (WebCore::JSElement::setAttribute):
+ (WebCore::JSElement::setAttributeNode):
+ (WebCore::JSElement::setAttributeNS):
+ (WebCore::JSElement::setAttributeNodeNS):
+ * bindings/js/JSGeolocationCustom.cpp:
+ (WebCore::JSGeolocation::getCurrentPosition):
+ (WebCore::JSGeolocation::watchPosition):
+ * bindings/js/JSHTMLCollectionCustom.cpp:
+ (WebCore::callHTMLCollection):
+ (WebCore::JSHTMLCollection::item):
+ (WebCore::JSHTMLCollection::namedItem):
+ * bindings/js/JSHTMLDocumentCustom.cpp:
+ (WebCore::documentWrite):
+ * bindings/js/JSHTMLInputElementCustom.cpp:
+ (WebCore::JSHTMLInputElement::setSelectionRange):
+ * bindings/js/JSHTMLOptionsCollectionCustom.cpp:
+ (WebCore::JSHTMLOptionsCollection::add):
+ * bindings/js/JSHTMLSelectElementCustom.cpp:
+ (WebCore::JSHTMLSelectElement::remove):
+ * bindings/js/JSImageConstructor.cpp:
+ (WebCore::constructImage):
+ * bindings/js/JSInspectorControllerCustom.cpp:
+ (WebCore::JSInspectorController::highlightDOMNode):
+ (WebCore::JSInspectorController::addResourceSourceToFrame):
+ (WebCore::JSInspectorController::addSourceToFrame):
+ (WebCore::JSInspectorController::getResourceDocumentNode):
+ (WebCore::JSInspectorController::search):
+ (WebCore::JSInspectorController::databaseTableNames):
+ (WebCore::JSInspectorController::setting):
+ (WebCore::JSInspectorController::setSetting):
+ (WebCore::JSInspectorController::wrapCallback):
+ * bindings/js/JSJavaScriptCallFrameCustom.cpp:
+ (WebCore::JSJavaScriptCallFrame::evaluate):
+ * bindings/js/JSLocationCustom.cpp:
+ (WebCore::JSLocation::replace):
+ (WebCore::JSLocation::assign):
+ * bindings/js/JSMessagePortCustom.cpp:
+ (WebCore::JSMessagePort::startConversation):
+ (WebCore::JSMessagePort::addEventListener):
+ (WebCore::JSMessagePort::removeEventListener):
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::JSNode::insertBefore):
+ (WebCore::JSNode::replaceChild):
+ (WebCore::JSNode::removeChild):
+ (WebCore::JSNode::appendChild):
+ (WebCore::JSNode::addEventListener):
+ (WebCore::JSNode::removeEventListener):
+ * bindings/js/JSNodeFilterCustom.cpp:
+ (WebCore::JSNodeFilter::acceptNode):
+ * bindings/js/JSNodeListCustom.cpp:
+ (WebCore::callNodeList):
+ * bindings/js/JSOptionConstructor.cpp:
+ (WebCore::constructHTMLOptionElement):
+ * bindings/js/JSQuarantinedObjectWrapper.cpp:
+ (WebCore::JSQuarantinedObjectWrapper::construct):
+ (WebCore::JSQuarantinedObjectWrapper::call):
+ * bindings/js/JSSQLResultSetRowListCustom.cpp:
+ (WebCore::JSSQLResultSetRowList::item):
+ * bindings/js/JSSQLTransactionCustom.cpp:
+ (WebCore::JSSQLTransaction::executeSql):
+ * bindings/js/JSSVGElementInstanceCustom.cpp:
+ (WebCore::JSSVGElementInstance::addEventListener):
+ (WebCore::JSSVGElementInstance::removeEventListener):
+ * bindings/js/JSSVGLengthCustom.cpp:
+ (WebCore::JSSVGLength::convertToSpecifiedUnits):
+ * bindings/js/JSSVGMatrixCustom.cpp:
+ (WebCore::JSSVGMatrix::rotateFromVector):
+ * bindings/js/JSSVGPathSegListCustom.cpp:
+ (WebCore::JSSVGPathSegList::initialize):
+ (WebCore::JSSVGPathSegList::getItem):
+ (WebCore::JSSVGPathSegList::insertItemBefore):
+ (WebCore::JSSVGPathSegList::replaceItem):
+ (WebCore::JSSVGPathSegList::removeItem):
+ (WebCore::JSSVGPathSegList::appendItem):
+ * bindings/js/JSSVGPointListCustom.cpp:
+ (WebCore::JSSVGPointList::initialize):
+ (WebCore::JSSVGPointList::getItem):
+ (WebCore::JSSVGPointList::insertItemBefore):
+ (WebCore::JSSVGPointList::replaceItem):
+ (WebCore::JSSVGPointList::removeItem):
+ (WebCore::JSSVGPointList::appendItem):
+ * bindings/js/JSSVGTransformListCustom.cpp:
+ (WebCore::JSSVGTransformList::initialize):
+ (WebCore::JSSVGTransformList::getItem):
+ (WebCore::JSSVGTransformList::insertItemBefore):
+ (WebCore::JSSVGTransformList::replaceItem):
+ (WebCore::JSSVGTransformList::removeItem):
+ (WebCore::JSSVGTransformList::appendItem):
+ * bindings/js/JSWebKitCSSMatrixConstructor.cpp:
+ (WebCore::constructWebKitCSSMatrix):
+ * bindings/js/JSWebKitPointConstructor.cpp:
+ (WebCore::constructWebKitPoint):
+ * bindings/js/JSWorkerConstructor.cpp:
+ (WebCore::constructWorker):
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::importScripts):
+ (WebCore::JSWorkerContext::addEventListener):
+ (WebCore::JSWorkerContext::removeEventListener):
+ (WebCore::JSWorkerContext::setTimeout):
+ (WebCore::JSWorkerContext::setInterval):
+ * bindings/js/JSWorkerCustom.cpp:
+ (WebCore::JSWorker::addEventListener):
+ (WebCore::JSWorker::removeEventListener):
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::open):
+ (WebCore::JSXMLHttpRequest::setRequestHeader):
+ (WebCore::JSXMLHttpRequest::send):
+ (WebCore::JSXMLHttpRequest::getResponseHeader):
+ (WebCore::JSXMLHttpRequest::overrideMimeType):
+ (WebCore::JSXMLHttpRequest::addEventListener):
+ (WebCore::JSXMLHttpRequest::removeEventListener):
+ * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
+ (WebCore::JSXMLHttpRequestUpload::addEventListener):
+ (WebCore::JSXMLHttpRequestUpload::removeEventListener):
+ * bindings/js/JSXSLTProcessorCustom.cpp:
+ (WebCore::JSXSLTProcessor::importStylesheet):
+ (WebCore::JSXSLTProcessor::transformToFragment):
+ (WebCore::JSXSLTProcessor::transformToDocument):
+ (WebCore::JSXSLTProcessor::setParameter):
+ (WebCore::JSXSLTProcessor::getParameter):
+ (WebCore::JSXSLTProcessor::removeParameter):
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::create):
+ (WebCore::ScheduledAction::ScheduledAction):
+ * bindings/js/ScheduledAction.h:
+ * bindings/js/ScriptCallFrame.cpp:
+ (WebCore::ScriptCallFrame::ScriptCallFrame):
+ * bindings/js/ScriptCallFrame.h:
+ * bindings/js/ScriptCallStack.cpp:
+ (WebCore::ScriptCallStack::ScriptCallStack):
+ (WebCore::ScriptCallStack::initialize):
+ * bridge/c/c_instance.cpp:
+ (JSC::Bindings::CInstance::invokeMethod):
+ (JSC::Bindings::CInstance::invokeDefaultMethod):
+ (JSC::Bindings::CInstance::invokeConstruct):
+ * bridge/jni/jni_instance.cpp:
+ (JavaInstance::invokeMethod):
+ * bridge/objc/objc_instance.mm:
+ (ObjcInstance::invokeMethod):
+ (ObjcInstance::invokeDefaultMethod):
+
+2009-04-28 David Carson <dacarson@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Restore alignment to device pixel boundaries.
+ https://bugs.webkit.org/show_bug.cgi?id=25458
+
+ Adjust the adjusted destination rect to be device pixel aligned.
+
+ * platform/graphics/cg/ImageCG.cpp:
+ (WebCore::BitmapImage::draw):
+
+2009-04-28 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Move unimplemented captureEvents and releaseEvents from JSDOMWindow
+ to DOMWindow.
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::captureEvents):
+ (WebCore::DOMWindow::releaseEvents):
+ * page/DOMWindow.h:
+ * page/DOMWindow.idl:
+
+2009-04-28 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25420
+ <rdar://problem/6829570> REGRESSION: XMLHttpRequest allows loading from another origin
+
+ Test: http/tests/xmlhttprequest/detaching-frame-2.html
+
+ This was caused by faulty DOMWindow::document(), which could return a new document from
+ the window's frame after navigation.
+
+ * bindings/js/JSDOMWindowCustom.h: (WebCore::JSDOMWindowBase::allowsAccessFromPrivate):
+ Removed an obsolete check that allowed access when document was null. Contrary to what a
+ comment said, that can happen for a window that is no longer in frame, not to one whose
+ document is not constructed yet.
+
+ * bindings/js/JSXMLHttpRequestConstructor.cpp: (WebCore::constructXMLHttpRequest): Bail
+ out if context was not found. This currently happens due to a shortcoming in
+ DOMWindow::document() - when it is fixed, the XMLHttpRequest object in included regression
+ test will be constructed successfully, but won't be sent, because its context will be
+ frameless.
+
+ * page/DOMWindow.cpp: (WebCore::DOMWindow::document): Check that the window in frame hasn't
+ been replaced yet. Added FIXME comments about how this may be better fixed in the future.
+
+ * bindings/js/JSAudioConstructor.cpp:
+ (WebCore::JSAudioConstructor::document):
+ (WebCore::constructAudio):
+ * bindings/js/JSImageConstructor.cpp:
+ (WebCore::JSImageConstructor::document):
+ (WebCore::constructImage):
+ * bindings/js/JSMessageChannelConstructor.cpp:
+ (WebCore::JSMessageChannelConstructor::construct):
+ * bindings/js/JSOptionConstructor.cpp:
+ (WebCore::JSOptionConstructor::document):
+ (WebCore::constructHTMLOptionElement):
+ Make matching changes to other constructors that hold a reference to global object.
+
+2009-04-28 Kevin Ollivier <kevino@theolliviers.com>
+
+ wxMSW build fix. Switch JSCore build back to static.
+
+ * config.h:
+
+2009-04-28 Pierre d'Herbemont <pdherbemont@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ <rdar://problem/6834830>
+
+ Make sure we cover the two possible values reported by event.total that are playback engine
+ specific.
+
+ * media/progress-event-total-expected.txt: Match the new test.
+ * media/progress-event-total.html: Test the two values.
+
+2009-04-28 Timothy Hatcher <timothy@apple.com>
+
+ Rename -[DOMRange lineBoxRects] to -[DOMRange textRects] and change how it
+ collects the individual rects, making sure to only include RenderText.
+
+ <rdar://problem/6810061>
+
+ Reviewed by Sam Weinig.
+
+ * bindings/objc/DOM.mm:
+ (-[DOMNode textRects]): Added. Make a Range and call textRects.
+ (-[DOMNode lineBoxRects]): Call textRects method.
+ (-[DOMRange textRects]): Call Range::textRects.
+ (-[DOMRange lineBoxRects]): Call textRects method.
+ * bindings/objc/DOMPrivate.h: Add the new methods and a comment
+ about lineBoxRects being deprecated.
+ * dom/Range.cpp:
+ (WebCore::Range::boundingBox): Call textRects (renamed from addLineBoxRects).
+ (WebCore::Range::textRects): Renamed from addLineBoxRects. Iterate over the
+ nodes instead of the RenderObjects to correctly account for offsets. Also
+ only call absoluteRectsForRange on RenderText.
+ * dom/Range.h: Renamed addLineBoxRects to textRects.
+ * page/Frame.cpp:
+ (WebCore::Frame::selectionTextRects): Call textRects (renamed from addLineBoxRects).
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::absoluteRectsForRange): Remove if conditions that made this
+ function very specific for the lineBoxRects API. These functions are still used
+ by the InspectorController, and this change improves what the Inspector shows.
+ (WebCore::RenderObject::absoluteQuadsForRange): Ditto.
+
+2009-04-28 Timothy Hatcher <timothy@apple.com>
+
+ Remove the topLevel boolean argument from absolute{Rects,Quads}.
+ This argument was default to true and no one ever passed false.
+
+ Reviewed by Sam Weinig.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::absoluteRects):
+ (WebCore::RenderBlock::absoluteQuads):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::absoluteRects):
+ (WebCore::RenderBox::absoluteQuads):
+ * rendering/RenderBox.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::absoluteRects):
+ (WebCore::RenderInline::absoluteQuads):
+ * rendering/RenderInline.h:
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::absoluteRects):
+ (WebCore::RenderObject::absoluteQuads):
+ * rendering/RenderSVGHiddenContainer.cpp:
+ (WebCore::RenderSVGHiddenContainer::absoluteRects):
+ (WebCore::RenderSVGHiddenContainer::absoluteQuads):
+ * rendering/RenderSVGHiddenContainer.h:
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::absoluteRects):
+ (WebCore::RenderSVGImage::absoluteQuads):
+ * rendering/RenderSVGImage.h:
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::absoluteRects):
+ (WebCore::RenderSVGInlineText::absoluteQuads):
+ * rendering/RenderSVGInlineText.h:
+ * rendering/RenderSVGModelObject.cpp:
+ (WebCore::RenderSVGModelObject::absoluteRects):
+ (WebCore::RenderSVGModelObject::absoluteQuads):
+ * rendering/RenderSVGModelObject.h:
+ * rendering/RenderSVGTSpan.cpp:
+ (WebCore::RenderSVGTSpan::absoluteRects):
+ (WebCore::RenderSVGTSpan::absoluteQuads):
+ * rendering/RenderSVGTSpan.h:
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::absoluteRects):
+ (WebCore::RenderSVGText::absoluteQuads):
+ * rendering/RenderSVGText.h:
+ * rendering/RenderSVGTextPath.cpp:
+ (WebCore::RenderSVGTextPath::absoluteQuads):
+ * rendering/RenderSVGTextPath.h:
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::absoluteRects):
+ * rendering/RenderText.h:
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::absoluteRects):
+ (WebCore::RenderView::absoluteQuads):
+ * rendering/RenderView.h:
+
+2009-04-28 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ <rdar://problem/6794691> Media documents and <video controls> never show controls on Windows
+
+ RenderThemeWin doesn't implement the media element controller rendering methods, so media
+ controls stopped rendering when we switched from RenderThemeSafari. Rather than having copies
+ of the code in both places, the logic is in a new class that is called from both.
+
+ * WebCore.vcproj/WebCore.vcproj: Add RenderMediaControls.cpp.
+
+ * rendering/RenderMediaControls.cpp: Added.
+ (WebCore::determineState): Translate renderer state to ThemeControlState.
+ (WebCore::RenderMediaControls::adjustMediaSliderThumbSize): Adjust slider thumb.
+ (WebCore::parentMediaElement): Return the HTMLMediaElement parent of a controller element.
+ (WebCore::RenderMediaControls::paintMediaControlsPart): Paint a media controller part.
+ * rendering/RenderMediaControls.h: Added.
+
+ * rendering/RenderThemeSafari.cpp:
+ (WebCore::RenderThemeSafari::paintSliderTrack): Remove the MediaSliderPart case, it is never
+ called for the media slider.
+ (WebCore::RenderThemeSafari::adjustSliderThumbSize): Call RenderMediaControls function.
+ (WebCore::RenderThemeSafari::paintMediaFullscreenButton): Ditto.
+ (WebCore::RenderThemeSafari::paintMediaMuteButton): Ditto.
+ (WebCore::RenderThemeSafari::paintMediaPlayButton): Ditto.
+ (WebCore::RenderThemeSafari::paintMediaSeekBackButton): Ditto.
+ (WebCore::RenderThemeSafari::paintMediaSeekForwardButton): Ditto.
+ (WebCore::RenderThemeSafari::paintMediaSliderTrack): Ditto.
+ (WebCore::RenderThemeSafari::paintMediaSliderThumb): Ditto.
+
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::RenderThemeWin::adjustSliderThumbSize): Ditto.
+ (WebCore::RenderThemeWin::paintMediaFullscreenButton): Ditto.
+ (WebCore::RenderThemeWin::paintMediaMuteButton): Ditto.
+ (WebCore::RenderThemeWin::paintMediaPlayButton): Ditto.
+ (WebCore::RenderThemeWin::paintMediaSeekBackButton): Ditto.
+ (WebCore::RenderThemeWin::paintMediaSeekForwardButton): Ditto.
+ (WebCore::RenderThemeWin::paintMediaSliderTrack): Ditto.
+ (WebCore::RenderThemeWin::paintMediaSliderThumb): Ditto.
+ * rendering/RenderThemeWin.h:
+
+2009-04-28 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fix for <rdar://problem/6419515> REGRESSION (r31037): Positioned
+ images with % height are collapsed when printing
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::calcHeight): Make sure we don't ignore
+ printing here!
+
+2009-04-28 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for <rdar://problem/6617298> Typing delete on an unquoted blank line unquotes the preceding, quoted blank line
+
+ Test: editing/deleting/type-delete-after-quote.html
+
+ When a selection is deleted that contains a whole number paragraphs plus a line break, we refrain from merging paragraphs after the delete,
+ since it is unclear to most users that such a selection actually ends at the start of the next paragraph. However, when a user hits delete
+ with a caret selection, they actually do expect the start of that paragraph to be merged into the paragraph before it. We can tell that
+ we're in this state because the TypingCommand creates the selection to delete but it doesn't change the endingSelection. So we can tell
+ that if we started with a caret selection, then we're not in this special case where we have to protect the user from unexpected behavior
+ from deleting a range they selected.
+
+ * editing/DeleteSelectionCommand.cpp: (WebCore::DeleteSelectionCommand::initializePositionData):
+
+2009-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed: fix distcheck build, add missing header to file list.
+
+ * GNUmakefile.am:
+
+2009-04-27 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ Fix foreignObject transform order
+ https://bugs.webkit.org/show_bug.cgi?id=25433
+
+ Transforms were being applied in the wrong order.
+ When mapping from local to parent, first apply the viewport transform
+ then map from the viewport box to the parent box.
+
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::localToParentTransform):
+
+2009-04-27 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Simplify nodeAtPoint for SVG
+ https://bugs.webkit.org/show_bug.cgi?id=25432
+
+ Added a new nodeAtFloatPoint method which takes a FloatPoint
+ instead of the *super confusing* x/y tx/ty pairs that HTML uses.
+ Mostly this is just lots of minus-lines as the new code is *much* simpler.
+
+ I made all the SVG renderers use the new nodeAtFloatPoint and ASSERT_NOT_REACHED
+ for the nodeAtPoint HTML/CSS int x/y version.
+
+ Eventually the rest of CSS/HTML render objects will follow suit
+ and move to nodeAtFloatPoint (possibly renamed back to nodeAtPoint), but changing them
+ over was well outside the scope of this change.
+
+ SVG hit testing is not actually floating point precise yet, since its still
+ passed in an integer x/y. Certain transform hit-test edge cases are likely fixed
+ by moving to FloatPoint here, but I didn't try to find one.
+
+ This should not cause functional changes for common-case hit testing, thus
+ no tests changed, nor should new tests be needed.
+
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::translationForAttributes):
+ (WebCore::RenderForeignObject::paint):
+ (WebCore::RenderForeignObject::computeRectForRepaint):
+ (WebCore::RenderForeignObject::localToParentTransform):
+ (WebCore::RenderForeignObject::layout):
+ (WebCore::RenderForeignObject::nodeAtFloatPoint):
+ * rendering/RenderForeignObject.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::nodeAtFloatPoint):
+ * rendering/RenderObject.h:
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::nodeAtFloatPoint):
+ * rendering/RenderPath.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::nodeAtFloatPoint):
+ * rendering/RenderSVGContainer.h:
+ (WebCore::RenderSVGContainer::pointIsInsideViewportClip):
+ * rendering/RenderSVGHiddenContainer.cpp:
+ (WebCore::RenderSVGHiddenContainer::nodeAtFloatPoint):
+ * rendering/RenderSVGHiddenContainer.h:
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::paint):
+ (WebCore::RenderSVGImage::nodeAtFloatPoint):
+ * rendering/RenderSVGImage.h:
+ (WebCore::RenderSVGImage::localToParentTransform):
+ (WebCore::RenderSVGImage::localTransform):
+ * rendering/RenderSVGModelObject.cpp:
+ (WebCore::RenderSVGModelObject::nodeAtFloatPoint):
+ * rendering/RenderSVGModelObject.h:
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::nodeAtFloatPoint):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::nodeAtFloatPoint):
+ * rendering/RenderSVGText.h:
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::pointIsInsideViewportClip):
+ * rendering/RenderSVGViewportContainer.h:
+
+2009-04-28 Eric Carlson <eric.carlson@apple.com>
+
+ - fix the Tiger build
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::cacheMovieScale):
+
+2009-04-28 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Beth Dakin.
+
+ Consolidate ScheduleAction creation into ScheduledAction::create.
+ Autogenerate JSWorkerContext.clearTimeout and clearInterval.
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::setTimeout):
+ (WebCore::JSDOMWindow::setInterval):
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::setTimeout):
+ (WebCore::JSWorkerContext::setInterval):
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::create):
+ (WebCore::ScheduledAction::ScheduledAction):
+ (WebCore::ScheduledAction::execute):
+ * bindings/js/ScheduledAction.h:
+ * workers/WorkerContext.cpp:
+ (WebCore::DOMWindow::setTimeout):
+ (WebCore::DOMWindow::clearTimeout):
+ (WebCore::DOMWindow::setInterval):
+ (WebCore::DOMWindow::clearInterval):
+ * workers/WorkerContext.h:
+ * workers/WorkerContext.idl:
+
+2009-04-28 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/6643219> Crashes after moving nodes between documents with Safari 4 Beta installed
+
+ When moving Nodes between documents we weren't properly updating style declarations. Certain operations, such
+ as creating webarchives, would tickle this bug.
+
+ Tests: webarchive/adopt-attribute-styled-body-webarchive.html
+ webarchive/adopt-attribute-styled-node-webarchive.html
+ webarchive/adopt-inline-styled-node-webarchive.html
+
+ * dom/Node.cpp: Add a debug-only mechanism to insure that anyone who overrides (did/will)MoveToNewOwnerDocument
+ calls their parent-class implementation after they've done their own work.
+ (WebCore::setWillMoveToNewOwnerDocumentWasCalled):
+ (WebCore::setDidMoveToNewOwnerDocumentWasCalled):
+ (WebCore::Node::setDocument):
+ (WebCore::Node::willMoveToNewOwnerDocument):
+ (WebCore::Node::didMoveToNewOwnerDocument):
+
+ * dom/StyledElement.cpp:
+ (WebCore::StyledElement::attributeChanged): Add a comment explaining why we don't need to walk the nameAttrMap
+ to update style declarations.
+ (WebCore::StyledElement::didMoveToNewOwnerDocument): Update the parent pointer for the inline style declaration.
+ * dom/StyledElement.h:
+
+ * html/HTMLBodyElement.cpp:
+ (WebCore::HTMLBodyElement::didMoveToNewOwnerDocument): Update the parent pointer for the link declaration.
+ * html/HTMLBodyElement.h:
+
+2009-04-28 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6834876> Don't use BlockExceptions macros until QTKit supports
+ QTMoviePreferredTransformAttribute
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::cacheMovieScale): use @try and @catch instead of
+ BEGIN_BLOCK_OBJC_EXCEPTIONS and END_BLOCK_OBJC_EXCEPTIONS for builds of QTKit
+ that throw an exception on QTMovieCurrentSizeAttribute but don't support
+ QTMoviePreferredTransformAttribute
+
+2009-04-28 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::RenderText): Streamline code path to avoid a bit of reference count
+ churn and remove a strange unneeeded PassRefPtr typecast. Also added a comment.
+ (WebCore::RenderText::setTextInternal): Ditto.
+
+2009-04-27 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Simplify how SVG containers paint
+ https://bugs.webkit.org/show_bug.cgi?id=25431
+
+ Moved filterBoundingBox() from RenderSVGModelObject to SVGRenderSupport to share with other classes.
+ Gave RenderSVGText a modern clippedOverflowRectForRepaint and computeRectForRepaint.
+ RenderSVGText now applies transforms at paint() time instead of during chunk draw time
+ this should be much more efficient.
+
+ Fixed the order in which RenderSVGViewportContainer applied
+ transforms and clips. We now clip to the viewport first and apply
+ all transforms at once. Also since the viewport logic is now only
+ inside RenderSVGViewportContainer (instead of inside RenderSVGContainer)
+ we always know we have a viewport. We now use only viewportSize instead of
+ viewport() since RenderSVGViewportContainers can't have x/y offsets.
+
+ We now correctly transform the PaintInfo::rect (damage rect) when applying transforms.
+ This allowed us to apply the transform during text paint() instead of at chunk paint
+ time. Previously we had to apply the transform during chunk paint time because
+ RenderBlock (superclass of RenderSVGBlock) would check intersection with the damageRect
+ before telling any of the inlines to draw. Now that we adjust the damage rect correctly
+ we pass the intersection check correctly! (This probably fixed some <text> redraw bugs
+ but since I still have a bunch of those to fix, I've not tried to write additional tests
+ to cover these potential fixes yet.)
+
+ SVGRootInlineBox no longer needs to deal with transforms at chunk paint time, yay!
+
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::repaintRectInLocalCoordinates):
+ (WebCore::RenderPath::paint):
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::paint):
+ (WebCore::RenderSVGContainer::repaintRectInLocalCoordinates):
+ * rendering/RenderSVGContainer.h:
+ (WebCore::RenderSVGContainer::applyViewportClip):
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::layout):
+ (WebCore::RenderSVGImage::repaintRectInLocalCoordinates):
+ (WebCore::RenderSVGImage::clippedOverflowRectForRepaint):
+ (WebCore::RenderSVGImage::computeRectForRepaint):
+ * rendering/RenderSVGImage.h:
+ * rendering/RenderSVGModelObject.cpp:
+ * rendering/RenderSVGModelObject.h:
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::layout):
+ (WebCore::RenderSVGRoot::selfWillPaint):
+ (WebCore::RenderSVGRoot::paint):
+ (WebCore::RenderSVGRoot::viewportSize):
+ (WebCore::RenderSVGRoot::calcViewport):
+ (WebCore::RenderSVGRoot::localToBorderBoxTransform):
+ (WebCore::RenderSVGRoot::parentOriginToBorderBox):
+ (WebCore::RenderSVGRoot::borderOriginToContentBox):
+ (WebCore::RenderSVGRoot::localToRepaintContainerTransform):
+ (WebCore::RenderSVGRoot::localToParentTransform):
+ (WebCore::RenderSVGRoot::computeRectForRepaint):
+ (WebCore::RenderSVGRoot::nodeAtPoint):
+ * rendering/RenderSVGRoot.h:
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::clippedOverflowRectForRepaint):
+ (WebCore::RenderSVGText::computeRectForRepaint):
+ (WebCore::RenderSVGText::paint):
+ (WebCore::RenderSVGText::repaintRectInLocalCoordinates):
+ * rendering/RenderSVGText.h:
+ (WebCore::RenderSVGText::localToParentTransform):
+ (WebCore::RenderSVGText::localTransform):
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::applyViewportClip):
+ * rendering/RenderSVGViewportContainer.h:
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::filterBoundingBoxForRenderer):
+ (WebCore::applyTransformToPaintInfo):
+ * rendering/SVGRenderSupport.h:
+ * rendering/SVGRootInlineBox.cpp:
+ (WebCore::SVGRootInlineBoxPaintWalker::chunkStartCallback):
+ (WebCore::SVGRootInlineBox::paint):
+
+2009-04-28 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 25453: AX: fall back to PLACEHOLDER attr if form element is not labeled
+ https://bugs.webkit.org/show_bug.cgi?id=25453
+
+ Test: accessibility/placeholder.html
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::title):
+
+2009-04-28 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 25452: AX: Don't create addition space AXStaticText element for every bold or link tag
+ https://bugs.webkit.org/show_bug.cgi?id=25452
+
+ Test: accessibility/ignore-spacer-elements.html
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+
+2009-04-28 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Work around <rdar://problem/6833240> by relying on static initialization to zero the entire struct.
+ This removes the need for us to explicitly initialize all of the members, which have a tendency
+ to change in meaning and number between versions of libxml2.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::):
+ (WebCore::sharedXHTMLEntity):
+ (WebCore::getXHTMLEntity):
+
+2009-04-28 Steve Falkenburg <sfalken@apple.com>
+
+ Fix linker warning by specifying /NODEFAULTLIB:LIBCMT for QTMovieWin.
+
+ Reviewed by Mark Rowe.
+
+ * WebCore.vcproj/QTMovieWin.vcproj:
+
+2009-04-28 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 25449: AX: Respect the alt tag of ARIA button as AXDescription
+ https://bugs.webkit.org/show_bug.cgi?id=25449
+
+ Test: accessibility/img-aria-button-alt-tag.html
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityDescription):
+
+2009-04-28 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - formatting cleanup
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::calcHeight): Corrected indentation and added braces
+ around a multi-line "else" clause.
+
+2009-04-28 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Adam Roben
+
+ <rdar://problem/6769968> media/video-size-intrinsic-scale.html fails on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=25094
+
+ Display movies saved with a non-identity matrix at the correct size.
+
+ * platform/graphics/win/QTMovieWin.cpp:
+ (QTMovieWinPrivate::QTMovieWinPrivate): Initialize m_widthScaleFactor and m_heightScaleFactor.
+ (QTMovieWinPrivate::cacheMovieScale): New, calculate difference between initial
+ size and natural size so naturalSize() accounts for non-identity movie matrix.
+ (QTMovieWinPrivate::task):Call cacheMovieScale when load state reaches
+ kMovieLoadStateLoaded for the first time. kMovieLoadState -> QTMovieLoadState.
+ (QTMovieWinPrivate::drawingComplete): kMovieLoadState -> QTMovieLoadState.
+ (QTMovieWinPrivate::createGWorld): Don't bother creating gworld until load state reaches
+ kMovieLoadStateLoaded because we do not try to draw it before that point.
+ (QTMovieWinPrivate::setSize): Do not change movie box before reaching kMovieLoadStateLoaded
+ because we need to get the movie's initial size in cacheMovieScale.
+ (QTMovieWin::getNaturalSize): Multiply width and height by initial scale.
+
+2009-04-28 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Move timer code from JSDOMWindow to DOMWindow. clearTimeout and
+ clearInterval can now be autogenerated.
+
+ * bindings/js/JSDOMWindowBase.cpp:
+ * bindings/js/JSDOMWindowBase.h:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::createScheduledAction):
+ (WebCore::JSDOMWindow::setTimeout):
+ (WebCore::JSDOMWindow::setInterval):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::setTimeout):
+ (WebCore::DOMWindow::clearTimeout):
+ (WebCore::DOMWindow::setInterval):
+ (WebCore::DOMWindow::clearInterval):
+ * page/DOMWindow.h:
+ * page/DOMWindow.idl:
+
+2009-04-28 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Small optimization, don't get the widget's handle twice in one method.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25446
+
+ * platform/wx/WidgetWx.cpp:
+ (WebCore::Widget::setFocus):
+ (WebCore::Widget::show):
+ (WebCore::Widget::hide):
+ (WebCore::Widget::frameRect):
+ (WebCore::Widget::setFrameRect):
+ (WebCore::Widget::invalidateRect):
+ (WebCore::Widget::paint):
+
+2009-04-28 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ ScrollView copy and paste typo fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25445
+
+ * platform/wx/ScrollViewWx.cpp:
+ (WebCore::ScrollView::platformSetScrollbarModes):
+
+2009-04-28 John Sullivan <sullivan@apple.com>
+
+ <rdar://problem/6820221> REGRESSION: 2-byte character names of images are displayed as %-encoded ASCII
+
+ Reviewed by Adam Roben
+
+ * loader/ImageDocument.cpp:
+ (WebCore::ImageTokenizer::finish):
+ decode the filename before processing it as part of the image name that's passed to the client
+
+2009-04-28 Maciej Stachowiak <mjs@apple.com>
+
+ Not reviewed, build fix.
+
+ - fix initialization order to match declaration order to fix release build
+
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+
+2009-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Justin Garcia.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16135
+ [GTK] Support caret browsing
+
+ Based on a patch by Alp Toker.
+
+ Implement basic support for caret browsing, active only when the
+ corresponding setting is enabled.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleMouseReleaseEvent):
+ * page/FocusController.cpp:
+ (WebCore::FocusController::advanceFocus):
+ (WebCore::clearSelectionIfNeeded):
+ (WebCore::FocusController::setFocusedNode):
+ * page/Frame.cpp:
+ (WebCore::Frame::setFocusedNodeIfNeeded):
+ (WebCore::Frame::setSelectionFromNone):
+ (WebCore::Frame::respondToChangedSelection):
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+ * page/Settings.h:
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paintCaret):
+
+2009-04-27 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Fix a compile breakage.
+ <https://bugs.webkit.org/show_bug.cgi?id=25384>
+
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-04-27 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6822344> Use of QTMovieCurrentSizeAttribute generates exception and will crash
+
+ QTMovieCurrentSizeAttribute generates an exception with some versions of QTKit, so calculate a
+ multiplier to scale from natural size to current size when a movie is opened and use that to
+ return the correct value from the naturalSize() method.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.h:
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): Initialize m_scaleFactor.
+ (WebCore::MediaPlayerPrivate::naturalSize): Return naturalSize transformed by initial scale.
+ (WebCore::MediaPlayerPrivate::cacheMovieScale): New, calculate difference between initial
+ size and natural size so naturalSize() accounts for non-identity movie matrix.
+ (WebCore::MediaPlayerPrivate::updateStates): Call cacheMovieScale when load state reaches
+ QTMovieLoadStateLoaded for the first time.
+
+2009-04-27 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Fix for <rdar://problem/6709057> REGRESSION (4PB-TOT): http://www.winway.com/main3/support/faq.aspx selector doesn't look right or work
+
+ The problem here is that we had a self-painting layer nested inside
+ a non-self-painting layer. We ended up ignoring the self-painting
+ layer both during painting and hit-testing. This patch corrects
+ that.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::paintLayer):
+ (WebCore::RenderLayer::hitTestLayer):
+
+2009-04-27 Ada Chan <adachan@apple.com>
+
+ If it has been set to allow any HTTPS certificates for this host, set
+ kCFStreamSSLAllowsExpiredCertificates to true to allow expired
+ certificate, and set kCFStreamSSLValidatesCertificateChain false to skip
+ certificate chain validation. (<rdar://problem/6382059>)
+
+ Reviewed by John Sullivan.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::makeFinalRequest):
+
+2009-04-27 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Adele Peterson
+
+ <rdar://problem/6822225> Full page zooming of <video> element in the browser window doesn't work well
+
+ Fix a 'size changed' notification thrash that caused standalone video elements
+ to continually resize after full page zooming, by using the movie's natual size (which is independent
+ of zooming), rather than its current size (which is not).
+
+ Note that this regresses <https://bugs.webkit.org/show_bug.cgi?id=25029>, so we have to
+ disable the media/video-size-intrinsic-scale.html test. However, we have to stop using
+ QTMovieCurrentSizeAttribute anyway; this will be addressed, and the test re-enabled via
+ <rdar://problem/6822344>.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::naturalSize):
+
+2009-04-27 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/6642221> REGRESSION: With the Movie widget, movie trailer fails to
+ load if movie had been previously viewed
+
+ Fix the Dashboard quirk for display:none plug-ins by moving the code from HTMLObjectElement
+ to HTMLEmebedElement. It has to be in HTMLEmbedElement because the content we care about uses <embed>.
+
+ * html/HTMLEmbedElement.cpp:
+ (WebCore::HTMLEmbedElement::rendererIsNeeded):
+ * html/HTMLObjectElement.cpp:
+ (WebCore::HTMLObjectElement::rendererIsNeeded):
+
+2009-04-27 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Move more window event related code into DOMWindow.
+
+ * dom/Document.cpp:
+ (WebCore::Document::implicitClose):
+ (WebCore::Document::setWindowAttributeEventListener):
+ (WebCore::Document::dispatchWindowEvent):
+ (WebCore::Document::dispatchLoadEvent):
+ * dom/Document.h:
+ * dom/Element.cpp:
+ * dom/Element.h:
+ * dom/Node.cpp:
+ * dom/Node.h:
+ * html/HTMLBodyElement.cpp:
+ (WebCore::HTMLBodyElement::parseMappedAttribute):
+ * html/HTMLFrameSetElement.cpp:
+ (WebCore::HTMLFrameSetElement::parseMappedAttribute):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::stopLoading):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::dispatchAllPendingUnloadEvents):
+ (WebCore::DOMWindow::postMessageTimerFired):
+ (WebCore::DOMWindow::dispatchEvent):
+ (WebCore::DOMWindow::dispatchEventWithDocumentAsTarget):
+ (WebCore::DOMWindow::dispatchLoadEvent):
+ (WebCore::DOMWindow::dispatchUnloadEvent):
+ (WebCore::DOMWindow::dispatchBeforeUnloadEvent):
+ * page/DOMWindow.h:
+ * page/Frame.cpp:
+ (WebCore::Frame::shouldClose):
+ * svg/SVGSVGElement.cpp:
+ (WebCore::SVGSVGElement::parseMappedAttribute):
+
+2009-04-27 Douglas R. Davidson <ddavidso@apple.com>
+
+ Implement the editing mechanisms and add context menu items for
+ <rdar://problem/6724106> WebViews need to implement text checking
+
+ Reviewed by Justin Garcia.
+
+ * editing/Editor.cpp:
+ * editing/Editor.h:
+ * editing/TypingCommand.cpp:
+ * loader/EmptyClients.h:
+ * page/ContextMenuController.cpp:
+ * page/EditorClient.h:
+ * page/mac/WebCoreViewFactory.h:
+ * platform/ContextMenu.cpp:
+ * platform/ContextMenuItem.h:
+ * platform/LocalizedStrings.h:
+ * platform/mac/LocalizedStringsMac.mm:
+
+2009-04-27 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Fix for <rdar://problem/6772944> REGRESSION (r42223): PLT 2% slower, i-Bench 3% slower
+
+ Be slightly less eager in collecting after page close/navigation by increasing
+ the time before collection from 0 seconds to .5 seconds.
+
+ 3% speedup on the PLT.
+
+ * bindings/js/GCController.cpp:
+ (WebCore::GCController::garbageCollectSoon):
+
+2009-04-27 David Kilzer <ddkilzer@apple.com>
+
+ Consolidate runtime application checks for Apple Mail and Safari
+
+ Reviewed by Mark Rowe and Darin Adler.
+
+ * WebCore.base.exp: Added exports.
+ * WebCore.xcodeproj/project.pbxproj: Added
+ RuntimeApplicationChecks.{h|mm} source files to the project.
+ * page/mac/EventHandlerMac.mm:
+ (WebCore::EventHandler::needsKeyboardEventDisambiguationQuirks):
+ Removed local checkedSafari and isSafari variables and switched
+ to use applicationIsSafari().
+ * platform/mac/RuntimeApplicationChecks.h: Added.
+ * platform/mac/RuntimeApplicationChecks.mm: Added.
+ (WebCore::applicationIsAppleMail): Runtime application check for
+ Apple Mail.
+ (WebCore::applicationIsSafari): Runtime application check for
+ Safari.
+
+2009-04-27 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 25374: AX: No AXValue change sent when text is auto-inserted
+ https://bugs.webkit.org/show_bug.cgi?id=25374
+
+ First patch caused some regression tests to fail.
+
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::setInnerTextValue):
+
+2009-04-16 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Based on a patch by Alp Toker.
+
+ Cover more WebCore role -> ATK role conversions.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-18 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Do not call ATK setters in the getters, just return the
+ value. Among other things calling the setter will emit the notify
+ signal, which is wrong.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-16 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Based on a patch by Alp Toker.
+
+ Implement AtkImage interface.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-27 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed debug build fix.
+
+ * platform/gtk/gtk2drawing.c:
+ (moz_gtk_toggle_paint):
+
+2009-04-27 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Build fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25382
+ Remove direct reference to CallFrame.h include to pacify Win build.
+
+ * bindings/js/JSDOMBinding.h: Removed ScriptState.h include.
+ * bindings/js/ScriptState.h: Replaced CallFrame.h with JSDOMBinding.h
+
+2009-04-27 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 25374: AX: No AXValue change sent when text is auto-inserted
+ https://bugs.webkit.org/show_bug.cgi?id=25374
+
+ When an input's text value is changed through the DOM, no AXValueChange notification is being sent.
+
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::setInnerTextValue):
+
+2009-04-27 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25382
+ Move scriptStateFromNode to ScriptState.
+
+ * bindings/js/JSDOMBinding.cpp: Moved scriptStateFromNode to ScriptState.
+ * bindings/js/JSDOMBinding.h: Ditto.
+ * bindings/js/ScriptState.cpp:
+ (WebCore::scriptStateFromNode): Added.
+ * bindings/js/ScriptState.h: Ditto.
+ * bindings/v8/ScriptState.cpp:
+ (WebCore::scriptStateFromNode): Added.
+ * bindings/v8/ScriptState.h: Ditto.
+ * dom/NodeFilter.h: Removed JSDOMBinding header include.
+ * dom/NodeIterator.h: Ditto.
+ * dom/TreeWalker.h: Ditto.
+
+2009-04-27 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 25428: 5 crashes in DumpRenderTree at com.apple.WebCore • -[AccessibilityObjectWrapper accessibilityAttributeValue:] + 830
+ https://bugs.webkit.org/show_bug.cgi?id=25428
+
+ When marking children as changed in accessibility, we cannot rely on the accessibility parent chain existing.
+ Instead, the render chain needs to be consulted.
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::childrenChanged):
+
+2009-04-27 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25399
+ <rdar://problem/6633943> REGRESSION: Many crashes reported accessing Lexis/Nexis database,
+ beneath WebCore::Cache::evict
+
+ The crash happened because a cached resource handle was removed from a document's cached
+ resources map twice recursively, so a destructor was called for a value in a deleted bucket.
+ The first call was from Cache::evict, and when destroying CachedResourceHandle destroyed
+ CachedResource, DocLoader::removeCachedResource() was called again, with HashMap being in
+ an inconsistent state.
+
+ I couldn't fully reconstruct the loading sequence to make a test.
+
+ * loader/Cache.cpp:
+ (WebCore::Cache::revalidateResource): Assert that the resource being revalidated is in cache
+ (it makes no sense to revalidate one that isn't).
+ (WebCore::Cache::evict): Don't remove the resource from document's map. Removing a resource
+ from the cache in no way implies that documents no longer use the old version. This fixes the
+ crash, and also fixes many cases of resource content being unavailable in Web Inspector.
+
+ * loader/CachedResource.h:
+ (WebCore::CachedResource::setInCache): When bringing a revalidated resource back to cache,
+ reset m_isBeingRevalidated to maintain the invariant of resources being revalidated never
+ being in cache. This fixes another assertion I saw on LexisNexis search: in rare cases,
+ switchClientsToRevalidatedResource() results in the same resource being requested again,
+ but we were only enforcing CachedResource invariants after calling this function.
+ (WebCore::CachedResource::unregisterHandle): Assert that the counter doesn't underflow.
+
+ * loader/DocLoader.cpp: (WebCore::DocLoader::removeCachedResource): Assert that the passed
+ resource is removed, not some other resource that happens to have the same URL (this used to
+ fail on LexisNexis search before this patch).
+
+ * loader/ImageDocument.cpp: (WebCore::ImageTokenizer::write): Replaced ASSERT_NOT_REACHED
+ with notImplemented(). This method can be legally called via document.write(), and should
+ work. LexisNexis takes this code path, but apparently has a fallback for Safari, so it
+ doesn't affect site functionality.
+
+ * loader/CachedResource.cpp:
+ (WebCore::CachedResource::clearResourceToRevalidate): Don't assert that m_resourceToRevalidate
+ is being revalidated - this may no longer be true, because we now reset this member in
+ CachedResource::setInCache().
+
+2009-04-27 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - make BidiContext a RefCounted class, starting with a refcount of 1,
+ and share the root BidiContexts.
+
+ * platform/graphics/GraphicsContext.cpp:
+ (WebCore::GraphicsContext::drawBidiText): Use BidiContext::create().
+ * platform/text/BidiContext.cpp:
+ (WebCore::BidiContext::create): Added. For the four "root" contexts,
+ returns a reference to a shared static BidiContext.
+ * platform/text/BidiContext.h:
+ (WebCore::BidiContext::BidiContext):
+ * platform/text/BidiResolver.h:
+ (WebCore::::commitExplicitEmbedding): Use BidiContext::create().
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::determineStartPosition): Ditto.
+
+2009-04-27 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Rubber-stamped by Gustavo Noronha.
+
+ Build fix for r42893: change GDK_exclaim to GDK_exclam
+
+ * platform/chromium/KeyCodeConversionGtk.cpp:
+ (WebCore::windowsKeyCodeForKeyEvent):
+ * platform/gtk/KeyEventGtk.cpp:
+ (WebCore::windowsKeyCodeForKeyEvent):
+
+2009-04-27 Fumitoshi Ukai <ukai@google.com>
+
+ Reviewed by Xan Lopez.
+
+ Fix wrong key code conversion.
+
+ Missing conversion for GDK_exlaim ('!').
+ Parens are opposite: GDK_parenleft is open paren '('
+ and GDK_parenright is close paren ')'.
+ https://bugs.webkit.org/show_bug.cgi?id=25367
+
+ * platform/chromium/KeyCodeConversionGtk.cpp:
+ (WebCore::windowsKeyCodeForKeyEvent):
+ * platform/gtk/KeyEventGtk.cpp:
+ (WebCore::windowsKeyCodeForKeyEvent):
+
+2009-04-27 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Gustavo Noronha.
+
+ [Gtk] gtkdrawing update
+ https://bugs.webkit.org/show_bug.cgi?id=25408
+
+ Update to the 25 Apr 2009 version of gtk2drawing.c and
+ gtkdrawing.h from Mozilla (http://hg.mozilla.org/mozilla-central)
+
+ * platform/gtk/gtk2drawing.c:
+ (setup_widget_prototype):
+ (moz_gtk_get_combo_box_entry_arrow):
+ (ensure_toolbar_widget):
+ (ensure_tree_header_cell_widget):
+ (moz_gtk_init):
+ (moz_gtk_button_get_inner_border):
+ (moz_gtk_toggle_paint):
+ (moz_gtk_caret_paint):
+ (moz_gtk_entry_paint):
+ (moz_gtk_tree_header_cell_paint):
+ (moz_gtk_combo_box_paint):
+ (moz_gtk_toolbar_separator_paint):
+ (moz_gtk_menu_separator_paint):
+ (moz_gtk_get_widget_border):
+ (moz_gtk_get_tab_scroll_arrow_size):
+ (moz_gtk_get_toolbar_separator_width):
+ (moz_gtk_get_menu_separator_height):
+ (moz_gtk_widget_paint):
+ (moz_gtk_shutdown):
+ * platform/gtk/gtkdrawing.h:
+
2009-04-27 Ariya Hidayat <ariya.hidayat@nokia.com>
Reviewed by Tor Arne Vestbø.
@@ -138,143 +14515,4010 @@
* platform/qt/RenderThemeQt.cpp:
(WebCore::RenderThemeQt::applyTheme):
-2009-03-13 Adam Bergkvist <adam.bergkvist@ericsson.com>
+2009-04-26 Sam Weinig <sam@webkit.org>
- Reviewed by Alexey Proskuryakov.
+ Reviewed by Dan Bernstein.
- https://bugs.webkit.org/show_bug.cgi?id=24349
- [QT] HTTP status text is never set
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=25412
+ The Window object should be an EventTarget
- Set HTTP status text to the reason phrase attribute of QNetworkReply.
+ Test: fast/dom/Window/dispatchEvent.html
- * platform/network/qt/QNetworkReplyHandler.cpp:
- (WebCore::QNetworkReplyHandler::sendResponseIfNeeded):
+ * bindings/js/JSEventTarget.cpp:
+ (WebCore::toJS): Add DOMWindow case.
+ (WebCore::toEventTarget): Ditto.
-2009-03-02 Dirk Schulze <krit@webkit.org>
+ * dom/EventTarget.cpp:
+ (WebCore::EventTarget::toDOMWindow): Added.
+ * dom/EventTarget.h:
- Reviewed by Holger Freyther.
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::scriptExecutionContext): Added. Returns the document.
+ (WebCore::DOMWindow::dispatchEvent): Added.
+ * page/DOMWindow.h:
+ (WebCore::DOMWindow::toDOMWindow):
+ (WebCore::DOMWindow::refEventTarget):
+ (WebCore::DOMWindow::derefEventTarget):
+ * page/DOMWindow.idl:
- Added putImageData to Qt. Discussed with Ariya Hidayat.
+2009-04-26 Sam Weinig <sam@webkit.org>
- [Qt] lacks putImageData support in Canvas
- https://bugs.webkit.org/show_bug.cgi?id=22186
+ Reviewed by Eric Seidel.
- * platform/graphics/qt/ImageBufferQt.cpp:
- (WebCore::ImageBuffer::putImageData):
+ Remove scons-based build system.
-2009-03-01 Larry Ewing <lewing@novell.com>
+ * WebCore.scons: Removed.
- Reviewed by Alexey Proskuryakov.
+2009-04-26 Darin Adler <darin@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=24080
- NPN_GetValue casting to the wrong type and writing outside bounds
+ Suggested by Darin Fisher.
- Make sure to cast the value to the correct type so that only
- memory owned by the value is written to.
+ Improve the fix for bug 25355: Crash when Creating New Tab or New Window when set to open Same Page
+ https://bugs.webkit.org/show_bug.cgi?id=25355
+ rdar://problem/6823543
- * plugins/gtk/PluginViewGtk.cpp (PluginView::getValueStatic):
- * plugins/qt/PluginViewQt.cpp (PluginView::getValueStatic):
- * plugins/mac/PluginViewMac.cpp (PluginView::getValueStatic):
- (PluginView::getValue):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadItem): Allow shouldScroll to be true even if m_currentHistoryItem is 0.
+ Not sure if when this case can really arise in practice, but it's good to match the original
+ logic more closely.
-2009-02-27 Adam Treat <adam.treat@torchmobile.com>
+2009-04-25 Dirk Schulze <krit@webkit.org>
- Reviewed by Eric Seidel.
+ Reviewed by Oliver Hunt.
- https://bugs.webkit.org/show_bug.cgi?id=24229
- If an image has no alpha channel there is no reason to use SourceOver.
+ A width or height of zero for the destination or source rect of an
+ image causes a not invertible pattern matrix.
+ This crahes newer versions of Cairo and give some graphic gliches in
+ Canvas.
+ With this patch we check if there is something to draw and return if not.
- * platform/graphics/qt/ImageQt.cpp:
- (WebCore::Image::drawPattern):
+ * platform/graphics/cairo/ImageCairo.cpp:
(WebCore::BitmapImage::draw):
-2009-02-27 Zack Rusin <zack@kde.org>
+2009-04-25 Simon Fraser <simon.fraser@apple.com>
- Reviewed by Nikolas Zimmermann.
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=25390
+
+ Fix point mapping and hit testing through transforms and perspective
+ with ENABLE_3D_RENDERING. Previously the code did the more efficient
+ move(), rather than getTransformFromContainer(), when the object had
+ no transform. However, this skipped the application of perspective
+ when the immediate child of the perspective element had no transform
+ itself.
- Qt: be more reasonable about scrolled lines
+ Test: transforms/3d/point-mapping/3d-point-mapping-3.html
- cMouseWheelPixelsPerLineStep is currently a constant set to 13.3. it doesn't
- match our metrics meaning that Qt scrolls by ~2 lines by default which is quite
- irritating. so lets scroll vertically by the Qt set number of lines * Qt default
- single step scroll
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::mapLocalToContainer):
+ (WebCore::RenderBox::mapAbsoluteToLocalPoint):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::createLocalTransformState):
+ Call shouldUseTransformFromContainer() to determine if we need to
+ go through the more expensive getTransformFromContainer() code
+ path.
- * platform/qt/WheelEventQt.cpp:
+ * rendering/RenderObject.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::shouldUseTransformFromContainer):
+ New method that indicates whether we need use getTransformFromContainer()
+ when mapping points through renderers, and hit testing.
-2009-02-25 Dirk Schulze <krit@webkit.org>
+2009-04-25 Adele Peterson <adele@apple.com>
Reviewed by Oliver Hunt.
- Ported arcTo to Qt. Qt has no native support for arcTo. This changes
- calculate the behavior of arcTo and draws it with lineTo and arc.
+ Fix for <rdar://problem/6712771> REGRESSION(34681): Text is no longer underlined after delete
+ https://bugs.webkit.org/show_bug.cgi?id=25396
- [QT] implement Canvas arcTo
- https://bugs.webkit.org/show_bug.cgi?id=23873
+ Test: editing/deleting/delete-br-013.html
- * platform/graphics/qt/PathQt.cpp:
- (WebCore::Path::addArcTo):
+ * editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::moveParagraphs):
+ Only preserve an empty paragraph's style when moving paragraphs around if the selection is still
+ in an empty paragraph after the move occurs. This was causing the empty paragraph's style to overwrite
+ the previous paragraph's style during a delete of an empty paragraph.
-2009-03-12 Adam Treat <adam.treat@torchmobile.com>
+2009-04-25 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6808171> REGRESSION (3-4): Standalone media documents don't
+ properly display non-linear media
+
+ If a media engine claims it can support the MIME type, WebCore now creates a <video>
+ element for document mode media files instead of an <embed> element. Because WebCore's
+ QuickTime backed media players do not support every kind of media the QuickTime plug-in
+ supports, and because it is not always possible to tell what type of media is in a file
+ without opening and parsing it, some types of media that used to be displayed properly
+ by a plug-in are no longer supported properly. To fix this, if the media engine
+ sees that it can not completely support a media file it now informs the media
+ document, which replaces the <video> element with an <embed>.
+
+ r42301 landed support for OSX. This patch modifies those changes slighly and adds support
+ for Windows.
+
+ * loader/MediaDocument.cpp:
+ (WebCore::MediaDocument::MediaDocument): Initialize m_replaceMediaElementTimer.
+ (WebCore::MediaDocument::mediaElementSawUnsupportedTracks): Don't replace the <video>
+ element immediately.
+ (WebCore::MediaDocument::replaceMediaElementTimerFired): Renamed from replaceVideoWithEmbed.
+ Set body margin-width and margin-height to 0 as that is what a PluginDocument uses.
+ * loader/MediaDocument.h:
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::loadStateChanged): Don't do anything if m_hasUnsupportedTracks.
+ (WebCore::MediaPlayerPrivate::rateChanged): Ditto.
+ (WebCore::MediaPlayerPrivate::timeChanged): Ditto.
+ (WebCore::MediaPlayerPrivate::didEnd): Ditto.
+ (WebCore::MediaPlayerPrivate::repaint): Ditto.
+ (WebCore::MediaPlayerPrivate::paint): Ditto.
+ (WebCore::MediaPlayerPrivate::sawUnsupportedTracks): Set m_hasUnsupportedTracks before callback.
+
+ * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.cpp:
+ (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): Initialize m_totalTrackCount and m_hasUnsupportedTracks.
+ (WebCore::MediaPlayerPrivate::updateStates): Call sawUnsupportedTracks if the movie has unsupported
+ media type(s) or if it fails completely.
+ (WebCore::MediaPlayerPrivate::sawUnsupportedTracks): New, disable the movie object and tell the
+ media player client we won't play this movie correctly.
+ (WebCore::MediaPlayerPrivate::didEnd): Don't do anything if m_hasUnsupportedTracks.
+ (WebCore::MediaPlayerPrivate::setSize): Ditto.
+ (WebCore::MediaPlayerPrivate::setVisible): Ditto.
+ (WebCore::MediaPlayerPrivate::paint): Ditto.
+ (WebCore::MediaPlayerPrivate::movieEnded): Ditto.
+ (WebCore::MediaPlayerPrivate::movieLoadStateChanged): Ditto.
+ (WebCore::MediaPlayerPrivate::movieTimeChanged): Ditto.
+ (WebCore::MediaPlayerPrivate::movieNewImageAvailable): Ditto.
+ * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h:
+
+ * platform/graphics/win/QTMovieWin.cpp:
+ (QTMovieWinPrivate::task): Stop the task timer if we were disabled during the load state
+ change callback.
+ (QTMovieWinPrivate::drawingComplete): Don't do anything if disabled.
+ (QTMovieWin::QTMovieWin): Initialize m_disabled.
+ (QTMovieWin::disableUnsupportedTracks): Return total number of tracks.
+ (QTMovieWin::setDisabled): New, set m_disabled flag.
+ * platform/graphics/win/QTMovieWin.h:
+
+2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Error reporting
+ https://bugs.webkit.org/show_bug.cgi?id=18344
+
+ Fix the SOUP resource handle to report SOUP_HTTP_ERROR for Soup
+ errors and G_IO_ERROR for gio errors.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::finishedCallback):
+ (WebCore::ResourceHandle::startHttp):
+ (WebCore::ResourceHandle::start):
+ (WebCore::readCallback):
+ (WebCore::openCallback):
+ (WebCore::queryInfoCallback):
+ (WebCore::ResourceHandle::startGio):
+
+2009-04-25 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Mark Rowe.
+
+ Only set the new URL once for the request. Doing it a second time
+ after the call to willSendRequest was causing crashes when
+ redirected requests got cancelled.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::restartedCallback):
+
+2009-04-24 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix. Adding ScriptEventListener.cpp.
+
+ * WebCoreSources.bkl:
+
+2009-04-24 Sergio García-Cuevas <sergio_gcg@telefonica.net>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=17267
+ [GTK] Primary selection/clipboard support
+
+ Copy the link location to the primary selection as well as the
+ clipboard selection when using the "copy link selection" context
+ menu entry.
+
+ * platform/gtk/PasteboardGtk.cpp:
+ (WebCore::Pasteboard::writeURL):
+ * platform/gtk/PasteboardHelper.h:
+
+2009-04-24 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25383
+ Changing SVG size via JS does not update CSS width/height
+
+ Add an ugly hack to fix CSS width/height updates from JS.
+
+ We can't easily call setAttribute when width/height changes
+ as that would cause infinite recursion (as we'd try to set
+ the animation storage from the attributes)
+
+ For now, when we get notification that JS changed width/height
+ we copy what parseMappedAttribute does and update the CSS values as well.
+
+ A better fix for this would be:
+ https://bugs.webkit.org/show_bug.cgi?id=25383
+
+ * svg/SVGSVGElement.cpp:
+ (WebCore::updateCSSForAttribute):
+ (WebCore::SVGSVGElement::svgAttributeChanged):
+
+2009-04-24 Kevin McCullough <kmccullough@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ We should not show the deletion UI for blockquotes in mail but they do
+ show now that we only check for one visible border.
+
+ * editing/DeleteButtonController.cpp:
+ (WebCore::isDeletableElement):
+
+2009-04-24 Dan Bernstein <mitz@apple.com>
+
+ - address Hyatt's review comments on the last patch
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::performOverlapTests):
+ (WebCore::RenderLayer::paintLayer):
+
+2009-04-24 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=5909
+ <rdar://problem/5863349> overlapping element leaves trail when
+ scrolling iframe
+
+ * WebCore.xcodeproj/project.pbxproj: Added OverlapTestRequestClient.h.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::reset): Initialize m_isOverlapped.
+ (WebCore::FrameView::useSlowRepaints): Also check m_isOverlapped.
+ (WebCore::FrameView::removeSlowRepaintObject): Use useSlowRepaints()
+ so overlapping is taken into account.
+ (WebCore::FrameView::setIsOverlapped): Added. Sets m_isOverlapped and
+ enables or disables copy-on-scroll accordingly.
+
+ * page/FrameView.h:
+ Added setIsOverlapped() and m_isOverlapped.
+
+ * rendering/OverlapTestRequestClient.h: Added. During foreground painting,
+ an OverlapTestRequestClient can make a request to test if any subsequently-
+ painted layers overlap a rect. The test result is delivered to the
+ requestClient via setOverlapTestResult().
+ (WebCore::OverlapTestRequestClient::~OverlapTestRequestClient):
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::paint): Pass an OverlapTestRequestMap to
+ paintLayer(). When done painting, inform any remaining requestClients that
+ they are not overlapped.
+
+ (WebCore::RenderLayer::paintLayer): Take an OverlapTestRequestMap and
+ pass it down to child and reflection layers. Inform requestClients if this
+ layer overlaps their requested rects.
+
+ * rendering/RenderLayer.h:
+
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::PaintInfo::PaintInfo): Added an
+ OverlapTestRequestMap member.
+
+ * rendering/RenderReplica.cpp:
+ (WebCore::RenderReplica::paint): For now, pass a 0 OverlapTestRequestMap
+ to paintLayer().
+
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::paint): For FrameViews, request an overlap test
+ with the frame.
+ (WebCore::RenderWidget::setOverlapTestResult): Call
+ FrameView::setIsOverlapped() with the result of the overlap test.
+
+ * rendering/RenderWidget.h: Made RenderWidget an OverlapTestRequestClient.
+
+2009-04-24 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Simon Fraser, Dan Bernstein.
+
+ Speed up the PLT by devirtualizing the height() function on InlineBox. virtualizing it in order to make the height() computation dynamic caused
+ a ~0.5% slowdown. This patch does the following to get the speed back:
+
+ (a) Devirtualizes isText and forces inline box creators to set the bit as needed. This actually resulted in simplified code, since ListMarkerBox could
+ then be removed.
+ (b) Reduces the height() call count. In some cases the code was repeatedly calling height(), which used to be fine when the function was just an inline
+ member variable access. The call sites have been patched to cut down on extra height() calls now that it is more expensive.
+ (c) Devirtualize height() except on SVG boxes. For all non-SVG, the height() function on InlineBox handles the computation. For SVG boxes, a new bit has
+ been set on InlineBoxes (isSVG()) that indicates that the virtual svgBoxHeight() function should be called to retrieve the height instead.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * rendering/InlineBox.cpp:
+ (WebCore::InlineBox::height):
+ * rendering/InlineBox.h:
+ (WebCore::InlineBox::InlineBox):
+ (WebCore::InlineBox::isSVG):
+ (WebCore::InlineBox::setIsSVG):
+ (WebCore::InlineBox::isText):
+ (WebCore::InlineBox::setIsText):
+ (WebCore::InlineBox::svgBoxHeight):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::placeBoxesVertically):
+ (WebCore::InlineFlowBox::paintBoxDecorations):
+ (WebCore::InlineFlowBox::paintMask):
+ * rendering/InlineFlowBox.h:
+ * rendering/InlineTextBox.cpp:
+ * rendering/InlineTextBox.h:
+ * rendering/ListMarkerBox.cpp: Removed.
+ * rendering/ListMarkerBox.h: Removed.
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::createInlineBox):
+ * rendering/RenderSVGInline.cpp:
+ (WebCore::RenderSVGInline::createFlowBox):
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::createTextBox):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::createRootBox):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::createInlineTextBox):
+ * rendering/RootInlineBox.cpp:
+ * rendering/RootInlineBox.h:
+ * rendering/SVGInlineFlowBox.h:
+ (WebCore::SVGInlineFlowBox::svgBoxHeight):
+ * rendering/SVGInlineTextBox.h:
+ (WebCore::SVGInlineTextBox::svgBoxHeight):
+ * rendering/SVGRootInlineBox.h:
+ (WebCore::SVGRootInlineBox::svgBoxHeight):
+
+2009-04-24 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25370
+ Introduce ScriptEventListener to refactor away direct references to
+ JSLazyEventListener in WebCore code.
+
+ * GNUmakefile.am: Added ScriptEventListener to project.
+ * WebCore.pro: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * bindings/js/JSDOMGlobalObject.cpp: Removed unused JSLazyEventListener include.
+ * bindings/js/JSLazyEventListener.cpp: Moved createAttributeEventListener helpers
+ to ScriptEventListener.
+ * bindings/js/JSLazyEventListener.h: Ditto.
+ * bindings/js/ScriptController.cpp: Removed unused JSLazyEventListener include.
+ * bindings/js/ScriptEventListener.cpp: Added.
+ * bindings/js/ScriptEventListener.h: Added.
+ * bindings/v8/ScriptEventListener.cpp: Added.
+ * bindings/v8/ScriptEventListener.h: Added.
+ * dom/Document.cpp: Renamed JSLazyEventListener include to ScriptEventListener.
+ * html/HTMLBodyElement.cpp: Ditto.
+ * html/HTMLButtonElement.cpp: Ditto.
+ * html/HTMLElement.cpp: Ditto.
+ * html/HTMLFormElement.cpp: Ditto.
+ * html/HTMLFrameElementBase.cpp: Ditto.
+ * html/HTMLFrameSetElement.cpp: Ditto.
+ * html/HTMLImageElement.cpp: Ditto.
+ * html/HTMLInputElement.cpp: Ditto.
+ * html/HTMLObjectElement.cpp: Ditto.
+ * html/HTMLScriptElement.cpp: Ditto.
+ * html/HTMLSelectElement.cpp: Ditto.
+ * html/HTMLTextAreaElement.cpp: Ditto.
+ * svg/SVGElement.cpp: Ditto.
+ * svg/SVGSVGElement.cpp: Ditto.
+
+2009-04-24 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 25355: Crash when Creating New Tab or New Window when set to open Same Page
+ https://bugs.webkit.org/show_bug.cgi?id=25355
+ rdar://problem/6823543
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadItem): Added a null check.
+
+2009-04-24 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Fix RenderSVGImage to dump with full bounds and style information.
+ https://bugs.webkit.org/show_bug.cgi?id=25377
+
+ No functional changes, we're just now including more info in render tree dumps.
+
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isSVGImage):
+ * rendering/RenderSVGImage.h:
+ (WebCore::RenderSVGImage::isSVGImage):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::write):
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ (WebCore::write):
+ * rendering/SVGRenderTreeAsText.h:
+
+2009-04-24 David Levin <levin@chromium.org>
+
+ Reviewed by NOBODY (chromium build fix).
+
+ Rename "isInline" => "isAttribute" in v8 bindings (jsc was done in r42699).
+
+ * bindings/v8/V8AbstractEventListener.cpp:
+ (WebCore::V8AbstractEventListener::V8AbstractEventListener):
+ (WebCore::V8AbstractEventListener::invokeEventHandler):
+ * bindings/v8/V8AbstractEventListener.h:
+ * bindings/v8/V8EventListenerList.cpp:
+ (WebCore::V8EventListenerList::add):
+ (WebCore::V8EventListenerList::remove):
+ (WebCore::V8EventListenerList::clear):
+ * bindings/v8/V8LazyEventListener.h:
+ (WebCore::V8LazyEventListener::virtualisAttribute):
+ * bindings/v8/custom/V8CustomEventListener.cpp:
+ (WebCore::V8EventListener::V8EventListener):
+ * bindings/v8/custom/V8CustomEventListener.h:
+ (WebCore::V8EventListener::create):
+ (WebCore::V8EventListener::virtualisAttribute):
+
+2009-04-24 Nate Chapin <japhet@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25343
+ Fix Chromium/Skia bug where -webkit-box-shadow with 0,0 offset
+ ignores blur.
+
+ * WebCore\platform\graphics\skia\GraphicsContextSkia.cpp
+ (WebCore::GraphicsContext::setPlatformShadow): Add check against
+ blur before clearing looper.
+
+2009-04-24 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Initialize TextIterator::m_textLength to 0.
+
+ This assures that TextIterator::length() will return 0 for cases when TextIterator's constructor returns early (because there is nothing to iterate over in the range).
+
+ <https://bugs.webkit.org/show_bug.cgi?id=25335>
+
+ Test: editing/selection/doubleclick-whitespace-img-crash.html
+
+ * editing/TextIterator.cpp:
+ (WebCore::TextIterator::TextIterator):
+
+2009-04-24 Fumitoshi Ukai <ukai@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25329
+ Add indexed access method in v8 binding of ClientRectList.
+
+ * bindings/v8/custom/V8ClientRectListCustom.cpp: Added.
+
+2009-04-24 Fumitoshi Ukai <ukai@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25257
+ Use null for unspecified event listener attributes of XMLHttpRequest
+ and XMLHttpRequestUpload in v8 binding.
+
+ cf. http://www.whatwg.org/specs/web-apps/current-work/#event-handler-attributes
+ An event handler attribute, unless otherwise specified, can either
+ have the value null or be set to a Function object.
+ Initially, an event handler attribute must be set to null.
+
+ Test: fast/xmlhttprequest/xmlhttprequest-default-attributes.html
+
+ * bindings/v8/custom/V8XMLHttpRequestCustom.cpp:
+ (WebCore::ACCESSOR_GETTER): Changed to use v8::Null().
+ * bindings/v8/custom/V8XMLHttpRequestUploadCustom.cpp:
+ (WebCore::ACCESSOR_GETTER): Ditto.
+
+2009-04-24 Darin Adler <darin@apple.com>
+
+ Reviewed by Adam Roben.
+
+ <rdar://problem/6663836> CrashTracer: crashes in Safari at com.apple.WebCore • WebCore::reportException + 1513
+
+ * bindings/js/JSDOMBinding.cpp:
+ (WebCore::reportException): Added a null check.
+
+2009-04-24 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=23219
+
+ Add support for transtions and animations of background-position, -webkit-background-size,
+ -webkit-mask-position and -webkit-mask-size.
+
+ Tests: transitions/background-transitions.html
+ transitions/mask-transitions.html
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::blendFunc):
+ Add a blend func for LengthSize.
+
+ (WebCore::ensurePropertyMap):
+ Add wrappers for the new properties.
+
+ (WebCore::addShorthandProperties):
+ Add a shorthand property for CSSPropertyBackgroundPosition to map to
+ CSSPropertyBackgroundPositionX and CSSPropertyBackgroundPositionY,
+ add CSSPropertyWebkitMask for CSSPropertyWebkitMaskPosition, and add
+ CSSPropertyWebkitMaskPosition for CSSPropertyWebkitMaskPositionX and
+ CSSPropertyWebkitMaskPositionY.
+
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::setBackgroundXPosition):
+ (WebCore::InheritedFlags::setBackgroundYPosition):
+ (WebCore::InheritedFlags::setBackgroundSize):
+ (WebCore::InheritedFlags::setMaskXPosition):
+ (WebCore::InheritedFlags::setMaskYPosition):
+ (WebCore::InheritedFlags::setMaskSize):
+ Add setters for the properties that can be animated now.
+
+2009-04-24 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for <rdar://problem/5089327> Newline gets stripped when pasting whole lines in certain markup
+
+ Test: editing/pasteboard/paste-blockquote-after-blockquote.html
+
+ When we have matching quote levels, its ok to merge the starts of the inserted and existing blocks more frequently.
+ But we should only merge here if the selection start was inside a mail blockquote. This prevents against removing a
+ blockquote from newly pasted quoted content that was pasted into an unquoted position. If that unquoted position happens
+ to be right after another blockquote, we don't want to merge and risk stripping a valid block (and newline) from the pasted content.
+
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplaceSelectionCommand::shouldMergeStart): Also added an early return to always return false when we're already moving paragraphs.
+ (WebCore::ReplaceSelectionCommand::doApply): Removed redundant check for when we're moving paragraphs.
+ * editing/ReplaceSelectionCommand.h:
+
+2009-04-23 Francisco Tolmasky <francisco@280north.com>
+
+ BUG 24604: WebKit profiler reports incorrect total times
+ <https://bugs.webkit.org/show_bug.cgi?id=24604>
+
+ Reviewed by Timothy Hatcher and Kevin McCullough.
+
+ Made it so that most of the profiler functions now match the behavior of Shark. Most notably, in the
+ heavy view, child nodes now represent the statistics of the root node. Each root node of heavy view
+ displays flattened statistics for a particular function that ran during the profile, and each child
+ of these root nodes represents a callpath that lead to it. Thus, the statistics for each of these child
+ nodes should show how much of the root nodes values came from it. For example, if you had the following to
+ stacks take place during the profile:
+
+ A ->calls 1 times-> B ->calls 2 times-> C
+ D ->calls 4 times-> C
+
+ The tree for the C root node would look like this:
+
+ C -> B -> A
+ -> D
+
+ The number of calls values would look like this:
+
+ C (6) -> B (2) -> A(2)
+ -> D (4)
+
+ What this means is that "2 of the total 6 C calls came from B", "2 of the total C calls came from A", and
+ "4 of the total C calls came from D". Notice that the "A ->calls 2 time->" is completely ignored. This becomes
+ particularly tricky during recursive calls, because each child note can represent multiple possible paths. This
+ is the reason that we would get things like 40000% previously with recursion.
+
+ This is also the way gprof works, and as close as we can get to Shark's behavior (Shark is not instrumented so it
+ can't know exactly how many calls came from where, etc).
+
+ * English.lproj/localizedStrings.js: Added "Average" for average times in the profile.
+ * inspector/JavaScriptProfile.cpp:
+ (WebCore::ProfileClass):
+ * inspector/JavaScriptProfileNode.cpp:
+ (WebCore::getParent):
+ (WebCore::getHead):
+ (WebCore::getCallUID):
+ (WebCore::ProfileNodeClass):
+ * inspector/front-end/BottomUpProfileDataGridTree.js: Added.
+ (WebInspector.BottomUpProfileDataGridTree):
+ (WebInspector.BottomUpProfileDataGridTree.prototype.focus):
+ (WebInspector.BottomUpProfileDataGridNode):
+ (WebInspector.BottomUpProfileDataGridNode.prototype._takePropertiesFromProfileDataGridNode):
+ (WebInspector.BottomUpProfileDataGridNode.prototype._keepOnlyChild):
+ (WebInspector.BottomUpProfileDataGridNode.prototype._exclude):
+ (WebInspector.BottomUpProfileDataGridNode.prototype._merge):
+ (WebInspector.BottomUpProfileDataGridNode.prototype._populate):
+ * inspector/front-end/DataGrid.js:
+ (WebInspector.DataGrid.prototype.insertChild):
+ (WebInspector.DataGrid.prototype.removeChild):
+ (WebInspector.DataGrid.prototype.removeChildren):
+ (WebInspector.DataGridNode.prototype.set hasChildren):
+ (WebInspector.DataGridNode.prototype.get hasChildren):
+ * inspector/front-end/ProfileDataGridTree.js: Added.
+ (WebInspector.ProfileDataGridNode):
+ (WebInspector.ProfileDataGridNode.prototype.get data.formatMilliseconds):
+ (WebInspector.ProfileDataGridNode.prototype.get data):
+ (WebInspector.ProfileDataGridNode.prototype.createCell):
+ (WebInspector.ProfileDataGridNode.prototype.select):
+ (WebInspector.ProfileDataGridNode.prototype.deselect):
+ (WebInspector.ProfileDataGridNode.prototype.expand):
+ (WebInspector.ProfileDataGridNode.prototype.insertChild):
+ (WebInspector.ProfileDataGridNode.prototype.removeChild):
+ (WebInspector.ProfileDataGridNode.prototype.removeChildren):
+ (WebInspector.ProfileDataGridNode.prototype.findChild):
+ (WebInspector.ProfileDataGridNode.prototype.get averageTime):
+ (WebInspector.ProfileDataGridNode.prototype.get averagePercent):
+ (WebInspector.ProfileDataGridNode.prototype.get selfPercent):
+ (WebInspector.ProfileDataGridNode.prototype.get totalPercent):
+ (WebInspector.ProfileDataGridNode.prototype._save):
+ (WebInspector.ProfileDataGridNode.prototype._restore):
+ (WebInspector.ProfileDataGridNode.prototype._merge):
+ (WebInspector.ProfileDataGridTree):
+ (WebInspector.ProfileDataGridTree.prototype.get expanded):
+ (WebInspector.ProfileDataGridTree.prototype.appendChild):
+ (WebInspector.ProfileDataGridTree.prototype.insertChild):
+ (WebInspector.ProfileDataGridTree.prototype.removeChildren):
+ (WebInspector.ProfileDataGridTree.prototype.findChild.WebInspector.ProfileDataGridNode.prototype.findChild.sort.WebInspector.ProfileDataGridNode.prototype.sort._save):
+ (WebInspector.ProfileDataGridTree.propertyComparator.comparator):
+ (WebInspector.ProfileDataGridTree.propertyComparator.else.comparator):
+ (WebInspector.ProfileDataGridTree.propertyComparator):
+ * inspector/front-end/ProfileView.js:
+ (WebInspector.ProfileView):
+ (WebInspector.ProfileView.prototype.set profile):
+ (WebInspector.ProfileView.prototype.get bottomUpProfileDataGridTree):
+ (WebInspector.ProfileView.prototype.get topDownProfileDataGridTree):
+ (WebInspector.ProfileView.prototype.get currentTree):
+ (WebInspector.ProfileView.prototype.set currentTree):
+ (WebInspector.ProfileView.prototype.get topDownTree):
+ (WebInspector.ProfileView.prototype.get bottomUpTree):
+ (WebInspector.ProfileView.prototype.refresh):
+ (WebInspector.ProfileView.prototype.refreshVisibleData):
+ (WebInspector.ProfileView.prototype.refreshShowAsPercents):
+ (WebInspector.ProfileView.prototype.performSearch.matchesQuery):
+ (WebInspector.ProfileView.prototype.performSearch):
+ (WebInspector.ProfileView.prototype._changeView):
+ (WebInspector.ProfileView.prototype._focusClicked):
+ (WebInspector.ProfileView.prototype._excludeClicked):
+ (WebInspector.ProfileView.prototype._resetClicked):
+ (WebInspector.ProfileView.prototype._sortProfile):
+ * inspector/front-end/ProfilesPanel.js:
+ (WebInspector.ProfilesPanel.prototype.showProfile):
+ (WebInspector.ProfilesPanel.prototype.showView):
+ (WebInspector.ProfilesPanel.prototype.searchMatchFound):
+ * inspector/front-end/TopDownProfileDataGridTree.js: Added.
+ (WebInspector.TopDownProfileDataGridNode):
+ (WebInspector.TopDownProfileDataGridNode.prototype._populate):
+ (WebInspector.TopDownProfileDataGridNode.prototype._exclude):
+ (WebInspector.TopDownProfileDataGridTree):
+ (WebInspector.TopDownProfileDataGridTree.prototype.focus):
+ (WebInspector.TopDownProfileDataGridTree.prototype.exclude):
+ * inspector/front-end/WebKit.qrc:
+ * inspector/front-end/inspector.css:
+ * inspector/front-end/inspector.html:
+
+2009-04-23 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ Use static functions (and a couple templates)
+ to further reduce the amount of copy/paste code in SVGRenderTreeAsText
+
+ No test changes, only code cleanup.
+
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::writeNameValuePair):
+ (WebCore::writeNameAndQuotedValue):
+ (WebCore::writeIfNotEmpty):
+ (WebCore::writeIfNotDefault):
+ (WebCore::writeStyle):
+ (WebCore::writePositionAndStyle):
+ (WebCore::operator<<):
+
+2009-04-23 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ SVGRenderTreeAsText cleanup/code sharing.
+
+ No test changes, only code cleanup.
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::firstRunOrigin):
+ * rendering/RenderText.h:
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::writeStandardPrefix):
+ (WebCore::writeChildren):
+ (WebCore::write):
+ (WebCore::writeRenderResources):
+
+2009-04-23 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Darin Adler.
+
+ WebCore part of fix for <rdar://problem/6333461> REGRESSION
+ (r36864-r36869): Dragging stocks widget scrollbar drags the whole
+ widget
+
+ * platform/Scrollbar.h:
+ (WebCore::Scrollbar::isScrollbar):
+ * platform/Widget.h:
+ (WebCore::Widget::isScrollbar):
+
+2009-04-23 Kevin McCullough <kmccullough@apple.com>
+
+ Reviewed by Adam Roben.
+
+ <rdar://problem/6808109> "Deletion UI" is not available for many
+ portions of HTML content
+
+ This patch makes the deletion UI show up in some new situations:
+ 1) If a block's background color is different from its parent's
+ 2) If a block has a background image.
+ 3) If a block has a single visible border.
+ However the block must now not only be at least a minimum width and
+ height, but also exceed a minimum area. In practice this has led to
+ much better element selection.
+
+ * editing/DeleteButtonController.cpp:
+ (WebCore::isDeletableElement):
+
+2009-04-23 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix. Adding XMLTokenizerScope.cpp to the build.
+
+ * WebCoreSources.bkl:
+
+2009-04-23 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for <rdar://problem/6788905> REGRESSION (41928?): hang in Position::upstream
+ https://bugs.webkit.org/show_bug.cgi?id=25312
+
+ I was unable to reproduce the problem, but I'm pretty sure this will fix it.
+
+ * rendering/RenderObject.cpp: (WebCore::RenderObject::createVisiblePosition):
+ Since VisiblePosition doesn't ensure the offset is good, we shouldn't pass max int as an offset.
+
+2009-04-23 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25313
+ Missing scroll bars in GMail.
+
+ Test: fast/overflow/overflow-y-scroll.html
+
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::updateScrollbars): Added check for the ScrollbarAlwaysOn
+ scroll mode.
+
+2009-04-23 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Justin Garcia.
+
+ - fix <rdar://problem/6081309> Mail crash when pressing down arrow in
+ some messages in WebCore::canHaveChildrenForEditing
+
+ Test: editing/selection/extend-by-line-anonymous-content-crash.html
+
+ * editing/visible_units.cpp:
+ (WebCore::previousLinePosition): Null-check node. If p is not an
+ editable position, then closestLeafChildForXPos() may have returned a
+ non-editable box, and in particular one belonging to anonymous content.
+ If node is 0, fall back on RenderObject::positionForPoint, which
+ finds the closest position in non-anonymous content.
+ (WebCore::nextLinePosition): Ditto.
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::createVisiblePosition): Fixed a typo.
+
+2009-04-23 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Adele Peterson.
+
+ <rdar://problem/6791439> REGRESSION: Get an error page instead of login page navigating back in gmail
+
+ Test: http/tests/history/back-to-post.php
+
+ * platform/network/cf/ResourceRequestCFNet.cpp: (WebCore::ResourceRequest::doUpdatePlatformRequest):
+ Apply a new cache policy if it changed after the platform request was first created.
+ While at it, also made sure to update timeout.
+
+2009-04-23 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ When creating a new drawable object, collect system's
+ information about the best depth it can provide and use it
+ in a new colormap that the new drawable requires.
+
+ * platform/graphics/gtk/ImageGtk.cpp:
+ (WebCore::BitmapImage::getGdkPixbuf):
+
+2009-04-23 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15654
+ GdkPixbuf support for ImageCairo
+
+ Add support for converting a Cairo surface to a GdkPixbuf.
+
+ * platform/graphics/BitmapImage.h:
+ * platform/graphics/Image.h:
+ (WebCore::Image::getGdkPixbuf):
+ * platform/graphics/gtk/ImageGtk.cpp:
+ (WebCore::BitmapImage::getGdkPixbuf):
+
+2009-04-23 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Simon Hausmann.
+
+ Make windowed plugins (on X11, Qt) behave nicer with wheel scrolling.
+
+ Basically, what we want is to send wheel events to the plugin *only*
+ when it has focus, or else send it to the parent frame.
+
+ This is a work around, and basically what we do, is to steal the
+ wheel events from the plugin, modify the window ID, and put the
+ event back into the Qt event loop.
+
+ * plugins/qt/PluginContainerQt.cpp:
+ (PluginClientWrapper::PluginClientWrapper):
+ (PluginClientWrapper::~PluginClientWrapper):
+ (PluginClientWrapper::x11Event):
+ (PluginContainerQt::PluginContainerQt):
+ (PluginContainerQt::~PluginContainerQt):
+ (PluginContainerQt::on_clientClosed):
+ (PluginContainerQt::on_clientIsEmbedded):
+ (PluginContainerQt::redirectWheelEventsToParent):
+ (PluginContainerQt::x11Event):
+ (PluginContainerQt::focusInEvent):
+ * plugins/qt/PluginContainerQt.h:
+
+2009-04-22 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Maciej Stachowiak
+
+ <rdar://problem/6786961> - "Are you sure you want to resubmit this form?" nag displays twice.
+
+ For most loads, we were consulting the navigation policy delegate twice. Once from FrameLoader before
+ the load started and once from MainResourceLoader in its willSendRequest callback.
+
+ In the past we tried removing MainResourceLoader's call altogether. This caused a regression where urls
+ that redirect to a url handled by an external application would no longer work in Safari. It probably
+ also broke other WebKit apps in subtle ways.
+
+ Changing MainResourceLoader to make the check only on redirects fixes both bugs. We now only call the
+ policy delegate once for most standard loads, but we do correctly call it a second time for redirects.
+
+ Tests: http/tests/misc/policy-delegate-called-twice.html
+ http/tests/misc/redirect-to-external-url.html
+
+ * loader/MainResourceLoader.cpp:
+ (WebCore::MainResourceLoader::willSendRequest): Call the navigation policy delegate only for redirects.
+
+2009-04-22 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Fix for <rdar://problem/6800695>
+
+ Add a hack to only allow navigating (via a link from a http page)
+ to feed: urls (same for feeds: and feedsearch:) that map to http:
+ or https: via their nested protocol. This includes both feed://example.com
+ and feed:http://example.com.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::isFeedWithNestedProtocolInHTTPFamily):
+ (WebCore::FrameLoader::loadFrameRequest):
+
+2009-04-22 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Autogenerate the XMLHttpRequest constructor getter/setter for the
+ WorkerContext and remove the now no longer needed JSWorkerContextBase.lut.h
+ file.
+
+ * DerivedSources.make: Remove JSWorkerContextBase.lut.h
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+
+ * bindings/js/JSWorkerContextBase.cpp:
+ * bindings/js/JSWorkerContextBase.h: Remove code to support hand written
+ code for XMLHttpRequest constructor lookup and shadowing.
+
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::customGetOwnPropertySlot): Remove JSC prefixes.
+ (WebCore::JSWorkerContext::xmlHttpRequest): Added. Custom implementation of
+ cached constructor lookup.
+ * workers/WorkerContext.idl: Make the XMLHttpRequestConstructor accessor not
+ V8 specific.
+
+2009-04-22 Darin Adler <darin@apple.com>
+
+ * page/Navigator.idl: Touch this file to fix build since Geolocation
+ configuration was recently turned off.
+
+2009-04-22 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25322
+ Can't delete empty paragraph after a block image
+
+ Empty paragraph removal would have been handled by mergeParagraphs, but we stopped short
+ because of some code that avoided problems that would arise from Positions that would go
+ bad during deletion.
+
+ We have several checks that prevent us from using bad Positions, this one in particular
+ was added to avoid bad Positions that result from text removal. So, I removed the check
+ and started correctly updating m_downstreamEnd during text removal so that it doesn't go
+ bad. m_upstreamStart doesn't need to be updated during text removal, since only text
+ after it will ever be removed.
+
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::deleteTextFromNode):
+ (WebCore::DeleteSelectionCommand::handleGeneralDelete):
+ (WebCore::DeleteSelectionCommand::mergeParagraphs):
+
+2009-04-22 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6757346> SAP: Prevent default on mouseDown does not stop iframe from capturing subsequent mouse moves
+
+ Make mouseUp target the correct frame when the original
+ mousedown made the drag non-capturing.
+
+ * page/mac/EventHandlerMac.mm:
+ (WebCore::EventHandler::passSubframeEventToSubframe):
+
+2009-04-22 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6757346> SAP: Prevent default on mouseDown does not stop iframe from capturing subsequent mouse moves
+
+ This is the first step of allowing drag events to match the behaviour
+ of mouse move events when the default action of the initial mouse down
+ is prevented. Remaining issue is that the final mouse up event still
+ targets the original root frame.
+
+ Test: fast/events/mouse-drag-from-frame-to-other-frame.html
+
+ * page/mac/EventHandlerMac.mm:
+ (WebCore::EventHandler::passSubframeEventToSubframe):
+
+2009-04-22 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Adele Peterson
+
+ <rdar://problem/6702882> QT movie's video fails to be displayed after switching between tabs
+ <rdar://problem/6754957> Resizing Web browser window and hitting play will cause video blocks and artifacting
+
+ When in a media document, MediaPlayerPrivateQTKit uses a QTMovieView which may get
+ layer backing under some circumstances. However, drawing the view via
+ displayRectIgnoringOpacity:inContext: bypasses any layer setup that AppKit normally performs.
+ So when in the media document, we draw via displayRectIgnoringOpacity:.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::paint):
+
+2009-04-22 Timothy Hatcher <timothy@apple.com>
+
+ Fix a crash in Mail when forwarding a specific HTML email.
+ Caused by the fix for <rdar://problem/6512520> (r42096).
+ Unable to create a test case that works outside of Mail.
+
+ <rdar://problem/6796069>
+
+ Reviewed by Ada Chan.
+
+ * editing/markup.cpp:
+ (WebCore::createMarkup): Null check pastEnd before trying to
+ call Range::compareBoundaryPoints.
+
+2009-04-22 Sam Weinig <sam@webkit.org>
+
+ Rubber-stamped by Darin Adler.
+
+ Fix for <rdar://problem/6816957>
+ Turn off Geolocation by default
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2009-04-22 Eric Seidel <eric@webkit.org>
+
+ Rubber-stamped by David Hyatt.
+
+ Change RenderSVGImage to dump as RenderSVGImage instead of RenderImage
+
+ * rendering/RenderSVGImage.h:
+ (WebCore::RenderSVGImage::renderName):
+
+2009-04-21 Timothy Hatcher <timothy@apple.com>
+
+ Fix a crash on Gmail when they remove a "before unload" event listener when
+ it was never added to the pending map in the first place.
+
+ <rdar://problem/6814144>
+
+ Reviewed by Darin Adler.
+
+ * page/DOMWindow.cpp:
+ (WebCore::allowsPendingBeforeUnloadListeners): Renamed from shouldAddPendingBeforeUnloadListener.
+ (WebCore::DOMWindow::addEventListener): Call allowsPendingBeforeUnloadListeners now.
+ (WebCore::DOMWindow::removeEventListener): Call allowsPendingBeforeUnloadListeners before
+ removing the before unload listener.
+ (WebCore::DOMWindow::clearAttributeEventListener): Ditto.
+
+2009-04-22 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
+
+ Reviewed by Ariya Hidayat.
+
+ Made windowed plugins move/resize synchronized with the painting, so
+ that windowed plugins are not moved before the rest of the parent
+ frame during scrolling.
+
+ * plugins/qt/PluginContainerQt.cpp:
+ (PluginContainerQt::PluginContainerQt):
+ (PluginContainerQt::requestGeometry):
+ (PluginContainerQt::adjustGeometry):
+ * plugins/qt/PluginContainerQt.h:
+ * plugins/qt/PluginViewQt.cpp:
+ (WebCore::PluginView::updatePluginWidget):
+ (WebCore::PluginView::paint):
+
+2009-04-22 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Ariya Hidayat.
+
+ Fix various bugs in the X11 Qt plugin focus handling.
+
+ Notify the focus controller on activation/deactivation of the plugin and
+ set focus on the plugin's element when it receives the window system
+ focus.
+
+ * WebCore.pro: Added PluginContainerQt to the Qt build.
+ * plugins/PluginView.cpp:
+ (WebCore::PluginView::focusPluginElement): New helper function, moved from PluginViewWin.
+ * plugins/PluginView.h:
+ (WebCore::PluginView::parentFrame): Added parent frame accessor.
+ * plugins/qt/PluginContainerQt.cpp: Added.
+ (PluginContainerQt::PluginContainerQt):
+ (PluginContainerQt::focusInEvent): Set the focus controller active on focus in events.
+ (PluginContainerQt::focusOutEvent): Deactivate the focus controller when loosing the focus.
+ * plugins/qt/PluginContainerQt.h: Added.
+ * plugins/qt/PluginViewQt.cpp:
+ (WebCore::PluginView::init): Allocate a PluginContainerQt instead of QX11EmbedContainer.
+ * plugins/win/PluginViewWin.cpp:
+ (WebCore::PluginView::handleMouseEvent): Moved the code to set focus on the plugin element
+ to PluginView::focusPluginElement.
+
+2009-04-22 Tamas Szirbucz <szirbucz.tamas@stud.u-szeged.hu>
+
+ Reviewed by Ariya Hidayat.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25023
+ Delete reply in QNetworkReplyHandler::abort() to avoid leak.
+
+ * platform/network/qt/QNetworkReplyHandler.cpp:
+ (WebCore::QNetworkReplyHandler::abort):
+
+2009-04-21 Jon Honeycutt <jhoneycutt@apple.com>
+
+ Allow the UI delegate to control cursor-setting.
+
+ Reviewed by Ada Chan.
+
+ * page/Chrome.cpp:
+ (WebCore::Chrome::setCursor):
+ Pass the call to the client.
+
+ * page/Chrome.h:
+
+ * page/ChromeClient.h:
+ (WebCore::ChromeClient::setCursor):
+ Stubbed; returns false.
+
+ * platform/Cursor.h:
+ Define PlatformCursorHandle for each platform.
+
+ * platform/win/WidgetWin.cpp:
+ Reordered some includes. Added an include of Page.h.
+ (WebCore::Widget::setCursor):
+ Fixed a typo in the comment about ignoreNextSetCursor. Get the Page, and
+ call its Chrome's setCursor() method with the passed cursor. Fall back
+ to SetCursor() if the Page is not available.
+
+ * plugins/win/PluginViewWin.cpp:
+ (WebCore::PluginView::handleMouseEvent):
+ Remove an unused variable. Cleaned up some whitespace.
+
+2009-04-21 John Abd-El-Malek <jam@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ Add a method to purge the Chromium plugin list cache.
+ https://bugs.webkit.org/show_bug.cgi?id=25318
+
+ * plugins/chromium/PluginDataChromium.cpp:
+ (WebCore::resetChromiumPluginCache):
+
+2009-04-21 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix <https://bugs.webkit.org/show_bug.cgi?id=25164> / <rdar://problem/6786319>.
+
+ We need to ensure that XMLTokenizer sets the current DocLoader before calling in to
+ any libxml2 methods that may trigger a load. The presence of a DocLoader indicates
+ that the load was originated by WebCore's use of libxml2 and that we should enforce
+ the same-origin policy on it. XMLTokenizer::initializeParserContext,
+ XMLTokenizer::doWrite and XMLTokenizer::doEnd were three methods that were not setting
+ the current DocLoader when they should have.
+
+ The XMLTokenizerScope class is introduced to simplify the pattern of saving, setting and
+ restoring the current DocLoader and libxml2 error handlers. The DocLoader and error handlers
+ are saved and set when the scope is allocated, and restored to their previous values when
+ the scope is exited.
+
+ Test: http/tests/security/xss-DENIED-xml-external-entity.xhtml
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/XMLTokenizer.cpp:
+ * dom/XMLTokenizer.h:
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::matchFunc):
+ (WebCore::shouldAllowExternalLoad):
+ (WebCore::openFunc):
+ (WebCore::XMLTokenizer::doWrite):
+ (WebCore::XMLTokenizer::initializeParserContext):
+ (WebCore::XMLTokenizer::doEnd):
+ (WebCore::xmlDocPtrForString):
+ * dom/XMLTokenizerScope.cpp:
+ (WebCore::XMLTokenizerScope::XMLTokenizerScope):
+ (WebCore::XMLTokenizerScope::~XMLTokenizerScope):
+ * dom/XMLTokenizerScope.h:
+ * xml/XSLStyleSheet.cpp:
+ (WebCore::XSLStyleSheet::parseString):
+ * xml/XSLTProcessor.cpp:
+
+2009-04-21 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for <rdar://problem/5874009>
+ Add port 3659 (apple-sasl / PasswordServer) to the list of blocked ports.
+
+ * platform/network/ResourceHandle.cpp:
+ (WebCore::portAllowed):
+
+2009-04-21 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25320
+ Crash when changing block styles in a root that contains no visible content (but contains nodes with renderers)
+
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): If the enclosing block is the
+ root editable element and it contains no visible content, create a new block but don't try and move
+ content into it, since there's nothing for moveParagraphs to move.
+
+
+2009-04-21 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 25162: REGRESSION (r41176-r41242): Drag-selection above/below the line does not select to beginning/end
+ https://bugs.webkit.org/show_bug.cgi?id=25162
+ rdar://problem/6764354
+
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings): Initialize editing behavior to Mac-style for PLATFORM(MAC).
+ Later we may want to change this default to encompass other versions running on Mac.
+
+ * page/Settings.h: Added EditingBehavior, setEditingBehavior, editingBehavior, and
+ m_editingBehavior. Also moved m_maximumDecodedImageSize out of the middle of all
+ the bit fields.
+
+ * platform/graphics/IntPoint.h: Added a constructor to turn an IntSize into an IntPoint.
+ I'm not sure the distinction here is serving us well at the moment. When converting from
+ global to local coordinates you want to do IntPoint - IntPoint and have the result be
+ another IntPoint, not an IntSize. And so on.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::positionForPointRespectingEditingBoundaries): Changed to use pointers more and
+ separate coordinates less.
+ (WebCore::RenderBlock::positionForPointWithInlineChildren): Turned into a member function.
+ Added separate cases to support the Mac and Windows behavior.
+ (WebCore::RenderBlock::positionForPoint): Updated for the change above. Also moved the
+ computation of pointInContents closer to the place it's used.
+
+ * rendering/RenderBlock.h: Updated for the new private member function.
+
+2009-04-17 Timothy Hatcher <timothy@apple.com>
+
+ Change pending unload and beforeunload counts to store the listeners
+ in a single data structure that can be quickly iterated for dispatch.
+
+ <rdar://problem/6383352&6383379&6383940>
+
+ Reviewed by Darin Adler.
+
+ * WebCore.base.exp: Change what symbols are exported.
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::stopLoading): Remove count updating code
+ and move an if inside a block already checking m_frame->document().
+ * page/Chrome.cpp: Remove disableSuddenTermination/enableSuddenTermination.
+ * page/Chrome.h: Ditto.
+ * page/ChromeClient.h: Ditto.
+ * page/DOMWindow.cpp:
+ (WebCore::pendingUnloadEventListenerMap): Create a static map.
+ (WebCore::pendingBeforeUnloadEventListenerMap): Ditto.
+ (WebCore::addPendingEventListener): Add the event listener to the map.
+ (WebCore::removePendingEventListener): Remove the event listener from the map.
+ (WebCore::removePendingEventListeners): Remove all listeners for the window.
+ (WebCore::dispatchWindowEventToListeners): Dispatch the event to the given listeners.
+ (WebCore::DOMWindow::dispatchAllPendingBeforeUnloadEvents): Send the beforeunload event.
+ (WebCore::DOMWindow::pendingUnloadEventListeners): Return a count of pending listeners.
+ (WebCore::DOMWindow::dispatchAllPendingUnloadEvents): Send the unload event.
+ (WebCore::DOMWindow::~DOMWindow): Remove the window from both event listener maps.
+ (WebCore::DOMWindow::addEventListener): Call addPendingEventListener when needed.
+ (WebCore::DOMWindow::removeEventListener): Call removePendingEventListener when needed.
+ (WebCore::DOMWindow::removeAllEventListeners): Call removePendingEventListeners.
+ (WebCore::DOMWindow::removeInlineEventListenerForType): Call removePendingEventListener when needed.
+ * page/DOMWindow.h:
+ (WebCore::DOMWindow::frame): Changed to be const.
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::EventHandler): Remove count tracking code.
+ * page/EventHandler.h: Ditto.
+ * page/Page.cpp:
+ (WebCore::Page::Page): Ditto.
+ * page/Page.h: Ditto.
+
+2009-04-21 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19644
+ Text copied with Select All pastes with a indent but shouldn't
+ <rdar://problem/6102483>
+ Pasting the content of an HTML message in Mail causes addition nested <div> elements to be added
+
+ To improve selectall/copy/paste fidelity of certain pages, we began wrapping copied content with
+ a div that held properties and attributes from the fully selected body. To fix the above issues,
+ only do this if if the body has certain properties or attributes. We'll begin adding to this list as
+ necessary. For now it's just background colors and images. Tested copy/paste of nytimes, wired,
+ arstechnica, and several others.
+
+ Massive nesting can still happen, it will just be much less common.
+
+ * editing/markup.cpp:
+ (WebCore::createMarkup):
+
+2009-04-21 Peter Kasting <pkasting@google.com>
+
+ Reviewed by David Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25250
+ Allow platforms to snap the scroll thumb back to the drag origin
+ during a drag. Implement functions for Safari/Win and Chromium/Win
+ to do this snapping at distances approximating the native ones.
+
+ * platform/Scrollbar.cpp:
+ (WebCore::Scrollbar::Scrollbar):
+ (WebCore::Scrollbar::setValue):
+ (WebCore::Scrollbar::scroll):
+ (WebCore::Scrollbar::moveThumb):
+ (WebCore::Scrollbar::setCurrentPos):
+ (WebCore::Scrollbar::mouseMoved):
+ (WebCore::Scrollbar::mouseDown):
+ * platform/Scrollbar.h:
+ * platform/ScrollbarTheme.h:
+ (WebCore::ScrollbarTheme::shouldSnapBackToDragOrigin):
+ * platform/chromium/ScrollbarThemeChromium.h:
+ * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
+ (WebCore::ScrollbarThemeChromium::shouldSnapBackToDragOrigin):
+ * platform/chromium/ScrollbarThemeChromiumWin.cpp:
+ (WebCore::ScrollbarThemeChromium::shouldSnapBackToDragOrigin):
+ * platform/win/ScrollbarThemeWin.cpp:
+ (WebCore::ScrollbarThemeWin::shouldCenterOnThumb):
+ (WebCore::ScrollbarThemeWin::shouldSnapBackToDragOrigin):
+ * platform/win/ScrollbarThemeWin.h:
+
+2009-04-21 Adam Roben <aroben@apple.com>
+
+ Windows build fix
+
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::eventParameterName): Remove unreachable code when SVG is
+ enabled.
+
+2009-04-21 Kevin Ollivier <kevino@theolliviers.com>
+
+ !ENABLE(SVG) build fix.
+
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::eventParameterName):
+
+2009-04-21 Dave Moore <davemoore@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25309
+ Better use AtomicStrings when calling from the V8
+ bindings into WebCore code.
+
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ * bindings/v8/custom/V8HTMLCollectionCustom.cpp:
+ * bindings/v8/custom/V8HTMLFormElementCustom.cpp:
+ * bindings/v8/custom/V8HTMLFrameSetElementCustom.cpp:
+
+2009-04-21 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 25304: AX: Safari not identifying a secure text field
+ https://bugs.webkit.org/show_bug.cgi?id=25304
+
+ Secure text fields need to be able to return AXTitleUIElements.
+
+ Test: accessibility/secure-textfield-title-ui.html
+
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper accessibilityAttributeNames]):
+
+2009-04-21 Dan Bernstein <mitz@apple.com>
+
+ - fix the Tiger build
+
+ * page/mac/EventHandlerMac.mm:
+ (method_setImplementation):
+
+2009-04-21 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25271
+
+ Fix the build with disabled DOM storage or disabled database support.
+
+ * bindings/js/ScriptObjectQuarantine.cpp:
+ * bindings/js/ScriptObjectQuarantine.h:
+
+2009-04-21 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build fix.
+
+ Compile fix for r42633. const qualifier does not work
+ on a static method.
+
+ * dom/Document.h:
+ (WebCore::Document::isSVGDocument):
+
+2009-04-21 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler and John Sullivan.
+
+ - fix <rdar://problem/5914146> Crash at -[NSScrollView scrollWheel:]
+
+ -[NSScrollView scrollWheel:] runs a nested event-tracking run loop
+ in a mode that allows WebCore timers to fire and NSURLConnection
+ callbacks to be dispatched, which can release the NSScrollView and
+ cause it to be deallocated (one example is a DOM timer callback that
+ removes a subframe from the document). This leads to a crash in
+ -scrollView:.
+
+ The fix is to replace the implementation of -[NSScrollView scrollWheel:]
+ with one that optionally retains the receiver for the duration of the
+ call.
+
+ * page/mac/EventHandlerMac.mm:
+ (WebCore::nsScrollViewScrollWheelShouldRetainSelf): Added.
+ (WebCore::setNSScrollViewScrollWheelShouldRetainSelf): Added. Replaces
+ the implementation of -[NSScrollView scrollWheel:] with the
+ self-retaining one, and sets a static boolean that tells it whether to
+ retain the receiver around the call to the original implementation.
+ (WebCore::selfRetainingNSScrollViewScrollWheel): Added. If
+ setNSScrollViewScrollWheelShouldRetainSelf(true) was called and this
+ function is executing on the main thread, it retains the NSScrollView,
+ invokes the original -[NSScrollView scrollWheel:], then releases the
+ view. Otherwise it just calls through to the original implementation.
+ (WebCore::EventHandler::passWheelEventToWidget): Added calls to
+ setNSScrollViewScrollWheelShouldRetainSelf() around the call to
+ -scrollWheel:.
+
+2009-04-21 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Tiger crash fix: Put VM tags in their own header file, and fixed up the
+ #ifdefs so they're not used on Tiger.
+
+ * ForwardingHeaders/wtf/VMTags.h: Copied from WebCore/ForwardingHeaders/wtf/HashTraits.h.
+
+2009-04-21 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Based on a patch by Alp Toker.
+
+ Implement AtkComponent interface.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+ (core):
+
+2009-04-21 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Only implement AtkAction interface if we actually have an action.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-20 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25290
+ REGRESSION(r41732): Crash when constructing XMLHttpRequest in a detached document
+
+ Test: fast/dom/xmlhttprequest-constructor-in-detached-document.html
+
+ * bindings/js/JSAudioConstructor.cpp:
+ (WebCore::JSAudioConstructor::JSAudioConstructor):
+ * bindings/js/JSAudioConstructor.h:
+ * bindings/js/JSDOMGlobalObject.h:
+ (WebCore::getDOMConstructor):
+ * bindings/js/JSImageConstructor.cpp:
+ (WebCore::JSImageConstructor::JSImageConstructor):
+ * bindings/js/JSImageConstructor.h:
+ * bindings/js/JSMessageChannelConstructor.cpp:
+ (WebCore::JSMessageChannelConstructor::JSMessageChannelConstructor):
+ * bindings/js/JSMessageChannelConstructor.h:
+ * bindings/js/JSOptionConstructor.cpp:
+ (WebCore::JSOptionConstructor::JSOptionConstructor):
+ * bindings/js/JSOptionConstructor.h:
+ * bindings/js/JSXMLHttpRequestConstructor.cpp:
+ (WebCore::JSXMLHttpRequestConstructor::JSXMLHttpRequestConstructor):
+ * bindings/js/JSXMLHttpRequestConstructor.h:
+ Avoid accessing JSDOMGlobalObject via ScriptExecutionContext, since it may not
+ work during frame teardown.
+
+2009-04-20 Geoffrey Garen <ggaren@apple.com>
+
+ Rubber stamped by Darin Adler and Sam Weinig.
+
+ Renamed "*InlineEventListener*" => "*AttributeEventListener*", and
+ "isInline" => "isAttribute".
+
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::createJSAttributeEventListener):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSEventListener::JSEventListener):
+ (WebCore::JSEventListener::~JSEventListener):
+ (WebCore::JSEventListener::handleEvent):
+ (WebCore::JSEventListener::virtualisAttribute):
+ * bindings/js/JSEventListener.h:
+ (WebCore::JSEventListener::create):
+ (WebCore::JSEventListener::isAttribute):
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::createAttributeEventListener):
+ * bindings/js/JSLazyEventListener.h:
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * dom/Element.cpp:
+ (WebCore::Element::setWindowAttributeEventListener):
+ * dom/Element.h:
+ * dom/EventListener.h:
+ (WebCore::EventListener::isAttribute):
+ (WebCore::EventListener::virtualisAttribute):
+ * dom/Node.cpp:
+ (WebCore::Node::clearAttributeEventListener):
+ (WebCore::Node::setAttributeEventListener):
+ (WebCore::Node::getAttributeEventListener):
+ (WebCore::Node::onabort):
+ (WebCore::Node::setOnabort):
+ (WebCore::Node::onblur):
+ (WebCore::Node::setOnblur):
+ (WebCore::Node::onchange):
+ (WebCore::Node::setOnchange):
+ (WebCore::Node::onclick):
+ (WebCore::Node::setOnclick):
+ (WebCore::Node::oncontextmenu):
+ (WebCore::Node::setOncontextmenu):
+ (WebCore::Node::ondblclick):
+ (WebCore::Node::setOndblclick):
+ (WebCore::Node::onerror):
+ (WebCore::Node::setOnerror):
+ (WebCore::Node::onfocus):
+ (WebCore::Node::setOnfocus):
+ (WebCore::Node::oninput):
+ (WebCore::Node::setOninput):
+ (WebCore::Node::onkeydown):
+ (WebCore::Node::setOnkeydown):
+ (WebCore::Node::onkeypress):
+ (WebCore::Node::setOnkeypress):
+ (WebCore::Node::onkeyup):
+ (WebCore::Node::setOnkeyup):
+ (WebCore::Node::onload):
+ (WebCore::Node::setOnload):
+ (WebCore::Node::onmousedown):
+ (WebCore::Node::setOnmousedown):
+ (WebCore::Node::onmousemove):
+ (WebCore::Node::setOnmousemove):
+ (WebCore::Node::onmouseout):
+ (WebCore::Node::setOnmouseout):
+ (WebCore::Node::onmouseover):
+ (WebCore::Node::setOnmouseover):
+ (WebCore::Node::onmouseup):
+ (WebCore::Node::setOnmouseup):
+ (WebCore::Node::onmousewheel):
+ (WebCore::Node::setOnmousewheel):
+ (WebCore::Node::onbeforecut):
+ (WebCore::Node::setOnbeforecut):
+ (WebCore::Node::oncut):
+ (WebCore::Node::setOncut):
+ (WebCore::Node::onbeforecopy):
+ (WebCore::Node::setOnbeforecopy):
+ (WebCore::Node::oncopy):
+ (WebCore::Node::setOncopy):
+ (WebCore::Node::onbeforepaste):
+ (WebCore::Node::setOnbeforepaste):
+ (WebCore::Node::onpaste):
+ (WebCore::Node::setOnpaste):
+ (WebCore::Node::ondragenter):
+ (WebCore::Node::setOndragenter):
+ (WebCore::Node::ondragover):
+ (WebCore::Node::setOndragover):
+ (WebCore::Node::ondragleave):
+ (WebCore::Node::setOndragleave):
+ (WebCore::Node::ondrop):
+ (WebCore::Node::setOndrop):
+ (WebCore::Node::ondragstart):
+ (WebCore::Node::setOndragstart):
+ (WebCore::Node::ondrag):
+ (WebCore::Node::setOndrag):
+ (WebCore::Node::ondragend):
+ (WebCore::Node::setOndragend):
+ (WebCore::Node::onreset):
+ (WebCore::Node::setOnreset):
+ (WebCore::Node::onresize):
+ (WebCore::Node::setOnresize):
+ (WebCore::Node::onscroll):
+ (WebCore::Node::setOnscroll):
+ (WebCore::Node::onsearch):
+ (WebCore::Node::setOnsearch):
+ (WebCore::Node::onselect):
+ (WebCore::Node::setOnselect):
+ (WebCore::Node::onselectstart):
+ (WebCore::Node::setOnselectstart):
+ (WebCore::Node::onsubmit):
+ (WebCore::Node::setOnsubmit):
+ (WebCore::Node::onunload):
+ (WebCore::Node::setOnunload):
+ * dom/Node.h:
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplacementFragment::ReplacementFragment):
+ * html/HTMLBodyElement.cpp:
+ (WebCore::HTMLBodyElement::parseMappedAttribute):
+ * html/HTMLButtonElement.cpp:
+ (WebCore::HTMLButtonElement::parseMappedAttribute):
+ * html/HTMLElement.cpp:
+ (WebCore::HTMLElement::parseMappedAttribute):
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::parseMappedAttribute):
+ * html/HTMLFrameElementBase.cpp:
+ (WebCore::HTMLFrameElementBase::parseMappedAttribute):
+ * html/HTMLFrameSetElement.cpp:
+ (WebCore::HTMLFrameSetElement::parseMappedAttribute):
+ * html/HTMLImageElement.cpp:
+ (WebCore::HTMLImageElement::parseMappedAttribute):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::parseMappedAttribute):
+ * html/HTMLObjectElement.cpp:
+ (WebCore::HTMLObjectElement::parseMappedAttribute):
+ * html/HTMLScriptElement.cpp:
+ (WebCore::HTMLScriptElement::parseMappedAttribute):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::parseMappedAttribute):
+ * html/HTMLTextAreaElement.cpp:
+ (WebCore::HTMLTextAreaElement::parseMappedAttribute):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::mouseButtonListener):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::setAttributeEventListener):
+ (WebCore::DOMWindow::clearAttributeEventListener):
+ (WebCore::DOMWindow::getAttributeEventListener):
+ (WebCore::DOMWindow::onabort):
+ (WebCore::DOMWindow::setOnabort):
+ (WebCore::DOMWindow::onblur):
+ (WebCore::DOMWindow::setOnblur):
+ (WebCore::DOMWindow::onchange):
+ (WebCore::DOMWindow::setOnchange):
+ (WebCore::DOMWindow::onclick):
+ (WebCore::DOMWindow::setOnclick):
+ (WebCore::DOMWindow::ondblclick):
+ (WebCore::DOMWindow::setOndblclick):
+ (WebCore::DOMWindow::onerror):
+ (WebCore::DOMWindow::setOnerror):
+ (WebCore::DOMWindow::onfocus):
+ (WebCore::DOMWindow::setOnfocus):
+ (WebCore::DOMWindow::onkeydown):
+ (WebCore::DOMWindow::setOnkeydown):
+ (WebCore::DOMWindow::onkeypress):
+ (WebCore::DOMWindow::setOnkeypress):
+ (WebCore::DOMWindow::onkeyup):
+ (WebCore::DOMWindow::setOnkeyup):
+ (WebCore::DOMWindow::onload):
+ (WebCore::DOMWindow::setOnload):
+ (WebCore::DOMWindow::onmousedown):
+ (WebCore::DOMWindow::setOnmousedown):
+ (WebCore::DOMWindow::onmousemove):
+ (WebCore::DOMWindow::setOnmousemove):
+ (WebCore::DOMWindow::onmouseout):
+ (WebCore::DOMWindow::setOnmouseout):
+ (WebCore::DOMWindow::onmouseover):
+ (WebCore::DOMWindow::setOnmouseover):
+ (WebCore::DOMWindow::onmouseup):
+ (WebCore::DOMWindow::setOnmouseup):
+ (WebCore::DOMWindow::onmousewheel):
+ (WebCore::DOMWindow::setOnmousewheel):
+ (WebCore::DOMWindow::onreset):
+ (WebCore::DOMWindow::setOnreset):
+ (WebCore::DOMWindow::onresize):
+ (WebCore::DOMWindow::setOnresize):
+ (WebCore::DOMWindow::onscroll):
+ (WebCore::DOMWindow::setOnscroll):
+ (WebCore::DOMWindow::onsearch):
+ (WebCore::DOMWindow::setOnsearch):
+ (WebCore::DOMWindow::onselect):
+ (WebCore::DOMWindow::setOnselect):
+ (WebCore::DOMWindow::onsubmit):
+ (WebCore::DOMWindow::setOnsubmit):
+ (WebCore::DOMWindow::onunload):
+ (WebCore::DOMWindow::setOnunload):
+ (WebCore::DOMWindow::onbeforeunload):
+ (WebCore::DOMWindow::setOnbeforeunload):
+ (WebCore::DOMWindow::onwebkitanimationstart):
+ (WebCore::DOMWindow::setOnwebkitanimationstart):
+ (WebCore::DOMWindow::onwebkitanimationiteration):
+ (WebCore::DOMWindow::setOnwebkitanimationiteration):
+ (WebCore::DOMWindow::onwebkitanimationend):
+ (WebCore::DOMWindow::setOnwebkitanimationend):
+ (WebCore::DOMWindow::onwebkittransitionend):
+ (WebCore::DOMWindow::setOnwebkittransitionend):
+ * page/DOMWindow.h:
+ * svg/SVGElement.cpp:
+ (WebCore::SVGElement::parseMappedAttribute):
+ * svg/SVGElementInstance.cpp:
+ (WebCore::SVGElementInstance::onabort):
+ (WebCore::SVGElementInstance::setOnabort):
+ (WebCore::SVGElementInstance::onblur):
+ (WebCore::SVGElementInstance::setOnblur):
+ (WebCore::SVGElementInstance::onchange):
+ (WebCore::SVGElementInstance::setOnchange):
+ (WebCore::SVGElementInstance::onclick):
+ (WebCore::SVGElementInstance::setOnclick):
+ (WebCore::SVGElementInstance::oncontextmenu):
+ (WebCore::SVGElementInstance::setOncontextmenu):
+ (WebCore::SVGElementInstance::ondblclick):
+ (WebCore::SVGElementInstance::setOndblclick):
+ (WebCore::SVGElementInstance::onerror):
+ (WebCore::SVGElementInstance::setOnerror):
+ (WebCore::SVGElementInstance::onfocus):
+ (WebCore::SVGElementInstance::setOnfocus):
+ (WebCore::SVGElementInstance::oninput):
+ (WebCore::SVGElementInstance::setOninput):
+ (WebCore::SVGElementInstance::onkeydown):
+ (WebCore::SVGElementInstance::setOnkeydown):
+ (WebCore::SVGElementInstance::onkeypress):
+ (WebCore::SVGElementInstance::setOnkeypress):
+ (WebCore::SVGElementInstance::onkeyup):
+ (WebCore::SVGElementInstance::setOnkeyup):
+ (WebCore::SVGElementInstance::onload):
+ (WebCore::SVGElementInstance::setOnload):
+ (WebCore::SVGElementInstance::onmousedown):
+ (WebCore::SVGElementInstance::setOnmousedown):
+ (WebCore::SVGElementInstance::onmousemove):
+ (WebCore::SVGElementInstance::setOnmousemove):
+ (WebCore::SVGElementInstance::onmouseout):
+ (WebCore::SVGElementInstance::setOnmouseout):
+ (WebCore::SVGElementInstance::onmouseover):
+ (WebCore::SVGElementInstance::setOnmouseover):
+ (WebCore::SVGElementInstance::onmouseup):
+ (WebCore::SVGElementInstance::setOnmouseup):
+ (WebCore::SVGElementInstance::onmousewheel):
+ (WebCore::SVGElementInstance::setOnmousewheel):
+ (WebCore::SVGElementInstance::onbeforecut):
+ (WebCore::SVGElementInstance::setOnbeforecut):
+ (WebCore::SVGElementInstance::oncut):
+ (WebCore::SVGElementInstance::setOncut):
+ (WebCore::SVGElementInstance::onbeforecopy):
+ (WebCore::SVGElementInstance::setOnbeforecopy):
+ (WebCore::SVGElementInstance::oncopy):
+ (WebCore::SVGElementInstance::setOncopy):
+ (WebCore::SVGElementInstance::onbeforepaste):
+ (WebCore::SVGElementInstance::setOnbeforepaste):
+ (WebCore::SVGElementInstance::onpaste):
+ (WebCore::SVGElementInstance::setOnpaste):
+ (WebCore::SVGElementInstance::ondragenter):
+ (WebCore::SVGElementInstance::setOndragenter):
+ (WebCore::SVGElementInstance::ondragover):
+ (WebCore::SVGElementInstance::setOndragover):
+ (WebCore::SVGElementInstance::ondragleave):
+ (WebCore::SVGElementInstance::setOndragleave):
+ (WebCore::SVGElementInstance::ondrop):
+ (WebCore::SVGElementInstance::setOndrop):
+ (WebCore::SVGElementInstance::ondragstart):
+ (WebCore::SVGElementInstance::setOndragstart):
+ (WebCore::SVGElementInstance::ondrag):
+ (WebCore::SVGElementInstance::setOndrag):
+ (WebCore::SVGElementInstance::ondragend):
+ (WebCore::SVGElementInstance::setOndragend):
+ (WebCore::SVGElementInstance::onreset):
+ (WebCore::SVGElementInstance::setOnreset):
+ (WebCore::SVGElementInstance::onresize):
+ (WebCore::SVGElementInstance::setOnresize):
+ (WebCore::SVGElementInstance::onscroll):
+ (WebCore::SVGElementInstance::setOnscroll):
+ (WebCore::SVGElementInstance::onsearch):
+ (WebCore::SVGElementInstance::setOnsearch):
+ (WebCore::SVGElementInstance::onselect):
+ (WebCore::SVGElementInstance::setOnselect):
+ (WebCore::SVGElementInstance::onselectstart):
+ (WebCore::SVGElementInstance::setOnselectstart):
+ (WebCore::SVGElementInstance::onsubmit):
+ (WebCore::SVGElementInstance::setOnsubmit):
+ (WebCore::SVGElementInstance::onunload):
+ (WebCore::SVGElementInstance::setOnunload):
+ * svg/SVGSVGElement.cpp:
+ (WebCore::SVGSVGElement::parseMappedAttribute):
+
+2009-04-20 Geoffrey Garen <ggaren@apple.com>
+
+ Approved by Mark Rowe, Cameron Zwarich, Oliver Hunt, and Ojan Vafai.
+
+ Used svn merge to roll out revisions 42678, 42690, 42694, 42697 because
+ they broke the Tiger and Windows buildbots.
+
+ * css/html4.css:
+ * css/themeWin.css:
+ * platform/graphics/SimpleFontData.cpp:
+ * platform/graphics/SimpleFontData.h:
+ * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp:
+ * platform/graphics/chromium/SimpleFontDataLinux.cpp:
+ * platform/graphics/gtk/SimpleFontDataGtk.cpp:
+ * platform/graphics/gtk/SimpleFontDataPango.cpp:
+ * platform/graphics/mac/SimpleFontDataMac.mm:
+ * platform/graphics/qt/SimpleFontDataQt.cpp:
+ * platform/graphics/win/SimpleFontDataCGWin.cpp:
+ * platform/graphics/win/SimpleFontDataCairoWin.cpp:
+ * platform/graphics/win/SimpleFontDataWin.cpp:
+ * platform/graphics/wx/SimpleFontDataWx.cpp:
+ * rendering/RenderTextControl.cpp:
+ * rendering/RenderTextControlMultiLine.cpp:
+ * rendering/RenderTextControlSingleLine.cpp:
+
+2009-04-20 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Adam Roben.
+
+ One last loose end, discovered using COLLECT_ON_EVERY_ALLOCATION, for
+ https://bugs.webkit.org/show_bug.cgi?id=21260
+ Unbounded memory growth when churning elements with anonymous event handler functions
+
+ * bindings/js/JSSVGElementInstanceCustom.cpp:
+ (WebCore::JSSVGElementInstance::mark): Don't ASSERT that an ElementInstance's
+ correspondingElement has a JS wrapper. If a GC falls exactly between the
+ allocation of the ElementInstance wrapper and the correspondingElement
+ wrapper, the correspondingElement won't have a wrapper at the time we
+ mark the ElementInstance's wrapper.
+
+2009-04-20 Brady Eidson <beidson@apple.com>
+
+ Rubberstamped by Mark Rowe
+
+ Clean builds are broken on case-sensitive filesystems. Let's fix, shall we?
+
+ * platform/graphics/SimpleFontData.cpp: Remove "String.h" include. Ojan probably intended to include
+ "PlatformString.h" which was unnecessary because it is pulled in through other headers. This wasn't a
+ build failure on case-insensitive file systems because those systems would find the system <string.h>, averting
+ the warning.
+
+2009-04-20 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Last patch for https://bugs.webkit.org/show_bug.cgi?id=21260
+ Unbounded memory growth when churning elements with anonymous event handler functions
+
+ Converted "lazy" event listeners to be unprotected, just like all the others.
+
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSEventListener::JSEventListener):
+ (WebCore::JSEventListener::~JSEventListener):
+ (WebCore::JSEventListener::jsFunction):
+ (WebCore::JSEventListener::markJSFunction):
+ (WebCore::JSEventListener::handleEvent):
+ (WebCore::JSEventListener::virtualIsInline):
+ * bindings/js/JSEventListener.h:
+ (WebCore::JSEventListener::isInline): Merged JSAbstractEventListener
+ into JSEventListener. Now that the only difference between JSEventListener
+ and JSLazyEventListener is that JSLazyEventListener compiles lazily,
+ there's no need for an abstract base class.
+
+ * bindings/js/JSLazyEventListener.cpp: Converted JSLazyEventListener to
+ inherit from JSEventListener and match its un-GC-protected behavior.
+ (WebCore::JSLazyEventListener::JSLazyEventListener): ditto
+ (WebCore::JSLazyEventListener::parseCode): ditto
+ (WebCore::createInlineEventListener): When creating a lazy event listener,
+ ensure that the related node has a JS wrapper to mark the listener. Since
+ the parser makes these listeners, it's possible that no JS reference has
+ been made to the node yet.
+ * bindings/js/JSLazyEventListener.h: ditto
+
+ * dom/EventListener.h:
+ (WebCore::EventListener::clearJSFunction): Removed an usused function.
+
+2009-04-20 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25299
+ Don't bound caret to root line box if it is still inside its containing block
+
+ Can't yet write tests for behavior of non-standard caret widths.
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::localCaretRect):
+
+2009-04-20 Steve Falkenburg <sfalken@apple.com>
+
+ Separate JavaScriptCore.dll from WebKit.dll.
+ Slight performance improvement or no change on benchmarks.
+
+ Allows us to break a circular dependency between CFNetwork and WebKit on Windows,
+ and simplifies standalone JavaScriptCore builds.
Reviewed by Oliver Hunt.
- https://bugs.webkit.org/show_bug.cgi?id=24498
- Fix the Qt port to use the same algorithm for drawing dashed and dotted
- borders as the other ports. This makes the Qt port pixel-for-pixel perfect
- compared to border drawing with Apple's canonical mac port and much closer
- to konqueror and firefox behavior.
+ * config.h: Specify __declspec(dllexport/dllimport) appropriately when exporting data.
- * platform/graphics/qt/GraphicsContextQt.cpp:
- (WebCore::GraphicsContext::drawLine):
+2009-04-20 Anders Carlsson <andersca@apple.com>
-2009-03-09 Adam Treat <adam.treat@torchmobile.com>
+ Reviewed by Sam Weinig.
+
+ <rdar://problem/6722845> In the Cocoa event model, NPWindow's window field should be null
+
+ * bridge/npapi.h:
+ (_NPCocoaEvent::):
+ Add a CGContextRef member to the draw struct. Add an NPCoordinateSpace enum.
+
+ * plugins/npfunctions.h:
+ Add a prototype for NPN_ConvertPoint.
+
+2009-04-10 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Dan Bernstein.
+
+ Make textarea and text input metrics more closely match IEs.
+ https://bugs.webkit.org/show_bug.cgi?id=15312
+
+ This involves:
+ -set text input width to size*avgCharWidth + maxCharWidth - avgCharWidth
+ -set textarea width to cols*avgCharWidth
+ -Make default CSS match IEs
+ -Correctly initializing m_avgCharWidth and m_maxCharWidth for each platform and SVG.
+
+ Those values for textarea and inputs were derived by doing a ton of manual
+ testing of IE's width values for various textareas and fonts.
+
+ To get the average and max character width of a font, we do the following
+ for each platform:
+ -Win: TextMetrics expose avgCharWidth and maxCharWidth
+ -SVG: avgCharWidth = width of an '0', fallback on width of a space glyph, then m_xHeight
+ maxCharWidth = width of a 'W' for roman fonts, fallback on m_ascent
+ -Linux: avgCharWidth = width of an '0', fallback on m_xHeight
+ maxCharWidth = max of avgCharWidth and m_ascent
+ -Mac: look in the OS/2 table for avgCharWidth and grab the maxCharWidth off the font.
+ If either one is not there, then calculate the value using the Linux approach.
+
+ Linux ports could probably dig into the OS/2 table as well, but I'll leave
+ that up to them to implement.
+
+ Tests: fast/forms/text-control-intrinsic-widths.html
+ fast/forms/textarea-metrics.html
+ svg/custom/svg-fonts-in-text-controls.html
+
+ * css/html4.css:
+ * css/themeWin.css:
+ * platform/graphics/SimpleFontData.cpp:
+ (WebCore::SimpleFontData::SimpleFontData):
+ (WebCore::SimpleFontData::initCharWidths):
+ * platform/graphics/SimpleFontData.h:
+ (WebCore::SimpleFontData::maxCharWidth):
+ (WebCore::SimpleFontData::avgCharWidth):
+ * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/chromium/SimpleFontDataLinux.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/gtk/SimpleFontDataGtk.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/gtk/SimpleFontDataPango.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/mac/SimpleFontDataMac.mm:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/qt/SimpleFontDataQt.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/win/SimpleFontDataCGWin.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/win/SimpleFontDataCairoWin.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * platform/graphics/win/SimpleFontDataWin.cpp:
+ (WebCore::SimpleFontData::initGDIFont):
+ * platform/graphics/wx/SimpleFontDataWx.cpp:
+ (WebCore::SimpleFontData::platformCharWidthInit):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::calcPrefWidths):
+ * rendering/RenderTextControlMultiLine.cpp:
+ (WebCore::RenderTextControlMultiLine::createInnerTextStyle):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::preferredContentWidth):
+
+2009-04-17 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Remove m_absoluteBounds hack from SVG renderers and move outlineBoundsForRepaint into RenderSVGModelObject
+ https://bugs.webkit.org/show_bug.cgi?id=25276
+
+ This also exposed a buggy paint check in RenderSVGContainer::layout()
+ we should repaint if we are self painting OR if our kids changed, not AND.
+
+ Writing real outlineBoundsForRepaint required writing a mapLocalToContainer() function
+
+ No functional changes, thus no tests.
+
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::localToParentTransform):
+ (WebCore::RenderPath::layout):
+ * rendering/RenderPath.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::layout):
+ * rendering/RenderSVGContainer.h:
+ * rendering/RenderSVGModelObject.cpp:
+ (WebCore::RenderSVGModelObject::mapLocalToContainer):
+ (WebCore::RenderSVGModelObject::outlineBoundsForRepaint):
+ * rendering/RenderSVGModelObject.h:
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::layout):
+ (WebCore::RenderSVGRoot::paint):
+ (WebCore::RenderSVGRoot::localToParentTransformWithoutCSSParentOffset):
+ (WebCore::RenderSVGRoot::localToParentTransform):
+ (WebCore::RenderSVGRoot::computeRectForRepaint):
+ * rendering/RenderSVGRoot.h:
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::layout):
+
+2009-04-20 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Eric Seidel
+
+ https://bugs.webkit.org/show_bug.cgi?id=25282
+
+ outlineBoundsForRepaint() should compute a quad relative to the
+ repaintContainer. This fixes the repaint issues originally fixed in
+ https://bugs.webkit.org/show_bug.cgi?id=12885 for elements in compositing layers.
+ Failure was only apparent when building with ACCELERATED_COMPOSITING enabled.
+
+ Tests: compositing/repaint/content-into-overflow.html
+ compositing/repaint/overflow-into-content.html
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::outlineBoundsForRepaint):
+
+2009-04-20 Sam Weinig <sam@webkit.org>
+
+ Rubber-stamped by Tim Hatcher.
+
+ Add licenses for xcconfig files.
+
+ * Configurations/Base.xcconfig:
+ * Configurations/DebugRelease.xcconfig:
+ * Configurations/FeatureDefines.xcconfig:
+ * Configurations/Version.xcconfig:
+ * Configurations/WebCore.xcconfig:
+
+2009-04-20 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25261
+ Implement the V8 binding for DOMWindow.event similarly to JSC, by using
+ the custom getter boilerplate from the IDL file.
+ Also, stub out DOMWindow.crypto which is defined by the idl.
+
+ * bindings/v8/V8AbstractEventListener.cpp:
+ (WebCore::V8AbstractEventListener::invokeEventHandler):
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ (WebCore::ACCESSOR_GETTER):
+
+2009-04-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25243
+ Crash when data:// loads are cancelled
+
+ Properly handle cancellation of the load for data:// loads. This
+ fixes crashing in the followin test:
+
+ plugins/return-error-from-new-stream-callback-in-full-frame-plugin.html
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::parseDataUrl):
+
+2009-04-19 Dan Bernstein <mitz@apple.com>
+
+ - maybe fix release builds
+
+ * dom/ScriptElement.cpp:
+ (WebCore::ScriptElementData::notifyFinished):
+
+2009-04-19 Dan Bernstein <mitz@apple.com>
+
+ - not fix release builds
+
+ * dom/Document.cpp:
+ (WebCore::Document::executeScriptSoonTimerFired):
+
+2009-04-19 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ - fix <rdar://problem/6734365> REGRESSION eBay "Save this search" link
+ does nothing the second time search results are opened
+
+ Test: fast/dom/HTMLScriptElement/nested-execution.html
+
+ Instead of executing scripts as soon as they finish loading, which may
+ happen synchronously during execution of another script, defer their
+ execution until the next run loop iteration, using a queue that is
+ similar to the HTML5 notion of the "list of scripts that will execute as
+ soon as possible", and in my testing was consistent with how Firefox
+ behaved.
+
+ * dom/Document.cpp:
+ (WebCore::Document::Document): Initialize m_executeScriptSoonTimer.
+ (WebCore::Document::~Document): deref() script elements in
+ m_scriptsToExecuteSoon.
+ (WebCore::Document::executeScriptSoonTimerFired): Added. Executes the
+ scripts in m_scriptsToExecuteSoon and deref()s them.
+ (WebCore::Document::executeScriptSoon): Added. Appends to
+ m_scriptsToExecuteSoon and ref()s the script element, which keeps the
+ ScriptElementData alive as well.
+ * dom/Document.h:
+ * dom/ScriptElement.cpp:
+ (WebCore::ScriptElementData::ScriptElementData): Initialize m_requested.
+ (WebCore::ScriptElementData::requestScript): Set m_requested to true, to
+ prevent further load requests.
+ (WebCore::ScriptElementData::execute): Added. Moved the code from
+ notifyFinished() which should not execute synchronously here, to be
+ called by the Document on a 0-interval timer.
+ (WebCore::ScriptElementData::notifyFinished): Moved the code to
+ dispatch events and evaluate the script, which should not execute
+ synchronously, out of here.
+ (WebCore::ScriptElementData::ignoresLoadRequest): Changed to test for
+ m_requested instead of m_cachedScript, because the latter is cleared
+ before the script is evaluated.
+ * dom/ScriptElement.h:
+
+2009-04-19 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Antti Koivisto and Darin Adler.
+
+ <rdar://problem/6127705> Excessive memory consumption on image load failure
+
+ When we fail to decode an image we clear most of the image data, but not the
+ input data itself, which can be backed by a CFData object that itself holds onto
+ a few hundred Kbs of memory. This patch merely ensures that this buffer gets
+ cleared.
+
+ * loader/CachedImage.cpp:
+ (WebCore::CachedImage::error):
+
+2009-04-19 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Add hooks so sudden termination will not cause loss of icons or local storage.
+ rdar://problem/5951701
+
+ * loader/icon/IconDatabase.cpp: Marked various constants static to give them
+ internal linkage.
+ (WebCore::IconDatabase::IconDatabase): Added initial value for m_syncTimer.
+ Removed unneeded initial value for m_defaultIconRecord. Changed assertion to
+ work cross-platform.
+ (WebCore::IconDatabase::wakeSyncThread): Added disableSuddenTermination, so
+ we won't terminate until the sync thread has done its thing.
+ (WebCore::IconDatabase::scheduleOrDeferSyncTimer): Added disableSuddenTermination,
+ so we won't terminate if we have an outstanding sync timer.
+ (WebCore::IconDatabase::syncTimerFired): Added enableSuddenTermination, to
+ balance the one in scheduleOrDeferSyncTimer.
+ (WebCore::IconDatabase::syncThreadMainLoop): Added enableSuddenTermination, to
+ balance the one in wakeSyncThread.
+ (WebCore::IconDatabase::deleteAllPreparedStatements): Use clear() instead of set(0).
+
+ * loader/icon/IconDatabase.h: Use a Timer instead of an OwnPtr<Timer>.
+
+ * storage/LocalStorageArea.cpp:
+ (WebCore::LocalStorageArea::scheduleFinalSync): Added disableSuddenTermination.
+ (WebCore::LocalStorageArea::scheduleItemForSync): Ditto.
+ (WebCore::LocalStorageArea::scheduleClear): Ditto.
+ (WebCore::LocalStorageArea::syncTimerFired): Added a disableSuddenTermination if
+ we schedule a performSync callback for later and an unconditional
+ enableSuddenTermination to balance the ones in the schedule calls above.
+ (WebCore::LocalStorageArea::sync): Factored out the work of the sync function so it
+ can continue to use early return idiom.
+ (WebCore::LocalStorageArea::performSync): Added a call to enableSuddenTermination.
+
+ * storage/LocalStorageArea.h: Added declaration of the sync function.
+
+2009-04-19 David Kilzer <ddkilzer@apple.com>
+
+ Make FEATURE_DEFINES completely dynamic
+
+ Reviewed by Darin Adler.
+
+ Make FEATURE_DEFINES depend on individual ENABLE_FEATURE_NAME
+ variables for each feature, making it possible to remove all
+ knowledge of FEATURE_DEFINES from build-webkit.
+
+ * Configurations/FeatureDefines.xcconfig: Extract a variable
+ from FEATURE_DEFINES for each feature setting.
+
+2009-04-18 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ More fix for https://bugs.webkit.org/show_bug.cgi?id=21260
+ Unbounded memory growth when churning elements with anonymous event handler functions
+
+ Removed a little more complexity from event handler creation and destruction.
+
+ Removed the jsProtectedEventListeners, jsProtectedInlineEventListeners,
+ and jsInlineEventListeners maps, and all the code for managing them.
+
+ ProtectedEventListeners don't exist anymore, so they're easy to nix.
+
+ Inline EventListeners do still exist, but there's no reason to track
+ them in a map. The map exists to enable 'removeEventListener' to associate
+ a unique JSEventListener with a given JavaScript function. But the
+ 'removeEventListener' API only works with non-inline event listeners!
+
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::~JSDOMGlobalObject):
+ (WebCore::JSDOMGlobalObject::findJSEventListener):
+ (WebCore::JSDOMGlobalObject::findOrCreateJSEventListener):
+ (WebCore::JSDOMGlobalObject::createJSInlineEventListener):
+ * bindings/js/JSDOMGlobalObject.h:
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSEventListener::JSEventListener):
+ (WebCore::JSEventListener::clearJSFunctionInline):
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::JSLazyEventListener::~JSLazyEventListener):
+ (WebCore::JSLazyEventListener::parseCode):
+ * bindings/scripts/CodeGeneratorJS.pm:
+
+2009-04-18 Dan Bernstein <mitz@apple.com>
+
+ - try to fix the Windows build
+
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::characterAfter):
+
+2009-04-18 Dan Bernstein <mitz@apple.com>
+
+ - revert the previous change, which was to a file that the Windows
+ port does not even use
+
+ * icu/unicode/utf16.h:
+
+2009-04-18 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Geoffrey Garen.
+
+ - try to fix the Windows build
+
+ * icu/unicode/utf16.h:
+
+2009-04-18 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Antti Koivisto.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25066
+
+ When a <video> element gained a RenderLayer via opacity, reflection etc., the
+ layer hierarchy was not correctly updated because RenderMedia skipped a level
+ when asked for its children; it skipped m_controlsShadowRoot's renderer, which
+ actually has a layer.
+
+ Test: fast/layers/video-layer.html
+
+ * rendering/MediaControlElements.cpp:
+ (WebCore::MediaControlShadowRootElement::MediaControlShadowRootElement):
+ Don't manually call setParent() on the renderer. It will happen later
+ as a result of addChild().
+
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::createControlsShadowRoot):
+ Add m_controlsShadowRoot's renderer as a child.
+
+ * rendering/RenderMedia.h:
+ (WebCore::RenderMedia::children):
+ Now maintain a RenderObjectChildList, m_children, and remove the unneeded
+ removeChild() method. Make the two children() methods inline.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::moveLayers):
+ Assert if moveLayers() is called with an oldParent that is not the
+ layer's actual parent (which would have revealed this bug).
+
+2009-04-18 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Fixed a layout test failure, caused by my last check-in
+ (fast/dom/script-element-gc.html).
+
+ * bindings/js/JSDOMBinding.cpp:
+ (WebCore::isObservableThroughDOM):
+ * html/HTMLScriptElement.h:
+ (WebCore::HTMLScriptElement::haveFiredLoadEvent): Treat script elements
+ just like image elements: if a script element is loading, mark its JS
+ wrapper, even if the element is not in the document.
+
+2009-04-18 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25170
+ Upstream V8WorkerCustom.cpp and V8WorkerContextCustom.cpp for V8 bindings.
+
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::WorkerContextExecutionProxy::findOrCreateEventListener):
+ * bindings/v8/WorkerContextExecutionProxy.h:
+ * bindings/v8/custom/V8WorkerContextCustom.cpp: Added.
+ * bindings/v8/custom/V8WorkerCustom.cpp: Added.
+
+2009-04-18 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/post_bug.cg://bugs.webkit.org/show_bug.cgi?id=25167
+ Change createHiddenXHRDependency and removeHiddenXHRDependency so that they can be used by other custom code in V8 bindings.
+
+ * bindings/v8/V8Utilities.cpp: Renamed from WebCore/bindings/v8/V8XMLHttpRequestUtilities.cpp.
+ (WebCore::createHiddenDependency):
+ (WebCore::removeHiddenDependency):
+ * bindings/v8/V8Utilities.h: Renamed from WebCore/bindings/v8/V8XMLHttpRequestUtilities.h.
+ * bindings/v8/custom/V8XMLHttpRequestCustom.cpp:
+ (WebCore::ACCESSOR_SETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8XMLHttpRequestUploadCustom.cpp:
+ (WebCore::ACCESSOR_SETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-04-18 Drew Wilson <amw@apple.com>
+
+ <rdar://problem/6781407> VisiblePosition.characterAfter should return UChar32
+
+ Reviewed by Dan Bernstein.
+
+ No test case since there is no change in behavior.
+
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::characterAfter): Now handles surrogate
+ pairs correctly and returns a UChar32.
+ * editing/VisiblePosition.h:
+ (WebCore::VisiblePosition::characterBefore): Now returns a UChar32.
+ * editing/visible_units.cpp:
+ (WebCore::endOfFirstWordBoundaryContext): Renamed
+ firstNonComplexContextLineBreak() to this. Changed it to use the
+ generic requiresContextForWordBoundary() instead of
+ hasLineBreakingPropertyComplexContext().
+ (WebCore::startOfLastWordBoundaryContext): Replaces
+ lastNonComplexContextLineBreak(), but returns the offset of
+ the character after the last character that does not require
+ context for word breaking. Also changed to use
+ requiresContextForWordBoundary().
+ (WebCore::previousBoundary): Updated for the above changes in
+ names and semantics, and changed to use
+ requiresContextForWordBoundary().
+ (WebCore::nextBoundary): Ditto.
+ (WebCore::startWordBoundary): Ditto.
+ (WebCore::endWordBoundary): Ditto.
+ (WebCore::previousWordPositionBoundary): Ditto.
+ (WebCore::nextWordPositionBoundary): Ditto.
+ * platform/text/TextBoundaries.h:
+ (WebCore::requiresContextForWordBoundary): Added.
+ * platform/text/mac/TextBoundaries.mm:
+
+2009-04-18 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Fixed <rdar://problem/6797442> | https://bugs.webkit.org/show_bug.cgi?id=25285
+ REGRESSION (r42569): Profiles cannot be selected in inspector profiler
+
+ EventListeners are shared; RegisteredEventListeners are not. Therefore,
+ when a node wrapper needs to invalidate the node's JS event listeners,
+ it should invalidate its RegisteredEventListeners, not its EventListeners.
+ Otherwise, it might invalidate an EventListener shared by another node.
+
+ * dom/RegisteredEventListener.h:
+ (WebCore::invalidateEventListeners): ditto
+
+2009-04-18 Pierre d'Herbemont <pdherbemont@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ <rdar://problem/6781295> video.buffered and video.seekable are not
+ the same. video.buffered should return only what is buffered and
+ not what is seekable
+
+ * WebCore.base.exp: Added wkQTMovieMaxTimeSeekable.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::maxTimeSeekable): Return wkQTMovieMaxTimeSeekable.
+
+ * platform/mac/WebCoreSystemInterface.h: Add wkQTMovieMaxTimeSeekable.
+ * platform/mac/WebCoreSystemInterface.mm: Ditto.
+
+2009-04-18 Pierre d'Herbemont <pdherbemont@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ <rdar://problem/6747241> work around QTKit no longer reaching
+ QTMovieLoadStateComplete
+
+ * WebCore.base.exp: Export wkQTMovieMaxTimeLoadedChangeNotification.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::createQTMovie): observe QTMovieMaxTimeLoadedChangeNotification.
+ (WebCore::MediaPlayerPrivate::updateStates): compare duuration() with maxTimeLoaded() instead of
+ using QTMovieLoadStateComplete to determine if a movie are fully loaded.
+
+ * platform/mac/WebCoreSystemInterface.h: Add wkQTMovieMaxTimeLoadedChangeNotification.
+ * platform/mac/WebCoreSystemInterface.mm: Ditto.
+
+2009-04-18 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
Reviewed by George Staikos.
- https://bugs.webkit.org/show_bug.cgi?id=24463
- WebCore::qstring is detaching and copying twice for every single
- WebCore::TextRun that is processed and drawn. This elevates this method
- to one of the top-ten most expensive methods in all of QtWebKit according
- to profiling. This changes the method so that QString only detaches
- when absolutely necessary.
+ Make WML work again, most regressions test were failing.
- * platform/graphics/qt/FontQt.cpp:
- (WebCore::qstring):
- (WebCore::fixSpacing):
- (WebCore::Font::drawComplexText):
- (WebCore::Font::floatWidthForComplexText):
- (WebCore::Font::offsetForPositionForComplexText):
- (WebCore::Font::selectionRectForComplexText):
+ * dom/Document.cpp: Be sure to create WML elements in WML namespace. Otherwhise hasTagName() comparisions fail.
+ (WebCore::Document::createElement):
+ * wml/WMLCardElement.cpp: Add ASSERT(hasTagName(cardTag)) to catch errors like this in future.
+ (WebCore::WMLCardElement::WMLCardElement):
+ * wml/WMLTagNames.in: Wrap comment in #if 0/#endif blocks, to silence the generation script.
-2009-02-04 Simon Hausmann <simon.hausmann@nokia.com>
+2009-04-17 Justin Garcia <justin.garcia@apple.com>
- Unreviewed Qt build fix.
+ Reviewed by Dan Bernstein.
- Changed ASSERT(image) to ASSERT(!image.isNull()).
+ https://bugs.webkit.org/show_bug.cgi?id=25277
+ If there is no line wrapping, a caret can leave its containing block but it shouldn't leave its root line box
+
+ Also added code to handle a caret wider than one pixel.
+
+ Added fast/inline/25277.html and fast/inline/25277-2.html
- * platform/graphics/qt/ImageBufferQt.cpp:
- (WebCore::ImageBuffer::getImageData):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::localCaretRect): Distribute a caret's width to either side of the offset,
+ so that a caret between two characters doesn't hang over one character more than the other.
+ If there is no wrapping, the caret can leave its containing block, but not its root line box.
-2009-02-03 Dirk Schulze <krit@webkit.org>
+2009-04-17 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ More fix for https://bugs.webkit.org/show_bug.cgi?id=21260
+ Unbounded memory growth when churning elements with anonymous event handler functions
+
+ Some refactoring of "inline" event listeners.
+
+ Renames:
+ dispatchEventForType => dispatchEvent
+ setWindowInlineEventListenerForTypeAndAttribute => setWindowInlineEventListener
+ removeInlineEventListenerForType => clearInlineEventListener
+ setInlineEventListenerForType => setInlineEventListener
+ inlineEventListenerForType => getInlineEventListener
+
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::eventParameterName):
+ (WebCore::JSLazyEventListener::JSLazyEventListener):
+ (WebCore::createInlineEventListener):
+ * bindings/js/JSLazyEventListener.h: Added two helper functions for
+ creating "inline" event listeners. These replace Document::createEventListener,
+ and abstract the creation of JS event listeners for DOM attributes out
+ of the DOM. Removed legacy JSProtectedEventListener constructor code for
+ adding the event listener's function to a map, since lazy event listeners
+ don't have functions at construction time.
+
+ * dom/Document.cpp:
+ (WebCore::Document::setFocusedNode):
+ * dom/Document.h:
+ (WebCore::Document::isSVGDocument):
+ * dom/Element.cpp:
+ (WebCore::Element::setWindowInlineEventListener):
+ * dom/Element.h: Updated for renames. Nixed Document::createEventListener,
+ mentioned above. Moved setWindowInlineEventListenerForTypeAndAttribute
+ to Element, for simplicity.
+
+ * dom/InputElement.cpp:
+ (WebCore::InputElement::setValueFromRenderer):
+ * dom/Node.cpp:
+ (WebCore::Node::dispatchFocusEvent):
+ (WebCore::Node::dispatchBlurEvent):
+ (WebCore::Node::dispatchEvent):
+ (WebCore::Node::clearInlineEventListener):
+ (WebCore::Node::setInlineEventListener):
+ (WebCore::Node::getInlineEventListener):
+ (WebCore::Node::onabort):
+ (WebCore::Node::setOnabort):
+ (WebCore::Node::etc.):
+ * dom/Node.h: Updated for renames.
+
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplacementFragment::ReplacementFragment): Updated for renames.
+
+ Updated these files for renames, and to use the new createInlineEventListener
+ helper function:
+
+ * html/HTMLBodyElement.cpp:
+ (WebCore::HTMLBodyElement::parseMappedAttribute):
+ * html/HTMLButtonElement.cpp:
+ (WebCore::HTMLButtonElement::parseMappedAttribute):
+ * html/HTMLElement.cpp:
+ (WebCore::HTMLElement::parseMappedAttribute):
+ * html/HTMLFormControlElement.cpp:
+ (WebCore::HTMLFormControlElement::onChange):
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::prepareSubmit):
+ (WebCore::HTMLFormElement::reset):
+ (WebCore::HTMLFormElement::parseMappedAttribute):
+ * html/HTMLFrameElementBase.cpp:
+ (WebCore::HTMLFrameElementBase::parseMappedAttribute):
+ * html/HTMLFrameSetElement.cpp:
+ (WebCore::HTMLFrameSetElement::parseMappedAttribute):
+ * html/HTMLImageElement.cpp:
+ (WebCore::HTMLImageElement::parseMappedAttribute):
+ * html/HTMLImageLoader.cpp:
+ (WebCore::HTMLImageLoader::dispatchLoadEvent):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::parseMappedAttribute):
+ (WebCore::HTMLInputElement::onSearch):
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::loadInternal):
+ * html/HTMLObjectElement.cpp:
+ (WebCore::HTMLObjectElement::parseMappedAttribute):
+ * html/HTMLScriptElement.cpp:
+ (WebCore::HTMLScriptElement::parseMappedAttribute):
+ (WebCore::HTMLScriptElement::dispatchLoadEvent):
+ (WebCore::HTMLScriptElement::dispatchErrorEvent):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::parseMappedAttribute):
+ * html/HTMLTextAreaElement.cpp:
+ (WebCore::HTMLTextAreaElement::parseMappedAttribute):
+ * html/HTMLTokenizer.cpp:
+ (WebCore::HTMLTokenizer::notifyFinished):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::mouseButtonListener):
+ * page/DOMWindow.cpp:
+ * page/DOMWindow.h:
+ (WebCore::DOMWindow::eventListeners):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::canMouseDownStartSelect):
+ (WebCore::EventHandler::canMouseDragExtendSelect):
+ (WebCore::EventHandler::sendScrollEvent):
+ * page/Page.cpp:
+ (WebCore::networkStateChanged):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::valueChanged):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::selectionChanged):
+ * svg/SVGElement.cpp:
+ (WebCore::SVGElement::parseMappedAttribute):
+ * svg/SVGElementInstance.cpp:
+ * svg/SVGImageLoader.cpp:
+ (WebCore::SVGImageLoader::dispatchLoadEvent):
+ * svg/SVGSVGElement.cpp:
+ (WebCore::SVGSVGElement::parseMappedAttribute):
+ * svg/SVGScriptElement.cpp:
+ (WebCore::SVGScriptElement::dispatchErrorEvent):
+ * wml/WMLInputElement.cpp:
+ (WebCore::WMLInputElement::defaultEventHandler):
+
+2009-04-17 David Kilzer <ddkilzer@apple.com>
+
+ Simplify FEATURE_DEFINES definition
+
+ Reviewed by Darin Adler.
+
+ This moves FEATURE_DEFINES and its related ENABLE_FEATURE_NAME
+ variables to their own FeatureDefines.xcconfig file. It also
+ extracts a new ENABLE_GEOLOCATION variable so that
+ FEATURE_DEFINES only needs to be defined once.
+
+ * Configurations/FeatureDefines.xcconfig: Added.
+ * Configurations/WebCore.xcconfig: Removed definition of
+ ENABLE_SVG_DOM_OBJC_BINDINGS and FEATURE_DEFINES. Added include
+ of FeatureDefines.xcconfig.
+ * WebCore.xcodeproj/project.pbxproj: Added
+ FeatureDefines.xcconfig file.
+ * bindings/scripts/CodeGeneratorObjC.pm: When creating a list of
+ command-line macro definitions, split on one-or-more spaces
+ instead of a single space since the FEATURE_DEFINES macro may
+ now contain more than one space between macros if some macros
+ aren't defined.
+
+2009-04-17 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Mark Rowe
+
+ <rdar://problem/6786999> Tiger WebKit shouldn't try to POST on back/forward without nagging.
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::willLoadFromCache):
+
+2009-04-17 Darin Adler <darin@apple.com>
+
+ Reviewed by Timothy Hatcher.
+
+ Added sudden termination functions that can be called without involving
+ the page or client.
+
+ * GNUmakefile.am: Added SuddenTermination.h.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto. Also added SuddenTermination.mm.
+
+ * platform/SuddenTermination.h: Added.
+ * platform/mac/SuddenTermination.mm: Added.
+
+2009-04-17 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Move more code into RenderSVGModelObject
+
+ needsLayer() already returns false from RenderSVGModelObject
+ lineHeight and baselinePosition are from days of RenderPath having RenderBox parents.
+
+ I also added comments to explain how focus rings work (now that I understand)
+ I got rid of two more uses of m_absoluteBounds (nearly dead!)
+
+ * rendering/RenderPath.cpp:
+ * rendering/RenderPath.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::paint):
+ (WebCore::RenderSVGContainer::addFocusRingRects):
+ * rendering/RenderSVGContainer.h:
+ * rendering/RenderSVGModelObject.cpp:
+ (WebCore::RenderSVGModelObject::absoluteRects):
+ (WebCore::RenderSVGModelObject::absoluteQuads):
+ * rendering/RenderSVGModelObject.h:
+
+2009-04-16 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Adele Peterson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25238
+ Invalidate the hovered scrollbar part when resetting the pressed part,
+ since once there is no pressed part we can draw a hovered state.
+
+ * platform/Scrollbar.cpp:
+ (WebCore::Scrollbar::setHoveredPart):
+ (WebCore::Scrollbar::setPressedPart):
+
+2009-04-16 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25223
+ REGRESSION: Back button after form submission to the same URL fails to navigate.
+
+ Test: http/tests/navigation/post-goback-same-url.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadItem): Check if the page we are leaving has
+ FormData.
+
+2009-04-17 Nikolas Zimmermann <nikolas.zimmerman@torchmobile.com>
+
+ Not reviewed. Fix WML enabled builds.
+
+ * rendering/RenderTableRow.cpp: Remove dead code, which is no longer necessary.
+ (WebCore::RenderTableRow::addChild):
+ * wml/WMLInputElement.cpp: Apply same fix HTMLInputElement received. Covert RenderObject's to RenderTextControl where needed.
+ (WebCore::WMLInputElement::defaultEventHandler):
+
+2009-04-17 Pierre d'Herbemont <pdherbemont@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24849
+
+ Add support for the media element 'played' attribute.
+ This involves support of "normalized TimeRanges" as described by
+ the spec.
+
+ Test: media/video-played.html
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::HTMLMediaElement): Renamed
+ m_currentTimeDuringSeek->m_lastSeekTime. Added m_playing and m_playedTimeRanges.
+ (WebCore::HTMLMediaElement::loadInternal): Reset m_playing, m_lastSeekTime, and
+ m_playedTimeRanges
+ (WebCore::HTMLMediaElement::seek): Set current time to m_playedTimeRanges
+ (WebCore::HTMLMediaElement::currentTime): m_currentTimeDuringSeek -> m_lastSeekTime
+ (WebCore::HTMLMediaElement::played): Returns m_playedTimeRanges.
+ (WebCore::HTMLMediaElement::updatePlayState): Add the new played time ranges when pausing.
+ Set the m_playing flag.
+ * html/HTMLMediaElement.h:
+
+ * html/TimeRanges.cpp:
+ (TimeRanges::add): Merge range(s) if overlap.
+ * html/TimeRanges.h: Add various helpers (below).
+ (WebCore::TimeRanges::Range::isPointInRange): Added.
+ (WebCore::TimeRanges::Range::isOverlappingRange): Ditto.
+ (WebCore::TimeRanges::Range::unionWithOverlappingRange): Ditto.
+ (WebCore::TimeRanges::Range::isBeforeRange): Ditto.
+
+2009-04-17 Darin Adler <darin@apple.com>
+
+ Reviewed by Antti Koivisto.
+
+ Bug 25210: don't use ObjC methods to wrap/unwrap DOM objects with ObjC
+ https://bugs.webkit.org/show_bug.cgi?id=25210
+
+ * WebCore.base.exp: Export the core and kit function overloads that are used
+ in WebKit. Also resorted this file.
+
+ * WebCore.xcodeproj/project.pbxproj: Re-added DOMHTMLCanvasElement.h to fix
+ a strange problem with the file type.
+
+ * bindings/objc/DOM.mm: Removed the many extraneous includes. Added new includes
+ so we can use and implement the new core and kit functions. Import DOMInternal.h
+ first so it can do its public/private magic.
+ (-[DOMNode _rootObject]): Changed to use early-return style.
+ (kitClass): Added. Tells the wrapper generator what kind of node class to create
+ to wrap DOM nodes. This has the code that used to be in the _wrapNode method.
+ (kit): Added. Takes an EventTarget and makes the appropriate type of wrapper,
+ dpending on whether it's a Node or an SVGElementInstance. This replace methods
+ that used to be on both of those classes.
+ (-[DOMNode boundingBox]): Changed to use early return, and the core function.
+ (-[DOMNode lineBoxRects]): Ditto.
+ (-[DOMNode renderedImage]): Ditto.
+ (-[DOMRange boundingBox]): Ditto.
+ (-[DOMRange lineBoxRects]): Ditto.
+ (-[DOMElement image]): Ditto.
+ (-[DOMElement _font]): Ditto.
+ (-[DOMElement _imageTIFFRepresentation]): Ditto.
+ (-[DOMElement _getURLAttribute:]): Ditto.
+ (-[DOMElement isFocused]): Ditto.
+ (kit): Hand-wrote the version of this for NodeFilter, since it's a protocol,
+ not a class in the binding.
+ (core): Ditto.
+ (-[DOMNodeFilter acceptNode:]): Use core.
+
+ * bindings/objc/DOMAbstractView.mm:
+ (-[DOMAbstractView document]): Use kit.
+ (-[DOMAbstractView _disconnectFrame]): Call removeDOMWrapper, which is no longer
+ in the WebCore namespace, since it's headed for WebKit in the future.
+ (core): Hand-wrote the version of this for DOMAbstractView.mm, since we store
+ a pointer to the Frame, not the DMWindow.
+ (kit): Ditto.
+
+ * bindings/objc/DOMCSS.mm:
+ (kitClass): Added. Tells the wrapper generator what kind of node class to create
+ to wrap CSS objects. This has the code that used to be in the _wrapStyleSheet,
+ _wrapCSSRule, and _wrapCSSValue methods.
+
+ * bindings/objc/DOMEvents.mm:
+ (kitClass): Added. Tells the wrapper generator what kind of node class to create
+ to wrap event objects. This has the code that used to be in the _wrapEvent methods.
+
+ * bindings/objc/DOMHTML.mm:
+ (-[DOMHTMLDocument createDocumentFragmentWithMarkupString:baseURL:]): Use kit and core.
+ (-[DOMHTMLDocument createDocumentFragmentWithText:]): Ditto.
+ (-[DOMHTMLDocument _createDocumentFragmentWithMarkupString:baseURLString:]): Ditto.
+ (-[DOMHTMLInputElement _rectOnScreen]): Ditto.
+ (-[DOMHTMLInputElement _replaceCharactersInRange:withString:selectingFromIndex:]): Ditto.
+ (-[DOMHTMLInputElement _selectedRange]): Ditto.
+ (-[DOMHTMLInputElement _setAutofilled:]): Ditto.
+ (-[DOMHTMLSelectElement _activateItemAtIndex:]): Ditto.
+ (-[DOMHTMLInputElement _isEdited]): Ditto.
+ (-[DOMHTMLTextAreaElement _isEdited]): Ditto.
+ (kitClass): Added. Gives HTMLOptionCollection objects an appropriate wrapper.
+
+ * bindings/objc/DOMInternal.h: Removed most of the imports. There's no reason
+ to have this header include all the other internal DOM headers. Removed unneeded
+ interfaces, including the redeclaration of _init in DOMObject, since it's already
+ inherited from WebScriptObject. Moved all the functions out of the WebCore
+ namespace since this code is destined for WebKit, which doesn't use a namespace.
+ Added kit and core functions for the two classes that live in this header.
+
+ * bindings/objc/DOMInternal.mm:
+ (-[WebScriptObject _initializeScriptDOMNodeImp]): Use core.
+
+ * bindings/objc/DOMObject.h: Made the _internal field be private instead of
+ protected. This also allows the "#define private public" trick to be used to
+ make the field accessible inside the bindings code.
+
+ * bindings/objc/DOMObject.mm:
+ (-[DOMObject dealloc]): Updated for namespace change.
+ (-[DOMObject sheet]): Use core and kit functions.
+
+ * bindings/objc/DOMRGBColor.mm:
+ (-[DOMRGBColor dealloc]): Updated for namespace change.
+ (-[DOMRGBColor red]): Use kit function.
+ (-[DOMRGBColor green]): Ditto.
+ (-[DOMRGBColor blue]): Ditto.
+ (-[DOMRGBColor alpha]): Ditto.
+ (core): Added. Replaces the _RGBColor method.
+ (kit): Added. Replaces the _wrapRGBColor method.
+
+ * bindings/objc/DOMSVGPathSegInternal.mm:
+ (kitClass): Added. Replaces the _wrapSVGPathSeg method.
+
+ * bindings/objc/DOMUtility.mm:
+ (JSC::createDOMWrapper): Use kit function.
+ (createDOMWrapper): Ditto.
+
+ * bindings/objc/DOMXPath.mm:
+ (core): Added. Replaces the _xpathNSResolver method.
+ (kit): Added. Replaces the _wrapXPathNSResolver method.
+
+ * bindings/objc/ObjCEventListener.mm:
+ (WebCore::ObjCEventListener::find): Changed to use early return.
+ (WebCore::ObjCEventListener::handleEvent): Use kit function.
+
+ * bindings/objc/ObjCNodeFilterCondition.mm:
+ (WebCore::ObjCNodeFilterCondition::acceptNode): Use kit function.
+
+ * bindings/objc/WebScriptObject.mm:
+ (+[WebScriptObject scriptObjectForJSObject:originRootObject:rootObject:]):
+ Updated for namespace change.
+
+ * bindings/scripts/CodeGeneratorObjC.pm: Changed spelling of "license"
+ to U.S. spelling. Removed GetObjCTypeMaker, GetObjCTypeGetterName,
+ GetInternalTypeGetterSignature, and GetInternalTypeMakerSignature.
+ Changed includes to conform to new scheme. Generate core and kit
+ functions instead of methods and calls to those functions. Added a new
+ attribute, Polymorphic, to indicate classes that have derived subclasses.
+ Removed the old ObjCCustomInternalImpl attribute.
+
+ * css/CSSRule.idl: Use Polymorphic attribute, so core and kit functions
+ will be generated, with kit calling kitClass. This requires less hand-
+ written code than the old ObjCCustomInternalImpl.
+ * css/CSSValue.idl: Ditto.
+ * css/StyleSheet.idl: Ditto.
+ * dom/Event.idl: Ditto.
+ * dom/Node.idl: Ditto.
+ * html/HTMLCollection.idl: Ditto.
+ * svg/SVGPathSeg.idl: Ditto.
+
+ * editing/TextAffinity.h: Moved kit and core functions out of the
+ WebCore namespace since this code is destined for WebKit, which
+ doesn't use a namespace
+
+ * platform/mac/ClipboardMac.mm:
+ (WebCore::ClipboardMac::declareAndWriteDragImage): Use kit function.
+
+ * platform/mac/DragDataMac.mm:
+ (WebCore::DragData::asFragment): Use core function.
+
+ * platform/mac/PasteboardMac.mm:
+ (WebCore::Pasteboard::writeSelection): Use kit function.
+
+ * svg/SVGElementInstance.idl: Removed now-unneeded ObjCCustomInternalImpl
+ function. This can be generated in a standard way now.
+ * svg/SVGViewSpec.idl: Ditto.
+
+2009-04-17 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Maciej Stachowiak
+
+ <rdar://problem/5753299> "Private Browsing" doesn't affect HTML 5 Database storage
+
+ If the Page is in private browsing mode when a statement is queued up, flag that
+ statement as read-only.
+
+ It would be better to set the read-only flag on the database thread when it actually
+ executes, but that would either require making Settings access a lock-protected operation
+ or involve a synchronous callback to the WebCore thread, neither of which seem worth it.
+ If it becomes an issue in practice, we can revisit this later.
+
+ Test: storage/private-browsing-readonly.html
+
+ * storage/Database.cpp:
+ (WebCore::Database::setAuthorizerReadOnly):
+ * storage/Database.h:
+
+ * storage/DatabaseAuthorizer.cpp: For all action types that would alter the database,
+ deny when in read-only mode.
+ (WebCore::DatabaseAuthorizer::reset):
+ (WebCore::DatabaseAuthorizer::createTable):
+ (WebCore::DatabaseAuthorizer::dropTable):
+ (WebCore::DatabaseAuthorizer::allowAlterTable):
+ (WebCore::DatabaseAuthorizer::createIndex):
+ (WebCore::DatabaseAuthorizer::dropIndex):
+ (WebCore::DatabaseAuthorizer::createTrigger):
+ (WebCore::DatabaseAuthorizer::dropTrigger):
+ (WebCore::DatabaseAuthorizer::createVTable):
+ (WebCore::DatabaseAuthorizer::dropVTable):
+ (WebCore::DatabaseAuthorizer::allowDelete):
+ (WebCore::DatabaseAuthorizer::allowInsert):
+ (WebCore::DatabaseAuthorizer::allowUpdate):
+ (WebCore::DatabaseAuthorizer::setReadOnly):
+ * storage/DatabaseAuthorizer.h:
+
+ * storage/SQLStatement.cpp:
+ (WebCore::SQLStatement::create): Add a m_readOnly flag.
+ (WebCore::SQLStatement::SQLStatement): Ditto.
+ (WebCore::SQLStatement::execute): If m_readOnly is set, tell the authorizer to change
+ to read-only mode.
+ * storage/SQLStatement.h:
+
+ * storage/SQLTransaction.cpp:
+ (WebCore::SQLTransaction::executeSQL): Flag the statement as read-only if the Page is
+ currently in private browsing mode.
+
+2009-04-17 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Antti Koivisto.
+
+ Move RenderPath and RenderSVGContainer onto a unified clippedOverflowRectForRepaint
+ https://bugs.webkit.org/show_bug.cgi?id=25268
+
+ Lots of minus lines. Now we're sharing more sane code
+ (which will respect -webkit-transforms! and scroll offsets correctly)
+
+ Which means this fixes:
+ https://bugs.webkit.org/show_bug.cgi?id=20769 and
+ https://bugs.webkit.org/show_bug.cgi?id=21968 too!
+
+ We're no longer expanding the paint rect "for anti-aliasing", since
+ I can't find a case where that's required. If it is, repaintRectInLocalCoordinates()
+ should be fixed to handle those cases instead of here.
+
+ This fixes svg/custom/scroll-hit-test (now that we respect scroll offsets when repainting)
+ as well as improves our focus ring drawing seen in svg/custom/focus-ring
+ focus rings are now closer to transformed content by a couple pixels (they were needlessly outset by the antialiasing hack)
+ Also, it fixes the dumped rects for markers, causing a progression in svg/custom/marker-overflow-clip
+
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::repaintRectInLocalCoordinates):
+ (WebCore::RenderPath::setPath):
+ * rendering/RenderPath.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::repaintRectInLocalCoordinates):
+ * rendering/RenderSVGContainer.h:
+ * rendering/RenderSVGModelObject.cpp:
+ (WebCore::RenderSVGModelObject::clippedOverflowRectForRepaint):
+ (WebCore::RenderSVGModelObject::computeRectForRepaint):
+ * rendering/RenderSVGModelObject.h:
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::computeRectForRepaint):
+ * rendering/RenderSVGRoot.h:
+
+2009-04-17 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 25259: AX: VoiceOver cmd-cntl-space does not follow the google.com->more link
+ https://bugs.webkit.org/show_bug.cgi?id=25259
+
+ When a node becomes visible or hidden, accessibility needs to be told to update.
+
+ Test: accessibility/visible-elements.html
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::styleWillChange):
+
+2009-04-17 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix, added missing header.
+
+ * platform/graphics/wx/TransformationMatrixWx.cpp:
+
+2009-04-17 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Unreviewed build fix.
+
+ Fix the build with enabled SVG filters
+
+ * rendering/RenderSVGModelObject.cpp: Include SVGResourceFilter.h.
+
+2009-04-16 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25196
+ Add a missing V8DOMMap include.
+
+ * bindings/v8/WorkerScriptController.cpp: Included V8DOMMap.h.
+
+2009-04-16 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25260
+ Finish V8 custom bindings for InspectorController.
+
+ * bindings/v8/custom/V8InspectorControllerCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL): Added.
+
+2009-04-16 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Switch to wxGraphicsBitmap when using wxGraphicsContext so that we're not doing
+ unnecessary conversions internally when drawing bitmaps.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25248
+
+ * platform/graphics/ImageSource.h:
+ * platform/graphics/wx/ImageSourceWx.cpp:
+ (WebCore::ImageSource::createFrameAtIndex):
+ * platform/graphics/wx/ImageWx.cpp:
+ (WebCore::BitmapImage::draw):
+ (WebCore::BitmapImage::drawPattern):
+
+2009-04-16 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Performing a block style change in an editable root that contains only a br adds a newline
+ https://bugs.webkit.org/show_bug.cgi?id=25256
+
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): Fix a bad check for an root
+ block that didn't handle a root that contained a placeholder.
+
+2009-04-16 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Fix computeContainerBoundingBox to respect viewport translations
+ https://bugs.webkit.org/show_bug.cgi?id=25254
+
+ Previously computeContainerBoundingBox was just adding the viewportTranslation.
+ Which, although it has a confusing name, only contains the scale and translation
+ for the viewBox/preserveAspectRatio adjustment. It does not contain the
+ translation for the x/y offset of the viewport.
+ localToParentTransform() does contain this offset, so we use that instead
+ of the previous hacky code.
+
+ * rendering/RenderSVGContainer.h:
+ * rendering/RenderSVGViewportContainer.h:
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::computeContainerBoundingBox):
+
+2009-04-16 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Add a localToParentTransform() method which includes the
+ full transform between local and parent local coordinates.
+ https://bugs.webkit.org/show_bug.cgi?id=25226
+
+ Moved m_localTransform up into RenderSVGTransformableContainer
+ and added a comment to RenderSVGViewportContainer to make it more
+ clear that it does not have a localTransform().
+
+ This patch reveals two more failed design decisions:
+ 1. Use of RenderBox::absoluteTransform() to mean "absoluteTransform()
+ including only my localTransform()" callers are probably using it
+ incorrectly anyway and are just masking bugs in the confused code.
+ 2. computeContainerBoundingBox does not include viewport translations in
+ its computed bounding box, so bounding boxes will be off for parents of
+ inner <svg> elements. I'll fix this an updated the results in a separate change.
+
+ No functional changes, thus no tests.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::localToParentTransform):
+ (WebCore::RenderObject::absoluteTransform):
+ * rendering/RenderObject.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::layout):
+ * rendering/RenderSVGContainer.h:
+ (WebCore::RenderSVGContainer::viewportTransform):
+ * rendering/RenderSVGHiddenContainer.cpp:
+ * rendering/RenderSVGHiddenContainer.h:
+ (WebCore::RenderSVGHiddenContainer::absoluteTransform):
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::localToParentTransform):
+ (WebCore::RenderSVGRoot::absoluteTransform):
+ * rendering/RenderSVGRoot.h:
+ * rendering/RenderSVGTransformableContainer.cpp:
+ (WebCore::RenderSVGTransformableContainer::localToParentTransform):
+ (WebCore::RenderSVGTransformableContainer::localTransform):
+ * rendering/RenderSVGTransformableContainer.h:
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::localToParentTransform):
+ (WebCore::RenderSVGViewportContainer::absoluteTransform):
+ * rendering/RenderSVGViewportContainer.h:
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::computeContainerBoundingBox):
+
+2009-04-16 Adam Langley <agl@google.com>
+
+ Reviewed by Darin Fisher.
+
+ Fix Chromium's rendering of <option> elements inside of <optgroups>.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25244
+
+ Test (will included as a manual test by https://bugs.webkit.org/show_bug.cgi?id=24900):
+
+ <select>
+ <optgroup label="Should be bold">
+ <option>Should not be bold</option>
+ </optgroup>
+ </select>
+
+ * css/themeWin.css: adding comments
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupListBox::getRowFont): use menuStyle() rather than the item's style
+
+2009-04-16 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25218
+
+ Make DOMWindow::inlineEventListenerForType not have the "inline"
+ keyword. As this method gets used outside of DOMWindow.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::inlineEventListenerForType):
+
+2009-04-16 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Antti Koivisto.
+
+ Fix <rdar://problem/6766969>
+
+ When deferred repaints are enabled and being reset and there is a active
+ timer, stop the timer and do the deferred repaints immediately.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::resetDeferredRepaintDelay):
+
+2009-04-16 Xan Lopez <xlopez@igalia.com>
Reviewed by Sam Weinig.
- This is a follow up of r40546. Call toImage() once speeds up ImageBuffer::getImageData()
+ https://bugs.webkit.org/show_bug.cgi?id=25241
+ Remove superfluous NotImplemented.h includes.
- * platform/graphics/qt/ImageBufferQt.cpp:
- (WebCore::ImageBuffer::getImageData):
+ * html/CanvasRenderingContext2D.cpp:
+ * html/CanvasStyle.cpp:
+ * page/AccessibilityRenderObject.cpp:
+ * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
+ * platform/graphics/GraphicsContext.cpp:
+ * platform/graphics/cairo/ImageBufferCairo.cpp:
+ * platform/graphics/cairo/PathCairo.cpp:
+ * platform/graphics/chromium/SimpleFontDataLinux.cpp:
+ * platform/graphics/gtk/FontGtk.cpp:
+ * platform/graphics/gtk/IconGtk.cpp:
+ * platform/graphics/qt/IconQt.cpp:
+ * platform/graphics/qt/ImageQt.cpp:
+ * platform/graphics/qt/ImageSourceQt.cpp:
+ * platform/graphics/skia/ImageBufferSkia.cpp:
+ * platform/graphics/skia/ImageSkia.cpp:
+ * platform/graphics/win/ColorSafari.cpp:
+ * platform/graphics/win/FontWin.cpp:
+ * platform/graphics/win/GraphicsContextCGWin.cpp:
+ * platform/graphics/win/GraphicsContextCairoWin.cpp:
+ * platform/graphics/win/SimpleFontDataCairoWin.cpp:
+ * platform/graphics/wx/ImageWx.cpp:
+ * platform/graphics/wx/TransformationMatrixWx.cpp:
+ * platform/gtk/PlatformScreenGtk.cpp:
+ * platform/gtk/PopupMenuGtk.cpp:
+ * platform/gtk/ScrollViewGtk.cpp:
+ * platform/gtk/ScrollbarGtk.cpp:
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ * platform/posix/FileSystemPOSIX.cpp:
+ * platform/qt/DragDataQt.cpp:
+ * platform/qt/FileSystemQt.cpp:
+ * platform/qt/Localizations.cpp:
+ * platform/qt/PopupMenuQt.cpp:
+ * platform/win/EditorWin.cpp:
+ * platform/win/PasteboardWin.cpp:
+ * platform/wx/KeyboardEventWx.cpp:
+ * platform/wx/PopupMenuWx.cpp:
+ * platform/wx/SharedTimerWx.cpp:
+ * plugins/gtk/PluginViewGtk.cpp:
+ * plugins/mac/PluginPackageMac.cpp:
+ * plugins/qt/PluginPackageQt.cpp:
+ * plugins/win/PluginViewWin.cpp:
+ * rendering/RenderThemeChromiumLinux.cpp:
+ * svg/graphics/SVGImage.cpp:
-2009-02-03 Dirk Schulze <krit@webkit.org>
+2009-04-16 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Sam Weinig and Oliver Hunt.
+ Reviewed by Sam Weinig.
- Added getImageData() support for QtWebKit.
+ More fix for https://bugs.webkit.org/show_bug.cgi?id=21260
+ Unbounded memory growth when churning elements with anonymous event handler functions
+
+ Some cleanup in event handling code.
- [QT] lacks getImageData / putImageData support in Canvas
- https://bugs.webkit.org/show_bug.cgi?id=22186
+ * bindings/js/JSDOMGlobalObject.cpp:
+ * bindings/js/JSDOMGlobalObject.h: Removed findJSProtectedEventListener
+ and findJSProtectedEventListener because they are now unused.
- * platform/graphics/qt/ImageBufferQt.cpp:
- (WebCore::ImageBuffer::getImageData):
+ * bindings/js/JSEventListener.cpp:
+ * bindings/js/JSEventListener.h:
+ (WebCore::JSEventListener::clearGlobalObject):
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::JSLazyEventListener::JSLazyEventListener):
+ (WebCore::JSLazyEventListener::~JSLazyEventListener):
+ (WebCore::JSLazyEventListener::globalObject):
+ * bindings/js/JSLazyEventListener.h:
+ (WebCore::JSLazyEventListener::clearGlobalObject): Nixed JSProtectedEventListener,
+ and merged it with JSLazyEventListener, the only remaining event listener
+ that still GC-protects its function and global object.
+
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::ScriptController):
+ * bindings/js/ScriptController.h:
+ (WebCore::ScriptController::setEventHandlerLineNumber):
+ (WebCore::ScriptController::eventHandlerLineNumber): Renamed handlerLineno =>
+ handlerLineNumber, because anything less would be uncivilized. Removed
+ createInlineEventListener because it mostly did irrelevent work, so it
+ just got in the way of understanding how event handler creation works.
+
+ * dom/Document.cpp:
+ (WebCore::Document::createEventListener):
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::XMLTokenizer::startElementNs):
+ * html/HTMLTokenizer.cpp:
+ (WebCore::HTMLTokenizer::processToken): Ditto.
+
+2009-04-16 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=20765 Website
+ crashes on load due to messy HTML in search form
+ -and corresponding-
+ <rdar://problem/6210633>
+
+ Before this patch, <form>s were allowed to sit inside tables
+ without being wrapped by anonymous table parts. There was also a
+ concept that such a form could be "demoted" and would not be
+ allowed to have any children. This patch has the HTML parser mark
+ form elements that have been demoted as such, and then the demoted
+ forms are not given renderers. I also removed the code that allowed
+ forms to sit in tables without anonymous table sections. So now any
+ forms that do manage to get a renderer inside a table will also be
+ wrapped with appropriate table parts.
+
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::HTMLFormElement):
+ (WebCore::HTMLFormElement::rendererIsNeeded):
+ * html/HTMLFormElement.h:
+ (WebCore::HTMLFormElement::setDemoted):
+ (WebCore::HTMLFormElement::isDemoted):
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::insertNode):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::addChild):
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::addChild):
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::addChild):
+
+2009-04-16 Xiaomei Ji <xji@chromium.org>
+
+ Reviewed by Simon Fraser.
+
+ Fix https://bugs.webkit.org/show_bug.cgi?id=24527
+ caret does not paint the first time you focus on a 0px right padding RTL div
+
+ Test: fast/forms/caret-rtl.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::localCaretRect): When calculating x-axis if
+ alignment is alignRight, we need to subtract the caretWidth so that the
+ caret at IntRect(x, y, caretWidth, height) is inside the block.
+
+2009-04-16 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25228
+ SelectionController::absoluteCaretBounds returns an inflated caret (the caret repaint rect)
+
+ Return the bounds of the transformed caret, not the transformed repaint rect for the caret (which is inflated).
+
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::localCaretRect):
+ (WebCore::SelectionController::absoluteBoundsForLocalRect):
+ (WebCore::SelectionController::caretRepaintRect):
+ (WebCore::SelectionController::recomputeCaretRect):
+ * editing/SelectionController.h:
+
+2009-04-16 Pierre d'Herbemont <pdherbemont@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25187
+ Bug 25187: <video> may not be rendered upon certain racy conditions
+
+ Always create the video renderer when the load state reaches QTMovieLoadStateLoaded and
+ the element is visible, not just when the movie has just been opened.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::updateStates): Make sure we do not make false
+ assumption on the state changes order. Create the renderer if none is present,
+ when movie is loaded instead.
+
+2009-04-16 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Add filterBoundingBox() to RenderSVGModelObject to share a tiny bit of code
+
+ RenderSVGModelObject has much more interesting code it can share,
+ but I'm just trying to get the commits out of my local branch and into
+ the repository in any order I can. :) This one was small.
+
+ This will be used by the unified RenderSVGModelObject
+ clippedOverflowRectForRepaint patch coming soon.
+
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGModelObject.cpp:
+ (WebCore::RenderSVGModelObject::filterBoundingBox):
+ * rendering/RenderSVGModelObject.h:
+
+2009-04-16 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Eric Seidel and Adam Roben.
+
+ More fix for https://bugs.webkit.org/show_bug.cgi?id=21260
+ Unbounded memory growth when churning elements with anonymous event handler functions
+
+ Simplified some EventHandler creation code.
+
+ Removed a pile of code whose sole purpose was to allow SVG event handlers
+ to supply a parameter named "evt" instead of the normal "event", and
+ replaced it with a single parameter to JSLazyEventListener's constructor
+ specifying the parameter name to use.
+
+ * bindings/js/JSDOMWindowBase.h:
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::JSLazyEventListener::JSLazyEventListener):
+ (WebCore::JSLazyEventListener::parseCode):
+ * bindings/js/JSLazyEventListener.h:
+ (WebCore::JSLazyEventListener::create):
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::createInlineEventListener):
+ * bindings/js/ScriptController.h:
+ * dom/Document.cpp:
+ (WebCore::Document::createEventListener):
+
+2009-04-15 Eric Seidel <eric@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Split out objectBoundingBox and repaintRectInLocalCoordinates from relativeBBox
+ in preparation for simplifying (and fixing) repaint logic in the SVG rendering tree.
+ https://bugs.webkit.org/show_bug.cgi?id=25224
+
+ objectBoundingBox() matches the SVG 1.1 concept of a "bounding box"
+
+ repaintRectInLocalCoordinates() should return the a rect covering all painted content.
+ However, repaintRectInLocalCoordinates() still only returns the "stroke bounding box"
+ in this patch. In a future patch, repaintRectInLocalCoordinates will be fixed to return
+ a rect covering all painted content. In order to avoid changing several hundred layout test results, I've left
+ the behavior as-is for now. The returned rect is used by various repaintRectInLocalCoordinates
+ implementations and sometimes adjusted to include all painted content, but not always, and
+ the places where the adjustments are made are sometimes wrong. Again, will be fixed in
+ an upcoming patch.
+
+ This patch discovered a bug in Font::drawTextUsingSVGFont, which is probably causing
+ bounding-box relative gradients on SVGFont glyphs to not paint correctly.
+ I chose not to try and fix the bug in this patch and instead left a FIXME.
+
+ This patch also discovered that at least tspan.getBBox() is broken. This
+ along with the foreignObject.getBBox() change will be tested (and fixed) in a
+ later patch. https://bugs.webkit.org/show_bug.cgi?id=25225
+
+ No change in behavior (besides the above mentioned foreignObject.getBBox()), thus no tests.
+
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::objectBoundingBox): this is a behavior improvement for getBBox() test case coming in a later patch
+ (WebCore::RenderForeignObject::repaintRectInLocalCoordinates): only really used for layout test results, might some day be used for repaint.
+ * rendering/RenderForeignObject.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::objectBoundingBox): new methods, ASSERT if used but not implemented.
+ (WebCore::RenderObject::repaintRectInLocalCoordinates):
+ * rendering/RenderObject.h:
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::objectBoundingBox):
+ (WebCore::RenderPath::repaintRectInLocalCoordinates):
+ (WebCore::RenderPath::clippedOverflowRectForRepaint):
+ (WebCore::RenderPath::lineHeight):
+ (WebCore::RenderPath::baselinePosition):
+ (WebCore::RenderPath::paint):
+ (WebCore::RenderPath::addFocusRingRects):
+ * rendering/RenderPath.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::paint):
+ (WebCore::RenderSVGContainer::objectBoundingBox):
+ (WebCore::RenderSVGContainer::repaintRectInLocalCoordinates):
+ * rendering/RenderSVGContainer.h:
+ * rendering/RenderSVGGradientStop.h:
+ (WebCore::RenderSVGGradientStop::objectBoundingBox):
+ (WebCore::RenderSVGGradientStop::repaintRectInLocalCoordinates):
+ * rendering/RenderSVGHiddenContainer.cpp:
+ (WebCore::RenderSVGHiddenContainer::objectBoundingBox):
+ (WebCore::RenderSVGHiddenContainer::repaintRectInLocalCoordinates):
+ * rendering/RenderSVGHiddenContainer.h:
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::objectBoundingBox):
+ (WebCore::RenderSVGImage::repaintRectInLocalCoordinates):
+ (WebCore::RenderSVGImage::calculateAbsoluteBounds):
+ (WebCore::RenderSVGImage::addFocusRingRects):
+ * rendering/RenderSVGImage.h:
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::paint):
+ (WebCore::RenderSVGRoot::objectBoundingBox):
+ (WebCore::RenderSVGRoot::repaintRectInLocalCoordinates):
+ * rendering/RenderSVGRoot.h:
+ * rendering/RenderSVGTSpan.h:
+ (WebCore::RenderSVGTSpan::objectBoundingBox):
+ (WebCore::RenderSVGTSpan::repaintRectInLocalCoordinates):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::clippedOverflowRectForRepaint):
+ (WebCore::RenderSVGText::absoluteRects):
+ (WebCore::RenderSVGText::absoluteQuads):
+ (WebCore::RenderSVGText::objectBoundingBox):
+ (WebCore::RenderSVGText::repaintRectInLocalCoordinates):
+ * rendering/RenderSVGText.h:
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::viewportTransform):
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::computeContainerBoundingBox):
+ * rendering/SVGRenderSupport.h:
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ * svg/SVGFont.cpp:
+ (WebCore::Font::drawTextUsingSVGFont):
+ * svg/SVGLocatable.cpp:
+ (WebCore::SVGLocatable::getBBox):
+ * svg/SVGPatternElement.cpp:
+ (WebCore::SVGPatternElement::buildPattern):
+ * svg/graphics/SVGPaintServerGradient.cpp:
+ (WebCore::createMaskAndSwapContextForTextGradient):
+ (WebCore::clipToTextMask):
+ (WebCore::SVGPaintServerGradient::setup):
+ * svg/graphics/SVGPaintServerPattern.cpp:
+ (WebCore::SVGPaintServerPattern::setup):
+
+2009-04-16 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix <rdar://problem/6032139> Table cell widths calculated
+ incorrectly on table that uses table-layout:fixed, colspans, and a mix
+ of percentage and pixel widths
+
+ Test: fast/table/fixed-granular-cols.html
+
+ The incorrect widths resulted from incorrect handling of the case where
+ the <col> elements are more granular than the table cells.
+
+ * rendering/FixedTableLayout.cpp:
+ (WebCore::FixedTableLayout::calcWidthArray): When processing <col>
+ elements, append effective columns or split existing effective columns
+ as needed.
+
+2009-04-16 Alexey Proskuryakov <ap@webkit.org>
+
+ <rdar://problem/6795285> Infinite recursion in ResourceHandle::receivedRequestToContinueWithoutCredential
+
+ Rolled out <http://trac.webkit.org/projects/webkit/changeset/42536> - the two instances of
+ authentication challenge are different, after all. Added a FIXME comment about a possible
+ future improvement.
+
+ * platform/network/ResourceHandle.cpp:
+ (WebCore::ResourceHandle::clearAuthentication):
+ * platform/network/ResourceHandleInternal.h:
+ (WebCore::ResourceHandleInternal::ResourceHandleInternal):
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
+ (WebCore::ResourceHandle::receivedCredential):
+ (WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential):
+ (WebCore::ResourceHandle::receivedCancellation):
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
+ (WebCore::ResourceHandle::didCancelAuthenticationChallenge):
+ (WebCore::ResourceHandle::receivedCredential):
+ (WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential):
+ (WebCore::ResourceHandle::receivedCancellation):
+
+2009-04-15 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ More fix for https://bugs.webkit.org/show_bug.cgi?id=21260
+ Unbounded memory growth when churning elements with anonymous event handler functions
+
+ Also fixed <rdar://problem/6792909> WebInspector crashes when reloading
+ a page with breakpoints set
+
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSEventListener::clearJSFunctionInline):
+ (WebCore::JSEventListener::markJSFunction):
+ * bindings/js/JSEventListener.h: Actually clear our function and global
+ object pointers when our client instructs us to. (Oops!) Also, mark
+ our global object while we still intend to use it.
+
+ * bindings/js/JSSVGElementInstanceCustom.cpp:
+ (WebCore::JSSVGElementInstance::mark):
+ (WebCore::toJS):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * svg/SVGElementInstance.idl: For every SVGElementInstance wrapper, ensure
+ that the corresponding element also has a wrapper, to keep its event
+ listeners alive.
+
+2009-04-15 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25201
+ Add ScriptFunctionCall/ScriptObject for V8.
+
+ * bindings/v8/ScriptFunctionCall.cpp: Added.
+ * bindings/v8/ScriptFunctionCall.h: Added.
+ * bindings/v8/ScriptObject.cpp: Added.
+ * bindings/v8/ScriptObject.h: Added.
+ * bindings/v8/ScriptObjectQuarantine.cpp: Added.
+ * bindings/v8/ScriptObjectQuarantine.h: Added.
+ * bindings/v8/ScriptScope.cpp: Added.
+ * bindings/v8/ScriptScope.h: Added.
+ * bindings/v8/ScriptState.h:
+ (WebCore::ScriptState::ScriptState): Added new constructors.
+ (WebCore::ScriptState::frame): Added Frame ptr accessor.
+ * bindings/v8/ScriptString.h:
+ (WebCore::ScriptString::ScriptString): Added default constructor.
+ * bindings/v8/ScriptValue.h:
+ (WebCore::ScriptValue::isEqual): Added.
+
+2009-04-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed build fix. Add RenderSVGModelObject.* to GTK+'s build.
+
+ * GNUmakefile.am:
+
+2009-04-15 Steve Falkenburg <sfalken@apple.com>
+
+ <rdar://problem/6785760> WebCore should use a maximum of 6 connections per host, not 4
+
+ Reviewed by Adam Roben.
+
+ * platform/network/ResourceRequestBase.cpp:
+ * platform/network/cf/ResourceRequestCFNet.cpp:
+ (WebCore::initializeMaximumHTTPConnectionCountPerHost):
+
+2009-04-15 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Add special casing to bindings generator so that custom functions
+ starting with xml or xslt conform to WebKit style guidelines.
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::xmlHttpRequest):
+ (WebCore::JSDOMWindow::xsltProcessor):
+ * bindings/scripts/CodeGenerator.pm:
+
+2009-04-15 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Add minimal RenderSVGModelObject and make RenderPath and RenderSVGContainer use it.
+ https://bugs.webkit.org/show_bug.cgi?id=25221
+
+ RenderSVGModelObject is the base rendering class for things which live
+ in the SVG rendering tree. Not all SVG renders are RenderSVGModelObjects yet.
+
+ More patches coming. This is just adding the class, future patches
+ will pull more logic out of RenderPath and RenderSVGContainer into RenderSVGModelObject.
+
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::RenderPath):
+ * rendering/RenderPath.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::RenderSVGContainer):
+ * rendering/RenderSVGContainer.h:
+ * rendering/RenderSVGModelObject.cpp: Added.
+ (WebCore::RenderSVGModelObject::RenderSVGModelObject):
+ * rendering/RenderSVGModelObject.h: Added.
+ (WebCore::RenderSVGModelObject::requiresLayer):
+ * rendering/RenderTreeAsText.cpp:
+ * rendering/SVGRenderTreeAsText.cpp:
+
+2009-04-15 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Remove more dead code from RenderSVGHiddenContainer.
+
+ lineHeight and baselinePosition used to be on RenderSVGContainer
+ (of which this is a subclass) because RenderSVGContainer used
+ to be a RenderBox and always the renderer for <svg>
+ Now <svg> uses RenderSVGRoot when needing a RenderBox (inside HTML)
+ and RenderSVGViewportContainer (when inside SVG content)
+ so there is no need for RenderSVGHiddenContainer to have these HTML-specific methods.
+
+ * rendering/RenderSVGHiddenContainer.cpp:
+ * rendering/RenderSVGHiddenContainer.h:
+
+2009-04-15 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Remove unneeded (broken) code from SVG renderers
+ https://bugs.webkit.org/show_bug.cgi?id=25214
+
+ Mostly due to my historical confusions about the render tree
+ and some methods not being removed after classes were split.
+
+ RenderSVGRoot is an RenderBox and should just use all the
+ standard RenderBox methods for inspector and repaint rects.
+
+ RenderSVGContainer is *not* a RenderBox (any more) and thus
+ doesn't need lineHeight or width/height or calcBounds.
+
+ RenderSVGViewportContainer had some broken code which tried
+ to see if the click was inside the container at all, but it
+ was using width/height metrics based off of the containing
+ block (from calcWidth) which is wrong (since its real
+ width/height are from its containing viewport not containing block).
+
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::RenderSVGContainer):
+ (WebCore::RenderSVGContainer::layout):
+ * rendering/RenderSVGContainer.h:
+ * rendering/RenderSVGRoot.cpp:
+ * rendering/RenderSVGRoot.h:
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::layout):
+ (WebCore::RenderSVGViewportContainer::nodeAtPoint):
+
+2009-04-15 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser and Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25217
+ Simplify nearestViewportElement and farthestViewportElement using isViewportElement and a for loop
+ Add ASSERT(element) to all these functions since they should never be passed a null element.
+
+ * svg/SVGLocatable.cpp:
+ (WebCore::isViewportElement):
+ (WebCore::SVGLocatable::nearestViewportElement):
+ (WebCore::SVGLocatable::farthestViewportElement):
+ (WebCore::SVGLocatable::getBBox):
+ (WebCore::SVGLocatable::getCTM):
+ (WebCore::SVGLocatable::getScreenCTM):
+
+2009-04-15 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Remove support for the ObjCIvar extended attribute from the Objective-C
+ bindings generator. It is not used anymore.
+
+ * bindings/scripts/CodeGeneratorObjC.pm:
+
+2009-04-15 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25204
+ Create a fast path for ReplaceSelectionCommand that merges text nodes
+
+ During simple pastes, where we're just pasting a text node into a run of text, we would split the current
+ text and insert the new node in between. This is slow and we hit this bug:
+
+ https://bugs.webkit.org/show_bug.cgi?id=6148
+
+ in the layout and rendering code where adjacent text nodes don't shape correctly in Arabic.
+
+ This change creates a fast path for ReplaceSelectionCommand that inserts text directly into the
+ text node that holds the selection (very similar to the fast path we wrote for InsertTextCommand).
+
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplaceSelectionCommand::doApply):
+ (WebCore::ReplaceSelectionCommand::performTrivialReplace):
+ * editing/ReplaceSelectionCommand.h:
+ * editing/TextIterator.cpp:
+
+2009-04-15 Adam Langley <agl@google.com>
+
+ Reviewed by Darin Fisher.
+
+ Move VDMX parsing into the Chromium Linux port.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25116
+
+ VDMX tables are optional tables in TrueType fonts which contain the
+ exact pixel height of a given font at a given pel size. In order to
+ match Windows font metrics we have to use these numbers.
+
+ Previously, the parsing was performed in Skia. As part of the merge
+ with upstream Skia, an interface for getting table data from a font
+ has been added to Skia and we're moving the parsing into WebKit.
+
+ This does not change any layout tests.
+
+ * platform/graphics/chromium/FontPlatformDataLinux.cpp:
+ (WebCore::FontPlatformData::uniqueID):
+ * platform/graphics/chromium/FontPlatformDataLinux.h:
+ * platform/graphics/chromium/FontTrueTypeLinux.cpp: Added.
+ * platform/graphics/chromium/FontTrueTypeLinux.h: Added.
+ * platform/graphics/chromium/SimpleFontDataLinux.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+
+2009-04-15 Stephen White <senorblanco@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25180
+
+ Restore stroked outlines to PlatformContextSkia::drawRect().
+ These were removed inadvertently in r41805, aka
+ https://bugs.webkit.org/show_bug.cgi?id=24662.
+ SkRect is { left, top, right, bottom }, not { left, top, width, height }.
+
+ * platform/graphics/skia/PlatformContextSkia.cpp:
+ (PlatformContextSkia::drawRect):
+
+2009-04-15 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ - fix <rdar://problem/6777374> Generated content with display: run-in
+ causes a crash
+
+ Test: fast/runin/generated.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::handleRunInChild): Check if the run-in block is
+ generated, and if so, make the RenderInline anonymous instead of passing
+ a 0 node to the RenderInline constructor. If the run-in itself is
+ generated, do move :before and :after children from the block into the
+ inline, as they will not be regenerated. Changed nested ifs into early
+ returns.
+
+2009-04-15 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Geoffrey Garen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25192
+
+ Expose DOMWindow::removeInlineEventListenerForType and
+ DOMWindow::inlineEventListenerForType as public.
+
+ * page/DOMWindow.h:
+
+2009-04-14 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25198
+
+ Wrap RegisteredEventListener's markEventListeners and invalidateEventListeners
+ in a USE(JSC), since it doesn't compile with V8 bindings.
+
+ * dom/RegisteredEventListener.h:
+
+2009-04-15 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25194
+
+ Fix a caller of Settings::javaScriptCanOpenWindowsAutomatically() to
+ use the new name.
+
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+
+2009-04-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Rubber-stamped by Darin Adler.
+
+ Don't keep platform objects for authentication challenge in ResourceHandleInternal.
+ We already have a copy in AuthenticationChallenge object.
+
+ * platform/network/ResourceHandle.cpp:
+ (WebCore::ResourceHandle::clearAuthentication):
+ * platform/network/ResourceHandleInternal.h:
+ (WebCore::ResourceHandleInternal::ResourceHandleInternal):
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
+ (WebCore::ResourceHandle::receivedCredential):
+ (WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential):
+ (WebCore::ResourceHandle::receivedCancellation):
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
+ (WebCore::ResourceHandle::didCancelAuthenticationChallenge):
+ (WebCore::ResourceHandle::receivedCredential):
+ (WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential):
+ (WebCore::ResourceHandle::receivedCancellation):
+
+2009-04-14 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Nixed some now-defunct autogeneration code.
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+
+2009-04-14 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Fix <rdar://problem/6755724> <audio> and <video> elements can reference local
+ file:/// URLs from remote in Safari
+
+ Tests: http/tests/security/local-video-poster-from-remote.html
+ http/tests/security/local-video-source-from-remote.html
+ http/tests/security/local-video-src-from-remote.html
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::loadResource): Don't pass url to media engine unless loader->canLoad()
+ says it is OK.
+
+2009-04-14 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Part of <rdar://problem/6150868>
+ Fix incorrect handling of content that needs to go into the head element
+ once the head element has been removed.
+
+ Test: fast/parser/head-content-after-head-removal.html
+
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::HTMLParser): Remove unneeded initializer of m_head.
+ (WebCore::HTMLParser::handleError): Update since m_head is now a RefPtr.
+ (WebCore::HTMLParser::createHead): Ditto.
+ * html/HTMLParser.h: Make m_head a RefPtr.
+
+2009-04-14 Geoffrey Garen <ggaren@apple.com>
+
+ Used svn merge -r42529:42528 to roll out my last patch because it broke
+ the build.
+
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::~JSDOMGlobalObject):
+ (WebCore::JSDOMGlobalObject::findJSProtectedEventListener):
+ (WebCore::JSDOMGlobalObject::findOrCreateJSProtectedEventListener):
+ (WebCore::JSDOMGlobalObject::jsProtectedEventListeners):
+ (WebCore::JSDOMGlobalObject::jsProtectedInlineEventListeners):
+ * bindings/js/JSDOMGlobalObject.h:
+
+2009-04-14 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Nixed some now-dead code related to protected event listeners.
+
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::~JSDOMGlobalObject):
+ * bindings/js/JSDOMGlobalObject.h:
+
+2009-04-14 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ More fix for https://bugs.webkit.org/show_bug.cgi?id=21260
+ Unbounded memory growth when churning elements with anonymous event handler functions
+
+ Stop using protected event listeners on SVGElementInstance.
+
+ * bindings/js/JSSVGElementInstanceCustom.cpp:
+ (WebCore::JSSVGElementInstance::mark): Mark our event listeners, since
+ they're not protected anymore.
+
+ (WebCore::JSSVGElementInstance::addEventListener):
+ (WebCore::JSSVGElementInstance::removeEventListener): Make unprotected
+ event listeners, since we mark them now.
+
+ * bindings/scripts/CodeGeneratorJS.pm: Autogenerate event listener
+ invalidation for SVGElementInstance.
+
+ * svg/SVGElementInstance.h:
+ (WebCore::SVGElementInstance::eventListeners): Added an accessor, for
+ the sake of autogenerated code.
+
+ * svg/SVGElementInstance.idl: Removed the ProtectedEventListener attribute
+ from event listener properties. Added a CustomMarkFunction attribute,
+ since we need to mark our event listeners.
+
+2009-04-14 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix.
+
+ * WebCore.vcproj/WebCore.vcproj:
+
+2009-04-14 Steve Falkenburg <sfalken@apple.com>
+
+ Add header guards to WebCore forwarding headers.
+
+ Speeds up WebCore debug build on Windows by 12% on my system,
+ since Visual Studio appears to not optimize for standard header
+ guards in included files.
+
+ Rubber stamped by Ada Chan.
+
+ * ForwardingHeaders/debugger/Debugger.h:
+ * ForwardingHeaders/debugger/DebuggerActivation.h:
+ * ForwardingHeaders/debugger/DebuggerCallFrame.h:
+ * ForwardingHeaders/interpreter/CallFrame.h:
+ * ForwardingHeaders/interpreter/Interpreter.h:
+ * ForwardingHeaders/masm/X86Assembler.h:
+ * ForwardingHeaders/parser/Parser.h:
+ * ForwardingHeaders/parser/SourceCode.h:
+ * ForwardingHeaders/parser/SourceProvider.h:
+ * ForwardingHeaders/pcre/pcre.h:
+ * ForwardingHeaders/profiler/Profile.h:
+ * ForwardingHeaders/profiler/ProfileNode.h:
+ * ForwardingHeaders/profiler/Profiler.h:
+ * ForwardingHeaders/runtime/ArgList.h:
+ * ForwardingHeaders/runtime/ArrayPrototype.h:
+ * ForwardingHeaders/runtime/BooleanObject.h:
+ * ForwardingHeaders/runtime/CallData.h:
+ * ForwardingHeaders/runtime/Collector.h:
+ * ForwardingHeaders/runtime/CollectorHeapIterator.h:
+ * ForwardingHeaders/runtime/Completion.h:
+ * ForwardingHeaders/runtime/ConstructData.h:
+ * ForwardingHeaders/runtime/DateInstance.h:
+ * ForwardingHeaders/runtime/Error.h:
+ * ForwardingHeaders/runtime/FunctionConstructor.h:
+ * ForwardingHeaders/runtime/FunctionPrototype.h:
+ * ForwardingHeaders/runtime/Identifier.h:
+ * ForwardingHeaders/runtime/InitializeThreading.h:
+ * ForwardingHeaders/runtime/InternalFunction.h:
+ * ForwardingHeaders/runtime/JSArray.h:
+ * ForwardingHeaders/runtime/JSByteArray.h:
+ * ForwardingHeaders/runtime/JSFunction.h:
+ * ForwardingHeaders/runtime/JSGlobalData.h:
+ * ForwardingHeaders/runtime/JSGlobalObject.h:
+ * ForwardingHeaders/runtime/JSLock.h:
+ * ForwardingHeaders/runtime/JSNumberCell.h:
+ * ForwardingHeaders/runtime/JSObject.h:
+ * ForwardingHeaders/runtime/JSString.h:
+ * ForwardingHeaders/runtime/JSValue.h:
+ * ForwardingHeaders/runtime/Lookup.h:
+ * ForwardingHeaders/runtime/ObjectPrototype.h:
+ * ForwardingHeaders/runtime/Operations.h:
+ * ForwardingHeaders/runtime/PropertyMap.h:
+ * ForwardingHeaders/runtime/PropertyNameArray.h:
+ * ForwardingHeaders/runtime/Protect.h:
+ * ForwardingHeaders/runtime/PrototypeFunction.h:
+ * ForwardingHeaders/runtime/StringObject.h:
+ * ForwardingHeaders/runtime/StringObjectThatMasqueradesAsUndefined.h:
+ * ForwardingHeaders/runtime/StringPrototype.h:
+ * ForwardingHeaders/runtime/Structure.h:
+ * ForwardingHeaders/runtime/SymbolTable.h:
+ * ForwardingHeaders/runtime/UString.h:
+ * ForwardingHeaders/wrec/WREC.h:
+ * ForwardingHeaders/wtf/ASCIICType.h:
+ * ForwardingHeaders/wtf/AlwaysInline.h:
+ * ForwardingHeaders/wtf/Assertions.h:
+ * ForwardingHeaders/wtf/ByteArray.h:
+ * ForwardingHeaders/wtf/CurrentTime.h:
+ * ForwardingHeaders/wtf/Deque.h:
+ * ForwardingHeaders/wtf/DisallowCType.h:
+ * ForwardingHeaders/wtf/FastMalloc.h:
+ * ForwardingHeaders/wtf/Forward.h:
+ * ForwardingHeaders/wtf/GetPtr.h:
+ * ForwardingHeaders/wtf/HashCountedSet.h:
+ * ForwardingHeaders/wtf/HashFunctions.h:
+ * ForwardingHeaders/wtf/HashMap.h:
+ * ForwardingHeaders/wtf/HashSet.h:
+ * ForwardingHeaders/wtf/HashTable.h:
+ * ForwardingHeaders/wtf/HashTraits.h:
+ * ForwardingHeaders/wtf/ListHashSet.h:
+ * ForwardingHeaders/wtf/ListRefPtr.h:
+ * ForwardingHeaders/wtf/Locker.h:
+ * ForwardingHeaders/wtf/MainThread.h:
+ * ForwardingHeaders/wtf/MathExtras.h:
+ * ForwardingHeaders/wtf/MessageQueue.h:
+ * ForwardingHeaders/wtf/Noncopyable.h:
+ * ForwardingHeaders/wtf/NotFound.h:
+ * ForwardingHeaders/wtf/OwnArrayPtr.h:
+ * ForwardingHeaders/wtf/OwnPtr.h:
+ * ForwardingHeaders/wtf/PassRefPtr.h:
+ * ForwardingHeaders/wtf/Platform.h:
+ * ForwardingHeaders/wtf/PtrAndFlags.h:
+ * ForwardingHeaders/wtf/RandomNumber.h:
+ * ForwardingHeaders/wtf/RefCounted.h:
+ * ForwardingHeaders/wtf/RefCountedLeakCounter.h:
+ * ForwardingHeaders/wtf/RefPtr.h:
+ * ForwardingHeaders/wtf/RetainPtr.h:
+ * ForwardingHeaders/wtf/StdLibExtras.h:
+ * ForwardingHeaders/wtf/StringExtras.h:
+ * ForwardingHeaders/wtf/ThreadSpecific.h:
+ * ForwardingHeaders/wtf/Threading.h:
+ * ForwardingHeaders/wtf/TypeTraits.h:
+ * ForwardingHeaders/wtf/UnusedParam.h:
+ * ForwardingHeaders/wtf/Vector.h:
+ * ForwardingHeaders/wtf/VectorTraits.h:
+ * ForwardingHeaders/wtf/dtoa.h:
+ * ForwardingHeaders/wtf/unicode/Collator.h:
+ * ForwardingHeaders/wtf/unicode/UTF8.h:
+ * ForwardingHeaders/wtf/unicode/Unicode.h:
+ * ForwardingHeaders/wtf/unicode/icu/UnicodeIcu.h:
+
+2009-04-14 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Adele Peterson.
+
+ Use a template function to generalize the way we create non-caching
+ JS function getters.
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ * bindings/js/JSDOMWindowCustom.h:
+ (WebCore::nonCachingStaticFunctionGetter):
+ (WebCore::JSDOMWindow::customGetOwnPropertySlot):
2009-04-14 Benjamin C Meyer <benjamin.meyer@torchmobile.com>
@@ -291,6 +18535,2782 @@
* platform/network/qt/ResourceRequestQt.cpp:
(WebCore::ResourceRequest::toNetworkRequest):
+2009-04-14 Timothy Hatcher <timothy@apple.com>
+
+ Fix a world leak caused by opening the Web Inspector. This was
+ a regression caused by the InspectorController becoming refcounted.
+
+ <rdar://problem/6782944>
+
+ Reviewed by Darin Adler.
+
+ * bindings/js/ScriptObject.cpp:
+ (WebCore::ScriptGlobalObject::get): Renamed to better match the
+ other functions.
+ (WebCore::ScriptGlobalObject::remove): Added. Deletes the property.
+ * bindings/js/ScriptObject.h:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::~InspectorController): Do less work
+ at destruction time since the object lifetime is tied to JS GC.
+ Assert that inspectedPageDestroyed cleared everything needed.
+ (WebCore::InspectorController::inspectedPageDestroyed): Do most
+ of the work that ~InspectorController was doing.
+ (WebCore::InspectorController::scriptObjectReady): Renamed getObject.
+
+2009-04-14 Antony Sargent <asargent@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ This is some cleanup motivated by the crash in http://crbug.com/9775 , which
+ happens because of calling window.open inside a window.onload handler.
+
+ These changes are just part of the fix, along with some asserts to help prevent
+ breakage on future changes.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25132
+
+ * bindings/v8/V8EventListenerList.cpp:
+ (WebCore::V8EventListenerList::add):
+ (WebCore::V8EventListenerList::remove):
+ (WebCore::V8EventListenerList::clear):
+ * bindings/v8/V8EventListenerList.h:
+ (WebCore::V8EventListenerList::size):
+
+2009-04-14 Evan Martin <evan@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25142
+ Fix a race that can occur between flex and the perl script that parses
+ its output.
+
+ * css/maketokenizer: Consume all input.
+
+2009-04-14 Rohit Rao <rohitrao@google.com>
+
+ Reviewed by Dan Bernstein.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25184
+ Do not change the text color for selected text in Mac Chromium.
+
+ * rendering/RenderThemeChromiumMac.h:
+ (WebCore::RenderThemeChromiumMac::supportsSelectionForegroundColors):
+ Now returns false, matching the behavior of Safari on Mac.
+
+2009-04-14 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25172
+ Extra partial layout during the first keypress in an empty block
+
+ Determining if a placeholder needs to be removed requires the creation of a VisiblePosition
+ which was triggering layout before we were finished modifying the DOM for the insert operation.
+
+ Find out if we need to remove a placeholder near the start of the operation, and if we do remember
+ where it's located. Then, later, remove it along with all of the other DOM operations we perform.
+
+ Renamed lineBreakExistsAtPosition to lineBreakExistsAtVisiblePosition and added a lineBreakExistsAtPosition
+ that takes in a Position. In InsertTextCommand, we can use the latter, since we normalize manually.
+
+ removePlaceholderAt now takes in a Position that it assumes has already been checked for a placeholder.
+
+ No test added as this only effects performance.
+
+ * editing/BreakBlockquoteCommand.cpp:
+ (WebCore::BreakBlockquoteCommand::doApply):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::removePlaceholderAt):
+ (WebCore::CompositeEditCommand::moveParagraphs):
+ (WebCore::CompositeEditCommand::breakOutOfEmptyMailBlockquotedParagraph):
+ (WebCore::CompositeEditCommand::positionAvoidingSpecialElementBoundary):
+ * editing/CompositeEditCommand.h:
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
+ (WebCore::DeleteSelectionCommand::doApply):
+ * editing/FormatBlockCommand.cpp:
+ (WebCore::FormatBlockCommand::doApply):
+ * editing/InsertLineBreakCommand.cpp:
+ (WebCore::InsertLineBreakCommand::doApply):
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+ * editing/InsertTextCommand.cpp:
+ (WebCore::InsertTextCommand::input):
+ * editing/htmlediting.cpp:
+ (WebCore::lineBreakExistsAtVisiblePosition):
+ (WebCore::lineBreakExistsAtPosition):
+ * editing/htmlediting.h:
+
+2009-04-14 Adam Roben <aroben@apple.com>
+
+ Remove support for profile-guided optimization on Windows
+
+ Rubber-stamped by Steve Falkenburg.
+
+ * WebCore.vcproj/WebCore.vcproj: Removed the Release_PGO
+ configuration.
+
+2009-04-14 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25163
+ Upstream fix for releasing v8 objects on worker thread termination in Chromium.
+
+ * bindings/v8/V8DOMMap.cpp:
+ (WebCore::domDataList): Now uses Vector instead of HashMap.
+ (WebCore::domDataListMutex):
+ (WebCore::ThreadSpecificDOMData::ThreadSpecificDOMData): remove usage of currentThread();
+ (WebCore::ThreadSpecificDOMData::~ThreadSpecificDOMData): ditto.
+ (WebCore::NonMainThreadSpecificDOMData::~NonMainThreadSpecificDOMData): moved call to removeAllDOMObjectsInCurrentThread() to ~WorkerScriptController.
+ (WebCore::handleWeakObjectInOwningThread):
+ (WebCore::derefDelayedObjects):
+ (WebCore::removeAllDOMObjectsInCurrentThread): not static anymore.
+ * bindings/v8/V8DOMMap.h:
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::WorkerContextExecutionProxy::dispose): removed code that avoided dual-dereference of WorkerContext.
+ (WebCore::WorkerContextExecutionProxy::initContextIfNeeded): this ref() is countered in removeAllDOMObjectsInCurrentThread(), when the WorkerContext is removed from the v8 map.
+ * bindings/v8/WorkerScriptController.cpp:
+ (WebCore::WorkerScriptController::~WorkerScriptController):
+
+2009-04-14 Adam Roben <aroben@apple.com>
+
+ Fix Bug 25183: Split up WebCore.vcproj's settings into vsprops files
+
+ <https://bugs.webkit.org/show_bug.cgi?id=25183>
+
+ WebCore.vcproj now uses a set of .vsprops files to store most of its
+ settings.
+
+ Reviewed by Darin Adler.
+
+ * WebCore.vcproj/WebCore.vcproj: Moved settings from here into the new
+ .vsprops files.
+
+ * WebCore.vcproj/WebCoreCFNetwork.vsprops: Added. Contains settings
+ for ports that build against CFNetwork.
+ * WebCore.vcproj/WebCoreCG.vsprops: Added. Contains settings for ports
+ that build against CoreGraphics.
+ * WebCore.vcproj/WebCoreCURL.vsprops: Added. Contains settings for
+ ports that build against libcurl.
+ * WebCore.vcproj/WebCoreCairo.vsprops: Added. Contains settings for
+ ports that build against Cairo.
+ * WebCore.vcproj/WebCoreCommon.vsprops: Added. Contains settings
+ shared by all ports.
+ * WebCore.vcproj/WebCoreMediaQT.vsprops: Added. Contains settings for
+ ports that use QTMovieWin to implement the MediaPlayerPrivate
+ interface.
+ * WebCore.vcproj/WebCorePthreads.vsprops: Added. Contains settings for
+ ports that build against pthreads.
+
+2009-04-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ http/tests/xmlhttprequest/basic-auth.html fails on Tiger.
+
+ Turns out that NSURLCredentialPersistenceNone doesn't work on Tiger, so we have to use
+ session persistence.
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::didReceiveAuthenticationChallenge): Route the credential through
+ receivedCredential(), ensuring that the Tiger-specific need to use session credentials
+ is honored.
+ (WebCore::ResourceHandle::receivedCredential): On Tiger, change PersistenceNone to
+ PersistenceForSession, because the former doesn't work.
+
+2009-04-14 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for <rdar://problem/6703873> Triple-click quoted line and type Return creates an extra quoted blank line
+
+ Test: editing/inserting/6703873.html
+
+ * editing/BreakBlockquoteCommand.cpp: (WebCore::BreakBlockquoteCommand::doApply):
+ If the startNode's original parent is now empty, we can remove it. Its already been cloned and copied with the startNode,
+ so we only need to keep it around if it actually holds some original content, otherwise it will look like an extra empty
+ container in the document.
+
+2009-04-14 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Add a proper implementation of AtkText::get_text and
+ AtkText::get_character_count, which takes into account non
+ TextControl text. With this the 'Text' field in Accerciser's
+ Interface Viewer is filled correctly.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-14 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Remove some dead code and g_return_if_fail from static functions.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-14 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Also implement text interface for StaticTextRole, which covers
+ most of the text in web pages.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Another Windows build fix.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::WebCoreSynchronousLoader::load):
+
+2009-04-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Windows build fix.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::WebCoreSynchronousLoader::willSendRequest):
+ (WebCore::WebCoreSynchronousLoader::didReceiveChallenge):
+
+2009-04-13 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ <rdar://problem/6698851> Implement XMLHttpRequest withCredentials attribute
+
+ * WebCore.xcodeproj/project.pbxproj: Made ThreadableLoader.h private, as enum definitions
+ from it are now used in otehr private headers.
+
+ * xml/XMLHttpRequest.h:
+ * xml/XMLHttpRequest.idl:
+ Added withCredentials attribute. When it is false (default), neither credentials nor cookies
+ are sent with cross origin requests, When it is true, those are sent, but the server needs
+ to allow handling results via Access-Control-Allow-Credentials header. It was always possible
+ to send a cross-site request with credentials via IFRAME or IMG, so this just adds a way to
+ read results, as long as the server reports that it's allowed.
+ Having the default set to false ensures that requests won't fail unexpectedly because of
+ stored credentials and cookies for other resources in the target protection space.
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::loadRequestSynchronously): Allow stored credentials for same origin
+ requests, and for cross origin ones that have withCredentials attribute set. Such code already
+ existed for cookies (but it's simpler, because we could just set a ResourceRequest flag).
+ (WebCore::XMLHttpRequest::loadRequestAsynchronously): Ditto.
+
+ * platform/network/ResourceHandle.h: Added willSendRequest() - just like for other callbacks,
+ is is easier to have code in the class. Also, loadResourceSynchronously() now takes a
+ StoredCredentials option, matching async case.
+
+ * platform/network/ResourceHandleClient.h:
+ (WebCore::ResourceHandleClient::receivedCredential): Removed. This method could never be
+ called, and no client used it.
+ (WebCore::ResourceHandleClient::receivedRequestToContinueWithoutCredential): Ditto.
+
+ * platform/network/ResourceHandleInternal.h:
+ (WebCore::ResourceHandleInternal::ResourceHandleInternal): Split username and password out
+ of request URL. We want to always get a callback for credentials to manage them in WebCore,
+ so network back-end shouldn't see them too early.
+
+ * platform/network/ResourceRequestBase.cpp:
+ (WebCore::ResourceRequestBase::removeCredentials):
+ * platform/network/ResourceRequestBase.h:
+ Added a removeCredentials() method that removes login and password parts from request URL.
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCoreCredentialStorage): Added a simple storage class for per-session credentials.
+ (WebCore::ResourceHandle::loadResourceSynchronously): Pass allowStoredCredentials through.
+ (WebCore::ResourceHandle::willSendRequest): On a redirect, credentials should be replaced.
+ (WebCore::ResourceHandle::didReceiveAuthenticationChallenge): Try credentials from the URL
+ and per-session credentials. Code was partially moved from Obj-C callback.
+ (WebCore::ResourceHandle::receivedCredential): Intercept per-session credentials and store
+ them in WebCore storage.
+ (-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]): Don't
+ store the redirected URL - we only needed credentials, which are now stored separately.
+ (-[WebCoreResourceHandleAsDelegate connection:didReceiveAuthenticationChallenge:]): Removed
+ code that was setting credentials from URL. First, the code is now in ResourceHandle, and
+ also, it wasn't actually needed in Leopard release before this patch, see <rdar://problem/5298142>.
+ (-[WebCoreSynchronousLoader dealloc]): Release credentials. Note that unlike ResourceHandle,
+ this class still needs to track URL for checking whether a redirect is allowed. This is
+ not a great solution, and we should unify client code to use the same checks in sync and
+ async cases.
+ (-[WebCoreSynchronousLoader connection:willSendRequest:redirectResponse:]): Just like in
+ async case, put credentials aside to ensure that network back-end asks for them.
+ (-[WebCoreSynchronousLoader connection:didReceiveAuthenticationChallenge:]): Use credentials
+ from URL, or from WebCore storage.
+ (-[WebCoreSynchronousLoader connectionShouldUseCredentialStorage:]): Don't use stored
+ credentials when not allowed to.
+ (+[WebCoreSynchronousLoader loadRequest:allowStoredCredentials:returningResponse:error:]):
+ Put credentials aside to ensure that network back-end asks for them.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::WebCoreCredentialStorage::set):
+ (WebCore::WebCoreCredentialStorage::get):
+ (WebCore::willSendRequest):
+ (WebCore::ResourceHandle::start):
+ (WebCore::ResourceHandle::willSendRequest):
+ (WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
+ (WebCore::ResourceHandle::receivedCredential):
+ (WebCore::ResourceHandle::loadResourceSynchronously):
+ (WebCore::WebCoreSynchronousLoader::willSendRequest):
+ (WebCore::WebCoreSynchronousLoader::didReceiveChallenge):
+ (WebCore::WebCoreSynchronousLoader::shouldUseCredentialStorage):
+ (WebCore::WebCoreSynchronousLoader::load):
+ Same changes as in Mac case.
+
+ * platform/network/curl/ResourceHandleCurl.cpp:
+ (WebCore::ResourceHandle::loadResourceSynchronously):
+ * platform/network/qt/ResourceHandleQt.cpp:
+ (WebCore::ResourceHandle::loadResourceSynchronously):
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::loadResourceSynchronously):
+ Trying not to break the build.
+
+ * dom/XMLTokenizerLibxml2.cpp: (WebCore::openFunc):
+ * xml/XSLTProcessor.cpp: (WebCore::docLoaderFunc):
+ Unconditionally allow stored credentials for these, as they only support same origin loads.
+
+ * workers/WorkerContext.cpp: (WebCore::WorkerContext::importScripts):
+ WorkerContext.importScripts() can be cross-origin, but sending credentials with it is no worse
+ than sending them with <script src=...>, so this is also unconditionally allowed.
+
+ * loader/DocumentThreadableLoader.cpp:
+ (WebCore::DocumentThreadableLoader::loadResourceSynchronously): Pass through storedCredentials.
+ (WebCore::DocumentThreadableLoader::create): Ditto.
+ (WebCore::DocumentThreadableLoader::DocumentThreadableLoader): Save storedCredentials and
+ sameOrigin flags foruse in callbacks.
+ (WebCore::DocumentThreadableLoader::willSendRequest): Assert that loaders aren't all confused.
+ (WebCore::DocumentThreadableLoader::didSendData): Ditto.
+ (WebCore::DocumentThreadableLoader::didReceiveResponse): Ditto.
+ (WebCore::DocumentThreadableLoader::didReceiveData): Ditto.
+ (WebCore::DocumentThreadableLoader::didFinishLoading): Ditto.
+ (WebCore::DocumentThreadableLoader::didFail): Ditto.
+ (WebCore::DocumentThreadableLoader::getShouldUseCredentialStorage): Don't use credential
+ storage if that's not allowed by the code that invoked DocumentThreadableLoader.
+ (WebCore::DocumentThreadableLoader::didReceiveAuthenticationChallenge): Simulate a failure
+ and cancel the request if we are about to ask the user for credentials for a cross-origin
+ request, which is forbidden by CORS (and would have been very confusing if allowed).
+ (WebCore::DocumentThreadableLoader::receivedCancellation): Assert that loaders aren't all confused.
+
+ * loader/DocumentThreadableLoader.h: Updated for the new flags (storedCredentials and
+ sameOrigin) that affect the loader. Eventually, we need to move all CORS logic from XHR here.
+
+ * loader/ThreadableLoader.h: (StoredCredentials): Added another flag that affects loader
+ behavior. We should combine all of these into a structure, and use it for sync requests, too.
+
+ * loader/FrameLoader.cpp: (WebCore::FrameLoader::loadResourceSynchronously):
+ * loader/FrameLoader.h:
+ * loader/ThreadableLoader.cpp:
+ (WebCore::ThreadableLoader::create):
+ (WebCore::ThreadableLoader::loadResourceSynchronously):
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::WorkerThreadableLoader::WorkerThreadableLoader):
+ (WebCore::WorkerThreadableLoader::loadResourceSynchronously):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader):
+ * loader/WorkerThreadableLoader.h:
+ (WebCore::WorkerThreadableLoader::create):
+ Pass through storedCredentials.
+
+2009-04-13 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Remove an outdated comment in ScrollView.h
+
+ * platform/ScrollView.h:
+
+2009-04-13 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25177
+
+ QTTrack's -media method always return NULL in 64-bit QTKit, so
+ MediaPlayerPrivate::disableUnsupportedTracks should use
+ QTTrackMediaTypeAttribute to get a track's type.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::disableUnsupportedTracks):
+
+2009-04-13 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ More fix for https://bugs.webkit.org/show_bug.cgi?id=21260
+ Unbounded memory growth when churning elements with anonymous event handler functions
+
+ Stop using protected event listeners on the window object.
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::mark): Mark our event listeners, since they're
+ no longer protected.
+
+ (WebCore::JSDOMWindow::addEventListener):
+ (WebCore::JSDOMWindow::removeEventListener): Create unprotected event
+ listeners, since we mark them now.
+
+ * bindings/js/JSEventListener.h: Made some functions public so
+ DOMWindow could call them.
+
+ * bindings/js/JSNodeCustom.cpp: Moved markEventListeners to a header,
+ so it could be shared.
+
+ * bindings/scripts/CodeGeneratorJS.pm: Generate event listener marking
+ and invalidating code for the DOMWindow.
+
+ * dom/RegisteredEventListener.h:
+ (WebCore::markEventListeners):
+ (WebCore::invalidateEventListeners): Added helper functions.
+
+ * page/DOMWindow.idl: Make the window's event listener attributes not
+ protected.
+
+2009-04-13 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25155
+
+ OS X standalone media documents should not switch from <video> to <embed> when
+ QTKit load state is QTMovieLoadStateLoading as that happens frequently when a loading
+ with a slow network connection or when a movie is not saved fast-start.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::updateStates): Don't open movie with plug-in when QTKit's
+ loadstate is QTMovieLoadStateLoading, wait until it drops below QTMovieLoadStateError.
+
+2009-04-13 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24453
+ REGRESSION: If setTimeout is called on a iframe's window, the DOM changes to
+ the main document that timer callback makes are not flushed.
+
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::execute):
+ Use Document::updateStyleForAllDocuments() instead of document->updateStyleIfNeeded()
+ since timers may affect documents other then their own.
+
+2009-04-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by David Hyatt.
+
+ Check document for nullity to avoid crashing on GTK+, when
+ creating the WebView.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::needsLayout):
+
+2009-04-13 Ada Chan <adachan@apple.com>
+
+ Forgot to capitalize the "US".
+
+ * platform/text/win/TextBreakIteratorInternalICUWin.cpp:
+ (WebCore::currentTextBreakLocaleID):
+
+2009-04-13 Ada Chan <adachan@apple.com>
+
+ <rdar://problem/6564956> URL field double-click selects entire domain, rather than single word or entire URL
+ Revert back to the old word breaking behavior by using en_US_POSIX locale.
+
+ Reviewed by Steve Falkenburg.
+
+ * platform/text/win/TextBreakIteratorInternalICUWin.cpp:
+ (WebCore::currentTextBreakLocaleID):
+
+2009-04-13 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ * platform/cf/BinaryPropertyList.cpp: Added comment.
+ * platform/cf/BinaryPropertyList.h: Fixed mistakes in comments.
+
+2009-04-13 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 25158: hit testing doesn't work right in some cases involving anonymous blocks
+ https://bugs.webkit.org/show_bug.cgi?id=25158
+ rdar://problem/6769693
+
+ Test: editing/selection/click-after-nested-block.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::isChildHitTestCandidate): Added. Helper so the two loops in positionForPoint
+ can share code.
+ (WebCore::RenderBlock::positionForPoint): Removed unneeded special case for first
+ child box. Changed special case for last child box to propertly handle the various
+ types of child box that are not hit test candidates (the same ones already handled
+ by the hit test loop below), adding in a loop so we find the last candidate.
+
+2009-04-13 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=25125. Rework scrolling so that a layout happens first when
+ it's already needed so that the code doesn't end up making bad decisions based off invalid document sizes.
+
+ * WebCore.base.exp:
+ * page/FrameView.h:
+ (WebCore::FrameView::visibleContentsResized):
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::ScrollView):
+ (WebCore::ScrollView::updateScrollbars):
+ * platform/ScrollView.h:
+
+2009-04-13 Adam Roben <aroben@apple.com>
+
+ Add SharedBuffer::wrapCFData
+
+ This is the CF-equivalent of wrapNSData.
+
+ Reviewed by Brady Eidson.
+
+ * platform/SharedBuffer.h:
+ * platform/cf/SharedBufferCF.cpp:
+ (WebCore::SharedBuffer::wrapCFData):
+
+2009-04-13 Dan Bernstein <mitz@apple.com>
+
+ - build fix
+
+ * page/EventHandler.cpp:
+ (WebCore::documentPointForWindowPoint):
+
+2009-04-13 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6740294> Increase the connection count per host
+
+ Try to use six connections per host if possible.
+
+ * WebCore.base.exp:
+ * loader/loader.cpp:
+ (WebCore::Loader::Loader):
+ * platform/mac/WebCoreSystemInterface.h:
+ * platform/mac/WebCoreSystemInterface.mm:
+ * platform/network/ResourceRequestBase.cpp:
+ (WebCore::initMaximumHTTPConnectionCountPerHost):
+ * platform/network/ResourceRequestBase.h:
+ * platform/network/mac/ResourceRequestMac.mm:
+ (WebCore::initMaximumHTTPConnectionCountPerHost):
+
+2009-04-13 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25153
+ Can't place the caret into text field that scrolls the window on focus
+
+ We refetch the target node in the shadow node case, and when we do so the window coordinate for the mouse event may
+ be invalid because of scrolling that the focus handler did. Cache the document point (that we derived from the window
+ coordinate) and use that any time we refetch.
+
+ * page/EventHandler.cpp:
+ (WebCore::documentPointForWindowPoint):
+ (WebCore::EventHandler::handleMousePressEvent):
+ (WebCore::EventHandler::prepareMouseEvent):
+
+2009-04-13 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Rename JavaScriptCanOpenWindowsAutomatically to javaScriptCanOpenWindowsAutomatically
+ to conform to our style guidelines.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::allowPopUp):
+ * page/Settings.h:
+ (WebCore::Settings::javaScriptCanOpenWindowsAutomatically):
+
+2009-04-13 Geoffrey Garen <ggaren@apple.com>
+
+ Mac build fix: Made another header private.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-04-13 Jian Li <jianli@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25121
+ Upstream changes to handle error messages from V8 when running worker script.
+
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::reportFatalErrorInV8):
+ (WebCore::handleConsoleMessage):
+ (WebCore::WorkerContextExecutionProxy::WorkerContextExecutionProxy):
+ (WebCore::WorkerContextExecutionProxy::dispose):
+ (WebCore::WorkerContextExecutionProxy::initV8IfNeeded):
+ (WebCore::WorkerContextExecutionProxy::initContextIfNeeded):
+ (WebCore::WorkerContextExecutionProxy::evaluate):
+ * bindings/v8/WorkerContextExecutionProxy.h:
+
+2009-04-13 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix: Made setInlineEventListenerForType not inline, since Document
+ calls it now. Made RegisteredEventListener.h a private header on Mac,
+ so WebKit can use it.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::setInlineEventListenerForType):
+
+2009-04-13 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - fix <rdar://problem/6404439> REGRESSION: Overlapping text and other
+ layout issues in View Sample feature of MYOB FIrstEdge v3
+
+ * page/Navigator.cpp:
+ (WebCore::shouldHideFourDot): Added "tdqm_loader.js" to the list of
+ JavaScript files this quirk applies to.
+
+2009-04-13 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Move open and showModalDialog functions out of JSDOMWindowBase
+ and into JSDOMWindow by partially generating them.
+
+ This slightly changes the behavior of getting window.showModalDialog
+ when the embedding app does not support it to return undefined regardless
+ of shadowing. This should not be an issue in a practice, but will be addressed
+ when we add a generic way to handle runtime specialization of property
+ access.
+
+ * DerivedSources.make: Remove JSDOMWindowBase.lut.h
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::):
+ (WebCore::JSDOMWindowBase::getOwnPropertySlot): Move canShowModalDialog check from
+ here to JSDOMWindow::customGetOwnPropertySlot.
+ (WebCore::JSDOMWindowBase::put): Remove dead code.
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::createWindow):
+ (WebCore::JSDOMWindow::open):
+ (WebCore::JSDOMWindow::showModalDialog):
+ * bindings/js/JSDOMWindowCustom.h:
+ (WebCore::JSDOMWindow::customGetOwnPropertySlot):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::parseModalDialogFeatures): Move from JSDOMWindowBase.
+ (WebCore::DOMWindow::allowPopUp): Ditto.
+ (WebCore::DOMWindow::canShowModalDialog): Ditto.
+ (WebCore::DOMWindow::canShowModalDialogNow): Ditto.
+ * page/DOMWindow.h:
+ * page/DOMWindow.idl:
+
+2009-04-13 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Moved storage for window event listeners into the window object.
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::addEventListener):
+ (WebCore::JSDOMWindow::removeEventListener): Add / remove window event
+ listeners to / from the window object.
+
+ * dom/Document.cpp:
+ (WebCore::Document::removeAllEventListeners):
+ (WebCore::Document::clear):
+ (WebCore::Document::setWindowInlineEventListenerForTypeAndAttribute): Moved
+ a bunch of code to the DOMWindow class, and left behind a few calls through
+ to DOMWindow, to support legacy clients. (Eventually, these will go away, too.)
+
+ * dom/Document.h: ditto.
+
+ * dom/Node.cpp:
+ (WebCore::Node::dispatchGenericEvent):
+ (WebCore::Node::dispatchWindowEvent): Dipatch window events on the window
+ object, not the document.
+
+ * dom/Node.h:
+ * dom/RegisteredEventListener.h: Moved RegisteredEventListenerVector
+ declaration, since it's required in more places now.
+
+ * history/CachedFrame.cpp:
+ (WebCore::CachedFrame::clear): Updated for rename. Also, remove event
+ listeners before detaching and clearing the document's window pointer,
+ since the the document needs its window pointer in order to tell the window
+ to clear its event listeners.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::stopLoading):
+ (WebCore::FrameLoader::canCachePageContainingThisFrame):
+ (WebCore::FrameLoader::logCanCacheFrameDecision): Updated for rename, and
+ movement of window event listeners into the window.
+
+ * loader/ImageDocument.cpp:
+ (WebCore::ImageDocument::createDocumentStructure): Updated for movement
+ of window event listeners into the window.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::handleEvent):
+ (WebCore::DOMWindow::addEventListener):
+ (WebCore::DOMWindow::removeEventListener):
+ (WebCore::DOMWindow::removeAllEventListeners):
+ (WebCore::DOMWindow::hasEventListener):
+ (WebCore::DOMWindow::setInlineEventListenerForType):
+ (WebCore::DOMWindow::removeInlineEventListenerForType):
+ (WebCore::DOMWindow::inlineEventListenerForType):
+ (WebCore::DOMWindow::addPendingFrameUnloadEventCount):
+ (WebCore::DOMWindow::removePendingFrameUnloadEventCount):
+ (WebCore::DOMWindow::addPendingFrameBeforeUnloadEventCount):
+ (WebCore::DOMWindow::removePendingFrameBeforeUnloadEventCount):
+ * page/DOMWindow.h: Moved a bunch of code to the DOMWindow class, from the Document.
+
+ * page/Frame.cpp:
+ (WebCore::Frame::shouldClose): Updated for movement of window event listeners into the window.
+
+2009-04-13 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25149
+
+ The Geolocation timer needs to start after the UA has granted permission.
+
+ * bindings/js/JSGeolocationCustom.cpp: Use PassRefPtr<PositionOptions>
+ (WebCore::JSGeolocation::getCurrentPosition):
+ (WebCore::JSGeolocation::watchPosition):
+ * page/Geolocation.cpp: Add a RefPtr<PositionOptions> so it can be used
+ later when the timer is started. Change PositionOptions* to PassRefPtr<PositionOptions>
+ where needed.
+ (WebCore::Geolocation::GeoNotifier::GeoNotifier):
+ (WebCore::Geolocation::GeoNotifier::startTimer):
+ (WebCore::Geolocation::getCurrentPosition):
+ (WebCore::Geolocation::watchPosition):
+ (WebCore::Geolocation::setIsAllowed): Start the timer is the UA allows
+ (WebCore::Geolocation::startTimer):
+ (WebCore::Geolocation::startTimersForOneShots):
+ (WebCore::Geolocation::startTimersForWatchers):
+ (WebCore::Geolocation::startTimers):
+ * page/Geolocation.h:
+ (WebCore::Geolocation::GeoNotifier::create):
+
+2009-04-13 Pamela Greene <pam@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Fix Chromium (V8) build by renaming methods to match changes
+ in http://trac.webkit.org/changeset/42377.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25141
+
+ * bindings/v8/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::execute): updateRendering() -> updateStyleIfNeeded()
+ * bindings/v8/V8AbstractEventListener.cpp:
+ (WebCore::V8AbstractEventListener::handleEvent): updateDocumentsRendering() -> updateStyleForAllDocuments()
+
+2009-04-13 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25136
+ CRASH in DocumentLoader::removeSubresourceLoader due to null m_frame
+
+ Test: fast/frames/frame-unload-crash.html
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::updateLoading): Added null check of m_frame.
+
+2009-04-13 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Tim Hatcher.
+
+ Put the MessagePort constructor back in ENABLE_CHANNEL_MESSAGING.
+
+ * page/DOMWindow.idl:
+
+2009-04-13 Greg Bolsinga <bolsinga@apple.com>
+
+ Fix GTK build break.
+
+ * platform/gtk/GeolocationServiceGtk.cpp:
+ (WebCore::GeolocationServiceGtk::updatePosition):
+
+2009-04-13 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Darin Adler and Dan Bernstein.
+
+ Assertion in updateStyleForAllDocuments. Make sure to unscheduleStyleRecalc when an object goes into
+ the page cache. Disallow scheduling of style recalcs on a document that is already in the page cache.
+ Schedule a style recalc if needed when an object comes out of the page cache.
+
+ * dom/Document.cpp:
+ (WebCore::Document::scheduleStyleRecalc):
+ (WebCore::Document::setInPageCache):
+
+2009-04-13 Timothy Hatcher <timothy@apple.com>
+
+ Correctly sort (program) scripts in the Scripts panel popup menu.
+
+ Reviewed by Ada Chan.
+
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel.prototype._addScriptToFilesMenu): Refactor the code
+ and sort "(program)" options by the sourceID to maintain some order.
+ * inspector/front-end/utilities.js:
+ (indexOfObjectInListSortedByFunction): Fix a bug where identical objects would cause
+ an incorrect return value that confuses insertionIndexForObjectInListSortedByFunction.
+ Just set 'first' and break so the correct result will be returned.
+
+2009-04-13 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24770
+
+ Add custom code for Coordinates that returns null when required by the
+ Geolocation spec.
+
+ http://dev.w3.org/geo/api/spec-source.html#coordinates
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSCoordinatesCustom.cpp: Added.
+ (WebCore::JSCoordinates::altitude): returns null if the value cannot be provided.
+ (WebCore::JSCoordinates::altitudeAccuracy): Ditto
+ (WebCore::JSCoordinates::heading): Ditto
+ (WebCore::JSCoordinates::speed): Ditto
+ * page/Coordinates.h:
+ (WebCore::Coordinates::create): Add 'canProvide' parameters and values
+ (WebCore::Coordinates::canProvideAltitude):
+ (WebCore::Coordinates::canProvideAltitudeAccuracy):
+ (WebCore::Coordinates::canProvideHeading):
+ (WebCore::Coordinates::canProvideSpeed):
+ (WebCore::Coordinates::Coordinates):
+ * page/Coordinates.idl: specify custom getters
+ * platform/mac/GeolocationServiceMac.mm: Set the values correctly if they cannot be provided.
+ (-[WebCoreCoreLocationObserver locationManager:didUpdateToLocation:fromLocation:]):
+
+2009-04-13 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for <rdar://problem/5510537> Typing return at start of block quote yields empty quoted line
+
+ Test: editing/inserting/5510537.html
+
+ * editing/BreakBlockquoteCommand.cpp: (WebCore::BreakBlockquoteCommand::doApply): If the break insertion position
+ is at the beginning of the topmost quote, then just insert the <br> before the blockquote. Otherwise, if the break
+ insertion position is at the beginning of any quote, adjust the position so the break comes before the current quote level
+ so we don't end up with an empty line in that quote in addition to the new line we're adding with the <br>.
+
+2009-04-11 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Fix problem when encoding history files with duplicate integer arrays near the end of the file.
+ This results in an assertion failure, and if assertions are turned off, corrupted output.
+
+ When writing an integer array it's important not to add an object reference to the
+ aggregate buffer. The writing of the array does not depend on the aggregate buffer. But,
+ more importantly, it's possible this instance integer array is a duplicate and won't be
+ written out. If so, there's no guarantee there's enough space in the aggregate buffer to
+ store the object references (the references will be ignored). In some cases the aggregate
+ buffer can then overrun the data being written; normally this is prevented by the fact that
+ the data being written will include a copy of the aggregate buffer.
+
+ Also removed a bit of unneeded dead code to handle the integer -1.
+
+ * platform/cf/BinaryPropertyList.cpp:
+ (WebCore::BinaryPropertyListPlan::BinaryPropertyListPlan): Removed unneeded
+ m_integerNegativeOneObjectReference, since property lists support only non-negative integers.
+ (WebCore::BinaryPropertyListPlan::writeInteger): Removed support for
+ m_integerNegativeOneObjectReference.
+ (WebCore::BinaryPropertyListPlan::integerObjectReference): Ditto.
+ (WebCore::BinaryPropertyListSerializer::writeIntegerWithoutAddingAggregateObjectReference):
+ Added. Factored out most of writeInteger, for use in writeIntegerArray, without calling
+ addAggregateObjectReference.
+ (WebCore::BinaryPropertyListSerializer::writeInteger): Changed to call the new
+ writeIntegerWithoutAddingAggregateObjectReference function.
+ (WebCore::BinaryPropertyListSerializer::writeIntegerArray): Call the new
+ writeIntegerWithoutAddingAggregateObjectReference function and therefore remove the
+ code to save and restore m_currentAggregateBufferByte, which is no longer needed.
+
+2009-04-13 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed Qt build fix.
+
+ * platform/graphics/qt/FontQt.cpp:
+ (WebCore::Font::floatWidthForComplexText):
+
+2009-04-12 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Move the event and crypto attributes and the captureEvents and releaseEvents
+ functions out of JSDOMWindowBase by partially generating them.
+
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::currentEvent): Make const.
+ * bindings/js/JSDOMGlobalObject.h:
+ * bindings/js/JSDOMWindowBase.cpp:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::crypto): Not implemented.
+ (WebCore::JSDOMWindow::event):
+ (WebCore::JSDOMWindow::captureEvents): Not implemented.
+ (WebCore::JSDOMWindow::releaseEvents): Ditto.
+ * page/DOMWindow.idl:
+
+2009-04-12 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Move more attributes out of JSDOMWindowBase by
+ partially generating them.
+
+ - Expose the MessagePort constructor.
+
+ * bindings/js/JSDOMGlobalObject.h:
+ (WebCore::getDOMConstructor):
+ * bindings/js/JSDOMWindowBase.cpp:
+ (setJSDOMWindowBaseEvent):
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::image):
+ (WebCore::JSDOMWindow::option):
+ (WebCore::JSDOMWindow::audio):
+ (WebCore::JSDOMWindow::webKitPoint):
+ (WebCore::JSDOMWindow::webKitCSSMatrix):
+ (WebCore::JSDOMWindow::xMLHttpRequest):
+ (WebCore::JSDOMWindow::xSLTProcessor):
+ (WebCore::JSDOMWindow::messageChannel):
+ (WebCore::JSDOMWindow::worker):
+ * page/DOMWindow.idl:
+
+2009-04-12 Timothy Hatcher <timothy@apple.com>
+
+ A resource's filename is not correct after a redirect in the Inspector.
+
+ Reviewed by Dan Bernstein.
+
+ * inspector/InspectorResource.cpp:
+ (WebCore::InspectorResource::updateScriptObject): Fix a typo in the
+ lastPathComponent property name.
+
+2009-04-12 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Test: editing/inserting/6609479-1.html
+
+ Follow-up to <rdar://problem/6609479>.
+
+ Before my last change, a Mail blockquote would've been broken up earlier, and you would've been guaranteed that the inserted content
+ was at the start of a paragraph. Now we need to check for that explicitly, and only merge the start of the inserted content if it is
+ at the start of a paragraph.
+
+ * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::shouldMergeStart):
+
+2009-04-11 Adele Peterson <adele@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for <rdar://problem/6609479> Pressing return inside a table cell that's inside quoted content will split the table
+
+ Test: editing/inserting/6609479.html
+
+ Don't break a blockquote if pasting or inserting into a table.
+
+ * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::doApply):
+ * editing/TypingCommand.cpp: (WebCore::TypingCommand::insertParagraphSeparatorInQuotedContent):
+
+2009-04-11 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix <rdar://problem/6643103> Unscaled values from body.scrollHeight
+
+ Test: fast/css/zoom-body-scroll.html
+
+ Adjust scroll{Left,Top,Width,Height} values for zoom in getters and
+ setters.
+
+ * html/HTMLBodyElement.cpp:
+ (WebCore::adjustForZoom):
+ (WebCore::HTMLBodyElement::scrollLeft):
+ (WebCore::HTMLBodyElement::setScrollLeft):
+ (WebCore::HTMLBodyElement::scrollTop):
+ (WebCore::HTMLBodyElement::setScrollTop):
+ (WebCore::HTMLBodyElement::scrollHeight):
+ (WebCore::HTMLBodyElement::scrollWidth):
+
+2009-04-10 Timothy Hatcher <timothy@apple.com>
+
+ Allow page navigation and reload while stopped at a breakpoint.
+
+ <rdar://problem/6781108> Having a breakpoint active prevents page reload
+
+ Reviewed by Darin Adler.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::didContinue): Call the resumedScript function.
+ * inspector/InspectorController.h: Added didContinue.
+ * inspector/JavaScriptDebugListener.h: Ditto.
+ * inspector/JavaScriptDebugServer.cpp:
+ (WebCore::JavaScriptDebugServer::pauseIfNeeded): Call didContinue on the listeners.
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel.prototype.debuggerResumed): Update the interface and state.
+ * inspector/front-end/inspector.js:
+ (WebInspector.resumedScript): Call ScriptsPanel.debuggerResumed.
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): Call resumeDebugger.
+
+2009-04-10 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Adele Peterson.
+
+ Remove unused include for JSLock.
+
+ * page/mac/FrameMac.mm:
+
+2009-04-10 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Add back the keepAlive timer for after the script execution to
+ protect the callers of evaluate, as was part of the original intent
+ of timer.
+
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::evaluate):
+ * page/mac/FrameMac.mm:
+
+2009-04-10 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Fixed https://bugs.webkit.org/show_bug.cgi?id=25137
+
+ If we reload, the animation controller sticks around and has
+ a stale animation time. So the needed delay is computed wrong.
+ I added a reset of the animation timer on load.
+
+ I did not do a test case because this only happens on reload so I
+ couldn't make an automated test. I tried using an iframe and using
+ reload() but that doesn't tickle the bug.
+
+ * dom/Document.cpp:
+ (WebCore::Document::implicitOpen):
+
+2009-04-10 Grace Kloba <klobag@gmail.com>
+
+ Reviewed by Darin Adler.
+
+ Move WORKERS header files inside ENABLE(WORKERS).
+ So if WORKERS is not enabled and the generated files are not generated, the build is still working.
+
+ * bindings/js/JSDOMGlobalObject.cpp:
+ * bindings/js/JSMessageChannelConstructor.cpp:
+ * bindings/js/ScheduledAction.cpp:
+
+2009-04-10 Darin Adler <darin@apple.com>
+
+ Reviewed by Brady Eidson.
+
+ <rdar://problem/6773515> crash in push_heap inside WebCore when printing
+
+ The crash was due to manipulating a timer on a different thread than the one it was created on.
+ This adds some diagnostics so we'll catch that kind of mistake immediately.
+
+ * platform/Timer.cpp:
+ (WebCore::TimerBase::TimerBase): Store the thread identifier in debug versions.
+ (WebCore::TimerBase::start): Assert it's the same thread the timer was created on.
+ (WebCore::TimerBase::stop): Ditto.
+ (WebCore::TimerBase::isActive): Ditto.
+ (WebCore::TimerBase::setNextFireTime): Ditto.
+
+ * platform/Timer.h: Added the thread identifier data member.
+
+2009-04-10 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=25108
+
+ If you remove a class with a transition while that transition is running
+ the animation timer will continue to fire after the transition is finished.
+ This has no visual indication, but it does drain the processor. And in some
+ cases it might even cause a glitch in future animations. Unfortunately there
+ is no way to test this without putting in printfs.
+
+ This happens because the animation logic is never traversed after a transition
+ is removed, so we never get a chance to cleanup. So I added cleanup in the logic
+ that fires the dispatch of the last style change when the animation finishes.
+
+ Test: transitions/remove-transition-style.html
+
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::updateStyleIfNeededDispatcherFired):
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimation::updateTransitions):
+ (WebCore::CompositeAnimation::animate):
+ (WebCore::CompositeAnimation::cleanupFinishedAnimations):
+ * page/animation/CompositeAnimation.h:
+
+2009-04-10 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Fix for <rdar://problem/6648858>
+ CrashTracer: [REGRESSION(Safari 4)] 60 crashes in Safari at com.apple.WebCore • WebCore::ScriptController::evaluate + 241
+
+ The Frame (and therefore ScriptController) were being destroyed
+ during JavaScript execution causing the JSDOMWindowShell to become
+ null.
+
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::evaluate): Use a RefPtr to protect the Frame
+ instead of the keep-alive timer, since a nested event loop used from with-in
+ JavaScript execution could cause the timer to fire before returning.
+
+2009-04-10 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25133
+ Fix an error in InspectorController's bindings, clean up a few header
+ includes, make empty object construction in ScriptObject less ambiguous.
+
+ * bindings/js/JSInspectorControllerCustom.cpp:
+ (WebCore::JSInspectorController::setSetting): Send correct argument from
+ the bindings.
+ * bindings/js/ScriptObject.cpp:
+ (WebCore::ScriptObject::createNew): Added.
+ * bindings/js/ScriptObject.h: Removed constructor, added decl for createNew.
+ * inspector/ConsoleMessage.cpp: Remove unused header.
+ * inspector/ConsoleMessage.h: Ditto.
+ * inspector/InspectorResource.cpp:
+ (WebCore::createHeadersObject): Changed to use ScriptObject::createNew.
+
+2009-04-10 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Fixed https://bugs.webkit.org/show_bug.cgi?id=25134
+
+ This both fixes a bug where I was not sending in the right time
+ to continue the animation and was not recomputing current time
+ when coming out of suspend.
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::AnimationBase::updateStateMachine):
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::suspendAnimations):
+ (WebCore::AnimationControllerPrivate::resumeAnimations):
+
+2009-04-10 Adam Roben <aroben@apple.com>
+
+ Give Windows's <select> popup menus drop shadows
+
+ Rubber-stamped by Steve Falkenburg.
+
+ No test possible.
+
+ * platform/win/PopupMenuWin.cpp:
+ (WebCore::registerPopup): Use the CS_DROPSHADOW window class style.
+
+2009-04-10 Timothy Hatcher <timothy@apple.com>
+
+ Fix a bug in the Web Inspector where it would show scripts
+ from previous pages when toggling the debugger off and back on.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25095
+ rdar://problem/6769970
+
+ Reviewed by John Sullivan.
+
+ * bindings/js/ScriptCachedFrameData.cpp:
+ (WebCore::ScriptCachedFrameData::ScriptCachedFrameData): Null out the
+ debugger for the scriptController. This balances the attachDebugger
+ that was already in ScriptCachedFrameData::restore.
+ (WebCore::ScriptCachedFrameData::restore): Clean up an if statement.
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::clearWindowShell): Clear the debugger from
+ the current window before setting the new window.
+ * inspector/JavaScriptDebugServer.cpp:
+ (WebCore::JavaScriptDebugServer::recompileAllJSFunctions): Only accumulate
+ source providers for code associated this as the debugger.
+
+2009-04-10 Pierre d'Herbemont <pdherbemont@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ <rdar://problem/6646998> Avoid starting QTKitServer if possible
+ When possible avoid asking QTKit for the MIME types that require QTKitServer
+ when running 64-bit.
+
+ * WebCore.base.exp: Added new entry point.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::addFileTypesToCache): Add an NSArray of types to the cache.
+ (WebCore::mimeCommonTypesCache): Add all "common" QTKit types to the cache.
+ (WebCore::mimeModernTypesCache): Add only "modern" QTKit types to the cache (this list does
+ not start QTKitServer if it is not already running).
+ (WebCore::MediaPlayerPrivate::getSupportedTypes): Refactored.
+ (WebCore::MediaPlayerPrivate::supportsType): Look in list of "modern" types first to avoid
+ starting QTKitServer if possible.
+
+ * platform/mac/WebCoreSystemInterface.h: Add wkQTIncludeOnlyModernMediaFileTypes.
+ * platform/mac/WebCoreSystemInterface.mm: Ditto.
+
+2009-04-10 Adam Roben <aroben@apple.com>
+
+ Turn on window animations for <select> popup menus
+
+ We turned these off back when <select> popup menus were partially
+ transparent. Now that they're opaque, there's no reason not to
+ animate them.
+
+ Reviewed by Steve Falkenburg.
+
+ No test possible.
+
+ * platform/win/PopupMenuWin.cpp:
+ (WebCore::PopupMenu::show): Remove the #ifdef that was disabling the
+ window animation.
+
+2009-04-10 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - fix a regression from r42379 which made zero-width characters affect
+ line height
+
+ Test: fixes fast/text/wide-zero-width-space.html
+
+ * platform/graphics/mac/FontMacATSUI.mm:
+ (WebCore::overrideLayoutOperation): Add to the fallback font list set
+ here, and only if the glyph is not zero-width...
+ (WebCore::ATSULayoutParameters::initialize): ...instead of doing it
+ here. This matches WidthIterator's behavior.
+
+2009-04-10 Darin Fisher <darin@chromium.org>
+
+ Fixing build bustage caused by warnings being treated as errors.
+ 1- A local variable was only be used inside a debug assertion, which
+ caused grief for the release build.
+ 2- Missing initializer for member 'DocumentMarker::activeMatch'
+
+ * dom/Document.cpp:
+ (WebCore::Document::addMarker):
+ (WebCore::Document::setMarkersActive):
+
+2009-04-10 Finnur Thorarinsson <finnur.webkit@gmail.com>
+
+ Reviewed by John Sullivan.
+
+ Fixing: https://bugs.webkit.org/show_bug.cgi?id=25117
+ (TextMatches don't have a concept of active match)
+
+ For the ports that use the DocumentMarker as highlighting for FindInPage it is
+ useful to have a flag that specifies which marker is active, so it can be drawn
+ in a different color.
+
+ This allows me to remove the hack to use the SelectionController to highlight
+ the active match (in the ChromiumWin port).
+
+ * dom/Document.cpp:
+ (WebCore::Document::setMarkersActive):
+ * dom/Document.h:
+ * dom/DocumentMarker.h:
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::paintTextMatchMarker):
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::platformActiveTextSearchHighlightColor):
+ (WebCore::RenderTheme::platformInactiveTextSearchHighlightColor):
+ * rendering/RenderTheme.h:
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::RenderThemeChromiumWin::platformActiveSelectionBackgroundColor):
+ (WebCore::RenderThemeChromiumWin::platformInactiveSelectionBackgroundColor):
+ (WebCore::RenderThemeChromiumWin::platformActiveTextSearchHighlightColor):
+ (WebCore::RenderThemeChromiumWin::platformInactiveTextSearchHighlightColor):
+ * rendering/RenderThemeChromiumWin.h:
+
+2009-04-10 Pamela Greene <pam@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Build fix for Chromium.
+ https://bugs.webkit.org/show_bug.cgi?id=12440
+
+ * page/chromium/FrameChromium.cpp:
+ (WebCore::computePageRectsForFrame): change docWidth() to overflowWidth()
+
+2009-04-09 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Oliver Hunt
+
+ Add a timer for style recalc (similar to the one used for scheduling layouts). For now in order
+ to reduce the risk of regressions, I have left in all the synchronous machinery for updating style
+ following DOM events and JavaScript timeouts. Eventually these calls will be removed.
+
+ Where the timer will really kick in and be useful is for clients that do style changes from
+ Objective-C DOM bindings or that execute JavaScript to manipulate style from the JavaScriptCore C API.
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::insertBefore):
+ (WebCore::ContainerNode::replaceChild):
+ (WebCore::ContainerNode::removeChild):
+ (WebCore::ContainerNode::appendChild):
+ * dom/Document.cpp:
+ (WebCore::Document::Document):
+ (WebCore::Document::~Document):
+ (WebCore::Document::scheduleStyleRecalc):
+ (WebCore::Document::unscheduleStyleRecalc):
+ (WebCore::Document::styleRecalcTimerFired):
+ (WebCore::Document::updateStyleForAllDocuments):
+ (WebCore::Document::detach):
+ * dom/Document.h:
+ * dom/Node.cpp:
+ (WebCore::Node::setNeedsStyleRecalc):
+ (WebCore::Node::lazyAttach):
+
+2009-04-09 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ <rdar://problem/6586787> JS debugger does not work in 64-bit
+
+ Don't truncate the source id in JSCallFrame
+
+ * inspector/JavaScriptCallFrame.h:
+
+2009-04-09 Adam Roben <aroben@apple.com>
+
+ Start compiling HistoryPropertyList on Windows
+
+ Reviewed by Darin Adler.
+
+ * WebCore.vcproj/WebCore.vcproj: Added HistoryPropertyList and its
+ dependencies to the project. Copy headers from history/cf to
+ $WebKitOutputDir.
+ * history/cf/HistoryPropertyList.cpp: Added StringExtras.h so that
+ this file will compile on Windows.
+
+2009-04-09 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ - fix <rdar://problem/6166612> Text boxes' metrics should be based on
+ the actual fonts used in them, not just the primary font
+
+ Covered by many existing layout tests
+
+ * platform/graphics/Font.cpp:
+ (WebCore::Font::floatWidth): Added a fallbackFonts parameter. If the
+ platform supports collecting fallback fonts in its complex font path
+ and fallbackFonts is not null, all fallback fonts used for the text run
+ will be added to it.
+
+ * platform/graphics/Font.h:
+ (WebCore::Font::width): Ditto.
+
+ * platform/graphics/FontFastPath.cpp:
+ (WebCore::Font::glyphDataForCharacter): Removed an unnecessary namespace
+ qualifier.
+ (WebCore::Font::floatWidthForSimpleText): Added a fallbackFonts
+ parameter, which is passed down to WidthIterator.
+
+ * platform/graphics/WidthIterator.cpp:
+ (WebCore::WidthIterator::WidthIterator): Added a fallbackFonts parameter
+ and used it to initialize the m_fallbackFonts member.
+ (WebCore::WidthIterator::advance): Track the fonts being used and add
+ any fallback fonts to the m_fallbackFonts set. Make sure to only add
+ non-small-caps fonts.
+
+ * platform/graphics/WidthIterator.h:
+
+ * platform/graphics/chromium/FontChromiumWin.cpp:
+ (WebCore::Font::canReturnFallbackFontsForComplexText): Added an
+ implementation that returns false, meaning this platform's
+ implementation of floatWidthForComplexText() does not populate the
+ fallbackFonts set.
+ (WebCore::Font::floatWidthForComplexText): Updated for the new
+ prototype.
+
+ * platform/graphics/chromium/FontLinux.cpp: Ditto.
+
+ * platform/graphics/gtk/FontGtk.cpp: Ditto.
+
+ * platform/graphics/mac/CoreTextController.cpp:
+ (WebCore::CoreTextController::CoreTextController): Added a fallbackFonts
+ parameter and used it to initialize the m_fallbackFonts member.
+ (WebCore::CoreTextController::collectCoreTextRunsForCharacters): Add
+ fallback fonts to m_fallbackFonts.
+
+ * platform/graphics/mac/CoreTextController.h:
+
+ * platform/graphics/mac/FontMac.mm:
+ (WebCore::Font::canReturnFallbackFontsForComplexText): Added an
+ implementation that returns true, indicating that the Mac
+ implementations of floatWidthForComplexText() populate the fallbackFonts
+ set.
+ * platform/graphics/mac/FontMacATSUI.mm:
+ (WebCore::ATSULayoutParameters::ATSULayoutParameters): Added a
+ fallbackFonts parameter and used it to initialize the m_fallbackFonts
+ member.
+ (WebCore::ATSULayoutParameters::initialize): Add fallback fonts to
+ m_fallbackFonts.
+ (WebCore::Font::floatWidthForComplexText): Added a fallbackFonts
+ parameter, which is passed down to ATSULayoutParameters.
+
+ * platform/graphics/mac/FontMacCoreText.cpp:
+ (WebCore::Font::floatWidthForComplexText): Added a fallbackFonts
+ parameter, which is passed down to CoreTextController.
+
+ * platform/graphics/win/FontWin.cpp:
+ (WebCore::Font::canReturnFallbackFontsForComplexText): Added an
+ implementation that returns true, indicating that the
+ UniscribeController-based implementations of floatWidthForComplexText()
+ populate the fallbackFonts set.
+ (WebCore::Font::floatWidthForComplexText): Added a fallbackFonts
+ parameter, which is passed down to UniscribeController.
+
+ * platform/graphics/win/UniscribeController.cpp:
+ (WebCore::UniscribeController::UniscribeController): Added a
+ fallbackfonts parameter and used it to initialize m_fallbackFonts.
+ (WebCore::UniscribeController::advance): Add fallback fonts to
+ m_fallbackFonts.
+
+ * platform/graphics/win/UniscribeController.h:
+
+ * platform/graphics/wx/FontWx.cpp:
+ (WebCore::Font::canReturnFallbackFontsForComplexText): Added an
+ implementation that returns false, meaning this platform's
+ implementation of floatWidthForComplexText() does not populate the
+ fallbackFonts set.
+ (WebCore::Font::floatWidthForComplexText): Updated for the new
+ prototype.
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::computeLogicalBoxHeights): For an InlineTextBox
+ with multiple fonts, compute a common baseline and line height by
+ considering all fonts' ascents and descents (and line spacing, if
+ applicable).
+
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::setFallbackFonts): Added. Temporarily stores
+ the set of fallback fonts in a vector.
+ (WebCore::InlineTextBox::takeFallbackFonts): Added. Returns the fallback
+ fonts previously stored and removes them from storage.
+
+ * rendering/InlineTextBox.h:
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::RenderText): Initialized the
+ m_knownNotToUseFallbackFonts to false.
+ (WebCore::RenderText::styleDidChange): Reset
+ m_knownNotToUseFallbackFonts to false if the style difference is such that
+ affects layout.
+ (WebCore::RenderText::widthFromCache): Added a fallbackFonts parameter,
+ which is passed down to Font::width().
+ (WebCore::RenderText::trimmedPrefWidths): Updated for the change to
+ widthFromCache().
+ (WebCore::RenderText::calcPrefWidths): Made this call a private version
+ of calcPrefWidths() that takes a fallbackFonts parameter and set the
+ m_knownNotToUseFallbackFonts to true if the set comes back empty.
+ The private version passes the fallbackFonts set to widthFromCache().
+ (WebCore::RenderText::setText): Reset m_knownNotToUseFallbackFonts to
+ false.
+ (WebCore::RenderText::createFallbackFontMetricsBox): Added.
+ (WebCore::RenderText::width): Added a fallbackFonts parameter, which is
+ passed down to calcPrefWidths(), widthFromCache() and Font::width().
+ Set m_knownNotToUseFallbackFonts to true when appropriate.
+
+ * rendering/RenderText.h:
+
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::constructLine): Added an assertion and a continue
+ statement to remove one level of indentation.
+ (WebCore::RenderBlock::computeHorizontalPositionsForLine): Temporarily
+ store the set of fallback fonts in the InlineTextBox.
+ (WebCore::RenderBlock::computeVerticalPositionsForLine): Added an
+ assertion.
+
+2009-04-09 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Adam Roben
+
+ Rename all of the changed()/setChanged()/setDocumentChanged() methods to mention style recalc
+ explicitly instead.
+
+ * bindings/js/JSCustomPositionCallback.cpp:
+ (WebCore::JSCustomPositionCallback::handleEvent):
+ * bindings/js/JSCustomPositionErrorCallback.cpp:
+ (WebCore::JSCustomPositionErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLStatementCallback.cpp:
+ (WebCore::JSCustomSQLStatementCallback::handleEvent):
+ * bindings/js/JSCustomSQLStatementErrorCallback.cpp:
+ (WebCore::JSCustomSQLStatementErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionCallback.cpp:
+ (WebCore::JSCustomSQLTransactionCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
+ (WebCore::JSCustomSQLTransactionErrorCallback::handleEvent):
+ * bindings/js/JSCustomVoidCallback.cpp:
+ (WebCore::JSCustomVoidCallback::handleEvent):
+ * bindings/js/JSCustomXPathNSResolver.cpp:
+ (WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSAbstractEventListener::handleEvent):
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::execute):
+ * bindings/js/ScriptControllerMac.mm:
+ (WebCore::updateStyleIfNeededForBindings):
+ (WebCore::ScriptController::initJavaJSBindings):
+ * css/CSSMutableStyleDeclaration.cpp:
+ (WebCore::CSSMutableStyleDeclaration::removeProperty):
+ (WebCore::CSSMutableStyleDeclaration::setNeedsStyleRecalc):
+ (WebCore::CSSMutableStyleDeclaration::setProperty):
+ (WebCore::CSSMutableStyleDeclaration::setStringProperty):
+ (WebCore::CSSMutableStyleDeclaration::setImageProperty):
+ (WebCore::CSSMutableStyleDeclaration::parseDeclaration):
+ (WebCore::CSSMutableStyleDeclaration::addParsedProperties):
+ (WebCore::CSSMutableStyleDeclaration::setCssText):
+ (WebCore::CSSMutableStyleDeclaration::merge):
+ (WebCore::CSSMutableStyleDeclaration::removePropertiesInSet):
+ * css/CSSMutableStyleDeclaration.h:
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::SelectorChecker::allVisitedStateChanged):
+ (WebCore::CSSStyleSelector::SelectorChecker::visitedStateChanged):
+ * css/CSSVariablesDeclaration.cpp:
+ (WebCore::CSSVariablesDeclaration::removeVariable):
+ (WebCore::CSSVariablesDeclaration::setVariable):
+ (WebCore::CSSVariablesDeclaration::setNeedsStyleRecalc):
+ * css/CSSVariablesDeclaration.h:
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::insertBefore):
+ (WebCore::ContainerNode::replaceChild):
+ (WebCore::ContainerNode::removeChild):
+ (WebCore::ContainerNode::appendChild):
+ (WebCore::ContainerNode::detach):
+ (WebCore::ContainerNode::setFocus):
+ (WebCore::ContainerNode::setActive):
+ (WebCore::ContainerNode::setHovered):
+ * dom/Document.cpp:
+ (WebCore::Document::Document):
+ (WebCore::Document::~Document):
+ (WebCore::Document::scheduleStyleRecalc):
+ (WebCore::Document::unscheduleStyleRecalc):
+ (WebCore::Document::recalcStyle):
+ (WebCore::Document::updateStyleIfNeeded):
+ (WebCore::Document::updateStyleForAllDocuments):
+ (WebCore::Document::updateLayout):
+ (WebCore::Document::implicitClose):
+ (WebCore::Document::prepareMouseEvent):
+ (WebCore::Document::setFocusedNode):
+ (WebCore::Document::setCSSTarget):
+ * dom/Document.h:
+ * dom/Element.cpp:
+ (WebCore::Element::recalcStyle):
+ (WebCore::checkForSiblingStyleChanges):
+ * dom/InputElement.cpp:
+ (WebCore::InputElement::parseMaxLengthAttribute):
+ * dom/MouseRelatedEvent.cpp:
+ (WebCore::MouseRelatedEvent::receivedTarget):
+ * dom/Node.cpp:
+ (WebCore::Node::Node):
+ (WebCore::Node::setNeedsStyleRecalc):
+ (WebCore::Node::lazyAttach):
+ (WebCore::Node::dispatchGenericEvent):
+ * dom/Node.h:
+ (WebCore::Node::needsStyleRecalc):
+ (WebCore::Node::childNeedsStyleRecalc):
+ (WebCore::Node::setChildNeedsStyleRecalc):
+ * dom/OptionElement.cpp:
+ (WebCore::OptionElement::setSelectedState):
+ * dom/ScriptElement.cpp:
+ (WebCore::ScriptElementData::evaluateScript):
+ * dom/StyledElement.cpp:
+ (WebCore::StyledElement::attributeChanged):
+ (WebCore::StyledElement::classAttributeChanged):
+ (WebCore::StyledElement::parseMappedAttribute):
+ * dom/Text.cpp:
+ (WebCore::Text::recalcStyle):
+ * dom/XMLTokenizer.cpp:
+ (WebCore::XMLTokenizer::insertErrorMessageBlock):
+ * editing/DeleteButtonController.cpp:
+ (WebCore::DeleteButtonController::enable):
+ * editing/Editor.cpp:
+ (WebCore::Editor::setBaseWritingDirection):
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::nodeWillBeRemoved):
+ (WebCore::SelectionController::layout):
+ (WebCore::SelectionController::focusedOrActiveStateChanged):
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::parseMappedAttribute):
+ * html/HTMLElement.cpp:
+ (WebCore::HTMLElement::setInnerText):
+ (WebCore::HTMLElement::isContentEditable):
+ (WebCore::HTMLElement::isContentRichlyEditable):
+ (WebCore::HTMLElement::contentEditable):
+ * html/HTMLEmbedElement.cpp:
+ (WebCore::HTMLEmbedElement::updateWidget):
+ * html/HTMLFormControlElement.cpp:
+ (WebCore::HTMLFormControlElement::parseMappedAttribute):
+ * html/HTMLFrameSetElement.cpp:
+ (WebCore::HTMLFrameSetElement::parseMappedAttribute):
+ (WebCore::HTMLFrameSetElement::recalcStyle):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::parseMappedAttribute):
+ (WebCore::HTMLInputElement::setChecked):
+ (WebCore::HTMLInputElement::setIndeterminate):
+ (WebCore::HTMLInputElement::setValue):
+ (WebCore::HTMLInputElement::setAutofilled):
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::finishParsingChildren):
+ * html/HTMLObjectElement.cpp:
+ (WebCore::HTMLObjectElement::updateWidget):
+ (WebCore::HTMLObjectElement::finishParsingChildren):
+ (WebCore::HTMLObjectElement::childrenChanged):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::recalcStyle):
+ (WebCore::HTMLSelectElement::restoreState):
+ (WebCore::HTMLSelectElement::setRecalcListItems):
+ (WebCore::HTMLSelectElement::reset):
+ (WebCore::HTMLSelectElement::typeAheadFind):
+ * html/HTMLTableElement.cpp:
+ (WebCore::setTableCellsChanged):
+ (WebCore::HTMLTableElement::parseMappedAttribute):
+ * html/HTMLTextAreaElement.cpp:
+ (WebCore::HTMLTextAreaElement::setValue):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::stopLoading):
+ (WebCore::FrameLoader::executeScript):
+ (WebCore::FrameLoader::gotoAnchor):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::alert):
+ (WebCore::DOMWindow::confirm):
+ (WebCore::DOMWindow::prompt):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::hoverTimerFired):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::layout):
+ (WebCore::FrameView::needsLayout):
+ * page/animation/AnimationBase.cpp:
+ (WebCore::AnimationBase::setNeedsStyleRecalc):
+ (WebCore::AnimationBase::updateStateMachine):
+ * page/animation/AnimationBase.h:
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::AnimationControllerPrivate):
+ (WebCore::AnimationControllerPrivate::clear):
+ (WebCore::AnimationControllerPrivate::updateAnimationTimer):
+ (WebCore::AnimationControllerPrivate::updateStyleIfNeededDispatcherFired):
+ (WebCore::AnimationControllerPrivate::startupdateStyleIfNeededDispatcher):
+ (WebCore::AnimationControllerPrivate::addEventToDispatch):
+ (WebCore::AnimationControllerPrivate::addNodeChangeToDispatch):
+ (WebCore::AnimationControllerPrivate::animationTimerFired):
+ (WebCore::AnimationControllerPrivate::pauseAnimationAtTime):
+ (WebCore::AnimationControllerPrivate::pauseTransitionAtTime):
+ (WebCore::AnimationControllerPrivate::addToStartTimeResponseWaitList):
+ (WebCore::AnimationController::cancelAnimations):
+ * page/animation/AnimationControllerPrivate.h:
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::sendTransitionEvent):
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::endAnimation):
+ (WebCore::KeyframeAnimation::sendAnimationEvent):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::updateDragState):
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::selectionBounds):
+ * svg/SVGAElement.cpp:
+ (WebCore::SVGAElement::svgAttributeChanged):
+ * svg/SVGAnimationElement.cpp:
+ (WebCore::SVGAnimationElement::setTargetAttributeAnimatedValue):
+ * svg/SVGCursorElement.cpp:
+ (WebCore::SVGCursorElement::svgAttributeChanged):
+ * svg/SVGElementInstance.cpp:
+ (WebCore::SVGElementInstance::setNeedsUpdate):
+ * svg/SVGForeignObjectElement.cpp:
+ (WebCore::addCSSPropertyAndNotifyAttributeMap):
+ * svg/SVGStopElement.cpp:
+ (WebCore::SVGStopElement::parseMappedAttribute):
+ * svg/SVGStyledElement.cpp:
+ (WebCore::SVGStyledElement::parseMappedAttribute):
+ * svg/SVGUseElement.cpp:
+ (WebCore::SVGUseElement::svgAttributeChanged):
+ (WebCore::SVGUseElement::childrenChanged):
+ (WebCore::SVGUseElement::recalcStyle):
+ * svg/animation/SMILTimeContainer.cpp:
+ (WebCore::SMILTimeContainer::updateAnimations):
+ * wml/WMLAElement.cpp:
+ (WebCore::WMLAElement::parseMappedAttribute):
+ * wml/WMLInputElement.cpp:
+ (WebCore::WMLInputElement::setValue):
+ (WebCore::WMLInputElement::parseMappedAttribute):
+ * wml/WMLNoopElement.cpp:
+ (WebCore::WMLNoopElement::insertedIntoDocument):
+
+2009-04-09 Brett Wilson <brettw@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ When there is a shadow set but it specifies "no shadow", clear the
+ shadow shader. This will prevent Chromium from thinking there's a
+ shadow and using the Skia codepath rather than Windows.
+
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::setPlatformShadow):
+
+2009-04-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Crash when accessing svg.viewport on a detached SVGSVGElement
+ https://bugs.webkit.org/show_bug.cgi?id=25105
+
+ * svg/SVGSVGElement.cpp:
+ (WebCore::SVGSVGElement::isOutermostSVG): return "true" that we are the "outermost" SVG element if we have no parent. (The spec is unclear as to what behavior we should have in this case, and I doubt anyone cares for now).
+
+2009-04-09 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25084
+ Upstream changes to V8 bindings for XHR so that it can work under either DOMWindow or WorkerContext.
+
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::WorkerContextExecutionProxy::dispose):
+ (WebCore::WorkerContextExecutionProxy::retrieve):
+ (WebCore::WorkerContextExecutionProxy::initContextIfNeeded):
+ (WebCore::WorkerContextExecutionProxy::findOrCreateEventListenerHelper):
+ (WebCore::WorkerContextExecutionProxy::FindOrCreateEventListener):
+ (WebCore::WorkerContextExecutionProxy::findOrCreateObjectEventListener):
+ * bindings/v8/WorkerContextExecutionProxy.h:
+ * bindings/v8/custom/V8XMLHttpRequestConstructor.cpp:
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8XMLHttpRequestCustom.cpp:
+ (WebCore::getEventListener):
+ (WebCore::ACCESSOR_SETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-04-09 Darin Adler <darin@apple.com>
+
+ Reviewed by Anders Carlsson and Sam Weinig.
+
+ Part of <rdar://problem/5438063> Saving history containing 100,000 entries causes pauses of 2s while browsing
+
+ Longer term solution is to change the design so Safari doesn't read and write all of history.
+ This patch is step one: Do the serializing, which is done on the main thread, much faster.
+
+ * WebCore.base.exp: Added new entry points.
+ * WebCore.xcodeproj/project.pbxproj: Added new source files.
+
+ * history/cf: Added.
+
+ * history/cf/HistoryPropertyList.cpp: Added.
+ * history/cf/HistoryPropertyList.h: Added. Code to write history files. In the future we'll also
+ have code for reading here too.
+
+ * platform/cf/BinaryPropertyList.cpp: Added.
+ * platform/cf/BinaryPropertyList.h: Added. Code to write binary property list files.
+
+2009-04-09 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Antti Koivisto
+
+ https://bugs.webkit.org/show_bug.cgi?id=25122
+
+ If deferred repainting is active, we need to ensure that there are no repaints
+ pending at the end of layoutIfNeededRecursive, which is called just before
+ painting via -viewWillDraw.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::layoutIfNeededRecursive):
+
+2009-04-09 John Grabowski <jrg@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25117
+ Fix Mac Chromium form controls.
+
+ * rendering/RenderThemeChromiumMac.mm:
+ When rendering native controls in Mac Chromium, use a clean NSGraphicsContext.
+ Properly save and restore native graphics context.
+ (WebCore::RenderThemeChromiumMac::paintCheckbox):
+ (WebCore::RenderThemeChromiumMac::paintRadio):
+ (WebCore::RenderThemeChromiumMac::paintMenuList):
+ (WebCore::RenderThemeChromiumMac::paintSearchFieldCancelButton):
+ (WebCore::RenderThemeChromiumMac::paintSearchFieldResultsDecoration):
+ (WebCore::RenderThemeChromiumMac::paintSearchFieldResultsButton):
+
+2009-04-09 Drew Wilson <atwilson@google.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25030
+ Refactor MessagePort code to enable Chrome to use a MessagePortProxy object
+ instead of a real MessagePort for the entangledPort, since it could
+ theoretically live in a separate process.
+
+ The goal of this refactoring is to remove all assumptions that the object
+ representing the entangled port is actually of type MessagePort. All
+ operations that were previously directly modifying private MessagePort member
+ variables in the entangled port (i.e. entangle(), postMessage()) have been changed
+ to invoke functions in the MessagePortProxy interface instead which will allow
+ the Chrome bindings to proxy these calls to another process.
+
+ No new layout tests, as this is just a refactoring with no bug fixes
+ or new functionality.
+
+ * GNUmakefile.am:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSMessagePortCustom.cpp:
+ (WebCore::JSMessagePort::mark):
+ * dom/MessagePort.cpp:
+ (WebCore::MessagePort::clone):
+ (WebCore::MessagePort::postMessage):
+ (WebCore::MessagePort::deliverMessage):
+ (WebCore::MessagePort::startConversation):
+ (WebCore::MessagePort::close):
+ (WebCore::MessagePort::entangle):
+ (WebCore::MessagePort::unentangle):
+ * dom/MessagePort.h:
+ (WebCore::MessagePort::entangledPort):
+ * dom/MessagePortProxy.h: Added.
+ (WebCore::MessagePortProxy::~MessagePortProxy):
+
+2009-04-08 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey "Big Boy" Garen.
+
+ Fix for <rdar://problem/5745677> Possible to stop load during an unload event
+ Also fixes https://bugs.webkit.org/show_bug.cgi?id=20605
+
+ Tests: fast/events/stop-load-in-unload-handler-using-document-write.html
+ fast/events/stop-load-in-unload-handler-using-window-stop.html
+
+ Don't allow calling methods that would stop the new load inside the unload
+ event.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::FrameLoader):
+ (WebCore::FrameLoader::stopLoading):
+ (WebCore::FrameLoader::stopAllLoaders):
+ * loader/FrameLoader.h:
+
+2009-04-09 David Kilzer <ddkilzer@apple.com>
+
+ Reinstating <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings
+
+ Rolled r42345 back in. The build failure was caused by an
+ internal script which had not been updated the same way that
+ build-webkit was updated.
+
+ * Configurations/WebCore.xcconfig:
+ * DerivedSources.make:
+ * bindings/objc/DOM.mm:
+ (WebCore::createElementClassMap):
+ (+[DOMNode _wrapNode:WebCore::]):
+ * bindings/objc/DOMCSS.mm:
+ (+[DOMCSSValue _wrapCSSValue:WebCore::]):
+ * bindings/objc/DOMEvents.mm:
+ (+[DOMEvent _wrapEvent:WebCore::]):
+ * bindings/objc/DOMInternal.h:
+ * bindings/objc/ExceptionHandlers.mm:
+ (WebCore::raiseDOMException):
+ * html/HTMLEmbedElement.idl:
+ * html/HTMLFrameElement.idl:
+ * html/HTMLIFrameElement.idl:
+ * html/HTMLObjectElement.idl:
+
+2009-04-09 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=25109
+
+ Eliminate CompositeAnimationPrivate, which was a needless level
+ of abstraction. Remove the methods like addToStyleAvailableWaitList()
+ that simply turn around and call the animation controller.
+
+ Rename animationControllerPriv() to animationController().
+ Rename willNeedService() to timeToNextService().
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::AnimationBase::~AnimationBase):
+ (WebCore::AnimationBase::updateStateMachine):
+ (WebCore::AnimationBase::timeToNextService):
+ (WebCore::AnimationBase::beginAnimationUpdateTime):
+ * page/animation/AnimationBase.h:
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::updateAnimationTimer):
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimation::~CompositeAnimation):
+ (WebCore::CompositeAnimation::clearRenderer):
+ (WebCore::CompositeAnimation::updateTransitions):
+ (WebCore::CompositeAnimation::updateKeyframeAnimations):
+ (WebCore::CompositeAnimation::animate):
+ (WebCore::CompositeAnimation::getAnimatedStyle):
+ (WebCore::CompositeAnimation::setAnimating):
+ (WebCore::CompositeAnimation::timeToNextService):
+ (WebCore::CompositeAnimation::getAnimationForProperty):
+ (WebCore::CompositeAnimation::cleanupFinishedAnimations):
+ (WebCore::CompositeAnimation::suspendAnimations):
+ (WebCore::CompositeAnimation::resumeAnimations):
+ (WebCore::CompositeAnimation::overrideImplicitAnimations):
+ (WebCore::CompositeAnimation::resumeOverriddenImplicitAnimations):
+ (WebCore::CompositeAnimation::isAnimatingProperty):
+ (WebCore::CompositeAnimation::pauseAnimationAtTime):
+ (WebCore::CompositeAnimation::pauseTransitionAtTime):
+ (WebCore::CompositeAnimation::numberOfActiveAnimations):
+ * page/animation/CompositeAnimation.h:
+ (WebCore::CompositeAnimation::animationController):
+ (WebCore::CompositeAnimation::isSuspended):
+ (WebCore::CompositeAnimation::hasAnimations):
+ (WebCore::CompositeAnimation::CompositeAnimation):
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::sendTransitionEvent):
+ (WebCore::ImplicitAnimation::timeToNextService):
+ * page/animation/ImplicitAnimation.h:
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::sendAnimationEvent):
+ (WebCore::KeyframeAnimation::timeToNextService):
+ * page/animation/KeyframeAnimation.h:
+
+2009-04-09 Alexey Proskuryakov <ap@webkit.org>
+
+ Reverting <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings.
+ It broke Mac build, and I don't know how to fix it.
+
+ * Configurations/WebCore.xcconfig:
+ * DerivedSources.make:
+ * bindings/objc/DOM.mm:
+ (WebCore::createElementClassMap):
+ (+[DOMNode _wrapNode:WebCore::]):
+ * bindings/objc/DOMCSS.mm:
+ (+[DOMCSSValue _wrapCSSValue:WebCore::]):
+ * bindings/objc/DOMEvents.mm:
+ (+[DOMEvent _wrapEvent:WebCore::]):
+ * bindings/objc/DOMInternal.h:
+ * bindings/objc/ExceptionHandlers.mm:
+ (WebCore::raiseDOMException):
+ * html/HTMLEmbedElement.idl:
+ * html/HTMLFrameElement.idl:
+ * html/HTMLIFrameElement.idl:
+ * html/HTMLObjectElement.idl:
+
+2009-04-09 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed build fix.
+
+ RenderView::docWidth() was made private by r42334. That commit
+ changes its usage for overflowWidth(), so do that here too.
+
+ * page/PrintContext.cpp:
+ (WebCore::PrintContext::computePageRects):
+
+2009-04-09 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Based on a patch by Alp Toker.
+
+ Implement AtkObject::ref_state_set. Still quite a few states not
+ implemented.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-09 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Based on a patch by Alp Toker.
+
+ Move fallback object creation to its own function, as it will be
+ used in several places.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+ (fallbackObject):
+
+2009-04-09 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Based on a patch by Alp Toker.
+
+ Move AccessibilityObject methods to their file.
+
+ * page/gtk/AccessibilityObjectAtk.cpp:
+ (WebCore::AccessibilityObject::wrapper):
+ (WebCore::AccessibilityObject::setWrapper):
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-09 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Rework accessibility type generation code, based on Mozilla a11y
+ implementation.
+
+ Have one base a11y type, and generate derived types that implement
+ only the necessary interfaces at runtime, based on the specific
+ object we are wrapping. This allows to save a lot of code while
+ covering all possible cases.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-04-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Fix document.implementation.createDocument(null, "a:b") not to crash!
+ https://bugs.webkit.org/show_bug.cgi?id=25096
+
+ Test: fast/dom/DOMImplementation/createDocument-namespace-err.html
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::addChild): add ASSERT() to give a better crash next time
+ * dom/DOMImplementation.cpp:
+ (WebCore::DOMImplementation::createDocument): check the exception code before using the result
+
+2009-04-08 Adam Roben <aroben@apple.com>
+
+ Make <select>s in application chrome documents match the Vista system
+ dialog look
+
+ Reviewed by Dave Hyatt.
+
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::documentIsInApplicationChromeMode): Added this simple helper
+ function.
+ (WebCore::RenderThemeWin::getThemeData): In application chrome mode,
+ the drop down button never uses any look but the "normal" look.
+ (WebCore::RenderThemeWin::paintMenuList): In application chrome mode,
+ use the "readonly" style to match system dialogs.
+
+2009-04-08 Adam Roben <aroben@apple.com>
+
+ Fix <rdar://6592515> Crash closing tab with Top Sites or Cover Flow
+ showing after clicking "Go Back" in phishing alert
+
+ RenderButton's m_timer is not stopped when its Document enters the
+ page cache. When the WebView was torn down, the timer would fire after
+ the Frame's Page had been destroyed, leading to a crash. This patch
+ just makes the timer do nothing when it fires. Making the timer not
+ fire when in the page cache is covered by bug 25110.
+
+ Reviewed by Dave Hyatt.
+
+ No test possible.
+
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::timerFired): Do nothing when we're in the page
+ cache.
+
+2009-04-09 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Adam Roben
+
+ Fix bugs where we would mistakenly turn off blitting for iframes if an external paint
+ caused the checks to be triggered too early in the loading process of the frame.
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended):
+
+2009-04-08 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Cameron Zwarich
+
+ https://bugs.webkit.org/show_bug.cgi?id=25106
+
+ Fix signature of virtual function on AnimationBase so that it matches
+ those in the derived classes, by removing unused parameter.
+
+ * page/animation/AnimationBase.h:
+ (WebCore::AnimationBase::endAnimation):
+
+2009-04-08 David Kilzer <ddkilzer@apple.com>
+
+ <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings
+
+ Reviewed by Darin Adler and Maciej Stachowiak.
+
+ Introduce the ENABLE_SVG_DOM_OBJC_BINDINGS feature define so
+ that SVG DOM Objective-C bindings may be optionally disabled.
+
+ * Configurations/WebCore.xcconfig: Added
+ ENABLE_SVG_DOM_OBJC_BINDINGS variable and use it in
+ FEATURE_DEFINES and EXCLUDED_SOURCE_FILE_NAMES. When SVG DOM
+ Objective-C bindings are disabled, two generated header files no
+ longer exist and none of the generated DOMSVG*.mm files should
+ be compiled.
+ * DerivedSources.make: All of the WebCore.SVG*.exp files contain
+ SVG DOM Objective-C bindings classes, so exclude them unless
+ ENABLE_SVG_DOM_OBJC_BINDINGS is set.
+ * bindings/objc/DOM.mm: Switched from using ENABLE(SVG) to using
+ ENABLE(SVG_DOM_OBJC_BINDINGS).
+ (WebCore::createElementClassMap):
+ (+[DOMNode _wrapNode:WebCore::]):
+ * bindings/objc/DOMCSS.mm: Ditto.
+ (+[DOMCSSValue _wrapCSSValue:WebCore::]):
+ * bindings/objc/DOMEvents.mm: Ditto.
+ (+[DOMEvent _wrapEvent:WebCore::]):
+ * bindings/objc/DOMInternal.h: Ditto.
+ * bindings/objc/ExceptionHandlers.mm: Added use of
+ ENABLE(SVG_DOM_OBJC_BINDINGS).
+ (WebCore::raiseDOMException):
+ * html/HTMLEmbedElement.idl: Excluded -getSVGDocument method
+ in generated Objective-C DOM classes if SVG DOM Objective-C
+ bindings are disabled.
+ * html/HTMLFrameElement.idl: Ditto.
+ * html/HTMLIFrameElement.idl: Ditto.
+ * html/HTMLObjectElement.idl: Ditto.
+
+2009-04-08 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - limit the workaround for <rdar://problem/5781372> to Mac OS X versions
+ that need it
+
+ * platform/mac/WebFontCache.mm:
+ (fixUpWeight): Changed this function to be a no-op post-Leopard.
+
+2009-04-08 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ - fix <rdar://problem/6771547> Appending to a RenderText causes all its
+ lines to be dirtied
+
+ Test: fast/repaint/text-append-dirty-lines.html
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::setTextWithOffset): If no text boxes intersected
+ with or came after the new text, dirty the last root box, since the new
+ text may begin there. Having at least one dirty line prevents the
+ incorrect dirtying of all lines later during layoutInlineChildren().
+
+2009-04-08 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25100
+
+ Fixes a Chromium-specific crash in WebCore::ImageBuffer::context that
+ occurs when rendering semi-transparent RTL text.
+
+ Test: fast/text/complex-text-opacity.html
+
+ * platform/graphics/chromium/FontChromiumWin.cpp: Handle RTL when computing text bounds.
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareUniscribePainter::estimateTextBounds):
+
+2009-04-08 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Beth Dakin
+
+ Fix a porting error in my previous patch. A != was supposed to be an ==.
+
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::updateScrollbars):
+
+2009-04-08 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Adam Roben and Darin Adler
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=12440, repaints inconsistent for
+ fixed positioned elements.
+
+ Rewrite the updateScrollers method to be more correct in its results.
+
+ Test: fast/block/positioning/fixed-positioning-scrollbar-bug.html
+
+ * dom/Document.cpp:
+ (WebCore::Document::recalcStyle):
+ (WebCore::Document::implicitClose):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::createScrollbar):
+ (WebCore::FrameView::layout):
+ (WebCore::FrameView::adjustPageHeight):
+ * page/FrameView.h:
+ * page/win/FrameWin.cpp:
+ (WebCore::computePageRectsForFrame):
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::ScrollView):
+ (WebCore::ScrollView::updateScrollbars):
+ * platform/ScrollView.h:
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::layout):
+ (WebCore::RenderView::docHeight):
+ (WebCore::RenderView::docWidth):
+ * rendering/RenderView.h:
+
+2009-04-08 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Fix for <rdar://problem/6226200> Implement Microsoft's X-FRAME-OPTIONS anti-framing defense
+
+ Tests: http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-in-body.html
+ http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-allow.html
+ http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny.html
+ http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag.html
+ http/tests/security/XFrameOptions/x-frame-options-deny.html
+ http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-allow.html
+ http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny.html
+
+ * dom/Document.cpp:
+ (WebCore::Document::processHttpEquiv): Stop the current load and redirect to about:blank
+ if an X-FRAME-OPTIONS <meta> tag http-equiq dictates we should.
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::shouldInterruptLoadForXFrameOptions): Add logic to parse
+ the X-FRAME-OPTIONS parameter.
+ * loader/FrameLoader.h:
+ * loader/MainResourceLoader.cpp:
+ (WebCore::MainResourceLoader::didReceiveResponse): Stop the current load if framed and
+ a X-FRAME-OPTIONS header and its parameter dictate that we should.
+
+2009-04-08 Adam Roben <aroben@apple.com>
+
+ Fix http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect.html on Windows
+
+ Reviewed by Sam Weinig.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::ResourceHandle::loadResourceSynchronously): Mimic the
+ ResourceHandleMac code by propagating the CFError's error code for
+ kCFErrorDomainCFNetwork errors to the ResourceResponse.
+
+2009-04-08 Anders Carlsson <andersca@apple.com>
+
+ Try to fix the PPC build.
+
+ * plugins/npfunctions.h:
+
+2009-04-08 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ <rdar://problem/5908616> tokenizer resizer should handle edge cases consistently
+
+ * html/HTMLTokenizer.cpp:
+ (WebCore::HTMLTokenizer::enlargeBuffer): Handle edge cases the same way as a failed fastMalloc.
+ (WebCore::HTMLTokenizer::enlargeScriptBuffer): Ditto.
+
+2009-04-08 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Darin Adler
+
+ Make sure that cloneNode works with SVG attributes that require synchronization. This fixes
+ issues with <use> element shadow tree cloning where the clones can end up not obtaining the
+ correct attribute values.
+
+ A subsequent patch of mine will expose this problem and cause it to be covered by existing
+ layout tests, so no test is required at this time for this problem.
+
+ * dom/Element.cpp:
+ (WebCore::Element::cloneElementWithoutChildren):
+
+2009-04-08 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25093
+ REGRESSION: some scripts are showing in the Inspector with only "true"
+ as the source.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::didParseSource): Fixed conversion issue.
+ (WebCore::InspectorController::failedToParseSource): Ditto.
+
+2009-04-08 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24904
+
+ Verify the MIME type of stylesheets (in standards mode) by looking
+ at the Content-Type header directly. This bypasses any content
+ sniffing that might be confusing the issue.
+
+ Test: http/tests/mime/standard-mode-loads-stylesheet-without-content-type-header.html
+
+ * loader/CachedCSSStyleSheet.cpp:
+ (WebCore::CachedCSSStyleSheet::canUseSheet):
+
+2009-04-08 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25041
+ <rdar://problem/6697754>
+ Bug 25041: HTMLMediaElement: OSX autoplay broken by r41907
+
+ OSX media player should set readyState to HAVE_ENOUGH_DATA when the movie's load state
+ reaches QTMovieLoadStatePlaythroughOK, not when the entire file has been downloaded,
+ so autoplay can begin when it should.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::updateStates): Set readState to
+ HAVE_ENOUGH_DATA when QTMovie load state reaches QTMovieLoadStatePlaythroughOK.
+ (WebCore::MediaPlayerPrivate::paint): Add braces missed in r42203.
+
+2009-04-08 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by David Kilzer. Based on a patch by Grace Kloba.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24656
+ cacheControlContainsNoCache() in ResourceResponseBase.h is wrong
+
+ * platform/network/ResourceResponseBase.cpp:
+ (WebCore::ResourceResponseBase::parseCacheControlDirectives): Removed misused code for
+ parsing directive values, fixing parsing of directives that we care about.
+
+ * platform/network/ResourceResponseBase.h:
+ (WebCore::ResourceResponseBase::cacheControlContainsNoCache): Fixed a copy/paste mistake,
+ m_cacheControlContainsMustRevalidate was returned instead of m_cacheControlContainsNoCache.
+
+2009-04-08 Adam Roben <aroben@apple.com>
+
+ Make text fields match the system look on Vista
+
+ Reviewed by Dave Hyatt.
+
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::RenderThemeWin::getThemeData): Use the new-to-Vista
+ EP_EDITBORDER_NOSCROLL part for text fields.
+
+2009-04-07 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24957
+ REGRESSION: Google calendar widget no longer shows upcoming events
+
+ Test: http/tests/xmlhttprequest/authorization-header.html
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequestStaticData::XMLHttpRequestStaticData): Removed Authorization from
+ the list of forbidden headers.
+
+2009-04-07 miggilin <mr.diggilin@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Remove no longer needed debug warning and Windows-specific codepaths
+ (as we now use the Safari/Win port's timer there)
+
+ https://bugs.webkit.org/show_bug.cgi?id=25070
+
+ * platform/wx/SharedTimerWx.cpp:
+ (WebCore::setSharedTimerFireTime):
+
+
+2009-04-07 Adam Roben <aroben@apple.com>
+
+ Fix many <video> regression tests on Windows
+
+ Reviewed by Dave Hyatt.
+
+ * platform/graphics/win/QTMovieWin.cpp:
+ (QTMovieWin::getNaturalSize): Call GetMovieNaturalBoundsRect, which
+ returns the movie's natural bounds (duh), rather than GetMovieBox,
+ which returns the movie's current displayed size/position.
+
+2009-04-07 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler and Sam Weinig
+
+ <rdar://problem/5968249> "Private Browsing" doesn't affect HTML 5 LocalStorage
+
+ The expected behavior for persistent storage when private browsing mode is undefined by the spec.
+ For now we're going with a "read-only when in private browsing" policy until we can get feedback
+ and/or get the behavior specified in the spec.
+
+ Note that I purposefully made the change to restrict SessionStorage to read-only, also, with the
+ understanding that the spec allows for SessionStorage to persist across relaunches, even though
+ our implementation currently doesn't do this.
+
+ * dom/DOMCoreException.idl: Add some new ExceptionCodes defined in HTML5, one of which is needed
+ for LocalStorage changes (QUOTA_EXCEEDED_ERR)
+ * dom/ExceptionCode.cpp:
+ * dom/ExceptionCode.h:
+
+ * storage/StorageArea.cpp:
+ (WebCore::StorageArea::internalSetItem): If private browsing is enabled, throw the QUOTA_EXCEEDED_ERR
+ exception as the spec allows.
+ (WebCore::StorageArea::internalRemoveItem): If private browsing is enabled, silently fail to remove
+ the item.
+ (WebCore::StorageArea::internalClear): If private browsing is enabled, silently fail to clear the area.
+
+2009-04-07 Dean Jackson <dino@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ <rdar://problem/6148255>
+
+ Standalone media documents can not always handle everything
+ using a <video> element. In these cases switch to an <embed>
+ element that uses the QuickTime plugin, in the hope that it
+ will have more luck. Typical media types that trigger this
+ are streamed media and QTVR.
+
+ Equivalent Windows fix to come once reviewed. Note also that
+ this area of code needs a cleanup:
+ https://bugs.webkit.org/show_bug.cgi?id=25085
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::mediaPlayerSawUnsupportedTracks):
+ * html/HTMLMediaElement.h:
+ * loader/MediaDocument.cpp:
+ (WebCore::MediaDocument::mediaElementSawUnsupportedTracks):
+ (WebCore::MediaDocument::replaceVideoWithEmbed):
+ * loader/MediaDocument.h:
+ - removes the <video> element and puts in an <embed>
+ * platform/graphics/MediaPlayer.h:
+ (WebCore::MediaPlayerClient::mediaPlayerSawUnsupportedTracks):
+ - new internal method for flagging a problem
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.h:
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::MediaPlayerPrivate):
+ (WebCore::MediaPlayerPrivate::updateStates):
+ - looks for the types of content we don't handle
+ (WebCore::MediaPlayerPrivate::rateChanged):
+ (WebCore::MediaPlayerPrivate::sizeChanged):
+ (WebCore::MediaPlayerPrivate::timeChanged):
+ (WebCore::MediaPlayerPrivate::didEnd):
+ (WebCore::MediaPlayerPrivate::disableUnsupportedTracks):
+ (WebCore::MediaPlayerPrivate::sawUnsupportedTracks):
+ - inform the MediaClient that we have a potential problem
+
+2009-04-07 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix <rdar://problem/6767428> Resurrect
+ +[WebFontCache fontWithFamily:traits:size:] for clients that call it
+ directly
+
+ WebFontCache is a class in the WebCore framework and is not WebKit API,
+ but apparently (perhaps mistakenly) some clients call this private
+ interface.
+
+ This change resurrects the interface and gives it reasonable behavior
+ (however, note that WebCore will not call the old interface, so hacks that
+ override it will have no effect on WebKit clients).
+
+ * platform/mac/WebFontCache.h:
+ * platform/mac/WebFontCache.mm:
+ (+[WebFontCache fontWithFamily:traits:size:]): Added. Call through to
+ +fontWithFamily:traits:weight:size:.
+
+2009-04-07 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Adam Roben
+
+ Fix ScrollView's algorithm that determines whether or not to show scrollbars. There was a bug
+ with the method mainly because RenderView will size itself to the viewport's size, making it
+ impossible to really know the document's "true" size.
+
+ In order to solve this problem ScrollView now has a minimumContentsSize method. This method
+ returns the document size excluding the RenderView from the calculation. This width/height
+ is now cached on RenderView in m_docWidth/m_docHeight member variables.
+
+ * WebCore.base.exp:
+ * page/FrameView.cpp:
+ (WebCore::FrameView::adjustPageHeight):
+ (WebCore::FrameView::minimumContentsSize):
+ * page/FrameView.h:
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::updateScrollbars):
+ * platform/ScrollView.h:
+ (WebCore::ScrollView::minimumContentsSize):
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::layout):
+ (WebCore::RenderView::calcDocHeight):
+ (WebCore::RenderView::calcDocWidth):
+ * rendering/RenderView.h:
+ (WebCore::RenderView::docWidth):
+ (WebCore::RenderView::docHeight):
+
+2009-04-07 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Build fix, not reviewed.
+
+ * WebCore.xcodeproj/project.pbxproj: Made ScriptObject.h private.
+
+2009-04-07 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25063
+ Refactor InspectorController to use ScriptObject/State.
+
+ * GNUmakefile.am: Added ScriptState.cpp.
+ * WebCore.pro: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * WebCoreSources.bkl: Ditto.
+ * bindings/js/JSInspectorControllerCustom.cpp:
+ (WebCore::JSInspectorController::addSourceToFrame): Fixed argument index typo.
+ * bindings/js/ScriptFunctionCall.cpp:
+ (WebCore::ScriptFunctionCall::call): Added reportExceptions parameter.
+ (WebCore::ScriptFunctionCall::construct): Ditto.
+ * bindings/js/ScriptFunctionCall.h: Ditto.
+ * bindings/js/ScriptObject.cpp:
+ (WebCore::handleException): Added exception-reporting heloper.
+ (WebCore::ScriptObject::set): Changed to use handleException.
+ (WebCore::ScriptGlobalObject::set): Ditto,
+ * bindings/js/ScriptObject.cpp: Added ScriptGlobalObject.
+ (WebCore::ScriptGlobalObject::set): Added.
+ (WebCore::ScriptGlobalObject::getObject): Added.
+ * bindings/js/ScriptObject.h: Added ScriptGlobalObject decls.
+ (WebCore::ScriptGlobalObject::ScriptGlobalObject): Added.
+ * bindings/js/ScriptState.cpp: Added.
+ * bindings/js/ScriptState.h: Added scriptStateFromPage decl.
+ * inspector/ConsoleMessage.cpp:
+ (WebCore::ConsoleMessage::addToConsole): Changed to not report exceptions
+ to avoid re-entrancy.
+ * inspector/InspectorController.cpp: Refactored to use ScriptState/Object.
+ * inspector/InspectorController.h: Ditto.
+
+2009-04-07 Adam Langley <agl@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25083
+
+ Skia was previously calculating the leading value incorrectly, leading
+ us to add fHeight to get the height of a line of text. Now that Skia
+ is calculating fLeading correctly, we can remove fHeight.
+
+ This doesn't affect any layout tests.
+
+ * platform/graphics/chromium/SimpleFontDataLinux.cpp:
+ (WebCore::SimpleFontData::platformInit):
+
+2009-04-07 Brian Weinstein <bweinstein@gmail.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24851
+
+ This fix removes the status code from the status message in a ResourceResponse, which allows a few more tests in http to pass.
+
+ * platform/network/cf/ResourceResponseCFNet.cpp:
+ (WebCore::ResourceResponse::platformLazyInit):
+
+2009-04-07 Adam Langley <agl@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25081
+
+ Skia is changing from reporting the XRange to reporting the XMin and
+ XMax. Obviously these are equivalent, but other users of the metrics
+ need the two numbers to be separate.
+
+ This doesn't affect any layout tests.
+
+ * platform/graphics/chromium/SimpleFontDataLinux.cpp:
+ (WebCore::SimpleFontData::platformInit):
+
+2009-04-07 Adam Roben <aroben@apple.com>
+
+ Make the look of <select>s match the system look on Vista
+
+ Reviewed by Dave Hyatt.
+
+ * rendering/RenderThemeWin.cpp: Added new constants.
+ (WebCore::RenderThemeWin::getThemeData): On Vista, use the
+ CP_DROPDOWNBUTTONRIGHT part for drop down buttons.
+ (WebCore::RenderThemeWin::paintMenuList): On Vista, use the CP_BORDER
+ part to draw the border of <select>s.
+ (WebCore::RenderThemeWin::paintMenuListButton): On Vista, outset the
+ drop down button to make its border coincide with the <select>'s
+ border.
+
+2009-04-07 Adam Roben <aroben@apple.com>
+
+ Move isRunningOnVistaOrLater to a shared location
+
+ Rubber-stamped in advance by Dave Hyatt.
+
+ * WebCore.vcproj/WebCore.vcproj: Added SystemInfo.{cpp,h}, and let VS
+ have its way with the rest of the file.
+ * platform/win/ScrollbarThemeWin.cpp: Moved isRunningOnVistaOrLater
+ from here...
+ * platform/win/SystemInfo.cpp: Added.
+ (WebCore::isRunningOnVistaOrLater): ...to here.
+ * platform/win/SystemInfo.h: Added.
+
+2009-04-07 Paul Godavari <paul@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24692
+ Enable PopupMenuChromium to handle HTML select popups using native
+ cocoa controls on the Mac, all other platforms are unchanged.
+
+ We also split out the storage container for the popup menu items
+ so that ChromeClientChromium can access them for forwarding to
+ the embedding host (Chromium.app or test_shell).
+
+ * page/chromium/ChromeClientChromium.h:
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupListBox::items):
+ (WebCore::PopupContainer::PopupContainer):
+ (WebCore::PopupContainer::~PopupContainer):
+ (WebCore::PopupContainer::showPopup):
+ (WebCore::PopupContainer::showExternal):
+ (WebCore::PopupContainer::menuItemHeight):
+ (WebCore::popupData):
+ (WebCore::PopupListBox::pointToRowIndex):
+ (WebCore::PopupListBox::getRowBounds):
+ (WebCore::PopupListBox::isSelectableItem):
+ (WebCore::PopupListBox::updateFromElement):
+ (WebCore::PopupListBox::layout):
+ (WebCore::PopupListBox::clear):
+ (WebCore::PopupMenu::show):
+ * platform/chromium/PopupMenuChromium.h:
+ (WebCore::PopupItem::):
+ (WebCore::PopupItem::PopupItem):
+
+2009-04-07 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Added some double-checking to event handler marking. Now, when the
+ wrapper that's responsible for marking an event handler's JavaScript
+ function gets collected, it clears the event handler's JavaScript function
+ so we won't dereference it after it's collected.
+
+ In theory, we would never dereference a JavaScript event handler after
+ its node's wrapper was collected anyway, but it's nice to be safe.
+
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ (WebCore::JSDOMApplicationCache::mark):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSEventListener::JSEventListener):
+ (WebCore::JSEventListener::jsFunction):
+ (WebCore::JSEventListener::invalidateJSFunction):
+ (WebCore::JSEventListener::markJSFunction):
+ * bindings/js/JSEventListener.h:
+ * bindings/js/JSMessagePortCustom.cpp:
+ (WebCore::JSMessagePort::mark):
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::markEventListeners):
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::mark):
+ * bindings/js/JSWorkerCustom.cpp:
+ (WebCore::JSWorker::mark):
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::mark):
+ * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
+ (WebCore::JSXMLHttpRequestUpload::mark):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * dom/EventListener.h:
+ (WebCore::EventListener::invalidateJSFunction):
+ (WebCore::EventListener::markJSFunction):
+ (WebCore::markIfNotNull):
+
+2009-04-07 David Levin <levin@chromium.org>
+
+ Build fix.
+
+ r44280 undid the change in r42268 that made CookieJar.h private.
+ This redoes the change.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-04-07 Jian Li <jianli@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Upstream changes to WorkerContextExecutionProxy for enabling V8 preemption.
+ https://bugs.webkit.org/show_bug.cgi?id=25034
+
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::WorkerContextExecutionProxy::evaluate):
+
+2009-04-07 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix <rdar://problem/6764359> Thai word selection misbehaves for the
+ last sentence in the document
+
+ Test: editing/selection/thai-word-at-document-end.html
+
+ * editing/visible_units.cpp:
+ - Added a BoundarySearchContextAvailability enum used to indicate
+ whether the caller to a boundary search function may be able to provide
+ additional text in the search direction and call again.
+ - Added a named type for the boundary search function signature. Changed
+ the signature to take a context availability parameter and a boolean
+ out parameter indicating whether more context is needed to perform
+ the search.
+ (WebCore::previousBoundary): If the beginning of the range was reached
+ but the last search wanted more context, perform the search again, this
+ time indicating that there is no earlier text.
+ (WebCore::nextBoundary): Similarly, in the other direction.
+ (WebCore::startWordBoundary): Check whether more context may be available
+ and ask for more context if needed.
+ (WebCore::endWordBoundary): Ditto.
+ (WebCore::previousWordPositionBoundary): Ditto.
+ (WebCore::nextWordPositionBoundary): Ditto.
+ (WebCore::startSentenceBoundary): Updated signature.
+ (WebCore::endSentenceBoundary): Ditto.
+ (WebCore::previousSentencePositionBoundary): Ditto.
+ (WebCore::nextSentencePositionBoundary): Ditto.
+
+2009-04-07 Geoffrey Garen <ggaren@apple.com>
+
+ Rubber stamped by Sam Weinig.
+
+ A little renaming:
+
+ function => jsFunction
+ listener => jsFunction
+
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSAbstractEventListener::handleEvent):
+ (WebCore::JSEventListener::JSEventListener):
+ (WebCore::JSEventListener::~JSEventListener):
+ (WebCore::JSEventListener::jsFunction):
+ (WebCore::JSEventListener::mark):
+ (WebCore::JSProtectedEventListener::JSProtectedEventListener):
+ (WebCore::JSProtectedEventListener::~JSProtectedEventListener):
+ (WebCore::JSProtectedEventListener::jsFunction):
+ * bindings/js/JSEventListener.h:
+ (WebCore::JSProtectedEventListener::create):
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::JSLazyEventListener::jsFunction):
+ (WebCore::JSLazyEventListener::parseCode):
+ * dom/EventListener.h:
+ (WebCore::EventListener::jsFunction):
+
2009-04-07 Brady Eidson <beidson@apple.com>
Reviewed by Darin Adler
@@ -303,6 +21323,436 @@
* page/DOMWindow.h:
(WebCore::DOMWindow::optionalLocalStorage): Return m_localStorage, not m_sessionStorage.
+2009-04-07 Darin Adler <darin@apple.com>
+
+ Roll out incorrect build fix.
+
+ * WebCore.NPAPI.exp: Reverted.
+
+2009-04-07 Darin Adler <darin@apple.com>
+
+ Another build fix.
+
+ * WebCore.NPAPI.exp: Added new functions.
+
+2009-04-07 Anders Carlsson <andersca@apple.com>
+
+ Another build fix.
+
+ * plugins/npfunctions.h:
+
+2009-04-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed build fix. Fix non-Mac builds.
+
+ * bridge/npapi.h:
+
+2009-04-07 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=25082
+
+ Clean up repaint logic when RenderLayers become and stop being composited.
+
+ * rendering/RenderLayer.h:
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::rendererContentChanged):
+ (WebCore::RenderLayer::repaintIncludingNonCompositingDescendants):
+ New compositing-only method that repaints a layer and all its non-composited descendants.
+ Takes a repaintContainer for performance; all the repaints necessarily share the same
+ repaintContainer.
+
+ * rendering/RenderLayerCompositor.h:
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::updateLayerCompositingState):
+ Rather than use calculateCompositedBounds() to compute the repaint rect (which gave
+ the wrong answer when the composited layer tree was in flux), use the new
+ repaintOnCompositingChange() method.
+
+ (WebCore::RenderLayerCompositor::repaintOnCompositingChange):
+ Call repaintIncludingNonCompositingDescendants(), and if necessary make sure
+ that the view/layer drawing synchronization happens.
+
+ (WebCore::RenderLayerCompositor::computeCompositingRequirements):
+ Do a repaintOnCompositingChange() when a layer is going to be composited. This is
+ a good place because we haven't started to change the compositing tree.
+
+ (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
+ After we've finished updating all the descendant layers, we can do a repaint for
+ layers that ceased compositing.
+
+2009-04-07 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=25069
+
+ Clean up the accelerated compositing code that determines the format of
+ the GraphicsLayer hierarchy, being more explicit about which parts have
+ to happen before and after descendant layers have been updated. Also remove
+ some unhelpful caching of state.
+
+ * dom/Document.cpp:
+ (WebCore::Document::recalcStyle):
+ Only call updateCompositingLayers() if we know we're not going to be
+ doing a layout soon.
+
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::GraphicsLayerCA::setDrawsContent):
+ Toggling drawsContent from false to true should do a setNeedsDisplay().
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::styleChanged):
+ updateLayerCompositingState() no longer updates the layer geometry, so
+ do that here if we're not going to rebuild layers anyway.
+ Also, updateLayerCompositingState() no longer does a setContentsNeedDisplay,
+ so do that if the style change indicates that a repaint is required.
+
+ * rendering/RenderLayerBacking.h:
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::RenderLayerBacking):
+ (WebCore::RenderLayerBacking::updateAfterLayout):
+ The 'drawing optimizations' logic has been rolled into updateGraphicsLayerConfiguration()
+ and updateGraphicsLayerGeometry().
+
+ (WebCore::RenderLayerBacking::updateGraphicsLayerConfiguration):
+ Group that code that decides what GraphicsLayers are needed into this method,
+ which deals with clipping layers and 'direct compositing': images that can be
+ rendered via the compositor.
+
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ Call setDrawsContent() if updateGraphicsLayerConfiguration() didn't already
+ figure it out for image layers.
+
+ (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer):
+ Remove the m_simpleCompositingLayerStatusDirty cache indicator, since we just
+ computed it every time anyway.
+
+ * rendering/RenderLayerCompositor.h:
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::updateLayerCompositingState):
+ updateGraphicsLayers() was renamed to updateGraphicsLayerConfiguration(),
+ which calls clippedByAncestor() etc. itself rather than having everything passed in.
+ Repaints are taken care of by styleChanged() and setDrawsContent().
+
+ (WebCore::RenderLayerCompositor::calculateCompositedBounds):
+ !layer->isComposited() && layer->transform() is a synonym for paintsWithTransform().
+
+ (WebCore::RenderLayerCompositor::setCompositingParent):
+ No need to call updateGraphicsLayerGeometry() here, because we're going to
+ rebuild layers anyway.
+
+ (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
+ Add comments, and test layerBacking instead of layer->isComposited().
+
+2009-04-07 Anders Carlsson <andersca@apple.com>
+
+ Fix build.
+
+ * WebCore.base.exp:
+
+2009-04-07 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ <rdar://problem/6667001> NPAPI: need NPN_Get/SetValueForURL() and NPN_GetAuthenticationInfo()
+
+ * WebCore.base.exp:
+ Add symbols needed by WebKit.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ Make CookieJar a private header.
+
+ * bridge/npapi.h:
+ Add function definitions.
+
+ * plugins/npfunctions.h:
+ Fix the NPN_SetValueForURLProcPtr signature.
+
+2009-04-07 Adam Roben <aroben@apple.com>
+
+ Fix <rdar://6520933> REGRESSION (3.2.1-ToT): Scroll bar disappears in
+ WebView and Bookmarks view after switching theme or turning on High
+ Contrast mode
+
+ Reviewed by Dave Hyatt.
+
+ * platform/win/ScrollbarThemeWin.cpp:
+ (WebCore::ScrollbarThemeWin::themeChanged): Null out scrollbarTheme
+ after closing it so that we'll re-open the theme next time we paint.
+
+2009-04-07 Adam Roben <aroben@apple.com>
+
+ Small cleanup/correctness fix in ScrollbarThemeWin
+
+ Reviewed by Dave Hyatt.
+
+ * platform/win/ScrollbarThemeWin.cpp: Removed the now-unused
+ haveTheme boolean.
+ (WebCore::checkAndInitScrollbarTheme): Check IsThemeActive() before
+ calling OpenThemeData. This seems to be what MSDN recommends.
+ (WebCore::ScrollbarThemeWin::themeChanged): Null-check scrollbarTheme
+ before closing it, rather than indirectly null-checking it via
+ checking haveTheme.
+
+2009-04-07 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - when -webkit-line-break: after-white-space is specified but the text
+ does not auto-wrap, do not shrink the trailing space to fit in the
+ available width
+
+ Test: fast/text/whitespace/nowrap-line-break-after-white-space.html
+
+ - when shrinking such trailing space, do not shrink below zero
+
+ Covered by existing tests
+
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::computeHorizontalPositionsForLine):
+ (WebCore::RenderBlock::layoutInlineChildren):
+
+2009-04-07 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Move RangeBoundaryPoint off of Position, per Darin's suggestion
+ https://bugs.webkit.org/show_bug.cgi?id=24966
+
+ Rename setToChild to setToBeforeChild (since that's what the method does)
+
+ * dom/Position.h:
+ (WebCore::Position::offsetInContainerNode):
+ * dom/Range.cpp:
+ (WebCore::Range::insertNode):
+ (WebCore::Range::selectNodeContents):
+ (WebCore::boundaryNodeWillBeRemoved):
+ * dom/Range.h:
+ (WebCore::Range::startPosition):
+ (WebCore::Range::endPosition):
+ * dom/RangeBoundaryPoint.h:
+ (WebCore::RangeBoundaryPoint::RangeBoundaryPoint):
+ (WebCore::RangeBoundaryPoint::container):
+ (WebCore::RangeBoundaryPoint::childBefore):
+ (WebCore::RangeBoundaryPoint::position):
+ (WebCore::RangeBoundaryPoint::offset):
+ (WebCore::RangeBoundaryPoint::clear):
+ (WebCore::RangeBoundaryPoint::set):
+ (WebCore::RangeBoundaryPoint::setOffset):
+ (WebCore::RangeBoundaryPoint::setToBeforeChild):
+ (WebCore::RangeBoundaryPoint::setToStartOfNode):
+ (WebCore::RangeBoundaryPoint::setToEndOfNode):
+ (WebCore::RangeBoundaryPoint::childBeforeWillBeRemoved):
+ (WebCore::RangeBoundaryPoint::invalidateOffset):
+
+2009-04-07 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Add containerNode(), computeOffsetInContainerNode(),
+ computeNodeBeforePosition() and computeNodeAfterPosition().
+ https://bugs.webkit.org/show_bug.cgi?id=24763
+
+ These functions will replace uses of rangeCompliantPosition()
+ in future patches.
+
+ No changes in behavior, thus no tests.
+
+ * dom/Position.cpp:
+ (WebCore::Position::containerNode):
+ (WebCore::Position::computeOffsetInContainerNode):
+ (WebCore::Position::computeNodeBeforePosition):
+ (WebCore::Position::computeNodeAfterPosition):
+ (WebCore::Position::anchorType):
+ * dom/Position.h:
+ (WebCore::Position::):
+
+2009-04-06 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Bottleneck dispatching mutation events in a new dispatchMutationEvent
+ function.
+
+ * dom/CharacterData.cpp:
+ (WebCore::CharacterData::dispatchModifiedEvent):
+ * dom/ContainerNode.cpp:
+ (WebCore::dispatchChildInsertionEvents):
+ (WebCore::dispatchChildRemovalEvents):
+ * dom/Node.cpp:
+ (WebCore::Node::dispatchSubtreeModifiedEvent):
+ (WebCore::Node::dispatchMutationEvent):
+ * dom/Node.h:
+
+2009-04-06 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25059
+ Remove references to dominantScript, getGenericFontForScript.
+
+ * platform/graphics/chromium/FontCacheChromiumWin.cpp: Removed references
+ to getGenericFontForScript.
+ (WebCore::FontCache::getLastResortFallbackFont): Removed calls to dominantScript.
+ * platform/graphics/chromium/FontCacheLinux.cpp: Ditto.
+ * rendering/RenderThemeChromiumLinux.cpp:
+ (WebCore::defaultGUIFont): Removed Document* arg.
+ (WebCore::RenderThemeChromiumLinux::systemFont): Ditto.
+ * rendering/RenderThemeChromiumLinux.h: Ditto.
+ * rendering/RenderThemeChromiumMac.h: Ditto.
+ * rendering/RenderThemeChromiumMac.mm: Ditto.
+ (WebCore::RenderThemeChromiumMac::systemFont): Ditto.
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::defaultGUIFont): Ditto.
+ (WebCore::RenderThemeChromiumWin::systemFont): Ditto.
+ * rendering/RenderThemeChromiumWin.h: Ditto.
+
+2009-04-06 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fixed https://bugs.webkit.org/show_bug.cgi?id=21260
+ Unbounded memory growth when churning elements with anonymous event handler functions
+
+ The problem was that a protected event listener's scope chain would end
+ up with a reference to the Node protecting it, causing a cycle. The
+ solution is to stop protecting event listeners and rely on marking instead.
+
+ This patch converts most Node event listeners to use marking instead of
+ GC protection.
+
+ * bindings/js/JSDOMBinding.cpp:
+ (WebCore::isObservableThroughDOM):
+ (WebCore::markDOMNodesForDocument): Refactored the test for whether a Node
+ needs marking, and added a case for marking the node in order to mark its
+ event listeners.
+
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::markEventListeners):
+ (WebCore::JSNode::addEventListener):
+ (WebCore::JSNode::removeEventListener):
+ (WebCore::JSNode::mark): Added code to mark a Node's event listeners when
+ marking the Node. Changed code using protected event listeners to use event
+ listeners.
+
+ * dom/Node.idl: Changed code using protected event listeners to use event
+ listeners.
+
+2009-04-06 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Remove unchecked bool return values for some dispatch event functions.
+
+ * dom/Node.cpp:
+ (WebCore::Node::dispatchSubtreeModifiedEvent):
+ (WebCore::Node::dispatchUIEvent):
+ (WebCore::Node::dispatchWebKitAnimationEvent):
+ (WebCore::Node::dispatchWebKitTransitionEvent):
+ (WebCore::Node::dispatchProgressEvent):
+ * dom/Node.h:
+
+2009-04-06 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25058
+ Fix chromium build bustage caused by r42216
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * page/DOMWindow.idl:
+
+2009-04-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20575
+ No localization in WebKitGtk
+
+ * platform/gtk/FileChooserGtk.cpp: Remove usage of glib/gi18n.h,
+ since there are not translatable strings.
+ * platform/gtk/LocalizedStringsGtk.cpp: Use the glib i18n header
+ that is specific for libraries.
+
+2009-04-06 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24978
+ Use custom implementations of a few Node methods so that
+ we don't over-aggressively create JS wrappers here.
+
+ * bindings/v8/custom/V8NodeCustom.cpp: Added custom implementations.
+ * dom/Node.idl: Removed JSC-specifier, making impl custom for V8 as well.
+
+2009-04-06 Dave Moore <davemoore@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25031
+ Make the V8 element collections check for named properties *before*
+ checking if there are any elements with the same name. Otherwise
+ it is both incorrect and slow.
+
+ Test: fast/dom/HTMLSelectElement/length-not-overridden.html
+
+ Both of these interceptors were attempting to find an element in the
+ collection that had a name or id of the property name before checking
+ for a JS property with that name.
+ * bindings/v8/V8Collection.h:
+ (WebCore::collectionNamedPropertyGetter):
+ (WebCore::nodeCollectionNamedPropertyGetter):
+
+2009-04-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=25052
+
+ Pull the call to updateGraphicsLayerGeometry() out of updateGraphicsLayers(),
+ because we need to call it at the end of rebuildCompositingLayerTree() once
+ we've determined which descendant layers are composited, otherwise
+ calculateCompositedBounds() can give the wrong answer.
+
+ Now that updateLayerCompositingState() doesn't end up calling updateGraphicsLayerGeometry(),
+ call that explicitly from styleChanged(), if we know a layer update is not pending,
+ and similarly from updateAfterLayout().
+
+ Test: compositing/overflow/overflow-positioning.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::styleChanged):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateAfterLayout):
+ (WebCore::RenderLayerBacking::updateGraphicsLayers):
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
+
+2009-04-06 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Add accessors to AtomicString which take String/const char* arguments
+ so that we don't accidentally thrash the AtomicString table.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24979
+
+ * platform/text/AtomicString.h:
+
+2009-04-03 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Simon Hausmann.
+
+ Make col and row work in WebCore/manual-tests/cursor.html. The issue
+ was spotted in the WebKit inspector.
+
+ * platform/gtk/CursorGtk.cpp:
+ (WebCore::columnResizeCursor):
+ (WebCore::rowResizeCursor):
+
2009-04-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
Reviewed by Simon Hausmann.
@@ -314,6 +21764,29 @@
(WebCore::PluginView::hide):
(WebCore::PluginView::setParentVisible):
+2009-04-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ Add new files to the Qt build.
+ Export helper function from the Qt JSC binding, needed in WebKit/qt.
+
+ * WebCore.pro: Add new files.
+ * bridge/qt/qt_runtime.h: Declare convertQVariantToValue.
+
+2009-04-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ Changed ScriptFunctionCall's last argument from a const char* as the function name to a String.
+
+ Internally the function name is stored as a WebCore::String and the Qt port wants to use this
+ constructor programmatically where the function name is also a WebCore::String.
+
+ * bindings/js/ScriptFunctionCall.cpp:
+ (WebCore::ScriptFunctionCall::ScriptFunctionCall):
+ * bindings/js/ScriptFunctionCall.h:
+
2009-04-06 Mike Belshe <mike@belshe.com>
Reviewed by Eric Seidel.
@@ -330,6 +21803,47 @@
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::createImageBuffer):
+2009-04-05 Geoffrey Garen <ggaren@apple.com>
+
+ [Originally] Reviewed by Sam Weinig.
+
+ Rolled back in r42214 with crashes fixed.
+
+ [Removed irrelevant ExecState* parameter from event handler registration code.]
+
+ [No change in behavior.]
+
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ (WebCore::JSDOMApplicationCache::addEventListener):
+ (WebCore::JSDOMApplicationCache::removeEventListener):
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::findOrCreateJSProtectedEventListener):
+ (WebCore::JSDOMGlobalObject::findJSEventListener):
+ (WebCore::JSDOMGlobalObject::findOrCreateJSEventListener):
+ * bindings/js/JSDOMGlobalObject.h:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::addEventListener):
+ * bindings/js/JSMessagePortCustom.cpp:
+ (WebCore::JSMessagePort::addEventListener):
+ (WebCore::JSMessagePort::removeEventListener):
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::JSNode::addEventListener):
+ * bindings/js/JSSVGElementInstanceCustom.cpp:
+ (WebCore::JSSVGElementInstance::addEventListener):
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::addEventListener):
+ (WebCore::JSWorkerContext::removeEventListener):
+ * bindings/js/JSWorkerCustom.cpp:
+ (WebCore::JSWorker::addEventListener):
+ (WebCore::JSWorker::removeEventListener):
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::addEventListener):
+ (WebCore::JSXMLHttpRequest::removeEventListener):
+ * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
+ (WebCore::JSXMLHttpRequestUpload::addEventListener):
+ (WebCore::JSXMLHttpRequestUpload::removeEventListener):
+ * bindings/scripts/CodeGeneratorJS.pm:
+
2009-04-05 Erik L. Bunce <elbunce@xendom.com>
Reviewed by Simon Hausmann.
@@ -341,6 +21855,2206 @@
* platform/qt/DragDataQt.cpp:
(WebCore::DragData::asURL):
+2009-04-05 Simon Hausmann <hausmann@webkit.org>
+
+ Fix the Qt build.
+
+ * bridge/qt/qt_runtime.h:
+ (JSC::Bindings::QtRuntimeMethod::createPrototype): Take the JSGlobalObject
+ as second argument.
+
+2009-04-04 Kevin Ollivier <kevino@theolliviers.com>
+
+ Build fixes for wxMac/Tiger.
+
+ * platform/wx/wxcode/mac/carbon/fontprops.cpp:
+ (wxFontProperties::wxFontProperties):
+ * rendering/break_lines.cpp:
+ (WebCore::nextBreakablePosition):
+ * webcore-wx.bkl:
+
+2009-04-04 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Cameron Zwarich
+
+ https://bugs.webkit.org/show_bug.cgi?id=24648
+
+ Ensure that mapPoint(const IntPoint&) calls the FloatPoint
+ version to avoid infinite recursion.
+
+ No test because mapPoint(const IntPoint&) isn't ever called
+ on Mac, so I can't reproduce.
+
+ * platform/graphics/transforms/TransformationMatrix.h:
+ (WebCore::TransformationMatrix::mapPoint):
+
+2009-04-04 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ - fix <rdar://problem/6757862> REGRESSION: Cannot use the mouse to place
+ the insertion point inside a Thai character
+
+ Test: fast/text/international/thai-offsetForPosition-inside-character.html
+
+ * platform/graphics/mac/CoreTextController.cpp:
+ (WebCore::CoreTextController::offsetForPosition): Changed to use
+ cursorMovementIterator instead of characterBreakIterator, allowing this
+ function to return a valid cursor position even if it is not at
+ a character boundary.
+
+2009-04-04 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ - fix an assertion failure when clicking at the beginning of a
+ glyph cluster at the beginning of a text run
+
+ Test: fast/text/offsetForPosition-cluster-at-zero.html
+
+ * platform/graphics/mac/CoreTextController.cpp:
+ (WebCore::CoreTextController::offsetForPosition): Corrected the bound
+ check on firstGlyphBeforeCluster, letting it be 0 or -1, but not less
+ than -1.
+
+2009-04-03 Brian Weinstein <bweinstein@gmail.com>
+
+ Allows 16 HTML/CSS standard colors to be shown as swatch backgrounds
+ when the names are given.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25044
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/front-end/StylesSidebarPane.js:
+ (WebInspector.StylePropertyTreeElement.prototype.updateTitle):
+
+2009-04-03 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6330929>
+ https://bugs.webkit.org/show_bug.cgi?id=21456
+
+ Don't update the document pointer for all inactive windows on navigations.
+ This change causes us to differ slightly from Firefox when accessing the
+ document from within a closure tied to a navigated context, but as all
+ browsers differ on this edge case, I don't foresee compatibility issues.
+
+ Test: http/tests/security/cross-frame-access-document-direct.html
+
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::JSDOMWindowBase::~JSDOMWindowBase):
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::clearWindowShell):
+ (WebCore::ScriptController::initScript):
+ (WebCore::ScriptController::updateDocument):
+ * bindings/js/ScriptController.h:
+
+2009-04-03 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Test: transitions/bad-transition-shorthand-crash.html
+
+ Fixed https://bugs.webkit.org/show_bug.cgi?id=24787.
+
+ We were starting transitions with 0 duration and delay, which is
+ useless. With accelerated compositing on, this went through a code
+ path that tried to use m_toStyle, which never got set because the
+ transitions was short circuited before it had a chance to. So I
+ both protect against using that null pointer and avoid starting
+ the transition in the first place.
+
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimationPrivate::updateTransitions):
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::blendPropertyValueInStyle):
+
+2009-04-03 Timothy Hatcher <timothy@apple.com>
+
+ Fixes a bug where you could not type any more in the Web Inspector's
+ search field after the first match is selected in the Resources panel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23982
+ rdar://problem/6592367
+
+ Reviewed by Darin Adler.
+
+ * inspector/front-end/SourceView.js:
+ (WebInspector.SourceView.prototype._jumpToSearchResult): Use the
+ window object of the frame to set the selection, not the main window.
+
+2009-04-03 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=22081
+ <rdar://problem/6346030>
+ Don't allow overriding the return value of window.location.
+
+ Tests: fast/dom/Window/Location/location-override-toString-on-proto-using-defineGetter.html
+ fast/dom/Window/Location/location-override-toString-on-proto-using-with.html
+ fast/dom/Window/Location/location-override-toString-on-proto.html
+ fast/dom/Window/Location/location-override-toString-using-defineGetter.html
+ fast/dom/Window/Location/location-override-toString-using-with.html
+ fast/dom/Window/Location/location-override-toString.html
+ fast/dom/Window/Location/location-override-valueOf-on-proto-using-defineGetter.html
+ fast/dom/Window/Location/location-override-valueOf-on-proto-using-with.html
+ fast/dom/Window/Location/location-override-valueOf-on-proto.html
+ fast/dom/Window/Location/location-override-valueOf-using-defineGetter.html
+ fast/dom/Window/Location/location-override-valueOf-using-with.html
+ fast/dom/Window/Location/location-override-valueOf.html
+ fast/dom/Window/Location/window-override-location-using-defineGetter.html
+ fast/dom/Window/Location/window-override-window-using-defineGetter.html
+ fast/dom/Window/Location/window-shadow-location-using-js-object-with-toString.html
+ fast/dom/Window/Location/window-shadow-location-using-string.html
+ fast/dom/Window/Location/window-shadow-window-using-js-object-with-location-field.html
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::defineGetter):
+ * bindings/js/JSLocationCustom.cpp:
+ (WebCore::JSLocation::customPut):
+ (WebCore::JSLocation::defineGetter):
+ (WebCore::JSLocationPrototype::customPut):
+ (WebCore::JSLocationPrototype::defineGetter):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * page/Location.idl:
+
+2009-04-03 Geoffrey Garen <ggaren@apple.com>
+
+ Rolled out r42214 since it seems to have caused crashes on the buildbot.
+
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ (WebCore::JSDOMApplicationCache::addEventListener):
+ (WebCore::JSDOMApplicationCache::removeEventListener):
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::findOrCreateJSProtectedEventListener):
+ (WebCore::JSDOMGlobalObject::findJSEventListener):
+ (WebCore::JSDOMGlobalObject::findOrCreateJSEventListener):
+ * bindings/js/JSDOMGlobalObject.h:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::addEventListener):
+ * bindings/js/JSMessagePortCustom.cpp:
+ (WebCore::JSMessagePort::addEventListener):
+ (WebCore::JSMessagePort::removeEventListener):
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::JSNode::addEventListener):
+ (WebCore::JSNode::removeEventListener):
+ * bindings/js/JSSVGElementInstanceCustom.cpp:
+ (WebCore::JSSVGElementInstance::addEventListener):
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::addEventListener):
+ (WebCore::JSWorkerContext::removeEventListener):
+ * bindings/js/JSWorkerCustom.cpp:
+ (WebCore::JSWorker::addEventListener):
+ (WebCore::JSWorker::removeEventListener):
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::addEventListener):
+ (WebCore::JSXMLHttpRequest::removeEventListener):
+ * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
+ (WebCore::JSXMLHttpRequestUpload::addEventListener):
+ (WebCore::JSXMLHttpRequestUpload::removeEventListener):
+ * bindings/scripts/CodeGeneratorJS.pm:
+
+2009-04-03 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for <rdar://problem/6476356>
+ https://bugs.webkit.org/show_bug.cgi?id=23148
+
+ - Use the window object the Location and History objects are directly associated with
+ instead of the lexical global object to pick the object prototype to serve as the
+ base of the their respective prototype chains.
+ - Re-factor as necessary to allow passing the correct global object to the createPrototype
+ functions.
+
+ Tests: http/tests/security/cross-frame-access-history-prototype.html
+ http/tests/security/cross-frame-access-location-prototype.html
+
+ * bindings/js/JSAudioConstructor.cpp:
+ (WebCore::JSAudioConstructor::JSAudioConstructor):
+ * bindings/js/JSDOMBinding.cpp:
+ (WebCore::getCachedDOMStructure):
+ (WebCore::cacheDOMStructure):
+ * bindings/js/JSDOMBinding.h:
+ (WebCore::getDOMStructure):
+ (WebCore::getDOMPrototype):
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::history):
+ (WebCore::JSDOMWindow::location):
+ * bindings/js/JSDocumentCustom.cpp:
+ (WebCore::JSDocument::location):
+ * bindings/js/JSImageConstructor.cpp:
+ (WebCore::JSImageConstructor::JSImageConstructor):
+ * bindings/js/JSMessageChannelConstructor.cpp:
+ (WebCore::JSMessageChannelConstructor::JSMessageChannelConstructor):
+ * bindings/js/JSNamedNodesCollection.h:
+ (WebCore::JSNamedNodesCollection::createPrototype):
+ * bindings/js/JSOptionConstructor.cpp:
+ (WebCore::JSOptionConstructor::JSOptionConstructor):
+ * bindings/js/JSRGBColor.h:
+ (WebCore::JSRGBColor::createPrototype):
+ * bindings/js/JSWebKitCSSMatrixConstructor.cpp:
+ (WebCore::JSWebKitCSSMatrixConstructor::JSWebKitCSSMatrixConstructor):
+ * bindings/js/JSWebKitPointConstructor.cpp:
+ (WebCore::JSWebKitPointConstructor::JSWebKitPointConstructor):
+ * bindings/js/JSWorkerConstructor.cpp:
+ (WebCore::JSWorkerConstructor::JSWorkerConstructor):
+ * bindings/js/JSXMLHttpRequestConstructor.cpp:
+ (WebCore::JSXMLHttpRequestConstructor::JSXMLHttpRequestConstructor):
+ * bindings/js/JSXSLTProcessorConstructor.cpp:
+ (WebCore::JSXSLTProcessorConstructor::JSXSLTProcessorConstructor):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * bridge/objc/objc_runtime.h:
+ (JSC::Bindings::ObjcFallbackObjectImp::createPrototype):
+ * bridge/runtime_array.h:
+ (JSC::RuntimeArray::createPrototype):
+ * bridge/runtime_method.h:
+ (JSC::RuntimeMethod::createPrototype):
+ * bridge/runtime_object.h:
+ (JSC::RuntimeObjectImp::createPrototype):
+ * page/DOMWindow.idl:
+
+2009-04-03 Jian Li <jianli@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25009
+ Upstream changes to WorkerContextExecutionProxy for V8 bindings in order to use V8EventListenerList as container.
+
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::WorkerContextExecutionProxy::WorkerContextExecutionProxy):
+ (WebCore::WorkerContextExecutionProxy::dispose):
+ (WebCore::WorkerContextExecutionProxy::FindOrCreateEventListener):
+ (WebCore::WorkerContextExecutionProxy::RemoveEventListener):
+ * bindings/v8/WorkerContextExecutionProxy.h:
+
+2009-04-03 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Removed irrelevant ExecState* parameter from event handler registration code.
+
+ No change in behavior.
+
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ (WebCore::JSDOMApplicationCache::addEventListener):
+ (WebCore::JSDOMApplicationCache::removeEventListener):
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::findOrCreateJSProtectedEventListener):
+ (WebCore::JSDOMGlobalObject::findJSEventListener):
+ (WebCore::JSDOMGlobalObject::findOrCreateJSEventListener):
+ * bindings/js/JSDOMGlobalObject.h:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::addEventListener):
+ * bindings/js/JSMessagePortCustom.cpp:
+ (WebCore::JSMessagePort::addEventListener):
+ (WebCore::JSMessagePort::removeEventListener):
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::JSNode::addEventListener):
+ (WebCore::JSNode::removeEventListener):
+ * bindings/js/JSSVGElementInstanceCustom.cpp:
+ (WebCore::JSSVGElementInstance::addEventListener):
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::addEventListener):
+ (WebCore::JSWorkerContext::removeEventListener):
+ * bindings/js/JSWorkerCustom.cpp:
+ (WebCore::JSWorker::addEventListener):
+ (WebCore::JSWorker::removeEventListener):
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::addEventListener):
+ (WebCore::JSXMLHttpRequest::removeEventListener):
+ * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
+ (WebCore::JSXMLHttpRequestUpload::addEventListener):
+ (WebCore::JSXMLHttpRequestUpload::removeEventListener):
+ * bindings/scripts/CodeGeneratorJS.pm:
+
+2009-04-03 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ - fix <rdar://problem/6634771> Under full-page zoom, cannot scroll
+ MobileMe contact list
+
+ Test: fast/css/zoom-in-length-round-trip.html
+
+ * dom/Element.cpp:
+ (WebCore::adjustForLocalZoom): For zoom factors greater than 1, ensure
+ that the returned value is equal to the original unscaled value.
+ (WebCore::adjustForAbsoluteZoom): Ditto.
+
+2009-04-03 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Fixed https://bugs.webkit.org/show_bug.cgi?id=24941
+
+ This fix essentially does a -viewWillDraw call for layout. It adds
+ a CFRunLoopObserver which performs layout just before drawing on the
+ Mac platform. This makes sure layout is complete before rendering and
+ avoids a flash.
+
+ * page/ChromeClient.h:
+ (WebCore::ChromeClient::scheduleViewUpdate):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::setCompositingLayersNeedUpdate):
+ (WebCore::RenderLayerCompositor::scheduleViewUpdate):
+ * rendering/RenderLayerCompositor.h:
+
+2009-04-02 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=24648
+
+ Optimize mapPoint(), mapRect() and mapQuad() for identity matrix and translations.
+
+ * platform/graphics/transforms/TransformationMatrix.cpp:
+ (WebCore::TransformationMatrix::mapPoint):
+ (WebCore::TransformationMatrix::mapRect):
+ (WebCore::TransformationMatrix::mapQuad):
+ * platform/graphics/transforms/TransformationMatrix.h:
+ (WebCore::TransformationMatrix::mapPoint):
+
+2009-04-02 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=25018
+
+ Add containsPoint() and containsQuad() methods to FloatQuad.
+
+ * platform/graphics/FloatQuad.cpp:
+ (WebCore::dot):
+ (WebCore::isPointInTriangle):
+ (WebCore::FloatQuad::containsPoint):
+ (WebCore::FloatQuad::containsQuad):
+ * platform/graphics/FloatQuad.h:
+
+2009-04-03 Kevin Decker <kdecker@apple.com>
+
+ Reviewed by Darin.
+
+ * loader/ProgressTracker.cpp: Included DocumentLoader.h
+ (WebCore::ProgressTracker::incrementProgress): Limit the 50%-clamp rule to
+ documents that use WebCore's layout system.
+
+2009-04-03 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25029
+ <rdar://problem/6336092> REGRESSION: movie does not resize correctly
+
+ Test: media/video-size-intrinsic-scale.html
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::naturalSize): Use QTMovieCurrentSizeAttribute instead
+ of QTMovieNaturalSizeAttribute so we return the correct size for movies saved
+ with a non-default matrix.
+ (WebCore::MediaPlayerPrivate::setSize): Don't resize the QTMovieView
+ because [QTMovieView setFrame] also resizes the movie itself, and as
+ the renderer calls setSize immediately when a movie reports a size change
+ (QTMovieSizeDidChangeNotification) we can get into a feedback loop
+ observing the size change and resetting the size, and this can cause
+ QuickTime to miss correctly setting a movie's size when the media size
+ changes after opening (as happens with an rtsp movie once the server sends
+ the track sizes). Instead, remember the size passed to paint() and
+ resize the view when it changes.
+ (WebCore::MediaPlayerPrivate::paint): Resize the view when passed a new size.
+
+ * platform/graphics/win/QTMovieWin.cpp:
+ (QTMovieWin::getNaturalSize): Use GetMovieBox instead of GetMovieNaturalBoundsRect
+ so we return the correct size for movies saved with non-default matrix.
+
+2009-04-03 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Restore FrameLoader::policyDocumentLoader to fix the Chromium build.
+ https://bugs.webkit.org/show_bug.cgi?id=25028
+
+ * loader/FrameLoader.h:
+ (WebCore::FrameLoader::policyDocumentLoader):
+
+2009-04-02 Michael Nordman <michaeln@google.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Use long long, not int64, when working in webcore (sorry).
+ https://bugs.webkit.org/show_bug.cgi?id=25011
+
+ No change in functionality, so no tests.
+
+ * platform/network/chromium/ResourceResponse.h:
+ (WebCore::ResourceResponse::getAppCacheID):
+ (WebCore::ResourceResponse::setAppCacheID):
+
+2009-04-03 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ Remove pre-processor checks for GTK+ >= 2.10, since we now require
+ at least that version.
+
+ * platform/graphics/gtk/FontPlatformDataGtk.cpp:
+ (WebCore::FontPlatformData::FontPlatformData):
+ * platform/gtk/ContextMenuItemGtk.cpp:
+ (WebCore::gtkStockIDFromContextMenuAction):
+ * platform/gtk/KeyEventGtk.cpp:
+ (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
+ * platform/gtk/LocalizedStringsGtk.cpp:
+ (WebCore::contextMenuItemTagSelectAll):
+ * platform/gtk/MouseEventGtk.cpp:
+ (WebCore::PlatformMouseEvent::PlatformMouseEvent):
+ * platform/gtk/PasteboardGtk.cpp:
+ (WebCore::Pasteboard::writeSelection):
+ (WebCore::Pasteboard::documentFragment):
+ * platform/gtk/WheelEventGtk.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+
+2009-04-02 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=25021
+
+ Fix repainting an element with a reflection and transform after layout.
+ Telling the reflection to repaint directly is wrong, because, with
+ LayoutState enabled, it only takes the reflection's transform into account,
+ not that of the element. We can fix this, and keep the benefits of LayoutState,
+ by computing the reflected repaint rect, and repainting that using the original
+ renderer.
+
+ Test: fast/repaint/reflection-repaint-test.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::layoutBlock):
+
+2009-04-02 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=23307
+
+ When repainting during layout (when LayoutState is enabled), we need
+ to apply the transform to the dirty rect, before applying x(), y() and
+ the offset storted in the LayoutState.
+
+ Also bypass LayoutState in mapLocalToContainer() if we have a repaintContainer,
+ since LayoutState is always root-relative.
+
+ Test: fast/repaint/transform-layout-repaint.html
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::mapLocalToContainer):
+ (WebCore::RenderBox::computeRectForRepaint):
+
+2009-04-02 Mark Rowe <mrowe@apple.com>
+
+ Fix the Mac build after r42191.
+
+ * WebCore.base.exp:
+
+2009-04-02 Mark Rowe <mrowe@apple.com>
+
+ Fix Windows build after r42190.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::keyEvent): Update to use the new name of the constant.
+
+2009-04-02 Darin Adler <darin@apple.com>
+
+ Reviewed by Brady Eidson.
+
+ <rdar://problem/6625840> Previous Page isn't loaded after hitting back button at http://www.breakingnews.ie/
+
+ Test: http/tests/navigation/onload-navigation-iframe-2.html
+
+ * html/HTMLFrameElement.cpp:
+ (WebCore::HTMLFrameElement::HTMLFrameElement): Removed unneeded createdByParser flag.
+ * html/HTMLFrameElement.h: Ditto.
+ * html/HTMLFrameElementBase.cpp:
+ (WebCore::HTMLFrameElementBase::HTMLFrameElementBase): Ditto.
+ * html/HTMLFrameElementBase.h: Ditto.
+ * html/HTMLFrameOwnerElement.cpp:
+ (WebCore::HTMLFrameOwnerElement::HTMLFrameOwnerElement): Ditto.
+ * html/HTMLFrameOwnerElement.h: Ditto.
+ * html/HTMLIFrameElement.cpp:
+ (WebCore::HTMLIFrameElement::HTMLIFrameElement): Ditto.
+ * html/HTMLIFrameElement.h: Ditto.
+ * html/HTMLPlugInElement.cpp:
+ (WebCore::HTMLPlugInElement::HTMLPlugInElement): Ditto.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::submitForm): Removed unneeded check of the createdByParser flag.
+ The original change that introduced this, http://trac.webkit.org/changeset/25410, does
+ not make it clear why this check was needed. And it seems it is not needed.
+
+2009-04-02 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Add a way to get a list of focusable nodes.
+
+ * dom/Document.cpp:
+ (WebCore::Document::setFocusedNode):
+ (WebCore::Document::getFocusableNodes):
+ * dom/Document.h:
+
+2009-04-02 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ <rdar://problem/6654255> crash due to null FrameView in EventHandler
+
+ Lots of code was added to EventHandler that used view() and page() without
+ null checking, but both of those can become null due to the frame lifetime.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleMousePressEventSingleClick):
+ (WebCore::EventHandler::eventMayStartDrag):
+ (WebCore::EventHandler::handleAutoscroll):
+ (WebCore::EventHandler::autoscrollTimerFired):
+ (WebCore::EventHandler::setPanScrollCursor):
+ (WebCore::EventHandler::allowDHTMLDrag):
+ (WebCore::EventHandler::hitTestResultAtPoint):
+ (WebCore::EventHandler::stopAutoscrollTimer):
+ (WebCore::EventHandler::selectCursor):
+ (WebCore::EventHandler::handleMousePressEvent):
+ (WebCore::EventHandler::handleMouseMoveEvent):
+ (WebCore::EventHandler::dispatchDragEvent):
+ (WebCore::EventHandler::prepareMouseEvent):
+ (WebCore::EventHandler::dispatchMouseEvent):
+ (WebCore::EventHandler::handleWheelEvent):
+ (WebCore::EventHandler::hoverTimerFired):
+ (WebCore::EventHandler::keyEvent):
+ (WebCore::EventHandler::dragHysteresisExceeded):
+ (WebCore::EventHandler::shouldDragAutoNode):
+ (WebCore::EventHandler::handleDrag):
+ (WebCore::EventHandler::handleTextInputEvent):
+ (WebCore::EventHandler::addPendingFrameUnloadEventCount):
+ (WebCore::EventHandler::removePendingFrameUnloadEventCount):
+ (WebCore::EventHandler::clearPendingFrameUnloadEventCount):
+ (WebCore::EventHandler::addPendingFrameBeforeUnloadEventCount):
+ (WebCore::EventHandler::removePendingFrameBeforeUnloadEventCount):
+ (WebCore::EventHandler::clearPendingFrameBeforeUnloadEventCount):
+ Added null checks for view() and page(). Made minor code cleanups.
+
+2009-04-02 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix regression in <object> layout test. Make sure that even though a 404 image loads, that <object>
+ still considers it an error for the purposes of firing onerror.
+
+ * html/HTMLImageLoader.cpp:
+ (WebCore::HTMLImageLoader::dispatchLoadEvent):
+
+2009-04-02 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25010
+ Refactor InspectorController to replace all JS function invocations with
+ ScriptFunctionCall.
+
+ * bindings/js/ScriptFunctionCall.cpp:
+ (WebCore::ScriptFunctionCall::appendArgument): Added int, UString,
+ and JSValuePtr methods.
+ (WebCore::ScriptFunctionCall::call): Added simplified, exception-eating
+ method.
+ * bindings/js/ScriptFunctionCall.h: Decls for above.
+ * bindings/js/ScriptObjectQuarantine.cpp: Added helper for Node and DOMWindow.
+ (WebCore::getQuarantinedScriptObject):
+ * bindings/js/ScriptObjectQuarantine.h: Decls for above.
+ * inspector/InspectorController.cpp:
+ (WebCore::callSimpleFunction): Made into a static.
+ (WebCore::InspectorController::focusNode): Refactored to use ScriptFunctionCall.
+ (WebCore::InspectorController::toggleRecordButton): Ditto.
+ (WebCore::InspectorController::startGroup): Ditto.
+ (WebCore::InspectorController::setAttachedWindow): Ditto.
+ (WebCore::InspectorController::inspectedWindowScriptObjectCleared): Ditto.
+ (WebCore::InspectorController::addScriptProfile): Ditto.
+ (WebCore::InspectorController::didParseSource): Ditto.
+ (WebCore::InspectorController::failedToParseSource): Ditto.
+ (WebCore::InspectorController::didPause): Ditto.
+ * inspector/InspectorController.h: Removed callFunction and callSimpleFunction
+ decls.
+
+2009-04-02 Jian Li <jianli@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Upstream changes to V8WorkerContextEventListener for V8 bindings.
+ https://bugs.webkit.org/show_bug.cgi?id=25007
+
+ * bindings/v8/V8ObjectEventListener.h:
+ * bindings/v8/V8WorkerContextEventListener.cpp:
+
+2009-04-02 Jian Li <jianli@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Upstream V8WorkerContextObjectEventListener for V8 bindings.
+ https://bugs.webkit.org/show_bug.cgi?id=25005
+
+ * bindings/v8/V8WorkerContextObjectEventListener.cpp: Added.
+ * bindings/v8/V8WorkerContextObjectEventListener.h: Added.
+
+2009-04-02 Jian Li <jianli@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Upstream V8EventListenerList for V8 bindings.
+ https://bugs.webkit.org/show_bug.cgi?id=25004
+
+ * bindings/v8/V8EventListenerList.cpp: Added.
+ * bindings/v8/V8EventListenerList.h: Added.
+
+2009-04-02 Michael Nordman <michaeln@google.com>
+
+ Reviewed by Darin Fisher.
+
+ Chromium's ResourceRequest and ResourceResponse structs need some new data members.
+ https://bugs.webkit.org/show_bug.cgi?id=24897
+
+ These fields are needed to facilitate Chromium's implementation of the HTML5
+ ApplicationCache feature. We need to know what frame (or context) is doing the
+ requesting, and from what cache the resulting resource was retrieved.
+
+ No change in functionality, so no tests.
+
+ * platform/network/chromium/ResourceRequest.h:
+ (WebCore::ResourceRequest::ResourceRequest):
+ (WebCore::ResourceRequest::appCacheContextID):
+ (WebCore::ResourceRequest::setAppCacheContextID):
+ * platform/network/chromium/ResourceResponse.h:
+ (WebCore::ResourceResponse::ResourceResponse):
+ (WebCore::ResourceResponse::getAppCacheID):
+ (WebCore::ResourceResponse::setAppCacheID):
+
+2009-04-02 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Darin Adler
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=24643.
+
+ Make sure images just ignore HTTP error codes and keep loading anyway. Only <object> checks http error codes and falls back. Everyone
+ else just ignores it and displays the image anyway.
+
+ Added http/tests/misc/image-error.html
+
+ * html/HTMLImageLoader.cpp:
+ (WebCore::HTMLImageLoader::notifyFinished):
+ * loader/CachedImage.cpp:
+ (WebCore::CachedImage::CachedImage):
+ * loader/CachedImage.h:
+ (WebCore::CachedImage::httpStatusCodeError):
+ (WebCore::CachedImage::httpStatusCodeErrorOccurred):
+ * loader/CachedResource.h:
+ (WebCore::CachedResource::httpStatusCodeError):
+ * loader/loader.cpp:
+ (WebCore::Loader::Host::didReceiveData):
+
+2009-04-02 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Add XHR constructor in WorkerContext.idl for V8 bindings.
+ https://bugs.webkit.org/show_bug.cgi?id=24962
+
+ * workers/WorkerContext.idl:
+
+2009-04-02 Ben Murdoch <benm@google.com>
+
+ Fix Bug 19743: Release build fails on 32-bit Windows
+
+ <https://bugs.webkit.org/show_bug.cgi?id=19743>
+
+ Combines all the HTML element cpp files into one to help reduce the
+ size of WebCore.lib so we can build in release mode on 32bit Windows.
+
+ Reviewed by Adam Roben.
+
+ * WebCore.vcproj/WebCore.vcproj: Excluded all the separate
+ HTML*Element.cpp files from the build. Added HTMLElementsAllInOne.cpp
+ to the build.
+ * html/HTMLElementsAllInOne.cpp: Added.
+
+2009-04-02 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=24999
+
+ Optimize hit testing with transforms.
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::mapLocalToContainer):
+ (WebCore::RenderBox::mapAbsoluteToLocalPoint):
+ getTransformFromContainer() change to return the matrix by reference.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::update3DTransformedDescendantStatus):
+ The method failed to set m_3DTransformedDescendantStatusDirty to false,
+ so did the work every time.
+
+ (WebCore::RenderLayer::createLocalTransformState):
+ Only call the expensive getTransformFromContainer() if there is a transform,
+ otherwise we just have a translation.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::getTransformFromContainer):
+ * rendering/RenderObject.h:
+ Change transformFromContainer() to getTransformFromContainer(), and return
+ the matrix by reference to reduce copying.
+ New enum values for arguments for readability.
+
+ * rendering/TransformState.cpp:
+ (WebCore::TransformState::move):
+ (WebCore::TransformState::applyTransform):
+ (WebCore::HitTestingTransformState::translate):
+ New method that adds a translation to the accumulated matrix, optionally
+ without flattening. Cheaper than applyTransform().
+
+ (WebCore::HitTestingTransformState::applyTransform):
+ (WebCore::HitTestingTransformState::flatten):
+ (WebCore::HitTestingTransformState::flattenWithTransform):
+ Add flattenWithTransform(), which is a helper that allows us to
+ avoid doing the inverse() twice.
+
+ * rendering/TransformState.h:
+ (WebCore::TransformState::):
+ (WebCore::TransformState::move):
+ (WebCore::HitTestingTransformState::):
+ New method on HitTestingTransformState that adds a translation to the
+ accumulated matrix, optionally without flattening. Cheaper than applyTransform().
+ New enum values for arguments for readability.
+
+2009-04-02 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=24648
+
+ Optimize common code paths in TransformationMatrix.
+
+ * platform/graphics/transforms/TransformationMatrix.cpp:
+ (WebCore::TransformationMatrix::translate):
+ (WebCore::TransformationMatrix::translate3d):
+ Optimize to avoid matrix copy.
+
+ (WebCore::TransformationMatrix::isInvertible):
+ Test for identity and translation matrices before computing
+ the determinant.
+
+ (WebCore::TransformationMatrix::inverse):
+ Optimize for identity matrix and translations.
+
+ * platform/graphics/transforms/TransformationMatrix.h:
+ (WebCore::TransformationMatrix::isIdentityOrTranslation):
+ Utility method.
+
+2009-04-02 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24930
+ [Gtk] ISO files content is displayed inside the webview instead of being downloaded
+
+ Also sniff content of types declared as text/plain. This is
+ justified by the fact that it is common to have Apache HTTP
+ servers configured to send text/plain as Content-Type by default.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::gotHeadersCallback):
+
+2009-04-02 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Protect the handle when notifying the client that the response was
+ received also in gotChunkCallback, or we crash in didReceiveData
+ when the load is cancelled in didReceiveResponse.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::gotChunkCallback):
+
+2009-04-02 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25001
+ Crash when content type parameters have no value
+
+ Handle the case where a Content-Type header parameter has no
+ value (i.e. no = character), to work-around a bug in libsoup.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::fillResponseFromMessage):
+
+2009-04-02 Yael Aharon <yael.aharon@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24490
+
+ Enable web workers in Qt.
+
+ * WebCore.pro:
+
+2009-04-01 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler. Based on work of Julien Chaffraix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22475
+ REGRESSION: Async XMLHttpRequest never finishes on nonexistent files anymore
+
+ https://bugs.webkit.org/show_bug.cgi?id=24886
+ XHR requests opened when offline never return
+
+ Tests: fast/xmlhttprequest/xmlhttprequest-nonexistent-file.html
+ http/tests/xmlhttprequest/state-after-network-error.html
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::callReadyStateChangeListener): Only dispatch load event if this
+ wasn't an error.
+ (WebCore::XMLHttpRequest::abort): Fixed formatting.
+ (WebCore::XMLHttpRequest::genericError): Change state to DONE and dispatch readystatechange.
+ The comment saying that this doesn't match Firefox was added in r33559 without explanation
+ or tests, and I don't think that it's accurate. Also, Firefox and Safari 3 both change state
+ to HEADERS_RECEIVED before DONE on error - this doesn't match the spec, and I doubt
+ that any code depends on this, so I went with the spec here.
+
+2009-04-01 Steve Falkenburg <sfalken@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=24997
+ Race conditions in icon database threading code
+
+ m_syncThreadRunning set was mistakenly eliminated in r27717.
+ This reintroduces it.
+
+ Reviewed by Oliver Hunt.
+
+ * loader/icon/IconDatabase.cpp:
+ (WebCore::IconDatabase::open): Set m_syncThreadRunning.
+
+2009-04-01 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6748609> Use ActiveDOMObject to suspend marquees
+
+ Make marquees ActiveDOMObjects, get rid of the special suspension code.
+
+ * html/HTMLMarqueeElement.cpp:
+ (WebCore::HTMLMarqueeElement::HTMLMarqueeElement):
+ (WebCore::HTMLMarqueeElement::canSuspend):
+ (WebCore::HTMLMarqueeElement::suspend):
+ (WebCore::HTMLMarqueeElement::resume):
+ * html/HTMLMarqueeElement.h:
+ * page/Frame.cpp:
+ (WebCore::Frame::clearTimers):
+ * rendering/RenderLayer.cpp:
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::marquee):
+
+2009-04-01 Dean Jackson <dino@apple.com>
+
+ Reviewed by Darin Adler
+
+ Make constant values static in previous commit, as suggested
+ by Darin.
+
+ * rendering/RenderVideo.cpp:
+
+2009-04-01 Dean Jackson <dino@apple.com>
+
+ Reviewed by Simon Fraser
+
+ https://bugs.webkit.org/show_bug.cgi?id=24993
+
+ Standalone media should have a smaller instrinsic
+ height.
+
+ * rendering/RenderVideo.cpp:
+ (WebCore::RenderVideo::RenderVideo):
+
+2009-04-01 Darin Adler <darin@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Bug 22378: Crash submitting a form when parsing an XHTML document
+ https://bugs.webkit.org/show_bug.cgi?id=22378
+ rdar://problem/6388377
+
+ Tests: fast/loader/submit-form-while-parsing-1.xhtml
+ fast/loader/submit-form-while-parsing-2.html
+
+ * WebCore.base.exp: Updated.
+
+ * history/HistoryItem.cpp:
+ (WebCore::HistoryItem::HistoryItem): Renamed m_subItems to m_children.
+ Used uncheckedAppend because we reserveInitialCapacity.
+ (WebCore::HistoryItem::addChildItem): Renamed m_subItems to m_children.
+ Added an assertion that this is only used to add items that don't have
+ duplicate frame names.
+ (WebCore::HistoryItem::setChildItem): Added. Replaces an existing item
+ if any, preserving the isTargetItem flag.
+ (WebCore::HistoryItem::childItemWithTarget): Renamed from childItemWithName
+ for consistency with the other functions here that all call the frame name the
+ "target". Also updated for rename of m_subItems to m_children.
+ (WebCore::HistoryItem::findTargetItem): Renamed from recurseToFindTargetItem.
+ Removed unneeded size check.
+ (WebCore::HistoryItem::targetItem): Changed to always return the top item
+ if no item has the isTargetItem flag set. The old version would instead return
+ 0 in some cases, but return the top item if it had no children.
+ (WebCore::HistoryItem::children): Renamed m_subItems to m_children.
+ (WebCore::HistoryItem::hasChildren): Ditto.
+ (WebCore::HistoryItem::showTreeWithIndent): Ditto.
+
+ * history/HistoryItem.h: Name changes.
+
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::submit): Create and pass a FormState instead of
+ attaching "recorded form values" and "form about to be submitted" to the frame
+ loader. Parameter work fine for this; there's no need to store state on the
+ FrameLoader.
+
+ * loader/FormState.cpp:
+ (WebCore::FormState::FormState): Adopt a vector instead of copying a hash map.
+ (WebCore::FormState::create): Ditto.
+ * loader/FormState.h: Update to use a vector that we adopt instead of hash map
+ that we copy for auto-fill text field values.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::ScheduledRedirection::ScheduledRedirection): Added a new case for
+ form submissions and turned the "wasDuringLoad" state into a separate boolean
+ instead of using a special redirection type to track it.
+ (WebCore::FrameLoader::createWindow): Updated for name and argument change of
+ loadFrameRequest.
+ (WebCore::FrameLoader::urlSelected): Ditto.
+ (WebCore::FrameLoader::submitForm): Removed the "deferred form submission"
+ machinery, replacing it with the "scheduled redirection" mechanism, shared
+ with other kinds of redirection and navigation. Moved frame targeting here
+ so we can schedule the redirection on the right frame. Moved the multiple
+ form submission protection here. Moved the code to implement the rule that
+ m_navigationDuringLoad was used for here too.
+ (WebCore::FrameLoader::didOpenURL): Use the new wasDuringLoad flag instead
+ of the locationChangeDuringLoad type to detect location change during a load.
+ (WebCore::FrameLoader::executeScript): Removed call to now-obsolete function,
+ submitFormAgain.
+ (WebCore::FrameLoader::scheduleLocationChange): Moved the code to stop loading
+ out of this function into scheduleRedirection, so it can be shared with the
+ new scheduleFormSubmission function.
+ (WebCore::FrameLoader::scheduleFormSubmission): Added. Almost the same as
+ scheduleLocationChange, but with the arguments for a form submission.
+ (WebCore::FrameLoader::scheduleRefresh): Updated for the change to the
+ duringLoad flag.
+ (WebCore::FrameLoader::isLocationChange): Added case for formSubmission
+ and removed case for locationChangeDuringLoad.
+ (WebCore::FrameLoader::redirectionTimerFired): Ditto. Also removed unneeded
+ completeURL call and just use KURL constructor to match the other cases.
+ (WebCore::FrameLoader::provisionalLoadStarted): Removed the code to set up
+ the m_navigationDuringLoad, which is no longer needed. The new version of
+ this is in the submitForm function and sets the lockHistory boolean.
+ (WebCore::FrameLoader::scheduleRedirection): Moved the code to stop a load
+ in here that used to be in scheduleLocationChange.
+ (WebCore::FrameLoader::startRedirectionTimer): Added case for formSubmission
+ and removed case for locationChangeDuringLoad.
+ (WebCore::FrameLoader::stopRedirectionTimer): Ditto.
+ (WebCore::FrameLoader::completed): Removed call to now-obsolete function,
+ submitFormAgain.
+ (WebCore::FrameLoader::loadFrameRequest): Renamed from
+ loadFrameRequestWithFormAndValues. Replaced form element and form values
+ argument with a single FormState argument. Changed frame targeting code
+ to use the source frame in the case of a form submission to better match
+ the actual target frame.
+ (WebCore::FrameLoader::loadURL): Don't search for existing frames in the
+ form submission case since we already did that in the submitForm function.
+ (WebCore::FrameLoader::clientRedirected): Changed to work with the
+ m_isExecutingJavaScriptFormAction data member directly instead of taking
+ it as a function parameter.
+ (WebCore::FrameLoader::loadPostRequest): Don't search for existing frames
+ in the form submission case since we already did that in the submitForm
+ function.
+ (WebCore::FrameLoader::addBackForwardItemClippedAtTarget): Moved comment
+ in here that was misplaced elsewhere in the file.
+ (WebCore::FrameLoader::findFrameForNavigation): Changed to use the early
+ return idiom.
+ (WebCore::FrameLoader::recursiveGoToItem): Updated for HistoryItem changes.
+ (WebCore::FrameLoader::childFramesMatchItem): Ditto.
+ (WebCore::FrameLoader::updateHistoryForStandardLoad): Removed the
+ m_navigationDuringLoad logic; that's now handled by setting lockHistory
+ to true in the submitForm function.
+ (WebCore::FrameLoader::updateHistoryForRedirectWithLockedBackForwardList):
+ Use the new setChildItem function so we don't get multiple items for the
+ same frame name in the history item tree in the back/forward list.
+
+ * loader/FrameLoader.h: Renamed loadFrameRequestWithFormAndValues to
+ loadFrameRequest and made it take a form state object instead of the
+ form element and form values. Removed the unused functions
+ loadEmptyDocumentSynchronously, provisionalDocumentLoader,
+ notifyIconChnaged, and updateBaseURLForEmptyDocument. Changed the
+ submitForm function to take a form state argument. Eliminated the
+ clearRecordedFormValues, setFormAboutToBeSubmitted, and recordFormValue
+ functions, which are replaced by the form state arguments to submitForm
+ and loadFrameRequest. Removed the isJavaScriptFormAction argument from
+ the clientRedirected function; instead it looks at a data member directly.
+ Eliminated the submitFormAgain and overload of the submitForm function;
+ these are now subsumed into the remaining submitForm function and the
+ scheduleFormSubmission function. Removed unused and obsolete data
+ members m_navigationDuringLoad, m_deferredFormSubmission,
+ m_formAboutToBeSubmitted and m_formValuesAboutToBeSubmitted.
+
+ * page/ContextMenuController.cpp:
+ (WebCore::ContextMenuController::contextMenuItemSelected):
+ Updated for name and argument change of loadFrameRequest.
+
+ * page/Frame.cpp:
+ (WebCore::Frame::~Frame): Removed call to the now-unneeded
+ clearRecordedFormValues function.
+
+2009-04-01 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, fixing previous commit.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24994
+ Revert V8DOMMap.cpp change which accidentally snuck into the previous
+ commit.
+
+ * bindings/v8/V8DOMMap.cpp: Revert change in previous commit.
+
+2009-04-01 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24994
+ Fix miscellaneous merge/upstreaming divergencies in Chromium port.
+
+ * bindings/v8/V8Collection.h: Added an include.
+ * platform/KURLGoogle.cpp:
+ (WebCore::KURL::baseAsString): Added to match KURL.cpp.
+ * platform/chromium/ClipboardChromium.cpp: Added an include.
+
+2009-04-01 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24989
+ Refactor InspectorResource to use ScriptObject/FunctionCall.
+
+ * bindings/js/JSInspectorControllerCustom.cpp:
+ (WebCore::JSInspectorController::addResourceSourceToFrame): Tweaked to use
+ a more appropriate type conversion.
+ (WebCore::JSInspectorController::getResourceDocumentNode): Tweaked to
+ accommodate for InspectorResource refactoring.
+ * bindings/js/ScriptFunctionCall.cpp:
+ (WebCore::ScriptFunctionCall::appendArgument): Added long long type to match
+ existing jsNumber call signature.
+ * bindings/js/ScriptFunctionCall.h: Declaration for above.
+ * bindings/js/ScriptObject.cpp:
+ (WebCore::createEmptyObject): Added.
+ (WebCore::ScriptObject::ScriptObject):
+ (WebCore::ScriptObject::set): Added a bunch of property setters.
+ * bindings/js/ScriptObject.h: Declarations for above.
+ * inspector/InspectorController.cpp: Moved all InspectorResource-managing code
+ to InspectorResource.cpp
+ (WebCore::InspectorController::populateScriptObjects): Changed to use
+ refactored InspectorResource.
+ (WebCore::InspectorController::resetScriptObjects): Ditto.
+ (WebCore::InspectorController::pruneResources): Ditto.
+ (WebCore::InspectorController::didCommitLoad): Ditto.
+ (WebCore::InspectorController::addResource): Ditto.
+ (WebCore::InspectorController::removeResource): Ditto.
+ (WebCore::InspectorController::didLoadResourceFromMemoryCache): Ditto.
+ (WebCore::InspectorController::identifierForInitialRequest): Ditto.
+ (WebCore::InspectorController::willSendRequest): Ditto.
+ (WebCore::InspectorController::didReceiveResponse): Ditto.
+ (WebCore::InspectorController::didReceiveContentLength): Ditto.
+ (WebCore::InspectorController::didFinishLoading): Ditto.
+ (WebCore::InspectorController::didFailLoading): Ditto,
+ (WebCore::InspectorController::resourceRetrievedByXMLHttpRequest): Ditto.
+ (WebCore::InspectorController::scriptImported): Ditto.
+ * inspector/InspectorController.h: Removed InspectorResource-managing code decls
+ and tweaked some signatures to use ScriptString and long long for identifier.
+ * inspector/InspectorController.idl: Changed to use long long for identifier.
+ * inspector/InspectorResource.cpp: Refactored to use ScriptObject/FunctionCall.
+ (WebCore::InspectorResource::InspectorResource): Ditto.
+ (WebCore::InspectorResource::~InspectorResource): Ditto.
+ (WebCore::InspectorResource::createCached): Added.
+ (WebCore::InspectorResource::updateRequest): Added.
+ (WebCore::InspectorResource::updateResponse): Added.
+ (WebCore::createHeadersObject): Added.
+ (WebCore::InspectorResource::createScriptObject): Added.
+ (WebCore::InspectorResource::updateScriptObject): Added.
+ (WebCore::InspectorResource::releaseScriptObject): Added.
+ (WebCore::InspectorResource::type): Tweaked to use ScriptString.
+ (WebCore::InspectorResource::setXMLHttpResponseText): Added.
+ (WebCore::InspectorResource::sourceString): Tweaked to use ScriptString.
+ (WebCore::InspectorResource::startTiming): Added.
+ (WebCore::InspectorResource::markResponseReceivedTime): Added.
+ (WebCore::InspectorResource::endTiming): Added.
+ (WebCore::InspectorResource::markFailed): Added.
+ (WebCore::InspectorResource::addLength): Added.
+ * inspector/InspectorResource.h: Added decls for newly refactored-in methods.
+ (WebCore::InspectorResource::create): Added.
+ (WebCore::InspectorResource::isSameLoader): Added.
+ (WebCore::InspectorResource::markMainResource): Added.
+ (WebCore::InspectorResource::identifier): Added.
+ (WebCore::InspectorResource::requestURL): Added.
+ (WebCore::InspectorResource::frame): Added.
+ (WebCore::InspectorResource::mimeType): Added.
+ (WebCore::InspectorResource::Changes::Changes): Added new class to track
+ resource changes.
+ (WebCore::InspectorResource::Changes::hasChange): Added.
+ (WebCore::InspectorResource::Changes::set): Added.
+ (WebCore::InspectorResource::Changes::clear): Added.
+ (WebCore::InspectorResource::Changes::setAll): Added.
+ (WebCore::InspectorResource::Changes::clearAll): Added.
+
+2009-04-01 Tony Chang <tony@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Ensure the right click doesn't deselect text under it. This was
+ happening in the Chromium and GTK+ ports because they don't select
+ the text under the cursor on right click.
+
+ This was regressed in r41715, https://bugs.webkit.org/show_bug.cgi?id=19737
+
+ https://bugs.webkit.org/show_bug.cgi?id=24946
+
+ Test: fast/events/context-no-deselect.html
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleMouseReleaseEvent):
+
+2009-04-01 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24991
+
+ Need to use toRenderBoxModelObject(), not toRenderBox(), to test for layer()
+ when getting the transform.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::transformFromContainer):
+
+2009-03-31 Darin Adler <darin@apple.com>
+
+ Rolled out that last change until I can investigate the regression test failures it seems
+ to have caused.
+
+ * dom/PositionIterator.cpp:
+ (WebCore::PositionIterator::decrement):
+ * dom/PositionIterator.h:
+ (WebCore::PositionIterator::PositionIterator):
+
+2009-03-31 Darin Adler <darin@apple.com>
+
+ Reviewed by Eric Seidel.
+
+ Bug 24621: PositionIterator doesn't iterate "after last child" positions when going backwards
+ https://bugs.webkit.org/show_bug.cgi?id=24621
+
+ * dom/PositionIterator.cpp:
+ (WebCore::PositionIterator::decrement): Make sure that when the parent has no children, we
+ don't ever use Position::uncheckedPreviousOffset. This is consistent with the forward
+ iterator, but also should never arise because of the fix below.
+ * dom/PositionIterator.h:
+ (WebCore::PositionIterator::PositionIterator): Fixed so m_offset will always be 0 when
+ the passed-in node has no children. Like the change above, this is consistent with the rest
+ of the class, although in the long run I think it's a bit strange to treat a <p> element
+ with no children differently than a <p> element with children.
+
+2009-03-31 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24965
+ Bug 24965: HTMLMediaElement: network state changes can be missed
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::setNetworkState): Always update m_networkState when the
+ state changes, even when no event needs to be fired.
+
+2009-03-31 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24964
+ Bug 24964: HTMLMediaElement: 'waiting' event may fire twice
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::setReadyState): Only fire 'waiting' event once when ready state
+ drops below HAVE_FUTURE_DATA.
+
+2009-03-31 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24846
+ Bug 24846: HTMLMediaElement should implement 'autobuffer' attribute
+
+ Add 'autobuffer' attrubute to media element. 'autobuffer' is a hint that
+ the author recommends downloading the entire resource optimistically, so the
+ attribute is made available to the media engine to use if it is able.
+
+ Test: media/video-dom-autobuffer.html
+
+ * html/HTMLAttributeNames.in: Add autobuffer.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::parseMappedAttribute): New.
+ (WebCore::HTMLMediaElement::autobuffer): Ditto.
+ (WebCore::HTMLMediaElement::setAutobuffer): Ditto.
+
+ * html/HTMLMediaElement.h: Declare autobuffer and setAutobuffer.
+
+ * html/HTMLMediaElement.idl: Add autobuffer.
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::MediaPlayer::MediaPlayer): Initialize m_autobuffer.
+ (WebCore::MediaPlayer::autobuffer): New.
+ (WebCore::MediaPlayer::setAutobuffer): Ditto.
+ * platform/graphics/MediaPlayer.h: Declare m_autobuffer, autobuffer and setAutobuffer
+
+ * platform/graphics/MediaPlayerPrivate.h:
+ (WebCore::MediaPlayerPrivateInterface::setAutobuffer): Declare setAutobuffer.
+
+2009-03-31 Craig Schlenter <craig.schlenter@gmail.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24550
+ Check return value of vasprintf. This should keep gcc 4.3.3
+ happy rather than have it complain about attribute warn_unused_result.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::XMLTokenizer::error):
+
+2009-03-31 Dean Jackson <dino@apple.com>
+
+ Style guide violation!
+
+ * loader/MediaDocument.cpp:
+ (WebCore::MediaDocument::defaultEventHandler):
+
+2009-03-31 Dean Jackson <dino@apple.com>
+
+ Fix Tiger build.
+
+ * loader/MediaDocument.cpp:
+ (WebCore::MediaDocument::defaultEventHandler):
+
+2009-03-31 Jian Li <jianli@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Upstream V8DOMMap for v8 bindings.
+ https://bugs.webkit.org/show_bug.cgi?id=24951
+
+ * bindings/v8/V8DOMMap.cpp: Added.
+ * bindings/v8/V8DOMMap.h: Added.
+
+2009-03-31 Dean Jackson <dino@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24955
+
+ Spacebar didn't play/pause in standalone MediaDocument
+
+ * loader/MediaDocument.cpp:
+ (WebCore::MediaDocument::defaultEventHandler):
+
+2009-03-31 Alpha Lam <hclam@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24901
+ Added the following methods to MediaPlayerPrivate for Chromium port.
+ void sizeChanged();
+ void rateChanged();
+ void durationChanged();
+
+ The above changes are to reflect changes in MediaPlayer.cpp.
+ More details can be found in the original changeset.
+ http://trac.webkit.org/changeset/41907
+
+ * platform/graphics/chromium/MediaPlayerPrivateChromium.h:
+
+2009-03-31 Rafael Weinstein <rafaelw@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24947
+
+ Special-case drawing text-shadow on win32, to let GDI draw in cases
+ when both fill & shadow color are opaque and the shadow has no blur.
+
+ * platform/graphics/chromium/FontChromiumWin.cpp:
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareGlyphPainter::drawGlyphs):
+ (WebCore::Font::drawComplexText):
+ * platform/graphics/skia/SkiaFontWin.cpp:
+ (WebCore::windowsCanHandleDrawTextShadow):
+ (WebCore::windowsCanHandleTextDrawing):
+ * platform/graphics/skia/SkiaFontWin.h:
+
+2009-03-31 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ r42055 removed some functions in FrameLoader used by Chrome,
+ this CL backs out some of those changes to unbreak the Chrome build.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24949
+
+ * WebCore.base.exp:
+ * loader/FrameLoader.cpp:
+ * loader/FrameLoader.h:
+
+2009-03-31 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Build fixes for Chromium.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24945
+
+ * dom/Document.h:
+ * platform/chromium/ClipboardChromium.cpp:
+ (WebCore::imageToMarkup):
+
+2009-03-31 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Fix the Qt build.
+
+ * dom/XMLTokenizerQt.cpp:
+ (WebCore::XMLTokenizer::XMLTokenizer): Use NamedNodeMap instead of NamedAttrMap.
+
+2009-03-30 Steve Falkenburg <sfalken@apple.com>
+
+ Don't create CFDataRef with a fixed size.
+ Fixes synchronous XMLHTTPRequests on Windows.
+
+ Reviewed by Ada Chan.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::WebCoreSynchronousLoader::didReceiveData):
+
+2009-03-30 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 24594: PolicyDelegate NavigationAction is WebNavigationTypeOther instead of WebNavigationTypeReload
+ https://bugs.webkit.org/show_bug.cgi?id=24594
+ rdar://problem/6682110
+
+ Test: fast/loader/reload-policy-delegate.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadWithDocumentLoader): Set the triggering action here where we know it's
+ the policy loader and can use m_policyLoadType rather than letting it get set inside
+ checkNavigationPolicy.
+
+2009-03-30 Timothy Hatcher <timothy@apple.com>
+
+ <rdar://problem/5838871> CrashTracer: 1483 crashes Quicklooking
+ in Finder (painting without up to date layout)
+
+ Reviewed by Dan Bernstein.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::paintContents): Add an early return when
+ painting is attempted when layout is needed.
+
+2009-03-30 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24938
+
+ Sort alphabetically.
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+
+2009-03-30 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24938
+
+ Build fixes for building --3d-rendering and --no-svg
+
+ * rendering/RenderLayerBacking.cpp:
+
+2009-03-30 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24938
+
+ Build fixes when building --no-svg
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue): Add missing CSS properties
+ * css/CSSCursorImageValue.cpp:
+ (WebCore::CSSCursorImageValue::updateIfSVGCursorIsUsed): Handle unused param
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseValue): Add missing CSS properties
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::applyProperty): Add missing CSS properties
+ * dom/Node.cpp:
+ (WebCore::updateSVGElementInstancesAfterEventListenerChange): Handle unused param
+ * platform/graphics/Font.cpp:
+ (WebCore::Font::floatWidth): Handle unused param
+ * platform/graphics/SimpleFontData.cpp:
+ (WebCore::SimpleFontData::SimpleFontData): Handle unused param
+
+2009-03-30 Darin Adler <darin@apple.com>
+
+ Reviewed by Adam Roben.
+
+ Bug 24916: REGRESSION: NavigationAction policy dispatch broken
+ https://bugs.webkit.org/show_bug.cgi?id=24916
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadURL): Rearrange the code so that the "event" PassRefPtr
+ is not used twice. This also optimizes the case where a frame name is specified,
+ but it's the name of the frame being loaded. Also called release in all the final
+ uses of FormState.
+
+2009-03-30 Darin Adler <darin@apple.com>
+
+ Reviewed by Adam Roben.
+
+ Bug 24937: NamedNodeMap and NamedAttrMap should not be separate classes
+ https://bugs.webkit.org/show_bug.cgi?id=24937
+
+ Also should fix the Windows COM bindings build.
+
+ * bindings/scripts/CodeGeneratorJS.pm: Removed special case for NamedNodeMap.
+ * bindings/scripts/CodeGeneratorObjC.pm: Ditto.
+
+ * dom/NamedAttrMap.h: Renamed class from NamedAttrMap to
+ NamedNodeMap and removed NamedNodeMap base class. Made the NamedNodeMap
+ functions all public and non-virtual. Removed virtualLength.
+
+ * dom/NamedNodeMap.h: Replaced file with just an include
+ of NamedAttrMap.h. As a follow up we will rename the NamedAttrMap
+ files and remove this file.
+
+ * bindings/js/JSNamedNodesCollection.cpp: Renamed from NamedAttrMap to NamedNodeMap.
+ * dom/Attr.h: Ditto.
+ * dom/Attribute.h: Ditto.
+ * dom/Document.cpp:
+ (WebCore::Document::importNode): Ditto.
+ * dom/Element.cpp:
+ (WebCore::Element::attributes): Ditto.
+ (WebCore::Element::setAttributeMap): Ditto.
+ (WebCore::Element::createAttributeMap): Ditto.
+ (WebCore::Element::insertedIntoDocument): Ditto.
+ (WebCore::Element::removedFromDocument): Ditto.
+ (WebCore::Element::openTagStartToString): Ditto.
+ (WebCore::Element::removeAttributeNode): Ditto.
+ (WebCore::Element::getAttributeNode): Ditto.
+ (WebCore::Element::getAttributeNodeNS): Ditto.
+ (WebCore::Element::hasAttribute): Ditto.
+ (WebCore::Element::hasAttributeNS): Ditto.
+ (WebCore::Element::normalizeAttributes): Ditto.
+ * dom/Element.h: Ditto.
+ * dom/NamedAttrMap.cpp:
+ (WebCore::NamedNodeMap::detachAttributesFromElement): Ditto.
+ (WebCore::NamedNodeMap::~NamedNodeMap): Ditto.
+ (WebCore::NamedNodeMap::isMappedAttributeMap): Ditto.
+ (WebCore::NamedNodeMap::getNamedItem): Ditto.
+ (WebCore::NamedNodeMap::getNamedItemNS): Ditto.
+ (WebCore::NamedNodeMap::removeNamedItem): Ditto.
+ (WebCore::NamedNodeMap::removeNamedItemNS): Ditto.
+ (WebCore::NamedNodeMap::setNamedItem): Ditto.
+ (WebCore::NamedNodeMap::item): Ditto.
+ (WebCore::NamedNodeMap::getAttributeItem): Ditto.
+ (WebCore::NamedNodeMap::clearAttributes): Ditto.
+ (WebCore::NamedNodeMap::detachFromElement): Ditto.
+ (WebCore::NamedNodeMap::setAttributes): Ditto.
+ (WebCore::NamedNodeMap::addAttribute): Ditto.
+ (WebCore::NamedNodeMap::removeAttribute): Ditto.
+ (WebCore::NamedNodeMap::mapsEquivalent): Ditto.
+ * dom/NamedMappedAttrMap.cpp:
+ (WebCore::NamedMappedAttrMap::clearAttributes): Ditto.
+ * dom/NamedMappedAttrMap.h:
+ (WebCore::NamedMappedAttrMap::NamedMappedAttrMap): Ditto.
+ * dom/Node.cpp:
+ (WebCore::Node::dumpStatistics): Ditto.
+ (WebCore::Node::isEqualNode): Ditto.
+ (WebCore::Node::isDefaultNamespace): Ditto.
+ (WebCore::Node::lookupNamespaceURI): Ditto.
+ (WebCore::Node::lookupNamespacePrefix): Ditto.
+ (WebCore::Node::compareDocumentPosition): Ditto.
+ * dom/Node.h: Ditto.
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::XMLTokenizer::XMLTokenizer): Ditto.
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::isSpanWithoutAttributesOrUnstyleStyleSpan): Ditto.
+ (WebCore::isEmptyFontTag): Ditto.
+ (WebCore::areIdenticalElements): Ditto.
+ * editing/markup.cpp:
+ (WebCore::appendStartMarkup): Ditto.
+ (WebCore::completeURLs): Ditto.
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::handleError): Ditto.
+ * rendering/RenderPartObject.cpp:
+ (WebCore::RenderPartObject::updateWidget): Ditto.
+ * svg/SVGAnimatedProperty.h:
+ (WebCore::synchronizeProperty): Ditto.
+ * xml/XPathFunctions.cpp:
+ (WebCore::XPath::FunLang::evaluate): Ditto.
+ * xml/XPathStep.cpp:
+ (WebCore::XPath::Step::nodesInAxis): Ditto.
+
+2009-03-30 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24750
+ [GTK] requests download instead of displaying page
+
+ Use soup facilities to append parameters to the content type, to
+ make that more robust;
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::fillResponseFromMessage):
+
+2009-03-30 David Kilzer <ddkilzer@apple.com>
+
+ <rdar://problem/6735683> Move SECTORDER_FLAGS from Xcode project to WebCore.xcconfig
+
+ Reviewed by Timothy Hatcher, Mark Rowe and Darin Adler.
+
+ * Configurations/Base.xcconfig: Moved Production definition of
+ SECTORDER_FLAGS to here from Xcode project file.
+ * Configurations/DebugRelease.xcconfig: Override SECTORDER_FLAGS
+ in Base.xcconfig to the empty string since it is not used for
+ Debug and Release configurations.
+ * WebCore.xcodeproj/project.pbxproj: Removed SECTORDER_FLAGS.
+
+2009-03-30 Adam Roben <aroben@apple.com>
+
+ Windows build fix after recent Node.idl changes
+
+ * bindings/scripts/CodeGeneratorCOM.pm: Touched this to force sources
+ of classes that derive from Node to rebuild.
+
+2009-03-30 Adam Roben <aroben@apple.com>
+
+ Windows build fix
+
+ * svg/graphics/SVGImage.cpp: Added a missing #include.
+
+2009-03-30 Mads Ager <ager@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24879
+ Add frame accessor to Screen, Console, and BarInfo objects. Add type
+ accessor to BarInfo objects.
+
+ In the V8 JavaScript bindings, we need access to the frame and
+ type for already created Screen, Console, and BarInfo objects in
+ order to keep their wrappers alive across GCs.
+
+ * page/BarInfo.cpp:
+ (WebCore::BarInfo::frame): Added.
+ (WebCore::BarInfo::type): Added.
+ * page/BarInfo.h:
+ * page/Console.cpp:
+ (WebCore::Console::frame): Added.
+ * page/Console.h:
+ * page/Screen.cpp:
+ (WebCore::Screen::frame): Added.
+ * page/Screen.h:
+
+2009-03-29 Darin Adler <darin@apple.com>
+
+ Requested by Antti Koivisto.
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::subresource): Tweaked code to be a little clearer and added
+ a better comment.
+
+2009-03-29 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 23445: Copying certain hidden text causes a crash
+ https://bugs.webkit.org/show_bug.cgi?id=23445
+ rdar://problem/6512520
+
+ Test: editing/pasteboard/copy-display-none.html
+
+ * editing/markup.cpp:
+ (WebCore::createMarkup): Added a check for the case where adjusting the start node moves
+ the start of the selection past the end of the range entirely. If we try to iterate we'll
+ never hit the end of the range and will probably crash iterating the rest of the document.
+
+2009-03-29 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 24672: ASSERTION FAILURE: !m_purgeableData in WebCore::CachedResource::data() saving a WebArchive
+ https://bugs.webkit.org/show_bug.cgi?id=24672
+ rdar://problem/6574263
+
+ I couldn't create a test case for this. In fact, the case in the bug doesn't exist any more,
+ but there is an Apple-internal website I was able to use to reproduce and fix.
+
+ * loader/CachedResource.h: Made makePurgeable public.
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::subresource): Call makePurgeable to make the resource non-purgeable
+ so we can get its data if it hasn't yet been purged.
+
+2009-03-29 Darin Adler <darin@apple.com>
+
+ Fix build again.
+
+ * loader/EmptyClients.h: Fix typo in name of FormState.h.
+
+2009-03-29 Darin Adler <darin@apple.com>
+
+ Try to fix the release build.
+
+ * history/CachedPage.cpp: Make include unconditional, not debug-only.
+
+2009-03-29 Greg Bolsinga <bolsinga@apple.com>
+
+ Undo that last build fix, since it turned out the file wasn't deleted.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-03-29 Greg Bolsinga <bolsinga@apple.com>
+
+ Fix build break by removing references to deleted header files.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-03-29 Darin Adler <darin@apple.com>
+
+ Try to fix the Windows build.
+
+ * loader/EmptyClients.h: Added include of FormState.h.
+ * loader/MainResourceLoader.cpp: Ditto.
+
+2009-03-29 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24926
+ Fix Chromium build break.
+
+ * bindings/v8/custom/V8DOMWindowCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL(DOMWindowShowModalDialog)): renamed 'features' into 'windowFeatures'.
+
+2009-03-29 Darin Adler <darin@apple.com>
+
+ Another attempt to fix the Qt build.
+
+ * WebCore.pro: Added CheckedRadioButtons.cpp.
+
+2009-03-29 Darin Adler <darin@apple.com>
+
+ Reviewed by Cameron Zwarich.
+
+ Bug 24921: remove include of HTMLFormElement.h from Document.h
+ https://bugs.webkit.org/show_bug.cgi?id=24921
+
+ * GNUmakefile.am: Added CheckedRadioButtons source files.
+ * WebCore.scons: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * WebCoreSources.bkl: Ditto.
+
+ * bindings/objc/PublicDOMInterfaces.h: Changed type of parentElement to Element.
+
+ * dom/CheckedRadioButtons.cpp: Copied from WebCore/html/HTMLFormElement.cpp.
+ Removed all the code except for CheckedRadioButtons, and moved that out to be
+ a namespace-level class instead of a member of HTMLFormElement.
+
+ * dom/CheckedRadioButtons.h: Copied from WebCore/html/HTMLFormElement.h.
+ Removed all the code except for CheckedRadioButtons, and moved that out to be
+ a namespace-level class instead of a member of HTMLFormElement.
+
+ * dom/Document.h: Removed unneeded includes, including HTMLFormElement.h.
+ Added include of CheckedRadioButtons.h. Changed uses of CheckedRadioButtons
+ class to use a namespace-level class instead of a member of HTMLFormElement.
+
+ * dom/Node.idl: Changed the type of parentElement from Node to Element for
+ two reasons. 1) Node was incorrect, since parentElement returns an Element.
+ 2) The bindings won't compile any more unless they know parentElement's
+ return value is an Element due to include changes.
+
+ * html/HTMLFormElement.cpp: Moved definitions of the functions in the
+ CheckedRadioButtons class to the new CheckedRadioButtons.cpp.
+
+ * html/HTMLFormElement.h: Moved definition of the CheckedRadioButtons
+ class to the new CheckedRadioButtons.h.
+
+ * html/HTMLInputElement.cpp:
+ (WebCore::checkedRadioButtons): Changed use of CheckedRadioButtons
+ class to use a namespace-level class instead of a member of HTMLFormElement.
+
+ * page/Chrome.cpp:
+ (WebCore::Chrome::createWindow): Tweaked formatting.
+
+ * css/CSSGrammar.y: Added newly-needed include.
+ * dom/Range.cpp: Ditto.
+ * editing/BreakBlockquoteCommand.cpp: Ditto.
+ * editing/CompositeEditCommand.cpp: Ditto.
+ * editing/InsertLineBreakCommand.cpp: Ditto.
+ * editing/ModifySelectionListLevel.cpp: Ditto.
+ * editing/RemoveFormatCommand.cpp: Ditto.
+ * editing/TextIterator.cpp: Ditto.
+ * editing/VisiblePosition.cpp: Ditto.
+ * loader/DocLoader.cpp: Ditto.
+ * page/AccessibilityRenderObject.cpp: Ditto.
+ * page/Page.cpp: Ditto.
+ * rendering/RenderBlock.cpp: Ditto.
+ * rendering/RenderLayer.cpp: Ditto.
+ * rendering/RenderObject.h: Ditto.
+ * storage/LocalStorageArea.cpp: Ditto.
+ * storage/SessionStorageArea.cpp: Ditto.
+
+2009-03-29 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6015407> attr parsing should allow only identifiers
+
+ Test: fast/css/attr-parsing.html
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseContent): Allow only CSS_IDENT, and filter out
+ identifiers that start with "-".
+ * css/CSSPrimitiveValue.cpp:
+ (WebCore::CSSPrimitiveValue::cssText): Added a case for CSS_ATTR so the test
+ case works. This has the pleasant side effect of fixing a bug too.
+
+2009-03-29 Alexey Proskuryakov <ap@webkit.org>
+
+ <rdar://problem/6492712> Cross-origin redirects are not handled correctly.
+
+ Forgot to save the file after applying changes for review comments.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::willSendRequest):
+ (WebCore::didReceiveResponse):
+ (WebCore::didReceiveData):
+ (WebCore::didSendBodyData):
+ (WebCore::didFinishLoading):
+ (WebCore::didFail):
+ (WebCore::willCacheResponse):
+ (WebCore::didReceiveChallenge):
+ (WebCore::WebCoreSynchronousLoader::willSendRequest):
+ (WebCore::WebCoreSynchronousLoader::didReceiveResponse):
+ (WebCore::WebCoreSynchronousLoader::didReceiveData):
+ (WebCore::WebCoreSynchronousLoader::didFinishLoading):
+ (WebCore::WebCoreSynchronousLoader::didFail):
+ (WebCore::WebCoreSynchronousLoader::didReceiveChallenge):
+
+2009-03-28 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6492712> Cross-origin redirects are not handled correctly.
+
+ Test: http/tests/xmlhttprequest/redirect-cross-origin-tripmine.html
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::WebCoreSynchronousLoader::WebCoreSynchronousLoader):
+ (WebCore::ResourceHandle::loadResourceSynchronously):
+ (WebCore::WebCoreSynchronousLoader::willSendRequest):
+ (WebCore::WebCoreSynchronousLoader::didReceiveResponse):
+ (WebCore::WebCoreSynchronousLoader::didReceiveData):
+ (WebCore::WebCoreSynchronousLoader::didFinishLoading):
+ (WebCore::WebCoreSynchronousLoader::didFail):
+ (WebCore::WebCoreSynchronousLoader::didReceiveChallenge):
+ (WebCore::WebCoreSynchronousLoader::load):
+ Match Mac behavior more closely - we shouldn't rely on underlying library handling of
+ synchronous requests.
+
+ * loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::willSendRequest):
+ -[NSURLConnection cancel] doesn't fully cancel the connection if called from willSendRequest
+ delegate method for a redirect.
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (-[WebCoreSynchronousLoader connection:willSendRequest:redirectResponse:]):
+ Match async behavior more closely.
+
+2009-03-28 Darin Adler <darin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Bug 24914: empty-string assertion crash when running storage tests
+ https://bugs.webkit.org/show_bug.cgi?id=24914
+
+ * storage/Database.cpp:
+ (WebCore::Database::performOpenAndVerify): Don't store empty version strings
+ in the map, since empty strings are per-thread.
+
+2009-03-28 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24910
+ Fixes for Chromium build.
+
+ * bindings/v8/V8LazyEventListener.h: renamed IsInline() into virtualIsInline()
+ * bindings/v8/custom/V8CustomEventListener.h: ditto.
+ * dom/EventListener.h: used #if USE(JSC) to fix the build on non-JSC platform.
+
+2009-03-28 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Not reviewed, correcting landing error.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24812
+ Custom bindings should be in v8/custom, not v8.
+
+ * bindings/v8/V8HTMLDocumentCustom.cpp: Removed.
+ * bindings/v8/custom/V8HTMLDocumentCustom.cpp: Moved from parent dir.
+
+2009-03-28 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24616
+ Add V8 custom bindings for DOMWindow.
+
+ * bindings/v8/custom/V8DOMWindowCustom.cpp: Added.
+
+2009-03-28 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24812
+ Add V8 custom bindings for HTMLDocument.
+
+ * bindings/v8/V8HTMLDocumentCustom.cpp: Added.
+
+2009-03-27 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fix two SVG test failures in 64-bit.
+
+ getSubStringLength's arguments were declared as unsigned in the IDL and as signed long in the implementation.
+ This led to a value of -1 in JavaScript being converted to MAX_UINT in the bindings. In 32-bit this was
+ identical to -1 when interpeted as signed long, but in 64-bit it was still equal to MAX_UINT.
+
+ The solution for this is to use the IsIndex attribute on arguments that the SVG spec declares as "unsigned long"
+ but requires an exception be thrown when a negative value is passed. This results in the JS bindings handling the
+ check for a negative value and lets the implementation treat the arguments purely as unsigned values.
+
+ * svg/SVGTextContentElement.cpp:
+ (WebCore::SVGTextContentElement::getNumberOfChars):
+ (WebCore::SVGTextContentElement::getSubStringLength):
+ (WebCore::SVGTextContentElement::getStartPositionOfChar):
+ (WebCore::SVGTextContentElement::getEndPositionOfChar):
+ (WebCore::SVGTextContentElement::getExtentOfChar):
+ (WebCore::SVGTextContentElement::getRotationOfChar):
+ (WebCore::SVGTextContentElement::getCharNumAtPosition):
+ (WebCore::SVGTextContentElement::selectSubString):
+ * svg/SVGTextContentElement.h:
+ * svg/SVGTextContentElement.idl:
+
+2009-03-27 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Get mailto code out of FrameLoader.
+
+ * html/HTMLFormElement.cpp:
+ (WebCore::transferMailtoPostFormDataToURL): Added. Factored out the mailto
+ logic so HTMLFormElement::submit isn't full of ugly bits. This includes the
+ part of the logic that involves transformeing the URL that was previously
+ inside FrameLoader.
+ (WebCore::HTMLFormElement::submit): Call transferMailtoPostFormDataToURL and
+ also release the data for slightly less refcount churn.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::submitForm): Removed all the special casing for mailto,
+ since HTMLFormElement now properly prepares both the URL and the form data.
+
+2009-03-27 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ - fix <rdar://problem/6724514> A bit of OpenTypeUtilities cleanup
+
+ * platform/graphics/chromium/FontCustomPlatformData.cpp:
+ (WebCore::EOTStream::EOTStream): Changed to use EOTHeader.
+ (WebCore::createFontCustomPlatformData): Ditto.
+ * platform/graphics/opentype/OpenTypeUtilities.cpp:
+ (WebCore::EOTHeader::EOTHeader): Added. Initializes the buffer size to
+ the size of an EOTPrefix.
+ (WebCore::EOTHeader::updateEOTSize): Added. Updates the size field in
+ the prefix.
+ (WebCore::EOTHeader::appendBigEndianString): Changed the static
+ appendBigEndianStringToEOTHeader() into this member function.
+ (WebCore::EOTHeader::appendPaddingShort): Added.
+ (WebCore::getEOTHeader): Changed to use EOTHeader.
+ * platform/graphics/opentype/OpenTypeUtilities.h:
+ (WebCore::EOTHeader::size):
+ (WebCore::EOTHeader::data):
+ (WebCore::EOTHeader::prefix):
+ * platform/graphics/win/FontCustomPlatformData.cpp:
+ (WebCore::EOTStream::EOTStream): Changed to use EOTHeader.
+ (WebCore::createFontCustomPlatformData): Ditto.
+
+2009-03-27 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ To prepare for work on a form loading fix, remove some unused functions,
+ consolidate some functions, and make many more functions private in
+ FrameLoader.
+
+ * WebCore.base.exp: Remove some unused entry points, update another.
+
+ * dom/Document.cpp:
+ (WebCore::Document::detach): Clear m_frame directly instead of using
+ clearFramePointer.
+ * dom/Document.h: Ditto.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::urlSelected): Consolidate the two functions
+ of this name into a single function. Also changed the event argument
+ to be PassRefPtr<Event>.
+ (WebCore::FrameLoader::submitForm): Changed the event argument to
+ be PassRefPtr<Event>.
+ (WebCore::FrameLoader::scheduleLocationChange): Call completeURL
+ explicitly so we can remove the version of changeLocation that does
+ completeURL for us.
+ (WebCore::FrameLoader::redirectionTimerFired): Ditto.
+ (WebCore::FrameLoader::loadURLIntoChildFrame): Set m_provisionalHistoryItem
+ directly so we don't need a setProvisionalHistoryItem function.
+ (WebCore::FrameLoader::canCachePageContainingThisFrame): Get at
+ m_quickRedirectComing directly so we don't need a isQuickRedirectComing
+ function.
+ (WebCore::FrameLoader::logCanCacheFrameDecision): Ditto.
+ (WebCore::FrameLoader::loadFrameRequestWithFormAndValues): Changed the
+ event argument to be PassRefPtr<Event>.
+ (WebCore::FrameLoader::loadURL): Move the logic of the continueLoadWithData
+ function here because this is the only caller. If we want to make the
+ resulting function smaller we should refactor some other way. Also
+ streamlined the user-chosen encoding logic, but did not change what it does.
+ (WebCore::FrameLoader::finishedLoadingDocument): Changed the event argument
+ to be PassRefPtr<Event>.
+ (WebCore::FrameLoader::loadPostRequest): Ditto.
+ (WebCore::FrameLoader::receivedMainResourceError): Moved the logic from
+ the didNotOpenURL function here, since this was the only caller.
+
+ * loader/FrameLoader.h: Removed include of FormState.h and used a forward
+ declaration instead. Removed unneeded forward declation of Element.
+ Moved many functions into the private section, and removed some other
+ unused or uneeded functions.
+
+2009-03-27 Xiaomei Ji <xji@chromium.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix https://bugs.webkit.org/show_bug.cgi?id=24303
+ Using keyboard select RTL text, Highlights goes to opposite direction from Firefox and IE.
+
+ Test: editing/selection/extend-selection.html
+
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::directionOfEnclosingBlock): Added
+ (WebCore::SelectionController::modifyExtendingRight): Added. Currenctly
+ implemented for character and word granularity, all other granularities
+ are treated as "forward".
+ (WebCore::SelectionController::modifyExtendingForward): Renamed
+ modifyExtendingRightForward() to this.
+ (WebCore::SelectionController::modifyExtendingLeft): Added. Currenctly
+ implemented for character and word granularity, all other granularities
+ are treated as "backward".
+ (WebCore::SelectionController::modifyExtendingBackward): Renamed
+ modifyExtendingLeftBackward() to this.
+ (WebCore::SelectionController::modify): Change to call either the
+ left/right or backward/forward methods depending on the 'dir' argument
+ for extends.
+ * editing/SelectionController.h:
+
+2009-03-27 John Abd-El-Malek <jam@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24836
+ Fix navigator.plugins.refresh(false) in Chromium.
+
+ * plugins/chromium/PluginDataChromium.cpp:
+ (WebCore::PluginData::refresh):
+
+2009-03-27 Timothy Hatcher <timothy@apple.com>
+
+ Make scrollLeft, scrollTop, scrollWidth, and scrollHeight
+ virtual to fix the broken layout tests from my last commit.
+
+ Reviewed by Mark Rowe.
+
+ * dom/Element.cpp:
+ (WebCore::Element::scrollLeft):
+ (WebCore::Element::scrollTop):
+ (WebCore::Element::scrollWidth):
+ (WebCore::Element::scrollHeight):
+ * dom/Element.h:
+ * html/HTMLBodyElement.h:
+
+2009-03-27 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fix <https://bugs.webkit.org/show_bug.cgi?id=24876>.
+ Bug 24876: fast/forms/select-max-length.html times out in debug builds due to HTMLSelectElement::setLength being O(N^2)
+
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::setLength): Repeatedly calling remove to remove elements causes us to recalculate the list
+ items after each node is removed, leading to O(N^2) behaviour. By inlining the batch removal in to setLength we can avoid
+ this gratuitous recalcuation.
+
+2009-03-27 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ We don't support images for GtkCursors yet. We need a placeholder to avoid crashes.
+ I took crosshair to have a common behavior with firefox.
+
+ [GTK] SVG - Crash on setting the cursor icon
+ https://bugs.webkit.org/show_bug.cgi?id=24565
+
+ * platform/gtk/CursorGtk.cpp:
+ (WebCore::Cursor::Cursor):
+
+2009-03-27 Timothy Hatcher <timothy@apple.com>
+
+ Remove redundant attributes and functions from IDL files that have the
+ same attributes and functions defined in the super class.
+
+ Reviewed by Simon Fraser.
+
+ * WebCore.xcodeproj/project.pbxproj: Remove DOMHTMLBodyElementPrivate.h.
+ * bindings/objc/PublicDOMInterfaces.h: Remove focus and blur from DOMHTMLElement.
+ * html/HTMLBodyElement.idl: Remove scrollLeft, scrollTop, scrollWidth
+ and scrollHeight.
+ * html/HTMLElement.idl: Remove blur and focus.
+
+2009-03-27 Adam Roben <aroben@apple.com>
+
+ Don't include substitute data URLs in global history redirect chains
+
+ <rdar://6690169>
+
+ Reviewed by Darin Adler.
+
+ This might be testable if:
+ - support were added to DRT for providing substitute data on failed
+ loads
+ - support were added to DRT for dumping redirect chains
+
+ I tried doing the above and was still unable to make a test.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::updateHistoryForStandardLoad):
+ (WebCore::FrameLoader::updateHistoryForRedirectWithLockedBackForwardList):
+ Call updateGlobalHistoryRedirectLinks only if the load succeeded
+ (i.e., there is no unreachableURL). Previous the FrameLoaderClient
+ implementations were unconditionally calling
+ updateGlobalHistoryRedirectLinks from within updateGlobalHistory.
+
+2009-03-27 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24861
+ Chromium port did not render decorations for <input type="search">.
+ This copies RenderThemeWin.*.
+
+ * css/themeChromiumWin.css: Removed.
+ * rendering/RenderThemeChromiumLinux.cpp:
+ (WebCore::RenderThemeChromiumLinux::extraDefaultStyleSheet):
+ (WebCore::RenderThemeChromiumLinux::adjustSearchFieldCancelButtonStyle):
+ (WebCore::RenderThemeChromiumLinux::paintSearchFieldCancelButton):
+ (WebCore::RenderThemeChromiumLinux::adjustSearchFieldDecorationStyle):
+ (WebCore::RenderThemeChromiumLinux::adjustSearchFieldResultsDecorationStyle):
+ (WebCore::RenderThemeChromiumLinux::paintSearchFieldResultsDecoration):
+ (WebCore::RenderThemeChromiumLinux::adjustSearchFieldResultsButtonStyle):
+ (WebCore::RenderThemeChromiumLinux::paintSearchFieldResultsButton):
+ * rendering/RenderThemeChromiumLinux.h:
+ (WebCore::RenderThemeChromiumLinux::paintSearchField):
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::):
+ (WebCore::RenderThemeChromiumWin::extraDefaultStyleSheet):
+ (WebCore::RenderThemeChromiumWin::adjustSearchFieldCancelButtonStyle):
+ (WebCore::RenderThemeChromiumWin::paintSearchFieldCancelButton):
+ (WebCore::RenderThemeChromiumWin::adjustSearchFieldDecorationStyle):
+ (WebCore::RenderThemeChromiumWin::adjustSearchFieldResultsDecorationStyle):
+ (WebCore::RenderThemeChromiumWin::paintSearchFieldResultsDecoration):
+ (WebCore::RenderThemeChromiumWin::adjustSearchFieldResultsButtonStyle):
+ (WebCore::RenderThemeChromiumWin::paintSearchFieldResultsButton):
+ * rendering/RenderThemeChromiumWin.h:
+ (WebCore::RenderThemeChromiumWin::paintSearchField):
+
+2009-03-27 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Simon Fraser
+
+ If an object has a self-painting layer, don't count it as part of a block's visual overflow.
+ This fix has only been made for block-level children. The inline-level case is still broken
+ (and covered by an existing bug).
+
+ Added fast/block/positioning/negative-rel-position.html
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::placeBoxesVertically):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::layoutBlockChildren):
+ (WebCore::RenderBlock::lowestPosition):
+ (WebCore::RenderBlock::rightmostPosition):
+ (WebCore::RenderBlock::leftmostPosition):
+
+2009-03-27 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6642221>
+ REGRESSION: With the Movie widget, movie trailer fails to load if movie had been previously viewed
+
+ Add a dashboard specific workaround so that we always create renderers for object elements, even if display:none is set.
+
+ I've filed <rdar://problem/6731022> against the Movies widget.
+
+ * html/HTMLObjectElement.cpp:
+ (WebCore::HTMLObjectElement::rendererIsNeeded):
+
+2009-03-25 Timothy Hatcher <timothy@apple.com>
+
+ Expose new DOM methods as public Objective-C API.
+
+ <rdar://problem/5837350> Expose new DOM classes and methods
+ as public API (match the additions to the JavaScript DOM)
+
+ Reviewed by Mark Rowe and Darin Adler.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/objc/DOMHTML.h:
+ * bindings/objc/DOMPrivate.h:
+ * bindings/objc/PublicDOMInterfaces.h:
+
2009-03-27 Zack Rusin <zack@kde.org>
Reviewed by Simon Hausmann.
@@ -371,18 +24085,2571 @@
(WebCore::RenderThemeQt::paintTextField):
* platform/qt/RenderThemeQt.h:
-2009-02-06 Dirk Schulze <krit@webkit.org>
+2009-03-27 Laszlo Gombos <laszlo.1.gombos@nokia.com>
Reviewed by Simon Hausmann.
- Fix bug in clearRect(). Use fillRect() instead of eraseRect() to get
- the context transparent.
+ https://bugs.webkit.org/show_bug.cgi?id=24852
+ Build fix for GNU mode RVCT compilation
- [QT] clearRect fill's a given rect with white
- https://bugs.webkit.org/show_bug.cgi?id=23728
+ * html/PreloadScanner.cpp:
- * platform/graphics/qt/GraphicsContextQt.cpp:
- (WebCore::GraphicsContext::clearRect):
+2009-03-27 Erik L. Bunce <elbunce@xendom.com>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24868
+
+ Make text of the writing direction items more user friendly.
+
+ * platform/qt/Localizations.cpp:
+ (WebCore::contextMenuItemTagLeftToRight):
+ (WebCore::contextMenuItemTagRightToLeft):
+
+2009-03-27 Erik L. Bunce <elbunce@xendom.com>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24274
+
+ Fixed the Qt 4.4 Mac build with netscape plugins enabled.
+
+ * plugins/mac/PluginViewMac.cpp:
+
+2009-03-26 Mark Rowe <mrowe@apple.com>
+
+ Try and fix the Qt build.
+
+ * platform/text/TextEncodingDetectorNone.cpp:
+ (WebCore::detectTextEncoding):
+
+2009-03-26 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24874
+ 24874: HTMLMediaElement: 'duration' defaults to NaN, deal with it
+
+ The 'duration' attribute is NaN when no media is available, so the
+ media element should take care when comparing with duration().
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::mediaPlayerTimeChanged): Don't compare with duration when
+ it is NaN.
+ (WebCore::HTMLMediaElement::endedPlayback): Ditto.
+
+2009-03-26 Mark Rowe <mrowe@apple.com>
+
+ Fix the build.
+
+ * platform/text/TextEncodingDetectorICU.cpp:
+ * platform/text/TextEncodingDetectorNone.cpp:
+
+2009-03-26 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Cameron Zwarich.
+
+ 1. Fix the crash in setHintEncoding
+ 2. Fix build failures on Tiger and Qt.
+ UnusedParam.h was not included by TextEncodingDetector{None,ICU}.cpp
+ in the patch landed in r42023
+ for http://bugs.webkit.org/show_bug.cgi?id=16482
+
+ * loader/TextResourceDecoder.h:
+ (WebCore::TextResourceDecoder::setHintEncoding):
+ * platform/text/TextEncodingDetectorICU.cpp:
+ * platform/text/TextEncodingDetectorNone.cpp:
+
+2009-03-26 Simon Fraser <simon.fraser@apple.com>
+
+ Build fix when ACCELERATED_COMPOSITING is turned on.
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::canUseDirectCompositing):
+
+2009-03-26 Eric Seidel <eric@webkit.org>
+
+ No additional review, committing previously reviewed files for build fix only.
+
+ Add files I missed when commiting Jungshik's patch in r42022.
+ https://bugs.webkit.org/show_bug.cgi?id=16482
+
+ * icu/unicode/ucsdet.h: Added.
+ * platform/text/TextEncodingDetector.h: Added.
+ * platform/text/TextEncodingDetectorICU.cpp: Added.
+ (WebCore::detectTextEncoding):
+ * platform/text/TextEncodingDetectorNone.cpp: Added.
+ (WebCore::detectTextEncoding):
+
+2009-03-26 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Add an encoding detector 'hook' to TextResourceDecoder.
+ - add |usesEncodingDetector| to Settings. It's off by default.
+ - add a new encoding source type |EncodingFromParent|
+ to distinguish cases when the encoding is inherited from
+ the parent frame from cases when it's actually auto-detected.
+ - add TextEncodingDetector* to platform/text. Currently,
+ the only implementation uses ICU. Stub is added for
+ ports that do not use ICU and a build on Tiger. Mac OS
+ Tiger comes with ICU 3.2 that does not support encoding detector.
+ - add ucsdet.h to icu/unicode for ports using ICU.
+
+ Layout tests will be added once bug 20534 is fixed and a WebPreference
+ can be controlled in test_shell. With UsesEncodingDetector off, there
+ is no change to test.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16482
+
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCore/GNUmakefile.am
+ * WebCore/WebCore.pro
+ * WebCore/WebCore.scons
+ * WebCore/WebCoreSources.bkl
+ * WebCore.base.exp
+ * icu/unicode/ucsdet.h
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::write): turn on/off encoding detector depending on Settings and set hintEncoding of TextResourceDecoder to the parent frame encoding if necessary and the security policy allows refering to the parent frame encoding.
+ * loader/TextResourceDecoder.cpp:
+ (WebCore::TextResourceDecoder::TextResourceDecoder):
+ (WebCore::TextResourceDecoder::checkForCSSCharset): add check for EncodingFromParentFrame
+ (WebCore::TextResourceDecoder::checkForHeadCharset): ditto
+ (WebCore::TextResourceDecoder::shouldAutoDetect):
+ (WebCore::TextResourceDecoder::decode): call encoding detector if shouldAutoDetect returns true.
+ (WebCore::TextResourceDecoder::flush): if encoding is not determined by now, call encoding detector if shouldAutoDetect returns true.
+ * loader/TextResourceDecoder.h:
+ (WebCore::TextResourceDecoder::):
+ (WebCore::TextResourceDecoder::create):
+ (WebCore::TextResourceDecoder::setHintEncoding):
+ (WebCore::TextResourceDecoder::source):
+ * page/Settings.cpp: add m_usesEncodingDetector
+ (WebCore::Settings::Settings):
+ (WebCore::Settings::setUsesEncodingDetector):
+ * page/Settings.h:
+ (WebCore::Settings::usesEncodingDetector):
+ * platform/text/TextEncodingDetector.h: Added.
+ * platform/text/TextEncodingDetectorICU.cpp: Added.
+ (WebCore::detectTextEncoding):
+ * platform/text/TextEncodingDetectorNone.cpp: Added.
+ (WebCore::detectTextEncoding):
+
+2009-03-26 Darin Adler <darin@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Removed code that casts EventListener down to derived classes
+ without type checking. A crash could happen if you added event
+ listeners with Objective-C and then manipulated the class with
+ JavaScript.
+
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ (WebCore::JSDOMApplicationCache::mark): Removed all the casts
+ and used the markIfNotNull function and mark functions on
+ EventListener instead.
+ * bindings/js/JSMessagePortCustom.cpp:
+ (WebCore::JSMessagePort::mark): Ditto.
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::mark): Ditto.
+ * bindings/js/JSWorkerCustom.cpp:
+ (WebCore::JSWorker::mark): Ditto.
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::mark): Ditto.
+ * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
+ (WebCore::JSXMLHttpRequestUpload::mark): Ditto.
+
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSAbstractEventListener::handleEvent): Used function,
+ the new name for what used to be called listenerObj.
+ (WebCore::JSAbstractEventListener::virtualIsInline): Renamed since
+ this doesn't need to be virtual for callers who have a pointer to
+ this class, not the base class.
+ (WebCore::JSEventListener::function): Renamed from listenerObj.
+ (WebCore::JSProtectedEventListener::function): Ditto.
+
+ * bindings/js/JSEventListener.h: Removed unneeded forward class
+ declarations. Made all virtual functions private since there's no
+ need to call any of them on a particular derived class, only on
+ EventListener. Explicitly declare JSEventListener::mark as virtual
+ since it's now overriding a function in the EventListener base class.
+ Made JSProtectedEventListener::m_globalObject protected so the
+ JSLazyEventListener derived class can use it directly instead of using
+ a virtual function to get the pointer.
+
+ * bindings/js/JSLazyEventListener.cpp:
+ (WebCore::JSLazyEventListener::parseCode): Use m_globalObject instead
+ of globalObject since the latter is a virtual function and there's no
+ need to pay virtual function overhead.
+ (WebCore::JSLazyEventListener::function): Renamed from listenerObj.
+
+ * bindings/js/JSLazyEventListener.h: Moved forward declaration of the
+ Node class here from JSEventListener.h.
+
+ * bindings/scripts/CodeGeneratorJS.pm: Removed now-unneeded cast to
+ JSEventListener when getting the script object from a listener.
+
+ * dom/EventListener.h: Added virtual function and mark functions
+ so we can extract the JavaScript function object or mark a JavaScript
+ event listener in a type safe manner.
+
+2009-03-26 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Adele Peterson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24859
+ Use CSS file instead of code to adjust search field styling.
+
+ * css/themeWin.css:
+ * rendering/RenderThemeWin.cpp:
+ * rendering/RenderThemeWin.h:
+
+2009-03-26 Darin Adler <darin@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Split JSLazyEventListener out into its own separate source file.
+ We'll be removing JSAbstractEventListener and JSProtectedEventListener soon,
+ so leave those in the same file with JSEventListener.
+
+ * GNUmakefile.am: Added JSLazyEventListener.
+ * WebCore.pro: Ditto.
+ * WebCore.scons: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * WebCoreSources.bkl: Ditto.
+
+ * bindings/js/JSEventListener.cpp: Removed the JSLazyEventListener part.
+ Removed unneeded includes. Removed incorrect ASSERT_CLASS_FITS_IN_CELL, since
+ JSAbstractEventListener is not derived from JSCell.
+
+ * bindings/js/JSEventListener.h: Removed the JSLazyEventListener part
+ and the now-unneeded include of PlatformString.h.
+
+ * bindings/js/JSLazyEventListener.cpp: Copied from bindings/js/JSEventListener.cpp.
+ Kept only the JSLazyEventListener part.
+ (WebCore::eventParameterName): Made this have internal linkage by adding "static".
+ Also moved the default case out of the switch statement so we will get a warning
+ if we omit any cases in the future.
+
+ * bindings/js/JSLazyEventListener.h: Copied from bindings/js/JSEventListener.h.
+ Kept only the JSLazyEventListener part.
+
+ * bindings/js/ScriptController.cpp: Removed unneeded includes and sorted the
+ remanining ones. Include JSLazyEventListener.h instead of JSEventListener.h.
+
+2009-03-26 Darin Adler <darin@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Renamed JSUnprotectedEventListener to JSEventListener.
+ And related renames.
+
+ Soon Geoff will make all JavaScript event listeners use mark instead
+ of protect, so there's no need to emphasize "unprotected".
+
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ (WebCore::JSDOMApplicationCache::mark):
+ (WebCore::JSDOMApplicationCache::addEventListener):
+ (WebCore::JSDOMApplicationCache::removeEventListener):
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::~JSDOMGlobalObject):
+ (WebCore::JSDOMGlobalObject::findJSEventListener):
+ (WebCore::JSDOMGlobalObject::findOrCreateJSEventListener):
+ (WebCore::JSDOMGlobalObject::jsEventListeners):
+ (WebCore::JSDOMGlobalObject::jsInlineEventListeners):
+ * bindings/js/JSDOMGlobalObject.h:
+ * bindings/js/JSDOMWindowBase.h:
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSEventListener::JSEventListener):
+ (WebCore::JSEventListener::~JSEventListener):
+ (WebCore::JSEventListener::listenerObj):
+ (WebCore::JSEventListener::globalObject):
+ (WebCore::JSEventListener::clearGlobalObject):
+ (WebCore::JSEventListener::mark):
+ * bindings/js/JSEventListener.h:
+ (WebCore::JSEventListener::create):
+ * bindings/js/JSMessagePortCustom.cpp:
+ (WebCore::JSMessagePort::mark):
+ (WebCore::JSMessagePort::addEventListener):
+ (WebCore::JSMessagePort::removeEventListener):
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::mark):
+ (WebCore::JSWorkerContext::addEventListener):
+ (WebCore::JSWorkerContext::removeEventListener):
+ * bindings/js/JSWorkerCustom.cpp:
+ (WebCore::JSWorker::mark):
+ (WebCore::JSWorker::addEventListener):
+ (WebCore::JSWorker::removeEventListener):
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::mark):
+ (WebCore::JSXMLHttpRequest::addEventListener):
+ (WebCore::JSXMLHttpRequest::removeEventListener):
+ * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
+ (WebCore::JSXMLHttpRequestUpload::mark):
+ (WebCore::JSXMLHttpRequestUpload::addEventListener):
+ (WebCore::JSXMLHttpRequestUpload::removeEventListener):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ All just renaming.
+
+2009-03-26 Darin Adler <darin@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Renamed JSEventListener to JSProtectedEventListener.
+ And related renames.
+
+ Soon Geoff will make all JavaScript event listeners use mark instead
+ of protect, and so this class will be be obsolete. We will rename
+ JSUnrpotectedEventListener to JSEventListener in the next check-in,
+ since that one will remain.
+
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::~JSDOMGlobalObject):
+ (WebCore::JSDOMGlobalObject::findJSProtectedEventListener):
+ (WebCore::JSDOMGlobalObject::findOrCreateJSProtectedEventListener):
+ (WebCore::JSDOMGlobalObject::jsProtectedEventListeners):
+ (WebCore::JSDOMGlobalObject::jsProtectedInlineEventListeners):
+ * bindings/js/JSDOMGlobalObject.h:
+ * bindings/js/JSDOMWindowBase.h:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::addEventListener):
+ (WebCore::JSDOMWindow::removeEventListener):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSProtectedEventListener::JSProtectedEventListener):
+ (WebCore::JSProtectedEventListener::~JSProtectedEventListener):
+ (WebCore::JSProtectedEventListener::listenerObj):
+ (WebCore::JSProtectedEventListener::globalObject):
+ (WebCore::JSProtectedEventListener::clearGlobalObject):
+ (WebCore::JSLazyEventListener::JSLazyEventListener):
+ (WebCore::JSLazyEventListener::parseCode):
+ * bindings/js/JSEventListener.h:
+ (WebCore::JSProtectedEventListener::create):
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::JSNode::addEventListener):
+ (WebCore::JSNode::removeEventListener):
+ * bindings/js/JSSVGElementInstanceCustom.cpp:
+ (WebCore::JSSVGElementInstance::addEventListener):
+ (WebCore::JSSVGElementInstance::removeEventListener):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ All just renaming.
+
+2009-03-26 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ - fix <rdar://problem/6725042> BidiResolver::createBidiRunsForLine can
+ create runs extending beyond the end
+
+ No test because Safari does not use this version of
+ createBidiRunsForLine() with the end iterator not pointing to the end
+ of the text run.
+
+ * platform/text/BidiResolver.h:
+ (WebCore::BidiResolver::appendRun): Cap the end of the run at the end
+ of the line and set the reachedEndOfLine flag. This mirrors the logic
+ in the specialized version of appendRun() in bidi.cpp, which is why the
+ problem did not show up in HTML. Also avoid creating empty runs.
+
+2009-03-26 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24864
+
+ Change the terminology from "inner content layer" to "direct compositing"
+ for cases where we can push an image directly over to the compositing system,
+ without having to draw it.
+
+ Clean up much of the code which looks at style to determine if this is possible,
+ and fix some bugs when backgrounds change dynamically.
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::hasBorderOutlineOrShadow):
+ (WebCore::hasBoxDecorations):
+ (WebCore::hasBoxDecorationsWithBackgroundImage):
+ (WebCore::RenderLayerBacking::canBeSimpleContainerCompositingLayer):
+ (WebCore::RenderLayerBacking::canUseDirectCompositing):
+ (WebCore::RenderLayerBacking::detectDrawingOptimizations):
+ (WebCore::RenderLayerBacking::rendererContentChanged):
+ (WebCore::RenderLayerBacking::updateImageContents):
+ * rendering/RenderLayerBacking.h:
+
+2009-03-26 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23914
+
+ Tests: compositing/overflow/ancestor-overflow.html
+ compositing/overflow/parent-overflow.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::calculateClipRects):
+ * rendering/RenderLayer.h:
+ (WebCore::ClipRects::infiniteRect):
+ New static method that returns a large rect that is used by the clipping
+ logic.
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ Use parentClipRects(), rather than calculateRects(), to compute the overflow
+ rect that we'll use to create a masking layer for composited clipping.
+
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::clippedByAncestor):
+ Use parentClipRects() to see whether there's a layer between us and our
+ compositing ancestor which applies clipping.
+
+ (WebCore::RenderLayerCompositor::clipsCompositingDescendants):
+ A layer which imposes clipping to its children doesn't have to be a stacking
+ context; it might be a normal flow layer; in either case, we can rely on the
+ hasCompositingDescendant() bit.
+
+2009-03-26 Steve Falkenburg <sfalken@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=24837
+ Escape key should dismiss select menu
+
+ Reviewed by Adam Roben.
+
+ * platform/win/PopupMenuWin.cpp:
+ (WebCore::PopupWndProc):
+
+2009-03-26 Kevin Ollivier <kevino@theolliviers.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Make sure the script uses LF line endings even on Windows.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24805
+
+ * WebCore/make-generated-sources.sh: Change svn:eol-style to LF
+
+2009-03-26 Eli Fidler <eli.fidler@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Remove warnings all over the place by making operator precedence
+ explicit in cases like x && y || z. No functional change.
+
+ * css/CSSFontSelector.cpp:
+ (WebCore::CSSFontSelector::addFontFaceRule):
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseValue):
+ (WebCore::CSSParser::parseShadow):
+ * dom/Document.cpp:
+ (WebCore::Document::shouldScheduleLayout):
+ * dom/Node.cpp:
+ (WebCore::Node::isBlockFlowOrBlockTable):
+ * dom/Node.h:
+ (WebCore::Node::document):
+ * dom/Position.cpp:
+ (WebCore::Position::next):
+ (WebCore::Position::upstream):
+ (WebCore::Position::downstream):
+ (WebCore::Position::getInlineBoxAndOffset):
+ * dom/PositionIterator.cpp:
+ (WebCore::PositionIterator::atStart):
+ * dom/Range.cpp:
+ (WebCore::Range::intersectsNode):
+ * editing/Editor.cpp:
+ (WebCore::Editor::setBaseWritingDirection):
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplaceSelectionCommand::doApply):
+ * editing/TextIterator.cpp:
+ (WebCore::TextIterator::advance):
+ (WebCore::SimplifiedBackwardsTextIterator::advance):
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::leftVisuallyDistinctCandidate):
+ (WebCore::VisiblePosition::rightVisuallyDistinctCandidate):
+ (WebCore::VisiblePosition::canonicalPosition):
+ * editing/htmlediting.cpp:
+ (WebCore::isMailBlockquote):
+ (WebCore::lineBreakExistsAtPosition):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::parseMappedAttribute):
+ * loader/FTPDirectoryDocument.cpp:
+ (WebCore::processFileDateString):
+ * loader/ImageLoader.cpp:
+ (WebCore::ImageLoader::updateFromElement):
+ * loader/TextResourceDecoder.cpp:
+ (WebCore::TextResourceDecoder::checkForHeadCharset):
+ * page/AccessibilityObject.cpp:
+ (WebCore::updateAXLineStartForVisiblePosition):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::sendContextMenuEvent):
+ * page/animation/AnimationBase.cpp:
+ (WebCore::PropertyWrapperGetter::equals):
+ (WebCore::PropertyWrapperShadow::equals):
+ * platform/ContextMenu.cpp:
+ (WebCore::ContextMenu::populate):
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::adjustScrollbarsAvoidingResizerCount):
+ * platform/text/Base64.cpp:
+ (WebCore::base64Encode):
+ * platform/text/BidiResolver.h:
+ (WebCore::::raiseExplicitEmbeddingLevel):
+ (WebCore::::createBidiRunsForLine):
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::placeEllipsisBox):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::addChild):
+ (WebCore::RenderBlock::repaintOverhangingFloats):
+ (WebCore::RenderBlock::fillInlineSelectionGaps):
+ (WebCore::RenderBlock::positionForPoint):
+ (WebCore::RenderBlock::calcInlinePrefWidths):
+ (WebCore::RenderBlock::hasLineIfEmpty):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::imageChanged):
+ (WebCore::RenderBox::localCaretRect):
+ (WebCore::RenderBox::positionForPoint):
+ (WebCore::RenderBox::shrinkToAvoidFloats):
+ * rendering/RenderObject.h:
+ (WebCore::objectIsRelayoutBoundary):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::clippedOverflowRectForRepaint):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::calcPrefWidths):
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::determineStartPosition):
+ (WebCore::textWidth):
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::diff):
+ * rendering/style/StyleInheritedData.cpp:
+ (WebCore::cursorDataEquivalent):
+ * rendering/style/StyleRareInheritedData.cpp:
+ (WebCore::StyleRareInheritedData::shadowDataEquivalent):
+ * rendering/style/StyleRareNonInheritedData.cpp:
+ (WebCore::StyleRareNonInheritedData::shadowDataEquivalent):
+ (WebCore::StyleRareNonInheritedData::animationDataEquivalent):
+ (WebCore::StyleRareNonInheritedData::transitionDataEquivalent):
+
+2009-03-26 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24804
+ [GTK] 401 responses cause rogue content to be loaded
+
+ Our soup code handles 401 responses itself, so we should not feed
+ the headers and data of those responses to the loader.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::gotHeadersCallback):
+ (WebCore::gotChunkCallback):
+
+2009-03-25 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt and Darin Adler.
+
+ Fixed <rdar://problem/6603167> Crash in WebKit!JSC::JSGlobalObject::resetPrototype
+ during Stress test (#3 & #7 WER crashes for Safari 4 Beta)
+
+ The problem was that allocation of the global object would, for just a
+ moment, leave the global object's prototype unprotected from GC. This
+ bug doesn't apply to non-global DOM objects because their prototypes are
+ cached and marked by the global object.
+
+ No test case because the crashing condition is hard to deterministically
+ produce in a normal build, and in a Windows Release build with
+ COLLECT_ON_EVERY_ALLOCATION set to 1, existing tests crash/hang.
+
+ * bindings/js/JSDOMWindowShell.cpp:
+ (WebCore::JSDOMWindowShell::setWindow):
+ * bindings/js/WorkerScriptController.cpp:
+ (WebCore::WorkerScriptController::initScript): Protect the global object's
+ prototype from GC during construction, since the global object does not
+ yet point to it, and therefore won't mark it.
+
+2009-03-25 Dean Jackson <dino@apple.com>
+
+ Reviewed by Simon Fraser
+
+ https://bugs.webkit.org/show_bug.cgi?id=23361
+
+ When using hardware compositing, some images can be directly
+ rendered by the hardware - no need to draw them into a separate
+ context, therefore saving memory.
+ Only images with certain style properties can be directly
+ composited - basically anything that is not a simple image requires
+ the usual rendering path (eg. if the image has borders).
+
+ Test: compositing/direct-image-compositing.html
+
+ * manual-tests/resources/simple_image.png: Added.
+ * manual-tests/simple-image-compositing.html: Added.
+ * platform/graphics/Image.h:
+ (WebCore::Image::startAnimation):
+ - move this to public
+ * rendering/RenderImage.cpp:
+ (WebCore::RenderImage::imageChanged):
+ - poke compositing layer if image has changed
+ (WebCore::RenderImage::notifyFinished):
+ - let the compositing layer know that it can render the image
+ * rendering/RenderImage.h:
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::rendererContentChanged):
+ * rendering/RenderLayer.h:
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::canUseInnerContentLayer):
+ (WebCore::RenderLayerBacking::detectDrawingOptimizations):
+ (WebCore::RenderLayerBacking::rendererContentChanged):
+ * rendering/RenderLayerBacking.h:
+ - code to hook up direct compositing of images where
+ possible
+
+2009-03-25 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Chromium build fix. Fix #include in V8NodeFilterCondition.cpp due to the
+ rename of V8NodeFilter to V8NodeFilterCondition.
+
+ * bindings/v8/V8NodeFilterCondition.cpp:
+
+2009-03-25 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=24817
+
+ When the slider range is zero, avoid a divide by zero, which caused the
+ thumb to be positioned off in the weeds, which broke painting.
+
+ Test: media/video-empty-source.html
+
+ * rendering/RenderSlider.cpp:
+ (WebCore::SliderRange::proportionFromValue):
+ (WebCore::SliderRange::valueFromProportion):
+ (WebCore::sliderPosition):
+ (WebCore::RenderSlider::setValueForPosition):
+
+2009-03-24 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Remove dead code and style cleanup
+ https://bugs.webkit.org/show_bug.cgi?id=24684
+
+ * html/CanvasStyle.cpp:
+ (WebCore::CanvasStyle::CanvasStyle):
+ Coverty was annoyed that we didn't initialize all of our members. I agree, but I didn't
+ want to paste all 8 members each time, so I just cleaned up the existing constructors and left them.
+ * page/FocusController.cpp:
+ (WebCore::FocusController::setFocusedNode):
+ "node" was checked just above and is already known to be non-null
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::insertOnlyThisLayer):
+ We were already using parentLayer w/o a NULL check above, so just add an explicit ASSERT and use it w/o NULL check
+ (WebCore::RenderLayer::resize):
+ element is already ASSERTed above, no need to null check it here
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::addCell):
+ currentCell.cell was just assigned to the value "cell" which is known to be non-null, no need to null check again.
+
+2009-03-24 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Move ASSERT(foo) to before where foo-> is used
+ https://bugs.webkit.org/show_bug.cgi?id=24684
+
+ * platform/chromium/PasteboardChromium.cpp:
+ (WebCore::Pasteboard::writeImage):
+ Move ASSERTs to the top of the function, code was using "node" before ASSERT(node), once I moved
+ ASSERT(node) to the top of the function it made sense to move the rest of them there too.
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::prepareToRenderSVGContent):
+ move ASSERT(object) to *before* we use "object" :)
+
+2009-03-24 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Make TextTokenizer ASSERT that the buffer was freed
+ https://bugs.webkit.org/show_bug.cgi?id=24684
+
+ * loader/TextDocument.cpp:
+ (WebCore::TextTokenizer::TextTokenizer):
+ (WebCore::TextTokenizer::~TextTokenizer):
+ (WebCore::TextTokenizer::finish):
+ Make it clear by adding a ~TextTokenizer that finish() will always be called and the memory never leaked.
+
+2009-03-24 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Fix case where lBreak.obj->isBR() when lBreak.obj was NULL
+ https://bugs.webkit.org/show_bug.cgi?id=24684
+
+ I don't have a test case where we were taking the wrong path here
+ However, adding an ASSERT(lBreak.obj) before this usage caused
+ multiple bidi tests to fail, so lBreak.obj can be null here.
+
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::findNextLineBreak):
+ lBreak.obj can be null, so we can't call ->isBR() on it unconditionally.
+
+2009-03-24 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Style cleanup and dead code removal in dom, editing
+ https://bugs.webkit.org/show_bug.cgi?id=24684
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::getUpperLeftCorner):
+ (WebCore::ContainerNode::getLowerRightCorner):
+ (WebCore::ContainerNode::getRect):
+ Coverty was (rightly) confused as to what the hell "o" was being used for
+ and whether or not it would ever be NULL. I added some ASSERTS so that people (and machines)
+ would be less confused about the logic in getUpperLeftCorner/getLowerRightCorner
+ * dom/Document.cpp:
+ (WebCore::Document::recalcStyle):
+ Remove dead code, this block already checked that change == Force
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::removeInlineStyle):
+ Coverty correctly identified that traversePreviousNodePostOrder can return NULL, thus
+ prev will be null, and we don't really explicitly handle it (like we probably should)
+ It's OK though, because we end up creating a null position object, which may not have
+ been what we intended, but we certainly don't crash.
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+ Remove dead code, insertionPosition.node() is already checked to be non-null above.
+ * editing/markup.cpp:
+ (WebCore::appendStartMarkup):
+ removed dead code, annotate is already known to be true at this point in the file
+ !annotate was checked above, and break; was called.
+
+2009-03-24 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ CSS dead code removal and cleanup from Coverty errors
+ https://bugs.webkit.org/show_bug.cgi?id=24684
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::applyProperty):
+ Every other place in the code we check settings() for NULL, so I made these places
+ check too, even though we should never be resolving style against a document which has
+ no frame (which I believe is the only time settings() can be null)
+ * css/CSSStyleSheet.cpp:
+ (WebCore::CSSStyleSheet::styleSheetChanged):
+ Removing dead code, "root" can never be null here.
+ * css/SVGCSSStyleSelector.cpp:
+ (WebCore::colorFromSVGColorCSSValue):
+ (WebCore::CSSStyleSelector::applySVGProperty):
+ Extra returns in the old macros caused dead code. Removing the old macros and use modern
+ ones instead. :)
+ Extra null checks to value were not needed. Added an ASSERT at the top of the function
+ to make it clear that value will never be NULL.
+ Added colorFromSVGColorCSSValue to clean up the code a little.
+
+2009-03-24 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Font fallback cleanup and added ASSERT for GlyphPageTreeNode
+ https://bugs.webkit.org/show_bug.cgi?id=24684
+
+ * css/CSSFontSelector.cpp:
+ (WebCore::compareFontFaces):
+ Coverty was concerned that it was possible to index off the end of weightFallbackRuleSets
+ I can't read the code well enough to tell, so I tried to make the code clearer
+ and added an ASSERT.
+ * platform/graphics/GlyphPageTreeNode.cpp:
+ (WebCore::GlyphPageTreeNode::initializePage):
+ Coverty believes we can crash here due to j being larger than GlyphPage::size. I think to is already
+ known to be < GlyphPage::size due to the min() statement above, but not being sure I added an ASSERT.
+
+2009-03-24 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Coverty inspired fixes in Animations/Transforms
+ https://bugs.webkit.org/show_bug.cgi?id=24684
+
+ * page/animation/AnimationBase.h:
+ Fix animate() signatures to match so that the virtual methods actually override one another. :)
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::removeFromStartTimeResponseWaitList):
+ Attempt to fix this method, prevAnimation was never set to anything but NULL,
+ as far as I can tell the author originally intended to update it at the end
+ of the loop, which is what I changed this code to do.
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::animate):
+ Make method signature match AnimationBase::animate
+ * page/animation/ImplicitAnimation.h:
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::animate):
+ Make method signature match AnimationBase::animate
+ * page/animation/KeyframeAnimation.h:
+ * platform/graphics/transforms/PerspectiveTransformOperation.cpp:
+ (WebCore::PerspectiveTransformOperation::blend):
+ if (blendToIdentity) already returned above.
+ * platform/graphics/transforms/RotateTransformOperation.cpp:
+ (WebCore::RotateTransformOperation::blend):
+ if (blendToIdentity) already returned above.
+
+2009-03-25 Eli Fidler <eli.fidler@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Fix compiler warnings regarding assignments in if statements.
+
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::createFormData):
+ * plugins/PluginPackage.cpp:
+ (WebCore::PluginPackage::compare):
+
+2009-03-25 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ - fix <rdar://problem/6472150> repro crash in
+ RenderBlock::rightmostPosition(bool, bool) const at mercotte.fr using
+ menus
+
+ Test: fast/inline/continuation-positioned-reparenting.html
+
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::splitFlow): When repurposing the existing
+ container as the "pre" block, clear its positioned objects list, because
+ positioned descendants may end up in a different block after the split.
+
+2009-03-24 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24784
+
+ Length values in transform operations need to take zoom into account.
+
+ Test: fast/transforms/transforms-with-zoom.html
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::createTransformOperations):
+
+2009-03-25 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24809, background-clip/origin don't use the correct
+ values. Add support for the new values (while preserving the old values for backwards
+ compatibility).
+
+ Changed some existing test cases to use the new values.
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseFillProperty):
+ * css/CSSPrimitiveValueMappings.h:
+ (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
+ (WebCore::CSSPrimitiveValue::operator EFillBox):
+ * css/CSSValueKeywords.in:
+
+2009-03-25 Brett Wilson <brettw@dhcp-172-22-71-191.mtv.corp.google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ Fix complex text opacity on the Chromium Windows port.
+ https://bugs.webkit.org/show_bug.cgi?id=24757
+
+ Test: fast/text/complex-text-opacity.html
+
+ * platform/graphics/chromium/FontChromiumWin.cpp:
+ (WebCore::):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareFontPainter::TransparencyAwareFontPainter):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareFontPainter::init):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareFontPainter::initializeForGDI):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareFontPainter::~TransparencyAwareFontPainter):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareGlyphPainter::TransparencyAwareGlyphPainter):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareGlyphPainter::~TransparencyAwareGlyphPainter):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareGlyphPainter::estimateTextBounds):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareGlyphPainter::drawGlyphs):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareUniscribePainter::hdc):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareUniscribePainter::TransparencyAwareUniscribePainter):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareUniscribePainter::~TransparencyAwareUniscribePainter):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareUniscribePainter::estimateTextBounds):
+ (WebCore::Font::drawGlyphs):
+ (WebCore::Font::drawComplexText):
+
+2009-03-25 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Eric Seidel
+
+ Fix for bug 23198, border images should not clip to border radii. The border-image should just ignore
+ the border-radius, since the assumption is that any desired rounding will be built into the border-image
+ itself.
+
+ Note that I do not agree with this change, but I am matching the spec.
+
+ Added fast/borders/border-image-border-radius.html
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintNinePieceImage):
+
+2009-03-25 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24750
+ [GTK] requests download instead of displaying page
+
+ Fix the Content-Type headers we get from soup, so that we set a
+ proper media type on the ResourceResponse.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::fillResponseFromMessage):
+
+2009-03-25 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24600
+ [GTK] responses with status code >= 400 should not be given special treatment
+
+ Do not special case requests that have HTTP responses >=
+ 400. Redirects are handled automatically by libsoup, but the rest
+ of the responses should be treated like any other.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::):
+ (WebCore::gotHeadersCallback):
+ (WebCore::gotChunkCallback):
+ (WebCore::finishedCallback):
+
+2009-03-25 Darin Adler <darin@apple.com>
+
+ Reviewed by John Sullivan.
+
+ Tidy up LegacyWebArchive a bit. And don't include favicons in web archives when
+ they are being used only for selections, not an entire document.
+
+ * WebCore.base.exp: Remove exported function that's not used in WebKit.
+
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ (WebCore::LegacyWebArchive::createPropertyListRepresentation): Made a static member
+ function so it can share private things with other member functions. Added some FIXME
+ comments to a branch of code I think is dead. Changed boolean argument into a named
+ one. Renamed to match other similar functions.
+ (WebCore::LegacyWebArchive::createResourceResponseFromPropertyListData): Ditto.
+ (WebCore::LegacyWebArchive::createResource): Ditto.
+ (WebCore::LegacyWebArchive::create): Merged the create and init functions.
+ (WebCore::LegacyWebArchive::rawDataRepresentation): Added some assertions because
+ we should never fail to write (we can fail to read).
+ (WebCore::LegacyWebArchive::createResourceResponseFromMacArchivedData): Made a static
+ member function as above.
+ (WebCore::LegacyWebArchive::createFromSelection): Ditto.
+ (WebCore::LegacyWebArchive::create): Iterate the vector with indices rather than
+ iterators. Only include the favicon if the first node is the document since we don't
+ want to include the favicon when copying and pasting.
+
+ * loader/archive/cf/LegacyWebArchive.h: Made one of the create functions private.
+ Made the Mac-specific functions be static member functions. Made other helpers be
+ static member functions. Removed the nit function.
+
+ * loader/archive/cf/LegacyWebArchiveMac.mm:
+ (WebCore::LegacyWebArchive::createResourceResponseFromMacArchivedData): Updated
+ comment and made this a static member function.
+ (WebCore::LegacyWebArchive::createPropertyListRepresentation): Ditto. Also made
+ it so we only type cast in one place.
+
+2009-03-25 Darin Adler <darin@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Bug 24740: crash in RenderSlider::setPositionFromValue when calling pause() after setting <video> to display: none
+ https://bugs.webkit.org/show_bug.cgi?id=24740
+ rdar://problem/6679873
+
+ Bug 12104: Native Slider: When the thumb's height is specified as a percentage, it is not centered properly
+ https://bugs.webkit.org/show_bug.cgi?id=12104
+
+ Test: media/video-display-none-crash.html
+
+ The problem here was that RenderSlider was trying to position its thumb in a way that
+ requires it to call updateLayout inside rendering code. The right way to position a
+ child renderer is to do layout, so I had to write a layout function. And then fix a few
+ other small problems shown by the same test case.
+
+ * rendering/RenderSlider.cpp: Made defaultTrackLength have internal linkage.
+ Renamed HTMLSliderThumbElement to SliderThumbElement because we only use the HTML
+ prefix for public DOM classes, not elements used as implementation details.
+ Made SliderThumbElement function members private and got rid of unneeded default
+ argument value for shadowParent.
+ (WebCore::SliderRange::SliderRange): Added. Parses precision, max, and min attributes.
+ (WebCore::SliderRange::clampValue): Added. Does standard clamping based on the above.
+ (WebCore::SliderRange::valueFromElement): Added. Reads the value from the element in
+ a way that clamps to the range.
+ (WebCore::sliderPosition): Added. Computes the slider position: a double.
+ (WebCore::SliderThumbElement::SliderThumbElement): Removed unneeded explicit
+ initialization of m_initialClickPoint.
+ (WebCore::SliderThumbElement::defaultEventHandler): Call setValueForPosition instead
+ of calling setCurrentPosition and valueChanged.
+ (WebCore::RenderSlider::RenderSlider): Remove unneeded explicit initialization of m_thumb.
+ (WebCore::RenderSlider::styleDidChange): Remove unneeded second argument to createThumbStyle.
+ (WebCore::RenderSlider::createThumbStyle): Remove unneeded second argument. Get rid of code
+ setting the position to relative and setting the left and top. We now handle positioning
+ in a custom layout function.
+ (WebCore::RenderSlider::layout): Rewrote to handle positioning of the thumb as layout.
+ (WebCore::RenderSlider::updateFromElement): Added code to immediately update the value
+ in the element if it's out of range. This clamping used to be done as a side effect of
+ setPositionFromValue. Also, this has nothing to do with the renderer, so at some point
+ it could be moved into HTMLInputElement. Removed call to setPositionFromValue
+ and instead just rely on the call to setNeedsLayout. Fix the setNeedsLayout call to be
+ a normal setNeedsLayout(true), not a setNeedsLayout(true, false), because we do want
+ this to be propagated to the parent -- it's not called during layout.
+ (WebCore::RenderSlider::setValueForPosition): Refactor to use the new SliderRange
+ class. Also don't call setCurrentPosition; instead just call setNeedsLayout.
+ (WebCore::RenderSlider::currentPosition): Use the actual position of the renderer rather
+ than the style to find the position; that means this needs to be done after layout is done.
+ Also removed unneeded runtime checks and replaced them with assertions, after checking
+ all callers to see they already guarantee this.
+ (WebCore::RenderSlider::trackSize): Removed unneeded runtime checks and replaced them
+ with assertions, after checking all callers to see they already guarantee this.
+ (WebCore::RenderSlider::inDragMode): Added a null check for m_thumb so this won't
+ crash if called early on a brand new RenderSlider.
+
+ * rendering/RenderSlider.h: Made all functions private except for forwardEvent and inDragMode.
+ Renamed HTMLSliderThumbElement to SliderThumbElement because we only use the HTML
+ prefix for public DOM classes, not elements used as implementation details. Made the
+ mouseEventIsInThumb function non-virtual. Removed the return value and argument from
+ setPositionFromValue. Removed valueChanged and setCurrentPosition. Removed the oldStyle
+ argument to createThumbStyle (see above). Made SliderThumbElement a friend so it can use some
+ private member functions.
+
+2009-03-25 Eli Fidler <eli.fidler@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Fix ambiguous else cases by adding braces to nested if()s with elses.
+
+ * loader/MainResourceLoader.cpp:
+ (WebCore::MainResourceLoader::continueAfterContentPolicy):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::updateDragAndDrop):
+ * rendering/RenderListMarker.cpp:
+ (WebCore::toArmenianUnder10000):
+ * rendering/TextControlInnerElements.cpp:
+ (WebCore::TextControlInnerTextElement::defaultEventHandler):
+
+2009-03-24 Eli Fidler <eli.fidler@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Move variable into proper platform block to quiet warning.
+
+ * html/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::drawTextInternal):
+
+2009-03-24 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Antti Koivisto.
+
+ Fix for <rdar://problem/6719375> Deal with QTKit loadstate changes when playing streaming movies
+
+ * WebCore/html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::setNetworkState): Deal with media engine reviving after having
+ network state of NETWORK_NO_SOURCE.
+
+ * WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::updateStates): Reset m_readyState at each state change since
+ some types of movies currently cause QTKit's load state to bounce around. QTMovieLoadStatePlaythroughOK
+ corresponds to HaveFutureData, not HaveEnoughData.
+
+2009-03-24 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=24707
+ <rdar://problem/6593021> Deleting with a caret in a blank, quoted line decreases the quoting, but does not delete the line
+
+ * editing/TypingCommand.cpp: (WebCore::TypingCommand::deleteKeyPressed):
+ After breaking out of an empty mail blockquote, we still want continue with the deletion
+ so actual content will get deleted, and not just the quote style.
+
+2009-03-24 Darin Adler <darin@apple.com>
+
+ Reviewed by Brady Eidson.
+
+ <rdar://problem/6624662> REGRESSION (r39904): can't save certain web pages as web archive (ones without favicons!)
+
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ (WebCore::LegacyWebArchive::create): Added a null check.
+
+2009-03-24 Adam Langley <agl@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24685
+
+ The Skia drawLine function takes subpixel values and attempts to draw
+ a line with subpixel precision. This is complex and slow for drawing
+ scrollbars which use only vertical and horizontal lines.
+
+ This changes the Chromium Linux scrollbar code to use drawIRect.
+
+ * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
+ (WebCore::ScrollbarThemeChromium::invalidateOnMouseEnterExit):
+ (WebCore::drawVertLine):
+ (WebCore::drawHorizLine):
+ (WebCore::drawBox):
+ (WebCore::ScrollbarThemeChromium::paintTrackPiece):
+ (WebCore::ScrollbarThemeChromium::paintThumb):
+
+2009-03-24 David Kilzer <ddkilzer@apple.com>
+
+ Bug 23310: Setting an absolute path (/abs) on an <iframe> with no src doesn't resolve the URL properly
+
+ <https://bugs.webkit.org/show_bug.cgi?id=23310>
+
+ Reviewed by Darin Adler.
+
+ Test: fast/frames/iframe-no-src-set-location.html
+
+ * dom/Document.cpp:
+ (WebCore::Document::completeURL): If m_baseURL is empty or is
+ about:blank and we have a parent document, use the parent
+ document's URL for the base when completing a new URL.
+
+2009-03-24 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24659
+
+ When hit-testing 3d-transformed layers, it doesn't make sense to project the hitTestRect
+ into the coordinate space of the layer, and doing so can result in pathalogical quads
+ that break hit testing. In that case, simply use the same bounds as used for painting,
+ which are the composited bounds for this layer.
+
+ Test: transforms/3d/hit-testing/rotated-hit-test.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTestLayer):
+
+2009-03-24 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24436
+
+ When compositing is enabled, painting and hit testing end up using different
+ clipping roots, because, for painting, every composited layer is a clipping root,
+ but for hit testing only layers with transforms are. To fix this, we use
+ temporary clip rects for hit testing, if the page is in compositing mode.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::paintLayer):
+ (WebCore::RenderLayer::hitTestLayer):
+ (WebCore::RenderLayer::parentClipRects):
+ (WebCore::RenderLayer::calculateRects):
+ * rendering/RenderLayer.h:
+
+2009-03-24 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=24782
+
+ Fix regression with CSS clip rects with non-length values, by reverting to
+ the original code, but passing the zoom multiplier through convertToLength().
+
+ Also make stylistic change in createTransformOperations(), renaming 'inStyle'
+ to 'style.
+
+ Tested by existing tests.
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::convertToLength):
+ (WebCore::CSSStyleSelector::applyProperty):
+ (WebCore::CSSStyleSelector::createTransformOperations):
+
+2009-03-24 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Simon Fraser
+
+ https://bugs.webkit.org/show_bug.cgi?id=21789, overflow:hidden elements should clip their foreground contents
+ to a border-radius.
+
+ This patch makes non-self-painting overflow layers and control clips work with border-radius. RenderLayers
+ that should be clipped by overflow ancestors with border-radius are still broken.
+
+ Added fast/clip/overflow-border-radius-clip.html
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::pushContentsClip):
+
+2009-03-24 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Simon Fraser
+
+ https://bugs.webkit.org/show_bug.cgi?id=21789, overflow:hidden elements should clip their foreground contents.
+
+ This first patch makes overflow:hidden properly clip the foreground contents of overflow:hidden replaced elements. Common
+ replaced elements now default to overflow:hidden in the UA stylesheet (this is what the spec specifically recommends be
+ done).
+
+ Added fast/replaced/border-radius-clip.html
+
+ * css/html4.css:
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::paint):
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::paint):
+
+2009-03-24 Adele Peterson <adele@apple.com>
+
+ RS by Mark Rowe.
+
+ Only build these Mail quirks checks in on the Mac.
+
+ * dom/Document.cpp: (WebCore::disableRangeMutation):
+ * html/HTMLElement.cpp: (WebCore::HTMLElement::inEitherTagList):
+
+2009-03-24 Brent Fulgham <bfulgham@webkit.org>
+
+ Build fix, no review.
+
+ Remove ResourceLoaderCFNet.cpp from build list for Cairo Releas
+ and Debug targets.
+
+ * WebCore.vcproj/WebCore.vcproj:
+
+2009-03-24 Eric Carlson <eric.carlson@apple.com>
+
+ Fix layout tests broken by r41907.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::setReadyState): Don't set "was playing" based on the new ready state
+
+2009-03-24 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24689
+ Fix Chromium compilation errors.
+
+ * bindings/v8/WorkerContextExecutionProxy.cpp:
+ (WebCore::WorkerContextExecutionProxy::FindOrCreateEventListener):
+ (WebCore::WorkerContextExecutionProxy::RemoveEventListener):
+
+2009-03-24 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24759
+ Add missing methods Element.prototype.removeMatchingStyleClasses and
+ Node.prototype.enclosingNodeOrSelfWithNodeNameInArray to SourceFrame content
+ iframe. These methods are called by Element.prototype.removeStyleClass and
+ Node.prototype.enclosingNodeOrSelfWithNodeName.
+
+ * inspector/front-end/SourceFrame.js:
+ (WebInspector.SourceFrame.prototype._loaded):
+
+2009-03-24 Mark Mentovai <mark@chromium.org>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24653
+ WebKit should be buildable without prefix header injection.
+ Adds missing #includes and forward declarations as needed.
+
+ * editing/SmartReplaceCF.cpp:
+ * platform/graphics/mac/ColorMac.mm:
+ * platform/graphics/mac/FontCacheMac.mm:
+ * platform/graphics/mac/FontCustomPlatformData.h:
+ * platform/graphics/mac/FontMac.mm:
+ * platform/graphics/mac/FontMacATSUI.mm:
+ * platform/graphics/mac/FontPlatformData.h:
+ * platform/graphics/mac/FontPlatformDataMac.mm:
+ * platform/graphics/mac/GraphicsContextMac.mm:
+ * platform/graphics/mac/SimpleFontDataMac.mm:
+ * platform/mac/FoundationExtras.h:
+ * platform/mac/LocalCurrentGraphicsContext.h:
+ * platform/mac/WebCoreSystemInterface.h:
+ * platform/mac/WebCoreSystemInterface.mm:
+ * platform/mac/WebCoreTextRenderer.h:
+ * platform/mac/WebCoreTextRenderer.mm:
+ * platform/mac/WebFontCache.h:
+ * platform/mac/WebFontCache.mm:
+ * platform/text/PlatformString.h:
+ * platform/text/mac/ShapeArabic.c:
+ * platform/text/mac/StringMac.mm:
+ * rendering/RenderThemeChromiumMac.h:
+
+2009-03-24 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix <rdar://problem/6107874> by capping the nesting depth of
+ "block-level" elements generated by the parser
+
+ Test: fast/parser/block-nesting-cap.html
+
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::HTMLParser):
+ (WebCore::HTMLParser::insertNode):
+ (WebCore::HTMLParser::pushBlock):
+ (WebCore::HTMLParser::popOneBlockCommon):
+ (WebCore::HTMLParser::freeBlock):
+ * html/HTMLParser.h:
+
+2009-03-23 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by David Kilzer.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24771
+
+ DOMTimeStamps are based upon 1970.
+
+ * platform/mac/GeolocationServiceMac.mm:
+ (-[WebCoreCoreLocationObserver locationManager:didUpdateToLocation:fromLocation:]):
+
+2009-03-23 Eric Seidel <eric@webkit.org>
+
+ Build fix, no review.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::createVisiblePosition): change .container to .isNotNull()
+
+2009-03-23 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Rename Position::container to m_anchorNode and make it private
+ https://bugs.webkit.org/show_bug.cgi?id=24760
+
+ More code cleanup for Position.
+
+ Change all uses of m_container to node()
+ Eventually most uses of node() should change to anchorNode() to designate
+ that it's the node the Position is anchored to, but not necessarily the
+ container of the position (it could be the before/after neighbor).
+
+ Remove any code which sets m_container, and change it to use a new
+ Position::moveToPosition function which takes a node and offset.
+ It never makes sense to change the node and leave the offset.
+
+ * dom/Position.h:
+ (WebCore::Position::Position):
+ (WebCore::Position::clear):
+ (WebCore::Position::anchorNode):
+ (WebCore::Position::node):
+ (WebCore::Position::moveToPosition):
+ (WebCore::Position::moveToOffset):
+ (WebCore::Position::isNull):
+ (WebCore::Position::isNotNull):
+ (WebCore::operator==):
+ * dom/Range.cpp:
+ (WebCore::Range::create):
+ (WebCore::Range::compareBoundaryPoints):
+ * dom/RangeBoundaryPoint.h:
+ (WebCore::RangeBoundaryPoint::container):
+ (WebCore::RangeBoundaryPoint::set):
+ (WebCore::RangeBoundaryPoint::setOffset):
+ (WebCore::RangeBoundaryPoint::setToChild):
+ (WebCore::RangeBoundaryPoint::setToStart):
+ (WebCore::RangeBoundaryPoint::setToEnd):
+
+2009-03-17 Eric Seidel <eric@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ document.write() should be able to make a document strict mode
+ https://bugs.webkit.org/show_bug.cgi?id=24336
+
+ Remove an implicit write of "<html>" on the first document.write call
+ this was added as part of a KDE import http://trac.webkit.org/changeset/798
+ with no layout test or explanation. I can't think of any reason why
+ an implicit <html> write is necessary (or correct), so I'm removing it and
+ adding a test for the correct behavior. The parser will add any necessary
+ HTMLHTMLElements during the write() anyway.
+
+ Our behavior is now tested by fast/dom/Document/document-write-doctype
+ and matches IE, FF fails this new test. Mozilla bug filed:
+ https://bugzilla.mozilla.org/show_bug.cgi?id=483908
+
+ * dom/Document.cpp:
+ (WebCore::Document::write):
+
+2009-03-23 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for <rdar://problem/6140966>
+ Empty Caches does not clear the Cross-site XMLHttpRequest preflight cache
+
+ * WebCore.base.exp:
+ * WebCore.xcodeproj/project.pbxproj:
+ * loader/CrossOriginPreflightResultCache.cpp:
+ (WebCore::CrossOriginPreflightResultCache::empty):
+ * loader/CrossOriginPreflightResultCache.h:
+
+2009-03-23 Darin Adler <darin@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ Bug 24726: hit testing doesn't work right when the click is on anonymous content
+ https://bugs.webkit.org/show_bug.cgi?id=24726
+ rdar://problem/6696992
+
+ Test: editing/selection/hit-test-anonymous.html
+
+ * rendering/RenderBR.cpp:
+ (WebCore::RenderBR::positionForPoint): Call createVisiblePosition instead of
+ creating a VisiblePosition directly. It will handle finding non-anonymous
+ content nearby if node() is 0.
+ * rendering/RenderBlock.cpp:
+ (WebCore::positionForPointRespectingEditingBoundaries): Ditto.
+ (WebCore::positionForPointWithInlineChildren): Ditto.
+ (WebCore::RenderBlock::positionForPoint): Ditto.
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::positionForPoint): Ditto.
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::positionForPoint): Ditto.
+ (WebCore::RenderObject::createVisiblePosition): Added.
+ * rendering/RenderObject.h: Added createVisiblePosition.
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::positionForPoint): Call createVisiblePosition.
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::positionForPoint): Ditto.
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::positionForPoint): Ditto.
+
+2009-03-23 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler & Dave Hyatt.
+
+ Fix for <rdar://problem/6621310> REGRESSION(35185): Apple Travel HTML emails missing some style after Safari 4 upgrade
+
+ Leopard Mail doesn't expect <style> to be in the body. This change reverts back to the old behavior of
+ moving <style> to <head> for that version of Mail.
+
+ * html/HTMLElement.cpp: (WebCore::HTMLElement::inEitherTagList):
+
+2009-03-23 Adele Peterson <adele@apple.com>
+
+ Reviewed by Mark Rowe & Dave Hyatt.
+
+ Merge some of the individual Mail quirks into two settings that we can check for future quirks.
+
+ * WebCore.base.exp:
+ * dom/Document.cpp:
+ (WebCore::disableRangeMutation):
+ (WebCore::Document::nodeChildrenChanged):
+ (WebCore::Document::nodeWillBeRemoved):
+ (WebCore::Document::textInserted):
+ (WebCore::Document::textRemoved):
+ (WebCore::Document::textNodesMerged):
+ (WebCore::Document::textNodeSplit):
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+ (WebCore::Settings::setNeedsLeopardMailQuirks):
+ (WebCore::Settings::setNeedsTigerMailQuirks):
+ * page/Settings.h:
+ (WebCore::Settings::needsLeopardMailQuirks):
+ (WebCore::Settings::needsTigerMailQuirks):
+
+2009-03-23 Ada Chan <adachan@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=24762
+ Support text-indent in <option> elements on windows platform.
+
+ Reviewed by Adele Peterson.
+
+ * css/themeWin.css:
+ * platform/PopupMenuStyle.h: We don't honor font specified on <option> elements right now. Make this
+ explicit via windows themed default stylesheet.
+ (WebCore::PopupMenuStyle::PopupMenuStyle): Also store text-indent and text-direction.
+ (WebCore::PopupMenuStyle::textIndent):
+ (WebCore::PopupMenuStyle::textDirection):
+ * platform/win/PopupMenuWin.cpp:
+ (WebCore::PopupMenu::paint): Adjust the text's x-coordinate if text-indent is supported for options and
+ text-indent is specified with LTR direction.
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::updateOptionsWidth): Take text-indent into account if theme supports text-indent for options.
+ (WebCore::RenderMenuList::itemStyle): Use new PopupMenuStyle constructor on windows.
+ (WebCore::RenderMenuList::menuStyle): Ditto.
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::menuStyle): Ditto.
+ * rendering/RenderTheme.h:
+ (WebCore::RenderTheme::popupOptionSupportsTextIndent): Added. Default is false since we are only supporting it in windows for now.
+ * rendering/RenderThemeWin.h:
+ (WebCore::RenderThemeWin::popupOptionSupportsTextIndent): Returns true for windows.
+
+2009-03-23 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=24699
+ REGRESSION: Java Applets broken
+ <rdar://problem/6707494>
+
+ Fix loading Java applets without a codeBase. Only pass the base (up to the
+ the last path component) of the baseURL to the plug-in.
+
+ * html/HTMLAppletElement.cpp:
+ (WebCore::HTMLAppletElement::createRenderer):
+ * platform/KURL.cpp:
+ (WebCore::KURL::baseAsString):
+ * platform/KURL.h:
+
+2009-03-23 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ * platform/KURL.h: Removed now-incorrect comments.
+ None of the parts include the separator characters any more, now that
+ query doesn't include the "?", so the comments explaining which do and do
+ not are no-longer helpful.
+
+2009-03-23 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24764
+
+ Renamed files V8NodeFilter -> V8NodeFilterCondition to reflect
+ class names. Also fixed some headers that got mangled in search/replace
+ operations.
+
+ No change in behavior, so no test.
+
+ * bindings/v8/V8NodeFilter.h: Removed.
+ * bindings/v8/V8NodeFilterCondition.cpp: Renamed from WebCore/bindings/v8/V8NodeFilter.cpp.
+ * bindings/v8/V8NodeFilterCondition.h: Added.
+ * bindings/v8/custom/V8ClipboardCustom.cpp:
+ * bindings/v8/custom/V8DocumentCustom.cpp:
+ * bindings/v8/custom/V8ElementCustom.cpp:
+ * bindings/v8/custom/V8HTMLCanvasElementCustom.cpp:
+ * bindings/v8/custom/V8NavigatorCustom.cpp:
+
+2009-03-23 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Antti Koivisto.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24741
+
+ Adds a unique across-browser-sessions identifier to FormData, which may
+ be used by ResourceHandle as a secondary cache key to enable cached
+ form submissions.
+
+ At issue: two otherwise identical form submissions may result in
+ completely independent responses, which may each be appropriate to
+ store and reuse from cache.
+
+ * html/HTMLFormElement.cpp: Added call to FormData::setIdentifier so that
+ we only enable cached form submissions for those generated by HTML. This
+ way we do not bother with POSTs generated by XMLHttpRequest.
+ (WebCore::generateFormDataIdentifier):
+ (WebCore::HTMLFormElement::createFormData):
+ * platform/network/FormData.cpp: Initialize m_identifier to 0, which means
+ the unspecified identifier. So by default there is no identifier and
+ nothing changes.
+ (WebCore::FormData::FormData):
+ * platform/network/FormData.h: Added m_identifier with setter and getter.
+ (WebCore::FormData::setIdentifier):
+ (WebCore::FormData::identifier):
+
+2009-03-23 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Antti Koivisto
+
+ https://bugs.webkit.org/show_bug.cgi?id=24733
+
+ Fix media controller with full-page zoom. Previously, the media controller
+ shadow nodes never saw style changes on the RenderMedia, so did not respond
+ to zooming at all. Now, we update the style on the shadow renderers
+ whenever RenderMedia gets a style change. Also fix the video thumb in
+ the theme to be scaled properly.
+
+ Test: media/video-controls-zoomed.html
+
+ * rendering/MediaControlElements.cpp:
+ (WebCore::MediaControlShadowRootElement::updateStyle):
+ (WebCore::MediaTextDisplayElement::MediaTextDisplayElement):
+ (WebCore::MediaTextDisplayElement::updateStyle):
+ (WebCore::MediaControlInputElement::MediaControlInputElement):
+ (WebCore::MediaControlInputElement::updateStyle):
+ * rendering/MediaControlElements.h:
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::styleDidChange):
+ * rendering/RenderMedia.h:
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::adjustSliderThumbSize):
+
+2009-03-23 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24739
+
+ Rework StringImpl::create methods to try to allocate a single buffer
+ rather than allocating both the StringImpl class and a separate data
+ buffer.
+
+ * platform/text/StringImpl.cpp:
+ * platform/text/StringImpl.h:
+
+2009-03-23 Darin Adler <darin@apple.com>
+
+ Reviewed by Antti Koivisto.
+
+ Based on a patch by Nico Weber <nicolasweber@gmx.de>
+
+ Bug 24755: LayoutTests/http/tests/misc/url-in-utf16le.html regression
+ https://bugs.webkit.org/show_bug.cgi?id=24755
+
+ * platform/text/TextEncoding.cpp:
+ (WebCore::TextEncoding::isUTF7Encoding): Added. Checks if the current encoding
+ is UTF7 without loading extended codecs.
+ (WebCore::TextEncoding::encodingForFormSubmission): Use isUTF7Encoding() instead
+ of comparing with UTF7Encoding(). Eliminate the explicit check of
+ noExtendedTextEncodingNameUsed() because that's now handled by the functions
+ that this function calls instead.
+
+ * platform/text/TextEncoding.h: Added isUTF7Encoding function.
+ Also tweaked formatting a bit.
+
+2009-03-20 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24720
+ RenderThemeChromium should draw something for Slider parts instead of
+ dropping them on the floor.
+
+ * platform/chromium/ChromiumBridge.h:
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::RenderThemeChromiumWin::adjustSliderThumbSize):
+ (WebCore::RenderThemeChromiumWin::paintSliderTrack):
+ (WebCore::RenderThemeChromiumWin::determineSliderThumbState):
+ (WebCore::RenderThemeChromiumWin::getThemeData):
+ * rendering/RenderThemeChromiumWin.h:
+ (WebCore::RenderThemeChromiumWin::paintSliderThumb):
+
+2009-03-23 Glen Murphy <glen@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24657
+
+ Fix Skia drawing of highly scaled bitmaps; the conversion to
+ IntRect produced visible layout test failures in highly scaled
+ coordinate systems.
+
+ Test: svg/custom/image-small-width-height.svg
+
+ * WebCore\platform\graphics\skia\ImageSkia.cpp:
+
+2009-03-23 David Kilzer <ddkilzer@apple.com>
+
+ Provide JavaScript exception information after slow script timeout
+
+ Reviewed by Oliver Hunt.
+
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::evaluate): Changed to report
+ exceptions for the Interrupted completion type as well.
+
+2009-03-23 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=24736
+
+ Fix three mostly-unrelated problems with full-page zoom:
+
+ * dom/Document.cpp:
+ (WebCore::Document::elementFromPoint):
+ Document::elementFromPoint() needs to take full-page zoom into account.
+
+ * dom/MouseRelatedEvent.cpp:
+ (WebCore::MouseRelatedEvent::receivedTarget):
+ Take full-page zoom into account when computing offsetX/offsetY.
+
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::listBoxDefaultEventHandler):
+ Don't use offsetX/offsetY when hit testing list boxes; offsets were broken
+ with full-page zoom, and using pageX/pageY is easier because we don't
+ have to worry about the event target, and we already have a point in
+ absolute coordinates.
+
+ Tests: fast/forms/listbox-hit-test-zoomed.html
+ fast/forms/search-zoomed.html
+ fast/forms/slider-zoomed.html
+
+2009-03-23 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=24753
+
+ The rect for CSS 'clip' needs to have zooming applied to it.
+
+ Test: fast/css/clip-zooming.html
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::applyProperty):
+
+2009-03-23 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Adam Roben.
+
+ <rdar://problem/6704282>
+ https://bugs.webkit.org/show_bug.cgi?id=24719
+ QTMovieWinTimer logic inversion
+
+ Fix logic inversion in the Win32 timer used by QTMovieWin that caused it to always
+ use SetTimer, even when the intervals was below USER_TIMER_MINIMUM. A side effect of
+ this was that a movie timer would sometimes be blocked for significant amounts of time
+ because WM_TIMER messages are not processed when the thread's message queue has any
+ higher priority messages, and WebCore/Win's timer uses PostMessage for low interval
+ timers. Also change SetTimer call to use HWND and custom message instead of
+ timer function since the timer already has an HWND for processing PostMessage.
+
+ Not possible to make a test for this because it is so timing dependant.
+
+ * platform/graphics/win/QTMovieWinTimer.cpp:
+ (TimerWindowWndProc):
+ (setSharedTimerFireDelay):
+
+2009-03-23 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24588
+
+ Update media element implementation to current HTML5 spec
+
+ New tests:
+ media/media-constants.html
+ media/video-seek-no-src-exception.html
+ media/video-source-add-src.html
+ media/video-src-invalid-remove.html
+ media/video-src-plus-source.html
+ media/video-timeupdate-during-playback.html
+
+ * dom/EventNames.h: Remove obsolute events, add new ones.
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize new member vars.
+ (WebCore::HTMLMediaElement::attributeChanged): Trigger load() only when we don't
+ have a source.
+ (WebCore::HTMLMediaElement::removedFromDocument): Deal with state name changes.
+ (WebCore::HTMLMediaElement::scheduleProgressEvent): New, create a progress event and
+ add it to the event queue to be dispatch when the timer fires.
+ (WebCore::HTMLMediaElement::scheduleEvent): New, create a generic event and add
+ it to the event queue to be dispatch when the timer fires.
+ (WebCore::HTMLMediaElement::enqueueEvent): Add an event to the queue and ticke the
+ asynch event timer.
+ (WebCore::HTMLMediaElement::asyncEventTimerFired): Dispatch all pending events.
+ (WebCore::HTMLMediaElement::loadTimerFired): Either trigger the initial load or
+ try to load the next <source> url.
+ (WebCore::HTMLMediaElement::load): Minor style change.
+ (WebCore::HTMLMediaElement::loadInternal): The first part of the spec load algorithm, cleanup
+ the current load (if any) and set up state for a new load.
+ (WebCore::HTMLMediaElement::selectMediaResource): Deal with no 'src' or <source>, post 'loadstart'
+ event, and initiate load from 'src' if present.
+ (WebCore::HTMLMediaElement::loadNextSourceChild): Initiate load from next <source> url, or trigger
+ noneSupported() if no more to consider.
+ (WebCore::HTMLMediaElement::loadResource): Instantiate a new MediaPlayer and ask it to load a url.
+ (WebCore::HTMLMediaElement::startProgressEventTimer): Start the repeating progress event timer.
+ (WebCore::HTMLMediaElement::noneSupported): Post error event and set up state when no valid
+ media url was found.
+ (WebCore::HTMLMediaElement::mediaEngineError): Post error event and set up state when no valid
+ media engine failed with a decode error or a network error.
+ (WebCore::HTMLMediaElement::mediaPlayerNetworkStateChanged):
+ (WebCore::HTMLMediaElement::setNetworkState): Updated for new spec network states.
+ (WebCore::HTMLMediaElement::mediaPlayerReadyStateChanged):
+ (WebCore::HTMLMediaElement::setReadyState): Updated for new spec ready state.
+ (WebCore::HTMLMediaElement::progressEventTimerFired): Bail if the network is not active.
+ (WebCore::HTMLMediaElement::seek): Return INVALID_STATE_ERR exception if state is too low or
+ if player hasn't been set up yet. This is necessary becase load() is async. Clear the flag
+ we use to guard against sending 'ended' more than once.
+ (WebCore::HTMLMediaElement::duration): Don't bother calling media engine before it has metadata.
+ (WebCore::HTMLMediaElement::setDefaultPlaybackRate): Remove exception param, 0 is no longer an
+ invalid rate.
+ (WebCore::HTMLMediaElement::setPlaybackRate): Remove exception param, 0 is no longer an
+ invalid rate. Cache rate being set so we can use it later if media engine isn't ready now.
+ (WebCore::HTMLMediaElement::play): Remove exception param, play() before load() now just
+ starts loading asynchronously.
+ (WebCore::HTMLMediaElement::playInternal): Remove exception param. Fire 'waiting' or 'playing'
+ event depending on current state.
+ (WebCore::HTMLMediaElement::pause): Remove exception param, pause() before load() now just
+ starts loading asynchronously.
+ (WebCore::HTMLMediaElement::pauseInternal): Remove exception param.
+ (WebCore::HTMLMediaElement::setVolume): dispatchEventAsync -> scheduleEvent
+ (WebCore::HTMLMediaElement::setMuted): dispatchEventAsync -> scheduleEvent
+ (WebCore::HTMLMediaElement::togglePlayState): Remove exception param.
+ (WebCore::HTMLMediaElement::beginScrubbing): pause() doesn't take an exception param.
+ (WebCore::HTMLMediaElement::startPlaybackProgressTimer): New, starts timer that fires 4 times per
+ second when the movie is playing to timeupdate so we can post 'timeupdate' events.
+ (WebCore::HTMLMediaElement::playbackProgressTimerFired): Timer proc.
+ (WebCore::HTMLMediaElement::scheduleTimeupdateEvent): Bottleneck around scheduling a 'timeupdate'
+ event because we both fire them them when the spec says we should and when the media engine
+ says that time has jumped, but we don't want to fire more than one at a given movie time. We also
+ use this bottleneck to keep track of the last time one was posted so we won't fire too often
+ during playback.
+ (WebCore::HTMLMediaElement::canPlay): readyState now tracks whether or not we have metadata.
+ (WebCore::HTMLMediaElement::havePotentialSourceChild): New, checks to see if there are a <source>
+ element with a 'src' attribute that we have not tried to load yet.
+ (WebCore::HTMLMediaElement::nextSourceChild): New, returns the url and content type of the next
+ <source> element that we haven't tried to load.
+ (WebCore::HTMLMediaElement::mediaPlayerTimeChanged): Schedule 'seeked' event when seeking completes.
+ Set a flag when we post the 'ended' event, clear it when time changed and we aren't at the end since
+ some media engines call this proc more than once when playback reaches the end and stops, but we
+ don't want to post 'ended' more than once.
+ (WebCore::HTMLMediaElement::mediaPlayerDurationChanged): New, added so media engine can inform
+ when the movie duration changes and we can post 'durationchanged' event.
+ (WebCore::HTMLMediaElement::mediaPlayerRateChanged): New, added so media engine can inform when
+ the rate changed and we can updated our cached rate. This is useful because we only want to know
+ post periodic 'timeupdate' events when the movie is actually playing, and because we want to know
+ the actual playback rate when it differs from what we tried to set.
+ (WebCore::HTMLMediaElement::mediaPlayerSizeChanged): New, added so media engine can inform when
+ a movie's intrinsic size changes and we can inform the renderer.
+ (WebCore::HTMLMediaElement::potentiallyPlaying): Renamed from activelyPlaying since the spec now
+ uses "actively playing" for this concept. Update logic for new state names and un-comment calls
+ to stoppedDueToErrors() and pausedForUserInteraction() since the spec says those condiditons
+ are part of the answer.
+ (WebCore::HTMLMediaElement::endedPlayback): Update logic for new state names.
+ (WebCore::HTMLMediaElement::stoppedDueToErrors): New, spec says this logic should be part of
+ the determination of "potentially playing".
+ (WebCore::HTMLMediaElement::pausedForUserInteraction): New, placeholder for when (if) user
+ agent supports this spec concept.
+ (WebCore::HTMLMediaElement::updatePlayState): Stop timer used to fire periodic 'timeupdate'
+ events when we pauses the movie. Set the media engine rate before calling play() in case it
+ wasn't set up when the rate was changed.
+ (WebCore::HTMLMediaElement::stopPeriodicTimers): New, stop the progress event and 'timeupate'
+ event timers.
+ (WebCore::HTMLMediaElement::userCancelledLoad): New, logic pulled out of documentWillBecomeInactive
+ and updated for the current spec.
+ (WebCore::HTMLMediaElement::documentWillBecomeInactive): Moved some logic to userCancelledLoad.
+ (WebCore::HTMLMediaElement::documentDidBecomeActive): Update comments.
+ (WebCore::HTMLMediaElement::initialURL): Update for refactoring of code that determines the
+ initial url.
+ * html/HTMLMediaElement.h: Change ReadyState and NetworkState enums to match names in the spec,
+ update for changes in .cpp.
+ (WebCore::HTMLMediaElement::):
+
+ * html/HTMLMediaElement.idl: Update ready state and network state constants for spec changes.
+ defaultPlaybackRate, playbackRate, play(), and pause() no longer raise exceptions.
+
+ * html/HTMLSourceElement.cpp:
+ (WebCore::HTMLSourceElement::insertedIntoDocument): Update for network state name changes.
+
+ * html/HTMLVideoElement.cpp:
+ (WebCore::HTMLVideoElement::updatePosterImage): Update for ready state name changes.
+
+ * html/MediaError.h:
+ (WebCore::MediaError::): add MEDIA_ERR_NONE_SUPPORTED.
+
+ * html/MediaError.idl: add MEDIA_ERR_NONE_SUPPORTED.
+
+ * loader/MediaDocument.cpp:
+ (WebCore::MediaDocument::defaultEventHandler): play() and pause() don't take an exception.
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::NullMediaPlayerPrivate::readyState): Update for newtork state name changes.
+ (WebCore::MediaPlayer::sizeChanged): New, so engine can report intrinsic size changes.
+ (WebCore::MediaPlayer::rateChanged): New, so engine can report rate changes.
+ (WebCore::MediaPlayer::durationChanged): New, so engine can report duration changes.
+ * platform/graphics/MediaPlayer.h: Update NetworkState and ReadyState enum names to match spec
+ states.
+ (WebCore::MediaPlayerClient::mediaPlayerDurationChanged): New.
+ (WebCore::MediaPlayerClient::mediaPlayerRateChanged): New.
+ (WebCore::MediaPlayerClient::mediaPlayerSizeChanged): New.
+ (WebCore::MediaPlayer::):
+
+ * platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:
+ (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): Update for network/ready state name changes.
+ (WebCore::MediaPlayerPrivate::load): Ditto.
+ (WebCore::MediaPlayerPrivate::updateStates): Ditto.
+ (WebCore::MediaPlayerPrivate::loadingFailed): Ditto.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.h: Update for network/ready state name changes.
+ Remove endPointTimer, it is no longer necessary. Add m_enabledTrackCount and m_duration.
+ (WebCore::MediaPlayerPrivate::metaDataAvailable):
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): No more m_endPointTimer or m_endTime. Initialize
+ m_enabledTrackCount and m_duration. Update for network/ready state name changes.
+ (WebCore::MediaPlayerPrivate::load): Update for network/ready state name changes.
+ (WebCore::MediaPlayerPrivate::play): No more m_endPointTimer.
+ (WebCore::MediaPlayerPrivate::pause): Ditto.
+ (WebCore::MediaPlayerPrivate::currentTime): No more m_endTime.
+ (WebCore::MediaPlayerPrivate::seek): Ditto.
+ (WebCore::MediaPlayerPrivate::doSeek): Ditto, plus don't call setRate(0) when the rate is
+ already zero.
+ (WebCore::MediaPlayerPrivate::setEndTime): No more m_endTime.
+ (WebCore::MediaPlayerPrivate::updateStates): Update for network/ready state name changes. Return
+ different errors depending on what causes a failure. Watch for and report duration changes.
+ (WebCore::MediaPlayerPrivate::rateChanged): Report rate changes.
+ (WebCore::MediaPlayerPrivate::sizeChanged): Report size changes.
+ (WebCore::MediaPlayerPrivate::didEnd): No more endpoint timer.
+ (WebCore::MediaPlayerPrivate::setVisible): Update for network/ready state name changes.
+ (WebCore::MediaPlayerPrivate::disableUnsupportedTracks): Don't return number of unsupported
+ tracks, store in m_enabledTrackCount so we can use it to help determine causes of failure.
+
+ * platform/graphics/qt/MediaPlayerPrivatePhonon.cpp:
+ (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): Update for network/ready state name changes.
+ (WebCore::MediaPlayerPrivate::load): Ditto.
+ (WebCore::MediaPlayerPrivate::duration): Ditto.
+ (WebCore::MediaPlayerPrivate::updateStates): Ditto.
+ (WebCore::MediaPlayerPrivate::naturalSize): Ditto.
+
+ * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.cpp:
+ (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): No more m_endPointTimer. Update for
+ network/ready state name changes.
+ (WebCore::MediaPlayerPrivate::load): Update for network/ready state name changes. No more
+ m_endPointTimer.
+ (WebCore::MediaPlayerPrivate::play): No more m_endPointTimer.
+ (WebCore::MediaPlayerPrivate::pause): Ditto.
+ (WebCore::MediaPlayerPrivate::setEndTime): Ditto.
+ (WebCore::MediaPlayerPrivate::updateStates): Update for network/ready state name changes.
+ (WebCore::MediaPlayerPrivate::didEnd): No more m_endPointTimer.
+ * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h:
+
+ * rendering/MediaControlElements.cpp:
+ (WebCore::MediaControlPlayButtonElement::defaultEventHandler): Update for network/ready state
+ name changes.
+ (WebCore::MediaControlSeekButtonElement::defaultEventHandler): Ditto.
+
+2009-03-22 Kevin Ollivier <kevino@theolliviers.com>
+
+ wxGTK build fix. Add missing header.
+
+ * platform/wx/wxcode/gtk/non-kerned-drawing.cpp:
+
+2009-03-22 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=24665
+
+ Image-map code in RenderImage could result in RenderImage::nodeAtPoint()
+ setting HitTestResult::innerNode(), but returning false, which violates
+ hit testing rules. Use a temporary HitTestResult so that we only fill in
+ result when we know we've hit.
+
+ * rendering/RenderImage.cpp:
+ (WebCore::RenderImage::nodeAtPoint):
+
+2009-03-22 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=24743
+
+ Fix hit testing regression from r41840. We need to pass the temporary
+ HitTestResult when testing sublayers, then only copy to 'result' when
+ the layer is known to have been hit.
+
+ Test: fast/layers/zindex-hit-test.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTestLayer):
+
+2009-03-20 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=24733
+
+ Fix hit testing on video controls after full page zoom by fixing wider issue
+ with event->pageX(), pageY() with zooming. pageX and pageY are "fixed" to be
+ invariant under zooming (for JavaScript), so we keep an actual page point around
+ in MouseEvent::absoluteLocation() to avoid the need to factor in zooming everywhere.
+
+ * dom/MouseRelatedEvent.cpp:
+ (WebCore::MouseRelatedEvent::initCoordinates):
+ (WebCore::MouseRelatedEvent::computePageLocation):
+ * dom/MouseRelatedEvent.h:
+ (WebCore::MouseRelatedEvent::absoluteLocation):
+ (WebCore::MouseRelatedEvent::setAbsoluteLocation):
+ Member var, and getter and setter for absoluteLocation.
+ New method, computePageLocation(), to compute the actual page point,
+ and call it when creating and initting mouse-related events.
+
+ * dom/Node.cpp:
+ (WebCore::Node::dispatchMouseEvent):
+ (WebCore::Node::dispatchWheelEvent):
+ Keep non-adjusted pageX and pageY around, and call setAbsoluteLocation()
+ on the event to replace a potentially rounded point.
+
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::defaultEventHandler):
+ Clean up slider handling code.
+
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::listBoxDefaultEventHandler):
+ Add FIXME comment for use of offsetX/offsetY.
+
+ * page/ContextMenuController.cpp:
+ (WebCore::ContextMenuController::handleContextMenuEvent):
+ Use absoluteLocation() when hit testing for context menus.
+
+ * rendering/RenderFrameSet.cpp:
+ (WebCore::RenderFrameSet::userResize):
+ Use absoluteLocation() when resizing frames.
+
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::forwardEvent):
+ Use absoluteLocation() when hit testing media controls.
+
+ * rendering/RenderSlider.cpp:
+ (WebCore::HTMLSliderThumbElement::defaultEventHandler):
+ (WebCore::RenderSlider::mouseEventIsInThumb):
+ Use absoluteLocation() when handling slider events.
+
+ (WebCore::RenderSlider::forwardEvent):
+ Factor some code out of HTMLInputElement::defaultEventHandler().
+
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::forwardEvent):
+ Use absoluteLocation() when hit testing search field buttons, which fixees
+ bugs in the search field with zooming.
+
+2009-03-21 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24727
+ Add V8XMLHttpRequest*.
+
+ * bindings/v8/V8XMLHttpRequestUtilities.cpp: Added.
+ * bindings/v8/V8XMLHttpRequestUtilities.h: Added.
+ * bindings/v8/custom/V8XMLHttpRequestConstructor.cpp: Added.
+ * bindings/v8/custom/V8XMLHttpRequestCustom.cpp: Added.
+ * bindings/v8/custom/V8XMLHttpRequestUploadCustom.cpp: Added.
+
+2009-03-21 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24725
+ Add V8NodeFilter.
+
+ * bindings/v8/V8NodeFilter.cpp: Added.
+ * bindings/v8/V8NodeFilter.h: Added.
+
+2009-03-21 Dan Bernstein <mitz@apple.com>
+
+ Rubber-stamped by Kevin Decker
+
+ - remove some redundant #include statements
+
+ * bindings/js/JSDOMWindowBase.cpp:
+
+2009-03-20 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ - fix <rdar://problem/6574185> REGRESSION (3.2.2-TOT): hang in text drawing code
+
+ * platform/graphics/win/FontCGWin.cpp:
+ (WebCore::drawGDIGlyphs): Changed glyph stroking to fill and stroke each
+ glyph as a separate path, instead of all glyphs as a single path. This
+ matches what CGContextShowGlyphsWithAdvances() does, and has comparable
+ performance.
+
+2009-03-20 Dean Jackson <dino@apple.com>
+
+ Reviewed by Simon Fraser
+
+ Build fix for ENABLE(3D_RENDERING)
+
+ * rendering/RenderObject.h:
+ (WebCore::makeMatrixRenderable):
+
+2009-03-20 Dave Moore <davemoore@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24705
+
+ A bug in the V8 bindings is preventing chromium from setting the href on the
+ location object...any attempt throws a security error, not just for javascript
+ protocol
+
+ * page/Location.idl:
+
+2009-03-20 Craig Schlenter <craig.schlenter@gmail.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24608
+
+ Include stdio.h needed for printf on gcc 4.4.0
+
+ * platform/KURLGoogle.cpp:
+
+2009-03-20 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24577
+
+ Don't let comments at the end of an event handler
+ break the event handler.
+
+ No change in behavior, so no test.
+
+ * bindings/v8/V8LazyEventListener.cpp:
+ (WebCore::V8LazyEventListener::getWrappedListenerFunction):
+
+2009-03-20 Norbert Leser <norbert.leser@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24535
+
+ Fixes missing line terminator character (;) after macro call.
+ It is common practice to add the trailing ";" where macros are substituted
+ and not where they are defined with #define.
+ This change is consistent with other macro declarations across webkit,
+ and it also solves compilation failure with symbian compilers.
+
+ No change in behavior, so no test.
+
+ * bindings/js/JSDOMWindowShell.cpp:
+ * bindings/js/JSEventListener.cpp:
+ * bindings/js/JSImageConstructor.cpp:
+ * bindings/js/JSInspectedObjectWrapper.cpp:
+ * bindings/js/JSInspectorCallbackWrapper.cpp:
+ * bindings/js/JSNamedNodesCollection.cpp:
+ * bindings/js/JSNodeFilterCondition.cpp:
+ * bindings/js/JSOptionConstructor.cpp:
+ * bindings/js/JSQuarantinedObjectWrapper.cpp:
+ * bindings/js/JSRGBColor.cpp:
+ * bindings/js/JSWorkerContextBase.cpp:
+ * bindings/js/JSXMLHttpRequestConstructor.cpp:
+ * bindings/js/JSXSLTProcessorConstructor.cpp:
+ * bindings/scripts/CodeGeneratorJS.pm:
+
+2009-03-20 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Dimitri Glazkov and Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24324
+
+ Make the minimum timer configurable for different platforms.
+
+ * page/DOMTimer.cpp:
+ (WebCore::DOMTimer::DOMTimer):
+ (WebCore::DOMTimer::fired):
+ * page/DOMTimer.h:
+ (WebCore::DOMTimer::minTimerInterval):
+ (WebCore::DOMTimer::setMinTimerInterval):
+
+2009-03-20 Dean McNamee <deanm@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22834
+
+ Make sure to consistently match new/delete and fastMalloc/fastFree.
+
+ * css/CSSSelectorList.cpp:
+ (WebCore::CSSSelectorList::adoptSelectorVector):
+ (WebCore::CSSSelectorList::deleteSelectors):
+
+2009-03-20 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=23739
+ <rdar://problem/6556371> REGRESSION (r36513): iframe isn't sized properly upon load
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::percentHeightDescendants): Added this accessor.
+ * rendering/RenderBlock.h:
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::layoutRows): Extended the check for
+ children that flex to include other descendants with percent height
+ which is relative to the cell.
+
+2009-03-20 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24706
+ Remove ScriptExecutionContext::encoding() since Workers do not need it.
+ WorkerContext::encoding() is simply removed, while Document::encoding()
+ made non-virtual and private. Workers use UTF-8 now except when instructed
+ otherwise by http header. Also updated test.
+
+ * dom/Document.h: Made encoding() non-virtual and private.
+ * dom/ScriptExecutionContext.h: removed encoding().
+
+ * workers/Worker.cpp:
+ (WebCore::Worker::Worker):
+ (WebCore::Worker::notifyFinished):
+ * workers/WorkerContext.cpp: removed encoding() implementation.
+ (WebCore::WorkerContext::WorkerContext):
+ (WebCore::WorkerContext::completeURL):
+ * workers/WorkerContext.h: removed encoding()
+ (WebCore::WorkerContext::create):
+ * workers/WorkerContextProxy.h:
+ * workers/WorkerImportScriptsClient.cpp:
+ (WebCore::WorkerImportScriptsClient::didReceiveData):
+ * workers/WorkerMessagingProxy.cpp:
+ (WebCore::WorkerMessagingProxy::startWorkerContext):
+ * workers/WorkerMessagingProxy.h:
+ * workers/WorkerThread.cpp:
+ (WebCore::WorkerThreadStartupData::create):
+ (WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
+ (WebCore::WorkerThread::create):
+ (WebCore::WorkerThread::WorkerThread):
+ (WebCore::WorkerThread::workerThread):
+ * workers/WorkerThread.h:
+ In all these, removed storing encoding and 'inheriting' it from the parent.
+ Instead, they are all using UTF-8 now.
+
+2009-03-20 Timothy Hatcher <timothy@apple.com>
+
+ Change how threading exceptions are checked so they are reported
+ by what round they were added. That way WebKit can decided the
+ behavior per-round based on linked-on-or-after checks.
+
+ <rdar://problem/6626741&6648478&6635474&6674079>
+
+ Reviewed by Darin Adler.
+
+ * WebCore.base.exp: Export the new symbols.
+ * bindings/objc/DOMAbstractView.mm: Use the new WebCoreThreadViolationCheckRoundOne macro.
+ * bindings/scripts/CodeGeneratorObjC.pm: Ditto.
+ * platform/ThreadCheck.h:
+ * platform/mac/ThreadCheck.mm:
+ (WebCore::readThreadViolationBehaviorFromUserDefaults): Refactor how the default is read.
+ (WebCore::setDefaultThreadViolationBehavior): Take a round argument.
+ (WebCore::reportThreadViolation): Ditto.
+ (WebCoreReportThreadViolation): Ditto.
+
+2009-03-20 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fixed up an out-of-date comment.
+
+ * bindings/js/JSDOMWindowCustom.h:
+ (WebCore::JSDOMWindow::customPut):
+
+2009-03-20 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=20909 REGRESSION
+ (r35318): A press release at pfizer.com does not display correctly
+ - and corresponding -
+ <rdar://problem/6680073>
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::invalidateContainerPrefWidths):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::markContainingBlocksForLayout):
+
+2009-03-20 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Justin Garcia.
+
+ maxDeepOffset is confusing and should be removed
+ https://bugs.webkit.org/show_bug.cgi?id=24586
+
+ Abstract some hard-to-read (but shared) logic into a new renderedAsNonInlineTableOrHR function.
+ Add first/lastDeepEditingPositionForNode Position creation functions
+ and deploy them to places we used to call maxDeepOffset.
+
+ Rename Position::atStart and atEnd to atStartOfTree atEndOfTree
+ Add a new Position::atFirst/atLastEditingPositionForNode() and use these
+ to replace a few more callers for maxDeepOffset()
+
+ Rename maxDeepOffset to lastEditingOffsetForNode (so that we mere mortals have some clue what it does)
+
+ "Editing positions" are confusing because they have one
+ of two behaviors, depending on if the container node is ignored
+ by editing (if editingIgnoresContent(node) returns true) or not.
+ Positions referring to nodes ignored by editing are
+ neighbor-relative (they are before or after the node) where as
+ positions reffering to other nodes are container-relative
+ (they are between two child nodes of the container, identified
+ by the offset() member). I will be fixing this confusion in
+ future patches. These renames hopefully make the current behavior clearer.
+
+ * dom/Position.cpp:
+ (WebCore::Position::previous):
+ (WebCore::Position::next):
+ (WebCore::Position::atFirstEditingPositionForNode):
+ (WebCore::Position::atLastEditingPositionForNode):
+ (WebCore::Position::atStartOfTree):
+ (WebCore::Position::atEndOfTree):
+ (WebCore::Position::previousCharacterPosition):
+ (WebCore::Position::nextCharacterPosition):
+ (WebCore::Position::upstream):
+ (WebCore::Position::isCandidate):
+ (WebCore::firstDeepEditingPositionForNode):
+ (WebCore::lastDeepEditingPositionForNode):
+ * dom/Position.h:
+ * dom/PositionIterator.cpp:
+ (WebCore::PositionIterator::operator Position):
+ (WebCore::PositionIterator::increment):
+ (WebCore::PositionIterator::decrement):
+ (WebCore::PositionIterator::atEnd):
+ (WebCore::PositionIterator::atEndOfNode):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::positionAvoidingSpecialElementBoundary):
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::isTableCellEmpty):
+ (WebCore::DeleteSelectionCommand::removeNode):
+ (WebCore::DeleteSelectionCommand::handleGeneralDelete):
+ * editing/Editor.cpp:
+ (WebCore::Editor::advanceToNextMisspelling):
+ * editing/InsertLineBreakCommand.cpp:
+ (WebCore::InsertLineBreakCommand::doApply):
+ * editing/InsertListCommand.cpp:
+ (WebCore::InsertListCommand::doApply):
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplaceSelectionCommand::positionAtEndOfInsertedContent):
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::forwardDeleteKeyPressed):
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::previous):
+ (WebCore::VisiblePosition::leftVisuallyDistinctCandidate):
+ (WebCore::VisiblePosition::left):
+ (WebCore::VisiblePosition::rightVisuallyDistinctCandidate):
+ (WebCore::VisiblePosition::right):
+ * editing/VisibleSelection.cpp:
+ (WebCore::VisibleSelection::selectionFromContentsOfNode):
+ (WebCore::VisibleSelection::adjustSelectionToAvoidCrossingEditingBoundaries):
+ * editing/htmlediting.cpp:
+ (WebCore::nextVisuallyDistinctCandidate):
+ (WebCore::previousVisuallyDistinctCandidate):
+ (WebCore::firstEditablePositionAfterPositionInRoot):
+ (WebCore::lastEditablePositionBeforePositionInRoot):
+ (WebCore::lastOffsetForEditing):
+ (WebCore::isFirstPositionAfterTable):
+ (WebCore::isLastPositionBeforeTable):
+ (WebCore::positionBeforeNode):
+ (WebCore::positionAfterNode):
+ (WebCore::enclosingEmptyListItem):
+ (WebCore::caretMaxOffset):
+ * editing/htmlediting.h:
+ * editing/visible_units.cpp:
+ (WebCore::renderedAsNonInlineTableOrHR):
+ (WebCore::startOfParagraph):
+ (WebCore::endOfParagraph):
+ (WebCore::startOfEditableContent):
+ (WebCore::endOfEditableContent):
+ * page/AccessibilityObject.cpp:
+ (WebCore::endOfStyleRange):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::visiblePositionRange):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::positionForPoint):
+
+2009-03-20 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24689
+ Add (upstream) V8 bindings for Workers. Mostly style cleaning.
+
+ * bindings/v8/WorkerContextExecutionProxy.cpp: Added.
+ * bindings/v8/WorkerContextExecutionProxy.h: Added.
+ * bindings/v8/WorkerScriptController.cpp: Added.
+ * bindings/v8/WorkerScriptController.h: Added.
+ * bindings/v8/V8Index.h: Added. This is just a wrapper for v8_index.h, like V8Proxy.h
+ * bindings/v8/V8Proxy.h: Added domObjectMap() function that wraps GetDOMObjectMap().
+ * bindings/v8/V8WorkerContextEventListener.cpp:
+ (WebCore::V8WorkerContextEventListener::callListenerFunction): TrackEvent() renamed trackEvent()
+
+2009-03-20 Stephen White <senorblanco@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Fix for LayoutTests/fast/canvas/canvas-text-alignment.html
+ on chromium/skia. The problem was that the gradient matrix
+ for text was being applied twice. Fixed by reverting some of
+ https://bugs.webkit.org/show_bug.cgi?id=23957, so that skiaDrawText
+ is no longer responsible for measuring the text and scaling up
+ the gradient matrix. Instead, the text bounding box is passed
+ in from SVGPaintServerGradient. I didn't make this change for CG,
+ since it uses a different method (the gradient is drawn using the
+ text as a pre-rendered mask).
+ https://bugs.webkit.org/show_bug.cgi?id=24687
+
+ * platform/graphics/skia/SkiaFontWin.cpp:
+ (WebCore::skiaDrawText):
+ * svg/graphics/SVGPaintServerGradient.cpp:
+ (WebCore::SVGPaintServerGradient::setup):
+
+2009-03-20 Xan Lopez <xlopez@igalia.com>
+
+ Rubber-stamped by Holger Freyther.
+
+ There seems to be some rounding error in cairo (or in how we use
+ cairo) with some fonts, like DejaVu Sans Mono, which makes cairo
+ report a height smaller than ascent + descent, which is wrong and
+ confuses WebCore's layout system. Workaround this while we figure
+ out what's going on.
+
+ * platform/graphics/gtk/SimpleFontDataGtk.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ * platform/graphics/gtk/SimpleFontDataPango.cpp:
+ (WebCore::SimpleFontData::platformInit):
+
+2009-03-19 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24122
+ <rdar://problem/6674179>
+ REGRESSION: DOM Range extractContents/deleteContents failures seen on Moxiecode tests
+
+ Test: fast/dom/Range/deleted-range-endpoints.html
+
+ * dom/Range.cpp: (WebCore::Range::processContents): Set the final range in accordance
+ to the specification.
+
+2009-03-19 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6682554> Flash content not being rendered (Shockwave Flash 10.0 r22)
+
+ If calling updateWidget for some reason resulted in another widget being added to m_widgetUpdateSet, then
+ that object would never be updated.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::updateWidgets):
+ Factor the widget updating code out into this method. Return true if the update set is empty.
+
+ (WebCore::FrameView::performPostLayoutTasks):
+ Loop over the update set multiple times until all widgets have been updated or until we reach the cap.
+
+ * page/FrameView.h:
+
+2009-03-18 Timothy Hatcher <timothy@apple.com>
+
+ Make the defered data loading timer honor the Page's scheduled runloop pairs.
+ Introduces a new RunLoopTimer class that has an API mimicking Timer but
+ allows it to be scheduled with one or more SchedulePairs.
+
+ <rdar://problem/6687342> -[WebView scheduleInRunLoop:forMode:] has no affect on timers
+
+ Reviewed by Darin Adler.
+
+ * WebCore.xcodeproj/project.pbxproj: Adds the new RunLoopTimer.{cpp,h} files.
+ * loader/MainResourceLoader.cpp:
+ (WebCore::MainResourceLoader::handleDataLoadNow): Use the MainResourceLoaderTimer typedef.
+ (WebCore::MainResourceLoader::startDataLoadTimer): Added. Start the timer and on
+ Mac platforms also schedule with the Page's SchedulePairs.
+ (WebCore::MainResourceLoader::handleDataLoadSoon): Call startDataLoadTimer().
+ (WebCore::MainResourceLoader::setDefersLoading): Ditto.
+ * loader/MainResourceLoader.h:
+ * platform/cf/RunLoopTimerCF.cpp: Added.
+ (WebCore::RunLoopTimerBase::~RunLoopTimerBase):
+ (WebCore::timerFired):
+ (WebCore::RunLoopTimerBase::start):
+ (WebCore::RunLoopTimerBase::schedule):
+ (WebCore::RunLoopTimerBase::stop):
+ (WebCore::RunLoopTimerBase::isActive):
+ * platform/RunLoopTimer.h: Added.
+ (WebCore::RunLoopTimerBase::RunLoopTimerBase):
+ (WebCore::RunLoopTimerBase::startRepeating):
+ (WebCore::RunLoopTimerBase::startOneShot):
+ (WebCore::RunLoopTimer::RunLoopTimer):
+ (WebCore::RunLoopTimer::fired):
+
+2009-03-19 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24702
+ Upstream miscellaneous bindings changes.
+
+ * bindings/v8/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::execute): Changed to call lower-case evaluate.
+ * bindings/v8/ScriptCallStack.h: Added an extra include.
+
+2009-03-19 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24686
+
+ When hit testing a RenderLayer whose parent lives in a preserves-3D hierarchy,
+ we need to compare the computed z-offset with the depth-test z-offset before
+ deciding that such a RenderLayer was hit. This fixes an issue, tested by the
+ 3d-point-mapping-overlapping.html test, where the child of a transformed element
+ is found by hit testing, even when some other element with greater Z overlaps
+ them both.
+
+ Improved the code by adding a utility method, isHitCandidate(), which computes and tests
+ z-depth when necessary.
+
+ Tests: transforms/3d/point-mapping/3d-point-mapping-coplanar.html
+ transforms/3d/point-mapping/3d-point-mapping-overlapping.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::isHitCandidate):
+ (WebCore::RenderLayer::hitTestLayer):
+
+2009-03-19 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24456
+ Split ColorChromium.cpp into Mac & Windows variants.
+ Remove Chromium Dependency on platform/graphics/mac/ColorMac.mm since we
+ ultimately need to take a different approach. For now, createCGColor()
+ is copied from ColorMac.mm.
+
+ No observable change in behavior, so no test.
+
+ * platform/graphics/chromium/ColorChromium.cpp:
+ (WebCore::focusRingColor):
+ * platform/graphics/chromium/ColorChromiumMac.mm: Added.
+
+2009-03-19 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24675
+ Unforking frontend: add custom InspectorController methods
+ implementation.
+
+ * bindings/v8/custom/V8InspectorControllerCustom.cpp: Added.
+
+2009-03-19 Jay Campan <jcampan@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24625
+ Adding an accessor to the currently selected index in the PopupMenuChromium.
+ This is required for implementing the deletion of an autocomplete entry in Chromium.
+
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupContainer::selectedIndex):
+ * platform/chromium/PopupMenuChromium.h:
+
+2009-03-19 Evan Stade <estade@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24526
+ Improve windows skia text stroking.
+
+ Test: LayoutTests/svg/custom/struct-use-09-b.svg
+
+ * platform/graphics/skia/SkiaFontWin.cpp: Close the path representing
+ each font glyph polygon, rather than only closing the path once per
+ letter. This fixes stroking for letters with multiple polygons, such
+ as 'A' or 'D'.
+ (WebCore::getPathForGlyph):
+ (WebCore::skiaDrawText):
2009-03-19 Simon Hausmann <simon.hausmann@nokia.com>
@@ -402,6 +26669,5954 @@
* plugins/qt/PluginViewQt.cpp:
(WebCore::PluginView::init): Ditto.
+2009-03-19 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 24596: ASSERT in JSC::PropertySlot::slotBase @ iGoogle homepage
+ <https://bugs.webkit.org/show_bug.cgi?id=24596>
+ <rdar://problem/6686493>
+
+ JSDOMWindow::customGetOwnPropertySlot() does an access check after calling
+ JSGlobalObject::getOwnPropertySlot(). This causes the PropertySlot to be
+ set twice, once to the value that is illegal to access, and then to undefined
+ This causes an assertion failure in property access caching code.
+
+ The fix is to do the access check before calling JSGlobalObject::getOwnPropertySlot().
+
+ * bindings/js/JSDOMWindowCustom.h:
+ (WebCore::JSDOMWindow::customGetOwnPropertySlot):
+
+2009-03-18 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24676
+ Simple cross-origin requests shouldn't dispatch upload progress events
+
+ Test: http/tests/xmlhttprequest/simple-cross-origin-progress-events.html
+
+ * loader/CrossOriginAccessControl.cpp: (WebCore::passesAccessControlCheck): Added a comment
+ explaining the somewhat unexpected behavior of this function.
+
+ * xml/XMLHttpRequestUpload.cpp: (WebCore::XMLHttpRequestUpload::hasListeners):
+ * xml/XMLHttpRequestUpload.h:
+ Report whether there are any event listeners registered.
+
+ * xml/XMLHttpRequest.h: Added m_uploadEventsAllowed.
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::createRequest): Set m_uploadEventsAllowed flag.
+ (WebCore::XMLHttpRequest::makeSameOriginRequest): Ditto.
+ (WebCore::XMLHttpRequest::makeCrossOriginAccessRequest): Ditto.
+ (WebCore::XMLHttpRequest::makeSimpleCrossOriginAccessRequest): Set request body - it can be
+ non-empty for POST requests.
+ (WebCore::XMLHttpRequest::makeCrossOriginAccessRequestWithPreflight): Set m_uploadEventsAllowed flag.
+ (WebCore::XMLHttpRequest::handleAsynchronousPreflightResult): Ditto.
+ (WebCore::XMLHttpRequest::abort): Only dispatch upload progress events if allowed.
+ (WebCore::XMLHttpRequest::networkError): Ditto.
+ (WebCore::XMLHttpRequest::abortError): Ditto.
+ (WebCore::XMLHttpRequest::didSendData): Ditto.
+
+2009-03-18 Marc-Antoine Ruel <maruel@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24398
+ Fix a crash when loading a svg file in Chromium's test_shell and
+ then reloading the page.
+
+ * history/BackForwardListChromium.cpp:
+ (WebCore::BackForwardList::BackForwardList):
+ (WebCore::BackForwardList::close):
+
+2009-03-18 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Fix for <rdar://problem/6685235>
+ <video> element poster cannot be set dynamically if not originally set up in HTML
+
+ Allocate the media engine immediately so the plug-in proxy is available for
+ scripting right away.
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::MediaPlayer::MediaPlayer):
+
+2009-03-18 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Fix for <rdar://problem/6636747> REGRESSION (Safari 4 PB-r41326):
+ Popup menu appears at the wrong location on page at http://
+ www.signonsandiego.com/
+
+ This was a regression from http://trac.webkit.org/changeset/40769,
+ which changed the base class of RenderInline to
+ RenderBoxModelObject rather than RenderBox.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::offsetParent): offsetParent should return a
+ RenderBoxModelObject rather than just a RenderBox, which is more
+ restrictive.
+
+2009-03-18 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6504776>
+ CrashTracer: [USER] 188 crashes in Safari at com.apple.WebCore • WTF::HashTableIterator<WTF::RefPtr<WebCore::ResourceLoader>, ...
+
+ Return early in case calling the client ends up spinning the run loop and completing/cancelling the load.
+
+ * loader/NetscapePlugInStreamLoader.cpp:
+ (WebCore::NetscapePlugInStreamLoader::didCancel):
+
+2009-03-18 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24664
+ Upstreaming v8 collection.h
+
+ No change in behavior, so no test.
+
+ * bindings/v8/V8Collection.h: Added.
+
+2009-03-18 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Simon Fraser.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23966
+ REGRESSION: Custom arrow navigation functionality doesn't work at dropular.net
+ <rdar://problem/6589657>
+
+ Match the CSSOM spec for getClientRects and getBoundingClientRect by
+ returning a 0x0 rect at the correct top/left position for empty inline
+ boxes.
+
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::absoluteRects):
+ (WebCore::RenderInline::absoluteQuads):
+
+2009-03-18 David Levin <levin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Match the changes done for windows in the bug
+ https://bugs.webkit.org/show_bug.cgi?id=24530.
+
+ No change in behavior, so no test.
+
+ * rendering/RenderThemeChromiumLinux.cpp:
+ (WebCore::RenderThemeChromiumLinux::extraDefaultStyleSheet):
+
+2009-03-18 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ Added support for SVG's stroked texts to Qt.
+
+ [Qt] SVGs stroked text support missing
+ https://bugs.webkit.org/show_bug.cgi?id=24262
+
+ * platform/graphics/qt/FontQt.cpp:
+ (WebCore::Font::drawComplexText):
+
+2009-03-18 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Fix fast/encoding/char-decoding.html with recent ICU.
+
+ * platform/text/TextCodecICU.cpp:
+ (WebCore::TextCodecICU::decode): Look for gb18030 case-insensitively,
+ as newer versions of ICU use GB18030 as the canonical name.
+
+2009-03-17 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24662
+ Chromium build fixes.
+
+ Bug https://bugs.webkit.org/show_bug.cgi?id=24663 tracks
+ the invalid implementation of ScriptCallStack.
+
+ No change in behavior, so no test.
+
+ * bindings/v8/ScriptCallStack.h:
+ (WebCore::ScriptCallStack::state):
+ * platform/graphics/skia/PlatformContextSkia.cpp:
+ (PlatformContextSkia::drawRect):
+
+2009-03-17 David Carson <dacarson@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Add anchor elements to the simple style sheet so that applications that
+ are using WebKit just for simple text and links will also take advantage
+ of the fast path.
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::elementCanUseSimpleDefaultStyle):
+
+2009-03-17 Darin Adler <darin@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ <rdar://problem/6687005> Need support for new move-left/right selectors.
+
+ * editing/EditorCommand.cpp:
+ (WebCore::executeMoveToLeftEndOfLine): Added.
+ (WebCore::executeMoveToLeftEndOfLineAndModifySelection): Added.
+ (WebCore::executeMoveToRightEndOfLine): Added.
+ (WebCore::executeMoveToRightEndOfLineAndModifySelection): Added.
+ Added command entries for the functions above.
+
+2009-03-17 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Adele Peterson.
+
+ Put the padding inside scrollbars on textareas.
+ https://bugs.webkit.org/show_bug.cgi?id=24370
+
+ Put the padding inside the scrollbars on textareas. This is done by moving the
+ overflow from the shadowNode to the RenderTextControlMultiline. As a result,
+ all of the scroll handing methods that RenderTextControl overrides can be moved
+ down into RenderTextControlSingleLine since RenderTextControlMultiline can now
+ just use RenderBlock's versions. This also allows RenderTextControlMultiLine to
+ no longer need a custom layout method since the shadowNode can now just size
+ like a regular DIV.
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::adjustRenderStyle):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::styleDidChange):
+ (WebCore::RenderTextControl::selection):
+ (WebCore::RenderTextControl::calcHeight):
+ (WebCore::RenderTextControl::hitInnerTextElement):
+ * rendering/RenderTextControl.h:
+ * rendering/RenderTextControlMultiLine.cpp:
+ (WebCore::RenderTextControlMultiLine::nodeAtPoint):
+ (WebCore::RenderTextControlMultiLine::createInnerTextStyle):
+ * rendering/RenderTextControlMultiLine.h:
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::styleDidChange):
+ (WebCore::RenderTextControlSingleLine::autoscroll):
+ (WebCore::RenderTextControlSingleLine::scrollWidth):
+ (WebCore::RenderTextControlSingleLine::scrollHeight):
+ (WebCore::RenderTextControlSingleLine::scrollLeft):
+ (WebCore::RenderTextControlSingleLine::scrollTop):
+ (WebCore::RenderTextControlSingleLine::setScrollLeft):
+ (WebCore::RenderTextControlSingleLine::setScrollTop):
+ (WebCore::RenderTextControlSingleLine::scroll):
+ * rendering/RenderTextControlSingleLine.h:
+ * rendering/TextControlInnerElements.cpp:
+ (WebCore::RenderTextControlInnerBlock::RenderTextControlInnerBlock):
+ (WebCore::RenderTextControlInnerBlock::positionForPoint):
+ (WebCore::TextControlInnerTextElement::createRenderer):
+
+2009-03-17 Darin Adler <darin@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Bug 24517: REGRESSION (r41552): innerHTML does an updateLayout -- unneeded and can be slow
+ https://bugs.webkit.org/show_bug.cgi?id=24517
+
+ * editing/DeleteButtonController.cpp:
+ (WebCore::DeleteButtonController::enable): Added a call to updateRendering, since
+ determining whether to display the delete button involves style and updateRendering
+ also updates style (should probably be named updateStyle, in fact). Not needed to fix
+ this bug, but would have prevented the crash that led to this bug in the first place.
+
+ * editing/EditCommand.cpp:
+ (WebCore::EditCommand::EditCommand): Get rid of unneeded null check. All frames have
+ delete button controllers.
+ * editing/Editor.cpp:
+ (WebCore::Editor::rangeForPoint): Ditto.
+
+ * editing/markup.cpp:
+ (WebCore::appendStartMarkup): Changed a "&" to a "&&" so that generating markup
+ doesn't depend on renderers at all when the convertBlocksToInlines boolean is false.
+ This allows us to omit the call to updateLayoutIgnorePendingStylesheets in the
+ createMarkup function that's called by innerHTML.
+ (WebCore::MarkupAccumulator::appendMarkup): Turned this into a class with a member
+ function. Added a feature where the accumulator will skip a node. Moved arguments
+ that don't change during recursion into an object. This function still is a bit
+ inefficient, since it creates a new HashMap at every level as it recurses, but for now
+ I did not tackle that. Also replaced the onlyIncludeChildren boolean with EChildrenOnly
+ for consistency and clarity.
+ (WebCore::createMarkup): Removed the call to updateLayoutIgnorePendingStylesheets.
+ Instead of calling disable/enable on the delete button controller's container element,
+ pass it in to the markup accumulator as a node to skip.
+
+2009-03-17 Scott Violet <sky@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24651
+ Skia does not always render text fill/stroke pattern/gradient/color correctly
+
+ Changes Skia's font rendering to only render gradient/pattern if current
+ color space indicates the gradient/pattern should be used.
+ This is covered by LayoutTests/fast/canvas/canvas-text-alignment.html .
+
+ * platform/graphics/GraphicsContext.cpp:
+ (WebCore::GraphicsContext::strokeColorSpace):
+ (WebCore::GraphicsContext::fillColorSpace):
+ * platform/graphics/GraphicsContext.h:
+ (WebCore::):
+ * platform/graphics/GraphicsContextPrivate.h:
+ * platform/graphics/skia/SkiaFontWin.cpp:
+ (WebCore::paintSkiaText):
+
+2009-03-17 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=24655
+ <rdar://problem/6633727> Hitting return at the end of a line with an anchor jumps me to the bottom of the message
+
+ Test: editing/inserting/6633727.html
+
+ This changes does a few things:
+ 1) Renames pos to insertionPosition.
+ 2) Eliminates "startNode". It doesn't work well to consider the node separately from the insertionPosition.
+ The insertionPosition gets updated at various times, and it seems likely that startNode can get out of sync.
+ 3) Before building up a list of ancestors to move around when we insert the new block, make sure to use the deepest
+ representation of the insertionPosition, so all ancestor nodes are correctly included.
+
+ * editing/InsertParagraphSeparatorCommand.cpp: (WebCore::InsertParagraphSeparatorCommand::doApply):
+
+2009-03-17 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Kevin Ollivier.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24115
+ Introduce platform independent stubs for plugins.
+
+ * plugins/PluginDataNone.cpp: Copied from WebCore/plugins/wx/PluginDataWx.cpp.
+ * plugins/PluginPackageNone.cpp: Copied from WebCore/plugins/wx/PluginPackageWx.cpp.
+ * plugins/PluginViewNone.cpp: Copied from WebCore/plugins/wx/PluginViewWx.cpp.
+ * plugins/wx/PluginDataWx.cpp: Removed.
+ * plugins/wx/PluginPackageWx.cpp: Removed.
+ * plugins/wx/PluginViewWx.cpp: Removed.
+ * webcore-wx.bkl:
+
+2009-03-17 Darin Adler <darin@apple.com>
+
+ Earlier version reviewed by Adele Peterson.
+
+ Bug 24304: REGRESSION (r39864): Hitting the space bar to select an <input type=radio>
+ or push an <input type=button> or <button> causes the page to scroll down.
+
+ Would be best to add a regression test for Windows eventually; tested that this has
+ no effect on the Mac OS X platform.
+
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::defaultEventHandler): Added FIXMEs and tweaked formatting.
+ Use the code that calls the base class's defaultEventHandler early only in the cases
+ where it's needed: keydown and keypress events in text fields. In other cases, do the
+ more typical thing and call the default handler only at the end of the function.
+ This function already had code to make sure the keypress event for space never gets
+ through, but it was running too late since the scrolling code was moved into the
+ base class default event handler.
+
+2009-03-17 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24632
+
+ Fix repaint issues when composited layers come and go (only applies
+ when ACCELERATED_COMPOSITING is turned on).
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::RenderLayer):
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::mustOverlayCompositedLayers):
+ (WebCore::RenderLayer::setMustOverlayCompositedLayers):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::RenderLayerBacking):
+ * rendering/RenderLayerBacking.h:
+
+ Move what used to be the 'forceCompositingLayer' flag from RenderLayerBacking
+ to RenderLayer, because we don't want the side-effects of creating RenderLayerBacking
+ when setting this flag.
+
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::updateLayerCompositingState):
+ When a RenderLayer flips into or out of compositing mode, compute a repaint
+ rect relative to the containerForRepaint, and repaint it.
+
+ (WebCore::RenderLayerCompositor::computeCompositingRequirements):
+ Call layer->setMustOverlayCompositedLayers() rather than setForcedCompositingLayer().
+
+ (WebCore::RenderLayerCompositor::needsToBeComposited):
+ (WebCore::RenderLayerCompositor::requiresCompositingLayer):
+ (WebCore::RenderLayerCompositor::requiresCompositingForTransform):
+ (WebCore::RenderLayerCompositor::requiresCompositingForAnimation):
+ * rendering/RenderLayerCompositor.h:
+
+ Rename requiresCompositingLayerForTransform() to requiresCompositingForTransform()
+ and make it a class static method to match requiresCompositingForAnimation(). Both
+ now take RenderObjects, rathern than RenderLayers.
+
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::hasTransformRelatedProperty):
+ Minor tidyup using convenience methods added in an earlier commit.
+
+2009-03-17 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=24396
+
+ * config.h:
+ Add WTF_USE_ACCELERATED_COMPOSITING, defined to 0 for now, and add some
+ comments to make the #ifdefs more readable.
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::computedTransform):
+ Add a comment to mention that we don't flatten the matrix.
+
+ * css/MediaQueryEvaluator.cpp:
+ (WebCore::transform_3dMediaFeatureEval):
+ Have the 'transform-3d' media query evaluate to 'true' if 3d-rendering
+ is supported.
+
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::GraphicsLayerCA::animateTransform):
+ No need for the #ifdef here. If we don't support 3d, we will have already flattened
+ the matrix.
+
+ * platform/graphics/transforms/TransformationMatrix.cpp:
+ (WebCore::TransformationMatrix::makeAffine):
+ * platform/graphics/transforms/TransformationMatrix.h:
+ New method to convert the matrix to an affine matrix by throwing a way the non-affine
+ parts.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateTransform):
+ (WebCore::RenderLayer::currentTransform):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateLayerTransform):
+ If 3d rendering is not supported, convert the matrix to an affine matrix
+ which can be rendered, and used for hit testing.
+
+ * rendering/RenderLayerCompositor.cpp:
+ Change the name of the exported symbol that webkitdirs.pm uses to know if
+ 3d rendering is supported. There is no other 3d-rendering-specific symbol we can sniff.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::transformFromContainer):
+ Only take perspective into account if 3d rendering is supported.
+
+ * rendering/RenderObject.h:
+ (WebCore::makeMatrixRenderable):
+ Utility method that flattens a matrix if 3d rendering is not supported.
+
+2009-03-17 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix. Fix typo after mouse wheel changes.
+
+ * platform/wx/MouseWheelEventWx.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+
+2009-03-17 Darin Adler <darin@apple.com>
+
+ * inspector/ConsoleMessage.cpp:
+ (WebCore::ConsoleMessage::isEqual): Fix build, remove stray parenthesis.
+
+2009-03-17 Darin Adler <darin@apple.com>
+
+ Fix crash seen right away when running run-webkit-tests.
+
+ * inspector/ConsoleMessage.cpp:
+ (WebCore::ConsoleMessage::isEqual): Restore assertion to its behavior pre-refactoring.
+ Also tweaked formatting a bit.
+
+2009-03-17 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ HTMLSelectElement::add() doesn't look at exception code returned from insertBefore(), so
+ it doesn't need to zero it out before calling.
+
+ * html/HTMLSelectElement.cpp: (WebCore::HTMLSelectElement::add): Removed "ec = 0" line.
+
+2009-03-17 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Adam Roben.
+
+ - WebCore part of adding a mechanism for controlling the caching of
+ responses through WebFrameLoaderClient
+
+ Mac already has such a mechanism, and this adds one for CFNetwork ports.
+
+ * WebCore.vcproj/WebCore.vcproj: Added EmptyClients.h
+ and ResourceLoaderCFNet.cpp.
+
+ * loader/EmptyClients.h:
+ (WebCore::EmptyFrameLoaderClient::shouldCacheResponse): Added an
+ implementation that always returns true.
+
+ * loader/FrameLoaderClient.h: Declared shouldCacheResponse().
+
+ * loader/ResourceLoader.h: Ditto.
+
+ * loader/cf/ResourceLoaderCFNet.cpp: Added.
+ (WebCore::ResourceLoader::shouldCacheResponse): Added. Calls through to
+ FrameLoaderClient::shouldCacheResponse().
+
+ * platform/network/ResourceHandleClient.h:
+ (WebCore::ResourceHandleClient::shouldCacheResponse): Added an
+ implementation that always returns true.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::willCacheResponse): Added a call to
+ ResourceHandleClient::shouldCacheResponse(). If the client returns
+ false, return 0, which will prevent CFNetwork from caching the response.
+
+2009-03-17 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=13287
+ Cannot change SELECT to a dynamically created option
+
+ Tests: fast/forms/add-and-remove-option.html
+ fast/forms/add-remove-option-modification-event.html
+ fast/forms/add-selected-option.html
+ fast/forms/select-cache-desynchronization.html
+
+ * dom/ContainerNode.cpp:
+ (WebCore::dispatchChildInsertionEvents): Increment DOM tree version. This will happen when
+ dispatching DOMSubtreeModified again, but the version should be incremented for event
+ listeners to have an up to date view of the DOM.
+ (WebCore::dispatchChildRemovalEvents): Ditto.
+
+ * html/HTMLOptionElement.cpp: (WebCore::HTMLOptionElement::insertedIntoTree):
+ Make sure that the select element knows about its new selected option.
+
+ * html/HTMLOptionElement.h: Use insertedIntoTree() instead of insertedIntoDocument(),
+ because DOM also needs to be updated for forms that are not in document yet. Similar
+ problems exist for node removing, but removedFromTree() is called at a wrong time, so
+ those problems cannot be fixed without deeper refactoring.
+
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::setRecalcListItems): Reset m_activeSelectionAnchorIndex - it
+ doesn't make sense to keep the anchor after programmatically changing the selection, and
+ keeping it was causing a failure in fast/forms/listbox-selection.html.
+
+ * html/HTMLSelectElement.h: Removed overrides for ContainerNode methods that only called
+ base class versions.
+
+2009-03-17 Steve Falkenburg <sfalken@apple.com>
+
+ <rdar://problem/6690324> Accessing FTP sites reads unallocated memory, can result in garbled entries or crashes
+
+ Reviewed by Darin Adler.
+
+ * loader/FTPDirectoryDocument.cpp:
+ (WebCore::FTPDirectoryTokenizer::parseAndAppendOneLine): Assign CString to a local while we hold pointers into it.
+
+2009-03-16 David Hyatt <hyatt@apple.com>
+
+ <rdar://problem/6648411> REGRESSION: Layout of page is wrong at http://www.popcap.com/
+
+ Make sure that the initial shouldPaint check that looks at enclosingLayers properly skips over
+ layers that don't paint themselves. This is done by adding a new enclosingSelfPaintingLayer method
+ so that RenderObjects can walk up the enclosing layer chain and skip any layers that don't paint
+ themselves.
+
+ Reviewed by Darin Adler.
+
+ Added fast/block/float/overlapping-floats-with-overflow-hidden.html
+
+ * WebCore.base.exp:
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::addOverhangingFloats):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::enclosingSelfPaintingLayer):
+ * rendering/RenderObject.h:
+
+2009-03-17 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24592
+ [GTK] Crash in FcPatternHash
+
+ Style fixes.
+
+ * platform/graphics/gtk/FontPlatformDataGtk.cpp:
+ (WebCore::FontPlatformData::operator=):
+ * platform/graphics/gtk/FontPlatformDataPango.cpp:
+
+2009-03-17 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24592
+ [GTK] Crash in FcPatternHash
+
+ Sanitize memory management in pango fonts.
+
+ Release memory allocated by FontPlatformDataPango in its own
+ destructor instead of doing it from other classes, and add copy
+ constructor and '=' operator to be able to track referenced
+ objects properly.
+
+ * platform/graphics/gtk/FontPlatformDataPango.cpp:
+ (WebCore::FontPlatformData::~FontPlatformData):
+ (WebCore::FontPlatformData::operator=):
+ (WebCore::FontPlatformData::FontPlatformData):
+ * platform/graphics/gtk/SimpleFontDataPango.cpp:
+
+2009-03-17 Darin Adler <darin@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 24624: Crash in imageLoadEventTimerFired after adoptNode used on <img>,
+ seen with inspector, which uses adoptNode
+ https://bugs.webkit.org/show_bug.cgi?id=24624
+ rdar://problem/6422850
+
+ Test: fast/dom/HTMLImageElement/image-load-cross-document.html
+
+ * dom/Document.cpp:
+ (WebCore::Document::Document): Removed m_imageLoadEventTimer.
+ (WebCore::Document::detach): Removed m_imageLoadEventDispatchSoonList and
+ m_imageLoadEventDispatchingList.
+ (WebCore::Document::implicitClose): Called ImageLoader::dispatchPendingLoadEvents
+ instead of dispatchImageLoadEventsNow.
+
+ * dom/Document.h: Removed ImageLoader, dispatchImageLoadEventSoon,
+ dispatchImageLoadEventsNow, removeImage, m_imageLoadEventDispatchSoonList,
+ m_imageLoadEventDispatchingList, m_imageLoadEventTimer, and imageLoadEventTimerFired.
+
+ * loader/ImageLoader.cpp:
+ (WebCore::loadEventSender): Added. Returns the single global ImageLoadEventSender
+ object used privately as the target of the load event timer.
+ (WebCore::ImageLoader::~ImageLoader): Call ImageLoadEventSender::cancelLoadEvent
+ rather than Document::removeImage.
+ (WebCore::ImageLoader::setImage): Use m_element directly, not element().
+ (WebCore::ImageLoader::updateFromElement): Ditto. Also name the local variable
+ document instead of doc.
+ (WebCore::ImageLoader::notifyFinished): Call ImageLoadEventSender::dispatchLoadEventSoon
+ rather than Document::dispatchImageLoadEventSoon.
+ (WebCore::ImageLoader::dispatchPendingLoadEvent): Added. Handles the common logic
+ about when load events can be dispatched so that dispatchLoadEvent only has to
+ have the specific part for each derived class. This includes a check that the
+ document is attached, which used to be handled by having documents empty out the
+ image load event vectors in the detach function.
+ (WebCore::ImageLoader::dispatchPendingLoadEvents): Added. Calls the appropriate
+ function on the ImageLoadEventSender, which avoids the need to have that class be
+ public in the ImageLoader header.
+ (WebCore::ImageLoadEventSender::ImageLoadEventSender): Added. Has the code that
+ was previously in the Document constructor.
+ (WebCore::ImageLoadEventSender::dispatchLoadEventSoon): Added. Has the code that
+ was previously in Document::dispatchImageLoadEventSoon.
+ (WebCore::ImageLoadEventSender::cancelLoadEvent): Added. Has the code that was
+ previously in Document::removeImage.
+ (WebCore::ImageLoadEventSender::dispatchPendingLoadEvents): Added. Has the code
+ that was previously in Document::dispatchImageLoadEventsNow.
+ (WebCore::ImageLoadEventSender::timerFired): Added. Calls dispatchPendingLoadEvents.
+
+ * loader/ImageLoader.h: Improved comments. Made the virtual functions private
+ or protected rather than public. Added static dispatchPendingLoadEvents function
+ for use by Document and private dispatchPendingLoadEvent function for use by
+ ImageLoadEventSender. Made setLoadingImage private and eliminated
+ setHaveFiredLoadEvent since that can all be done inside the class without any
+ member functions.
+
+ * html/HTMLImageLoader.cpp:
+ (WebCore::HTMLImageLoader::dispatchLoadEvent): Removed logic to check whether a
+ load event already fired and whether image() is 0. These are now both base class
+ responsibilities.
+ * svg/SVGImageLoader.cpp:
+ (WebCore::SVGImageLoader::dispatchLoadEvent): Ditto.
+ * wml/WMLImageLoader.cpp:
+ (WebCore::WMLImageLoader::dispatchLoadEvent): Ditto.
+
+2009-03-17 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24623
+ Refactor ConsoleMessage to use ScriptFuncitonCall and eliminate JSC
+ dependencies.
+
+ * bindings/js/ScriptFunctionCall.cpp:
+ (WebCore::ScriptFunctionCall::appendArgument): Added uint and ScriptString-taking methods.
+ * bindings/js/ScriptFunctionCall.h:
+ * bindings/js/ScriptObjectQuarantine.cpp:
+ (WebCore::quarantineValue): Added generic ScriptValue quarantine helper.
+ * bindings/js/ScriptObjectQuarantine.h:
+ * bindings/js/ScriptValue.cpp:
+ (WebCore::ScriptValue::isEqual): Added.
+ * bindings/js/ScriptValue.h:
+ * inspector/ConsoleMessage.cpp:
+ (WebCore::ConsoleMessage::ConsoleMessage):
+ (WebCore::ConsoleMessage::addToConsole): Added.
+ (WebCore::ConsoleMessage::isEqual): Changed to use ScriptValue::isEqual.
+ * inspector/ConsoleMessage.h:
+ (WebCore::ConsoleMessage::incrementCount): Added.
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::addConsoleMessage): Changed to use ConsoleMessage::addToConsole.
+ (WebCore::InspectorController::populateScriptObjects): Ditto.
+ * inspector/InspectorController.h:
+
+2009-03-17 Kevin Ollivier <kevino@theolliviers.com>
+
+ Reviewed by Mark Rowe.
+
+ Get BUILDING_ON_* defines from Platform.h.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24630
+
+ * WebCorePrefix.h:
+
+2009-03-16 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24592
+ [GTK] Crash in FcPatternHash
+
+ Sanitize memory management in gtk fonts.
+
+ Release memory allocated by FontPlatformDataGtk in its own
+ destructor instead of doing it from other classes, and add copy
+ constructor and '=' operator to be able to track referenced
+ objects properly.
+
+ * platform/graphics/gtk/FontPlatformData.h:
+ * platform/graphics/gtk/FontPlatformDataGtk.cpp:
+ (WebCore::FontPlatformData::operator=):
+ (WebCore::FontPlatformData::FontPlatformData):
+ (WebCore::FontPlatformData::~FontPlatformData):
+ * platform/graphics/gtk/SimpleFontDataGtk.cpp:
+ (WebCore::SimpleFontData::platformDestroy):
+
+2009-03-17 Ariya Hidayat <ariya.hidayat@nokia.com>
+
+ Build fix for Qt < 4.5.
+
+ As reported by Yael Aharon <yael.aharon@nokia.com>
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContext::drawLine):
+
+2009-03-17 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24614
+ Access control checks are different in cached and uncached cases
+
+ Test: http/tests/xmlhttprequest/access-control-basic-non-simple-deny-cached.html
+
+ * loader/CrossOriginAccessControl.cpp:
+ (WebCore::isOnAccessControlSimpleRequestMethodWhitelist): Factored out simple method
+ check for use in both cached and uncached cases. In cached case, an old definition that
+ omitted HEAD was still used.
+ (WebCore::isOnAccessControlSimpleRequestHeaderWhitelist): Check that content type has an
+ allowed value. This is needed in all call sites. Also changed to compare MIME type, not
+ content type.
+ (WebCore::isSimpleCrossOriginAccessRequest): Use the above methods.
+
+ * loader/CrossOriginAccessControl.h: Expose isOnAccessControlSimpleRequestMethodWhitelist.
+
+ * loader/CrossOriginPreflightResultCache.cpp:
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginMethod):
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginHeaders):
+ Use the new checks for simple method and header.
+
+2009-03-16 Gustavo Noronha Silva <gns@gnome.org> and Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24638
+ [GTK] HTML5 media tags do not work
+
+ Add a repaint-requested signal to the video sink, and use it to
+ call MediaPlayerPrivate::repaint, so that the video actually
+ plays.
+
+ * platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:
+ (WebCore::mediaPlayerPrivateRepaintCallback):
+ (WebCore::MediaPlayerPrivate::createGSTPlayBin):
+ * platform/graphics/gtk/VideoSinkGStreamer.cpp:
+ (webkit_video_sink_idle_func):
+ (webkit_video_sink_render):
+ (webkit_video_sink_class_init):
+
+2009-03-16 Gustavo Noronha Silva <gns@gnome.org> and Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24638
+ [GTK] HTML5 media tags do not work
+
+ Work-around the fact that gst_element_query_duration returns true even
+ though it is unable to figure out the duration when in stream (push)
+ mode.
+
+ * platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:
+ (WebCore::MediaPlayerPrivate::duration):
+
+2009-03-16 Darin Adler <darin@apple.com>
+
+ Reviewed by Kevin Decker.
+
+ <rdar://problem/6642742> Top Sites malfunction when switching text zoom mode
+
+ * page/Frame.cpp:
+ (WebCore::Frame::setNeedsReapplyStyles): Don’t do anything if the frame is
+ currently showing a non-HTML view.
+
+2009-03-16 Darin Adler <darin@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ Bug 24629: moving forward or backward a paragraph fails at edge of document
+ https://bugs.webkit.org/show_bug.cgi?id=24629
+ rdar://problem/6544413
+
+ Test: editing/selection/move-paragraph-document-edges.html
+
+ * editing/visible_units.cpp:
+ (WebCore::previousParagraphPosition): Use the last result from
+ previousLinePosition rather than going all the way back to what was originally
+ passed in when we hit exception cases like null or not moving. This correctly
+ inherits the behavior of previousLinePosition when we are in a paragraph at the
+ edge of a document.
+ (WebCore::nextParagraphPosition): Ditto.
+
+2009-03-16 Darin Adler <darin@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ Bug 24619: RenderObject::selectionStartEnd does not need to be a virtual function
+ https://bugs.webkit.org/show_bug.cgi?id=24619
+
+ * rendering/RenderObject.h: Remove virtual keyword from selectionStartEnd declaration.
+ * rendering/RenderView.h: Ditto.
+
+2009-03-16 Peter Kasting <pkasting@google.com>
+
+ Reviewed by David Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24368
+ DOM scroll events should be based off the actual number of wheel
+ ticks, not off the number of lines scrolled. This matches IE.
+
+ * dom/Node.cpp:
+ (WebCore::Node::dispatchWheelEvent):
+ * dom/WheelEvent.cpp:
+ (WebCore::WheelEvent::WheelEvent):
+ * dom/WheelEvent.h:
+ (WebCore::WheelEvent::create):
+ * platform/PlatformWheelEvent.h:
+ (WebCore::PlatformWheelEvent::wheelTicksX):
+ (WebCore::PlatformWheelEvent::wheelTicksY):
+ * platform/gtk/WheelEventGtk.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/mac/WheelEventMac.mm:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/qt/WheelEventQt.cpp:
+ * platform/win/WheelEventWin.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/wx/MouseWheelEventWx.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+
+2009-03-16 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Eric Seidel
+
+ Clean up a few issues in the Animation code:
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::AnimationBase::updateStateMachine):
+ Whitespace
+
+ (WebCore::AnimationBase::willNeedService):
+ Don't round to float, use std::max
+
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::startTimeResponse):
+ Fix erroneously copied line to null out m_lastResponseWaiter.
+
+2009-03-12 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Eric Seidel
+
+ https://bugs.webkit.org/show_bug.cgi?id=13632
+
+ Overflow scrolling needs to account for the bottom/right padding on the object itself as well
+ as for bottom/right margins on children.
+
+ Existing tests cover this.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::lowestPosition):
+ (WebCore::RenderBlock::rightmostPosition):
+
+2009-03-16 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Fix for <rdar://problem/6320555>
+ Add an upper limit for setting HTMLSelectElement.length.
+
+ Test: fast/forms/select-max-length.html
+
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::setOption):
+ (WebCore::HTMLSelectElement::setLength):
+
+2009-03-16 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ <rdar://problem/6686721> Media document crash in 64-bit WebKit
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::createQTMovieView): QTMovieContentViewClass is only used when
+ rendering inline with old versions of QuickTime, so don't look for it when we are in a
+ media document.
+
+2009-03-16 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24590
+ Refactor InspectorDOMStorageResource to use ScriptFunctionCall.
+
+ * bindings/js/ScriptFunctionCall.cpp:
+ (WebCore::ScriptFunctionCall::appendArgument): Added method for bool argument.
+ * bindings/js/ScriptFunctionCall.h: Ditto, also cleaned up.
+ * bindings/js/ScriptObjectQuarantine.cpp:
+ (WebCore::getQuarantinedScriptObject): Added Storage helper.
+ * bindings/js/ScriptObjectQuarantine.h: Ditto.
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::populateScriptObjects): Changed to use bind method.
+ (WebCore::InspectorController::resetScriptObjects): Changed to use unbind method.
+ (WebCore::InspectorController::didUseDOMStorage): Changed to use isSameHostAndType and bind methods.
+ * inspector/InspectorController.h: Removed add/remove methods for DOM storage.
+ * inspector/InspectorDOMStorageResource.cpp:
+ (WebCore::InspectorDOMStorageResource::InspectorDOMStorageResource):
+ (WebCore::InspectorDOMStorageResource::isSameHostAndType): Added.
+ (WebCore::InspectorDOMStorageResource::bind): Added.
+ (WebCore::InspectorDOMStorageResource::unbind): Added.
+ * inspector/InspectorDOMStorageResource.h:
+
+2009-03-16 Mike Belshe <mike@belse.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24580
+ Fix query() to match KURL behavior, this time with the code that
+ compiles.
+
+ * platform/KURLGoogle.cpp:
+ (WebCore::KURL::query): Fix copy/paste mistake.
+
+2009-03-16 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21752
+ REGRESSION: referencing XHR constructor for a not yet loaded frame permanently breaks it
+
+ Test: fast/dom/Window/window-early-properties-xhr.html
+
+ For some transitions, the Window object is not replaced, but Document is. When this happened,
+ window.document property was updated, but references to Document kept in cached constructors
+ were not.
+
+ * bindings/js/JSAudioConstructor.cpp:
+ (WebCore::JSAudioConstructor::JSAudioConstructor):
+ (WebCore::JSAudioConstructor::document):
+ (WebCore::JSAudioConstructor::mark):
+ * bindings/js/JSAudioConstructor.h:
+ * bindings/js/JSImageConstructor.cpp:
+ (WebCore::JSImageConstructor::JSImageConstructor):
+ (WebCore::JSImageConstructor::document):
+ (WebCore::JSImageConstructor::mark):
+ * bindings/js/JSImageConstructor.h:
+ * bindings/js/JSMessageChannelConstructor.cpp:
+ (WebCore::JSMessageChannelConstructor::JSMessageChannelConstructor):
+ (WebCore::JSMessageChannelConstructor::scriptExecutionContext):
+ (WebCore::JSMessageChannelConstructor::mark):
+ * bindings/js/JSMessageChannelConstructor.h:
+ * bindings/js/JSOptionConstructor.cpp:
+ (WebCore::JSOptionConstructor::JSOptionConstructor):
+ (WebCore::JSOptionConstructor::document):
+ (WebCore::JSOptionConstructor::mark):
+ * bindings/js/JSOptionConstructor.h:
+ * bindings/js/JSXMLHttpRequestConstructor.cpp:
+ (WebCore::JSXMLHttpRequestConstructor::JSXMLHttpRequestConstructor):
+ (WebCore::JSXMLHttpRequestConstructor::scriptExecutionContext):
+ (WebCore::JSXMLHttpRequestConstructor::mark):
+ * bindings/js/JSXMLHttpRequestConstructor.h:
+ Changed cached constructors to keep a reference to Window, not Document.
+
+2009-03-15 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24549
+ Impose a limit on Access-Control-Max-Age value
+
+ * loader/CrossOriginPreflightResultCache.cpp:
+ (WebCore::CrossOriginPreflightResultCacheItem::parse):
+
+2009-03-15 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by David Kilzer.
+
+ <rdar://problem/6668875> Normalize Geolocation results
+
+ * platform/mac/GeolocationServiceMac.mm:
+ (-[WebCoreCoreLocationObserver locationManager:didUpdateToLocation:fromLocation:]):
+
+2009-03-15 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by David Kilzer.
+
+ Update ::toString format as suggested by Darin Adler.
+
+ * page/Geoposition.cpp:
+ (WebCore::Geoposition::toString):
+
+2009-03-15 David Kilzer <ddkilzer@apple.com>
+
+ <rdar://problem/6668238> WebCore is registering text encodings needlessly from KURL constructor.
+
+ Reviewed by Darin Adler.
+
+ Yet another case where we would trigger extended encoding loading needlessly.
+
+ * platform/text/TextEncoding.cpp:
+ (WebCore::TextEncoding::encodingForFormSubmission):
+
+2009-03-15 Simon Fraser <simon.fraser@apple.com>
+
+ Build fix: no review.
+
+ * rendering/style/ContentData.h:
+
+2009-03-15 David Kilzer <ddkilzer@apple.com>
+
+ Bug 24542: Improve ContentData encapsulation
+
+ <https://bugs.webkit.org/show_bug.cgi?id=24542>
+
+ Reviewed by Simon Fraser.
+
+ No tests since there is no change in behavior.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::createObject): Used getter methods
+ instead of data members on ContentData class. Used isImage()
+ convenience method.
+ * rendering/RenderObjectChildList.cpp:
+ (WebCore::RenderObjectChildList::updateBeforeAfterContent): Ditto.
+
+ * rendering/style/ContentData.cpp:
+ (WebCore::ContentData::clear): Extracted code into
+ deleteContent() method.
+ (WebCore::ContentData::dataEquivalent): Added. Extracted code
+ from StyleRareNonInheritedData::contentDataEquivalent().
+ (WebCore::ContentData::deleteContent): Added. Used by setter
+ methods.
+ * rendering/style/ContentData.h: Made m_type, m_content and
+ m_next private.
+ (WebCore::ContentData::isCounter): Added.
+ (WebCore::ContentData::isImage): Added.
+ (WebCore::ContentData::isNone): Added.
+ (WebCore::ContentData::isText): Added.
+ (WebCore::ContentData::type): Added.
+ (WebCore::ContentData::dataEquivalent): Added.
+ (WebCore::ContentData::image): Added.
+ (WebCore::ContentData::setImage): Added.
+ (WebCore::ContentData::text): Added.
+ (WebCore::ContentData::setText): Added.
+ (WebCore::ContentData::counter): Added.
+ (WebCore::ContentData::setCounter): Added.
+ (WebCore::ContentData::next): Added.
+ (WebCore::ContentData::setNext): Added.
+
+ * rendering/style/CounterContent.h:
+ (WebCore::operator!=): Removed.
+ (WebCore::operator==): Renamed operator!=() and reversed its
+ logic after extracting code from
+ StyleRareNonInheritedData::contentDataEquivalent() to create
+ ContentData::dataEquivalent().
+
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::setContent): Used new getters and setters
+ on ContentData class. Changed first argument from a StringImpl*
+ to a PassRefPtr<StrimgImpl>. Used isText() convenience method.
+ * rendering/style/RenderStyle.h:
+ (WebCore::RenderStyle::setContent): Updated declaration.
+ * rendering/style/StyleRareNonInheritedData.cpp:
+ (WebCore::StyleRareNonInheritedData::contentDataEquivalent):
+ Extracted most logic in while() loop into
+ ContentData::dataEquivalent().
+
+2009-03-15 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Anders Carlsson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24602
+ [Gtk] Searching in thepiratebay.org doesn't work with more than 1 word
+
+ Reintroduce the URI into the soup message after having set it in
+ the KURL, on redirects, to make sure it is properly encoded. This
+ fixes bad request problems when servers give bad URIs on their
+ response's Location header.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::restartedCallback):
+
+2009-03-15 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19737
+ No cursor and paste not enabled right clicking text field/area
+
+ Test: fast/events/right-click-focus.html
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleMousePressEventSingleClick):
+ (WebCore::EventHandler::handleMousePressEvent):
+ Take normal code path for right clicks (we were taking it for Ctrl-clicks anyway).
+
+2009-03-15 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Adele Peterson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23949
+ HTMLSelectElement is in inconsistent state when handling mutation events
+
+ Test: fast/forms/mutation-event-recalc.html
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::insertBefore):
+ (WebCore::ContainerNode::appendChild):
+ Call childrenChanged() before dispatching modification events, not after.
+
+ * html/HTMLOptGroupElement.cpp:
+ (WebCore::HTMLOptGroupElement::insertBefore):
+ (WebCore::HTMLOptGroupElement::replaceChild):
+ (WebCore::HTMLOptGroupElement::removeChild):
+ (WebCore::HTMLOptGroupElement::appendChild):
+ (WebCore::HTMLOptGroupElement::removeChildren):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::add):
+ (WebCore::HTMLSelectElement::remove):
+ (WebCore::HTMLSelectElement::insertBefore):
+ (WebCore::HTMLSelectElement::replaceChild):
+ (WebCore::HTMLSelectElement::removeChild):
+ (WebCore::HTMLSelectElement::appendChild):
+ (WebCore::HTMLSelectElement::removeChildren):
+ Remove calls to recalcSelectOptions(). It is too late to recalc now, after mutation events
+ were already dispatched.
+
+2009-03-14 Greg Bolsinga <bolsinga@apple.com>
+
+ <rdar://problem/6683465>
+
+ Geolocation has to be able to handle NULL Frames.
+
+ Reviewed by Mark Rowe
+
+2009-03-14 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by David Kilzer.
+
+ Geoposition::toString was missing the Coordinates after the update.
+
+ * page/Geoposition.cpp:
+ (WebCore::Geoposition::toString):
+
+2009-03-14 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ [Gtk] Build fix - pass a Coordinate to Geoposition::create
+ https://bugs.webkit.org/show_bug.cgi?id=24603
+
+ Gtk build fix per r41650
+ https://bugs.webkit.org/show_bug.cgi?id=24506
+ Geolocation in Safari differs from the spec, no Coordinates attribute on Position
+
+ Pass a Coordinate to Geoposition::create.
+
+ * platform/gtk/GeolocationServiceGtk.cpp:
+ (WebCore::GeolocationServiceGtk::updatePosition):
+
+2009-03-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24545
+ Make cross-site XHR simple request definition match current spec draft
+
+ Tests: http/tests/xmlhttprequest/access-control-basic-post-fail-non-simple-content-type.html
+ http/tests/xmlhttprequest/access-control-basic-whitelist-request-headers.html
+
+ * loader/CrossOriginAccessControl.cpp:
+ (WebCore::isOnAccessControlSimpleRequestHeaderWhitelist): Added Content-Language.
+ (WebCore::isSimpleCrossOriginAccessRequest): Added HEAD. Restricted content types to those
+ that could be sent via form submission.
+
+2009-03-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15172
+ object fallback - empty string for first argument of setAttributeNS does not work like null
+
+ https://bugs.webkit.org/show_bug.cgi?id=24548
+ createElementNS("", name) should create an element in null namespace
+
+ Tests: fast/dom/createElementNS-empty-namespace.html
+ fast/dom/setAttributeNS-empty-namespace.html
+
+ * dom/QualifiedName.h: (WebCore::QualifiedName::QualifiedNameImpl::QualifiedNameImpl):
+ Convert empty namespaces to null.
+
+2009-03-13 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Dan Bernstein.
+
+ Take advantage of the ability of recent versions of Xcode to easily switch the active
+ architecture.
+
+ * Configurations/DebugRelease.xcconfig:
+
+2009-03-13 John Abd-El-Malek <jam@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24593
+ Added requestorID so we can track the request to its WebView without using frame (which was removed).
+
+ * platform/network/chromium/ResourceRequest.h:
+ (WebCore::ResourceRequest::ResourceRequest):
+ (WebCore::ResourceRequest::requestorID):
+ (WebCore::ResourceRequest::setRequestorID):
+ (WebCore::ResourceRequest::setTargetType):
+ (WebCore::ResourceRequest::policyURL):
+ (WebCore::ResourceRequest::setPolicyURL):
+ (WebCore::ResourceRequest::requestorPid):
+ (WebCore::ResourceRequest::setRequestorPid):
+
+2009-03-13 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24561
+ Add custom V8 bindings for HTMLElementCanvas, Location.
+
+ * bindings/v8/custom/V8HTMLCanvasElementCustom.cpp: Added.
+ * bindings/v8/custom/V8LocationCustom.cpp: Added.
+
+2009-03-13 Stephen White <senorblanco@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24584
+
+ Fix transparent text rendering on Chromium. FontChromiumWin
+ was calling beginTransparencyLayer()/endTransparencyLayer(), with
+ a TransparencyWin inside to do GDI ClearType rendering over an
+ opaque background. TransparencyWin does its special sauce
+ in the destructor, but it was being called too late to be used
+ correctly in the layer. Put the special sauce into a new function,
+ composite(), and call that explicitly instead.
+
+ * platform/graphics/chromium/FontChromiumWin.cpp:
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareFontPainter::~TransparencyAwareFontPainter):
+ * platform/graphics/chromium/TransparencyWin.cpp:
+ (WebCore::TransparencyWin::~TransparencyWin):
+ (WebCore::TransparencyWin::composite):
+ (WebCore::TransparencyWin::init):
+ * platform/graphics/chromium/TransparencyWin.h:
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::):
+
+2009-03-13 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24562
+ Add custom implementation for getCSSCanvasContext to V8 bindings.
+
+ * bindings/v8/custom/V8DocumentCustom.cpp: Added new method.
+
+2009-03-13 Mike Belshe <mike@belse.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24580
+ Fix query() to match KURL behavior.
+
+ * platform/KURLGoogle.cpp:
+ (WebCore::KURL::query): remove extra logic around question mark.
+
+2009-03-13 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 24474: AX: in multi-body tables, asking for a cell at a specific coordinate can return nil
+ https://bugs.webkit.org/show_bug.cgi?id=24474
+
+ Test: platform/mac-snowleopard/accessibility/table-multi-bodies.html
+
+ * page/AccessibilityTable.cpp:
+ (WebCore::AccessibilityTable::cellForColumnAndRow):
+
+2009-03-13 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24589
+ Upstream changes to V8 event listeners (Chromium r11133) in order to
+ fix worker functionality break in Chromium.
+
+ * bindings/v8/V8AbstractEventListener.cpp:
+ (WebCore::V8AbstractEventListener::invokeEventHandler):
+ (WebCore::V8AbstractEventListener::handleEvent):
+ * bindings/v8/V8AbstractEventListener.h:
+ * bindings/v8/V8WorkerContextEventListener.cpp:
+ (WebCore::V8WorkerContextEventListener::handleEvent):
+
+2009-03-13 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24524
+ Introduce ScriptObject and ScriptFunctionCall abstractions.
+
+ * GNUmakefile.am: Added ScriptObject and ScriptFunctionCall to project.
+ * WebCore.pro: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * WebCoreSources.bkl: Ditto.
+ * bindings/js/ScriptFunctionCall.cpp: Added.
+ * bindings/js/ScriptFunctionCall.h: Added.
+ * bindings/js/ScriptObject.cpp: Added.
+ * bindings/js/ScriptObject.h: Added.
+ * bindings/js/ScriptObjectQuarantine.cpp: Added.
+ * bindings/js/ScriptObjectQuarantine.h: Added.
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::populateScriptObjects): Changed to use InspectorDatabaseResource::bind.
+ (WebCore::InspectorController::resetScriptObjects): Changed to use InspectorDatabaseResource::unbind.
+ (WebCore::InspectorController::didOpenDatabase): Changed to use InspectorDatabaseResource::unbind.
+ * inspector/InspectorController.h: Removed addScriptDatabaseResource and
+ removeScriptDatabaseResource declarations.
+ * inspector/InspectorDatabaseResource.cpp:
+ (WebCore::InspectorDatabaseResource::InspectorDatabaseResource):
+ (WebCore::InspectorDatabaseResource::bind): Added.
+ (WebCore::InspectorDatabaseResource::unbind): Added.
+ * inspector/InspectorDatabaseResource.h: Added bind and unbind declarations.
+
+2009-03-13 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24467
+ Make Skia drawRect() and stroke behavior match CG.
+
+ This makes drawRect() ignore the stroke width (like CG does), and
+ adds a warning comment about that to the appropriate header.
+
+ It also eliminates some hacky code in Skia's stroke preparation,
+ which tried to adjust odd-width strokes to fall on pixel boundaries.
+ Not only did this not match CG, it wouldn't necessarily work right,
+ because there could be other transforms (e.g. full-page zoom) that
+ would affect the stroke before it reached the device pixel level.
+
+ * platform/graphics/GraphicsContext.h:
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::drawRect):
+ (WebCore::GraphicsContext::fillRect):
+ * platform/graphics/skia/PlatformContextSkia.cpp:
+ (PlatformContextSkia::drawRect):
+ (PlatformContextSkia::setupPaintForStroking):
+
+2009-03-13 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24583
+ Need to change scope of constructor and destructor of V8ObjectEventListener from private
+ to protected so that they could be used in its derived class V8WorkerContextEventListener.
+
+ * bindings/v8/V8ObjectEventListener.h:
+
+2009-03-13 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24579
+ Many V8*Event* files are misplaced.
+
+ This code is infrastructure for supporting the bindings and thus should
+ be in the bindings/v8 directory.
+
+ * bindings/v8/V8AbstractEventListener.cpp: Renamed from WebCore/bindings/v8/custom/V8AbstractEventListener.cpp.
+ * bindings/v8/V8AbstractEventListener.h: Renamed from WebCore/bindings/v8/custom/V8AbstractEventListener.h.
+ * bindings/v8/V8LazyEventListener.cpp: Renamed from WebCore/bindings/v8/custom/V8LazyEventListener.cpp.
+ * bindings/v8/V8LazyEventListener.h: Renamed from WebCore/bindings/v8/custom/V8LazyEventListener.h.
+ * bindings/v8/V8ObjectEventListener.cpp: Renamed from WebCore/bindings/v8/custom/V8ObjectEventListener.cpp.
+ * bindings/v8/V8ObjectEventListener.h: Renamed from WebCore/bindings/v8/custom/V8ObjectEventListener.h.
+ * bindings/v8/V8WorkerContextEventListener.cpp: Renamed from WebCore/bindings/v8/custom/V8WorkerContextEventListener.cpp.
+ * bindings/v8/V8WorkerContextEventListener.h: Renamed from WebCore/bindings/v8/custom/V8WorkerContextEventListener.h.
+
+2009-03-13 Adele Peterson <adele@apple.com>
+
+ Reviewed by Justin Garcia.
+
+ Fix for <rdar://problem/5089327> Color of quoted content is wrong when pasted inside other quoted content
+
+ Test: editing/pasteboard/5089327.html
+
+ Handle spans being pasted within a quoted region in the same way we handle "paste as quotation" content.
+
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::handleStyleSpansBeforeInsertion):
+ (WebCore::ReplaceSelectionCommand::handleStyleSpans):
+
+2009-03-13 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Update Geolocation perimission dialogs to be asynchronous.
+ https://bugs.webkit.org/show_bug.cgi?id=24505
+
+ Geolocation now requests permission from the Chrome asynchronously.
+ The Chrome is passed the Geolocation object, and the Chrome sets the permission
+ on the Geolocation. Geolocation also tracks if the Chrome should clear its cache
+ of SecurityOrigins with geolocation permission. This is so that the GeolocationService
+ can inform the Chrome of its request, and the Chrome is also free to implement its
+ own policy.
+
+ * WebCore.base.exp:
+ * WebCore.xcodeproj/project.pbxproj:
+ * page/Chrome.cpp:
+ (WebCore::Chrome::requestGeolocationPermissionForFrame):
+ * page/Chrome.h:
+ * page/ChromeClient.h:
+ (WebCore::ChromeClient::requestGeolocationPermissionForFrame):
+ * page/Geolocation.cpp:
+ (WebCore::Geolocation::Geolocation):
+ (WebCore::Geolocation::getCurrentPosition):
+ (WebCore::Geolocation::watchPosition):
+ (WebCore::Geolocation::setIsAllowed):
+ (WebCore::Geolocation::displayChallengeIfNecessary):
+ (WebCore::Geolocation::geolocationServicePositionChanged):
+ * page/Geolocation.h:
+ (WebCore::Geolocation::isAllowed):
+ (WebCore::Geolocation::setShouldClearCache):
+ (WebCore::Geolocation::shouldClearCache):
+ (WebCore::Geolocation::):
+
+2009-03-13 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ <rdar://problem/6610666> Revise the Cocoa event model text API
+
+ Add a NPCocoaEventTextInput event type. Remove the text input variables.
+
+ * bridge/npapi.h:
+ (_NPCocoaEvent::):
+
+2009-03-13 Kevin Decker <kdecker@apple.com>
+
+ Reviewed by Anders.
+
+ <rdar://problem/6630340> REGRESSION (39114-39115): Unity Web Player no longer works if Flip4Mac is also installed
+
+ The code assumed if we have a plug-in that supports "application/x-oleobject" we should always prefer the object tag
+ over of an embed tag. That assumption can cause the Mac platform to load the wrong plug-in, as Flip4Mac claims supports
+ for x-oleobject.
+
+ * rendering/RenderPartObject.cpp:
+ (WebCore::shouldUseEmbedDescendant): Made the Mac platform always return true here.
+
+2009-03-13 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24559
+ Need to port JSC fix (r41565) to V8 in order to fix layout test onload-single-line-comment.html.
+
+ * bindings/v8/custom/V8LazyEventListener.cpp:
+ (WebCore::V8LazyEventListener::getListenerFunction):
+ (WebCore::V8LazyEventListener::getWrappedListenerFunction):
+
+2009-03-13 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24557
+ This is to support running multiple workers in a single worker process in chromium.
+
+ * bindings/v8/custom/V8WorkerContextEventListener.cpp:
+ (WebCore::V8WorkerContextEventListener::handleEvent):
+ Add locker to v8 event listener of worker context.
+
+2009-03-13 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24575
+ XHR response is incorrect after a network error.
+
+ Tests: http/tests/xmlhttprequest/cross-site-denied-response-sync-2.html
+ http/tests/xmlhttprequest/cross-site-denied-response-sync.html
+ http/tests/xmlhttprequest/cross-site-denied-response.html
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::networkError): Call internalAbort() to fully reset the request.
+ (WebCore::XMLHttpRequest::didFailRedirectCheck): No need to call internalAbort() here. Note
+ that since internalAbort() can drop GC protection, it is not safe to use the object after
+ this call.
+ (WebCore::XMLHttpRequest::didReceiveData): Check that the request wasn't aborted, and
+ return early if it was. This can happen during sync requests, as the loader does not know
+ that it was aborted, and just synthesizes all callbacks.
+
+2009-03-13 Adam Bergkvist <adam.bergkvist@ericsson.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=3547
+ XMLHttpRequest.statusText returns always "OK"
+
+ Covered by existing tests (which now pass on all platforms but Mac).
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::statusText): Return ResourceResponse status text. It is now up
+ to each platform to correctly set the status text or set it to "OK" to retain current
+ behavior.
+
+2009-03-13 Adam Bergkvist <adam.bergkvist@ericsson.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24349
+ [QT] HTTP status text is never set
+
+ Set HTTP status text to the reason phrase attribute of QNetworkReply.
+
+ * platform/network/qt/QNetworkReplyHandler.cpp:
+ (WebCore::QNetworkReplyHandler::sendResponseIfNeeded):
+
+2009-03-12 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Mark Rowe
+
+ <rdar://problem/6622300>: Reproducible crash on
+ <http://www.editgrid.com/explore/tnc/dave/FusionChart%3A_Candlestick>
+
+ Prevent CSSStyleSheet::checkLoaded() writing to freed memory when it gets
+ deleted from under itself. The sheetLoaded() notification can allow scripts
+ to run via HTMLTokenizer::executeScriptsWaitingForStylesheets(),
+ which can cause the last ref to the CSSStyleSheet to be released.
+
+ * css/CSSStyleSheet.cpp:
+ (WebCore::CSSStyleSheet::checkLoaded):
+
+2009-03-12 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix. Allow make-generated-sources.sh to pass args down to DerivedSources.make
+
+ * make-generated-sources.sh:
+
+2009-03-12 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24498
+ Fix the Qt port to use the same algorithm for drawing dashed and dotted
+ borders as the other ports. This makes the Qt port pixel-for-pixel perfect
+ compared to border drawing with Apple's canonical mac port and much closer
+ to konqueror and firefox behavior.
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContext::drawLine):
+
+2009-02-26 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Justin Garcia.
+
+ Clean up DOMSelection to use some helper functions
+ making the code smaller, and less error-prone.
+ https://bugs.webkit.org/show_bug.cgi?id=19221
+
+ I tried moving DOMSelection off of rangeCompliantEquivalent
+ but failed. VisibleSelection holds positions like (table, 1) to mean
+ "after the table".
+
+ * page/DOMSelection.cpp:
+ (WebCore::DOMSelection::visibleSelection):
+ (WebCore::anchorPosition):
+ (WebCore::focusPosition):
+ (WebCore::basePosition):
+ (WebCore::extentPosition):
+ (WebCore::DOMSelection::anchorNode):
+ (WebCore::DOMSelection::anchorOffset):
+ (WebCore::DOMSelection::focusNode):
+ (WebCore::DOMSelection::focusOffset):
+ (WebCore::DOMSelection::baseNode):
+ (WebCore::DOMSelection::baseOffset):
+ (WebCore::DOMSelection::extentNode):
+ (WebCore::DOMSelection::extentOffset):
+ * page/DOMSelection.h:
+
+2009-03-12 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24563
+ Change ResourceRequest to be a struct rather then a class to match other declarations.
+
+ * platform/network/chromium/ResourceRequest.h:
+
+2009-03-12 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Bug 24530: width100percent-searchfield.html should be fixed for chromium.
+ <https://bugs.webkit.org/show_bug.cgi?id=24530>
+
+ Compensate for r39924 in chromium, which broke LayoutTests/fast/replaced/width100percent-searchfield.html
+
+ * css/themeChromiumWin.css: Added.
+ Overrides the changes to start supporting input[type="search"] on Windows (since
+ Chromium doesn't do anything special for this).
+
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::supportsFocus):
+ (WebCore::RenderThemeChromiumWin::extraDefaultStyleSheet):
+ (WebCore::RenderThemeChromiumWin::determineState):
+ (WebCore::RenderThemeChromiumWin::getThemeData):
+
+2009-03-12 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Antti Koivisto.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24506
+ Geolocation in Safari differs from the spec, no Coordinates attribute on Position
+
+ Get up to date.
+
+ * DerivedSources.make:
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * bindings/js/JSGeolocationCustom.cpp:
+ (WebCore::createPositionOptions):
+ * page/Coordinates.cpp: Added.
+ (WebCore::Coordinates::toString):
+ * page/Coordinates.h: Added.
+ (WebCore::Coordinates::create):
+ (WebCore::Coordinates::latitude):
+ (WebCore::Coordinates::longitude):
+ (WebCore::Coordinates::altitude):
+ (WebCore::Coordinates::accuracy):
+ (WebCore::Coordinates::altitudeAccuracy):
+ (WebCore::Coordinates::heading):
+ (WebCore::Coordinates::speed):
+ (WebCore::Coordinates::Coordinates):
+ * page/Coordinates.idl: Added.
+ * page/Geoposition.cpp:
+ (WebCore::Geoposition::toString):
+ * page/Geoposition.h:
+ (WebCore::Geoposition::create):
+ (WebCore::Geoposition::coords):
+ (WebCore::Geoposition::Geoposition):
+ * page/Geoposition.idl:
+ * page/PositionOptions.h:
+ (WebCore::PositionOptions::create):
+ (WebCore::PositionOptions::maximumAge):
+ (WebCore::PositionOptions::setMaximumAge):
+ (WebCore::PositionOptions::PositionOptions):
+ * platform/mac/GeolocationServiceMac.mm:
+ (-[WebCoreCoreLocationObserver locationManager:didUpdateToLocation:fromLocation:]):
+
+2009-03-12 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24496
+ Fix console logging of non-string values by coercing the argument to
+ a string, for V8 bindings.
+
+ Test: fast/js/console-non-string-values.html
+
+ * bindings/v8/ScriptValue.cpp: Added toString method.
+ (WebCore::ScriptValue::toString):
+ * bindings/v8/ScriptValue.h: Added PlatformString, ScriptState includes
+ and toString declaration.
+
+2009-03-12 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Eliminate ChromiumBridge::uiResourceProtocol
+ https://bugs.webkit.org/show_bug.cgi?id=24558
+
+ * platform/chromium/ChromiumBridge.h:
+
+2009-03-12 Greg Bolsinga <bolsinga@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Missing breaks in switch statement
+ https://bugs.webkit.org/show_bug.cgi?id=24556
+
+ * platform/mac/GeolocationServiceMac.mm:
+ (-[WebCoreCoreLocationObserver locationManager:didFailWithError:]):
+
+2009-03-12 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24554
+ Remove some unused functions from ChromiumBridge.
+
+ * platform/chromium/ChromiumBridge.h:
+
+2009-03-02 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Fisher and Justin Garcia.
+
+ Safari crashes during drag and drop in Google presentations
+ due to mutation event handlers removing DOM content during insertNode
+ https://bugs.webkit.org/show_bug.cgi?id=22634
+
+ Added a bunch of "null" checks to make sure nodes are still
+ in the document before we operate on them. This is an
+ inelegant solution, but it's the best we have for now.
+
+ Test: editing/selection/crash-on-drag-with-mutation-events.html
+
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::insertNodeAt):
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplaceSelectionCommand::doApply):
+
+2009-03-12 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Adam Treat.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24525
+ REGRESSION: Inspector window doesn't close when inspected page is
+ destroyed. This is a revert of r41158, which became unnecessary when
+ InspectorController became ref-counted in r41462.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::inspectedPageDestroyed): Reset m_inspectedPage
+ after calling close().
+ (WebCore::InspectorController::stopUserInitiatedProfiling): Remove
+ m_inspectedPage check guard around profile logic.
+
+2009-03-12 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24502
+ Make horizontal scrolling on Windows always go the correct direction.
+
+ * platform/PlatformWheelEvent.h:
+ * platform/win/WheelEventWin.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+
+2009-03-12 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24496
+ Fix console logging of non-string values by coercing the argument to
+ a string.
+
+ Test: fast/js/console-non-string-values.html
+
+ * bindings/js/ScriptValue.cpp: Removed PlatformString include.
+ * bindings/js/ScriptValue.h: Added toString method.
+ (WebCore::ScriptValue::toString):
+ * page/Console.cpp:
+ (WebCore::getFirstArgumentAsString): Changed firstArgumentAsString method to use
+ ScriptValue::toString.
+ (WebCore::Console::addMessage): added extra ScriptState argument to callsite.
+ (WebCore::Console::count): Ditto.
+
+2009-03-12 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24508
+
+ Fix updating of text field with placeholder text when value is set
+ by ensuring that updatePlaceholderVisibility() is called after
+ the value has been updated, not before.
+
+ Test: fast/forms/placeholder-set-value.html
+
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::setValue):
+
+2009-03-12 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24552
+
+ Hit testing involving normal flow, self-painting layers (e.g. reflections)
+ was broken because it was not null-testing the result of hitTestLayer(),
+ so bailing early with a nil hit layer.
+
+ Test: fast/layers/normal-flow-hit-test.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTestLayer):
+
+2009-03-12 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Cameron Zwarich.
+
+ Removed zero-sized files, left over from improperly applied patch.
+
+ * platform/graphics/chromium/ThemeHelperChromiumWin.cpp: Removed.
+ * platform/graphics/chromium/ThemeHelperChromiumWin.h: Removed.
+
+2009-03-12 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Do not ignore alpha color in optimization. Hard to believe, but there
+ are websites that fill the entire page with a tiled image consisting of
+ nothing but a 100% transparent 1x1 image. <cough>orbitz.com</cough>
+
+ * platform/graphics/qt/ImageQt.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+
+2009-03-12 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Bug 24110: cloneNode should call cloneElement and not the reverse
+
+ - Splitted the code from cloneNode into cloneElementWithChildren and cloneElementWithChildren.
+ Now cloneNode calls one of the 2 previous methods.
+
+ - Renamed cloneElement to cloneElementWithoutChildren as it was the previous behaviour.
+
+ - Moved cloneNode to the Element private section so that WebCore callers cannot use it.
+
+ - Removed Element::cloneNode usage through WebCore.
+
+ * dom/Element.cpp:
+ (WebCore::Element::cloneNode): Moved to Element's private section and it
+ now calls the two next methods.
+ (WebCore::Element::cloneElementWithChildren): Added.
+ (WebCore::Element::cloneElementWithoutChildren): Renamed from cloneElement
+ to avoid ambiguity.
+ * dom/Element.h:
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::addInlineStyleIfNeeded): Changed call to cloneElement
+ to call to cloneElementWithoutChildren.
+ * editing/BreakBlockquoteCommand.cpp:
+ (WebCore::BreakBlockquoteCommand::doApply): Ditto.
+ * editing/IndentOutdentCommand.cpp:
+ (WebCore::IndentOutdentCommand::indentRegion): Ditto.
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply): Ditto.
+ * editing/ModifySelectionListLevel.cpp:
+ (WebCore::IncreaseSelectionListLevelCommand::doApply): Ditto.
+ * editing/SplitElementCommand.cpp:
+ (WebCore::SplitElementCommand::doApply): Ditto.
+ * editing/markup.cpp:
+ (WebCore::createFragmentFromText): Ditto.
+ * svg/SVGUseElement.cpp:
+ (WebCore::SVGUseElement::buildShadowTree): Ditto.
+ (WebCore::SVGUseElement::expandUseElementsInShadowTree): Ditto.
+
+2009-03-12 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Fixed a crash on the 1x1 pixel check for background image in gtk.
+ We need to load the image first and need to be sure that the image
+ is not null before checking the type.
+
+ * platform/graphics/cairo/ImageCairo.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+
+2009-03-12 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24544
+ Rename setUrl to setURL
+
+ Use proper case for setUrl method, rename it to setURL.
+
+ * platform/network/ResourceResponseBase.cpp:
+ (WebCore::ResourceResponseBase::adopt):
+ * platform/network/ResourceResponseBase.h:
+ * platform/network/curl/ResourceHandleManager.cpp:
+ (WebCore::writeCallback):
+ (WebCore::headerCallback):
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::fillResponseFromMessage):
+ (WebCore::queryInfoCallback):
+
+2009-03-12 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24519
+ [GTK] Use two argument KURL ctor in ResourceHandleSoup
+
+ Use two argument KURL ctor, the single argument ctor expects its
+ input to be the output of a previous KURL::parse call, which is
+ not the case here.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::fillResponseFromMessage):
+ (WebCore::queryInfoCallback):
+
+2009-03-11 Jon Honeycutt <jhoneycutt@apple.com>
+
+ Fix for <rdar://6418681>
+ https://bugs.webkit.org/show_bug.cgi?id=22644
+
+ Reviewed by Steve Falkenburg.
+
+ * plugins/win/PluginPackageWin.cpp:
+ (WebCore::PluginPackage::isPluginBlacklisted): Add the Citrix ICA
+ Client plug-in to the blacklist; it requires a Mozilla-based browser.
+
+2009-03-12 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (build fix).
+
+ build fix.
+
+ * html/CanvasRenderingContext2D.h:
+
+2009-03-11 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ <rdar://problem/6673852> Widget "Simple World Clock" does not display with Safari 4
+
+ A number of dashboard widgets rely on canvas failing silently when given invalid
+ colors for gradient stops, but both the spec and firefox throw exceptions here.
+ So we work around this by creating a dashboard quirk that will only suppress the
+ exception in dashboard compatibility mode.
+
+ Test: fast/canvas/canvas-gradient-addStop-error.html
+
+ * html/CanvasGradient.cpp:
+ (WebCore::CanvasGradient::CanvasGradient):
+ (WebCore::CanvasGradient::addColorStop):
+ * html/CanvasGradient.h:
+ (WebCore::CanvasGradient::setDashboardCompatibilityMode):
+ * html/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::prepareGradientForDashboard):
+ (WebCore::CanvasRenderingContext2D::createLinearGradient):
+ (WebCore::CanvasRenderingContext2D::createRadialGradient):
+ * html/CanvasRenderingContext2D.h:
+
+2009-03-11 David Kilzer <ddkilzer@apple.com>
+
+ Clarify comments regarding order of FEATURE_DEFINES
+
+ Rubber-stamped by Mark Rowe.
+
+ * Configurations/WebCore.xcconfig: Added warning about the
+ consequences when FEATURE_DEFINES are not kept in sync.
+
+2009-03-11 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24515
+ [GTK] soup backend should use GMappedFile instead of mmap directly
+
+ Rewrite mmap code used to upload files to use GMappedFile, so that
+ it is platform-independent.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::startHttp):
+
+2009-03-11 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - WebCore part of fixing <rdar://problem/3919124> Thai text selection
+ in Safari is incorrect
+
+ Test: platform/mac/editing/selection/word-thai.html
+
+ Tested on Mac, but should work on all ICU platforms (or more precisely
+ on all platforms that implement
+ WTF::Unicode::hasLineBreakingPropertyComplexContext() correctly).
+
+ * editing/TextIterator.cpp:
+ (WebCore::BackwardsCharacterIterator::BackwardsCharacterIterator):
+ Added.
+ (WebCore::BackwardsCharacterIterator::range): Added.
+ (WebCore::BackwardsCharacterIterator::advance): Added.
+
+ * editing/TextIterator.h: Added BackwardsCharacterIterator with the
+ minimal functionality required for this patch.
+ (WebCore::BackwardsCharacterIterator::atEnd): Added.
+
+ * editing/visible_units.cpp:
+ (WebCore::firstNonComplexContextLineBreak): Added this helper function
+ that returns the index of the first character in the string whose
+ Unicode line breaking property value is not SA ("Complex Context"), or
+ the length of the string if there is no such character.
+ (WebCore::lastNonComplexContextLineBreak): Added this helper function
+ that returns the index of the last character in the string whose
+ Unicode line breaking property value is not SA ("Complex Context"), or
+ -1 if there is no such character.
+ (WebCore::previousBoundary): Changed the signature of the search
+ function to include an offset parameter. Renamed the 'exception' local
+ variable to 'ec' and changed its type to ExceptionCode. Extend the
+ string forwards until the first character with Unicode line breaking
+ property value other than SA. This gives the boundary search function
+ enough context in the forward direction. Changed to use a
+ BackwardsCharacterIterator for translating the backwards offset into
+ a position.
+ (WebCore::nextBoundary): Changed the signature of the search
+ function to include an offset parameter. Extend the string backwards
+ until the first character with Unicode line breaking property value
+ other than SA. This gives the boundary search function enough context in
+ the backwards direction. Restricted the workaround for <rdar://5192593>
+ only to the line break case, because it was causing an extra character
+ to be selected following a word that ended with a combining mark.
+ (WebCore::startWordBoundary): Added an offset parameter. Check that
+ going backwards from the given offset, there is a character with Unicode
+ line breaking property value other than SA, and otherwise return 0 to
+ request more context.
+ (WebCore::endWordBoundary): Similar, but in reverse.
+ (WebCore::previousWordPositionBoundary): Similar.
+ (WebCore::nextWordPositionBoundary): Similar.
+ (WebCore::startSentenceBoundary): Updated for the new search function
+ signature.
+ (WebCore::endSentenceBoundary): Ditto.
+ (WebCore::previousSentencePositionBoundary): Ditto.
+ (WebCore::nextSentencePositionBoundary): Ditto.
+
+2009-03-11 Darin Adler <darin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Don't use "::" in thread names because it is ugly!
+
+ * loader/icon/IconDatabase.cpp:
+ (WebCore::IconDatabase::open): Use "WebCore: " instead of "WebCore::".
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::ResourceHandle::loaderRunLoop): Call this "WebCore: CFNetwork Loader" to make
+ it clear this is a WebCore-created thread.
+ * storage/DatabaseThread.cpp:
+ (WebCore::DatabaseThread::start): Use "WebCore: " instead of "WebCore::".
+ * storage/LocalStorageThread.cpp:
+ (WebCore::LocalStorageThread::start): Use "WebCore: " instead of "WebCore::".
+ * workers/WorkerThread.cpp:
+ (WebCore::WorkerThread::start): Use "WebCore: " instead of "WebCore::".
+
+2009-03-11 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Darin Adler.
+
+ <rdar://problem/6653286> WebCore's implementation of screenIsMonochrome is needlessly complex
+
+ * platform/mac/PlatformScreenMac.mm:
+ (WebCore::screenIsMonochrome): Return false.
+
+2009-03-11 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=14749 percentage
+ top value on position:relative child not calculated correctly if
+ parent has percentage height
+ - and corresponding -
+ <rdar://problem/6172925>
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::relativePositionOffsetY):
+
+2009-03-11 Jian Li <jianli@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Implement ScriptValue::hasNoValue for V8.
+ https://bugs.webkit.org/show_bug.cgi?id=24507
+
+ * bindings/v8/ScriptValue.h:
+ (WebCore::ScriptValue::hasNoValue):
+
+2009-03-11 David Levin <levin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Bug 24459: Add v8 bindings for event.
+ <https://bugs.webkit.org/show_bug.cgi?id=24459>
+
+ Adding custom event bindings.
+
+ * bindings/v8/custom/V8AbstractEventListener.cpp: Added.
+ * bindings/v8/custom/V8AbstractEventListener.h: Added.
+ * bindings/v8/custom/V8AttrCustom.cpp:
+ Fixed messed up copyright header.
+ * bindings/v8/custom/V8CustomEventListener.cpp: Added.
+ * bindings/v8/custom/V8CustomEventListener.h:
+ Replaced forwarding header with the real implementation.
+ * bindings/v8/custom/V8ElementCustom.cpp:
+ * bindings/v8/custom/V8LazyEventListener.cpp: Added.
+ * bindings/v8/custom/V8LazyEventListener.h: Added.
+ * bindings/v8/custom/V8ObjectEventListener.cpp: Added.
+ * bindings/v8/custom/V8ObjectEventListener.h: Added.
+ * bindings/v8/custom/V8WorkerContextEventListener.cpp: Added.
+ * bindings/v8/custom/V8WorkerContextEventListener.h: Added.
+
+2009-03-11 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24521
+ Add some missing includes for the non-JSC build.
+
+ * platform/text/PlatformString.h: added OwnPtr.h
+ * xml/XMLHttpRequest.cpp: added SecurityOrigin.h
+
+2009-03-11 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=24531
+
+ Make sure that AnimationControllerPrivate::getAnimatedStyleForRenderer() never
+ returns a null style if it has a valid renderer, which could happen if a
+ CompositeAnimation existed, but wasn't running any animations or transitions.
+
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::getAnimatedStyleForRenderer):
+
+2009-03-11 Simon Fraser <simon.fraser@apple.com>
+
+ Fix Scons build. Patch from Alexander Guy.
+
+ * WebCore.scons:
+
+2009-03-11 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=23093
+
+ When the cancel button in the search field is shown or hidden,
+ we need to explicitly setStyle() on the cancel button's renderer,
+ to ensure that repaint happens. Changing the style without telling
+ the renderer won't work.
+
+ Test: fast/repaint/search-field-cancel.html
+
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::subtreeHasChanged):
+ (WebCore::RenderTextControlSingleLine::updateFromElement):
+ (WebCore::RenderTextControlSingleLine::createCancelButtonStyle):
+ (WebCore::RenderTextControlSingleLine::updateCancelButtonVisibility):
+ (WebCore::RenderTextControlSingleLine::visibilityForCancelButton):
+ * rendering/RenderTextControlSingleLine.h:
+
+2009-03-11 Hironori Bono <hbono@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15790
+ Ligatures aren't accounted for when manipulating VisiblePositions
+
+ Changed cursorMovementIterator rules to prevent a cursor from moving in the middle of an
+ Indic ligature which uses a virama sign.
+
+ Test: editing/deleting/skip-virama-001.html
+
+ * platform/text/TextBreakIteratorICU.cpp:
+ (WebCore::cursorMovementIterator):
+
+2009-03-11 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24513
+ REGRESSION: Cursor movement doesn't work on Tiger (ICU 3.2)
+
+ Fixes existing tests on Tiger.
+
+ * platform/text/TextBreakIteratorICU.cpp: (WebCore::cursorMovementIterator):
+ Use characterBreakIterator on Tiger (like we used to do).
+
+2009-03-11 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ <rdar://problem/4072827> Downloaded non-ASCII file name becomes garbled
+
+ * platform/network/mac/ResourceRequestMac.mm:
+ (WebCore::ResourceRequest::doUpdatePlatformRequest): Correct selector name
+ in instancesRespondToSelector.
+
+2009-03-11 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [GTK]DumpRenderTree doesn't compile for non-X11 GTK ports anymore
+ https://bugs.webkit.org/show_bug.cgi?id=2260
+
+ Add missing stdio.h include to get the build going
+
+ * plugins/gtk/PluginPackageGtk.cpp:
+
+2009-03-10 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Ken Kocienda.
+
+ * dom/Range.cpp:
+ (WebCore::Range::addLineBoxRects): If the range ended at [div, 0], addLineBoxRects
+ would include rects for the divs contents. Set the correct RenderObject to stop at.
+
+2009-03-10 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ <rdar://problem/6123770> Restrict access to document.cookie when making a cross-site XHR
+
+ * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::responseXML): Removed an incorrect
+ comment about cookie support. Firefox doesn't expose cookies on responseXML at all, and
+ there are security concerns with exposing them for cross-origin requests, so it's not clear
+ if we want to change anything here.
+
+2009-03-10 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=24503
+
+ Fix hit testing of absolutely positioned single line text controls by
+ ensuring that we set result.innerNode() correctly. If the hit node is
+ a descendant of the inner text element or if it is the <input> itself,
+ then we say we hit the innerTextElement.
+
+ Rename hitInnerTextBlock() to hitInnerTextElement() to match the
+ 'innerTextElement' terminology used elsewhere.
+
+ Assert that if renderer()->hitTest() returns false, no-one set
+ result.innerNode().
+
+ Test: fast/forms/search-abs-pos-cancel-button.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTestContents):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::hitInnerTextElement):
+ * rendering/RenderTextControl.h:
+ * rendering/RenderTextControlMultiLine.cpp:
+ (WebCore::RenderTextControlMultiLine::nodeAtPoint):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::nodeAtPoint):
+
+2009-03-10 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ <rdar://problem/6668238> WebCore is registering text encodings needlessly from KURL constructor.
+
+ Another case where we would trigger extended encoding loading needlessly.
+
+ * platform/text/TextEncoding.cpp:
+ (WebCore::TextEncoding::isNonByteBasedEncoding):
+
+2009-03-10 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for <rdar://problem/6624769> REGRESSION (Safari 4 PB): No
+ scroll bar appears for long line of text with NOWRAP set
+
+ This is a regression from http://trac.webkit.org/changeset/32226
+ I talked with Dan about the original change, and we decided that
+ the best fix was to remove his small potential-optimization that
+ only created a separate line box for whitespace under certain
+ circumstances. This new code will always create a separate line
+ box.
+
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::layoutInlineChildren):
+
+2009-03-10 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Fix for <rdar://problem/6166844>
+ https://bugs.webkit.org/show_bug.cgi?id=24495
+
+ Use same rule for loading java applets as we do for images.
+
+ * html/HTMLAppletElement.cpp:
+ (WebCore::HTMLAppletElement::createRenderer):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::createJavaAppletWidget):
+
+2009-03-10 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by David Kilzer.
+
+ Get rid of revealCaret and use revealSelection instead.
+
+ * WebCore.base.exp:
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::setSelection):
+ * page/Frame.cpp:
+ (WebCore::Frame::revealSelection):
+ * page/Frame.h:
+
+2009-03-10 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Geoff Garen.
+
+ Bug 23736: WebKit Crashes on http://g-conquest.fr/~server2
+ <https://bugs.webkit.org/show_bug.cgi?id=23736>
+ <rdar://problem/6560278>
+
+ Before replacing the document, FrameLoader::executeIfJavaScriptURL()
+ should call stopAllLoaders(), just like continueLoadAfterNavigationPolicy().
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::executeIfJavaScriptURL):
+
+2009-03-10 Darin Adler <darin@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 24494: crash when deleting at end of document and merging paragraphs
+ https://bugs.webkit.org/show_bug.cgi?id=24494
+ rdar://problem/6571537
+
+ Test: editing/deleting/merge-at-end-of-document.html
+
+ * dom/Range.cpp:
+ (WebCore::Range::compareBoundaryPoints): Split out assertion. It's better not to
+ use && in assertions since we'd like to know which condition is failing.
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::applyInlineStyleToRange): Added a null check before
+ calling compareBoundaryPoints, since a 0 for the node is ambiguous and so the
+ function doesn't know which value to return.
+
+2009-03-10 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Eric Seidel. Math checked by Oliver Hunt.
+
+ Implement the Cairo version of the checkForSolidColor() method. This halfes the
+ time to draw on 1x1 px background images.
+ I added two new calls to Color for the pixel manipulation on cairo_surface's.
+ They are neede to premultiply/unpremultiply the colors of the surface.
+
+ [CAIRO] Introduce single-pixel image optimizations
+ https://bugs.webkit.org/show_bug.cgi?id=17284
+
+ * platform/graphics/Color.cpp:
+ (WebCore::colorFromPremultipliedARGB):
+ (WebCore::premultipliedARGBFromColor):
+ * platform/graphics/Color.h:
+ * platform/graphics/cairo/ImageBufferCairo.cpp:
+ (WebCore::ImageBuffer::getImageData):
+ (WebCore::ImageBuffer::putImageData):
+ * platform/graphics/cairo/ImageCairo.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+
+2009-03-06 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24437
+
+ Add support for registering noAccess URL schemes:
+ 1- Add FrameLoader::registerURLSchemeAsNoAccess, and have SecurityOrigin check
+ that list upon construction (similar to how isLocal is implemented).
+ 2- Make InspectorController call grantUniversalAccess on its Document's
+ SecurityOrigin at the time when windowScriptObjectAvailable is called.
+
+ This enables content such as the inspector to be loaded from a custom (non-file)
+ URL, which is how Chromium loads the inspector. It also allows other URL schemes
+ to be treated like data: URLs, which Chromium utilizes for its various HTML-based
+ UI panels.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::windowScriptObjectAvailable):
+ * loader/FrameLoader.cpp:
+ (WebCore::localSchemes):
+ (WebCore::noAccessSchemes):
+ (WebCore::FrameLoader::loadItem):
+ * loader/FrameLoader.h:
+ * page/SecurityOrigin.cpp:
+ (WebCore::SecurityOrigin::SecurityOrigin):
+ (WebCore::SecurityOrigin::isLocal):
+
+2009-03-10 Xan Lopez <xlopez@igalia.com>
+
+ Build fix, no review
+
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (textMarkerForVisiblePosition):
+ (visiblePositionForTextMarker):
+
+2009-03-10 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24491
+ Rename posOffset to m_offset, get rid of accessor
+
+ As suggested in dom/Position.h, this patch gets rid of the
+ 'offset()' accessor and renames posOffset to m_offset. I've used
+ m_offset instead of offset to follow the style guide lines, since
+ Position is still a class and not a structure. If the long term
+ plan is still to make it a structure it would be pretty easy to
+ just s/m_offset/offset/ globally when that is achieved.
+
+ * dom/Position.cpp:
+ (WebCore::Position::previous):
+ (WebCore::Position::next):
+ (WebCore::Position::atStart):
+ (WebCore::Position::atEnd):
+ (WebCore::Position::renderedOffset):
+ (WebCore::Position::isCandidate):
+ (WebCore::Position::inRenderedText):
+ (WebCore::Position::isRenderedCharacter):
+ (WebCore::Position::rendersInDifferentPosition):
+ (WebCore::Position::leadingWhitespacePosition):
+ (WebCore::Position::debugPosition):
+ (WebCore::Position::formatForDebugger):
+ * dom/Position.h:
+ (WebCore::Position::Position):
+ * dom/PositionIterator.h:
+ (WebCore::PositionIterator::PositionIterator):
+ * dom/Range.cpp:
+ * dom/RangeBoundaryPoint.h:
+ (WebCore::RangeBoundaryPoint::position):
+ (WebCore::RangeBoundaryPoint::set):
+ (WebCore::RangeBoundaryPoint::setOffset):
+ (WebCore::RangeBoundaryPoint::setToChild):
+ (WebCore::RangeBoundaryPoint::setToStart):
+ (WebCore::RangeBoundaryPoint::setToEnd):
+ (WebCore::RangeBoundaryPoint::childBeforeWillBeRemoved):
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
+ (WebCore::ApplyStyleCommand::applyInlineStyleToRange):
+ (WebCore::ApplyStyleCommand::removeInlineStyle):
+ (WebCore::ApplyStyleCommand::nodeFullySelected):
+ (WebCore::ApplyStyleCommand::nodeFullyUnselected):
+ (WebCore::ApplyStyleCommand::splitTextAtStartIfNeeded):
+ (WebCore::ApplyStyleCommand::splitTextAtEndIfNeeded):
+ (WebCore::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
+ (WebCore::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
+ (WebCore::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
+ (WebCore::ApplyStyleCommand::mergeEndWithNextIfIdentical):
+ (WebCore::ApplyStyleCommand::joinChildTextNodes):
+ * editing/BreakBlockquoteCommand.cpp:
+ (WebCore::BreakBlockquoteCommand::doApply):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::insertNodeAt):
+ (WebCore::CompositeEditCommand::positionOutsideTabSpan):
+ (WebCore::CompositeEditCommand::rebalanceWhitespaceAt):
+ (WebCore::CompositeEditCommand::prepareWhitespaceAtPositionForSplit):
+ (WebCore::CompositeEditCommand::deleteInsignificantText):
+ (WebCore::CompositeEditCommand::removePlaceholderAt):
+ (WebCore::CompositeEditCommand::moveParagraphs):
+ (WebCore::CompositeEditCommand::breakOutOfEmptyMailBlockquotedParagraph):
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::updatePositionForNodeRemoval):
+ (WebCore::updatePositionForTextRemoval):
+ (WebCore::DeleteSelectionCommand::handleGeneralDelete):
+ (WebCore::DeleteSelectionCommand::fixupWhitespace):
+ * editing/Editor.cpp:
+ (WebCore::Editor::setComposition):
+ (WebCore::Editor::advanceToNextMisspelling):
+ (WebCore::Editor::getCompositionSelection):
+ * editing/InsertLineBreakCommand.cpp:
+ (WebCore::InsertLineBreakCommand::doApply):
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+ * editing/InsertTextCommand.cpp:
+ (WebCore::InsertTextCommand::performTrivialReplace):
+ (WebCore::InsertTextCommand::input):
+ (WebCore::InsertTextCommand::insertTab):
+ * editing/MoveSelectionCommand.cpp:
+ (WebCore::MoveSelectionCommand::doApply):
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplaceSelectionCommand::doApply):
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::debugRenderer):
+ * editing/TextIterator.cpp:
+ (WebCore::TextIterator::rangeFromLocationAndLength):
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::deleteKeyPressed):
+ (WebCore::TypingCommand::forwardDeleteKeyPressed):
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::characterAfter):
+ (WebCore::VisiblePosition::debugPosition):
+ (WebCore::makeRange):
+ (WebCore::setStart):
+ (WebCore::setEnd):
+ * editing/VisibleSelection.cpp:
+ (WebCore::VisibleSelection::toNormalizedRange):
+ (WebCore::makeSearchRange):
+ (WebCore::VisibleSelection::debugPosition):
+ (WebCore::VisibleSelection::showTreeForThis):
+ * editing/htmlediting.cpp:
+ (WebCore::comparePositions):
+ (WebCore::rangeCompliantEquivalent):
+ (WebCore::isFirstPositionAfterTable):
+ (WebCore::isLastPositionBeforeTable):
+ * editing/visible_units.cpp:
+ (WebCore::previousBoundary):
+ (WebCore::nextBoundary):
+ (WebCore::startPositionForLine):
+ (WebCore::startOfLine):
+ (WebCore::endPositionForLine):
+ (WebCore::nextLinePosition):
+ (WebCore::startOfParagraph):
+ (WebCore::endOfParagraph):
+ * page/AccessibilityObject.cpp:
+ (WebCore::updateAXLineStartForVisiblePosition):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::indexForVisiblePosition):
+ * page/DOMSelection.cpp:
+ (WebCore::DOMSelection::anchorOffset):
+ (WebCore::DOMSelection::baseOffset):
+ (WebCore::DOMSelection::focusOffset):
+ (WebCore::DOMSelection::extentOffset):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleMousePressEventSingleClick):
+ * page/Frame.cpp:
+ (WebCore::Frame::selectionLayoutChanged):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::indexForVisiblePosition):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::writeSelection):
+
+2009-03-10 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 23564: REGRESSION (r39230-39286): crash loading page that changes <input> display type and then calls innerHTML
+ https://bugs.webkit.org/show_bug.cgi?id=23564
+ rdar://problem/6537238
+
+ Test: fast/dom/HTMLElement/innerHTML-selection-crash.html
+
+ * editing/markup.cpp: (WebCore::createMarkup): Added updateLayoutIgnorePendingStylesheets
+ call to the one of the two overloads of this function that wasn't calling it. This fixes
+ this crash and other possible crashes inside innerHTML.
+
+2009-03-10 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24285
+ Text resource loading checks for BOM twice
+
+ This removes TextDecoder class, since its only purpose was to check for BOM, which is
+ already done in TextResourceDecoder. Callers that use TextEncoding::decode() won't get
+ BOM checked, but I didn't find any cases where it would significantly change behavior.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ Remove TextDecoder.{h,cpp}.
+
+ * platform/text/TextDecoder.cpp: Removed.
+ * platform/text/TextDecoder.h: Removed.
+
+ * loader/TextResourceDecoder.h: Instead of a TextDecoder object, keep TextEncoding and
+ TextCodec separately.
+
+ * loader/TextResourceDecoder.cpp:
+ (WebCore::TextResourceDecoder::TextResourceDecoder): Updated for m_encoding being a member.
+ (WebCore::TextResourceDecoder::setEncoding): Ditto.
+ (WebCore::TextResourceDecoder::checkForBOM): Removed a FIXME saying that a BOM could override
+ even a user-chosen encoding - this is how it already worked due to TextDecoder checking for
+ BOM again. Made this function return the detected BOM length.
+ (WebCore::TextResourceDecoder::decode): Skip the BOM if it was found at the beginning of
+ a text resource.
+ (WebCore::TextResourceDecoder::flush): Reset m_checkedForBOM, so that re-decoding the same
+ resource again (as frequently done by CachedResource subclasses) will skip the BOM correctly.
+
+ * platform/text/TextEncoding.cpp: (WebCore::TextEncoding::decode):
+ Use TextCodec directly without a TextDecoder wrapper. This means that this method no longer
+ checks for BOM, which was a counter-intuitive feature.
+
+ * loader/CachedScript.cpp:
+ (WebCore::CachedScript::CachedScript):
+ (WebCore::CachedScript::setEncoding):
+ (WebCore::CachedScript::encoding):
+ (WebCore::CachedScript::script):
+ * loader/CachedScript.h:
+ * loader/appcache/ManifestParser.cpp:
+ (WebCore::parseManifest):
+ Use TextResourceDecoder, as TextEncoding::decode() no longer checks for BOM.
+ A side effect of this is that these resources will now be subject to encoding auto-detection.
+
+ * loader/CachedFont.cpp: (WebCore::CachedFont::ensureSVGFontData):
+ * page/Page.cpp: (WebCore::Page::userStyleSheet):
+ Be sure to flush TextResourceDecoder, pushing any remaining bytes out, and making the decoder
+ re-usable (for repeated decoding of the same resource).
+
+ * platform/text/TextEncodingRegistry.h: Updated comments for newTextCodec().
+
+2009-03-10 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24488
+ An assertion failure when updating an offline application cache after emptying caches
+
+ Emptying appcache cannot be performed automatically, so no test.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): Ensure that the cache is in disk
+ storage, even if the application wasn't updated server side.
+
+2009-03-10 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ <rdar://problem/6425807> Implement WorkerUtils.importScripts()
+ <https://bugs.webkit.org/show_bug.cgi?id=22721>
+
+ Implement importScripts, currently uses a series of synchronous loads
+ to fetch the scripts, but this is simpler than a synchronous load of
+ multiple loads in parallel. In future we'll want to switch to parallel
+ loading, but this will do for now.
+
+ Test: http/tests/workers/worker-importScripts.html
+
+ * GNUmakefile.am:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::importScripts):
+ * bindings/js/ScriptValue.h:
+ (WebCore::ScriptValue::hasNoValue):
+ * bindings/js/WorkerScriptController.cpp:
+ (WebCore::WorkerScriptController::evaluate):
+ (WebCore::WorkerScriptController::setException):
+ * bindings/js/WorkerScriptController.h:
+ * dom/Document.cpp:
+ (WebCore::Document::scriptImported):
+ * dom/Document.h:
+ * dom/ScriptExecutionContext.h:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::scriptImported):
+ * inspector/InspectorController.h:
+ * inspector/InspectorResource.cpp:
+ (WebCore::InspectorResource::setScriptProperties):
+ * inspector/InspectorResource.h:
+ * workers/WorkerContext.cpp:
+ (WebCore::WorkerContext::scriptImported):
+ (WebCore::WorkerContext::importScripts):
+ * workers/WorkerContext.h:
+ * workers/WorkerContext.idl:
+ * workers/WorkerImportScriptsClient.cpp: Added.
+ (WebCore::WorkerImportScriptsClient::didReceiveResponse):
+ (WebCore::WorkerImportScriptsClient::didReceiveData):
+ (WebCore::WorkerImportScriptsClient::didFinishLoading):
+ (WebCore::WorkerImportScriptsClient::didFail):
+ (WebCore::WorkerImportScriptsClient::didFailRedirectCheck):
+ (WebCore::WorkerImportScriptsClient::didReceiveAuthenticationCancellation):
+ * workers/WorkerImportScriptsClient.h: Added.
+ (WebCore::WorkerImportScriptsClient::WorkerImportScriptsClient):
+ (WebCore::WorkerImportScriptsClient::script):
+ (WebCore::WorkerImportScriptsClient::failed):
+
+2009-03-10 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24462
+ Move cross-origin access control code out of XMLHttpRequest
+
+ Step 1: move preflight result cache and access control helper functions.
+
+ No change in behavior, so no test.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * loader/CrossOriginAccessControl.cpp: Added.
+ (WebCore::isOnAccessControlSimpleRequestHeaderWhitelist):
+ (WebCore::isSimpleCrossOriginAccessRequest):
+ (WebCore::createAllowedCrossOriginResponseHeadersSet):
+ (WebCore::isOnAccessControlResponseHeaderWhitelist):
+ (WebCore::passesAccessControlCheck):
+ * loader/CrossOriginAccessControl.h: Added.
+ * loader/CrossOriginPreflightResultCache.cpp: Added.
+ (WebCore::parseAccessControlMaxAge):
+ (WebCore::addToAccessControlAllowList):
+ (WebCore::parseAccessControlAllowList):
+ (WebCore::CrossOriginPreflightResultCacheItem::parse):
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginMethod):
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsCrossOriginHeaders):
+ (WebCore::CrossOriginPreflightResultCacheItem::allowsRequest):
+ (WebCore::CrossOriginPreflightResultCache::shared):
+ (WebCore::CrossOriginPreflightResultCache::appendEntry):
+ (WebCore::CrossOriginPreflightResultCache::canSkipPreflight):
+ * loader/CrossOriginPreflightResultCache.h: Added.
+ (WebCore::CrossOriginPreflightResultCacheItem::CrossOriginPreflightResultCacheItem):
+ (WebCore::CrossOriginPreflightResultCache::CrossOriginPreflightResultCache):
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequestStaticData::XMLHttpRequestStaticData):
+ (WebCore::XMLHttpRequest::createRequest):
+ (WebCore::XMLHttpRequest::makeCrossOriginAccessRequest):
+ (WebCore::XMLHttpRequest::makeSimpleCrossOriginAccessRequest):
+ (WebCore::XMLHttpRequest::makeCrossOriginAccessRequestWithPreflight):
+ (WebCore::XMLHttpRequest::didReceiveResponse):
+ (WebCore::XMLHttpRequest::didReceiveResponsePreflight):
+ * xml/XMLHttpRequest.h:
+
+2009-03-10 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19797
+ Bring the list of forbidden headers in sync with XMLHttpRequest spec draft
+
+ Added new checks to http/tests/xmlhttprequest/set-dangerous-headers.html.
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequestStaticData::XMLHttpRequestStaticData): Added all headers from
+ XMLHttpRequest 2 draft.
+
+2009-03-10 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=23975
+ <rdar://problem/6593610> REGRESSION: Scrollbar arrow not repainted
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::invalidateScrollbarRect): Corrected the vertical
+ scrollbar rect calculation.
+
+2009-03-09 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein, Oliver Hunt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24475
+
+ When repainting replaced elements, need to union the selection
+ and overflow rects because either may extend outside the other.
+
+ Test: fast/repaint/transform-replaced-shadows.html
+
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::clippedOverflowRectForRepaint):
+
+2009-03-09 Stephanie Lewis <slewis@apple.com>
+
+ Fix build.
+
+ * editing/Editor.cpp:
+ (WebCore::Editor::advanceToNextMisspelling):
+ (WebCore::markAllMisspellingsAndBadGrammarInRanges):
+
+2009-03-09 Kim Christensen <kimworking@gmail.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24276
+ Dropdown / select boxes do not consider the windows task bar in Chromium.
+
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupContainer::showPopup):
+
+2009-03-09 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Adele Peterson and Dave Hyatt.
+
+ - fix <rdar://problem/6654344> REGRESSION (r41041): Zillow.com has
+ misaligned edit fields
+
+ Test: fast/forms/legend-display-none.html
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::adjustRenderStyle): Change the display
+ property of legend elements to 'block' unless it is 'none'.
+ * css/html4.css: Do not force the display property of legend elements to
+ 'block' using CSS, because that prevents style rules from setting it to
+ 'none'.
+
+2009-03-09 Alpha Lam <hclam@chromium.org>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23024
+
+ Fix an incorrect criteria in the if statement that leaves references to
+ deleted floating objects in RenderBlock.
+
+ Test: fast/block/float/crash-on-absolute-positioning.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::markAllDescendantsWithFloatsForLayout):
+
+2009-03-09 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Eric Seidel.
+
+ Unify JSC/V8 idl file.
+ https://bugs.webkit.org/show_bug.cgi?id=24424
+
+ * page/Location.idl:
+
+2009-03-09 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Eric Seidel.
+
+ Unify JSC/V8 for History.idl.
+
+ * page/History.idl:
+
+2009-03-09 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Eric Seidel.
+
+ Unify JSC/V8 implementations of DOMWindow.idl.
+
+ * page/DOMWindow.idl:
+
+2009-03-09 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24163
+
+ Implement mapping of FloatQuads through 3D transforms.
+
+ Removed the redundant localToContainerQuad() methods, which can now
+ shared code with the old mapLocalToAbsolutePoint(), which was
+ renamed to mapLocalToContainer(). This can now convert a point,
+ and optionally a FloatQuad, which are carried along in the TransformState.
+
+ Optimized TransformState to reduce to simple FloatPoint.move()
+ if there are no transforms, and to heap-allocate a transform only if
+ necessary to accumulate transforms (when using preserve-3d).
+
+ Tested by 3d point mapping tests, and the inspector highlight (which now shows
+ the correct quads for 3d-transformed elements).
+
+ * platform/graphics/transforms/TransformationMatrix.cpp:
+ (WebCore::TransformationMatrix::projectQuad):
+ (WebCore::TransformationMatrix::translateRight):
+ (WebCore::TransformationMatrix::translateRight3d):
+ * platform/graphics/transforms/TransformationMatrix.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::mapLocalToContainer):
+ (WebCore::RenderBox::mapAbsoluteToLocalPoint):
+ * rendering/RenderBox.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::localToAbsolute):
+ (WebCore::RenderObject::absoluteToLocal):
+ (WebCore::RenderObject::mapLocalToContainer):
+ (WebCore::RenderObject::localToContainerQuad):
+ * rendering/RenderObject.h:
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::mapLocalToContainer):
+ * rendering/RenderTableCell.h:
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::mapLocalToContainer):
+ * rendering/RenderView.h:
+ * rendering/TransformState.cpp:
+ (WebCore::TransformState::move):
+ (WebCore::TransformState::applyTransform):
+ (WebCore::TransformState::flatten):
+ (WebCore::TransformState::mappedPoint):
+ (WebCore::TransformState::mappedQuad):
+ (WebCore::TransformState::flattenWithTransform):
+ (WebCore::HitTestingTransformState::mappedQuad):
+ * rendering/TransformState.h:
+ (WebCore::TransformState::TransformState):
+ (WebCore::TransformState::move):
+ (WebCore::TransformState::lastPlanarPoint):
+ (WebCore::TransformState::lastPlanarQuad):
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::preserves3D):
+
+2009-03-09 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24433
+
+ During hit testing with transforms, if a layer has backface-visibility: hidden,
+ we need to check for it whether or not the layer has a transform, because it
+ might be an ancestor that is transformed.
+
+ Test: transforms/3d/hit-testing/backface-no-transform-hit-test.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTestLayer):
+
+2009-03-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24353
+ Allow to overrule default build options for Qt build.
+
+ * WebCore.pro: Allow to overrule ENABLE_VIDEO and ENABLE_NETSCAPE_PLUGIN_API
+
+2009-03-09 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24463
+ WebCore::qstring is detaching and copying twice for every single
+ WebCore::TextRun that is processed and drawn. This elevates this method
+ to one of the top-ten most expensive methods in all of QtWebKit according
+ to profiling. This changes the method so that QString only detaches
+ when absolutely necessary.
+
+ * platform/graphics/qt/FontQt.cpp:
+ (WebCore::qstring):
+ (WebCore::fixSpacing):
+ (WebCore::Font::drawComplexText):
+ (WebCore::Font::floatWidthForComplexText):
+ (WebCore::Font::offsetForPositionForComplexText):
+ (WebCore::Font::selectionRectForComplexText):
+
+2009-03-08 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Split ScrollAlignment and ScrollBehavior out of RenderLayer.h so that
+ Frame.h no longer needs to include it. This cuts the size of the symbols
+ for a debug build by around 3%.
+
+ * dom/Element.cpp:
+ (WebCore::Element::scrollIntoView):
+ (WebCore::Element::scrollIntoViewIfNeeded):
+ * editing/Editor.cpp:
+ (WebCore::Editor::insertTextWithoutSendingTextEvent):
+ (WebCore::Editor::revealSelectionAfterEditingOperation):
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::setSelection):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::gotoAnchor):
+ * page/ContextMenuController.cpp:
+ (WebCore::ContextMenuController::contextMenuItemSelected):
+ * page/Frame.cpp:
+ (WebCore::Frame::revealSelection):
+ (WebCore::Frame::revealCaret):
+ * page/Frame.h:
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::getRectToExpose):
+ (WebCore::RenderLayer::autoscroll):
+ * rendering/RenderLayer.h:
+ * rendering/ScrollBehavior.cpp: Added.
+ (WebCore::):
+ * rendering/ScrollBehavior.h: Added.
+ (WebCore::):
+ (WebCore::ScrollAlignment::getVisibleBehavior):
+ (WebCore::ScrollAlignment::getPartialBehavior):
+ (WebCore::ScrollAlignment::getHiddenBehavior):
+
+ Add the new files to the build systems:
+ * GNUmakefile.am:
+ * WebCore.base.exp:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+
+ Add includes that were previously pulled in by way of RenderLayer.h from Frame.h:
+ * dom/Clipboard.cpp:
+ * editing/EditorCommand.cpp:
+ * editing/InsertLineBreakCommand.cpp:
+ * editing/TypingCommand.cpp:
+ * html/HTMLFormControlElement.cpp:
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ * loader/icon/IconLoader.cpp:
+ * page/animation/AnimationController.cpp:
+ * rendering/RenderSlider.cpp:
+ * rendering/RenderTextControl.cpp:
+
+
+2009-03-08 Mark Rowe <mrowe@apple.com>
+
+ Reviewed Dan Bernstein.
+
+ Push the include of Frame.h out of RenderView.h and down to those files
+ that need it. This cuts the size of symbols for RenderFoo object files
+ by around 15% in a debug build.
+
+ * bindings/objc/DOM.mm:
+ * rendering/RenderFileUploadControl.cpp:
+ * rendering/RenderInline.cpp:
+ * rendering/RenderObject.cpp:
+ * rendering/RenderReplaced.cpp:
+ * rendering/RenderText.cpp:
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::zoomFactor):
+ * rendering/RenderView.h:
+
+2009-03-08 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Dan Bernstein.
+
+ Remove some unnecessary or redundant includes from files related to the JS bindings.
+ This cuts the size of the symbols for a debug build by around 3%.
+
+ * bindings/js/JSCustomPositionCallback.cpp:
+ * bindings/js/JSCustomPositionErrorCallback.cpp:
+ * bindings/js/JSCustomSQLStatementCallback.cpp:
+ * bindings/js/JSCustomSQLStatementErrorCallback.cpp:
+ * bindings/js/JSCustomSQLTransactionCallback.cpp:
+ * bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
+ * bindings/js/JSCustomVoidCallback.cpp:
+ * bindings/js/JSCustomXPathNSResolver.cpp:
+ * bindings/js/JSDocumentCustom.cpp:
+ * bindings/js/JSPluginElementFunctions.cpp:
+ * bindings/js/JSSVGPODTypeWrapper.h:
+
+2009-03-08 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Oliver Hunt.
+
+ Remove the unused methods previousHistoryItem(), setPreviousHistoryItem()
+ and provisionalHistoryItem() from FrameLoader.
+
+ * WebCore.base.exp:
+ * WebCore.order:
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::frameLoadCompleted):
+ (WebCore::FrameLoader::loadItem):
+ * loader/FrameLoader.h:
+
+2009-03-08 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Implement proper logging for the GTK+ port, inspired by the one in
+ Qt. We use the WEBKIT_DEBUG environment variable which was already
+ being used to decide whether to setup a logger for soup or not.
+
+ * platform/gtk/LoggingGtk.cpp:
+ (WebCore::getChannelFromName):
+ (WebCore::InitializeLoggingChannelsIfNecessary):
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ensureSessionIsInitialized):
+
+2009-03-07 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ - WebCore part of removing build-time and run-time support for legacy
+ versions of CFNetwork and Core Graphics
+
+ * platform/graphics/win/FontCGWin.cpp:
+ (WebCore::Font::drawGlyphs):
+ * platform/graphics/win/FontCustomPlatformData.cpp:
+ (WebCore::FontCustomPlatformData::fontPlatformData):
+ * platform/graphics/win/FontPlatformDataCGWin.cpp:
+ (WebCore::FontPlatformData::platformDataInit):
+ * platform/network/cf/FormDataStreamCFNet.cpp:
+ (WebCore::setHTTPBody):
+ (WebCore::httpBodyFromRequest):
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::didSendBodyData):
+ (WebCore::shouldUseCredentialStorageCallback):
+ (WebCore::ResourceHandle::start):
+ * platform/network/win/CookieJarCFNetWin.cpp:
+ (WebCore::filterCookies):
+
+2009-03-07 Adele Peterson <adele@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=24444
+ No multiple JS property for <input type="file" multiple />
+
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::multiple):
+ (WebCore::HTMLInputElement::setMultiple):
+ * html/HTMLInputElement.h:
+ * html/HTMLInputElement.idl:
+
+2009-03-07 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24358
+ [GTK] Scrollbars not clipped correctly
+
+ ScrollView scrollbars in subframes are *not* native, so take that
+ into account again.
+
+ * platform/gtk/ScrollbarGtk.cpp:
+ (ScrollbarGtk::getLocationInParentWindow):
+ (ScrollbarGtk::frameRectsChanged):
+ (ScrollbarGtk::paint):
+ * platform/gtk/ScrollbarGtk.h:
+
+2009-03-06 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24405
+ Horizontal scrolling on Windows was reversed from Mac (and intuition).
+
+ * platform/gtk/WheelEventGtk.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/win/WheelEventWin.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+
+2009-03-06 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Sam Weinig.
+
+ Convert some C-style casts to static_cast<>()s.
+
+ * platform/gtk/WheelEventGtk.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/mac/WheelEventMac.mm:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/win/WheelEventWin.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/wx/MouseWheelEventWx.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+
+2009-03-06 Adele Peterson <adele@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for <rdar://problem/6607524> REGRESSION (Safari 3-4): I can't tab back to the URL field in an empty window (key loop is broken)
+
+ I haven't been able to make a test for this since the problem is not reproducible within an empty iframe.
+
+ * page/EventHandler.cpp: (WebCore::eventTargetNodeForDocument): We used to ensure that every html document had a body element.
+ That is no longer true, so we should return the document element for a truly empty document.
+
+2009-03-06 Jay Campan <jcampan@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24306
+
+ Adding a flag to ResourceRequestBase to indicate whether or not upload
+ progress notifications are needed for a resource. This is useful to
+ avoid sending these notifications when there are no consumers
+ (especially in the Chromium case where IPC is involved).
+
+ * platform/network/ResourceRequestBase.h:
+ (WebCore::ResourceRequestBase::reportUploadProgress):
+ (WebCore::ResourceRequestBase::setReportUploadProgress):
+ (WebCore::ResourceRequestBase::ResourceRequestBase):
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::loadRequestAsynchronously):
+
+2009-03-06 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24150
+ Add virtual ScriptExecutionContext::encoding()
+
+ Test: http/tests/workers/text-encoding.html
+
+ * dom/Document.cpp:
+ (WebCore::Document::encoding):
+ * dom/Document.h:
+ (WebCore::Document::inputEncoding):
+ (WebCore::Document::charset):
+ (WebCore::Document::characterSet):
+ Add new virtual method and route DOM synonym functions on Document through it.
+
+ * dom/ScriptExecutionContext.h:
+ * workers/Worker.cpp:
+ (WebCore::Worker::Worker):
+ (WebCore::Worker::notifyFinished):
+ * workers/WorkerContext.cpp:
+ (WebCore::WorkerContext::WorkerContext):
+ (WebCore::WorkerContext::encoding):
+ (WebCore::WorkerContext::completeURL): Added comment on why this is different from Document::completeURL
+ * workers/WorkerContext.h:
+ (WebCore::WorkerContext::create):
+ * workers/WorkerContextProxy.h:
+ * workers/WorkerMessagingProxy.cpp:
+ (WebCore::WorkerMessagingProxy::startWorkerContext):
+ * workers/WorkerMessagingProxy.h:
+ * workers/WorkerThread.cpp:
+ (WebCore::WorkerThreadStartupData::create):
+ (WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
+ (WebCore::WorkerThread::create):
+ (WebCore::WorkerThread::WorkerThread):
+ (WebCore::WorkerThread::workerThread):
+ * workers/WorkerThread.h:
+ All of the above route the 'encoding' parameter of parent context to the new
+ instance of WorkerContext - from Worker::notifyFinished() via WorkerMessagingProxy
+ through WorkerThread through WorkerThreadStartupData and into constructor of WorkerContext.
+
+2009-03-06 Peter Kasting <pkasting@google.com>
+
+ Build bustage fix.
+
+ * dom/Node.cpp:
+ (WebCore::Node::dispatchWheelEvent):
+
+2009-03-06 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Antti Koivisto.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::createQTMovieView): Delay callback while setting up movieview.
+
+2009-03-06 Douglas R. Davidson <ddavidso@apple.com>
+
+ Reviewed by Justin Garcia.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24108
+
+ Update spelling and grammar checking to use the new combined text
+ checking (with automatic language identification) on Snow Leopard.
+ Tested manually in Mail and Safari; automated tests to come later.
+
+ * editing/Editor.cpp:
+ (WebCore::findFirstMisspellingOrBadGrammarInRange):
+ (WebCore::Editor::advanceToNextMisspelling):
+ (WebCore::guessesForMisspelledOrUngrammaticalRange):
+ (WebCore::Editor::guessesForMisspelledOrUngrammaticalSelection):
+ (WebCore::Editor::markMisspellingsAfterTypingToPosition):
+ (WebCore::markAllMisspellingsAndBadGrammarInRanges):
+ (WebCore::Editor::markMisspellingsAndBadGrammar):
+ * editing/Editor.h:
+ * loader/EmptyClients.h:
+ (WebCore::EmptyEditorClient::checkSpellingAndGrammarOfParagraph):
+ * page/EditorClient.h:
+ * page/Frame.cpp:
+ (WebCore::Frame::respondToChangedSelection):
+ * platform/ContextMenu.cpp:
+ (WebCore::ContextMenu::populate):
+
+2009-03-06 Peter Kasting <pkasting@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24407
+ Windows scroll amount was too small, and wheel scroll distance
+ conversion code was overly complex.
+
+ * page/EventHandler.cpp:
+ (WebCore::scrollAndAcceptEvent):
+ * platform/PlatformWheelEvent.h:
+ (WebCore::):
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::wheelEvent):
+ * platform/Scrollbar.h:
+ * platform/gtk/WheelEventGtk.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/mac/WheelEventMac.mm:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/qt/WheelEventQt.cpp:
+ * platform/win/WheelEventWin.cpp:
+ (WebCore::horizontalScrollChars):
+ (WebCore::verticalScrollLines):
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/wx/MouseWheelEventWx.cpp:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+
+2009-03-06 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Adam Roben.
+
+ Generate valid bindings with HTML5 database support disabled.
+
+ * inspector/InspectorController.idl: Added feature guard around
+ databaseTableNames definition.
+
+2009-03-04 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24358
+ [GTK] Scrollbars not clipped correctly
+
+ Do not take into account the case of being a ScrollView scrollbar,
+ since those are native in our case.
+
+ * platform/gtk/ScrollbarGtk.cpp:
+ (ScrollbarGtk::frameRectsChanged):
+
+2009-03-04 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24358
+ [GTK] Scrollbars not clipped correctly
+
+ Move Widget::paint to ScrollbarGtk::paint, since it's scrollbar
+ specific and it's our only Widget anyway.
+
+ * platform/gtk/ScrollbarGtk.cpp:
+ (ScrollbarGtk::paint):
+ * platform/gtk/ScrollbarGtk.h:
+ * platform/gtk/WidgetGtk.cpp:
+
+2009-03-04 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24358
+ [GTK] Scrollbars not clipped correctly
+
+ Use correct clip rectangle and apply coordinate translation needed
+ for non-ScrollView scrollbars.
+
+ We were ignoring the clip rectangle passed as parameter, which is
+ wrong in the case of non coalesced expose events. This, in turn,
+ uncovers the fact that we were not applying coordinate translation
+ to our position.
+
+ * platform/gtk/WidgetGtk.cpp:
+ (WebCore::Widget::paint):
+
+2009-03-06 Eric Carlson <eric.carlson@apple.com>
+
+ Build fix, no review
+
+ * platform/graphics/chromium/MediaPlayerPrivateChromium.h: fix setSize declaration
+
+2009-03-06 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22790
+ Bug 22790: [Transforms] MediaPlayer::setRect() makes no sense with transforms
+ Replace media engine setRect with setSize since they don't use about the
+ position anyway.
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::NullMediaPlayerPrivate::setSize): Changed from setRect.
+ (WebCore::MediaPlayer::setSize): Ditto.
+ * platform/graphics/MediaPlayer.h:
+ (WebCore::MediaPlayer::size): Changed from rect().
+
+ * platform/graphics/MediaPlayerPrivate.h: Changed setRect to setSize.
+
+ * platform/graphics/chromium/MediaPlayerPrivateChromium.h: Ditto.
+
+ * platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:
+ (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): Initialize m_size instead of m_rect
+ (WebCore::MediaPlayerPrivate::setSize): Changed from setRect
+ (WebCore::MediaPlayerPrivate::paint): update comment
+ * platform/graphics/gtk/MediaPlayerPrivateGStreamer.h: m_rect -> m_size.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.h: m_rect
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): Initialize m_rect.
+ (WebCore::MediaPlayerPrivate::createQTMovieView): setRect-> setSize.
+ (WebCore::MediaPlayerPrivate::setSize): Changed from setRect
+ (WebCore::MediaPlayerPrivate::paint): Call view:setFrame: when in a media document so
+ the movie is drawn in the correct location.
+
+ * platform/graphics/qt/MediaPlayerPrivatePhonon.cpp:
+ (WebCore::MediaPlayerPrivate::setSize): Changed from setRect
+ * platform/graphics/qt/MediaPlayerPrivatePhonon.h:
+
+ * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.cpp:
+ (WebCore::MediaPlayerPrivate::setSize): Changed from setRect
+ * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h:
+
+ * rendering/RenderVideo.cpp:
+ (WebCore::RenderVideo::updatePlayer): Call setSize instead of setRect.
+
+2009-03-06 Darin Adler <darin@apple.com>
+
+ Reviewed by Darin Fisher.
+
+ Bug 24422: REGRESSION: null-URL crash in FrameLoader setting location.hash on new window
+ https://bugs.webkit.org/show_bug.cgi?id=24422
+ rdar://problem/6402208
+
+ Test: fast/dom/location-new-window-no-crash.html
+
+ The issue here is empty (or null) URLs. I picked the "schedule navigation" bottleneck
+ to add some checks for empty URLs. We could also put the empty URL checks at some
+ other bottleneck level and add more assertions over time. I tried adding a few more
+ assertions to functions like loadURL and hit them while running the regression tests,
+ so it's probably going to be a bit tricky to clean this up throughout the loader.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::ScheduledRedirection::ScheduledRedirection): Explicitly marked this struct
+ immutable by making all its members const. Added assertions about the arguments,
+ including that the URL is not empty. Initialized one uninitialized member in one of
+ the constructors.
+ (WebCore::FrameLoader::scheduleHTTPRedirection): Added an early exit to make this
+ a no-op if passed an empty URL.
+ (WebCore::FrameLoader::scheduleLocationChange): Ditto.
+ (WebCore::FrameLoader::scheduleRefresh): Ditto.
+
+2009-03-06 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24423
+ Use new soup_message_body_set_accumulate API in soup backend
+
+ Disable accumulating chunks for request_body on file uploads,
+ using the new soup API.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::startHttp):
+
+2009-03-06 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Replace use of deprecated SOUP_MESSAGE_OVERWRITE_CHUNKS flag with
+ the new soup_message_body_set_accumulate API in soup.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::gotHeadersCallback):
+ (WebCore::ResourceHandle::startHttp):
+
+2009-03-06 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24051
+ Soup backend needs content sniffing capabilities
+
+ Perform content sniffing when using soup, so that we have a chance
+ of figuring out the Content-Type of the file if it's not sent by
+ the server.
+
+ * platform/network/ResourceHandleInternal.h:
+ (WebCore::ResourceHandleInternal::ResourceHandleInternal):
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::gotHeadersCallback):
+ (WebCore::gotChunkCallback):
+
+2009-03-06 Hironori Bono <hbono@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24342
+ Cannot insert a Thai character after a Thai prepend character when using ICU 4.0
+
+ This change creates a new break iterator "cursorMovementIterator" for
+ moving cursors and use it when moving an input cursor.
+ In "TextBreakIteratorICU.cpp", this break iterator uses custom ruleset
+ based on the one of ICU 3.8.
+ On the other hand, in "TextBreakIteratorQt.cpp", this break iterator
+ just calls the characterBreakIterator() function.
+
+ Test: editing/inserting/insert-thai-characters-001.html
+
+ * platform/text/TextBreakIterator.h: Added a new function cursorMovementIterator().
+ * platform/text/TextBreakIteratorICU.cpp: Implemented the cursorMovementIterator() function for ICU.
+ (WebCore::setUpIteratorWithRules): Ditto.
+ (WebCore::cursorMovementIterator): Ditto.
+ * platform/text/qt/TextBreakIteratorQt.cpp: Implemented the cursorMovementIterator() function for Qt.
+ (WebCore::cursorMovementIterator): Ditto.
+ * rendering/RenderText.cpp: Call the cursorMovementIterator() function when moving an input cursor.
+ (WebCore::RenderText::previousOffset): Ditto.
+ (WebCore::RenderText::nextOffset): Ditto.
+
+2009-03-05 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ <rdar://problem/6621701> Safari 4 Beta Breaks XMLHttpRequest Response Text With Special
+ Characters (a compatibility issue with widgets).
+
+ Test: http/tests/xmlhttprequest/broken-xml-encoding.html
+
+ Revert part of an Acid 3 fix - now we are no longer strict when decoding XMLHttpRequest XML
+ responses.
+
+ * loader/TextResourceDecoder.cpp:
+ (WebCore::TextResourceDecoder::TextResourceDecoder):
+ (WebCore::TextResourceDecoder::decode):
+ (WebCore::TextResourceDecoder::flush):
+ * loader/TextResourceDecoder.h:
+ (WebCore::TextResourceDecoder::useLenientXMLDecoding):
+ Don't stop on XML decoding errors if useLenientXMLDecoding() was called.
+
+ * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::didReceiveData): Don't stop on XML
+ decoding errors. This behavior is now limited to other kinds of XML content.
+
+2009-03-05 Simone Fiorentino <simone.fiorentino@consulenti.fastweb.it>
+
+ Bug 24382: request to add SH4 platform
+
+ <https://bugs.webkit.org/show_bug.cgi?id=24382>
+
+ Reviewed by David Kilzer.
+
+ * platform/text/AtomicString.cpp:
+ (WebCore::equal): Aligned memory access on SH4 platform.
+
+2009-03-05 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Simon Fraser.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=24215
+
+ Gears expects an object tag with display:none to instantiate the plugin,
+ so we add a workaround to make this work and fix Gears on WebKit trunk.
+
+ * html/HTMLObjectElement.cpp:
+ (WebCore::HTMLObjectElement::rendererIsNeeded):
+
+2009-03-05 Avi Drissman <avi@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Need to have Chromium Mac match Safari Mac's accesskey handling
+ https://bugs.webkit.org/show_bug.cgi?id=24404
+
+ * page/chromium/EventHandlerChromium.cpp:
+ (WebCore::EventHandler::accessKeyModifiers): Share access key modifiers with Mac Safari when building for the Mac.
+
+2009-03-05 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24412
+
+ Fix crash when hit-testing elements with -webkit-transform-style: preserve-3d
+ but no transform. We need to make localTransformState if we see preserve-3d.
+ Also need to call update3DTransformedDescendantStatus() before we test
+ m_has3DTransformedDescendant.
+
+ Test: transforms/3d/hit-testing/hit-preserves-3d.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTestLayer):
+
+2009-03-05 Eric Seidel <eric@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Changes to RenderLayer destruction to hopefully help catch an elusive crasher
+ https://bugs.webkit.org/show_bug.cgi?id=24409
+
+ Added a new RenderBoxModelObject::destroyLayer() call which is
+ now the only way which RenderLayers should ever be destroyed.
+ This ensures that the pointer to the layer is cleared in the
+ RenderObject after destruction, allowing us to ASSERT in the
+ RenderBoxModelObject destructor.
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::~RenderBoxModelObject):
+ (WebCore::RenderBoxModelObject::destroyLayer):
+ (WebCore::RenderBoxModelObject::destroy):
+ (WebCore::RenderBoxModelObject::styleDidChange):
+ * rendering/RenderBoxModelObject.h:
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::stackingContext):
+ (WebCore::RenderLayer::destroy):
+ (WebCore::RenderLayer::removeOnlyThisLayer):
+ * rendering/RenderLayer.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::destroy):
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::destroy):
+
+2009-03-05 Eric Seidel <eric@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Remove old, unused IE 5.5 scrollbar-* CSS properties.
+ Sort the unimplemented getComputedStyle properties so it's
+ easier to see which ones actually need implementation.
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseValue):
+ * css/CSSPropertyNames.in:
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::applyProperty):
+
+2009-03-05 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Darin Adler.
+
+ WebViewDidChangeSelectionNotifications weren't being sent for commands that change the selection's position
+ within the document without changing its position in the DOM. For example, pressing return in (caret marked by ^):
+ <div contentEditable="true"><div>^Hello</div></div>
+ Undo was being enabled, shouldDeleteDOMRange called, etc. when doing no-op deletes (a delete in an empty document
+ for example).
+
+ Changes to layout tests demonstrate fix.
+
+ * editing/EditCommand.cpp:
+ (WebCore::EditCommand::apply): Don't call applyEditing for a TypingCommand. The TypingCommand knows whether or
+ not it did work that needs to be applied.
+ * editing/Editor.cpp:
+ (WebCore::Editor::appliedEditing): Moved code (but did not alter) to changeSelectionAfterCommand.
+ (WebCore::Editor::unappliedEditing): Ditto.
+ (WebCore::Editor::reappliedEditing): Ditto.
+ (WebCore::Editor::changeSelectionAfterCommand): Moved code from *appliedEditing into here. Also call out to
+ EditorClient::respondToChangedSelection() for commands that changed the selection's position in the document
+ even if they did not change it's position in the DOM. Any TypingCommand that gets this far changed it's position
+ in the document.
+ * editing/Editor.h:
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::TypingCommand): Removed unused m_appliedEditing.
+ (WebCore::TypingCommand::typingAddedToOpenCommand): Always apply editing. We won't get this far if we don't need to.
+ (WebCore::TypingCommand::deleteKeyPressed): Don't do any of the things that only make sense for Range selections, like
+ adding to the killring and responding to a change in selections if the delete was a no-op.
+ (WebCore::TypingCommand::forwardDeleteKeyPressed): Ditto.
+ * editing/TypingCommand.h:
+
+2009-03-05 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Adam Roben.
+
+ Eliminate a ref-counting leak in InspectorController.
+
+ * inspector/InspectorController.h: Made constructor private, added static create method.
+ * page/Page.cpp:
+ (WebCore::Page::Page): Change initializer to use static create method.
+
+2009-03-05 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24355
+ Add InspectorController.idl and convert InspectorController.cpp to use
+ JSC bindings.
+
+ * DerivedSources.make: Added InspectorController.idl
+ * WebCore.xcodeproj/project.pbxproj: Added idl, bindings files.
+ * bindings/js/JSInspectorControllerCustom.cpp: Added.
+ * bindings/scripts/CodeGeneratorJS.pm: Added Array to no-header types.
+ * inspector/InspectorController.cpp: Removed hand-rolled bindings.
+ * inspector/InspectorController.h: Added platform and addSourceToFrame methods.
+ * inspector/InspectorController.idl: Added.
+ * page/Page.h: Changed member to RefPtr since InspectorController is now ref-counted.
+
+2009-03-05 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24400
+ Bug 24400: Remove "start", "end", "loopStart", "loopEnd", "currentLoop", and "playCount"
+ media element attributes
+
+ Test: media/video-loop.html
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::HTMLMediaElement):
+ (WebCore::HTMLMediaElement::loadInternal):
+ (WebCore::HTMLMediaElement::setNetworkState):
+ (WebCore::HTMLMediaElement::seek):
+ (WebCore::HTMLMediaElement::playInternal):
+ (WebCore::HTMLMediaElement::loop):
+ (WebCore::HTMLMediaElement::setLoop):
+ (WebCore::HTMLMediaElement::mediaPlayerTimeChanged):
+ (WebCore::HTMLMediaElement::endedPlayback):
+ (WebCore::HTMLMediaElement::updatePlayState):
+ * html/HTMLMediaElement.h:
+ * html/HTMLMediaElement.idl:
+
+2009-03-05 Steve Falkenburg <sfalken@apple.com>
+
+ <rdar://problem/6651112> Safari asks about re-posting a form even when page is cached
+
+ Reviewed by Ada Chan.
+
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::ResourceHandle::willLoadFromCache): Ported from Mac version.
+
+2009-03-05 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Eric Seidel
+
+ https://bugs.webkit.org/show_bug.cgi?id=24248
+
+ Make sure painting of overflow controls checks that visibility:visible is set on the block before
+ painting. Pixel tests caught this regression.
+
+ Make sure resizer painting pushes a clip of the corner rect. It was relying on the clip layers happened
+ to do to their bounds (which had nothing to do with overflow).
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paint):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::paintResizer):
+
+2009-03-05 Yong Li <yong.li@torchmobile.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24386
+ A faster implementation of extractMIMETypeFromMediaType.
+
+ * platform/network/HTTPParsers.cpp:
+ (WebCore::extractMIMETypeFromMediaType):
+
+2009-03-05 Yong Li <yong.li@torchmobile.com>
+
+ Reviewed by Antti Koivisto.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24392
+ Do not get the current time for unless we're doing PRELOAD_DEBUG as this
+ can be unnecessarily expensive.
+
+ * html/PreloadScanner.cpp:
+ (WebCore::PreloadScanner::write):
+
+2009-03-04 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24327
+
+ When mapping points and hit testing through transforms, work
+ correctly when acclerated animations of transforms are running.
+
+ Tested by LayoutTests/animations/animation-hit-test-transform.html,
+ which only failed when ACCELERATED_COMPOSITING was turned on.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::currentTransform):
+ * rendering/RenderLayer.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::transformFromContainer):
+
+2009-03-05 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24391
+ Frame.cpp uses JSC specific includes
+
+ * page/Frame.cpp:
+
+2009-03-05 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24389
+ WebKitGTK+ crashes when cancelling plugin loads
+
+ Remove bogus calls to the client's didFinishLoading method from
+ our ResourceHandle::cancel implementation. Calling
+ didFinishLoading here is mostly inoffensive for most loads, but
+ causes crashes when plugin loads are cancelled.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::cancel):
+
+2009-03-05 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix.
+
+ * WebCore.vcproj/QTMovieWin.vcproj:
+
+2009-03-05 Adam Treat <adam.treat@torchmobile.com>
+
+ Build fix for when ENABLE_NETSCAPE_PLUGIN_API = 0. The method
+ ScriptController::jsObjectForPluginElement(HTMLPlugInElement*); is not
+ protected by an #if and uses HTMLPlugInElement so it must be included.
+
+ * bindings/js/ScriptController.cpp:
+
+2009-03-05 Dimitri Glazkov <dglazkov@chromium.org>
+
+ GTK Build fix.
+
+ * inspector/ConsoleMessage.h: Use proper header.
+
+2009-03-05 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24376
+ Split InspectorController.cpp file into separate classes.
+
+ * GNUmakefile.am: Modified to include new files.
+ * WebCore.pro: Ditto.
+ * WebCore.scons: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * WebCoreSources.bkl: Ditto.
+ * inspector/ConsoleMessage.cpp: Added.
+ * inspector/ConsoleMessage.h: Added.
+ * inspector/InspectorController.cpp:
+ * inspector/InspectorDOMStorageResource.cpp: Added.
+ * inspector/InspectorDOMStorageResource.h: Added.
+ * inspector/InspectorDatabaseResource.cpp: Added.
+ * inspector/InspectorDatabaseResource.h: Added.
+ * inspector/InspectorResource.cpp: Added.
+ * inspector/InspectorResource.h: Added.
+
+2009-03-05 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=24387
+ Remove media element bufferingRate attribute. No test necessary as there
+ were none for this attribute.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::HTMLMediaElement): Don't initialize m_bufferingRate.
+ (WebCore::HTMLMediaElement::loadInternal): Ditto.
+ (WebCore::HTMLMediaElement::setNetworkState): Ditto.
+ (WebCore::HTMLMediaElement::progressEventTimerFired): Don't calculate m_bufferingRate.
+ * html/HTMLMediaElement.h: Remove m_bufferingRate.
+ * html/HTMLMediaElement.idl: Ditto.
+
+2009-03-05 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24377
+ [GTK] Comply better with coding style guidelines in ResourceHandleSoup
+
+ Use C++ booleans, 0 instead of NULL, prefix boolean variables with
+ 'is', do not use 'else if' if the previous if had a return, delete
+ trailing whitespace, etc.
+
+ * platform/network/ResourceHandleInternal.h:
+ (WebCore::ResourceHandleInternal::ResourceHandleInternal):
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::WebCoreSynchronousLoader::WebCoreSynchronousLoader):
+ (WebCore::fillResponseFromMessage):
+ (WebCore::restartedCallback):
+ (WebCore::finishedCallback):
+ (WebCore::parseDataUrl):
+ (WebCore::ensureSessionIsInitialized):
+ (WebCore::ResourceHandle::startHttp):
+ (WebCore::reportUnknownProtocolError):
+ (WebCore::ResourceHandle::start):
+ (WebCore::cleanupGioOperation):
+ (WebCore::closeCallback):
+ (WebCore::readCallback):
+ (WebCore::openCallback):
+ (WebCore::queryInfoCallback):
+ (WebCore::ResourceHandle::startGio):
+
+2009-03-04 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Eric Seidel
+
+ https://bugs.webkit.org/show_bug.cgi?id=24328
+
+ If an element has backface-visibility: hidden, hit testing should not
+ hit the back sides of elements. Test for that by inverting the accumulated
+ transform and looking at the z vector.
+
+ Tested by transforms/3d/hit-testing/backface-hit-test.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTestLayer):
+
+2009-03-04 Adam Langley <agl@google.com>
+
+ Reviewed by Darin Fisher.
+
+ r41362 mistakenly added functions "RenderThemeWin::" into
+ RenderThemeChromiumGtk.cpp. When correcting this, I somehow changed
+ them to void return types. This patch switches them back to ints.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24360
+
+ * rendering/RenderThemeChromiumLinux.cpp:
+ (WebCore::RenderThemeChromiumLinux::buttonInternalPaddingLeft):
+ (WebCore::RenderThemeChromiumLinux::buttonInternalPaddingRight):
+ (WebCore::RenderThemeChromiumLinux::buttonInternalPaddingTop):
+ (WebCore::RenderThemeChromiumLinux::buttonInternalPaddingBottom):
+
+2009-03-04 Adam Langley <agl@google.com>
+
+ Reviewed by Darin Fisher.
+
+ Chromium Linux: change some metrics to better match Windows after
+ r41416. Aesthetically this may be worse, but web-compat is king.
+
+ Also, the previous code had an off by one error when drawing
+ scrollbars which caused the scrollbar to overflow it's bounds by 1px
+ at the right and bottom edges.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24369
+
+ * rendering/RenderThemeChromiumLinux.cpp:
+ (WebCore::):
+ (WebCore::RenderThemeChromiumLinux::systemFont):
+ * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
+ (WebCore::ScrollbarThemeChromium::paintTrackPiece):
+
+2009-03-04 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Roben.
+
+ Add an ASSERT to better demonstrate the cause of the crash in
+ https://bugs.webkit.org/show_bug.cgi?id=23736
+
+ * loader/DocLoader.cpp:
+ (WebCore::DocLoader::~DocLoader):
+
+2009-03-04 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 24337: Assert when doing sync XHR in a worker for a cacheable response.
+ <https://bugs.webkit.org/show_bug.cgi?id=24337>
+
+ Tests: http/tests/xmlhttprequest/access-control-basic-denied-preflight-cache.html
+ http/tests/xmlhttprequest/workers/xmlhttprequest-file-not-found.html
+
+ * loader/mac/ResourceLoaderMac.mm:
+ (WebCore::ResourceLoader::willCacheResponse):
+ An identifier is only asssigned if resource load callbacks are done. So don't send
+ willCacheResponse which uses identifier if resource load callbacks aren't being sent.
+
+2009-03-04 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 24330: Sync xhr in workers should send an abort exception when the worker is terminated.
+ <https://bugs.webkit.org/show_bug.cgi?id=24330>
+
+ Test: http/tests/xmlhttprequest/workers/abort-exception-assert.html
+
+ * dom/ExceptionCode.cpp:
+ (WebCore::xmlHttpRequestExceptionNames):
+ Added missing ABORT_ERR whose absence caused an assert.
+
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::WorkerThreadableLoader::loadResourceSynchronously):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::cancel):
+ Add more logic to handle the termination case for sync xhr.
+
+2009-03-04 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Antti Koivisto.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24364
+ Add support for HTMLMediaElement canPlayType method. Make
+ MediaPlayer::supportsType take a ContentType instead of a
+ separate mime type and codecs parameter.
+
+ Test: media/video-can-play-type.html
+
+ * dom/DOMImplementation.cpp:
+ (WebCore::DOMImplementation::createDocument):
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::canPlayType): Add canPlayType method.
+ (WebCore::HTMLMediaElement::loadInternal): selectMediaURL returns a ContentType.
+ (WebCore::HTMLMediaElement::selectMediaURL): Return a ContentType instead of raw MIME type.
+ (WebCore::HTMLMediaElement::initialURL): selectMediaURL returns a ContentType.
+ * html/HTMLMediaElement.h: Add prototype.
+ * html/HTMLMediaElement.idl: Ditto.
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::MediaPlayer::load): Take a ContentType instead of raw MIME type.
+ (WebCore::MediaPlayer::supportsType): Ditto.
+ * platform/graphics/MediaPlayer.h:
+
+2009-03-04 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24359
+ Repaint throttling mechanism
+
+ Excessive repainting can slow down page loadind. This implements a timer
+ based throttling mechanism. It is behind ENABLE(REPAINT_THROTTLING) and not
+ enabled by default.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::checkCompleted):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::dispatchDragEvent):
+ (WebCore::EventHandler::dispatchMouseEvent):
+ (WebCore::EventHandler::keyEvent):
+ (WebCore::EventHandler::handleTextInputEvent):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::FrameView):
+ (WebCore::FrameView::reset):
+ (WebCore::FrameView::repaintContentRectangle):
+ (WebCore::FrameView::beginDeferredRepaints):
+ (WebCore::FrameView::endDeferredRepaints):
+ (WebCore::FrameView::checkStopDelayingDeferredRepaints):
+ (WebCore::FrameView::doDeferredRepaints):
+ (WebCore::FrameView::updateDeferredRepaintDelay):
+ (WebCore::FrameView::resetDeferredRepaintDelay):
+ (WebCore::FrameView::adjustedDeferredRepaintDelay):
+ (WebCore::FrameView::deferredRepaintTimerFired):
+ (WebCore::FrameView::paintContents):
+ * page/FrameView.h:
+
+2009-03-04 Sam Weinig <sam@webkit.org>
+
+ Rubber-stamped by Antti Koivisto.
+
+ Remove LOW_BANDWIDTH_DISPLAY as it is not being used by any platforms.
+
+ * dom/Document.cpp:
+ (WebCore::Document::Document):
+ * dom/Document.h:
+ (WebCore::Document::haveStylesheetsLoaded):
+ * html/HTMLTokenizer.cpp:
+ (WebCore::HTMLTokenizer::scriptHandler):
+ * loader/Cache.cpp:
+ (WebCore::Cache::requestResource):
+ * loader/CachedCSSStyleSheet.cpp:
+ (WebCore::CachedCSSStyleSheet::checkNotify):
+ * loader/DocLoader.h:
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::FrameLoader):
+ (WebCore::FrameLoader::requestFrame):
+ (WebCore::FrameLoader::stopLoading):
+ (WebCore::FrameLoader::begin):
+ (WebCore::FrameLoader::write):
+ (WebCore::FrameLoader::endIfNotLoadingMainResource):
+ (WebCore::FrameLoader::checkCompleted):
+ (WebCore::FrameLoader::requestObject):
+ (WebCore::FrameLoader::loadItem):
+ * loader/FrameLoader.h:
+
+2009-03-02 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24287
+ [GTK] Move auth dialog feature to WebKit/
+
+ Remove WebKitSoupAuthDialog files from build and stop using it.
+
+ * GNUmakefile.am:
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ensureSessionIsInitialized):
+ * platform/network/soup/webkit-soup-auth-dialog.c: Removed.
+ * platform/network/soup/webkit-soup-auth-dialog.h: Removed.
+
+2009-03-04 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24361
+
+ Reinstate code that sets result.innerNode when hitTest() returns true,
+ but never filled in the innerNode. Fixes hit testing of generated content.
+
+ Test: fast/css-generated-content/hit-test-generated-content.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTestContents):
+
+2009-03-04 Adam Barth <abath@webkit.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24356
+
+ Fix WebKit style for allowUniversalAccessFromFileURLs.
+
+ * WebCore.base.exp:
+ * dom/Document.cpp:
+ (WebCore::Document::initSecurityContext):
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+ (WebCore::Settings::setAllowUniversalAccessFromFileURLs):
+ * page/Settings.h:
+ (WebCore::Settings::allowUniversalAccessFromFileURLs):
+
+2009-03-04 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/6619630> Quick Look of vCards stuck on image of first card opened.
+
+ I narrowed this down to http://trac.webkit.org/changeset/39304 which, among other things,
+ consolidated some of the various decision making pieces of the Cache into the new method
+ FrameLoader::cachePolicy().
+
+ Before 39304, when deciding whether to use an existing CachedResource, we checked if the FrameLoader
+ is reloading. If it is, we'd evict any existing resource then recreate it. Quick looks uses the
+ same URL for this image every time and expects it to be reloaded with each new card.
+
+ The FrameLoader::isReloading() check did one thing - Ask the DocumentLoader if it's cache policy
+ is "ReloadIgnoringCacheData". This check was lost in the consolidation to the new method.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::cachePolicy): Restore the DocumentLoader's cachePolicy check as a possible
+ condition for returning CachePolicyReload.
+
+2009-03-04 Timothy Hatcher <timothy@apple.com>
+
+ * English.lproj/localizedStrings.js: Update strings to include "DATABASES",
+ "LOCAL STORAGE" and "SESSION STORAGE".
+
+2009-03-04 Timothy Hatcher <timothy@apple.com>
+
+ Fix a regression where the Web Inspector console would not animate
+ in or out correctly.
+
+ Reviewed by Anders Carlsson.
+
+ * inspector/front-end/inspector.css: Move a z-index to a child element
+ to get the correct stacking order during the animation.
+
+2009-03-03 David Hyatt <hyatt@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=24201, pathologically bad block layout.
+
+ Make sure to factor clear deltas into y position estimates. Also avoid doing the comparison of
+ the final position against the y position estimate until after the clear has happened. This gets rid
+ of some duplicated cut/pasted code and also ensures a layout delta only has to be put in once.
+
+ Reviewed by Dan Bernstein
+
+ Added fast/block/float/nested-clearance.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::collapseMargins):
+ (WebCore::RenderBlock::clearFloatsIfNeeded):
+ (WebCore::RenderBlock::estimateVerticalPosition):
+ (WebCore::RenderBlock::layoutBlockChildren):
+ (WebCore::RenderBlock::getClearDelta):
+ * rendering/RenderBlock.h:
+
+2009-03-02 Kim Grönholm <kim.gronholm@nomovok.com>
+
+ Reviewed by Simon Hausmann.
+
+ Improvement to 3d transformations rendering in QtWebKit. QTransform is used
+ instead of QMatrix. This allows perspective transformations since QTransform is
+ a true 3x3 matrix.
+
+ * platform/graphics/qt/GraphicsContextQt.cpp: Use QTransform instead of QMatrix everywhere.
+ (WebCore::GraphicsContext::getCTM):
+ (WebCore::GraphicsContext::restorePlatformState):
+ (WebCore::GraphicsContext::fillPath):
+ (WebCore::GraphicsContext::strokePath):
+ (WebCore::GraphicsContext::fillRect):
+ (WebCore::GraphicsContext::translate):
+ (WebCore::GraphicsContext::rotate):
+ (WebCore::GraphicsContext::scale):
+ (WebCore::GraphicsContext::concatCTM):
+ * platform/graphics/qt/ImageQt.cpp:
+ (WebCore::Image::drawPattern):
+ * platform/graphics/qt/PathQt.cpp:
+ (WebCore::Path::translate):
+ (WebCore::Path::transform):
+ * platform/graphics/qt/PatternQt.cpp:
+ (WebCore::Pattern::createPlatformPattern):
+ * platform/graphics/qt/TransformationMatrixQt.cpp:
+ (WebCore::TransformationMatrix::operator QTransform): Replace the conversion operator
+ to QMatrix with one to QTransform.
+ * platform/graphics/transforms/TransformationMatrix.h:
+ * platform/graphics/qt/FontQt.cpp:
+
+2009-02-24 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24151
+ Fix Qt/S60 build break
+
+ * platform/FileSystem.h: Create a default case for non-win and non-mac Qt builds
+ * platform/qt/FileSystemQt.cpp: Ditto
+ (WebCore::unloadModule):
+
+2009-03-03 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21939
+ Uninitialized ExceptionCode in DOMWindow::postMessage
+
+ * dom/MessagePort.cpp:
+ (WebCore::MessagePort::postMessage):
+
+2009-03-03 David Kilzer <ddkilzer@apple.com>
+
+ <rdar://problem/6581203> WebCore and WebKit should install the same set of headers during installhdrs phase as build phase
+
+ Reviewed by Mark Rowe.
+
+ The fix is to add INSTALLHDRS_COPY_PHASE = YES and
+ INSTALLHDRS_SCRIPT_PHASE = YES to WebCore.xcconfig, then to make
+ sure various build phase scripts work with the installhdrs build
+ phase.
+
+ * Configurations/Base.xcconfig: Defined REAL_PLATFORM_NAME
+ based on PLATFORM_NAME to work around the missing definition on
+ Tiger.
+ * Configurations/WebCore.xcconfig: Added
+ JAVASCRIPTCORE_PRIVATE_HEADERS_DIR variable to simplify logic in
+ the "Generate Derived Sources" script. Added
+ INSTALLHDRS_COPY_PHASE = YES and INSTALLHDRS_SCRIPT_PHASE = YES.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ - Added shell code to prevent running "Check For Global
+ Initializers", "Check For Exit Time Destructors" and "Check
+ For Weak VTables" scripts during the installhdrs build phase.
+ - Made "Generate Derived Sources" work for the installhdrs build
+ phase. Also simplified setting of CREATE_HASH_TABLE by using
+ JAVASCRIPTCORE_PRIVATE_HEADERS_DIR.
+
+2009-03-02 Adam Langley <agl@google.com>
+
+ Reviewed by Darin Fisher.
+
+ Chromium Linux: Switch to using Skia to render widgets.
+
+ In order to sandbox the Chromium renderer on Linux we need to remove
+ the X connection. GTK cannot render without an X connection so, for
+ now, we render widgets ourselves.
+
+ Previously didn't use anti-alias fonts in order to match Windows font
+ rendering exactly. This was helpful when bootstrapping our layout
+ tests. Now, however, we are ready to enable it.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24244
+
+ * platform/chromium/ScrollbarThemeChromium.cpp:
+ (WebCore::ScrollbarThemeChromium::buttonSize):
+ * platform/chromium/ScrollbarThemeChromiumLinux.cpp:
+ (WebCore::ScrollbarThemeChromium::scrollbarThickness):
+ (WebCore::ScrollbarThemeChromium::paintTrackPiece):
+ (WebCore::ScrollbarThemeChromium::paintButton):
+ (WebCore::ScrollbarThemeChromium::paintThumb):
+ * platform/graphics/chromium/FontPlatformDataLinux.cpp:
+ (WebCore::FontPlatformData::setupPaint):
+ * platform/graphics/skia/PlatformContextSkia.cpp:
+ (PlatformContextSkia::PlatformContextSkia):
+ (PlatformContextSkia::~PlatformContextSkia):
+ * platform/graphics/skia/PlatformContextSkia.h:
+ * rendering/RenderThemeChromiumGtk.cpp: Removed.
+ * rendering/RenderThemeChromiumGtk.h: Removed.
+ * rendering/RenderThemeChromiumLinux.cpp: Added.
+ * rendering/RenderThemeChromiumLinux.h: Added.
+
+2009-03-03 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24261
+ Fix return types.
+
+ Test: LayoutTests/dom/svg/level3/xpath/XPathEvaluator_evaluate_TYPE_ERR.svg
+
+ * bindings/v8/V8Binding.h:
+ (WebCore::toInt32): change return type to int
+ (WebCore::toFloat): change return type to float.
+
+2009-03-03 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by John Sullivan.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22884
+ <rdar://problem/6449783>
+ modified layout test crashes Safari
+
+ Null check NPStream before dereferencing it.
+
+ * plugins/PluginView.cpp:
+ (WebCore::PluginView::destroyStream):
+
+2009-03-03 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Fix for <rdar://problem/6641045>
+ Don't call QTKit to get movie properties until movie metadata has been loaded.
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.h:
+ (WebCore::MediaPlayerPrivate::metaDataAvailable): defined
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::createQTTime): return default if !metaDataAvailable.
+ (WebCore::MediaPlayerPrivate::play): Ditto.
+ (WebCore::MediaPlayerPrivate::pause): Ditto.
+ (WebCore::MediaPlayerPrivate::duration): Ditto.
+ (WebCore::MediaPlayerPrivate::currentTime): Ditto.
+ (WebCore::MediaPlayerPrivate::seek): Ditto.
+ (WebCore::MediaPlayerPrivate::seekTimerFired): Ditto.
+ (WebCore::MediaPlayerPrivate::paused): Ditto.
+ (WebCore::MediaPlayerPrivate::seeking): Ditto.
+ (WebCore::MediaPlayerPrivate::naturalSize): Ditto.
+ (WebCore::MediaPlayerPrivate::hasVideo): Ditto.
+ (WebCore::MediaPlayerPrivate::setVolume): Ditto.
+ (WebCore::MediaPlayerPrivate::setRate): Ditto.
+ (WebCore::MediaPlayerPrivate::dataRate): Ditto.
+ (WebCore::MediaPlayerPrivate::maxTimeLoaded): Ditto.
+ (WebCore::MediaPlayerPrivate::totalBytes): Ditto.
+
+2009-03-03 Kevin McCullough <kmccullough@apple.com>
+
+ - Spelling fix.
+
+ * page/Console.cpp:
+ (WebCore::Console::profile):
+
+2009-03-03 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23657
+ Remove Database API callback IDLs from the project.
+ They were removed in r40633.
+
+ * WebCore.xcodeproj/project.pbxproj: Removed IDL files from the project.
+
+2009-03-03 Kevin McCullough <kmccullough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ <rdar://problem/6639110> console.profile() doesn't work without a title
+
+ * page/Console.cpp:
+ (WebCore::Console::profile): If there is no title assume this is a user
+ initiated profile and give it the next incremented title name.
+
+2009-03-03 Timothy Hatcher <timothy@apple.com>
+
+ Fix a regression that broke dirxml and caused an ASSERT in debug builds. Also simplified
+ the console code and refactored things to have fewer code paths and duplication.
+
+ rdar://problem/6367127
+ https://bugs.webkit.org/show_bug.cgi?id=24329
+
+ Reviewed by Kevin McCullough.
+
+ Test: manual-tests/inspector/console-dir.html
+
+ * bindings/js/JSInspectedObjectWrapper.cpp:
+ (WebCore::JSInspectedObjectWrapper::wrap): Use the lexicalGlobalObject instead of dynamicGlobalObject
+ to fix an ASSERT about using a wrapper from the wrong ExecState.
+ * bindings/js/JSQuarantinedObjectWrapper.cpp:
+ (WebCore::JSQuarantinedObjectWrapper::JSQuarantinedObjectWrapper): Ditto.
+ (WebCore::JSQuarantinedObjectWrapper::allowsUnwrappedAccessFrom): Ditto.
+ * inspector/front-end/Console.js:
+ (WebInspector.Console.prototype._format): Remove the inline argument and add forceObjectFormat.
+ When forceObjectFormat is true, the only formatter used is _formatobject.
+ (WebInspector.Console.prototype._formatvalue): Remove the inline argument.
+ (WebInspector.Console.prototype._formatstring): Ditto.
+ (WebInspector.Console.prototype._formatregexp): Ditto.
+ (WebInspector.Console.prototype._formatarray): Ditto.
+ (WebInspector.Console.prototype._formatnode): Remove the inline argument and make a DOM tree instead of an anchor.
+ (WebInspector.Console.prototype._formatobject): Remove the inline argument and always make a property graph.
+ (WebInspector.Console.prototype._formaterror): Remove the inline argument.
+ (WebInspector.ConsoleMessage): Remove the case for MessageLevel.Node and
+ simplify the case for MessageLevel.Object to use the normal _format code path with the %O formatter.
+ (WebInspector.ConsoleMessage.prototype._format.formatForConsole): Don't pass an additional true argument for inline.
+ (WebInspector.ConsoleMessage.prototype._format.formatAsObjectForConsole): Added. Pass a true argument for forceObjectFormat.
+ (WebInspector.ConsoleMessage.prototype._format): Added support for the %O formatter. Use formatForConsole for all arguments.
+ (WebInspector.ConsoleMessage.prototype.toString): Add the other message levels.
+ * inspector/front-end/inspector.css: Tweak styles to look and work correctly.
+ * inspector/front-end/utilities.js:
+ (Object.type): Return "node" for Node objects.
+ (Object.describe): Handle the "node" type.
+ * page/Console.cpp:
+ (WebCore::printMessageSourceAndLevelPrefix): Fix an assert by adding the other message level types.
+ (WebCore::Console::dirxml): Use the standard log fuction since it prints a DOM tree for nodes by default.
+ * page/Console.h:
+ (WebCore::enum MessageLevel): Removed NodeMessageLevel. Added a FIXME.
+
+2009-03-03 Scott Violet <sky@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24325
+ Crash on replacing document contents during drop.
+
+ Makes sure a node is in the document during a move before using it.
+
+ Test: fast/events/crash-on-mutate-during-drop.html
+
+ * editing/MoveSelectionCommand.cpp:
+ (WebCore::MoveSelectionCommand::doApply):
+
+2009-03-03 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23028
+ Enable dynamic web font support to Chromium on Windows.
+ Files that were omitted by mistake in the latest patch
+ that was landed.
+
+ * loader/CachedFont.cpp:
+ (WebCore::CachedFont::~CachedFont):
+ (WebCore::CachedFont::ensureCustomFontData):
+ (WebCore::CachedFont::platformDataFromCustomData):
+ (WebCore::CachedFont::allClientsRemoved):
+ * platform/graphics/chromium/FontCustomPlatformData.cpp:
+ (WebCore::EOTStream::EOTStream):
+ (WebCore::createFontCustomPlatformData):
+ * platform/graphics/win/FontCustomPlatformData.cpp:
+ (WebCore::EOTStream::EOTStream):
+ (WebCore::createFontCustomPlatformData):
+
+2009-03-03 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16826
+ [Gtk] Implement WebKitDownload
+
+ Make the Soup backend able to handle requests without a frame,
+ since we may have such things now that we support downloads.
+
+ * platform/network/ResourceHandleInternal.h:
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::start):
+
+2009-03-03 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24331
+ Add custom V8 bindings for Element, Attr, HTMLFrame, and HTMLIFrame.
+
+ * bindings/v8/custom/V8AttrCustom.cpp: Added.
+ * bindings/v8/custom/V8CustomBinding.cpp: Added.
+ * bindings/v8/custom/V8CustomBinding.h: Added attribute-checking helpers.
+ * bindings/v8/custom/V8ElementCustom.cpp: Added.
+ * bindings/v8/custom/V8HTMLFrameElementCustom.cpp: Added.
+ * bindings/v8/custom/V8HTMLIFrameElementCustom.cpp: Added.
+
+2009-03-03 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/6616664> - Quick looks of various file types is broken
+
+ In http://trac.webkit.org/changeset/40553 there was an attempt to prevent NSURLRequest churn
+ for non-HTTP loads when the underlying ResourceRequest changed. Unfortunately it was a little
+ overzealous as the mainDocumentURL is relevant for all loads, not only HTTP/HTTPS loads.
+
+ Partially reverted behavior to always set the mainDocumentURL in situations when we would've
+ before that patch.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::addExtraFieldsToRequest):
+
+ * platform/network/ResourceRequestBase.cpp:
+ (WebCore::ResourceRequestBase::setMainDocumentURL):
+
+2009-03-03 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24256
+
+ Added a WebCoreForceSoftwareAnimation flag.
+
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::forceSoftwareAnimation):
+ (WebCore::GraphicsLayerCA::setOpacity):
+ (WebCore::GraphicsLayerCA::animateTransform):
+ (WebCore::GraphicsLayerCA::animateFloat):
+
+2009-03-02 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24257
+
+ Added prototype properties for several classes with constructors that
+ were missing them, including the one mentioned in the bug.
+
+ Test: fast/dom/Window/custom-constructors.html
+
+ * bindings/js/JSAudioConstructor.cpp:
+ (WebCore::JSAudioConstructor::JSAudioConstructor):
+ * bindings/js/JSDOMWindowBase.cpp:
+ (jsDOMWindowBaseWebKitCSSMatrix):
+ * bindings/js/JSImageConstructor.cpp:
+ (WebCore::JSImageConstructor::JSImageConstructor):
+ * bindings/js/JSOptionConstructor.cpp:
+ (WebCore::JSOptionConstructor::JSOptionConstructor):
+ * bindings/js/JSWebKitCSSMatrixConstructor.cpp:
+ (WebCore::JSWebKitCSSMatrixConstructor::JSWebKitCSSMatrixConstructor):
+ * bindings/js/JSWebKitCSSMatrixConstructor.h:
+ * bindings/js/JSWebKitPointConstructor.cpp:
+ (WebCore::JSWebKitPointConstructor::JSWebKitPointConstructor):
+ * bindings/js/JSWorkerConstructor.cpp:
+ (WebCore::JSWorkerConstructor::JSWorkerConstructor):
+
+2009-03-03 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24321
+ Add V8 bindings headers.
+
+ * bindings/v8/V8Binding.h: Added.
+ * bindings/v8/V8Proxy.h: Added.
+ * bindings/v8/custom/V8CustomBinding.h: Added.
+ * bindings/v8/custom/V8CustomEventListener.h: Added.
+
+2009-03-03 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23803
+ Fix an 'off-by-1' error in ChromiumWin's font fallback.
+
+ * platform/graphics/chromium/FontCacheChromiumWin.cpp:
+ (WebCore::FontCache::getFontDataForCharacters):
+
+2009-03-03 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ http://bugs.webkit.org/show_bug.cgi?id=23028
+ Enable dynamic web font support to Chromium on Windows: Part 1
+ - Move OpenTypeUtilities.{cpp,h} to platform/graphics/opentype
+ from platform/graphics/win because both Windows port and Chromium Windows
+ port will use them.
+ - Adjust WebCore.vcproj accordingly.
+
+ * WebCore.vcproj/WebCore.vcproj:
+ * platform/graphics/opentype: Added.
+ * platform/graphics/opentype/OpenTypeUtilities.cpp: Copied from WebCore/platform/graphics/win/OpenTypeUtilities.cpp.
+ * platform/graphics/opentype/OpenTypeUtilities.h: Copied from WebCore/platform/graphics/win/OpenTypeUtilities.h.
+ * platform/graphics/win/OpenTypeUtilities.cpp: Removed.
+ * platform/graphics/win/OpenTypeUtilities.h: Removed.
+
+2009-03-03 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24312
+
+ Take 3D transforms into account when hit testing:
+
+ 1. Maintain a bit on each RenderLayer that is set when the layer
+ has 3d descendants, so that we know when to fall into the slow
+ hit testing path.
+
+ 2. Make a ref-counted HitTestingTransformState, which is used to store
+ an accumulated transform, and the hit test point, and hitTestRect
+ in the plane of the ancestor non-3d ('flattening') layer.
+
+ It's ref-counted so we can heap allocate it (to avoid stack bloat),
+ and avoid copying when hitTestLayer calls itself after applying the transform.
+
+ 3. Add logic to hitTestLayer to depth-test just direct descendants, if any have
+ 3D transforms, or to do deep depth-testing when traversing a preserves-3d
+ hierarchy. When hit, layers compute a z-offset from the ancestor flattening
+ layer, which allows for correct depth testing.
+
+ The existing early-return codepath is unaffected when there are no 3d transforms
+ and no preserve-3d.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::RenderLayer):
+ (WebCore::RenderLayer::updateTransform):
+ (WebCore::RenderLayer::dirty3DTransformedDescendantStatus):
+ (WebCore::RenderLayer::update3DTransformedDescendantStatus):
+ (WebCore::RenderLayer::hitTest):
+ (WebCore::computeZOffset):
+ (WebCore::RenderLayer::createLocalTransformState):
+ (WebCore::RenderLayer::hitTestLayer):
+ (WebCore::RenderLayer::hitTestContents):
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::preserves3D):
+ (WebCore::RenderLayer::has3DTransform):
+ (WebCore::RenderLayer::setHas3DTransformedDescendant):
+ (WebCore::RenderLayer::has3DTransformedDescendant):
+ * rendering/RenderLayerBacking.cpp:
+ * rendering/TransformState.cpp:
+ (WebCore::TransformState::flatten):
+ (WebCore::TransformState::mappedPoint):
+ (WebCore::HitTestingTransformState::move):
+ (WebCore::HitTestingTransformState::applyTransform):
+ (WebCore::HitTestingTransformState::flatten):
+ (WebCore::HitTestingTransformState::mappedPoint):
+ (WebCore::HitTestingTransformState::mappedQuad):
+ * rendering/TransformState.h:
+ (WebCore::TransformState::TransformState):
+ (WebCore::HitTestingTransformState::create):
+ (WebCore::HitTestingTransformState::move):
+ (WebCore::HitTestingTransformState::HitTestingTransformState):
+
+2009-03-03 Brett Wilson <brettw@chromium.org>
+
+ Fix uninitialized memory reads in the Chromium Windows transparency
+ code that were identified by Purify,
+
+ Reviewed by Darin Fisher.
+
+ * platform/graphics/chromium/TransparencyWin.cpp:
+ (WebCore::TransparencyWin::OwnedBuffers::OwnedBuffers):
+ (WebCore::TransparencyWin::initializeNewContext):
+
+2009-03-03 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24312
+
+ Factor the code that compute a transform relative to the container
+ into RenderObject::transformFromContainer().
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::mapLocalToAbsolutePoint):
+ (WebCore::RenderBox::mapAbsoluteToLocalPoint):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::transformFromContainer):
+ * rendering/RenderObject.h:
+
+2009-03-03 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24317
+
+ Always return |true| from RenderTextControlMultiLine::nodeAtPoint() if
+ the superclass found a node, otherwise we set the innerNode of the
+ HitTestResult, but don't actually report that we found a hit.
+
+ * rendering/RenderTextControlMultiLine.cpp:
+ (WebCore::RenderTextControlMultiLine::nodeAtPoint):
+
+2009-03-03 Onne Gorter <onne.gorter@avinity.net>
+
+ Reviewed by Anders Carlsson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23707
+ resizing plugins does not work, because the plugin never gets informed
+
+ Make gtk plugins resize correctly, by sending them the setwindow event
+ correctly. Also ensure that all plugin eventing is done with correct
+ locking/calling. Mostly copied from mac implementation.
+
+ manual test: manual-tests/gtk/plugin-resize-scroll.html
+
+ * plugins/PluginView.h:
+ * plugins/gtk/PluginViewGtk.cpp:
+ (WebCore::PluginView::dispatchNPEvent):
+ ensure locking/calling for NPEvents
+ (WebCore::PluginView::updatePluginWidget):
+ if something changed, let setNPWindowIfNeeded handle it
+ (WebCore::PluginView::paint):
+ (WebCore::PluginView::handleKeyboardEvent):
+ (WebCore::PluginView::handleMouseEvent):
+ ensure calling conventions
+ (WebCore::PluginView::setNPWindowRect):
+ just pass control to setNPWindowIfNeeded
+ (WebCore::PluginView::setNPWindowIfNeeded):
+ event the plugin correctly of new window
+ (WebCore::PluginView::init):
+ init through the new setup
+
+2009-03-03 Mike Belshe <mike@belshe.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24311
+ Make IDL returning DOMObject use [V8Custom]
+
+ * dom/Document.idl:
+ * html/HTMLCanvasElement.idl:
+
+2009-03-02 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Adele Peterson
+
+ https://bugs.webkit.org/show_bug.cgi?id=24313
+
+ If RenderTextControlSingleLine::nodeAtPoint() pokes a node into the
+ HitTestResult, then it had better well return |true|. And m_innerBlock
+ could never have been set as the hit node by the superclass, because
+ the superclass knows nothing about m_innerBlock.
+
+ Test: fast/forms/input-hit-test-border.html
+
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::nodeAtPoint):
+
+2009-03-02 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Enable Geolocation (except on Tiger and Leopard).
+
+ * Configurations/WebCore.xcconfig:
+
+2009-03-02 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Adele Peterson.
+
+ Fix https://bugs.webkit.org/show_bug.cgi?id=24307
+ Null out m_highlightedNode on hideHighlight().
+ Ran WebCore/manual-tests/inspector/highlight-nodes.html.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::hideHighlight):
+
+2009-03-02 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Fix for <rdar://problem/6507404> Add Geolocation support.
+
+ This is not yet turned on for any Mac platform.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * page/Chrome.cpp:
+ (WebCore::Chrome::shouldAllowGeolocationForFrame):
+ * page/Chrome.h:
+ * page/ChromeClient.h:
+ (WebCore::ChromeClient::shouldAllowGeolocationForFrame):
+ * page/Geolocation.cpp:
+ (WebCore::Geolocation::Geolocation):
+ (WebCore::Geolocation::disconnectFrame): Remove call to setUsingGeolocation as the document
+ will not be alive at this point.
+ (WebCore::Geolocation::getCurrentPosition): Check if the embedding app allows geolocation and
+ return a PERMISSION_DENIED if not.
+ (WebCore::Geolocation::watchPosition): Ditto.
+ (WebCore::Geolocation::shouldAllowGeolocation): Perform request to embedding layer of whether
+ to allow geolocation and cache the result.
+ * page/Geolocation.h:
+ (WebCore::Geolocation::):
+ * platform/GeolocationService.cpp:
+ * platform/GeolocationService.h:
+ (WebCore::GeolocationService::~GeolocationService):
+ (WebCore::GeolocationService::stopUpdating):
+ * platform/mac/GeolocationServiceMac.h: Added.
+ (WebCore::GeolocationServiceMac::lastPosition):
+ (WebCore::GeolocationServiceMac::lastError):
+ * platform/mac/GeolocationServiceMac.mm: Added.
+ (WebCore::GeolocationService::create):
+ (WebCore::GeolocationServiceMac::GeolocationServiceMac):
+ (WebCore::GeolocationServiceMac::~GeolocationServiceMac):
+ (WebCore::GeolocationServiceMac::startUpdating):
+ (WebCore::GeolocationServiceMac::stopUpdating):
+ (WebCore::GeolocationServiceMac::suspend):
+ (WebCore::GeolocationServiceMac::resume):
+ (WebCore::GeolocationServiceMac::positionChanged):
+ (WebCore::GeolocationServiceMac::errorOccurred):
+ (-[WebCoreCoreLocationObserver initWithCallback:]):
+ (-[WebCoreCoreLocationObserver locationManager:didUpdateToLocation:fromLocation:]):
+ (-[WebCoreCoreLocationObserver locationManager:didFailWithError:]):
+
+2009-03-02 Kevin Ollivier <kevino@theolliviers.com>
+
+ Build fixes for wxWidgets Mac trunk build.
+
+ * platform/wx/wxcode/mac/carbon/fontprops.cpp:
+ (wxFontProperties::wxFontProperties):
+ (GetTextExtent):
+ * webcore-wx.bkl:
+
+2009-03-02 Kevin Ollivier <kevino@theolliviers.com>
+
+ wxGTK missing header build fix.
+
+ * platform/wx/wxcode/gtk/fontprops.cpp:
+
+2009-03-02 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Adam Roben.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=21811
+ REGRESSION: Windows Build Not Selecting Proper Font
+
+ * platform/graphics/win/FontCacheWin.cpp:
+ (WebCore::createGDIFont): Added back code to verify that the created
+ HFONT has the requested face name.
+
+2009-03-02 Timothy Hatcher <timothy@apple.com>
+
+ Fixes a regression caused by splitting the input and output of console commands.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24293
+
+ Reviewed by Kevin McCullough.
+
+ * inspector/front-end/Console.js:
+ (WebInspector.Console.prototype.addMessage): Don't treat ConsoleCommandResult as a
+ normal ConsoleMessage when appending. This prevents resetting repeatCounts incorrectly.
+
+2009-03-02 Timothy Hatcher <timothy@apple.com>
+
+ Make exception messages and logged Error objects display consistently.
+
+ https://bugs.webkit.org/show_bug.cgi?id=18983
+
+ Reviewed by Adam Roben.
+
+ * English.lproj/localizedStrings.js: Remove a string for line numbers.
+ * inspector/front-end/Console.js:
+ (WebInspector.Console.prototype._enterKeyPressed): Pass the exception
+ boolean to the ConsoleCommandResult constructor and don't pass level.
+ (WebInspector.Console.prototype._formatnode): Fix a className typo.
+ (WebInspector.Console.prototype._formaterror): Add an error-message
+ classed span around the message to show in red and remove the
+ console-message-url class from the link so it doesn't float right.
+ Instead enclose the link in parentheses and use displayNameForURL
+ to shorten the URL in the link.
+ (WebInspector.ConsoleMessage.prototype.toMessageElement): Simplify
+ how line numbers are shown since link underlining a string with
+ parentheses looks bad.
+ (WebInspector.ConsoleCommandResult): Take an exception boolean flag
+ instead of a level and get line and URL based on that flag.
+ * inspector/front-end/inspector.css: Tweaks to the styles.
+
+2009-03-02 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Adele Peterson.
+
+ Bug 24048: extra windows button padding doesn't apply when there's no appearance
+ <https://bugs.webkit.org/show_bug.cgi?id=24048>
+
+ Replace adjustButtonInnerStyle with buttonInternalPaddingLeft/Right/Top/Bottom.
+
+ No tests added as existing tests already cover this behavior.
+
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::setupInnerStyle):
+ * rendering/RenderTheme.cpp:
+ * rendering/RenderTheme.h:
+ (WebCore::RenderTheme::buttonInternalPaddingLeft):
+ (WebCore::RenderTheme::buttonInternalPaddingRight):
+ (WebCore::RenderTheme::buttonInternalPaddingTop):
+ * rendering/RenderThemeChromiumGtk.cpp:
+ (WebCore::RenderThemeWin::buttonInternalPaddingLeft):
+ (WebCore::RenderThemeWin::buttonInternalPaddingRight):
+ (WebCore::RenderThemeWin::buttonInternalPaddingTop):
+ (WebCore::RenderThemeWin::buttonInternalPaddingBottom):
+ * rendering/RenderThemeChromiumGtk.h:
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::RenderThemeChromiumWin::buttonInternalPaddingLeft):
+ (WebCore::RenderThemeChromiumWin::buttonInternalPaddingRight):
+ (WebCore::RenderThemeChromiumWin::buttonInternalPaddingTop):
+ (WebCore::RenderThemeChromiumWin::buttonInternalPaddingBottom):
+ * rendering/RenderThemeChromiumWin.h:
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::RenderThemeWin::buttonInternalPaddingLeft):
+ (WebCore::RenderThemeWin::buttonInternalPaddingRight):
+ (WebCore::RenderThemeWin::buttonInternalPaddingTop):
+ (WebCore::RenderThemeWin::buttonInternalPaddingBottom):
+ * rendering/RenderThemeWin.h:
+
+2009-03-02 Adam Treat <adam.treat@torchmobile.com>
+
+ Build fix for Qt port. Remove unnecessary assert.
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::putImageData):
+
+2009-03-02 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Adam Roben and previously by Eric Seidel and Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24227
+ Ensure that the checkForSolidColor() optimization is correctly triggered
+ for all cases of drawPattern. Currently, the optimization was not triggered
+ when the check had not been previously performed via a request for the
+ image's NativeImagePtr.
+
+ Implement the Qt version of the checkForSolidColor() method. Combined with
+ the bug fix this reduces the time it takes to draw a repeating background
+ of a 1x1 image from ~50msecs to ~0msecs on my machine.
+
+ * platform/graphics/BitmapImage.cpp:
+ (WebCore::BitmapImage::BitmapImage):
+ * platform/graphics/BitmapImage.h:
+ (WebCore::BitmapImage::mayFillWithSolidColor):
+ * platform/graphics/Image.h:
+ (WebCore::Image::mayFillWithSolidColor):
+ * platform/graphics/cairo/ImageCairo.cpp:
+ (WebCore::BitmapImage::BitmapImage):
+ (WebCore::BitmapImage::checkForSolidColor):
+ * platform/graphics/cg/ImageCG.cpp:
+ (WebCore::BitmapImage::BitmapImage):
+ (WebCore::BitmapImage::checkForSolidColor):
+ * platform/graphics/qt/ImageQt.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+ * platform/graphics/skia/ImageSkia.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+ * platform/graphics/wx/ImageWx.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+
+2009-03-02 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed build fix; adding missing files to EXTRA_DIST, so that
+ they show up in the tarball.
+
+ * GNUmakefile.am:
+
+2009-03-02 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ Added putImageData to Qt. Discussed with Ariya Hidayat.
+
+ [Qt] lacks putImageData support in Canvas
+ https://bugs.webkit.org/show_bug.cgi?id=22186
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::putImageData):
+
+2009-03-02 Timothy Hatcher <timothy@apple.com>
+
+ Show exception messages again when evaluating bad expressions in the
+ Web Inspector's console.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19890
+
+ Reviewed by Oliver Hunt.
+
+ * bindings/js/JSQuarantinedObjectWrapper.cpp:
+ (WebCore::JSQuarantinedObjectWrapper::transferExceptionToExecState):
+ Fix the order in which the exception is set and cleared now that the
+ exception is stored in the shared GlobalData, not per ExecState.
+
+2009-02-28 Timothy Hatcher <timothy@apple.com>
+
+ Make input in the Web Inspector console print before any output
+ that might be added by the called function.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19931
+
+ Reviewed by Oliver Hunt.
+
+ * inspector/front-end/Console.js:
+ (WebInspector.Console.prototype._enterKeyPressed): Add the command
+ message before evaluating the result. Associate the originating
+ command to the result, so if they are adjacent there is no divider.
+ (WebInspector.ConsoleCommand): No longer take a result.
+ (WebInspector.ConsoleCommand.prototype.toMessageElement): Result
+ code removed since it isn't used now.
+ (WebInspector.ConsoleCommandResult): Subclass ConsoleMessage.
+ (WebInspector.ConsoleCommandResult.prototype.toMessageElement):
+ Call the ConsoleMessage toMessageElement and add a style class.
+ * inspector/front-end/inspector.css: Add a new style class for
+ adjacent results to hide the divider. Also tweak the position of
+ the disclosure triangle for objects to not use the left margin.
+
+2009-03-01 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 24282: AX Palindrome error when asking for a specific index of the AXChildren array
+ <https://bugs.webkit.org/show_bug.cgi?id=24282>
+
+ When fetching an array of elements with a range, attachment views need to be returned
+ instead of the actual attachment.
+
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper accessibilityIndexOfChild:]):
+ (-[AccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]):
+
+2009-03-01 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Bug 24251: Cleanup: replace positionForCoordinates with positionForPoint
+ <https://bugs.webkit.org/show_bug.cgi?id=24251>
+
+ Make RenderObject::positionForCoordinate non-virtual and
+ RenderObject::positionForPoint virtual in preparation for
+ removing positionFor* from RenderObject/RenderText.
+
+ * page/Frame.cpp:
+ (WebCore::Frame::visiblePositionForPoint):
+ * rendering/RenderBR.cpp:
+ (WebCore::RenderBR::positionForPoint):
+ * rendering/RenderBR.h:
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::positionForPoint):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::positionForPoint):
+ * rendering/RenderBox.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::positionForPoint):
+ * rendering/RenderInline.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::positionForCoordinates):
+ (WebCore::RenderObject::positionForPoint):
+ * rendering/RenderObject.h:
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::positionForPoint):
+ * rendering/RenderReplaced.h:
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::positionForPoint):
+ * rendering/RenderSVGInlineText.h:
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::positionForPoint):
+ * rendering/RenderText.h:
+
+2009-03-01 Larry Ewing <lewing@novell.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24080
+ NPN_GetValue casting to the wrong type and writing outside bounds
+
+ Make sure to cast the value to the correct type so that only
+ memory owned by the value is written to.
+
+ * plugins/gtk/PluginViewGtk.cpp (PluginView::getValueStatic):
+ * plugins/qt/PluginViewQt.cpp (PluginView::getValueStatic):
+ * plugins/mac/PluginViewMac.cpp (PluginView::getValueStatic):
+ (PluginView::getValue):
+
+2009-03-01 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24197 and
+ https://bugs.webkit.org/show_bug.cgi?id=23512
+
+ The Windows version of cgColor() is conditionally compiled using
+ !PLATFORM(MAC) change this to PLATFORM(WIN_OS) so that Chrome
+ can use the OS X version instead of the Windows version.
+
+ Also rename cgColor() -> createCGColor()
+
+ No observable change in behavior, so no test.
+
+ * platform/graphics/Color.h:
+ * platform/graphics/cg/ColorCG.cpp:
+ (WebCore::createCGColor):
+ * platform/graphics/cg/GraphicsContextCG.cpp:
+ (WebCore::GraphicsContext::setPlatformShadow):
+ * platform/graphics/mac/ColorMac.mm:
+ (WebCore::createCGColor):
+ * platform/graphics/mac/GraphicsContextMac.mm:
+ (WebCore::GraphicsContext::drawFocusRing):
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::setLayerBorderColor):
+ (WebCore::setLayerBackgroundColor):
+ (WebCore::GraphicsLayerCA::setBackgroundColor):
+ * platform/graphics/win/GraphicsContextCGWin.cpp:
+ (WebCore::GraphicsContext::drawFocusRing):
+ * svg/graphics/filters/cg/SVGFEHelpersCg.mm:
+ (WebCore::ciColor):
+
+2009-03-01 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 24271: XMLHttpRequest needs js bindings for Workers.
+ <https://bugs.webkit.org/show_bug.cgi?id=24271>
+
+ Tests: http/tests/xmlhttprequest/workers/methods-async.html
+ http/tests/xmlhttprequest/workers/methods.html
+
+ * bindings/js/JSWorkerContextBase.cpp:
+ (WebCore::JSWorkerContextBase::getOwnPropertySlot):
+ (jsWorkerContextBaseXMLHttpRequest):
+ (setJSWorkerContextBaseXMLHttpRequest):
+ Expose XMLHttpRequest to Workers.
+
+ * bindings/js/JSWorkerContextBase.h:
+
+ * bindings/js/JSXMLHttpRequestConstructor.cpp:
+ (WebCore::JSXMLHttpRequestConstructor::JSXMLHttpRequestConstructor):
+ (WebCore::constructXMLHttpRequest):
+ (WebCore::JSXMLHttpRequestConstructor::mark):
+ Removed the dependencies on Document.
+
+ * bindings/js/JSXMLHttpRequestConstructor.h:
+ (WebCore::JSXMLHttpRequestConstructor::scriptExecutionContext):
+ * dom/EventException.idl:
+ * dom/EventListener.idl:
+ Change to have the NoStaticTables attribute since they are used from XHR.
+
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::workerContextDidFinishLoading):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):
+ Fixed identifier to be unsigned long.
+
+ * loader/WorkerThreadableLoader.h:
+ * workers/WorkerThread.cpp:
+ (WebCore::WorkerThread::workerThread):
+ Stop active objects when the thread is getting shutdown so that xhr gets properly shutdown.
+
+ * xml/XMLHttpRequestUpload.cpp:
+
+ * xml/XMLHttpRequest.idl:
+ * xml/XMLHttpRequestException.idl:
+ * xml/XMLHttpRequestProgressEvent.idl:
+ * xml/XMLHttpRequestUpload.idl:
+ Change to have the NoStaticTables attribute since they are used from XHR.
+
+2009-03-01 Horia Olaru <olaru@adobe.com>
+
+ Adding manual debugger test cases for bug.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21073
+
+ Reviewed by Kevin McCullough.
+
+ * manual-tests/inspector/debugger-step-on-do-while-statements.html: Added.
+ * manual-tests/inspector/debugger-step-on-for-in-statements.html: Added.
+ * manual-tests/inspector/debugger-step-on-for-statements.html: Added.
+ * manual-tests/inspector/debugger-step-on-while-statements.html: Added.
+ * manual-tests/inspector/resources/loop-statements.js: Added.
+
+2009-03-01 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix <rdar://problem/6634768> Reproducible crash in RenderLayer::updateScrollCornerStyle() using full-page zoom at MobileMe Contacts
+
+ Test: fast/events/scroll-during-zoom-change.html
+
+ * dom/Document.cpp:
+ (WebCore::Document::recalcStyle): Pause scheduled events during style
+ reclaculation. Changes to the zoom property result in scroll events
+ being generated during style recalc, and those events need to be
+ deferred until the render tree is consistent.
+ * page/FrameView.cpp:
+ (WebCore::FrameView::layout): Changed to account for a case in which the
+ post-layout tasks trigger a nested layout, which reactivates the
+ post-layout task timer.
+
+2009-03-01 Ross Boucher <rboucher@gmail.com>
+
+ Alphabetically sort scripts in the Script's panel file popup menu.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23395
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel.prototype._addScriptToFilesMenu):
+ * inspector/front-end/utilities.js:
+ (insertionIndexForObjectInListSortedByFunction):
+ (indexOfObjectInListSortedByFunction):
+
+2009-03-01 Yael Aharon <yael.aharon@nokia.com>
+
+ Pass securityOrigin->host() instead of securityOrigin->domain() to WebInspector
+ when creating databases, localStorage or sessionStorage. Changing document.domain
+ should have no affect on databases, localStorage and sessionStorage in Web Inspector.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23844
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::addDOMStorageScriptResource):
+ (WebCore::InspectorController::didUseDOMStorage):
+ * storage/Database.cpp:
+ (WebCore::Database::openDatabase):
+
+2009-03-01 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Avoid leaking errors when reporting GIO errors.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::readCallback):
+ (WebCore::openCallback):
+ (WebCore::queryInfoCallback):
+
+2009-03-01 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Fixes crash when the GIO backend is given the URI for a directory.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::networkErrorForFile):
+
+2009-02-28 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24261
+ Fix V8 custom binding scrubbing error.
+
+ Test: fast/dom/TreeWalker/TreeWalker-currentNode.html
+ Test: traversal/exception-forwarding.html
+ TesT: traversal/stay-within-root.html
+
+ * bindings/v8/custom/V8CSSStyleDeclarationCustom.cpp:
+ * bindings/v8/custom/V8NodeIteratorCustom.cpp:
+ (WebCore::toV8): Replace v8::Undefined() return value with v8::Null().
+ * bindings/v8/custom/V8TreeWalkerCustom.cpp:
+ (WebCore::toV8): Ditto.
+
+2009-02-28 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24261
+ Fix V8 custom binding scrubbing error.
+
+ Test: fast/dom/CSSStyleDeclaration/css-properties-case-sensitive.html
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/v8/custom/V8CSSStyleDeclarationCustom.cpp:
+ (WebCore::cssPropertyName): Remove dubious checks, left over from
+ incomplete conversion of parameter from pointer to pass-by-ref.
+ (WebCore::NAMED_PROPERTY_GETTER): Initialize parameter.
+ (WebCore::NAMED_PROPERTY_SETTER): Ditto.
+
+2009-02-28 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24263
+ [GTK] ref ResourceHandle until we are finished with it
+
+ Add a ref to the ResourceHandle in startHttp so we can keep it
+ alive untill all callbacks have been executed, and unref it when
+ soup tells us it's done with the SoupMessage (in
+ finishedCallback). Fixes a number of crashes when calling
+ didReceiveData whould crash because of the handle dying.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::finishedCallback):
+ (WebCore::ResourceHandle::startHttp):
+
+2009-02-28 Adam Bergkvist <adam.bergkvist@ericsson.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24226
+ [SOUP] HTTP status text is never set
+
+ Set HTTP status text to SoupMessage reason_phrase.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::fillResponseFromMessage):
+
+2009-02-28 Dan Bernstein <mitz@apple.com>
+
+ - fix malformed project file
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-02-28 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=23848
+ <rdar://problem/6573250> REGRESSION: Crash when mouse cursor moves over a link on www.opportuno.de
+
+ Test: fast/layers/inline-dirty-z-order-lists.html
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::styleWillChange): Moved the code that dirties a
+ layer's and its stacking context's z-order lists when the layer's
+ z-index or visibility change from here...
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::styleWillChange): ...to here, so that
+ it will apply to RenderInline too.
+
+2009-02-27 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Don't include TextResourceDecoder.h in Document.h
+
+ This undoes inlining of Document::displayStringModifiedByEncoding() to avoid world rebuilds
+ when TextResourceDecoder.h is modified. Performance impact is expected to be negligible.
+
+ * dom/Document.cpp:
+ (WebCore::Document::displayStringModifiedByEncoding):
+ (WebCore::Document::displayBufferModifiedByEncoding):
+ * dom/Document.h:
+ * WebCore.base.exp:
+
+2009-02-27 Matt Pennig <pennig@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Resolves: https://bugs.webkit.org/show_bug.cgi?id=24107
+ "Fixed elements have 0 as an offsetLeft property"
+
+ Code also brings offsetLeft/Top in full conformance with the spec.
+ Added two tests, one for fixed-position elements, and one for <html>.
+
+ Tests: fast/dom/Element/fixed-position-offset-parent.html
+ fast/dom/Element/offsetLeft-offsetTop-html.html
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::offsetLeft):
+ (WebCore::RenderBoxModelObject::offsetTop):
+
+2009-02-27 Dean Jackson <dino@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ renderer()->hasTransform() returns true for elements
+ with perspective, but no transform, so test for transform
+ when hit testing. This fixes ASSERT from
+ https://bugs.webkit.org/show_bug.cgi?id=24252
+
+ Test: transforms/no_transform_hit_testing.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTestLayer):
+
+2009-02-27 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Fix scrubbing error -- a reversed condition.
+
+ * bindings/v8/ScriptValue.h:
+ (WebCore::ScriptValue::clear): Change early exit for empty value, not the opposite.
+
+2009-02-27 Jian Li <jianli@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Add confirmMessageFromWorkerObject to WorkerObjectProxy.
+ https://bugs.webkit.org/show_bug.cgi?id=24152
+
+ * workers/WorkerMessagingProxy.cpp:
+ (WebCore::MessageWorkerContextTask::performTask):
+ (WebCore::WorkerMessagingProxy::confirmMessageFromWorkerObject):
+ * workers/WorkerMessagingProxy.h:
+ * workers/WorkerObjectProxy.h:
+
+2009-02-27 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Revert r41295, the fix for https://bugs.webkit.org/show_bug.cgi?id=24227
+ because it leads to assertion failures in the Mac port.
+
+ * platform/graphics/BitmapImage.cpp:
+ (WebCore::BitmapImage::BitmapImage):
+ * platform/graphics/BitmapImage.h:
+ (WebCore::BitmapImage::mayFillWithSolidColor):
+ * platform/graphics/Image.h:
+ (WebCore::Image::mayFillWithSolidColor):
+ * platform/graphics/cairo/ImageCairo.cpp:
+ (WebCore::BitmapImage::BitmapImage):
+ * platform/graphics/cg/ImageCG.cpp:
+ (WebCore::BitmapImage::BitmapImage):
+ (WebCore::BitmapImage::checkForSolidColor):
+ * platform/graphics/qt/ImageQt.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+ * platform/graphics/skia/ImageSkia.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+ * platform/graphics/wx/ImageWx.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+
+2009-02-27 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20249
+
+ Add a preference to allow universal access from local URLs to mitigate
+ some attacks. Some clients still want to allow this access, so we
+ expose this as a preference.
+
+ * WebCore.base.exp:
+ * dom/Document.cpp:
+ (WebCore::Document::initSecurityContext):
+ * page/SecurityOrigin.cpp:
+ (WebCore::SecurityOrigin::SecurityOrigin):
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+ (WebCore::Settings::setAllowUniversalAccessFromFileUrls):
+ * page/Settings.h:
+ (WebCore::Settings::allowUniversalAccessFromFileUrls):
+
+2009-02-27 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24229
+ If an image has no alpha channel there is no reason to use SourceOver.
+
+ * platform/graphics/qt/ImageQt.cpp:
+ (WebCore::Image::drawPattern):
+ (WebCore::BitmapImage::draw):
+
+2009-02-27 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Eric Seidel and Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24227
+ Ensure that the checkForSolidColor() optimization is correctly triggered
+ for all cases of drawPattern. Currently, the optimization was not triggered
+ when the check had not been previously performed via a request for the
+ image's NativeImagePtr.
+
+ Implement the Qt version of the checkForSolidColor() method. Combined with
+ the bug fix this reduces the time it takes to draw a repeating background
+ of a 1x1 image from ~50msecs to ~0msecs on my machine.
+
+ * platform/graphics/BitmapImage.cpp:
+ (WebCore::BitmapImage::BitmapImage):
+ * platform/graphics/BitmapImage.h:
+ (WebCore::BitmapImage::mayFillWithSolidColor):
+ * platform/graphics/Image.h:
+ (WebCore::Image::mayFillWithSolidColor):
+ * platform/graphics/cairo/ImageCairo.cpp:
+ (WebCore::BitmapImage::BitmapImage):
+ * platform/graphics/cg/ImageCG.cpp:
+ (WebCore::BitmapImage::BitmapImage):
+ (WebCore::BitmapImage::checkForSolidColor):
+ * platform/graphics/qt/ImageQt.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+ * platform/graphics/skia/ImageSkia.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+ * platform/graphics/wx/ImageWx.cpp:
+ (WebCore::BitmapImage::checkForSolidColor):
+
+2009-02-27 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Zack Rusin.
+
+ Added support for gradients and pattern on Fonts for Qt.
+
+ [Qt] gradients and patterns for FontQt
+ https://bugs.webkit.org/show_bug.cgi?id=24243
+
+ * platform/graphics/qt/FontQt.cpp:
+ (WebCore::Font::drawComplexText):
+
+2009-02-27 Jian Li <jianli@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ WorkerContextProxy::create in WorkerMessagingProxy.cpp should only be provided for non-Chromium platform.
+ https://bugs.webkit.org/show_bug.cgi?id=24113
+
+ * workers/WorkerMessagingProxy.cpp:
+
+2009-02-27 Yael Aharon <yael.aharon@nokia.com>
+
+ Added a refresh button to storage views.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24040
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/front-end/DOMStorageItemsView.js:
+ (WebInspector.DOMStorageItemsView):
+ (WebInspector.DOMStorageItemsView.prototype.get statusBarItems):
+ (WebInspector.DOMStorageItemsView.prototype.update):
+ (WebInspector.DOMStorageItemsView.prototype._refreshButtonClicked):
+ * inspector/front-end/DatabaseTableView.js:
+ (WebInspector.DatabaseTableView):
+ (WebInspector.DatabaseTableView.prototype.get statusBarItems):
+ (WebInspector.DatabaseTableView.prototype._refreshButtonClicked):
+ * inspector/front-end/DatabasesPanel.js:
+ (WebInspector.DatabasesPanel):
+ (WebInspector.DatabasesPanel.prototype.get statusBarItems):
+ (WebInspector.DatabasesPanel.prototype.reset):
+ (WebInspector.DatabasesPanel.prototype.showDatabase):
+ (WebInspector.DatabasesPanel.prototype.showDOMStorage):
+ (WebInspector.DatabasesPanel.prototype._updateSidebarWidth):
+ * inspector/front-end/inspector.css:
+
+2009-02-27 Yael Aharon <yael.aharon@nokia.com>
+
+ Added support for editing/deleting localStorage and sessionStorage items
+ directly from Web Inspector.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23866.
+
+ Reviewed by Timothy Hatcher.
+
+ * WebCore.vcproj/WebCore.vcproj:
+ * inspector/front-end/DOMStorageDataGrid.js: Added.
+ (WebInspector.DOMStorageDataGrid):
+ (WebInspector.DOMStorageDataGrid.prototype._ondblclick):
+ (WebInspector.DOMStorageDataGrid.prototype._startEditing):
+ (WebInspector.DOMStorageDataGrid.prototype._editingCommitted):
+ (WebInspector.DOMStorageDataGrid.prototype._editingCancelled):
+ (WebInspector.DOMStorageDataGrid.prototype.deleteSelectedRow):
+ * inspector/front-end/DOMStorageItemsView.js:
+ (WebInspector.DOMStorageItemsView):
+ (WebInspector.DOMStorageItemsView.prototype.get statusBarItems):
+ (WebInspector.DOMStorageItemsView.prototype.hide):
+ (WebInspector.DOMStorageItemsView.prototype.update):
+ (WebInspector.DOMStorageItemsView.prototype._deleteButtonClicked):
+ * inspector/front-end/DatabasesPanel.js:
+ (WebInspector.DatabasesPanel):
+ (WebInspector.DatabasesPanel.prototype.get statusBarItems):
+ (WebInspector.DatabasesPanel.prototype.reset):
+ (WebInspector.DatabasesPanel.prototype.showDOMStorage):
+ (WebInspector.DatabasesPanel.prototype.dataGridForDOMStorage):
+ (WebInspector.DatabasesPanel.prototype._updateSidebarWidth):
+ * inspector/front-end/WebKit.qrc:
+ * inspector/front-end/inspector.css:
+ * inspector/front-end/inspector.html:
+
+2009-02-26 Brett Wilson <brettw@chromium.org>
+
+ Fix Windows transparency for the Chromium port. Implement a helper
+ class for handling transparency on Windows. It allows semitransparent
+ ClearType and semitransparent form controls by making new layers in the
+ background.
+
+ It also replaces the "ThemeHelper" which allows better
+ scaling and transforms on Windows form controls. In addition to the
+ functionality that the ThemeHelper did, but additionally handles the
+ antialiasing properly so that the form controls aren't composited on a
+ white square.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24101
+
+ Reviewed by Eric Seidel.
+
+ * platform/graphics/chromium/FontChromiumWin.cpp:
+ (WebCore::):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareFontPainter::TransparencyAwareFontPainter):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareFontPainter::initializeForGDI):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareFontPainter::~TransparencyAwareFontPainter):
+ (WebCore::TransparencyAwareFontPainter::TransparencyAwareFontPainter::drawGlyphs):
+ (WebCore::Font::drawGlyphs):
+ * platform/graphics/chromium/ThemeHelperChromiumWin.cpp:
+ * platform/graphics/chromium/ThemeHelperChromiumWin.h:
+ * platform/graphics/chromium/TransparencyWin.cpp: Added.
+ (WebCore::):
+ (WebCore::TransparencyWin::OwnedBuffers::OwnedBuffers):
+ (WebCore::TransparencyWin::OwnedBuffers::destBitmap):
+ (WebCore::TransparencyWin::OwnedBuffers::referenceBitmap):
+ (WebCore::TransparencyWin::OwnedBuffers::canHandleSize):
+ (WebCore::TransparencyWin::TransparencyWin):
+ (WebCore::TransparencyWin::~TransparencyWin):
+ (WebCore::TransparencyWin::init):
+ (WebCore::TransparencyWin::computeLayerSize):
+ (WebCore::TransparencyWin::setupLayer):
+ (WebCore::TransparencyWin::setupLayerForNoLayer):
+ (WebCore::TransparencyWin::setupLayerForOpaqueCompositeLayer):
+ (WebCore::TransparencyWin::setupLayerForTextComposite):
+ (WebCore::TransparencyWin::setupLayerForWhiteLayer):
+ (WebCore::TransparencyWin::setupTransform):
+ (WebCore::TransparencyWin::setupTransformForKeepTransform):
+ (WebCore::TransparencyWin::setupTransformForUntransform):
+ (WebCore::TransparencyWin::setupTransformForScaleTransform):
+ (WebCore::TransparencyWin::setTextCompositeColor):
+ (WebCore::TransparencyWin::initializeNewContext):
+ (WebCore::TransparencyWin::compositeOpaqueComposite):
+ (WebCore::TransparencyWin::compositeTextComposite):
+ (WebCore::TransparencyWin::makeLayerOpaque):
+ * platform/graphics/chromium/TransparencyWin.h: Added.
+ (WebCore::TransparencyWin::):
+ (WebCore::TransparencyWin::context):
+ (WebCore::TransparencyWin::platformContext):
+ (WebCore::TransparencyWin::drawRect):
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::endTransparencyLayer):
+ * platform/graphics/skia/ImageSkia.cpp:
+ (WebCore::paintSkBitmap):
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::):
+ (WebCore::RenderThemeChromiumWin::paintButton):
+ (WebCore::RenderThemeChromiumWin::paintMenuList):
+ (WebCore::RenderThemeChromiumWin::paintTextFieldInternal):
+
+2009-02-27 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24211
+ Add ScheduledAction for V8.
+
+ * bindings/v8/ScheduledAction.cpp: Added.
+ (WebCore::ScheduledAction::ScheduledAction):
+ (WebCore::ScheduledAction::~ScheduledAction):
+ (WebCore::ScheduledAction::execute):
+ * bindings/v8/ScheduledAction.h: Added.
+ (WebCore::ScheduledAction::ScheduledAction):
+
+2009-02-27 Zack Rusin <zack@kde.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Qt: be more reasonable about scrolled lines
+
+ cMouseWheelPixelsPerLineStep is currently a constant set to 13.3. it doesn't
+ match our metrics meaning that Qt scrolls by ~2 lines by default which is quite
+ irritating. so lets scroll vertically by the Qt set number of lines * Qt default
+ single step scroll
+
+ * platform/qt/WheelEventQt.cpp:
+
+2009-02-27 Xan Lopez <xan@gnome.org>
+
+ Rubber-stamped by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24222
+ [GTK] Remove checks for old glib versions
+
+ libsoup, which is a hard dependency, needs at least glib 2.15.3,
+ so remove all glib checks for versions older than that.
+
+ * platform/gtk/ContextMenuGtk.cpp:
+ (WebCore::ContextMenu::ContextMenu):
+ * platform/gtk/ContextMenuItemGtk.cpp:
+ (WebCore::ContextMenuItem::setSubMenu):
+ * platform/gtk/PopupMenuGtk.cpp:
+ (WebCore::PopupMenu::show):
+ * platform/gtk/WidgetGtk.cpp:
+ (WebCore::Widget::retainPlatformWidget):
+ * platform/network/soup/ResourceHandleSoup.cpp:
+
+2009-02-26 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Added support for Gradients and Patterns on filled or stroked Fonts
+ in Cairo. I also added support for globalAlpha on FontCairo.
+
+ [CAIRO] SVG/Canvas fonts miss gradients/pattern support
+ https://bugs.webkit.org/show_bug.cgi?id=18617
+
+ * html/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::drawTextInternal):
+ * platform/graphics/cairo/FontCairo.cpp:
+ (WebCore::Font::drawGlyphs):
+
+2009-02-26 Stephen White <senorblanco@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23957
+
+ Fix for SVG gradient and pattern text for Chromium/skia.
+ Added accessors for the fill and stroke gradients to
+ GraphicsContext. Changed the paintSkiaText function to take a
+ GraphicsContext, so we can check for gradients/patterns.
+ Changed the skiaDrawText function to set the SkPaint shader
+ correctly, and to scale up the gradient shader matrix to
+ encompass the entire text string. Also offset each glyph
+ separately, rather than transforming the canvas, so that the
+ gradient/pattern stays fixed relative to the text origin.
+
+ * platform/graphics/GraphicsContext.cpp:
+ (WebCore::GraphicsContext::getFillGradient):
+ (WebCore::GraphicsContext::getStrokeGradient):
+ (WebCore::GraphicsContext::getFillPattern):
+ (WebCore::GraphicsContext::getStrokePattern):
+ * platform/graphics/GraphicsContext.h:
+ * platform/graphics/chromium/FontChromiumWin.cpp:
+ (WebCore::Font::drawGlyphs):
+ * platform/graphics/chromium/UniscribeHelper.cpp:
+ (WebCore::UniscribeHelper::draw):
+ * platform/graphics/skia/SkiaFontWin.cpp:
+ (WebCore::windowsCanHandleTextDrawing):
+ (WebCore::skiaDrawText):
+ (WebCore::paintSkiaText):
+ * platform/graphics/skia/SkiaFontWin.h:
+
+2009-02-26 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24208
+ Add custom V8 bindings for Navigator, Clipboard, Document, and Node.
+
+ * bindings/v8/custom/V8ClipboardCustom.cpp: Added.
+ (WebCore::ACCESSOR_GETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8DocumentCustom.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8NavigatorCustom.cpp: Added.
+ (WebCore::ACCESSOR_GETTER):
+ * bindings/v8/custom/V8NodeCustom.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-02-26 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed build fix for building with GNOME Keyring enabled.
+
+ * platform/network/soup/webkit-soup-auth-dialog.c:
+ (show_auth_dialog):
+
+2009-02-26 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16947
+ [GTK] Missing HTTP Auth challenge
+
+ Add HTTP authentication dialog with optional GNOME Keyring
+ storage.
+
+ * GNUmakefile.am:
+ * platform/network/ResourceHandleInternal.h:
+ (WebCore::ResourceHandleInternal::ResourceHandleInternal):
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::currentToplevelCallback):
+ (WebCore::ResourceHandle::startHttp):
+ (WebCore::ResourceHandle::start):
+ * platform/network/soup/webkit-soup-auth-dialog.c: Added.
+ (webkit_soup_auth_dialog_class_init):
+ (webkit_soup_auth_dialog_init):
+ (webkit_soup_auth_dialog_session_feature_init):
+ (free_authData):
+ (set_password_callback):
+ (response_callback):
+ (show_auth_dialog):
+ (find_password_callback):
+ (session_authenticate):
+ (attach):
+ * platform/network/soup/webkit-soup-auth-dialog.h: Added.
+
+2009-02-25 Ojan Vafai <ojan@chromium.org> and Eric Seidel <eric@webkit.org>
+
+ Reviewed by Dave Hyatt.
+
+ After Ojan's positionForCoordinates fix http://trac.webkit.org/changeset/41191
+ svg/custom/pointer-events-image.svg and svg/custom/pointer-events-text.svg
+ started failing because Ojan's new code was now *correctly* calling through to
+ SVG asking for the closest text offset in the last line box, instead of
+ just returning the offset at the end of the last line box when clicking below a box.
+
+ But! The SVG code was wrong, in that it returned the character offset of the last
+ character when you asked for a character offset after the end of the box, instead
+ it should return the offset *after* the last character. This patch fixes
+ that behavior by reordering the last two clauses in svgCharacterHitsPosition.
+
+ The SVG positionForCoordinates function is still wrong, and I've added some FIXMEs
+ to document what's wrong. I've also cleaned up the code a bit so it's clearer
+ what it is doing (which also makes more obvious what's wrong with it).
+
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::positionForCoordinates):
+ * rendering/SVGInlineTextBox.cpp:
+ (WebCore::SVGInlineTextBoxClosestCharacterToPositionWalker::SVGInlineTextBoxClosestCharacterToPositionWalker):
+ (WebCore::SVGInlineTextBoxClosestCharacterToPositionWalker::chunkPortionCallback):
+ (WebCore::SVGInlineTextBoxClosestCharacterToPositionWalker::offsetOfHitCharacter):
+ (WebCore::SVGInlineTextBox::closestCharacterToPosition):
+ (WebCore::SVGInlineTextBox::svgCharacterHitsPosition):
+
+2009-02-26 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Minor cleanup of ChromiumBridge:
+ Removing unused matchesMIMEType method and s/Javascript/JavaScript/
+
+ * platform/chromium/ChromiumBridge.h:
+ * platform/chromium/MimeTypeRegistryChromium.cpp:
+ (WebCore::MIMETypeRegistry::isSupportedImageMIMEType):
+ (WebCore::MIMETypeRegistry::isSupportedJavaScriptMIMEType):
+ (WebCore::MIMETypeRegistry::isSupportedNonImageMIMEType):
+
+2009-02-26 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Sam Weinig
+
+ Fix text-bottom vertical alignment. It was incorrectly aligning the bottom of the descent instead of including
+ the line-height below the descent.
+
+ Added fast/inline/vertical-align-text-bottom.html
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::verticalPosition):
+
+2009-02-26 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Make SVG Masking platform independet with the use of ImageBuffer::getImageData(),
+ ImageBuffer::putImageData() and GraphicsContext::clipToImageBuffer(). Every platform has
+ just to implement this three methods to support SVG Masking now.
+
+ Make SVG Masking platform aware
+ https://bugs.webkit.org/show_bug.cgi?id=19243
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * svg/graphics/SVGResourceMasker.cpp:
+ (WebCore::SVGResourceMasker::applyMask):
+ * svg/graphics/cairo/SVGResourceMaskerCairo.cpp: Removed.
+ * svg/graphics/cg/SVGResourceMaskerCg.cpp: Removed.
+ * svg/graphics/cg/SVGResourceMaskerCg.mm: Removed.
+ * svg/graphics/qt/SVGResourceMaskerQt.cpp: Removed.
+ * svg/graphics/skia/SVGResourceMaskerSkia.cpp: Removed.
+
+2009-02-26 Yong Li <yong.li@torchmobile.com>
+
+ Reviewed by Darin Adler, Antti Koivisto and Alexey Proskuryakov.
+
+ Test: http/tests/misc/slow-preload-cancel.html
+
+ https://bugs.webkit.org/show_bug.cgi?id=24133
+ Clear all pending preloads in the DocLoader object when we decide to
+ cancel its all requests.
+
+ * loader/DocLoader.cpp:
+ (WebCore::DocLoader::clearPendingPreloads):
+ * loader/DocLoader.h:
+ * loader/loader.cpp:
+ (WebCore::Loader::cancelRequests):
+
+2009-02-26 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24182
+ Add NodeFilter, NodeIterator, and TreeWalker custom V8 bindings.
+
+ * bindings/v8/custom/V8NodeFilterCustom.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8NodeIteratorCustom.cpp: Added.
+ (WebCore::toV8):
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8TreeWalkerCustom.cpp: Added.
+ (WebCore::toV8):
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-02-26 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23500
+ KURL::parse() incorrectly compares its result to original string
+
+ * platform/KURL.cpp: (WebCore::KURL::parse): Take string length into account.
+
+2009-02-26 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Kevin McCullough.
+
+ Manual test for inspector node highlighting.
+
+ * manual-tests/inspector/highlight-nodes.html: Added.
+
+2009-02-16 Anantanarayanan Iyengar <ananta@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23973
+ ScrollView::scrollContents can be invoked during view shutdown. In
+ this scenario the FrameView::hostWindow method can return NULL, which
+ indicates that the frame/page is being destroyed. This causes a crash
+ when we try to dereference a NULL hostWindow pointer. Fix is to add a
+ NULL check for this.
+
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::scrollContents):
+
+2009-02-26 Rahul Kuchhal <kuchhal@chromium.org>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24003
+ Fix a crash caused by unsafe type conversion.
+
+ Test: fast/block/positioning/absolute-in-inline-rtl-4.html
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::calcAbsoluteHorizontalValues):
+
+2009-02-26 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Adam Roben.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24202
+ Have drawNodeHighlight clip instead of clearing. This makes it work for
+ both Safari and Chromium since Chromium draws the inspector highlighting
+ in the same buffer as the page.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::quadToPath):
+ (WebCore::drawOutlinedQuad):
+ (WebCore::drawOutlinedQuadWithClip):
+ (WebCore::drawHighlightForBox):
+
+2009-02-26 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Dan Bernstein & Darin Adler
+
+ Make sure the border/padding are properly omitted at the start of an inline that is a continuation.
+
+ Added fast/inline/inline-continuation-borders.html
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::determineSpacingForFlowBoxes):
+
+2009-02-26 Simon Fraser <simon.fraser@apple.com>
+
+ Build fix, no review.
+
+ Try to fix the wx build after r41218.
+
+ * WebCoreSources.bkl:
+
+2009-02-26 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19527
+ ASSERTION FAILED: containerA && containerB
+
+ Test: fast/dom/Range/bug-19527.html
+
+ * dom/Range.cpp:
+ (WebCore::Range::isPointInRange):
+ (WebCore::Range::comparePoint):
+ Bring the behavior in line with current Firefox, making it impossible for these methods
+ to pass a null container to compareBoundaryPoints().
+
+2009-02-26 Jonathon Jongsma <jonathon@quotidian.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20358
+
+ * platform/graphics/gtk/SimpleFontDataGtk.cpp:
+ (WebCore::SimpleFontData::smallCapsFontData): the small-caps font data
+ should set the computed size rather than the specified size, otherwise
+ the caps just get rendered normal size.
+
2009-02-26 Benjamin Meyer <benjamin.meyer@torchmobile.com>
Reviewed by George Staikos.
@@ -419,6 +32634,1248 @@
* platform/qt/CookieJarQt.cpp:
(WebCore::setCookies):
+2009-02-26 Charles Wei <charles.wei@torchmobile.com.cn>
+
+ Reviewed by George Staikos.
+
+ make WebKit/Qt compile with SVG disabled
+
+ * WebCore.pro:
+ * platform/graphics/qt/FontPlatformDataQt.cpp:
+
+2009-02-25 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed build fix. Add WebCore/workers to the list of paths
+ searched by the bindings generator perl script.
+
+ * GNUmakefile.am:
+
+2009-02-25 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Add canvas to the list of RenderObjects that can mark a page as
+ visually not empty.
+
+ * rendering/RenderHTMLCanvas.cpp:
+ (WebCore::RenderHTMLCanvas::RenderHTMLCanvas):
+
+2009-02-25 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::nodeAtPoint): Remove assertion fired when child has layer
+ as RenderMedia with controls always has a layer.
+
+2009-02-25 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=24130
+ <rdar://problem/6618196> Paint very slow when horizontally resizing
+
+ Test: fast/gradients/background-clipped.html
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended): Intersect the
+ destination rectangle passed to drawTiledImage() with the dirty
+ rectangle. This makes it more likely for the destination rect to be
+ contained in a single tile rect, which results in a faster code path
+ being taken down the road (just drawing a single tile instead of
+ tiling).
+
+2009-02-25 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Fix test regressions from positionForCoordinates patch.
+ https://bugs.webkit.org/show_bug.cgi?id=24148
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::positionForPointWithInlineChildren):
+ Remove ASSERT that placeholder text codepath is hitting.
+
+2009-02-25 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 24143: Crash occurs at WebCore::AccessibilityTable::isTableExposableThroughAccessibility() when applying a link in GMail
+ https://bugs.webkit.org/show_bug.cgi?id=24143
+
+ When an AX object is marked dirty, do not create AX elements while going up the parent chain.
+ Do not allow AXRenderObjects to remove their own IDs from the cache, all the cache to do that work
+ Make sure the AXObjectWrapper's have an object before calling them
+ In AXObjectCache, change get -> getOrCreate. Use get() to only retrieve an element if it exists
+
+ Test: platform/mac-snowleopard/accessibility/table-updating.html
+
+ * WebCore.base.exp:
+ * page/AXObjectCache.cpp:
+ (WebCore::AXObjectCache::~AXObjectCache):
+ (WebCore::AXObjectCache::get):
+ (WebCore::AXObjectCache::getOrCreate):
+ (WebCore::AXObjectCache::removeAXID):
+ (WebCore::AXObjectCache::handleActiveDescendantChanged):
+ (WebCore::AXObjectCache::handleAriaRoleChanged):
+ * page/AXObjectCache.h:
+ * page/AccessibilityImageMapLink.cpp:
+ (WebCore::AccessibilityImageMapLink::parentObject):
+ * page/AccessibilityListBox.cpp:
+ (WebCore::AccessibilityListBox::listBoxOptionAccessibilityObject):
+ (WebCore::AccessibilityListBox::doAccessibilityHitTest):
+ * page/AccessibilityListBoxOption.cpp:
+ (WebCore::AccessibilityListBoxOption::elementRect):
+ (WebCore::AccessibilityListBoxOption::parentObject):
+ * page/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::detach):
+ (WebCore::AccessibilityObject::parentObjectIfExists):
+ (WebCore::replacedNodeNeedsCharacter):
+ (WebCore::AccessibilityObject::accessibilityObjectForPosition):
+ * page/AccessibilityObject.h:
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::firstChild):
+ (WebCore::AccessibilityRenderObject::lastChild):
+ (WebCore::AccessibilityRenderObject::previousSibling):
+ (WebCore::AccessibilityRenderObject::nextSibling):
+ (WebCore::AccessibilityRenderObject::parentObjectIfExists):
+ (WebCore::AccessibilityRenderObject::parentObject):
+ (WebCore::AccessibilityRenderObject::isAttachment):
+ (WebCore::AccessibilityRenderObject::headingLevel):
+ (WebCore::AccessibilityRenderObject::anchorElement):
+ (WebCore::AccessibilityRenderObject::menuForMenuButton):
+ (WebCore::AccessibilityRenderObject::menuButtonForMenu):
+ (WebCore::AccessibilityRenderObject::checkboxOrRadioRect):
+ (WebCore::AccessibilityRenderObject::internalLinkElement):
+ (WebCore::AccessibilityRenderObject::addRadioButtonGroupMembers):
+ (WebCore::AccessibilityRenderObject::titleUIElement):
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+ (WebCore::AccessibilityRenderObject::accessibilityParentForImageMap):
+ (WebCore::AccessibilityRenderObject::getDocumentLinks):
+ (WebCore::AccessibilityRenderObject::doAccessibilityHitTest):
+ (WebCore::AccessibilityRenderObject::focusedUIElement):
+ (WebCore::AccessibilityRenderObject::activeDescendant):
+ (WebCore::AccessibilityRenderObject::observableObject):
+ (WebCore::AccessibilityRenderObject::childrenChanged):
+ (WebCore::AccessibilityRenderObject::addChildren):
+ * page/AccessibilityRenderObject.h:
+ (WebCore::AccessibilityRenderObject::setRenderObject):
+ * page/AccessibilityTable.cpp:
+ (WebCore::AccessibilityTable::addChildren):
+ (WebCore::AccessibilityTable::headerContainer):
+ (WebCore::AccessibilityTable::cellForColumnAndRow):
+ * page/AccessibilityTableCell.cpp:
+ (WebCore::AccessibilityTableCell::isTableCell):
+ (WebCore::AccessibilityTableCell::titleUIElement):
+ * page/AccessibilityTableColumn.cpp:
+ (WebCore::AccessibilityTableColumn::headerObjectForSection):
+ * page/AccessibilityTableRow.cpp:
+ (WebCore::AccessibilityTableRow::isTableRow):
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+ * page/mac/AXObjectCacheMac.mm:
+ (WebCore::AXObjectCache::postNotification):
+ (WebCore::AXObjectCache::postNotificationToElement):
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (textMarkerForVisiblePosition):
+ (AXLinkElementForNode):
+ (nsStringForReplacedNode):
+ (-[AccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:]):
+ (-[AccessibilityObjectWrapper accessibilityActionNames]):
+ (-[AccessibilityObjectWrapper accessibilityAttributeNames]):
+ (-[AccessibilityObjectWrapper accessibilityFocusedUIElement]):
+ (-[AccessibilityObjectWrapper accessibilityHitTest:]):
+ (-[AccessibilityObjectWrapper accessibilityIsAttributeSettable:]):
+ (-[AccessibilityObjectWrapper accessibilityIsIgnored]):
+ (-[AccessibilityObjectWrapper accessibilityParameterizedAttributeNames]):
+ (-[AccessibilityObjectWrapper accessibilityPerformPressAction]):
+ (-[AccessibilityObjectWrapper accessibilityPerformAction:]):
+ (-[AccessibilityObjectWrapper accessibilitySetValue:forAttribute:]):
+ (-[AccessibilityObjectWrapper _accessibilityParentForSubview:]):
+ (-[AccessibilityObjectWrapper accessibilityIndexOfChild:]):
+ (-[AccessibilityObjectWrapper accessibilityArrayAttributeCount:]):
+ (-[AccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]):
+
+2009-02-25 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ Re-working of <rdar://problem/6487249> repro crash in
+ WebCore::CSSParser::parseFillImage copying entire contents of this
+ page
+ -and corresponding: https://bugs.webkit.org/show_bug.cgi?id=24172
+
+ Fixes a bunch of layout test failures I caused!
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseValue):
+ (WebCore::CSSParser::parseContent):
+ (WebCore::CSSParser::parseFillImage):
+ (WebCore::CSSParser::parseFontFaceSrc):
+ (WebCore::CSSParser::parseBorderImage):
+
+2009-02-25 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24174
+ Add more V8 custom bindings.
+
+ * bindings/v8/custom/V8CSSStyleDeclarationCustom.cpp: Added.
+ (WebCore::hasCSSPropertyNamePrefix):
+ (WebCore::cssPropertyName):
+ (WebCore::NAMED_PROPERTY_GETTER):
+ (WebCore::NAMED_PROPERTY_SETTER):
+ * bindings/v8/custom/V8DOMStringListCustom.cpp: Added.
+ (WebCore::INDEXED_PROPERTY_GETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8EventCustom.cpp: Added.
+ (WebCore::ACCESSOR_SETTER):
+ (WebCore::ACCESSOR_GETTER):
+ * bindings/v8/custom/V8HTMLDocumentCustom.cpp: Added.
+ (WebCore::NAMED_PROPERTY_DELETER):
+ (WebCore::NAMED_PROPERTY_SETTER):
+ (WebCore::NAMED_PROPERTY_GETTER):
+ * bindings/v8/custom/V8HTMLFrameSetElementCustom.cpp: Added.
+ (WebCore::NAMED_PROPERTY_GETTER):
+ * bindings/v8/custom/V8NamedNodeMapCustom.cpp: Added.
+ (WebCore::INDEXED_PROPERTY_GETTER):
+ (WebCore::NAMED_PROPERTY_GETTER):
+ * bindings/v8/custom/V8NodeListCustom.cpp: Added.
+ (WebCore::NAMED_PROPERTY_GETTER):
+ * bindings/v8/custom/V8StyleSheetListCustom.cpp: Added.
+ (WebCore::NAMED_PROPERTY_GETTER):
+
+2009-02-25 Scott Violet <sky@google.com>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24171
+ Provides a RenderTheme method for getting the scroll bar size and
+ changes RenderListBox to use it. RenderTheme returns a size of regular,
+ and Mac's override to return small. Changes ScrollbarThemeChromium to
+ use the scrollbarsize of the scrollbar when getting the size
+ instead of passing in no-args.
+
+ * platform/chromium/ScrollbarThemeChromium.cpp:
+ (WebCore::ScrollbarThemeChromium::trackRect):
+ (WebCore::ScrollbarThemeChromium::buttonSize):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::createScrollbar):
+ * rendering/RenderTheme.h:
+ (WebCore::RenderTheme::scrollbarControlSizeForPart):
+ * rendering/RenderThemeChromiumMac.h:
+ (WebCore::RenderThemeChromiumMac::scrollbarControlSizeForPart):
+ * rendering/RenderThemeMac.h:
+ (WebCore::RenderThemeMac::scrollbarControlSizeForPart):
+
+2009-02-25 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for <rdar://problem/6487249> repro crash in
+ WebCore::CSSParser::parseFillImage copying entire contents of this
+ page
+ -and corresponding: https://bugs.webkit.org/show_bug.cgi?id=24172
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseValue): Null-check m_styleSheet
+
+2009-02-25 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix the Qt build.
+
+ * WebCore.pro:
+
+2009-02-25 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Gtk build fix. Not reviewed.
+
+ Add files to the build per r41218.
+ Rename WebkitPoint.h to WebKitPoint.h in DOMWindow.cpp
+
+ * GNUmakefile.am:
+ * page/DOMWindow.cpp:
+
+2009-02-25 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24043
+ When faced with URLs with unsupported protocol on Gtk port,
+ report the error through an idle function and return true, so
+ a proper resource handle is created.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::reportUnknownProtocolError):
+ (WebCore::ResourceHandle::start):
+
+2009-02-25 Steve Falkenburg <sfalken@apple.com>
+
+ Windows build fix.
+ Use struct to forward declare ResourceRequest.
+
+ * history/HistoryItem.h:
+ * inspector/InspectorController.h:
+ * loader/DocumentThreadableLoader.h:
+ * loader/FrameLoaderClient.h:
+ * loader/MainResourceLoader.h:
+ * loader/SubresourceLoader.h:
+ * loader/SubresourceLoaderClient.h:
+ * loader/ThreadableLoader.h:
+ * loader/WorkerThreadableLoader.h:
+ * platform/CrossThreadCopier.h:
+ * platform/network/ResourceHandle.h:
+ * platform/network/ResourceHandleClient.h:
+ * platform/network/ResourceRequestBase.h:
+ * platform/network/cf/ResourceRequestCFNet.h:
+ * xml/XMLHttpRequest.h:
+
+2009-02-25 Steve Falkenburg <sfalken@apple.com>
+
+ Partial Windows build fix.
+
+ * DerivedSources.cpp:
+ * WebCore.vcproj/WebCore.vcproj:
+
+2009-02-25 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ Ported arcTo to Qt. Qt has no native support for arcTo. This changes
+ calculate the behavior of arcTo and draws it with lineTo and arc.
+
+ [QT] implement Canvas arcTo
+ https://bugs.webkit.org/show_bug.cgi?id=23873
+
+ * platform/graphics/qt/PathQt.cpp:
+ (WebCore::Path::addArcTo):
+
+2009-02-25 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ Remove idl files from Resources, and sort.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-02-25 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23943
+
+ Added webkitConvertPointFromNodeToPage and webkitConvertPointFromPageToNode on
+ the window object. Also added WebKitPoint object, which is passed in and out
+ of these functions.
+
+ Test: fast/dom/Window/webkitConvertPoint.html
+
+ * DerivedSources.make:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * bindings/js/JSDOMWindowBase.cpp:
+ (jsDOMWindowBaseWebKitPoint):
+ (setJSDOMWindowBaseWebKitPoint):
+ * bindings/js/JSWebKitPointConstructor.cpp: Added.
+ (WebCore::):
+ (WebCore::JSWebKitPointConstructor::JSWebKitPointConstructor):
+ (WebCore::constructWebKitPoint):
+ (WebCore::JSWebKitPointConstructor::getConstructData):
+ * bindings/js/JSWebKitPointConstructor.h: Added.
+ (WebCore::JSWebKitPointConstructor::classInfo):
+ * dom/Node.cpp:
+ (WebCore::Node::convertToPage):
+ (WebCore::Node::convertFromPage):
+ * dom/Node.h:
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::webkitConvertPointFromNodeToPage):
+ (WebCore::DOMWindow::webkitConvertPointFromPageToNode):
+ * page/DOMWindow.h:
+ * page/DOMWindow.idl:
+ * page/WebKitPoint.h: Added.
+ (WebCore::WebKitPoint::create):
+ (WebCore::WebKitPoint::x):
+ (WebCore::WebKitPoint::y):
+ (WebCore::WebKitPoint::setX):
+ (WebCore::WebKitPoint::setY):
+ (WebCore::WebKitPoint::WebKitPoint):
+ * page/WebKitPoint.idl: Added.
+
+2009-02-25 Jian Li <jianli@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Remove "#if ENABLE(WORKERS)" wrap from CrossThreadCopier files.
+ https://bugs.webkit.org/show_bug.cgi?id=24145
+
+ * platform/CrossThreadCopier.cpp:
+ * platform/CrossThreadCopier.h:
+
+2009-02-25 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23688: ThreadableLoader needs a sync implementation for Workers.
+ <https://bugs.webkit.org/show_bug.cgi?id=23688>
+
+ No observable change in behavior, so no test.
+
+ * loader/ThreadableLoader.cpp:
+ (WebCore::ThreadableLoader::loadResourceSynchronously):
+ * loader/ThreadableLoaderClientWrapper.h:
+ (WebCore::ThreadableLoaderClientWrapper::clearClient):
+ (WebCore::ThreadableLoaderClientWrapper::done):
+ (WebCore::ThreadableLoaderClientWrapper::didFinishLoading):
+ (WebCore::ThreadableLoaderClientWrapper::didFail):
+ (WebCore::ThreadableLoaderClientWrapper::didFailRedirectCheck):
+ (WebCore::ThreadableLoaderClientWrapper::ThreadableLoaderClientWrapper):
+ Expose whether the loader is done (based on what callbacks were done).
+
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::WorkerThreadableLoader::WorkerThreadableLoader):
+ (WebCore::WorkerThreadableLoader::loadResourceSynchronously):
+ Each loader is given its own mode so that only its callbacks get through the run loop.
+
+ The xhr spec says that the readystatechange events are synchronous, so in the case of a
+ nested sync xhr no readystatechange events should be fired for the outer xhr.
+
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
+
+ * loader/WorkerThreadableLoader.h:
+ (WebCore::WorkerThreadableLoader::create):
+ (WebCore::WorkerThreadableLoader::done):
+
+ * workers/WorkerRunLoop.cpp:
+ (WebCore::WorkerRunLoop::WorkerRunLoop):
+ * workers/WorkerRunLoop.h:
+ (WebCore::WorkerRunLoop::createUniqueId):
+ Simple method to create a uniqueId on demand with respect to the run loop.
+
+ * workers/WorkerThread.h:
+
+2009-02-25 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 24089: ThreadableLoader::loadResourceSynchronously should do callbacks like the async code.
+ <https://bugs.webkit.org/show_bug.cgi?id=24089>
+
+ Make threadable loader callbacks to happen during the sync load call.
+
+ Changes the behavior of sync xhr for insecure redirects in two ways:
+ + Sends an error event instead of an abort event (which is the same as async xhr's behavior).
+ + Throws a network exception which is what other browsers do and what the spec
+ says to do (http://www.w3.org/TR/XMLHttpRequest/).
+
+ * loader/DocumentThreadableLoader.cpp:
+ (WebCore::DocumentThreadableLoader::loadResourceSynchronously):
+ * loader/DocumentThreadableLoader.h:
+ * loader/ThreadableLoader.cpp:
+ (WebCore::ThreadableLoader::loadResourceSynchronously):
+ * loader/ThreadableLoader.h:
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::XMLHttpRequest):
+ (WebCore::XMLHttpRequest::loadRequestSynchronously):
+ (WebCore::XMLHttpRequest::loadRequestAsynchronously):
+ (WebCore::XMLHttpRequest::didFail):
+ (WebCore::XMLHttpRequest::didFailRedirectCheck):
+ * xml/XMLHttpRequest.h:
+
+2009-02-24 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by David Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23368
+
+ Added logic to correctly hit test accelerated layers.
+
+ Tests: animations/animation-hit-test-transform.html
+ animations/animation-hit-test.html
+ transitions/transition-hit-test-transform.html
+ transitions/transition-hit-test.html
+
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::animate):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTestLayer):
+ (WebCore::RenderLayer::updateClipRects):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+
+2009-02-25 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24067
+ REGRESSION: Crash in WebCore::Document::initSecurityContext
+
+ The crash started to happen when we removed a check for frame->document() being null.
+ However, the original document shouldn't be null here, because it is needed to alias
+ security origins. So, this patch fixes the crash by correcting security origin behavior.
+
+ Test: http/tests/security/aboutBlank/window-open-self-about-blank.html
+ This tests for not crashing, and for inheriting the domain from the document being replaced.
+ Preserving the aliasing cannot be tested for automatically, because we'd need a non-trivial
+ domain to remove a prefix from.
+
+ * loader/FrameLoader.cpp: (WebCore::FrameLoader::begin): Create a new document before
+ clearing the frame, so that Document::initSecurityContext() could access the old one.
+
+2009-02-25 Jay Campan <jcampan@google.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24066
+
+ Items in drop-downs were not painted correctly. Makes sure the
+ PopupListBox invalidates in the coordinates of the window as this is
+ FramelessScrollView::invalidateRect paints to.
+
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupListBox::invalidateRow):
+
+2009-02-24 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Anders Carlsson
+
+ https://bugs.webkit.org/show_bug.cgi?id=15081
+
+ Make display:none work for applet, emebed and object elements
+ by calling rendererIsNeeded() on superclasses.
+
+ Tests: fast/replaced/applet-display-none.html
+ fast/replaced/embed-display-none.html
+ fast/replaced/object-display-none.html
+
+ * html/HTMLAppletElement.cpp:
+ (WebCore::HTMLAppletElement::rendererIsNeeded):
+ * html/HTMLElement.cpp:
+ (WebCore::HTMLElement::rendererIsNeeded):
+ * html/HTMLEmbedElement.cpp:
+ (WebCore::HTMLEmbedElement::rendererIsNeeded):
+ * html/HTMLObjectElement.cpp:
+ (WebCore::HTMLObjectElement::rendererIsNeeded):
+
+2009-02-24 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=24137
+
+ Fix localToAbsolute() and absoluteToLocal() to map points through 3d transforms,
+ taking perspective and transform-style: preserve-3d into account.
+
+ In order to support transform-style: preserve-3d, which keeps elements in a
+ 3d space, we have to carry along an accumulated matrix in TransformState.
+ We also need to apply the perspective from the parent, if any, with the
+ appropriate origin.
+
+ * GNUmakefile.am:
+ * WebCore.base.exp:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * platform/graphics/transforms/TransformationMatrix.cpp:
+ (WebCore::TransformationMatrix::translate):
+ (WebCore::TransformationMatrix::translate3d):
+ (WebCore::TransformationMatrix::translateRight3d):
+ * platform/graphics/transforms/TransformationMatrix.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::mapLocalToAbsolutePoint):
+ (WebCore::RenderBox::mapAbsoluteToLocalPoint):
+ * rendering/RenderBox.h:
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateTransform):
+ (WebCore::RenderLayer::perspectiveTransform):
+ (WebCore::RenderLayer::perspectiveOrigin):
+ * rendering/RenderLayer.h:
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::requiresCompositingLayerForTransform):
+ (WebCore::RenderLayerCompositor::layerHas3DContent):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::localToAbsolute):
+ (WebCore::RenderObject::absoluteToLocal):
+ (WebCore::RenderObject::mapLocalToAbsolutePoint):
+ (WebCore::RenderObject::mapAbsoluteToLocalPoint):
+ * rendering/RenderObject.h:
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::mapLocalToAbsolutePoint):
+ (WebCore::RenderTableCell::mapAbsoluteToLocalPoint):
+ * rendering/RenderTableCell.h:
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::mapLocalToAbsolutePoint):
+ (WebCore::RenderView::mapAbsoluteToLocalPoint):
+ * rendering/RenderView.h:
+ * rendering/TransformState.cpp: Added.
+ (WebCore::TransformState::move):
+ (WebCore::TransformState::applyTransform):
+ (WebCore::TransformState::flatten):
+ * rendering/TransformState.h: Added.
+ (WebCore::TransformState::):
+ (WebCore::TransformState::TransformState):
+ (WebCore::TransformState::move):
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::hasPerspective):
+
+2009-02-24 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23990
+ Regression (r40837): JavaScript image popup doesn't work
+
+ Make the getClientRects and getBoundingClientRect methods return rects
+ relative to the viewport.
+
+ Test: fast/dom/getBoundingClientRect-getClientRects-relative-to-viewport.html
+
+ * dom/Element.cpp:
+ (WebCore::Element::getClientRects):
+ (WebCore::Element::getBoundingClientRect):
+
+2009-02-24 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ SVG pages don't have a body or an html element!
+ Don't return early if there is no body.
+
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::canonicalPosition):
+
+2009-02-23 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Eric Seidel
+
+ https://bugs.webkit.org/show_bug.cgi?id=23740, painting order wrong for normal flow elements with overflow: hidden
+
+ This patch reworks the painting of overflow. There is now the concept of a "self-painting layer." All
+ layers are considered to be self-painting except for overflow layers that are normal flow (and that don't have
+ reflections or masks).
+
+ If an overflow layer is not self-painting, then it ends up painted by its parent just like any other normal flow object.
+ The only difference is that the clip has to be pushed and popped when painting the object's children.
+
+ The lightweight clipping scheme used for controls has been extended to cover overflow now in this simplified case. With
+ the code consolidated into reusable push/pop functions, all of the renderers that use overflow have been patched to
+ use the new functions.
+
+ Hit testing has also been patched to check the overflow clip rect first before recurring into children.
+
+ Scrollbar paint has been moved into RenderBlock for now, since none of the table objects support scrollbars
+ yet, and scrollbar hit testing was already there anyway. Now the two code paths are more symmetrical.
+
+ Masks are now treated like normal flow layers (just like reflections).
+
+ A couple of test cases have been added to fast/overflow to test the stacking order.
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::nodeAtPoint):
+ (WebCore::InlineFlowBox::paint):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::repaintOverhangingFloats):
+ (WebCore::RenderBlock::paint):
+ (WebCore::RenderBlock::paintChildren):
+ (WebCore::RenderBlock::paintObject):
+ (WebCore::RenderBlock::paintFloats):
+ (WebCore::RenderBlock::insertFloatingObject):
+ (WebCore::RenderBlock::floatRect):
+ (WebCore::RenderBlock::lowestPosition):
+ (WebCore::RenderBlock::rightmostPosition):
+ (WebCore::RenderBlock::leftmostPosition):
+ (WebCore::RenderBlock::addOverhangingFloats):
+ (WebCore::RenderBlock::nodeAtPoint):
+ (WebCore::RenderBlock::hitTestContents):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::nodeAtPoint):
+ (WebCore::RenderBox::pushContentsClip):
+ (WebCore::RenderBox::popContentsClip):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::paintObject):
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::hasSelfPaintingLayer):
+ * rendering/RenderBoxModelObject.h:
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::paintLayer):
+ (WebCore::RenderLayer::hitTestLayer):
+ (WebCore::RenderLayer::shouldBeNormalFlowOnly):
+ (WebCore::RenderLayer::isSelfPaintingLayer):
+ * rendering/RenderLayer.h:
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::paint):
+ (WebCore::RenderTable::paintObject):
+ (WebCore::RenderTable::nodeAtPoint):
+ * rendering/RenderTable.h:
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::paint):
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::nodeAtPoint):
+ (WebCore::RenderTableRow::paint):
+ * rendering/RenderTableRow.h:
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::paint):
+ (WebCore::RenderTableSection::paintObject):
+ (WebCore::RenderTableSection::nodeAtPoint):
+ * rendering/RenderTableSection.h:
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::write):
+ (WebCore::writeLayers):
+
+2009-02-24 David Levin <levin@chromium.org>
+
+ Reviewed by NOBODY (build fix).
+
+ Attempted build fix for wx-mac.
+
+ * WebCoreSources.bkl:
+
+2009-02-24 David Levin <levin@chromium.org>
+
+ Reviewed by NOBODY (build fix).
+
+ Attempted build fixes for qt-linux and wx-mac.
+
+ * WebCore.pro:
+ * webcore-base.bkl:
+
+2009-02-24 Ojan Vafai <ojan@dhcp-172-31-134-214.sfo.corp.google.com>
+
+ Reviewed by Sam Weinig.
+
+ Fix null pointer error. If the node is the Document, then ownerDocument()
+ returns null, document() does not.
+
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::canonicalPosition):
+
+2009-02-24 Jian Li <jianli@chromium.org>
+
+ Reviewed by NOBODY (attempted build fixes).
+
+ Fix build break for Windows and Linux.
+
+ * GNUmakefile.am:
+ * WebCore.vcproj/WebCore.vcproj:
+
+2009-02-24 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24131
+ Fix-up COM/RefCounted dichotomy in Chromium port.
+
+ * page/chromium/AccessibilityObjectWrapper.h:
+ (WebCore::AccessibilityObjectWrapper::AccessibilityObjectWrapper): Added
+ explicit setting of recount.
+
+2009-02-24 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24141
+ Add clarity to V8 interceptor helper function.
+
+ * bindings/v8/custom/V8HTMLPlugInElementCustom.cpp:
+ (WebCore::NAMED_PROPERTY_GETTER): Renamed to notHandledByInterceptor.
+ (WebCore::NAMED_PROPERTY_SETTER): Ditto.
+ (WebCore::INDEXED_PROPERTY_GETTER): Ditto.
+ (WebCore::INDEXED_PROPERTY_SETTER): Ditto.
+
+2009-02-24 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Eric Seidel
+
+ Minor numeric cleanup: convert float literals to doubles.
+
+ * platform/graphics/transforms/RotateTransformOperation.cpp:
+ (WebCore::RotateTransformOperation::blend):
+
+2009-02-24 Mark Mentovai <mark@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24139
+ Add missing include.
+
+ * bindings/v8/ScriptInstance.h:
+
+2009-02-24 Jian Li <jianli@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Move worker related files from dom directory to worker directory under WebCore.
+ https://bugs.webkit.org/show_bug.cgi?id=24123
+
+ * DerivedSources.make:
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/MigrateIDLAndScripts:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/CrossThreadCopier.cpp: Renamed from WebCore/dom/CrossThreadCopier.cpp.
+ * platform/CrossThreadCopier.h: Renamed from WebCore/dom/CrossThreadCopier.h.
+ * workers/GenericWorkerTask.h: Renamed from WebCore/dom/GenericWorkerTask.h.
+ * workers/Worker.cpp: Renamed from WebCore/dom/Worker.cpp.
+ * workers/Worker.h: Renamed from WebCore/dom/Worker.h.
+ * workers/Worker.idl: Renamed from WebCore/dom/Worker.idl.
+ * workers/WorkerContext.cpp: Renamed from WebCore/dom/WorkerContext.cpp.
+ * workers/WorkerContext.h: Renamed from WebCore/dom/WorkerContext.h.
+ * workers/WorkerContext.idl: Renamed from WebCore/dom/WorkerContext.idl.
+ * workers/WorkerContextProxy.h: Renamed from WebCore/dom/WorkerContextProxy.h.
+ * workers/WorkerLocation.cpp: Renamed from WebCore/dom/WorkerLocation.cpp.
+ * workers/WorkerLocation.h: Renamed from WebCore/dom/WorkerLocation.h.
+ * workers/WorkerLocation.idl: Renamed from WebCore/dom/WorkerLocation.idl.
+ * workers/WorkerMessagingProxy.cpp: Renamed from WebCore/dom/WorkerMessagingProxy.cpp.
+ * workers/WorkerMessagingProxy.h: Renamed from WebCore/dom/WorkerMessagingProxy.h.
+ * workers/WorkerObjectProxy.h: Renamed from WebCore/dom/WorkerObjectProxy.h.
+ * workers/WorkerRunLoop.cpp: Renamed from WebCore/dom/WorkerRunLoop.cpp.
+ * workers/WorkerRunLoop.h: Renamed from WebCore/dom/WorkerRunLoop.h.
+ * workers/WorkerThread.cpp: Renamed from WebCore/dom/WorkerThread.cpp.
+ * workers/WorkerThread.h: Renamed from WebCore/dom/WorkerThread.h.
+
+2009-02-05 Ojan Vafai <ojan@chromium.org> and Eric Seidel <eric@webkit.org>
+
+ Reviewed by Dave Hyatt.
+
+ Make cursor positions match IE6/IE7/FF3 when clicking in margins/padding
+ around divs inside editable regions.
+ https://bugs.webkit.org/show_bug.cgi?id=23605
+
+ Fix clicks outside editable regions from focusing the editable region.
+ https://bugs.webkit.org/show_bug.cgi?id=23607
+
+ Removed editing/selection/contenteditable-click-outside.html as it's
+ not as useful as our new tests.
+
+ Clean up RenderBlock::positionForCoordinates to remove dead code,
+ duplicate code, and generally make it more readable.
+
+ Tests: editing/selection/click-in-margins-inside-editable-div.html
+ editing/selection/click-in-padding-with-multiple-line-boxes.html
+ editing/selection/click-outside-editable-div.html
+
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::canonicalPosition):
+ * rendering/RenderBlock.cpp:
+ (WebCore::positionForPointRespectingEditingBoundaries):
+ (WebCore::positionForPointWithInlineChildren):
+ (WebCore::RenderBlock::positionForCoordinates):
+ (WebCore::RenderBlock::updateFirstLetter):
+
+2009-02-24 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Related to <rdar://problem/6590295>
+ Allow disabling javascript: urls.
+
+ * WebCore.base.exp:
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::parseMappedAttribute):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::executeIfJavaScriptURL):
+ * page/Page.cpp:
+ (WebCore::Page::Page):
+ (WebCore::Page::setJavaScriptURLsAreAllowed):
+ (WebCore::Page::javaScriptURLsAreAllowed):
+ * page/Page.h:
+
+2009-02-24 Simon Fraser <simon.fraser@apple.com>
+
+ Fix build when ACCELERATED_COMPOSITING is turned on
+ (overflowList() -> normalFlowList()).
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::hasNonCompositingContent):
+ (WebCore::RenderLayerBacking::paintIntoLayer):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::calculateCompositedBounds):
+ (WebCore::RenderLayerCompositor::computeCompositingRequirements):
+ (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
+ (WebCore::RenderLayerCompositor::recursiveRepaintLayerRect):
+ (WebCore::RenderLayerCompositor::layerHas3DContent):
+
+2009-02-24 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Darin Adler
+
+ https://bugs.webkit.org/show_bug.cgi?id=24135
+
+ Round the FloatPoint returned by absoluteToLocal(), rather than
+ truncating it.
+
+ * dom/MouseRelatedEvent.cpp:
+ (WebCore::MouseRelatedEvent::receivedTarget):
+
+2009-02-24 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=24004 REGRESSION:
+ Ordered list item marker misaligned when line height is not 1.2
+ -and corresponding <rdar://problem/6602506>
+
+ This is a regression from http://trac.webkit.org/changeset/40880
+ where createInlineBox was taken off of RenderObject and moved to
+ RenderBox. The problem was that the RenderBox version still needs
+ to be virtual because there is still an existing implementation in
+ RenderListMarker.
+
+ * rendering/RenderBox.h:
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::createInlineBox):
+ * rendering/RenderListMarker.h:
+
+2009-02-24 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24128
+ Upstream more V8 custom bindings: constructors, XSLTProcessor.
+
+ * bindings/v8/custom/V8DOMParserConstructor.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8MessageChannelConstructor.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8WebKitCSSMatrixConstructor.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8XMLSerializerConstructor.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8XPathEvaluatorConstructor.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8XSLTProcessorCustom.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-02-24 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 24090: WorkerThreadableLoader needs to be able to post tasks for a mode.
+ <https://bugs.webkit.org/show_bug.cgi?id=24090>
+
+ No observable change in behavior, so no test.
+
+ * dom/WorkerMessagingProxy.cpp:
+ (WebCore::WorkerMessagingProxy::postMessageToWorkerContext):
+ (WebCore::WorkerMessagingProxy::postTaskToWorkerContext):
+ Fixed the bug that m_unconfirmedMessageCount was getting incremented for non-message tasks.
+
+ (WebCore::WorkerMessagingProxy::postTaskForModeToWorkerContext):
+
+ * dom/WorkerMessagingProxy.h:
+ * loader/ThreadableLoader.cpp:
+ (WebCore::ThreadableLoader::create):
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::WorkerThreadableLoader::WorkerThreadableLoader):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didSendData):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveAuthenticationCancellation):
+ Changed these methods to post task using a mode.
+
+ * loader/WorkerThreadableLoader.h:
+ (WebCore::WorkerThreadableLoader::create):
+
+2009-02-24 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24091
+ <rdar://problem/6468660> Start of redirect chain ends up as master entry in Application Cache
+
+ Test: http/tests/appcache/access-via-redirect.php
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::finishedLoadingMainResource): Use the URL we ended up with,
+ not the original one.
+
+2009-02-24 Jian Li <jianli@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Change to include WorkerObjectProxy.h instead of WorkerMessagingProxy.h in WorkerContext.cpp and WorkerScriptController.cpp.
+ https://bugs.webkit.org/show_bug.cgi?id=24112
+
+ * bindings/js/WorkerScriptController.cpp:
+ * dom/WorkerContext.cpp:
+
+2009-02-23 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ <rdar://problem/6613796> Extended text codecs registered on webview creation
+
+ Comparing a text encoding with string "GBK" ended up constructing
+ TextEncoding("GBK") which in turn initialized all extended
+ text codecs.
+
+ * platform/text/TextCodecICU.cpp:
+ (WebCore::TextCodecICU::decode):
+
+2009-02-23 Sam Weinig <sam@webkit.org>
+
+ Fix Qt build.
+
+ * bridge/qt/qt_runtime.cpp:
+ (JSC::Bindings::valueRealType):
+
+2009-02-23 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Bug 23956: Safari crashes when cloneNode fails (cloning a XML element with an invalid nodeName)
+
+ The crash occurred because Document::cloneNode would call Document::createElementNS. Unfortunately
+ element created with createElement could have a wrong nodeName (createElement sets the string as the
+ localName without checking for a prefix).
+
+ The fix is to call Document::createElement(const QualifiedName&, bool) that will not do any checks on the QualifiedName
+ and will always succeed.
+ Also rolled-out the HTMLElement specialisation of clonedNode as it was equivalent to what is done now (added an ASSERT
+ to ensure that).
+
+ Test: fast/dom/cloneNode.html
+
+ * dom/Element.cpp:
+ (WebCore::Element::cloneNode): Call createElement(const QualifiedName&, bool) instead of createElementNS as it will
+ always return an element.
+
+ * html/HTMLElement.cpp:
+ * html/HTMLElement.h: Removed HTMLElement::clonedNode as it is equivalent to what is now done.
+
+2009-02-23 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24109
+ Upstream V8 Script abstractions, all except ScriptController.
+
+ * bindings/v8/ScriptCachedFrameData.h: Added.
+ (WebCore::ScriptCachedFrameData::ScriptCachedFrameData):
+ (WebCore::ScriptCachedFrameData::~ScriptCachedFrameData):
+ (WebCore::ScriptCachedFrameData::restore):
+ (WebCore::ScriptCachedFrameData::clear):
+ (WebCore::ScriptCachedFrameData::domWindow):
+ * bindings/v8/ScriptCallFrame.cpp: Added.
+ (WebCore::ScriptCallFrame::ScriptCallFrame):
+ (WebCore::ScriptCallFrame::~ScriptCallFrame):
+ (WebCore::ScriptCallFrame::argumentAt):
+ * bindings/v8/ScriptCallFrame.h: Added.
+ (WebCore::ScriptCallFrame::functionName):
+ (WebCore::ScriptCallFrame::sourceURL):
+ (WebCore::ScriptCallFrame::lineNumber):
+ (WebCore::ScriptCallFrame::argumentCount):
+ * bindings/v8/ScriptCallStack.cpp: Added.
+ (WebCore::ScriptCallStack::ScriptCallStack):
+ (WebCore::ScriptCallStack::~ScriptCallStack):
+ (WebCore::ScriptCallStack::at):
+ * bindings/v8/ScriptCallStack.h: Added.
+ (WebCore::ScriptCallStack::size):
+ * bindings/v8/ScriptInstance.cpp: Added.
+ (WebCore::V8ScriptInstance::V8ScriptInstance):
+ (WebCore::V8ScriptInstance::~V8ScriptInstance):
+ (WebCore::V8ScriptInstance::instance):
+ (WebCore::V8ScriptInstance::clear):
+ (WebCore::V8ScriptInstance::set):
+ * bindings/v8/ScriptInstance.h: Added.
+ (WebCore::V8ScriptInstance::create):
+ * bindings/v8/ScriptSourceCode.h: Added.
+ (WebCore::ScriptSourceCode::ScriptSourceCode):
+ (WebCore::ScriptSourceCode::isEmpty):
+ (WebCore::ScriptSourceCode::source):
+ (WebCore::ScriptSourceCode::url):
+ (WebCore::ScriptSourceCode::startLine):
+ * bindings/v8/ScriptState.h: Added.
+ (WebCore::ScriptState::hadException):
+ (WebCore::ScriptState::setException):
+ (WebCore::ScriptState::exception):
+ * bindings/v8/ScriptString.h: Added.
+ (WebCore::ScriptString::ScriptString):
+ (WebCore::ScriptString::operator String):
+ (WebCore::ScriptString::isNull):
+ (WebCore::ScriptString::size):
+ (WebCore::ScriptString::operator=):
+ (WebCore::ScriptString::operator+=):
+ * bindings/v8/ScriptValue.cpp: Added.
+ (WebCore::ScriptValue::getString):
+ * bindings/v8/ScriptValue.h: Added.
+ (WebCore::ScriptValue::ScriptValue):
+ (WebCore::ScriptValue::operator=):
+ (WebCore::ScriptValue::operator==):
+ (WebCore::ScriptValue::operator!=):
+ (WebCore::ScriptValue::isNull):
+ (WebCore::ScriptValue::isUndefined):
+ (WebCore::ScriptValue::clear):
+ (WebCore::ScriptValue::~ScriptValue):
+ (WebCore::ScriptValue::v8Value):
+
+2009-02-23 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Timothy Hatcher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24106
+ The Qt port is crashing on exit because the tear down procedure involves
+ the WebCore::InspectorController trying to access the JS execution context
+ for a page that is being deleted. This patch amends the inspector so
+ that it does not try and access the execution context of the WebCore::Page
+ in the midst of deletion.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::inspectedPageDestroyed):
+ (WebCore::InspectorController::stopUserInitiatedProfiling):
+
+2009-02-23 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 24088: ThreadableLoaderClient::didFailWillSendRequestCheck isn't wired up completely for workers and could use a better name.
+ <https://bugs.webkit.org/show_bug.cgi?id=24088>
+
+ No observable change in behavior, so no test.
+
+ * loader/DocumentThreadableLoader.cpp:
+ (WebCore::DocumentThreadableLoader::create):
+ * loader/ThreadableLoaderClient.h:
+ (WebCore::ThreadableLoaderClient::didFailRedirectCheck):
+ * loader/ThreadableLoaderClientWrapper.h:
+ (WebCore::ThreadableLoaderClientWrapper::didFailRedirectCheck):
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::workerContextDidFailRedirectCheck):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck):
+ * loader/WorkerThreadableLoader.h:
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::didFinishLoading):
+ * xml/XMLHttpRequest.h:
+
+2009-02-23 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 24047: Need to simplify nested if's in WorkerRunLoop::runInMode
+ <https://bugs.webkit.org/show_bug.cgi?id=24047>
+
+ Made a nested if inside of WorkerRunLoop::runInMode a lot simpler by
+ using only MessageQueue::waitForMessageFilteredWithTimeout instead
+ of three different MessageQueue methods.
+
+ No observable change in behavior, so no test.
+
+ * dom/WorkerRunLoop.cpp:
+ (WebCore::ModePredicate::operator()):
+ Minor clean-up to able to pass a const ref point for ModePredicate into runInMode.
+ (WebCore::WorkerRunLoop::runInMode):
+ * dom/WorkerRunLoop.h:
+
+2009-02-23 David Hyatt <hyatt@apple.com>
+
+ In preparation for making layers for multicol objects (so that they can properly split child layers
+ into multiple columns), rename all of the "overflowOnly" and "overflowList" members and functions
+ of RenderLayer to use the term "normal flow" instead.
+
+ Reviewed by Cameron Zwarich
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::RenderLayer):
+ (WebCore::RenderLayer::~RenderLayer):
+ (WebCore::RenderLayer::setHasVisibleContent):
+ (WebCore::RenderLayer::enclosingCompositingLayer):
+ (WebCore::RenderLayer::addChild):
+ (WebCore::RenderLayer::removeChild):
+ (WebCore::RenderLayer::paintLayer):
+ (WebCore::RenderLayer::hitTestLayer):
+ (WebCore::RenderLayer::dirtyNormalFlowList):
+ (WebCore::RenderLayer::updateNormalFlowList):
+ (WebCore::RenderLayer::collectLayers):
+ (WebCore::RenderLayer::updateLayerListsIfNeeded):
+ (WebCore::RenderLayer::shouldBeNormalFlowOnly):
+ (WebCore::RenderLayer::styleChanged):
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::isNormalFlowOnly):
+ (WebCore::RenderLayer::normalFlowList):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::writeLayers):
+
+2009-02-23 David Hyatt <hyatt@apple.com>
+
+ Fix the stacking order for column rules in multi-column layout. Column rules should paint as part of the background of an element, just
+ after all other components of the background have been painted. This allows negative z-index children to still paint on top of the
+ column rules (rather than ending up above the background of the box but behind the column rules).
+
+ Reviewed by Eric Seidel
+
+ Added fast/multicol/column-rules-stacking.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paintColumnRules):
+ (WebCore::RenderBlock::paintColumnContents):
+ (WebCore::RenderBlock::paintObject):
+ * rendering/RenderBlock.h:
+
+2009-02-23 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by David Hyatt.
+
+ No testcases have been added or modified since this patch should not result in
+ a behavior change for ports that have layout tests enabled.
+
+ Currently, the implementation of GraphicsContext::drawLineForText amongst
+ the various ports differ in that some of them are honoring the context's
+ strokeStyle when drawing a text-decoration and some of them are not.
+ For instance, Apple's Mac port *does not* honor the context's strokeStyle(),
+ but the Cairo implementation does and has an explicit workaround that
+ sets the strokeStyle() temporarily.
+
+ This patch fixes so that all ports are consistent by explicitly making sure
+ to set the GraphicsContext strokeStyle to SolidStroke whenever
+ painting the text-decoration of an InlineFlowBox or InlineTextBox as these
+ should always use a solid stroke.
+
+ This patch addresses these bugs:
+ https://bugs.webkit.org/show_bug.cgi?id=19364
+ https://bugs.webkit.org/show_bug.cgi?id=15659
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::paintTextDecorations):
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::paintDecoration):
+
+2009-02-23 Scott Violet <sky@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24098
+ Bugs in ClipboardChromium
+
+ Fixes the following bugs in ClipboardChromium:
+ * It's possible for the extension to be empty, resulting in a bad file
+ name, for example, 'foo.' or just '.'.
+ * We weren't restricting the size of the file to MAX_PATH.
+ * We weren't removing characters that are invalid for file system names.
+
+ * platform/chromium/ClipboardChromium.cpp:
+ (WebCore::writeImageToDataObject):
+ * platform/chromium/ClipboardChromium.h:
+ * platform/chromium/ClipboardChromiumLinux.cpp: Added.
+ (WebCore::ClipboardChromium::validateFileName):
+ * platform/chromium/ClipboardChromiumMac.cpp: Added.
+ (WebCore::ClipboardChromium::validateFileName):
+ * platform/chromium/ClipboardChromiumWin.cpp: Added.
+ (WebCore::isInvalidFileCharacter):
+ (WebCore::ClipboardChromium::validateFileName):
+
2009-02-23 Thiago Macieira <thiago.macieira@nokia.com>
Reviewed by Simon Hausmann.
@@ -427,36 +33884,1522 @@
* platform/qt/RenderThemeQt.h:
-2008-12-13 Holger Hans Peter Freyther <zecke@selfish.org>
+2009-02-23 Xan Lopez <xan@gnome.org>
- Reviewed by NOBODY (OOPS!).
+ Reviewed by Alexey Proskuryakov.
- The Qt API exposes a global history patch CSSStyleSelector to make API consumers work again
+ https://bugs.webkit.org/show_bug.cgi?id=22624
+ [SOUP][GTK] Need API to get SoupSession from WebKit.
- https://bugs.webkit.org/show_bug.cgi?id=20952
+ Allow to retrieve the Soup session and modify the code to take
+ into account users changing features on it.
- The QtWebKit port made the mistake of exposing a global history. This broke
- with the addition of PageGroup and LinkHash. This needs to be repaired
- for Qt4.5.
+ * platform/network/ResourceHandle.h:
+ * platform/network/soup/CookieJarSoup.cpp:
+ (WebCore::defaultCookieJar):
+ (WebCore::setDefaultCookieJar):
+ * platform/network/soup/CookieJarSoup.h:
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::createSoupSession):
+ (WebCore::ensureSessionIsInitialized):
+ (WebCore::ResourceHandle::startHttp):
+ (WebCore::ResourceHandle::cancel):
+ (WebCore::ResourceHandle::defaultSession):
- Add a function to LinkHash.cpp that is resolving a URL. Use this
- function from within CSSStyleSelector to forward the url to the
- QWebHistoryInterface API.
+2009-02-23 Xan Lopez <xan@gnome.org>
- It is sad that there is a path within visitedLinkHash which is now
- doing a memcpy, it is sad to add a PLATFORM(QT) define to CSSStyleSelector
- and using QtWebKit types within WebCore is a layering violation as well.
+ Reviewed by Alexey Proskuryakov.
- PageGroup::setShouldTrackVisitedLinks is currently not enabled. For
- Qt4.6 a second version of the QWebHistoryInterface is going to be
- added which will fix things up.
+ https://bugs.webkit.org/show_bug.cgi?id=22624
+ [SOUP][GTK] Need API to get SoupSession from WebKit.
+
+ Remove CURL support.
+
+ * GNUmakefile.am:
+
+2009-02-23 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Test: fast/dom/empty-hash-and-search.html
+
+ https://bugs.webkit.org/show_bug.cgi?id=21147
+ hash property returns incorrect value for links w/o hash
+
+ Make hash() and search() behavior for empty and missing parts match IE and Firefox.
+
+ * platform/KURL.cpp:
+ (WebCore::KURL::query): Changed to return query without '?', as it is already done for ref().
+ (WebCore::KURL::prettyURL): Append the query with the question mark.
+
+ * page/Location.cpp:
+ (WebCore::Location::search): Return an empty string if query is empty or missing.
+ (WebCore::Location::hash): Return an empty string for empty hashes, not only missing ones.
+
+ * dom/WorkerLocation.cpp:
+ (WebCore::WorkerLocation::search):
+ (WebCore::WorkerLocation::hash):
+ Match document.location fixes above.
+
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::hash):
+ (WebCore::HTMLAnchorElement::search):
+ Return an empty string for empty and missing parts.
+
+2009-02-23 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20184
+ SELECT with no name generates invalid query string
+
+ Test: fast/forms/select-no-name.html
+
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::appendFormData): Added a check for empty name.
+
+2009-02-23 Alexey Proskuryakov <ap@webkit.org>
+
+ Apply review comments for the previous check-in (forgot to save the file, oops).
+
+ * dom/ContainerNode.cpp: (WebCore::ContainerNode::removeChildren):
+
+2009-02-23 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15707
+ Crash when manipulating document from within an iframe onload function
+
+ Test: fast/dom/onload-open.html
+
+ * dom/ContainerNode.cpp: (WebCore::ContainerNode::removeChildren): Protect the container and
+ the current node, because anything can happen when dispatching events.
+
+2009-02-23 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=18970
+ Numerically named input fields cause document.forms loop problems
+
+ Test: fast/forms/numeric-input-name.html
+
+ * bindings/scripts/CodeGeneratorJS.pm: Try index getter before name getter, even if the
+ latter overrides properties.
+
+2009-02-23 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24059
+ Tokenizer::write() return value is never used
+
+ * dom/Tokenizer.h:
+ * dom/XMLTokenizer.cpp:
+ (WebCore::XMLTokenizer::write):
+ * dom/XMLTokenizer.h:
+ * html/HTMLTokenizer.cpp:
+ (WebCore::HTMLTokenizer::write):
+ * html/HTMLTokenizer.h:
+ * loader/FTPDirectoryDocument.cpp:
+ (WebCore::FTPDirectoryTokenizer::write):
+ * loader/ImageDocument.cpp:
+ (WebCore::ImageTokenizer::write):
+ * loader/MediaDocument.cpp:
+ (WebCore::MediaTokenizer::write):
+ * loader/PluginDocument.cpp:
+ (WebCore::PluginTokenizer::write):
+ * loader/TextDocument.cpp:
+ (WebCore::TextTokenizer::write):
+ Made write() return void, not bool.
+
+2009-02-20 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Updated for JavaScriptCore changes to timeout checking.
+
+ * bindings/js/JSCustomPositionCallback.cpp:
+ (WebCore::JSCustomPositionCallback::handleEvent):
+ * bindings/js/JSCustomPositionErrorCallback.cpp:
+ (WebCore::JSCustomPositionErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLStatementCallback.cpp:
+ (WebCore::JSCustomSQLStatementCallback::handleEvent):
+ * bindings/js/JSCustomSQLStatementErrorCallback.cpp:
+ (WebCore::JSCustomSQLStatementErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionCallback.cpp:
+ (WebCore::JSCustomSQLTransactionCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
+ (WebCore::JSCustomSQLTransactionErrorCallback::handleEvent):
+ * bindings/js/JSCustomVoidCallback.cpp:
+ (WebCore::JSCustomVoidCallback::handleEvent):
+ * bindings/js/JSCustomXPathNSResolver.cpp:
+ (WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::JSDOMWindowBase::JSDOMWindowBase):
+ (WebCore::JSDOMWindowBase::commonJSGlobalData):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSAbstractEventListener::handleEvent):
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::executeFunctionInContext):
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::evaluate):
+ * bindings/js/WorkerScriptController.cpp:
+ (WebCore::WorkerScriptController::evaluate):
+ (WebCore::WorkerScriptController::forbidExecution):
+ * bindings/objc/WebScriptObject.mm:
+ (-[WebScriptObject callWebScriptMethod:withArguments:]):
+ (-[WebScriptObject evaluateWebScript:]):
+ * bridge/NP_jsobject.cpp:
+ (_NPN_InvokeDefault):
+ (_NPN_Invoke):
+ (_NPN_Evaluate):
+ (_NPN_Construct):
+ * bridge/jni/jni_jsobject.mm:
+ (JavaJSObject::call):
+ (JavaJSObject::eval):
+
+2009-02-21 Hironori Bono <hbono@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23786
+ [Chromium] line-break characters in a complex text are treated as zero-width spaces
+
+ This change prevents the UniscribeHelper class from treating the line-break characters
+ as whitespaces.
+
+ Tests: fast/text/international/bidi-linebreak-001.html
+ fast/text/international/bidi-linebreak-002.html
+ fast/text/international/bidi-linebreak-003.html
+
+ * platform/graphics/chromium/UniscribeHelper.cpp:
+ (WebCore::UniscribeHelper::adjustSpaceAdvances):
+ Make the UniscribeHelper::adjustSpaceAdvances() function treat all characters in
+ the treatAsSpace() function (e.g. U+0020, U+000A, U+000D, U+00A0) as whitespaces,
+ so does when Chromium renders a simple text.
+
+2009-02-20 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23940: Use Document::createElement(const QualifiedName&, bool) when creating a known element inside WebCore
+
+ Document::createElement(const QualifiedName&, bool) does not check for the prefix as opposed the the one taking an AtomicString
+ or Document::createElementNS. This is perfectly fine internally because we know the type of element created and the check is
+ unneeded.
+
+ It also removes the use of an ExceptionCode argument which was here only to check that the prefix check was fine. Finally it
+ enables us to use some generated QualifiedName.
+
+ * bindings/js/JSOptionConstructor.cpp:
+ (WebCore::constructHTMLOptionElement):
+ * dom/Document.cpp:
+ (WebCore::Document::setTitle):
+ * dom/XMLTokenizer.cpp:
+ (WebCore::createXHTMLParserErrorHeader):
+ (WebCore::XMLTokenizer::insertErrorMessageBlock):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::createBlockPlaceholderElement):
+ * editing/htmlediting.cpp:
+ (WebCore::createTabSpanElement):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::setLength):
+ * loader/FTPDirectoryDocument.cpp:
+ (WebCore::FTPDirectoryTokenizer::appendEntry):
+ (WebCore::FTPDirectoryTokenizer::createTDForFilename):
+ (WebCore::FTPDirectoryTokenizer::loadDocumentTemplate):
+ (WebCore::FTPDirectoryTokenizer::createBasicDocument):
+ * loader/ImageDocument.cpp:
+ (WebCore::ImageDocument::createDocumentStructure):
+ * loader/MediaDocument.cpp:
+ (WebCore::MediaTokenizer::createDocumentStructure):
+ * loader/PluginDocument.cpp:
+ (WebCore::PluginTokenizer::createDocumentStructure):
+ * loader/TextDocument.cpp:
+ (WebCore::TextTokenizer::write):
+ * page/Frame.cpp:
+ (WebCore::Frame::selectionComputedStyle):
+ (WebCore::Frame::styleForSelectionStart):
+ Document::createElement(const AtomicString&, ...) to Document::createElement(const QualifiedName&, ...) switch.
+
+ * xml/XPathFunctions.cpp:
+ (WebCore::XPath::FunLang::evaluate): Re-use langAttr instead of creating a new attribute.
+ * page/DragController.cpp:
+ (WebCore::documentFragmentFromDragData): Use the HTMLAnchorElement directly to get rid of the static cast.
+
+2009-02-19 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24060
+ Fix up to accommodate for CanvasPixelArray return.
+
+ * platform/graphics/skia/ImageBufferSkia.cpp:
+ (WebCore::ImageBuffer::getImageData): Added an extra data() to call.
+ (WebCore::ImageBuffer::putImageData): Ditto.
+
+2009-02-20 Eric Carlson <eric.carlson@apple.com>
+
+ Simon Fraser
+
+ https://bugs.webkit.org/show_bug.cgi?id=24042
+ Bug 24042: MediaPlayer should cache plug-in proxy
+
+ The changes in https://bugs.webkit.org/show_bug.cgi?id=23917 assume that
+ MediaPlayer will always have created the private media player object before
+ the plug-in is instantiated and calls back with the proxy object. This is not
+ true on all platforms because of threading latency, so MediaPlayer should
+ cache the plug-in proxy so it can pass it to the media engine at a later time.
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::NullMediaPlayerPrivate::setPoster): Null media engine implementation of proxy methods.
+ (WebCore::NullMediaPlayerPrivate::deliverNotification): Ditto.
+ (WebCore::NullMediaPlayerPrivate::setMediaPlayerProxy): Ditto.
+ (WebCore::MediaPlayer::MediaPlayer): Initialize m_playerProxy.
+ (WebCore::MediaPlayer::load): Pass m_playerProxy to newly created engine.
+ (WebCore::MediaPlayer::setMediaPlayerProxy): Cache m_playerProxy.
+ * platform/graphics/MediaPlayer.h: Declare m_playerProxy.
+
+2009-02-20 Eric Carlson <eric.carlson@apple.com>
+
+ Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24063
+ Make it possible for a port to require a user gesture to play/pause an <audio> or <video> element
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::HTMLMediaElement): Rename m_loadRestrictions to m_Restrictions.
+ Initialize m_internalCall.
+ (WebCore::HTMLMediaElement::loadTimerFired): Increment m_internalCall around call to load().
+ (WebCore::HTMLMediaElement::load): Call loadInternal if restrictions check out.
+ (WebCore::HTMLMediaElement::loadInternal): New, guts of old load()
+ (WebCore::HTMLMediaElement::setNetworkState): Fix bug introduced in r40943
+ (WebCore::HTMLMediaElement::play): Call playInternal if restrictions check out.
+ (WebCore::HTMLMediaElement::playInternal): New, guts of old play()
+ (WebCore::HTMLMediaElement::pause): Call pauseInternal if restrictions check out.
+ (WebCore::HTMLMediaElement::pauseInternal): New, guts of old pause()
+ (WebCore::HTMLMediaElement::togglePlayState): Call playInternal/pauseInternal
+ (WebCore::HTMLMediaElement::deliverNotification): Remove unnecessary white space.
+ * html/HTMLMediaElement.h: Rename m_loadRestrictions to m_Restrictions, add m_internalCall,
+ add RequireUserGestureRateChangeRestriction.
+
+2009-02-20 Darin Fisher <darin@chromium.org>
+
+ Fix build bustage in FileSystemWin.cpp.
+
+ Need to return CString() instead of 0 since there are now two CString
+ constructors that take a pointer type.
+
+ * platform/win/FileSystemWin.cpp:
+ (WebCore::openTemporaryFile):
+
+2009-02-20 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23999
+ Change license headers to accurately reflect code history.
+
+ * platform/ContentType.cpp:
+ * platform/ContentType.h:
+
+2009-02-18 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Antti Koivisto.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23999
+ Split off MIME type parsing into its own class.
+
+ * GNUmakefile.am: Added ContentType sources.
+ * WebCore.pro: Ditto.
+ * WebCore.scons: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * WebCoreSources.bkl: Ditto.
+ * html/HTMLMediaElement.cpp: Changed to use ContentType.
+ (WebCore::HTMLMediaElement::selectMediaURL):
+ * platform/ContentType.cpp: Added.
+ (WebCore::ContentType::ContentType):
+ (WebCore::ContentType::parameter):
+ (WebCore::ContentType::type):
+ * platform/ContentType.h: Added.
+ (WebCore::ContentType::raw):
+ * platform/MIMETypeRegistry.cpp:
+ * platform/MIMETypeRegistry.h:
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::MediaPlayer::load):
+ * rendering/style/ContentData.h: Renamed ContentType to StyleContentType.
+ * rendering/style/RenderStyleConstants.h: Ditto.
+ (WebCore::):
+
+2009-02-20 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build fix.
+
+ Use CString() instead of 0.
+
+ * platform/gtk/FileSystemGtk.cpp:
+ (WebCore::openTemporaryFile):
+ * platform/qt/FileSystemQt.cpp:
+ (WebCore::openTemporaryFile):
+
+2009-02-20 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ When dealing with local files, use a path instead of an URI. GFile
+ has problems decoding URIs with percent signs on them.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::startGio):
+
+2009-02-20 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Protect the ResourceHandle instance from being destroyed by
+ didReceiveData inside the GIO readCallback call, so that
+ cancelling caused by scripts is handled correctly.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::readCallback):
+
+2009-02-20 David Kilzer <ddkilzer@apple.com>
+
+ Make IconDatabaseNone.cpp compile with -Wunused and pass check-for-exit-time-destructors
+
+ Reviewed by Sam Weinig.
+
+ * loader/icon/IconDatabaseNone.cpp:
+ (WebCore::IconDatabase::defaultDatabaseFilename): Use DEFINE_STATIC_LOCAL().
+ (WebCore::IconDatabase::open): Commented out unused parameter.
+ (WebCore::IconDatabase::setPrivateBrowsingEnabled): Ditto.
+ (WebCore::IconDatabase::iconForPageURL): Ditto.
+ (WebCore::IconDatabase::iconURLForPageURL): Ditto.
+ (WebCore::IconDatabase::defaultIcon): Ditto.
+ (WebCore::IconDatabase::retainIconForPageURL): Ditto.
+ (WebCore::IconDatabase::releaseIconForPageURL): Ditto.
+ (WebCore::IconDatabase::setIconDataForIconURL): Ditto.
+ (WebCore::IconDatabase::setIconURLForPageURL): Ditto.
+ (WebCore::IconDatabase::setEnabled): Ditto.
+ (WebCore::IconDatabase::pageURLMappingCount): Added stub.
+ (WebCore::IconDatabase::retainedPageURLCount): Ditto.
+ (WebCore::IconDatabase::iconRecordCount): Ditto.
+ (WebCore::IconDatabase::iconRecordCountWithData): Ditto.
+
+2009-02-20 David Kilzer <ddkilzer@apple.com>
+
+ Add comment to generated code when shadowing a built-in object
+
+ Reviewed by Sam Weinig.
+
+ * bindings/scripts/CodeGeneratorJS.pm: Added comment to
+ generated code output.
+
+2009-02-20 Avi Drissman <avi@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24036
+ Keyboard events need disambiguation on the Linux platform too.
+
+ * platform/chromium/PlatformKeyboardEventChromium.cpp:
+ (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
+
+2009-02-19 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24046
+
+ Several improvements to CString:
+ 1- Make it possible to initialize a CString from a CStringBuffer
+ 2- Make it possible to get a CStringBuffer from a CString
+ 3- Change CStringBuffer::data() to return a const pointer to ward off mutation
+ 4- Remove unused releaseBuffer() methods.
+ 5- Make CStringBuffer::create() private to force consumers to get a CStringBuffer from a CString.
+
+ * platform/text/CString.cpp:
+ (WebCore::CString::init):
+ (WebCore::CString::mutableData):
+ (WebCore::CString::newUninitialized):
+ (WebCore::CString::copyBufferIfNeeded):
+ * platform/text/CString.h:
+ (WebCore::CStringBuffer::data):
+ (WebCore::CStringBuffer::length):
+ (WebCore::CStringBuffer::create):
+ (WebCore::CStringBuffer::mutableData):
+ (WebCore::CString::CString):
+ (WebCore::CString::buffer):
+
+2009-02-19 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24017
+ Remove some usage of Document in Worker.
+
+ * dom/WorkerContext.h:
+ (WebCore::WorkerContext::userAgent):
+ * dom/Document.cpp:
+ (WebCore::Document::userAgent):
+ * dom/Document.h:
+ * dom/ScriptExecutionContext.h:
+ Added virtual ScriptExecutionContext::userAgent(const KURL&).
+ Document implementation uses FrameLoader::userAgent and
+ WorkerContext receives the string on creation and stores it in a member.
+
+ * dom/Worker.cpp:
+ (WebCore::Worker::Worker):
+ (WebCore::Worker::notifyFinished):
+ * dom/Worker.h:
+ (WebCore::Worker::create):
+ Instead of Document the Worker constructor now gets a ScriptExecutionContext.
+ Start using some methods on SEC (like completeURL() and userAgent()).
+ For others, explicitly case to Document and add a FIXME.
+ Remove Worker::document() too.
+
+2009-02-20 Gustavo Noronha Silva <gns@gnome.org>
+
+ Rubber-stamped by Holger Freyther.
+
+ Do not set httpStatus to SOUP_STATUS_OK when serving local files
+ to match other ports' behavior, fixing xmlhttprequest test
+ regressions.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::queryInfoCallback):
+
+2009-02-19 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - WebCore part of fixing https://bugs.webkit.org/show_bug.cgi?id=24027
+ Do not send loader callbacks during CSS styling
+
+ Undo the iChat-specific quirk added in
+ <http://trac.webkit.org/changeset/41071>. Instead, always suspend memory
+ cache client callbacks during attach() and recalcStyle().
+
+ * WebCore.base.exp: Removed
+ Settings::setNeedsIChatMemoryCacheCallsQuirk().
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::suspendPostAttachCallbacks): Disable memory
+ cache client callbacks and remember to enable them afterwards if needed.
+ (WebCore::ContainerNode::resumePostAttachCallbacks): Re-enable memory
+ cache client callbacks if they were disabled in
+ suspendPostAttachCallbacks().
+ (WebCore::ContainerNode::attach): Use suspendPostAttachCallbacks() and
+ resumePostAttachCallbacks().
+ * dom/ContainerNode.h: Made suspendPostAttachCallbacks()
+ and resumePostAttachCallbacks() non-static.
+ * dom/Document.cpp:
+ (WebCore::Document::dispatchImageLoadEventsNow): Reverted iChat-specific
+ workaround.
+ * page/Settings.cpp: Removed m_needsIChatMemoryCacheCallsQuirk and
+ related code.
+ (WebCore::Settings::Settings):
+ * page/Settings.h:
+
+2009-02-19 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build fix.
+
+ Build fix after r41092. Make the memoryUsage method
+ public. It will be shadowed by cf/mac and for curl/soup/qt
+ the implementation from ResourceResponseBase will be used.
+
+ * platform/network/ResourceResponseBase.h:
+ (WebCore::ResourceResponseBase::memoryUsage):
+
+2009-02-19 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Fix for <rdar://problem/6077775> Should be able to specify
+ inactive ::selection color
+
+ This patch makes the ::selction pseudo-element work with
+ the :window-inactive pseudo type. This was, a user can specify a
+ different ::selection style when a window is inactive.
* css/CSSStyleSelector.cpp:
- (WebCore::CSSStyleSelector::SelectorChecker::checkPseudoState):
- * platform/LinkHash.cpp:
- (WebCore::visitedURL):
- (WebCore::visitedLinkHash):
- * platform/LinkHash.h:
+ (WebCore::CSSStyleSelector::SelectorChecker::checkSelector):
+ (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::selectionBackgroundColor):
+ (WebCore::RenderObject::selectionForegroundColor):
+
+2009-02-19 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Beth Dakin.
+
+ Patch for https://bugs.webkit.org/show_bug.cgi?id=24044
+ Update querySelector/querySelectorAll to match the latest spec
+
+ Update querySelector and querySelectorAll to match the latest version
+ of the Selectors API spec. We now stringify null and undefined to "null"
+ and "undefined" respectively instead of to "".
+
+ Test: fast/dom/SelectorAPI/undefined-null-stringify.html
+
+ * dom/Document.idl:
+ * dom/DocumentFragment.idl:
+ * dom/Element.idl:
+
+2009-02-19 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Geoffrey Garen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23732
+ Rework CachedResource overhead accounting to allow platforms to diverge
+ in numbers.
+
+ * loader/CachedResource.cpp:
+ (WebCore::CachedResource::overheadSize): Changed to ask ResourceResponse
+ for its size and to use actual URL size.
+ * platform/network/ResourceResponseBase.h:
+ (WebCore::ResourceResponseBase::size): Added default size method.
+ * platform/network/cf/ResourceResponse.h:
+ (WebCore::ResourceResponse::size): Added Win/CF size method
+ * platform/network/mac/ResourceResponse.h:
+ (WebCore::ResourceResponse::size): Added Mac size method.
+
+2009-02-19 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Kevin Decker.
+
+ - Fix for <rdar://problem/6604968>
+
+ On Tiger, create an autorelease pool before creating the NSGraphicsContext and drain it immediately
+ after the call to -[NSView displayRectIgnoringOpacity:inContext:].
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::paint):
+
+2009-02-19 David Hyatt <hyatt@apple.com>
+
+ Fix a bug where reflections didn't work properly if opacity was < 1. Make sure that replaced elements
+ also consider reflections to be part of their visual overflow. This had already been done for blocks
+ and lines, but it wasn't being done yet for replaced elements.
+
+ Also make sure that when the object being reflected has opacity < 1 that we don't end up popping the outer
+ transparency layer early. Since the reflected object paints twice, we don't want to end the transparency
+ layer it pushed until we're done painting the real object (rather than the reflection).
+
+ Reviewed by Dan Bernstein
+
+ Added fast/reflections/reflection-masks-opacity.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::paintLayer):
+ * rendering/RenderPartObject.cpp:
+ (WebCore::RenderPartObject::layout):
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::layout):
+ (WebCore::RenderReplaced::adjustOverflowForBoxShadowAndReflect):
+ * rendering/RenderReplaced.h:
+
+2009-02-19 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23980: WorkerRunLoop needs a way to run in a given mode similar to CFRunLoopInMode.
+ <https://bugs.webkit.org/show_bug.cgi?id=23980>
+
+ WorkerRunLoop has the ability to run in a mode which filters the tasks to be run.
+ * When WorkerRunLoop::runInMode is called, only task for that mode will run.
+ * When WorkerRunLoop::run is called (or the default mode is used), then all tasks
+ will run regardless of their posted mode.
+
+ Here's a demonstration of the api:
+
+ RefPtr<NameResolution> nameResolution = NameResolution::create(workerRunLoop);
+
+ // Internally nameResolution will do workerRunLoop.postTaskForMode(task, "MyCoolMode")
+ // for any tasks that need to be run during this loop.
+ nameResolution->setTaskMode("MyCoolMode");
+
+ nameResolution->start();
+ while (!nameResolution->done()) {
+ // Only tasks which are posted for "MyCoolMode" will run.
+ workerRunLoop.runInMode(context, "MyCoolMode");
+ }
+
+ No observable change in behavior, so no test.
+
+ * dom/WorkerRunLoop.cpp:
+ (WebCore::ModePredicate::ModePredicate):
+ (WebCore::ModePredicate::operator()):
+ (WebCore::WorkerRunLoop::WorkerRunLoop):
+ (WebCore::WorkerRunLoop::~WorkerRunLoop):
+ (WebCore::WorkerRunLoop::setSharedTimer):
+ (WebCore::WorkerRunLoop::resetSharedTimer):
+ (WebCore::WorkerRunLoop::run):
+ (WebCore::WorkerRunLoop::runInMode):
+ (WebCore::WorkerRunLoop::postTask):
+ (WebCore::WorkerRunLoop::postTaskForMode):
+ * dom/WorkerRunLoop.h:
+ (WebCore::WorkerRunLoop::Task::create):
+ (WebCore::WorkerRunLoop::Task::mode):
+ (WebCore::WorkerRunLoop::Task::performTask):
+ (WebCore::WorkerRunLoop::Task::Task):
+
+2009-02-19 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24034
+ Fix up Selection->VisibleSelection change.
+
+ * page/chromium/EventHandlerChromium.cpp:
+ (WebCore::EventHandler::passMousePressEventToSubframe): Renamed Selection
+ to VisibleSelection.
+
+2009-02-19 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24041
+ Correct Skia type conversion issues, fix Chromium Linux build.
+
+ * platform/graphics/chromium/FontLinux.cpp:
+ (WebCore::Font::drawGlyphs): changed parameters to RGBA32, not WebCore::Color.
+
+2009-02-19 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20531
+ Chromium-part follow-up to the patch landed in r40636
+ for bug 20531.
+ Remove a static member function alternateFamilyName
+ from Chromium's Win/Linux ports of FontCache. In r40636,
+ alternateFamilyName was customized using #ifdef PLATFORM(WIN_OS).
+ So, there's no more need for the static member function per
+ platform.
+
+ * platform/graphics/chromium/FontCacheChromiumWin.cpp:
+ * platform/graphics/chromium/FontCacheLinux.cpp:
+
+2009-02-19 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ Call documentWillBecomeInactive() from Document::detach to ensure that
+ media elements are shut down, because they may be kept alive by references
+ from JS past document teardown.
+
+ documentWillBecomeInactive() calls renderView()->willMoveOffscreen(), so no
+ need to do that in detach() as well.
+
+ We no longer need to call documentWillBecomeInactive() from ~Page() (which
+ was added for <https://bugs.webkit.org/show_bug.cgi?id=21116>), since this
+ supersedes that change.
+
+ * dom/Document.cpp:
+ (WebCore::Document::detach):
+ * page/Page.cpp:
+ (WebCore::Page::~Page):
+
+2009-02-19 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24028
+ Fix up Skia path changes.
+
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::strokePath): Removed illegal indirection.
+ * platform/graphics/skia/PathSkia.cpp:
+ (WebCore::boundingBoxForCurrentStroke): Changed call name.
+
+2009-02-19 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Ignore ports on local URLs. This fixes a regression in
+ fast/loader/file-URL-with-port-number.html
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::startGio):
+
+2009-02-19 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24011
+ KURL's setPort doesn't unset port if 0 is given
+
+ Make setPort remove port if 0 is given to it, as promised by the
+ comment in KURL's header.
+
+ * platform/KURL.cpp:
+ (WebCore::KURL::setPort):
+
+2009-02-18 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Brady Eidson.
+
+ - WebCore part of fixing <rdar://problem/6507512> Crash in iChat at CSSStyleSelector::adjustRenderStyle
+
+ The crash results from re-entry into
+ CSSMutableStyleDeclaration::setCssText, which in turn is caused by
+ the first style change causing a cached image to load from the memory
+ cache, causing load delegate dispatch, and iChat's delegate method
+ calling back into WebKit.
+
+ The workaround is to use defer delegate callbacks for memory cache. In
+ this case, deferring callbacks during image load event dispatch was
+ found to be sufficient.
+
+ The crash is a regression. See also the discussion in
+ <https://bugs.webkit.org/show_bug.cgi?id=22521>.
+
+ * WebCore.base.exp: Added
+ Settings::setNeedsIChatMemoryCacheCallsQuirk().
+ * dom/Document.cpp:
+ (WebCore::Document::dispatchImageLoadEventsNow): If the quirk is
+ enabled, defer memory cache callbacks during image load event dispatch.
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings): Initialize
+ m_needsIChatMemoryCacheCallsQuirk.
+ (WebCore::Settings::setNeedsIChatMemoryCacheCallsQuirk): Added this
+ setter.
+ * page/Settings.h:
+ (WebCore::Settings::needsIChatMemoryCacheCallsQuirk): Added this getter.
+
+2009-02-18 Adam Roben <aroben@apple.com>
+
+ Export WebCore::handCursor and Cursor.h
+
+ Reviewed by John Sullivan.
+
+ * WebCore.base.exp: Added WebCore::handCursor.
+ * WebCore.xcodeproj/project.pbxproj: Made Cursor.h private.
+
+2009-02-18 Ojan Vafai <ojan@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23992
+ REGRESSION: crash on windows loading http://www.stickam.com/liveStreams.do
+
+ Unable to reduce to a layout test.
+
+ * page/Frame.cpp:
+ (WebCore::Frame::contentRenderer):
+
+2009-02-18 Evan Stade <estade@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23861
+ Stroke font outlines on chromium linux
+
+ TEST=LayoutTests/svg/custom/pointer-events-text.svg
+
+ * platform/graphics/chromium/FontLinux.cpp:
+ (WebCore::Font::drawGlyphs):
+
+2009-02-18 Evan Stade <estade@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23860
+ Resync some graphics/skia files with their chromium counterparts
+
+ This comes from chromium patches <http://codereview.chromium.org/17633>
+ and <http://codereview.chromium.org/17454>
+
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::clipPath):
+ (WebCore::GraphicsContext::fillPath):
+ * platform/graphics/skia/PlatformContextSkia.cpp:
+ (PlatformContextSkia::addPath):
+ (PlatformContextSkia::currentPath):
+ * platform/graphics/skia/PlatformContextSkia.h:
+
+2009-02-18 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed.
+
+ Build fix after r41060.
+
+ * GNUmakefile.am:
+
+2009-02-18 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24005
+ Add an include to fix Chromium build.
+
+ * page/animation/AnimationController.cpp: Add UnusedParam.h include.
+
+2009-02-18 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Fix symbols.filter location, and add other missing files to the
+ autotools build, so that make dist works.
+
+ * GNUmakefile.am:
+
+2009-02-18 Zan Dobersek <zandobersek@gmail.com>
+
+ Rubber-stamped by Holger Hans Peter Freyther.
+
+ Allow POST method for local requests.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::startGio):
+
+2009-02-18 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Hans Peter Freyther.
+
+ Use KURL in startGio instead of passing a string with the URL, so
+ that we can handle removing refs and queries more elegantly. This
+ is fixing more regressions that came from the curl->soup switch.
+
+ Original work by Zan Dobersek.
+
+ * platform/network/ResourceHandle.h:
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::start):
+ (WebCore::ResourceHandle::startGio):
+
+2009-02-18 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Implement ResourceHandle::loadResourceSynchronously in ResourceHandleSoup.cpp
+
+ The implementation is needed to have synchronous loading, e.g. for
+ JavaScript interaction. This is fixing various regressions that
+ came from the curl->soup switch.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::WebCoreSynchronousLoader::WebCoreSynchronousLoader):
+ (WebCore::WebCoreSynchronousLoader::~WebCoreSynchronousLoader):
+ (WebCore::WebCoreSynchronousLoader::didReceiveResponse):
+ (WebCore::WebCoreSynchronousLoader::didReceiveData):
+ (WebCore::WebCoreSynchronousLoader::didFinishLoading):
+ (WebCore::WebCoreSynchronousLoader::didFail):
+ (WebCore::WebCoreSynchronousLoader::run):
+ (WebCore::ResourceHandle::loadResourceSynchronously):
+
+2009-02-18 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23989
+
+ Based on a patch by Bo Yang <techrazy.yang@gmail.com>
+
+ Make the cursor cache global, that's all we really need and
+ otherwise we can miss cursor transitions in some situations (see
+ the bug for one testcase). Also remove some now useless code.
+
+ * platform/Widget.h:
+ * platform/gtk/WidgetGtk.cpp:
+ (WebCore::Widget::Widget):
+ (WebCore::Widget::~Widget):
+ (WebCore::Widget::setCursor):
+
+2009-02-17 Adam Roben <aroben@apple.com>
+
+ Windows build fix
+
+ * loader/FrameLoader.cpp:
+ (WebCore::toPlugInElement): Don't rely on #if being processed before
+ ASSERT.
+
+2009-02-17 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23977: Unnecessary timer related headers in files.
+ <https://bugs.webkit.org/show_bug.cgi?id=23977>
+
+ No observable change in behavior, so no test.
+
+ * dom/Document.cpp:
+ * dom/WorkerRunLoop.cpp:
+ * dom/WorkerRunLoop.h:
+
+2009-02-17 Peter Abrahamsen <rainhead@gmail.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23958
+ <rdar://problem/6587815>
+
+ Updated XMLHttpRequest with new header names from the latest Access
+ Control draft: http://www.w3.org/TR/access-control/
+ - Access-Control-Origin becomes Access-Control-Allow-Origin
+ - Access-Control-Credentials becomes Access-Control-Allow-Credentials
+
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::accessControlCheck):
+
+2009-02-17 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix. Add missing constructor used for empty values.
+
+ * platform/graphics/wx/FontPlatformData.h:
+ (WebCore::FontPlatformData::FontPlatformData):
+
+2009-02-17 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Dave Kilzer.
+
+ <rdar://problem/6592446> dynamically updating page doesn't seem to draw when updated
+
+ Need update after callback.
+
+ * bindings/js/JSCustomPositionCallback.cpp:
+ (WebCore::JSCustomPositionCallback::handleEvent):
+ * bindings/js/JSCustomPositionErrorCallback.cpp:
+ (WebCore::JSCustomPositionErrorCallback::handleEvent):
+
+2009-02-17 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Antti Koivisto.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23917
+ Allow a WebKit plug-in to act as a proxy for the <audio> and <video>
+ element.
+
+ * DerivedSources.make: add media element proxy exports to .exp file when feature is defined.
+
+ * WebCore.VideoProxy.exp: New, define the informal protocol exported by a media element proxy.
+
+ * WebCore.xcodeproj/project.pbxproj: Add MediaPlayerProxy.h.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_needWidgetUpdate.
+ (WebCore::HTMLMediaElement::attributeChanged): Don't detach+attach when PLUGIN_PROXY_FOR_VIDEO, the
+ proxy plug-in handles the poster frame.
+ (WebCore::HTMLMediaElement::rendererIsNeeded): New logic for PLUGIN_PROXY_FOR_VIDEO.
+ (WebCore::HTMLMediaElement::createRenderer): Create RenderPartObject when PLUGIN_PROXY_FOR_VIDEO.
+ (WebCore::HTMLMediaElement::attach): Set m_needWidgetUpdate when PLUGIN_PROXY_FOR_VIDEO
+ (WebCore::HTMLMediaElement::load): Don't reallocate MediaPlayer when PLUGIN_PROXY_FOR_VIDEO, we keep the
+ same plug-in for the life of the element.
+ (WebCore::HTMLMediaElement::mediaPlayerNetworkStateChanged): update m_networkState when media player
+ network state changes to EMPTY, otherwise we can get out of sync with engine.
+ (WebCore::HTMLMediaElement::defaultEventHandler): pass event to widget when PLUGIN_PROXY_FOR_VIDEO
+ (WebCore::HTMLMediaElement::deliverNotification): New, deliver notification from proxy plug-in to
+ media player.
+ (WebCore::HTMLMediaElement::setMediaPlayerProxy): New, pass proxy object to media player.
+ (WebCore::HTMLMediaElement::initialURL): New, return the url from the "src" attr or the appropriate
+ <source> element to be used as the initial url for the proxy.
+ (WebCore::HTMLMediaElement::finishParsingChildren): New, allocate MediaPlayer and update widget.
+ * html/HTMLMediaElement.h: Declare new methods for proxy, add m_needWidgetUpdate.
+ (WebCore::HTMLMediaElement::setNeedWidgetUpdate):
+
+ * html/HTMLVideoElement.cpp:
+ (WebCore::HTMLVideoElement::attach): Poster image is handled by proxy when PLUGIN_PROXY_FOR_VIDEO.
+ (WebCore::HTMLVideoElement::parseMappedAttribute): Ditto.
+ * html/HTMLVideoElement.h:
+
+ * loader/FrameLoader.cpp:
+ (WebCore::toPlugInElement): Allow cast if element is <video> or <audio>
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::MediaPlayer::MediaPlayer): Remove white space.
+ (WebCore::MediaPlayer::setPoster): New, forward call to private player.
+ (WebCore::MediaPlayer::deliverNotification): Ditto.
+ (WebCore::MediaPlayer::setMediaPlayerProxy): Ditto.
+ * platform/graphics/MediaPlayer.h:
+ (WebCore::MediaPlayer::mediaPlayerClient):
+
+ * platform/graphics/mac/MediaPlayerProxy.h: New, defines media player proxy interface.
+
+ * rendering/RenderPart.cpp:
+ (WebCore::RenderPart::RenderPart): Change constructor to take Element* instead of Node* as a
+ non-element node doesn't need a renderer
+ * rendering/RenderPart.h: Ditto.
+
+ * rendering/RenderPartObject.cpp:
+ (WebCore::RenderPartObject::RenderPartObject): Ditto.
+ (WebCore::RenderPartObject::updateWidget): Package params for proxy plug-in when element is
+ <video> or <audio>.
+ * rendering/RenderPartObject.h:
+
+2009-02-17 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Eric Seidel
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23985
+
+ Don't allow legends to be anything but display:block.
+
+ Added fast/forms/inline-ignored-on-legend.html
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * css/html4.css:
+ * html/HTMLLegendElement.cpp:
+ * html/HTMLLegendElement.h:
+ * rendering/RenderLegend.cpp: Removed.
+ * rendering/RenderLegend.h: Removed.
+ * wml/WMLInsertedLegendElement.cpp:
+ * wml/WMLInsertedLegendElement.h:
+
+2009-02-13 Brett Wilson <brettw@dhcp-172-22-71-167.mtv.corp.google.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/attachment.cgi?id=27666
+ Fix Chromium build build: forgotten include in RenderObject, sync
+ RenderTheme to the recent changes in RenderObject.
+
+ * rendering/RenderObject.cpp:
+ * rendering/RenderThemeChromiumMac.mm:
+ (WebCore::RenderThemeChromiumMac::updatePressedState):
+
+2009-02-17 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22966
+ crash when destroying a webview that opened a page containing <script>
+ tags
+
+ Fix m_group being set to 0 instead of to m_singlePageGroup when
+ GroupName is set to empty
+
+ * page/Page.cpp:
+ (WebCore::Page::setGroupName):
+
+2009-02-16 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fix for <rdar://problem/6386623>
+
+ I made m_numParsedProperties and m_maxParsedProperties unsigned
+ instead of int, and then added an early return from addPropery() if
+ m_maxParsedProperties exceeds the max value.
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::addProperty):
+ (WebCore::CSSParser::rollbackLastProperties):
+ (WebCore::CSSParser::clearProperties):
+ (WebCore::CSSParser::createFontFaceRule):
+ (WebCore::CSSParser::deleteFontFaceOnlyValues):
+ * css/CSSParser.h:
+
+2009-02-16 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16309
+ HTML5: The third execCommand argument for insert{un}orderedlist should be ignored
+
+ When we originally implemented this command, MSDN documentation said that IE set the
+ id attribute of inserted lists to the third argument to execCommand, but IE doesn't
+ do this nor do any other browsers.
+
+ * editing/EditorCommand.cpp:
+ (WebCore::executeInsertOrderedList):
+ (WebCore::executeInsertUnorderedList):
+ * editing/IndentOutdentCommand.cpp:
+ (WebCore::IndentOutdentCommand::outdentParagraph):
+ * editing/InsertListCommand.cpp:
+ (WebCore::InsertListCommand::insertList):
+ (WebCore::InsertListCommand::InsertListCommand):
+ (WebCore::InsertListCommand::doApply):
+ * editing/InsertListCommand.h:
+ (WebCore::InsertListCommand::create):
+
+2009-02-16 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Geoffrey Garen.
+
+ - fix <rdar://problem/6561077> REGRESSION (r39634): Unable to select an item in stocks widget with the mouse
+
+ Test: platform/mac/fast/events/pointer-events-dashboard.html
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::applyProperty): Do not apply the
+ pointer-events property in Dashboard backwards compatibility mode,
+ in order to work around misuse of that property by the Stocks widget.
+
+2009-02-16 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15381
+ execCommand justify modifies the contentEditable node
+
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): Avoid modifying not just
+ the body element, but any root editable element.
+
+2009-02-16 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ Bug 23979: AX: alt tag not returned for <input type="image">
+ https://bugs.webkit.org/show_bug.cgi?id=23979
+
+ Test: accessibility/input-image-alt.html
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityDescription):
+
+2009-02-16 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ The ref data is not properly set unless we use the CreateMatrix function.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23978
+
+ * platform/graphics/wx/TransformationMatrixWx.cpp:
+ (WebCore::TransformationMatrix::operator wxGraphicsMatrix):
+
+2009-02-16 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - fix <rdar://problem/6516829> FontPlatformData constructor passes NULL to CTFontCopyGraphicsFont and CTFontGetPlatformFont
+
+ * platform/graphics/FontCache.cpp:
+ (WebCore::FontDataCacheKeyTraits::emptyValue): Changed to use the
+ FontPlatformData(float, bool, bool) constructor.
+ * platform/graphics/mac/FontCacheMac.mm:
+ (WebCore::FontCache::createFontPlatformData): Changed to pass a valid
+ NSFont to the FontPlatformData constructor, instead of implicitly
+ passing 0 and then calling setFont().
+ * platform/graphics/mac/FontPlatformData.h: Made the NSFont parameter
+ of the constructor mandatory.
+
+2009-02-15 David Kilzer <ddkilzer@apple.com>
+
+ Move duplicate caretWidth constants to RenderObject.h
+
+ Reviewed by Dan Bernstein.
+
+ No test since no change in behavior.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::localCaretRect): Removed caretWidth.
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::localCaretRect): Ditto.
+ * rendering/RenderObject.h: Added caretWidth definition.
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::localCaretRect): Removed caretWidth.
+
+2009-02-13 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23955
+ V8HTMLPlugInCustom returns undefined, which fools interceptors.
+
+ * bindings/v8/custom/V8HTMLPlugInElementCustom.cpp:
+ (WebCore::NAMED_PROPERTY_GETTER): Use deferToInterceptor() return value.
+ (WebCore::NAMED_PROPERTY_SETTER): Ditto.
+ (WebCore::INDEXED_PROPERTY_GETTER): Ditto.
+ (WebCore::INDEXED_PROPERTY_SETTER): Ditto.
+
+2009-02-13 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23954
+ Add V8 custom bindings for CanvasRenderingContext2D.
+
+ * bindings/v8/custom/V8CanvasRenderingContext2DCustom.cpp: Added.
+ (WebCore::toV8):
+ (WebCore::toCanvasStyle):
+ (WebCore::ACCESSOR_GETTER):
+ (WebCore::ACCESSOR_SETTER):
+
+2009-02-13 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Darin Adler and Dan Bernstein.
+
+ <rdar://problem/6583187>
+
+ * page/NavigatorBase.cpp:
+ Handle PPC64 and X86_64 as well.
+
+2009-02-13 Darin Adler <darin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Fix broken tokenizer regression test that reflected a lifetime bug
+ in the document.write optimization. The test failure was trivial to
+ reproduce in COLLECT_ON_EVERY_ALLOCATION mode.
+
+ * bindings/js/JSHTMLDocumentCustom.cpp:
+ (WebCore::documentWrite): Convert strings to String rather than passing
+ the pointer and length to SegmentedString. The optimization is thus
+ mostly gone. However, there are two ways to bring it back: 1) Apply
+ the patch that makes UString and String share the same buffers.
+ 2) Add a UString feature to SegmentedString; simple to do but might
+ risk slowing down normal document parsing.
+
+2009-02-13 Adam Treat <adam.treat@torchmobile.com>
+
+ Caught by Darin Adler.
+
+ No reason to check m_tokenizer twice for 0 in a row.
+
+ * dom/Document.cpp:
+ (WebCore::Document::write):
+
+2009-02-13 Lyon Chen <lyon.chen@torchmobile.com>
+
+ Reviewed by Dave Hyatt.
+
+ Take into account y() + height() when calculating getLowerRightCorner.
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::getLowerRightCorner):
+
+2009-02-13 Antti Koivisto <antti@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Most of this code was in RenderBox, restore the copyright lines.
+
+ * rendering/RenderBoxModelObject.cpp:
+ * rendering/RenderBoxModelObject.h:
+
+2009-02-13 David Hyatt <hyatt@apple.com>
+
+ Get rid of printBoxDecorations, since it is dead code.
+
+ Reviewed by Dan Bernstein
+
+ * rendering/RenderObject.h:
+
+2009-02-13 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23952
+ Add Document::write overload which takes a SegmentedString since this
+ is what the tokenizer expects anyway. Modified JSHTMLDocument so it once
+ again calls Document::write instead of injecting the string directly into
+ the tokenizer. This ensures that all document.write's are funneled through
+ one method again, but should still be just as fast for JSHTMLDocumentCustom.
+
+ * bindings/js/JSHTMLDocumentCustom.cpp:
+ (WebCore::documentWrite):
+ * dom/Document.cpp:
+ (WebCore::Document::write):
+ * dom/Document.h:
+
+2009-02-13 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Simon Fraser
+
+ Remove updateWidgetPosition on RenderObject. Change RenderView's set of widgets
+ to have a tighter type: RenderWidget instead of RenderObject. Devirtualize
+ updateWidgetPosition, since all RenderWidgets (except for applets) are now
+ RenderParts also.
+
+ * rendering/RenderObject.cpp:
+ * rendering/RenderObject.h:
+ * rendering/RenderPart.cpp:
+ * rendering/RenderPart.h:
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::updateWidgetPositions):
+ (WebCore::RenderView::addWidget):
+ (WebCore::RenderView::removeWidget):
+ * rendering/RenderView.h:
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::updateWidgetPosition):
+ * rendering/RenderWidget.h:
+
+2009-02-13 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Eric Seidel
+
+ Remove isEditable() on RenderObject. It is dead code.
+
+ * rendering/RenderObject.cpp:
+ * rendering/RenderObject.h:
+
+2009-02-13 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Eric Seidel
+
+ Add isTextControl() to RenderObject. Patch call sites thats asked isTextField() || isTextArea() to just use
+ isTextControl() instead.
+
+ Add a toRenderTextControl converter for doing checked casting to RenderTextControls.
+
+ * dom/Document.cpp:
+ (WebCore::Document::setFocusedNode):
+ * dom/InputElement.cpp:
+ (WebCore::InputElement::updateSelectionRange):
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplacementFragment::ReplacementFragment):
+ * editing/TextIterator.cpp:
+ (WebCore::TextIterator::handleReplacedElement):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::selectionStart):
+ (WebCore::HTMLInputElement::selectionEnd):
+ (WebCore::HTMLInputElement::setSelectionStart):
+ (WebCore::HTMLInputElement::setSelectionEnd):
+ (WebCore::HTMLInputElement::select):
+ (WebCore::HTMLInputElement::defaultEventHandler):
+ (WebCore::HTMLInputElement::selection):
+ * html/HTMLTextAreaElement.cpp:
+ (WebCore::HTMLTextAreaElement::selectionStart):
+ (WebCore::HTMLTextAreaElement::selectionEnd):
+ (WebCore::HTMLTextAreaElement::setSelectionStart):
+ (WebCore::HTMLTextAreaElement::setSelectionEnd):
+ (WebCore::HTMLTextAreaElement::select):
+ (WebCore::HTMLTextAreaElement::setSelectionRange):
+ (WebCore::HTMLTextAreaElement::appendFormData):
+ (WebCore::HTMLTextAreaElement::updateValue):
+ (WebCore::HTMLTextAreaElement::selection):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::isNativeTextControl):
+ (WebCore::AccessibilityRenderObject::text):
+ (WebCore::AccessibilityRenderObject::selectedText):
+ (WebCore::AccessibilityRenderObject::selectedTextRange):
+ (WebCore::AccessibilityRenderObject::setSelectedTextRange):
+ (WebCore::AccessibilityRenderObject::visiblePositionForIndex):
+ (WebCore::AccessibilityRenderObject::indexForVisiblePosition):
+ (WebCore::AccessibilityRenderObject::observableObject):
+ * page/Frame.cpp:
+ (WebCore::Frame::notifyRendererOfSelectionChange):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isTextControl):
+ (WebCore::objectIsRelayoutBoundary):
+ * rendering/RenderTextControl.h:
+ (WebCore::RenderTextControl::isTextControl):
+ (WebCore::toRenderTextControl):
+ * rendering/TextControlInnerElements.cpp:
+ (WebCore::TextControlInnerTextElement::defaultEventHandler):
+ * wml/WMLInputElement.cpp:
+ (WebCore::WMLInputElement::select):
+ (WebCore::WMLInputElement::defaultEventHandler):
+ (WebCore::WMLInputElement::isConformedToInputMask):
+
+2009-02-13 David Hyatt <hyatt@apple.com>
+
+ Get rid of isEdited/setEdited on RenderObject. Devirtualize isEdited/setEdited on RenderTextControl.
+ Callers were already asking if the renderer was a text field (or a text area), so it was especially
+ pointless to waste a second virtual function call after making one just to determine the object type.
+
+ Reviewed by Simon Fraser
+
+ * dom/Document.cpp:
+ (WebCore::Document::setFocusedNode):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::defaultEventHandler):
+ * rendering/RenderObject.h:
+ * rendering/RenderTextControl.h:
+ (WebCore::RenderTextControl::isEdited):
+ (WebCore::RenderTextControl::setEdited):
+
+2009-02-13 Scott Violet <sky@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23934
+ Skia platform doesn't render text decoration shadows.
+
+ Makes Skia render text decoration shadows correctly. We weren't
+ preparing the SkPaint correctly and didn't have a couple of checks
+ CG has. Additionally makes the fillColor/strokeColor methods
+ consistent.
+
+ This behavior is covered by existing layout tests (see bug for list).
+
+ * platform/graphics/chromium/FontChromiumWin.cpp:
+ (WebCore::Font::drawGlyphs):
+ (WebCore::Font::drawComplexText):
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::drawLineForText):
+ * platform/graphics/skia/PlatformContextSkia.cpp:
+ (PlatformContextSkia::effectiveFillColor):
+ (PlatformContextSkia::effectiveStrokeColor):
+ * platform/graphics/skia/PlatformContextSkia.h:
+
+2009-02-12 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23944
+ KURLGoogle's pre-parsed canonicalSpec constructor should take a CString
+
+ * platform/KURL.h:
+ * platform/KURLGoogle.cpp:
+ (WebCore::KURLGooglePrivate::setUtf8):
+ (WebCore::KURLGooglePrivate::setAscii):
+ (WebCore::KURLGooglePrivate::init):
+ (WebCore::KURLGooglePrivate::replaceComponents):
+ (WebCore::KURL::KURL):
+ * platform/KURLGooglePrivate.h:
+
+2009-02-13 David Hyatt <hyatt@apple.com>
+
+ Remove leftmost/rightmost/lowestPosition from RenderObject. They only need to be called on boxes.
+
+ Reviewed by Dan Bernstein
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::lowestPosition):
+ (WebCore::RenderBlock::rightmostPosition):
+ (WebCore::RenderBlock::leftmostPosition):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::computeScrollDimensions):
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::lowestPosition):
+ (WebCore::RenderMedia::rightmostPosition):
+ (WebCore::RenderMedia::leftmostPosition):
+ * rendering/RenderObject.h:
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::lowestPosition):
+ (WebCore::RenderTableSection::rightmostPosition):
+ (WebCore::RenderTableSection::leftmostPosition):
+
+2009-02-12 Simon Fraser <simon.fraser@apple.com>
+
+ Fix build with ACCELERATED_COMPOSITING turned on.
+
+ toRenderBox()->x() asserts for a layer on an inline; use
+ m_owningLayer->renderBoxX() instead.
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::paintIntoLayer):
+
+2009-02-12 Darin Adler <darin@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Speed up document.write a bit.
+
+ * bindings/js/JSHTMLDocumentCustom.cpp:
+ (WebCore::documentWrite): Added. Uses SegmentedString to avoid conversion from
+ UString to String and to avoid appending strings. Also added code to handle
+ newlines efficiently.
+ (WebCore::JSHTMLDocument::write): Changed to use documentWrite.
+ (WebCore::JSHTMLDocument::writeln): Ditto.
+
+ * dom/Document.cpp:
+ (WebCore::Document::prepareToWrite): Added. Refactored the initialization part
+ of write into a separate function for use in the JavaScript binding.
+ (WebCore::Document::write): Changed to call prepareToWrite.
+
+ * dom/Document.h: Added declaration for prepareToWrite.
2009-02-13 Prasanth Ullattil <pullatti@trolltech.com>
@@ -472,6 +35415,3645 @@
* platform/qt/QWebPopup.cpp:
(WebCore::QWebPopup::hidePopup):
+2009-02-12 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix, typo while tweaking last patch for commit.
+
+ * platform/wx/wxcode/gtk/fontprops.cpp:
+ (GetTextExtent):
+
+2009-02-12 miggilin <mr.diggilin@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Use Cairo/PANGO to fix text measurements and implement proper
+ non-kerned text drawing on wxGTK.
+
+ https://bugs.webkit.org/show_bug.cgi?id=17727
+
+ * platform/graphics/GlyphBuffer.h:
+ * platform/graphics/wx/FontPlatformDataWx.cpp:
+ (WebCore::fontWeightToWxFontWeight):
+ * platform/graphics/wx/SimpleFontDataWx.cpp:
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ * platform/wx/wxcode/fontprops.h:
+ * platform/wx/wxcode/gtk/fontprops.cpp:
+ (wxFontProperties::wxFontProperties):
+ (GetTextExtent):
+ * platform/wx/wxcode/gtk/non-kerned-drawing.cpp:
+ (WebCore::pangoFontMap):
+ (WebCore::createPangoFontForFont):
+ (WebCore::createScaledFontForFont):
+ (WebCore::pango_font_get_glyph):
+ (WebCore::drawTextWithSpacing):
+ * platform/wx/wxcode/non-kerned-drawing.h:
+
+2009-02-12 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser
+
+ https://bugs.webkit.org/show_bug.cgi?id=23942
+
+ Hook up 3D CSS transforms to the accelerated compositor backend.
+ Not enabled by default.
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::blendFunc):
+ (WebCore::ensurePropertyMap):
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimationPrivate::updateTransitions):
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::willNeedService):
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::willNeedService):
+ * platform/graphics/GraphicsLayer.cpp:
+ (WebCore::GraphicsLayer::TransformValueList::makeFunctionList):
+ (WebCore::GraphicsLayer::dumpProperties):
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::copyTransform):
+ (WebCore::getValueFunctionNameForTransformOperation):
+ (WebCore::GraphicsLayerCA::animateTransform):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::updateBoxModelInfoFromStyle):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateTransform):
+ (WebCore::RenderLayer::hasTransformStyle3D):
+ (WebCore::RenderLayer::hasPerspective):
+ (WebCore::RenderLayer::perspectiveTransform):
+ * rendering/RenderLayer.h:
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateGraphicsLayers):
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ (WebCore::RenderLayerBacking::computeTransformOrigin):
+ (WebCore::RenderLayerBacking::computePerspectiveOrigin):
+ * rendering/RenderLayerBacking.h:
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::has3DContent):
+ (WebCore::requiresCompositingLayerForTransform):
+ (WebCore::RenderLayerCompositor::requiresCompositingLayer):
+ (WebCore::RenderLayerCompositor::layerHas3DContent):
+ * rendering/RenderLayerCompositor.h:
+
+2009-02-12 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Eric Seidel
+
+ Get rid of containingBlockHeight(), since it had only one implementation (despite being virtual) and just returned
+ containingBlock()->availableHeight(). The latter reads better anyway. Rename containingBlockWidth() to
+ containingBlockWidthForContent() and move it to RenderBoxModelObject.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::localCaretRect):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::containingBlockWidthForContent):
+ (WebCore::RenderBox::calcWidth):
+ (WebCore::RenderBox::calcReplacedWidthUsing):
+ * rendering/RenderBox.h:
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::relativePositionOffsetX):
+ (WebCore::RenderBoxModelObject::relativePositionOffsetY):
+ (WebCore::RenderBoxModelObject::containingBlockWidthForContent):
+ * rendering/RenderBoxModelObject.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::marginLeft):
+ (WebCore::RenderInline::marginRight):
+ * rendering/RenderObject.cpp:
+ * rendering/RenderObject.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::calcReplacedWidth):
+
+2009-02-12 Simon Fraser <simon.fraser@apple.com>
+
+ Fix non-Mac builds by adding Matrix3DTransformOperation.* and
+ PerspectiveTransformOperation.*. Cleaned out some cruft in
+ the WebCore.vcproj fle.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+
+2009-02-12 David Smith <catfish.man@gmail.com>
+
+ Reviewed by Dave Hyatt.
+
+ Fix https://bugs.webkit.org/show_bug.cgi?id=23935
+ Nested :not() and non-simple selectors in :not() should be invalid
+
+ * css/CSSGrammar.y: Reject nested :not()
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector): ASSERT() rather than checking, since the parser enforces it now
+
+2009-02-12 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fixes.
+
+ * WebCoreSources.bkl:
+
+2009-02-12 Simon Fraser <simon.fraser@apple.com>
+
+ Fix build with ACCELERATED_COMPOSITING turned on.
+
+ Need to cast toRenderBox() in order to call overflowClipRect().
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+
+2009-02-12 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ Fix windows build.
+
+ * css/CSSParser.h:
+
+2009-02-12 David Hyatt <hyatt@apple.com>
+
+ Rename getOverflowClipRect and getClipRect to overflowClipRect and clipRect. Move them to RenderBox, since these methods
+ only apply to boxes. Devirtualize clipRect, since it was not subclassed. Move controlClip stuff to RenderBox also.
+
+ Reviewed by Simon Fraser
+
+ * editing/Editor.cpp:
+ (WebCore::Editor::insideVisibleArea):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::overflowClipRect):
+ (WebCore::RenderBox::clipRect):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::hasControlClip):
+ (WebCore::RenderBox::controlClipRect):
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::paint):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::calculateClipRects):
+ (WebCore::RenderLayer::calculateRects):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::hasClip):
+ (WebCore::RenderObject::hasOverflowClip):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::overflowClipRect):
+ * rendering/RenderTable.h:
+
+2009-02-12 Simon Fraser <simon.fraser@apple.com>
+
+ Fix build with ACCELERATED_COMPOSITING turned on (simple copy/paste error)
+
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::GraphicsLayerCA::setBasicAnimation):
+
+2009-02-12 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Not reviewed.
+
+ Release build fix when VIDEO is disabled (it should also
+ help the builds with WORKERS or XSLT disabled).
+
+ * bindings/js/JSDOMWindowBase.cpp:
+ (jsDOMWindowBaseAudio): Added an UNUSED_PARAM for exec and slot when
+ VIDEO is disabled.
+ (jsDOMWindowBaseWorker): Ditto for WORKERS.
+ (jsDOMWindowBaseXSLTProcessor): Ditto for XSLT.
+
+2009-02-12 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23923
+ Implement mediaPlayerVolumeChanged so a media engine can report autonomous volume changes.
+ Supporting this requires that we know when we are processing a media engine callback so
+ we don't turn around and tell the media player to change the volume when it is reporting
+ a volume change.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::HTMLMediaElement): initialize m_processingMediaPlayerCallback
+ (WebCore::HTMLMediaElement::mediaPlayerNetworkStateChanged): call begin/endProcessingMediaPlayerCallback
+ (WebCore::HTMLMediaElement::setNetworkState): logic split out of mediaPlayerNetworkStateChanged
+ to make it easier to maintain m_processingMediaPlayerCallback.
+ (WebCore::HTMLMediaElement::mediaPlayerReadyStateChanged): call begin/endProcessingMediaPlayerCallback
+ (WebCore::HTMLMediaElement::mediaPlayerTimeChanged): Ditto.
+ (WebCore::HTMLMediaElement::mediaPlayerRepaint): Ditto.
+ (WebCore::HTMLMediaElement::mediaPlayerVolumeChanged): New
+ (WebCore::HTMLMediaElement::updateVolume): Don't change media engine volume if we are processing
+ a callback from the engine.
+ * html/HTMLMediaElement.h:
+ (WebCore::HTMLMediaElement::processingMediaPlayerCallback): New, return true if (m_processingMediaPlayerCallback>0)
+ (WebCore::HTMLMediaElement::beginProcessingMediaPlayerCallback): New, increment m_processingMediaPlayerCallback
+ (WebCore::HTMLMediaElement::endProcessingMediaPlayerCallback): New, decrement m_processingMediaPlayerCallback
+
+2009-02-12 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Support MPEG content on Mac and Windows.
+ <rdar://problem/5917509>
+ https://bugs.webkit.org/show_bug.cgi?id=23495
+
+ Test: media/audio-mpeg-supported.html
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivate::disableUnsupportedTracks):
+
+ * platform/graphics/win/QTMovieWin.cpp:
+ (QTMovieWin::disableUnsupportedTracks):
+
+ * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h: fix typo added in r40925
+
+2009-02-12 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Sam Weinig
+
+ Move containsFloats, hasOverhangingFloats, shrinkToAvoidFloats and avoidsFloats down to
+ RenderBox, since these methods only apply to boxes.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::collapseMargins):
+ (WebCore::RenderBlock::clearFloatsIfNeeded):
+ (WebCore::RenderBlock::layoutBlockChildren):
+ (WebCore::RenderBlock::clearFloats):
+ (WebCore::RenderBlock::markAllDescendantsWithFloatsForLayout):
+ (WebCore::RenderBlock::calcBlockPrefWidths):
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::containsFloats):
+ (WebCore::RenderBlock::hasOverhangingFloats):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::shrinkToAvoidFloats):
+ (WebCore::RenderBox::avoidsFloats):
+ * rendering/RenderBox.h:
+ * rendering/RenderObject.cpp:
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isFloatingOrPositioned):
+ * rendering/RenderView.h:
+
+2009-02-12 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23908
+
+ Added parsing of 3d transform functions and properties
+ (perspective, perspective-origin, transform-style-3d,
+ and backface-visibility).
+
+ Test: transforms/3d/cssmatrix-3d-interface.xhtml
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::):
+ (WebCore::computedTransform):
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * css/CSSMutableStyleDeclaration.cpp:
+ (WebCore::CSSMutableStyleDeclaration::getPropertyValue):
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseValue):
+ (WebCore::CSSParser::parseFillProperty):
+ (WebCore::CSSParser::parseTransformOriginShorthand):
+ (WebCore::TransformOperationInfo::TransformOperationInfo):
+ (WebCore::CSSParser::parseTransform):
+ (WebCore::CSSParser::parseTransformOrigin):
+ (WebCore::CSSParser::parsePerspectiveOrigin):
+ * css/CSSParser.h:
+ * css/CSSPrimitiveValue.h:
+ (WebCore::CSSPrimitiveValue::isUnitTypeLength):
+ * css/CSSPropertyNames.in:
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::adjustRenderStyle):
+ (WebCore::convertToLength):
+ (WebCore::CSSStyleSelector::applyProperty):
+ (WebCore::CSSStyleSelector::mapFillSize):
+ (WebCore::CSSStyleSelector::mapFillXPosition):
+ (WebCore::CSSStyleSelector::mapFillYPosition):
+ (WebCore::getTransformOperationType):
+ (WebCore::CSSStyleSelector::createTransformOperations):
+ * css/CSSValueKeywords.in:
+ * css/WebKitCSSTransformValue.cpp:
+ (WebCore::WebKitCSSTransformValue::cssText):
+ * css/WebKitCSSTransformValue.h:
+ (WebCore::WebKitCSSTransformValue::):
+ * css/WebKitCSSTransformValue.idl:
+ * platform/graphics/transforms/Matrix3DTransformOperation.cpp:
+ * platform/graphics/transforms/Matrix3DTransformOperation.h:
+ * platform/graphics/transforms/PerspectiveTransformOperation.cpp:
+ * platform/graphics/transforms/PerspectiveTransformOperation.h:
+ * platform/graphics/transforms/RotateTransformOperation.cpp:
+ (WebCore::RotateTransformOperation::blend):
+ * platform/graphics/transforms/RotateTransformOperation.h:
+ (WebCore::RotateTransformOperation::RotateTransformOperation):
+ * platform/graphics/transforms/ScaleTransformOperation.h:
+ (WebCore::ScaleTransformOperation::ScaleTransformOperation):
+ * platform/graphics/transforms/TransformOperation.h:
+ (WebCore::TransformOperation::is3DOperation):
+ * platform/graphics/transforms/TransformOperations.h:
+ (WebCore::TransformOperations::has3DOperation):
+ * platform/graphics/transforms/TranslateTransformOperation.h:
+ (WebCore::TranslateTransformOperation::TranslateTransformOperation):
+
+2009-02-12 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix.
+
+ * webcore-base.bkl:
+
+2009-02-12 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ Fix potential ref-count or null-deref problems with C++ objects as Obj-C members.
+
+ * platform/mac/SharedBufferMac.mm: Change to use RefPtr<> instead of ref()/deref().
+ (-[WebCoreSharedBufferData dealloc]):
+ (-[WebCoreSharedBufferData finalize]):
+ (-[WebCoreSharedBufferData initWithSharedBuffer:]):
+
+2009-02-12 David Hyatt <hyatt@apple.com>
+
+ Remove calcWidth from RenderObject. Nobody ever called it on RenderObjects.
+
+ Reviewed by Sam Weinig
+
+ * rendering/RenderObject.h:
+
+2009-02-12 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Mark Rowe
+
+ Fix for regression where form controls would paint yellow highlights. The containsComposition check needs to
+ null check node() now.
+
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::paint):
+
+2009-02-12 Simon Fraser <simon.fraser@apple.com>
+
+ Build fix
+
+ Change Animation::setDirection() to take the new enum value, and fix
+ the single caller.
+
+ Fix build error in MediaPlayerPrivateQTKit.h.
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::mapAnimationDirection):
+ * platform/animation/Animation.h:
+ (WebCore::Animation::setDirection):
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.h:
+
+2009-02-12 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Simon Fraser
+
+ Remove the overrideSize methods from RenderObject. Devirtualize all of the accessors on RenderBox.
+
+ * rendering/RenderBox.h:
+ * rendering/RenderObject.h:
+
+2009-02-12 Eric Carlson <eric.carlson@apple.com>
+
+ Darin Adler, Antti Koivisto, Holger Hans Peter Freyther
+
+ Bug 23797: A platform should be able to use more than one media engine for <video> and <audio>
+ https://bugs.webkit.org/show_bug.cgi?id=23797
+
+ * WebCore.xcodeproj/project.pbxproj: add MediaPlayerPrivate.h
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::load): selectMediaURL now also returns a MIME type, pass it to
+ MediaPlayer::load so it can choose the right media engine
+ (WebCore::HTMLMediaElement::selectMediaURL): renamed from pickMedia. use MIMETypeRegistry
+ functions to strip params from the url and extract the codecs parameter. call
+ MediaPlayer::supportsType to see if we can open the file since only a media engine can
+ answer questions about supported type+codecs.
+ * html/HTMLMediaElement.h:
+
+ * platform/MIMETypeRegistry.cpp:
+ (WebCore::MIMETypeRegistry::getParameterFromMIMEType): New, find and return a MIME type parameter
+ (WebCore::MIMETypeRegistry::stripParametersFromMIMEType): New, strip all parameters from a MIME type
+ * platform/MIMETypeRegistry.h:
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::NullMediaPlayerPrivate::NullMediaPlayerPrivate):
+ (WebCore::NullMediaPlayerPrivate::load):
+ (WebCore::NullMediaPlayerPrivate::cancelLoad):
+ (WebCore::NullMediaPlayerPrivate::play):
+ (WebCore::NullMediaPlayerPrivate::pause):
+ (WebCore::NullMediaPlayerPrivate::naturalSize):
+ (WebCore::NullMediaPlayerPrivate::hasVideo):
+ (WebCore::NullMediaPlayerPrivate::setVisible):
+ (WebCore::NullMediaPlayerPrivate::duration):
+ (WebCore::NullMediaPlayerPrivate::currentTime):
+ (WebCore::NullMediaPlayerPrivate::seek):
+ (WebCore::NullMediaPlayerPrivate::seeking):
+ (WebCore::NullMediaPlayerPrivate::setEndTime):
+ (WebCore::NullMediaPlayerPrivate::setRate):
+ (WebCore::NullMediaPlayerPrivate::paused):
+ (WebCore::NullMediaPlayerPrivate::setVolume):
+ (WebCore::NullMediaPlayerPrivate::networkState):
+ (WebCore::NullMediaPlayerPrivate::readyState):
+ (WebCore::NullMediaPlayerPrivate::maxTimeSeekable):
+ (WebCore::NullMediaPlayerPrivate::maxTimeBuffered):
+ (WebCore::NullMediaPlayerPrivate::dataRate):
+ (WebCore::NullMediaPlayerPrivate::totalBytesKnown):
+ (WebCore::NullMediaPlayerPrivate::totalBytes):
+ (WebCore::NullMediaPlayerPrivate::bytesLoaded):
+ (WebCore::NullMediaPlayerPrivate::setRect):
+ (WebCore::NullMediaPlayerPrivate::paint):
+ (WebCore::createNullMediaPlayer):
+ Do nothing media player so MediaPlayer doesn't have to NULL check before calling current engine.
+
+ (WebCore::MediaPlayerFactory::MediaPlayerFactory): New, factory constructor.
+ (WebCore::installedMediaEngines): New, returns vector of all installed engines.
+ (WebCore::addMediaEngine): New, add a media engine to the cache.
+ (WebCore::chooseBestEngineForTypeAndCodecs): New, return an engine that might support a MIME type.
+ (WebCore::MediaPlayer::MediaPlayer): create NULL media player so we have a default. Initialize m_currentMediaEngine.
+ (WebCore::MediaPlayer::~MediaPlayer): don't need to delete m_private, it is now an OwnPtr.
+ (WebCore::MediaPlayer::load): Take MIME type as well as url, since we need it to find the right
+ media engine. If no MIME type is provided, try to devine one from the url. Choose a media engine
+ based on the MIME type and codecs parameter.
+ (WebCore::MediaPlayer::currentTime): Remove excess white space.
+ (WebCore::MediaPlayer::supportsType): Take codecs param as well as MIME type. Return enum so we can
+ indicate "maybe" condition.
+ (WebCore::MediaPlayer::getSupportedTypes): Build up list of MIME types by consulting all engines.
+ (WebCore::MediaPlayer::isAvailable): return true if any media engine is installed.
+
+ * platform/graphics/MediaPlayer.h:
+ (WebCore::MediaPlayer::):
+ (WebCore::MediaPlayer::frameView): accessor function.
+
+ * platform/graphics/MediaPlayerPrivate.h: New, declares abstract interface for media engines.
+ (WebCore::MediaPlayerPrivateInterface::~MediaPlayerPrivateInterface):
+ (WebCore::MediaPlayerPrivateInterface::totalBytesKnown):
+
+ * platform/graphics/chromium/MediaPlayerPrivateChromium.h: Add support for engine factory
+
+ * platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:
+ (WebCore::MediaPlayerPrivate::create): New, media engine factory function
+ (WebCore::MediaPlayerPrivate::registerMediaEngine): Register engine with MediaPlayer factory
+ (WebCore::MediaPlayerPrivate::load): URL is a const String.
+ (WebCore::MediaPlayerPrivate::duration): Declare const.
+ (WebCore::MediaPlayerPrivate::naturalSize): Ditto.
+ (WebCore::MediaPlayerPrivate::hasVideo): Ditto.
+ (WebCore::MediaPlayerPrivate::networkState): Ditto.
+ (WebCore::MediaPlayerPrivate::readyState): Ditto.
+ (WebCore::MediaPlayerPrivate::maxTimeBuffered): Ditto.
+ (WebCore::MediaPlayerPrivate::maxTimeSeekable): Ditto.
+ (WebCore::MediaPlayerPrivate::maxTimeLoaded): Ditto.
+ (WebCore::MediaPlayerPrivate::bytesLoaded): Ditto.
+ (WebCore::MediaPlayerPrivate::totalBytesKnown): Ditto.
+ (WebCore::MediaPlayerPrivate::totalBytes): Ditto.
+ (WebCore::MediaPlayerPrivate::supportsType): Return MediaPlayer::SupportsType enum instead of bool.
+ * platform/graphics/gtk/MediaPlayerPrivateGStreamer.h:
+ (WebCore::MediaPlayerPrivate::isAvailable):
+
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.h:
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::MediaPlayerPrivateQTKit::create): New, media engine factory function
+ (WebCore::MediaPlayerPrivateQTKit::registerMediaEngine): Register engine with MediaPlayer factory
+ (WebCore::MediaPlayerPrivate::createQTMovieView): don't access MediaPlayer->m_frameView directly,
+ use accessor function.
+ (WebCore::MediaPlayerPrivate::setUpVideoRendering): Ditto.
+ (WebCore::MediaPlayerPrivate::paint): Ditto.
+ (WebCore::mimeTypeCache): New.
+ (WebCore::MediaPlayerPrivate::getSupportedTypes): New, media engine factory function.
+ (WebCore::MediaPlayerPrivate::supportsType): return MediaPlayer::SupportsType enum instead of bool
+ (-[WebCoreMovieObserver initWithCallback:]): fix formatting
+
+ * platform/graphics/qt/MediaPlayerPrivatePhonon.cpp:
+ (WebCore::MediaPlayerPrivate::create):
+ (WebCore::MediaPlayerPrivate::registerMediaEngine):
+ (WebCore::MediaPlayerPrivate::supportsType):
+ (WebCore::MediaPlayerPrivate::load): URL is a const String.
+ * platform/graphics/qt/MediaPlayerPrivatePhonon.h:
+ (WebCore::MediaPlayerPrivate::isAvailable):
+
+ * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.cpp:
+ (WebCore::MediaPlayerPrivate::create): New, media engine factory function
+ (WebCore::MediaPlayerPrivate::registerMediaEngine): New, register engine with MediaPlayer factory
+ (WebCore::MediaPlayerPrivate::load): URL is a const String.
+ (WebCore::MediaPlayerPrivate::paint): don't access MediaPlayer->m_frameView directly,
+ use accessor function.
+ (WebCore::mimeTypeCache): New.
+ (WebCore::MediaPlayerPrivateQTWin::getSupportedTypes): New, media engine factory function.
+ (WebCore::MediaPlayerPrivateQTWin::supportsType): return MediaPlayer::SupportsType enum instead of bool
+ * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h:
+
+2009-02-12 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Test: fast/dom/prefixed-image-tag.xhtml
+
+ Bug 23915: Remove setPrefix work-around in Document::createElement(QualifiedName, bool)
+
+ Instead we now directly propage the QualifiedName inside the generated Factory.
+
+ Test: fast/dom/prefixed-image-tag.xhtml
+
+ * dom/Document.cpp:
+ (WebCore::Document::createElement): Removed the setPrefix work-around
+ and replaced it with an ASSERT to catch mistakes inside the Factory code.
+ Remove the unneeded ExceptionCode argument.
+
+ (WebCore::Document::createElementNS): Removed ExceptionCode argument.
+ * dom/Document.h: Updated the signature.
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::XMLTokenizer::startElementNs): Removed ExceptionCode argument.
+ * dom/XMLTokenizerQt.cpp: Ditto.
+ (WebCore::XMLTokenizer::parseStartElement): Ditto.
+
+ * dom/make_names.pl: Implemented the QualifiedName propogation logic
+ in the Factory.
+
+2009-02-12 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23188
+
+ Define enum values for Animation::direction(), and one for
+ IterationCountInfinite to make the code more self-documenting.
+
+ Order the member vars of Animation to optimize packing.
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * platform/animation/Animation.cpp:
+ (WebCore::Animation::Animation):
+ (WebCore::Animation::operator=):
+ (WebCore::Animation::animationsMatch):
+ * platform/animation/Animation.h:
+ (WebCore::Animation::):
+ (WebCore::Animation::direction):
+ (WebCore::Animation::initialAnimationDirection):
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::GraphicsLayerCA::setBasicAnimation):
+ (WebCore::GraphicsLayerCA::setKeyframeAnimation):
+
+2009-02-12 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::startHttp): Don't use O_CLOEXEC for now.
+
+2009-02-12 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Bug 23826: Potential bug with before/after rule while moving element from one document to another
+
+ Moved the document before/after toggle from the constructor to insertedIntoDocument.
+
+ Test: fast/css-generated-content/beforeAfter-interdocument.html
+
+ * html/HTMLQuoteElement.cpp:
+ (WebCore::HTMLQuoteElement::HTMLQuoteElement):
+ (WebCore::HTMLQuoteElement::insertedIntoDocument):
+ * html/HTMLQuoteElement.h:
+
+2009-02-12 David Hyatt <hyatt@apple.com>
+
+ Reviewed by Simon Fraser
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23912
+
+ I have no idea why this broke. As far as I can tell the old code never should have worked in
+ the first place. Add code to handleWheelEvent that will find an enclosing renderer for a node
+ in order to attempt a wheel scroll.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleWheelEvent):
+
+2009-02-12 David Hyatt <hyatt@apple.com>
+
+ Move the functions that paint borders, box shadows and border images into RenderBoxModelObject. drawBorder and drawBorderArc, because they are used
+ for outlines as well as borders, need to stay in RenderObject. Rename them to drawLineForBoxSide and drawArcForBoxSide in order to reflect their
+ more generic use. Rename the BorderSide struct to BoxSide, since the concept of "side" is just a rectangle concept and not a border concept.
+
+ Reviewed by Simon Fraser
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::paintFillLayer):
+ (WebCore::InlineFlowBox::paintBoxShadow):
+ (WebCore::InlineFlowBox::paintBoxDecorations):
+ (WebCore::InlineFlowBox::paintMask):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paintColumns):
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintNinePieceImage):
+ (WebCore::RenderBoxModelObject::paintBorder):
+ (WebCore::RenderBoxModelObject::paintBoxShadow):
+ * rendering/RenderBoxModelObject.h:
+ * rendering/RenderFieldset.cpp:
+ (WebCore::RenderFieldset::paintBorderMinusLegend):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::paintOutlineForLine):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::drawLineForBoxSide):
+ (WebCore::RenderObject::drawArcForBoxSide):
+ (WebCore::RenderObject::paintOutline):
+ * rendering/RenderObject.h:
+ (WebCore::):
+ (WebCore::RenderObject::hasBoxDecorations):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::CollapsedBorders::addBorder):
+ (WebCore::RenderTableCell::paintCollapsedBorder):
+
+2009-02-12 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser
+
+ Bug 18322: video element should have ui when scripting is disabled
+ https://bugs.webkit.org/show_bug.cgi?id=18322
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::controls): always return 'true' when JavaScript is disabled.
+ * manual-tests/media-controls-when-javascript-disabled.html: Added.
+
+2009-02-12 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23906
+ Add custom V8 bindings for HTMLPlugInElement.
+
+ * bindings/v8/custom/V8HTMLPlugInElementCustom.cpp: Added.
+ (WebCore::NAMED_PROPERTY_GETTER):
+ (WebCore::NAMED_PROPERTY_SETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+ (WebCore::INDEXED_PROPERTY_GETTER):
+ (WebCore::INDEXED_PROPERTY_SETTER):
+
+2009-02-12 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ [GTK] Soup backend must handle upload of multiple files
+ https://bugs.webkit.org/show_bug.cgi?id=18343
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::):
+ (WebCore::freeFileMapping):
+ (WebCore::ResourceHandle::startHttp): Support multipart request bodies
+ mmap'ing files to be uploaded.
+
+2009-02-12 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix the Qt build following r40871 which changed RenderObject::element()
+ into RenderObject::node().
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::RenderThemeQt::getMediaElementFromRenderObject):
+ (WebCore::RenderThemeQt::getMediaControlForegroundColor):
+
+2009-02-12 Alexey Proskuryakov <ap@webkit.org>
+
+ Build fix.
+
+ * platform/graphics/transforms/RotateTransformOperation.cpp: Include <algorithm>.
+
+2009-02-12 Jian Li <jianli@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Change worker code to use different proxy class pointers.
+ https://bugs.webkit.org/show_bug.cgi?id=23859
+
+ This is a step towards using separate proxies in multi-process implementation.
+
+ * bindings/js/WorkerScriptController.cpp:
+ (WebCore::WorkerScriptController::evaluate):
+ * dom/Worker.cpp:
+ (WebCore::Worker::Worker):
+ (WebCore::Worker::~Worker):
+ (WebCore::Worker::postMessage):
+ (WebCore::Worker::terminate):
+ (WebCore::Worker::hasPendingActivity):
+ (WebCore::Worker::notifyFinished):
+ (WebCore::Worker::dispatchMessage):
+ * dom/Worker.h:
+ * dom/WorkerContext.cpp:
+ (WebCore::WorkerContext::~WorkerContext):
+ (WebCore::WorkerContext::reportException):
+ (WebCore::WorkerContext::addMessage):
+ (WebCore::WorkerContext::postMessage):
+ (WebCore::WorkerContext::dispatchMessage):
+ * dom/WorkerContext.h:
+ * dom/WorkerContextProxy.h:
+ * dom/WorkerMessagingProxy.cpp:
+ (WebCore::MessageWorkerContextTask::performTask):
+ (WebCore::MessageWorkerTask::performTask):
+ (WebCore::WorkerContextProxy::create):
+ (WebCore::WorkerMessagingProxy::WorkerMessagingProxy):
+ (WebCore::WorkerMessagingProxy::~WorkerMessagingProxy):
+ (WebCore::WorkerMessagingProxy::startWorkerContext):
+ (WebCore::postConsoleMessageTask):
+ (WebCore::WorkerMessagingProxy::postConsoleMessageToWorkerObject):
+ (WebCore::WorkerMessagingProxy::workerThreadCreated):
+ * dom/WorkerMessagingProxy.h:
+ * dom/WorkerObjectProxy.h:
+ * dom/WorkerThread.cpp:
+ (WebCore::WorkerThread::create):
+ (WebCore::WorkerThread::WorkerThread):
+ (WebCore::WorkerThread::workerThread):
+ * dom/WorkerThread.h:
+ (WebCore::WorkerThread::workerObjectProxy):
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::WorkerThreadableLoader::WorkerThreadableLoader):
+
+2009-02-12 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23688: ThreadableLoader needs a sync implementation for Workers.
+ <https://bugs.webkit.org/show_bug.cgi?id=23688>
+
+ Add ResourceError to ThreadableLoaderClient.
+
+ No observable change in behavior, so no test.
+
+ * loader/DocumentThreadableLoader.cpp:
+ (WebCore::DocumentThreadableLoader::create):
+ (WebCore::DocumentThreadableLoader::willSendRequest):
+ (WebCore::DocumentThreadableLoader::didFail):
+ * loader/ThreadableLoaderClient.h:
+ (WebCore::ThreadableLoaderClient::didFail):
+ (WebCore::ThreadableLoaderClient::didFailWillSendRequestCheck):
+ * loader/ThreadableLoaderClientWrapper.h:
+ (WebCore::ThreadableLoaderClientWrapper::didFail):
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader):
+ (WebCore::workerContextDidFail):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
+ * loader/WorkerThreadableLoader.h:
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::didFail):
+ (WebCore::XMLHttpRequest::didFailWillSendRequestCheck):
+ * xml/XMLHttpRequest.h:
+
+2009-02-11 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ Fix the build on Leopard with ACCELERATED_COMPOSITING turned on.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ FloatPoint3D needs to be a private header, since it's included by GraphicsLayer.h
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::getTransformFunctionValue):
+ (WebCore::caValueFunctionSupported):
+ (WebCore::GraphicsLayerCA::setAnchorPoint):
+ (WebCore::GraphicsLayerCA::setPreserves3D):
+ (WebCore::GraphicsLayerCA::setContentsToImage):
+ (WebCore::GraphicsLayerCA::setBasicAnimation):
+ (WebCore::GraphicsLayerCA::setKeyframeAnimation):
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::isRootLayer):
+ Fix isRootLayer to return true for the renderView's layer, not the root
+ renderer's layer.
+
+2009-02-11 Adele Peterson <adele@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23910
+ <rdar://problem/6160546> REGRESSION: In Full page mode, movie controller hides when I drag the knob if movie is playing
+
+ * rendering/RenderMedia.cpp: (WebCore::RenderMedia::forwardEvent):
+ When we get a mouseOut event, consider the mouse as still within the RenderMedia if the relatedTarget is a descendant.
+
+2009-02-11 David Hyatt <hyatt@apple.com>
+
+ Remove all of the inline box wrapper functions from RenderObject, since they only apply to RenderBox. Devirtualize the functions.
+ Patch all of the call sites to convert to a RenderBox.
+
+ Reviewed by Simon Fraser
+
+ * dom/Position.cpp:
+ (WebCore::nextRenderedEditable):
+ (WebCore::previousRenderedEditable):
+ (WebCore::Position::getInlineBoxAndOffset):
+ * rendering/InlineBox.cpp:
+ (WebCore::InlineBox::deleteLine):
+ (WebCore::InlineBox::extractLine):
+ (WebCore::InlineBox::attachLine):
+ * rendering/RenderLineBoxList.cpp:
+ (WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):
+ * rendering/RenderObject.cpp:
+ * rendering/RenderObject.h:
+ * rendering/RenderObjectChildList.cpp:
+ (WebCore::RenderObjectChildList::removeChildNode):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::textWithHardLineBreaks):
+
+2009-02-11 David Hyatt <hyatt@apple.com>
+
+ Eliminate createInlineBox and dirtyLineBoxes from RenderObject. These functions have been devirtualized.
+ The single call site now calls a helper function that just bit checks and casts before calling the correct
+ type. RenderBlock's dirtyLineBoxes function was dead code (caused by the RenderFlow deletion), so it has
+ just been removed.
+
+ Reviewed by Eric Seidel
+
+ * rendering/RenderBR.cpp:
+ * rendering/RenderBR.h:
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::createRootInlineBox):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::createInlineBox):
+ * rendering/RenderBox.h:
+ * rendering/RenderCounter.cpp:
+ * rendering/RenderCounter.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::createInlineFlowBox):
+ * rendering/RenderInline.h:
+ * rendering/RenderObject.cpp:
+ * rendering/RenderObject.h:
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::createTextBox):
+ * rendering/RenderSVGInlineText.h:
+ (WebCore::RenderSVGInlineText::isSVGText):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::createTextBox):
+ (WebCore::RenderText::createInlineTextBox):
+ * rendering/RenderText.h:
+ * rendering/bidi.cpp:
+ (WebCore::createInlineBoxForRenderer):
+ (WebCore::RenderBlock::createLineBoxes):
+ (WebCore::RenderBlock::constructLine):
+ (WebCore::RenderBlock::layoutInlineChildren):
+
+2009-02-11 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23905
+
+ Adds support for 3D CSS properties (transform-style-3d, perspective,
+ perspective-origin, and backface-visibility) to RenderStyle and friends
+
+ * platform/graphics/transforms/TransformOperation.h
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::diff):
+ (WebCore::RenderStyle::applyTransform):
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::transformOriginZ):
+ (WebCore::InheritedFlags::hasTransformRelatedProperty):
+ (WebCore::InheritedFlags::transformStyle3D):
+ (WebCore::InheritedFlags::backfaceVisibility):
+ (WebCore::InheritedFlags::perspective):
+ (WebCore::InheritedFlags::perspectiveOriginX):
+ (WebCore::InheritedFlags::perspectiveOriginY):
+ (WebCore::InheritedFlags::setTransformOriginZ):
+ (WebCore::InheritedFlags::setTransformStyle3D):
+ (WebCore::InheritedFlags::setBackfaceVisibility):
+ (WebCore::InheritedFlags::setPerspective):
+ (WebCore::InheritedFlags::setPerspectiveOriginX):
+ (WebCore::InheritedFlags::setPerspectiveOriginY):
+ (WebCore::InheritedFlags::initialTransformOriginZ):
+ (WebCore::InheritedFlags::initialTransformStyle3D):
+ (WebCore::InheritedFlags::initialBackfaceVisibility):
+ (WebCore::InheritedFlags::initialPerspective):
+ (WebCore::InheritedFlags::initialPerspectiveOriginX):
+ (WebCore::InheritedFlags::initialPerspectiveOriginY):
+ * rendering/style/RenderStyleConstants.h:
+ (WebCore::):
+ * rendering/style/StyleRareNonInheritedData.cpp:
+ (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
+ (WebCore::StyleRareNonInheritedData::operator==):
+ * rendering/style/StyleRareNonInheritedData.h:
+ * rendering/style/StyleTransformData.cpp:
+ (WebCore::StyleTransformData::StyleTransformData):
+ (WebCore::StyleTransformData::operator==):
+ * rendering/style/StyleTransformData.h:
+
+2009-02-11 Simon Fraser <simon.fraser@apple.com>
+
+ No review.
+
+ Fix ACCELERATED_COMPOSITING build.
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::createGraphicsLayer):
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::updateLayerCompositingState):
+
+2009-02-11 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23862
+
+ Add a bit on RenderStyle that gets set when running accelerated
+ transitions of transform or opacity. These ensure that styles
+ compare as different during the transition, so that interruption
+ can be detected reliably.
+
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::animate):
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::isRunningAcceleratedAnimation):
+ (WebCore::InheritedFlags::setIsRunningAcceleratedAnimation):
+ * rendering/style/StyleRareNonInheritedData.cpp:
+ (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
+ (WebCore::StyleRareNonInheritedData::operator==):
+ * rendering/style/StyleRareNonInheritedData.h:
+
+2009-02-11 David Hyatt <hyatt@apple.com>
+
+ Eliminate the virtual position() function from RenderObject. Rename the position() overrides
+ in RenderText and RenderBox to positionLineBox and devirtualize them.
+
+ Patch the one call site to just check for isText() and isBox() and call the methods directly.
+
+ Remove some unnecessary overrides of position() on table sections and rows.
+
+ Reviewed by Simon Fraser
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::positionLineBox):
+ * rendering/RenderBox.h:
+ * rendering/RenderObject.h:
+ * rendering/RenderSVGRoot.cpp:
+ * rendering/RenderSVGRoot.h:
+ * rendering/RenderTableRow.h:
+ (WebCore::RenderTableRow::lineHeight):
+ * rendering/RenderTableSection.h:
+ (WebCore::RenderTableSection::lineHeight):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::positionLineBox):
+ * rendering/RenderText.h:
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::computeVerticalPositionsForLine):
+
+2009-02-11 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23901
+ Add HTML options/collections V8 custom bindings.
+
+ * bindings/v8/custom/V8HTMLCollectionCustom.cpp: Added.
+ (WebCore::getNamedItems):
+ (WebCore::getItem):
+ (WebCore::NAMED_PROPERTY_GETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8HTMLFormElementCustom.cpp: Added.
+ (WebCore::NAMED_PROPERTY_GETTER):
+ * bindings/v8/custom/V8HTMLInputElementCustom.cpp:
+ (WebCore::ACCESSOR_GETTER):
+ (WebCore::ACCESSOR_SETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:
+ (WebCore::CALLBACK_FUNC_DECL):
+ (WebCore::ACCESSOR_SETTER):
+ * bindings/v8/custom/V8HTMLSelectElementCustom.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ (WebCore::removeElement):
+ * bindings/v8/custom/V8HTMLSelectElementCustom.h: Added.
+ * bindings/v8/custom/V8NamedNodesCollection.cpp: Added.
+ (WebCore::V8NamedNodesCollection::item):
+ (WebCore::V8NamedNodesCollection::itemWithName):
+ * bindings/v8/custom/V8NamedNodesCollection.h: Added.
+ (WebCore::V8NamedNodesCollection::V8NamedNodesCollection):
+ (WebCore::V8NamedNodesCollection::length):
+
+2009-02-11 Dimitri Dupuis-latour <dupuislatour@apple.com>
+
+ Added a preference to disable some Inspector's panels (rdar://6419624, rdar://6419645).
+ This is controlled via the 'WebKitInspectorHiddenPanels' key; if nothing is specified, all panels are shown.
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/InspectorClient.h:
+ * inspector/InspectorController.cpp:
+ (WebCore::hiddenPanels):
+ (WebCore::InspectorController::hiddenPanels):
+ (WebCore::InspectorController::windowScriptObjectAvailable):
+ * inspector/InspectorController.h:
+ * inspector/front-end/inspector.js:
+ (WebInspector.loaded):
+ * loader/EmptyClients.h:
+ (WebCore::EmptyInspectorClient::hiddenPanels):
+
+2009-02-11 David Hyatt <hyatt@apple.com>
+
+ Combine RenderObject::element() and RenderObject::node() into a single function.
+ node() now has the "anonymous bit" checking behavior of element() and will
+ return 0 for anonymous content. This patch switches all callers of element()
+ to node() and patches old callers of node() to deal with situations where they
+ did not expect node() to be 0. A bunch of node() calls were calling stuff on
+ Document that they clearly didn't intend, so overall this is a nice improvement.
+
+ Reviewed by Sam Weinig
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::getUpperLeftCorner):
+ * dom/Element.cpp:
+ (WebCore::Element::offsetParent):
+ * dom/Position.cpp:
+ (WebCore::Position::hasRenderedNonAnonymousDescendantsWithHeight):
+ * editing/ModifySelectionListLevel.cpp:
+ (WebCore::getStartEndListChildren):
+ (WebCore::IncreaseSelectionListLevelCommand::doApply):
+ (WebCore::DecreaseSelectionListLevelCommand::doApply):
+ * editing/TextIterator.cpp:
+ (WebCore::TextIterator::advance):
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::leftVisuallyDistinctCandidate):
+ (WebCore::VisiblePosition::rightVisuallyDistinctCandidate):
+ * editing/visible_units.cpp:
+ (WebCore::startPositionForLine):
+ (WebCore::endPositionForLine):
+ * page/AXObjectCache.cpp:
+ (WebCore::AXObjectCache::get):
+ * page/AccessibilityList.cpp:
+ (WebCore::AccessibilityList::isUnorderedList):
+ (WebCore::AccessibilityList::isOrderedList):
+ (WebCore::AccessibilityList::isDefinitionList):
+ * page/AccessibilityListBox.cpp:
+ (WebCore::AccessibilityListBox::doAccessibilityHitTest):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::isPasswordField):
+ (WebCore::AccessibilityRenderObject::isFileUploadButton):
+ (WebCore::AccessibilityRenderObject::isInputImage):
+ (WebCore::AccessibilityRenderObject::isMultiSelect):
+ (WebCore::AccessibilityRenderObject::isControl):
+ (WebCore::AccessibilityRenderObject::getAttribute):
+ (WebCore::AccessibilityRenderObject::anchorElement):
+ (WebCore::AccessibilityRenderObject::actionElement):
+ (WebCore::AccessibilityRenderObject::mouseButtonListener):
+ (WebCore::AccessibilityRenderObject::helpText):
+ (WebCore::AccessibilityRenderObject::textUnderElement):
+ (WebCore::AccessibilityRenderObject::hasIntValue):
+ (WebCore::AccessibilityRenderObject::intValue):
+ (WebCore::AccessibilityRenderObject::labelElementContainer):
+ (WebCore::AccessibilityRenderObject::title):
+ (WebCore::AccessibilityRenderObject::accessibilityDescription):
+ (WebCore::AccessibilityRenderObject::boundingBoxRect):
+ (WebCore::AccessibilityRenderObject::checkboxOrRadioRect):
+ (WebCore::AccessibilityRenderObject::titleUIElement):
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+ (WebCore::AccessibilityRenderObject::text):
+ (WebCore::AccessibilityRenderObject::ariaSelectedTextDOMRange):
+ (WebCore::AccessibilityRenderObject::accessKey):
+ (WebCore::AccessibilityRenderObject::setSelectedTextRange):
+ (WebCore::AccessibilityRenderObject::url):
+ (WebCore::AccessibilityRenderObject::isFocused):
+ (WebCore::AccessibilityRenderObject::setFocused):
+ (WebCore::AccessibilityRenderObject::setValue):
+ (WebCore::AccessibilityRenderObject::isEnabled):
+ (WebCore::AccessibilityRenderObject::visiblePositionRange):
+ (WebCore::AccessibilityRenderObject::index):
+ (WebCore::AccessibilityRenderObject::activeDescendant):
+ (WebCore::AccessibilityRenderObject::handleActiveDescendantChanged):
+ (WebCore::AccessibilityRenderObject::observableObject):
+ (WebCore::AccessibilityRenderObject::roleValue):
+ (WebCore::AccessibilityRenderObject::canSetFocusAttribute):
+ (WebCore::AccessibilityRenderObject::ariaListboxSelectedChildren):
+ * page/AccessibilityTable.cpp:
+ (WebCore::AccessibilityTable::isTableExposableThroughAccessibility):
+ (WebCore::AccessibilityTable::title):
+ * page/AccessibilityTableCell.cpp:
+ (WebCore::AccessibilityTableCell::titleUIElement):
+ * page/AccessibilityTableColumn.cpp:
+ (WebCore::AccessibilityTableColumn::headerObjectForSection):
+ * page/AccessibilityTableRow.cpp:
+ (WebCore::AccessibilityTableRow::headerObject):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::dispatchMouseEvent):
+ (WebCore::EventHandler::canMouseDownStartSelect):
+ (WebCore::EventHandler::canMouseDragExtendSelect):
+ (WebCore::EventHandler::shouldDragAutoNode):
+ * page/Frame.cpp:
+ (WebCore::Frame::searchForLabelsAboveCell):
+ (WebCore::Frame::setFocusedNodeIfNeeded):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::updateOverflowStatus):
+ * page/animation/AnimationBase.cpp:
+ (WebCore::AnimationBase::updateStateMachine):
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::updateAnimationTimer):
+ (WebCore::AnimationController::cancelAnimations):
+ (WebCore::AnimationController::updateAnimations):
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::KeyframeAnimation):
+ (WebCore::KeyframeAnimation::endAnimation):
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (blockquoteLevel):
+ (AXAttributeStringSetHeadingLevel):
+ * page/mac/FrameMac.mm:
+ (WebCore::Frame::searchForNSLabelsAboveCell):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::verticallyAlignBoxes):
+ (WebCore::InlineFlowBox::paint):
+ (WebCore::shouldDrawTextDecoration):
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::paintDocumentMarkers):
+ * rendering/RenderBR.cpp:
+ (WebCore::RenderBR::positionForCoordinates):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::layoutBlock):
+ (WebCore::RenderBlock::handleRunInChild):
+ (WebCore::RenderBlock::paintObject):
+ (WebCore::RenderBlock::isSelectionRoot):
+ (WebCore::RenderBlock::rightmostPosition):
+ (WebCore::RenderBlock::positionForBox):
+ (WebCore::RenderBlock::positionForRenderer):
+ (WebCore::RenderBlock::positionForCoordinates):
+ (WebCore::RenderBlock::hasLineIfEmpty):
+ (WebCore::RenderBlock::updateFirstLetter):
+ (WebCore::RenderBlock::updateHitTestResult):
+ (WebCore::RenderBlock::addFocusRingRects):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::styleWillChange):
+ (WebCore::RenderBox::updateBoxModelInfoFromStyle):
+ (WebCore::RenderBox::paintRootBoxDecorations):
+ (WebCore::RenderBox::positionForCoordinates):
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::updateFromElement):
+ (WebCore::RenderButton::canHaveChildren):
+ * rendering/RenderCounter.cpp:
+ (WebCore::planCounter):
+ * rendering/RenderFieldset.cpp:
+ (WebCore::RenderFieldset::findLegend):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutVerticalBox):
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::translationForAttributes):
+ (WebCore::RenderForeignObject::calculateLocalTransform):
+ * rendering/RenderFrame.h:
+ (WebCore::RenderFrame::element):
+ * rendering/RenderImage.cpp:
+ (WebCore::RenderImage::paintReplaced):
+ (WebCore::RenderImage::imageMap):
+ (WebCore::RenderImage::nodeAtPoint):
+ (WebCore::RenderImage::updateAltText):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::cloneInline):
+ (WebCore::RenderInline::updateHitTestResult):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::isTransparent):
+ (WebCore::RenderLayer::scrollToOffset):
+ (WebCore::RenderLayer::resize):
+ (WebCore::RenderLayer::createScrollbar):
+ (WebCore::RenderLayer::updateOverflowStatus):
+ (WebCore::RenderLayer::updateScrollInfoAfterLayout):
+ (WebCore::RenderLayer::enclosingElement):
+ (WebCore::RenderLayer::updateHoverActiveState):
+ (WebCore::RenderLayer::updateScrollCornerStyle):
+ (WebCore::RenderLayer::updateResizerStyle):
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::isRootLayer):
+ * rendering/RenderListItem.cpp:
+ (WebCore::getParentOfFirstLineBox):
+ * rendering/RenderMarquee.cpp:
+ (WebCore::RenderMarquee::marqueeSpeed):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::RenderObject):
+ (WebCore::RenderObject::isBody):
+ (WebCore::RenderObject::isHR):
+ (WebCore::RenderObject::isHTMLMarquee):
+ (WebCore::RenderObject::isEditable):
+ (WebCore::RenderObject::addPDFURLRect):
+ (WebCore::RenderObject::showTreeForThis):
+ (WebCore::RenderObject::draggableNode):
+ (WebCore::RenderObject::hasOutlineAnnotation):
+ (WebCore::RenderObject::positionForCoordinates):
+ (WebCore::RenderObject::updateDragState):
+ (WebCore::RenderObject::updateHitTestResult):
+ (WebCore::RenderObject::getUncachedPseudoStyle):
+ (WebCore::RenderObject::getTextDecorationColors):
+ (WebCore::RenderObject::caretMaxOffset):
+ (WebCore::RenderObject::offsetParent):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isRoot):
+ (WebCore::RenderObject::isInlineContinuation):
+ (WebCore::RenderObject::node):
+ (WebCore::RenderObject::setNode):
+ * rendering/RenderObjectChildList.cpp:
+ (WebCore::RenderObjectChildList::destroyLeftoverChildren):
+ * rendering/RenderPart.cpp:
+ (WebCore::RenderPart::updateWidgetPosition):
+ * rendering/RenderPartObject.cpp:
+ (WebCore::RenderPartObject::updateWidget):
+ (WebCore::RenderPartObject::viewCleared):
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::calculateLocalTransform):
+ (WebCore::RenderPath::layout):
+ (WebCore::RenderPath::paint):
+ (WebCore::RenderPath::drawMarkersIfNeeded):
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::positionForCoordinates):
+ (WebCore::RenderReplaced::isSelected):
+ * rendering/RenderSVGGradientStop.cpp:
+ (WebCore::RenderSVGGradientStop::gradientElement):
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::calculateLocalTransform):
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::positionForCoordinates):
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::layout):
+ (WebCore::RenderSVGRoot::applyContentTransforms):
+ (WebCore::RenderSVGRoot::paint):
+ (WebCore::RenderSVGRoot::calcViewport):
+ (WebCore::RenderSVGRoot::absoluteTransform):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::calculateLocalTransform):
+ (WebCore::RenderSVGText::layout):
+ * rendering/RenderSVGTextPath.cpp:
+ (WebCore::RenderSVGTextPath::layoutPath):
+ (WebCore::RenderSVGTextPath::startOffset):
+ (WebCore::RenderSVGTextPath::exactAlignment):
+ (WebCore::RenderSVGTextPath::stretchMethod):
+ * rendering/RenderSVGTransformableContainer.cpp:
+ (WebCore::RenderSVGTransformableContainer::calculateLocalTransform):
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::calcViewport):
+ (WebCore::RenderSVGViewportContainer::viewportTransform):
+ (WebCore::RenderSVGViewportContainer::nodeAtPoint):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::addChild):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::updateFromElement):
+ (WebCore::RenderTableCell::calcPrefWidths):
+ * rendering/RenderTableCol.cpp:
+ (WebCore::RenderTableCol::updateFromElement):
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::addChild):
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::addChild):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::originalText):
+ (WebCore::RenderText::positionForCoordinates):
+ * rendering/RenderTextControlMultiLine.cpp:
+ (WebCore::RenderTextControlMultiLine::nodeAtPoint):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::nodeAtPoint):
+ * rendering/RenderTextFragment.cpp:
+ (WebCore::RenderTextFragment::originalText):
+ (WebCore::RenderTextFragment::previousCharacter):
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::isActive):
+ (WebCore::RenderTheme::isChecked):
+ (WebCore::RenderTheme::isIndeterminate):
+ (WebCore::RenderTheme::isEnabled):
+ (WebCore::RenderTheme::isFocused):
+ (WebCore::RenderTheme::isPressed):
+ (WebCore::RenderTheme::isReadOnlyControl):
+ (WebCore::RenderTheme::isHovered):
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::updatePressedState):
+ (WebCore::RenderThemeMac::paintMediaFullscreenButton):
+ (WebCore::RenderThemeMac::paintMediaMuteButton):
+ (WebCore::RenderThemeMac::paintMediaPlayButton):
+ (WebCore::RenderThemeMac::paintMediaSeekBackButton):
+ (WebCore::RenderThemeMac::paintMediaSeekForwardButton):
+ (WebCore::RenderThemeMac::paintMediaSliderTrack):
+ (WebCore::RenderThemeMac::paintMediaSliderThumb):
+ (WebCore::RenderThemeMac::paintMediaTimelineContainer):
+ (WebCore::RenderThemeMac::paintMediaCurrentTime):
+ (WebCore::RenderThemeMac::paintMediaTimeRemaining):
+ * rendering/RenderThemeSafari.cpp:
+ (WebCore::RenderThemeSafari::paintMediaMuteButton):
+ (WebCore::RenderThemeSafari::paintMediaPlayButton):
+ (WebCore::RenderThemeSafari::paintMediaSliderTrack):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ (WebCore::writeSelection):
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::setWidgetGeometry):
+ (WebCore::RenderWidget::updateWidgetPosition):
+ (WebCore::RenderWidget::nodeAtPoint):
+ * rendering/RootInlineBox.cpp:
+ (WebCore::isEditableLeaf):
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::prepareToRenderSVGContent):
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::write):
+ * rendering/SVGRootInlineBox.cpp:
+ (WebCore::SVGRootInlineBox::buildLayoutInformation):
+ (WebCore::SVGRootInlineBox::layoutInlineBoxes):
+ (WebCore::SVGRootInlineBox::buildLayoutInformationForTextBox):
+ (WebCore::SVGRootInlineBox::buildTextChunks):
+ * rendering/style/SVGRenderStyle.cpp:
+ (WebCore::SVGRenderStyle::cssPrimitiveToLength):
+ * svg/SVGFont.cpp:
+ (WebCore::SVGTextRunWalker::walk):
+ (WebCore::floatWidthOfSubStringUsingSVGFont):
+ (WebCore::Font::drawTextUsingSVGFont):
+ * svg/SVGTextContentElement.cpp:
+ (WebCore::findInlineTextBoxInTextChunks):
+ * svg/graphics/SVGPaintServer.cpp:
+ (WebCore::SVGPaintServer::fillPaintServer):
+ (WebCore::SVGPaintServer::strokePaintServer):
+
+2009-02-11 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/3541409> - Further FrameLoader and page cache cleanup
+
+ * history/CachedFrame.cpp:
+ (WebCore::CachedFrame::restore): Moved updatePlatformScriptObjects() here.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::commitProvisionalLoad): Rolled opened() into this method. This method was
+ the only caller and - in the future - will benefit from doing parts of opened()'s work differently.
+ (WebCore::FrameLoader::open): Split off per-frame logic into open(CachedFrame&) method.
+ (WebCore::FrameLoader::closeAndRemoveChild): Added. Do the non-tree related cleanup that
+ FrameTree::removeChild() used to do.
+ (WebCore::FrameLoader::detachFromParent): Call ::closeAndRemoveChild() instead.
+ (WebCore::FrameLoader::cachePageForHistoryItem): Perform the "can cache page" check here.
+ * loader/FrameLoader.h:
+
+ * page/FrameTree.cpp:
+ (WebCore::FrameTree::removeChild): Just remove the Frame from the tree. Closing it and other
+ cleanup is the responsibility of the FrameLoader.
+ * page/FrameTree.h:
+ (WebCore::FrameTree::detachFromParent): Added to just clear a Frame's parent pointer
+
+2009-02-11 Scott Violet <sky@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23882
+ GraphicsContextSkia draws round rects as solid rects
+
+ Fixes two bugs in Skia's GraphicsContext::fillRoundedRect:
+ . fillRoundedRect had an extra call to fillRect, resulting in always
+ drawing a solid rectangle.
+ . if the total radius along a given axis is greater than the size of
+ the axis to draw, a solid rect should be drawn.
+
+ The layout tests LayoutTests/fast/css/shadow-multiple.html and
+ LayoutTests/fast/box-shadow/basic-shadows.html cover this.
+
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::fillRoundedRect):
+
+2009-02-11 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Bug 23536: Auto-generate HTMLElementFactory
+
+ Remove the HTMLElementFactory files. Farewell.
+
+ * html/HTMLElementFactory.cpp: Removed.
+ * html/HTMLElementFactory.h: Removed.
+
+2009-02-11 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Bug 23536: Auto-generate HTMLElementFactory
+
+ Make the platform auto-generate the HTMLElementFactory.
+
+ * DerivedSources.make:
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * webcore-base.bkl:
+
+2009-02-11 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Remove unneeded ASSERTS.
+
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::width):
+ (WebCore::RenderBox::height):
+ (WebCore::RenderBox::size):
+ (WebCore::RenderBox::frameRect):
+
+2009-02-11 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ Add function to RenderStyle to ask whether a background image has been specified.
+
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::hasBackgroundImage):
+
+2009-02-11 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23548
+
+ When opacity or transform change on an object which has a compositing layer,
+ avoid repainting the layer.
+
+ Added a new StyleDifference value, StyleDifferenceRecompositeLayer, which indicates
+ that the only thing styleChanged() has to do is to update composited properties of
+ the layer. RenderStyle::diff() now has an out param for a bitmask of "context sensitive"
+ properties, currently for opacity and transform. When one of these changes, we need
+ to see if we have a compositing layer before we decide whether to layout/repaint,
+ or just update the composited layer, via adjustStyleDifference().
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::adjustStyleDifference):
+ (WebCore::RenderObject::setStyle):
+ (WebCore::RenderObject::styleDidChange):
+ * rendering/RenderObject.h:
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::diff):
+ * rendering/style/RenderStyle.h:
+ * rendering/style/RenderStyleConstants.h:
+ (WebCore::):
+
+2009-02-11 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6562920> Pasted text should be normalized to NFC
+
+ Testing requires putting non-HTML content in pasteboard, so it cannot be done with WebKit alone.
+
+ * platform/mac/PasteboardMac.mm: (WebCore::Pasteboard::plainText): Route the text through
+ -[NSString precomposedStringWithCanonicalMapping].
+
+2009-02-10 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23883
+
+ Added new TransformOperation subclasses and methods to existing ones
+ to support 3D.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/graphics/transforms/IdentityTransformOperation.h:
+ (WebCore::IdentityTransformOperation::isAffine):
+ * platform/graphics/transforms/Matrix3DTransformOperation.cpp: Added.
+ (WebCore::Matrix3DTransformOperation::blend):
+ * platform/graphics/transforms/Matrix3DTransformOperation.h: Added.
+ (WebCore::Matrix3DTransformOperation::create):
+ (WebCore::Matrix3DTransformOperation::isIdentity):
+ (WebCore::Matrix3DTransformOperation::isAffine):
+ (WebCore::Matrix3DTransformOperation::getOperationType):
+ (WebCore::Matrix3DTransformOperation::isSameType):
+ (WebCore::Matrix3DTransformOperation::operator==):
+ (WebCore::Matrix3DTransformOperation::apply):
+ (WebCore::Matrix3DTransformOperation::Matrix3DTransformOperation):
+ * platform/graphics/transforms/MatrixTransformOperation.h:
+ (WebCore::MatrixTransformOperation::isAffine):
+ (WebCore::MatrixTransformOperation::apply):
+ * platform/graphics/transforms/PerspectiveTransformOperation.cpp: Added.
+ (WebCore::PerspectiveTransformOperation::blend):
+ * platform/graphics/transforms/PerspectiveTransformOperation.h: Added.
+ (WebCore::PerspectiveTransformOperation::create):
+ (WebCore::PerspectiveTransformOperation::isIdentity):
+ (WebCore::PerspectiveTransformOperation::isAffine):
+ (WebCore::PerspectiveTransformOperation::getOperationType):
+ (WebCore::PerspectiveTransformOperation::isSameType):
+ (WebCore::PerspectiveTransformOperation::operator==):
+ (WebCore::PerspectiveTransformOperation::apply):
+ (WebCore::PerspectiveTransformOperation::PerspectiveTransformOperation):
+ * platform/graphics/transforms/RotateTransformOperation.cpp:
+ (WebCore::RotateTransformOperation::blend):
+ * platform/graphics/transforms/RotateTransformOperation.h:
+ (WebCore::RotateTransformOperation::create):
+ (WebCore::RotateTransformOperation::angle):
+ (WebCore::RotateTransformOperation::isAffine):
+ (WebCore::RotateTransformOperation::operator==):
+ (WebCore::RotateTransformOperation::apply):
+ (WebCore::RotateTransformOperation::RotateTransformOperation):
+ * platform/graphics/transforms/ScaleTransformOperation.cpp:
+ (WebCore::ScaleTransformOperation::blend):
+ * platform/graphics/transforms/ScaleTransformOperation.h:
+ (WebCore::ScaleTransformOperation::create):
+ (WebCore::ScaleTransformOperation::z):
+ (WebCore::ScaleTransformOperation::isIdentity):
+ (WebCore::ScaleTransformOperation::isAffine):
+ (WebCore::ScaleTransformOperation::operator==):
+ (WebCore::ScaleTransformOperation::apply):
+ (WebCore::ScaleTransformOperation::ScaleTransformOperation):
+ * platform/graphics/transforms/SkewTransformOperation.h:
+ (WebCore::SkewTransformOperation::isAffine):
+ * platform/graphics/transforms/TransformOperation.h:
+ (WebCore::TransformOperation::):
+ (WebCore::TransformOperation::is3DOperation):
+ * platform/graphics/transforms/TransformOperations.h:
+ (WebCore::TransformOperations::isAffine):
+ (WebCore::TransformOperations::has3DOperation):
+ * platform/graphics/transforms/TranslateTransformOperation.cpp:
+ (WebCore::TranslateTransformOperation::blend):
+ * platform/graphics/transforms/TranslateTransformOperation.h:
+ (WebCore::TranslateTransformOperation::create):
+ (WebCore::TranslateTransformOperation::z):
+ (WebCore::TranslateTransformOperation::isIdentity):
+ (WebCore::TranslateTransformOperation::isAffine):
+ (WebCore::TranslateTransformOperation::operator==):
+ (WebCore::TranslateTransformOperation::apply):
+ (WebCore::TranslateTransformOperation::TranslateTransformOperation):
+
+2009-02-11 David Hyatt <hyatt@apple.com>
+
+ Move createAnonymousBlock() to RenderBlock. Since anonymous blocks are always parented to some other block,
+ we can move this function to RenderBlock. Fix a couple of call sites as a result of this restriction.
+
+ Reviewed by Simon Fraser
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::createAnonymousBlock):
+ * rendering/RenderBlock.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::childBecameNonInline):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::handleDynamicFloatPositionChange):
+ * rendering/RenderObject.h:
+
+2009-02-11 David Hyatt <hyatt@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=23895
+
+ Remove two complete nonsense lines that I accidentally added from a cut and paste error. This
+ restores the original logic.
+
+ Reviewed by Simon Fraser
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
+
+2009-02-11 David Hyatt <hyatt@apple.com>
+
+ Rename getBaselineOfFirstLineBox to firstLineBoxBaseline. Rename getBaselineOfLastLineBox to
+ lastLineBoxBaseline. Remove the functions from RenderObject and add them to RenderBox instead.
+
+ Reviewed by Eric Seidel
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::baselinePosition):
+ (WebCore::RenderBlock::firstLineBoxBaseline):
+ (WebCore::RenderBlock::lastLineBoxBaseline):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::firstLineBoxBaseline):
+ (WebCore::RenderBox::lastLineBoxBaseline):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutHorizontalBox):
+ * rendering/RenderObject.h:
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::firstLineBoxBaseline):
+ * rendering/RenderTable.h:
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::baselinePosition):
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::firstLineBoxBaseline):
+ * rendering/RenderTableSection.h:
+
+2009-02-11 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser
+
+ https://bugs.webkit.org/show_bug.cgi?id=23877
+ Allow port to disable progress events from <video> and <audio> elements
+
+ * html/HTMLMediaElement.cpp: Initialize m_sendProgressEvents.
+ (WebCore::HTMLMediaElement::HTMLMediaElement): Don't post progress events if m_sendProgressEvents is false.
+ (WebCore::HTMLMediaElement::initAndDispatchProgressEvent): Ditto.
+ (WebCore::HTMLMediaElement::load): Ditto.
+ * html/HTMLMediaElement.h: Add m_sendProgressEvents
+
+2009-02-11 Adam Roben <aroben@apple.com>
+
+ Windows build fix
+
+ * DerivedSources.cpp: Removed SVGElementFactory.cpp, since including
+ it leads to ambiguities for symbols like "aTag", which exist in both
+ the HTMLNames and SVGNames namespaces.
+
+ * WebCore.vcproj/WebCore.vcproj: Added SVGElementFactory.cpp to the
+ project directly. VS also decided to reformat this file a little bit.
+
+2009-02-10 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Bug 23536: Auto-generate HTMLElementFactory
+
+ Those are the last auto-generation bits needed to have a working generated HTMLElementFactory:
+
+ - Added a new option mapToTagName that enables a tag to use another's options and tagName (<image>
+ uses imgTag for example) and wired the code generation to be consistent with the current factory.
+
+ - Disabled dashboard compatibility check for HTMLElementFactory as it would make at least one test case fail.
+
+ - Pass the QualifiedName down to the Element constructor for shared constructors to make the generated code as
+ close as possible to the current one. We will pass the QualifiedName for all Element in a forthcoming patch.
+
+ * dom/make_names.pl: Did all the above points and tweaked the code generation to match the current HTMLElementFactory
+ as closely as possible.
+
+ * html/HTMLElementFactory.cpp:
+ (WebCore::quoteConstructor):
+ * html/HTMLQuoteElement.cpp:
+ (WebCore::HTMLQuoteElement::HTMLQuoteElement): Moved setUsesBeforeAfterRules to HTMLQuoteElement' constructor because some
+ part of the code creates elements without using the HTMLElementFactory. Also added a FIXME as it is not the right place.
+
+ * html/HTMLTagNames.in: Corrected <image> parameters.
+
+2009-02-10 David Hyatt <hyatt@apple.com>
+
+ Fix for pixel test regression in fast/text. Make sure not to add in
+ the borderTop and paddingTop of the block to the baseline when painting
+ strict mode text decorations.
+
+ Reviewed by Mark Rowe
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::paintTextDecorations):
+ * rendering/InlineFlowBox.h:
+
+2009-02-10 Jon Honeycutt <jhoneycutt@apple.com>
+
+ Windows build fix after r40837.
+
+ Not reviewed.
+
+ * DerivedSources.cpp:
+
+2009-02-10 Jon Honeycutt <jhoneycutt@apple.com>
+
+ <rdar://6349412> REGRESSION(r37204): Page is not repainted during and
+ after pan scrolling
+
+ Reviewed by Steve Falkenburg.
+
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::scrollContents): Don't repaint the pan scroll
+ icon rect immediately; we will paint after the view has been scrolled.
+
+2009-02-10 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Adele Peterson.
+
+ <rdar://problem/6156755> onMouseOver events do not fire properly for cross frame drag and drop
+
+ This problem was caused by incorrectly ignoring whether or not the
+ default behaviour of the mousedown event was suppressed. If a
+ mousedown handler in a frame prevents default handling then the
+ subsequent mousemove events fired for the drag should not be
+ captured by that frame, should the mouse move out of its bounds.
+
+ Test: fast/events/mouse-drag-from-frame.html
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::EventHandler):
+ (WebCore::EventHandler::clear):
+ (WebCore::EventHandler::handleMouseReleaseEvent):
+ Reset new m_capturesDragging flag
+
+ (WebCore::EventHandler::handleMousePressEvent):
+ Respect the m_capturesDragging flag when we propagate
+ a mousedown event to a subframe.
+
+ * page/EventHandler.h:
+ (WebCore::EventHandler::capturesDragging):
+
+2009-02-10 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fixes for recent changes to TransformationMatrix and DOMElement.
+
+ * WebCoreSources.bkl:
+ * dom/Element.cpp:
+ * platform/graphics/transforms/TransformationMatrix.h:
+ * platform/graphics/wx/TransformationMatrixWx.cpp:
+ (WebCore::TransformationMatrix::operator wxGraphicsMatrix):
+
+2009-02-10 David Hyatt <hyatt@apple.com>
+
+ Some renames on line boxes. xPos()/yPos() -> x()/y(). setXPos()/setYPos() -> setX()/setY(). m_object/object() -> m_renderer/renderer(). textObject() -> textRenderer().
+
+ Reviewed by Sam Weinig
+
+ * dom/Position.cpp:
+ (WebCore::Position::upstream):
+ (WebCore::Position::downstream):
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::leftVisuallyDistinctCandidate):
+ (WebCore::VisiblePosition::rightVisuallyDistinctCandidate):
+ (WebCore::VisiblePosition::localCaretRect):
+ * editing/visible_units.cpp:
+ (WebCore::startPositionForLine):
+ (WebCore::endPositionForLine):
+ (WebCore::previousLinePosition):
+ (WebCore::nextLinePosition):
+ * rendering/EllipsisBox.cpp:
+ (WebCore::EllipsisBox::paint):
+ (WebCore::EllipsisBox::nodeAtPoint):
+ * rendering/InlineBox.cpp:
+ (WebCore::InlineBox::showTreeForThis):
+ (WebCore::InlineBox::height):
+ (WebCore::InlineBox::caretMinOffset):
+ (WebCore::InlineBox::caretMaxOffset):
+ (WebCore::InlineBox::deleteLine):
+ (WebCore::InlineBox::extractLine):
+ (WebCore::InlineBox::attachLine):
+ (WebCore::InlineBox::adjustPosition):
+ (WebCore::InlineBox::paint):
+ (WebCore::InlineBox::nodeAtPoint):
+ (WebCore::InlineBox::selectionState):
+ (WebCore::InlineBox::canAccommodateEllipsis):
+ * rendering/InlineBox.h:
+ (WebCore::InlineBox::InlineBox):
+ (WebCore::InlineBox::renderer):
+ (WebCore::InlineBox::setX):
+ (WebCore::InlineBox::x):
+ (WebCore::InlineBox::setY):
+ (WebCore::InlineBox::y):
+ (WebCore::InlineBox::topOverflow):
+ (WebCore::InlineBox::bottomOverflow):
+ (WebCore::InlineBox::leftOverflow):
+ (WebCore::InlineBox::rightOverflow):
+ (WebCore::InlineBox::visibleToHitTesting):
+ (WebCore::InlineBox::boxModelObject):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::height):
+ (WebCore::InlineFlowBox::addToLine):
+ (WebCore::InlineFlowBox::removeLineBoxFromRenderObject):
+ (WebCore::InlineFlowBox::extractLineBoxFromRenderObject):
+ (WebCore::InlineFlowBox::attachLineBoxToRenderObject):
+ (WebCore::InlineFlowBox::rendererLineBoxes):
+ (WebCore::InlineFlowBox::onEndChain):
+ (WebCore::InlineFlowBox::determineSpacingForFlowBoxes):
+ (WebCore::InlineFlowBox::placeBoxesHorizontally):
+ (WebCore::InlineFlowBox::verticallyAlignBoxes):
+ (WebCore::InlineFlowBox::adjustMaxAscentAndDescent):
+ (WebCore::verticalPositionForBox):
+ (WebCore::InlineFlowBox::computeLogicalBoxHeights):
+ (WebCore::InlineFlowBox::placeBoxesVertically):
+ (WebCore::InlineFlowBox::nodeAtPoint):
+ (WebCore::InlineFlowBox::paint):
+ (WebCore::InlineFlowBox::paintFillLayer):
+ (WebCore::InlineFlowBox::paintBoxShadow):
+ (WebCore::InlineFlowBox::paintBoxDecorations):
+ (WebCore::InlineFlowBox::paintMask):
+ (WebCore::InlineFlowBox::paintTextDecorations):
+ * rendering/InlineFlowBox.h:
+ (WebCore::InlineFlowBox::borderLeft):
+ (WebCore::InlineFlowBox::borderRight):
+ (WebCore::InlineFlowBox::borderTop):
+ (WebCore::InlineFlowBox::borderBottom):
+ (WebCore::InlineFlowBox::baseline):
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::height):
+ (WebCore::InlineTextBox::selectionState):
+ (WebCore::InlineTextBox::selectionRect):
+ (WebCore::InlineTextBox::deleteLine):
+ (WebCore::InlineTextBox::extractLine):
+ (WebCore::InlineTextBox::attachLine):
+ (WebCore::InlineTextBox::placeEllipsisBox):
+ (WebCore::InlineTextBox::isLineBreak):
+ (WebCore::InlineTextBox::nodeAtPoint):
+ (WebCore::InlineTextBox::paint):
+ (WebCore::InlineTextBox::selectionStartEnd):
+ (WebCore::InlineTextBox::paintSelection):
+ (WebCore::InlineTextBox::paintCompositionBackground):
+ (WebCore::InlineTextBox::paintCustomHighlight):
+ (WebCore::InlineTextBox::paintDecoration):
+ (WebCore::InlineTextBox::paintSpellingOrGrammarMarker):
+ (WebCore::InlineTextBox::paintTextMatchMarker):
+ (WebCore::InlineTextBox::paintDocumentMarkers):
+ (WebCore::InlineTextBox::paintCompositionUnderline):
+ (WebCore::InlineTextBox::textPos):
+ (WebCore::InlineTextBox::offsetForPosition):
+ (WebCore::InlineTextBox::positionForOffset):
+ * rendering/InlineTextBox.h:
+ (WebCore::InlineTextBox::textRenderer):
+ * rendering/ListMarkerBox.cpp:
+ (WebCore::ListMarkerBox::isText):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paintEllipsisBoxes):
+ (WebCore::RenderBlock::lowestPosition):
+ (WebCore::RenderBlock::rightmostPosition):
+ (WebCore::RenderBlock::leftmostPosition):
+ (WebCore::RenderBlock::positionForBox):
+ (WebCore::RenderBlock::positionForCoordinates):
+ (WebCore::RenderBlock::getBaselineOfFirstLineBox):
+ (WebCore::RenderBlock::getBaselineOfLastLineBox):
+ (WebCore::RenderBlock::adjustForBorderFit):
+ (WebCore::RenderBlock::addFocusRingRects):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::paintCustomHighlight):
+ (WebCore::RenderBox::position):
+ (WebCore::RenderBox::containingBlockWidthForPositioned):
+ (WebCore::RenderBox::calcAbsoluteHorizontalValues):
+ (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutVerticalBox):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::absoluteRects):
+ (WebCore::RenderInline::absoluteQuads):
+ (WebCore::RenderInline::offsetLeft):
+ (WebCore::RenderInline::offsetTop):
+ (WebCore::RenderInline::linesBoundingBox):
+ (WebCore::RenderInline::relativePositionedInlineOffset):
+ (WebCore::RenderInline::addFocusRingRects):
+ (WebCore::RenderInline::paintOutline):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::localBoundingBox):
+ * rendering/RenderSVGTSpan.cpp:
+ (WebCore::RenderSVGTSpan::absoluteRects):
+ (WebCore::RenderSVGTSpan::absoluteQuads):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::absoluteRects):
+ (WebCore::RenderSVGText::absoluteQuads):
+ (WebCore::RenderSVGText::relativeBBox):
+ * rendering/RenderSVGTextPath.cpp:
+ (WebCore::RenderSVGTextPath::absoluteRects):
+ (WebCore::RenderSVGTextPath::absoluteQuads):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::absoluteRects):
+ (WebCore::RenderText::absoluteRectsForRange):
+ (WebCore::RenderText::absoluteQuads):
+ (WebCore::RenderText::absoluteQuadsForRange):
+ (WebCore::RenderText::localCaretRect):
+ (WebCore::RenderText::linesBoundingBox):
+ * rendering/RootInlineBox.cpp:
+ (WebCore::RootInlineBox::height):
+ (WebCore::RootInlineBox::clearTruncation):
+ (WebCore::RootInlineBox::placeEllipsis):
+ (WebCore::RootInlineBox::paintEllipsisBox):
+ (WebCore::RootInlineBox::addHighlightOverflow):
+ (WebCore::RootInlineBox::paintCustomHighlight):
+ (WebCore::RootInlineBox::paint):
+ (WebCore::RootInlineBox::nodeAtPoint):
+ (WebCore::RootInlineBox::childRemoved):
+ (WebCore::RootInlineBox::fillLineSelectionGap):
+ (WebCore::RootInlineBox::block):
+ (WebCore::isEditableLeaf):
+ (WebCore::RootInlineBox::closestLeafChildForXPos):
+ (WebCore::RootInlineBox::setVerticalOverflowPositions):
+ * rendering/RootInlineBox.h:
+ (WebCore::RootInlineBox::bottomOverflow):
+ (WebCore::RootInlineBox::floats):
+ (WebCore::RootInlineBox::setHorizontalOverflowPositions):
+ (WebCore::RootInlineBox::setVerticalSelectionPositions):
+ * rendering/SVGCharacterLayoutInfo.cpp:
+ (WebCore::SVGCharacterLayoutInfo::addLayoutInformation):
+ * rendering/SVGInlineTextBox.cpp:
+ (WebCore::SVGInlineTextBox::calculateGlyphWidth):
+ (WebCore::SVGInlineTextBoxClosestCharacterToPositionWalker::chunkPortionCallback):
+ (WebCore::SVGInlineTextBoxSelectionRectWalker::chunkPortionCallback):
+ (WebCore::SVGInlineTextBox::svgCharacterHitsPosition):
+ (WebCore::SVGInlineTextBox::nodeAtPoint):
+ (WebCore::SVGInlineTextBox::paintCharacters):
+ (WebCore::SVGInlineTextBox::paintSelection):
+ (WebCore::SVGInlineTextBox::paintDecoration):
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::writeSVGInlineTextBox):
+ * rendering/SVGRootInlineBox.cpp:
+ (WebCore::SVGRootInlineBoxPaintWalker::SVGRootInlineBoxPaintWalker):
+ (WebCore::SVGRootInlineBoxPaintWalker::chunkStartCallback):
+ (WebCore::SVGRootInlineBoxPaintWalker::chunkEndCallback):
+ (WebCore::SVGRootInlineBoxPaintWalker::chunkSetupFillCallback):
+ (WebCore::SVGRootInlineBoxPaintWalker::chunkSetupStrokeCallback):
+ (WebCore::SVGRootInlineBoxPaintWalker::chunkPortionCallback):
+ (WebCore::SVGRootInlineBox::paint):
+ (WebCore::cummulatedWidthOfInlineBoxCharacterRange):
+ (WebCore::cummulatedHeightOfInlineBoxCharacterRange):
+ (WebCore::svgTextRunForInlineTextBox):
+ (WebCore::cummulatedWidthOrHeightOfTextChunk):
+ (WebCore::applyTextAnchorToTextChunk):
+ (WebCore::SVGRootInlineBox::buildLayoutInformation):
+ (WebCore::SVGRootInlineBox::layoutInlineBoxes):
+ (WebCore::SVGRootInlineBox::buildLayoutInformationForTextBox):
+ (WebCore::SVGRootInlineBox::buildTextChunks):
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::constructLine):
+ (WebCore::RenderBlock::computeVerticalPositionsForLine):
+ (WebCore::RenderBlock::layoutInlineChildren):
+ (WebCore::RenderBlock::checkLinesForTextOverflow):
+ * svg/SVGTextContentElement.cpp:
+ (WebCore::cumulativeCharacterRangeLength):
+ (WebCore::SVGInlineTextBoxQueryWalker::chunkPortionCallback):
+ (WebCore::findInlineTextBoxInTextChunks):
+
+2009-02-10 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ Clean up "fallbackAnimating" logic in AnimationBase. This flag indicates
+ that animation of an accelerated property must run in software for some reason.
+
+ Also remove use of private headers in GraphicsLayerCA related to a case
+ where we may have to fall back on software animation of transform.
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::AnimationBase::blendProperties):
+ * page/animation/AnimationBase.h:
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::animate):
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::animate):
+ * platform/graphics/mac/GraphicsLayerCA.h:
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (WebCore::getValueFunctionNameForTransformOperation):
+ (WebCore::caValueFunctionSupported):
+ (WebCore::GraphicsLayerCA::setBackgroundColor):
+ (WebCore::GraphicsLayerCA::setOpacity):
+ (WebCore::GraphicsLayerCA::animateTransform):
+ (WebCore::GraphicsLayerCA::animateFloat):
+ (WebCore::GraphicsLayerCA::setBasicAnimation):
+ (WebCore::GraphicsLayerCA::setKeyframeAnimation):
+
+2009-02-10 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ Move enclosingCompositingLayer() from RenderObject to RenderLayer, since it
+ relates to the RenderLayer z-order/overflow structure, rather than the render tree
+ parent chain. Add a convenience method, ancestorCompositingLayer(), which finds
+ the enclosing layer excluding self.
+
+ Fix enclosingCompositingLayer() to correctly look at stacking context and overflow
+ lists.
+
+ Check for documentBeingDestroyed() in a few places to avoid work on document
+ teardown.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::enclosingCompositingLayer):
+ (WebCore::RenderLayer::setParent):
+ (WebCore::RenderLayer::dirtyZOrderLists):
+ (WebCore::RenderLayer::dirtyOverflowList):
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::ancestorCompositingLayer):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::updateLayerCompositingState):
+ (WebCore::RenderLayerCompositor::calculateCompositedBounds):
+ (WebCore::RenderLayerCompositor::layerWillBeRemoved):
+ (WebCore::RenderLayerCompositor::clippedByAncestor):
+ * rendering/RenderLayerCompositor.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::containerForRepaint):
+ * rendering/RenderObject.h:
+
+2009-02-10 David Hyatt <hyatt@apple.com>
+
+ Rename xPos() and yPos() on RenderLayer to x() and y() to match RenderBox. Rename setPos to setLocation.
+
+ Reviewed by Simon Fraser
+
+ * dom/MouseRelatedEvent.cpp:
+ (WebCore::MouseRelatedEvent::receivedTarget):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPosition):
+ (WebCore::RenderLayer::convertToLayerCoords):
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::x):
+ (WebCore::RenderLayer::y):
+ (WebCore::RenderLayer::setLocation):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::write):
+ (WebCore::externalRepresentation):
+
+2009-02-10 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23879
+ Add missing PLATFORM(SKIA) changes to TransformationMatrix.h
+
+ * platform/graphics/transforms/TransformationMatrix.h:
+
+2009-02-10 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=15897
+ Please implement getBoundingClientRect and getClientRects
+ <rdar://problem/6139669>
+
+ Cursory implementation of Element.getBoundingClientRect and
+ Element.getClientRects. Adds necessary infrastructure classes
+ ClientRect and ClientRectList.
+
+ Tests: fast/dom/getBoundingClientRect.html
+ fast/dom/getClientRects.html
+
+ * DerivedSources.make:
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * dom/ClientRect.cpp: Added.
+ (WebCore::ClientRect::ClientRect):
+ * dom/ClientRect.h: Added.
+ (WebCore::ClientRect::create):
+ (WebCore::ClientRect::top):
+ (WebCore::ClientRect::right):
+ (WebCore::ClientRect::bottom):
+ (WebCore::ClientRect::left):
+ (WebCore::ClientRect::width):
+ (WebCore::ClientRect::height):
+ * dom/ClientRect.idl: Added.
+ * dom/ClientRectList.cpp: Added.
+ (WebCore::ClientRectList::ClientRectList):
+ (WebCore::ClientRectList::~ClientRectList):
+ (WebCore::ClientRectList::length):
+ (WebCore::ClientRectList::item):
+ * dom/ClientRectList.h: Added.
+ (WebCore::ClientRectList::create):
+ * dom/ClientRectList.idl: Added.
+ * dom/Element.cpp:
+ (WebCore::Element::getClientRects):
+ (WebCore::Element::getBoundingClientRect):
+ * dom/Element.h:
+ * dom/Element.idl:
+ * page/DOMWindow.idl:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::absoluteRects):
+ (WebCore::RenderInline::absoluteQuads):
+
+2009-02-10 David Hyatt <hyatt@apple.com>
+
+ Get rid of capsLockStateMayHaveChanged on RenderObject. It is only implemented by one class (text fields),
+ so devirtualize and just query at the single call site.
+
+ Reviewed by Eric Seidel
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::capsLockStateMayHaveChanged):
+ * rendering/RenderObject.h:
+ * rendering/RenderTextControlSingleLine.h:
+
+2009-02-10 David Hyatt <hyatt@apple.com>
+
+ Shrink the size of all RenderObjects (except for RenderInlines) by 4 bytes. This patch moves the cached vertical position member to RenderInlines,
+ since they were the only objects being queried across multiple lines.
+
+ Reviewed by Sam Weinig
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::verticalPositionForBox):
+ (WebCore::InlineFlowBox::computeLogicalBoxHeights):
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::verticalPosition):
+ * rendering/RenderBoxModelObject.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::RenderInline):
+ (WebCore::RenderInline::verticalPositionFromCache):
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::invalidateVerticalPosition):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::RenderObject):
+ * rendering/RenderObject.h:
+ * rendering/RenderText.cpp:
+ * rendering/RenderText.h:
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::layoutInlineChildren):
+
+2009-02-10 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23868
+ Fix code style issues: removed 80-col wrapping, incorrect include style, if statement body on same line.
+
+ * bindings/v8/custom/V8HTMLInputElementCustom.cpp:
+ * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:
+
+2009-02-10 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23868
+ Add HTMLInputElement and HTMLOptionsCollection V8 custom bindings.
+
+ * bindings/v8/custom/V8HTMLInputElementCustom.cpp: Added.
+ (WebCore::ACCESSOR_GETTER):
+ (WebCore::ACCESSOR_SETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp: Added.
+ (WebCore::ACCESSOR_GETTER):
+ (WebCore::ACCESSOR_SETTER):
+
+2009-02-10 Adam Roben <aroben@apple.com>
+
+ Fix Bug 23871: Assertion failure beneath WebCore::openFunc when
+ running http/tests/security/xss-DENIED-xsl-document-redirect.xml
+
+ <https://bugs.webkit.org/show_bug.cgi?id=23871>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Covered by existing tests.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::openFunc): Use the two-parameter KURL constructor so that
+ the string will be parsed. libxml2 gives us a UTF-8-encoded string
+ that needs to be parsed.
+
+2009-02-10 David Hyatt <hyatt@apple.com>
+
+ Shrink the size of all replaced elements (images, form controls, plugins) by 4 bytes by packing the
+ overflow boolean into the RenderObject base class.
+
+ Reviewed by Sam Weinig
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::RenderObject):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::replacedHasOverflow):
+ (WebCore::RenderObject::setReplacedHasOverflow):
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::RenderReplaced):
+ (WebCore::RenderReplaced::~RenderReplaced):
+ (WebCore::RenderReplaced::adjustOverflowForBoxShadow):
+ (WebCore::RenderReplaced::overflowHeight):
+ (WebCore::RenderReplaced::overflowWidth):
+ (WebCore::RenderReplaced::overflowLeft):
+ (WebCore::RenderReplaced::overflowTop):
+ (WebCore::RenderReplaced::overflowRect):
+ * rendering/RenderReplaced.h:
+
+2009-02-10 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23870
+ Make it possible for a port to require a user gesture for an <audio> or <video> element
+ to load a url.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_loadRestrictions.
+ (WebCore::HTMLMediaElement::attributeChanged): Only one attribute can change so put an "else" between tests.
+ (WebCore::HTMLMediaElement::load): Return INVALID_STATE_ERR if RequireUserGestureLoadRestriction is set
+ and we are not preocessing a user gesture.
+ (WebCore::HTMLMediaElement::mediaPlayerNetworkStateChanged): Remove unnecessary white space.
+ (WebCore::HTMLMediaElement::play): Ditto.
+ (WebCore::HTMLMediaElement::endScrubbing): Remove unnecessary braces added in r40789.
+ (WebCore::HTMLMediaElement::mediaPlayerTimeChanged): Cache currentTime() in a local instead of calling it
+ multiple times.
+ (WebCore::HTMLMediaElement::processingUserGesture): New.
+ * html/HTMLMediaElement.h:
+ (WebCore::HTMLMediaElement::): Define LoadRestrictions, add m_loadRestrictions.
+
+2009-02-10 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Sam Weinig.
+
+ Remove the SVG checks from FloatPoint3D as it is used
+ by TransformationMatrix.
+
+ * platform/graphics/FloatPoint3D.cpp:
+ * platform/graphics/FloatPoint3D.h:
+
+2009-02-10 David Hyatt <hyatt@apple.com>
+
+ Remove the m_baseline member variable from all line boxes, since it can easily be computed when needed and did not need to be cached.
+
+ Reviewed by Sam Weinig
+
+ * rendering/EllipsisBox.cpp:
+ (WebCore::EllipsisBox::paint):
+ (WebCore::EllipsisBox::nodeAtPoint):
+ * rendering/EllipsisBox.h:
+ (WebCore::EllipsisBox::EllipsisBox):
+ * rendering/InlineBox.h:
+ (WebCore::InlineBox::InlineBox):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::verticallyAlignBoxes):
+ (WebCore::InlineFlowBox::computeLogicalBoxHeights):
+ (WebCore::InlineFlowBox::placeBoxesVertically):
+ (WebCore::InlineFlowBox::paintTextDecorations):
+ * rendering/InlineFlowBox.h:
+ (WebCore::InlineFlowBox::marginBorderPaddingLeft):
+ (WebCore::InlineFlowBox::marginBorderPaddingRight):
+ (WebCore::InlineFlowBox::marginLeft):
+ (WebCore::InlineFlowBox::marginRight):
+ (WebCore::InlineFlowBox::borderLeft):
+ (WebCore::InlineFlowBox::borderRight):
+ (WebCore::InlineFlowBox::borderTop):
+ (WebCore::InlineFlowBox::borderBottom):
+ (WebCore::InlineFlowBox::paddingLeft):
+ (WebCore::InlineFlowBox::paddingRight):
+ (WebCore::InlineFlowBox::paddingTop):
+ (WebCore::InlineFlowBox::paddingBottom):
+ (WebCore::InlineFlowBox::includeLeftEdge):
+ (WebCore::InlineFlowBox::includeRightEdge):
+ (WebCore::InlineFlowBox::baseline):
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::paint):
+ (WebCore::InlineTextBox::paintDecoration):
+ (WebCore::InlineTextBox::paintSpellingOrGrammarMarker):
+ (WebCore::InlineTextBox::paintCompositionUnderline):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::getBaselineOfFirstLineBox):
+ (WebCore::RenderBlock::getBaselineOfLastLineBox):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::baselinePosition):
+ * rendering/RootInlineBox.cpp:
+ (WebCore::RootInlineBox::placeEllipsis):
+ * rendering/SVGInlineTextBox.cpp:
+ (WebCore::SVGInlineTextBox::paintDecoration):
+ * rendering/SVGRootInlineBox.cpp:
+ (WebCore::applyTextAnchorToTextChunk):
+ (WebCore::SVGRootInlineBox::layoutInlineBoxes):
+
+2009-02-10 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23867
+ Eliminate obsolete frame->document() checks
+
+ * page/FrameView.cpp: (WebCore::FrameView::paintContents): Apparently due to a typo
+ (document vs. !document), fillWithRed was always set to false, and other branches were
+ never taken. Removing the check for document restores debug-only red color filling.
+
+ * loader/FrameLoader.cpp: (WebCore::FrameLoader::begin): Only call dispatchWindowObjectAvailable()
+ after a document is created. A client can do anything in its delegate method, so we'd need
+ to have frame->document() checks otherwise. DumpRenderTree uses this delegate to add its
+ custom property, and it was crashing due to null document in JSDOMWindowBase::getOwnPropertySlot().
+
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::JSDOMWindowBase::getOwnPropertySlot):
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::addEventListener):
+ (WebCore::JSDOMWindow::removeEventListener):
+ * bindings/js/JSNavigatorCustom.cpp:
+ (WebCore::needsYouTubeQuirk):
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::execute):
+ * bindings/js/ScriptControllerMac.mm:
+ (WebCore::updateRenderingForBindings):
+ * dom/Document.cpp:
+ (WebCore::Document::initSecurityContext):
+ * editing/Editor.cpp:
+ (WebCore::Editor::deleteWithDirection):
+ (WebCore::Editor::dispatchCPPEvent):
+ (WebCore::Editor::applyStyle):
+ (WebCore::Editor::applyParagraphStyle):
+ * editing/EditorCommand.cpp:
+ (WebCore::Editor::Command::execute):
+ (WebCore::Editor::Command::isEnabled):
+ (WebCore::Editor::Command::state):
+ (WebCore::Editor::Command::value):
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::recomputeCaretRect):
+ (WebCore::SelectionController::selectFrameElementInParentIfFullySelected):
+ (WebCore::SelectionController::selectAll):
+ (WebCore::SelectionController::setFocused):
+ * inspector/InspectorController.cpp:
+ (WebCore::getResourceDocumentNode):
+ * inspector/JavaScriptDebugServer.cpp:
+ (WebCore::JavaScriptDebugServer::setJavaScriptPaused):
+ * loader/DocumentLoader.cpp:
+ (WebCore::canonicalizedTitle):
+ (WebCore::DocumentLoader::stopLoading):
+ (WebCore::DocumentLoader::isLoadingInAPISense):
+ (WebCore::DocumentLoader::subresource):
+ (WebCore::DocumentLoader::getSubresources):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::urlSelected):
+ (WebCore::FrameLoader::stop):
+ (WebCore::FrameLoader::iconURL):
+ (WebCore::FrameLoader::executeIfJavaScriptURL):
+ (WebCore::FrameLoader::clear):
+ (WebCore::FrameLoader::endIfNotLoadingMainResource):
+ (WebCore::FrameLoader::restoreDocumentState):
+ (WebCore::FrameLoader::gotoAnchor):
+ (WebCore::FrameLoader::loadDone):
+ (WebCore::FrameLoader::checkCompleted):
+ (WebCore::FrameLoader::checkCallImplicitClose):
+ (WebCore::FrameLoader::scheduleRefresh):
+ (WebCore::FrameLoader::outgoingOrigin):
+ (WebCore::FrameLoader::canCachePageContainingThisFrame):
+ (WebCore::FrameLoader::logCanCacheFrameDecision):
+ (WebCore::FrameLoader::updatePolicyBaseURL):
+ (WebCore::FrameLoader::setPolicyBaseURL):
+ (WebCore::FrameLoader::frameDetached):
+ (WebCore::FrameLoader::shouldScrollToAnchor):
+ (WebCore::FrameLoader::saveDocumentState):
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ (WebCore::LegacyWebArchive::create):
+ * loader/icon/IconFetcher.cpp:
+ (WebCore::IconFetcher::create):
+ * loader/icon/IconLoader.cpp:
+ (WebCore::IconLoader::startLoading):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::visiblePositionForPoint):
+ * page/Chrome.cpp:
+ (WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer):
+ (WebCore::PageGroupLoadDeferrer::~PageGroupLoadDeferrer):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::sessionStorage):
+ (WebCore::DOMWindow::alert):
+ (WebCore::DOMWindow::confirm):
+ (WebCore::DOMWindow::prompt):
+ (WebCore::DOMWindow::scrollX):
+ (WebCore::DOMWindow::scrollY):
+ (WebCore::DOMWindow::getMatchedCSSRules):
+ (WebCore::DOMWindow::openDatabase):
+ (WebCore::DOMWindow::scrollBy):
+ (WebCore::DOMWindow::scrollTo):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::allowDHTMLDrag):
+ (WebCore::EventHandler::scrollOverflow):
+ (WebCore::EventHandler::handleMousePressEvent):
+ (WebCore::EventHandler::handleMouseDoubleClickEvent):
+ (WebCore::EventHandler::handleMouseMoveEvent):
+ (WebCore::EventHandler::handleMouseReleaseEvent):
+ (WebCore::EventHandler::updateDragAndDrop):
+ (WebCore::EventHandler::handleWheelEvent):
+ (WebCore::EventHandler::sendContextMenuEvent):
+ (WebCore::EventHandler::capsLockStateMayHaveChanged):
+ (WebCore::EventHandler::sendResizeEvent):
+ (WebCore::EventHandler::sendScrollEvent):
+ * page/FocusController.cpp:
+ (WebCore::deepFocusableNode):
+ (WebCore::FocusController::advanceFocus):
+ * page/Frame.cpp:
+ (WebCore::Frame::setFocusedNodeIfNeeded):
+ (WebCore::Frame::shouldApplyTextZoom):
+ (WebCore::Frame::shouldApplyPageZoom):
+ (WebCore::Frame::setZoomFactor):
+ (WebCore::Frame::setPrinting):
+ (WebCore::Frame::reapplyStyles):
+ (WebCore::Frame::isContentEditable):
+ (WebCore::Frame::computeAndSetTypingStyle):
+ (WebCore::Frame::selectionComputedStyle):
+ (WebCore::Frame::applyEditingStyleToBodyElement):
+ (WebCore::Frame::removeEditingStyleFromBodyElement):
+ (WebCore::Frame::contentRenderer):
+ (WebCore::Frame::styleForSelectionStart):
+ (WebCore::Frame::setSelectionFromNone):
+ (WebCore::Frame::findString):
+ (WebCore::Frame::markAllMatchesForText):
+ (WebCore::Frame::setMarkedTextMatchesAreHighlighted):
+ (WebCore::Frame::documentTypeString):
+ (WebCore::Frame::shouldClose):
+ (WebCore::Frame::respondToChangedSelection):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::~FrameView):
+ (WebCore::FrameView::createScrollbar):
+ (WebCore::FrameView::layout):
+ (WebCore::FrameView::layoutTimerFired):
+ (WebCore::FrameView::scheduleRelayout):
+ (WebCore::FrameView::needsLayout):
+ (WebCore::FrameView::unscheduleRelayout):
+ (WebCore::FrameView::windowClipRect):
+ * page/Geolocation.cpp:
+ (WebCore::Geolocation::disconnectFrame):
+ * page/Page.cpp:
+ (WebCore::networkStateChanged):
+ (WebCore::Page::~Page):
+ (WebCore::Page::unmarkAllTextMatches):
+ (WebCore::Page::setMediaVolume):
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::updateRenderingDispatcherFired):
+ * page/mac/EventHandlerMac.mm:
+ (WebCore::EventHandler::currentKeyboardEvent):
+ (WebCore::EventHandler::needsKeyboardEventDisambiguationQuirks):
+ * page/mac/FrameMac.mm:
+ (WebCore::Frame::dashboardRegionsDictionary):
+ (WebCore::Frame::setUserStyleSheetLocation):
+ (WebCore::Frame::setUserStyleSheet):
+ * storage/LocalStorageArea.cpp:
+ (WebCore::LocalStorageArea::dispatchStorageEvent):
+ * storage/SessionStorageArea.cpp:
+ (WebCore::SessionStorageArea::dispatchStorageEvent):
+ * svg/graphics/SVGImage.cpp:
+ (WebCore::SVGImage::setContainerSize):
+ (WebCore::SVGImage::usesContainerSize):
+ (WebCore::SVGImage::size):
+ (WebCore::SVGImage::hasRelativeWidth):
+ (WebCore::SVGImage::hasRelativeHeight):
+ Removed frame->document() checks.
+
+2009-02-10 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Attempt to fix the Qt build after r40791.
+
+ * rendering/RenderSVGRoot.cpp:
+
+2009-02-10 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Minor code cleanup.
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::replaceChild):
+
+2009-02-10 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix Qt build following r40793.
+
+ * editing/qt/EditorQt.cpp:
+
+2009-02-10 Feng Qian <feng@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Fix crashes when accessing navigator object of a deleted frame.
+ https://bugs.webkit.org/show_bug.cgi?id=23626
+ A layout test is added: fast/dom/navigator-detached-no-crash.html
+
+ * page/Navigator.cpp:
+ (WebCore::Navigator::cookieEnabled):
+ (WebCore::Navigator::javaEnabled):
+
+2009-02-10 Sverrir Berg <sverrir@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23630
+ Add complex font rendering using Skia instead of Windows ScriptTextOut.
+ This adds support for enhanced webkit styles when drawing complex
+ glyphs.
+
+ * platform/graphics/chromium/FontChromiumWin.cpp:
+ (WebCore::Font::drawGlyphs):
+ (WebCore::Font::drawComplexText):
+ * platform/graphics/chromium/UniscribeHelper.cpp:
+ (WebCore::containsMissingGlyphs):
+ (WebCore::UniscribeHelper::draw):
+ (WebCore::UniscribeHelper::shape):
+ * platform/graphics/chromium/UniscribeHelper.h:
+ * platform/graphics/skia/SkiaFontWin.cpp:
+ (WebCore::windowsCanHandleTextDrawing):
+ (WebCore::skiaDrawText):
+ (WebCore::paintSkiaText):
+ * platform/graphics/skia/SkiaFontWin.h:
+
+2009-02-10 Darin Fisher <darin@chromium.org>
+
+ Revert r40797 as requested by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23809
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * dom/Document.idl:
+ * html/HTMLCanvasElement.idl:
+
+2009-02-09 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23855
+ Fix TransformationMatrixSkia.cpp and GraphicsContextSkia.cpp bustage
+
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::getCTM):
+ * platform/graphics/skia/TransformationMatrixSkia.cpp:
+ (WebCore::TransformationMatrix::operator SkMatrix):
+
+2009-02-09 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ - fix <rdar://problem/6568942> REGRESSION: Font rendering in Wikipedia input field is incorrect (default GDI text mode)
+
+ * platform/graphics/win/SimpleFontDataWin.cpp:
+ (WebCore::SimpleFontData::widthForGDIGlyph): Make sure that the DC is
+ in the advanced graphics mode before calling GetCharWidthI(), because
+ otherwise that function returns incorrect results for the default UI
+ font at a certain size.
+
+2009-02-09 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser
+
+ https://bugs.webkit.org/show_bug.cgi?id=23689
+
+ Added 3D functions to WebKitCSSMatrix. This depends on the 3D functions
+ added to TransformationMatrix in https://bugs.webkit.org/show_bug.cgi?id=6868
+
+ Test: transforms/3d/cssmatrix-3d-interface.xhtml
+
+ * css/WebKitCSSMatrix.cpp:
+ * css/WebKitCSSMatrix.h:
+ * css/WebKitCSSMatrix.idl:
+
+2009-02-09 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix <https://bugs.webkit.org/show_bug.cgi?id=23858>
+ Bug 23858: Crash when removing a HTMLSelectElement from the document from inside its focus event handler
+
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::menuListDefaultEventHandler): Don't store the renderer in a local variable
+ as it can be invalidated by any of the calls to focus() within the function. Instead, retrieve it and
+ null-check it when it is needed.
+
+2009-02-09 David Hyatt <hyatt@apple.com>
+
+ Remove the m_height member from InlineBox. This shaves 4 bytes off of all inline boxes. Unfortunately SVG
+ sets heights that are independent of the renderer or of the font, and so all SVG boxes have to retain m_height
+ member variables.
+
+ height() on InlineBox is now a virtual function that does a dynamic computation (including shrinking boxes
+ with no text children). For SVG boxes there is also a non-virtual setHeight function for updating the
+ m_height member variable like before.
+
+ Reviewed by Darin Adler
+
+ * rendering/EllipsisBox.cpp:
+ (WebCore::EllipsisBox::nodeAtPoint):
+ * rendering/EllipsisBox.h:
+ (WebCore::EllipsisBox::EllipsisBox):
+ * rendering/InlineBox.cpp:
+ (WebCore::InlineBox::height):
+ (WebCore::InlineBox::root):
+ * rendering/InlineBox.h:
+ (WebCore::InlineBox::InlineBox):
+ (WebCore::InlineBox::isInlineFlowBox):
+ (WebCore::InlineBox::isRootInlineBox):
+ (WebCore::InlineBox::topOverflow):
+ (WebCore::InlineBox::bottomOverflow):
+ (WebCore::InlineBox::leftOverflow):
+ (WebCore::InlineBox::rightOverflow):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::height):
+ (WebCore::InlineFlowBox::adjustMaxAscentAndDescent):
+ (WebCore::InlineFlowBox::computeLogicalBoxHeights):
+ (WebCore::InlineFlowBox::placeBoxesVertically):
+ (WebCore::InlineFlowBox::shrinkBoxesWithNoTextChildren):
+ (WebCore::InlineFlowBox::nodeAtPoint):
+ * rendering/InlineFlowBox.h:
+ (WebCore::InlineFlowBox::isInlineFlowBox):
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::height):
+ (WebCore::InlineTextBox::nodeAtPoint):
+ (WebCore::InlineTextBox::paintSpellingOrGrammarMarker):
+ (WebCore::InlineTextBox::paintCompositionUnderline):
+ * rendering/InlineTextBox.h:
+ * rendering/RootInlineBox.cpp:
+ (WebCore::RootInlineBox::height):
+ (WebCore::RootInlineBox::placeEllipsis):
+ (WebCore::RootInlineBox::setVerticalOverflowPositions):
+ * rendering/RootInlineBox.h:
+ (WebCore::RootInlineBox::isRootInlineBox):
+ (WebCore::RootInlineBox::topOverflow):
+ (WebCore::RootInlineBox::bottomOverflow):
+ (WebCore::RootInlineBox::leftOverflow):
+ (WebCore::RootInlineBox::rightOverflow):
+ (WebCore::RootInlineBox::selectionBottom):
+ (WebCore::RootInlineBox::Overflow::Overflow):
+ (WebCore::RootInlineBox::setVerticalSelectionPositions):
+ * rendering/SVGInlineFlowBox.h:
+ (WebCore::SVGInlineFlowBox::SVGInlineFlowBox):
+ (WebCore::SVGInlineFlowBox::height):
+ (WebCore::SVGInlineFlowBox::setHeight):
+ * rendering/SVGInlineTextBox.cpp:
+ (WebCore::SVGInlineTextBox::SVGInlineTextBox):
+ * rendering/SVGInlineTextBox.h:
+ (WebCore::SVGInlineTextBox::height):
+ (WebCore::SVGInlineTextBox::setHeight):
+ * rendering/SVGRootInlineBox.cpp:
+ (WebCore::SVGRootInlineBox::layoutInlineBoxes):
+ * rendering/SVGRootInlineBox.h:
+ (WebCore::SVGRootInlineBox::SVGRootInlineBox):
+ (WebCore::SVGRootInlineBox::height):
+ (WebCore::SVGRootInlineBox::setHeight):
+
+2009-02-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ Document our Selection DOM extensions
+ (in preparation for re-writing Selection to work with ranges)
+
+ * page/DOMSelection.cpp:
+ (WebCore::DOMSelection::type):
+ * page/DOMSelection.h:
+ * page/DOMSelection.idl:
+
+2009-02-09 Eric Seidel <eric@webkit.org>
+
+ Attempt to fix wx build
+
+ * WebCoreSources.bkl: change Selection to VisibleSelection
+
+2009-02-06 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23809
+ Return CanvasRenderingContext2D instead of DOMObject in IDL to avoid V8 #ifdefs
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * dom/Document.idl:
+ * html/HTMLCanvasElement.idl:
+
+2009-02-09 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Transform the gradient instead of the context for most platforms and
+ transform the context after CGContextReplacePathWithStrokedPath for CG.
+
+ REGRESSION: SVG gradient transformation/BoundingBox can cause ugly stroke thickness
+ https://bugs.webkit.org/show_bug.cgi?id=23547
+
+ * platform/graphics/Gradient.h:
+ (WebCore::Gradient::setGradientSpaceTransform):
+ (WebCore::Gradient::gradientSpaceTransform):
+ * platform/graphics/cairo/GradientCairo.cpp:
+ (WebCore::Gradient::platformGradient):
+ * platform/graphics/cg/GraphicsContextCG.cpp:
+ (WebCore::GraphicsContext::fillPath):
+ (WebCore::GraphicsContext::strokePath):
+ (WebCore::GraphicsContext::fillRect):
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContext::fillPath):
+ (WebCore::GraphicsContext::strokePath):
+ (WebCore::GraphicsContext::fillRect):
+ * platform/graphics/skia/GradientSkia.cpp:
+ (WebCore::Gradient::platformGradient):
+ * svg/graphics/SVGPaintServerGradient.cpp:
+ (WebCore::SVGPaintServerGradient::SVGPaintServerGradient):
+ (WebCore::clipToTextMask):
+ (WebCore::SVGPaintServerGradient::setup):
+ (WebCore::SVGPaintServerGradient::teardown):
+
+2009-02-09 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Fix the highlight when inspecting inline elements.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::drawHighlightForBox):
+ (WebCore::drawHighlightForLineBoxes):
+ (WebCore::InspectorController::drawNodeHighlight):
+
+2009-02-09 Eric Seidel <eric@webkit.org>
+
+ Fix the gtk build by adding VisibleSelection and removing Selection.
+
+ * GNUmakefile.am:
+
+2009-02-09 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Dave Hyatt.
+
+ Rename Selection to VisibleSelection to allow us to separate
+ the selections the user works with from the ones used by
+ the JS editing APIs.
+ https://bugs.webkit.org/show_bug.cgi?id=23852
+
+ No functional changes, thus no tests.
+
+ * WebCore.base.exp:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/Element.cpp:
+ (WebCore::Element::updateFocusAppearance):
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::updateStartEnd):
+ (WebCore::ApplyStyleCommand::surroundNodeRangeWithElement):
+ * editing/BreakBlockquoteCommand.cpp:
+ (WebCore::BreakBlockquoteCommand::doApply):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::inputText):
+ (WebCore::CompositeEditCommand::deleteSelection):
+ (WebCore::CompositeEditCommand::rebalanceWhitespace):
+ (WebCore::CompositeEditCommand::pushAnchorElementDown):
+ (WebCore::CompositeEditCommand::pushPartiallySelectedAnchorElementsDown):
+ (WebCore::CompositeEditCommand::moveParagraphs):
+ (WebCore::CompositeEditCommand::breakOutOfEmptyListItem):
+ (WebCore::CompositeEditCommand::breakOutOfEmptyMailBlockquotedParagraph):
+ * editing/CompositeEditCommand.h:
+ * editing/CreateLinkCommand.cpp:
+ (WebCore::CreateLinkCommand::doApply):
+ * editing/DeleteButtonController.cpp:
+ (WebCore::enclosingDeletableElement):
+ (WebCore::DeleteButtonController::respondToChangedSelection):
+ * editing/DeleteButtonController.h:
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::DeleteSelectionCommand):
+ (WebCore::DeleteSelectionCommand::clearTransientState):
+ (WebCore::DeleteSelectionCommand::doApply):
+ * editing/DeleteSelectionCommand.h:
+ (WebCore::DeleteSelectionCommand::create):
+ * editing/EditCommand.cpp:
+ (WebCore::EditCommand::setStartingSelection):
+ (WebCore::EditCommand::setEndingSelection):
+ * editing/EditCommand.h:
+ (WebCore::EditCommand::startingSelection):
+ (WebCore::EditCommand::endingSelection):
+ * editing/Editor.cpp:
+ (WebCore::Editor::selectionForCommand):
+ (WebCore::Editor::respondToChangedSelection):
+ (WebCore::Editor::respondToChangedContents):
+ (WebCore::Editor::applyStyle):
+ (WebCore::Editor::applyParagraphStyle):
+ (WebCore::Editor::appliedEditing):
+ (WebCore::Editor::unappliedEditing):
+ (WebCore::Editor::reappliedEditing):
+ (WebCore::Editor::insertTextWithoutSendingTextEvent):
+ (WebCore::Editor::selectComposition):
+ (WebCore::Editor::confirmComposition):
+ (WebCore::Editor::advanceToNextMisspelling):
+ (WebCore::Editor::markMisspellingsAfterTypingToPosition):
+ (WebCore::markMisspellingsOrBadGrammar):
+ (WebCore::Editor::markMisspellings):
+ (WebCore::Editor::markBadGrammar):
+ (WebCore::Editor::rangeForPoint):
+ (WebCore::Editor::transpose):
+ * editing/Editor.h:
+ * editing/EditorCommand.cpp:
+ (WebCore::expandSelectionToGranularity):
+ (WebCore::executeSwapWithMark):
+ (WebCore::enabledVisibleSelection):
+ (WebCore::enabledVisibleSelectionAndMark):
+ (WebCore::enableCaretInEditableText):
+ * editing/FormatBlockCommand.cpp:
+ (WebCore::FormatBlockCommand::modifyRange):
+ (WebCore::FormatBlockCommand::doApply):
+ * editing/IndentOutdentCommand.cpp:
+ (WebCore::IndentOutdentCommand::indentRegion):
+ (WebCore::IndentOutdentCommand::outdentRegion):
+ (WebCore::IndentOutdentCommand::doApply):
+ * editing/InsertLineBreakCommand.cpp:
+ (WebCore::InsertLineBreakCommand::doApply):
+ * editing/InsertListCommand.cpp:
+ (WebCore::InsertListCommand::modifyRange):
+ (WebCore::InsertListCommand::doApply):
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+ * editing/InsertTextCommand.cpp:
+ (WebCore::InsertTextCommand::performTrivialReplace):
+ (WebCore::InsertTextCommand::input):
+ * editing/ModifySelectionListLevel.cpp:
+ (WebCore::getStartEndListChildren):
+ (WebCore::canIncreaseListLevel):
+ (WebCore::canDecreaseListLevel):
+ * editing/MoveSelectionCommand.cpp:
+ (WebCore::MoveSelectionCommand::doApply):
+ * editing/RemoveFormatCommand.cpp:
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplacementFragment::ReplacementFragment):
+ (WebCore::ReplaceSelectionCommand::doApply):
+ (WebCore::ReplaceSelectionCommand::completeHTMLReplacement):
+ * editing/Selection.cpp: Removed.
+ * editing/Selection.h: Removed.
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::moveTo):
+ (WebCore::SelectionController::setSelection):
+ (WebCore::SelectionController::nodeWillBeRemoved):
+ (WebCore::SelectionController::clear):
+ (WebCore::SelectionController::setBase):
+ (WebCore::SelectionController::setExtent):
+ (WebCore::SelectionController::selectFrameElementInParentIfFullySelected):
+ (WebCore::SelectionController::selectAll):
+ (WebCore::SelectionController::setSelectedRange):
+ * editing/SelectionController.h:
+ (WebCore::SelectionController::selection):
+ (WebCore::SelectionController::selectionType):
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::insertText):
+ (WebCore::TypingCommand::deleteKeyPressed):
+ (WebCore::TypingCommand::forwardDeleteKeyPressed):
+ * editing/TypingCommand.h:
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::honorEditableBoundaryAtOrBefore):
+ (WebCore::VisiblePosition::honorEditableBoundaryAtOrAfter):
+ * editing/VisibleSelection.cpp: Added.
+ (WebCore::VisibleSelection::VisibleSelection):
+ (WebCore::VisibleSelection::selectionFromContentsOfNode):
+ (WebCore::VisibleSelection::setBase):
+ (WebCore::VisibleSelection::setExtent):
+ (WebCore::VisibleSelection::firstRange):
+ (WebCore::VisibleSelection::toNormalizedRange):
+ (WebCore::VisibleSelection::expandUsingGranularity):
+ (WebCore::makeSearchRange):
+ (WebCore::VisibleSelection::appendTrailingWhitespace):
+ (WebCore::VisibleSelection::setBaseAndExtentToDeepEquivalents):
+ (WebCore::VisibleSelection::setStartAndEndFromBaseAndExtentRespectingGranularity):
+ (WebCore::VisibleSelection::updateSelectionType):
+ (WebCore::VisibleSelection::validate):
+ (WebCore::VisibleSelection::setWithoutValidation):
+ (WebCore::VisibleSelection::adjustSelectionToAvoidCrossingEditingBoundaries):
+ (WebCore::VisibleSelection::isContentEditable):
+ (WebCore::VisibleSelection::isContentRichlyEditable):
+ (WebCore::VisibleSelection::rootEditableElement):
+ (WebCore::VisibleSelection::shadowTreeRootNode):
+ (WebCore::VisibleSelection::debugPosition):
+ (WebCore::VisibleSelection::formatForDebugger):
+ (WebCore::VisibleSelection::showTreeForThis):
+ (showTree):
+ * editing/VisibleSelection.h: Added.
+ (WebCore::VisibleSelection::):
+ (WebCore::VisibleSelection::selectionType):
+ (WebCore::VisibleSelection::setAffinity):
+ (WebCore::VisibleSelection::affinity):
+ (WebCore::VisibleSelection::base):
+ (WebCore::VisibleSelection::extent):
+ (WebCore::VisibleSelection::start):
+ (WebCore::VisibleSelection::end):
+ (WebCore::VisibleSelection::visibleStart):
+ (WebCore::VisibleSelection::visibleEnd):
+ (WebCore::VisibleSelection::isNone):
+ (WebCore::VisibleSelection::isCaret):
+ (WebCore::VisibleSelection::isRange):
+ (WebCore::VisibleSelection::isCaretOrRange):
+ (WebCore::VisibleSelection::isBaseFirst):
+ (WebCore::VisibleSelection::granularity):
+ (WebCore::operator==):
+ (WebCore::operator!=):
+ * editing/htmlediting.cpp:
+ (WebCore::selectionForParagraphIteration):
+ (WebCore::avoidIntersectionWithNode):
+ * editing/htmlediting.h:
+ * editing/markup.cpp:
+ (WebCore::createMarkup):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::selection):
+ * html/HTMLInputElement.h:
+ * html/HTMLTextAreaElement.cpp:
+ (WebCore::HTMLTextAreaElement::selection):
+ * html/HTMLTextAreaElement.h:
+ * page/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::selection):
+ (WebCore::AccessibilityObject::visiblePositionRangeForUnorderedPositions):
+ * page/AccessibilityObject.h:
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::selection):
+ (WebCore::AccessibilityRenderObject::setSelectedTextRange):
+ (WebCore::AccessibilityRenderObject::visiblePositionRangeForLine):
+ (WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange):
+ (WebCore::AccessibilityRenderObject::doAXRangeForLine):
+ * page/AccessibilityRenderObject.h:
+ * page/DOMSelection.cpp:
+ (WebCore::DOMSelection::anchorNode):
+ (WebCore::DOMSelection::anchorOffset):
+ (WebCore::DOMSelection::focusNode):
+ (WebCore::DOMSelection::focusOffset):
+ (WebCore::DOMSelection::collapseToEnd):
+ (WebCore::DOMSelection::collapseToStart):
+ (WebCore::DOMSelection::getRangeAt):
+ (WebCore::DOMSelection::addRange):
+ * page/DOMSelection.h:
+ * page/DragController.cpp:
+ (WebCore::DragController::tryDocumentDrag):
+ (WebCore::setSelectionToDragCaret):
+ (WebCore::DragController::concludeEditDrag):
+ (WebCore::prepareClipboardForImageDrag):
+ (WebCore::DragController::startDrag):
+ (WebCore::DragController::placeDragCaret):
+ * page/EditorClient.h:
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::selectClosestWordFromMouseEvent):
+ (WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent):
+ (WebCore::EventHandler::handleMousePressEventTripleClick):
+ (WebCore::EventHandler::handleMousePressEventSingleClick):
+ (WebCore::EventHandler::updateSelectionForMouseDrag):
+ (WebCore::EventHandler::handleMouseReleaseEvent):
+ * page/Frame.cpp:
+ (WebCore::Frame::mark):
+ (WebCore::Frame::setMark):
+ (WebCore::Frame::selectionLayoutChanged):
+ (WebCore::Frame::shouldChangeSelection):
+ (WebCore::Frame::shouldDeleteSelection):
+ (WebCore::Frame::revealSelection):
+ (WebCore::Frame::setSelectionFromNone):
+ (WebCore::Frame::findString):
+ (WebCore::Frame::respondToChangedSelection):
+ * page/Frame.h:
+ * page/Page.cpp:
+ (WebCore::Page::selection):
+ * page/Page.h:
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper textMarkerRangeForSelection]):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::fillInlineSelectionGaps):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::setSelectionRange):
+ (WebCore::RenderTextControl::selection):
+ * rendering/RenderTextControl.h:
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::writeSelection):
+ * rendering/RootInlineBox.cpp:
+ (WebCore::RootInlineBox::fillLineSelectionGap):
+ * svg/SVGTextContentElement.cpp:
+ (WebCore::SVGTextContentElement::selectSubString):
+
+2009-02-09 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23806
+ Fix a regression crash where an empty src value and a "text/html" type
+ on an EMBED element did not finish ResourceRequest initialization due to
+ an early return.
+
+ Test: fast/loader/empty-embed-src-attribute.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::addExtraFieldsToRequest):
+
+2009-02-09 Rob Buis <rwlbuis@gmail.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23816
+ Clean up RenderSVGRoot.cpp
+
+ Clean up RenderSVGRoot.cpp.
+
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::paint):
+ (WebCore::RenderSVGRoot::calcViewport):
+
+2009-02-09 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Antti Koivisto
+
+ https://bugs.webkit.org/show_bug.cgi?id=23737
+ Make it possible to control media element playback without knowing so many
+ internal implementation details.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::togglePlayState): New, toggle between playing and paused state.
+ (WebCore::HTMLMediaElement::beginScrubbing): New, pause as necessary for scrubbing mode.
+ (WebCore::HTMLMediaElement::endScrubbing): New, resume playback if paused for scrubbing mode.
+ * html/HTMLMediaElement.h:
+
+ (WebCore::HTMLMediaElement::hasVideo): New, added so clients don't need to access MediaPlayer directly.
+ * html/HTMLVideoElement.h:
+
+ (WebCore::HTMLVideoElement::hasVideo): New.
+
+ * rendering/MediaControlElements.cpp:
+ (WebCore::MediaControlPlayButtonElement::defaultEventHandler): Use new media element
+ togglePlayState method.
+ (WebCore::MediaControlTimelineElement::defaultEventHandler): Tell media element when scrubbing
+ begins and ends so it can deal with pausing logic. Don't call setCurrentTime unless the time
+ will change.
+
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::updateControls): Ask media element if it is able to play instead of including
+ internal logic here.
+ (WebCore::RenderMedia::updateControlVisibility): Ditto.
+
+2009-02-09 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Antti Koivisto
+
+ Change RenderPart and RenderPartObject constructors to take a Node*
+ instead of a HTMLFrameOwnerElement* since that is all then need.
+
+ * rendering/RenderPart.cpp:
+ (WebCore::RenderPart::RenderPart): take Node* instead of HTMLFrameOwnerElement*
+ * rendering/RenderPart.h:
+ * rendering/RenderPartObject.cpp:
+ (WebCore::RenderPartObject::RenderPartObject): take Node* instead of HTMLFrameOwnerElement*
+ * rendering/RenderPartObject.h:
+
+2009-02-09 Dan Bernstein <mitz@apple.com>
+
+ - fix -Wmissing-prototypes builds
+
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::isHeaderElement): Marked this function static.
+ (WebCore::haveSameTagName): Ditto.
+ * editing/markup.cpp:
+ (WebCore::isSpecialAncestorBlock): Ditto.
+ * platform/graphics/transforms/TransformationMatrix.cpp:
+ (WebCore::makeMapBetweenRects): Removed unused function.
+ * platform/graphics/transforms/TransformationMatrix.h: Removed unused
+ declaration of private member makeMapBetweenRects().
+
+2009-02-09 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23850
+ Code cleanup of HTMLParser class which was using a mix of m_* and bare
+ class member variable names which helps to obfuscate the code. Also
+ changed a few of the static helper functions to take a const pointer type
+ as they should not be modifying the node.
+
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::HTMLParser):
+ (WebCore::HTMLParser::~HTMLParser):
+ (WebCore::HTMLParser::reset):
+ (WebCore::HTMLParser::setCurrent):
+ (WebCore::HTMLParser::parseToken):
+ (WebCore::HTMLParser::parseDoctypeToken):
+ (WebCore::isTableSection):
+ (WebCore::isTablePart):
+ (WebCore::isTableRelated):
+ (WebCore::HTMLParser::insertNode):
+ (WebCore::HTMLParser::handleError):
+ (WebCore::HTMLParser::textCreateErrorCheck):
+ (WebCore::HTMLParser::commentCreateErrorCheck):
+ (WebCore::HTMLParser::headCreateErrorCheck):
+ (WebCore::HTMLParser::bodyCreateErrorCheck):
+ (WebCore::HTMLParser::framesetCreateErrorCheck):
+ (WebCore::HTMLParser::formCreateErrorCheck):
+ (WebCore::HTMLParser::isindexCreateErrorCheck):
+ (WebCore::HTMLParser::noscriptCreateErrorCheck):
+ (WebCore::HTMLParser::pCloserStrictCreateErrorCheck):
+ (WebCore::HTMLParser::mapCreateErrorCheck):
+ (WebCore::HTMLParser::getNode):
+ (WebCore::HTMLParser::allowNestedRedundantTag):
+ (WebCore::HTMLParser::processCloseTag):
+ (WebCore::HTMLParser::isInline):
+ (WebCore::HTMLParser::handleResidualStyleCloseTagAcrossBlocks):
+ (WebCore::HTMLParser::reopenResidualStyleTags):
+ (WebCore::HTMLParser::pushBlock):
+ (WebCore::HTMLParser::popBlock):
+ (WebCore::HTMLParser::popOneBlockCommon):
+ (WebCore::HTMLParser::popOneBlock):
+ (WebCore::HTMLParser::moveOneBlockToStack):
+ (WebCore::HTMLParser::checkIfHasPElementInScope):
+ (WebCore::HTMLParser::popInlineBlocks):
+ (WebCore::HTMLParser::freeBlock):
+ (WebCore::HTMLParser::createHead):
+ (WebCore::HTMLParser::handleIsindex):
+ (WebCore::HTMLParser::startBody):
+ (WebCore::HTMLParser::finished):
+ (WebCore::HTMLParser::reportErrorToConsole):
+ * html/HTMLParser.h:
+
+2009-02-09 Alexey Proskuryakov <ap@webkit.org>
+
+ Applying review comment on a second location.
+
+ * rendering/RenderText.cpp: (WebCore::RenderText::nextOffset):
+ Use "ifdef BUILDING_ON_TIGER".
+
+2009-02-09 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23845
+ editing/deleting/backward-deletion.html fails on Tiger
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::previousOffset):
+ (WebCore::RenderText::nextOffset):
+ Work around a bug in older ICU versions by hardcoding narrow voiced marks.
+
+2009-02-09 Adam Roben <aroben@apple.com>
+
+ Windows build fix
+
+ * WebCore.vcproj/WebCore.vcproj: Fix the XML syntax.
+
+2009-02-09 Jian Li <jianli@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Make WorkerMessagingProxy derive from two base proxy classes.
+ https://bugs.webkit.org/show_bug.cgi?id=23777
+
+ * bindings/js/WorkerScriptController.cpp:
+ (WebCore::WorkerScriptController::evaluate):
+ * dom/Worker.cpp:
+ (WebCore::Worker::terminate):
+ (WebCore::Worker::hasPendingActivity):
+ * dom/WorkerContext.cpp:
+ (WebCore::WorkerContext::reportException):
+ * dom/WorkerMessagingProxy.cpp:
+ (WebCore::WorkerThreadActivityReportTask::performTask):
+ (WebCore::WorkerMessagingProxy::postExceptionToWorkerObject):
+ (WebCore::WorkerMessagingProxy::workerObjectDestroyed):
+ (WebCore::WorkerMessagingProxy::terminateWorkerContext):
+ (WebCore::WorkerMessagingProxy::confirmWorkerThreadMessage):
+ (WebCore::WorkerMessagingProxy::reportPendingActivity):
+ (WebCore::WorkerMessagingProxy::reportPendingActivityInternal):
+ (WebCore::WorkerMessagingProxy::hasPendingActivity):
+ * dom/WorkerMessagingProxy.h:
+
+2009-02-09 Jian Li <jianli@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Introduce 2 base classes to split WorkerMessagingProxy.
+ https://bugs.webkit.org/show_bug.cgi?id=23776
+
+ * GNUmakefile.am:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/WorkerContextProxy.h: Added.
+ (WebCore::WorkerContextProxy::~WorkerContextProxy):
+ * dom/WorkerObjectProxy.h: Added.
+ (WebCore::WorkerObjectProxy::~WorkerObjectProxy):
+
+2009-02-08 David Hyatt <hyatt@apple.com>
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23839
+
+ Make sure that generated content is properly handled when content is moved from a block run-in
+ to an inline run-in.
+
+ Reviewed by Sam Weinig
+
+ Added fast/runin/002.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::handleRunInChild):
+
+2009-02-08 David Hyatt <hyatt@apple.com>
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23832, crash when inspecting an image using the
+ Web inspector.
+
+ Reviewed by Mark Rowe
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::absoluteRectsForRange):
+ (WebCore::RenderObject::absoluteQuadsForRange):
+
+2009-02-08 Dirk Schulze <krit@webkit.org>
+
+ Unreviewed Qt build fix.
+
+ TransformationMatrix changes in r40761 broke QT build.
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContext::getCTM):
+ (WebCore::GraphicsContext::scale):
+
+2009-02-08 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ This is a follow up of the last commit. It cleans up TransformationMatrix.h
+ and convert to a series of #elif.
+
+ * platform/graphics/transforms/TransformationMatrix.h:
+
+2009-02-08 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Simon Fraser.
+
+ [CAIRO] build broken by TransformationMatrix rework
+ https://bugs.webkit.org/show_bug.cgi?id=23831
+
+ Fixed cairo build after the TransformationMatrix rework done in
+ revision 40761.
+
+ * platform/graphics/cairo/GraphicsContextCairo.cpp:
+ (WebCore::GraphicsContext::getCTM):
+ (WebCore::GraphicsContext::concatCTM):
+ * platform/graphics/cairo/TransformationMatrixCairo.cpp:
+ (WebCore::TransformationMatrix::operator cairo_matrix_t):
+ * platform/graphics/transforms/TransformationMatrix.h:
+
+2009-02-07 David Hyatt <hyatt@apple.com>
+
+ Shrink the size of all InlineTextBoxes and all InlineBoxes (for images and replaced elements) by four bytes.
+ Change the overflow variable on InlineFlowBoxes into a short and move the bits for InlineFlowBoxes out of the
+ base InlineBox class. Since the number of bits in the base class was 35, shoving the 3 bits for InlineFlowBoxes
+ back down into that class (into the 16 bits exposed by making the overflow variable into a short), all text
+ boxes and image boxes shrink by 4 bytes.
+
+ Reviewed by Anders
+
+ * rendering/InlineBox.h:
+ (WebCore::InlineBox::InlineBox):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::placeBoxesHorizontally):
+ (WebCore::InlineFlowBox::computeLogicalBoxHeights):
+ (WebCore::InlineFlowBox::placeBoxesVertically):
+ * rendering/InlineFlowBox.h:
+ (WebCore::InlineFlowBox::InlineFlowBox):
+ (WebCore::InlineFlowBox::maxHorizontalVisualOverflow):
+ (WebCore::InlineFlowBox::hasTextChildren):
+
+2009-02-07 Dean Jackson <dino@apple.com>
+
+ Attempted build fix for Qt. Not reviewed.
+
+ TransformationMatrix changes in r40761 broke non-Apple builds.
+
+ * platform/graphics/qt/TransformationMatrixQt.cpp:
+ (WebCore::TransformationMatrix::operator QMatrix):
+ * platform/graphics/transforms/TransformationMatrix.h:
+
+2009-02-07 David Hyatt <hyatt@apple.com>
+
+ This patch changes the base class of RenderInline from RenderBox to RenderBoxModelObject. This shift
+ in base class knocks 32 bytes off the size of every RenderInline. All of the necessary functions
+ for both RenderInline and RenderBox have either been pulled up into RenderBoxModelObject for sharing
+ or split into two functions (one in each derived class).
+
+ Reviewed by Anders and Antti
+
+ * dom/Element.cpp:
+ (WebCore::Element::offsetLeft):
+ (WebCore::Element::offsetTop):
+ (WebCore::Element::offsetWidth):
+ (WebCore::Element::offsetHeight):
+ (WebCore::Element::offsetParent):
+ (WebCore::Element::clientWidth):
+ (WebCore::Element::clientHeight):
+ (WebCore::Element::scrollWidth):
+ (WebCore::Element::scrollHeight):
+ * dom/Node.cpp:
+ (WebCore::Node::renderBox):
+ (WebCore::Node::renderBoxModelObject):
+ * dom/Node.h:
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::isKeyboardFocusable):
+ * rendering/InlineBox.h:
+ (WebCore::InlineBox::boxModelObject):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::marginLeft):
+ (WebCore::InlineFlowBox::marginRight):
+ (WebCore::InlineFlowBox::placeBoxesHorizontally):
+ (WebCore::InlineFlowBox::computeLogicalBoxHeights):
+ (WebCore::InlineFlowBox::placeBoxesVertically):
+ (WebCore::InlineFlowBox::shrinkBoxesWithNoTextChildren):
+ * rendering/InlineFlowBox.h:
+ (WebCore::InlineFlowBox::borderLeft):
+ (WebCore::InlineFlowBox::borderRight):
+ (WebCore::InlineFlowBox::paddingLeft):
+ (WebCore::InlineFlowBox::paddingRight):
+ * rendering/RenderBlock.cpp:
+ (WebCore::getBorderPaddingMargin):
+ (WebCore::RenderBlock::calcInlinePrefWidths):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::imageChanged):
+ (WebCore::RenderBox::calcReplacedWidthUsing):
+ (WebCore::RenderBox::calcReplacedHeightUsing):
+ (WebCore::RenderBox::containingBlockWidthForPositioned):
+ (WebCore::RenderBox::containingBlockHeightForPositioned):
+ (WebCore::RenderBox::calcAbsoluteHorizontal):
+ (WebCore::RenderBox::calcAbsoluteHorizontalValues):
+ (WebCore::RenderBox::calcAbsoluteVertical):
+ (WebCore::RenderBox::calcAbsoluteVerticalValues):
+ (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
+ (WebCore::RenderBox::calcAbsoluteVerticalReplaced):
+ (WebCore::RenderBox::positionForCoordinates):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::borderBoundingBox):
+ (WebCore::RenderBox::offsetHeight):
+ (WebCore::RenderBox::marginTop):
+ (WebCore::RenderBox::marginBottom):
+ (WebCore::RenderBox::marginLeft):
+ (WebCore::RenderBox::marginRight):
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::offsetLeft):
+ (WebCore::RenderBoxModelObject::offsetTop):
+ (WebCore::RenderBoxModelObject::paddingTop):
+ (WebCore::RenderBoxModelObject::paddingBottom):
+ (WebCore::RenderBoxModelObject::paddingLeft):
+ (WebCore::RenderBoxModelObject::paddingRight):
+ (WebCore::RenderBoxModelObject::paintFillLayerExtended):
+ (WebCore::RenderBoxModelObject::calculateBackgroundSize):
+ (WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry):
+ * rendering/RenderBoxModelObject.h:
+ (WebCore::RenderBoxModelObject::borderTop):
+ (WebCore::RenderBoxModelObject::borderBottom):
+ (WebCore::RenderBoxModelObject::borderLeft):
+ (WebCore::RenderBoxModelObject::borderRight):
+ (WebCore::RenderBoxModelObject::hasHorizontalBordersPaddingOrMargin):
+ (WebCore::RenderBoxModelObject::hasHorizontalBordersOrPadding):
+ (WebCore::RenderBoxModelObject::childBecameNonInline):
+ (WebCore::RenderBoxModelObject::isBoxModelObject):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::RenderInline):
+ (WebCore::RenderInline::destroy):
+ (WebCore::RenderInline::styleDidChange):
+ (WebCore::nextContinuation):
+ (WebCore::RenderInline::continuationBefore):
+ (WebCore::RenderInline::addChildIgnoringContinuation):
+ (WebCore::RenderInline::splitInlines):
+ (WebCore::RenderInline::splitFlow):
+ (WebCore::RenderInline::addChildToContinuation):
+ (WebCore::RenderInline::absoluteRects):
+ (WebCore::RenderInline::offsetLeft):
+ (WebCore::RenderInline::offsetTop):
+ (WebCore::RenderInline::marginLeft):
+ (WebCore::RenderInline::marginRight):
+ (WebCore::RenderInline::positionForCoordinates):
+ (WebCore::RenderInline::clippedOverflowRectForRepaint):
+ (WebCore::RenderInline::rectWithOutlineForRepaint):
+ (WebCore::RenderInline::computeRectForRepaint):
+ (WebCore::RenderInline::updateDragState):
+ (WebCore::RenderInline::childBecameNonInline):
+ (WebCore::RenderInline::updateHitTestResult):
+ (WebCore::RenderInline::imageChanged):
+ (WebCore::RenderInline::addFocusRingRects):
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::marginTop):
+ (WebCore::RenderInline::marginBottom):
+ (WebCore::RenderInline::continuation):
+ (WebCore::RenderInline::setContinuation):
+ * rendering/RenderLineBoxList.cpp:
+ (WebCore::RenderLineBoxList::paint):
+ (WebCore::RenderLineBoxList::hitTest):
+ * rendering/RenderLineBoxList.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::addLayers):
+ (WebCore::RenderObject::removeLayers):
+ (WebCore::RenderObject::moveLayers):
+ (WebCore::RenderObject::findNextLayer):
+ (WebCore::RenderObject::enclosingLayer):
+ (WebCore::RenderObject::enclosingCompositingLayer):
+ (WebCore::RenderObject::setLayerNeedsFullRepaint):
+ (WebCore::RenderObject::handleDynamicFloatPositionChange):
+ (WebCore::RenderObject::destroy):
+ (WebCore::RenderObject::offsetParent):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isInlineContinuation):
+ * rendering/RenderSVGTSpan.cpp:
+ (WebCore::RenderSVGTSpan::absoluteRects):
+ (WebCore::RenderSVGTSpan::absoluteQuads):
+ * rendering/RenderSVGTextPath.cpp:
+ (WebCore::RenderSVGTextPath::absoluteRects):
+ (WebCore::RenderSVGTextPath::absoluteQuads):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::setBestTruncatedAt):
+ * rendering/RenderView.h:
+ * rendering/bidi.cpp:
+ (WebCore::getBorderPaddingMargin):
+ (WebCore::inlineWidth):
+ (WebCore::RenderBlock::layoutInlineChildren):
+ (WebCore::inlineFlowRequiresLineBox):
+ (WebCore::requiresLineBox):
+ (WebCore::RenderBlock::findNextLineBreak):
+ * wml/WMLAElement.cpp:
+ (WebCore::WMLAElement::isKeyboardFocusable):
+
+2009-02-07 Yael Aharon <yael.aharon@nokia.com>
+
+ Reviewed by Timothy Hatcher <timothy@hatcher.name>
+
+ Partial fix for <https://bugs.webkit.org/show_bug.cgi?id=21051>
+ Include localStorage and sessionStorage in DatabasesPanel.
+
+ * WebCore.vcproj/WebCore.vcproj:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorDOMStorageResource::create):
+ (WebCore::InspectorDOMStorageResource::setScriptObject):
+ (WebCore::InspectorDOMStorageResource::InspectorDOMStorageResource):
+ (WebCore::InspectorController::populateScriptObjects):
+ (WebCore::InspectorController::addDOMStorageScriptResource):
+ (WebCore::InspectorController::removeDOMStorageScriptResource):
+ (WebCore::InspectorController::resetScriptObjects):
+ (WebCore::InspectorController::didCommitLoad):
+ (WebCore::InspectorController::didUseDOMStorage):
+ * inspector/InspectorController.h:
+ * inspector/front-end/DOMStorage.js: Added.
+ (WebInspector.DOMStorage):
+ (WebInspector.DOMStorage.prototype.get domStorage):
+ (WebInspector.DOMStorage.prototype.set domStorage):
+ (WebInspector.DOMStorage.prototype.get domain):
+ (WebInspector.DOMStorage.prototype.set domain):
+ (WebInspector.DOMStorage.prototype.get isLocalStorage):
+ (WebInspector.DOMStorage.prototype.set isLocalStorage):
+ * inspector/front-end/DOMStorageItemsView.js: Added.
+ (WebInspector.DOMStorageItemsView):
+ (WebInspector.DOMStorageItemsView.prototype.show):
+ (WebInspector.DOMStorageItemsView.prototype.update):
+ * inspector/front-end/DatabaseQueryView.js:
+ (WebInspector.DatabaseQueryView):
+ * inspector/front-end/DatabaseTableView.js:
+ (WebInspector.DatabaseTableView):
+ (WebInspector.DatabaseTableView.prototype._queryFinished):
+ (WebInspector.DatabaseTableView.prototype._queryError):
+ * inspector/front-end/DatabasesPanel.js:
+ (WebInspector.DatabasesPanel):
+ (WebInspector.DatabasesPanel.prototype.reset):
+ (WebInspector.DatabasesPanel.prototype.addDatabase):
+ (WebInspector.DatabasesPanel.prototype.addDOMStorage):
+ (WebInspector.DatabasesPanel.prototype.showDatabase):
+ (WebInspector.DatabasesPanel.prototype.showDOMStorage):
+ (WebInspector.DatabasesPanel.prototype.closeVisibleView):
+ (WebInspector.DatabasesPanel.prototype.updateDatabaseTables):
+ (WebInspector.DatabasesPanel.prototype.dataGridForDOMStorage):
+ (WebInspector.DatabasesPanel.prototype._updateSidebarWidth):
+ (WebInspector.DOMStorageSidebarTreeElement):
+ (WebInspector.DOMStorageSidebarTreeElement.prototype.onselect):
+ (WebInspector.DOMStorageSidebarTreeElement.prototype.get mainTitle):
+ (WebInspector.DOMStorageSidebarTreeElement.prototype.set mainTitle):
+ (WebInspector.DOMStorageSidebarTreeElement.prototype.get subtitle):
+ (WebInspector.DOMStorageSidebarTreeElement.prototype.set subtitle):
+ * inspector/front-end/Images/domStorage.png: Added.
+ * inspector/front-end/WebKit.qrc:
+ * inspector/front-end/inspector.css:
+ * inspector/front-end/inspector.html:
+ * inspector/front-end/inspector.js:
+ (WebInspector.addDOMStorage):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::sessionStorage):
+ (WebCore::DOMWindow::localStorage):
+
+2009-02-07 Feng Qian <feng@chromium.org>
+
+ Reviewed by Eric Seidel <eric@webkit.org>
+
+ Put #if ENABLE(PAN_SCROLLING) around EventHandler::setPanScrollCursor.
+ https://bugs.webkit.org/show_bug.cgi?id=23574
+
+ * page/EventHandler.cpp:
+ * page/EventHandler.h:
+
+2009-02-07 Zalan Bujtas <zbujtas@gmail.com>
+
+ Reviewed by Rob Buis <rwlbuis@gmail.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=23788
+ call style()->isOriginalDisplayInlineType() on RenderBox instead of RenderObject.
+
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::skipLeadingWhitespace):
+
+2009-02-07 Rob Buis <rwlbuis@gmail.com>
+
+ Reviewed by Darin.
+
+ https://bugs.webkit.org/show_bug.cgi?id=3248
+ Bug 3248: Mouse events on OPTION element seem to be ignored
+
+ Support mouse events on options in a select when it forms a list box.
+
+ Test: fast/forms/option-mouseevents.html
+
+ * html/HTMLSelectElement.cpp: Convert to coords relative to the list box.
+ (WebCore::HTMLSelectElement::listBoxDefaultEventHandler):
+ * rendering/RenderListBox.cpp: Handle hit testing for option elements.
+ (WebCore::RenderListBox::nodeAtPoint):
+ * rendering/RenderListBox.h:
+
+2009-02-07 Adam Treat <adam.treat@torchmobile.com>
+
+ Prospective build fix for all non-Apple platforms.
+
+ * platform/graphics/transforms/TransformationMatrix.h:
+
+2009-02-06 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=6868
+
+ I have not only made TransformationMatrix platform independent
+ but I've also added 3D methods, which will be used when I update
+ WebKitCSSMatrix to include 3D (see https://bugs.webkit.org/show_bug.cgi?id=23689).
+ I am now keeping a full 4x4 matrix in TransformationMatrix. I'm also doing all
+ the math as doubles rather than floats. This makes a TransformationMatrix
+ go from 24 bytes to 128 bytes, but I don't think this class is used enough to
+ make this overhead will be significant.
+
+ The change from floats to doubles has caused some differences in rounding and
+ display (sometimes things that displayed as -0.0 now display as 0.0 or vice versa),
+ so I've had to change some LayoutTest results in the SVG tests.
+
+ * platform/graphics/FloatPoint.cpp:
+ (WebCore::FloatPoint::matrixTransform):
+ * platform/graphics/cg/GraphicsContextCG.cpp:
+ (WebCore::GraphicsContext::getCTM):
+ * platform/graphics/cg/TransformationMatrixCG.cpp:
+ (WebCore::TransformationMatrix::operator CGAffineTransform):
+ * platform/graphics/transforms/TransformationMatrix.cpp:
+ (WebCore::determinant2x2):
+ (WebCore::determinant3x3):
+ (WebCore::determinant4x4):
+ (WebCore::adjoint):
+ (WebCore::inverse):
+ (WebCore::transposeMatrix4):
+ (WebCore::v4MulPointByMatrix):
+ (WebCore::v3Length):
+ (WebCore::v3Scale):
+ (WebCore::v3Dot):
+ (WebCore::v3Combine):
+ (WebCore::v3Cross):
+ (WebCore::decompose):
+ (WebCore::slerp):
+ (WebCore::TransformationMatrix::scale):
+ (WebCore::TransformationMatrix::rotateFromVector):
+ (WebCore::TransformationMatrix::flipX):
+ (WebCore::TransformationMatrix::flipY):
+ (WebCore::makeMapBetweenRects):
+ (WebCore::TransformationMatrix::projectPoint):
+ (WebCore::TransformationMatrix::mapPoint):
+ (WebCore::TransformationMatrix::mapRect):
+ (WebCore::TransformationMatrix::mapQuad):
+ (WebCore::TransformationMatrix::scale3d):
+ (WebCore::TransformationMatrix::rotate3d):
+ (WebCore::TransformationMatrix::translate):
+ (WebCore::TransformationMatrix::translate3d):
+ (WebCore::TransformationMatrix::skew):
+ (WebCore::TransformationMatrix::applyPerspective):
+ (WebCore::TransformationMatrix::multLeft):
+ (WebCore::TransformationMatrix::multVecMatrix):
+ (WebCore::TransformationMatrix::isInvertible):
+ (WebCore::TransformationMatrix::inverse):
+ (WebCore::blendFloat):
+ (WebCore::TransformationMatrix::blend):
+ (WebCore::TransformationMatrix::decompose):
+ (WebCore::TransformationMatrix::recompose):
+ * platform/graphics/transforms/TransformationMatrix.h:
+ (WebCore::TransformationMatrix::TransformationMatrix):
+ (WebCore::TransformationMatrix::setMatrix):
+ (WebCore::TransformationMatrix::operator =):
+ (WebCore::TransformationMatrix::makeIdentity):
+ (WebCore::TransformationMatrix::isIdentity):
+ (WebCore::TransformationMatrix::map):
+ (WebCore::TransformationMatrix::m11):
+ (WebCore::TransformationMatrix::setM11):
+ (WebCore::TransformationMatrix::m12):
+ (WebCore::TransformationMatrix::setM12):
+ (WebCore::TransformationMatrix::m13):
+ (WebCore::TransformationMatrix::setM13):
+ (WebCore::TransformationMatrix::m14):
+ (WebCore::TransformationMatrix::setM14):
+ (WebCore::TransformationMatrix::m21):
+ (WebCore::TransformationMatrix::setM21):
+ (WebCore::TransformationMatrix::m22):
+ (WebCore::TransformationMatrix::setM22):
+ (WebCore::TransformationMatrix::m23):
+ (WebCore::TransformationMatrix::setM23):
+ (WebCore::TransformationMatrix::m24):
+ (WebCore::TransformationMatrix::setM24):
+ (WebCore::TransformationMatrix::m31):
+ (WebCore::TransformationMatrix::setM31):
+ (WebCore::TransformationMatrix::m32):
+ (WebCore::TransformationMatrix::setM32):
+ (WebCore::TransformationMatrix::m33):
+ (WebCore::TransformationMatrix::setM33):
+ (WebCore::TransformationMatrix::m34):
+ (WebCore::TransformationMatrix::setM34):
+ (WebCore::TransformationMatrix::m41):
+ (WebCore::TransformationMatrix::setM41):
+ (WebCore::TransformationMatrix::m42):
+ (WebCore::TransformationMatrix::setM42):
+ (WebCore::TransformationMatrix::m43):
+ (WebCore::TransformationMatrix::setM43):
+ (WebCore::TransformationMatrix::m44):
+ (WebCore::TransformationMatrix::setM44):
+ (WebCore::TransformationMatrix::a):
+ (WebCore::TransformationMatrix::setA):
+ (WebCore::TransformationMatrix::b):
+ (WebCore::TransformationMatrix::setB):
+ (WebCore::TransformationMatrix::c):
+ (WebCore::TransformationMatrix::setC):
+ (WebCore::TransformationMatrix::d):
+ (WebCore::TransformationMatrix::setD):
+ (WebCore::TransformationMatrix::e):
+ (WebCore::TransformationMatrix::setE):
+ (WebCore::TransformationMatrix::f):
+ (WebCore::TransformationMatrix::setF):
+ (WebCore::TransformationMatrix::multiply):
+ (WebCore::TransformationMatrix::rotate):
+ (WebCore::TransformationMatrix::skewX):
+ (WebCore::TransformationMatrix::skewY):
+ (WebCore::TransformationMatrix::hasPerspective):
+ (WebCore::TransformationMatrix::):
+ (WebCore::TransformationMatrix::isAffine):
+ (WebCore::TransformationMatrix::operator==):
+ (WebCore::TransformationMatrix::operator*=):
+ (WebCore::TransformationMatrix::operator*):
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::nodeAtPoint):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateTransform):
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::mapAbsolutePointToLocal):
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::nodeAtPoint):
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::nodeAtPoint):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::nodeAtPoint):
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::nodeAtPoint):
+ * svg/SVGAnimateMotionElement.cpp:
+ (WebCore::SVGAnimateMotionElement::resetToBaseValue):
+ (WebCore::SVGAnimateMotionElement::calculateAnimatedValue):
+ * svg/SVGSVGElement.cpp:
+ (WebCore::SVGSVGElement::viewport):
+ * svg/SVGTransform.cpp:
+ (SVGTransform::setTranslate):
+ (SVGTransform::setScale):
+ (SVGTransform::setRotate):
+ (SVGTransform::setSkewX):
+ (SVGTransform::setSkewY):
+ * svg/graphics/SVGResourceMarker.cpp:
+ (WebCore::SVGResourceMarker::draw):
+
2009-02-07 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Tor Arne Vestbø.
@@ -491,6 +39073,463 @@
(WebCore::Image::drawPattern): Moved implementation from
BitmapImage::drawPattern.
+2009-02-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Justin Garcia.
+
+ DOMSelection.getRangeAt() returns a different range than the selection
+ https://bugs.webkit.org/show_bug.cgi?id=23601
+
+ Rename toRange to toNormalizedRange and add new firstRange which returns an unmodified range
+
+ Test: fast/dom/Selection/getRangeAt.html
+
+ * WebCore.base.exp:
+ * dom/InputElement.cpp:
+ (WebCore::InputElement::handleBeforeTextInsertedEvent):
+ * editing/DeleteButtonController.cpp:
+ (WebCore::enclosingDeletableElement):
+ * editing/Editor.cpp:
+ (WebCore::Editor::selectedRange):
+ (WebCore::Editor::fontForSelection):
+ (WebCore::Editor::applyStyleToSelection):
+ (WebCore::Editor::applyParagraphStyleToSelection):
+ (WebCore::Editor::insertTextWithoutSendingTextEvent):
+ (WebCore::Editor::insertLineBreak):
+ (WebCore::Editor::insertParagraphSeparator):
+ (WebCore::Editor::ignoreSpelling):
+ (WebCore::Editor::isSelectionUngrammatical):
+ (WebCore::Editor::guessesForUngrammaticalSelection):
+ (WebCore::markMisspellingsOrBadGrammar):
+ (WebCore::Editor::rangeForPoint):
+ * editing/EditorCommand.cpp:
+ (WebCore::expandSelectionToGranularity):
+ (WebCore::executeDeleteToMark):
+ (WebCore::executeSelectToMark):
+ * editing/RemoveFormatCommand.cpp:
+ (WebCore::RemoveFormatCommand::doApply):
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplacementFragment::ReplacementFragment):
+ * editing/Selection.cpp:
+ (WebCore::Selection::firstRange):
+ (WebCore::Selection::toNormalizedRange):
+ * editing/Selection.h:
+ * editing/SelectionController.h:
+ (WebCore::SelectionController::toNormalizedRange):
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::deleteKeyPressed):
+ (WebCore::TypingCommand::forwardDeleteKeyPressed):
+ * editing/markup.cpp:
+ (WebCore::createMarkup):
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ (WebCore::LegacyWebArchive::createFromSelection):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::ariaSelectedTextDOMRange):
+ * page/ContextMenuController.cpp:
+ (WebCore::ContextMenuController::contextMenuItemSelected):
+ * page/DOMSelection.cpp:
+ (WebCore::DOMSelection::getRangeAt):
+ (WebCore::DOMSelection::addRange):
+ (WebCore::DOMSelection::deleteFromDocument):
+ (WebCore::DOMSelection::containsNode):
+ (WebCore::DOMSelection::toString):
+ * page/DragController.cpp:
+ (WebCore::setSelectionToDragCaret):
+ (WebCore::DragController::concludeEditDrag):
+ (WebCore::DragController::startDrag):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::dispatchMouseEvent):
+ * page/Frame.cpp:
+ (WebCore::Frame::selectedText):
+ (WebCore::Frame::shouldChangeSelection):
+ (WebCore::Frame::shouldDeleteSelection):
+ (WebCore::Frame::selectionComputedStyle):
+ (WebCore::Frame::selectionTextRects):
+ (WebCore::Frame::findString):
+ (WebCore::Frame::respondToChangedSelection):
+ * platform/ContextMenu.cpp:
+ (WebCore::selectionContainsPossibleWord):
+
+2009-02-06 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ <rdar://problem/6563402> - Workaround a case where ::didReceiveData() might be called on a ResourceHandleClient
+ before ::didReceiveResponse().
+
+ No layout test, as we don't have a concrete way to reproduce these conditions. To that effect, I've added an ASSERT
+ to catch the conditions before the workaround takes effect in case any WebKit Debug-build developer runs across
+ this case and can come up with something more reproducible.
+
+ * loader/MainResourceLoader.cpp:
+ (WebCore::MainResourceLoader::didReceiveData): If the response is null create a dummy response. This is much
+ like the FrameLoader::init() response that is used for initial document creation.
+
+2009-02-06 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * WebCore.base.exp:
+
+2009-02-06 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23621
+
+ Do not use m_scrollOffset to check if we are setting the same
+ value than we already have.
+
+ m_scrollOffset starts at 0 for ScrollView, so when opening a new
+ page and scrolling to 0 (the usual case) the check will fail and
+ we won't update the adjustment value, resulting in a possibly
+ mispositioned scrollbar. Use the adjustment value directly
+ instead, which is what we are updating anyway.
+
+ * platform/gtk/ScrollViewGtk.cpp:
+ (WebCore::ScrollView::platformHandleHorizontalAdjustment):
+ (WebCore::ScrollView::platformHandleVerticalAdjustment):
+
+2009-02-06 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23800
+ Header elements are not always preserved during paste
+
+ At paste time, don't merge out of header elements. At copy time, be sure to include
+ headers in the list of special common ancestor blocks, so that copying a paragraph or less
+ of content inside a header will include the header element in the copied markup.
+
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::areSameHeaderElements):
+ (WebCore::ReplaceSelectionCommand::shouldMerge):
+ * editing/markup.cpp:
+ (WebCore::isSpecialAncestorBlock):
+ (WebCore::createMarkup):
+
+2009-02-06 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Part III of <rdar://problem/6552272>.
+
+ Make redirect data available to WebKit. (I tried having WebKit track this
+ data for itself, but that went wrong -- it's just too hard to figure
+ out the weird corners of the WebCore loader from within another framework.)
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::DocumentLoader):
+ * loader/DocumentLoader.h: Store a flag indicating whether we created
+ a global history entry. If we didn't, then we know that the next redirect
+ should not link to us, since we're not in history.
+
+ (WebCore::DocumentLoader::clientRedirectSourceForHistory):
+ (WebCore::DocumentLoader::clientRedirectDestinationForHistory):
+ (WebCore::DocumentLoader::setClientRedirectSourceForHistory):
+ (WebCore::DocumentLoader::serverRedirectSourceForHistory):
+ (WebCore::DocumentLoader::serverRedirectDestinationForHistory):
+ (WebCore::DocumentLoader::didCreateGlobalHistoryEntry):
+ (WebCore::DocumentLoader::setDidCreateGlobalHistoryEntry): Added accessors
+ to help WebKit wade through the muck of WebCore history.
+
+ * loader/EmptyClients.h:
+ (WebCore::EmptyFrameLoaderClient::updateGlobalHistoryRedirectLinks): Renamed
+ this client function to say what it does, instead of when it's called.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::load):
+ (WebCore::FrameLoader::loadWithNavigationAction): In the case of a redirect,
+ store a link to the previous history URL in the new DocumentLoader, so
+ it can update WebKit with that link when the load commits.
+
+ (WebCore::FrameLoader::updateHistory*): Use our new flags and names,
+ described above.
+
+ * loader/FrameLoader.h:
+ (WebCore::FrameLoader::documentLoader):
+ (WebCore::FrameLoader::policyDocumentLoader):
+ (WebCore::FrameLoader::provisionalDocumentLoader):
+ (WebCore::FrameLoader::state): Inlined a few trivial functions because
+ performance mistakes give me the itches.
+
+ * loader/FrameLoaderClient.h: Renamed this client function to say what
+ it does, instead of when it's called.
+
+2009-02-06 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Justin Garcia.
+
+ Minor refactoring and cleanup to Selection code
+ https://bugs.webkit.org/show_bug.cgi?id=23774
+
+ No functional changes, thus no tests.
+
+ * editing/Editor.cpp:
+ (WebCore::Editor::applyStyle):
+ (WebCore::Editor::applyParagraphStyle):
+ * editing/Selection.cpp:
+ (WebCore::Selection::Selection):
+ (WebCore::Selection::setBaseAndExtentToDeepEquivalents):
+ (WebCore::Selection::setStartAndEndFromBaseAndExtentRespectingGranularity):
+ (WebCore::Selection::updateSelectionType):
+ (WebCore::Selection::validate):
+ (WebCore::Selection::setWithoutValidation):
+ (WebCore::Selection::adjustSelectionToAvoidCrossingEditingBoundaries):
+ * editing/Selection.h:
+ (WebCore::Selection::):
+ (WebCore::Selection::selectionType):
+ (WebCore::Selection::extent):
+ (WebCore::Selection::isNone):
+ (WebCore::Selection::isCaret):
+ (WebCore::Selection::isRange):
+ (WebCore::Selection::isCaretOrRange):
+ * editing/SelectionController.h:
+ (WebCore::SelectionController::selectionType):
+ * editing/TypingCommand.cpp:
+ (WebCore::TypingCommand::deleteKeyPressed):
+ (WebCore::TypingCommand::forwardDeleteKeyPressed):
+ * page/Frame.cpp:
+ (WebCore::Frame::revealSelection):
+
+2009-02-06 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23801
+ Add custom V8 bindings for SVG.
+
+ * bindings/v8/custom/V8SVGElementInstanceCustom.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8SVGLengthCustom.cpp: Added.
+ (WebCore::ACCESSOR_GETTER):
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8SVGMatrixCustom.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-02-06 David Levin <levin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Bug 23792: unused param is used in RenderLayer.cpp but not #include'd
+ <https://bugs.webkit.org/show_bug.cgi?id=23792>
+
+ Add include file for UnusedParam which is used in this file.
+
+ * rendering/RenderLayer.cpp:
+
+2009-02-06 David Levin <levin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ <https://bugs.webkit.org/show_bug.cgi?id=23741>
+
+ Bug 23798: KURLGoogle needs support for protocolInHTTPFamily
+ <https://bugs.webkit.org/show_bug.cgi?id=23798>
+
+ Add protocolInHTTPFamily() to the KURLGoogle implementation.
+ This is another chromium build fix to mirror r40553.
+
+ While in this file, I did some style fixes and consistency fixes:
+ + fixed many_occurences_of_underscoring_naming
+ + usages of NULL
+ + comparisons to 0
+ + changed the copyright remove an extraneous , and capitalize the (C)
+ which was suggested for other files that I've submitted.
+
+ No observable change in behavior, so no test.
+
+ * platform/KURL.h:
+ (WebCore::KURL::protocolInHTTPFamily):
+ * platform/KURLGoogle.cpp:
+ (WebCore::KURLCharsetConverter::ConvertFromUTF16):
+ (WebCore::lowerCaseEqualsASCII):
+ (WebCore::KURLGooglePrivate::KURLGooglePrivate):
+ (WebCore::KURLGooglePrivate::setUtf8):
+ (WebCore::KURLGooglePrivate::setAscii):
+ (WebCore::KURLGooglePrivate::init):
+ (WebCore::KURLGooglePrivate::initProtocolInHTTPFamily):
+ (WebCore::KURLGooglePrivate::copyTo):
+ (WebCore::KURLGooglePrivate::replaceComponents):
+ (WebCore::KURL::KURL):
+ (WebCore::KURL::createCFURL):
+ (WebCore::KURL::isEmpty):
+ (WebCore::KURL::protocolInHTTPFamily):
+ (WebCore::KURL::query):
+ (WebCore::decodeURLEscapeSequences):
+ (WebCore::KURL::protocolIs):
+ (WebCore::encodeWithURLEscapeSequences):
+ (WebCore::KURL::invalidate):
+ (WebCore::equalIgnoringRef):
+ * platform/KURLGooglePrivate.h:
+
+2009-02-06 David Kilzer <ddkilzer@apple.com>
+
+ Bug 23741: StyleRareNonInheritedData::operator==() should not compare ContentData objects by pointer
+
+ Reviewed by Darin Adler.
+
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::contentDataEquivalent): Moved method to
+ WebCore::StyleRareNonInheritedData class.
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::contentDataEquivalent): Replaced declaration
+ with inline method that calls contentDataEquivalent() on
+ WebCore::StyleRareNonInheritedData instead.
+ * rendering/style/StyleRareNonInheritedData.cpp:
+ (WebCore::StyleRareNonInheritedData::operator==): This is the bug fix!
+ Replaced pointer comparison of ContentData objects with call to
+ StyleRareNonInheritedData::contentDataEquivalent().
+ (WebCore::StyleRareNonInheritedData::contentDataEquivalent): Added.
+ * rendering/style/StyleRareNonInheritedData.h:
+ (WebCore::StyleRareNonInheritedData::contentDataEquivalent): Added
+ declaration.
+
+2009-02-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Eric Seidel
+
+ Factor code that checks whether the object is rooted in
+ repaint() and repaintRectangle() into a common isRooted()
+ method.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::repaint):
+ (WebCore::RenderObject::repaintRectangle):
+ (WebCore::RenderObject::isRooted):
+ * rendering/RenderObject.h:
+
+2009-02-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Eric Seidel
+
+ Expose an isRootLayer() method on RenderLayer that works whether the
+ layer is rooted or not, and use that in a few places in the
+ accelerated compositing code.
+
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::isRootLayer):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::paintingGoesToWindow):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
+ (WebCore::RenderLayerCompositor::requiresCompositingLayer):
+
+2009-02-06 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix <rdar://problem/6552338> FontCache::releaseFontData() called on a small caps font that is not in the cache
+
+ Most platforms do not retrieve the small caps font from the FontCache,
+ but cross-platform code in ~SimpleFontData() assumes the the small caps
+ font data did come from the cache and therefore calls releaseFontData()
+ on it.
+
+ * platform/graphics/SimpleFontData.cpp:
+ (WebCore::SimpleFontData::~SimpleFontData): Reordered to call
+ platformDestroy() before releasing the small caps font and pruning the
+ glyph page tree. This allows platformDestroy() to reset
+ m_smallCapsFontData to 0 if it was not obtained from the cache.
+ * platform/graphics/chromium/SimpleFontDataLinux.cpp:
+ (WebCore::SimpleFontData::platformDestroy): Set m_smallCapsFontData to
+ 0 after deleting it.
+ * platform/graphics/gtk/SimpleFontDataGtk.cpp:
+ (WebCore::SimpleFontData::platformDestroy): Ditto.
+ * platform/graphics/gtk/SimpleFontDataPango.cpp:
+ (WebCore::SimpleFontData::platformDestroy): Ditto.
+ * platform/graphics/win/SimpleFontDataWin.cpp:
+ (WebCore::SimpleFontData::platformCommonDestroy): Ditto.
+ * platform/graphics/wx/SimpleFontDataWx.cpp:
+ (WebCore::SimpleFontData::platformDestroy): Ditto.
+
+2009-02-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Eric Seidel
+
+ Make RenderStyle::transitionForProperty() const.
+
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::transitionForProperty):
+ * rendering/style/RenderStyle.h:
+
+2009-02-06 Simon Fraser <simon.fraser@apple.com>
+
+ Fix build when ACCELERATED_COMPOSITING is turned on.
+
+ Remove font smoothing changes that will be committed
+ separately.
+
+ * platform/graphics/mac/WebLayer.mm:
+ (WebCore::if):
+
+2009-02-06 Anders Carlsson <andersca@apple.com>
+
+ Build fix.
+
+ * bridge/npapi.h:
+
+2009-02-06 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23790
+ Custom -> JSCCustom in SVGPointList.idl
+
+ * svg/SVGPointList.idl:
+
+2009-02-06 Anantanarayanan Iyengar <ananta@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23309
+ Fix whitespace indent errors. The rest of the original patch has already
+ landed.
+
+ * platform/graphics/cairo/ImageSourceCairo.cpp:
+ (WebCore::ImageSource::clear):
+ * platform/graphics/cg/ImageSourceCG.cpp:
+ (WebCore::ImageSource::clear):
+ * platform/graphics/qt/ImageSourceQt.cpp:
+ (WebCore::ImageSource::clear):
+ * platform/graphics/wx/ImageSourceWx.cpp:
+ (WebCore::ImageSource::clear):
+
+2009-02-06 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ Fix bug in clearRect(). Use fillRect() instead of eraseRect() to get
+ the context transparent.
+
+ [QT] clearRect fill's a given rect with white
+ https://bugs.webkit.org/show_bug.cgi?id=23728
+
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContext::clearRect):
+
+2009-02-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23781
+
+ When the document is attached and detached, and when it becomes active/inactive
+ (e.g. coming out or going into the page cache) we need to call
+ RenderView::didMoveOnscreen()/willMoveOffscreen() to hook and unhook the composited
+ layers.
+
+ Also, if Document::recalcStyle() does not do a layout, it needs to
+ update the compositing layers.
+
+ * dom/Document.cpp:
+ (WebCore::Document::updateRendering):
+ (WebCore::Document::updateLayout):
+ (WebCore::Document::attach):
+ (WebCore::Document::detach):
+ (WebCore::Document::documentWillBecomeInactive):
+ (WebCore::Document::documentDidBecomeActive):
+
2009-02-06 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Tor Arne Vestbø.
@@ -518,6 +39557,2074 @@
automatically wrapped QObjects.
(JSC::Bindings::QtConnectionObject::execute): Ditto.
+2009-02-05 Maciej Stachowiak <mjs@apple.com> and Brady Eidson <beidson@apple.com>
+
+ Reviewed by Dan Bernstein and Geoff Garen.
+
+ - WebCore code to track per-day and per-week visit counts in history
+
+ The basic idea is as follows: we track daily visits for up to 13
+ days, and weekly visits for up to 5 weeks past the end of the
+ current daily visits. As soon as the number of daily counts goes
+ over 13, we squish them down into weeks, and then prune the excess weeks.
+
+ * history/HistoryItem.cpp:
+ (WebCore::HistoryItem::HistoryItem): Remove bogus whitespace.
+ (WebCore::timeToDay): Helper function: convert time to days from the epoch.
+ (WebCore::HistoryItem::padDailyCountsForNewVisit): Insert 0 counts if
+ a site is visited after a span of days.
+ (WebCore::HistoryItem::collapseDailyVisitsToWeekly): Core day/week upgrade
+ algorithm as described above.
+ (WebCore::HistoryItem::recordVisitAtTime): Use above helpers to record all
+ info about a visit to this history item.
+ (WebCore::HistoryItem::setLastVisitedTime): Updated.
+ (WebCore::HistoryItem::visited): Updated.
+ (WebCore::HistoryItem::recordInitialVisit): New function to
+ handle recording data about the very first visit, replacing the
+ prior practice of explicitly setting visit count to 1.
+ (WebCore::HistoryItem::adoptVisitCounts): Take ownership of
+ daily and weekly visit count vectors.
+ (WebCore::HistoryItem::mergeAutoCompleteHints): Added a comment
+ noting that this function doesn't work properly now (though
+ this shouldn't matter much in practice.)
+ * history/HistoryItem.h:
+ (WebCore::HistoryItem::dailyVisitCounts): Accessor for daily counts.
+ (WebCore::HistoryItem::weeklyVisitCounts): Ditto for weekly counts.
+ * WebCore.base.exp: Add new symbols and sort.
+
+2009-02-05 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6438271> Improve backspace handling of accented characters
+
+ Test: platform/mac/editing/deleting/backward-delete.html
+
+ This change makes WebKit behave like AppKit on the Mac. Other platforms are not affected,
+ because the current behavior matches their standards (tested on Windows, assumed elsewhere).
+
+ * dom/Position.cpp:
+ (WebCore::Position::previous):
+ (WebCore::Position::next):
+ (WebCore::Position::uncheckedPreviousOffsetForBackwardDeletion):
+ * dom/Position.h:
+ Added a new option for previous(), used to move to a next position for backward deletion.
+ Renamed EUsingComposedCharacters to PositionMoveType.
+
+ * editing/TypingCommand.cpp: (WebCore::TypingCommand::deleteKeyPressed):
+ Use previous(BackwardDeletion) to find a proper range to delete. Also, simplified a check
+ surrounding this code a little.
+
+ * editing/htmlediting.cpp:
+ (WebCore::nextVisuallyDistinctCandidate):
+ (WebCore::previousVisuallyDistinctCandidate):
+ Adjusted for renamed enum values.
+
+ * rendering/RenderObject.cpp:
+ * rendering/RenderObject.h:
+ * rendering/RenderText.h:
+ Added previousOffsetForBackwardDeletion().
+
+ * rendering/RenderText.cpp: (WebCore::RenderText::previousOffsetForBackwardDeletion):
+ On PLATFORM(MAC), use an algorithm that matches the one AppKit has for backward deletion.
+
+2009-02-05 Adam Roben <aroben@apple.com>
+
+ Fix a crash in RenderWidget::destroy when navigating away from a page
+ with an <iframe>
+
+ This was a regression caused by r40679
+
+ Reviewed by Dave Hyatt.
+
+ Tested by many many tests.
+
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::destroy): Only deref the RenderWidget after we
+ finish accessing its members.
+
+2009-02-05 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Anders Carlsson
+
+ getAnimatedStyleForRenderer() should not create a new
+ CompositeAnimation if the object isn't already animating, and
+ it should just fall back to returning renderer->style().
+
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::getAnimatedStyleForRenderer):
+
+2009-02-05 Simon Fraser <simon.fraser@apple.com>
+
+ Fix build when ACCELERATED_COMPOSITING is turned on.
+
+ Give RenderLayerBacking some love after the great
+ RenderBoxModelObject split.
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateLayerTransform):
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ (WebCore::RenderLayerBacking::contentsBox):
+ (WebCore::RenderLayerBacking::paintIntoLayer):
+ (WebCore::RenderLayerBacking::startAnimation):
+ (WebCore::RenderLayerBacking::startTransition):
+ * rendering/RenderLayerBacking.h:
+ (WebCore::RenderLayerBacking::renderer):
+
+2009-02-05 Simon Fraser <simon.fraser@apple.com>
+
+ Fix build when ACCELERATED_COMPOSITING is turned on.
+
+ writeIndent() needs to be static to avoid warnings on some OSes,
+ and remove unused CAToTransform3D() method.
+
+ * platform/graphics/GraphicsLayer.cpp:
+ (WebCore::writeIndent):
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+
+2009-02-05 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Anders Carlsson
+
+ Add some methods to the TransformOperation classes that are required
+ by GraphicsLayer when ACCELERATED_COMPOSITING is turned on.
+
+ * platform/graphics/transforms/MatrixTransformOperation.h:
+ (WebCore::MatrixTransformOperation::create):
+ (WebCore::MatrixTransformOperation::MatrixTransformOperation):
+ * platform/graphics/transforms/ScaleTransformOperation.h:
+ (WebCore::ScaleTransformOperation::x):
+ (WebCore::ScaleTransformOperation::y):
+ * platform/graphics/transforms/TranslateTransformOperation.h:
+ (WebCore::TranslateTransformOperation::x):
+ (WebCore::TranslateTransformOperation::y):
+
+2009-02-05 Simon Fraser <simon.fraser@apple.com>
+
+ Minor clenaup: fix brace style in CompositeAnimationPrivate::updateTransitions(),
+ and correct a usage of UNUSED_PARAM().
+
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimationPrivate::updateTransitions):
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::startAnimation):
+
+2009-02-05 Simon Fraser <simon.fraser@apple.com>
+
+ Fix build when ACCELERATED_COMPOSITING is turned on.
+
+ animationOfPropertyIsAccelerated() needs to be public because
+ it is called from AnimationController.
+
+ * page/animation/AnimationBase.h:
+
+2009-02-05 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Anders Carlsson
+
+ Fix mis-typed enum value which is hidden inside #ifdefs so didn't break
+ the build.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::updateCompositingLayers):
+
+2009-02-05 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoffrey Garen.
+
+ Fix missing checked toRenderBlock casts.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::clearFloats):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::availableHeightUsing):
+
+2009-02-05 Sam Weinig <sam@webkit.org>
+
+ Patch from Darin Adler.
+ Reviewed by Sam Weinig.
+
+ Fix case where we were casting to RenderView.
+
+ No test case possible.
+
+ * editing/mac/SelectionControllerMac.mm:
+ (WebCore::SelectionController::notifyAccessibilityForSelectionChange):
+
+2009-02-05 Aaron Boodman <aa@chromium.org>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23708
+ Adds documentElementAvailable() callback to FrameLoaderClient.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::XMLTokenizer::startElementNs):
+ Add call to dispatchDocumentElementAvailable()
+ * dom/XMLTokenizerQt.cpp:
+ (WebCore::XMLTokenizer::parseStartElement):
+ Ditto.
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::insertNode):
+ Ditto.
+ * loader/EmptyClients.h:
+ (WebCore::EmptyFrameLoaderClient::documentElementAvailable):
+ Stub out documentElementAvailable().
+ * loader/FrameLoader.cpp:
+ documentElementAvailable() callback plumbing.
+ * loader/FrameLoader.h:
+ Ditto.
+ * loader/FrameLoaderClient.h:
+ Add new documentElementAvailable() callback.
+
+2009-02-05 Scott Violet <sky@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23766
+ CanvasRenderingContext2D::setShadow needs else for other platforms.
+
+ Implements the CMYK variant of CanvasRenderingContext2D::setShadow for
+ other platforms using the CMYK color constructor.
+
+ * html/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::setShadow):
+
+2009-02-05 Scott Violet <sky@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23687
+ Wires up Skia'a ImageBuffer::toDataURL to support pngs.
+ This helps Chromium pass a couple of layout tests.
+
+ * platform/graphics/skia/ImageBufferSkia.cpp:
+ (WebCore::ImageBuffer::toDataURL):
+ * platform/image-encoders: Added.
+ * platform/image-encoders/skia: Added.
+ * platform/image-encoders/skia/PNGImageEncoder.cpp: Added.
+ (WebCore::):
+ (WebCore::PngEncoderState::EncoderWriteCallback):
+ (WebCore::PngEncoderState::ConvertBGRAtoRGB):
+ (WebCore::PngEncoderState::PngWriteStructDestroyer::PngWriteStructDestroyer):
+ (WebCore::PngEncoderState::PngWriteStructDestroyer::~PngWriteStructDestroyer):
+ (WebCore::PNGImageEncoder::encode):
+ * platform/image-encoders/skia/PNGImageEncoder.h: Added.
+
+2009-02-05 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Fix missing checked cast.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::containingBlock):
+
+2009-02-05 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Not reviewed. Fix WML enabled builds.
+
+ FrameLoader::load() got an additional 'lockHistory' parameter, pass 'false'.
+
+ * wml/WMLGoElement.cpp:
+ (WebCore::WMLGoElement::executeTask):
+
+2009-02-05 Scott Violet <sky@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23625
+ Additional fix: Skia platform doesn't render text to a canvas or support clipping to an image buffer
+
+ Fixes three bugs in PlatformContextSkia:
+
+ * When a new layer was started clipped to an image we used the
+ assignment operator to copy the SkBitmap. If the SkBitmap owns it's
+ pixels, this is not the right thing to do. Instead we need to create
+ a copy of the image.
+ * State holds an SkBitmap by value. State's copy constructor does a
+ memcpy. This is confusing and subtle, I've converted to use a member
+ initializer list which I think is clearer and less error prone.
+ * When creating a new layer there is no need to copy the clip image.
+
+ * platform/graphics/skia/PlatformContextSkia.cpp:
+ (PlatformContextSkia::State::State):
+ (PlatformContextSkia::save):
+ (PlatformContextSkia::beginLayerClippedToImage):
+
+2009-02-05 Scott Violet <sky@google.com>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23462
+ Changes call from setFillColor to setStrokeColor.
+
+ * html/CanvasStyle.cpp:
+ (WebCore::CanvasStyle::applyStrokeColor):
+
+2009-02-05 David Hyatt <hyatt@apple.com>
+
+ Fix crash on svg custom stop test. A virtual function didn't get patched properly.
+
+ Reviewed by Sam Weinig
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGGradientStop.h:
+ (WebCore::RenderSVGGradientStop::clippedOverflowRectForRepaint):
+
+2009-02-05 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23765
+
+ Add toRenderBoxModelObject() so that we can cast objects that
+ can have layers.
+
+ Fix getComputedStyle to return the current value of style
+ properties that are undergoing accelerated animations, by
+ asking the AnimationController if the property has accelerated
+ animations, and, if so, asking it to generate an appropriate
+ style.
+
+ Tightened up some type safety (CSSPropertyID), and code clarity
+ (replace bool with enum).
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::hasCompositedLayer):
+ (WebCore::computedTransform):
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::isAnimatingPropertyOnRenderer):
+ (WebCore::AnimationController::isAnimatingPropertyOnRenderer):
+ (WebCore::AnimationController::supportsAcceleratedAnimationOfProperty):
+ * page/animation/AnimationController.h:
+ * page/animation/AnimationControllerPrivate.h:
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::startAnimation):
+ (WebCore::ImplicitAnimation::endAnimation):
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::startAnimation):
+ (WebCore::KeyframeAnimation::endAnimation):
+ * rendering/RenderBoxModelObject.h:
+ (WebCore::RenderBoxModelObject::isBoxModelObject):
+ (WebCore::toRenderBoxModelObject):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateLayerTransform):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isBoxModelObject):
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::applyTransform):
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::):
+
+2009-02-05 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23767
+ Add custom V8 bindings for HTML5 database.
+
+ * bindings/v8/custom/V8CustomSQLStatementCallback.cpp: Added.
+ (WebCore::V8CustomSQLStatementCallback::V8CustomSQLStatementCallback):
+ (WebCore::V8CustomSQLStatementCallback::~V8CustomSQLStatementCallback):
+ (WebCore::V8CustomSQLStatementCallback::handleEvent):
+ * bindings/v8/custom/V8CustomSQLStatementCallback.h: Added.
+ (WebCore::V8CustomSQLStatementCallback::create):
+ * bindings/v8/custom/V8CustomSQLStatementErrorCallback.cpp: Added.
+ (WebCore::V8CustomSQLStatementErrorCallback::V8CustomSQLStatementErrorCallback):
+ (WebCore::V8CustomSQLStatementErrorCallback::~V8CustomSQLStatementErrorCallback):
+ (WebCore::V8CustomSQLStatementErrorCallback::handleEvent):
+ * bindings/v8/custom/V8CustomSQLStatementErrorCallback.h: Added.
+ (WebCore::V8CustomSQLStatementErrorCallback::create):
+ * bindings/v8/custom/V8CustomSQLTransactionCallback.cpp: Added.
+ (WebCore::V8CustomSQLTransactionCallback::V8CustomSQLTransactionCallback):
+ (WebCore::V8CustomSQLTransactionCallback::~V8CustomSQLTransactionCallback):
+ (WebCore::V8CustomSQLTransactionCallback::handleEvent):
+ * bindings/v8/custom/V8CustomSQLTransactionCallback.h: Added.
+ (WebCore::V8CustomSQLTransactionCallback::create):
+ * bindings/v8/custom/V8CustomSQLTransactionErrorCallback.cpp: Added.
+ (WebCore::V8CustomSQLTransactionErrorCallback::V8CustomSQLTransactionErrorCallback):
+ (WebCore::V8CustomSQLTransactionErrorCallback::~V8CustomSQLTransactionErrorCallback):
+ (WebCore::V8CustomSQLTransactionErrorCallback::handleEvent):
+ * bindings/v8/custom/V8CustomSQLTransactionErrorCallback.h: Added.
+ (WebCore::V8CustomSQLTransactionErrorCallback::create):
+ * bindings/v8/custom/V8CustomVoidCallback.cpp: Added.
+ (WebCore::V8CustomVoidCallback::V8CustomVoidCallback):
+ (WebCore::V8CustomVoidCallback::~V8CustomVoidCallback):
+ (WebCore::V8CustomVoidCallback::handleEvent):
+ (WebCore::invokeCallback):
+ * bindings/v8/custom/V8CustomVoidCallback.h: Added.
+ (WebCore::V8CustomVoidCallback::create):
+ * bindings/v8/custom/V8DatabaseCustom.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8SQLResultSetRowListCustom.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+ * bindings/v8/custom/V8SQLTransactionCustom.cpp: Added.
+ (WebCore::CALLBACK_FUNC_DECL):
+
+2009-02-05 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23747
+ Add Chromium threading-related files.
+
+ * platform/chromium/TemporaryLinkStubs.cpp: Removed theading-related stubs.
+
+2009-02-05 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Adam Roben.
+
+ Add toRenderButton methods for casting RenderObjects to RenderButtons. The methods will assert if the object
+ is not a RenderButton. Also add a toRenderButton method that takes a RenderButton but returns void and that
+ is unimplemented. This method will catch anyone trying to do a cast when the object is already a RenderButton.
+
+ * rendering/RenderButton.h:
+ (WebCore::RenderButton::isRenderButton):
+ (WebCore::toRenderButton):
+ * rendering/RenderFileUploadControl.cpp:
+ (WebCore::RenderFileUploadControl::paintObject):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isRenderButton):
+
+2009-02-05 David Hyatt <hyatt@apple.com>
+
+ Move the m_layer member variable of RenderBox up into RenderBoxModelObject. Refactor styleDidChange'
+ of RenderObject, RenderBoxModelObject and RenderBox to get more of the code in the correct subclass.
+ In order to set the various RenderObject bits properly prior to the test for whether a layer is
+ required, I added an additional method, updateBoxModelInfoAfterStyleChange, that is responsible
+ for setting all of the bits.
+
+ Eliminate hasStaticX/Y, staticX/Y, and setStaticX/Y from the render tree. Move hasStaticX/Y to
+ RenderStyle, and just use the corresponding layer() methods for the
+ staticX/Y getters/setters.
+
+ Reviewed by Sam Weinig
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::layoutBlock):
+ (WebCore::RenderBlock::adjustPositionedBlock):
+ (WebCore::RenderBlock::layoutOnlyPositionedObjects):
+ (WebCore::RenderBlock::layoutPositionedObjects):
+ (WebCore::RenderBlock::paintObject):
+ (WebCore::RenderBlock::nodeAtPoint):
+ (WebCore::RenderBlock::offsetForContents):
+ (WebCore::RenderBlock::calcPrefWidths):
+ (WebCore::RenderBlock::baselinePosition):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::RenderBox):
+ (WebCore::RenderBox::destroy):
+ (WebCore::RenderBox::styleWillChange):
+ (WebCore::RenderBox::styleDidChange):
+ (WebCore::RenderBox::updateBoxModelInfoFromStyle):
+ (WebCore::RenderBox::scrollWidth):
+ (WebCore::RenderBox::scrollHeight):
+ (WebCore::RenderBox::scrollLeft):
+ (WebCore::RenderBox::scrollTop):
+ (WebCore::RenderBox::setScrollLeft):
+ (WebCore::RenderBox::setScrollTop):
+ (WebCore::RenderBox::getOverflowClipRect):
+ (WebCore::RenderBox::localToAbsolute):
+ (WebCore::RenderBox::absoluteToLocal):
+ (WebCore::RenderBox::localToContainerQuad):
+ (WebCore::RenderBox::position):
+ (WebCore::RenderBox::computeRectForRepaint):
+ (WebCore::RenderBox::calcAbsoluteHorizontal):
+ (WebCore::RenderBox::calcAbsoluteVertical):
+ (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
+ (WebCore::RenderBox::calcAbsoluteVerticalReplaced):
+ * rendering/RenderBox.h:
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::RenderBoxModelObject):
+ (WebCore::RenderBoxModelObject::destroy):
+ (WebCore::RenderBoxModelObject::styleWillChange):
+ (WebCore::RenderBoxModelObject::styleDidChange):
+ (WebCore::RenderBoxModelObject::updateBoxModelInfoFromStyle):
+ * rendering/RenderBoxModelObject.h:
+ (WebCore::RenderBoxModelObject::layer):
+ (WebCore::RenderBoxModelObject::requiresLayer):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutBlock):
+ (WebCore::RenderFlexibleBox::layoutHorizontalBox):
+ (WebCore::RenderFlexibleBox::layoutVerticalBox):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::updateBoxModelInfoFromStyle):
+ (WebCore::RenderInline::styleDidChange):
+ (WebCore::RenderInline::relativePositionedInlineOffset):
+ * rendering/RenderInline.h:
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::setStaticY):
+ (WebCore::RenderLayer::updateLayerPosition):
+ * rendering/RenderLayer.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::setStyle):
+ (WebCore::RenderObject::styleDidChange):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::markContainingBlocksForLayout):
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::paint):
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::destroy):
+ * rendering/bidi.cpp:
+ (WebCore::appendRunsForObject):
+ (WebCore::RenderBlock::layoutInlineChildren):
+ (WebCore::RenderBlock::skipTrailingWhitespace):
+ (WebCore::RenderBlock::skipLeadingWhitespace):
+ (WebCore::RenderBlock::findNextLineBreak):
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::hasStaticX):
+ (WebCore::InheritedFlags::hasStaticY):
+
+2009-02-05 Sam Weinig <sam@webkit.org>
+
+ Fix the windows build.
+
+ * bindings/scripts/CodeGeneratorCOM.pm:
+ * dom/Node.idl:
+
+2009-02-05 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Kevin Decker.
+
+ Update to match Gecko.
+
+ * bridge/npapi.h:
+ * plugins/npfunctions.h:
+
+2009-02-05 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Finish merging EventTargetNode up into Node.
+
+ This also fixes a small recently introduced issue where EventListeners
+ would not be removed from the document if they were attached to comment
+ nodes outside of the documentElement.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * bindings/js/JSEventTargetNodeCustom.cpp: Removed.
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::JSNode::addEventListener):
+ (WebCore::JSNode::removeEventListener):
+ (WebCore::JSNode::pushEventHandlerScope):
+ * bindings/scripts/CodeGenerator.pm:
+ * dom/CharacterData.cpp:
+ (WebCore::CharacterData::CharacterData):
+ (WebCore::CharacterData::rendererIsNeeded):
+ * dom/CharacterData.h:
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::willRemove):
+ (WebCore::ContainerNode::attach):
+ (WebCore::ContainerNode::detach):
+ (WebCore::ContainerNode::insertedIntoDocument):
+ (WebCore::ContainerNode::removedFromDocument):
+ (WebCore::ContainerNode::setFocus):
+ (WebCore::ContainerNode::setActive):
+ (WebCore::ContainerNode::setHovered):
+ (WebCore::dispatchChildInsertionEvents):
+ (WebCore::dispatchChildRemovalEvents):
+ * dom/ContainerNode.h:
+ (WebCore::ContainerNode::ContainerNode):
+ * dom/Document.cpp:
+ (WebCore::Document::removeAllEventListenersFromAllNodes):
+ (WebCore::Document::removeAllDisconnectedNodeEventListeners):
+ (WebCore::Document::setFocusedNode):
+ * dom/EventTargetNode.cpp: Removed.
+ * dom/EventTargetNode.h: Removed.
+ * dom/Node.cpp:
+ (WebCore::Node::scriptExecutionContext):
+ (WebCore::Node::eventListeners):
+ (WebCore::Node::insertedIntoDocument):
+ (WebCore::Node::removedFromDocument):
+ (WebCore::Node::willMoveToNewOwnerDocument):
+ (WebCore::Node::didMoveToNewOwnerDocument):
+ (WebCore::updateSVGElementInstancesAfterEventListenerChange):
+ (WebCore::Node::addEventListener):
+ (WebCore::Node::removeEventListener):
+ (WebCore::Node::removeAllEventListenersSlowCase):
+ (WebCore::Node::handleLocalEvents):
+ (WebCore::eventTargetAsSVGElementInstance):
+ (WebCore::eventTargetRespectingSVGTargetRules):
+ (WebCore::Node::dispatchEvent):
+ (WebCore::Node::dispatchGenericEvent):
+ (WebCore::Node::dispatchSubtreeModifiedEvent):
+ (WebCore::Node::dispatchWindowEvent):
+ (WebCore::Node::dispatchUIEvent):
+ (WebCore::Node::dispatchKeyEvent):
+ (WebCore::Node::dispatchMouseEvent):
+ (WebCore::Node::dispatchSimulatedMouseEvent):
+ (WebCore::Node::dispatchSimulatedClick):
+ (WebCore::Node::dispatchWheelEvent):
+ (WebCore::Node::dispatchWebKitAnimationEvent):
+ (WebCore::Node::dispatchWebKitTransitionEvent):
+ (WebCore::Node::dispatchFocusEvent):
+ (WebCore::Node::dispatchBlurEvent):
+ (WebCore::Node::dispatchEventForType):
+ (WebCore::Node::dispatchProgressEvent):
+ (WebCore::Node::dispatchStorageEvent):
+ (WebCore::Node::removeInlineEventListenerForType):
+ (WebCore::Node::setInlineEventListenerForType):
+ (WebCore::Node::setInlineEventListenerForTypeAndAttribute):
+ (WebCore::Node::inlineEventListenerForType):
+ (WebCore::Node::disabled):
+ (WebCore::Node::defaultEventHandler):
+ (WebCore::Node::onabort):
+ (WebCore::Node::setOnabort):
+ (WebCore::Node::onblur):
+ (WebCore::Node::setOnblur):
+ (WebCore::Node::onchange):
+ (WebCore::Node::setOnchange):
+ (WebCore::Node::onclick):
+ (WebCore::Node::setOnclick):
+ (WebCore::Node::oncontextmenu):
+ (WebCore::Node::setOncontextmenu):
+ (WebCore::Node::ondblclick):
+ (WebCore::Node::setOndblclick):
+ (WebCore::Node::onerror):
+ (WebCore::Node::setOnerror):
+ (WebCore::Node::onfocus):
+ (WebCore::Node::setOnfocus):
+ (WebCore::Node::oninput):
+ (WebCore::Node::setOninput):
+ (WebCore::Node::onkeydown):
+ (WebCore::Node::setOnkeydown):
+ (WebCore::Node::onkeypress):
+ (WebCore::Node::setOnkeypress):
+ (WebCore::Node::onkeyup):
+ (WebCore::Node::setOnkeyup):
+ (WebCore::Node::onload):
+ (WebCore::Node::setOnload):
+ (WebCore::Node::onmousedown):
+ (WebCore::Node::setOnmousedown):
+ (WebCore::Node::onmousemove):
+ (WebCore::Node::setOnmousemove):
+ (WebCore::Node::onmouseout):
+ (WebCore::Node::setOnmouseout):
+ (WebCore::Node::onmouseover):
+ (WebCore::Node::setOnmouseover):
+ (WebCore::Node::onmouseup):
+ (WebCore::Node::setOnmouseup):
+ (WebCore::Node::onmousewheel):
+ (WebCore::Node::setOnmousewheel):
+ (WebCore::Node::onbeforecut):
+ (WebCore::Node::setOnbeforecut):
+ (WebCore::Node::oncut):
+ (WebCore::Node::setOncut):
+ (WebCore::Node::onbeforecopy):
+ (WebCore::Node::setOnbeforecopy):
+ (WebCore::Node::oncopy):
+ (WebCore::Node::setOncopy):
+ (WebCore::Node::onbeforepaste):
+ (WebCore::Node::setOnbeforepaste):
+ (WebCore::Node::onpaste):
+ (WebCore::Node::setOnpaste):
+ (WebCore::Node::ondragenter):
+ (WebCore::Node::setOndragenter):
+ (WebCore::Node::ondragover):
+ (WebCore::Node::setOndragover):
+ (WebCore::Node::ondragleave):
+ (WebCore::Node::setOndragleave):
+ (WebCore::Node::ondrop):
+ (WebCore::Node::setOndrop):
+ (WebCore::Node::ondragstart):
+ (WebCore::Node::setOndragstart):
+ (WebCore::Node::ondrag):
+ (WebCore::Node::setOndrag):
+ (WebCore::Node::ondragend):
+ (WebCore::Node::setOndragend):
+ (WebCore::Node::onreset):
+ (WebCore::Node::setOnreset):
+ (WebCore::Node::onresize):
+ (WebCore::Node::setOnresize):
+ (WebCore::Node::onscroll):
+ (WebCore::Node::setOnscroll):
+ (WebCore::Node::onsearch):
+ (WebCore::Node::setOnsearch):
+ (WebCore::Node::onselect):
+ (WebCore::Node::setOnselect):
+ (WebCore::Node::onselectstart):
+ (WebCore::Node::setOnselectstart):
+ (WebCore::Node::onsubmit):
+ (WebCore::Node::setOnsubmit):
+ (WebCore::Node::onunload):
+ (WebCore::Node::setOnunload):
+ * dom/Node.h:
+ * editing/Editor.cpp:
+ (WebCore::Editor::dispatchCPPEvent):
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::handleLocalEvents):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::defaultEventHandler):
+ * html/HTMLTokenizer.cpp:
+ (WebCore::HTMLTokenizer::notifyFinished):
+ * loader/MediaDocument.cpp:
+ (WebCore::MediaDocument::defaultEventHandler):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::mouseButtonListener):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::dispatchDragEvent):
+ (WebCore::EventHandler::updateMouseEventTargetNode):
+ (WebCore::EventHandler::dispatchMouseEvent):
+ (WebCore::EventHandler::handleWheelEvent):
+ (WebCore::EventHandler::canMouseDownStartSelect):
+ (WebCore::EventHandler::canMouseDragExtendSelect):
+ (WebCore::eventTargetNodeForDocument):
+ (WebCore::EventHandler::keyEvent):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::scheduleEvent):
+ (WebCore::FrameView::updateOverflowStatus):
+ * page/FrameView.h:
+ * page/Page.cpp:
+ (WebCore::networkStateChanged):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::scrollToOffset):
+ (WebCore::RenderLayer::updateOverflowStatus):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::valueChanged):
+ * rendering/RenderMedia.h:
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::selectionChanged):
+ * svg/SVGElementInstance.h:
+ (WebCore::SVGElementInstance::toNode):
+ * xml/XPathExpression.cpp:
+ (WebCore::XPathExpression::evaluate):
+ * xml/XPathResult.cpp:
+ (WebCore::XPathResult::XPathResult):
+
+2009-02-05 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix the Qt build now that EventTargetNode.idl was removed in r40672.
+
+ * WebCore.pro:
+
+2009-02-05 Scott Violet <sky@google.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 23462: Add RGB -> CMYK conversion algorithm
+ <https://bugs.webkit.org/show_bug.cgi?id=23462>
+
+ Adds an RGB -> CMYK converter. This isn't perfect, but better than
+ nothing.
+
+ * html/CanvasStyle.cpp:
+ (WebCore::CanvasStyle::applyStrokeColor):
+ (WebCore::CanvasStyle::applyFillColor):
+ (WebCore::CanvasStyle::cmykToRGB):
+ * html/CanvasStyle.h:
+
+2009-02-04 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ First stage of merging EventTargetNode up into Node. The intent of this change
+ is to both simplify the inheritance hierarchy (at the same time making it more
+ closely match the spec which states that all Nodes are EventTargets) and save
+ 4 bytes per Node that the polymorphic multiple-inheritance was costing us.
+
+ This does the bare minimum to get things compiling, the next patch will clean
+
+ * DerivedSources.make:
+ * WebCore.base.exp:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSDocumentCustom.cpp:
+ (WebCore::JSDocument::mark):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSLazyEventListener::parseCode):
+ * bindings/js/JSEventTarget.cpp:
+ (WebCore::toEventTarget):
+ * bindings/js/JSEventTarget.h:
+ * bindings/js/JSEventTargetNodeCustom.cpp:
+ (WebCore::JSNode::addEventListener):
+ (WebCore::JSNode::removeEventListener):
+ (WebCore::JSNode::pushEventHandlerScope):
+ * bindings/js/JSStyleSheetCustom.cpp:
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * bindings/scripts/CodeGeneratorObjC.pm:
+ * dom/Attr.idl:
+ * dom/CharacterData.h:
+ * dom/CharacterData.idl:
+ * dom/Document.idl:
+ * dom/DocumentFragment.idl:
+ * dom/Element.idl:
+ * dom/EventTarget.cpp:
+ (WebCore::EventTarget::toNode):
+ * dom/EventTarget.h:
+ * dom/EventTarget.idl:
+ * dom/EventTargetNode.cpp:
+ (WebCore::Node::scriptExecutionContext):
+ (WebCore::Node::eventListeners):
+ (WebCore::Node::insertedIntoDocument):
+ (WebCore::Node::removedFromDocument):
+ (WebCore::Node::willMoveToNewOwnerDocument):
+ (WebCore::Node::didMoveToNewOwnerDocument):
+ (WebCore::Node::addEventListener):
+ (WebCore::Node::removeEventListener):
+ (WebCore::Node::removeAllEventListenersSlowCase):
+ (WebCore::Node::handleLocalEvents):
+ (WebCore::Node::dispatchEvent):
+ (WebCore::Node::dispatchGenericEvent):
+ (WebCore::Node::dispatchSubtreeModifiedEvent):
+ (WebCore::Node::dispatchWindowEvent):
+ (WebCore::Node::dispatchUIEvent):
+ (WebCore::Node::dispatchKeyEvent):
+ (WebCore::Node::dispatchMouseEvent):
+ (WebCore::Node::dispatchSimulatedMouseEvent):
+ (WebCore::Node::dispatchSimulatedClick):
+ (WebCore::Node::dispatchWheelEvent):
+ (WebCore::Node::dispatchWebKitAnimationEvent):
+ (WebCore::Node::dispatchWebKitTransitionEvent):
+ (WebCore::Node::dispatchFocusEvent):
+ (WebCore::Node::dispatchBlurEvent):
+ (WebCore::Node::dispatchEventForType):
+ (WebCore::Node::dispatchProgressEvent):
+ (WebCore::Node::dispatchStorageEvent):
+ (WebCore::Node::removeInlineEventListenerForType):
+ (WebCore::Node::setInlineEventListenerForType):
+ (WebCore::Node::setInlineEventListenerForTypeAndAttribute):
+ (WebCore::Node::inlineEventListenerForType):
+ (WebCore::Node::disabled):
+ (WebCore::Node::defaultEventHandler):
+ (WebCore::Node::onabort):
+ (WebCore::Node::setOnabort):
+ (WebCore::Node::onblur):
+ (WebCore::Node::setOnblur):
+ (WebCore::Node::onchange):
+ (WebCore::Node::setOnchange):
+ (WebCore::Node::onclick):
+ (WebCore::Node::setOnclick):
+ (WebCore::Node::oncontextmenu):
+ (WebCore::Node::setOncontextmenu):
+ (WebCore::Node::ondblclick):
+ (WebCore::Node::setOndblclick):
+ (WebCore::Node::onerror):
+ (WebCore::Node::setOnerror):
+ (WebCore::Node::onfocus):
+ (WebCore::Node::setOnfocus):
+ (WebCore::Node::oninput):
+ (WebCore::Node::setOninput):
+ (WebCore::Node::onkeydown):
+ (WebCore::Node::setOnkeydown):
+ (WebCore::Node::onkeypress):
+ (WebCore::Node::setOnkeypress):
+ (WebCore::Node::onkeyup):
+ (WebCore::Node::setOnkeyup):
+ (WebCore::Node::onload):
+ (WebCore::Node::setOnload):
+ (WebCore::Node::onmousedown):
+ (WebCore::Node::setOnmousedown):
+ (WebCore::Node::onmousemove):
+ (WebCore::Node::setOnmousemove):
+ (WebCore::Node::onmouseout):
+ (WebCore::Node::setOnmouseout):
+ (WebCore::Node::onmouseover):
+ (WebCore::Node::setOnmouseover):
+ (WebCore::Node::onmouseup):
+ (WebCore::Node::setOnmouseup):
+ (WebCore::Node::onmousewheel):
+ (WebCore::Node::setOnmousewheel):
+ (WebCore::Node::onbeforecut):
+ (WebCore::Node::setOnbeforecut):
+ (WebCore::Node::oncut):
+ (WebCore::Node::setOncut):
+ (WebCore::Node::onbeforecopy):
+ (WebCore::Node::setOnbeforecopy):
+ (WebCore::Node::oncopy):
+ (WebCore::Node::setOncopy):
+ (WebCore::Node::onbeforepaste):
+ (WebCore::Node::setOnbeforepaste):
+ (WebCore::Node::onpaste):
+ (WebCore::Node::setOnpaste):
+ (WebCore::Node::ondragenter):
+ (WebCore::Node::setOndragenter):
+ (WebCore::Node::ondragover):
+ (WebCore::Node::setOndragover):
+ (WebCore::Node::ondragleave):
+ (WebCore::Node::setOndragleave):
+ (WebCore::Node::ondrop):
+ (WebCore::Node::setOndrop):
+ (WebCore::Node::ondragstart):
+ (WebCore::Node::setOndragstart):
+ (WebCore::Node::ondrag):
+ (WebCore::Node::setOndrag):
+ (WebCore::Node::ondragend):
+ (WebCore::Node::setOndragend):
+ (WebCore::Node::onreset):
+ (WebCore::Node::setOnreset):
+ (WebCore::Node::onresize):
+ (WebCore::Node::setOnresize):
+ (WebCore::Node::onscroll):
+ (WebCore::Node::setOnscroll):
+ (WebCore::Node::onsearch):
+ (WebCore::Node::setOnsearch):
+ (WebCore::Node::onselect):
+ (WebCore::Node::setOnselect):
+ (WebCore::Node::onselectstart):
+ (WebCore::Node::setOnselectstart):
+ (WebCore::Node::onsubmit):
+ (WebCore::Node::setOnsubmit):
+ (WebCore::Node::onunload):
+ (WebCore::Node::setOnunload):
+ * dom/EventTargetNode.h:
+ (WebCore::toEventTargetNode):
+ (WebCore::EventTargetNodeCast):
+ * dom/EventTargetNode.idl: Removed.
+ * dom/MouseEvent.cpp:
+ (WebCore::MouseEvent::MouseEvent):
+ (WebCore::MouseEvent::initMouseEvent):
+ (WebCore::MouseEvent::toElement):
+ (WebCore::MouseEvent::fromElement):
+ * dom/MouseEvent.h:
+ (WebCore::MouseEvent::create):
+ (WebCore::MouseEvent::relatedTarget):
+ * dom/Node.cpp:
+ (WebCore::Node::~Node):
+ * dom/Node.h:
+ (WebCore::Node::isEventTargetNode):
+ (WebCore::Node::toNode):
+ (WebCore::Node::removeAllEventListeners):
+ (WebCore::Node::refEventTarget):
+ (WebCore::Node::derefEventTarget):
+ * dom/Node.idl:
+ * page/EventHandler.h:
+ * page/FrameView.h:
+ * xml/XPathResult.h:
+ (WebCore::XPathResult::create):
+
+2009-02-04 David Hyatt <hyatt@apple.com>
+
+ Convert RenderLayer from having a RenderBox* m_renderer to having a RenderBoxModelObject*. The
+ container-relative repaint methods all had to be changed as a result to use RenderBoxModelObject* also.
+
+ All of RenderLayer.cpp now uses what will be the new style for dealing with an object that can be a block
+ or an inline flow. x()/y()/width()/height() can't be queried on an inline flow, nor can many other
+ properties (like scrollWidth() / scrollHeight()), so the code has to be tightened up to convert to RenderBox
+ under the right conditions.
+
+ There was a bogus subtraction of renderer()->y() in localBounding box for RenderInlines. Since y was always
+ 0, this subtraction wasn't necessary. It has been removed.
+
+ Reviewed by Adam Roben
+
+ * page/animation/AnimationBase.cpp:
+ * rendering/RenderBR.h:
+ (WebCore::RenderBR::selectionRectForRepaint):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::selectionGapRectsForRepaint):
+ (WebCore::RenderBlock::rectWithOutlineForRepaint):
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::selectionRectForRepaint):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::outlineBoundsForRepaint):
+ (WebCore::RenderBox::localToContainerQuad):
+ (WebCore::RenderBox::clippedOverflowRectForRepaint):
+ (WebCore::RenderBox::computeRectForRepaint):
+ * rendering/RenderBox.h:
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::relativePositionOffsetX):
+ (WebCore::RenderBoxModelObject::relativePositionOffsetY):
+ * rendering/RenderBoxModelObject.h:
+ (WebCore::RenderBoxModelObject::relativePositionOffset):
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::computeRectForRepaint):
+ * rendering/RenderForeignObject.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::clippedOverflowRectForRepaint):
+ (WebCore::RenderInline::rectWithOutlineForRepaint):
+ * rendering/RenderInline.h:
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::RenderLayer):
+ (WebCore::RenderLayer::updateLayerPositions):
+ (WebCore::RenderLayer::updateTransform):
+ (WebCore::RenderLayer::setHasVisibleContent):
+ (WebCore::RenderLayer::updateLayerPosition):
+ (WebCore::RenderLayer::scrollToOffset):
+ (WebCore::RenderLayer::scrollRectToVisible):
+ (WebCore::resizerCornerRect):
+ (WebCore::RenderLayer::scrollbarCornerPresent):
+ (WebCore::RenderLayer::invalidateScrollbarRect):
+ (WebCore::RenderLayer::positionOverflowControls):
+ (WebCore::RenderLayer::computeScrollDimensions):
+ (WebCore::RenderLayer::updateScrollInfoAfterLayout):
+ (WebCore::RenderLayer::paintScrollCorner):
+ (WebCore::RenderLayer::paintResizer):
+ (WebCore::RenderLayer::isPointInResizeControl):
+ (WebCore::RenderLayer::hitTestOverflowControls):
+ (WebCore::RenderLayer::paintLayer):
+ (WebCore::RenderLayer::hitTestLayer):
+ (WebCore::RenderLayer::localBoundingBox):
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::renderer):
+ (WebCore::RenderLayer::renderBox):
+ (WebCore::RenderLayer::renderBoxX):
+ (WebCore::RenderLayer::renderBoxY):
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::selectionRectForRepaint):
+ * rendering/RenderListMarker.h:
+ * rendering/RenderMarquee.cpp:
+ (WebCore::RenderMarquee::computePosition):
+ (WebCore::RenderMarquee::timerFired):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::containerForRepaint):
+ (WebCore::RenderObject::repaintUsingContainer):
+ (WebCore::RenderObject::repaint):
+ (WebCore::RenderObject::repaintRectangle):
+ (WebCore::RenderObject::repaintAfterLayoutIfNeeded):
+ (WebCore::RenderObject::rectWithOutlineForRepaint):
+ (WebCore::RenderObject::clippedOverflowRectForRepaint):
+ (WebCore::RenderObject::computeRectForRepaint):
+ (WebCore::RenderObject::localToContainerQuad):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::selectionRectForRepaint):
+ (WebCore::RenderObject::outlineBoundsForRepaint):
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::clippedOverflowRectForRepaint):
+ (WebCore::RenderPath::outlineBoundsForRepaint):
+ * rendering/RenderPath.h:
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::selectionRectForRepaint):
+ (WebCore::RenderReplaced::clippedOverflowRectForRepaint):
+ * rendering/RenderReplaced.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::clippedOverflowRectForRepaint):
+ (WebCore::RenderSVGContainer::outlineBoundsForRepaint):
+ * rendering/RenderSVGContainer.h:
+ * rendering/RenderSVGHiddenContainer.cpp:
+ (WebCore::RenderSVGHiddenContainer::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGHiddenContainer.h:
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGImage.h:
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::selectionRectForRepaint):
+ (WebCore::RenderSVGInlineText::computeRepaintRectForRange):
+ * rendering/RenderSVGInlineText.h:
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGRoot.h:
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGText.h:
+ * rendering/RenderSelectionInfo.h:
+ (WebCore::RenderSelectionInfoBase::repaintContainer):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::clippedOverflowRectForRepaint):
+ (WebCore::RenderTableCell::computeRectForRepaint):
+ (WebCore::RenderTableCell::localToContainerQuad):
+ * rendering/RenderTableCell.h:
+ * rendering/RenderTableCol.cpp:
+ (WebCore::RenderTableCol::clippedOverflowRectForRepaint):
+ * rendering/RenderTableCol.h:
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::clippedOverflowRectForRepaint):
+ * rendering/RenderTableRow.h:
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::clippedOverflowRectForRepaint):
+ (WebCore::RenderText::selectionRectForRepaint):
+ * rendering/RenderText.h:
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::write):
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::localToContainerQuad):
+ (WebCore::RenderView::computeRectForRepaint):
+ * rendering/RenderView.h:
+
+2009-02-05 Alexey Proskuryakov <ap@webkit.org>
+
+ Build fix.
+
+ * page/animation/KeyframeAnimation.h: A function prototype had two "fromStyle" arguments.
+
+2009-02-05 Yael Aharon <yael.aharon@nokia.com>
+
+ Reviewed by Alexey Proskuryakov.
+ Landed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23733
+
+ Use a 2 arguments constructor for KURL to avoid ASSERT failure.
+
+ * page/SecurityOrigin.cpp:
+ (WebCore::SecurityOrigin::createFromDatabaseIdentifier):
+
+2009-02-04 Feng Qian <feng@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Add Android-specific files to WebCore/editing directory.
+ https://bugs.webkit.org/show_bug.cgi?id=23294
+
+ * editing/android: Added.
+ * editing/android/EditorAndroid.cpp: Added.
+ (WebCore::Editor::newGeneralClipboard):
+
+2009-02-04 Dean Jackson <dino@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Remove -webkit-animation-play-state
+ The AnimationController still has the code to execute the property, but
+ it is no longer parsed or recorded.
+ https://bugs.webkit.org/show_bug.cgi?id=22907
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::):
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseValue):
+ (WebCore::CSSParser::parseAnimationProperty):
+ * css/CSSParser.h:
+ * css/CSSPropertyNames.in:
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::applyProperty):
+ * css/CSSStyleSelector.h:
+ * platform/animation/Animation.h:
+ * rendering/style/RenderStyleConstants.h:
+
+2009-02-04 Tor Arne Vestbø <tavestbo@trolltech.com>
+
+ Reviewed by Darin Adler.
+
+ Make sure we don't load on removing the media element from the document
+ https://bugs.webkit.org/show_bug.cgi?id=22105
+
+ Test: media/remove-from-document-no-load.html
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::removedFromDocument):
+
+2009-02-04 David Hyatt <hyatt@apple.com>
+
+ Add a new RenderBoxModelObject class that will eventually act as the direct base class for RenderInlines. For
+ now just adding the class and putting it in between RenderObject and RenderBox in the hierarchy. RenderInline remains
+ derived from RenderBox for now.
+
+ Reviewed by Sam Weinig
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::RenderBox):
+ (WebCore::RenderBox::destroy):
+ (WebCore::RenderBox::styleWillChange):
+ (WebCore::RenderBox::styleDidChange):
+ (WebCore::RenderBox::computeRectForRepaint):
+ * rendering/RenderBox.h:
+ * rendering/RenderBoxModelObject.cpp: Added.
+ (WebCore::RenderBoxModelObject::RenderBoxModelObject):
+ (WebCore::RenderBoxModelObject::~RenderBoxModelObject):
+ * rendering/RenderBoxModelObject.h: Added.
+ * rendering/RenderObject.h:
+
+2009-02-04 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ Added accelerated animation support to AnimationController and friends. The primary
+ changes are:
+ * accelerated animations get their start time from the compositing engine, so we
+ wait for a callback (notifyAnimationStarted()) in order to get the start time.
+ * if software and accelerated animations start in the same cycle, they all need
+ to use the same start time, which is that of the accelerated animations.
+
+ Added AnimationControllerPrivate to preserve the encapsulation under
+ AnimationController.
+
+ * GNUmakefile.am:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * page/animation/AnimationBase.cpp:
+ (WebCore::PropertyWrapperBase::animationIsAccelerated):
+ (WebCore::PropertyWrapperAcceleratedOpacity::PropertyWrapperAcceleratedOpacity):
+ (WebCore::PropertyWrapperAcceleratedOpacity::animationIsAccelerated):
+ (WebCore::PropertyWrapperAcceleratedOpacity::blend):
+ (WebCore::PropertyWrapperAcceleratedTransform::PropertyWrapperAcceleratedTransform):
+ (WebCore::PropertyWrapperAcceleratedTransform::animationIsAccelerated):
+ (WebCore::PropertyWrapperAcceleratedTransform::blend):
+ (WebCore::ensurePropertyMap):
+ (WebCore::AnimationBase::AnimationBase):
+ (WebCore::AnimationBase::~AnimationBase):
+ (WebCore::AnimationBase::blendProperties):
+ (WebCore::AnimationBase::animationOfPropertyIsAccelerated):
+ (WebCore::AnimationBase::updateStateMachine):
+ (WebCore::AnimationBase::fireAnimationEventsIfNeeded):
+ (WebCore::AnimationBase::willNeedService):
+ (WebCore::AnimationBase::getTimeToNextEvent):
+ (WebCore::AnimationBase::goIntoEndingOrLoopingState):
+ (WebCore::AnimationBase::beginAnimationUpdateTime):
+ * page/animation/AnimationBase.h:
+ (WebCore::AnimationBase::onAnimationStartResponse):
+ (WebCore::AnimationBase::getAnimatedStyle):
+ (WebCore::AnimationBase::isAnimatingProperty):
+ (WebCore::AnimationBase::endAnimation):
+ (WebCore::AnimationBase::isFallbackAnimating):
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::AnimationControllerPrivate):
+ (WebCore::AnimationControllerPrivate::accessCompositeAnimation):
+ (WebCore::AnimationControllerPrivate::addNodeChangeToDispatch):
+ (WebCore::AnimationControllerPrivate::animationTimerFired):
+ (WebCore::AnimationControllerPrivate::pauseAnimationAtTime):
+ (WebCore::AnimationControllerPrivate::pauseTransitionAtTime):
+ (WebCore::AnimationControllerPrivate::beginAnimationUpdateTime):
+ (WebCore::AnimationControllerPrivate::getAnimatedStyleForRenderer):
+ (WebCore::AnimationControllerPrivate::styleAvailable):
+ (WebCore::AnimationControllerPrivate::addToStartTimeResponseWaitList):
+ (WebCore::AnimationControllerPrivate::removeFromStartTimeResponseWaitList):
+ (WebCore::AnimationControllerPrivate::startTimeResponse):
+ (WebCore::AnimationController::getAnimatedStyleForRenderer):
+ (WebCore::AnimationController::notifyAnimationStarted):
+ (WebCore::AnimationController::endAnimationUpdate):
+ * page/animation/AnimationController.h:
+ * page/animation/AnimationControllerPrivate.h: Added.
+ (WebCore::AnimationControllerPrivate::hasAnimations):
+ (WebCore::AnimationControllerPrivate::setBeginAnimationUpdateTime):
+ (WebCore::AnimationControllerPrivate::endAnimationUpdate):
+ (WebCore::AnimationControllerPrivate::receivedStartTimeResponse):
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimationPrivate::CompositeAnimationPrivate):
+ (WebCore::CompositeAnimationPrivate::animationControllerPriv):
+ (WebCore::CompositeAnimationPrivate::updateTransitions):
+ (WebCore::CompositeAnimationPrivate::updateKeyframeAnimations):
+ (WebCore::CompositeAnimationPrivate::animate):
+ (WebCore::CompositeAnimationPrivate::getAnimatedStyle):
+ (WebCore::CompositeAnimationPrivate::addToStartTimeResponseWaitList):
+ (WebCore::CompositeAnimationPrivate::removeFromStartTimeResponseWaitList):
+ (WebCore::CompositeAnimation::CompositeAnimation):
+ (WebCore::CompositeAnimation::animationControllerPriv):
+ (WebCore::CompositeAnimation::getAnimatedStyle):
+ (WebCore::CompositeAnimation::addToStartTimeResponseWaitList):
+ (WebCore::CompositeAnimation::removeFromStartTimeResponseWaitList):
+ * page/animation/CompositeAnimation.h:
+ (WebCore::CompositeAnimation::create):
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::shouldSendEventForListener):
+ (WebCore::ImplicitAnimation::animate):
+ (WebCore::ImplicitAnimation::getAnimatedStyle):
+ (WebCore::ImplicitAnimation::startAnimation):
+ (WebCore::ImplicitAnimation::endAnimation):
+ (WebCore::ImplicitAnimation::sendTransitionEvent):
+ (WebCore::ImplicitAnimation::willNeedService):
+ * page/animation/ImplicitAnimation.h:
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::getKeyframeAnimationInterval):
+ (WebCore::KeyframeAnimation::animate):
+ (WebCore::KeyframeAnimation::getAnimatedStyle):
+ (WebCore::KeyframeAnimation::startAnimation):
+ (WebCore::KeyframeAnimation::endAnimation):
+ (WebCore::KeyframeAnimation::shouldSendEventForListener):
+ (WebCore::KeyframeAnimation::sendAnimationEvent):
+ (WebCore::KeyframeAnimation::willNeedService):
+ * page/animation/KeyframeAnimation.h:
+ * platform/graphics/GraphicsLayerClient.h:
+ * platform/graphics/mac/GraphicsLayerCA.mm:
+ (-[WebAnimationDelegate animationDidStart:]):
+ * rendering/RenderLayerBacking.h:
+
+2009-02-04 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Not reviewed, build fix.
+
+ Remove duplicate definition of msSans in FontCache::alternateFamilyName.
+
+ * platform/graphics/FontCache.cpp:
+ (WebCore::alternateFamilyName):
+
+2009-02-04 Eric Seidel <eric@webkit.org>
+
+ Reviewed by George Staikos.
+
+ Reverse the meaning of the if check so that Android
+ (dpad devices) do not scroll on focus and normal platforms do
+ http://trac.webkit.org/changeset/40647
+
+ This was caught by George Staikos, and I wrote the patch.
+
+ * dom/Element.cpp:
+ (WebCore::Element::updateFocusAppearance):
+
+2009-02-04 David Hyatt <hyatt@apple.com>
+
+ Eliminate RenderContainer.
+
+ Reviewed by Sam and Anders
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::RenderBlock):
+ (WebCore::RenderBlock::destroy):
+ (WebCore::RenderBlock::styleWillChange):
+ (WebCore::RenderBlock::styleDidChange):
+ (WebCore::RenderBlock::addChild):
+ (WebCore::RenderBlock::dirtyLineBoxes):
+ (WebCore::RenderBlock::createInlineBox):
+ (WebCore::RenderBlock::removeChild):
+ (WebCore::RenderBlock::setSelectionState):
+ (WebCore::RenderBlock::avoidsFloats):
+ (WebCore::RenderBlock::positionForCoordinates):
+ (WebCore::RenderBlock::calcInlinePrefWidths):
+ (WebCore::RenderBlock::baselinePosition):
+ (WebCore::RenderBlock::getBaselineOfFirstLineBox):
+ (WebCore::RenderBlock::getBaselineOfLastLineBox):
+ (WebCore::RenderBlock::rectWithOutlineForRepaint):
+ (WebCore::RenderBlock::hoverAncestor):
+ (WebCore::RenderBlock::updateDragState):
+ (WebCore::RenderBlock::localCaretRect):
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::virtualChildren):
+ (WebCore::RenderBlock::children):
+ * rendering/RenderContainer.cpp: Removed.
+ * rendering/RenderContainer.h: Removed.
+ * rendering/RenderFrameSet.cpp:
+ (WebCore::RenderFrameSet::RenderFrameSet):
+ (WebCore::RenderFrameSet::nodeAtPoint):
+ (WebCore::RenderFrameSet::layout):
+ * rendering/RenderFrameSet.h:
+ (WebCore::RenderFrameSet::virtualChildren):
+ (WebCore::RenderFrameSet::children):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::RenderInline):
+ (WebCore::RenderInline::destroy):
+ (WebCore::RenderInline::styleDidChange):
+ (WebCore::nextContinuation):
+ (WebCore::RenderInline::continuationBefore):
+ (WebCore::RenderInline::addChildIgnoringContinuation):
+ (WebCore::RenderInline::splitInlines):
+ (WebCore::RenderInline::splitFlow):
+ (WebCore::RenderInline::addChildToContinuation):
+ (WebCore::RenderInline::offsetLeft):
+ (WebCore::RenderInline::offsetTop):
+ (WebCore::RenderInline::positionForCoordinates):
+ (WebCore::RenderInline::clippedOverflowRectForRepaint):
+ (WebCore::RenderInline::rectWithOutlineForRepaint):
+ (WebCore::RenderInline::updateDragState):
+ (WebCore::RenderInline::childBecameNonInline):
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::virtualChildren):
+ (WebCore::RenderInline::children):
+ (WebCore::RenderInline::continuation):
+ (WebCore::RenderInline::setContinuation):
+ * rendering/RenderLineBoxList.h:
+ * rendering/RenderObject.h:
+ * rendering/RenderObjectChildList.h:
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::computeRepaintRectForRange):
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::RenderSVGRoot):
+ (WebCore::RenderSVGRoot::applyContentTransforms):
+ (WebCore::RenderSVGRoot::paint):
+ (WebCore::RenderSVGRoot::absoluteTransform):
+ (WebCore::RenderSVGRoot::nodeAtPoint):
+ (WebCore::RenderSVGRoot::position):
+ * rendering/RenderSVGRoot.h:
+ (WebCore::RenderSVGRoot::virtualChildren):
+ (WebCore::RenderSVGRoot::children):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::absoluteRects):
+ (WebCore::RenderSVGText::absoluteQuads):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::addChild):
+ (WebCore::RenderTable::removeChild):
+ * rendering/RenderTableCol.cpp:
+ (WebCore::RenderTableCol::RenderTableCol):
+ * rendering/RenderTableCol.h:
+ (WebCore::RenderTableCol::virtualChildren):
+ (WebCore::RenderTableCol::children):
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::RenderTableRow):
+ (WebCore::RenderTableRow::destroy):
+ (WebCore::RenderTableRow::styleWillChange):
+ (WebCore::RenderTableRow::addChild):
+ * rendering/RenderTableRow.h:
+ (WebCore::RenderTableRow::virtualChildren):
+ (WebCore::RenderTableRow::children):
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::RenderTableSection):
+ (WebCore::RenderTableSection::destroy):
+ (WebCore::RenderTableSection::addChild):
+ (WebCore::RenderTableSection::removeChild):
+ (WebCore::RenderTableSection::lowestPosition):
+ (WebCore::RenderTableSection::rightmostPosition):
+ (WebCore::RenderTableSection::leftmostPosition):
+ * rendering/RenderTableSection.h:
+ (WebCore::RenderTableSection::virtualChildren):
+ (WebCore::RenderTableSection::children):
+
+2009-02-04 Mads Adger <mad@chromium.org>
+
+ Reviewed by Antti Koivisto.
+
+ Bug 23180 Reading freed memory at DocumentLoader::checkForPendingPreloads
+ https://bugs.webkit.org/show_bug.cgi?id=23180
+
+ Added a protector for the document potentially holding on the last reference to the loader we are interating with.
+
+ * loader/loader.cpp:
+ (WebCore::Loader::Host::didFinishLoading):
+ (WebCore::Loader::Host::didFail):
+
+2009-02-04 Cary Clark <caryclark@google.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23163
+ Don't scroll to show current focus on devices that use
+ directional pads for navigation.
+
+ * dom/Element.cpp:
+ (WebCore::Element::updateFocusAppearance):
+
+2009-02-04 Cary Clark <caryclark@google.com>
+
+ Reviewed by Darin Adler.
+
+ Change RenderBlock::columnGap() access permissions from protected to
+ public. ANDROID creates an array of focus rectangles for navigation
+ with a trackball or directional pad, and needs access to the column gap
+ to implement this logic.
+
+ Android has no testing harness @ webkit.org, thus no tests.
+
+ * rendering/RenderBlock.h:
+
+2009-02-04 Cary Clark <caryclark@google.com>
+
+ Reviewed by Darin Adler and Eric Seidel.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=22917
+
+ Add ENABLE_ON_FIRST_TEXTAREA_FOCUS_SELECT_ALL to permit the ANDROID
+ platform to select all when focusing on a textarea. This matches
+ the user interface guidelines other applications on the platform.
+
+ * html/HTMLTextAreaElement.cpp:
+ (WebCore::HTMLTextAreaElement::updateFocusAppearance):
+
+2009-02-04 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Fix for <rdar://problem/6386112> Some inline-elements are not
+ becoming proper dashboard-regions
+
+ RenderInline needs its own implementation of addDashboardRegions
+ because otherwise all of the coordinate calculations are
+ inaccurate.
+
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::addDashboardRegions):
+ * rendering/RenderInline.h:
+ * rendering/RenderObject.h:
+
+2009-02-04 David Hyatt <hyatt@apple.com>
+
+ Move addChild/removeChild from RenderContainer to RenderObject.
+
+ Reviewed by Sam Weinig
+
+ * rendering/RenderContainer.cpp:
+ * rendering/RenderContainer.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::updateListMarkerNumbers):
+ (WebCore::RenderObject::addChild):
+ (WebCore::RenderObject::removeChild):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::addChildIgnoringContinuation):
+ * rendering/RenderSVGContainer.cpp:
+ * rendering/RenderSVGContainer.h:
+
+2009-02-04 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Sam Weinig
+
+ <rdar://problem/3541409> - Further HistoryItem / BF cache cleanup
+
+ * history/CachedFrame.cpp:
+ (WebCore::CachedFrame::CachedFrame):
+ (WebCore::CachedFrame::restore):
+ * history/CachedFrame.h:
+
+ * history/CachedPage.cpp:
+ (WebCore::CachedPage::restore):
+ * history/CachedPage.h:
+ (WebCore::CachedPage::mainFrameView):
+
+ * history/HistoryItem.cpp:
+ (WebCore::HistoryItem::HistoryItem):
+ (WebCore::HistoryItem::~HistoryItem):
+ * history/HistoryItem.h:
+ (WebCore::HistoryItem::isInPageCache):
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::open):
+
+2009-02-04 Peter Kasting <pkasting@google.com>
+
+ Reviewed by David Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23743
+ Fix memory corruption with open-source GIF decoders.
+
+ * platform/image-decoders/ImageDecoder.h:
+ (WebCore::RGBA32Buffer::clear):
+ * platform/image-decoders/gif/GIFImageDecoder.cpp:
+ (WebCore::GIFImageDecoder::clearFrameBufferCache):
+ * platform/image-decoders/skia/GIFImageDecoder.cpp:
+ (WebCore::GIFImageDecoder::clearFrameBufferCache):
+ (WebCore::GIFImageDecoder::initFrameBuffer):
+ * platform/image-decoders/skia/ImageDecoder.h:
+ (WebCore::RGBA32Buffer::clear):
+
+2009-02-04 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23360
+
+ When using accelerated compositing, make repaints use the correct
+ repaint container. Hook up the RenderLayerCompositor in RenderView,
+ and add to RenderView a method that repaints both the view
+ contents, and any intersecting composited layers.
+
+ Make enclosingCompositingLayer() a method on RenderObject, and update
+ the compositor to use that. Add a helper method on the compositor to
+ get the non-self compositing ancestor: ancestorCompositingLayer().
+
+ Call repaintRectangleInViewAndCompositedLayers() in places that don't do
+ container-relative repainting: selection redraw on focus change, caret,
+ and widget updates.
+
+ Fix a bug in RenderLayerCompositor where the m_compositingLayersNeedUpdate flag
+ would get cleared for partial updates, thus preventing subsequent full updates.
+
+ Fix a bug in RenderLayer::ensureBacking() that made new backing every time.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::recomputeCaretRect):
+ (WebCore::SelectionController::invalidateCaretRect):
+ (WebCore::SelectionController::focusedOrActiveStateChanged):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::clippedOverflowRectForRepaint):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::RenderLayer):
+ (WebCore::RenderLayer::compositor):
+ (WebCore::RenderLayer::updateLayerPositions):
+ (WebCore::RenderLayer::removeChild):
+ (WebCore::RenderLayer::ensureBacking):
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::backing):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ (WebCore::RenderLayerBacking::paintIntoLayer):
+ (WebCore::RenderLayerBacking::notifyTransitionStarted):
+ (WebCore::RenderLayerBacking::notifyAnimationStarted):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::updateCompositingLayers):
+ (WebCore::RenderLayerCompositor::updateLayerCompositingState):
+ (WebCore::RenderLayerCompositor::layerWillBeRemoved):
+ (WebCore::RenderLayerCompositor::ancestorCompositingLayer):
+ (WebCore::RenderLayerCompositor::clippedByAncestor):
+ * rendering/RenderLayerCompositor.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::enclosingCompositingLayer):
+ (WebCore::RenderObject::containingBlockWidth):
+ (WebCore::RenderObject::containingBlockHeight):
+ (WebCore::RenderObject::containerForRepaint):
+ (WebCore::RenderObject::repaintUsingContainer):
+ * rendering/RenderObject.h:
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::shouldRepaint):
+ (WebCore::RenderView::repaintViewRectangle):
+ (WebCore::RenderView::repaintRectangleInViewAndCompositedLayers):
+ (WebCore::RenderView::setMaximalOutlineSize):
+ (WebCore::RenderView::usesCompositing):
+ (WebCore::RenderView::compositor):
+ (WebCore::RenderView::didMoveOnscreen):
+ (WebCore::RenderView::willMoveOffscreen):
+ * rendering/RenderView.h:
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::updateWidgetPosition):
+
+2009-02-04 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Add toRenderImage methods for casting RenderObjects to RenderImages. The methods will assert if the object
+ is not a RenderImage. Also add a toRenderImage method that takes a RenderImage but returns void and that
+ is unimplemented. This method will catch anyone trying to do a cast when the object is already a RenderImage.
+
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::defaultEventHandler):
+ * html/HTMLEmbedElement.cpp:
+ (WebCore::HTMLEmbedElement::attach):
+ * html/HTMLImageElement.cpp:
+ (WebCore::HTMLImageElement::parseMappedAttribute):
+ (WebCore::HTMLImageElement::attach):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::parseMappedAttribute):
+ (WebCore::HTMLInputElement::attach):
+ * html/HTMLObjectElement.cpp:
+ (WebCore::HTMLObjectElement::attach):
+ * html/HTMLVideoElement.cpp:
+ (WebCore::HTMLVideoElement::attach):
+ * loader/ImageLoader.cpp:
+ (WebCore::ImageLoader::setImage):
+ (WebCore::ImageLoader::updateFromElement):
+ (WebCore::ImageLoader::notifyFinished):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+ (WebCore::AccessibilityRenderObject::addChildren):
+ * page/DragController.cpp:
+ (WebCore::getCachedImage):
+ (WebCore::getImage):
+ * platform/mac/PasteboardMac.mm:
+ (WebCore::Pasteboard::writeImage):
+ * rendering/RenderImage.h:
+ (WebCore::toRenderImage):
+ * wml/WMLImageElement.cpp:
+ (WebCore::WMLImageElement::parseMappedAttribute):
+ (WebCore::WMLImageElement::attach):
+
+2009-02-04 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Eric Seidel and Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20531
+
+ Make alternateFamilyName customized for Windows and Chromium.
+
+ * platform/graphics/FontCache.cpp:
+ (WebCore::alternateFamilyName):
+
+2009-02-04 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ This comes from Chromium patch (http://codereview.chromium.org/17624).
+
+ Add m_disableFontFallback to UniscriberHelper class and set it
+ to true when filling up glyph pages for non-BMP code points.
+ When it's set true, UniscriberHelper does not do its own font
+ fallback. Neither does it do glyph placement. Font fallback
+ will be taken care of in the simple script font path and glyph
+ placement is not necessary for simple scripts.
+
+ Layout test is missing at the moment due to the lack of freely
+ distributable font covering a non-BMP code page. A test page
+ is available at http://i18nl10n.com/webkit/nonbmp2.html
+
+ See also https://bugs.webkit.org/show_bug.cgi?id=23602
+
+ * platform/graphics/chromium/GlyphPageTreeNodeChromiumWin.cpp:
+ (WebCore::fillNonBMPGlyphs):
+ * platform/graphics/chromium/UniscribeHelper.cpp:
+ (WebCore::UniscribeHelper::UniscribeHelper):
+ (WebCore::UniscribeHelper::shape):
+ (WebCore::UniscribeHelper::fillShapes):
+ * platform/graphics/chromium/UniscribeHelper.h:
+ (WebCore::UniscribeHelper::setDisableFontFallback):
+
+2009-02-04 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Remove some unnecessary #includes of RenderStyle.h
+
+ * css/CSSPrimitiveValueMappings.h:
+ * css/SVGCSSComputedStyleDeclaration.cpp:
+ * dom/Node.h:
+ * rendering/PointerEventsHitRules.h:
+ * rendering/RenderImageGeneratedContent.h:
+ * rendering/RenderMarquee.h:
+ * rendering/RenderScrollbar.h:
+
+2009-02-04 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23657
+ Clean up WebCore/storage IDLs.
+
+ * storage/SQLError.idl: Changed to match spec.
+ * storage/SQLResultSet.idl: Changed to match spec.
+ * storage/SQLStatementCallback.idl: Removed.
+ * storage/SQLStatementErrorCallback.idl: Removed.
+ * storage/SQLTransactionCallback.idl: Removed.
+ * storage/SQLTransactionErrorCallback.idl: Removed.
+
+2009-02-04 David Hyatt <hyatt@apple.com>
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23734, blank content on blogs.msdn.com.
+
+ Add debugging code that will catch the incorrect dirtying of a table section immediately if it happens
+ during calcRowHeight or layoutRows. This should make it possible to discover future bugs where table sections don't
+ paint.
+
+ The bug in blogs.msdn.com, which was caused by a bad setNeedsLayout in RenderLayer::updateScrollInfoAtferLayout. Make
+ sure to do only a local setNeedsLayout inside that function.
+
+ Reviewed by Beth Dakin
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateScrollInfoAfterLayout):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::RenderObject):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isSetNeedsLayoutForbidden):
+ (WebCore::RenderObject::setNeedsLayoutIsForbidden):
+ (WebCore::RenderObject::setNeedsLayout):
+ (WebCore::RenderObject::setChildNeedsLayout):
+ (WebCore::RenderObject::markContainingBlocksForLayout):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::layout):
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::calcRowHeight):
+ (WebCore::RenderTableSection::layoutRows):
+
+2009-02-04 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Rename RenderStyle::Diff to StyleDifference and move it to
+ RenderStyleConstants.h.
+
+ * rendering/RenderBR.cpp:
+ (WebCore::RenderBR::styleDidChange):
+ * rendering/RenderBR.h:
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::styleWillChange):
+ (WebCore::RenderBlock::styleDidChange):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::styleWillChange):
+ (WebCore::RenderBox::styleDidChange):
+ * rendering/RenderBox.h:
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::styleWillChange):
+ (WebCore::RenderButton::styleDidChange):
+ * rendering/RenderButton.h:
+ * rendering/RenderFieldset.cpp:
+ (WebCore::RenderFieldset::styleDidChange):
+ * rendering/RenderFieldset.h:
+ * rendering/RenderFileUploadControl.cpp:
+ (WebCore::RenderFileUploadControl::styleDidChange):
+ * rendering/RenderFileUploadControl.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::styleDidChange):
+ * rendering/RenderInline.h:
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::styleChanged):
+ * rendering/RenderLayer.h:
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::updateLayerCompositingState):
+ (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
+ * rendering/RenderLayerCompositor.h:
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::styleDidChange):
+ * rendering/RenderListBox.h:
+ * rendering/RenderListItem.cpp:
+ (WebCore::RenderListItem::styleDidChange):
+ * rendering/RenderListItem.h:
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::styleWillChange):
+ (WebCore::RenderListMarker::styleDidChange):
+ * rendering/RenderListMarker.h:
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::styleDidChange):
+ * rendering/RenderMenuList.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::setStyle):
+ (WebCore::RenderObject::styleWillChange):
+ (WebCore::RenderObject::styleDidChange):
+ * rendering/RenderObject.h:
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::styleDidChange):
+ * rendering/RenderReplaced.h:
+ * rendering/RenderSVGGradientStop.cpp:
+ (WebCore::RenderSVGGradientStop::styleDidChange):
+ * rendering/RenderSVGGradientStop.h:
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::styleDidChange):
+ * rendering/RenderSVGInlineText.h:
+ * rendering/RenderScrollbarPart.cpp:
+ (WebCore::RenderScrollbarPart::styleWillChange):
+ (WebCore::RenderScrollbarPart::styleDidChange):
+ * rendering/RenderScrollbarPart.h:
+ * rendering/RenderSlider.cpp:
+ (WebCore::RenderSlider::styleDidChange):
+ * rendering/RenderSlider.h:
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::styleDidChange):
+ * rendering/RenderTable.h:
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::styleWillChange):
+ (WebCore::RenderTableCell::styleDidChange):
+ * rendering/RenderTableCell.h:
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::styleWillChange):
+ * rendering/RenderTableRow.h:
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::styleDidChange):
+ * rendering/RenderText.h:
+ (WebCore::RenderText::styleWillChange):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::styleDidChange):
+ * rendering/RenderTextControl.h:
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::styleDidChange):
+ * rendering/RenderTextControlSingleLine.h:
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::styleDidChange):
+ * rendering/RenderWidget.h:
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::diff):
+ (WebCore::RenderStyle::setClip):
+ * rendering/style/RenderStyle.h:
+ * rendering/style/RenderStyleConstants.h:
+ (WebCore::):
+
+2009-02-03 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Move PseudoId enum out of RenderStyle and into RenderStyleConstants.h
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::matchRulesForList):
+ (WebCore::CSSStyleSelector::initForStyleResolve):
+ (WebCore::CSSStyleSelector::SelectorChecker::SelectorChecker):
+ (WebCore::CSSStyleSelector::SelectorChecker::checkSelector):
+ (WebCore::CSSStyleSelector::styleForElement):
+ (WebCore::CSSStyleSelector::pseudoStyleForElement):
+ (WebCore::CSSStyleSelector::checkSelector):
+ (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector):
+ (WebCore::CSSStyleSelector::SelectorChecker::checkScrollbarPseudoClass):
+ (WebCore::CSSStyleSelector::applyProperty):
+ * css/CSSStyleSelector.h:
+ * dom/Node.cpp:
+ (WebCore::Node::diff):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::createScrollbar):
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::paint):
+ * rendering/MediaControlElements.cpp:
+ (WebCore::MediaTextDisplayElement::MediaTextDisplayElement):
+ (WebCore::MediaTimeDisplayElement::MediaTimeDisplayElement):
+ (WebCore::MediaControlInputElement::MediaControlInputElement):
+ (WebCore::MediaControlMuteButtonElement::MediaControlMuteButtonElement):
+ (WebCore::MediaControlPlayButtonElement::MediaControlPlayButtonElement):
+ (WebCore::MediaControlSeekButtonElement::MediaControlSeekButtonElement):
+ (WebCore::MediaControlTimelineElement::MediaControlTimelineElement):
+ (WebCore::MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement):
+ * rendering/MediaControlElements.h:
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::styleDidChange):
+ (WebCore::RenderBlock::updateBeforeAfterContent):
+ (WebCore::RenderBlock::firstLineBlock):
+ (WebCore::RenderBlock::updateFirstLetter):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::isAfterContent):
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::updateBeforeAfterContent):
+ * rendering/RenderButton.h:
+ * rendering/RenderFileUploadControl.cpp:
+ (WebCore::RenderFileUploadControl::createButtonStyle):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::styleDidChange):
+ (WebCore::isAfterContent):
+ (WebCore::RenderInline::addChildIgnoringContinuation):
+ (WebCore::RenderInline::splitInlines):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::createScrollbar):
+ (WebCore::RenderLayer::updateScrollCornerStyle):
+ (WebCore::RenderLayer::updateResizerStyle):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::createScrollbar):
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::createPanel):
+ (WebCore::RenderMedia::createTimelineContainer):
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::createScrollbar):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::selectionBackgroundColor):
+ (WebCore::RenderObject::selectionForegroundColor):
+ (WebCore::RenderObject::firstLineStyleSlowCase):
+ (WebCore::RenderObject::getCachedPseudoStyle):
+ (WebCore::RenderObject::getUncachedPseudoStyle):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isAnonymousBlock):
+ * rendering/RenderObjectChildList.cpp:
+ (WebCore::RenderObjectChildList::destroyLeftoverChildren):
+ (WebCore::beforeAfterContainer):
+ (WebCore::RenderObjectChildList::invalidateCounters):
+ (WebCore::RenderObjectChildList::updateBeforeAfterContent):
+ * rendering/RenderObjectChildList.h:
+ * rendering/RenderScrollbar.cpp:
+ (WebCore::RenderScrollbar::getScrollbarPseudoStyle):
+ (WebCore::pseudoForScrollbarPart):
+ * rendering/RenderScrollbar.h:
+ * rendering/RenderSlider.cpp:
+ (WebCore::RenderSlider::createThumbStyle):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::createInnerTextStyle):
+ (WebCore::RenderTextControlSingleLine::createResultsButtonStyle):
+ (WebCore::RenderTextControlSingleLine::createCancelButtonStyle):
+ (WebCore::RenderTextControlSingleLine::createScrollbar):
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::pseudoBit):
+ * rendering/style/RenderStyle.h:
+ (WebCore::):
+ * rendering/style/RenderStyleConstants.h:
+ (WebCore::):
+
+2009-02-04 David Kilzer <ddkilzer@apple.com>
+
+ CrashTracer: [REGRESSION] 53 crashes in Safari at com.apple.WebCore: WebCore::LegacyWebArchive::create + 2706
+
+ <rdar://problem/6509514>
+
+ Reviewed by Mark Rowe.
+
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ (WebCore::LegacyWebArchive::create): Fix it correctly this time.
+ Check for the value returned from WebCore::IconDatabase::iconForPageURL(),
+ not WebCore::Image::data().
+
+2009-02-04 David Hyatt <hyatt@apple.com>
+
+ Rename removeFromObjectLists and move it into RenderBox, since it only applies to boxes.
+
+ Reviewed by Adam Roben
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::removeFloatingOrPositionedChildFromBlockLists):
+ (WebCore::RenderBox::styleWillChange):
+ * rendering/RenderBox.h:
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::removeChild):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::styleWillChange):
+ * rendering/RenderObject.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::removeChild):
+
+2009-02-04 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23471
+ Fix text-overflow:ellipsis; for RTL case.
+
+ Test: fast/css/text-overflow-ellipses.html
+
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::placeEllipsisBox): Add support for rtl placement.
+ (WebCore::InlineTextBox::paintDecoration): Correctly draw decorations
+ for rtl truncation.
+
+2009-02-04 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23700
+ Upstream local changes to due to unforking of SimpleFontData
+ (corresponds to Chromium check-in http://src.chromium.org/viewvc/chrome?view=rev&revision=8646).
+
+ * platform/graphics/chromium/GlyphPageTreeNodeChromiumWin.cpp:
+ (WebCore::fillBMPGlyphs): Removed extra checks for ZWS chars.
+
+2009-02-04 David Hyatt <hyatt@apple.com>
+
+ <rdar://problem/6554115> REGRESSION (r40475): World leak (JS global object) after viewing a photo on Facebook
+
+ Fix a ginormous leak. (GINORMOUS!) Make sure to disconnect the event listeners attached to the Document,
+ because, like, they point to a lot of stuff... like ... everything...
+
+ Reviewed by Darin Adler
+
+ * dom/Document.cpp:
+ (WebCore::Document::removeAllEventListenersFromAllNodes):
+
+2009-02-04 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23731
+ Add JSCCustom and V8Custom as extended IDL attributes
+
+ This helps avoid having to add #ifdefs to the IDL files to support V8 bindings.
+
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * dom/Document.idl:
+ * dom/Node.idl:
+ * svg/SVGPathSegList.idl:
+ * svg/SVGPointList.idl:
+ * svg/SVGTransformList.idl:
+
+2009-02-04 Dan Bernstein <mitz@apple.com>
+
+ - build fix
+
+ * rendering/RenderImageGeneratedContent.h:
+
+2009-02-04 miggilin <mr.diggilin@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Switch to using a ref-counted wxFont pointer for FontPlatformData to fix a crash
+ with assigning to uninitialized HashTable buckets.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23669
+
+ * platform/graphics/SimpleFontData.h:
+ (WebCore::SimpleFontData::getWxFont):
+ * platform/graphics/wx/FontPlatformData.h:
+ (WebCore::):
+ (WebCore::FontPlatformData::FontPlatformData):
+ (WebCore::FontPlatformData::font):
+ (WebCore::FontPlatformData::operator==):
+ * platform/graphics/wx/FontPlatformDataWx.cpp:
+ (WebCore::FontPlatformData::FontPlatformData):
+ (WebCore::FontPlatformData::computeHash):
+ (WebCore::FontPlatformData::~FontPlatformData):
+ * platform/graphics/wx/SimpleFontDataWx.cpp:
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::determinePitch):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ * platform/wx/wxcode/gtk/non-kerned-drawing.cpp:
+ (WebCore::drawTextWithSpacing):
+
+2009-02-04 David Hyatt <hyatt@apple.com>
+
+ Fix a crash in generated content when a generated image with an already-cached background image gets
+ created. It's not completely clear how to reproduce this crash.
+
+ Reviewed by Adam Roben
+
+ * rendering/RenderImageGeneratedContent.h:
+ (WebCore::RenderImageGeneratedContent::imagePtr):
+
+2009-02-04 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Unreviewed Qt build fix.
+
+ Changed ASSERT(image) to ASSERT(!image.isNull()).
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::getImageData):
+
2009-02-04 Trenton Schulz <trenton.schulz@nokia.com>
Reviewed by Simon Hausmann.
@@ -528,6 +41635,519 @@
* plugins/mac/PluginViewMac.cpp:
(WebCore::PluginView::invalidateRect):
+2009-02-04 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Rubber stamped by Mark Rowe.
+
+ FramePrivate was removed in r40024 remove the forward
+ declaration as well.
+
+ * page/Frame.h:
+
+2009-02-04 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23426
+
+ Make isFrameSet virtual and by default return false. Reimplement
+ it in HTMLDocument.
+
+ * dom/Document.cpp:
+ * dom/Document.h:
+ (WebCore::Document::isFrameSet):
+ * html/HTMLDocument.cpp:
+ (WebCore::HTMLDocument::isFrameSet):
+ * html/HTMLDocument.h:
+
+2009-02-03 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by John Sullivan.
+
+ <rdar://problem/6554092> Slow script dialog starts coming up over and over again
+
+ Work around <rdar://problem/6554067> by consuming any exceptions that are
+ thrown by _web_localizedDescription
+
+ * platform/network/mac/ResourceErrorMac.mm:
+ (WebCore::ResourceError::platformLazyInit):
+
+2009-02-03 David Hyatt <hyatt@apple.com>
+
+ Move the isRenderInline checks for clientWidth/Height and scrollWidth/Height to the DOM element
+ versions of the functions. Since internal render tree usage doesn't ever (incorrectly) call these
+ functions on RenderInlines, this manages to get virtual function calls out of contentWidth/Height and
+ availableWidth/Height.
+
+ Reviewed by Mark Rowe
+
+ * dom/Element.cpp:
+ (WebCore::Element::clientWidth):
+ (WebCore::Element::clientHeight):
+ (WebCore::Element::scrollWidth):
+ (WebCore::Element::scrollHeight):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::clientWidth):
+ (WebCore::RenderBox::clientHeight):
+ (WebCore::RenderBox::scrollWidth):
+ (WebCore::RenderBox::scrollHeight):
+
+2009-02-03 Brad Garcia <bgarcia@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20443
+ Remove call to canResize when trying to determine if pointer
+ is within a frame.
+ Also removed the implementation of canResize as it is no longer used.
+
+ Test: fast/frames/frame-dead-region.html
+
+ * rendering/RenderFrameSet.cpp:
+ (WebCore::RenderFrameSet::nodeAtPoint):
+ * rendering/RenderFrameSet.h:
+
+2009-02-03 David Hyatt <hyatt@apple.com>
+
+ Reduce the number of calls to virtualChildren (indirectly made via RenderObject::firstChild()).
+ This is a small gain on the PLT.
+
+ Reviewed by Mark Rowe
+
+ * rendering/bidi.cpp:
+ (WebCore::inlineWidth):
+ (WebCore::bidiNext):
+
+2009-02-03 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23628
+
+ Fix selection repainting to do container-relative repaints. RenderView now
+ repaints the selection using the containerForRepaint() for each RenderSelectionInfo.
+ selectionRect() is now a wrapper for selectionRectForRepaint() with no container.
+
+ Pull SelectionInfo out of RenderObject.h, and BlockSelectionInfo out
+ of RenderBlock.h and move them into RenderSelectionInfo.h, with some
+ sharing and refactoring.
+
+ RenderBlock::selectionGapRectsForRepaint() is not yet container-aware.
+
+ * GNUmakefile.am:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * rendering/RenderBR.h:
+ (WebCore::RenderBR::selectionRectForRepaint):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::selectionGapRectsForRepaint):
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::selectionRectForRepaint):
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::paint):
+ (WebCore::RenderListMarker::selectionRectForRepaint):
+ * rendering/RenderListMarker.h:
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::selectionRect):
+ (WebCore::RenderObject::selectionRectForRepaint):
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::selectionRectForRepaint):
+ * rendering/RenderReplaced.h:
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::absoluteRects):
+ (WebCore::RenderSVGInlineText::absoluteQuads):
+ (WebCore::RenderSVGInlineText::selectionRectForRepaint):
+ (WebCore::RenderSVGInlineText::computeRepaintRectForRange):
+ * rendering/RenderSVGInlineText.h:
+ * rendering/RenderSelectionInfo.h: Added.
+ (WebCore::RenderSelectionInfoBase::RenderSelectionInfoBase):
+ (WebCore::RenderSelectionInfoBase::object):
+ (WebCore::RenderSelectionInfoBase::repaintContainer):
+ (WebCore::RenderSelectionInfoBase::state):
+ (WebCore::RenderSelectionInfo::RenderSelectionInfo):
+ (WebCore::RenderSelectionInfo::repaint):
+ (WebCore::RenderSelectionInfo::rect):
+ (WebCore::RenderBlockSelectionInfo::RenderBlockSelectionInfo):
+ (WebCore::RenderBlockSelectionInfo::repaint):
+ (WebCore::RenderBlockSelectionInfo::block):
+ (WebCore::RenderBlockSelectionInfo::rects):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::selectionRectForRepaint):
+ * rendering/RenderText.h:
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::selectionBounds):
+ (WebCore::RenderView::setSelection):
+ * rendering/RenderView.h:
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::paint):
+
+2009-02-03 David Hyatt <hyatt@apple.com>
+
+ Add inline capacity back to CSSMutableStyleDeclaration now that the bug in Vector has been fixed.
+
+ Reviewed by Darin Adler & Sam Weinig
+
+ * css/CSSMutableStyleDeclaration.cpp:
+ (WebCore::CSSMutableStyleDeclaration::removePropertiesInSet):
+ * css/CSSMutableStyleDeclaration.h:
+
+2009-02-03 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=13490
+ Implement execCommand("styleWithCSS", ...)
+
+ Determine whether or not to use HTML formatting tags for styling on the new
+ boolean on Editor instead of whether or not the document is quirks mode.
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::StyleChange::StyleChange):
+ (WebCore::StyleChange::init):
+ (WebCore::ApplyStyleCommand::applyBlockStyle):
+ (WebCore::ApplyStyleCommand::applyTextDecorationStyle):
+ (WebCore::ApplyStyleCommand::addInlineStyleIfNeeded):
+ * editing/Editor.cpp:
+ (WebCore::Editor::Editor):
+ (WebCore::Editor::clear):
+ * editing/Editor.h:
+ (WebCore::Editor::setShouldStyleWithCSS):
+ (WebCore::Editor::shouldStyleWithCSS):
+ * editing/EditorCommand.cpp:
+ (WebCore::executeStyleWithCSS):
+ (WebCore::stateStyleWithCSS):
+ (WebCore::CommandEntry::):
+
+2009-02-03 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ This is a follow up of r40546. Call toImage() once speeds up ImageBuffer::getImageData()
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::getImageData):
+
+2009-02-03 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Kevin Decker.
+
+ - Fix for <rdar://problem/6549743>
+
+ On Tiger, create an autorelease pool before creating the NSGraphicsContext and drain it immediately
+ after the call to -[NSView displayRectIgnoringOpacity:inContext:].
+
+ * platform/mac/WidgetMac.mm:
+ (WebCore::Widget::paint):
+
+2009-02-03 David Hyatt <hyatt@apple.com>
+
+ Back this change out since it is causing layout tests to crash. There is something subtle going on
+ here.
+
+ Reviewed by Darin Adler
+
+ * css/CSSMutableStyleDeclaration.cpp:
+ (WebCore::CSSMutableStyleDeclaration::removePropertiesInSet):
+ * css/CSSMutableStyleDeclaration.h:
+
+2009-02-03 David Hyatt <hyatt@apple.com>
+
+ Give the properties vector of mutable style declarations an initial inline capacity to reduce malloc churn.
+
+ Reviewed by Sam Weinig
+
+ * css/CSSMutableStyleDeclaration.cpp:
+ (WebCore::CSSMutableStyleDeclaration::removePropertiesInSet):
+ * css/CSSMutableStyleDeclaration.h:
+
+2009-02-03 David Hyatt <hyatt@apple.com>
+
+ Avoid creating extra copies of NSURLRequests for non-HTTP URLs. Only mark platform requests
+ as needing updating when HTTP fields change if the scheme of the URL is actually HTTP or HTTPS.
+ Thus cuts down significantly on the number of copied NSURLRequests and is about a 1% gain on the PLT.
+
+ Reviewed by Darin Adler
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::addExtraFieldsToRequest):
+ * platform/KURL.cpp:
+ (WebCore::KURL::invalidate):
+ (WebCore::KURL::KURL):
+ * platform/KURL.h:
+ (WebCore::KURL::isHTTPOrHTTPS):
+ * platform/network/ResourceRequestBase.cpp:
+ (WebCore::ResourceRequestBase::setCachePolicy):
+ (WebCore::ResourceRequestBase::setTimeoutInterval):
+ (WebCore::ResourceRequestBase::setMainDocumentURL):
+ (WebCore::ResourceRequestBase::setHTTPMethod):
+ (WebCore::ResourceRequestBase::setHTTPHeaderField):
+ (WebCore::ResourceRequestBase::setResponseContentDispositionEncodingFallbackArray):
+ (WebCore::ResourceRequestBase::setHTTPBody):
+ (WebCore::ResourceRequestBase::setAllowHTTPCookies):
+
+2009-02-03 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23711
+
+ Add manual test for floating divs with scrollbars.
+
+ * manual-tests/gtk/floatingdiv.html: Added.
+
+2009-02-03 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23711
+
+ There's no need to hold an extra ref to the scrollbar, calling
+ setPlatformWidget takes ownership of it.
+
+ Also do not disconnect the signals when destroying the widget,
+ it's superfluous.
+
+ * platform/gtk/ScrollbarGtk.cpp:
+ (ScrollbarGtk::ScrollbarGtk):
+ * platform/gtk/ScrollbarGtk.h:
+
+2009-02-03 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23711
+
+ Declare scrollBar as GtkWidget* to avoid needless
+ casting.
+
+ * platform/gtk/ScrollbarGtk.cpp:
+ (ScrollbarGtk::ScrollbarGtk):
+ (ScrollbarGtk::~ScrollbarGtk):
+
+2009-02-03 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23711
+
+ Properly calculate the scrollbar location for their
+ usage in RenderLayout.
+
+ * platform/gtk/ScrollbarGtk.cpp:
+ (ScrollbarGtk::frameRectsChanged):
+
+2009-02-03 David Hyatt <hyatt@apple.com>
+
+ Rename addLineBoxRects to absoluteRectsForRange, and do the same thing for the corresponding quads methods. Move the RenderContainer implementations
+ of these methods up to RenderObject.
+
+ Reviewed by Beth Dakin
+
+ * bindings/objc/DOM.mm:
+ (-[DOMNode lineBoxRects]):
+ * dom/Range.cpp:
+ (WebCore::Range::addLineBoxRects):
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::drawNodeHighlight):
+ * rendering/RenderContainer.cpp:
+ * rendering/RenderContainer.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::absoluteRectsForRange):
+ (WebCore::RenderObject::absoluteQuadsForRange):
+ * rendering/RenderObject.h:
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::absoluteRectsForRange):
+ (WebCore::RenderText::absoluteQuadsForRange):
+ * rendering/RenderText.h:
+
+2009-02-03 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Sam Weinig and Oliver Hunt.
+
+ Added getImageData() support for QtWebKit.
+
+ [QT] lacks getImageData / putImageData support in Canvas
+ https://bugs.webkit.org/show_bug.cgi?id=22186
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::getImageData):
+
+2009-02-03 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Holger Freyther.
+
+ Fix FrameChromium.cpp following r40473 which moved Frame::adjustPageHeight to FrameView::adjustPageHeight.
+
+ * page/chromium/FrameChromium.cpp:
+ (WebCore::computePageRectsForFrame):
+
+2009-02-02 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23358
+
+ Hook accelerated compositing into RenderLayer.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::RenderLayer):
+ (WebCore::RenderLayer::~RenderLayer):
+ Init and clean up backing and the hasCompositingDescendant bit.
+
+ (WebCore::RenderLayer::compositor):
+ Shortcut to get to the RenderLayerCompositor.
+
+ (WebCore::RenderLayer::updateLayerPositions):
+ We need to let full repaints propagate to all compositing layers, and
+ update the backing after layout here.
+
+ (WebCore::RenderLayer::transparentAncestor):
+ (WebCore::transparencyClipBox):
+ (WebCore::RenderLayer::beginTransparencyLayers):
+ Account for the fact that opacity may be rendered via the compositing
+ layer sometimes.
+
+ (WebCore::RenderLayer::addChild):
+ (WebCore::RenderLayer::removeChild):
+ (WebCore::RenderLayer::removeOnlyThisLayer):
+ Tell the compositor when the RenderLayer hierarchy changes.
+
+ (WebCore::RenderLayer::scrollToOffset):
+ Update layer geometry after scrolling.
+
+ (WebCore::RenderLayer::paintLayer):
+ We short-circuit painting on composited layers, because these layers
+ are painted on a callback from the compositing system.
+
+ (WebCore::RenderLayer::hitTestLayer):
+ Only apply transforms if we are rendering them in software.
+
+ (WebCore::RenderLayer::localBoundingBox):
+ (WebCore::RenderLayer::boundingBox):
+ (WebCore::RenderLayer::absoluteBoundingBox):
+ Refactor bounding box code that we can compute local, and ancestor-relative
+ bounding box, as well as absolute.
+
+ (WebCore::RenderLayer::ensureBacking):
+ (WebCore::RenderLayer::clearBacking):
+ RenderLayerBacking creation and destruction.
+
+ (WebCore::RenderLayer::setParent):
+ Tell the compositor when the RenderLayer hierarchy changes.
+
+ (WebCore::RenderLayer::dirtyZOrderLists):
+ (WebCore::RenderLayer::dirtyStackingContextZOrderLists):
+ (WebCore::RenderLayer::dirtyOverflowList):
+ When the z-order and overflow lists change, we need to tell the
+ compositor that the composited layers need to be rejiggered soon.
+
+ (WebCore::RenderLayer::updateZOrderLists):
+ Whitespace cleanup.
+
+ (WebCore::RenderLayer::setBackingNeedsRepaint):
+ (WebCore::RenderLayer::setBackingNeedsRepaintInRect):
+ Dirty composited layer contents for painting.
+
+ (WebCore::RenderLayer::styleChanged):
+ Update the layer backing after style changes.
+
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::isComposited):
+ (WebCore::RenderLayer::backing):
+ Accessors for testing and getting the backing for this RenderLayer.
+
+ (WebCore::RenderLayer::paintsWithTransparency):
+ (WebCore::RenderLayer::paintsWithTransform):
+ Transform and opacity can be applied via the compositing layer, or rendered
+ in software. These methods tell us if we need to account for them in the
+ non-compositing path.
+
+ (WebCore::RenderLayer::hasCompositingDescendant):
+ (WebCore::RenderLayer::setHasCompositingDescendant):
+ Maintain a bit to tell if this layer has composited descendants.
+
+2009-02-03 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23365
+
+ Hook up accelerated compositing layers the native
+ view system on Mac.
+
+ * WebCore.base.exp:
+ Export new Page methods.
+
+ * page/ChromeClient.h:
+ (WebCore::ChromeClient::attachRootGraphicsLayer):
+ (WebCore::ChromeClient::setNeedsOneShotDrawingSynchronization):
+ New methods for attaching/detaching the root GraphicsLayer, and
+ synchronizing layer changes with window drawing.
+
+ * page/FrameView.h:
+ * page/FrameView.cpp:
+ (WebCore::FrameView::updateCompositingLayers):
+ (WebCore::FrameView::setNeedsOneShotDrawingSynchronization):
+ (WebCore::FrameView::didMoveOnscreen):
+ (WebCore::FrameView::willMoveOffscreen):
+ New methods to update the compositing layer hierarchy,
+ and pass-throughs to the RenderLayerCompositor.
+
+ (WebCore::FrameView::layout):
+ Update compositing layers after layout() and updateLayerPositions().
+
+ * page/Page.cpp:
+ (WebCore::Page::didMoveOnscreen):
+ (WebCore::Page::willMoveOffscreen):
+ * page/Page.h:
+ New methods to allow the native view system to tell the Page when it
+ starts to be presented on-screen, and when it will be hidden.
+
+ * rendering/RenderLayerCompositor.h:
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::updateLayerCompositingState):
+ (WebCore::RenderLayerCompositor::didMoveOnscreen):
+ (WebCore::RenderLayerCompositor::willMoveOffscreen):
+ (WebCore::RenderLayerCompositor::ensureRootPlatformLayer):
+ Rename 'attached' methods to 'moveOnscreen/moveOffscreen' to match
+ the calls through from Page, FrameView.
+
+ (WebCore::RenderLayerCompositor::layerWillBeRemoved):
+ Dont' try to repaint or update layers if the document is being torn
+ down.
+
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::didMoveOnscreen):
+ (WebCore::RenderView::willMoveOffscreen):
+ * rendering/RenderView.h:
+ New methods.
+
+2009-02-03 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Holger Hans Peter Freyther.
+
+ Fixed getImageData and putImageData and respect pre-
+ multiplied colors.
+
+ Cairo's ImageBuffer::getImageData() does not handle alpha=0 case correctly
+ https://bugs.webkit.org/show_bug.cgi?id=21575
+
+ * platform/graphics/cairo/ImageBufferCairo.cpp:
+ (WebCore::ImageBuffer::getImageData):
+ (WebCore::ImageBuffer::putImageData):
+
+2009-02-03 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Brady Eidson.
+
+ - fix <rdar://problem/6550530> REGRESSION (r40508): Window opened with window.open has no initial history item (global and back/forward)
+
+ Test: fast/history/window-open.html
+
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::createWindow): Pass the missing lockBackForwardList parameter
+ to FrameLoader::changeLocation().
+
2009-02-03 Adam Treat <adam.treat@torchmobile.com>
Fix the Qt build after r40536.
@@ -535,6 +42155,31 @@
* bridge/qt/qt_runtime.cpp:
(JSC::Bindings::convertQVariantToValue):
+2009-02-03 Dan Bernstein <mitz@apple.com>
+
+ - fix -Wmissing-prototypes builds
+
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::workerContextDidSendData): Marked this function static.
+ (WebCore::workerContextDidReceiveResponse): Ditto.
+ (WebCore::workerContextDidReceiveData): Ditto.
+ (WebCore::workerContextDidFinishLoading): Ditto.
+ (WebCore::workerContextDidFail): Ditto.
+ (WebCore::workerContextDidGetCancelled): Ditto.
+ (WebCore::workerContextDidReceiveAuthenticationCancellation): Ditto.
+
+2009-02-03 David Kilzer <ddkilzer@apple.com>
+
+ CrashTracer: [REGRESSION] 53 crashes in Safari at com.apple.WebCore: WebCore::LegacyWebArchive::create + 2706
+
+ <rdar://problem/6509514>
+
+ Reviewed by Adam Roben.
+
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ (WebCore::LegacyWebArchive::create): Null check the value returned
+ from WebCore::IconDatabase::iconForPageURL().
+
2009-02-03 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Tor Arne Vestbø.
@@ -550,6 +42195,1949 @@
(JSC::Bindings::convertQVariantToValue): Convert from
QVariant::ByteArray to jsByteArray.
+2009-02-03 Alexey Proskuryakov <ap@webkit.org>
+
+ Build fix.
+
+ * GNUmakefile.am: Removed WorkerTask.{h,cpp}.
+
+2009-02-03 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22718
+ Implement WindowTimers interface in Workers.
+
+ This patch moves timeoutID from Document to ScriptExecutionContext
+ and exposes JS methods setTimeout/setInterval/clearTimeout/clearInterval inside of a Worker.
+ Also added a test for those methods.
+
+ Test: fast/workers/worker-timeout.html
+
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::setTimeoutOrInterval):
+ Creates ScheduledAction and calls WorkerContext::installTimeout to actually add a timer.
+
+ (WebCore::JSWorkerContext::setTimeout):
+ (WebCore::JSWorkerContext::clearTimeout):
+ (WebCore::JSWorkerContext::setInterval):
+ (WebCore::JSWorkerContext::clearInterval):
+ Added methods exposed to JS.
+
+ * dom/Document.cpp:
+ * dom/Document.h:
+ * dom/ScriptExecutionContext.cpp:
+ (WebCore::ScriptExecutionContext::addTimeout):
+ (WebCore::ScriptExecutionContext::removeTimeout):
+ (WebCore::ScriptExecutionContext::findTimeout):
+ * dom/ScriptExecutionContext.h:
+ The timerID map moves from Document to ScriptExecutionContext,
+ to be available to Document and to WorkerContext.
+
+ * dom/WorkerContext.cpp:
+ (WebCore::WorkerContext::installTimeout): Adds a DOMTimeout.
+ (WebCore::WorkerContext::removeTimeout): Removes a DOMTimeout.
+ * dom/WorkerContext.h:
+
+ * page/DOMTimer.cpp:
+ (WebCore::DOMTimer::DOMTimer):
+ (WebCore::DOMTimer::~DOMTimer):
+ (WebCore::DOMTimer::removeById):
+ Code change here reflects move of timeoutID map to the ScriptExecutionContext.
+ Some checks and casts are no longer needed.
+
+2009-02-03 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23560
+ Implement SharedTimer for Workers.
+
+ * dom/WorkerRunLoop.cpp:
+ Added private class WorkerSharedTimer that implements SharedTimer interface for worker threads.
+ (WebCore::WorkerSharedTimer::WorkerSharedTimer):
+ (WebCore::WorkerSharedTimer::setFiredFunction):
+ (WebCore::WorkerSharedTimer::setFireTime):
+ (WebCore::WorkerSharedTimer::stop):
+ (WebCore::WorkerSharedTimer::isActive):
+ (WebCore::WorkerSharedTimer::fireTime):
+ (WebCore::WorkerSharedTimer::fire):
+ (WebCore::WorkerRunLoop::WorkerRunLoop):
+ Initializes a WorkerSharedTimer instance.
+ (WebCore::WorkerRunLoop::~WorkerRunLoop):
+ The destructor is here so compiler is ok with having OwnPtr<WorkerSharedTimer> in .h file w/o defining WorkerSharedTimer.
+ (WebCore::WorkerRunLoop::run):
+ Set/reset shared timer interface on ThreadTimers, use MessageQueue::waitForMessageTimed() if timer is active.
+ * dom/WorkerRunLoop.h:
+ Add member of type OwnPtr<WorkerSharedTimer>
+
+2009-02-03 Steve Falkenburg <sfalken@apple.com>
+
+ Build fix.
+
+ * WebCore.vcproj/WebCore.vcproj:
+
+2009-02-03 Alexey Proskuryakov <ap@webkit.org>
+
+ Windows build fix.
+
+ * dom/CrossThreadCopier.h: Changed forward declarations to use struct instead of class where
+ appropriate.
+
+2009-02-02 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23636: Make the async api of ThreadableLoader functional for the worker context.
+ <https://bugs.webkit.org/show_bug.cgi?id=23636>
+
+ Enable the async portion of ThreadableLoader for workers.
+
+ No observable change in behavior, so no test.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * dom/CrossThreadCopier.h:
+ * dom/GenericWorkerTask.h:
+ * dom/WorkerThread.cpp:
+ * loader/ThreadableLoader.cpp:
+ (WebCore::ThreadableLoader::create):
+ * loader/ThreadableLoaderClient.h:
+ (WebCore::ThreadableLoaderClient::didFinishLoading):
+ * loader/ThreadableLoaderClientWrapper.h: Added.
+ (WebCore::ThreadableLoaderClientWrapper::create):
+ (WebCore::ThreadableLoaderClientWrapper::clearClient):
+ (WebCore::ThreadableLoaderClientWrapper::didSendData):
+ (WebCore::ThreadableLoaderClientWrapper::didReceiveResponse):
+ (WebCore::ThreadableLoaderClientWrapper::didReceiveData):
+ (WebCore::ThreadableLoaderClientWrapper::didFinishLoading):
+ (WebCore::ThreadableLoaderClientWrapper::didFail):
+ (WebCore::ThreadableLoaderClientWrapper::didGetCancelled):
+ (WebCore::ThreadableLoaderClientWrapper::didReceiveAuthenticationCancellation):
+ (WebCore::ThreadableLoaderClientWrapper::ThreadableLoaderClientWrapper):
+ * loader/WorkerThreadableLoader.cpp: Added.
+ (WebCore::WorkerThreadableLoader::WorkerThreadableLoader):
+ (WebCore::WorkerThreadableLoader::~WorkerThreadableLoader):
+ (WebCore::WorkerThreadableLoader::cancel):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::~MainThreadBridge):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadDestroy):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::destroy):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCancel):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::cancel):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::clearClientWrapper):
+ (WebCore::workerContextDidSendData):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didSendData):
+ (WebCore::workerContextDidReceiveResponse):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):
+ (WebCore::workerContextDidReceiveData):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):
+ (WebCore::workerContextDidFinishLoading):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):
+ (WebCore::workerContextDidFail):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
+ (WebCore::workerContextDidGetCancelled):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didGetCancelled):
+ (WebCore::workerContextDidReceiveAuthenticationCancellation):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveAuthenticationCancellation):
+ * loader/WorkerThreadableLoader.h: Added.
+ (WebCore::WorkerThreadableLoader::create):
+ (WebCore::WorkerThreadableLoader::refThreadableLoader):
+ (WebCore::WorkerThreadableLoader::derefThreadableLoader):
+
+2009-02-02 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23636: Make the async api of ThreadableLoader functional for the worker context.
+ <https://bugs.webkit.org/show_bug.cgi?id=23636>
+
+ No observable change in behavior, so no test.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/Worker.cpp:
+ * dom/Worker.h:
+ * dom/WorkerContext.cpp:
+ (WebCore::WorkerContext::addMessage):
+ (WebCore::WorkerContext::postTask):
+ (WebCore::WorkerContext::postTaskToWorkerObject):
+ * dom/WorkerContext.h:
+ * dom/WorkerMessagingProxy.cpp:
+ (WebCore::MessageWorkerContextTask::performTask):
+ (WebCore::WorkerMessagingProxy::postMessageToWorkerContext):
+ (WebCore::WorkerMessagingProxy::postTaskToWorkerContext):
+ Expose postTaskToWorkerContext for use by the worker object thread.
+
+ (WebCore::WorkerMessagingProxy::postTaskToWorkerObject):
+ Change the name of postTaskToParentContext to postTaskToWorkerObject for consistency
+ with postMessageToWorkerObject.
+
+ * dom/WorkerMessagingProxy.h:
+ * dom/WorkerRunLoop.cpp:
+ (WebCore::WorkerRunLoop::run):
+ (WebCore::WorkerRunLoop::postTask):
+ * dom/WorkerRunLoop.h:
+ * dom/WorkerTask.cpp: Removed.
+ * dom/WorkerTask.h: Removed.
+ Removed WorkerTask and replaced with the existing ScriptExecutionContext::Task.
+
+ The resulted in the class going away along with an adapter that made
+ a ScriptExecutionContext::Task look like a WorkerTask.
+
+ * dom/WorkerThread.cpp:
+ * dom/WorkerThread.h:
+
+2009-02-02 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23618: Templated worker tasks should be more error proof to use.
+ <https://bugs.webkit.org/show_bug.cgi?id=23618>
+
+ Add the generic worker tasks templates needed for the WorkerThreadableLoader.
+
+ No observable change in behavior, so no test.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * dom/CrossThreadCopier.cpp: Added.
+ * dom/CrossThreadCopier.h: Added.
+ (WebCore::CrossThreadCopierPassThrough::copy):
+ * dom/GenericWorkerTask.h:
+ Stop doing the WorkerMessagingProxy::askedToTerminate call automatically
+ in performTask because was not obvious that it would be done and not always needed.
+
+ (WebCore::GenericWorkerTask1::create):
+ (WebCore::GenericWorkerTask1::GenericWorkerTask1):
+ (WebCore::GenericWorkerTask1::performTask):
+ (WebCore::GenericWorkerTask2::create):
+ (WebCore::GenericWorkerTask2::GenericWorkerTask2):
+ (WebCore::GenericWorkerTask2::performTask):
+ (WebCore::GenericWorkerTask3::create):
+ (WebCore::GenericWorkerTask3::GenericWorkerTask3):
+ (WebCore::GenericWorkerTask3::performTask):
+ (WebCore::GenericWorkerTask4::create):
+ (WebCore::GenericWorkerTask4::GenericWorkerTask4):
+ (WebCore::GenericWorkerTask4::performTask):
+ (WebCore::GenericWorkerTask5::create):
+ (WebCore::GenericWorkerTask5::GenericWorkerTask5):
+ (WebCore::GenericWorkerTask5::performTask):
+ (WebCore::GenericWorkerTask6::create):
+ (WebCore::GenericWorkerTask6::GenericWorkerTask6):
+ (WebCore::GenericWorkerTask6::performTask):
+ (WebCore::GenericWorkerTask7::create):
+ (WebCore::GenericWorkerTask7::GenericWorkerTask7):
+ (WebCore::GenericWorkerTask7::performTask):
+ (WebCore::createCallbackTask):
+ * dom/WorkerContext.cpp:
+ (WebCore::addMessageTask):
+ (WebCore::WorkerContext::addMessage):
+ * dom/WorkerMessagingProxy.h:
+ (WebCore::WorkerMessagingProxy::askedToTerminate):
+
+2009-02-02 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David "The Barnabas Jones" Hyatt.
+
+ Move removeChildNode, appendChildNode and insertChildNode from
+ RenderContainer into RenderObjectChildList. Make moveChildNode
+ static in RenderBlock, as that was the only user.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::moveChild):
+ (WebCore::RenderBlock::makeChildrenNonInline):
+ (WebCore::RenderBlock::removeChild):
+ (WebCore::RenderBlock::handleRunInChild):
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::addChild):
+ (WebCore::RenderContainer::removeChild):
+ * rendering/RenderContainer.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::splitInlines):
+ (WebCore::RenderInline::splitFlow):
+ (WebCore::RenderInline::childBecameNonInline):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::handleDynamicFloatPositionChange):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::createsAnonymousWrapper):
+ * rendering/RenderObjectChildList.cpp:
+ (WebCore::updateListMarkerNumbers):
+ (WebCore::RenderObjectChildList::removeChildNode):
+ (WebCore::RenderObjectChildList::appendChildNode):
+ (WebCore::RenderObjectChildList::insertChildNode):
+ * rendering/RenderObjectChildList.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::addChild):
+ (WebCore::RenderSVGContainer::removeChild):
+ * rendering/RenderSVGContainer.h:
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::removeChild):
+ * rendering/RenderTable.h:
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::removeChild):
+ * rendering/RenderTableSection.h:
+
+2009-02-02 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Alder.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23697
+ Leaks seen on Worker tests
+
+ * dom/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::workerContextDestroyedInternal):
+ Zero out m_workerThread, so that the proxy could be deleted once workerObjectDestroyed()
+ is called.
+
+2009-02-02 David Hyatt <hyatt@apple.com>
+
+ Move positionForCoordinates up from RenderContainer into RenderBox.
+
+ Reviewed by Sam Weinig
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::positionForCoordinates):
+ * rendering/RenderBox.h:
+ * rendering/RenderContainer.cpp:
+ * rendering/RenderContainer.h:
+
+2009-02-02 Hiroaki Nakamura <hnakamur@gmail.com>
+
+ Reviewed by Adam Roben.
+
+ Fixes https://bugs.webkit.org/show_bug.cgi?id=15813
+ Modify pre-build step to properly handle the errorlevel
+ shell command.
+
+ * WebCore.vcproj/WebCore.vcproj: Change errorlevel handling
+ for all targets so prefast is only enabled in builds
+ where /analyze is available.
+
+2009-02-02 David Hyatt <hyatt@apple.com>
+
+ Refactor the handling of before/after content and generated content. Move most of the functions from
+ RenderContainer into RenderObjectChildList.
+
+ Reviewed by Sam Weinig
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::updateBeforeAfterContent):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::isAfterContent):
+ * rendering/RenderBox.h:
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::updateBeforeAfterContent):
+ * rendering/RenderContainer.cpp:
+ * rendering/RenderContainer.h:
+ * rendering/RenderCounter.cpp:
+ (WebCore::destroyCounterNodeChildren):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::styleDidChange):
+ (WebCore::RenderInline::addChildIgnoringContinuation):
+ (WebCore::RenderInline::splitInlines):
+ * rendering/RenderObject.h:
+ * rendering/RenderObjectChildList.cpp:
+ (WebCore::beforeAfterContainer):
+ (WebCore::findBeforeAfterParent):
+ (WebCore::invalidateCountersInContainer):
+ (WebCore::RenderObjectChildList::invalidateCounters):
+ (WebCore::RenderObjectChildList::updateBeforeAfterContent):
+ * rendering/RenderObjectChildList.h:
+
+2009-02-02 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23661
+ Fix Chromium build.
+
+ * history/HistoryItem.h: need to include <wtf/OwnPtr.h>
+
+ * rendering/RenderThemeChromiumMac.mm:
+ (WebCore::RenderThemeChromiumMac::adjustMenuListStyle): isEnabled() is now on FormControlElement.
+
+2009-02-02 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * plugins/PluginView.cpp:
+ (WebCore::PluginView::performRequest):
+
+2009-02-02 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * WebCore.base.exp:
+
+2009-02-02 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Track redirects in global history.
+
+ * WebCore.base.exp: Renamed some exports.
+
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::createWindow):
+ (windowProtoFuncOpen):
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::setLocation):
+ * bindings/js/JSDocumentCustom.cpp:
+ (WebCore::JSDocument::setLocation):
+ * bindings/js/JSHTMLFormElementCustom.cpp:
+ (WebCore::JSHTMLFormElement::submit):
+ * bindings/js/JSLocationCustom.cpp:
+ (WebCore::JSLocation::setHref):
+ (WebCore::JSLocation::setProtocol):
+ (WebCore::JSLocation::setHost):
+ (WebCore::JSLocation::setHostname):
+ (WebCore::JSLocation::setPort):
+ (WebCore::JSLocation::setPathname):
+ (WebCore::JSLocation::setSearch):
+ (WebCore::JSLocation::setHash):
+ (WebCore::JSLocation::assign): Treat any navigation that is not initiated
+ by the user as a redirect from the perspective of global history.
+
+ * history/HistoryItem.cpp:
+ (WebCore::HistoryItem::addRedirectURL): Store the last URL in the redirect
+ chain.
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::DocumentLoader):
+ * loader/DocumentLoader.h:
+ (WebCore::DocumentLoader::urlForHistoryReflectsServerRedirect):
+ (WebCore::DocumentLoader::urlForHistoryReflectsClientRedirect):
+ (WebCore::DocumentLoader::setURLForHistoryReflectsClientRedirect): Sadly,
+ added yet another way to track redirect state during loading, since none
+ of the others did what I wanted, and I didn't want to cause behavior
+ changes in existing code.
+
+ * loader/EmptyClients.h:
+ (WebCore::EmptyFrameLoaderClient::updateGlobalHistoryForRedirectWithoutHistoryItem):
+ Stubbed out a client function to keep things building.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::isBackForwardLoadType):
+ (WebCore::FrameLoader::restoreDocumentState): Renamed FrameLoadTypeRedirect =>
+ FrameLoadTypeRedirectWithLockedBackForwardList, to distinguish from all
+ the other meanings of "redirect" in the loading code.
+
+ (WebCore::FrameLoader::scheduleHTTPRedirection): Treat any HTTP refresh
+ redirect as a redirect from the perspective of global history.
+
+ (WebCore::FrameLoader::loadURLIntoChildFrame): Updated for rename and extra
+ parameter.
+
+ (WebCore::FrameLoader::startRedirectionTimer): Removed unused parameter.
+
+ (WebCore::FrameLoader::loadFrameRequestWithFormAndValues):
+ (WebCore::FrameLoader::loadURL):
+ (WebCore::FrameLoader::load): Updated for rename and extra parameter.
+
+ (WebCore::FrameLoader::loadWithNavigationAction): Track redirect status
+ in the DocumentLoader, so it's accessible to WebKit's global history code.
+
+ (WebCore::FrameLoader::clientRedirected): Ignore lockHistory, since it
+ only has meaning to global history, and m_quickRedirectComing pertains
+ to other kinds of history.
+
+ (WebCore::FrameLoader::loadPostRequest):
+ (WebCore::FrameLoader::loadEmptyDocumentSynchronously):
+ (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy):
+ (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
+ (WebCore::FrameLoader::loadItem): Updated for extra parameter and rename.
+
+ (WebCore::FrameLoader::updateHistory*): Notify WebKit about redirect
+ navigations even if they don't create new history items, so we can track
+ the redirect in the existing history item.
+
+ * loader/FrameLoader.h: See above.
+
+ * loader/FrameLoaderClient.h: New client interface used by
+ FrameLoader::updateHistory* to record a redirect even if it doesn't create
+ a new history item of its own.
+
+ * loader/FrameLoaderTypes.h: See above.
+ (WebCore::):
+
+ * page/DragController.cpp:
+ (WebCore::DragController::performDrag):
+ * svg/graphics/SVGImage.cpp:
+ (WebCore::SVGImage::dataChanged): Updated for extra parameter.
+
+2009-02-02 David Hyatt <hyatt@apple.com>
+
+ Make calcPrefWidths non-abstract on RenderBox and just give it RenderContainer's implementation.
+ Remove RenderSVGContainer's implementation, since it was never called.
+
+ Reviewed by Beth Dakin
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::minPrefWidth):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::calcPrefWidths):
+ * rendering/RenderContainer.h:
+ (WebCore::RenderContainer::moveChildNode):
+ * rendering/RenderSVGContainer.h:
+
+2009-02-02 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Add jsObjectForPluginElement to ScriptController, and have createScriptObjectForPluginElement call it.
+
+ * WebCore.LP64.exp:
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::createScriptObjectForPluginElement):
+ (WebCore::ScriptController::jsObjectForPluginElement):
+ * bindings/js/ScriptController.h:
+
+2009-02-02 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel (and Ojan Vafai).
+
+ https://bugs.webkit.org/show_bug.cgi?id=23696
+ Select element doesn't show new value when focus is switched in
+ onchange event.
+
+ Fix PopupMenuChromium to hide itself before calling valueChanged. This
+ better matches the behavior of the other ports.
+
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupListBox::create):
+ (WebCore::PopupContainer::PopupContainer):
+ (WebCore::PopupContainer::showPopup):
+ (WebCore::PopupContainer::hidePopup):
+ (WebCore::PopupListBox::abandon):
+ (WebCore::PopupListBox::acceptIndex):
+ (WebCore::PopupMenu::show):
+ (WebCore::PopupMenu::hide):
+
+2009-02-02 David Hyatt <hyatt@apple.com>
+
+ Make sure scrollWidth/Height just return 0 for inline flows.
+
+ Reviewed by Beth Dakin
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::scrollWidth):
+ (WebCore::RenderBox::scrollHeight):
+
+2009-02-02 Darin Adler <darin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Bug 23676: Speed up uses of reserveCapacity on new vectors by adding a new reserveInitialCapacity
+ https://bugs.webkit.org/show_bug.cgi?id=23676
+
+ * bindings/js/JSCSSStyleDeclarationCustom.cpp:
+ (WebCore::cssPropertyName):
+ * css/CSSMutableStyleDeclaration.cpp:
+ (WebCore::CSSMutableStyleDeclaration::CSSMutableStyleDeclaration):
+ (WebCore::CSSMutableStyleDeclaration::removePropertiesInSet):
+ * css/CSSPrimitiveValue.cpp:
+ (WebCore::CSSPrimitiveValue::cssText):
+ * css/CSSStyleDeclaration.cpp:
+ (WebCore::CSSStyleDeclaration::copyPropertiesInSet):
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::sortMatchedRules):
+ * dom/Document.cpp:
+ (WebCore::Document::formElementsState):
+ * dom/NamedAttrMap.h:
+ (WebCore::NamedAttrMap::reserveInitialCapacity):
+ * editing/TextIterator.cpp:
+ (WebCore::CharacterIterator::string):
+ (WebCore::SearchBuffer::SearchBuffer):
+ (WebCore::plainTextToMallocAllocatedBuffer):
+ * editing/markup.cpp:
+ (WebCore::joinMarkups):
+ * history/HistoryItem.cpp:
+ (WebCore::HistoryItem::HistoryItem):
+ * html/HTMLTokenizer.cpp:
+ (WebCore::Token::addAttribute):
+ * loader/appcache/DOMApplicationCache.cpp:
+ (WebCore::DOMApplicationCache::items):
+ * page/SecurityOrigin.cpp:
+ (WebCore::SecurityOrigin::toString):
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (convertToVector):
+ * platform/graphics/FontCache.cpp:
+ (WebCore::FontCache::purgeInactiveFontData):
+ (WebCore::FontCache::invalidate):
+ * platform/network/FormData.cpp:
+ (WebCore::FormData::deepCopy):
+ * platform/network/HTTPHeaderMap.cpp:
+ (WebCore::HTTPHeaderMap::copyData):
+ * platform/network/ResourceRequestBase.cpp:
+ (WebCore::ResourceRequestBase::copyData):
+ * platform/network/mac/FormDataStreamMac.mm:
+ (WebCore::formCreate):
+ * xml/XPathNodeSet.cpp:
+ (WebCore::XPath::NodeSet::sort):
+ Use reserveInitialCapacity instead of of reserveCapacity in all these call sites,
+ which are working on new vectors that are guaranteed not to be empty.
+
+2009-02-26 Jon Honeycutt <jhoneycutt@apple.com>
+
+ Build fix after r40486.
+
+ Rubber-stamped by Ada Chan.
+
+ * dom/Document.h: Changed HitTestRequest to a class from a struct.
+ * page/EventHandler.h: Ditto.
+ * rendering/EllipsisBox.h: Ditto.
+ * rendering/InlineBox.h: Ditto.
+ * rendering/InlineFlowBox.h: Ditto.
+ * rendering/RenderLayer.h: Ditto.
+
+2009-02-02 Darin Adler <darin@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ Bug 23694: REGRESSION: Running svg/custom tests crashes, randomly, depending on the order of tests
+ https://bugs.webkit.org/show_bug.cgi?id=23694
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::insertedIntoDocument): Added back the call through to EventTargetNode.
+ (WebCore::ContainerNode::removedFromDocument): Ditto.
+ * dom/EventTargetNode.cpp:
+ (WebCore::EventTargetNode::insertedIntoDocument): Changed this to not call through to Node.
+ (WebCore::EventTargetNode::removedFromDocument): Ditto.
+ * dom/Node.cpp:
+ (WebCore::Node::insertedIntoDocument): Updated comment.
+ (WebCore::Node::removedFromDocument): Ditto.
+
+2009-02-02 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ More plug-in cleanup.
+
+ * WebCore.NPAPI.exp:
+ Add new symbols.
+
+ * bindings/objc/DOM.mm:
+ * bindings/objc/DOMPrivate.h:
+ Remove methods that WebKit doesn't use anymore.
+
+2009-02-02 Jay Campan <jcampan@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Clean up PopupMenuChromium a little.
+ https://bugs.webkit.org/show_bug.cgi?id=23653
+
+ No functional changes, only code cleanup, thus no tests.
+
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::):
+ (WebCore::PopupListBox::PopupListBox):
+ (WebCore::PopupContainer::create):
+ (WebCore::PopupContainer::PopupContainer):
+ (WebCore::PopupContainer::showPopup):
+ (WebCore::PopupListBox::handleKeyEvent):
+ (WebCore::PopupListBox::isSelectableItem):
+ (WebCore::PopupListBox::selectNextRow):
+ (WebCore::PopupListBox::selectPreviousRow):
+ (WebCore::PopupMenu::show):
+ * platform/chromium/PopupMenuChromium.h:
+
+2009-02-02 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Change createPlugin to take a HTMLPlugInElement, and createJavaAppletWidget to take a HTMLAppletElement.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * loader/EmptyClients.h:
+ (WebCore::EmptyFrameLoaderClient::createPlugin):
+ (WebCore::EmptyFrameLoaderClient::createJavaAppletWidget):
+ * loader/FrameLoader.cpp:
+ (WebCore::toPlugInElement):
+ (WebCore::FrameLoader::loadPlugin):
+ (WebCore::FrameLoader::loadItem):
+ * loader/FrameLoader.h:
+ * loader/FrameLoaderClient.h:
+
+2009-02-02 Genevieve Mak <gen@staikos.net>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23508
+ Returns Blank Page for all "about" protocols
+
+ * loader/MainResourceLoader.cpp:
+ Fix shouldLoadAsEmptyDocument() to return a blank page for an empty
+ url or about:blank only (for now, exclusively for Torch Mobile platform).
+
+2009-02-02 Brent Fulgham <bfulgham@webkit.org>
+
+ Reviewed by George Staikos.
+
+ Fixes https://bugs.webkit.org/show_bug.cgi?id=23691.
+ Correct build break caused by @r40366 by moving the
+ common code implmentations from GraphicsContextCGWin.cpp
+ into the base Windows class (GraphicsContextWin.cpp). Also
+ move inTransparencyLayer since it is identical in both
+ children.
+
+ * platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h:
+ Added member m_shouldIncludeChildWindows to Windows version,
+ similar to GraphicsContextPlatformPrivateCG.h.
+ * platform/graphics/win/GraphicsContextCGWin.cpp: Remove the
+ implementations of shouldIncludeChildWindows,
+ setShouldIncludeChildWindows, and inTransparencyLayer.
+ * platform/graphics/win/GraphicsContextCairoWin.cpp: Remove
+ the implementation of inTransparencyLayer.
+ * platform/graphics/win/GraphicsContextWin.cpp: Move common code
+ from GraphicsContextCGWin.cpp and GraphicsContextCairoWin.cpp.
+ (WebCore::GraphicsContext::inTransparencyLayer):
+ (WebCore::GraphicsContext::setShouldIncludeChildWindows):
+ (WebCore::GraphicsContext::shouldIncludeChildWindows):
+
+2009-02-02 Darin Adler <darin@apple.com>
+
+ Try to fix Wx build, and maybe Chromium build too.
+
+ * WebCore.scons: Added IdentifierRep.cpp.
+ * WebCoreSources.bkl: Ditto.
+
+2009-02-02 Darin Adler <darin@apple.com>
+
+ Try to fix Wx build.
+
+ * html/HTMLAreaElement.cpp: Added missing include of "Path.h".
+
+2009-02-02 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Nikolas Zimmermann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23587
+ Refactor HitTestRequest to eliminate all the ugly boolean arguments and
+ use an enum bitflag instead. Cleanup all the code that constructs the
+ various HitTestRequests to make the code more readable.
+
+ * dom/Document.cpp:
+ (WebCore::Document::elementFromPoint):
+ (WebCore::Document::prepareMouseEvent):
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::contains):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::visiblePositionForPoint):
+ (WebCore::AccessibilityRenderObject::doAccessibilityHitTest):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::eventMayStartDrag):
+ (WebCore::EventHandler::updateSelectionForMouseDrag):
+ (WebCore::EventHandler::hitTestResultAtPoint):
+ (WebCore::EventHandler::handleMousePressEvent):
+ (WebCore::EventHandler::handleMouseDoubleClickEvent):
+ (WebCore::EventHandler::handleMouseMoveEvent):
+ (WebCore::EventHandler::handleMouseReleaseEvent):
+ (WebCore::EventHandler::updateDragAndDrop):
+ (WebCore::EventHandler::handleWheelEvent):
+ (WebCore::EventHandler::sendContextMenuEvent):
+ (WebCore::EventHandler::hoverTimerFired):
+ (WebCore::EventHandler::handleDrag):
+ * page/EventHandler.h:
+ * rendering/HitTestRequest.h:
+ (WebCore::HitTestRequest::):
+ (WebCore::HitTestRequest::HitTestRequest):
+ (WebCore::HitTestRequest::readOnly):
+ (WebCore::HitTestRequest::active):
+ (WebCore::HitTestRequest::mouseMove):
+ (WebCore::HitTestRequest::mouseUp):
+ (WebCore::HitTestRequest::ignoreClipping):
+ * rendering/RenderFrameSet.cpp:
+ (WebCore::RenderFrameSet::nodeAtPoint):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTest):
+ (WebCore::RenderLayer::hitTestLayer):
+ (WebCore::RenderLayer::updateHoverActiveState):
+
+2009-02-02 George Staikos <george.staikos@torchmobile.com>
+
+ Reviewed by Niko Zimmermann.
+
+ Fix WML build by including the inlined renderStyle().
+
+ * wml/WMLOptGroupElement.cpp:
+ * wml/WMLOptionElement.cpp:
+
+2009-02-02 Darin Adler <darin@apple.com>
+
+ Reviewed by Niko Zimmermann.
+
+ Bug 23686: REGRESSION (r40475): Failure in fast/xpath/4XPath/Core/test_core_functions.html
+ https://bugs.webkit.org/show_bug.cgi?id=23686
+ rdar://problem/6547971
+
+ Also fix other XPath tests that are crashing.
+
+ * xml/XPathFunctions.cpp:
+ (WebCore::XPath::FunLang::evaluate): Fix order of arguments when creating QualifiedName.
+ * xml/XPathStep.cpp:
+ (WebCore::XPath::Step::nodesInAxis): Use createAttrIfNeeded() rather than attr() since we
+ need to make Attr nodes here. Yuck!
+
+2009-02-02 Yichao Yin <yichao.yin@torchmobile.com.cn>
+
+ Reviewed by Niko Zimmermann.
+
+ Test: wml/input-format.html
+
+ * wml/WMLInputElement.cpp:
+ (WebCore::WMLInputElement::WMLInputElement):
+ (WebCore::formatCodes):
+ (WebCore::WMLInputElement::dispatchBlurEvent):
+ (WebCore::WMLInputElement::parseMappedAttribute):
+ (WebCore::WMLInputElement::attach):
+ (WebCore::WMLInputElement::defaultEventHandler):
+ (WebCore::WMLInputElement::init):
+ (WebCore::WMLInputElement::validateInputMask):
+ (WebCore::WMLInputElement::isConformedToInputMask):
+ (WebCore::WMLInputElement::cursorPositionToMaskIndex):
+ * wml/WMLInputElement.h:
+
+2009-02-02 Brent Fulgham <bfulgham@webkit.org>
+
+ Build fix only, no review.
+
+ Fixes https://bugs.webkit.org/show_bug.cgi?id=23685.
+ Correct build break caused by @r40473.
+
+ * page/win/FrameWin.cpp: Correct access for adjustPageHeight.
+ (WebCore::computePageRectsForFrame):
+
+2009-02-02 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Not reviewed. Fix WML enabled builds.
+ FrameLoader::urlSelected() got a new parameter: lockBackForwardList. Pass 'false', as HTMLAnchorElement does.
+
+ * wml/WMLAElement.cpp:
+ (WebCore::WMLAElement::defaultEventHandler):
+
+2009-02-02 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6451610> Reloading a AppCache page doesn't ever hit the server
+
+ Not easily testable.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::createResourceHandle): A new method that creates a resource
+ handle in a manner that is closer to what CachedResource does. We now make conditional
+ requests for better performance, and set max-age to ensure that stale responses are not used.
+ (WebCore::ApplicationCacheGroup::update): Use the new createResourceHandle() method.
+ (WebCore::ApplicationCacheGroup::didReceiveResponse): If the response code for the resource
+ is 304, take it from the newest cache.
+ (WebCore::ApplicationCacheGroup::didFail): Pre-compute request URL.
+ (WebCore::ApplicationCacheGroup::didReceiveManifestResponse): Don't create a resource for
+ the manifest if the response code was 304 - it won't be needed.
+ (WebCore::ApplicationCacheGroup::didReceiveManifestData): Replaced an assertion that
+ m_manifestResource is not null with a check.
+ (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): Treat null m_manifestResource as
+ an indication that the response was 304.
+ (WebCore::ApplicationCacheGroup::startLoadingEntry): Use createResourceHandle().
+
+ * loader/appcache/ApplicationCacheGroup.h: Added createResourceHandle().
+
+2009-02-01 Darin Adler <darin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Bug 23674: Speed up some things based on profiling the page load test
+ https://bugs.webkit.org/show_bug.cgi?id=23674
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::canShareStyleWithElement): Use the newly named cssTarget instead
+ of the old name, getCSSTarget.
+ (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector): Ditto.
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::insertedIntoDocument): Moved code from Node in here rather than
+ calling through to EventTargetNode::insertedIntoDocument.
+ (WebCore::ContainerNode::removedFromDocument): Ditto.
+ (WebCore::ContainerNode::insertedIntoTree): Tweaked a bit.
+ (WebCore::ContainerNode::removedFromTree): Ditto.
+
+ * dom/ContainerNode.h: Moved the constructor definition here and made it inline.
+
+ * dom/Document.cpp:
+ (WebCore::Document::removeAllEventListenersFromAllNodes): Iterate the document element and
+ its contents only to avoid the document type node. This allows us to remove the virtual
+ function call to isEventTargetNode from the loop.
+ (WebCore::Document::setCSSTarget): Changed argument to be an Element rather than Node.
+
+ * dom/Document.h: Changed CSS target to be an Element rather than a Node. Renamed
+ getCSSTarget to cssTarget.
+
+ * dom/EventTargetNode.cpp:
+ (WebCore::EventTargetNode::removeAllEventListenersSlowCase): Renamed and turned the
+ rare data check into an assertion.
+
+ * dom/EventTargetNode.h: Made the fast case of removeAllEventListeners be inline.
+ Also moved the constructor definition here and made it inline. And added toEventTargetNode,
+ matching the design of the render tree checked casts. Later we can migrate all callers
+ from EventTargetNodeCast to toEventTargetNode.
+
+ * dom/NamedAttrMap.cpp:
+ (WebCore::NamedAttrMap::detachAttributesFromElement): Added. Factored out from
+ clearAttributes, so we could use this loop in cases where we're not clearing the attributes.
+ (WebCore::NamedAttrMap::~NamedAttrMap): Call detachAttributesFromElement instead of
+ clearAttributes here.
+ (WebCore::NamedAttrMap::clearAttributes): Call detachAttributesFromElement here.
+ (WebCore::NamedAttrMap::detachFromElement): Call detachAttributesFromElement instead of
+ clearAttributes. We don't need to clear the attributes array just because the element is
+ going away, so don't.
+ (WebCore::NamedAttrMap::virtualLength): Added.
+
+ * dom/NamedAttrMap.h: Made all the virtual functions inherited from NamedNodeMap be private.
+ These are all unnecessarily inefficient for use outside the DOM. Changed length to be a
+ non-virtual function. This was a fairly hot function.
+
+ * dom/NamedMappedAttrMap.cpp:
+ (WebCore::NamedMappedAttrMap::setClass): Changed to use element() function now that the
+ m_element data member is private.
+
+ * dom/NamedMappedAttrMap.h: Made a few functions private. Made the
+ hasMappedAttributes function non-virtual.
+
+ * dom/NamedNodeMap.h: Made length a non-virtual inline function that calls a virtual
+ function, name virtualLength. This lets NamedAttrMap::length be a non-virtual function.
+
+ * dom/Node.cpp:
+ (WebCore::Node::insertedIntoDocument): Removed call to insertedIntoTree, since it's
+ only non-empty in subclasses of ContainerNode.
+ (WebCore::Node::removedFromDocument): Ditto. Also removed setCSSTarget. Since a CSS
+ target has to be an Element, this can be moved down to ContainerNode (or it could be
+ moved down to Element for that matter).
+
+ * dom/QualifiedName.cpp:
+ (WebCore::QualifiedName::QualifiedName): Removed double initialization of m_impl.
+
+ * dom/QualifiedName.h: Moved the destructor, copy constructor, assignment operator, and
+ setPrefix function definitions into the header and made them inline.
+
+ * html/HTMLAreaElement.cpp:
+ (WebCore::HTMLAreaElement::mapMouseEvent): Updated since the stored region is now
+ an OwnPtr.
+ (WebCore::HTMLAreaElement::accessKey): Use AtomicString.
+ (WebCore::HTMLAreaElement::setAccessKey): Ditto.
+ (WebCore::HTMLAreaElement::alt): Ditto.
+ (WebCore::HTMLAreaElement::setAlt): Ditto.
+ (WebCore::HTMLAreaElement::coords): Ditto.
+ (WebCore::HTMLAreaElement::setCoords): Ditto.
+ (WebCore::HTMLAreaElement::setHref): Ditto.
+ (WebCore::HTMLAreaElement::shape): Ditto.
+ (WebCore::HTMLAreaElement::setShape): Ditto.
+ (WebCore::HTMLAreaElement::setTarget): Ditto.
+
+ * html/HTMLAreaElement.h: Use AtomicString in the getter and setter DOM operations.
+ Change the region data member to be an OwnPtr<Path> instead of a Path to optimize
+ the common case where an area element is parsed but never hit-tested. This could
+ also have been done by changing the Path class's null case to be more efficient,
+ but this seems fine.
+
+ * html/HTMLViewSourceDocument.cpp:
+ (WebCore::HTMLViewSourceDocument::createContainingTable): Use addAttribute instead
+ of insertAttribute.
+ (WebCore::HTMLViewSourceDocument::addSpanWithClassName): Ditto.
+ (WebCore::HTMLViewSourceDocument::addLine): Ditto.
+ (WebCore::HTMLViewSourceDocument::addLink): Ditto.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::gotoAnchor): Use cssTarget under its new name instead
+ of its old name getCSSTarget.
+
+ * platform/graphics/GlyphWidthMap.cpp:
+ (WebCore::GlyphWidthMap::locatePageSlowCase): Refactored from locatePage.
+
+ * platform/graphics/GlyphWidthMap.h: Made most of this class inline.
+ Changed m_pages to use OwnPtr.
+
+ * platform/text/PlatformString.h: Remove include no longer needed since
+ StringImpl.h includes it.
+
+ * platform/text/StringImpl.cpp:
+ (WebCore::StringImpl::createStrippingNullCharactersSlowCase): Refactored
+ from createStrippingNullCharacters.
+ * platform/text/StringImpl.h: Moved the definition of
+ createStrippingNullCharacters here and made it inline.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::firstLineStyleSlowCase): Refactored from
+ firstLineStyle.
+
+ * rendering/RenderObject.h: Moved the definition of the firstLineStyle
+ function here and made it inline. Moved the definition of the
+ documentBeingDestroyed function here and made it inline.
+
+ * svg/SVGSVGElement.cpp:
+ (WebCore::SVGSVGElement::getCTM): Use getAttributeItem instead of
+ getNamedItem here since it accomplishes the same thing but is more efficient.
+ (WebCore::SVGSVGElement::getScreenCTM): Ditto.
+ * svg/SVGStyledElement.cpp:
+ (WebCore::SVGStyledElement::getPresentationAttribute): Ditto.
+
+ * xml/XPathFunctions.cpp:
+ (WebCore::XPath::FunLang::evaluate): Use getAttributeItem instead of
+ getNamedItemNS.
+
+ * xml/XPathStep.cpp:
+ (WebCore::XPath::Step::nodesInAxis): Use attributeItem instead of item here.
+
+2009-02-02 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Darin Adler.
+
+ Move Frame::forceLayout, Frame::adjustPageHeight and Frame::forceLayoutWithPageWidthRange to FrameView
+
+ https://bugs.webkit.org/show_bug.cgi?id=23428
+
+ FrameView::forceLayout could be killed but the comment might
+ contain a value over the the plain FrameView::layout...
+
+ Adjust the WebCore/WebKit consumers of these methods.
+
+ * WebCore.base.exp:
+ * page/Frame.cpp:
+ (WebCore::Frame::setPrinting):
+ * page/Frame.h:
+ * page/FrameView.cpp:
+ (WebCore::FrameView::forceLayout):
+ (WebCore::FrameView::forceLayoutWithPageWidthRange):
+ (WebCore::FrameView::adjustPageHeight):
+ * page/FrameView.h:
+ * page/PrintContext.cpp:
+ (WebCore::PrintContext::computePageRects):
+
+2009-02-01 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - fix <rdar://problem/6546625> REGRESSION (r40432): iframes added to global history at haaretz.co.il
+
+ Fixes http/tests/navigation/multiple-back-forward-entries.html
+
+ r40432 added a parameter to FrameLoader::scheduleLocationChange() and
+ failed to update all call sites.
+
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::createWindow): Pass the lockBackForwardHistory parameter,
+ giving it the same value as the lockHistory parameter.
+ (windowProtoFuncOpen): Ditto.
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::setLocation): Ditto.
+ * bindings/js/JSDocumentCustom.cpp:
+ (WebCore::JSDocument::setLocation): Ditto.
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::requestFrame): Ditto.
+
+2009-01-31 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ - fix <rdar://problem/6546549> Eliminate some RenderText::width() overhead from findNextLineBreak()
+
+ On the PLT, this results in 0.36x the number of virtual function calls
+ to RenderText::width() and 0.69x the number of calls to
+ Font::isFixedPitch(), but makes 1.0004x the number of calls to
+ Font::width().
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::width): Replaced bounds checks on 'from' and 'len'
+ with an assertion.
+ * rendering/bidi.cpp:
+ (WebCore::textWidth): Added this inlined helper function which calls
+ Font::width() directly in the non-fixed-pitch, non-full-range case, and
+ otherwise calls RenderText::width().
+ (WebCore::RenderBlock::findNextLineBreak): Cache whether the font has
+ fixed pitch (in which case RenderText::width() will be called in order
+ to take advantage of the widthFromCache() optimization for fixed-pitch
+ fonts). Replaced all calls to RenderText::width() with calls to the
+ textWidth() helper function.
+
+2009-01-31 David Hyatt <hyatt@apple.com>
+
+ Inline all of the setNeedsLayout method and its associated functions. Also inline setChildNeedsLayout
+ and setNeedsPositionedMovementLayout.
+
+ Reviewed by Dan Bernstein
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::setLayerNeedsFullRepaint):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::setNeedsLayout):
+ (WebCore::RenderObject::setChildNeedsLayout):
+ (WebCore::RenderObject::setNeedsPositionedMovementLayout):
+ (WebCore::objectIsRelayoutBoundary):
+ (WebCore::RenderObject::markContainingBlocksForLayout):
+
+2009-01-31 Darin Adler <darin@apple.com>
+
+ Fix Mac build.
+
+ * loader/FrameLoader.cpp: Moved FrameLoaderClient::hasHTMLView in here.
+ We need it to not be an inline. Sadly, FrameLoaderClient.cpp was prematurely
+ deleted and I don't want to bring it back just to fix the build.
+
+ * loader/FrameLoaderClient.h: Rearrange virtual functions and corrected
+ a possibly-confusing comment.
+
+2009-01-31 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by David Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23664
+ Remove unused dead code from RenderTable class. The dead code includes
+ two enums and the associated member variables as well as one getter function.
+
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::RenderTable):
+ * rendering/RenderTable.h:
+
+2009-01-31 David Hyatt <hyatt@apple.com>
+
+ More removal of code from RenderContainer. Move removeLeftoverAnonymousBlock down into RenderBlock.
+ Move destroyLeftoverChildren into the RenderObjectChildList. Convert all containers to use the
+ RenderObjectChildList.
+
+ Reviewed by Sam Weinig
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::destroy):
+ (WebCore::RenderBlock::addChild):
+ (WebCore::RenderBlock::removeLeftoverAnonymousBlock):
+ (WebCore::RenderBlock::layoutPositionedObjects):
+ (WebCore::RenderBlock::childBecameNonInline):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::layout):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::firstChildBox):
+ (WebCore::RenderBox::lastChildBox):
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::addChild):
+ (WebCore::RenderContainer::removeChildNode):
+ (WebCore::RenderContainer::updateBeforeAfterContentForContainer):
+ (WebCore::RenderContainer::appendChildNode):
+ (WebCore::RenderContainer::insertChildNode):
+ (WebCore::RenderContainer::positionForCoordinates):
+ (WebCore::RenderContainer::addLineBoxRects):
+ (WebCore::RenderContainer::collectAbsoluteLineBoxQuads):
+ * rendering/RenderContainer.h:
+ (WebCore::RenderContainer::virtualChildren):
+ (WebCore::RenderContainer::children):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::destroy):
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::layout):
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::destroy):
+ (WebCore::RenderMedia::children):
+ * rendering/RenderMedia.h:
+ (WebCore::RenderMedia::virtualChildren):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::destroy):
+ (WebCore::RenderObject::layout):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::firstChild):
+ (WebCore::RenderObject::lastChild):
+ (WebCore::RenderObject::virtualChildren):
+ (WebCore::RenderObject::canHaveChildren):
+ * rendering/RenderObjectChildList.cpp: Added.
+ (WebCore::RenderObjectChildList::destroyLeftoverChildren):
+ * rendering/RenderObjectChildList.h:
+ * rendering/RenderReplaced.h:
+ (WebCore::RenderReplaced::canHaveChildren):
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::RenderSVGContainer):
+ (WebCore::RenderSVGContainer::destroy):
+ (WebCore::RenderSVGContainer::removeChildNode):
+ (WebCore::RenderSVGContainer::appendChildNode):
+ (WebCore::RenderSVGContainer::insertChildNode):
+ * rendering/RenderSVGContainer.h:
+ (WebCore::RenderSVGContainer::virtualChildren):
+ (WebCore::RenderSVGContainer::children):
+
+2009-01-31 David Hyatt <hyatt@apple.com>
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=11363
+
+ Remove the hacks in table code around the DeleteButtonController and fix tables so that positioned children don't get wrapped in anonymous objects.
+ With the removal of a non-positioned DeleteButtonController renderer, table layout can be tightened up to only lay out table sections. Table section
+ layout is tightened up to ignore non-table rows. When a table has multiple captions, only the real one will do a layout now. The other ones will
+ be properly ignored.
+
+ Reviewed by Oliver Hunt
+
+ * editing/DeleteButtonController.cpp:
+ (WebCore::DeleteButtonController::createDeletionUI):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::addChild):
+ (WebCore::RenderTable::layout):
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::layout):
+ * rendering/RenderTableSection.h:
+
+2009-01-31 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23663
+ Add a void toRenderBox() method which catches unnecessary casts at compile
+ time and also fix the four cases where this was happening.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::determineHorizontalPosition):
+ * rendering/RenderBox.h:
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutHorizontalBox):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::updateHitTestResult):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPosition):
+
+2009-01-30 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ Add a pref to disable web security.
+
+ * WebCore.base.exp:
+ * dom/Document.cpp:
+ (WebCore::Document::initSecurityContext):
+ * page/SecurityOrigin.cpp:
+ (WebCore::SecurityOrigin::SecurityOrigin):
+ (WebCore::SecurityOrigin::canAccess):
+ (WebCore::SecurityOrigin::canRequest):
+ (WebCore::SecurityOrigin::grantUniversalAccess):
+ * page/SecurityOrigin.h:
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+ (WebCore::Settings::setWebSecurityEnabled):
+ * page/Settings.h:
+ (WebCore::Settings::isWebSecurityEnabled):
+
+2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Build fix.
+
+ Move the inline virtual destructor after a non-inline virtual
+ function so that the symbol for the vtable is not marked as a
+ weakly exported symbol.
+
+ This trick was previously used at revision 36122 in JSObject.h
+
+ * loader/FrameLoaderClient.h:
+ (WebCore::FrameLoaderClient::~FrameLoaderClient):
+
+2009-01-30 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Stephanie Lewis
+
+ Inline SimpleFontData::widthForGlyph for a minor page load improvement.
+
+ * platform/graphics/SimpleFontData.cpp:
+ * platform/graphics/SimpleFontData.h:
+ (WebCore::SimpleFontData::widthForGlyph):
+
+2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Build fix for WX and maybe even Windows.
+
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCoreSources.bkl:
+
+2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Darin Adler.
+
+ Move Frame::sendResizeEvent and Frame::sendScrollEvent to EventHandler
+
+ Carry out the move and catch up in two call sites.
+
+ * WebCore.base.exp:
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::sendResizeEvent):
+ (WebCore::EventHandler::sendScrollEvent):
+ * page/EventHandler.h:
+ * page/Frame.cpp:
+ * page/Frame.h:
+ * page/FrameView.cpp:
+ (WebCore::FrameView::performPostLayoutTasks):
+ (WebCore::FrameView::valueChanged):
+
+2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Darin Adler.
+
+ Move Frame::isFrameSet to Document::isFrameSet
+
+ Changed the FrameLoader callsite. I assume that as this
+ point m_frame.document() might return a null pointer. Change
+ the condition to either not having a document or not having a
+ frame set. This should be semantically equivalent to the
+ old code.
+
+ Make Document::body() const to be able to call it from within
+ Document::isFrameSet. Leave the isHTMLDocument() check as this
+ is a stronger condition than simply having a HTMLElement in the
+ DOM.
+
+ * WebCore.base.exp:
+ * dom/Document.cpp:
+ (WebCore::Document::isFrameSet):
+ (WebCore::Document::body):
+ * dom/Document.h:
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::shouldScrollToAnchor):
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ (WebCore::LegacyWebArchive::createFromSelection):
+ * page/Frame.cpp:
+ * page/Frame.h:
+
+2009-01-30 Aurelian Maga <aurelianmaga@yahoo.com>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] Logic fixes and build fixes
+
+ https://bugs.webkit.org/show_bug.cgi?id=22022
+
+ Catch up with the internal GeoLocation API and fix the logic of
+ the previous version.
+
+ * platform/gtk/GeolocationServiceGtk.cpp:
+ (WebCore::GeolocationServiceGtk::startUpdating):
+ (WebCore::GeolocationServiceGtk::updateLocationInformation):
+ (WebCore::GeolocationServiceGtk::position_changed):
+
+2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ [GTK] Implement GeolocationService using the Geoclue library
+
+ https://bugs.webkit.org/show_bug.cgi?id=22022
+
+ Untested implementation of the GeolocationService using the geoclue
+ library. Velocity handling is completely missing and the accuracy
+ handling might be wrong.
+
+ * platform/gtk/GeolocationServiceGtk.cpp:
+ (WTF::GeoclueAccuracy):
+ (WebCore::GeolocationServiceGtk::GeolocationServiceGtk):
+ (WebCore::GeolocationServiceGtk::~GeolocationServiceGtk):
+ (WebCore::GeolocationServiceGtk::startUpdating):
+ (WebCore::GeolocationServiceGtk::stopUpdating):
+ (WebCore::GeolocationServiceGtk::suspend):
+ (WebCore::GeolocationServiceGtk::resume):
+ (WebCore::GeolocationServiceGtk::lastPosition):
+ (WebCore::GeolocationServiceGtk::lastError):
+ (WebCore::GeolocationServiceGtk::updateLocationInformation):
+ (WebCore::GeolocationServiceGtk::updatePosition):
+ (WebCore::GeolocationServiceGtk::position_changed):
+ (WebCore::GeolocationServiceGtk::setError):
+ * platform/gtk/GeolocationServiceGtk.h:
+
+2009-01-30 Mark Rowe <mrowe@apple.com>
+
+ Build fix. Declare preferredSize as static.
+
+ * platform/text/cf/StringImplCF.cpp:
+ (WebCore::StringWrapperCFAllocator::preferredSize):
+
+2009-01-30 Darin Adler <darin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Bug 23622: create CFString and NSString objects from WebCore::String without copying the characters
+ https://bugs.webkit.org/show_bug.cgi?id=23622
+
+ * platform/text/cf/StringImplCF.cpp:
+ (WebCore::StringWrapperCFAllocator::allocator): Added. Returns the allocator.
+ (WebCore::StringWrapperCFAllocator::retain): Added. Callback for allocator.
+ (WebCore::StringWrapperCFAllocator::release): Ditto.
+ (WebCore::StringWrapperCFAllocator::copyDescription): Ditto.
+ (WebCore::StringWrapperCFAllocator::allocate): Ditto.
+ (WebCore::StringWrapperCFAllocator::reallocate): Ditto.
+ (WebCore::StringWrapperCFAllocator::deallocate): Ditto.
+ (WebCore::StringWrapperCFAllocator::preferredSize): Ditto.
+ (WebCore::StringWrapperCFAllocator::create): Added. Creates the allocator, but
+ returns 0 if garbage collection is enabled.
+ (WebCore::StringImpl::createCFString): Use StringWrapperCFAllocator if possible.
+
+ * platform/text/mac/StringImplMac.mm:
+ (WebCore::StringImpl::operator NSString *): Use CFString and toll-free bridging,
+ rather than using NSString directly. This lets NSString benefit from the above.
+
+2009-01-30 Darin Adler <darin@apple.com>
+
+ * page/Frame.cpp:
+ (WebCore::Frame::createView): Fix debug build by removing get() from assert.
+
+2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22056
+
+ Kill FrameLoaderClient.cpp, move the code over to Frame::createView
+
+ FrameLoaderClient is supposed to be an interface, move the
+ to be shared code to Frame which is a controller and is
+ allowed to create a FrameView.
+
+ * GNUmakefile.am:
+ * WebCore.base.exp:
+ * WebCore.pro:
+ * WebCore.xcodeproj/project.pbxproj:
+ * loader/FrameLoaderClient.cpp: Removed.
+ * loader/FrameLoaderClient.h:
+ (WebCore::FrameLoaderClient::~FrameLoaderClient):
+ * page/Frame.cpp:
+ (WebCore::Frame::createView):
+ * page/Frame.h:
+
+2009-01-30 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23357
+
+ New files to support accelerated compositing at the RenderLayer
+ level.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ New files added to project, and run through the sort script.
+
+ * rendering/RenderLayerBacking.cpp: Added.
+ * rendering/RenderLayerBacking.h: Added.
+ New object to store compositing-related data for a single
+ RenderLayer.
+
+ * rendering/RenderLayerCompositor.cpp: Added.
+ * rendering/RenderLayerCompositor.h: Added.
+ Per-RenderView controller object for compositing hierarchy
+ maintenance.
+
+2009-01-30 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23356
+
+ Add new files related to accelerated compositing:
+
+ * WebCore.xcodeproj/project.pbxproj:
+ Add the files to the project. Also add ColorCG.cpp, for the
+ Color(CGColorRef) constructor.
+
+ * platform/graphics/GraphicsLayer.cpp: Added.
+ * platform/graphics/GraphicsLayer.h: Added.
+ GraphicsLayer is a platform abstraction for a hardware-backed
+ layer.
+
+ * platform/graphics/GraphicsLayerClient.h: Added.
+ Client of GraphicsLayer, allowing GraphicsLayer to call out
+ to WebCore code.
+
+ * platform/graphics/mac/GraphicsLayerCA.h: Added.
+ * platform/graphics/mac/GraphicsLayerCA.mm: Added.
+ Mac Core Animation implementation of GraphicsLayer.
+
+ * platform/graphics/mac/WebLayer.h: Added.
+ * platform/graphics/mac/WebLayer.mm: Added.
+ * platform/graphics/mac/WebTiledLayer.h: Added.
+ * platform/graphics/mac/WebTiledLayer.mm: Added.
+ Subclasses of CALayer and CATiledLayer -- helpers for the
+ GraphicsLayerCA implementation.
+
+2009-01-30 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Split "lockHistory" into "lockHistory" and "lockBackForwardList" in
+ preparation for setting them differently during a redirect.
+
+ * WebCore.base.exp:
+ * bindings/js/JSHTMLFormElementCustom.cpp:
+ (WebCore::JSHTMLFormElement::submit):
+ * bindings/js/JSLocationCustom.cpp:
+ (WebCore::navigateIfAllowed):
+ (WebCore::JSLocation::setHref):
+ (WebCore::JSLocation::setProtocol):
+ (WebCore::JSLocation::setHost):
+ (WebCore::JSLocation::setHostname):
+ (WebCore::JSLocation::setPort):
+ (WebCore::JSLocation::setPathname):
+ (WebCore::JSLocation::setSearch):
+ (WebCore::JSLocation::setHash):
+ (WebCore::JSLocation::replace):
+ (WebCore::JSLocation::assign):
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::defaultEventHandler):
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::submit):
+ * html/HTMLFormElement.h:
+ * loader/FrameLoader.cpp:
+ (WebCore::FormSubmission::FormSubmission):
+ (WebCore::ScheduledRedirection::ScheduledRedirection):
+ (WebCore::isBackForwardLoadType):
+ (WebCore::FrameLoader::createWindow):
+ (WebCore::FrameLoader::changeLocation):
+ (WebCore::FrameLoader::urlSelected):
+ (WebCore::FrameLoader::submitFormAgain):
+ (WebCore::FrameLoader::submitForm):
+ (WebCore::FrameLoader::restoreDocumentState):
+ (WebCore::FrameLoader::scheduleHTTPRedirection):
+ (WebCore::FrameLoader::scheduleLocationChange):
+ (WebCore::FrameLoader::scheduleRefresh):
+ (WebCore::FrameLoader::redirectionTimerFired):
+ (WebCore::FrameLoader::loadURLIntoChildFrame):
+ (WebCore::FrameLoader::startRedirectionTimer):
+ (WebCore::FrameLoader::loadFrameRequestWithFormAndValues):
+ (WebCore::FrameLoader::transitionToCommitted):
+ (WebCore::FrameLoader::clientRedirected):
+ (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy):
+ (WebCore::FrameLoader::loadItem):
+ * loader/FrameLoader.h:
+ * loader/FrameLoaderTypes.h:
+ (WebCore::):
+ * page/ContextMenuController.cpp:
+ (WebCore::ContextMenuController::contextMenuItemSelected):
+ * svg/SVGAElement.cpp:
+ (WebCore::SVGAElement::defaultEventHandler):
+
+2009-01-30 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for <rdar://problem/6545095>
+ ASSERTION FAILED: RenderBlock.h:519: !o || o->isRenderBlock()
+
+ Test: fast/block/float/crash-replaced-display-block.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::layoutBlockChildren): Move RenderBlock only code into
+ isRenderBlock if-statement.
+
+2009-01-30 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 23656: AX hierarchy for iFrames is incorrect
+ https://bugs.webkit.org/show_bug.cgi?id=23656
+
+ The AX hierarchy when an iFrame was present was incorrect. A different scroll area was
+ returned when going down compared to when going up.
+
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (convertToNSArray):
+
+2009-01-30 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix Qt build to include new class IdentifierRep introduced in revision 40412.
+
+ * WebCore.pro:
+
+2009-01-30 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Make IdentifierRep.h a private header, and add symbols needed by WebKit to WebCore.LP64.exp.
+
+ * WebCore.LP64.exp:
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-01-30 Sam Weinig <sam@webkit.org>
+
+ Commit files I forgot to in the previous commit.
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::layoutCount):
+ * page/Frame.cpp:
+ (WebCore::Frame::contentRenderer):
+ (WebCore::Frame::forceLayoutWithPageWidthRange):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::layout):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::nodeAtPoint):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::repaintUsingContainer):
+ (WebCore::RenderObject::repaint):
+ (WebCore::RenderObject::repaintRectangle):
+ (WebCore::RenderObject::view):
+ (WebCore::RenderObject::scheduleRelayout):
+ (WebCore::RenderObject::maximalOutlineSize):
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::clampImageBufferSizeToViewport):
+ * svg/SVGLength.cpp:
+ (WebCore::SVGLength::PercentageOfViewport):
+
+2009-01-30 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Darin Adler.
+
+ More scaffolding for redirect tracking. No behavior change yet.
+
+ * bindings/js/JSHTMLFormElementCustom.cpp:
+ (WebCore::JSHTMLFormElement::submit): Added scaffolding necessary for
+ redirect checking in a form submission through JS. (Currently, we
+ just specify "no redirect.")
+
+ * bindings/js/ScriptController.h:
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::processingUserGesture):
+ (WebCore::ScriptController::processingUserGestureEvent):
+ (WebCore::ScriptController::isJavaScriptAnchorNavigation): Refactored
+ user gesture check to make it more clear.
+
+ (WebCore::ScriptController::pageIsProcessingUserGesture): Added a helper
+ for checking if there's a user gesture in any frame on the page (a more
+ relaxed rule than our popup blocking rule, which requires the user
+ gesture to occur in the frame that's executing JavaScript.)
+
+ * html/HTMLFormElement.h:
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::submit): Added scaffolding necessary for
+ redirect checking in a form submission through the DOM. (Currently, we
+ just specify "no redirect.")
+
+ * html/HTMLFormElement.idl: Made submit custom so it can participate
+ in redirect checking.
+
+ * loader/FrameLoader.h:
+ * loader/FrameLoader.cpp:
+ (WebCore::FormSubmission::FormSubmission): Clarified some names, and
+ added a "lockHistory" parameter to form submissions, to match other
+ navigations.
+
+ (WebCore::FrameLoader::submitFormAgain):
+ (WebCore::FrameLoader::submitForm): Use the lockHistory parameter.
+
+ (WebCore::FrameLoader::userGestureHint): Refactored this function for
+ clarity, and added a FIXME for a change I was too scared to make myself.
+ (Really, we should just get rid of this function.)
+
+ (WebCore::FrameLoader::loadFrameRequestWithFormAndValues): Refactored
+ to pass a FrameLoadType to form posts, too, so they can participate in
+ redirect tracking.
+
+ (WebCore::FrameLoader::loadPostRequest):
+ (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy):
+ (WebCore::FrameLoader::loadItem): Use the lockHistory parameter.
+
+2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Mark Rowe.
+
+ [Gtk+] Use AccessibilityObject::stringValue for the AtkObject name
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+
+ The API documentation at http://library.gnome.org/devel/atk/stable/AtkText.html
+ states that: "AtkObjects whose text content is simple, unattributed, and very
+ brief may expose that content via atk_object_get_name instead"
+
+ As we are currently not able to always provide a AtkTextInterface
+ implementation this will make the whole content available to accerciser,
+ and other tools.
+
+ * page/gtk/AccessibilityObjectWrapperAtk.cpp:
+
+2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build fix.
+
+ Include string.h for strdup.
+
+ * bridge/IdentifierRep.h:
+
+2009-01-30 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Add toRenderView methods for casting RenderObjects to RenderViews. The methods will assert if the object
+ is not a RenderView.
+
+ * dom/Document.cpp:
+ (WebCore::Document::renderView):
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::nodeWillBeRemoved):
+ (WebCore::SelectionController::recomputeCaretRect):
+ (WebCore::SelectionController::invalidateCaretRect):
+ (WebCore::SelectionController::focusedOrActiveStateChanged):
+ * editing/mac/SelectionControllerMac.mm:
+ (WebCore::SelectionController::notifyAccessibilityForSelectionChange):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::styleDidChange):
+ (WebCore::RenderBox::repaintLayerRectsForImage):
+ (WebCore::RenderBox::availableHeightUsing):
+ * rendering/RenderView.h:
+ (WebCore::toRenderView):
+
+2009-01-30 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23360
+
+ Really use the container-relative repaint rect methods
+ for repaint during layout
+
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::LayoutRepainter::LayoutRepainter):
+
+2009-01-30 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Get rid of PrivateIdentifier and use IdentifierRep instead.
+
+ * bridge/NP_jsobject.cpp:
+ (_NPN_Invoke):
+ (_NPN_GetProperty):
+ (_NPN_SetProperty):
+ (_NPN_RemoveProperty):
+ (_NPN_HasProperty):
+ (_NPN_HasMethod):
+ * bridge/c/c_instance.cpp:
+ (JSC::Bindings::CInstance::getPropertyNames):
+ * bridge/c/c_utility.cpp:
+ (JSC::Bindings::convertNPStringToUTF16):
+ * bridge/c/c_utility.h:
+ * bridge/npruntime.cpp:
+ (_NPN_GetStringIdentifier):
+ (_NPN_GetStringIdentifiers):
+ (_NPN_GetIntIdentifier):
+ (_NPN_IdentifierIsString):
+ (_NPN_UTF8FromIdentifier):
+ (_NPN_IntFromIdentifier):
+
+2009-01-30 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig and Darin Adler.
+
+ Make IdentifierRep a real class, add necessary class methods.
+
+ * bridge/IdentifierRep.cpp:
+ (WebCore::identifierSet):
+ Returns a set of all identifiers.
+
+ (WebCore::IdentifierRep::isValid):
+ Return whether an identifier is valid, meaning that it's present in the
+ set of identifiers.
+
+ * bridge/IdentifierRep.h:
+ (WebCore::IdentifierRep::isString):
+ (WebCore::IdentifierRep::number):
+ (WebCore::IdentifierRep::string):
+ (WebCore::IdentifierRep::IdentifierRep):
+ (WebCore::IdentifierRep::):
+
+2009-01-30 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Add IdentifierRep which will be used by both plug-in implementations.
+
+ * GNUmakefile.am:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bridge/IdentifierRep.cpp: Added.
+ (WebCore::IdentifierRep::IdentifierRep):
+ (WebCore::IdentifierRep::):
+ (WebCore::intIdentifierMap):
+ (WebCore::identifierRep):
+ (WebCore::stringIdentifierMap):
+ * bridge/IdentifierRep.h: Added.
+ * bridge/c/c_utility.h:
+ * platform/text/PlatformString.h:
+ * platform/text/String.cpp:
+ (WebCore::String::fromUTF8WithLatin1Fallback):
+
+2009-01-30 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Add toRenderInline methods for casting RenderObjects to RenderInlines. The methods will assert if the object
+ is not a RenderInline.
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::removeLineBoxFromRenderObject):
+ (WebCore::InlineFlowBox::extractLineBoxFromRenderObject):
+ (WebCore::InlineFlowBox::attachLineBoxToRenderObject):
+ (WebCore::InlineFlowBox::rendererLineBoxes):
+ (WebCore::InlineFlowBox::determineSpacingForFlowBoxes):
+ (WebCore::InlineFlowBox::paint):
+ * rendering/LayoutState.cpp:
+ (WebCore::LayoutState::LayoutState):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paintObject):
+ (WebCore::RenderBlock::addFocusRingRects):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::offsetFromContainer):
+ (WebCore::RenderBox::computeRectForRepaint):
+ (WebCore::RenderBox::containingBlockWidthForPositioned):
+ (WebCore::RenderBox::containingBlockHeightForPositioned):
+ (WebCore::RenderBox::calcAbsoluteHorizontalValues):
+ (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::updateBeforeAfterContentForContainer):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::inlineContinuation):
+ (WebCore::nextContinuation):
+ (WebCore::RenderInline::splitInlines):
+ * rendering/RenderInline.h:
+ (WebCore::toRenderInline):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPosition):
+ (WebCore::RenderLayer::boundingBox):
+ * rendering/RenderLineBoxList.cpp:
+ (WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):
+ * rendering/RenderText.h:
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::createLineBoxes):
+ (WebCore::RenderBlock::layoutInlineChildren):
+
+2009-01-30 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23647
+ Fix PLATFORM(SKIA)'s ImageSource::clear method to match other ports
+
+ * platform/graphics/skia/ImageSourceSkia.cpp:
+ (WebCore::ImageSource::clear):
+
+2009-01-30 David Hyatt <hyatt@apple.com>
+
+ Add toRenderBlock methods for casting RenderObjects to RenderBlocks. The methods will assert if the object
+ is not a RenderBlock. Also add a toRenderBlock method that takes a RenderBlock but returns void and that
+ is unimplemented. This method will catch anyone trying to do a cast when the object is already a RenderBlock.
+
+ Making this change caught a bad cast in RenderBlock::layoutBlockChildren, so that is also fixed by this
+ patch with a containsFloats() check.
+
+ Reviewed by Darin Adler
+
+ * dom/PositionIterator.cpp:
+ (WebCore::PositionIterator::isCandidate):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::addBlockPlaceholderIfNeeded):
+ * editing/Editor.cpp:
+ (WebCore::Editor::hasBidiSelection):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::anchorElement):
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::styleWillChange):
+ (WebCore::RenderBlock::removeChild):
+ (WebCore::RenderBlock::layoutBlock):
+ (WebCore::RenderBlock::collapseMargins):
+ (WebCore::RenderBlock::clearFloatsIfNeeded):
+ (WebCore::RenderBlock::layoutBlockChildren):
+ (WebCore::RenderBlock::fillBlockSelectionGaps):
+ (WebCore::RenderBlock::markAllDescendantsWithFloatsForLayout):
+ (WebCore::RenderBlock::firstLineBlock):
+ (WebCore::getLineAtIndex):
+ (WebCore::getHeightForLineCount):
+ (WebCore::RenderBlock::lineCount):
+ (WebCore::RenderBlock::adjustForBorderFit):
+ (WebCore::RenderBlock::clearTruncation):
+ * rendering/RenderBlock.h:
+ (WebCore::toRenderBlock):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::offsetFromContainer):
+ (WebCore::RenderBox::computeRectForRepaint):
+ (WebCore::RenderBox::calcReplacedHeightUsing):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutHorizontalBox):
+ (WebCore::RenderFlexibleBox::layoutVerticalBox):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::inlineContinuation):
+ (WebCore::nextContinuation):
+ (WebCore::RenderInline::positionForCoordinates):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateScrollInfoAfterLayout):
+ * rendering/RenderListItem.cpp:
+ (WebCore::getParentOfFirstLineBox):
+ (WebCore::RenderListItem::positionListMarker):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::containingBlock):
+ (WebCore::RenderObject::computeRectForRepaint):
+ (WebCore::RenderObject::removeFromObjectLists):
+ (WebCore::RenderObject::getTextDecorationColors):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::addChild):
+ (WebCore::RenderTable::recalcSections):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::styleDidChange):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::adjustControlHeightBasedOnLineHeight):
+ * rendering/RootInlineBox.cpp:
+ (WebCore::RootInlineBox::block):
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::createLineBoxes):
+
+2009-01-30 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Sam Weinig
+
+ - Let CachedFrame handle the suspending/resuming of active DOM objects itself instead of
+ relying on some outside force.
+ - Clear the previous history item inside FrameLoader instead of relying on multiple
+ FrameLoaderClients to do it.
+
+ * history/CachedFrame.cpp:
+ (WebCore::CachedFrame::CachedFrame): Suspend active DOM objects here.
+ (WebCore::CachedFrame::restore): Resume those DOM objects here.
+ * history/CachedFrame.h:
+ (WebCore::CachedFrame::domWindow):
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::commitProvisionalLoad): Let CachedFrame creation handle the
+ suspending of active DOM objects.
+ (WebCore::FrameLoader::open): Let CachedFrame::restore() handle resuming those DOM objects.
+ (WebCore::FrameLoader::checkLoadCompleteForThisFrame): Call frameLoadCompleted() instead
+ of performing a client call by itself.
+ (WebCore::FrameLoader::frameLoadCompleted):
+
+2009-01-30 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6448823> Application Cache is kept after a private browsing session
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::selectCache):
+ (WebCore::ApplicationCacheGroup::update):
+ Cache update will not be started if private browsing is enabled. Existing cache version
+ from disk database will be used.
+
+ * loader/appcache/ApplicationCacheGroup.h: Made postListenerTask() static, in order to call
+ it when refusing to update from selectCache().
+
+ * loader/appcache/ApplicationCache.cpp:
+ (WebCore::ApplicationCache::addDynamicEntry):
+ (WebCore::ApplicationCache::removeDynamicEntry):
+ Added reminders about private browsing to unimplemented methods.
+
2009-01-30 Laszlo Gombos <laszlo.1.gombos@nokia.com>
Reviewed by Simon Hausmann.
@@ -559,6 +44147,1361 @@
* html/PreloadScanner.cpp: Use COMPILER(GCC) instead of __GNUC__.
+2009-01-30 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23616: Various "template helpers" should be consolidated from isolated files in JavaScriptCore.
+ <https://bugs.webkit.org/show_bug.cgi?id=23616>
+
+ Added forwarding header.
+
+ * ForwardingHeaders/wtf/TypeTraits.h: Added.
+
+2009-01-30 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23599: ResourceError needs to be copyable for use in another thread.
+ <https://bugs.webkit.org/show_bug.cgi?id=23599>
+
+ Add ResourceErrorBase::copy method. (Not yet used.)
+
+ * platform/network/ResourceErrorBase.cpp:
+ (WebCore::ResourceErrorBase::copy):
+ * platform/network/ResourceErrorBase.h:
+
+2009-01-29 Stephanie Lewis <slewis@apple.com>
+
+ RS by Oliver Hunt.
+
+ Update the order files.
+
+ * WebCore.order:
+
+2009-01-29 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23488
+
+ Make TimerBase thread-aware (for Workers).
+ Added new class ThreadTimers - it keeps a heap of all timers for a thread (previously kept in a static global).
+ Pointer to instance of ThreadTimers is stored in GlobalThreadData.
+ Most static methods of TimerBase went to ThreadTimers.
+
+ The TimerBase functionality did not change (it maintains the timer heap which computes the nearest firing).
+
+ Added new abstract class SharedTimer, so worker threads can provide their own implementation (will be implemented on WorkerRunLoop).
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ Added new ThreadTimers.cpp to build files.
+
+ * platform/SharedTimer.h:
+ (WebCore::SharedTimer::~SharedTimer):
+ (WebCore::MainThreadSharedTimer::setFiredFunction):
+ (WebCore::MainThreadSharedTimer::setFireTime):
+ (WebCore::MainThreadSharedTimer::stop):
+ Added abstract SharedTimer and MainThreadSharedTimer which redirects to the existing port-supplied functions.
+
+ * platform/ThreadGlobalData.cpp:
+ (WebCore::ThreadGlobalData::ThreadGlobalData):
+ (WebCore::ThreadGlobalData::~ThreadGlobalData):
+ * platform/ThreadGlobalData.h:
+ (WebCore::ThreadGlobalData::threadTimers):
+ Added ThreadTimers to ThreadGlobalData.
+
+ * platform/ThreadTimers.cpp: Added.
+ (WebCore::mainThreadSharedTimer):
+ Static getter for a MainThreadSharedTimer singleton.
+
+ (WebCore::ThreadTimers::ThreadTimers):
+ (WebCore::ThreadTimers::setSharedTimer):
+ (WebCore::ThreadTimers::updateSharedTimer):
+ (WebCore::ThreadTimers::collectFiringTimers):
+ (WebCore::ThreadTimers::fireTimers):
+ (WebCore::ThreadTimers::sharedTimerFired):
+ (WebCore::ThreadTimers::sharedTimerFiredInternal):
+ (WebCore::ThreadTimers::fireTimersInNestedEventLoop):
+ ThreadTimers implementation. Most of the code is moved from previous static functions on TimerBase.
+ Need a new class so each thread may get ts own copy of the timer heap.
+
+ * platform/ThreadTimers.h: Added.
+ (WebCore::ThreadTimers::timerHeap):
+ (WebCore::ThreadTimers::timersReadyToFire):
+
+ * platform/Timer.cpp:
+ (WebCore::timerHeap):
+ (WebCore::timersReadyToFire):
+ (WebCore::TimerHeapElement::TimerHeapElement):
+ (WebCore::TimerHeapElement::checkConsistency):
+ (WebCore::TimerHeapElement::operator=):
+ (WebCore::TimerHeapIterator::checkConsistency):
+ (WebCore::TimerBase::TimerBase):
+ (WebCore::TimerBase::~TimerBase):
+ (WebCore::TimerBase::isActive):
+ (WebCore::TimerBase::checkHeapIndex):
+ (WebCore::TimerBase::heapDelete):
+ (WebCore::TimerBase::heapDeleteMin):
+ (WebCore::TimerBase::heapInsert):
+ (WebCore::TimerBase::heapPopMin):
+ (WebCore::TimerBase::setNextFireTime):
+ (WebCore::TimerBase::fireTimersInNestedEventLoop):
+ Now instead of static timer heap these use accessor functions that pull thread-specific heap instance.
+
+ * platform/Timer.h:
+ static methods moved to ThreadTimers.
+
+2009-01-29 David Hyatt <hyatt@apple.com>
+
+ Beginning of work to eliminate RenderContainer and make containership "pluggable" into any spot in the render tree. The first step is to create
+ the new object that will handle children: RenderObjectChildList and move RenderContainer's member variables into it. Subsequent patches will begin
+ moving RenderContainer's functionality into RenderObjectChildList.
+
+ Reviewed by Eric Seidel
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::RenderContainer):
+ (WebCore::RenderContainer::destroyLeftoverChildren):
+ (WebCore::RenderContainer::addChild):
+ (WebCore::RenderContainer::removeChildNode):
+ (WebCore::RenderContainer::updateBeforeAfterContentForContainer):
+ (WebCore::RenderContainer::appendChildNode):
+ (WebCore::RenderContainer::insertChildNode):
+ (WebCore::RenderContainer::layout):
+ (WebCore::RenderContainer::removeLeftoverAnonymousBlock):
+ (WebCore::RenderContainer::positionForCoordinates):
+ (WebCore::RenderContainer::addLineBoxRects):
+ (WebCore::RenderContainer::collectAbsoluteLineBoxQuads):
+ * rendering/RenderContainer.h:
+ (WebCore::RenderContainer::firstChild):
+ (WebCore::RenderContainer::lastChild):
+ (WebCore::RenderContainer::firstChildBox):
+ (WebCore::RenderContainer::lastChildBox):
+ * rendering/RenderObjectChildList.h: Added.
+ (WebCore::RenderObjectChildList::RenderObjectChildList):
+ (WebCore::RenderObjectChildList::firstChild):
+ (WebCore::RenderObjectChildList::lastChild):
+ (WebCore::RenderObjectChildList::setFirstChild):
+ (WebCore::RenderObjectChildList::setLastChild):
+
+2009-01-29 Jungshik Shin <jshin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ http://bugs.webkit.org/show_bug.cgi?id=23598
+ Replace smart-quotes in UTF-8 with ASCII double-quotes to avoid
+ the compilation error on CJK Windows
+
+ * wml/WMLTableElement.cpp:
+ (WebCore::WMLTableElement::parseMappedAttribute):
+
+2009-01-29 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23627
+ Fix the PLATFORM(SKIA) build.
+
+ * svg/graphics/SVGPaintServer.cpp:
+ (WebCore::SVGPaintServer::teardown):
+
+2009-01-29 Scott Violet <sky@google.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23625
+ Skia platform doesn't render text to a canvas or support clipping to an image buffer
+
+ Fixes two bugs in Skia rendering to a canvas:
+ . Text was not rendered at all. This is because we never properly
+ fixed up the alpha values. The fix is to create a layer when
+ rendering text to a layer.
+ . We were not honoring clipping to an image buffer.
+
+ * platform/graphics/chromium/FontChromiumWin.cpp:
+ (WebCore::Font::drawGlyphs):
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::clipToImageBuffer):
+ * platform/graphics/skia/ImageBufferSkia.cpp:
+ (WebCore::ImageBuffer::ImageBuffer):
+ * platform/graphics/skia/PlatformContextSkia.cpp:
+ (PlatformContextSkia::PlatformContextSkia):
+ (PlatformContextSkia::setDrawingToImageBuffer):
+ (PlatformContextSkia::isDrawingToImageBuffer):
+ (PlatformContextSkia::beginLayerClippedToImage):
+ (PlatformContextSkia::restore):
+ (PlatformContextSkia::applyClipFromImage):
+ * platform/graphics/skia/PlatformContextSkia.h:
+
+2009-01-29 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ First step in tracking the urls a HistoryItem was redirected through.
+
+ * WebCore.base.exp:
+ * history/HistoryItem.cpp:
+ (WebCore::HistoryItem::HistoryItem):
+ (WebCore::HistoryItem::addRedirectURL):
+ (WebCore::HistoryItem::redirectURLs):
+ (WebCore::HistoryItem::setRedirectURLs):
+ * history/HistoryItem.h:
+
+2009-01-29 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann, Eric Seidel.
+
+ Just transform the pattern directly instead of transforming the context fixes this
+ problem. Texts or strokes are no longer affected by transformations.
+
+ SVG pattern transformation/BoundingBox can cause ugly stroke thickness or text positions
+ https://bugs.webkit.org/show_bug.cgi?id=23472
+
+ Test: svg/custom/pattern-with-transformation.svg
+
+ * platform/graphics/Pattern.h:
+ (WebCore::Pattern::setPatternSpaceTransform):
+ * platform/graphics/cairo/PatternCairo.cpp:
+ (WebCore::Pattern::createPlatformPattern):
+ * platform/graphics/cg/PatternCG.cpp:
+ (WebCore::Pattern::createPlatformPattern):
+ * platform/graphics/qt/PatternQt.cpp:
+ (WebCore::Pattern::createPlatformPattern):
+ * svg/graphics/SVGPaintServerPattern.cpp:
+ (WebCore::SVGPaintServerPattern::setup):
+
+2009-01-29 David Hyatt <hyatt@apple.com>
+
+ Move the line box list member out of RenderFlow and down into RenderBlock and RenderInline. Eliminate RenderFlow from the tree.
+
+ Reviewed by Sam Weinig
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * html/HTMLAnchorElement.cpp:
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::rendererLineBoxes):
+ (WebCore::InlineFlowBox::determineSpacingForFlowBoxes):
+ * rendering/InlineFlowBox.h:
+ * rendering/LayoutState.cpp:
+ (WebCore::LayoutState::LayoutState):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::RenderBlock):
+ (WebCore::RenderBlock::destroy):
+ (WebCore::RenderBlock::styleWillChange):
+ (WebCore::RenderBlock::styleDidChange):
+ (WebCore::RenderBlock::dirtyLineBoxes):
+ (WebCore::RenderBlock::removeChild):
+ (WebCore::RenderBlock::setSelectionState):
+ (WebCore::RenderBlock::avoidsFloats):
+ (WebCore::RenderBlock::positionForCoordinates):
+ (WebCore::RenderBlock::calcInlinePrefWidths):
+ (WebCore::RenderBlock::baselinePosition):
+ (WebCore::RenderBlock::getBaselineOfFirstLineBox):
+ (WebCore::RenderBlock::getBaselineOfLastLineBox):
+ (WebCore::RenderBlock::rectWithOutlineForRepaint):
+ (WebCore::RenderBlock::hoverAncestor):
+ (WebCore::RenderBlock::updateDragState):
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::lineBoxes):
+ (WebCore::RenderBlock::firstLineBox):
+ (WebCore::RenderBlock::lastLineBox):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::offsetFromContainer):
+ (WebCore::RenderBox::computeRectForRepaint):
+ (WebCore::RenderBox::containingBlockWidthForPositioned):
+ (WebCore::RenderBox::calcAbsoluteHorizontalValues):
+ (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
+ * rendering/RenderBox.h:
+ * rendering/RenderFlow.cpp: Removed.
+ * rendering/RenderFlow.h: Removed.
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::RenderInline):
+ (WebCore::RenderInline::destroy):
+ (WebCore::RenderInline::styleDidChange):
+ (WebCore::RenderInline::addChildIgnoringContinuation):
+ (WebCore::RenderInline::cloneInline):
+ (WebCore::RenderInline::splitInlines):
+ (WebCore::RenderInline::offsetLeft):
+ (WebCore::RenderInline::offsetTop):
+ (WebCore::RenderInline::positionForCoordinates):
+ (WebCore::RenderInline::rectWithOutlineForRepaint):
+ (WebCore::RenderInline::updateDragState):
+ (WebCore::RenderInline::relativePositionedInlineOffset):
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::lineBoxes):
+ (WebCore::RenderInline::firstLineBox):
+ (WebCore::RenderInline::lastLineBox):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPosition):
+ * rendering/RenderLineBoxList.cpp:
+ (WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):
+ * rendering/RootInlineBox.cpp:
+ (WebCore::RootInlineBox::rendererLineBoxes):
+ * rendering/RootInlineBox.h:
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::createLineBoxes):
+ * wml/WMLAElement.cpp:
+
+2009-01-29 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Cleaned up some naming in ScheduledRedirection.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::ScheduledRedirection::ScheduledRedirection):
+
+2009-01-29 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Update to use new API.
+
+ * platform/graphics/mac/FontCustomPlatformData.cpp:
+ (WebCore::FontCustomPlatformData::~FontCustomPlatformData):
+ (WebCore::createFontCustomPlatformData):
+
+2009-01-29 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23619
+ ASSERT(!error.isNull()) in DocumentLoader::mainReceivedError() when an SVG image load
+ is cancelled
+
+ Covered by existing tests (as a random crash).
+
+ * loader/EmptyClients.h:
+ (WebCore::EmptyFrameLoaderClient::cancelledError):
+ (WebCore::EmptyFrameLoaderClient::blockedError):
+ (WebCore::EmptyFrameLoaderClient::cannotShowURLError):
+ (WebCore::EmptyFrameLoaderClient::interruptForPolicyChangeError):
+ (WebCore::EmptyFrameLoaderClient::cannotShowMIMETypeError):
+ (WebCore::EmptyFrameLoaderClient::fileDoesNotExistError):
+ (WebCore::EmptyFrameLoaderClient::pluginWillHandleLoadError):
+ Create non-null errors.
+
+2009-01-29 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Removed an unused case of "lockHistory" to help make the other cases
+ clearer.
+
+ * page/FrameLoadRequest.h:
+ (WebCore::FrameLoadRequest::FrameLoadRequest):
+
+2009-01-29 David Hyatt <hyatt@apple.com>
+
+ Move all of the contination insertion code from RenderFlow to RenderInline. addChildToFlow is renamed to addChildIgnoringContinuation, and it has been moved to
+ RenderContainer so that it can still be called on either blocks or inlines. The base class implementation in RenderContainer is what RenderBlock uses. RenderInline
+ subclasses it to do all the work it used to do in addChildToFlow.
+
+ RenderBlock's old addChildToFlow can just become addChild. This simplification is possible because addChild was actually never being called on anonymous
+ block continuations.
+
+ The code dealing with anonymous table parts in the old addChildWithContinuation method can now be removed as a result with no harmful side effects. Falling through to the
+ base class and ignoring a block continuation makes the right thing happen.
+
+ addChildWithContinuation moved to RenderInline and has been renamed to addChildToContinuation.
+
+ Reviewed by Eric Seidel
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::addChild):
+ * rendering/RenderBlock.h:
+ * rendering/RenderContainer.h:
+ (WebCore::RenderContainer::addChildIgnoringContinuation):
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::styleDidChange):
+ (WebCore::RenderInline::addChild):
+ (WebCore::nextContinuation):
+ (WebCore::RenderInline::continuationBefore):
+ (WebCore::RenderInline::addChildIgnoringContinuation):
+ (WebCore::RenderInline::splitInlines):
+ (WebCore::RenderInline::splitFlow):
+ (WebCore::RenderInline::addChildToContinuation):
+ (WebCore::RenderInline::childBecameNonInline):
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::continuation):
+ (WebCore::RenderInline::setContinuation):
+
+2009-01-29 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Oliver Hunt
+
+ <rdar://problem/6337157> hyundaiusa.com closes window or tab during load
+
+ Test: fast/loader/subframe-self-close.html
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::close): Only allow mainframes to close the window.
+
+2009-01-29 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by David Hyatt.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=23539
+
+ Remove several virtual functions from Node & Element related to form control / input elements,
+ that shouldn't reside there, but move to approriate locations, in the new form control /
+ input element abstract base classes.
+
+ Remove the isControl() method from Node, as it's redundant - isFormControlElement() provides the same information.
+ Move isEnabled( / isReadOnlyControl() / isTextControl() from Node to FormControlElement.
+ Move isAutofilled() / isChecked() / isIndeterminate() from Node to InputElement.
+ Move isInputTypeHidden() / isPasswordField() from Element to InputElement.
+
+ Querying these methods requires using the toInputElement/toFormControlElement casting helper functions
+ to cast Element pointers to InputElement/FormControlElement pointers.
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::canShareStyleWithElement):
+ (WebCore::CSSStyleSelector::adjustRenderStyle):
+ (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector):
+ * dom/Element.h:
+ (WebCore::Element::isFormControlElementWithState):
+ * dom/FormControlElement.h:
+ * dom/InputElement.h:
+ * dom/Node.h:
+ * editing/TextIterator.cpp:
+ (WebCore::TextIterator::advance):
+ * html/HTMLFormControlElement.cpp:
+ (WebCore::HTMLFormControlElement::attach):
+ * html/HTMLFormControlElement.h:
+ (WebCore::HTMLFormControlElement::isTextControl):
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::CheckedRadioButtons::removeButton):
+ * html/HTMLInputElement.h:
+ (WebCore::HTMLInputElement::isAutofilled):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::isPasswordField):
+ (WebCore::AccessibilityRenderObject::isIndeterminate):
+ (WebCore::AccessibilityRenderObject::isChecked):
+ (WebCore::AccessibilityRenderObject::isControl):
+ (WebCore::AccessibilityRenderObject::isEnabled):
+ (WebCore::AccessibilityRenderObject::canSetFocusAttribute):
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (textMarkerForVisiblePosition):
+ * platform/ContextMenu.cpp:
+ (WebCore::ContextMenu::populate):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::resize):
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::itemIsEnabled):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::updateUserModifyProperty):
+ (WebCore::RenderTextControl::adjustInnerTextStyle):
+ (WebCore::RenderTextControl::updateFromElement):
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::isChecked):
+ (WebCore::RenderTheme::isIndeterminate):
+ (WebCore::RenderTheme::isEnabled):
+ (WebCore::RenderTheme::isReadOnlyControl):
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::adjustMenuListStyle):
+ * wml/WMLFormControlElement.cpp:
+ (WebCore::WMLFormControlElement::isFocusable):
+ * wml/WMLFormControlElement.h:
+ (WebCore::WMLFormControlElement::isEnabled):
+ (WebCore::WMLFormControlElement::isReadOnlyControl):
+ (WebCore::WMLFormControlElement::isTextControl):
+ * wml/WMLInputElement.cpp:
+ (WebCore::WMLInputElement::isKeyboardFocusable):
+ (WebCore::WMLInputElement::isMouseFocusable):
+ * wml/WMLInputElement.h:
+ (WebCore::WMLInputElement::isAutofilled):
+
+2009-01-29 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Not reviewed. Fix WML build - apply same fix as HTMLAnchorElement received.
+
+ * wml/WMLAElement.cpp:
+ (WebCore::WMLAElement::isKeyboardFocusable):
+
+2009-01-29 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23620
+ Crash in appcache/resource-redirect.html on Tiger
+
+ There was a bug in the test case - it didn't send a Location header, and on Tiger, this
+ resulted in a failure callback being sent. It turned out that proper redirects weren't
+ caught at all.
+
+ Tests: http/tests/appcache/manifest-redirect-2.html
+ http/tests/appcache/resource-redirect-2.html
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::didFail): Fixed this function to not crash if
+ didReceiveResponse() wasn't called for this request.
+ (WebCore::ApplicationCacheGroup::didReceiveResponse): Fixed to check for redirects correctly.
+ (WebCore::ApplicationCacheGroup::didReceiveManifestResponse): Ditto.
+
+2009-01-29 David Hyatt <hyatt@apple.com>
+
+ Move dirtyLinesFromChangedChild into RenderLineBoxList so that it can be shared by RenderBlock and RenderInline.
+
+ Reviewed by Sam Weinig
+
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::dirtyLinesFromChangedChild):
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::dirtyLinesFromChangedChild):
+ * rendering/RenderLineBoxList.cpp:
+ (WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):
+ * rendering/RenderLineBoxList.h:
+
+2009-01-29 Adam Roben <aroben@apple.com>
+
+ Fix Bug 23623: Windowed Flash instances aren't captured when a WebView
+ receives a WM_PRINTCLIENT message
+
+ <https://bugs.webkit.org/show_bug.cgi?id=23623>
+ <rdar://problem/6513921>
+ <rdar://problem/6536874>
+
+ Flash doesn't seem to respond to WM_PRINTCLIENT, so we change
+ WM_PRINTCLIENT messages into WM_PAINT messages and hook into the
+ BeginPaint/EndPaint APIs to return the HDC we received from
+ WM_PRINTCLIENT. This causes the plugin to paint into the
+ WM_PRINTCLIENT HDC via its normal WM_PAINT handler. This technique
+ came from <http://www.fengyuan.com/article/wmprint.html>.
+
+ No test possible.
+
+ Reviewed by Darin Adler.
+
+ * platform/graphics/GraphicsContext.h: Added
+ [set]ShouldIncludeChildWindows on Windows.
+
+ * platform/graphics/cg/GraphicsContextPlatformPrivateCG.h: Added
+ m_shouldIncludeChildWindows.
+ (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
+ Initialize the new member.
+
+ * platform/graphics/win/GraphicsContextCGWin.cpp:
+ (WebCore::GraphicsContext::setShouldIncludeChildWindows):
+ (WebCore::GraphicsContext::shouldIncludeChildWindows):
+ Added simple setter and getter.
+
+ * plugins/PluginView.cpp:
+ (WebCore::PluginView::PluginView): Initialize the new member.
+
+ * plugins/PluginView.h: Added m_wmPrintHDC and various functions
+ required for making WM_PRINTCLIENT work.
+
+ * plugins/win/PluginViewWin.cpp:
+ (WebCore::PluginView::hookedBeginPaint):
+ (WebCore::PluginView::hookedEndPaint):
+ (WebCore::hook):
+ (WebCore::setUpOffscreenPaintingHooks):
+ Added. Code was modified from code available on fengyuan.com.
+
+ (WebCore::PluginView::wndProc): Turn WM_PRINTCLIENT messages into
+ WM_PAINT messages and save off the HDC that we're supposed to paint
+ into.
+
+ (WebCore::PluginView::paintWindowedPluginIntoContext): Added. Gets an
+ HDC from the GraphicsContext, translates it into client coordinates,
+ gets the plugin to draw into the HDC by sending a WM_PRINTCLIENT
+ message, and returns the HDC to the GraphicsContext.
+
+ (WebCore::PluginView::paint): If we're trying to paint a windowed
+ plugin into the GraphicsContext, call paintWindowedPluginIntoContext.
+
+ (WebCore::PluginView::init): Call setUpOffscreenPaintingHooks to make
+ our WM_PRINTCLIENT trick work.
+
+2009-01-29 David Hyatt <hyatt@apple.com>
+
+ Move RenderFlow::destroy down into RenderBlock and RenderInline.
+
+ Reviewed by Anders Carlsson
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::destroy):
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::destroy):
+
+2009-01-29 David Kilzer <ddkilzer@apple.com>
+
+ Remove semi-colons from the end of ObjC method implementations
+
+ Rubber-stamped by Adam Roben.
+
+ $ find WebCore -name \*.m -o -name \*.mm -exec perl -e 'undef $/; $s = <>; while ($s =~ m/[\n\r][-+].*;[\s\r\n]+\{/g) { print "$ARGV: $&\n"; }' {} \;
+
+ * bridge/testbindings.mm:
+
+2009-01-29 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23609
+ Use the two-arg constructor for implicit QUrl->KURL conversion as the
+ single argument ctors assume that KURL::parse has already been called
+ and assert if the parse results in a different string. This was causing
+ an assert for QUrl's with no path and without a trailing slash.
+
+ * platform/qt/KURLQt.cpp:
+ (WebCore::KURL::KURL):
+
+2009-01-29 Alexey Proskuryakov <ap@webkit.org>
+
+ Rubber-stamped by Darin Adler.
+
+ Renamed ApplicationCacheResource::Implicit to Master, because that's the word HTML5 uses,
+ and it describes the meaning better.
+
+ * loader/appcache/ApplicationCache.cpp:
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ * loader/appcache/ApplicationCacheResource.cpp:
+ * loader/appcache/ApplicationCacheResource.h:
+
+2009-01-29 Alexey Proskuryakov <ap@webkit.org>
+
+ Release build fix.
+
+ * loader/appcache/ApplicationCacheGroup.cpp: (WebCore::ApplicationCacheGroup::selectCache):
+ Got rid of a variable that wasn't used in release builds.
+
+2009-01-29 David Hyatt <hyatt@apple.com>
+
+ Get rid of createAnonymousFlow. It was only called in one spot, so just inline the code.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::updateFirstLetter):
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+
+2009-01-29 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23476
+ HTTP redirect should make application cache updating fail
+
+ Tests: http/tests/appcache/manifest-redirect.html
+ http/tests/appcache/resource-redirect.html
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::didReceiveResponse):
+ (WebCore::ApplicationCacheGroup::didReceiveManifestResponse):
+ Fail if response code isn't 2xx.
+
+2009-01-29 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23592
+ Update appcache manifest signature parsing
+
+ Test: http/tests/appcache/wrong-signature-2.html
+
+ * loader/appcache/ManifestParser.cpp: (WebCore::parseManifest): Allow comments on signature
+ line. Removed code that replaced nulls with 0xFFFD characters, because there is no such
+ requirement in the spec.
+
+2009-01-28 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23584
+ Update application cache code for the latest round of spec changes
+
+ The changes mostly affect the update process - events are sent at a different
+ time, and caches are associated with documents earlier.
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::mainReceivedError): Changed an always passing test to an assertion.
+ (WebCore::DocumentLoader::shouldLoadResourceFromApplicationCache): Caches are now associated
+ with DocumentLoader before being complete, but they only affect loading after being completed.
+ (WebCore::DocumentLoader::getApplicationCacheFallbackResource): Ditto.
+
+ * loader/appcache/ApplicationCache.cpp:
+ (WebCore::ApplicationCache::setGroup): Allow setting the group to the same one, to simplify
+ ApplicationCacheGroup code.
+ (WebCore::ApplicationCache::isComplete): A new method that tells whether the cache is
+ complete, as defined in HTML5.
+ * loader/appcache/ApplicationCache.h: Added isComplete().
+
+ * loader/appcache/ApplicationCacheGroup.h:
+ (WebCore::ApplicationCacheUpdateOption): Per HTML5, cache updating should work differently
+ when invoked with or without a browsing context (Frame). A Frame is currently always needed
+ for updating in WebKit, so a new argument to update() tells whether we should pretend that
+ there isn't one.
+ (WebCore::ApplicationCacheGroup::cacheIsBeingUpdated): A helper for ApplicationCache::isComplete().
+ (WebCore::ApplicationCacheGroup::CompletionType): Cache update algorithm now waits for
+ ne main resources to finish loading in more cases. A member variable of this type is used to
+ distinguish between different cases when waiting.
+ (WebCore::ApplicationCacheGroup::m_cacheCandidates): The new algorithm doesn't track cache
+ candidates. Caches are associated with documents much earlier, but the ones whose main resources
+ have not been loaded from a cache are being tracked in a pending master entry list.
+
+ * loader/appcache/DOMApplicationCache.cpp: (WebCore::DOMApplicationCache::update):
+ An explicit call to update() invokes the algorithm without a browsing context.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::ApplicationCacheGroup):
+ (WebCore::ApplicationCacheGroup::~ApplicationCacheGroup):
+ (WebCore::ApplicationCacheGroup::selectCache):
+ (WebCore::ApplicationCacheGroup::selectCacheWithoutManifestURL):
+ (WebCore::ApplicationCacheGroup::finishedLoadingMainResource):
+ (WebCore::ApplicationCacheGroup::failedLoadingMainResource):
+ (WebCore::ApplicationCacheGroup::stopLoading):
+ (WebCore::ApplicationCacheGroup::disassociateDocumentLoader):
+ (WebCore::ApplicationCacheGroup::cacheDestroyed):
+ (WebCore::ApplicationCacheGroup::setNewestCache):
+ (WebCore::ApplicationCacheGroup::update):
+ (WebCore::ApplicationCacheGroup::didReceiveResponse):
+ (WebCore::ApplicationCacheGroup::didFinishLoading):
+ (WebCore::ApplicationCacheGroup::didFail):
+ (WebCore::ApplicationCacheGroup::didFinishLoadingManifest):
+ (WebCore::ApplicationCacheGroup::cacheUpdateFailed):
+ (WebCore::ApplicationCacheGroup::manifestNotFound):
+ (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete):
+ (WebCore::ApplicationCacheGroup::startLoadingEntry):
+ (WebCore::ApplicationCacheGroup::deliverDelayedMainResources):
+ (WebCore::ApplicationCacheGroup::addEntry):
+ (WebCore::ApplicationCacheGroup::associateDocumentLoaderWithCache):
+ (WebCore::CallCacheListenerTask::create):
+ (WebCore::CallCacheListenerTask::performTask):
+ (WebCore::CallCacheListenerTask::CallCacheListenerTask):
+ (WebCore::ApplicationCacheGroup::postListenerTask):
+ Rewrote the update algorithm.
+
+2009-01-28 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Merged FrameLoadTypeReloadAllowingStaleData with FrameLoadTypeReload.
+
+ Technically, selecting View->Text Encoding->[Non-Default Encoding] on
+ a page with frames may now be slightly slower than it used to be. Oh well.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::isBackForwardLoadType):
+ (WebCore::FrameLoader::restoreDocumentState): Subbed in FrameLoadTypeReload.
+
+ (WebCore::FrameLoader::loadURLIntoChildFrame): No need to account for
+ non-back-forward navigations anymore.
+
+ (WebCore::FrameLoader::canCachePage):
+ (WebCore::FrameLoader::logCanCachePageDecision):
+ (WebCore::FrameLoader::reloadWithOverrideEncoding):
+ (WebCore::FrameLoader::transitionToCommitted):
+ (WebCore::FrameLoader::loadItem): Subbed in FrameLoadTypeReload.
+
+ * loader/FrameLoader.h: Renamed reloadAllowingStaleData => reloadWithOverrideEncoding,
+ since that's what it actually does.
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Move hit testing and painting of lines from RenderFlow into RenderLineBoxList.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paintContents):
+ (WebCore::RenderBlock::hitTestContents):
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::paint):
+ (WebCore::RenderInline::nodeAtPoint):
+ * rendering/RenderLineBoxList.cpp:
+ (WebCore::RenderLineBoxList::paint):
+ (WebCore::RenderLineBoxList::hitTest):
+ * rendering/RenderLineBoxList.h:
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Fix SVG pixel test regressions. I wish I could say that I understand this fix, but I don't. For
+ some reason the original code returned 0 for RenderSVGInlineText::yPos() and somehow my literal
+ replacement of yPos() with the body of that method changed the results. I am completely baffled,
+ but all SVG pixel tests pass again when I just take the code out.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::computeAbsoluteRectForRange):
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Move dirtyLineBoxes from RenderFlow to RenderInline and RenderBlock.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::dirtyLineBoxes):
+ * rendering/RenderBlock.h:
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::dirtyLineBoxes):
+ * rendering/RenderInline.h:
+ * rendering/RenderLineBoxList.cpp:
+ (WebCore::RenderLineBoxList::dirtyLineBoxes):
+ * rendering/RenderLineBoxList.h:
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Back out my change to scrollWidth/Height from an earlier checkin since it broke stuff. The current
+ behavior is not correct, but this will need to be investigated before being changed again.
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::scrollWidth):
+ (WebCore::RenderBox::scrollHeight):
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Move paintOutline and paintOutlineWithLine from RenderFlow to RenderInline, since they only apply to inlines. Tighten up all of the code that
+ called paintOutline to use RenderInline as the type instead of RenderFlow.
+
+ Reviewed by cpst
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::paint):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paintObject):
+ (WebCore::RenderBlock::addContinuationWithOutline):
+ (WebCore::RenderBlock::paintContinuationOutlines):
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::paintLines):
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::paintOutline):
+ (WebCore::RenderInline::paintOutlineForLine):
+ * rendering/RenderInline.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::paintOutline):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::PaintInfo::PaintInfo):
+
+2009-01-28 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23596
+ XMLHttpRequest.cpp no longer compiles without USE(JSC)
+
+ * xml/XMLHttpRequest.cpp:
+
+2009-01-28 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23597
+ Make it possible to compile Database.cpp when USE(JSC) is not defined
+
+ * storage/Database.cpp:
+ (WebCore::Database::Database):
+
+2009-01-28 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ - fix <rdar://problem/6077047> REGRESSION (r34544): Custom icon does not
+ appear in address field on first visit to any site
+
+ * loader/icon/IconLoader.cpp:
+ (WebCore::IconLoader::finishLoading): Changed to set the icon data only
+ after establishing a mapping from the page URL(s) to the icon. Doing
+ things the other way around resulted in the data not being cached
+ in the icon-URL to IconRecord map (because there was no interested page
+ at the time) and subsequently having to be fetched asynchronously from
+ the database when the page-to-icon mapping was established.
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Move addFocusRingRects from RenderFlow down into RenderBlock and RenderInline.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::addFocusRingRects):
+ * rendering/RenderBlock.h:
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::addFocusRingRects):
+ * rendering/RenderInline.h:
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Move localCaretRect from RenderFlow into RenderBlock, since it only applied to blocks anyway and
+ was misplaced from the start.
+
+ Reviewed by Antti Koivisto.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::localCaretRect):
+ * rendering/RenderBlock.h:
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+
+2009-01-28 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Geoff Garen.
+
+ Add forwarding header.
+
+ * ForwardingHeaders/debugger/DebuggerActivation.h: Added.
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Move createInlineBox out of RenderFlow and down into RenderInline and RenderBlock.
+
+ Reviewed by Beth Dakin
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::createInlineBox):
+ * rendering/RenderBlock.h:
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::createInlineBox):
+ * rendering/RenderInline.h:
+ * rendering/bidi.cpp:
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Move calcMargins from RenderFlow to RenderInline, since it was only ever called on RenderInlines.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::calcMargins):
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::layoutInlineChildren):
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Refactor the first and last line box member variables from RenderFlow. Encapsulate them into a new class called RenderLineBoxList that manages all modifications to
+ the list. This change will make it easier to give RenderInline and RenderBlock separate versions of the line box list without having to duplicate very much code.
+
+ Reviewed by Oliver Hunt
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::deleteLine):
+ (WebCore::InlineFlowBox::removeLineBoxFromRenderObject):
+ (WebCore::InlineFlowBox::extractLine):
+ (WebCore::InlineFlowBox::extractLineBoxFromRenderObject):
+ (WebCore::InlineFlowBox::attachLine):
+ (WebCore::InlineFlowBox::attachLineBoxToRenderObject):
+ * rendering/InlineFlowBox.h:
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::deleteLineBoxTree):
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::destroy):
+ (WebCore::RenderFlow::dirtyLineBoxes):
+ (WebCore::RenderFlow::createInlineBox):
+ * rendering/RenderFlow.h:
+ (WebCore::RenderFlow::RenderFlow):
+ (WebCore::RenderFlow::lineBoxes):
+ (WebCore::RenderFlow::firstLineBox):
+ (WebCore::RenderFlow::lastLineBox):
+ * rendering/RenderLineBoxList.cpp: Added.
+ (WebCore::RenderLineBoxList::~RenderLineBoxList):
+ (WebCore::RenderLineBoxList::appendLineBox):
+ (WebCore::RenderLineBoxList::deleteLineBoxTree):
+ (WebCore::RenderLineBoxList::extractLineBox):
+ (WebCore::RenderLineBoxList::attachLineBox):
+ (WebCore::RenderLineBoxList::removeLineBox):
+ (WebCore::RenderLineBoxList::deleteLineBoxes):
+ (WebCore::RenderLineBoxList::checkConsistency):
+ * rendering/RenderLineBoxList.h: Added.
+ (WebCore::RenderLineBoxList::RenderLineBoxList):
+ (WebCore::RenderLineBoxList::firstLineBox):
+ (WebCore::RenderLineBoxList::lastLineBox):
+ (WebCore::RenderLineBoxList::checkConsistency):
+ * rendering/RenderSVGInline.cpp:
+ (WebCore::RenderSVGInline::createInlineBox):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::createInlineBox):
+ * rendering/RootInlineBox.cpp:
+ (WebCore::RootInlineBox::removeLineBoxFromRenderObject):
+ (WebCore::RootInlineBox::extractLineBoxFromRenderObject):
+ (WebCore::RootInlineBox::attachLineBoxToRenderObject):
+ * rendering/RootInlineBox.h:
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::layoutInlineChildren):
+
+2009-01-28 David Kilzer <ddkilzer@apple.com>
+
+ Clean up FontPlatformData constructor
+
+ Reviewed by David Hyatt.
+
+ * platform/graphics/mac/FontPlatformData.h: Updated copyright.
+ (WebCore::FontPlatformData::FontPlatformData): Provide readable
+ names for constructor arguments and reformat member variables.
+ * platform/graphics/mac/FontPlatformDataMac.mm: Updated copyright.
+ (WebCore::FontPlatformData::FontPlatformData): Provide readable
+ names for constructor arguments and reformat member variables.
+
+2009-01-28 Tony Chang <tony@chromium.org>
+
+ Reviewed by David Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23593
+ Compile fixes for RenderThemeChromiumMac and RenderThemeChromiumWin.
+ This is a follow up for hyatt's RenderBox changes.
+
+ * rendering/RenderThemeChromiumMac.mm:
+ (WebCore::RenderThemeChromiumMac::baselinePosition):
+ * rendering/RenderThemeChromiumWin.cpp:
+ (WebCore::RenderThemeChromiumWin::paintMenuList):
+
+2009-01-28 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23582
+
+ Fix assertions when inline elements have both opacity (or something
+ else that creates a RenderLayer), and transform by ensuring that
+ setHasTransform() is only called for non-inline or replaced elements.
+ We also have to ensure that RenderReplicas will get transforms applied
+ to them by lying about them being replaced.
+
+ Tests: fast/transforms/transform-on-inline.html
+ fast/transforms/transform-table-row.html
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::styleDidChange):
+ * rendering/RenderReplica.cpp:
+ (WebCore::RenderReplica::RenderReplica):
+ * rendering/RenderTableRow.h:
+ (WebCore::RenderTableRow::requiresLayer):
+
+2009-01-28 Hironori Bono <hbono@chromium.org>
+
+ Reviewed by Justin Garcia.
+
+ https://bugs.webkit.org/show_bug.cgi?id=18835
+ Spelling underlines disappear when they shouldn't
+
+ The WebCore::InsertLineBreakCommand::doApply() function splits a text node
+ without copying existing markers. To fix this bug, change code which
+ manually splits a text node into a CompositeEditCommand::splitTextNode() call.
+
+ Test: editing/spelling/spelling-linebreak.html
+
+ * editing/InsertLineBreakCommand.cpp:
+ (WebCore::InsertLineBreakCommand::doApply):
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Move the m_lineHeight member variable out of RenderFlow and down into RenderBlock and RenderInline. Shift the line height computation into RenderStyle so
+ that it isn't repeated in three places.
+
+ Reviewed by Sam Weinig
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::RenderBlock):
+ (WebCore::RenderBlock::lineHeight):
+ * rendering/RenderBlock.h:
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+ (WebCore::RenderFlow::RenderFlow):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::RenderInline):
+ (WebCore::RenderInline::lineHeight):
+ * rendering/RenderInline.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::lineHeight):
+ * rendering/style/RenderStyle.h:
+ (WebCore::InheritedFlags::computedLineHeight):
+
+2009-01-28 Zachary Kuznia <zork@chromiuum.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22070
+ Add an option to allow scripts to close windows.
+
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+ (WebCore::Settings::setAllowScriptsToCloseWindows):
+ * page/Settings.h:
+ (WebCore::Settings::allowScriptsToCloseWindows):
+
+2009-01-28 Adam Langley <agl@google.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23573
+ Make PlatformWidget on chromium an intptr_t to match changes made in Chromium
+
+ * platform/chromium/PlatformWidget.h:
+
+2009-01-28 David Hyatt <hyatt@apple.com>
+
+ Fix for
+
+ <rdar://problem/6531287> REGRESSION: CrashTracer: [USER] 12 crashes in Safari at com.apple.WebCore • WebCore::RenderBlock::removeFloatingObject + 59
+
+ My tightening up of markAllDescendantsWithFloatsForLayout exposed a buggy check in that code that could
+ lead to a bad cast.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::markAllDescendantsWithFloatsForLayout):
+
+2009-01-27 David Hyatt <hyatt@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=23576
+
+ Work towards eliminating RenderFlow from the tree.
+
+ Move the m_continuation variable down from RenderFlow into RenderInline and RenderBlock. Since a block can only have an inline continuation following it, the type
+ of the member and methods reflect this (inlineContinuation() and m_inlineContinuation). Since an inline can have either a block or an inline continuation following it,
+ a base class of RenderBox* is used for the type of object returned (in anticipation of the removal of RenderFlow).
+
+ Since moving the continuation variable down into the subclasses increased the size of RenderInline and RenderBlock by 4 bytes, this patch also moves all of the bitfield
+ members of RenderFlow up to RenderObject. Since they fit within the available bits on RenderObject, this patch actually results in a net savings of 4 bytes on RenderInlines
+ and RenderBlocks!
+
+ One bitfield member was eliminated rather than moved: m_firstLine. This was really more of a state variable used during line layout only, so I removed it as a member
+ and just passed firstLine down to various methods as needed. Doing so uncovered some potential bugs where the first line state was not being respected when querying for
+ line offsets.
+
+ Continuations have been completely hidden from all files except for RenderFlow, RenderBlock and RenderInline. All of the code that referenced continuations directly
+ from base classes has been refactored to use virtual methods on RenderBlock and RenderInline instead.
+
+ RenderFlow still has a common addChildWithContinuation method that is used by both blocks and inlines. Since refactoring that method will be pretty tricky, I've held
+ off on that for a later patch.
+
+ Reviewed by Oliver Hunt
+
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::isKeyboardFocusable):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::anchorElement):
+ (WebCore::AccessibilityRenderObject::boundingBoxRect):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::determineSpacingForFlowBoxes):
+ (WebCore::InlineFlowBox::paint):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::RenderBlock):
+ (WebCore::RenderBlock::~RenderBlock):
+ (WebCore::RenderBlock::destroy):
+ (WebCore::RenderBlock::addChildToFlow):
+ (WebCore::RenderBlock::makeChildrenNonInline):
+ (WebCore::RenderBlock::removeChild):
+ (WebCore::RenderBlock::layoutBlock):
+ (WebCore::RenderBlock::expandsToEncloseOverhangingFloats):
+ (WebCore::RenderBlock::collapseMargins):
+ (WebCore::RenderBlock::determineHorizontalPosition):
+ (WebCore::RenderBlock::setCollapsedBottomMargin):
+ (WebCore::RenderBlock::layoutOnlyPositionedObjects):
+ (WebCore::RenderBlock::paintObject):
+ (WebCore::RenderBlock::addContinuationWithOutline):
+ (WebCore::RenderBlock::setSelectionState):
+ (WebCore::RenderBlock::shouldPaintSelectionGaps):
+ (WebCore::RenderBlock::fillSelectionGaps):
+ (WebCore::RenderBlock::leftSelectionOffset):
+ (WebCore::RenderBlock::rightSelectionOffset):
+ (WebCore::RenderBlock::leftOffset):
+ (WebCore::RenderBlock::leftRelOffset):
+ (WebCore::RenderBlock::rightOffset):
+ (WebCore::RenderBlock::rightRelOffset):
+ (WebCore::RenderBlock::lineWidth):
+ (WebCore::RenderBlock::lowestPosition):
+ (WebCore::RenderBlock::rightmostPosition):
+ (WebCore::RenderBlock::leftmostPosition):
+ (WebCore::RenderBlock::getClearDelta):
+ (WebCore::RenderBlock::nodeAtPoint):
+ (WebCore::RenderBlock::offsetForContents):
+ (WebCore::RenderBlock::availableWidth):
+ (WebCore::RenderBlock::setDesiredColumnCountAndWidth):
+ (WebCore::RenderBlock::desiredColumnWidth):
+ (WebCore::RenderBlock::desiredColumnCount):
+ (WebCore::RenderBlock::columnRects):
+ (WebCore::RenderBlock::layoutColumns):
+ (WebCore::RenderBlock::adjustPointToColumnContents):
+ (WebCore::RenderBlock::adjustRectForColumns):
+ (WebCore::RenderBlock::absoluteRects):
+ (WebCore::RenderBlock::absoluteQuads):
+ (WebCore::RenderBlock::rectWithOutlineForRepaint):
+ (WebCore::RenderBlock::hoverAncestor):
+ (WebCore::RenderBlock::updateDragState):
+ (WebCore::RenderBlock::outlineStyleForRepaint):
+ (WebCore::RenderBlock::childBecameNonInline):
+ (WebCore::RenderBlock::updateHitTestResult):
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::rightOffset):
+ (WebCore::RenderBlock::leftOffset):
+ (WebCore::RenderBlock::inlineContinuation):
+ (WebCore::RenderBlock::setInlineContinuation):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::absoluteRects):
+ (WebCore::RenderBox::absoluteQuads):
+ (WebCore::RenderBox::addFocusRingRects):
+ (WebCore::RenderBox::containingBlockWidth):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::collapsedMarginBottom):
+ (WebCore::RenderBox::childBecameNonInline):
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::updateBeforeAfterContentForContainer):
+ (WebCore::RenderContainer::removeLeftoverAnonymousBlock):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutVerticalBox):
+ * rendering/RenderFlow.cpp:
+ (WebCore::nextContinuation):
+ (WebCore::RenderFlow::continuationBefore):
+ (WebCore::RenderFlow::addChildWithContinuation):
+ (WebCore::RenderFlow::addChild):
+ (WebCore::RenderFlow::destroy):
+ (WebCore::RenderFlow::addFocusRingRects):
+ * rendering/RenderFlow.h:
+ (WebCore::RenderFlow::RenderFlow):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::RenderInline):
+ (WebCore::RenderInline::destroy):
+ (WebCore::RenderInline::inlineContinuation):
+ (WebCore::RenderInline::styleDidChange):
+ (WebCore::RenderInline::addChildToFlow):
+ (WebCore::RenderInline::cloneInline):
+ (WebCore::RenderInline::splitInlines):
+ (WebCore::RenderInline::splitFlow):
+ (WebCore::RenderInline::positionForCoordinates):
+ (WebCore::RenderInline::rectWithOutlineForRepaint):
+ (WebCore::RenderInline::updateDragState):
+ (WebCore::RenderInline::childBecameNonInline):
+ (WebCore::RenderInline::updateHitTestResult):
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::isRenderInline):
+ (WebCore::RenderInline::continuation):
+ (WebCore::RenderInline::setContinuation):
+ * rendering/RenderListItem.cpp:
+ (WebCore::RenderListItem::positionListMarker):
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::RenderListMarker):
+ (WebCore::RenderListMarker::setSelectionState):
+ * rendering/RenderListMarker.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::RenderObject):
+ (WebCore::RenderObject::repaintAfterLayoutIfNeeded):
+ (WebCore::RenderObject::rectWithOutlineForRepaint):
+ (WebCore::RenderObject::handleDynamicFloatPositionChange):
+ (WebCore::RenderObject::updateDragState):
+ (WebCore::RenderObject::updateHitTestResult):
+ (WebCore::RenderObject::getTextDecorationColors):
+ (WebCore::RenderObject::adjustRectForOutlineAndShadow):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isInlineBlockOrInlineTable):
+ (WebCore::RenderObject::childrenInline):
+ (WebCore::RenderObject::setChildrenInline):
+ (WebCore::RenderObject::hasColumns):
+ (WebCore::RenderObject::setHasColumns):
+ (WebCore::RenderObject::cellWidthChanged):
+ (WebCore::RenderObject::setCellWidthChanged):
+ (WebCore::RenderObject::isInlineContinuation):
+ (WebCore::RenderObject::hoverAncestor):
+ (WebCore::RenderObject::outlineStyleForRepaint):
+ (WebCore::RenderObject::setHasMarkupTruncation):
+ (WebCore::RenderObject::hasMarkupTruncation):
+ (WebCore::RenderObject::selectionState):
+ (WebCore::RenderObject::setSelectionState):
+ (WebCore::RenderObject::hasSelectedChildren):
+ (WebCore::RenderObject::isTopMarginQuirk):
+ (WebCore::RenderObject::isBottomMarginQuirk):
+ (WebCore::RenderObject::setTopMarginQuirk):
+ (WebCore::RenderObject::setBottomMarginQuirk):
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::RenderReplaced):
+ (WebCore::RenderReplaced::setSelectionState):
+ * rendering/RenderReplaced.h:
+ (WebCore::RenderReplaced::canBeSelectionLeaf):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::calcWidth):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::updateWidth):
+ (WebCore::RenderTableCell::layout):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::RenderText):
+ (WebCore::RenderText::localCaretRect):
+ (WebCore::RenderText::setSelectionState):
+ * rendering/RenderText.h:
+ (WebCore::RenderText::canBeSelectionLeaf):
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::updateHitTestResult):
+ * rendering/RenderView.h:
+ * rendering/RootInlineBox.cpp:
+ (WebCore::RootInlineBox::selectionTop):
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::createLineBoxes):
+ (WebCore::RenderBlock::constructLine):
+ (WebCore::RenderBlock::computeHorizontalPositionsForLine):
+ (WebCore::RenderBlock::layoutInlineChildren):
+ (WebCore::RenderBlock::determineStartPosition):
+ (WebCore::RenderBlock::skipTrailingWhitespace):
+ (WebCore::RenderBlock::skipLeadingWhitespace):
+ (WebCore::RenderBlock::fitBelowFloats):
+ (WebCore::RenderBlock::findNextLineBreak):
+ (WebCore::RenderBlock::checkLinesForTextOverflow):
+
+2009-01-28 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Nikolas Zimmermann and George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23557
+ Allow option of hit testing frame content without clipping to the visible
+ viewport.
+
+ * WebCore.base.exp:
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::hitTestResultAtPoint):
+ * page/EventHandler.h:
+ * rendering/HitTestRequest.h:
+ (WebCore::HitTestRequest::HitTestRequest):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTest):
+
+2009-01-28 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Holger Freyther.
+
+ Fix the build with Qt on Windows.
+
+ Make sure that the QTWEBKIT_EXPORT macro becomes the Q_DECL_EXPORT macro
+ instead of the import macro when building the dll, by defining
+ QT_MAKEDLL.
+
+ SystemTimeWin.cpp is needed on Windows for userIdleTime(), which for the
+ other Qt platforms comes from TemporaryLinkStubs.cpp.
+
+ * WebCore.pro:
+
2009-01-28 Ariya Hidayat <ariya.hidayat@trolltech.com>
Reviewed by Simon Hausmann.
@@ -570,6 +45513,288 @@
* platform/graphics/qt/GraphicsContextQt.cpp:
(WebCore::GraphicsContext::clip):
+2009-01-28 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23546
+ Upstream GoogleURL implementation of KURL
+
+ * platform/KURL.h:
+ * platform/KURLGoogle.cpp: Added.
+ * platform/KURLGooglePrivate.h: Added.
+
+2009-01-27 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ REGRESSION (r40234): Launching iTunes from a link displays a
+ "Safari can't find the Internet plug-in" sheet in Safari
+ rdar://problem/6533678
+
+ * rendering/RenderPartObject.cpp:
+ (WebCore::havePlugin): Put the check for empty string in here.
+ (WebCore::serviceTypeForClassId): Only return activeXType() if
+ we have a plug-in that can handle that type. While it might be logical
+ to return an Active X type for any <object> with a classId in it,
+ even if we don't have a plug-in that implements Active X, existing
+ clients, such as Safari, don't expect that.
+
+2009-01-27 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Steve Falkenburg.
+
+ - fix <rdar://problem/6524351> Text looks bad when font smoothing is
+ forced off
+
+ * platform/graphics/win/FontCGWin.cpp:
+ (WebCore::Font::drawGlyphs): Changed to use GDI rather than Core
+ Graphics if the client has turned font smoothing off.
+
+2009-01-27 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23360
+
+ Use the new container-relative repaint methods to compute
+ post-layout repaints, and repaints using RenderLayer's
+ cached repaintRect() relative to that container, rather than
+ using absolute coords.
+
+ Replaced lots of boilerplate old/new rect code in various
+ layout methods with a stack-based LayoutRepainter class, and
+ fixed a bug in RenderTable which set didFullRepaint to
+ 'true' every time.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::layoutBlock):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutBlock):
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::layout):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPositions):
+ (WebCore::RenderLayer::setHasVisibleContent):
+ * rendering/RenderLayer.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::repaintUsingContainer):
+ (WebCore::RenderObject::repaint):
+ (WebCore::RenderObject::repaintRectangle):
+ (WebCore::RenderObject::repaintAfterLayoutIfNeeded):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::LayoutRepainter::LayoutRepainter):
+ (WebCore::RenderObject::LayoutRepainter::repaintAfterLayout):
+ (WebCore::RenderObject::LayoutRepainter::checkForRepaint):
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::layout):
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::layout):
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::layout):
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::layout):
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::layout):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::layout):
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::layout):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::layout):
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::layoutInlineChildren):
+
+2009-01-27 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/3541409> - More groundwork and cleanup for CachedFrames
+
+ * history/CachedFrame.cpp:
+ (WebCore::CachedFrame::CachedFrame): Make the savePlatformDataToCachedFrame() client call here,
+ and add the code for caching subframes.
+ (WebCore::CachedFrame::clear):
+ * history/CachedFrame.h: Change to be RefCounted
+ (WebCore::CachedFrame::create):
+ (WebCore::CachedFrame::url):
+
+ * history/CachedPage.cpp:
+ (WebCore::CachedPage::CachedPage):
+ (WebCore::CachedPage::restore):
+ * history/CachedPage.h:
+ (WebCore::CachedPage::document):
+ (WebCore::CachedPage::documentLoader):
+ (WebCore::CachedPage::view):
+ (WebCore::CachedPage::url):
+ (WebCore::CachedPage::domWindow):
+ (WebCore::CachedPage::cachedMainFrame):
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::cachePageForHistoryItem): Move the platform data saving into the
+ CachedFrame itself.
+
+2009-01-27 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ Flip the arguments of computeRectForRepaint() from
+ computeRectForRepaint(IntRect&, RenderBox* repaintContainer, bool)
+ to
+ computeRectForRepaint(RenderBox* repaintContainer, IntRect&, bool)
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::clippedOverflowRectForRepaint):
+ (WebCore::RenderBox::computeRectForRepaint):
+ * rendering/RenderBox.h:
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::computeRectForRepaint):
+ * rendering/RenderForeignObject.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::clippedOverflowRectForRepaint):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::computeRectForRepaint):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::computeAbsoluteRepaintRect):
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::clippedOverflowRectForRepaint):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::clippedOverflowRectForRepaint):
+ (WebCore::RenderTableCell::computeRectForRepaint):
+ * rendering/RenderTableCell.h:
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::computeRectForRepaint):
+ * rendering/RenderView.h:
+
+2009-01-27 David Kilzer <ddkilzer@apple.com>
+
+ Add missing header guards to AccessibilityObjectWrapper.h
+
+ Reviewed by Anders Carlsson.
+
+ * page/mac/AccessibilityObjectWrapper.h: Added missing header guards.
+
+2009-01-27 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23567
+
+ Fix crash of svg/custom/stop-crash.svg testcase because of
+ infinite recursion, as I missed replacing absoluteClippedOverflowRect()
+ with clippedOverflowRectForRepaint() in RenderSVGGradientStop.
+
+ Also fix a missed conversion in RenderTableCol, and add a couple
+ of comments.
+
+ * rendering/RenderSVGGradientStop.h:
+ (WebCore::RenderSVGGradientStop::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::imageChanged):
+ * rendering/RenderTableCol.cpp:
+ (WebCore::RenderTableCol::clippedOverflowRectForRepaint):
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::layout):
+
+2009-01-27 Adele Peterson <adele@apple.com>
+
+ RS by Dave Hyatt
+
+ Use the textfield appearance for search fields in themeWin.css so the border/background
+ styling will work correctly on these fields.
+
+ * css/themeWin.css:
+
+2009-01-27 Dan Bernstein <mitz@apple.com>
+
+ - build fix
+
+ * bindings/js/JSHTMLInputElementCustom.cpp:
+ (WebCore::JSHTMLInputElement::setSelectionStart):
+ (WebCore::JSHTMLInputElement::setSelectionEnd):
+ (WebCore::JSHTMLInputElement::setSelectionRange):
+
+2009-01-27 Dan Bernstein <mitz@apple.com>
+
+ - build fix
+
+ * platform/graphics/Gradient.cpp:
+ (WebCore::Gradient::setSpreadMethod):
+
+2009-01-27 Paul Godavari <paul@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23561
+ Explicitly send the MIME type from an image dragged from a web
+ page to the desktop, to Chromium so that it can properly generate
+ a file name.
+
+ * platform/chromium/ChromiumDataObject.cpp:
+ (WebCore::ChromiumDataObject::clear):
+ (WebCore::ChromiumDataObject::hasData):
+ * platform/chromium/ChromiumDataObject.h:
+ * platform/chromium/ClipboardChromium.cpp:
+ (WebCore::writeImageToDataObject):
+
+2009-01-27 Mads Ager <ager@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23300
+ Follow Firefox in throwing exceptions when using selection
+ functions on HTMLInputElements that cannot have selection.
+
+ This requires custom setSelectionRange, setSelectionStart and
+ setSelectionEnd implementations, but it gets rid of the custom
+ getOwnPropertySlot.
+
+ * bindings/js/JSHTMLInputElementCustom.cpp:
+ (WebCore::JSHTMLInputElement::selectionStart):
+ (WebCore::JSHTMLInputElement::selectionEnd):
+ (WebCore::JSHTMLInputElement::setSelectionRange):
+ * html/HTMLInputElement.idl:
+
+2009-01-27 Evan Stade <estade@chromium.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23435
+ Make spreadMethod a member of Gradient rather than GraphicsContext.
+ Implement spreadMethod for Skia.
+
+ * platform/graphics/Gradient.cpp:
+ (WebCore::Gradient::Gradient):
+ * platform/graphics/Gradient.h:
+ (WebCore::Gradient::setSpreadMethod):
+ (WebCore::Gradient::spreadMethod):
+ * platform/graphics/GraphicsContext.cpp:
+ * platform/graphics/GraphicsContext.h:
+ * platform/graphics/GraphicsContextPrivate.h:
+ * platform/graphics/GraphicsTypes.h:
+ (WebCore::):
+ * platform/graphics/cairo/GradientCairo.cpp:
+ (WebCore::Gradient::platformGradient):
+ * platform/graphics/cairo/GraphicsContextCairo.cpp:
+ (WebCore::GraphicsContext::fillPath):
+ (WebCore::GraphicsContext::strokePath):
+ * platform/graphics/qt/GradientQt.cpp:
+ (WebCore::Gradient::platformGradient):
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContext::fillPath):
+ (WebCore::GraphicsContext::strokePath):
+ * platform/graphics/skia/GradientSkia.cpp:
+ (WebCore::Gradient::platformGradient):
+ * svg/SVGLinearGradientElement.cpp:
+ (WebCore::SVGLinearGradientElement::buildGradient):
+ * svg/SVGRadialGradientElement.cpp:
+ (WebCore::SVGRadialGradientElement::buildGradient):
+ * svg/graphics/SVGPaintServerGradient.cpp:
+ (WebCore::SVGPaintServerGradient::SVGPaintServerGradient):
+ (WebCore::SVGPaintServerGradient::setup):
+ (WebCore::SVGPaintServerGradient::externalRepresentation):
+ * svg/graphics/SVGPaintServerGradient.h:
+
2009-01-27 Ariya Hidayat <ariya.hidayat@trolltech.com>
Rubber-stamped by Simon Hausmann.
@@ -581,38 +45806,831 @@
* platform/qt/PlatformKeyboardEventQt.cpp:
(WebCore::windowsKeyCodeForKeyEvent):
-2009-01-23 Adam Treat <adam.treat@torchmobile.com>
+2009-01-27 Brady Eidson <beidson@apple.com>
- Reviewed by Holger Hans Peter Freyther.
+ Reviewed by Dan Bernstein
- Redo previous patch http://trac.webkit.org/changeset/34260 which fixes a
- huge memory leak by ensuring that the timer is fired one last time on
- application tear down thus triggering the GCController thereby freeing
- JavaScript objects as well as triggering other timer based tear down methods.
+ Rework FrameLoaderClient to work on a CachedFrame basis instead of CachedPage
- * platform/qt/SharedTimerQt.cpp:
- (WebCore::SharedTimerQt::~SharedTimerQt):
+ * WebCore.base.exp:
+ * history/CachedPage.cpp:
+ * history/CachedPage.h:
+ (WebCore::CachedPage::cachedMainFrame):
-2009-01-09 Holger Hans Peter Freyther <zecke@selfish.org>
+ * loader/EmptyClients.h:
+ (WebCore::EmptyFrameLoaderClient::savePlatformDataToCachedFrame):
+ (WebCore::EmptyFrameLoaderClient::transitionToCommittedFromCachedFrame):
- Reviewed by Simon Hausmann.
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::restoreDocumentState):
+ (WebCore::FrameLoader::commitProvisionalLoad):
+ (WebCore::FrameLoader::transitionToCommitted):
+ (WebCore::FrameLoader::cachePageForHistoryItem):
+ * loader/FrameLoaderClient.h:
- [QT] Make SharedTimer use QBasicTimer
+2009-01-26 Simon Fraser <simon.fraser@apple.com>
- Kill the SharedTimerQt.h and the usage of signal and slots
- by using QBasicTimer.
+ Reviewed by Dave Hyatt
+ https://bugs.webkit.org/show_bug.cgi?id=23360
+
+ Add variants of all the methods that compute dirty rects for repainting
+ with versions that compute those rects relative to some container
+ RenderBox that acts as a painting root.
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::styleDidChange):
+ (WebCore::RenderBox::outlineBoundsForRepaint):
+ (WebCore::RenderBox::localToContainerQuad):
+ (WebCore::RenderBox::clippedOverflowRectForRepaint):
+ (WebCore::RenderBox::computeRectForRepaint):
+ * rendering/RenderBox.h:
+ * rendering/RenderForeignObject.cpp:
+ (WebCore::RenderForeignObject::computeRectForRepaint):
+ * rendering/RenderForeignObject.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::clippedOverflowRectForRepaint):
+ * rendering/RenderInline.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::containerForRepaint):
+ (WebCore::RenderObject::repaint):
+ (WebCore::RenderObject::repaintRectangle):
+ (WebCore::RenderObject::rectWithOutlineForRepaint):
+ (WebCore::RenderObject::clippedOverflowRectForRepaint):
+ (WebCore::RenderObject::computeRectForRepaint):
+ (WebCore::RenderObject::localToContainerQuad):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::localToAbsoluteQuad):
+ (WebCore::RenderObject::absoluteClippedOverflowRect):
+ (WebCore::RenderObject::computeAbsoluteRepaintRect):
+ (WebCore::RenderObject::absoluteOutlineBounds):
+ (WebCore::RenderObject::outlineBoundsForRepaint):
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::clippedOverflowRectForRepaint):
+ (WebCore::RenderPath::outlineBoundsForRepaint):
+ * rendering/RenderPath.h:
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::clippedOverflowRectForRepaint):
+ * rendering/RenderReplaced.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::clippedOverflowRectForRepaint):
+ (WebCore::RenderSVGContainer::outlineBoundsForRepaint):
+ * rendering/RenderSVGContainer.h:
+ * rendering/RenderSVGHiddenContainer.cpp:
+ (WebCore::RenderSVGHiddenContainer::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGHiddenContainer.h:
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGImage.h:
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGRoot.h:
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::clippedOverflowRectForRepaint):
+ * rendering/RenderSVGText.h:
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::clippedOverflowRectForRepaint):
+ (WebCore::RenderTableCell::computeRectForRepaint):
+ (WebCore::RenderTableCell::localToContainerQuad):
+ * rendering/RenderTableCell.h:
+ * rendering/RenderTableCol.cpp:
+ (WebCore::RenderTableCol::clippedOverflowRectForRepaint):
+ * rendering/RenderTableCol.h:
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::clippedOverflowRectForRepaint):
+ * rendering/RenderTableRow.h:
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::clippedOverflowRectForRepaint):
+ * rendering/RenderText.h:
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::localToContainerQuad):
+ (WebCore::RenderView::computeRectForRepaint):
+ * rendering/RenderView.h:
+
+2009-01-26 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by David Hyatt
+
+ Back out r40285, because it was checked in with no bug number, no
+ testcase, is rendering change that did not get thorough review,
+ and broke the Mac build.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::hitTestResultAtPoint):
+ * page/EventHandler.h:
+ * rendering/HitTestRequest.h:
+ (WebCore::HitTestRequest::HitTestRequest):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTest):
+
+2009-01-26 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ -Make the recently added back/forward cache logging much better by actually
+ walking the entire frame tree and indenting the resulting output.
+ -Fix a null-termination bug in HistoryItem tree logging
+
+ * history/HistoryItem.cpp:
+ (WebCore::HistoryItem::showTreeWithIndent):
+
+ * loader/FrameLoader.cpp:
+ (WebCore::pageCacheLogPrefix):
+ (WebCore::pageCacheLog):
+ (WebCore::FrameLoader::logCanCachePageDecision):
+ (WebCore::FrameLoader::logCanCacheFrameDecision):
+ * loader/FrameLoader.h:
+
+2009-01-26 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Allow option of hit testing frame content without clipping to the visible
+ viewport.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::hitTestResultAtPoint):
+ * page/EventHandler.h:
+ * rendering/HitTestRequest.h:
+ (WebCore::HitTestRequest::HitTestRequest):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hitTest):
+
+2009-01-26 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=18141
+ Acid3 tests 77 and 78 fail on reload due to SVG font race
+ <rdar://problem/6504899>
+
+ Match Opera's behavior of loading SVGFonts as soon as <font-face-uri>
+ tag is inserted into the document and not at the first use of the font
+ as is done for CSS web fonts.
+
+ This fixes a race condition noticeable by some in the Acid3 test that
+ happened because the onload event handler for an iframe containing a
+ <font-face-uri> with an external reference was not delayed by the pending
+ load of the font.
+
+ Test: http/tests/misc/SVGFont-delayed-load.html
+
+ * svg/SVGFontFaceUriElement.cpp:
+ (WebCore::SVGFontFaceUriElement::~SVGFontFaceUriElement):
+ (WebCore::SVGFontFaceUriElement::parseMappedAttribute): Call loadFont if
+ the href attribute changes.
+ (WebCore::SVGFontFaceUriElement::insertedIntoDocument): Call loadFont.
+ (WebCore::SVGFontFaceUriElement::loadFont): Force a load of the
+ font specified in href attribute.
+ * svg/SVGFontFaceUriElement.h:
+
+2009-01-26 Timothy Hatcher <timothy@apple.com>
+
+ Change Web Archive serialization back to the binary property list format.
+
+ <rdar://problem/6127865> Web archives saved with Safari 4 cannot be read by Safari 3
+
+ Reviewed by Brady Eidson.
+
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ (WebCore::LegacyWebArchive::rawDataRepresentation):
+
+2009-01-26 Anders Carlsson <andersca@apple.com>
+
+ Fix 64-bit build.
+
+ * WebCore.LP64.exp:
+
+2009-01-26 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23511
+ Move DOMTimer from bindings/js to page/.
+ This was prepared by moving all JSC dependencies from DOMTimer
+ to ScheduledAction earlier, and helps unfork the Chromuim version
+ of the DOMTimer.
+
+ * GNUmakefile.am:
* WebCore.pro:
- * platform/qt/SharedTimerQt.cpp:
- (WebCore::SharedTimerQt::SharedTimerQt):
- (WebCore::SharedTimerQt::inst):
- (WebCore::SharedTimerQt::start):
- (WebCore::SharedTimerQt::stop):
- (WebCore::SharedTimerQt::timerEvent):
- (WebCore::setSharedTimerFiredFunction):
- (WebCore::setSharedTimerFireTime):
- (WebCore::stopSharedTimer):
- * platform/qt/SharedTimerQt.h: Removed.
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * bindings/js/DOMTimer.cpp: Removed.
+ * bindings/js/DOMTimer.h: Removed.
+ * page/DOMTimer.cpp: Copied from WebCore/bindings/js/DOMTimer.cpp.
+ * page/DOMTimer.h: Copied from WebCore/bindings/js/DOMTimer.h.
+
+2009-01-26 David Hyatt <hyatt@apple.com>
+
+ Eliminate rightmostPosition, lowestPosition and leftmostPosition from RenderFlow. Move the code into
+ RenderBlock's methods.
+
+ Reviewed by Eric Seidel
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::lowestPosition):
+ (WebCore::RenderBlock::rightmostPosition):
+ (WebCore::RenderBlock::leftmostPosition):
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+
+2009-01-26 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23553
+ Upstream changes from jcampan to fix chromium bugs 6692 and 6694.
+
+ * platform/chromium/PopupMenuChromium.cpp:
+ (WebCore::PopupListBox::setLoopSelectionNavigation):
+ (WebCore::PopupListBox::PopupListBox):
+ (WebCore::PopupContainer::setLoopSelectionNavigation):
+ (WebCore::PopupListBox::handleKeyEvent):
+ (WebCore::PopupListBox::paintRow):
+ (WebCore::PopupListBox::clearSelection):
+ (WebCore::PopupListBox::selectNextRow):
+ (WebCore::PopupListBox::selectPreviousRow):
+ * platform/chromium/PopupMenuChromium.h:
+
+2009-01-26 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Sam Weinig
+
+ Remove some historical CachedPage time stamp fluff.
+
+ * history/CachedPage.cpp:
+ (WebCore::CachedPage::CachedPage):
+ * history/CachedPage.h:
+ (WebCore::CachedPage::timeStamp):
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::cachePageForHistoryItem):
+
+2009-01-26 David Hyatt <hyatt@apple.com>
+
+ Move absoluteClippedOverflowRect, linesBoundingBox and borderBoundingBox from RenderFlow to RenderInline.
+
+ Reviewed by Eric Seidel
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::containingBlockHeightForPositioned):
+ * rendering/RenderFlow.cpp:
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::linesBoundingBox):
+ (WebCore::RenderInline::absoluteClippedOverflowRect):
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::borderBoundingBox):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPosition):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::operator<<):
+
+2009-01-26 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22650
+ Implement support for "Immutable" attribute to CodeGeneratorJS.pm, thus
+ allowing to explicitly mark methods as immutable (i.e. returning a new
+ instance rather than a reference to an existing instance).
+
+ * bindings/js/JSSVGMatrixCustom.cpp: Removed custom methods.
+ * bindings/scripts/CodeGeneratorJS.pm: Added check for Immutable
+ attribute when generating function call.
+ * svg/SVGMatrix.idl: Replaced Custom attribute with Immutable on
+ methods.
+
+2009-01-26 David Hyatt <hyatt@apple.com>
+
+ Eliminate isInlineFlow() now that a RenderBlock can never be an inline flow. isInlineFlow() is now
+ equivalent to isRenderInline(), so all calls to isInlineFlow() have been replaced with isRenderInline().
+
+ Reviewed by Eric Seidel
+
+ * dom/Text.cpp:
+ (WebCore::Text::rendererIsNeeded):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::placeBoxesHorizontally):
+ (WebCore::shouldDrawTextDecoration):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::hitTestContents):
+ (WebCore::InlineMinMaxIterator::next):
+ (WebCore::RenderBlock::calcInlinePrefWidths):
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::isBlockFlow):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::clientWidth):
+ (WebCore::RenderBox::clientHeight):
+ (WebCore::RenderBox::nodeAtPoint):
+ (WebCore::RenderBox::imageChanged):
+ (WebCore::RenderBox::offsetForPositionedInContainer):
+ (WebCore::RenderBox::containingBlockWidthForPositioned):
+ (WebCore::RenderBox::containingBlockHeightForPositioned):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::width):
+ (WebCore::RenderBox::height):
+ (WebCore::RenderBox::size):
+ (WebCore::RenderBox::frameRect):
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::updateBeforeAfterContentForContainer):
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::dirtyLinesFromChangedChild):
+ (WebCore::RenderFlow::createInlineBox):
+ (WebCore::RenderFlow::paintLines):
+ (WebCore::RenderFlow::hitTestLines):
+ (WebCore::RenderFlow::absoluteClippedOverflowRect):
+ (WebCore::RenderFlow::lowestPosition):
+ (WebCore::RenderFlow::rightmostPosition):
+ (WebCore::RenderFlow::leftmostPosition):
+ * rendering/RenderFlow.h:
+ (WebCore::RenderFlow::borderBoundingBox):
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::isRenderInline):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPosition):
+ (WebCore::RenderLayer::intersectsDamageRect):
+ (WebCore::RenderLayer::boundingBox):
+ * rendering/RenderListItem.cpp:
+ (WebCore::getParentOfFirstLineBox):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::getAbsoluteRepaintRectWithOutline):
+ (WebCore::RenderObject::styleWillChange):
+ (WebCore::RenderObject::firstLineStyle):
+ * rendering/RenderObject.h:
+ * rendering/RenderSVGInline.cpp:
+ (WebCore::RenderSVGInline::createInlineBox):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::createInlineBox):
+ * rendering/RenderTableRow.cpp:
+ (WebCore::RenderTableRow::nodeAtPoint):
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::nodeAtPoint):
+ * rendering/RenderText.cpp:
+ (WebCore::isInlineFlowOrEmptyText):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ * rendering/bidi.cpp:
+ (WebCore::bidiNext):
+ (WebCore::bidiFirst):
+ (WebCore::appendRunsForObject):
+ (WebCore::RenderBlock::createLineBoxes):
+ (WebCore::RenderBlock::computeHorizontalPositionsForLine):
+ (WebCore::RenderBlock::layoutInlineChildren):
+ (WebCore::inlineFlowRequiresLineBox):
+ (WebCore::requiresLineBox):
+ (WebCore::RenderBlock::skipTrailingWhitespace):
+ (WebCore::RenderBlock::skipLeadingWhitespace):
+ (WebCore::RenderBlock::findNextLineBreak):
+
+2009-01-26 David Hyatt <hyatt@apple.com>
+
+ Drop support for display:compact.
+
+ (1) display:compact is no longer part of CSS2.1.
+ (2) Shipping Safari has completely broken compact support with severely broken rendering
+ (all of the compact text just piles on top of the text in the inserted block and on top of itself as well).
+ (3) This has been broken in WebKit for years (ever since blocks converted to painting lines directly) without
+ anyone even noticing.
+
+ Reviewed by Eric Seidel
+
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::placeBoxesHorizontally):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::handleSpecialChild):
+ (WebCore::RenderBlock::handleRunInChild):
+ (WebCore::RenderBlock::layoutBlockChildren):
+ (WebCore::RenderBlock::paint):
+ (WebCore::RenderBlock::paintObject):
+ (WebCore::RenderBlock::nodeAtPoint):
+ (WebCore::RenderBlock::positionForCoordinates):
+ (WebCore::shouldCheckLines):
+ (WebCore::getHeightForLineCount):
+ (WebCore::RenderBlock::renderName):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::sizesToIntrinsicWidth):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::width):
+ (WebCore::RenderBox::height):
+ (WebCore::RenderBox::size):
+ (WebCore::RenderBox::frameRect):
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::paintLines):
+ (WebCore::RenderFlow::hitTestLines):
+ (WebCore::RenderFlow::absoluteClippedOverflowRect):
+ (WebCore::RenderFlow::linesBoundingBox):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isInline):
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::computeHorizontalPositionsForLine):
+ (WebCore::RenderBlock::layoutInlineChildren):
+ * rendering/bidi.h:
+ (WebCore::BidiRun::BidiRun):
+
+2009-01-26 Adam Langley <agl@google.com>
+
+ Reviewed by Nikolas Zimmermann.
+
+ gtk2drawing: fix compiler warnings
+
+ g_object_set_data expects a gpointer as the last argument. Cast the
+ TRUE/FALSE values to avoid a warning.
+ gtk_tree_view_column_new doesn't return a GtkWidget.
+
+ * platform/gtk/gtk2drawing.c:
+ (setup_widget_prototype):
+ (moz_gtk_get_combo_box_inner_button):
+ (moz_gtk_get_combo_box_button_inner_widgets):
+ (ensure_combo_box_widgets):
+ (moz_gtk_get_combo_box_entry_inner_widgets):
+ (moz_gtk_get_combo_box_entry_arrow):
+ (ensure_combo_box_entry_widgets):
+ (ensure_toolbar_widget):
+ (ensure_menu_bar_item_widget):
+ (ensure_menu_popup_widget):
+ (ensure_menu_item_widget):
+ (ensure_image_menu_item_widget):
+ (ensure_menu_separator_widget):
+ (ensure_check_menu_item_widget):
+ (ensure_tree_header_cell_widget):
+ (moz_gtk_entry_paint):
+
+2009-01-26 David Hyatt <hyatt@apple.com>
+
+ Change display:run-in handling so that we no longer reuse RenderBlock as though it is an inline flow.
+ Instead we create a new RenderInline, move the RenderBlock's children underneath it, and then set the
+ inline as the new element's renderer.
+
+ Reviewed by Dan Bernstein
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::handleRunInChild):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::renderName):
+
+2009-01-26 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23480
+ Add missing method stubs to BackForwardListChromium.
+
+ * history/BackForwardListChromium.cpp:
+ (WebCore::BackForwardList::backItem):
+ (WebCore::BackForwardList::forwardItem):
+
+2009-01-25 Darin Adler <darin@apple.com>
+
+ Try to fix Tiger buildbot.
+
+ * WebCore.xcodeproj/project.pbxproj: Turn off cast-qual for WebDashboardRegion.m.
+ * page/mac/WebDashboardRegion.m:
+ (typeName): Added.
+ (-[WebDashboardRegion description]): Use typeName.
+ (-[WebDashboardRegion isEqual:]): Added comment.
+
+2009-01-25 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23535
+ Strengthen debug checks in KURL
+
+ Covered (and prompted) by existing tests.
+
+ * platform/KURL.cpp:
+ (WebCore::checkEncodedString): Check that the first character of the URL is an allowed
+ first scheme character, not just that it isn't a slash.
+ (WebCore::KURL::KURL): Assert that parsing didn't affect the string (which must be the case
+ because of parsing being idempotent).
+
+ * page/SecurityOrigin.cpp:
+ (WebCore::SecurityOrigin::create): Added a check for the URL being valid - if it is not, an
+ empty security origin is created.
+ (WebCore::SecurityOrigin::createFromString): Parse the string as URL, do not just convert
+ it - it is not guaranteed to be properly encoded.
+
+ * dom/Document.cpp: (WebCore::Document::updateBaseURL): As documentURI is an arbitrary
+ string, it needs to be parsed into an URL, not just converted into one.
+
+ * html/CanvasRenderingContext2D.cpp: (WebCore::CanvasRenderingContext2D::createPattern):
+ Create the security origin with createFromString() instead of create(). I do not know where
+ the string comes from and whether it might not be properly encoded, but this change can't
+ hurt, and makes the code slightly more clear.
+
+ * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::accessControlCheck): Create the security
+ origin with createFromString() instead of create(). The string comes from an HTTP response
+ header, so it may not be a properly encoded URL.
+
+ * loader/DocLoader.cpp: (WebCore::DocLoader::requestResource): Do not try to request using
+ invalid URLs.
+
+ * page/DOMWindow.cpp: (WebCore::DOMWindow::postMessage): Updated to call
+ SecurityOrigin::createFromString() (no change in behavior).
+
+2009-01-25 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Dan Bernstein.
+
+ Improve the consistency of settings in our .xcconfig files.
+
+ * Configurations/Base.xcconfig: Enable GCC_OBJC_CALL_CXX_CDTORS to match other projects,
+ and handle all cases in GCC_GENERATE_DEBUGGING_SYMBOLS.
+
+2009-01-25 David Hyatt <hyatt@apple.com>
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23524, lots of missing content in table sections.
+
+ The new table code created a bug involving markAllDescendantsWithFloatsForLayout, namely that it could
+ end up marking ancestors of a block as needing layout when that block was still in the process of
+ doing a layout.
+
+ The fix is to add a parameter to markAllDescendantsWithFloatsForLayout that says whether or not
+ we are "mid-layout." If this flag is set, then the method will make sure to do only local dirtying
+ of objects to avoid accidentally marking a clean ancestor as needing layout again.
+
+ Ultimately the second parameter to setNeedsLayout and setChildNeedsLayout should just be removed,
+ with a check of whether or not we are mid-layout being done by those methods instead.
+
+ Reviewed by Oliver Hunt
+
+ Added fast/repaint/dynamic-table-vertical-alignment-change.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::collapseMargins):
+ (WebCore::RenderBlock::clearFloatsIfNeeded):
+ (WebCore::RenderBlock::layoutBlockChildren):
+ (WebCore::RenderBlock::markAllDescendantsWithFloatsForLayout):
+ * rendering/RenderBlock.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::removeFromObjectLists):
+ * rendering/RenderObject.h:
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::layoutRows):
+
+2009-01-25 Darin Adler <darin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Bug 23352: Turn on more compiler warnings in the Mac build
+ https://bugs.webkit.org/show_bug.cgi?id=23352
+
+ Turn on the following warnings:
+
+ -Wcast-qual
+ -Wextra-tokens
+ -Wformat=2
+ -Winit-self
+ -Wmissing-noreturn
+ -Wpacked
+ -Wrendundant-decls
+
+ * Configurations/Base.xcconfig: Added the new warnings. Switched to -Wextra instead of
+ -W for clarity since we don't have to support the older versions of gcc that require the
+ old -W syntax. Since we now use -Wformat=2, removed -Wformat-security. Also removed
+ -Wno-format-y2k since we can have that one on now.
+
+2009-01-25 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ - fix <rdar://problem/6525618> REGRESSION (r39566): NewsFire crashes in
+ string hashing code when opening a Digg RSS article
+
+ Test: fast/loader/null-request-after-willSendRequest.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadItem): Null-check the request returned from
+ the client's willSendRequest method.
+
+2009-01-25 David Hyatt <hyatt@apple.com>
+
+ Fix for <rdar://problem/6525392> REGRESSION (r40180): Scroll wheel events over text scroll the page
+ instead of the ancestor overflow (23525)
+
+ Make sure that we always call scroll() on the nearest enclosing RenderBox. No test case is possible
+ here, since wheel scrolling is currently untestable (the offset varies from machine to machine).
+
+ Reviewed by Dan Bernstein
+
+ * page/EventHandler.cpp:
+ (WebCore::scrollAndAcceptEvent):
+ (WebCore::EventHandler::scrollOverflow):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::enclosingBox):
+ * rendering/RenderObject.h:
+
+2009-01-25 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 23538: REGRESSION (r39969): Garbage text instead of blank content rendered when plug-ins are disabled
+ https://bugs.webkit.org/show_bug.cgi?id=23538
+ rdar://problem/6523719
+
+ I'm not sure how to make a regression test for this, since it depends on plug-ins being disabled.
+
+ The main problem here is that when plug-ins were disabled, the code ignored the classId attribute and
+ the <embed> element entirely. That resulted in a page treating a Flash document as plain HTML rather
+ than doing fallback.
+
+ * rendering/RenderPartObject.cpp:
+ (WebCore::createClassIdToTypeMap): Added. Broke this out into a separate function so we could get rid of an
+ inelegant if statement.
+ (WebCore::activeXType): Added. To avoid repeating the MIME type for ActiveX and possibly having a typo.
+ (WebCore::havePlugin): Added. Helper function to make sure we don't forget the null check.
+ (WebCore::serviceTypeForClassId): Give this function a return value since that's a more natural way to
+ return a string than an "out" parameter. Fixed the logic to only prefer the ActiveX type over the
+ type guessed from the classId when there actually is an ActiveX plug-in to use. The old function assumed
+ there was one, which I presume right for Chrome on Windows when plug-ins are enabled, but wrong in many
+ other cases, and wrong all the time for all clients on Mac. We don't want to assume either way. Use the
+ new havePlugin function so we handle the case where pluginData is 0.
+ (WebCore::shouldUseEmbedDescendant): Renamed. Simplified the comment. Changed to use serviceTypeForClassId
+ instead of the old version that used an out parameter. Always use the <embed> if there isn't a plug-in
+ that knows how to handle <object> elements.
+ (WebCore::RenderPartObject::updateWidget): Removed null checks of pluginData. The two functions that
+ use this data still need to be called; they still do something even if no plug-ins are present. And
+ they have now been corrected to handle 0 properly.
+
+2009-01-25 Darin Adler <darin@apple.com>
+
+ * rendering/RenderMenuList.cpp: Fix build by adding back needed include.
+
+2009-01-25 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 23352: Turn on more compiler warnings in the Mac build
+ https://bugs.webkit.org/show_bug.cgi?id=23352
+
+ Fourth patch: Deal with the last few stray warnings.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::firstLineBlock): Handle the const_cast a little better.
+ Also make the local variable be a RenderBlock so the cast is closer to the code
+ that guarantees it's correct.
+
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::writeStyle): Put the enum into a local variable that's a built-in
+ type before using it with TextStream, so we don't get a warning due to -Wsign-promo.
+
+2009-01-25 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 23522: use checked casts for render tree
+ https://bugs.webkit.org/show_bug.cgi?id=23522
+
+ Step one: RenderText.
+
+ Also change set of RenderFlow* to be a ListHashSet as the comment in the
+ header indicated.
+
+ * dom/CharacterData.cpp:
+ (WebCore::CharacterData::setData): Use toRenderText.
+ (WebCore::CharacterData::appendData): Ditto.
+ (WebCore::CharacterData::insertData): Ditto.
+ (WebCore::CharacterData::deleteData): Ditto.
+ (WebCore::CharacterData::replaceData): Ditto.
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::getUpperLeftCorner): Ditto.
+ (WebCore::ContainerNode::getLowerRightCorner): Ditto.
+ * dom/Position.cpp:
+ (WebCore::nextRenderedEditable): Ditto.
+ (WebCore::previousRenderedEditable): Ditto.
+ (WebCore::Position::renderedOffset): Ditto. Also use function members
+ instead of data members of InlineTextBox.
+ (WebCore::Position::upstream): Ditto.
+ (WebCore::Position::downstream): Ditto.
+ (WebCore::Position::hasRenderedNonAnonymousDescendantsWithHeight): Ditto.
+ (WebCore::Position::inRenderedText): Ditto.
+ (WebCore::Position::isRenderedCharacter): Ditto.
+ (WebCore::searchAheadForBetterMatch): Ditto.
+ (WebCore::Position::getInlineBoxAndOffset): Ditto.
+
+ * dom/Range.cpp: Added include of VisiblePosition.h now that it's no longer
+ included in RenderObject.h.
+
+ * dom/Text.cpp:
+ (WebCore::Text::splitText): Use toRenderText.
+ (WebCore::Text::recalcStyle): Ditto.
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::deleteInsignificantText): Ditto.
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::debugRenderer): Ditto.
+ * editing/TextIterator.cpp:
+ (WebCore::TextIterator::handleTextNode): Ditto.
+ (WebCore::TextIterator::handleTextBox): Ditto.
+ (WebCore::TextIterator::emitText): Ditto.
+ (WebCore::SimplifiedBackwardsTextIterator::handleTextNode): Ditto.
+
+ * editing/VisiblePosition.cpp: Added include of FloatQuad.h now that it's
+ no longer included in RenderObject.h.
+ * inspector/InspectorController.cpp: Ditto.
+ * page/Frame.cpp: Ditto.
+ * rendering/RenderBox.cpp: Ditto.
+ * rendering/RenderInline.cpp: Ditto.
+ * rendering/RenderPath.cpp: Ditto.
+ * rendering/RenderSVGContainer.cpp: Ditto.
+ * rendering/RenderSVGImage.cpp: Ditto.
+ * rendering/RenderSVGInlineText.cpp: Ditto.
+ * rendering/RenderSVGTSpan.cpp: Ditto.
+ * rendering/RenderSVGText.cpp: Ditto.
+ * rendering/RenderSVGTextPath.cpp: Ditto.
+ * rendering/RenderTableCell.cpp: Ditto.
+ * rendering/RenderView.cpp: Ditto.
+
+ * editing/visible_units.cpp:
+ (WebCore::startPositionForLine): Use function members instead of data
+ members of InlineTextBox.
+ (WebCore::endPositionForLine): Ditto.
+ (WebCore::startOfParagraph): Use toRenderText.
+ (WebCore::endOfParagraph): Ditto.
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored): Use toRenderText.
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::placeBoxesHorizontally): Ditto.
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::deleteLine): Ditto.
+ (WebCore::InlineTextBox::extractLine): Ditto.
+ (WebCore::InlineTextBox::attachLine): Ditto.
+ (WebCore::InlineTextBox::placeEllipsisBox): Ditto.
+ (WebCore::InlineTextBox::paintDecoration): Ditto.
+ (WebCore::InlineTextBox::paintCompositionUnderline): Ditto.
+ (WebCore::InlineTextBox::offsetForPosition): Ditto.
+ (WebCore::InlineTextBox::positionForOffset): Ditto.
+
+ * rendering/InlineTextBox.h: Made most members private. Use toRenderText.
+
+ * rendering/RenderArena.cpp:
+ (WebCore::RenderArena::allocate): Use static_cast instead of C-style cast.
+ (WebCore::RenderArena::free): Ditto.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::addContinuationWithOutline): Use ListHashSet<RenderFlow*>
+ instead of RenderFlowSequencedSet.
+ (WebCore::RenderBlock::paintContinuationOutlines): Ditto.
+ (WebCore::stripTrailingSpace): Ditto.
+ (WebCore::RenderBlock::calcInlinePrefWidths): Ditto.
+ (WebCore::RenderBlock::updateFirstLetter): Ditto.
+
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::addChild): Use toRenderText.
+
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::dirtyLinesFromChangedChild): Use ListHashSet<RenderFlow*>
+ instead of RenderFlowSequencedSet.
+ (WebCore::RenderFlow::paintLines): Ditto.
+
+ * rendering/RenderMenuList.cpp: Removed some unneeded includes.
+
+ * rendering/RenderMenuList.h: Added now-needed forward declaration of RenderText.
+ Made more members private.
+
+ * rendering/RenderObject.cpp: Updated includes.
+ (WebCore::RenderObject::isEditable): Use toRenderText.
+ (WebCore::RenderObject::positionForPoint): Made non-inline so we wouldn't have to
+ include VisiblePosition.h in the header just for this.
+
+ * rendering/RenderObject.h: Removed unneeded includes and forward declarations.
+ Changed special vertical position values to be constants rather than an enum.
+ Eliminated RenderFlowSequencedSet, and changed clients to use ListHashSet<RenderFlow*>.
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::findNextInlineTextBox): Use function members instead of
+ data members of InlineTextBox.
+ (WebCore::RenderText::positionForCoordinates): Ditto.
+ (WebCore::isInlineFlowOrEmptyText): Use toRenderText.
+ (WebCore::RenderText::previousCharacter): Use function members instead of
+ data members of InlineTextBox.
+ (WebCore::RenderText::position): Ditto.
+ (WebCore::RenderText::caretMinOffset): Ditto.
+ (WebCore::RenderText::caretMaxOffset): Ditto.
+ (WebCore::RenderText::caretMaxRenderedOffset): Ditto.
+
+ * rendering/RenderText.h: Added definition of toRenderText.
+
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::textWithHardLineBreaks): Use toRenderText.
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::operator<<): Use toRenderText and toRenderBox.
+ (WebCore::writeTextRun): Ditto.
+ (WebCore::write): Ditto.
+
+ * rendering/bidi.cpp:
+ (WebCore::InlineIterator::increment): Use toRenderText.
+ (WebCore::InlineIterator::current): Ditto.
+ (WebCore::checkMidpoints): Ditto.
+ (WebCore::RenderBlock::computeHorizontalPositionsForLine): Ditto.
+ (WebCore::RenderBlock::layoutInlineChildren): Ditto.
+ (WebCore::RenderBlock::determineStartPosition): Ditto.
+ (WebCore::shouldSkipWhitespaceAfterStartObject): Ditto.
+ (WebCore::RenderBlock::findNextLineBreak): Ditto.
2009-01-25 Thiago Macieira <thiago.macieira@nokia.com>
@@ -625,9 +46643,256 @@
* plugins/PluginStream.cpp:
(WebCore::PluginStream::destroyStream):
-2009-01-23 Ariya Hidayat <ariya.hidayat@trolltech.com>
+2009-01-24 Alexey Proskuryakov <ap@webkit.org>
- Reviewed by Simon Hausmann.
+ Reviewed by Darin Adler.
+
+ <rdar://problem/5954398> REGRESSION: 1.1% PLT regression from 33577 and 33578 (encoding fixes)
+
+ Changed single argument KURL constructors back to always expect an already encoded string,
+ eliminating extra conversions.
+
+ This is a rather unstable situation, as it is often unclear whether a given string is safe
+ to convert to KURL without resolving. I think that going forward, the solution is to try to
+ keep encoded URLs as KURL instances, and not as strings.
+
+ * platform/KURL.h: Updated comments.
+
+ * platform/KURL.cpp:
+ (WebCore::KURL::KURL): In debug builds, verify that the passed string is ASCII-only. The
+ intention is to verify that it is already parsed and encoded by KURL or equivalent code, but
+ since encoding is scheme-dependent, such a verification would be quite complicated.
+ Don't encode the string as UTF-8, as it supposed to be ASCII-only.
+ Removed a hack that made strings beginning with "/" turn into "file:" URLs. I didn't find
+ any reason for it to exist, but I saw several cases where this code path was taken
+ inadvertently (see examples in LayoutTests/ChangeLog).
+ (WebCore::KURL::setProtocol): Using a user-provided string without validation or encoding
+ is clearly wrong here (e.g., the "protocol" can be set to a full URL, effectively replacing
+ the old one), and an already encoded string is expected by parse().
+ In debug builds, non-ASCII input will make an assertion in parse() fail. Added a FIXME.
+ (WebCore::KURL::setHost): Ditto.
+ (WebCore::KURL::setPort): Ditto.
+ (WebCore::KURL::setHostAndPort): Ditto.
+ (WebCore::KURL::setUser): Ditto.
+ (WebCore::KURL::setPass): Ditto.
+ (WebCore::KURL::setRef): Ditto.
+ (WebCore::KURL::setQuery): Ditto.
+ (WebCore::KURL::setPath): Ditto.
+ (WebCore::KURL::parse): Verify that the passed string is already encoded.
+
+ * html/HTMLLinkElement.cpp:
+ (WebCore::HTMLLinkElement::parseMappedAttribute):
+ (WebCore::HTMLLinkElement::process):
+ * html/HTMLLinkElement.h:
+ Changed to avoid using invalid URLs (this was causing problems on DNS prefetch tests, see
+ LayoutTests/ChangeLog).
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::init): Create an empty KURL without indirection for a small speedup.
+ (WebCore::FrameLoader::requestFrame): Resolve and encode javascript URLs properly, now that
+ String to KURL conversion requires the string to be already encoded.
+
+ * page/DOMWindow.cpp: (WebCore::DOMWindow::postMessage): Resolve and encode the origin.
+ HTML5 seems a little unclear on how this should work (it talks about "either parsing it as
+ a URL, or resolving it", and then somehow compares unaltered targetOrigin string to a
+ security origin object), so I just made the code as close to what we already had as possible.
+
+2009-01-24 Darin Adler <darin@apple.com>
+
+ Try to fix Qt build.
+
+ * WebCore.pro: Added JSTextCustom.cpp.
+
+2009-01-23 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by David Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23467
+
+ Change styleAvailable functionality to be a linked list
+ rather than scanning every CompositeAnimation for
+ Animations that are waiting for styleAvailable. This has
+ potential for large performance improvement in cases where
+ there are many animations firing at once. But it will also
+ help in my next fix, which is to synchronize software and
+ accelerated animations.
+
+ I also changed slightly when the beginAnimationUpdate and
+ endAnimationUpdate calls are made. But this has no real
+ effect on performance or behavior.
+
+ * dom/Document.cpp:
+ (WebCore::Document::recalcStyle):
+ (WebCore::Document::updateRendering):
+ * page/animation/AnimationBase.cpp:
+ (WebCore::AnimationBase::AnimationBase):
+ (WebCore::AnimationBase::~AnimationBase):
+ (WebCore::AnimationBase::updateStateMachine):
+ * page/animation/AnimationBase.h:
+ (WebCore::AnimationBase::next):
+ (WebCore::AnimationBase::setNext):
+ (WebCore::AnimationBase::styleAvailable):
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::AnimationControllerPrivate):
+ (WebCore::AnimationControllerPrivate::addToStyleAvailableWaitList):
+ (WebCore::AnimationControllerPrivate::removeFromStyleAvailableWaitList):
+ (WebCore::AnimationControllerPrivate::styleAvailable):
+ (WebCore::AnimationController::AnimationController):
+ (WebCore::AnimationController::endAnimationUpdate):
+ (WebCore::AnimationController::addToStyleAvailableWaitList):
+ (WebCore::AnimationController::removeFromStyleAvailableWaitList):
+ * page/animation/AnimationController.h:
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimationPrivate::addToStyleAvailableWaitList):
+ (WebCore::CompositeAnimationPrivate::removeFromStyleAvailableWaitList):
+ (WebCore::CompositeAnimation::addToStyleAvailableWaitList):
+ (WebCore::CompositeAnimation::removeFromStyleAvailableWaitList):
+ * page/animation/CompositeAnimation.h:
+
+2009-01-24 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6368059> REGRESSION: URL encoding problems on http://www.cineman.ch
+
+ Test: http/tests/xmlhttprequest/encode-request-url-2.html
+
+ * platform/KURL.cpp:
+ (WebCore::appendASCII): Added a helper function.
+ (WebCore::KURL::KURL): Explicitly encode the URL to call two-argument parse() with better
+ specified behavior.
+ (WebCore::KURL::init): Ditto. This avoids trying to round-trip an URL encoded into a byte
+ stream, but not yet transformed to ASCII-only using percent escapes. Since different parts
+ of the byte stream can use different encodings, round-tripping is not possible.
+ (WebCore::KURL::parse): Reverted an earlier change that made the single-argument version of
+ this function convert the string to utf-8. I think that on the remanining code paths, it is
+ correct to assume that the string is all ASCII, but I'm not yet confident enough to drop a
+ FIXME warning.
+
+2009-01-24 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Gtk build fix after r40170
+
+ * GNUmakefile.am: Removed editing/RemoveNodeAttributeCommand.cpp
+ and editing/RemoveNodeAttributeCommand.h
+
+2009-01-23 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix the Qt build after r40205.
+
+ * WebCore.pro:
+
+2009-01-23 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ In CachedPage, break off per-Frame pieces of data into a CachedFrame object.
+
+ * GNUmakefile.am:
+ * WebCore.base.exp:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+
+ * history/CachedFrame.cpp: Added.
+ (WebCore::cachedFrameCounter):
+ (WebCore::CachedFrame::CachedFrame):
+ (WebCore::CachedFrame::~CachedFrame):
+ (WebCore::CachedFrame::restore):
+ (WebCore::CachedFrame::clear):
+ (WebCore::CachedFrame::setCachedFramePlatformData):
+ (WebCore::CachedFrame::cachedFramePlatformData):
+ * history/CachedFrame.h: Added.
+ (WebCore::CachedFrame::document):
+ (WebCore::CachedFrame::documentLoader):
+ (WebCore::CachedFrame::view):
+ (WebCore::CachedFrame::mousePressNode):
+ (WebCore::CachedFrame::url):
+ (WebCore::CachedFrame::domWindow):
+
+ * history/CachedPage.cpp:
+ (WebCore::CachedPage::CachedPage):
+ (WebCore::CachedPage::restore):
+ (WebCore::CachedPage::clear):
+ (WebCore::CachedPage::setCachedFramePlatformData):
+ (WebCore::CachedPage::cachedFramePlatformData):
+ * history/CachedPage.h:
+ (WebCore::CachedPage::document):
+ (WebCore::CachedPage::documentLoader):
+ (WebCore::CachedPage::view):
+ (WebCore::CachedPage::mousePressNode):
+ (WebCore::CachedPage::url):
+ (WebCore::CachedPage::domWindow):
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::cachePageForHistoryItem): Setting the DocumentLoader independently of
+ creating a CachedPage was a historical relic. Take the opportunity to clean that up.
+
+2009-01-23 David Hyatt <hyatt@apple.com>
+
+ Add ASSERTs to catch anyone trying to obtain the width/height of an inline flow. Fix up all the places
+ that triggered the ASSERT (since all of these places are effectively regressions from my landing that
+ devirtualized width()/height()).
+
+ Reviewed by Adele
+
+ * dom/Position.cpp:
+ (WebCore::Position::hasRenderedNonAnonymousDescendantsWithHeight):
+ * editing/DeleteButtonController.cpp:
+ (WebCore::isDeletableElement):
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::isKeyboardFocusable):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::clientWidth):
+ (WebCore::RenderBox::clientHeight):
+ (WebCore::RenderBox::scrollWidth):
+ (WebCore::RenderBox::scrollHeight):
+ (WebCore::RenderBox::absoluteOutlineBounds):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::width):
+ (WebCore::RenderBox::height):
+ (WebCore::RenderBox::size):
+ (WebCore::RenderBox::frameRect):
+ (WebCore::RenderBox::borderBoundingBox):
+ * rendering/RenderFlow.h:
+ (WebCore::RenderFlow::borderBoundingBox):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPosition):
+ * rendering/RenderScrollbarPart.cpp:
+ (WebCore::RenderScrollbarPart::styleWillChange):
+ * rendering/RenderScrollbarPart.h:
+ * wml/WMLAElement.cpp:
+ (WebCore::WMLAElement::isKeyboardFocusable):
+
+2009-01-23 Darin Adler <darin@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ Bug 23352: Turn on more compiler warnings in the Mac build
+ https://bugs.webkit.org/show_bug.cgi?id=23352
+
+ Second patch: Slightly less simple cases of various warnings.
+
+ * bridge/jni/jni_runtime.h:
+ (JSC::Bindings::JavaString::_commonInit): Use reinterpret_cast here and avoid casting
+ away const.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::PendingCallbacks::appendStartElementNSCallback): Use static_cast instead of
+ reinterpret_cast; this is casting the result of malloc, and the idiom is to use
+ static_cast, which works because we're casting from void*.
+ (WebCore::PendingCallbacks::PendingStartElementNSCallback::call): Use const_cast instead
+ C-style casts.
+
+ * xml/XSLTUnicodeSort.cpp:
+ (inlineXSLTTransformError): Tweak soft linking of xsltTransformError to use a macro
+ instead of redefining the function.
+
+2009-01-23 Darin Adler <darin@apple.com>
+
+ Reviewed by Anders Carlsson.
Bug 23475: fast/text/find-backwards.html fails with ICU disabled SearchBuffer
https://bugs.webkit.org/show_bug.cgi?id=23475
@@ -642,18 +46907,3632 @@
Reviewed by Anders Carlsson.
+ Bug 23510: REGRESSION (r40171): CDATASection objects not getting proper JavaScript wrappers
+ https://bugs.webkit.org/show_bug.cgi?id=23510
+
+ That patch fixed the optimization that's supposed to give a faster path for
+ allocating the wrappers for DOM Text objects. But CDATASection is the one
+ subclass of Text objects.
+
+ * GNUmakefile.am: Added JSCDATASectionCustom.cpp.
+ * WebCore.scons: Ditto.
+ * WebCore.vcproj/WebCore.vcproj: Ditto.
+ * WebCore.xcodeproj/project.pbxproj: Ditto.
+ * WebCoreSources.bkl: Ditto.
+
+ * bindings/js/JSCDATASectionCustom.cpp: Copied from bindings/js/JSTextCustom.cpp.
+ (WebCore::toJSNewlyCreated): Changed to do CDATASection, not Text.
+
+ * bindings/scripts/CodeGeneratorJS.pm: Added another toJSNewlyCreated function
+ for CDATASection. We don't want to have to check when creating a wrapper for a
+ Text object whether it's a CDATASection object or not, so we need to do this overload
+ at compile time.
+
+2009-01-23 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Eric Seidel.
+
+ Add a base class for WML form control elements: WMLFormControlElement (as it's designed in HTML as well).
+ WMLFormControlElement inherits from WMLElement and FormControlElement (just like the HTMLFormControlElement equivalent).
+
+ WMLInputElement / WMLOptionElement / WMLOptGroupElement are supposed to inherit from the new WMLFormControlElement class.
+ Now WMLInputElement & WMLOptGroupElement only inherit from WMLElement and FormControlElement, but WMLOptionElement inherits
+ from WMLEventHandlingElement (which in turn inherits from WMLElement) and FormControlElement. In order to introduce a shared
+ base class, WMLEventHandlingElement is no longer allowed to inherit from WMLElement directly. Instead it should turn into
+ another base class, just like FormControlElement.
+
+ Add a base class for form control elements 'with state': FormControlElementWithState, serving as base class for
+ HTMLFormControlElementWithState and WMLFormControlElementWithState. -> Make Document operate on FormControlElementWithState
+ objects instead of HTMLFormControlElementWithState objects, to support save/restore control state for non HTMLFormControlElements.
+
+ Rename isGenericFormElement() to isFormControlElement(), and move it to Element.h
+ Add new virtual function isFormControlElementWithState() to Element.h.
+
+ * GNUmakefile.am:
+ * WebCore.order:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * dom/Document.cpp:
+ (WebCore::Document::formElementsState):
+ * dom/Document.h:
+ (WebCore::Document::registerFormElementWithState):
+ (WebCore::Document::unregisterFormElementWithState):
+ * dom/Element.h:
+ (WebCore::Element::isFormControlElement):
+ (WebCore::Element::isFormControlElementWithState):
+ * dom/FormControlElement.cpp:
+ (WebCore::toFormControlElement):
+ * dom/FormControlElement.h:
+ * dom/FormControlElementWithState.cpp: Added.
+ (WebCore::FormControlElementWithState::registerFormControlElementWithState):
+ (WebCore::FormControlElementWithState::unregisterFormControlElementWithState):
+ (WebCore::FormControlElementWithState::finishParsingChildren):
+ (WebCore::toFormControlElementWithState):
+ * dom/FormControlElementWithState.h: Added.
+ (WebCore::FormControlElementWithState::~FormControlElementWithState):
+ (WebCore::FormControlElementWithState::FormControlElementWithState):
+ * html/HTMLElement.h:
+ * html/HTMLFormControlElement.cpp:
+ (WebCore::HTMLFormControlElementWithState::HTMLFormControlElementWithState):
+ (WebCore::HTMLFormControlElementWithState::~HTMLFormControlElementWithState):
+ (WebCore::HTMLFormControlElementWithState::willMoveToNewOwnerDocument):
+ (WebCore::HTMLFormControlElementWithState::didMoveToNewOwnerDocument):
+ * html/HTMLFormControlElement.h:
+ (WebCore::HTMLFormControlElement::isFormControlElement):
+ (WebCore::HTMLFormControlElementWithState::isFormControlElementWithState):
+ (WebCore::HTMLFormControlElementWithState::toFormControlElement):
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::formElementIndex):
+ * html/HTMLLabelElement.cpp:
+ (WebCore::HTMLLabelElement::correspondingControl):
+ * html/HTMLLegendElement.cpp:
+ (WebCore::HTMLLegendElement::formElement):
+ * page/Frame.cpp:
+ (WebCore::Frame::searchForLabelsBeforeElement):
+ (WebCore::scanForForm):
+ (WebCore::Frame::currentForm):
+ * page/mac/FrameMac.mm:
+ (WebCore::Frame::searchForLabelsBeforeElement):
+ * wml/WMLCardElement.cpp:
+ (WebCore::WMLCardElement::WMLCardElement):
+ (WebCore::WMLCardElement::parseMappedAttribute):
+ (WebCore::WMLCardElement::insertedIntoDocument):
+ * wml/WMLCardElement.h:
+ * wml/WMLDoElement.cpp:
+ (WebCore::WMLDoElement::insertedIntoDocument):
+ * wml/WMLElement.h:
+ (WebCore::WMLElement::isWMLElement):
+ * wml/WMLEventHandlingElement.cpp:
+ (WebCore::WMLEventHandlingElement::WMLEventHandlingElement):
+ (WebCore::WMLEventHandlingElement::registerDoElement):
+ (WebCore::toWMLEventHandlingElement):
+ * wml/WMLEventHandlingElement.h:
+ * wml/WMLFormControlElement.cpp: Added.
+ (WebCore::WMLFormControlElement::WMLFormControlElement):
+ (WebCore::WMLFormControlElement::~WMLFormControlElement):
+ (WebCore::WMLFormControlElementWithState::WMLFormControlElementWithState):
+ (WebCore::WMLFormControlElementWithState::~WMLFormControlElementWithState):
+ * wml/WMLFormControlElement.h: Added.
+ (WebCore::WMLFormControlElement::isFormControlElement):
+ (WebCore::WMLFormControlElement::valueMatchesRenderer):
+ (WebCore::WMLFormControlElement::setValueMatchesRenderer):
+ (WebCore::WMLFormControlElement::name):
+ (WebCore::WMLFormControlElementWithState::isFormControlElementWithState):
+ (WebCore::WMLFormControlElementWithState::toFormControlElement):
+ * wml/WMLInputElement.cpp:
+ (WebCore::WMLInputElement::WMLInputElement):
+ (WebCore::WMLInputElement::type):
+ * wml/WMLInputElement.h:
+ * wml/WMLOnEventElement.cpp:
+ (WebCore::WMLOnEventElement::registerTask):
+ * wml/WMLOptGroupElement.cpp:
+ (WebCore::WMLOptGroupElement::WMLOptGroupElement):
+ (WebCore::WMLOptGroupElement::type):
+ * wml/WMLOptGroupElement.h:
+ * wml/WMLOptionElement.cpp:
+ (WebCore::WMLOptionElement::WMLOptionElement):
+ (WebCore::WMLOptionElement::type):
+ * wml/WMLOptionElement.h:
+ * wml/WMLTemplateElement.cpp:
+ (WebCore::WMLTemplateElement::WMLTemplateElement):
+ (WebCore::WMLTemplateElement::parseMappedAttribute):
+ * wml/WMLTemplateElement.h:
+
+2009-01-23 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 23509: Crash at -[WebCoreAXObject doAXNextSentenceEndTextMarkerForTextMarker:]
+ https://bugs.webkit.org/show_bug.cgi?id=23509
+
+ Add null checking in makeRange instead of AX code
+
+ * editing/VisiblePosition.cpp:
+ (WebCore::makeRange):
+ * page/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::nextSentenceEndPosition):
+ (WebCore::AccessibilityObject::previousSentenceStartPosition):
+
+2009-01-23 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix the Gtk build too after removal of RenderBox::toConstRenderBox
+
+ * platform/gtk/RenderThemeGtk.cpp:
+ (WebCore::RenderThemeGtk::baselinePosition):
+
+2009-01-23 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix the Qt build after rename of RenderBox::toConstRenderBox -> toRenderBox
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::RenderThemeQt::baselinePosition):
+
+2009-01-23 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix the Qt build after r40168.
+
+ * WebCore.pro:
+
+2009-01-23 Brady Eidson <beidson@apple.com>
+
+ Rubberstamped by Darin Adler
+
+ Rename CachedPagePlatformData to CachedFramePlatformData to more accurately reflect its true role.
+
+ * GNUmakefile.am:
+ * WebCore.base.exp:
+ * WebCore.order:
+ * WebCore.xcodeproj/project.pbxproj:
+
+ * history/CachedFramePlatformData.h: Copied from WebCore/history/CachedPagePlatformData.h.
+ (WebCore::CachedFramePlatformData::~CachedFramePlatformData):
+ * history/CachedPagePlatformData.h: Removed.
+
+ * history/CachedPage.cpp:
+ (WebCore::CachedPage::clear):
+ (WebCore::CachedPage::setCachedFramePlatformData):
+ (WebCore::CachedPage::cachedFramePlatformData):
+ * history/CachedPage.h:
+
+2009-01-23 Kevin Watters <kevinwatters@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Fix drawing in situations where sub-portions of the bitmap are to be
+ drawn to the screen.
+
+ * platform/graphics/wx/ImageWx.cpp:
+ (WebCore::BitmapImage::draw):
+
+2009-01-23 Kevin Ollivier <kevino@theolliviers.com>
+
+ Build fixes for recent changes.
+
+ * WebCoreSources.bkl:
+ * plugins/PluginView.cpp:
+ (WebCore::PluginView::invalidateWindowlessPluginRect):
+
+2009-01-23 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Adele Peterson
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23407
+
+ Implement QTMovieWin::hasVideo so the controller on an audio-only <video> element
+ is never hidden (as with an <audio> element).
+
+ Test: media/video-controls-visible-audio-only.html
+
+ * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.cpp:
+ (WebCore::MediaPlayerPrivate::hasVideo):
+ * platform/graphics/win/QTMovieWin.cpp:
+ (QTMovieWin::hasVideo):
+ * platform/graphics/win/QTMovieWin.h:
+
+2009-01-23 David Hyatt <hyatt@apple.com>
+
+ Make toRenderBox a non-member function. Rename toConstRenderBox to just also be called toRenderBox.
+
+ Reviewed by Oliver Hunt
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::sizingBox):
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::getUpperLeftCorner):
+ (WebCore::ContainerNode::getLowerRightCorner):
+ * dom/Element.cpp:
+ (WebCore::Element::scrollByUnits):
+ * dom/Position.cpp:
+ (WebCore::endsOfNodeAreVisuallyDistinctPositions):
+ (WebCore::Position::hasRenderedNonAnonymousDescendantsWithHeight):
+ (WebCore::Position::isCandidate):
+ * editing/DeleteButtonController.cpp:
+ (WebCore::isDeletableElement):
+ * editing/EditorCommand.cpp:
+ (WebCore::verticalScrollDistance):
+ * editing/TextIterator.cpp:
+ (WebCore::shouldEmitExtraNewlineForNode):
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::isKeyboardFocusable):
+ * html/HTMLFormControlElement.cpp:
+ (WebCore::HTMLFormControlElement::isFocusable):
+ * html/HTMLFrameElementBase.cpp:
+ (WebCore::HTMLFrameElementBase::width):
+ (WebCore::HTMLFrameElementBase::height):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::doAccessibilityHitTest):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleMouseDraggedEvent):
+ (WebCore::EventHandler::autoscrollTimerFired):
+ (WebCore::EventHandler::updateAutoscrollRenderer):
+ (WebCore::EventHandler::stopAutoscrollTimer):
+ (WebCore::EventHandler::scrollOverflow):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::layout):
+ * page/animation/AnimationBase.cpp:
+ (WebCore::blendFunc):
+ * rendering/InlineBox.cpp:
+ (WebCore::InlineBox::adjustPosition):
+ * rendering/InlineBox.h:
+ (WebCore::InlineBox::renderBox):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::clearFloats):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::offsetFromContainer):
+ (WebCore::RenderBox::computeAbsoluteRepaintRect):
+ (WebCore::RenderBox::containingBlockWidthForPositioned):
+ (WebCore::RenderBox::containingBlockHeightForPositioned):
+ (WebCore::RenderBox::calcAbsoluteHorizontal):
+ (WebCore::RenderBox::calcAbsoluteVertical):
+ (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
+ (WebCore::RenderBox::calcAbsoluteVerticalReplaced):
+ * rendering/RenderBox.h:
+ (WebCore::toRenderBox):
+ (WebCore::RenderBox::previousSiblingBox):
+ (WebCore::RenderBox::nextSiblingBox):
+ (WebCore::RenderBox::parentBox):
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::absoluteClippedOverflowRect):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPosition):
+ (WebCore::RenderLayer::resize):
+ (WebCore::RenderLayer::boundingBox):
+ * rendering/RenderObject.cpp:
+ (WebCore::addLayers):
+ (WebCore::RenderObject::removeLayers):
+ (WebCore::RenderObject::moveLayers):
+ (WebCore::RenderObject::findNextLayer):
+ (WebCore::RenderObject::enclosingLayer):
+ (WebCore::RenderObject::setNeedsLayout):
+ (WebCore::RenderObject::setNeedsPositionedMovementLayout):
+ (WebCore::RenderObject::repaintAfterLayoutIfNeeded):
+ (WebCore::RenderObject::getAbsoluteRepaintRectWithOutline):
+ (WebCore::RenderObject::computeAbsoluteRepaintRect):
+ (WebCore::RenderObject::localToAbsolute):
+ (WebCore::RenderObject::absoluteToLocal):
+ (WebCore::RenderObject::localToAbsoluteQuad):
+ (WebCore::RenderObject::offsetFromContainer):
+ (WebCore::RenderObject::removeFromObjectLists):
+ (WebCore::RenderObject::destroy):
+ (WebCore::RenderObject::updateHitTestResult):
+ (WebCore::RenderObject::addDashboardRegions):
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::layoutRows):
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::hitTestMediaControlPart):
+ (WebCore::RenderTheme::baselinePosition):
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::hitTestMediaControlPart):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::externalRepresentation):
+ * rendering/bidi.cpp:
+ (WebCore::inlineWidth):
+ (WebCore::RenderBlock::computeHorizontalPositionsForLine):
+ (WebCore::requiresLineBox):
+ (WebCore::RenderBlock::findNextLineBreak):
+ * svg/SVGLength.cpp:
+ (WebCore::SVGLength::PercentageOfViewport):
+ * wml/WMLAElement.cpp:
+ (WebCore::WMLAElement::isKeyboardFocusable):
+ * wml/WMLInputElement.cpp:
+ (WebCore::isInputFocusable):
+
+2009-01-23 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 23509: Crash at -[WebCoreAXObject doAXNextSentenceEndTextMarkerForTextMarker:]
+ https://bugs.webkit.org/show_bug.cgi?id=23509
+
+ Add null checking around next/previous sentence retrieval in AX code
+
+ * page/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::nextSentenceEndPosition):
+ (WebCore::AccessibilityObject::previousSentenceStartPosition):
+
+2009-01-23 David Hyatt <hyatt@apple.com>
+
+ Fix for <rdar://problem/6518850> REGRESSION: hover feedback not showing on many sites
+
+ Inline flow repainting was broken because it relied on width() and height(). Give RenderFlow a linesBoundingBox
+ method for obtaining a reasonable bounding box to use for repainting. Eliminate the methods from RenderInline
+ since compacts/run-ins need them too, so putting them on RenderFlow is necessary.
+
+ For consistency, change RenderText's version of these methods into the single linesBoundingBox method as
+ well.
+
+ Reviewed by Oliver Hunt
+
+ * WebCore.base.exp:
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::getUpperLeftCorner):
+ (WebCore::ContainerNode::getLowerRightCorner):
+ * dom/Position.cpp:
+ (WebCore::Position::hasRenderedNonAnonymousDescendantsWithHeight):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::containingBlockHeightForPositioned):
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::absoluteClippedOverflowRect):
+ (WebCore::RenderFlow::linesBoundingBox):
+ * rendering/RenderFlow.h:
+ * rendering/RenderInline.cpp:
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::offsetWidth):
+ (WebCore::RenderInline::offsetHeight):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPosition):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::linesBoundingBox):
+ * rendering/RenderText.h:
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::write):
+
+2009-01-23 David Hyatt <hyatt@apple.com>
+
+ Move layer() into RenderBox and make it non-virtual. Move all of the scrolling functions from RenderObject
+ to RenderBox and devirtualize as many as possible. Clean up styleWillChange to factor code specific to
+ RenderBox and RenderBlock into their appropriate subclasses. Stubbed out an empty styleWillChange on
+ RenderText, since none of the work done in styleWillChange was relevant to text nodes.
+
+ Reviewed by Sam Weinig
+
+ * dom/Document.cpp:
+ (WebCore::Document::elementFromPoint):
+ (WebCore::Document::renderView):
+ (WebCore::Document::prepareMouseEvent):
+ * dom/Document.h:
+ * dom/Element.cpp:
+ (WebCore::Element::scrollByUnits):
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::contains):
+ * html/HTMLMarqueeElement.cpp:
+ (WebCore::HTMLMarqueeElement::start):
+ (WebCore::HTMLMarqueeElement::stop):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::topRenderer):
+ (WebCore::AccessibilityRenderObject::visiblePositionForPoint):
+ (WebCore::AccessibilityRenderObject::doAccessibilityHitTest):
+ * page/AccessibilityRenderObject.h:
+ * page/EventHandler.cpp:
+ (WebCore::scrollAndAcceptEvent):
+ (WebCore::EventHandler::handleMousePressEvent):
+ (WebCore::EventHandler::handleMouseDraggedEvent):
+ (WebCore::EventHandler::updateSelectionForMouseDrag):
+ (WebCore::EventHandler::autoscrollTimerFired):
+ (WebCore::EventHandler::updateAutoscrollRenderer):
+ (WebCore::EventHandler::stopAutoscrollTimer):
+ (WebCore::EventHandler::scrollOverflow):
+ (WebCore::EventHandler::handleWheelEvent):
+ (WebCore::EventHandler::hoverTimerFired):
+ * page/Frame.cpp:
+ (WebCore::Frame::clearTimers):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::styleWillChange):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::styleWillChange):
+ (WebCore::RenderBox::verticalScrollbarWidth):
+ (WebCore::RenderBox::horizontalScrollbarHeight):
+ (WebCore::RenderBox::scroll):
+ (WebCore::RenderBox::canBeProgramaticallyScrolled):
+ (WebCore::RenderBox::autoscroll):
+ (WebCore::RenderBox::panScroll):
+ (WebCore::RenderBox::offsetFromContainer):
+ (WebCore::RenderBox::computeAbsoluteRepaintRect):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::layer):
+ (WebCore::RenderBox::requiresLayer):
+ (WebCore::RenderBox::stopAutoscroll):
+ (WebCore::RenderBox::hasAutoVerticalScrollbar):
+ (WebCore::RenderBox::hasAutoHorizontalScrollbar):
+ (WebCore::RenderBox::scrollsOverflow):
+ (WebCore::RenderBox::scrollsOverflowX):
+ (WebCore::RenderBox::scrollsOverflowY):
+ (WebCore::RenderBox::includeVerticalScrollbarSize):
+ (WebCore::RenderBox::includeHorizontalScrollbarSize):
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::absoluteClippedOverflowRect):
+ (WebCore::RenderFlow::addFocusRingRects):
+ * rendering/RenderForeignObject.cpp:
+ * rendering/RenderForeignObject.h:
+ (WebCore::RenderForeignObject::requiresLayer):
+ * rendering/RenderInline.cpp:
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::requiresLayer):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::childrenClipRect):
+ (WebCore::RenderLayer::selfClipRect):
+ * rendering/RenderListBox.cpp:
+ * rendering/RenderListBox.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::addLayers):
+ (WebCore::RenderObject::removeLayers):
+ (WebCore::RenderObject::moveLayers):
+ (WebCore::RenderObject::findNextLayer):
+ (WebCore::RenderObject::enclosingLayer):
+ (WebCore::RenderObject::setNeedsLayout):
+ (WebCore::RenderObject::setNeedsPositionedMovementLayout):
+ (WebCore::RenderObject::computeAbsoluteRepaintRect):
+ (WebCore::RenderObject::styleWillChange):
+ (WebCore::RenderObject::localToAbsolute):
+ (WebCore::RenderObject::absoluteToLocal):
+ (WebCore::RenderObject::localToAbsoluteQuad):
+ (WebCore::RenderObject::offsetFromContainer):
+ (WebCore::RenderObject::destroy):
+ * rendering/RenderObject.h:
+ * rendering/RenderPath.cpp:
+ * rendering/RenderPath.h:
+ (WebCore::RenderPath::requiresLayer):
+ * rendering/RenderReplica.h:
+ (WebCore::RenderReplica::requiresLayer):
+ * rendering/RenderSVGContainer.cpp:
+ * rendering/RenderSVGContainer.h:
+ (WebCore::RenderSVGContainer::requiresLayer):
+ * rendering/RenderSVGHiddenContainer.cpp:
+ * rendering/RenderSVGHiddenContainer.h:
+ (WebCore::RenderSVGHiddenContainer::requiresLayer):
+ * rendering/RenderSVGImage.cpp:
+ * rendering/RenderSVGImage.h:
+ (WebCore::RenderSVGImage::requiresLayer):
+ * rendering/RenderSVGInline.h:
+ (WebCore::RenderSVGInline::requiresLayer):
+ * rendering/RenderSVGInlineText.h:
+ (WebCore::RenderSVGInlineText::requiresLayer):
+ * rendering/RenderSVGText.cpp:
+ * rendering/RenderSVGText.h:
+ (WebCore::RenderSVGText::requiresLayer):
+ * rendering/RenderScrollbarPart.h:
+ (WebCore::RenderScrollbarPart::requiresLayer):
+ * rendering/RenderSlider.cpp:
+ (WebCore::RenderSlider::setCurrentPosition):
+ * rendering/RenderTableCell.cpp:
+ * rendering/RenderTableCell.h:
+ (WebCore::RenderTableCell::requiresLayer):
+ * rendering/RenderTableCol.h:
+ (WebCore::RenderTableCol::requiresLayer):
+ * rendering/RenderTableRow.h:
+ (WebCore::RenderTableRow::requiresLayer):
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::layoutRows):
+ * rendering/RenderText.h:
+ (WebCore::RenderText::styleWillChange):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::autoscroll):
+ (WebCore::RenderTextControl::scroll):
+ * rendering/RenderTextControl.h:
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::write):
+ (WebCore::externalRepresentation):
+
+2009-01-23 Anders Carlsson <andersca@apple.com>
+
+ Fix tyop.
+
+ * editing/markup.cpp:
+ (WebCore::joinMarkups):
+
+2009-01-23 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Darin Adler.
+
+ * Configurations/Base.xcconfig:
+ Fix GCC 4.0 build.
+
+ * editing/markup.cpp:
+ (WebCore::joinMarkups):
+ Pass a const reference to the vector.
+
+ * html/HTMLElement.cpp:
+ * platform/text/String.cpp:
+ Add comments indicating that these functions are for use in the debugger.
+
+2009-01-23 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Turn on -Wmissing-prototypes and fix the resulting warnings.
+
+ * Configurations/Base.xcconfig:
+ * bindings/js/JSHistoryCustom.cpp:
+ (WebCore::nonCachingStaticBackFunctionGetter):
+ (WebCore::nonCachingStaticForwardFunctionGetter):
+ (WebCore::nonCachingStaticGoFunctionGetter):
+ * bindings/js/JSLocationCustom.cpp:
+ (WebCore::nonCachingStaticReplaceFunctionGetter):
+ (WebCore::nonCachingStaticReloadFunctionGetter):
+ (WebCore::nonCachingStaticAssignFunctionGetter):
+ (WebCore::JSLocation::customGetOwnPropertySlot):
+ * bindings/objc/DOMRGBColor.mm:
+ (WebCore::getWrapperForRGB):
+ (WebCore::setWrapperForRGB):
+ (WebCore::removeWrapperForRGB):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * bridge/c/c_instance.cpp:
+ (JSC::Bindings::globalExceptionString):
+ * bridge/runtime_object.cpp:
+ (JSC::callRuntimeConstructor):
+ * css/CSSParser.cpp:
+ (WebCore::parseGradientColorStop):
+ * css/CSSPrimitiveValue.cpp:
+ (WebCore::scaleFactorForConversion):
+ * css/CSSStyleSelector.cpp:
+ (WebCore::operator >):
+ (WebCore::operator <=):
+ (WebCore::getTransformOperationType):
+ * dom/make_names.pl:
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::updatePositionForTextRemoval):
+ * editing/EditorCommand.cpp:
+ (WebCore::valueBackColor):
+ (WebCore::valueFontName):
+ (WebCore::valueFontSize):
+ (WebCore::valueFontSizeDelta):
+ (WebCore::valueForeColor):
+ * editing/VisiblePosition.cpp:
+ (WebCore::canonicalizeCandidate):
+ * editing/htmlediting.cpp:
+ * editing/markup.cpp:
+ (WebCore::joinMarkups):
+ * html/HTMLElement.cpp:
+ (WebCore::inlineTagList):
+ (WebCore::blockTagList):
+ * html/HTMLMediaElement.cpp:
+ (WebCore::serializeTimeOffset):
+ (WebCore::parseTimeOffset):
+ * page/mac/FrameMac.mm:
+ (WebCore::regExpForLabels):
+ * platform/Arena.cpp:
+ * platform/graphics/Color.cpp:
+ (WebCore::colorFloatToRGBAByte):
+ * platform/graphics/cg/ImageSourceCG.cpp:
+ (WebCore::imageSourceOptions):
+ * platform/graphics/cg/PathCG.cpp:
+ (WebCore::CGPathApplierToPathApplier):
+ * platform/graphics/mac/SimpleFontDataMac.mm:
+ (WebCore::initFontData):
+ * platform/mac/PlatformMouseEventMac.mm:
+ * platform/text/String.cpp:
+ * rendering/RenderBlock.cpp:
+ (WebCore::continuationOutlineTable):
+ (WebCore::getHeightForLineCount):
+ * rendering/RenderView.cpp:
+ (WebCore::rendererAfterPosition):
+ * rendering/RootInlineBox.cpp:
+ (WebCore::isEditableLeaf):
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::hasFractions):
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::positionedObjectMoved):
+ * svg/SVGFont.cpp:
+ (WebCore::floatWidthUsingSVGFontCallback):
+ (WebCore::floatWidthMissingGlyphCallback):
+ (WebCore::drawTextUsingSVGFontCallback):
+ (WebCore::drawTextMissingGlyphCallback):
+ * svg/SVGTransformable.cpp:
+ (WebCore::parseTransformParamList):
+ * svg/graphics/SVGPaintServerGradient.cpp:
+ (WebCore::operator<<):
+ * xml/XPathGrammar.y:
+ * xml/XSLTExtensions.cpp:
+
+2009-01-23 Eric Seidel <eric@webkit.org>
+
+ No review, removing an empty file.
+
+ Remove RemoveNodeAttributeCommand since it was empty.
+
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * editing/RemoveNodeAttributeCommand.cpp: Removed.
+ * editing/RemoveNodeAttributeCommand.h: Removed.
+
+2009-01-23 Brady Eidson <beidson@apple.com>
+
+ Rubberstamped by Sam Weinig
+
+ Rework ScriptCachedPageData to ScriptCachedFrameData to more accurately reflect its true purpose
+
+ * GNUmakefile.am:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+
+ * bindings/js/ScriptCachedFrameData.cpp: Copied from bindings/js/ScriptCachedPageData.cpp.
+ (WebCore::ScriptCachedFrameData::ScriptCachedFrameData):
+ (WebCore::ScriptCachedFrameData::domWindow):
+ (WebCore::ScriptCachedFrameData::~ScriptCachedFrameData):
+ (WebCore::ScriptCachedFrameData::restore):
+ (WebCore::ScriptCachedFrameData::clear):
+ * bindings/js/ScriptCachedFrameData.h: Copied from bindings/js/ScriptCachedPageData.h.
+ * bindings/js/ScriptCachedPageData.cpp: Removed.
+ * bindings/js/ScriptCachedPageData.h: Removed.
+
+ * history/CachedPage.cpp:
+ (WebCore::CachedPage::CachedPage):
+ (WebCore::CachedPage::restore):
+ * history/CachedPage.h:
+
+2009-01-23 Steve Falkenburg <sfalken@apple.com>
+
+ Fix build.
+
+ * rendering/RenderThemeSafari.cpp:
+ (WebCore::RenderThemeSafari::baselinePosition):
+
+2009-01-23 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23506
+ Upstream Chromium's image decoders for use with PLATFORM(SKIA)
+
+ * platform/image-decoders/skia/BMPImageDecoder.cpp: Added.
+ * platform/image-decoders/skia/BMPImageDecoder.h: Added.
+ * platform/image-decoders/skia/BMPImageReader.cpp: Added.
+ * platform/image-decoders/skia/BMPImageReader.h: Added.
+ * platform/image-decoders/skia/GIFImageDecoder.cpp:
+ (WebCore::GIFImageDecoderPrivate::GIFImageDecoderPrivate):
+ (WebCore::GIFImageDecoderPrivate::decode):
+ (WebCore::GIFImageDecoderPrivate::getColorMap):
+ (WebCore::GIFImageDecoder::GIFImageDecoder):
+ (WebCore::GIFImageDecoder::isSizeAvailable):
+ (WebCore::GIFImageDecoder::frameCount):
+ (WebCore::GIFImageDecoder::frameBufferAtIndex):
+ (WebCore::GIFImageDecoder::clearFrameBufferCache):
+ (WebCore::GIFImageDecoder::decode):
+ (WebCore::GIFImageDecoder::sizeNowAvailable):
+ (WebCore::GIFImageDecoder::initFrameBuffer):
+ (WebCore::GIFImageDecoder::prepEmptyFrameBuffer):
+ (WebCore::GIFImageDecoder::haveDecodedRow):
+ (WebCore::GIFImageDecoder::frameComplete):
+ * platform/image-decoders/skia/GIFImageDecoder.h:
+ (WebCore::GIFImageDecoder::filenameExtension):
+ (WebCore::GIFImageDecoder::frameDurationAtIndex):
+ (WebCore::GIFImageDecoder::):
+ * platform/image-decoders/skia/GIFImageReader.cpp:
+ (GIFImageReader::do_lzw):
+ (GIFImageReader::read):
+ * platform/image-decoders/skia/GIFImageReader.h:
+ * platform/image-decoders/skia/ICOImageDecoder.cpp: Added.
+ * platform/image-decoders/skia/ICOImageDecoder.h: Added.
+ * platform/image-decoders/skia/ImageDecoder.h:
+ (WebCore::RefCountedNativeImageSkia::create):
+ (WebCore::RefCountedNativeImageSkia::bitmap):
+ (WebCore::RefCountedNativeImageSkia::RefCountedNativeImageSkia):
+ (WebCore::RGBA32Buffer::):
+ (WebCore::RGBA32Buffer::RGBA32Buffer):
+ (WebCore::RGBA32Buffer::~RGBA32Buffer):
+ (WebCore::RGBA32Buffer::operator=):
+ (WebCore::RGBA32Buffer::clear):
+ (WebCore::RGBA32Buffer::copyBitmapData):
+ (WebCore::RGBA32Buffer::bitmap):
+ (WebCore::RGBA32Buffer::setSize):
+ (WebCore::RGBA32Buffer::width):
+ (WebCore::RGBA32Buffer::height):
+ (WebCore::RGBA32Buffer::rect):
+ (WebCore::RGBA32Buffer::status):
+ (WebCore::RGBA32Buffer::duration):
+ (WebCore::RGBA32Buffer::disposalMethod):
+ (WebCore::RGBA32Buffer::hasAlpha):
+ (WebCore::RGBA32Buffer::setRect):
+ (WebCore::RGBA32Buffer::setStatus):
+ (WebCore::RGBA32Buffer::setDuration):
+ (WebCore::RGBA32Buffer::setDisposalMethod):
+ (WebCore::RGBA32Buffer::setHasAlpha):
+ (WebCore::RGBA32Buffer::setRGBA):
+ (WebCore::ImageDecoder::ImageDecoder):
+ (WebCore::ImageDecoder::~ImageDecoder):
+ (WebCore::ImageDecoder::setData):
+ (WebCore::ImageDecoder::isSizeAvailable):
+ (WebCore::ImageDecoder::size):
+ (WebCore::ImageDecoder::frameCount):
+ (WebCore::ImageDecoder::repetitionCount):
+ (WebCore::ImageDecoder::supportsAlpha):
+ (WebCore::ImageDecoder::failed):
+ (WebCore::ImageDecoder::setFailed):
+ (WebCore::ImageDecoder::clearFrameBufferCache):
+ (WebCore::ImageDecoder::setSize):
+ (WebCore::ImageDecoder::isOverSize):
+ * platform/image-decoders/skia/JPEGImageDecoder.cpp:
+ (WebCore::JPEGImageReader::JPEGImageReader):
+ (WebCore::JPEGImageReader::decode):
+ (WebCore::JPEGImageDecoder::isSizeAvailable):
+ (WebCore::JPEGImageDecoder::outputScanlines):
+ * platform/image-decoders/skia/JPEGImageDecoder.h:
+ (WebCore::JPEGImageDecoder::filenameExtension):
+ (WebCore::JPEGImageDecoder::supportsAlpha):
+ (WebCore::JPEGImageDecoder::reader):
+ * platform/image-decoders/skia/PNGImageDecoder.cpp:
+ (WebCore::PNGImageReader::close):
+ (WebCore::PNGImageDecoder::PNGImageDecoder):
+ (WebCore::PNGImageDecoder::isSizeAvailable):
+ (WebCore::PNGImageDecoder::frameBufferAtIndex):
+ (WebCore::PNGImageDecoder::decode):
+ (WebCore::PNGImageDecoder::decodingFailed):
+ (WebCore::PNGImageDecoder::headerAvailable):
+ (WebCore::rowAvailable):
+ (WebCore::PNGImageDecoder::rowAvailable):
+ (WebCore::PNGImageDecoder::pngComplete):
+ * platform/image-decoders/skia/PNGImageDecoder.h:
+ (WebCore::PNGImageDecoder::filenameExtension):
+ (WebCore::PNGImageDecoder::reader):
+ * platform/image-decoders/skia/XBMImageDecoder.cpp: Added.
+ * platform/image-decoders/skia/XBMImageDecoder.h: Added.
+
+2009-01-23 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23506
+ Copy existing ImageDecoder.h in preparation for landing Skia changes on top.
+
+ * platform/image-decoders/skia/ImageDecoder.h: Copied from platform/image-decoders/ImageDecoder.h.
+
+2009-01-23 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23506
+ Copy existing image-decoders in preparation for landing Skia changes on top.
+
+ * platform/image-decoders/skia: Added.
+ * platform/image-decoders/skia/GIFImageDecoder.cpp: Copied from platform/image-decoders/gif/GIFImageDecoder.cpp.
+ * platform/image-decoders/skia/GIFImageDecoder.h: Copied from platform/image-decoders/gif/GIFImageDecoder.h.
+ * platform/image-decoders/skia/GIFImageReader.cpp: Copied from platform/image-decoders/gif/GIFImageReader.cpp.
+ * platform/image-decoders/skia/GIFImageReader.h: Copied from platform/image-decoders/gif/GIFImageReader.h.
+ * platform/image-decoders/skia/JPEGImageDecoder.cpp: Copied from platform/image-decoders/jpeg/JPEGImageDecoder.cpp.
+ * platform/image-decoders/skia/JPEGImageDecoder.h: Copied from platform/image-decoders/jpeg/JPEGImageDecoder.h.
+ * platform/image-decoders/skia/PNGImageDecoder.cpp: Copied from platform/image-decoders/png/PNGImageDecoder.cpp.
+ * platform/image-decoders/skia/PNGImageDecoder.h: Copied from platform/image-decoders/png/PNGImageDecoder.h.
+
+2009-01-23 Holger Freyther <zecke@selfish.org>
+
+ Unreviewed build fix.
+
+ Based on https://bugs.webkit.org/show_bug.cgi?id=23498
+ from craig.schlenter@gmail.com
+
+ * platform/gtk/RenderThemeGtk.cpp:
+ (WebCore::RenderThemeGtk::baselinePosition):
+
+2009-01-23 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 22720: Make XMLHttpRequest work in Workers
+ <https://bugs.webkit.org/show_bug.cgi?id=22720>
+
+ Add copy/adopt for ResourceResponse(Base)/ResourceRequest(Base) to allow the
+ data to be passed across threads.
+
+ No observable change in behavior, so no test.
+
+ * platform/network/FormData.cpp:
+ (WebCore::FormData::deepCopy):
+ * platform/network/FormData.h:
+ * platform/network/HTTPHeaderMap.cpp:
+ (WebCore::HTTPHeaderMap::copyData):
+ (WebCore::HTTPHeaderMap::adopt):
+ * platform/network/HTTPHeaderMap.h:
+ * platform/network/ResourceRequestBase.cpp:
+ (WebCore::ResourceRequestBase::adopt):
+ (WebCore::ResourceRequestBase::copyData):
+ * platform/network/ResourceRequestBase.h:
+ * platform/network/ResourceResponseBase.cpp:
+ (WebCore::ResourceResponseBase::adopt):
+ (WebCore::ResourceResponseBase::copyData):
+ * platform/network/ResourceResponseBase.h:
+
+2009-01-23 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23374
+ Add WorkerRunLoop to encapsulate message queue and timer heap.
+ This is first half (timer heap is added as separate patch).
+
+ * GNUmakefile.am: Added WorkerRunLoop.cpp to the build.
+ * WebCore.vcproj/WebCore.vcproj: Same as above.
+ * WebCore.xcodeproj/project.pbxproj: Same as above
+ * dom/WorkerContext.cpp:
+ (WebCore::WorkerContext::postTask):
+ * dom/WorkerContext.h:
+ * dom/WorkerMessagingProxy.cpp:
+ (WebCore::WorkerMessagingProxy::postMessageToWorkerContext):
+ (WebCore::WorkerMessagingProxy::workerThreadCreated):
+ * dom/WorkerRunLoop.cpp: Added.
+ (WebCore::WorkerRunLoop::run): Runs the loop until terminate() is called.
+ (WebCore::WorkerRunLoop::terminate): Causes the loop to exit.
+ (WebCore::WorkerRunLoop::postTask): Adds a task to the internal queue.
+ * dom/WorkerRunLoop.h: Added.
+ (WebCore::WorkerRunLoop::WorkerRunLoop):
+ * dom/WorkerThread.cpp:
+ (WebCore::WorkerThread::workerThread):
+ (WebCore::WorkerThread::stop):
+ * dom/WorkerThread.h:
+ (WebCore::WorkerThread::runLoop):
+
+2009-01-23 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Holger Hans Peter Freyther.
+
+ Redo previous patch http://trac.webkit.org/changeset/34260 which fixes a
+ huge memory leak by ensuring that the timer is fired one last time on
+ application tear down thus triggering the GCController thereby freeing
+ JavaScript objects as well as triggering other timer based tear down methods.
+
+ * platform/qt/SharedTimerQt.cpp:
+ (WebCore::SharedTimerQt::~SharedTimerQt):
+
+2009-01-23 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23459
+ Workers are not properly terminated if execution hasn't begun yet
+
+ Doesn't affect observable behavior, so test case is not possible.
+
+ * dom/WorkerThread.cpp: (WebCore::WorkerThread::workerThread): Call forbidExecution() if
+ it couldn't be called earlier.
+
+2009-01-23 Ariya Hidayat <ariya.hidayat@trolltech.com>
+
+ [Qt] Fix the build after RenderBox refactoring in r40153.
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::RenderThemeQt::baselinePosition):
+
+2009-01-23 Ariya Hidayat <ariya.hidayat@trolltech.com>
+
+ Rubber-stamped by Alexey Proskuryakov.
+
+ Fix the build after RenderBox refactoring in r40153.
+
+ * plugins/PluginView.cpp:
+ (WebCore::PluginView::invalidateWindowlessPluginRect):
+
+2009-01-23 Ariya Hidayat <ariya.hidayat@trolltech.com>
+
+ Reviewed by Simon Hausmann.
+
[Qt] Simplify the assertion.
* platform/graphics/qt/GraphicsContextQt.cpp:
(WebCore::GraphicsContext::getWindowsContext):
(WebCore::GraphicsContext::releaseWindowsContext):
-2009-01-19 Ariya Hidayat <ariya.hidayat@trolltech.com>
+2009-01-22 David Hyatt <hyatt@apple.com>
- [Qt] Build fix after r39971.
+ Move the border and padding methods from RenderObject to RenderBox.
- * platform/qt/LoggingQt.cpp:
- (WebCore::InitializeLoggingChannelsIfNecessary):
+ Reviewed by Oliver Hunt
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * editing/DeleteButtonController.cpp:
+ (WebCore::DeleteButtonController::createDeletionUI):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::hitTestResultAtPoint):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::placeBoxesVertically):
+ * rendering/InlineFlowBox.h:
+ (WebCore::InlineFlowBox::borderLeft):
+ (WebCore::InlineFlowBox::borderRight):
+ (WebCore::InlineFlowBox::paddingLeft):
+ (WebCore::InlineFlowBox::paddingRight):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::clearFloats):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::paddingTop):
+ (WebCore::RenderBox::paddingBottom):
+ (WebCore::RenderBox::paddingLeft):
+ (WebCore::RenderBox::paddingRight):
+ (WebCore::RenderBox::calcHeight):
+ (WebCore::RenderBox::containingBlockWidthForPositioned):
+ (WebCore::RenderBox::containingBlockHeightForPositioned):
+ (WebCore::RenderBox::calcAbsoluteHorizontal):
+ (WebCore::RenderBox::calcAbsoluteHorizontalValues):
+ (WebCore::RenderBox::calcAbsoluteVertical):
+ (WebCore::RenderBox::calcAbsoluteVerticalValues):
+ (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
+ (WebCore::RenderBox::calcAbsoluteVerticalReplaced):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::borderTop):
+ (WebCore::RenderBox::borderBottom):
+ (WebCore::RenderBox::borderLeft):
+ (WebCore::RenderBox::borderRight):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::repaintAfterLayoutIfNeeded):
+ * rendering/RenderObject.h:
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::textBlockWidth):
+ (WebCore::RenderTextControl::calcHeight):
+ (WebCore::RenderTextControl::calcPrefWidths):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::preferredContentWidth):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::repaintViewRectangle):
+
+2009-01-22 David Hyatt <hyatt@apple.com>
+
+ Devirtualize the marginTop/Right/Left/Bottom functions and move them to RenderBox (along with some of the
+ other margin functions that have to come along for the ride).
+
+ Reviewed by Oliver Hunt
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ * editing/TextIterator.cpp:
+ (WebCore::shouldEmitExtraNewlineForNode):
+ * rendering/InlineBox.cpp:
+ * rendering/InlineBox.h:
+ (WebCore::InlineBox::renderBox):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::marginLeft):
+ (WebCore::InlineFlowBox::marginRight):
+ (WebCore::InlineFlowBox::placeBoxesHorizontally):
+ (WebCore::InlineFlowBox::computeLogicalBoxHeights):
+ (WebCore::InlineFlowBox::placeBoxesVertically):
+ (WebCore::InlineFlowBox::shrinkBoxesWithNoTextChildren):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::isSelfCollapsingBlock):
+ (WebCore::RenderBlock::adjustPositionedBlock):
+ (WebCore::RenderBlock::handleCompactChild):
+ (WebCore::RenderBlock::estimateVerticalPosition):
+ (WebCore::getBorderPaddingMargin):
+ (WebCore::RenderBlock::calcInlinePrefWidths):
+ * rendering/RenderBlock.h:
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::calcHeight):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::hasHorizontalBordersPaddingOrMargin):
+ (WebCore::RenderBox::hasHorizontalBordersOrPadding):
+ (WebCore::RenderBox::marginTop):
+ (WebCore::RenderBox::marginBottom):
+ (WebCore::RenderBox::marginLeft):
+ (WebCore::RenderBox::marginRight):
+ (WebCore::RenderBox::isSelfCollapsingBlock):
+ (WebCore::RenderBox::collapsedMarginTop):
+ (WebCore::RenderBox::collapsedMarginBottom):
+ (WebCore::RenderBox::isTopMarginQuirk):
+ (WebCore::RenderBox::isBottomMarginQuirk):
+ (WebCore::RenderBox::maxTopMargin):
+ (WebCore::RenderBox::maxBottomMargin):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::getAbsoluteRepaintRectWithOutline):
+ * rendering/RenderObject.h:
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::lineHeight):
+ (WebCore::RenderSVGContainer::baselinePosition):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::calcHeight):
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::baselinePosition):
+ * rendering/bidi.cpp:
+ (WebCore::getBorderPaddingMargin):
+ (WebCore::inlineWidth):
+ (WebCore::RenderBlock::computeHorizontalPositionsForLine):
+ (WebCore::inlineFlowRequiresLineBox):
+ (WebCore::requiresLineBox):
+ (WebCore::RenderBlock::findNextLineBreak):
+
+2009-01-22 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Anders Carlsson.
+
+ Disable GCC_WARN_ABOUT_MISSING_PROTOTYPES temporarily.
+
+ Current versions of Xcode only respect it for C and Objective-C files,
+ and our code doesn't currently compile if it is applied to C++ and
+ Objective-C++ files.
+
+ * Configurations/Base.xcconfig:
+
+2009-01-22 David Hyatt <hyatt@apple.com>
+
+ Move the m_widthChanged bit on RenderTableCell into RenderFlow's set of bits. Let intrinsicPaddingTop and
+ intrinsicPaddingBottom just be normal non-bitfield values.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderFlow.h:
+ (WebCore::RenderFlow::RenderFlow):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::RenderTableCell):
+ (WebCore::RenderTableCell::updateWidth):
+ (WebCore::RenderTableCell::layout):
+ * rendering/RenderTableCell.h:
+
+2009-01-22 David Hyatt <hyatt@apple.com>
+
+ Properly encapsulate m_frameRect.y() behind the RenderBox::y() method now that they are the same thing.
+ Make m_frameRect private.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::paint):
+ (WebCore::RenderBlock::clearFloats):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::offsetTop):
+ (WebCore::RenderBox::nodeAtPoint):
+ (WebCore::RenderBox::paint):
+ (WebCore::RenderBox::paintCustomHighlight):
+ (WebCore::RenderBox::containingBlockWidth):
+ (WebCore::RenderBox::localToAbsolute):
+ (WebCore::RenderBox::offsetFromContainer):
+ (WebCore::RenderBox::computeAbsoluteRepaintRect):
+ (WebCore::RenderBox::repaintDuringLayoutIfMoved):
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::layout):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutBlock):
+ * rendering/RenderFrameSet.cpp:
+ (WebCore::RenderFrameSet::paint):
+ * rendering/RenderImage.cpp:
+ (WebCore::RenderImage::paintReplaced):
+ (WebCore::RenderImage::nodeAtPoint):
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::paint):
+ (WebCore::RenderListMarker::getRelativeMarkerRect):
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::paint):
+ (WebCore::RenderReplaced::shouldPaint):
+ * rendering/RenderReplica.cpp:
+ (WebCore::RenderReplica::paint):
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::applyContentTransforms):
+ (WebCore::RenderSVGRoot::paint):
+ (WebCore::RenderSVGRoot::absoluteTransform):
+ (WebCore::RenderSVGRoot::nodeAtPoint):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::calcWidth):
+ (WebCore::RenderTable::layout):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::paint):
+ (WebCore::RenderTableCell::paintBackgroundsBehindCell):
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::setCellWidths):
+ (WebCore::RenderTableSection::calcRowHeight):
+ (WebCore::RenderTableSection::layoutRows):
+ (WebCore::RenderTableSection::paint):
+ (WebCore::RenderTableSection::nodeAtPoint):
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::paint):
+
+2009-01-22 David Hyatt <hyatt@apple.com>
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23487.
+
+ This patch completely reworks vertical alignment of table cells. The current system uses methods called borderTopExtra() and borderBottomExtra() to
+ add extra space above and below the content of a cell. This system was not confined to the table code and spilled out into all the other RenderObjects.
+ The y-position of the table cell box was set to the outer edge of the cell, but the y() method of RenderBox lied and added in borderTopExtra(). height()
+ also excluded the extra space, so did not accurately reflect the true size of the cell.
+
+ With the new system, the table cell box is completely accurate. The extra space becomes part of the padding of the cell. Padding has been reworked so that
+ additional intrinsic padding can be added on to the specified padding from style. Only the table code has to deal with the extra cell padding.
+
+ localToAbsoluteForContent has now been removed, since there no longer has to be a special hacked content box.
+
+ A number of table layout tests progress with this change, since the new layout system actually fixes existing bugs in baseline alignment of cells.
+
+ Reviewed by Oliver Hunt
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+ Make CSSComputedStyleDeclaration ask for padding values that exclude the built-in intrinsic padding. This ensures that getComputedStyle continues
+ to give the right answer.
+
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::getLowerRightCorner):
+ * editing/visible_units.cpp:
+ (WebCore::previousLinePosition):
+ (WebCore::nextLinePosition):
+ * rendering/LayoutState.cpp:
+ (WebCore::LayoutState::LayoutState):
+ Remove borderTopExtra()/borderBottomExtra() hacks and localToAbsoluteForContent calls.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::overflowRect):
+ Remove borderTopExtra()/borderBottomExtra() hacks and localToAbsoluteForContent calls.
+
+ (WebCore::RenderBlock::layoutBlock):
+ (WebCore::RenderBlock::expandsToEncloseOverhangingFloats):
+ The expandsToEncloseOverhangingFloats logic has been reworked. Table cells and fieldsets did not properly handle floats that spilled into the bottom padding. The
+ resulting box needed to not only expand to encompass the float, but also needed to place the full bottom padding after the float. The switch to make the extra table cell
+ space into padding exposed this issue. No extra layout test is required, since an existing table layout test exposes this issue and progresses to match Firefox with
+ this change.
+
+ (WebCore::RenderBlock::selectionGapRects):
+ (WebCore::RenderBlock::paintSelection):
+ (WebCore::RenderBlock::fillSelectionGaps):
+ (WebCore::RenderBlock::nodeAtPoint):
+ (WebCore::RenderBlock::positionForCoordinates):
+ (WebCore::RenderBlock::offsetForContents):
+ Remove borderTopExtra()/borderBottomExtra() hacks and localToAbsoluteForContent calls.
+
+ * rendering/RenderBlock.h:
+ Add the new simplified method for expanding to encompass overhanging floats. The method has been devirtualized and made to include all of the cases (and not just a subset).
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::absoluteRects):
+ (WebCore::RenderBox::absoluteQuads):
+ (WebCore::RenderBox::absoluteContentBox):
+ (WebCore::RenderBox::paintBoxDecorations):
+ (WebCore::RenderBox::paintMask):
+ (WebCore::RenderBox::getOverflowClipRect):
+ (WebCore::RenderBox::localToAbsolute):
+ (WebCore::RenderBox::absoluteToLocal):
+ (WebCore::RenderBox::localToAbsoluteQuad):
+ Remove borderTopExtra()/borderBottomExtra() hacks and localToAbsoluteForContent calls.
+
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::y):
+ (WebCore::RenderBox::location):
+ (WebCore::RenderBox::borderBoxRect):
+ (WebCore::RenderBox::offsetHeight):
+ Remove borderTopExtra()/borderBottomExtra() hacks and localToAbsoluteForContent calls.
+
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::addLineBoxRects):
+ * rendering/RenderFieldset.cpp:
+ (WebCore::RenderFieldset::paintBoxDecorations):
+ (WebCore::RenderFieldset::paintMask):
+ * rendering/RenderFieldset.h:
+ (WebCore::RenderFieldset::avoidsFloats):
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::localCaretRect):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPosition):
+ (WebCore::RenderLayer::paintLayer):
+ (WebCore::RenderLayer::hitTestLayer):
+ (WebCore::RenderLayer::boundingBox):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::isPointInOverflowControl):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::localToAbsolute):
+ (WebCore::RenderObject::absoluteToLocal):
+ (WebCore::RenderObject::localToAbsoluteQuad):
+ (WebCore::RenderObject::offsetFromContainer):
+ (WebCore::RenderObject::paddingTop):
+ (WebCore::RenderObject::paddingBottom):
+ (WebCore::RenderObject::paddingLeft):
+ (WebCore::RenderObject::paddingRight):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::hasOverhangingFloats):
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::selectionRect):
+ (WebCore::RenderReplaced::localSelectionRect):
+ Remove borderTopExtra()/borderBottomExtra() hacks and localToAbsoluteForContent calls. Also modifed paddingLeft/Top/Right/Bottom to take an argument indicating
+ whether or not the intrinsic padding of an object should be included (by default it is). getComputedStyle needs to exclude it, which is why this argument is
+ necessary.
+
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::RenderTableCell):
+ (WebCore::RenderTableCell::paddingTop):
+ (WebCore::RenderTableCell::paddingBottom):
+ The new paddingTop() and paddingBottom() methods on table cells include the extra intrinsic padding.
+
+ (WebCore::RenderTableCell::setOverrideSize):
+ When a table's override size gets altered, the intrinsic padding needs to be cleared.
+
+ (WebCore::RenderTableCell::absoluteClippedOverflowRect):
+ (WebCore::RenderTableCell::computeAbsoluteRepaintRect):
+ (WebCore::RenderTableCell::baselinePosition):
+ (WebCore::RenderTableCell::paint):
+ (WebCore::RenderTableCell::paintBackgroundsBehindCell):
+ (WebCore::RenderTableCell::paintBoxDecorations):
+ (WebCore::RenderTableCell::paintMask):
+ Remove borderTopExtra()/borderBottomExtra() hacks and localToAbsoluteForContent calls.
+
+ * rendering/RenderTableCell.h:
+ (WebCore::RenderTableCell::setIntrinsicPaddingTop):
+ (WebCore::RenderTableCell::setIntrinsicPaddingBottom):
+ (WebCore::RenderTableCell::setIntrinsicPadding):
+ (WebCore::RenderTableCell::clearIntrinsicPadding):
+ (WebCore::RenderTableCell::intrinsicPaddingTop):
+ (WebCore::RenderTableCell::intrinsicPaddingBottom):
+ Add new helper methods for getting/setting a cell's intrinsic padding.
+
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::calcRowHeight):
+ calcRowHeight has been modified to exclude the intrinsic padding when calculating the base height of rows prior to flexing. Because a cell now includes that
+ extra space, it has to be subtracted out in this method.
+
+ (WebCore::RenderTableSection::layoutRows):
+ Modify the code that sets up the intrinsic padding so that it does a relayout if the intrinsic padding changes. There was also an error where the baseline
+ position mismatched leading to negative intrinsic padding being added in (this error exists in ToT). The code now properly ignores cells that don't establish
+ a baseline. A number of tests progress with this change.
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::addLineBoxRects):
+ Remove borderTopExtra()/borderBottomExtra() hacks and localToAbsoluteForContent calls.
+
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ (WebCore::writeTextRun):
+ Modify the render tree dumping code to continue to produce the same results as before. This is really a hack, since we're now capable of indicating the correct
+ position for the descendants of cells with intrinsic padding (and also indicating what the correct cell box is). A future patch can remove these hacks so that the
+ layout test results can all be regenerated.
+
+2009-01-22 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Remove <strong>/<em> tags when toggling bold/italic since IE inserts them instead of <b>/<i>
+ https://bugs.webkit.org/show_bug.cgi?id=23486
+
+ Test: editing/execCommand/toggle-styles.html
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::isHTMLStyleNode):
+
+2009-01-22 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Justin Garcia.
+
+ Remove <span> turds left by editing commands
+ https://bugs.webkit.org/show_bug.cgi?id=23466
+
+ Tests:
+ * editing/execCommand/empty-span-removal.html
+ * editing/execCommand/toggle-styles.html
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::styleSpanClassString):
+ (WebCore::isStyleSpan):
+ (WebCore::isUnstyledStyleSpan):
+ (WebCore::isSpanWithoutAttributesOrUnstyleStyleSpan):
+ (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
+ (WebCore::ApplyStyleCommand::removeEmbeddingUpToEnclosingBlock):
+ (WebCore::ApplyStyleCommand::removeHTMLBidiEmbeddingStyle):
+ (WebCore::ApplyStyleCommand::removeCSSStyle):
+
+2009-01-22 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Eric Seidel.
+
+ Rename some of the casting functions in dom/*Element.cpp:
+ formControlElementForElement -> toFormControlElement
+ inputElementForElement -> toInputElement
+ optionElementForElement -> toOptionElement
+ optionGroupElementForElement -> toOptionGroupElement
+
+ Suggested by Alexey, while refactoring the Element*->ScriptElement* code.
+ The Element*->ScriptElement* helper function is already named 'toScriptElement'.
+
+ * dom/FormControlElement.cpp:
+ (WebCore::toFormControlElement):
+ * dom/FormControlElement.h:
+ * dom/InputElement.cpp:
+ (WebCore::InputElement::setValueFromRenderer):
+ (WebCore::toInputElement):
+ * dom/InputElement.h:
+ * dom/OptionElement.cpp:
+ (WebCore::OptionElement::collectOptionTextRespectingGroupLabel):
+ (WebCore::toOptionElement):
+ * dom/OptionElement.h:
+ * dom/OptionGroupElement.cpp:
+ (WebCore::toOptionGroupElement):
+ * dom/OptionGroupElement.h:
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::updateFromElement):
+ (WebCore::RenderListBox::paintItemForeground):
+ (WebCore::RenderListBox::paintItemBackground):
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::updateOptionsWidth):
+ (WebCore::RenderMenuList::setTextFromOption):
+ (WebCore::RenderMenuList::itemText):
+ (WebCore::RenderMenuList::itemIsSelected):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::formControlElement):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::inputElement):
+
+2009-01-22 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Rubber-stamped by George Staikos.
+
+ Forgot to include in my last commit: Activate code depending on WMLOptionElement/WMLOptGroupElement.
+
+ * dom/OptionElement.cpp:
+ (WebCore::optionElementForElement):
+ * dom/OptionGroupElement.cpp:
+ (WebCore::optionGroupElementForElement):
+
+2009-01-22 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=23454
+
+ Add WML <option>/<optgroup> element support.
+ Currently the implementation is stubbed, all relevant parts can be enabled
+ once WMLSelectElement/SelectElement has been created.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * wml/WMLOptGroupElement.cpp: Added.
+ (WebCore::WMLOptGroupElement::WMLOptGroupElement):
+ (WebCore::WMLOptGroupElement::~WMLOptGroupElement):
+ (WebCore::WMLOptGroupElement::insertBefore):
+ (WebCore::WMLOptGroupElement::replaceChild):
+ (WebCore::WMLOptGroupElement::removeChild):
+ (WebCore::WMLOptGroupElement::appendChild):
+ (WebCore::WMLOptGroupElement::removeChildren):
+ (WebCore::ownerSelectElement):
+ (WebCore::WMLOptGroupElement::accessKeyAction):
+ (WebCore::WMLOptGroupElement::childrenChanged):
+ (WebCore::WMLOptGroupElement::parseMappedAttribute):
+ (WebCore::WMLOptGroupElement::attach):
+ (WebCore::WMLOptGroupElement::detach):
+ (WebCore::WMLOptGroupElement::setRenderStyle):
+ (WebCore::WMLOptGroupElement::nonRendererRenderStyle):
+ (WebCore::WMLOptGroupElement::groupLabelText):
+ (WebCore::WMLOptGroupElement::recalcSelectOptions):
+ * wml/WMLOptGroupElement.h: Added.
+ (WebCore::WMLOptGroupElement::title):
+ (WebCore::WMLOptGroupElement::valueMatchesRenderer):
+ (WebCore::WMLOptGroupElement::setValueMatchesRenderer):
+ (WebCore::WMLOptGroupElement::rendererIsNeeded):
+ * wml/WMLOptionElement.cpp: Added.
+ (WebCore::WMLOptionElement::WMLOptionElement):
+ (WebCore::WMLOptionElement::~WMLOptionElement):
+ (WebCore::ownerSelectElement):
+ (WebCore::WMLOptionElement::accessKeyAction):
+ (WebCore::WMLOptionElement::childrenChanged):
+ (WebCore::WMLOptionElement::parseMappedAttribute):
+ (WebCore::WMLOptionElement::attach):
+ (WebCore::WMLOptionElement::detach):
+ (WebCore::WMLOptionElement::setRenderStyle):
+ (WebCore::WMLOptionElement::insertedIntoDocument):
+ (WebCore::WMLOptionElement::selected):
+ (WebCore::WMLOptionElement::setSelectedState):
+ (WebCore::WMLOptionElement::value):
+ (WebCore::WMLOptionElement::textIndentedToRespectGroupLabel):
+ (WebCore::WMLOptionElement::nonRendererRenderStyle):
+ (WebCore::WMLOptionElement::handleIntrinsicEventIfNeeded):
+ * wml/WMLOptionElement.h: Added.
+ (WebCore::WMLOptionElement::valueMatchesRenderer):
+ (WebCore::WMLOptionElement::setValueMatchesRenderer):
+ (WebCore::WMLOptionElement::rendererIsNeeded):
+ * wml/WMLTagNames.in:
+
+2009-01-22 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20806
+ Send referrer for history navigations.
+
+ Test: http/tests/navigation/back-send-referrer.html
+
+ Consolidates HistoryItem::rssFeedReferrer and HistoryItem::formReferrer into a single HistoryItem::referrer property.
+
+ * history/HistoryItem.cpp:
+ (WebCore::HistoryItem::HistoryItem):
+ (WebCore::HistoryItem::referrer):
+ (WebCore::HistoryItem::setReferrer):
+ (WebCore::HistoryItem::formReferrer):
+ (WebCore::HistoryItem::rssFeedReferrer):
+ (WebCore::HistoryItem::setRSSFeedReferrer):
+ (WebCore::HistoryItem::setFormInfoFromRequest):
+ * history/HistoryItem.h:
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadItem):
+
+2009-01-22 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Eric Seidel.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=23465
+
+ Further enhancments to share code between HTMLOptionElement and the upcoming WMLOptionElement.
+
+ Rename optionText() to textIndentedToRespectGroupLabel() in (HTML)OptionElement, as it fits better.
+ optionText() returns the options text prefixed with some spaces, in case it got an optgroup parent.
+
+ Add two more pure-virtual functions to OptionElement: setSelectedState(bool) & value().
+ These aren't used outside of html/ at the moment (unlike the other pure-virtual functions
+ used by RenderMenuList/RenderListBox) - but they will be used by SelectElement, once it exists.
+
+ * dom/OptionElement.cpp:
+ (WebCore::OptionElement::setSelectedState):
+ (WebCore::OptionElement::collectOptionText):
+ (WebCore::OptionElement::collectOptionTextRespectingGroupLabel):
+ (WebCore::OptionElement::collectOptionValue):
+ (WebCore::OptionElementData::OptionElementData):
+ (WebCore::OptionElementData::~OptionElementData):
+ * dom/OptionElement.h:
+ (WebCore::OptionElementData::element):
+ (WebCore::OptionElementData::value):
+ (WebCore::OptionElementData::setValue):
+ (WebCore::OptionElementData::label):
+ (WebCore::OptionElementData::setLabel):
+ (WebCore::OptionElementData::selected):
+ (WebCore::OptionElementData::setSelected):
+ * html/HTMLOptionElement.cpp:
+ (WebCore::HTMLOptionElement::HTMLOptionElement):
+ (WebCore::HTMLOptionElement::text):
+ (WebCore::HTMLOptionElement::parseMappedAttribute):
+ (WebCore::HTMLOptionElement::value):
+ (WebCore::HTMLOptionElement::selected):
+ (WebCore::HTMLOptionElement::setSelected):
+ (WebCore::HTMLOptionElement::setSelectedState):
+ (WebCore::HTMLOptionElement::label):
+ (WebCore::HTMLOptionElement::textIndentedToRespectGroupLabel):
+ * html/HTMLOptionElement.h:
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::typeAheadFind):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::updateFromElement):
+ (WebCore::RenderListBox::paintItemForeground):
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::updateOptionsWidth):
+ (WebCore::RenderMenuList::setTextFromOption):
+ (WebCore::RenderMenuList::itemText):
+
+2009-01-22 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Justin Garcia.
+
+ Bug 23464: Infinite recursion at SelectionController::setSelection
+ https://bugs.webkit.org/show_bug.cgi?id=23464
+
+ Check for conditions leading to infinite recursion.
+
+ * editing/SelectionController.cpp:
+ (WebCore::SelectionController::setSelection):
+
+2009-01-22 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Not reviewed. Fix WML build problem in RenderBox.cpp, WMLNames is undefined.
+
+ * rendering/RenderBox.cpp:
+
+2009-01-22 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix the Qt build after RenderBox changes.
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::RenderThemeQt::baselinePosition):
+
+2009-01-22 David Hyatt <hyatt@apple.com>
+
+ Fix regressions in list box selection on Mac. The wrong color was being used for the list box
+ background, and list box colors actually weren't even being properly fetched because of a bug in
+ the RenderTheme base class. Existing pixel tests cover the bug fix.
+
+ Reviewed by Jon Honeycutt
+
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::activeListBoxSelectionBackgroundColor):
+ (WebCore::RenderTheme::inactiveListBoxSelectionBackgroundColor):
+ (WebCore::RenderTheme::activeListBoxSelectionForegroundColor):
+ (WebCore::RenderTheme::inactiveListBoxSelectionForegroundColor):
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::platformInactiveListBoxSelectionBackgroundColor):
+
+2009-01-22 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 22720: Make XMLHttpRequest work in Workers
+ <https://bugs.webkit.org/show_bug.cgi?id=22720>
+
+ Add copy/adopt for HTTPHeaderMap to allow the data to be passed across threads.
+
+ No observable change in behavior, so no test.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * platform/network/HTTPHeaderMap.cpp: Added.
+ (WebCore::HTTPHeaderMap::copyData):
+ (WebCore::HTTPHeaderMap::adopt):
+ * platform/network/HTTPHeaderMap.h:
+
+2009-01-21 David Hyatt <hyatt@apple.com>
+
+ Back out a portion of my patch that I did not mean to land. Revert paintOutline back to the way it
+ was before my landing. Fixes failing SVG focus ring tests.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::paintOutline):
+ * rendering/RenderObject.h:
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::paint):
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::paint):
+
+2009-01-21 David Hyatt <hyatt@apple.com>
+
+ Fix Node's renderBox() method on Windows.
+
+ * dom/Node.cpp:
+ (WebCore::Node::renderBox):
+
+2009-01-21 David Hyatt <hyatt@apple.com>
+
+ Fix RenderThemeSafari bustage on Win32.
+
+ * rendering/RenderThemeSafari.cpp:
+ (WebCore::RenderThemeSafari::baselinePosition):
+
+2009-01-21 David Hyatt <hyatt@apple.com>
+
+ Fix bustage in RenderThemeWin. It's actually terrible that RenderThemeWin is using absoluteContentBox,
+ but that's a problem for another day.
+
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::RenderThemeWin::paintSearchFieldCancelButton):
+ (WebCore::RenderThemeWin::paintSearchFieldResultsDecoration):
+ (WebCore::RenderThemeWin::paintSearchFieldResultsButton):
+
+2009-01-21 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Bug 23470: Crash when page load occurs while processing scroll event with MallocScribble enabled
+ <https://bugs.webkit.org/show_bug.cgi?id=23470>
+
+ Add a RefPtr protector to handleWheelEvent to guard against destruction
+ while processing the scroll event. Alas the absurd set of circumstances
+ required to trigger this do not appear to be reproducible in DRT.
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::handleWheelEvent):
+
+2009-01-21 David Hyatt <hyatt@apple.com>
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23453
+
+ Devirtualize the width/height/x/y methods of the render tree. The methods are now non-virtual on RenderBox.
+ Many functions that were previously in RenderObject.cpp are now in RenderBox.cpp.
+
+ Reviewed by Eric Seidel and Darin Adler
+
+ * WebCore.base.exp:
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::sizingBox):
+ * dom/ContainerNode.cpp:
+ (WebCore::ContainerNode::getUpperLeftCorner):
+ (WebCore::ContainerNode::getLowerRightCorner):
+ * dom/Element.cpp:
+ (WebCore::Element::offsetLeft):
+ (WebCore::Element::offsetTop):
+ (WebCore::Element::offsetWidth):
+ (WebCore::Element::offsetHeight):
+ (WebCore::Element::offsetParent):
+ (WebCore::Element::clientLeft):
+ (WebCore::Element::clientTop):
+ (WebCore::Element::clientWidth):
+ (WebCore::Element::clientHeight):
+ (WebCore::Element::scrollLeft):
+ (WebCore::Element::scrollTop):
+ (WebCore::Element::setScrollLeft):
+ (WebCore::Element::setScrollTop):
+ (WebCore::Element::scrollWidth):
+ (WebCore::Element::scrollHeight):
+ * dom/Node.cpp:
+ (WebCore::Node::renderBox):
+ (WebCore::Node::getRect):
+ * dom/Node.h:
+ * dom/Position.cpp:
+ (WebCore::endsOfNodeAreVisuallyDistinctPositions):
+ (WebCore::Position::hasRenderedNonAnonymousDescendantsWithHeight):
+ (WebCore::Position::isCandidate):
+ * dom/PositionIterator.cpp:
+ (WebCore::PositionIterator::isCandidate):
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::addBlockPlaceholderIfNeeded):
+ * editing/DeleteButtonController.cpp:
+ (WebCore::isDeletableElement):
+ * editing/DeleteSelectionCommand.cpp:
+ (WebCore::DeleteSelectionCommand::removeNode):
+ * editing/Editor.cpp:
+ (WebCore::Editor::insideVisibleArea):
+ * editing/EditorCommand.cpp:
+ (WebCore::verticalScrollDistance):
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::isKeyboardFocusable):
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::willDraw):
+ * html/HTMLFormControlElement.cpp:
+ (WebCore::HTMLFormControlElement::isFocusable):
+ * html/HTMLFrameElementBase.cpp:
+ (WebCore::HTMLFrameElementBase::width):
+ (WebCore::HTMLFrameElementBase::height):
+ * html/HTMLImageElement.cpp:
+ (WebCore::HTMLImageElement::width):
+ (WebCore::HTMLImageElement::height):
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::drawNodeHighlight):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+ * page/FrameView.cpp:
+ (WebCore::FrameView::createScrollbar):
+ (WebCore::FrameView::updateDashboardRegions):
+ * page/animation/AnimationBase.cpp:
+ (WebCore::blendFunc):
+ * rendering/HitTestResult.cpp:
+ (WebCore::HitTestResult::imageRect):
+ * rendering/InlineBox.cpp:
+ (WebCore::InlineBox::renderBox):
+ (WebCore::InlineBox::adjustPosition):
+ * rendering/InlineBox.h:
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::placeBoxesHorizontally):
+ (WebCore::InlineFlowBox::verticallyAlignBoxes):
+ (WebCore::InlineFlowBox::placeBoxesVertically):
+ * rendering/InlineFlowBox.h:
+ * rendering/RenderApplet.cpp:
+ (WebCore::RenderApplet::createWidgetIfNecessary):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::overflowHeight):
+ (WebCore::RenderBlock::overflowWidth):
+ (WebCore::RenderBlock::overflowRect):
+ (WebCore::RenderBlock::isSelfCollapsingBlock):
+ (WebCore::RenderBlock::layout):
+ (WebCore::RenderBlock::layoutBlock):
+ (WebCore::RenderBlock::adjustPositionedBlock):
+ (WebCore::RenderBlock::adjustFloatingBlock):
+ (WebCore::RenderBlock::handleSpecialChild):
+ (WebCore::RenderBlock::handlePositionedChild):
+ (WebCore::RenderBlock::handleFloatingChild):
+ (WebCore::RenderBlock::handleCompactChild):
+ (WebCore::RenderBlock::insertCompactIfNeeded):
+ (WebCore::RenderBlock::handleRunInChild):
+ (WebCore::RenderBlock::collapseMargins):
+ (WebCore::RenderBlock::clearFloatsIfNeeded):
+ (WebCore::RenderBlock::estimateVerticalPosition):
+ (WebCore::RenderBlock::determineHorizontalPosition):
+ (WebCore::RenderBlock::handleBottomOfBlock):
+ (WebCore::RenderBlock::layoutBlockChildren):
+ (WebCore::RenderBlock::layoutOnlyPositionedObjects):
+ (WebCore::RenderBlock::layoutPositionedObjects):
+ (WebCore::RenderBlock::markPositionedObjectsForLayout):
+ (WebCore::RenderBlock::repaintOverhangingFloats):
+ (WebCore::RenderBlock::paint):
+ (WebCore::RenderBlock::paintChildren):
+ (WebCore::RenderBlock::paintObject):
+ (WebCore::RenderBlock::paintFloats):
+ (WebCore::RenderBlock::paintContinuationOutlines):
+ (WebCore::clipOutPositionedObjects):
+ (WebCore::RenderBlock::fillSelectionGaps):
+ (WebCore::RenderBlock::fillBlockSelectionGaps):
+ (WebCore::RenderBlock::leftSelectionOffset):
+ (WebCore::RenderBlock::rightSelectionOffset):
+ (WebCore::RenderBlock::insertPositionedObject):
+ (WebCore::RenderBlock::removePositionedObject):
+ (WebCore::RenderBlock::removePositionedObjects):
+ (WebCore::RenderBlock::insertFloatingObject):
+ (WebCore::RenderBlock::removeFloatingObject):
+ (WebCore::RenderBlock::positionNewFloats):
+ (WebCore::RenderBlock::newLine):
+ (WebCore::RenderBlock::lowestPosition):
+ (WebCore::RenderBlock::rightmostPosition):
+ (WebCore::RenderBlock::leftmostPosition):
+ (WebCore::RenderBlock::clearFloats):
+ (WebCore::RenderBlock::addOverhangingFloats):
+ (WebCore::RenderBlock::markAllDescendantsWithFloatsForLayout):
+ (WebCore::RenderBlock::getClearDelta):
+ (WebCore::RenderBlock::nodeAtPoint):
+ (WebCore::RenderBlock::positionForCoordinates):
+ (WebCore::RenderBlock::layoutColumns):
+ (WebCore::RenderBlock::getBaselineOfFirstLineBox):
+ (WebCore::RenderBlock::getBaselineOfLastLineBox):
+ (WebCore::getHeightForLineCount):
+ (WebCore::RenderBlock::adjustForBorderFit):
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::FloatWithRect::FloatWithRect):
+ (WebCore::RenderBlock::hasOverhangingFloats):
+ (WebCore::RenderBlock::CompactInfo::compact):
+ (WebCore::RenderBlock::CompactInfo::set):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::RenderBox):
+ (WebCore::RenderBox::offsetLeft):
+ (WebCore::RenderBox::offsetTop):
+ (WebCore::RenderBox::offsetParent):
+ (WebCore::RenderBox::clientWidth):
+ (WebCore::RenderBox::clientHeight):
+ (WebCore::RenderBox::scrollWidth):
+ (WebCore::RenderBox::scrollHeight):
+ (WebCore::RenderBox::scrollLeft):
+ (WebCore::RenderBox::scrollTop):
+ (WebCore::RenderBox::setScrollLeft):
+ (WebCore::RenderBox::setScrollTop):
+ (WebCore::RenderBox::absoluteRects):
+ (WebCore::RenderBox::absoluteQuads):
+ (WebCore::RenderBox::absoluteContentBox):
+ (WebCore::RenderBox::absoluteContentQuad):
+ (WebCore::RenderBox::absoluteOutlineBounds):
+ (WebCore::RenderBox::addFocusRingRects):
+ (WebCore::RenderBox::reflectionBox):
+ (WebCore::RenderBox::reflectionOffset):
+ (WebCore::RenderBox::reflectedRect):
+ (WebCore::RenderBox::overrideWidth):
+ (WebCore::RenderBox::overrideHeight):
+ (WebCore::RenderBox::nodeAtPoint):
+ (WebCore::RenderBox::paint):
+ (WebCore::RenderBox::maskClipRect):
+ (WebCore::RenderBox::repaintLayerRectsForImage):
+ (WebCore::RenderBox::paintCustomHighlight):
+ (WebCore::RenderBox::getOverflowClipRect):
+ (WebCore::RenderBox::getClipRect):
+ (WebCore::RenderBox::containingBlockWidth):
+ (WebCore::RenderBox::localToAbsolute):
+ (WebCore::RenderBox::offsetFromContainer):
+ (WebCore::RenderBox::position):
+ (WebCore::RenderBox::computeAbsoluteRepaintRect):
+ (WebCore::RenderBox::repaintDuringLayoutIfMoved):
+ (WebCore::RenderBox::calcWidth):
+ (WebCore::RenderBox::calcWidthUsing):
+ (WebCore::RenderBox::calcHorizontalMargins):
+ (WebCore::RenderBox::calcHeight):
+ (WebCore::RenderBox::calcPercentageHeight):
+ (WebCore::RenderBox::calcReplacedHeightUsing):
+ (WebCore::RenderBox::containingBlockWidthForPositioned):
+ (WebCore::RenderBox::containingBlockHeightForPositioned):
+ (WebCore::RenderBox::calcAbsoluteHorizontal):
+ (WebCore::RenderBox::calcAbsoluteVertical):
+ (WebCore::RenderBox::calcAbsoluteVerticalValues):
+ (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
+ (WebCore::RenderBox::calcAbsoluteVerticalReplaced):
+ (WebCore::RenderBox::localCaretRect):
+ (WebCore::RenderBox::lowestPosition):
+ (WebCore::RenderBox::rightmostPosition):
+ (WebCore::RenderBox::leftmostPosition):
+ (WebCore::RenderBox::localTransform):
+ * rendering/RenderBox.h:
+ (WebCore::):
+ (WebCore::RenderBox::x):
+ (WebCore::RenderBox::y):
+ (WebCore::RenderBox::width):
+ (WebCore::RenderBox::height):
+ (WebCore::RenderBox::setX):
+ (WebCore::RenderBox::setY):
+ (WebCore::RenderBox::setWidth):
+ (WebCore::RenderBox::setHeight):
+ (WebCore::RenderBox::location):
+ (WebCore::RenderBox::size):
+ (WebCore::RenderBox::setLocation):
+ (WebCore::RenderBox::setSize):
+ (WebCore::RenderBox::move):
+ (WebCore::RenderBox::frameRect):
+ (WebCore::RenderBox::setFrameRect):
+ (WebCore::RenderBox::borderBoxRect):
+ (WebCore::RenderBox::contentBoxRect):
+ (WebCore::RenderBox::previousSiblingBox):
+ (WebCore::RenderBox::nextSiblingBox):
+ (WebCore::RenderBox::parentBox):
+ (WebCore::RenderBox::overflowHeight):
+ (WebCore::RenderBox::overflowWidth):
+ (WebCore::RenderBox::setOverflowHeight):
+ (WebCore::RenderBox::setOverflowWidth):
+ (WebCore::RenderBox::overflowLeft):
+ (WebCore::RenderBox::overflowTop):
+ (WebCore::RenderBox::overflowRect):
+ (WebCore::RenderBox::contentWidth):
+ (WebCore::RenderBox::contentHeight):
+ (WebCore::RenderBox::offsetWidth):
+ (WebCore::RenderBox::offsetHeight):
+ (WebCore::RenderBox::clientLeft):
+ (WebCore::RenderBox::clientTop):
+ (WebCore::RenderBox::availableWidth):
+ (WebCore::RenderBox::tryLayoutDoingPositionedMovementOnly):
+ * rendering/RenderButton.cpp:
+ (WebCore::RenderButton::controlClipRect):
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::layout):
+ (WebCore::RenderContainer::positionForCoordinates):
+ * rendering/RenderContainer.h:
+ (WebCore::RenderContainer::firstChildBox):
+ (WebCore::RenderContainer::lastChildBox):
+ * rendering/RenderFieldset.cpp:
+ (WebCore::RenderFieldset::calcPrefWidths):
+ (WebCore::RenderFieldset::layoutLegend):
+ (WebCore::RenderFieldset::findLegend):
+ (WebCore::RenderFieldset::paintBoxDecorations):
+ (WebCore::RenderFieldset::paintMask):
+ * rendering/RenderFieldset.h:
+ * rendering/RenderFileUploadControl.cpp:
+ (WebCore::RenderFileUploadControl::maxFilenameWidth):
+ (WebCore::RenderFileUploadControl::paintObject):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::FlexBoxIterator::FlexBoxIterator):
+ (WebCore::FlexBoxIterator::first):
+ (WebCore::FlexBoxIterator::next):
+ (WebCore::RenderFlexibleBox::calcHorizontalPrefWidths):
+ (WebCore::RenderFlexibleBox::calcVerticalPrefWidths):
+ (WebCore::RenderFlexibleBox::layoutBlock):
+ (WebCore::RenderFlexibleBox::layoutHorizontalBox):
+ (WebCore::RenderFlexibleBox::layoutVerticalBox):
+ (WebCore::RenderFlexibleBox::placeChild):
+ (WebCore::RenderFlexibleBox::allowedChildFlex):
+ * rendering/RenderFlexibleBox.h:
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::absoluteClippedOverflowRect):
+ (WebCore::RenderFlow::lowestPosition):
+ (WebCore::RenderFlow::rightmostPosition):
+ (WebCore::RenderFlow::leftmostPosition):
+ (WebCore::RenderFlow::localCaretRect):
+ (WebCore::RenderFlow::addFocusRingRects):
+ * rendering/RenderFrameSet.cpp:
+ (WebCore::RenderFrameSet::paint):
+ (WebCore::RenderFrameSet::layout):
+ (WebCore::RenderFrameSet::positionFrames):
+ * rendering/RenderHTMLCanvas.cpp:
+ (WebCore::RenderHTMLCanvas::paintReplaced):
+ (WebCore::RenderHTMLCanvas::canvasSizeChanged):
+ * rendering/RenderImage.cpp:
+ (WebCore::RenderImage::imageChanged):
+ (WebCore::RenderImage::paintReplaced):
+ (WebCore::RenderImage::nodeAtPoint):
+ (WebCore::RenderImage::calcReplacedWidth):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::absoluteRects):
+ (WebCore::RenderInline::boundingBoxWidth):
+ (WebCore::RenderInline::boundingBoxHeight):
+ (WebCore::RenderInline::positionForCoordinates):
+ * rendering/RenderInline.h:
+ (WebCore::RenderInline::offsetWidth):
+ (WebCore::RenderInline::offsetHeight):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateTransform):
+ (WebCore::RenderLayer::updateLayerPosition):
+ (WebCore::RenderLayer::scrollbarCornerPresent):
+ (WebCore::RenderLayer::createScrollbar):
+ (WebCore::RenderLayer::positionOverflowControls):
+ (WebCore::RenderLayer::paintScrollCorner):
+ (WebCore::RenderLayer::paintResizer):
+ (WebCore::RenderLayer::paintLayer):
+ (WebCore::RenderLayer::hitTestLayer):
+ (WebCore::RenderLayer::calculateRects):
+ (WebCore::RenderLayer::boundingBox):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::calcHeight):
+ (WebCore::RenderListBox::controlClipRect):
+ * rendering/RenderListItem.cpp:
+ (WebCore::RenderListItem::positionListMarker):
+ (WebCore::RenderListItem::paint):
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::paint):
+ (WebCore::RenderListMarker::layout):
+ (WebCore::RenderListMarker::imageChanged):
+ (WebCore::RenderListMarker::getRelativeMarkerRect):
+ (WebCore::RenderListMarker::selectionRect):
+ * rendering/RenderMarquee.cpp:
+ (WebCore::RenderMarquee::computePosition):
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::layout):
+ (WebCore::RenderMedia::lowestPosition):
+ (WebCore::RenderMedia::rightmostPosition):
+ (WebCore::RenderMedia::leftmostPosition):
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::controlClipRect):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::RenderObject):
+ (WebCore::RenderObject::markAllDescendantsWithFloatsForLayout):
+ (WebCore::RenderObject::paintOutline):
+ (WebCore::RenderObject::addLineBoxRects):
+ (WebCore::RenderObject::absoluteBoundingBoxRect):
+ (WebCore::RenderObject::addAbsoluteRectForLayer):
+ (WebCore::RenderObject::paintingRootRect):
+ (WebCore::RenderObject::container):
+ (WebCore::RenderObject::removeFromObjectLists):
+ (WebCore::RenderObject::updateHitTestResult):
+ (WebCore::RenderObject::addDashboardRegions):
+ (WebCore::RenderObject::localTransform):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isBox):
+ (WebCore::RenderObject::hasMask):
+ (WebCore::RenderObject::setIsText):
+ (WebCore::RenderObject::setIsBox):
+ (WebCore::RenderObject::borderTop):
+ (WebCore::RenderObject::borderBottom):
+ (WebCore::RenderObject::absoluteRects):
+ (WebCore::RenderObject::collectAbsoluteLineBoxQuads):
+ (WebCore::RenderObject::absoluteQuads):
+ (WebCore::RenderObject::hasReflection):
+ (WebCore::RenderObject::addFocusRingRects):
+ (WebCore::RenderObject::absoluteOutlineBounds):
+ * rendering/RenderPart.cpp:
+ (WebCore::RenderPart::updateWidgetPosition):
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::layout):
+ (WebCore::RenderPath::paint):
+ (WebCore::RenderPath::absoluteOutlineBounds):
+ * rendering/RenderPath.h:
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::layout):
+ (WebCore::RenderReplaced::paint):
+ (WebCore::RenderReplaced::shouldPaint):
+ (WebCore::RenderReplaced::positionForCoordinates):
+ (WebCore::RenderReplaced::localSelectionRect):
+ (WebCore::RenderReplaced::adjustOverflowForBoxShadow):
+ (WebCore::RenderReplaced::overflowRect):
+ * rendering/RenderReplica.cpp:
+ (WebCore::RenderReplica::layout):
+ (WebCore::RenderReplica::calcPrefWidths):
+ (WebCore::RenderReplica::paint):
+ * rendering/RenderSVGContainer.cpp:
+ (WebCore::RenderSVGContainer::paint):
+ (WebCore::RenderSVGContainer::absoluteOutlineBounds):
+ * rendering/RenderSVGContainer.h:
+ (WebCore::RenderSVGContainer::width):
+ (WebCore::RenderSVGContainer::height):
+ * rendering/RenderSVGImage.cpp:
+ (WebCore::RenderSVGImage::layout):
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::computeAbsoluteRectForRange):
+ (WebCore::RenderSVGInlineText::positionForCoordinates):
+ * rendering/RenderSVGRoot.cpp:
+ (WebCore::RenderSVGRoot::layout):
+ (WebCore::RenderSVGRoot::applyContentTransforms):
+ (WebCore::RenderSVGRoot::paint):
+ (WebCore::RenderSVGRoot::absoluteTransform):
+ (WebCore::RenderSVGRoot::nodeAtPoint):
+ * rendering/RenderSVGTSpan.cpp:
+ (WebCore::RenderSVGTSpan::absoluteRects):
+ (WebCore::RenderSVGTSpan::absoluteQuads):
+ * rendering/RenderSVGText.cpp:
+ (WebCore::RenderSVGText::layout):
+ (WebCore::RenderSVGText::relativeBBox):
+ * rendering/RenderSVGTextPath.cpp:
+ (WebCore::RenderSVGTextPath::absoluteRects):
+ (WebCore::RenderSVGTextPath::absoluteQuads):
+ * rendering/RenderSVGViewportContainer.cpp:
+ (WebCore::RenderSVGViewportContainer::nodeAtPoint):
+ * rendering/RenderScrollbar.cpp:
+ (WebCore::RenderScrollbar::createCustomScrollbar):
+ (WebCore::RenderScrollbar::RenderScrollbar):
+ (WebCore::RenderScrollbar::setParent):
+ * rendering/RenderScrollbar.h:
+ (WebCore::RenderScrollbar::owningRenderer):
+ * rendering/RenderScrollbarPart.cpp:
+ (WebCore::RenderScrollbarPart::layout):
+ (WebCore::RenderScrollbarPart::layoutHorizontalPart):
+ (WebCore::RenderScrollbarPart::layoutVerticalPart):
+ (WebCore::RenderScrollbarPart::computeScrollbarWidth):
+ (WebCore::RenderScrollbarPart::computeScrollbarHeight):
+ (WebCore::RenderScrollbarPart::paintIntoRect):
+ * rendering/RenderSlider.cpp:
+ (WebCore::HTMLSliderThumbElement::defaultEventHandler):
+ (WebCore::RenderSlider::layout):
+ (WebCore::RenderSlider::mouseEventIsInThumb):
+ (WebCore::RenderSlider::positionForOffset):
+ (WebCore::RenderSlider::trackSize):
+ * rendering/RenderTable.cpp:
+ (WebCore::RenderTable::calcWidth):
+ (WebCore::RenderTable::layout):
+ (WebCore::RenderTable::paint):
+ (WebCore::RenderTable::getBaselineOfFirstLineBox):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::updateWidth):
+ (WebCore::RenderTableCell::computeAbsoluteRepaintRect):
+ (WebCore::RenderTableCell::localToAbsolute):
+ (WebCore::RenderTableCell::absoluteToLocal):
+ (WebCore::RenderTableCell::localToAbsoluteQuad):
+ (WebCore::RenderTableCell::paint):
+ (WebCore::RenderTableCell::paintBackgroundsBehindCell):
+ * rendering/RenderTableCell.h:
+ * rendering/RenderTableSection.cpp:
+ (WebCore::RenderTableSection::addChild):
+ (WebCore::RenderTableSection::addCell):
+ (WebCore::RenderTableSection::setCellWidths):
+ (WebCore::RenderTableSection::calcRowHeight):
+ (WebCore::RenderTableSection::layoutRows):
+ (WebCore::RenderTableSection::lowestPosition):
+ (WebCore::RenderTableSection::rightmostPosition):
+ (WebCore::RenderTableSection::leftmostPosition):
+ (WebCore::RenderTableSection::getBaselineOfFirstLineBox):
+ (WebCore::RenderTableSection::paint):
+ (WebCore::RenderTableSection::recalcCells):
+ (WebCore::RenderTableSection::nodeAtPoint):
+ * rendering/RenderTableSection.h:
+ (WebCore::RenderTableSection::overflowWidth):
+ (WebCore::RenderTableSection::overflowHeight):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::RenderText):
+ (WebCore::RenderText::boundingBoxX):
+ (WebCore::RenderText::boundingBoxY):
+ (WebCore::RenderText::firstRunX):
+ (WebCore::RenderText::firstRunY):
+ (WebCore::RenderText::boundingBoxHeight):
+ (WebCore::RenderText::boundingBoxWidth):
+ * rendering/RenderText.h:
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::textBlockHeight):
+ (WebCore::RenderTextControl::textBlockWidth):
+ (WebCore::RenderTextControl::setSelectionRange):
+ (WebCore::RenderTextControl::calcHeight):
+ (WebCore::RenderTextControl::hitInnerTextBlock):
+ (WebCore::RenderTextControl::controlClipRect):
+ * rendering/RenderTextControlMultiLine.cpp:
+ (WebCore::RenderTextControlMultiLine::layout):
+ (WebCore::RenderTextControlMultiLine::adjustControlHeightBasedOnLineHeight):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::paint):
+ (WebCore::RenderTextControlSingleLine::layout):
+ (WebCore::RenderTextControlSingleLine::nodeAtPoint):
+ (WebCore::RenderTextControlSingleLine::forwardEvent):
+ (WebCore::RenderTextControlSingleLine::textBlockWidth):
+ (WebCore::RenderTextControlSingleLine::adjustControlHeightBasedOnLineHeight):
+ (WebCore::RenderTextControlSingleLine::clientPaddingLeft):
+ (WebCore::RenderTextControlSingleLine::clientPaddingRight):
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::hitTestMediaControlPart):
+ (WebCore::RenderTheme::baselinePosition):
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::paintSearchFieldCancelButton):
+ (WebCore::RenderThemeMac::paintSearchFieldResultsDecoration):
+ (WebCore::RenderThemeMac::paintSearchFieldResultsButton):
+ (WebCore::RenderThemeMac::hitTestMediaControlPart):
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ * rendering/RenderVideo.cpp:
+ (WebCore::RenderVideo::videoBox):
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::RenderView):
+ (WebCore::RenderView::calcHeight):
+ (WebCore::RenderView::calcWidth):
+ (WebCore::RenderView::layout):
+ (WebCore::RenderView::viewRect):
+ (WebCore::RenderView::docHeight):
+ (WebCore::RenderView::docWidth):
+ (WebCore::RenderView::setBestTruncatedAt):
+ * rendering/RenderView.h:
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::paint):
+ (WebCore::RenderWidget::updateWidgetPosition):
+ (WebCore::RenderWidget::nodeAtPoint):
+ * rendering/RootInlineBox.h:
+ (WebCore::RootInlineBox::floats):
+ (WebCore::RootInlineBox::floatsPtr):
+ * rendering/SVGInlineFlowBox.cpp:
+ (WebCore::SVGInlineFlowBox::verticallyAlignBoxes):
+ * rendering/SVGInlineFlowBox.h:
+ * rendering/SVGRenderTreeAsText.cpp:
+ (WebCore::operator<<):
+ (WebCore::write):
+ * rendering/SVGRootInlineBox.cpp:
+ (WebCore::SVGRootInlineBox::verticallyAlignBoxes):
+ (WebCore::SVGRootInlineBox::computePerCharacterLayoutInformation):
+ (WebCore::SVGRootInlineBox::layoutInlineBoxes):
+ * rendering/SVGRootInlineBox.h:
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::computeHorizontalPositionsForLine):
+ (WebCore::RenderBlock::computeVerticalPositionsForLine):
+ (WebCore::RenderBlock::layoutInlineChildren):
+ (WebCore::RenderBlock::determineStartPosition):
+ (WebCore::RenderBlock::matchedEndLine):
+ (WebCore::RenderBlock::skipTrailingWhitespace):
+ (WebCore::RenderBlock::skipLeadingWhitespace):
+ (WebCore::RenderBlock::fitBelowFloats):
+ (WebCore::RenderBlock::findNextLineBreak):
+ (WebCore::RenderBlock::checkLinesForOverflow):
+ * svg/SVGLength.cpp:
+ (WebCore::SVGLength::PercentageOfViewport):
+
+2009-01-21 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ * WebCore.LP64.exp:
+ Add some bridge related symbols.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ Make runtime_object.h a private header.
+
+2009-01-20 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 22720: Make XMLHttpRequest work in Workers
+ <https://bugs.webkit.org/show_bug.cgi?id=22720>
+
+ More removal of document usage from XMLHttpRequest.
+ * Abstracted away the sync and async requests behind the ThreadableLoader class, which
+ will get an implementation for Workers. ThreadableLoader follows the same model as
+ SubresourceLoader because DocumentThreadableLoader is a thin wrapper around SubresourceLoader.
+ Also, WorkerThreadableLoader (coming soon) will use DocumentThreadableLoader to get things done.
+ * Consolidated dashboard compatibility checks into usesDashboardBackwardCompatibilityMode
+ which handles workers.
+
+ No observable change in behavior, so no test.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * loader/DocumentThreadableLoader.cpp: Added.
+ (WebCore::DocumentThreadableLoader::create):
+ (WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
+ (WebCore::DocumentThreadableLoader::~DocumentThreadableLoader):
+ (WebCore::DocumentThreadableLoader::cancel):
+ (WebCore::DocumentThreadableLoader::willSendRequest):
+ (WebCore::DocumentThreadableLoader::didSendData):
+ (WebCore::DocumentThreadableLoader::didReceiveResponse):
+ (WebCore::DocumentThreadableLoader::didReceiveData):
+ (WebCore::DocumentThreadableLoader::didFinishLoading):
+ (WebCore::DocumentThreadableLoader::didFail):
+ (WebCore::DocumentThreadableLoader::receivedCancellation):
+ * loader/DocumentThreadableLoader.h: Added.
+ (WebCore::DocumentThreadableLoader::refThreadableLoader):
+ (WebCore::DocumentThreadableLoader::derefThreadableLoader):
+ * loader/SubresourceLoaderClient.h:
+ (WebCore::SubresourceLoaderClient::didReceiveData):
+ * loader/ThreadableLoader.cpp: Added.
+ (WebCore::ThreadableLoader::create):
+ (WebCore::ThreadableLoader::loadResourceSynchronously):
+ * loader/ThreadableLoader.h: Added.
+ (WebCore::):
+ (WebCore::ThreadableLoader::ref):
+ (WebCore::ThreadableLoader::deref):
+ (WebCore::ThreadableLoader::~ThreadableLoader):
+ * loader/ThreadableLoaderClient.h: Added.
+ (WebCore::ThreadableLoaderClient::didSendData):
+ (WebCore::ThreadableLoaderClient::didReceiveResponse):
+ (WebCore::ThreadableLoaderClient::didReceiveData):
+ (WebCore::ThreadableLoaderClient::didFinishLoading):
+ (WebCore::ThreadableLoaderClient::didFail):
+ (WebCore::ThreadableLoaderClient::didGetCancelled):
+ (WebCore::ThreadableLoaderClient::didReceiveAuthenticationCancellation):
+ (WebCore::ThreadableLoaderClient::~ThreadableLoaderClient):
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::XMLHttpRequest):
+ (WebCore::XMLHttpRequest::usesDashboardBackwardCompatibilityMode):
+ (WebCore::XMLHttpRequest::send):
+ (WebCore::XMLHttpRequest::loadRequestSynchronously):
+ (WebCore::XMLHttpRequest::loadRequestAsynchronously):
+ (WebCore::XMLHttpRequest::setRequestHeader):
+ (WebCore::XMLHttpRequest::processSyncLoadResults):
+ (WebCore::XMLHttpRequest::didFail):
+ (WebCore::XMLHttpRequest::didGetCancelled):
+ (WebCore::XMLHttpRequest::didFinishLoading):
+ (WebCore::XMLHttpRequest::didFinishLoadingPreflight):
+ (WebCore::XMLHttpRequest::didSendData):
+ (WebCore::XMLHttpRequest::didReceiveResponse):
+ (WebCore::XMLHttpRequest::didReceiveResponsePreflight):
+ (WebCore::XMLHttpRequest::didReceiveAuthenticationCancellation):
+ (WebCore::XMLHttpRequest::didReceiveData):
+ * xml/XMLHttpRequest.h:
+
+2009-01-19 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23317
+
+ The high CPU usage was really from repeatedly firing transitions caused
+ by a bug in the way we handle background-color animations. If animating
+ from a valid background color to no background color, we sometimes left
+ (based on timing) the background color as transparent black, but valid
+ rather than invalid, which it should be. Fixing that got rid of the
+ repeated firing.
+
+ But we really were doing more expensive iteration of all objects with
+ animations or transitions on them (running or not). So I added two
+ optimizations to quickly short circuit when an object had no running
+ animations or transitions. Things are now as zippy as ever.
+
+ Test: transitions/repeated-firing-background-color.html
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::blendFunc):
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::updateAnimationTimer):
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimationPrivate::hasAnimations):
+ (WebCore::CompositeAnimationPrivate::clearRenderer):
+ (WebCore::CompositeAnimationPrivate::animate):
+ (WebCore::CompositeAnimationPrivate::setAnimating):
+ (WebCore::CompositeAnimationPrivate::willNeedService):
+ (WebCore::CompositeAnimationPrivate::getAnimationForProperty):
+ (WebCore::CompositeAnimationPrivate::cleanupFinishedAnimations):
+ (WebCore::CompositeAnimationPrivate::setAnimationStartTime):
+ (WebCore::CompositeAnimationPrivate::setTransitionStartTime):
+ (WebCore::CompositeAnimationPrivate::suspendAnimations):
+ (WebCore::CompositeAnimationPrivate::resumeAnimations):
+ (WebCore::CompositeAnimationPrivate::overrideImplicitAnimations):
+ (WebCore::CompositeAnimationPrivate::resumeOverriddenImplicitAnimations):
+ (WebCore::CompositeAnimationPrivate::styleAvailable):
+ (WebCore::CompositeAnimationPrivate::isAnimatingProperty):
+ (WebCore::CompositeAnimationPrivate::numberOfActiveAnimations):
+ (WebCore::CompositeAnimation::hasAnimations):
+ * page/animation/CompositeAnimation.h:
+
+2009-01-21 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Justin Garcia.
+
+ Remove the style='' turds left by some editing commands
+ https://bugs.webkit.org/show_bug.cgi?id=23463
+
+ Test: editing/execCommand/toggle-styles.html
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::removeCSSStyle): check if we just removed the last CSS property and remove the style attribute as well
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::removeNodeAttribute): remove extra ;
+
+2009-01-21 Eric Seidel <eric@webkit.org>
+
+ No review, build fix.
+
+ Fix release-only build failure (and do a tiny code-cleanup).
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::createFontElement):
+ (WebCore::createStyleSpanElement):
+ (WebCore::ApplyStyleCommand::addInlineStyleIfNeeded):
+
+2009-01-21 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 23443: Table accessibility should be re-enabled after fixing crash that occurs at WebCore::AccessibilityTable::isTableExposableThroughAccessibility()
+ https://bugs.webkit.org/show_bug.cgi?id=23443
+
+ Test: accessibility/table-modification-crash.html
+
+ * page/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::updateBackingStore):
+ * page/AccessibilityObject.h:
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::childrenChanged):
+ (WebCore::AccessibilityRenderObject::children):
+ (WebCore::AccessibilityRenderObject::updateBackingStore):
+ * page/AccessibilityRenderObject.h:
+ (WebCore::AccessibilityRenderObject::markChildrenDirty):
+ * page/AccessibilityTable.cpp:
+ (WebCore::AccessibilityTable::AccessibilityTable):
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper accessibilityActionNames]):
+ (-[AccessibilityObjectWrapper accessibilityAttributeNames]):
+ (-[AccessibilityObjectWrapper accessibilityAttributeValue:]):
+ (-[AccessibilityObjectWrapper accessibilityFocusedUIElement]):
+ (-[AccessibilityObjectWrapper accessibilityHitTest:]):
+ (-[AccessibilityObjectWrapper accessibilityIsAttributeSettable:]):
+ (-[AccessibilityObjectWrapper accessibilityIsIgnored]):
+ (-[AccessibilityObjectWrapper accessibilityParameterizedAttributeNames]):
+ (-[AccessibilityObjectWrapper accessibilityPerformPressAction]):
+ (-[AccessibilityObjectWrapper accessibilityPerformAction:]):
+ (-[AccessibilityObjectWrapper accessibilitySetValue:forAttribute:]):
+ (-[AccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
+ (-[AccessibilityObjectWrapper accessibilityIndexOfChild:]):
+ (-[AccessibilityObjectWrapper accessibilityArrayAttributeCount:]):
+ (-[AccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::destroy):
+ * rendering/RenderWidget.cpp:
+ (WebCore::RenderWidget::destroy):
+
+2009-01-16 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Justin Garcia.
+
+ Fix execCommand() 'super' and 'sub' commands to add <sup> and <sub> in quirks mode, and to toggle when called twice
+ https://bugs.webkit.org/show_bug.cgi?id=17733
+
+ Test changed: editing/execCommand/toggle-styles-expected.txt
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::StyleChange::applySubscript):
+ (WebCore::StyleChange::applySuperscript):
+ (WebCore::StyleChange::StyleChange):
+ (WebCore::StyleChange::init):
+ (WebCore::StyleChange::checkForLegacyHTMLStyleChange):
+ (WebCore::ApplyStyleCommand::isHTMLStyleNode):
+ (WebCore::ApplyStyleCommand::addInlineStyleIfNeeded):
+ * editing/EditorCommand.cpp:
+ (WebCore::executeSubscript):
+ (WebCore::executeSuperscript):
+ * editing/htmlediting.cpp:
+ (WebCore::createHTMLElement):
+ * editing/htmlediting.h:
+
+2009-01-21 Anders Carlsson <andersca@apple.com>
+
+ Fix 64-bit build.
+
+ * WebCore.LP64.exp:
+
+2009-01-21 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23458: Reintroduce CanvasPixelArray in ImageData.idl
+ <https://bugs.webkit.org/show_bug.cgi?id=23458>
+
+ Return CanvasPixelArray, et al -- the only difference between this
+ and the original CPA implementation is that it now uses a ByteArray
+ rather than a vector. JSC still uses a custom wrapper, but this allows
+ ObjC, COM, and V8 bindings to be autogenerated again.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * bindings/js/JSImageDataCustom.cpp:
+ (WebCore::toJS):
+ * html/CanvasPixelArray.cpp: Added.
+ (WebCore::CanvasPixelArray::create):
+ (WebCore::CanvasPixelArray::CanvasPixelArray):
+ * html/CanvasPixelArray.h: Added.
+ (WebCore::CanvasPixelArray::data):
+ (WebCore::CanvasPixelArray::length):
+ (WebCore::CanvasPixelArray::set):
+ (WebCore::CanvasPixelArray::get):
+ * html/CanvasPixelArray.idl: Added.
+ * html/CanvasRenderingContext2D.cpp:
+ (WebCore::createEmptyImageData):
+ * html/ImageData.cpp:
+ (WebCore::ImageData::ImageData):
+ * html/ImageData.h:
+ (WebCore::ImageData::data):
+ * html/ImageData.idl:
+ * platform/graphics/cairo/ImageBufferCairo.cpp:
+ (WebCore::ImageBuffer::getImageData):
+ (WebCore::ImageBuffer::putImageData):
+ * platform/graphics/cg/ImageBufferCG.cpp:
+ (WebCore::ImageBuffer::getImageData):
+ (WebCore::ImageBuffer::putImageData):
+
+2009-01-21 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Remove last relics of platform dependent PaintServer in SVG.
+ We draw everything with the help of GraphicsContext.
+
+ Remove SVGPaintServerPlatform's
+ [https://bugs.webkit.org/show_bug.cgi?id=23439]
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * svg/graphics/SVGPaintServer.cpp:
+ (WebCore::SVGPaintServer::draw):
+ (WebCore::SVGPaintServer::renderPath):
+ (WebCore::SVGPaintServer::teardown):
+ * svg/graphics/SVGPaintServer.h:
+ * svg/graphics/SVGPaintServerGradient.cpp:
+ * svg/graphics/SVGPaintServerGradient.h:
+ * svg/graphics/SVGPaintServerPattern.cpp:
+ * svg/graphics/SVGPaintServerPattern.h:
+ * svg/graphics/SVGPaintServerSolid.cpp:
+ * svg/graphics/SVGPaintServerSolid.h:
+ * svg/graphics/cairo/SVGPaintServerCairo.cpp: Removed.
+ * svg/graphics/cg/SVGPaintServerCg.cpp: Removed.
+ * svg/graphics/qt/SVGPaintServerQt.cpp: Removed.
+ * svg/graphics/skia/SVGPaintServerSkia.cpp: Removed.
+
+2009-01-21 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Move "Element -> ScriptElement" casting functionality into ScriptElement.h
+ to be consistent with FormControlElement/InputElement/OptionElement/OptionGroupElement.
+
+ It was living in XMLTokenizer before, which is not an obvious place for this.
+ TODO: Rename 'formControlElementForElement' to 'toFormControlElement' (analogous changes for InputElement etc.)
+ as suggested by Alexey, it really reads better this way.
+
+ * dom/ScriptElement.cpp:
+ (WebCore::toScriptElement):
+ * dom/ScriptElement.h:
+ * dom/XMLTokenizer.cpp:
+ (WebCore::XMLTokenizer::notifyFinished):
+ * dom/XMLTokenizer.h:
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::XMLTokenizer::startElementNs):
+ (WebCore::XMLTokenizer::endElementNs):
+ * dom/XMLTokenizerQt.cpp:
+ (WebCore::XMLTokenizer::parseStartElement):
+ (WebCore::XMLTokenizer::parseEndElement):
+
+2009-01-20 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=23444
+
+ Refactor some functionality from HTMLOption/OptGroupElement needed by RenderListBox/RenderMenuList
+ in two abstract base classes: OptionElement & OptionGroupElement living in dom/ - just like it
+ has been done before for FormControlElement and RenderTextControl.
+
+ This is needed to prepare the addtion of WMLOption/OptGroupElement.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * dom/OptionElement.cpp: Added.
+ (WebCore::optionElementForElement):
+ * dom/OptionElement.h: Added.
+ (WebCore::OptionElement::~OptionElement):
+ (WebCore::OptionElement::OptionElement):
+ * dom/OptionGroupElement.cpp: Added.
+ (WebCore::optionGroupElementForElement):
+ * dom/OptionGroupElement.h: Added.
+ (WebCore::OptionGroupElement::~OptionGroupElement):
+ (WebCore::OptionGroupElement::OptionGroupElement):
+ * html/HTMLOptGroupElement.h:
+ * html/HTMLOptionElement.cpp:
+ (WebCore::HTMLOptionElement::optionText):
+ * html/HTMLOptionElement.h:
+ (WebCore::HTMLOptionElement::selected):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::updateFromElement):
+ (WebCore::RenderListBox::paintItemForeground):
+ (WebCore::RenderListBox::paintItemBackground):
+ * rendering/RenderMenuList.cpp:
+ (WebCore::RenderMenuList::updateOptionsWidth):
+ (WebCore::RenderMenuList::setTextFromOption):
+ (WebCore::RenderMenuList::itemText):
+ (WebCore::RenderMenuList::itemIsSelected):
+
+2009-01-20 Darin Adler <darin@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Bug 23448: memory leak in Mac version of preferredExtensionForImageSourceType
+ https://bugs.webkit.org/show_bug.cgi?id=23448
+
+ * platform/graphics/cg/ImageSourceCGMac.mm:
+ (WebCore::preferredExtensionForImageSourceType): Use RetainPtr to avoid the leak.
+
+2009-01-20 Darin Adler <darin@apple.com>
+
+ Try to fix Wx build.
+
+ * platform/wx/PasteboardWx.cpp:
+ (WebCore::Pasteboard::writeSelection): Removed code that replaces backslash
+ with backslashAsCurrencySymbol. I'm pretty sure this is not needed when writing
+ to the clipboard. Other platforms don't do it. If it was needed, the new function
+ to use would be displayStringModifiedByEncoding.
+
+2009-01-19 Brent Fulgham <bfulgham@gmail.com>
+
+ Reviewed by Mitz Pettel.
+
+ Fixes https://bugs.webkit.org/show_bug.cgi?id=23423.
+
+ The Windows Cairo post-build targets (Release/Debug) do not
+ copy all of the headers that the CG-based build does.
+
+ * WebCore.vcproj/WebCore.vcproj: Extend WebCore Cairo build targets
+ to copy the page/animation/*.h files into WebKitBuild so that
+ WebKit can find them.
+
+2009-01-20 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23413
+ Remove unused WebCore::setDeferringTimers()
+
+ * platform/Timer.cpp:
+ (WebCore::updateSharedTimer):
+ * platform/Timer.h:
+
+2009-01-20 David Hyatt <hyatt@apple.com>
+
+ Tighten up the type of RenderObject owned by RenderLayer to be a RenderBox. Rename m_object to
+ m_renderer to be consistent with the corresponding member function.
+
+ Reviewed by Jon Honeycutt
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::RenderLayer):
+ (WebCore::RenderLayer::updateLayerPositions):
+ (WebCore::RenderLayer::updateVisibilityStatus):
+ (WebCore::RenderLayer::updateLayerPosition):
+ (WebCore::RenderLayer::stackingContext):
+ (WebCore::RenderLayer::enclosingPositionedAncestor):
+ (WebCore::RenderLayer::enclosingTransformedAncestor):
+ (WebCore::RenderLayer::isTransparent):
+ (WebCore::RenderLayer::convertToLayerCoords):
+ (WebCore::RenderLayer::scrollByRecursively):
+ (WebCore::RenderLayer::scrollToOffset):
+ (WebCore::RenderLayer::scrollRectToVisible):
+ (WebCore::RenderLayer::resize):
+ (WebCore::RenderLayer::scrollbarCornerPresent):
+ (WebCore::RenderLayer::createScrollbar):
+ (WebCore::RenderLayer::setHasHorizontalScrollbar):
+ (WebCore::RenderLayer::setHasVerticalScrollbar):
+ (WebCore::RenderLayer::positionOverflowControls):
+ (WebCore::RenderLayer::computeScrollDimensions):
+ (WebCore::RenderLayer::updateOverflowStatus):
+ (WebCore::RenderLayer::updateScrollInfoAfterLayout):
+ (WebCore::RenderLayer::paintOverflowControls):
+ (WebCore::RenderLayer::paintScrollCorner):
+ (WebCore::RenderLayer::paintResizer):
+ (WebCore::RenderLayer::isPointInResizeControl):
+ (WebCore::RenderLayer::paintLayer):
+ (WebCore::RenderLayer::hitTestLayer):
+ (WebCore::RenderLayer::updateClipRects):
+ (WebCore::RenderLayer::calculateClipRects):
+ (WebCore::RenderLayer::calculateRects):
+ (WebCore::RenderLayer::clearClipRects):
+ (WebCore::RenderLayer::repaintIncludingDescendants):
+ (WebCore::RenderLayer::styleChanged):
+ (WebCore::RenderLayer::updateScrollCornerStyle):
+ (WebCore::RenderLayer::updateResizerStyle):
+ * rendering/RenderLayer.h:
+ (WebCore::RenderLayer::renderer):
+ (WebCore::RenderLayer::hasReflection):
+ (WebCore::RenderLayer::hasTransform):
+
+2009-01-20 David Hyatt <hyatt@apple.com>
+
+ Fix Mac build bustage from my selection changes. I forgot to implement the functions on RenderThemeMac
+ for returning the appropriate listbox selection colors.
+
+ Reviewed by Adele
+
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::platformActiveListBoxSelectionForegroundColor):
+ (WebCore::RenderThemeMac::platformInactiveListBoxSelectionForegroundColor):
+ (WebCore::RenderThemeMac::platformInactiveListBoxSelectionBackgroundColor):
+
+2009-01-20 Dave Hyatt <hyatt@apple.com>
+
+ Fix for focus rings on Windows. Make sure that focus rings draw for all controls but buttons.
+
+ Fix list box selection colors on Windows. Also add a cache for all of the selection colors (and not just the two
+ background selection colors).
+
+ Reviewed by Adam Roben
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::selectionForegroundColor):
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::activeSelectionBackgroundColor):
+ (WebCore::RenderTheme::inactiveSelectionBackgroundColor):
+ (WebCore::RenderTheme::activeSelectionForegroundColor):
+ (WebCore::RenderTheme::inactiveSelectionForegroundColor):
+ (WebCore::RenderTheme::activeListBoxSelectionBackgroundColor):
+ (WebCore::RenderTheme::inactiveListBoxSelectionBackgroundColor):
+ (WebCore::RenderTheme::activeListBoxSelectionForegroundColor):
+ (WebCore::RenderTheme::inactiveListBoxSelectionForegroundColor):
+ (WebCore::RenderTheme::platformActiveSelectionForegroundColor):
+ (WebCore::RenderTheme::platformInactiveSelectionBackgroundColor):
+ (WebCore::RenderTheme::platformInactiveSelectionForegroundColor):
+ (WebCore::RenderTheme::platformActiveListBoxSelectionBackgroundColor):
+ (WebCore::RenderTheme::platformActiveListBoxSelectionForegroundColor):
+ (WebCore::RenderTheme::platformInactiveListBoxSelectionBackgroundColor):
+ (WebCore::RenderTheme::platformInactiveListBoxSelectionForegroundColor):
+ (WebCore::RenderTheme::platformColorsDidChange):
+ * rendering/RenderTheme.h:
+ (WebCore::RenderTheme::supportsForegroundSelectionColors):
+ (WebCore::RenderTheme::supportsForegroundListBoxSelectionColors):
+ * rendering/RenderThemeMac.h:
+ (WebCore::RenderThemeMac::supportsForegroundSelectionColors):
+ * rendering/RenderThemeMac.mm:
+ (WebCore::RenderThemeMac::platformActiveListBoxSelectionBackgroundColor):
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::RenderThemeWin::platformInactiveSelectionBackgroundColor):
+ (WebCore::RenderThemeWin::platformInactiveSelectionForegroundColor):
+ (WebCore::RenderThemeWin::supportsFocus):
+ (WebCore::RenderThemeWin::supportsFocusRing):
+ * rendering/RenderThemeWin.h:
+
+2009-01-20 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=23434
+
+ Add WML <input> element support - it required a lot of changes to the RenderText*/HTMLInput* code.
+ Now any language can provide <input>-style elements, without having to inherit from HTML* classes.
+
+ No WML specific features/attributes are handled so far. A follow-up patch will provide those bits.
+ Added very simple fast/wml/input.wml, just checking that input elements can be rendered properly now.
+ Detailed testcases will follow in conjunction with the WML specific attribute support.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::adjustRenderStyle):
+ * dom/FormControlElement.cpp: Activate disabled code from previous checking.
+ (WebCore::formControlElementForElement):
+ * dom/InputElement.cpp: Ditto.
+ (WebCore::inputElementForElement):
+ * wml/WMLInputElement.cpp: Added.
+ (WebCore::WMLInputElement::WMLInputElement):
+ (WebCore::WMLInputElement::~WMLInputElement):
+ (WebCore::isInputFocusable):
+ (WebCore::WMLInputElement::isKeyboardFocusable):
+ (WebCore::WMLInputElement::isMouseFocusable):
+ (WebCore::WMLInputElement::dispatchFocusEvent):
+ (WebCore::WMLInputElement::dispatchBlurEvent):
+ (WebCore::WMLInputElement::updateFocusAppearance):
+ (WebCore::WMLInputElement::aboutToUnload):
+ (WebCore::WMLInputElement::size):
+ (WebCore::WMLInputElement::name):
+ (WebCore::WMLInputElement::value):
+ (WebCore::WMLInputElement::setValue):
+ (WebCore::WMLInputElement::setValueFromRenderer):
+ (WebCore::WMLInputElement::saveState):
+ (WebCore::WMLInputElement::restoreState):
+ (WebCore::WMLInputElement::select):
+ (WebCore::WMLInputElement::accessKeyAction):
+ (WebCore::WMLInputElement::parseMappedAttribute):
+ (WebCore::WMLInputElement::copyNonAttributeProperties):
+ (WebCore::WMLInputElement::createRenderer):
+ (WebCore::WMLInputElement::attach):
+ (WebCore::WMLInputElement::detach):
+ (WebCore::WMLInputElement::appendFormData):
+ (WebCore::WMLInputElement::reset):
+ (WebCore::WMLInputElement::defaultEventHandler):
+ (WebCore::WMLInputElement::cacheSelection):
+ (WebCore::WMLInputElement::constrainValue):
+ (WebCore::WMLInputElement::documentDidBecomeActive):
+ (WebCore::WMLInputElement::placeholderShouldBeVisible):
+ (WebCore::WMLInputElement::willMoveToNewOwnerDocument):
+ (WebCore::WMLInputElement::didMoveToNewOwnerDocument):
+ * wml/WMLInputElement.h: Added.
+ (WebCore::WMLInputElement::valueMatchesRenderer):
+ (WebCore::WMLInputElement::setValueMatchesRenderer):
+ (WebCore::WMLInputElement::shouldUseInputMethod):
+ (WebCore::WMLInputElement::isChecked):
+ (WebCore::WMLInputElement::isIndeterminate):
+ (WebCore::WMLInputElement::isTextControl):
+ (WebCore::WMLInputElement::isRadioButton):
+ (WebCore::WMLInputElement::isTextField):
+ (WebCore::WMLInputElement::isSearchField):
+ (WebCore::WMLInputElement::isInputTypeHidden):
+ (WebCore::WMLInputElement::isPasswordField):
+ (WebCore::WMLInputElement::searchEventsShouldBeDispatched):
+ (WebCore::WMLInputElement::placeholderValue):
+ * wml/WMLTagNames.in:
+
+2009-01-20 Darin Adler <darin@apple.com>
+
+ Reviewed by John Sullivan.
+
+ Remove a little dead code left over after the fix for
+ https://bugs.webkit.org/show_bug.cgi?id=11395, which
+ moved pointer-events from SVG to be shared with HTML.
+
+ * css/SVGCSSParser.cpp:
+ (WebCore::CSSParser::parseSVGValue): Remove SVG's parsing of this
+ property since it's handled in the non-SVG function now so we'll
+ never get here.
+
+2009-01-20 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Bug 23438: Provide a default value to the .in file parser
+
+ Added the default value 1 as it simplifies some of
+ the format by removing some "=1" that were awkward.
+
+ This was suggested by Darin Adler as par of a previous
+ review.
+
+ * bindings/scripts/InFilesParser.pm: When no value
+ was entered (the second part of the split is undef),
+ provide the default value.
+
+ * html/HTMLAttributeNames.in: Removed unnecessary "=1".
+ * html/HTMLTagNames.in: Ditto.
+ * svg/svgattrs.in: Ditto.
+ * svg/svgtags.in: Ditto.
+ * svg/xlinkattrs.in: Ditto.
+ * wml/WMLAttributeNames.in: Ditto.
+
+2009-01-20 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Darin Adler.
+
+ * bridge/c/c_class.cpp:
+ * bridge/c/c_class.h:
+ Get rid of CClass::name().
+
+ * bridge/jni/jni_class.h:
+ Get rid of JavaClass::name().
+
+ * bridge/objc/objc_class.h:
+ * bridge/objc/objc_class.mm:
+ Get rid of ObjcClass::name().
+
+ * bridge/objc/objc_instance.h:
+ Get rid of supportsSetValueOfUndefinedField.
+
+ * bridge/objc/objc_instance.mm:
+ (ObjcInstance::setValueOfUndefinedField):
+ Fold supportsSetValueOfUndefinedField into setValueOfUndefinedField.
+
+ * bridge/runtime.cpp:
+ Get rid of getValueOfField and setValueOfField.
+
+ * bridge/runtime.h:
+ (JSC::Bindings::Instance::setValueOfUndefinedField):
+ Have this return a bool and get rid of supportsSetValueOfUndefinedField
+
+ * bridge/runtime_object.cpp:
+ (JSC::RuntimeObjectImp::fieldGetter):
+ Call Field::valueFromInstance on the field.
+
+ (JSC::RuntimeObjectImp::put):
+ Call Field::setValueToInstance on the field.
+
+2009-01-20 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Not reviewed. Forgot to land build changes for non-mac platforms.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCoreSources.bkl:
+
+2009-01-20 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Adam Roben.
+
+ Fix last-minute regression, introduced by simplifying max length determination - by
+ clamping using min/max, negative maxLength values got broken.
+
+ * dom/InputElement.cpp:
+ (WebCore::InputElement::parseMaxLengthAttribute):
+
+2009-01-20 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Reviewed by Adam Roben.
+
+ Fixes: https://bugs.webkit.org/show_bug.cgi?id=23433
+
+ Add InputElement abstraction, similar to the FormControlElement refactorization
+ done a month ago. The goal is to share as much code as possible between HTML/WMLInputElement.
+ In a previous patch the RenderTextControl class has been split-up in RenderTextControlSingle/MultiLine,
+ RenderTextControl itself only depends on FormControlElement, RenderTextControlSingleLine still
+ depends on HTMLInputElement directly -> change that and make it use the new InputElement abstraction.
+
+ A lot of code from HTMLInputElement now lives in InputElement, as static member functions - the
+ InputElement class itself is an abstract virtual class, just like ScriptElement. HTML/WMLInputElement
+ derive from InputElement, and hold a InputElementData member variable, that they pass to the
+ static functions in InputElement. The abstraction is equal to the one chosen for HTML/SVGScriptElement.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * dom/FormControlElement.cpp: Added.
+ (WebCore::formControlElementForElement):
+ * dom/FormControlElement.h:
+ * dom/InputElement.cpp: Added.
+ (WebCore::InputElement::dispatchFocusEvent):
+ (WebCore::InputElement::dispatchBlurEvent):
+ (WebCore::InputElement::updatePlaceholderVisibility):
+ (WebCore::InputElement::updateFocusAppearance):
+ (WebCore::InputElement::updateSelectionRange):
+ (WebCore::InputElement::aboutToUnload):
+ (WebCore::InputElement::setValueFromRenderer):
+ (WebCore::numCharactersInGraphemeClusters):
+ (WebCore::InputElement::constrainValue):
+ (WebCore::numGraphemeClusters):
+ (WebCore::InputElement::handleBeforeTextInsertedEvent):
+ (WebCore::InputElement::parseSizeAttribute):
+ (WebCore::InputElement::parseMaxLengthAttribute):
+ (WebCore::InputElement::updateValueIfNeeded):
+ (WebCore::InputElement::notifyFormStateChanged):
+ (WebCore::InputElementData::InputElementData):
+ (WebCore::InputElementData::~InputElementData):
+ (WebCore::InputElementData::name):
+ (WebCore::inputElementForElement):
+ * dom/InputElement.h: Added.
+ (WebCore::InputElement::~InputElement):
+ (WebCore::InputElement::InputElement):
+ (WebCore::InputElementData::inputElement):
+ (WebCore::InputElementData::element):
+ (WebCore::InputElementData::placeholderShouldBeVisible):
+ (WebCore::InputElementData::setPlaceholderShouldBeVisible):
+ (WebCore::InputElementData::setName):
+ (WebCore::InputElementData::value):
+ (WebCore::InputElementData::setValue):
+ (WebCore::InputElementData::size):
+ (WebCore::InputElementData::setSize):
+ (WebCore::InputElementData::maxLength):
+ (WebCore::InputElementData::setMaxLength):
+ (WebCore::InputElementData::cachedSelectionStart):
+ (WebCore::InputElementData::setCachedSelectionStart):
+ (WebCore::InputElementData::cachedSelectionEnd):
+ (WebCore::InputElementData::setCachedSelectionEnd):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::HTMLInputElement):
+ (WebCore::HTMLInputElement::name):
+ (WebCore::HTMLInputElement::updateFocusAppearance): Moved to InputElement.
+ (WebCore::HTMLInputElement::aboutToUnload): Ditto.
+ (WebCore::HTMLInputElement::dispatchFocusEvent): Ditto.
+ (WebCore::HTMLInputElement::dispatchBlurEvent): Ditto.
+ (WebCore::HTMLInputElement::setSelectionRange): Moved to InputElement::updateSelectionRange, call it from here.
+ (WebCore::HTMLInputElement::parseMappedAttribute):
+ (WebCore::HTMLInputElement::size): Make virtual and override InputElements abstract version.
+ (WebCore::HTMLInputElement::copyNonAttributeProperties):
+ (WebCore::HTMLInputElement::value): Make virtual and override InputElements abstract version.
+ (WebCore::HTMLInputElement::setValue): Ditto.
+ (WebCore::HTMLInputElement::placeholderValue): Ditto.
+ (WebCore::HTMLInputElement::searchEventsShouldBeDispatched): Ditto.
+ (WebCore::HTMLInputElement::setValueFromRenderer): Ditto.
+ (WebCore::HTMLInputElement::setFileListFromRenderer): Use new code in InputElement::setValueFromRenderer
+ (WebCore::HTMLInputElement::defaultEventHandler):
+ (WebCore::HTMLInputElement::setDefaultName): Added as helper function for HTMLIsIndexElement.
+ (WebCore::HTMLInputElement::maxLength): Added accesor.
+ (WebCore::HTMLInputElement::constrainValue): Move functionality to InputElement::constrainValue.
+ (WebCore::HTMLInputElement::cacheSelection): Move functionality to InputElement::cacheSelection.
+ (WebCore::HTMLInputElement::selection):
+ (WebCore::HTMLInputElement::placeholderShouldBeVisible): Make virtual and override InputElements abstract version.
+ * html/HTMLInputElement.h:
+ (WebCore::HTMLInputElement::isTextField):
+ (WebCore::HTMLInputElement::isSearchField):
+ (WebCore::HTMLInputElement::isAutofilled):
+ * html/HTMLIsIndexElement.cpp:
+ (WebCore::HTMLIsIndexElement::HTMLIsIndexElement):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::formControlElement):
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::placeholderShouldBeVisible):
+ (WebCore::RenderTextControlSingleLine::addSearchResult):
+ (WebCore::RenderTextControlSingleLine::stopSearchEventTimer):
+ (WebCore::RenderTextControlSingleLine::showPopup):
+ (WebCore::RenderTextControlSingleLine::hidePopup):
+ (WebCore::RenderTextControlSingleLine::subtreeHasChanged):
+ (WebCore::RenderTextControlSingleLine::capsLockStateMayHaveChanged):
+ (WebCore::RenderTextControlSingleLine::preferredContentWidth):
+ (WebCore::RenderTextControlSingleLine::createSubtreeIfNeeded):
+ (WebCore::RenderTextControlSingleLine::updateFromElement):
+ (WebCore::RenderTextControlSingleLine::cacheSelection):
+ (WebCore::RenderTextControlSingleLine::createInnerBlockStyle):
+ (WebCore::RenderTextControlSingleLine::createResultsButtonStyle):
+ (WebCore::RenderTextControlSingleLine::createCancelButtonStyle):
+ (WebCore::RenderTextControlSingleLine::updateCancelButtonVisibility):
+ (WebCore::RenderTextControlSingleLine::startSearchEventTimer):
+ (WebCore::RenderTextControlSingleLine::searchEventTimerFired):
+ (WebCore::RenderTextControlSingleLine::valueChanged):
+ (WebCore::RenderTextControlSingleLine::setTextFromItem):
+ (WebCore::RenderTextControlSingleLine::inputElement):
+ * rendering/RenderTextControlSingleLine.h:
+
+2009-01-20 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Make SVG pattern platform independent and remove platform code.
+
+ Make SVGPattern platform independent
+ https://bugs.webkit.org/show_bug.cgi?id=21205
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/graphics/GraphicsContext.h:
+ * platform/graphics/cg/GraphicsContextCG.cpp:
+ (WebCore::GraphicsContext::applyStrokePattern):
+ (WebCore::GraphicsContext::applyFillPattern):
+ (WebCore::GraphicsContext::drawPath):
+ (WebCore::GraphicsContext::fillPath):
+ (WebCore::GraphicsContext::strokePath):
+ (WebCore::GraphicsContext::fillRect):
+ (WebCore::GraphicsContext::strokeRect):
+ * svg/graphics/SVGPaintServerPattern.cpp:
+ (WebCore::SVGPaintServerPattern::SVGPaintServerPattern):
+ (WebCore::SVGPaintServerPattern::~SVGPaintServerPattern):
+ (WebCore::SVGPaintServerPattern::setup):
+ (WebCore::SVGPaintServerPattern::renderPath):
+ (WebCore::SVGPaintServerPattern::teardown):
+ * svg/graphics/SVGPaintServerPattern.h:
+ * svg/graphics/cairo/SVGPaintServerPatternCairo.cpp: Removed.
+ * svg/graphics/cg/SVGPaintServerPatternCg.cpp: Removed.
+ * svg/graphics/qt/SVGPaintServerPatternQt.cpp: Removed.
+ * svg/graphics/skia/SVGPaintServerPatternSkia.cpp: Removed.
+
+2009-01-20 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23436
+ Upstream rendering/RenderThemeChromium*
+
+ * rendering/RenderThemeChromiumGtk.cpp: Added.
+ * rendering/RenderThemeChromiumGtk.h: Added.
+ * rendering/RenderThemeChromiumMac.h: Added.
+ * rendering/RenderThemeChromiumMac.mm: Added.
+ * rendering/RenderThemeChromiumWin.cpp: Added.
+ * rendering/RenderThemeChromiumWin.h: Added.
+
+2009-01-20 Darin Adler <darin@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Bug 23352: Turn on more compiler warnings in the Mac build
+ https://bugs.webkit.org/show_bug.cgi?id=23352
+
+ First patch: Fix some simple cases of various warnings.
+
+ * platform/DeprecatedPtrListImpl.cpp:
+ (WebCore::DeprecatedPtrListImpl::insert): Use const_cast to change const-ness.
+ * platform/graphics/mac/SimpleFontDataMac.mm:
+ (WebCore::SimpleFontData::containsCharacters): Ditto.
+
+ * platform/text/PlatformString.h: Overload for short and unsigned short to avoid
+ ambiguity leading to warnings.
+ * platform/text/String.cpp:
+ (WebCore::String::number): Implemented overloads.
+
+ * platform/text/TextStream.cpp:
+ (WebCore::TextStream::operator<<): Overload for bool to avoid ambiguity leading
+ to warnings.
+ * platform/text/TextStream.h: Ditto.
+
+ * rendering/InlineFlowBox.h: Fix declaration that was specifying the wrong type.
+
+ * svg/graphics/filters/cg/WKLinearTransferFilter.m: Fix stray characters after
+ #endif that should be a comment instead.
+ * svg/graphics/filters/cg/WKSpecularLightingFilter.h: Ditto.
+
+ * xml/XPathPath.h: Remove unneeded redundant declaration.
+
+2009-01-20 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Build fix for WML enabled builds, not reviewed.
+
+ Fix unused variable warning.
+
+ * wml/WMLGoElement.cpp:
+ (WebCore::WMLGoElement::executeTask):
+
+2009-01-20 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+
+ Build fix for WML enabled builds, not reviewed.
+
+ Rename 'continuation' to 'virtualContinuation'.
+
+ * wml/WMLAElement.cpp:
+ (WebCore::WMLAElement::isKeyboardFocusable):
+
+2009-01-20 Oliver Hunt <oliver@apple.com>
+
+ RS=Dan Bernstein
+
+ Move runtime/ByteArray to wtf/ByteArray
+
+ * ForwardingHeaders/wtf/ByteArray.h: Renamed from WebCore/ForwardingHeaders/runtime/ByteArray.h.
+ * html/CanvasRenderingContext2D.cpp:
+ * html/ImageData.cpp:
+ (WebCore::ImageData::ImageData):
+ * html/ImageData.h:
+ (WebCore::ImageData::data):
+
+2009-01-20 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23391
+ Upstream plugins/chromium/
+
+ * plugins/chromium: Added.
+ * plugins/chromium/PluginDataChromium.cpp: Added.
+
+2009-01-19 Steve Falkenburg <sfalken@apple.com>
+
+ Fix Windows release build.
+ Move SVG files into all-in-one file for Windows build.
+
+ * WebCore.vcproj/WebCore.vcproj:
+ * svg/SVGAllInOne.cpp: Added.
+
+2009-01-19 Steve Falkenburg <sfalken@apple.com>
+
+ Partial build fix.
+ Move new derived sources into all-in-one DerivedSources.cpp
+
+ * DerivedSources.cpp:
+ * WebCore.vcproj/WebCore.vcproj:
+
+2009-01-19 Sam Weinig <sam@webkit.org>
+
+ Fix Qt build.
+
+ * bridge/qt/qt_instance.cpp:
+ (JSC::Bindings::QtInstance::mark):
+ * bridge/qt/qt_runtime.cpp:
+ (JSC::Bindings::valueRealType):
+ (JSC::Bindings::convertValueToQVariant):
+ (JSC::Bindings::QtRuntimeConnectionMethod::call):
+ (JSC::Bindings::QtConnectionObject::execute):
+
+2009-01-19 Sam Weinig <sam@webkit.org>
+
+ Fix wx build.
+
+ * plugins/PluginView.cpp:
+ (WebCore::getString):
+
+2009-01-19 Sam Weinig <sam@webkit.org>
+
+ Rubber-stamped by Gavin Barraclough.
+
+ Remove temporary operator-> from JSValuePtr.
+
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSAudioConstructor.cpp:
+ (WebCore::constructAudio):
+ * bindings/js/JSCanvasRenderingContext2DCustom.cpp:
+ (WebCore::toHTMLCanvasStyle):
+ (WebCore::JSCanvasRenderingContext2D::setFillColor):
+ (WebCore::JSCanvasRenderingContext2D::setStrokeColor):
+ (WebCore::JSCanvasRenderingContext2D::strokeRect):
+ (WebCore::JSCanvasRenderingContext2D::drawImage):
+ (WebCore::JSCanvasRenderingContext2D::drawImageFromRect):
+ (WebCore::JSCanvasRenderingContext2D::setShadow):
+ (WebCore::JSCanvasRenderingContext2D::createPattern):
+ (WebCore::JSCanvasRenderingContext2D::putImageData):
+ (WebCore::JSCanvasRenderingContext2D::fillText):
+ (WebCore::JSCanvasRenderingContext2D::strokeText):
+ * bindings/js/JSClipboardCustom.cpp:
+ (WebCore::JSClipboard::clearData):
+ (WebCore::JSClipboard::getData):
+ (WebCore::JSClipboard::setData):
+ (WebCore::JSClipboard::setDragImage):
+ * bindings/js/JSCustomPositionCallback.cpp:
+ (WebCore::JSCustomPositionCallback::handleEvent):
+ * bindings/js/JSCustomPositionErrorCallback.cpp:
+ (WebCore::JSCustomPositionErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLStatementCallback.cpp:
+ (WebCore::JSCustomSQLStatementCallback::handleEvent):
+ * bindings/js/JSCustomSQLStatementErrorCallback.cpp:
+ (WebCore::JSCustomSQLStatementErrorCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionCallback.cpp:
+ (WebCore::JSCustomSQLTransactionCallback::handleEvent):
+ * bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
+ (WebCore::JSCustomSQLTransactionErrorCallback::handleEvent):
+ * bindings/js/JSCustomVoidCallback.cpp:
+ (WebCore::JSCustomVoidCallback::handleEvent):
+ (WebCore::toVoidCallback):
+ * bindings/js/JSCustomXPathNSResolver.cpp:
+ (WebCore::JSCustomXPathNSResolver::create):
+ (WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ (WebCore::JSDOMApplicationCache::hasItem):
+ (WebCore::JSDOMApplicationCache::add):
+ (WebCore::JSDOMApplicationCache::remove):
+ (WebCore::JSDOMApplicationCache::addEventListener):
+ (WebCore::JSDOMApplicationCache::removeEventListener):
+ * bindings/js/JSDOMBinding.cpp:
+ (WebCore::valueToStringWithNullCheck):
+ (WebCore::valueToStringWithUndefinedOrNullCheck):
+ (WebCore::reportException):
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::findJSEventListener):
+ (WebCore::JSDOMGlobalObject::findOrCreateJSEventListener):
+ (WebCore::JSDOMGlobalObject::findJSUnprotectedEventListener):
+ (WebCore::JSDOMGlobalObject::findOrCreateJSUnprotectedEventListener):
+ * bindings/js/JSDOMStringListCustom.cpp:
+ (WebCore::JSDOMStringList::item):
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::JSDOMWindowBase::getOwnPropertySlot):
+ (windowProtoFuncOpen):
+ (WebCore::toJSDOMWindow):
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::setLocation):
+ (WebCore::JSDOMWindow::postMessage):
+ (WebCore::setTimeoutOrInterval):
+ (WebCore::JSDOMWindow::clearTimeout):
+ (WebCore::JSDOMWindow::clearInterval):
+ (WebCore::JSDOMWindow::atob):
+ (WebCore::JSDOMWindow::btoa):
+ (WebCore::JSDOMWindow::addEventListener):
+ (WebCore::JSDOMWindow::removeEventListener):
+ (WebCore::toDOMWindow):
+ * bindings/js/JSDatabaseCustom.cpp:
+ (WebCore::JSDatabase::changeVersion):
+ (WebCore::JSDatabase::transaction):
+ * bindings/js/JSDocumentCustom.cpp:
+ (WebCore::JSDocument::setLocation):
+ * bindings/js/JSElementCustom.cpp:
+ (WebCore::JSElement::setAttribute):
+ (WebCore::JSElement::setAttributeNS):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSAbstractEventListener::handleEvent):
+ (WebCore::JSLazyEventListener::parseCode):
+ * bindings/js/JSEventTargetNodeCustom.cpp:
+ (WebCore::JSEventTargetNode::addEventListener):
+ (WebCore::JSEventTargetNode::removeEventListener):
+ * bindings/js/JSGeolocationCustom.cpp:
+ (WebCore::createPositionOptions):
+ (WebCore::JSGeolocation::getCurrentPosition):
+ (WebCore::JSGeolocation::watchPosition):
+ * bindings/js/JSHTMLCollectionCustom.cpp:
+ (WebCore::callHTMLCollection):
+ (WebCore::JSHTMLCollection::canGetItemsForName):
+ (WebCore::JSHTMLCollection::item):
+ (WebCore::JSHTMLCollection::namedItem):
+ * bindings/js/JSHTMLDocumentCustom.cpp:
+ (WebCore::JSHTMLDocument::open):
+ (WebCore::writeHelper):
+ * bindings/js/JSHTMLOptionsCollectionCustom.cpp:
+ (WebCore::JSHTMLOptionsCollection::setLength):
+ (WebCore::JSHTMLOptionsCollection::add):
+ * bindings/js/JSHTMLSelectElementCustom.cpp:
+ (WebCore::JSHTMLSelectElement::remove):
+ (WebCore::selectIndexSetter):
+ * bindings/js/JSImageConstructor.cpp:
+ (WebCore::constructImage):
+ * bindings/js/JSInspectedObjectWrapper.cpp:
+ (WebCore::JSInspectedObjectWrapper::wrap):
+ (WebCore::JSInspectedObjectWrapper::prepareIncomingValue):
+ * bindings/js/JSInspectorCallbackWrapper.cpp:
+ (WebCore::JSInspectorCallbackWrapper::wrap):
+ * bindings/js/JSJavaScriptCallFrameCustom.cpp:
+ (WebCore::JSJavaScriptCallFrame::evaluate):
+ * bindings/js/JSLocationCustom.cpp:
+ (WebCore::JSLocation::setHref):
+ (WebCore::JSLocation::setProtocol):
+ (WebCore::JSLocation::setHost):
+ (WebCore::JSLocation::setHostname):
+ (WebCore::JSLocation::setPort):
+ (WebCore::JSLocation::setPathname):
+ (WebCore::JSLocation::setSearch):
+ (WebCore::JSLocation::setHash):
+ (WebCore::JSLocation::replace):
+ (WebCore::JSLocation::assign):
+ * bindings/js/JSMessageChannelConstructor.cpp:
+ (WebCore::JSMessageChannelConstructor::mark):
+ * bindings/js/JSMessagePortCustom.cpp:
+ (WebCore::JSMessagePort::startConversation):
+ (WebCore::JSMessagePort::addEventListener):
+ (WebCore::JSMessagePort::removeEventListener):
+ * bindings/js/JSNodeFilterCondition.cpp:
+ (WebCore::JSNodeFilterCondition::mark):
+ (WebCore::JSNodeFilterCondition::acceptNode):
+ * bindings/js/JSNodeFilterCondition.h:
+ * bindings/js/JSNodeFilterCustom.cpp:
+ (WebCore::toNodeFilter):
+ * bindings/js/JSNodeListCustom.cpp:
+ (WebCore::callNodeList):
+ * bindings/js/JSOptionConstructor.cpp:
+ (WebCore::constructHTMLOptionElement):
+ * bindings/js/JSQuarantinedObjectWrapper.cpp:
+ (WebCore::JSQuarantinedObjectWrapper::asWrapper):
+ (WebCore::JSQuarantinedObjectWrapper::construct):
+ * bindings/js/JSSQLResultSetRowListCustom.cpp:
+ (WebCore::JSSQLResultSetRowList::item):
+ * bindings/js/JSSQLTransactionCustom.cpp:
+ (WebCore::JSSQLTransaction::executeSql):
+ * bindings/js/JSSVGElementInstanceCustom.cpp:
+ (WebCore::JSSVGElementInstance::addEventListener):
+ (WebCore::JSSVGElementInstance::removeEventListener):
+ * bindings/js/JSSVGLengthCustom.cpp:
+ (WebCore::JSSVGLength::convertToSpecifiedUnits):
+ * bindings/js/JSSVGMatrixCustom.cpp:
+ (WebCore::JSSVGMatrix::translate):
+ (WebCore::JSSVGMatrix::scale):
+ (WebCore::JSSVGMatrix::scaleNonUniform):
+ (WebCore::JSSVGMatrix::rotate):
+ (WebCore::JSSVGMatrix::rotateFromVector):
+ (WebCore::JSSVGMatrix::skewX):
+ (WebCore::JSSVGMatrix::skewY):
+ * bindings/js/JSSVGPathSegListCustom.cpp:
+ (WebCore::JSSVGPathSegList::getItem):
+ (WebCore::JSSVGPathSegList::insertItemBefore):
+ (WebCore::JSSVGPathSegList::replaceItem):
+ (WebCore::JSSVGPathSegList::removeItem):
+ * bindings/js/JSSVGPointListCustom.cpp:
+ (WebCore::JSSVGPointList::getItem):
+ (WebCore::JSSVGPointList::insertItemBefore):
+ (WebCore::JSSVGPointList::replaceItem):
+ (WebCore::JSSVGPointList::removeItem):
+ * bindings/js/JSSVGTransformListCustom.cpp:
+ (WebCore::JSSVGTransformList::getItem):
+ (WebCore::JSSVGTransformList::insertItemBefore):
+ (WebCore::JSSVGTransformList::replaceItem):
+ (WebCore::JSSVGTransformList::removeItem):
+ * bindings/js/JSStorageCustom.cpp:
+ (WebCore::JSStorage::deleteProperty):
+ (WebCore::JSStorage::customPut):
+ * bindings/js/JSWebKitCSSMatrixConstructor.cpp:
+ (WebCore::constructWebKitCSSMatrix):
+ * bindings/js/JSWorkerConstructor.cpp:
+ (WebCore::constructWorker):
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::addEventListener):
+ (WebCore::JSWorkerContext::removeEventListener):
+ * bindings/js/JSWorkerCustom.cpp:
+ (WebCore::JSWorker::addEventListener):
+ (WebCore::JSWorker::removeEventListener):
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::open):
+ (WebCore::JSXMLHttpRequest::setRequestHeader):
+ (WebCore::JSXMLHttpRequest::send):
+ (WebCore::JSXMLHttpRequest::getResponseHeader):
+ (WebCore::JSXMLHttpRequest::overrideMimeType):
+ (WebCore::JSXMLHttpRequest::addEventListener):
+ (WebCore::JSXMLHttpRequest::removeEventListener):
+ * bindings/js/JSXMLHttpRequestUploadCustom.cpp:
+ (WebCore::JSXMLHttpRequestUpload::addEventListener):
+ (WebCore::JSXMLHttpRequestUpload::removeEventListener):
+ * bindings/js/JSXSLTProcessorCustom.cpp:
+ (WebCore::JSXSLTProcessor::importStylesheet):
+ (WebCore::JSXSLTProcessor::transformToFragment):
+ (WebCore::JSXSLTProcessor::transformToDocument):
+ (WebCore::JSXSLTProcessor::setParameter):
+ (WebCore::JSXSLTProcessor::getParameter):
+ (WebCore::JSXSLTProcessor::removeParameter):
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::executeFunctionInContext):
+ * bindings/js/ScriptCallStack.cpp:
+ (WebCore::ScriptCallStack::initialize):
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::createScriptObjectForPluginElement):
+ * bindings/js/ScriptValue.cpp:
+ (WebCore::ScriptValue::getString):
+ (WebCore::ScriptValue::isNull):
+ (WebCore::ScriptValue::isUndefined):
+ * bindings/objc/WebScriptObject.mm:
+ (-[WebScriptObject callWebScriptMethod:withArguments:]):
+ (+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ * bridge/NP_jsobject.cpp:
+ (_NPN_InvokeDefault):
+ (_NPN_Invoke):
+ (_NPN_HasMethod):
+ (_NPN_Construct):
+ * bridge/c/c_utility.cpp:
+ (JSC::Bindings::convertValueToNPVariant):
+ * bridge/jni/jni_instance.cpp:
+ (JavaInstance::invokeMethod):
+ * bridge/jni/jni_jsobject.mm:
+ (JavaJSObject::call):
+ (JavaJSObject::convertValueToJObject):
+ * bridge/jni/jni_runtime.cpp:
+ (JavaField::dispatchValueFromInstance):
+ (JavaField::valueFromInstance):
+ (JavaField::dispatchSetValueToInstance):
+ (JavaField::setValueToInstance):
+ * bridge/jni/jni_utility.cpp:
+ (JSC::Bindings::convertArrayInstanceToJavaArray):
+ (JSC::Bindings::convertValueToJValue):
+ * bridge/objc/objc_runtime.mm:
+ (JSC::Bindings::callObjCFallbackObject):
+ * bridge/objc/objc_utility.mm:
+ (JSC::Bindings::convertValueToObjcValue):
+ * bridge/runtime_method.cpp:
+ (JSC::callRuntimeMethod):
+ * bridge/runtime_object.cpp:
+ (JSC::RuntimeObjectImp::getOwnPropertySlot):
+ (JSC::callRuntimeConstructor):
+
+2009-01-20 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23419
+ removal of FramePrivate.h breaks GTK+'s make dist
+
+ * GNUmakefile.am: No longer mention FramePrivate.h in our build,
+ since it was removed.
+
+2009-01-20 Alexander V. Butenko <alex@digiqube.com>
+
+ Reviewed by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=23116
+ [GTK] Fix crash due a callback called from GIO after the
+ destruction of the ResourceHandle
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandle::cancel): Only call didFinishLoading if
+ 'client' is set, otherwise cancelling a load could lead to a crash.
+
+2009-01-19 Simon Fraser <simon.fraser@apple.com>
+
+ Build fix: remove duplicate entries in the Xcode project, and
+ sort the project with sort-Xcode-project-file .
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-01-19 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=18078
+
+ Support animations and transitions of shorthand properties by creating
+ PropertyWrappers that simply wrap a vector of atomic wrappers, and implement
+ equal() and blend(). Build that collection of shorthand wrappers using the
+ shorthand map that CSSMutableStyleDeclaration already has. Skip comparing these
+ shorthand wrappers during 'all' transitions.
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.scons:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ Add CSSPropertyLonghand.h/cpp.
+
+ * css/CSSMutableStyleDeclaration.cpp:
+ (WebCore::CSSMutableStyleDeclaration::removeShorthandProperty):
+ Move CSSPropertyLonghand to its own file.
+
+ * css/CSSPropertyLonghand.cpp: Added.
+ (WebCore::initShorthandMap):
+ (WebCore::longhandForProperty):
+ * css/CSSPropertyLonghand.h: Added.
+ (WebCore::CSSPropertyLonghand::CSSPropertyLonghand):
+ (WebCore::CSSPropertyLonghand::properties):
+ (WebCore::CSSPropertyLonghand::length):
+ Code moved from CSSMutableStyleDeclaration.h/cpp
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::PropertyWrapperBase::isShorthandWrapper):
+ (WebCore::ShorthandPropertyWrapper::ShorthandPropertyWrapper):
+ (WebCore::ShorthandPropertyWrapper::isShorthandWrapper):
+ (WebCore::ShorthandPropertyWrapper::equals):
+ (WebCore::ShorthandPropertyWrapper::blend):
+ Add a wrapper class for shorthand properties that simply wraps an
+ array of atomic property wrappers.
+
+ (WebCore::ensurePropertyMap):
+ (WebCore::addPropertyWrapper):
+ (WebCore::addShorthandProperties):
+ (WebCore::wrapperForProperty):
+ (WebCore::AnimationBase::propertiesEqual):
+ (WebCore::AnimationBase::getPropertyAtIndex):
+ Some minor refactoring to re-use wrapperForProperty(), and ensure that gPropertyWrapperMap
+ is filled with an invalid index (-1), not 0.
+
+ (WebCore::AnimationBase::blendProperties):
+ * page/animation/AnimationBase.h:
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimationPrivate::updateTransitions):
+ When doing 'all' transitions, skip shorthand wrappers, since 'all' transitions
+ just need to compare all the atomic property wrappers.
+
+2009-01-19 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by NOBODY (Build fix).
+
+ Actually add the new header.
+
+ * dom/GenericWorkerTask.h: Added.
+
+2009-01-19 David Levin <levin@chromium.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22720
+
+ Provide a generic class to handle the pattern of task callbacks across worker/parent threads. It
+ only works for methods that need 6 parameters but similar classes could be added as needed for
+ other numbers of parameters.
+
+ Add addMessage and resourceRetrievedByXMLHttpRequest to ScriptExecutionContext.
+
+ Use these methods and others to remove document() from XMLHttpRequest in a few more places.
+
+ No observable change in behavior, so no test.
+
+ * GNUmakefile.am:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ Sorted project file while adding GenericWorkerTask.h
+
+ * bindings/js/ScriptString.h:
+ (WebCore::ScriptString::operator=):
+ (WebCore::ScriptString::operator+=):
+ (WebCore::ScriptString::operator==):
+ (WebCore::ScriptString::operator!=):
+ Removed unnecessary JSLock.
+
+ * dom/Document.cpp:
+ (WebCore::Document::addMessage):
+ (WebCore::Document::resourceRetrievedByXMLHttpRequest):
+ * dom/Document.h:
+ * dom/GenericWorkerTask.h: Added.
+ (WebCore::GenericWorkerTaskBase::GenericWorkerTaskBase):
+ (WebCore::GenericWorkerTaskBase::canPerformTask):
+ (WebCore::GenericWorkerTask6::create):
+ (WebCore::GenericWorkerTask6::GenericWorkerTask6):
+ (WebCore::GenericWorkerTask6::performTask):
+ (WebCore::createCallbackTask):
+ * dom/ScriptExecutionContext.h:
+ * dom/WorkerContext.cpp:
+ (WebCore::addMessageTask):
+ (WebCore::WorkerContext::addMessage):
+ (WebCore::WorkerContext::resourceRetrievedByXMLHttpRequest):
+ (WebCore::WorkerContext::postTaskToParentContext):
+ * dom/WorkerContext.h:
+ * dom/WorkerMessagingProxy.cpp:
+ (WebCore::WorkerMessagingProxy::postTaskToParentContext):
+ * dom/WorkerMessagingProxy.h:
+ * dom/WorkerThread.h:
+ * xml/XMLHttpRequest.cpp:
+ (WebCore::XMLHttpRequest::XMLHttpRequest):
+ (WebCore::XMLHttpRequest::dropProtection):
+ (WebCore::reportUnsafeUsage):
+ (WebCore::XMLHttpRequest::setRequestHeader):
+ (WebCore::XMLHttpRequest::getResponseHeader):
+ (WebCore::XMLHttpRequest::didFinishLoading):
+ * xml/XMLHttpRequest.h:
+ (WebCore::XMLHttpRequest::create):
+
+
+2009-01-19 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 23422: AX: AXLinks should expose access key information
+ https://bugs.webkit.org/show_bug.cgi?id=23422
+
+ Test: accessibility/accesskey.html
+
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper accessibilityAttributeNames]):
+ (-[AccessibilityObjectWrapper accessibilityAttributeValue:]):
+
+2009-01-19 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23417
+ Implement application cache obsolete state
+
+ Test: http/tests/appcache/remove-cache.html
+
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ (WebCore::JSDOMApplicationCache::mark):
+ * dom/EventNames.h:
+ * loader/appcache/DOMApplicationCache.h:
+ (WebCore::DOMApplicationCache::Status):
+ (WebCore::DOMApplicationCache::setOnobsolete):
+ (WebCore::DOMApplicationCache::onobsolete):
+ * loader/appcache/DOMApplicationCache.idl:
+ Added "obsolete" event and status.
+
+ * loader/appcache/ApplicationCacheGroup.h:
+ (WebCore::ApplicationCacheGroup::savedNewestCachePointer): Removed, there is no longer
+ any need to track what the newest cache was during teardown.
+ (WebCore::ApplicationCacheGroup::updateStatus): Renamed Status to UpdateStatus, reducing
+ confusion with cache group lifecycle status.
+ (WebCore::ApplicationCacheGroup::m_isObsolete): Added an obsolete state flag.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::ApplicationCacheGroup): Initialize m_isObsolete.
+ (WebCore::ApplicationCacheGroup::cacheForMainRequest): Assert that the returned cache does
+ not belong to an obsolete group.
+ (WebCore::ApplicationCacheGroup::fallbackCacheForMainRequest): Ditto.
+ (WebCore::ApplicationCacheGroup::disassociateDocumentLoader): Disassociation can now happen
+ via a JS swapCache() call, not only when the loader is destroyed.
+ (WebCore::ApplicationCacheGroup::cacheDestroyed): Don't track m_savedNewestCachePointer.
+ (WebCore::ApplicationCacheGroup::setNewestCache): Remove old newest cache from storage is
+ a caller responsibility, because this method is also used when loading caches from disk.
+ (WebCore::ApplicationCacheGroup::makeObsolete): Added. Mark the cache group as obsolete, and
+ inform cache storage, so that it could be removed.
+ (WebCore::ApplicationCacheGroup::didFailToLoadManifest): Removed, as all this method did
+ was call cacheUpdateFailed().
+ (WebCore::ApplicationCacheGroup::didReceiveResponse): Added a FIXME about correct failure
+ handing.
+ (WebCore::ApplicationCacheGroup::didFail): Ditto.
+ (WebCore::ApplicationCacheGroup::didReceiveManifestResponse): Call a new manifestNotFound()
+ method for 404 and 410 responses.
+ (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): Call cacheUpdateFailed()
+ directly, instead of the removed didFailToLoadManifest().
+ (WebCore::ApplicationCacheGroup::manifestNotFound): Implement "remove a cache" algorithm.
+ (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): Remove superceded cache from storage
+ after update successfully finishes (moved from setNewestCache()).
+ (WebCore::ApplicationCacheGroup::associateDocumentLoaderWithCache): Revive the group using
+ an explicitly passed pointer, without the need to save it during teardown.
+
+ * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::~DocumentLoader):
+ Call the general ApplicationCacheGroup::disassociateDocumentLoader() method.
+
+ * loader/appcache/ApplicationCacheStorage.h: Added a cacheGroupMadeObsolete() method, updated
+ some comments.
+
+ * loader/appcache/ApplicationCacheStorage.cpp:
+ (WebCore::ApplicationCacheStorage::cacheGroupForURL): Assert that iterated caches are not
+ obsolete.
+ (WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL): Ditto.
+ (WebCore::ApplicationCacheStorage::cacheGroupDestroyed): Don't do anything for obsolete
+ groups, as they cannot be in storage.
+ (WebCore::ApplicationCacheStorage::cacheGroupMadeObsolete): Remove the cache group from storage
+ completely, so that a new one could replace it, if necessary.
+ (WebCore::ApplicationCacheStorage::storeNewestCache): Added assertions.
+ (WebCore::ApplicationCacheStorage::remove): Remove cache group if its newest cache is removed.
+
+ * loader/appcache/DOMApplicationCache.cpp:
+ (WebCore::DOMApplicationCache::status): Added support for OBSOLETE state.
+ (WebCore::DOMApplicationCache::swapCache): Disassociate document loader from cache if the
+ application was removed server-side.
+ (WebCore::DOMApplicationCache::callObsoleteListener): Added support for obsolete event.
+
+ * loader/appcache/DOMApplicationCache.h:
+ (WebCore::DOMApplicationCache::Status):
+ (WebCore::DOMApplicationCache::setOnobsolete):
+ (WebCore::DOMApplicationCache::onobsolete):
+ Added support for OBSOLETE state and obsolete event.
+
+ * loader/appcache/DOMApplicationCache.idl: Ditto.
+
+2009-01-19 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Kevin Decker.
+
+ Allow plug-in views to return an instance directly.
+
+ * bindings/js/ScriptControllerMac.mm:
+ (WebCore::ScriptController::createScriptInstanceForWidget):
+
+2009-01-19 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by David Hyatt.
+
+ AX: some buttons don't expose AXPress as an action
+ https://bugs.webkit.org/show_bug.cgi?id=23399
+
+ Test: accessibility/button-press-action.html
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::actionElement):
+
+2009-01-19 Adam Roben <aroben@apple.com>
+
+ Windows build fix
+
+ * WebCore.vcproj/WebCore.vcproj: Copy headers from page/animation into
+ $WebKitOutputDir so that WebKit can access them.
+
+ * html/HTMLBaseFontElement.cpp: Touched this file to cause a rebuild
+ and header copy.
2009-01-19 Ariya Hidayat <ariya.hidayat@trolltech.com>
@@ -667,6 +50546,638 @@
* platform/qt/RenderThemeQt.cpp:
(WebCore::RenderThemeQt::applyTheme):
+2009-01-19 Ariya Hidayat <ariya.hidayat@trolltech.com>
+
+ [Qt] Build fix after r39971.
+
+ * platform/qt/LoggingQt.cpp:
+ (WebCore::InitializeLoggingChannelsIfNecessary):
+
+2009-01-18 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Cameron Zwarich.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23415
+ Remove FramePrivate
+
+ Minor PLT speedup.
+
+ * WebCore.base.exp:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * loader/FrameLoader.cpp:
+ * page/Frame.cpp:
+ (WebCore::Frame::Frame):
+ (WebCore::Frame::~Frame):
+ (WebCore::Frame::init):
+ (WebCore::Frame::loader):
+ (WebCore::Frame::view):
+ (WebCore::Frame::setView):
+ (WebCore::Frame::script):
+ (WebCore::Frame::document):
+ (WebCore::Frame::setDocument):
+ (WebCore::Frame::settings):
+ (WebCore::Frame::selection):
+ (WebCore::Frame::editor):
+ (WebCore::Frame::selectionGranularity):
+ (WebCore::Frame::setSelectionGranularity):
+ (WebCore::Frame::dragCaretController):
+ (WebCore::Frame::animation):
+ (WebCore::Frame::mark):
+ (WebCore::Frame::setMark):
+ (WebCore::Frame::setCaretVisible):
+ (WebCore::Frame::clearCaretRectIfNeeded):
+ (WebCore::Frame::selectionLayoutChanged):
+ (WebCore::Frame::caretBlinkTimerFired):
+ (WebCore::Frame::paintCaret):
+ (WebCore::Frame::paintDragCaret):
+ (WebCore::Frame::zoomFactor):
+ (WebCore::Frame::isZoomFactorTextOnly):
+ (WebCore::Frame::shouldApplyTextZoom):
+ (WebCore::Frame::shouldApplyPageZoom):
+ (WebCore::Frame::setZoomFactor):
+ (WebCore::Frame::setPrinting):
+ (WebCore::Frame::setJSStatusBarText):
+ (WebCore::Frame::setJSDefaultStatusBarText):
+ (WebCore::Frame::jsStatusBarText):
+ (WebCore::Frame::jsDefaultStatusBarText):
+ (WebCore::Frame::setNeedsReapplyStyles):
+ (WebCore::Frame::needsReapplyStyles):
+ (WebCore::Frame::reapplyStyles):
+ (WebCore::Frame::isContentEditable):
+ (WebCore::Frame::updateSecureKeyboardEntryIfActive):
+ (WebCore::Frame::typingStyle):
+ (WebCore::Frame::setTypingStyle):
+ (WebCore::Frame::clearTypingStyle):
+ (WebCore::Frame::computeAndSetTypingStyle):
+ (WebCore::Frame::selectionComputedStyle):
+ (WebCore::Frame::applyEditingStyleToBodyElement):
+ (WebCore::Frame::removeEditingStyleFromBodyElement):
+ (WebCore::Frame::keepAlive):
+ (WebCore::Frame::cancelAllKeepAlive):
+ (WebCore::Frame::clearDOMWindow):
+ (WebCore::Frame::ownerElement):
+ (WebCore::Frame::ownerRenderer):
+ (WebCore::Frame::isDisconnected):
+ (WebCore::Frame::setIsDisconnected):
+ (WebCore::Frame::excludeFromTextSearch):
+ (WebCore::Frame::setExcludeFromTextSearch):
+ (WebCore::Frame::selectionBounds):
+ (WebCore::Frame::selectionTextRects):
+ (WebCore::Frame::isFrameSet):
+ (WebCore::Frame::currentForm):
+ (WebCore::Frame::forceLayout):
+ (WebCore::Frame::sendScrollEvent):
+ (WebCore::Frame::clearTimers):
+ (WebCore::Frame::styleForSelectionStart):
+ (WebCore::Frame::inViewSourceMode):
+ (WebCore::Frame::setInViewSourceMode):
+ (WebCore::Frame::markAllMatchesForText):
+ (WebCore::Frame::markedTextMatchesAreHighlighted):
+ (WebCore::Frame::setMarkedTextMatchesAreHighlighted):
+ (WebCore::Frame::tree):
+ (WebCore::Frame::setDOMWindow):
+ (WebCore::Frame::domWindow):
+ (WebCore::Frame::clearFormerDOMWindow):
+ (WebCore::Frame::page):
+ (WebCore::Frame::eventHandler):
+ (WebCore::Frame::pageDestroyed):
+ (WebCore::Frame::disconnectOwnerElement):
+ (WebCore::Frame::documentAtPoint):
+ * page/Frame.h:
+ * page/FramePrivate.h: Removed.
+ * page/FrameTree.h:
+ * page/chromium/FrameChromium.cpp:
+ * page/mac/FrameMac.mm:
+ (WebCore::Frame::imageFromRect):
+ (WebCore::Frame::selectionImage):
+ (WebCore::Frame::snapshotDragImage):
+ (WebCore::Frame::nodeImage):
+ (WebCore::Frame::setUserStyleSheetLocation):
+ (WebCore::Frame::setUserStyleSheet):
+ * page/qt/FrameQt.cpp:
+ (WebCore::Frame::setUserStyleSheetLocation):
+ (WebCore::Frame::setUserStyleSheet):
+ * page/win/FrameCGWin.cpp:
+ (WebCore::Frame::nodeImage):
+ * page/win/FrameWin.cpp:
+
+2009-01-18 Eric Carlson <eric.carlson@apple.com>
+
+ Build fix for !ENABLE(VIDEO) following r40016.
+
+ * rendering/RenderSlider.cpp:
+ (WebCore::RenderSlider::mouseEventIsInThumb):
+
+2009-01-17 Steve Falkenburg <sfalken@apple.com>
+
+ Build fix.
+
+2009-01-17 David Hyatt <hyatt@apple.com>
+
+ Optimize isTextNode() the same way isElementNode() was optimized in an earlier checkin. isTextNode()
+ on Node is now non-virtual and just checks a bit that is set at construction time by Text.
+
+ Reviewed by Sam Weinig
+
+ * dom/CharacterData.cpp:
+ (WebCore::CharacterData::CharacterData):
+ * dom/CharacterData.h:
+ * dom/EventTargetNode.cpp:
+ (WebCore::EventTargetNode::EventTargetNode):
+ * dom/EventTargetNode.h:
+ * dom/Node.cpp:
+ (WebCore::Node::Node):
+ * dom/Node.h:
+ (WebCore::Node::isTextNode):
+ (WebCore::Node::isAttributeNode):
+ * dom/Text.cpp:
+ (WebCore::Text::Text):
+ * dom/Text.h:
+
+2009-01-17 David Hyatt <hyatt@apple.com>
+
+ Change how backslashAsCurrencySymbol() works. Instead of forcing call sites to do the direct
+ replacement themselves, the exact transformation is instead done by the encoding (indirectly through
+ a method on Document).
+
+ These changes allow the fast case (where no replacement is needed) checks to be completely inlined for
+ a slight speedup, and also allow encodings to do future alterations to displayed string content without
+ having to patch call sites again.
+
+ Reviewed by Oliver Hunt
+
+ * WebCore.base.exp:
+ * dom/Document.cpp:
+ * dom/Document.h:
+ (WebCore::Document::displayStringModifiedByEncoding):
+ (WebCore::Document::displayBufferModifiedByEncoding):
+ * editing/Editor.cpp:
+ (WebCore::Editor::addToKillRing):
+ * editing/TextIterator.cpp:
+ (WebCore::plainTextToMallocAllocatedBuffer):
+ (WebCore::plainText):
+ * editing/TextIterator.h:
+ * html/HTMLOptGroupElement.cpp:
+ (WebCore::HTMLOptGroupElement::groupLabelText):
+ * html/HTMLOptionElement.cpp:
+ (WebCore::HTMLOptionElement::text):
+ * loader/DocumentLoader.cpp:
+ (WebCore::canonicalizedTitle):
+ * page/Chrome.cpp:
+ (WebCore::displayString):
+ (WebCore::Chrome::runJavaScriptAlert):
+ (WebCore::Chrome::runJavaScriptConfirm):
+ (WebCore::Chrome::runJavaScriptPrompt):
+ (WebCore::Chrome::setStatusbarText):
+ * page/Frame.cpp:
+ (WebCore::Frame::shouldClose):
+ * page/Frame.h:
+ * platform/mac/PasteboardMac.mm:
+ (WebCore::Pasteboard::writeSelection):
+ * platform/text/TextCodecICU.cpp:
+ (WebCore::TextCodecICU::encode):
+ * platform/text/TextEncoding.cpp:
+ (WebCore::TextEncoding::TextEncoding):
+ * platform/text/TextEncoding.h:
+ (WebCore::TextEncoding::displayString):
+ (WebCore::TextEncoding::displayBuffer):
+ * rendering/HitTestResult.cpp:
+ (WebCore::displayString):
+ * rendering/RenderImage.cpp:
+ (WebCore::RenderImage::paintReplaced):
+ * rendering/RenderObject.cpp:
+ * rendering/RenderObject.h:
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::RenderText):
+ (WebCore::RenderText::setTextInternal):
+ * rendering/RenderTextControl.cpp:
+ (WebCore::RenderTextControl::setInnerTextValue):
+ (WebCore::RenderTextControl::finishText):
+
+2009-01-17 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Adele Peterson
+
+ Complete <rdar://problem/6293969>
+
+ * DerivedSources.make: include mediaControlsQT.css for Mac build.
+
+ * WebCore.xcodeproj/project.pbxproj: add mediaControlsQT.css
+
+ * css/CSSPrimitiveValueMappings.h:
+ (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): add MediaTimelineContainerPart,
+ CSSValueMediaCurrentTimeDisplay, and CSSValueMediaTimeRemainingDisplay
+
+ * css/CSSSelector.cpp:
+ (WebCore::CSSSelector::extractPseudoType): include new media controller element styles
+ * css/CSSSelector.h:
+ (WebCore::CSSSelector::): Ditto.
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector): include new media
+ controller element styles
+
+ * css/CSSValueKeywords.in: add keywords for new media time display controls
+
+ * css/mediaControls.css: adjust css for new control elements
+
+ * css/mediaControlsQT.css: Added.
+
+ * platform/ThemeTypes.h:
+ (WebCore::): add media time display controls to ControlPart
+
+ * platform/mac/WebCoreSystemInterface.h:
+ * platform/mac/WebCoreSystemInterface.mm: pass controller style to WKSI functions
+
+ * rendering/MediaControlElements.cpp:
+ (WebCore::MediaTextDisplayElement::MediaTextDisplayElement): Added
+ (WebCore::MediaTextDisplayElement::attachToParent): Added
+ (WebCore::MediaTextDisplayElement::update): Added
+ (WebCore::MediaTimeDisplayElement::MediaTimeDisplayElement): Added
+ (WebCore::MediaControlInputElement::MediaControlInputElement): Added
+ (WebCore::MediaControlInputElement::hitTest): Added
+ (WebCore::MediaControlTimelineElement::defaultEventHandler): Update the time display when
+ dragging the thumb
+ * rendering/MediaControlElements.h:
+ (WebCore::): Add MediaTextDisplayElement
+
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::createTimelineContainer): Added
+ (WebCore::RenderMedia::createTimeline): Parent is now the timeline container
+ (WebCore::RenderMedia::createCurrentTimeDisplay): Added
+ (WebCore::RenderMedia::createTimeRemainingDisplay): Added
+ (WebCore::RenderMedia::updateControls): Create new elements. Don't ever start the time update
+ timer when the time display elements are not visible
+ (WebCore::RenderMedia::formatTime): Handle negative times. Don't display 0 hours or minutes
+ (WebCore::RenderMedia::updateTimeDisplay): Do nothing when the time display elements are not
+ visible. Display time remaining as well as current time.
+ (WebCore::RenderMedia::updateControlVisibility): Don't assume opacity should be set to 0 when
+ visibility changes
+ (WebCore::RenderMedia::forwardEvent): Call element hitTest() method instead of local function
+ as we can't assume that all controls are rectangular
+ * rendering/RenderMedia.h: Updated
+
+ * rendering/RenderSlider.cpp:
+ (WebCore::RenderSlider::mouseEventIsInThumb): When slider is media timeline control, call
+ element hitTest() method instead of assuming it is rectangular
+ * rendering/RenderSlider.h: make mouseEventIsInThumb virtual
+
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::paint): Deal with time display and timeline container
+ * rendering/RenderTheme.h:
+ (WebCore::RenderTheme::paintMediaTimelineContainer): Updated
+ (WebCore::RenderTheme::paintMediaCurrentTime): Added
+ (WebCore::RenderTheme::paintMediaTimeRemaining): Added
+
+ * rendering/RenderThemeMac.h: Updated
+ * rendering/RenderThemeMac.mm:
+ (WebCore::):
+ (WebCore::mediaControllerTheme):
+ (WebCore::RenderThemeMac::adjustSliderThumbSize): Call WebKitSystemInterface to get the thumb
+ size when appropriate
+ (WebCore::RenderThemeMac::paintMediaFullscreenButton): pass controller style to render function
+ (WebCore::RenderThemeMac::paintMediaMuteButton): Ditto
+ (WebCore::RenderThemeMac::paintMediaPlayButton): Ditto
+ (WebCore::RenderThemeMac::paintMediaSeekBackButton): Ditto
+ (WebCore::RenderThemeMac::paintMediaSeekForwardButton): Ditto
+ (WebCore::RenderThemeMac::paintMediaSliderTrack): Ditto
+ (WebCore::RenderThemeMac::paintMediaSliderThumb): Ditto
+ (WebCore::RenderThemeMac::paintMediaTimelineContainer): Added
+ (WebCore::RenderThemeMac::paintMediaCurrentTime): Added
+ (WebCore::RenderThemeMac::paintMediaTimeRemaining): Added
+ (WebCore::RenderThemeMac::extraMediaControlsStyleSheet): Added
+ (WebCore::RenderThemeMac::hitTestMediaControlPart): Added
+ * rendering/style/RenderStyle.h: Updated
+ (WebCore::):
+
+2009-01-17 David Hyatt <hyatt@apple.com>
+
+ Inline a few methods in FrameView for speed.
+
+ Reviewed by Oliver Hunt
+
+ * page/FrameView.cpp:
+ * page/FrameView.h:
+ (WebCore::FrameView::layoutCount):
+ (WebCore::FrameView::needsFullRepaint):
+
+2009-01-17 David Hyatt <hyatt@apple.com>
+
+ Inline Document::documentElement(), since it is used by the (very hot) RenderObject::isRoot(). Split off
+ the code that fetches and caches the document element into a separate function and inline the part that
+ does the null check and the return of the already-cached element.
+
+ Reviewed by Oliver Hunt
+
+ * dom/Document.cpp:
+ (WebCore::Document::cacheDocumentElement):
+ * dom/Document.h:
+ (WebCore::Document::documentElement):
+
+2009-01-17 David Hyatt <hyatt@apple.com>
+
+ Minor tweaks to RenderBox::styleChange to speed it up.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::styleDidChange):
+
+2009-01-17 David Hyatt <hyatt@apple.com>
+
+ Inline FrameLoader::client().
+
+ Reviewed by Oliver Hunt
+
+ * WebCore.base.exp:
+ * loader/FrameLoader.cpp:
+ * loader/FrameLoader.h:
+ (WebCore::FrameLoader::client):
+
+2009-01-17 David Hyatt <hyatt@apple.com>
+
+ Inline some Image methods for speed. Fix CachedImage's addClient method to just use isNull rather
+ than needlessly creating a rect.
+
+ Reviewed by Oliver Hunt
+
+ * loader/CachedImage.cpp:
+ (WebCore::CachedImage::addClient):
+ * platform/graphics/Image.cpp:
+ * platform/graphics/Image.h:
+ (WebCore::Image::isNull):
+ (WebCore::Image::rect):
+ (WebCore::Image::width):
+ (WebCore::Image::height):
+
+2009-01-17 David Hyatt <hyatt@apple.com>
+
+ Avoid using the non-inlined isVariable() when adding parsed values during CSS parsing.
+
+ Reviewed by Oliver Hunt
+
+ * css/CSSParserValues.cpp:
+ (WebCore::CSSParserValueList::addValue):
+
+2009-01-17 David Hyatt <hyatt@apple.com>
+
+ Inline Document::inPageCache(), since - because of animation code - it is now called every time
+ styles change on any element and so is now super-hot.
+
+ Reviewed by Oliver Hunt
+
+ * dom/Document.cpp:
+ * dom/Document.h:
+ (WebCore::Document::inPageCache):
+
+2009-01-16 David Hyatt <hyatt@apple.com>
+
+ Take Font out of the GraphicsContext. Fonts are moderately expensive to both compare and to assign to.
+ The Font's presence in the GraphicsContext was making save/restore more expensive than it needed to be,
+ and was also causing expensive comparison checks to be made before doing alterations of the Font in the
+ GraphicsContext.
+
+ A font must now be passed as a parameter to all text drawing functions.
+
+ Reviewed by Oliver Hunt
+
+ * html/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::setFont):
+ (WebCore::CanvasRenderingContext2D::drawTextInternal):
+ * platform/graphics/GraphicsContext.cpp:
+ (WebCore::GraphicsContext::drawText):
+ (WebCore::GraphicsContext::drawBidiText):
+ (WebCore::GraphicsContext::drawHighlightForText):
+ * platform/graphics/GraphicsContext.h:
+ * platform/graphics/GraphicsContextPrivate.h:
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ * rendering/EllipsisBox.cpp:
+ (WebCore::EllipsisBox::paint):
+ * rendering/InlineTextBox.cpp:
+ (WebCore::paintTextWithShadows):
+ (WebCore::InlineTextBox::paint):
+ (WebCore::InlineTextBox::paintSelection):
+ (WebCore::InlineTextBox::paintCompositionBackground):
+ (WebCore::InlineTextBox::paintSpellingOrGrammarMarker):
+ (WebCore::InlineTextBox::paintTextMatchMarker):
+ (WebCore::InlineTextBox::paintDocumentMarkers):
+ * rendering/InlineTextBox.h:
+ * rendering/RenderFileUploadControl.cpp:
+ (WebCore::RenderFileUploadControl::paintObject):
+ * rendering/RenderImage.cpp:
+ (WebCore::RenderImage::paintReplaced):
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::paintItemForeground):
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::paint):
+ * rendering/SVGInlineTextBox.cpp:
+ (WebCore::SVGInlineTextBox::paintCharacters):
+ (WebCore::SVGInlineTextBox::paintSelection):
+ * rendering/SVGInlineTextBox.h:
+ * svg/SVGFont.cpp:
+ (WebCore::Font::drawTextUsingSVGFont):
+
+2009-01-16 David Hyatt <hyatt@apple.com>
+
+ Fix a regression from the virtualContinuation()/continuation() split where I accidentally changed
+ two if statements.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::absoluteRects):
+ (WebCore::RenderObject::absoluteQuads):
+
+2009-01-16 David Hyatt <hyatt@apple.com>
+
+ Fix a regression from my before/after optimization. Make sure the <q> element puts the document
+ into a mode where it will respect before/after rules, since <q> implicitly uses such rules.
+
+ Make sure view source mode documents also turn on before/after rules, since they are used there also.
+
+ Reviewed by Oliver Hunt
+
+ * html/HTMLElementFactory.cpp:
+ (WebCore::quoteConstructor):
+ * html/HTMLViewSourceDocument.cpp:
+ (WebCore::HTMLViewSourceDocument::HTMLViewSourceDocument):
+
+2009-01-16 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 23397: AXURL is not reported for <INPUT type="image"> elements
+ https://bugs.webkit.org/show_bug.cgi?id=23397
+
+ Report an AXURL for inputs that have an image type.
+
+ Test: accessibility/input-image-url.html
+
+ * page/AccessibilityObject.h:
+ (WebCore::AccessibilityObject::isInputImage):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::isInputImage):
+ (WebCore::AccessibilityRenderObject::url):
+ * page/AccessibilityRenderObject.h:
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper accessibilityAttributeNames]):
+
+2009-01-16 Adele Peterson <adele@apple.com>
+
+ Windows build fix.
+
+ * loader/FrameLoader.cpp: (WebCore::FrameLoader::logCanCachePageDecision):
+
+2009-01-16 Steve Falkenburg <sfalken@apple.com>
+
+ <rdar://problem/6502511> Safari crashes if it's running while the desktop theme is changed.
+
+ This was caused by mismatched ENABLE definitions across WebCore and WebKit.
+
+ Several virtual methods were added to RenderTheme.h, conditionalized by ENABLE(VIDEO).
+ In addition to adding ENABLE_VIDEO to WebKit, this change also adds ENABLE_DATABASE and ENABLE_ICONDATABASE
+ to Windows WebCore/WebKit, and adds ENABLE_WORKERS, and several ENABLE_SVG_ flags to WebKit on Windows.
+ Our Windows ENABLE flags now match Mac.
+
+ Reviewed by Adele Peterson.
+
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.vcproj/build-generated-files.sh:
+
+2009-01-16 Mark Rowe <mrowe@apple.com>
+
+ 40,000!
+
+ * ChangeLog: Point out revision 40,000.
+
+2009-01-16 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Justin Garcia.
+
+ Make surroundNodeRangeWithElement call insertNodeBefore implicitly
+ Make insertNodeBefore take PassRefPtr
+ Clean up the use of PassRefPtr vs. raw pointers a few places in the editing code.
+ https://bugs.webkit.org/show_bug.cgi?id=23389
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::applyRelativeFontStyleChange):
+ (WebCore::ApplyStyleCommand::applyTextDecorationStyle):
+ (WebCore::ApplyStyleCommand::surroundNodeRangeWithElement):
+ (WebCore::ApplyStyleCommand::addInlineStyleIfNeeded):
+ * editing/ApplyStyleCommand.h:
+ * editing/CompositeEditCommand.cpp:
+ (WebCore::CompositeEditCommand::insertNodeAt):
+ * editing/IndentOutdentCommand.cpp:
+ (WebCore::IndentOutdentCommand::prepareBlockquoteLevelForInsertion):
+ * editing/InsertLineBreakCommand.cpp:
+ (WebCore::InsertLineBreakCommand::doApply):
+ * editing/InsertParagraphSeparatorCommand.cpp:
+ (WebCore::InsertParagraphSeparatorCommand::doApply):
+ * editing/InsertTextCommand.cpp:
+ (WebCore::InsertTextCommand::insertTab):
+ * editing/ModifySelectionListLevel.cpp:
+ (WebCore::IncreaseSelectionListLevelCommand::doApply):
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplacementFragment::removeNodePreservingChildren):
+ (WebCore::ReplacementFragment::insertNodeBefore):
+ (WebCore::ReplacementFragment::removeInterchangeNodes):
+ (WebCore::ReplaceSelectionCommand::doApply):
+ (WebCore::ReplaceSelectionCommand::insertNodeAfterAndUpdateNodesInserted):
+ (WebCore::ReplaceSelectionCommand::insertNodeAtAndUpdateNodesInserted):
+ (WebCore::ReplaceSelectionCommand::insertNodeBeforeAndUpdateNodesInserted):
+ * editing/ReplaceSelectionCommand.h:
+
+2009-01-16 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 23393: TextField has AXTitle and AXTitleUIElement
+ https://bugs.webkit.org/show_bug.cgi?id=23393
+
+ Test: accessibility/double-title.html
+
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::title):
+
+2009-01-16 Adam Treat <adam.treat@torchmobile.com>
+
+ The correct build fix for all platforms.
+
+ * platform/graphics/Font.h:
+
+2009-01-16 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix the Qt build.
+
+ * platform/graphics/Font.h:
+
+2009-01-16 David Hyatt <hyatt@apple.com>
+
+ Add a new flag (similar to first-line and first-letter) to Document to track whether any before/after rules
+ are being used. If not, don't waste time probing for those pseudo element styles.
+
+ Reviewed by Sam Weinig
+
+ * css/CSSGrammar.y:
+ * dom/Document.cpp:
+ (WebCore::Document::Document):
+ * dom/Document.h:
+ (WebCore::Document::usesBeforeAfterRules):
+ (WebCore::Document::setUsesBeforeAfterRules):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::styleDidChange):
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::updateBeforeAfterContentForContainer):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::styleDidChange):
+ (WebCore::RenderInline::addChildToFlow):
+ (WebCore::RenderInline::splitInlines):
+
+2009-01-16 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23394
+ Remove unnecessary calls to setDeferringTimers().
+
+ Use of this function was obsoleted by better handling of EINTR.
+
+ * platform/network/curl/ResourceHandleManager.cpp:
+ (WebCore::ResourceHandleManager::downloadTimerCallback): removed setDeferringTimers calls.
+
+2009-01-16 David Hyatt <hyatt@apple.com>
+
+ Fix badness with the cursor CSS property. For all links and form controls, resetting to a value of auto
+ was resulting in the creation of a cursor list. clearCursorList was creating a new list rather than just
+ nulling out the pointer. Since addCursor already lazily recreates the list, in the case of simple cursor types,
+ the clear method was wastefully creating a completely unnecessary list for all of these elements.
+
+ Also optimized the setting of simple cursor values to not alter the RenderStyle's cursor setting if it is already
+ set to the same value. Since this is the common case, it prevents a fault and copy of StyleInheritedData for
+ all links and form controls.
+
+ This is a PLT speedup.
+
+ Reviewed by Oliver Hunt
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::applyProperty):
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::clearCursorList):
+
+2009-01-16 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23384
+ PLATFORM(CHROMIUM) needs to delegate BackForwardList.cpp methods to the embedder
+
+ * history/BackForwardList.h:
+ (WebCore::BackForwardListClient::~BackForwardListClient):
+ (WebCore::BackForwardList::setClient):
+ * history/BackForwardListChromium.cpp: Added.
+
2009-01-16 Dan Bernstein <mitz@apple.com>
Reviewed by Kevin Decker and Adam Roben.
@@ -677,6 +51188,305 @@
* rendering/RenderPartObject.cpp:
(WebCore::RenderPartObject::updateWidget): Added a null check.
+2009-01-16 David Hyatt <hyatt@apple.com>
+
+ Split continuation() into virtual and non-virtual versions so that the non-virtual version can
+ be used whereever possible. Eventually the virtual method can be eliminated completely.
+
+ Reviewed by Sam Weinig and Oliver Hunt
+
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::isKeyboardFocusable):
+ * page/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::anchorElement):
+ * rendering/InlineFlowBox.cpp:
+ (WebCore::InlineFlowBox::determineSpacingForFlowBoxes):
+ (WebCore::InlineFlowBox::paint):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::removeChild):
+ * rendering/RenderContainer.cpp:
+ (WebCore::RenderContainer::updateBeforeAfterContentForContainer):
+ * rendering/RenderFlow.h:
+ (WebCore::RenderFlow::virtualContinuation):
+ (WebCore::RenderFlow::continuation):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::positionForCoordinates):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::absoluteRects):
+ (WebCore::RenderObject::absoluteQuads):
+ (WebCore::RenderObject::addFocusRingRects):
+ (WebCore::RenderObject::repaintAfterLayoutIfNeeded):
+ (WebCore::RenderObject::getAbsoluteRepaintRectWithOutline):
+ (WebCore::RenderObject::handleDynamicFloatPositionChange):
+ (WebCore::RenderObject::hoverAncestor):
+ (WebCore::RenderObject::updateDragState):
+ (WebCore::RenderObject::updateHitTestResult):
+ (WebCore::RenderObject::getTextDecorationColors):
+ (WebCore::RenderObject::adjustRectForOutlineAndShadow):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::virtualContinuation):
+
+2009-01-16 David Hyatt <hyatt@apple.com>
+
+ Inline the methods of Font for obtaining metrics such as ascent, descent and line spacing.
+
+ Reviewed by ggaren
+
+ * platform/graphics/Font.cpp:
+ * platform/graphics/Font.h:
+ (WebCore::Font::width):
+ (WebCore::Font::ascent):
+ (WebCore::Font::descent):
+ (WebCore::Font::lineSpacing):
+ (WebCore::Font::lineGap):
+ (WebCore::Font::xHeight):
+ (WebCore::Font::unitsPerEm):
+ (WebCore::Font::spaceWidth):
+
+2009-01-16 Sam Weinig <sam@webkit.org>
+
+ Reviewed by David Hyatt.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23388
+ Remove FrameViewPrivate
+
+ Removes an indirection and is a small speedup on PLT.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::FrameView):
+ (WebCore::FrameView::~FrameView):
+ (WebCore::FrameView::reset):
+ (WebCore::FrameView::resetScrollbars):
+ (WebCore::FrameView::init):
+ (WebCore::FrameView::clear):
+ (WebCore::FrameView::didFirstLayout):
+ (WebCore::FrameView::initScrollbars):
+ (WebCore::FrameView::updateDefaultScrollbarState):
+ (WebCore::FrameView::setCanHaveScrollbars):
+ (WebCore::FrameView::applyOverflowToViewport):
+ (WebCore::FrameView::layoutCount):
+ (WebCore::FrameView::needsFullRepaint):
+ (WebCore::FrameView::layoutRoot):
+ (WebCore::FrameView::layout):
+ (WebCore::FrameView::setMediaType):
+ (WebCore::FrameView::mediaType):
+ (WebCore::FrameView::useSlowRepaints):
+ (WebCore::FrameView::setUseSlowRepaints):
+ (WebCore::FrameView::addSlowRepaintObject):
+ (WebCore::FrameView::removeSlowRepaintObject):
+ (WebCore::FrameView::scrollRectIntoViewRecursively):
+ (WebCore::FrameView::setScrollPosition):
+ (WebCore::FrameView::repaintContentRectangle):
+ (WebCore::FrameView::beginDeferredRepaints):
+ (WebCore::FrameView::endDeferredRepaints):
+ (WebCore::FrameView::scheduleRelayout):
+ (WebCore::FrameView::scheduleRelayoutOfSubtree):
+ (WebCore::FrameView::layoutPending):
+ (WebCore::FrameView::needsLayout):
+ (WebCore::FrameView::unscheduleRelayout):
+ (WebCore::FrameView::isTransparent):
+ (WebCore::FrameView::setTransparent):
+ (WebCore::FrameView::baseBackgroundColor):
+ (WebCore::FrameView::setBaseBackgroundColor):
+ (WebCore::FrameView::shouldUpdateWhileOffscreen):
+ (WebCore::FrameView::setShouldUpdateWhileOffscreen):
+ (WebCore::FrameView::scheduleEvent):
+ (WebCore::FrameView::pauseScheduledEvents):
+ (WebCore::FrameView::resumeScheduledEvents):
+ (WebCore::FrameView::performPostLayoutTasks):
+ (WebCore::FrameView::updateOverflowStatus):
+ (WebCore::FrameView::dispatchScheduledEvents):
+ (WebCore::FrameView::wasScrolledByUser):
+ (WebCore::FrameView::setWasScrolledByUser):
+ (WebCore::FrameView::paintContents):
+ (WebCore::FrameView::setPaintRestriction):
+ (WebCore::FrameView::isPainting):
+ (WebCore::FrameView::setNodeToDraw):
+ * page/FrameView.h:
+ (WebCore::FrameView::setIsVisuallyNonEmpty): Inline.
+
+2009-01-14 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Bug 23237: Some HTML constructors in HTMLElementFactory needs
+ an HTMLFormElement argument
+
+ - Added 'constructorNeedsFormElement' parameter to make_names.pl to account
+ for HTML form elements.
+
+ - Added the new information to HTMLTagNames.in.
+
+ * dom/make_names.pl:
+ * html/HTMLTagNames.in:
+
+2009-01-16 David Hyatt <hyatt@apple.com>
+
+ Eliminate a bunch of save/restore pairs from commonly used GraphicsContext methods. The most common reason
+ for needing save/restore in the line-drawing methods was antialiasing, so this has now been made part of
+ the cross-platform graphics state. By being able to query for the current antialiasing setting, antialiasing
+ can be temporarily changed and then restored back to the real value without needing to do a save/restore.
+
+ The line drawing code also set the fill color to the stroke color and relied on save/restore to prevent
+ a permanent mutation of the fill color in the CGContext. The new code just restores the fill color back
+ to its original value without doing the much more expensive save/restore.
+
+ Reviewed by Oliver Hunt
+
+ * platform/graphics/GraphicsContext.cpp:
+ (WebCore::GraphicsContext::setShouldAntialias):
+ (WebCore::GraphicsContext::shouldAntialias):
+ * platform/graphics/GraphicsContext.h:
+ * platform/graphics/GraphicsContextPrivate.h:
+ (WebCore::GraphicsContextState::GraphicsContextState):
+ * platform/graphics/cairo/GraphicsContextCairo.cpp:
+ (WebCore::GraphicsContext::setPlatformShouldAntialias):
+ * platform/graphics/cg/GraphicsContextCG.cpp:
+ (WebCore::GraphicsContext::drawLine):
+ (WebCore::GraphicsContext::drawConvexPolygon):
+ (WebCore::GraphicsContext::drawLineForText):
+ (WebCore::GraphicsContext::setPlatformShouldAntialias):
+ * platform/graphics/qt/GraphicsContextQt.cpp:
+ (WebCore::GraphicsContext::setPlatformShouldAntialias):
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::setPlatformShouldAntialias):
+ * platform/graphics/wx/GraphicsContextWx.cpp:
+ (WebCore::GraphicsContext::setPlatformShouldAntialias):
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::paint):
+
+2009-01-16 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Clean up the bridge code and get rid of Field::name() and Method::name().
+
+ * bridge/c/c_instance.cpp:
+ (JSC::Bindings::CInstance::invokeMethod):
+ * bridge/c/c_runtime.cpp:
+ * bridge/c/c_runtime.h:
+ (JSC::Bindings::CField::identifier):
+ (JSC::Bindings::CMethod::identifier):
+ * bridge/jni/jni_class.cpp:
+ (JavaClass::JavaClass):
+ * bridge/jni/jni_instance.cpp:
+ (JavaInstance::invokeMethod):
+ * bridge/jni/jni_runtime.cpp:
+ (JavaField::valueFromInstance):
+ (JavaField::setValueToInstance):
+ (JavaMethod::methodID):
+ * bridge/jni/jni_runtime.h:
+ (JSC::Bindings::JavaField::name):
+ (JSC::Bindings::JavaMethod::name):
+ * bridge/objc/objc_class.mm:
+ (JSC::Bindings::ObjcClass::methodsNamed):
+ * bridge/objc/objc_instance.mm:
+ (ObjcInstance::invokeMethod):
+ * bridge/objc/objc_runtime.h:
+ (JSC::Bindings::ObjcMethod::isFallbackMethod):
+ (JSC::Bindings::ObjcMethod::selector):
+ * bridge/objc/objc_runtime.mm:
+ (JSC::Bindings::ObjcMethod::ObjcMethod):
+ (JSC::Bindings::ObjcMethod::getMethodSignature):
+ (JSC::Bindings::ObjcField::ObjcField):
+ (JSC::Bindings::ObjcField::valueFromInstance):
+ (JSC::Bindings::ObjcField::setValueToInstance):
+ (JSC::Bindings::callObjCFallbackObject):
+ * bridge/runtime.h:
+
+2009-01-16 David Hyatt <hyatt@apple.com>
+
+ Optimize RenderText::styleDidChange. Don't call the base class, which does extra meaningless work.
+ Instead just do the one check we need to do (for a diff of layout) and mark dirty as appropriate.
+ Clean up the base class method also to just bail early if no m_parent is set instead of repeatedly checking
+ for the existence of m_parent in each if clause.
+
+ Reviewed by Darin Adler
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::styleDidChange):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::styleDidChange):
+
+2009-01-16 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ Bug 23387: AX hierarchy is incorrect when iframes are present
+ https://bugs.webkit.org/show_bug.cgi?id=23387
+
+ The AX hierarchy is incorrect when iframes are present.
+
+ Test: accessibility/iframe-bastardization.html
+
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper renderWidgetChildren]):
+
+2009-01-16 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/3541409> - Split up some back/forward cache decision making and add detailed logging to
+ better understand what the common disqualifiers are.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::canCachePageContainingThisFrame):
+ (WebCore::FrameLoader::canCachePage): Split off what will be per-frame decision making into canCacheSubframe.
+ (WebCore::FrameLoader::logCanCachePageDecision): Detailed logging about why a page may not be considered for
+ the back/forward cache.
+ (WebCore::FrameLoader::logCanCacheFrameDecision): Same detailed logging on the per-frame basis.
+ (WebCore::FrameLoader::commitProvisionalLoad): Move the m_client->canCachePage() call into canCachePageContainingThisFrame().
+ * loader/FrameLoader.h:
+
+2009-01-16 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Test: transitions/hang-with-bad-transition-list.html
+
+ Fixed https://bugs.webkit.org/show_bug.cgi?id=23088.
+ This was happening because I was calling setChanged() from inside updateRendering()
+ which causes an infinite loop. I fixed this by deferring the setChanged to the next
+ run loop iteration. That made it not infinite loop, but it still retriggers the
+ transition forever. The problem is that there is both an 'all' and specific transition
+ on 'opacity'. This tickled a bug in AnimationController which causes the opacity
+ transition to get constantly cancelled and then retriggered. The problem is that
+ the specific opacity transition has a duration of 0. I got rid of the logic to
+ flush out 0 duration transitions and it is no longer constantly triggered. The
+ logic to flush them was just an optimization, and you really need to keep them
+ around to make the logic to override earlier animations by later ones work. And there is
+ very little overhead in this case anyway, so the optimization was not that useful.
+
+ I made a LayoutTest from the original testcase which tests both the infinite
+ loop and constantly triggering animation cases.
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::AnimationBase::updateStateMachine):
+ * page/animation/AnimationController.cpp:
+ (WebCore::AnimationControllerPrivate::updateRenderingDispatcherFired):
+ (WebCore::AnimationControllerPrivate::addNodeChangeToDispatch):
+ (WebCore::AnimationController::addNodeChangeToDispatch):
+ * page/animation/AnimationController.h:
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimationPrivate::updateTransitions):
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::adjustAnimations):
+ (WebCore::RenderStyle::adjustTransitions):
+
+2009-01-16 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 23385: crash at com.apple.WebCore WebCore::HTMLAnchorElement::isKeyboardFocusable
+ https://bugs.webkit.org/show_bug.cgi?id=23385
+
+ Option-tabbing through the page mentioned in the bug causes a crash
+
+ Test: fast/events/tab-crash-with-image-map.html
+
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::isKeyboardFocusable):
+
2009-01-16 Thiago Macieira <thiago.macieira@nokia.com>
Reviewed by Simon Hausmann.
@@ -716,25 +51526,1002 @@
* rendering/RenderPartObject.cpp:
(WebCore::RenderPartObject::updateWidget):
-2009-01-09 Darin Adler <darin@apple.com>
+2009-01-15 Chris Marrin <cmarrin@apple.com>
- Reviewed by Jon Honeycutt.
+ Reviewed by Sam Weinig.
- Bug 22913: REGRESSION: Space bar doesn't scroll on windows
- https://bugs.webkit.org/show_bug.cgi?id=22913
- rdar://problem/6479834
+ Got rid of .idl file in Resources for bug https://bugs.webkit.org/show_bug.cgi?id=21421.
+ Also fixed the test case to work on ppc.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
+2009-01-16 Ariya Hidayat <ariya.hidayat@trolltech.com>
+
+ Another attempt at fixing the Qt build.
+
+ * bridge/qt/qt_instance.cpp:
+ (JSC::Bindings::QtInstance::getInstance):
+
+2009-01-16 David Hyatt <hyatt@apple.com>
+
+ Fix for 1.85% PLT regression. Since asking if a frame is "complete" actually aggressively decodes
+ the frame, we add an optimization when advancing animations. If we have received all of the animated
+ image's data, then obviously we can go ahead and advance safely. This prevents the first draw of an image
+ from decoding two frames' worth of data in the case where all of the image's data has been received.
+
+ While this fixes the cached case, there could in fact be a regression on the uncached PLT from this change
+ as well. It's not immediately clear how that regression would be fixed, though, and it would likely be
+ a much smaller percentage of that overall uncached time.
+
+ Reviewed by Dan Bernstein
+
+ * platform/graphics/BitmapImage.cpp:
+ (WebCore::BitmapImage::startAnimation):
+
+2009-01-15 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23349
+ Don't store obsolete caches in disk storage
+
+ * loader/ResourceLoader.cpp:
+ (WebCore::ResourceLoader::ResourceLoader):
+ (WebCore::ResourceLoader::load):
+ (WebCore::ResourceLoader::scheduleLoadFallbackResourceFromApplicationCache):
+ * loader/ResourceLoader.h:
+ Don't maintain m_wasLoadedFromApplicationCache, which was never used.
+
+ * loader/appcache/ApplicationCache.cpp: (WebCore::ApplicationCache::addResource):
+ Assert that only implicit and dynamic resources can be added after the cache has been fully
+ loaded and stored to disk database.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::cacheDestroyed): Don't remove non-newest caches from disk
+ database, as this is now done whenever the cache becomes obsolete.
+ (WebCore::ApplicationCacheGroup::setNewestCache): Remove an obsolete cache from disk storage.
+
+ * loader/appcache/ApplicationCacheStorage.cpp: (WebCore::ApplicationCacheStorage::cacheGroupDestroyed):
+ A cache group that has never been saved should not be remembered in m_cacheHostSet. Changed
+ the check to no longer rely on savedNewestCachePointer.
+
+2009-01-15 Dimitri Dupuis-Latour <dupuislatour@apple.com>
+
+ <rdar://problem/5870656> selectorText and cssText are clipped for :nth-child() and :nth-of-type();
+
+ Reviewed by Timothy Hatcher.
+
+ * css/CSSSelector.cpp:
+ (WebCore::CSSSelector::selectorText):
+
+2009-01-15 Justin Garcia <justin.garcia@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ <rdar://problem/6444148> Styling a selection that ends in a line break can sometimes style what's after the break
+
+ If the range to style ended at [node, 0] or inside node (and if for some reason the node didn't get split),
+ applyInlineStyle would style node.
+
+ * editing/ApplyStyleCommand.cpp:
+ (WebCore::ApplyStyleCommand::applyInlineStyle): Rename pastLast to pastEndNode, since it doesn't come from
+ Range::pastLastNode() anymore. pastEndNode is the node after the last one that is fully selected, since
+ the work done in the loop that follows should only be performed on fully selected nodes.
+ * editing/InsertLineBreakCommand.cpp:
+ (WebCore::InsertLineBreakCommand::doApply): Explicitly handle insertion into containers and after non-text nodes.
+ Those were handled accidently before.
+ * editing/htmlediting.cpp:
+ (WebCore::caretMaxOffset): In various places we call this with a container and expect to be given the number
+ of children in that container, so I changed it to match that. RenderBR and RenderObject::caretMaxOffset() should
+ also be eliminated since maxDeepOffset handles non-text nodes.
+
+2009-01-15 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Geoffrey Garen.
+
+ Get rid of the dreaded BindingLanguage once and for all. Also get rid of Instance::getInstance.
+
+ * bridge/c/c_instance.h:
+ * bridge/jni/jni_instance.h:
+ * bridge/objc/objc_instance.h:
+ * bridge/qt/qt_instance.h:
+ * bridge/runtime.cpp:
+ * bridge/runtime.h:
+ * bridge/runtime_object.h:
+
+2009-01-15 David Hyatt <hyatt@apple.com>
+
+ Eliminate an extra virtual function call that occurs for every single RenderText by moving the SVG-specific
+ code that was placed into RenderText::styleDidChange into RenderSVGInlineText::styleDidChange.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::styleDidChange):
+ * rendering/RenderSVGInlineText.h:
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::styleDidChange):
+
+2009-01-15 Anders Carlsson <andersca@apple.com>
+
+ Another attempt at fixing the Qt build.
+
+ * bridge/qt/qt_instance.cpp:
+ (JSC::Bindings::QtInstance::getOwnPropertySlot):
+ (JSC::Bindings::QtInstance::put):
+ * bridge/qt/qt_instance.h:
+ * bridge/runtime.h:
+ (JSC::Bindings::Instance::getOwnPropertySlot):
+ (JSC::Bindings::Instance::put):
+ * bridge/runtime_object.cpp:
+ (JSC::RuntimeObjectImp::getOwnPropertySlot):
+ (JSC::RuntimeObjectImp::put):
+
+2009-01-15 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Add QtInstance::getInstance and start using it.
+
+ * bridge/qt/qt_instance.cpp:
+ (JSC::Bindings::QtRuntimeObjectImp::mark):
+ (JSC::Bindings::QtRuntimeObjectImp::classInfo):
+ (JSC::Bindings::):
+ (JSC::Bindings::QtInstance::getInstance):
+ * bridge/qt/qt_instance.h:
+ * bridge/qt/qt_runtime.cpp:
+ (JSC::Bindings::convertValueToQVariant):
+
+2009-01-15 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Add the ability for Instance objects to override getOwnPropertySlot/put for runtime objects.
+
+ * bridge/qt/qt_instance.cpp:
+ (JSC::Bindings::QtInstance::getOwnPropertySlot):
+ (JSC::Bindings::QtInstance::put):
+ * bridge/qt/qt_instance.h:
+ * bridge/runtime.h:
+ (JSC::Bindings::Instance::getOwnPropertySlot):
+ (JSC::Bindings::Instance::put):
+ * bridge/runtime_object.cpp:
+ (JSC::RuntimeObjectImp::getOwnPropertySlot):
+ (JSC::RuntimeObjectImp::put):
+
+2009-01-15 Anders Carlsson <andersca@apple.com>
+
+ Fix the QT build.
+
+ * bridge/qt/qt_instance.cpp:
+ (JSC::Bindings::QtInstance::createRuntimeObject):
+ * bridge/qt/qt_instance.h:
+
+2009-01-15 David Hyatt <hyatt@apple.com>
+
+ Fix for <rdar://problem/6500278> REGRESSION: 3.5% of samples on iBench in WebCore::Frame::setZoomFactor
+
+ setZoomFactor was supposed to bail if both the zoom factor and mode were the same. The mode check was
+ buggy and doing the wrong thing.
+
+ Reviewed by Darin Adler
+
+ * page/Frame.cpp:
+ (WebCore::Frame::setZoomFactor):
+
+2009-01-15 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Geoffrey Garen.
+
+ Make Instance::createRuntimeObject a virtual function and override it for QtInstance.
+
+ * bindings/js/JSPluginElementFunctions.cpp:
+ (WebCore::getRuntimeObject):
+ * bridge/c/c_utility.cpp:
+ (JSC::Bindings::convertNPVariantToValue):
+ * bridge/jni/jni_instance.cpp:
+ (JavaInstance::invokeMethod):
+ * bridge/jni/jni_jsobject.mm:
+ (JavaJSObject::convertJObjectToValue):
+ * bridge/jni/jni_runtime.cpp:
+ (JavaField::valueFromInstance):
+ (JavaArray::valueAt):
+ * bridge/objc/objc_utility.mm:
+ (JSC::Bindings::convertObjcValueToValue):
+ * bridge/qt/qt_instance.cpp:
+ (JSC::Bindings::QtInstance::getRuntimeObject):
+ (JSC::Bindings::QtInstance::createRuntimeObject):
+ * bridge/qt/qt_instance.h:
+ * bridge/qt/qt_runtime.cpp:
+ (JSC::Bindings::convertQVariantToValue):
+ (JSC::Bindings::QtConnectionObject::execute):
+ * bridge/runtime.cpp:
+ (JSC::Bindings::Instance::createRuntimeObject):
+ * bridge/runtime.h:
+
+2009-01-15 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23354
+ Fix up graphics/chromium files to account for Uniscribe style scrubbing.
+
+ * platform/graphics/chromium/FontChromiumWin.cpp:
+ (WebCore::windowsCanHandleTextDrawing):
+ (WebCore::Font::selectionRectForComplexText):
+ (WebCore::Font::drawComplexText):
+ (WebCore::Font::floatWidthForComplexText):
+ (WebCore::Font::offsetForPositionForComplexText):
+ * platform/graphics/chromium/GlyphPageTreeNodeChromiumWin.cpp:
+ (WebCore::fillNonBMPGlyphs):
+
+2009-01-15 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23333
+ Adjust due to a name change that happened in a WebKit.
+
+ * svg/graphics/skia/SVGPaintServerPatternSkia.cpp:
+ (WebCore::SVGPaintServerPattern::setup):
+
+2009-01-15 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23340
+ Add remaining bits of graphics/chromium.
+
+ * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp: Added.
+ (WebCore::scaleEmToUnits):
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::platformDestroy):
+ (WebCore::SimpleFontData::smallCapsFontData):
+ (WebCore::SimpleFontData::containsCharacters):
+ (WebCore::SimpleFontData::determinePitch):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ * platform/graphics/chromium/SimpleFontDataLinux.cpp: Added.
+ (WebCore::SimpleFontData::platformInit):
+ (WebCore::SimpleFontData::platformDestroy):
+ (WebCore::SimpleFontData::smallCapsFontData):
+ (WebCore::SimpleFontData::containsCharacters):
+ (WebCore::SimpleFontData::determinePitch):
+ (WebCore::SimpleFontData::platformWidthForGlyph):
+ * platform/graphics/chromium/ThemeHelperChromiumWin.cpp: Added.
+ (WebCore::ThemeHelperWin::ThemeHelperWin):
+ (WebCore::ThemeHelperWin::~ThemeHelperWin):
+ * platform/graphics/chromium/ThemeHelperChromiumWin.h: Added.
+ (WebCore::ThemeHelperWin::):
+ (WebCore::ThemeHelperWin::context):
+ (WebCore::ThemeHelperWin::rect):
+ * platform/graphics/chromium/UniscribeHelper.cpp: Added.
+ (WebCore::treatAsSpace):
+ (WebCore::containsMissingGlyphs):
+ (WebCore::setLogFontAndStyle):
+ (WebCore::UniscribeHelper::UniscribeHelper):
+ (WebCore::UniscribeHelper::~UniscribeHelper):
+ (WebCore::UniscribeHelper::initWithOptionalLengthProtection):
+ (WebCore::UniscribeHelper::width):
+ (WebCore::UniscribeHelper::justify):
+ (WebCore::UniscribeHelper::characterToX):
+ (WebCore::UniscribeHelper::xToCharacter):
+ (WebCore::UniscribeHelper::draw):
+ (WebCore::UniscribeHelper::firstGlyphForCharacter):
+ (WebCore::UniscribeHelper::fillRuns):
+ (WebCore::UniscribeHelper::shape):
+ (WebCore::UniscribeHelper::fillShapes):
+ (WebCore::UniscribeHelper::fillScreenOrder):
+ (WebCore::UniscribeHelper::adjustSpaceAdvances):
+ (WebCore::UniscribeHelper::applySpacing):
+ (WebCore::UniscribeHelper::advanceForItem):
+ * platform/graphics/chromium/UniscribeHelper.h: Added.
+ (WebCore::UniscribeHelper::directionalOverride):
+ (WebCore::UniscribeHelper::setDirectionalOverride):
+ (WebCore::UniscribeHelper::inhibitLigate):
+ (WebCore::UniscribeHelper::setInhibitLigate):
+ (WebCore::UniscribeHelper::letterSpacing):
+ (WebCore::UniscribeHelper::setLetterSpacing):
+ (WebCore::UniscribeHelper::spaceWidth):
+ (WebCore::UniscribeHelper::setSpaceWidth):
+ (WebCore::UniscribeHelper::wordSpacing):
+ (WebCore::UniscribeHelper::setWordSpacing):
+ (WebCore::UniscribeHelper::setAscent):
+ (WebCore::UniscribeHelper::init):
+ (WebCore::UniscribeHelper::tryToPreloadFont):
+ (WebCore::UniscribeHelper::Shaping::Shaping):
+ (WebCore::UniscribeHelper::Shaping::glyphLength):
+ (WebCore::UniscribeHelper::Shaping::charLength):
+ (WebCore::UniscribeHelper::Shaping::effectiveAdvances):
+ (WebCore::UniscribeHelper::nextWinFontData):
+ (WebCore::UniscribeHelper::resetFontIndex):
+ * platform/graphics/chromium/UniscribeHelperTextRun.cpp: Added.
+ (WebCore::UniscribeHelperTextRun::UniscribeHelperTextRun):
+ (WebCore::UniscribeHelperTextRun::tryToPreloadFont):
+ (WebCore::UniscribeHelperTextRun::nextWinFontData):
+ (WebCore::UniscribeHelperTextRun::resetFontIndex):
+ * platform/graphics/chromium/UniscribeHelperTextRun.h: Added.
+
+2009-01-15 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Fixed Windows project file after https://bugs.webkit.org/show_bug.cgi?id=21421
+
+ * WebCore.vcproj/WebCore.vcproj:
+
+2009-01-15 Aaron Boodman <aa@chromium.org>
+
+ Reviewed by Adam Roben.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15279
+ Right clicking over text (or multiple spaces) auto selects the word
+ (or multiple spaces) under it, which is not a desirable effect for some
+ platforms.
* page/EventHandler.cpp:
- (WebCore::EventHandler::defaultKeyboardEventHandler): Added code to call
- defaultSpaceEventHandler.
- (WebCore::EventHandler::defaultSpaceEventHandler): Added. Scrolls down or up based
- on the shift key.
- * page/EventHandler.h: Added defaultSpaceEventHandler.
+ (WebCore::EventHandler::sendContextMenuEvent):
+ Don't select words on right-click on Chromium.
- * platform/mac/ScrollViewMac.mm:
- (WebCore::ScrollView::platformScroll): Return false, because this function does
- not scroll. In an earlier version of this patch, I used this to prevent the
- patch from affecting the Mac, but I decided to use #if instead.
+2009-01-15 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23345
+ SharedBuffer.h should include wtf/OwnPtr.h
+
+ * platform/SharedBuffer.h:
+
+2009-01-14 David Kilzer <ddkilzer@apple.com>
+
+ Bug 23338: Make "Streamline Inspector Source" build script check for a directory before using it
+
+ <https://bugs.webkit.org/show_bug.cgi?id=23338>
+
+ Reviewed by Timothy Hatcher.
+
+ * WebCore.xcodeproj/project.pbxproj: Check to see if
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/inspector"
+ exists before trying to change directories into it and then
+ deleting, modifying and adding files to it.
+
+2009-01-14 miggilin <mr.diggilin@gmail.com>
+
+ Reviewed by Kevin Ollivier.
+
+ Fixing wx compilation for wx 2.9/trunk.
+
+ * platform/graphics/wx/FontPlatformData.h:
+ (WebCore::FontPlatformData::operator==):
+ (WebCore::FontPlatformData::computeHash):
+ * platform/graphics/wx/GraphicsContextWx.cpp:
+ (WebCore::GraphicsContext::clip):
+ (WebCore::GraphicsContext::setCompositeOperation):
+ * platform/graphics/wx/ImageSourceWx.cpp:
+ (WebCore::ImageSource::createFrameAtIndex):
+ * platform/graphics/wx/PathWx.cpp:
+ (WebCore::Path::contains):
+ * platform/wx/RenderThemeWx.cpp:
+ (WebCore::RenderThemeWx::paintButton):
+ (WebCore::RenderThemeWx::paintTextField):
+ (WebCore::RenderThemeWx::paintMenuList):
+ * platform/wx/wxcode/gtk/non-kerned-drawing.cpp:
+
+2009-01-14 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build fix. Adding WebKitCSSMatrix.
+
+ * WebCoreSources.bkl:
+
+2009-01-14 Adam Treat <adam.treat@torchmobile.com>
+
+ Prospective build fix for Qt following r39922.
+
+ * WebCore.pro:
+
+2009-01-14 Darin Adler <darin@apple.com>
+
+ Fix debug build.
+
+ * bindings/js/JSWebKitCSSMatrixConstructor.cpp:
+ (WebCore::JSWebKitCSSMatrixConstructor::JSWebKitCSSMatrixConstructor):
+ Use ASSERT_UNUSED.
+
+2009-01-14 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23335
+ <rdar://problem/6247650> Update <input type="search"> for RenderThemeWin
+
+ No new tests added. In the future, we need to update DumpRenderTree to be able to run with different RenderThemes and
+ we'll need a separate set of results for different themes.
+
+ * css/themeWin.css: Renable search fields. Added new rules for sub-element placement.
+
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::textBlockWidth): Consider margin set on the sub-elements when computing the
+ desired width for the text block.
+
+ * rendering/RenderThemeWin.cpp:
+ (WebCore::RenderThemeWin::supportsFocus): Treat SearchFieldPart the same as TextFieldPart.
+ (WebCore::RenderThemeWin::determineState): ditto.
+ (WebCore::RenderThemeWin::getClassicThemeData): ditto.
+ (WebCore::RenderThemeWin::getThemeData): ditto.
+ (WebCore::RenderThemeWin::paintSearchFieldCancelButton): Draw a scaled, vertically centered, version of the new artwork.
+ (WebCore::RenderThemeWin::paintSearchFieldResultsDecoration): ditto.
+ (WebCore::RenderThemeWin::paintSearchFieldResultsButton): ditto.
+ (WebCore::RenderThemeWin::adjustSearchFieldCancelButtonStyle): Set the scaled width and height.
+ (WebCore::RenderThemeWin::adjustSearchFieldResultsDecorationStyle): ditto.
+ (WebCore::RenderThemeWin::adjustSearchFieldResultsButtonStyle): ditto.
+
+2009-01-14 Alp Toker <alp@nuanti.com>
+
+ GTK+ build fix following r39922.
+ Add WebKitCSSMatrix to the build system.
+
+ * GNUmakefile.am:
+
+2009-01-14 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Implemented 2D WebKitCSSMatrix
+ https://bugs.webkit.org/show_bug.cgi?id=21421
+
+ Test: transforms/2d/cssmatrix-interface.xhtml
+
+ * DerivedSources.make:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSDOMWindowBase.cpp:
+ (jsDOMWindowBaseWebKitCSSMatrix):
+ (setJSDOMWindowBaseWebKitCSSMatrix):
+ * bindings/js/JSWebKitCSSMatrixConstructor.cpp: Added.
+ (WebCore::):
+ (WebCore::JSWebKitCSSMatrixConstructor::JSWebKitCSSMatrixConstructor):
+ (WebCore::constructWebKitCSSMatrix):
+ (WebCore::JSWebKitCSSMatrixConstructor::getConstructData):
+ * bindings/js/JSWebKitCSSMatrixConstructor.h: Added.
+ (WebCore::JSWebKitCSSMatrixConstructor::classInfo):
+ * bindings/objc/DOMInternal.h:
+ * css/WebKitCSSMatrix.cpp: Added.
+ (WebCore::WebKitCSSMatrix::WebKitCSSMatrix):
+ (WebCore::WebKitCSSMatrix::~WebKitCSSMatrix):
+ (WebCore::WebKitCSSMatrix::setMatrixValue):
+ (WebCore::WebKitCSSMatrix::multiply):
+ (WebCore::WebKitCSSMatrix::inverse):
+ (WebCore::WebKitCSSMatrix::translate):
+ (WebCore::WebKitCSSMatrix::scale):
+ (WebCore::WebKitCSSMatrix::rotate):
+ (WebCore::WebKitCSSMatrix::toString):
+ * css/WebKitCSSMatrix.h: Added.
+ (WebCore::WebKitCSSMatrix::create):
+ (WebCore::WebKitCSSMatrix::a):
+ (WebCore::WebKitCSSMatrix::b):
+ (WebCore::WebKitCSSMatrix::c):
+ (WebCore::WebKitCSSMatrix::d):
+ (WebCore::WebKitCSSMatrix::e):
+ (WebCore::WebKitCSSMatrix::f):
+ (WebCore::WebKitCSSMatrix::setA):
+ (WebCore::WebKitCSSMatrix::setB):
+ (WebCore::WebKitCSSMatrix::setC):
+ (WebCore::WebKitCSSMatrix::setD):
+ (WebCore::WebKitCSSMatrix::setE):
+ (WebCore::WebKitCSSMatrix::setF):
+ (WebCore::WebKitCSSMatrix::transform):
+ * css/WebKitCSSMatrix.idl: Added.
+
+2009-01-14 Michael Moss <mmoss@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Workaround a skia limitation on repeated patterns, and remove extra
+ transformations applied to pattern.
+ https://bugs.webkit.org/show_bug.cgi?id=23332
+
+ Fixes:
+ LayoutTests/fast/canvas/patternfill-repeat.html
+ LayoutTests/svg/W3C-SVG-1.1/pservers-grad-06-b.svg
+
+ * platform/graphics/skia/PatternSkia.cpp:
+ (WebCore::Pattern::createPlatformPattern):
+
+2009-01-14 Mark Rowe <mrowe@apple.com>
+
+ Fix https://bugs.webkit.org/show_bug.cgi?id=23334
+ Bug 23334: Compile failure in XMLTokenizerLibxml2.cpp
+
+ Include wtf/UnusedParam.h to get UNUSED_PARAM.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::hackAroundLibXMLEntityBug):
+
+2009-01-14 David Levin <levin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23333
+ Platform code fixes. These compensate for changes in platform
+ callbacks from WebKit and minor API tweaks.
+
+ I enumerated a few below.
+
+ * platform/graphics/chromium/FontCacheChromiumWin.cpp:
+ fontExists has been gone since r34794.
+
+ * platform/graphics/skia/ImageSkia.cpp:
+ (WebCore::paintSkBitmap):
+
+ (WebCore::FrameData::clear):
+ r39751 changes this api to take and return a bool.
+
+ (WebCore::Image::drawPattern):
+ * platform/graphics/skia/PathSkia.cpp:
+ (WebCore::Path::apply):
+ (WebCore::boundingBoxForCurrentStroke):
+ (WebCore::Path::strokeContains):
+ * svg/graphics/skia/RenderPathSkia.cpp: Removed due to r39805.
+
+2009-01-14 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ <https://bugs.webkit.org/show_bug.cgi?id=16829>
+ Implement NPN_SetException()
+
+ This mirrors the implementation in the obj-c bindings.
+
+ Test: plugins/netscape-throw-exception.html
+
+ * bridge/NP_jsobject.cpp:
+ (_NPN_SetException):
+ * bridge/c/c_instance.cpp:
+ (JSC::Bindings::getExceptionString):
+ (JSC::Bindings::CInstance::setGlobalException):
+ (JSC::Bindings::CInstance::moveGlobalExceptionToExecState):
+ (JSC::Bindings::CInstance::invokeMethod):
+ (JSC::Bindings::CInstance::invokeDefaultMethod):
+ (JSC::Bindings::CInstance::invokeConstruct):
+ (JSC::Bindings::CInstance::getPropertyNames):
+ * bridge/c/c_instance.h:
+
+2009-01-14 Pierre-Olivier Latour <pol@apple.com>
+
+ Fixed build warning when LIBXML_VERSION >= 20627.
+
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::hackAroundLibXMLEntityBug):
+
+2009-01-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23326
+ Resources are never deleted from application cache disk database
+
+ * loader/appcache/ApplicationCacheStorage.cpp:
+ (WebCore::ApplicationCacheStorage::openDatabase): Create a trigger that deletes resources when
+ a cache is deleted. Note that this change doesn't require bumping schema version. We should
+ consider switching to foreign keys and cascade delete instead of triggers in the future.
+ (WebCore::ApplicationCacheStorage::remove): Added a comment explaining why it's sufficient
+ to only remove the cache itself.
+ (WebCore::ApplicationCacheStorage::empty): Don't delete from CacheResources, now that this
+ is done automatically when a cache is deleted.
+
+2009-01-14 David Kilzer <ddkilzer@apple.com>
+
+ Bug 22795: favicons should be saved to webarchives
+
+ <https://bugs.webkit.org/show_bug.cgi?id=22795>
+
+ Reviewed by Darin Adler.
+
+ Test: webarchive/test-link-rel-icon.html
+
+ * html/HTMLLinkElement.cpp:
+ (WebCore::HTMLLinkElement::addSubresourceAttributeURLs): Do not add
+ favicon URLs to the list since no ArchiveResource or CachedResource
+ is ever created for them.
+ * loader/archive/cf/LegacyWebArchive.cpp:
+ (WebCore::LegacyWebArchive::create): Handle favicons as a special
+ case for all main resources.
+ * loader/icon/IconDatabase.cpp:
+ (WebCore::IconDatabase::close): Actually close the SQLite database
+ so that isOpen() returns false when called. Added an ASSERT() for
+ good measure.
+
+2009-01-14 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23321
+ Upstream more bits of graphics/chromium.
+
+ * platform/graphics/chromium/FontPlatformDataChromiumWin.cpp: Added.
+ (WebCore::FontPlatformData::FontPlatformData):
+ (WebCore::FontPlatformData::operator=):
+ (WebCore::FontPlatformData::~FontPlatformData):
+ (WebCore::FontPlatformData::RefCountedHFONT::~RefCountedHFONT):
+ (WebCore::FontPlatformData::hashTableDeletedFontValue):
+ (WebCore::FontPlatformData::scriptFontProperties):
+ * platform/graphics/chromium/FontPlatformDataChromiumWin.h: Added.
+ (WebCore::FontPlatformData::isHashTableDeletedValue):
+ (WebCore::FontPlatformData::hfont):
+ (WebCore::FontPlatformData::size):
+ (WebCore::FontPlatformData::hash):
+ (WebCore::FontPlatformData::operator==):
+ (WebCore::FontPlatformData::scriptCache):
+ (WebCore::FontPlatformData::RefCountedHFONT::create):
+ (WebCore::FontPlatformData::RefCountedHFONT::hfont):
+ (WebCore::FontPlatformData::RefCountedHFONT::hash):
+ (WebCore::FontPlatformData::RefCountedHFONT::operator==):
+ (WebCore::FontPlatformData::RefCountedHFONT::RefCountedHFONT):
+ * platform/graphics/chromium/FontPlatformDataLinux.cpp: Added.
+ (WebCore::FontPlatformData::FontPlatformData):
+ (WebCore::FontPlatformData::~FontPlatformData):
+ (WebCore::FontPlatformData::operator=):
+ (WebCore::FontPlatformData::setupPaint):
+ (WebCore::FontPlatformData::operator==):
+ (WebCore::FontPlatformData::hash):
+ (WebCore::FontPlatformData::isFixedPitch):
+ * platform/graphics/chromium/FontPlatformDataLinux.h: Added.
+ (WebCore::FontPlatformData::FontPlatformData):
+ (WebCore::FontPlatformData::size):
+ (WebCore::FontPlatformData::isHashTableDeletedValue):
+ (WebCore::FontPlatformData::hashTableDeletedFontValue):
+ * platform/graphics/chromium/FontUtilsChromiumWin.cpp: Added.
+ (WebCore::):
+ (WebCore::FontMap::getAscent):
+ (WebCore::FontMap::FontData::FontData):
+ (WebCore::getFontFamilyForScript):
+ (WebCore::getFallbackFamily):
+ (WebCore::getDerivedFontData):
+ (WebCore::getStyleFromLogfont):
+ * platform/graphics/chromium/FontUtilsChromiumWin.h: Added.
+ (WebCore::):
+
+2009-01-14 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23325
+ Upstream even more graphics/chromium bits.
+
+ * platform/graphics/chromium/GlyphPageTreeNodeChromiumWin.cpp: Added.
+ (WebCore::fillEmptyGlyphs):
+ (WebCore::initSpaceGlyph):
+ (WebCore::fillBMPGlyphs):
+ (WebCore::fillNonBMPGlyphs):
+ (WebCore::GlyphPage::fill):
+ * platform/graphics/chromium/GlyphPageTreeNodeLinux.cpp: Added.
+ (WebCore::GlyphPage::fill):
+ * platform/graphics/chromium/IconChromiumLinux.cpp: Added.
+ (WebCore::Icon::Icon):
+ (WebCore::Icon::~Icon):
+ (WebCore::Icon::createIconForFile):
+ (WebCore::Icon::createIconForFiles):
+ (WebCore::Icon::paint):
+ * platform/graphics/chromium/IconChromiumMac.cpp: Added.
+ (WebCore::Icon::createIconForFile):
+ (WebCore::Icon::createIconForFiles):
+ (WebCore::Icon::~Icon):
+ (WebCore::Icon::paint):
+ * platform/graphics/chromium/IconChromiumWin.cpp: Added.
+ (WebCore::Icon::Icon):
+ (WebCore::Icon::~Icon):
+ (WebCore::Icon::createIconForFile):
+ (WebCore::Icon::createIconForFiles):
+ (WebCore::Icon::paint):
+ * platform/graphics/chromium/ImageBufferData.h: Added.
+ * platform/graphics/chromium/ImageChromiumMac.mm: Added.
+ (WebCore::Image::loadPlatformResource):
+ (WebCore::BitmapImage::initPlatformData):
+ (WebCore::BitmapImage::invalidatePlatformData):
+ * platform/graphics/chromium/MediaPlayerPrivateChromium.h: Added.
+ * platform/graphics/chromium/PlatformIcon.h: Added.
+
+2009-01-14 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23328
+ Upstream remaining files from platform/chromium/
+
+ * platform/chromium/CursorChromium.cpp:
+ (WebCore::pointerCursor):
+ (WebCore::crossCursor):
+ (WebCore::handCursor):
+ (WebCore::iBeamCursor):
+ (WebCore::waitCursor):
+ (WebCore::helpCursor):
+ (WebCore::eastResizeCursor):
+ (WebCore::northResizeCursor):
+ (WebCore::northEastResizeCursor):
+ (WebCore::northWestResizeCursor):
+ (WebCore::southResizeCursor):
+ (WebCore::southEastResizeCursor):
+ (WebCore::southWestResizeCursor):
+ (WebCore::westResizeCursor):
+ (WebCore::northSouthResizeCursor):
+ (WebCore::eastWestResizeCursor):
+ (WebCore::northEastSouthWestResizeCursor):
+ (WebCore::northWestSouthEastResizeCursor):
+ (WebCore::columnResizeCursor):
+ (WebCore::rowResizeCursor):
+ (WebCore::middlePanningCursor):
+ (WebCore::eastPanningCursor):
+ (WebCore::northPanningCursor):
+ (WebCore::northEastPanningCursor):
+ (WebCore::northWestPanningCursor):
+ (WebCore::southPanningCursor):
+ (WebCore::southEastPanningCursor):
+ (WebCore::southWestPanningCursor):
+ (WebCore::westPanningCursor):
+ (WebCore::moveCursor):
+ (WebCore::verticalTextCursor):
+ (WebCore::cellCursor):
+ (WebCore::contextMenuCursor):
+ (WebCore::aliasCursor):
+ (WebCore::progressCursor):
+ (WebCore::noDropCursor):
+ (WebCore::copyCursor):
+ (WebCore::noneCursor):
+ (WebCore::notAllowedCursor):
+ (WebCore::zoomInCursor):
+ (WebCore::zoomOutCursor):
+ * platform/chromium/DragDataRef.h: Added.
+ * platform/chromium/DragImageChromium.cpp: Added.
+ (WebCore::dragImageSize):
+ (WebCore::deleteDragImage):
+ (WebCore::scaleDragImage):
+ (WebCore::dissolveDragImageToFraction):
+ (WebCore::createDragImageFromImage):
+ (WebCore::createDragImageIconForCachedImage):
+ * platform/chromium/DragImageRef.h:
+ * platform/chromium/KeyCodeConversion.h: Added.
+ * platform/chromium/KeyCodeConversionGtk.cpp: Added.
+ (WebCore::windowsKeyCodeForKeyEvent):
+ * platform/chromium/KeyboardCodes.h: Added.
+ * platform/chromium/KeyboardCodesPosix.h: Added.
+ (WebCore::):
+ * platform/chromium/KeyboardCodesWin.h: Added.
+ (WebCore::):
+ * platform/chromium/Language.cpp: Added.
+ (WebCore::defaultLanguage):
+ * platform/chromium/LinkHashChromium.cpp: Added.
+ (WebCore::visitedLinkHash):
+ * platform/chromium/MimeTypeRegistryChromium.cpp: Added.
+ (WebCore::MIMETypeRegistry::getMIMETypeForExtension):
+ (WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType):
+ (WebCore::MIMETypeRegistry::getMIMETypeForPath):
+ (WebCore::MIMETypeRegistry::isSupportedImageMIMEType):
+ (WebCore::MIMETypeRegistry::isSupportedImageResourceMIMEType):
+ (WebCore::MIMETypeRegistry::isSupportedImageMIMETypeForEncoding):
+ (WebCore::MIMETypeRegistry::isSupportedJavaScriptMIMEType):
+ (WebCore::MIMETypeRegistry::isSupportedNonImageMIMEType):
+ (WebCore::MIMETypeRegistry::isSupportedMediaMIMEType):
+ (WebCore::MIMETypeRegistry::isJavaAppletMIMEType):
+ (WebCore::dummyHashSet):
+ (WebCore::MIMETypeRegistry::getSupportedImageMIMETypes):
+ (WebCore::MIMETypeRegistry::getSupportedImageResourceMIMETypes):
+ (WebCore::MIMETypeRegistry::getSupportedImageMIMETypesForEncoding):
+ (WebCore::MIMETypeRegistry::getSupportedNonImageMIMETypes):
+ (WebCore::MIMETypeRegistry::getSupportedMediaMIMETypes):
+ * platform/chromium/PasteboardChromium.cpp: Added.
+ (WebCore::Pasteboard::generalPasteboard):
+ (WebCore::Pasteboard::Pasteboard):
+ (WebCore::Pasteboard::clear):
+ (WebCore::Pasteboard::writeSelection):
+ (WebCore::Pasteboard::writeURL):
+ (WebCore::Pasteboard::writeImage):
+ (WebCore::Pasteboard::canSmartReplace):
+ (WebCore::Pasteboard::plainText):
+ (WebCore::Pasteboard::documentFragment):
+ * platform/chromium/PasteboardPrivate.h:
+ * platform/chromium/PlatformCursor.h: Added.
+ (WebCore::PlatformCursor::):
+ (WebCore::PlatformCursor::PlatformCursor):
+ (WebCore::PlatformCursor::customImage):
+ (WebCore::PlatformCursor::hotSpot):
+ (WebCore::PlatformCursor::type):
+ * platform/chromium/PlatformKeyboardEventChromium.cpp: Added.
+ (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
+ (WebCore::PlatformKeyboardEvent::currentCapsLockState):
+ * platform/chromium/PlatformScreenChromium.cpp: Added.
+ (WebCore::screenDepth):
+ (WebCore::screenDepthPerComponent):
+ (WebCore::screenIsMonochrome):
+ (WebCore::screenRect):
+ (WebCore::screenAvailableRect):
+ * platform/chromium/PlatformWidget.h:
+ * platform/chromium/PopupMenuChromium.cpp: Added.
+ (WebCore::PopupListBox::selectedIndex):
+ (WebCore::PopupListBox::numItems):
+ (WebCore::PopupListBox::setBaseWidth):
+ (WebCore::PopupListBox::setTextOnIndexChange):
+ (WebCore::PopupListBox::setAcceptOnAbandon):
+ (WebCore::PopupListBox::):
+ (WebCore::PopupListBox::ListItem::ListItem):
+ (WebCore::PopupListBox::PopupListBox):
+ (WebCore::PopupListBox::~PopupListBox):
+ (WebCore::PopupListBox::disconnectClient):
+ (WebCore::PopupListBox::scrollToRevealSelection):
+ (WebCore::constructRelativeMouseEvent):
+ (WebCore::constructRelativeWheelEvent):
+ (WebCore::PopupContainer::create):
+ (WebCore::PopupContainer::PopupContainer):
+ (WebCore::PopupContainer::~PopupContainer):
+ (WebCore::PopupContainer::showPopup):
+ (WebCore::PopupContainer::hidePopup):
+ (WebCore::PopupContainer::layout):
+ (WebCore::PopupContainer::handleMouseDownEvent):
+ (WebCore::PopupContainer::handleMouseMoveEvent):
+ (WebCore::PopupContainer::handleMouseReleaseEvent):
+ (WebCore::PopupContainer::handleWheelEvent):
+ (WebCore::PopupContainer::handleKeyEvent):
+ (WebCore::PopupContainer::hide):
+ (WebCore::PopupContainer::paint):
+ (WebCore::PopupContainer::paintBorder):
+ (WebCore::PopupContainer::isInterestedInEventForKey):
+ (WebCore::PopupContainer::show):
+ (WebCore::PopupContainer::setTextOnIndexChange):
+ (WebCore::PopupContainer::setAcceptOnAbandon):
+ (WebCore::PopupContainer::refresh):
+ (WebCore::PopupListBox::handleMouseDownEvent):
+ (WebCore::PopupListBox::handleMouseMoveEvent):
+ (WebCore::PopupListBox::handleMouseReleaseEvent):
+ (WebCore::PopupListBox::handleWheelEvent):
+ (WebCore::PopupListBox::isInterestedInEventForKey):
+ (WebCore::PopupListBox::handleKeyEvent):
+ (WebCore::PopupListBox::hostWindow):
+ (WebCore::PopupListBox::invalidateRect):
+ (WebCore::stripLeadingWhiteSpace):
+ (WebCore::PopupListBox::typeAheadFind):
+ (WebCore::PopupListBox::paint):
+ (WebCore::PopupListBox::paintRow):
+ (WebCore::PopupListBox::getRowFont):
+ (WebCore::PopupListBox::abandon):
+ (WebCore::PopupListBox::pointToRowIndex):
+ (WebCore::PopupListBox::acceptIndex):
+ (WebCore::PopupListBox::selectIndex):
+ (WebCore::PopupListBox::setOriginalIndex):
+ (WebCore::PopupListBox::getRowHeight):
+ (WebCore::PopupListBox::getRowBounds):
+ (WebCore::PopupListBox::invalidateRow):
+ (WebCore::PopupListBox::scrollToRevealRow):
+ (WebCore::PopupListBox::isSelectableItem):
+ (WebCore::PopupListBox::adjustSelectedIndex):
+ (WebCore::PopupListBox::updateFromElement):
+ (WebCore::PopupListBox::layout):
+ (WebCore::PopupListBox::clear):
+ (WebCore::PopupListBox::isPointInBounds):
+ (WebCore::PopupMenu::PopupMenu):
+ (WebCore::PopupMenu::~PopupMenu):
+ (WebCore::PopupMenu::show):
+ (WebCore::PopupMenu::hide):
+ (WebCore::PopupMenu::updateFromElement):
+ (WebCore::PopupMenu::itemWritingDirectionIsNatural):
+ * platform/chromium/PopupMenuChromium.h: Added.
+ (WebCore::PopupContainer::listBox):
+ * platform/chromium/PopupMenuPrivate.h: Added.
+ * platform/chromium/SSLKeyGeneratorChromium.cpp: Added.
+ (WebCore::supportedKeySizes):
+ * platform/chromium/ScrollbarThemeChromium.cpp: Added.
+ (WebCore::ScrollbarTheme::nativeTheme):
+ (WebCore::ScrollbarThemeChromium::ScrollbarThemeChromium):
+ (WebCore::ScrollbarThemeChromium::~ScrollbarThemeChromium):
+ (WebCore::ScrollbarThemeChromium::themeChanged):
+ (WebCore::ScrollbarThemeChromium::hasThumb):
+ (WebCore::ScrollbarThemeChromium::backButtonRect):
+ (WebCore::ScrollbarThemeChromium::forwardButtonRect):
+ (WebCore::ScrollbarThemeChromium::trackRect):
+ (WebCore::ScrollbarThemeChromium::paintTrackBackground):
+ (WebCore::ScrollbarThemeChromium::paintTickmarks):
+ (WebCore::ScrollbarThemeChromium::paintScrollCorner):
+ (WebCore::ScrollbarThemeChromium::shouldCenterOnThumb):
+ (WebCore::ScrollbarThemeChromium::buttonSize):
+ * platform/chromium/ScrollbarThemeChromium.h: Added.
+ (WebCore::ScrollbarThemeChromium::hasButtons):
+ * platform/chromium/ScrollbarThemeChromiumLinux.cpp: Added.
+ (WebCore::ScrollbarThemeChromium::scrollbarThickness):
+ (WebCore::ScrollbarThemeChromium::invalidateOnMouseEnterExit):
+ (WebCore::initMozState):
+ (WebCore::paintScrollbarWidget):
+ (WebCore::ScrollbarThemeChromium::paintTrackPiece):
+ (WebCore::ScrollbarThemeChromium::paintButton):
+ (WebCore::ScrollbarThemeChromium::paintThumb):
+ * platform/chromium/ScrollbarThemeChromiumWin.cpp:
+ * platform/chromium/SearchPopupMenuChromium.cpp: Added.
+ (WebCore::SearchPopupMenu::SearchPopupMenu):
+ (WebCore::SearchPopupMenu::enabled):
+ (WebCore::SearchPopupMenu::saveRecentSearches):
+ (WebCore::SearchPopupMenu::loadRecentSearches):
+ * platform/chromium/SharedTimerChromium.cpp: Added.
+ (WebCore::setSharedTimerFiredFunction):
+ (WebCore::setSharedTimerFireTime):
+ (WebCore::stopSharedTimer):
+ * platform/chromium/TemporaryLinkStubs.cpp: Added.
+ (WebCore::signedPublicKeyAndChallengeString):
+ (WebCore::getSupportedKeySizes):
+ (WebCore::KURL::fileSystemPath):
+ (WebCore::SharedBuffer::createWithContentsOfFile):
+ (WTF::scheduleDispatchFunctionsOnMainThread):
+
+2009-01-14 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23323
+ Upstream platform/text/chromium/
+
+ * platform/text/chromium: Added.
+ * platform/text/chromium/TextBreakIteratorInternalICUChromium.cpp: Added.
+ (WebCore::currentTextBreakLocaleID):
+
+2009-01-14 Steve Falkenburg <sfalken@apple.com>
+
+ Update copyright year in version resources.
+
+ Reviewed by Adam Roben.
+
+ * WebCore.vcproj/QTMovieWin.rc:
+
+2009-01-14 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23324
+ Move platform/chromium/EditorChromium.cpp into editing/chromium/
+
+ * editing/chromium: Added.
+ * editing/chromium/EditorChromium.cpp: Copied from platform/chromium/EditorChromium.cpp.
+ * platform/chromium/EditorChromium.cpp: Removed.
+
+2009-01-14 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23320
+ Make it possible to use notImplemented outside of the WebCore namespace
+
+ * platform/NotImplemented.h:
+
+2009-01-14 Nigel Tao <nigel.tao.gnome@gmail.com>
+
+ Reviewed by Darin Adler.
+
+ - fix https://bugs.webkit.org/show_bug.cgi?id=22476
+ Check that the document's SecurityOrigin canLoadLocalResources,
+ when pages try to put NSFilenamesPboardtype data on the clipboard,
+ by calling event.dataTransfer.setData('URL', 'file:///foo/bar');
+
+ Tests: http/tests/security/dataTransfer-set-data-file-url.html
+ platform/mac/editing/pasteboard/dataTransfer-set-data-file-url.html
+
+ * platform/mac/ClipboardMac.mm:
+ (WebCore::ClipboardMac::setData):
+
+2009-01-14 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - update copyright
+
+ * Info.plist:
+
+2009-01-14 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23316
+ Application cache updating always fails with an assertion
+
+ Test: http/tests/appcache/update-cache.html
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::documentLoaderDestroyed): Correctly handle the case where
+ multiple caches survive the last DocumentLoader destruction, preventing a crash in release
+ builds.
+ (WebCore::ApplicationCacheGroup::setNewestCache): Removed a bogus assertion.
2009-01-14 Alexey Proskuryakov <ap@webkit.org>
@@ -771,6 +52558,105 @@
* loader/appcache/ApplicationCacheStorage.h: Added storeUpdatedType().
+2009-01-13 Mark Rowe <mrowe@apple.com>
+
+ Fix the Tiger WebCore build after r39880.
+
+ * editing/Editor.cpp:
+ (WebCore::Editor::markBadGrammar):
+ * loader/mac/DocumentLoaderMac.cpp:
+ (WebCore::DocumentLoader::schedule):
+ (WebCore::DocumentLoader::unschedule):
+ * platform/mac/PasteboardMac.mm:
+ (WebCore::Pasteboard::writeSelection):
+ * platform/mac/WebCoreObjCExtras.mm:
+ (WebCoreObjCFinalizeOnMainThread):
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::schedule):
+ (WebCore::ResourceHandle::unschedule):
+
+2009-01-13 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Bug 23102: turn on unused parameter warnings in WebCore
+ https://bugs.webkit.org/show_bug.cgi?id=23102
+
+ Last step: Turn on the warning and fix the last few instances.
+
+ * Configurations/Base.xcconfig: Removed -Wno-unused-parameter from
+ WARNING_CFLAGS_BASE, so the unused parameter warning will fire.
+
+ * bindings/js/JSDOMWindowBase.cpp:
+ (jsDOMWindowBaseMessageChannel): Separate the version for use when
+ CHANNEL_MESSAGING is turned off, so we can omit the argument names.
+ It would be better to not even have this property in that case,
+ rather than having the function return undefined, but I don't know
+ how to do that with the bindings script.
+
+ * bindings/scripts/CodeGeneratorJS.pm: Leave out argument names in
+ functions where they're not used (the SVG context, and the property
+ name in the index getter). Use UNUSED_PARAM where arguments are
+ sometimes not used.
+
+ * bridge/runtime_object.cpp:
+ (JSC::RuntimeObjectImp::put): Use UNUSED_PARAM for non-QT.
+
+ * css/MediaQueryEvaluator.cpp:
+ (WebCore::animationMediaFeatureEval): Omit argument names for style and frame.
+ (WebCore::transitionMediaFeatureEval): Ditto.
+ (WebCore::transform_2dMediaFeatureEval): Ditto.
+ (WebCore::transform_3dMediaFeatureEval): Ditto.
+
+ * dom/make_names.pl: Leave out the createdByParser property name in
+ cases where it's not used.
+
+ * inspector/JavaScriptDebugServer.cpp:
+ (WebCore::JavaScriptDebugServer::setJavaScriptPaused): Separate the
+ version for the Mac platform so we can omit the argument names.
+
+ * loader/EmptyClients.h:
+ (WebCore::EmptyChromeClient::contentsSizeChanged): Removed argument name.
+
+ * loader/FrameLoaderClient.h:
+ (WebCore::FrameLoaderClient::shouldUsePluginDocument): Commented out
+ argument name.
+
+ * loader/icon/IconFetcher.cpp:
+ (WebCore::IconFetcher::didReceiveResponse): Use ASSERT_UNUSED.
+ (WebCore::IconFetcher::didReceiveData): Ditto.
+ (WebCore::IconFetcher::didFinishLoading): Ditto.
+ (WebCore::IconFetcher::didFail): Ditto.
+
+ * platform/KURL.cpp:
+ (WebCore::assertProtocolIsGood): Separate out the NDEBUG version so
+ we can omit the argument names.
+
+ * platform/Timer.cpp:
+ (WebCore::TimerHeapIterator::checkConsistency): Use ASSERT_UNUSED.
+
+ * platform/graphics/GlyphBuffer.h:
+ (WebCore::GlyphBuffer::offsetAt): Use UNUSED_PARAM in the non-WIN case.
+ (WebCore::GlyphBuffer::add): Use UNUSED_PARAM in the non-CAIRO case.
+
+ * platform/graphics/cg/ImageSourceCG.cpp:
+ (WebCore::ImageSource::clear): Removed argument name.
+
+ * rendering/SVGRenderSupport.cpp:
+ (WebCore::prepareToRenderSVGContent): Use UNUSED_PARAM when SVG_FILTERS
+ is not enabled.
+ (WebCore::finishRenderSVGContent): Ditto.
+
+2009-01-13 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Implemented https://bugs.webkit.org/show_bug.cgi?id=23298
+ Simple fix to convertToLength to catch style==null cases
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::convertToLength):
+
2009-01-13 Eric Seidel <eric@webkit.org>
Reviewed by Mark Rowe.
@@ -781,6 +52667,39 @@
* bindings/js/JSSVGPODTypeWrapper.h:
(WebCore::PODTypeWrapperCacheInfo::PODTypeWrapperCacheInfo):
+2009-01-13 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Land portions of platform/graphics/chromium.
+ https://bugs.webkit.org/show_bug.cgi?id=23297
+
+ * platform/graphics/chromium/FontCustomPlatformData.cpp: Added.
+ (WebCore::FontCustomPlatformData::~FontCustomPlatformData):
+ (WebCore::FontCustomPlatformData::fontPlatformData):
+ (WebCore::EOTStream::EOTStream):
+ (WebCore::EOTStream::read):
+ (WebCore::readEmbedProc):
+ (WebCore::createUniqueFontName):
+ (WebCore::createFontCustomPlatformData):
+ * platform/graphics/chromium/FontCustomPlatformData.h: Added.
+ (WebCore::FontCustomPlatformData::FontCustomPlatformData):
+ * platform/graphics/chromium/FontLinux.cpp: Added.
+ (WebCore::Font::drawGlyphs):
+ (WebCore::Font::drawComplexText):
+ (WebCore::Font::floatWidthForComplexText):
+ (WebCore::Font::offsetForPositionForComplexText):
+ (WebCore::Font::selectionRectForComplexText):
+ * platform/graphics/chromium/FontPlatformData.h: Added.
+
+2009-01-13 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Oliver Hunt.
+
+ Don't copy DOMStringList.idl into the framework bundle.
+
+ * WebCore.xcodeproj/project.pbxproj:
+
2009-01-13 Christian Dywan <christian@twotoasts.de>
Build fix, StorageEvent is only defined if we have DOM_STORAGE
@@ -813,19 +52732,222 @@
keydown event. Without the change above, making this change would have restored the old
behavior, reintroducing bug 22913 where the space bar doesn't scroll at all on Windows.
-2009-01-12 Robert Blaut <webkit@blaut.biz>
+2009-01-13 Darin Fisher <darin@chromium.org>
- Reviewed by Darin Adler
+ Reviewed by Eric Seidel.
- Fix for <https://bugs.webkit.org/show_bug.cgi?id=22096>
- Bug 22096: REGRESSION (r35879) scrolldelay is counted in seconds
- instead of miliseconds
+ Landing portions of platform/chromium/, taken from here:
+ http://src.chromium.org/viewvc/chrome/trunk/deps/third_party/WebKit/WebCore/platform/chromium/
+
+ * platform/chromium/ChromiumBridge.h: Added.
+ * platform/chromium/ChromiumDataObject.cpp: Added.
+ (WebCore::ChromiumDataObject::clear):
+ (WebCore::ChromiumDataObject::hasData):
+ * platform/chromium/ChromiumDataObject.h: Added.
+ (WebCore::ChromiumDataObject::create):
+ (WebCore::ChromiumDataObject::ChromiumDataObject):
+ * platform/chromium/ClipboardChromium.cpp: Added.
+ (WebCore::):
+ (WebCore::clipboardTypeFromMIMEType):
+ (WebCore::ClipboardChromium::ClipboardChromium):
+ (WebCore::ClipboardChromium::create):
+ (WebCore::ClipboardChromium::clearData):
+ (WebCore::ClipboardChromium::clearAllData):
+ (WebCore::ClipboardChromium::getData):
+ (WebCore::ClipboardChromium::setData):
+ (WebCore::ClipboardChromium::types):
+ (WebCore::ClipboardChromium::setDragImage):
+ (WebCore::ClipboardChromium::setDragImageElement):
+ (WebCore::ClipboardChromium::createDragImage):
+ (WebCore::imageToMarkup):
+ (WebCore::getCachedImage):
+ (WebCore::writeImageToDataObject):
+ (WebCore::ClipboardChromium::declareAndWriteDragImage):
+ (WebCore::ClipboardChromium::writeURL):
+ (WebCore::ClipboardChromium::writeRange):
+ (WebCore::ClipboardChromium::hasData):
+ * platform/chromium/ClipboardChromium.h: Added.
+ (WebCore::ClipboardChromium::~ClipboardChromium):
+ (WebCore::ClipboardChromium::dataObject):
+ * platform/chromium/ClipboardUtilitiesChromium.cpp: Added.
+ (WebCore::replaceNewlinesWithWindowsStyleNewlines):
+ (WebCore::replaceNBSPWithSpace):
+ (WebCore::urlToMarkup):
+ * platform/chromium/ClipboardUtilitiesChromium.h: Added.
+ * platform/chromium/ContextMenuChromium.cpp: Added.
+ (WebCore::ContextMenu::ContextMenu):
+ (WebCore::ContextMenu::~ContextMenu):
+ (WebCore::ContextMenu::itemCount):
+ (WebCore::ContextMenu::insertItem):
+ (WebCore::ContextMenu::appendItem):
+ (WebCore::ContextMenu::itemWithAction):
+ (WebCore::ContextMenu::itemAtIndex):
+ (WebCore::ContextMenu::setPlatformDescription):
+ (WebCore::ContextMenu::platformDescription):
+ (WebCore::ContextMenu::releasePlatformDescription):
+ * platform/chromium/ContextMenuItemChromium.cpp: Added.
+ (WebCore::ContextMenuItem::ContextMenuItem):
+ (WebCore::ContextMenuItem::~ContextMenuItem):
+ (WebCore::ContextMenuItem::releasePlatformDescription):
+ (WebCore::ContextMenuItem::type):
+ (WebCore::ContextMenuItem::action):
+ (WebCore::ContextMenuItem::title):
+ (WebCore::ContextMenuItem::platformSubMenu):
+ (WebCore::ContextMenuItem::setType):
+ (WebCore::ContextMenuItem::setAction):
+ (WebCore::ContextMenuItem::setTitle):
+ (WebCore::ContextMenuItem::setSubMenu):
+ (WebCore::ContextMenuItem::setChecked):
+ (WebCore::ContextMenuItem::setEnabled):
+ (WebCore::ContextMenuItem::enabled):
+ * platform/chromium/CursorChromium.cpp: Added.
+ (WebCore::Cursor::Cursor):
+ (WebCore::Cursor::~Cursor):
+ (WebCore::Cursor::operator=):
+ (WebCore::pointerCursor):
+ (WebCore::crossCursor):
+ (WebCore::handCursor):
+ (WebCore::iBeamCursor):
+ (WebCore::waitCursor):
+ (WebCore::helpCursor):
+ (WebCore::eastResizeCursor):
+ (WebCore::northResizeCursor):
+ (WebCore::northEastResizeCursor):
+ (WebCore::northWestResizeCursor):
+ (WebCore::southResizeCursor):
+ (WebCore::southEastResizeCursor):
+ (WebCore::southWestResizeCursor):
+ (WebCore::westResizeCursor):
+ (WebCore::northSouthResizeCursor):
+ (WebCore::eastWestResizeCursor):
+ (WebCore::northEastSouthWestResizeCursor):
+ (WebCore::northWestSouthEastResizeCursor):
+ (WebCore::columnResizeCursor):
+ (WebCore::rowResizeCursor):
+ (WebCore::middlePanningCursor):
+ (WebCore::eastPanningCursor):
+ (WebCore::northPanningCursor):
+ (WebCore::northEastPanningCursor):
+ (WebCore::northWestPanningCursor):
+ (WebCore::southPanningCursor):
+ (WebCore::southEastPanningCursor):
+ (WebCore::southWestPanningCursor):
+ (WebCore::westPanningCursor):
+ (WebCore::moveCursor):
+ (WebCore::verticalTextCursor):
+ (WebCore::cellCursor):
+ (WebCore::contextMenuCursor):
+ (WebCore::aliasCursor):
+ (WebCore::progressCursor):
+ (WebCore::noDropCursor):
+ (WebCore::copyCursor):
+ (WebCore::noneCursor):
+ (WebCore::notAllowedCursor):
+ (WebCore::zoomInCursor):
+ (WebCore::zoomOutCursor):
+ (WebCore::grabCursor):
+ (WebCore::grabbingCursor):
+ * platform/chromium/DragDataChromium.cpp: Added.
+ (WebCore::containsHTML):
+ (WebCore::DragData::createClipboard):
+ (WebCore::DragData::containsURL):
+ (WebCore::DragData::asURL):
+ (WebCore::DragData::containsFiles):
+ (WebCore::DragData::asFilenames):
+ (WebCore::DragData::containsPlainText):
+ (WebCore::DragData::asPlainText):
+ (WebCore::DragData::containsColor):
+ (WebCore::DragData::canSmartReplace):
+ (WebCore::DragData::containsCompatibleContent):
+ (WebCore::DragData::asFragment):
+ (WebCore::DragData::asColor):
+ * platform/chromium/EditorChromium.cpp: Added.
+ (WebCore::Editor::newGeneralClipboard):
+ * platform/chromium/FileChooserChromium.cpp: Added.
+ (WebCore::FileChooser::basenameForWidth):
+ * platform/chromium/FileSystemChromium.cpp: Added.
+ (WebCore::deleteFile):
+ (WebCore::deleteEmptyDirectory):
+ (WebCore::getFileSize):
+ (WebCore::getFileModificationTime):
+ (WebCore::directoryName):
+ (WebCore::pathByAppendingComponent):
+ (WebCore::makeAllDirectories):
+ (WebCore::fileExists):
+ * platform/chromium/FileSystemChromiumLinux.cpp: Added.
+ (WebCore::pathGetFileName):
+ * platform/chromium/FileSystemChromiumMac.mm: Added.
+ (WebCore::pathGetFileName):
+ * platform/chromium/FileSystemChromiumWin.cpp: Added.
+ (WebCore::pathGetFileName):
+ * platform/chromium/FramelessScrollView.cpp: Added.
+ (WebCore::FramelessScrollView::~FramelessScrollView):
+ (WebCore::FramelessScrollView::invalidateScrollbarRect):
+ (WebCore::FramelessScrollView::isActive):
+ (WebCore::FramelessScrollView::invalidateRect):
+ (WebCore::FramelessScrollView::hostWindow):
+ (WebCore::FramelessScrollView::windowClipRect):
+ (WebCore::FramelessScrollView::paintContents):
+ (WebCore::FramelessScrollView::contentsResized):
+ (WebCore::FramelessScrollView::visibleContentsResized):
+ * platform/chromium/FramelessScrollView.h: Added.
+ (WebCore::FramelessScrollView::FramelessScrollView):
+ (WebCore::FramelessScrollView::client):
+ (WebCore::FramelessScrollView::setClient):
+ * platform/chromium/FramelessScrollViewClient.h: Added.
+ * platform/chromium/ScrollbarThemeChromiumWin.cpp: Added.
+ (WebCore::):
+ (WebCore::ScrollbarThemeChromium::scrollbarThickness):
+ (WebCore::ScrollbarThemeChromium::invalidateOnMouseEnterExit):
+ (WebCore::ScrollbarThemeChromium::paintTrackPiece):
+ (WebCore::ScrollbarThemeChromium::paintButton):
+ (WebCore::ScrollbarThemeChromium::paintThumb):
+ (WebCore::ScrollbarThemeChromium::getThemeState):
+ (WebCore::ScrollbarThemeChromium::getThemeArrowState):
+ (WebCore::ScrollbarThemeChromium::getClassicThemeState):
+ * platform/chromium/SoundChromiumPosix.cpp: Added.
+ (WebCore::systemBeep):
+ * platform/chromium/SoundChromiumWin.cpp: Added.
+ (WebCore::systemBeep):
+ * platform/chromium/SystemTimeChromium.cpp: Added.
+ (WebCore::currentTime):
+ (WebCore::userIdleTime):
+ * platform/chromium/WidgetChromium.cpp: Added.
+ (WebCore::Widget::Widget):
+ (WebCore::Widget::~Widget):
+ (WebCore::Widget::show):
+ (WebCore::Widget::hide):
+ (WebCore::Widget::setCursor):
+ (WebCore::Widget::paint):
+ (WebCore::Widget::setFocus):
+ (WebCore::Widget::setIsSelected):
+ (WebCore::Widget::frameRect):
+ (WebCore::Widget::setFrameRect):
+ * platform/chromium/WindowsVersion.cpp: Added.
+ (WebCore::isVistaOrNewer):
+ * platform/chromium/WindowsVersion.h: Added.
- Test: fast/css/webkit-marquee-speed-unit-in-quirksmode.html
+2009-01-13 Tor Arne Vestbø <tavestbo@trolltech.com>
- * css/CSSParser.cpp:
- (WebCore::CSSParser::validUnit): treat unitless values in quirks mode
- as miliseconds instead of seconds.
+ Reviewed by Simon Hausmann.
+
+ [Qt] Make sure media elements dispatch the 'loaded' event
+
+ We assume that when Phonon goes into paused state that we have the
+ complete media file. Once we do media loading ourselves we can
+ distinguish between loading the first frame and the complete media.
+
+ * platform/graphics/qt/MediaPlayerPrivatePhonon.cpp:
+ (WebCore::MediaPlayerPrivate::updateStates):
+
+2009-01-13 Tor Arne Vestbø <tavestbo@trolltech.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Add more verbose error output when loading NPAPI plugins
+
+ * plugins/qt/PluginPackageQt.cpp:
+ (WebCore::PluginPackage::load):
2009-01-13 Simon Hausmann <simon.hausmann@nokia.com>
@@ -839,39 +52961,84 @@
combobox item (i.e. the call to the JS handler) from a different
call stack by using a queued connection.
-2009-01-13 Tor Arne Vestbø <tavestbo@trolltech.com>
+2009-01-12 Holger Hans Peter Freyther <zecke@selfish.org>
- Reviewed by Simon Hausmann.
+ Reviewed by Tor Arne Vestbø.
- [Qt] Make sure media elements dispatch the 'loaded' event
-
- We assume that when Phonon goes into paused state that we have the
- complete media file. Once we do media loading ourselves we can
- distinguish between loading the first frame and the complete media.
+ [GIO] Make sure to untef the GFile and the GInputStream on destruction
- * platform/graphics/qt/MediaPlayerPrivatePhonon.cpp:
- (WebCore::MediaPlayerPrivate::updateStates):
+ Make sure to call cleanupGioOperation from the ResourceHandleInternal
+ d'tor. Change the signature of cleanupGioOperation so we can do the
+ cleanup of GIO next to the cleanup of SOUP.
-2009-01-13 Tor Arne Vestbø <tavestbo@trolltech.com>
+ This is happening with many tests from dom/html/level2/html e.g.
+ LayoutTests/dom/html/level2/html/HTMLBodyElement07.html.
- Reviewed by Simon Hausmann.
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::ResourceHandleInternal::~ResourceHandleInternal):
+ (WebCore::cleanupGioOperation):
+ (WebCore::closeCallback):
+ (WebCore::readCallback):
+ (WebCore::openCallback):
+ (WebCore::queryInfoCallback):
- [Qt] Add more verbose error output when loading NPAPI plugins
+2009-01-12 Holger Hans Peter Freyther <zecke@selfish.org>
- * plugins/qt/PluginPackageQt.cpp:
- (WebCore::PluginPackage::load):
+ Reviewed by Tor Arne Vestbø.
+
+ [GIO] Attach the ResourceHandle to the GObject and get it from the GObject
+
+ https://bugs.webkit.org/show_bug.cgi?id=23116 discussed with Benjamin Otte
+
+ Sometimes it is not possible to cancel a pending GIO operation and the
+ callback might be invoked with a pointer to an already destructed
+ ResourceHandle. To avoid this issue we will attach the ResourceHandle
+ to the GObject* and in the callback attempt to get the ResourceHandle
+ from the GObject*. If no ResourceHandle is attached we silently fail
+ as the cleanup has been already done.
+
+ This is happening with many tests from dom/html/level2/html e.g.
+ LayoutTests/dom/html/level2/html/HTMLBodyElement07.html.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::cleanupGioOperation):
+ (WebCore::closeCallback):
+ (WebCore::readCallback):
+ (WebCore::openCallback):
+ (WebCore::queryInfoCallback):
+ (WebCore::ResourceHandle::startGio):
+
+2009-01-12 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Tor Arne Vestbø.
+
+ [GIO] Invoke cleanupGioOperation before calling didFail to avoid crashes
+
+ https://bugs.webkit.org/show_bug.cgi?id=23116
+
+ The ResourceHandle becomes invalid (e.g. got destructed) from within
+ the invocation of didFail. Avoid this by cleaning up everything before
+ calling didFail and simply return afterwards.
+
+ This is happening with many tests from dom/html/level2/html e.g.
+ LayoutTests/dom/html/level2/html/HTMLBodyElement07.html.
+
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::readCallback):
+ (WebCore::openCallback):
+ (WebCore::queryInfoCallback):
2009-01-13 Tor Arne Vestbø <tavestbo@trolltech.com>
Reviewed by Simon Hausmann.
Change how themes adjust mediaControls.css to match html4/quicks.css
-
+
Instead of providing the full style sheet, the themes provide extra
overrides to the default style defined in UserAgentStyleSheetsData.
-
+
https://bugs.webkit.org/show_bug.cgi?id=23210
-
+
Also, merge WebKitResources.qrc and WebCoreResources.qrc to speed up
build time for the Qt port.
@@ -890,41 +53057,300 @@
* rendering/RenderTheme.h:
(WebCore::RenderTheme::extraMediaControlsStyleSheet):
-2009-01-10 Eric Carlson <eric.carlson@apple.com>
+2009-01-12 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Eric Seidel.
+ Reviewed by Oliver Hunt.
- https://bugs.webkit.org/show_bug.cgi?id=23210
- Make it easier for ports to define custom UI for media controls
+ Deprecate JSValuePtr::getNumber() - two ways to get a number should be enough.
- * css/CSSStyleSelector.cpp:
- (WebCore::CSSStyleSelector::styleForElement): call theme()->styleSheetForMediaControls to
- get the media controller style sheet
+ * bindings/js/JSSQLTransactionCustom.cpp:
+ (WebCore::JSSQLTransaction::executeSql):
+ * bindings/objc/WebScriptObject.mm:
+ (+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]):
- * rendering/MediaControlElements.cpp:
- (WebCore::MediaControlInputElement::hitTest): Added
- * rendering/MediaControlElements.h: Updated
+2009-01-12 Chris Marrin <cmarrin@apple.com>
- * rendering/RenderMedia.cpp:
- (WebCore::RenderMedia::forwardEvent): Call element hitTest() method instead of local function
- so control elements don't necessarily have to be rectangular
+ Reviewed by Dan Bernstein.
- * rendering/RenderTheme.cpp:
- (WebCore::RenderTheme::styleSheetForMediaControls): Added
- (WebCore::RenderTheme::hitTestMediaControlPart): Added
- * rendering/RenderTheme.h: Updated
+ Fixed https://bugs.webkit.org/show_bug.cgi?id=22919
+
+ I added a common getElapsedTime() function to AnimationBase which uses a combination of
+ the techniques from KeyframeAnimation and AnimationBase to compute elapsedTime in all
+ states.
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::AnimationBase::progress):
+ (WebCore::AnimationBase::getElapsedTime):
+ * page/animation/AnimationBase.h:
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::animate):
+
+2009-01-12 Robert Blaut <webkit@blaut.biz>
+
+ Reviewed by Darin Adler
+
+ Fix for <https://bugs.webkit.org/show_bug.cgi?id=22096>
+ Bug 22096: REGRESSION (r35879) scrolldelay is counted in seconds
+ instead of miliseconds
+
+ Test: fast/css/webkit-marquee-speed-unit-in-quirksmode.html
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::validUnit): treat unitless values in quirks mode
+ as miliseconds instead of seconds.
+
+2009-01-12 David Hyatt <hyatt@apple.com>
+
+ Apply the same idea as the previous fix but for matched declarations.
+
+ Reviewed by Dan Bernstein
+
+ * css/CSSStyleSelector.h:
+
+2009-01-12 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ <rdar://problem/6468274> - Track Non-get requests in global history
+
+ * WebCore.base.exp:
+
+ * history/HistoryItem.cpp:
+ (WebCore::HistoryItem::HistoryItem):
+ * history/HistoryItem.h:
+ (WebCore::HistoryItem::lastVisitWasHTTPNonGet):
+ (WebCore::HistoryItem::setLastVisitWasHTTPNonGet):
2009-01-12 Kevin Ollivier <kevino@theolliviers.com>
!ENABLE(SVG_FONTS) build fix. Move defaultUnitsPerEm into a non-SVG header
so it can be used by all builds.
-
+
* platform/graphics/Font.h:
* platform/graphics/SimpleFontData.cpp:
* svg/SVGFontFaceElement.cpp:
* svg/SVGFontFaceElement.h:
-2008-01-12 Dimitri Glazkov <dglazkov@chromium.org>
+2009-01-12 Kevin Ollivier <kevino@theolliviers.com>
+
+ wx build typo fix.
+
+ * platform/graphics/wx/TransformationMatrixWx.cpp:
+ (WebCore::TransformationMatrix::TransformationMatrix):
+
+2009-01-12 David Hyatt <hyatt@apple.com>
+
+ Make sure the set of matched rules has a reserved capacity of 32. This prevents remalloc thrash as
+ elements are matched, since the Vector is shrinking and growing over and over. 1% PLT speedup.
+
+ Reviewed by Oliver Hunt
+
+ * css/CSSStyleSelector.h:
+
+2009-01-12 David Hyatt <hyatt@apple.com>
+
+ Optimize Element::attributeChanged to just check if accessibility is enabled up front before looking at the
+ two accessibility-related attributes. This avoids the rest of the code for all attributes on the PLT.
+ Tiny speedup.
+
+ Reviewed by Oliver Hunt
+
+ * dom/Element.cpp:
+ (WebCore::Element::attributeChanged):
+
+2009-01-12 David Hyatt <hyatt@apple.com>
+
+ Optimize the retrieval of line height. If the document is not using any first-line rules, just immediately
+ default to the normal case. Tiny speedup on PLT.
+
+ Reviewed by Oliver Hunt
+
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::lineHeight):
+
+2009-01-12 David Hyatt <hyatt@apple.com>
+
+ Fix 0.6% regression in PLT. Make sure not to waste time updating NSScrollView's can blit on scroll state
+ in the ScrollView constructor, since this is always going to be properly updated by FrameView anyway.
+
+ Reviewed by Oliver Hunt
+
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::ScrollView):
+
+2009-01-12 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=23273
+
+ In RenderBox::repaintLayerRectsForImage(), the repaint rect does not have
+ to be computed in absolute coordintes. Instead, we compute a repaintRect
+ relative to the RenderObject, which can repaint itself.
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::repaintLayerRectsForImage):
+
+2009-01-12 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=23220
+
+ Merge layoutDelta into LayoutState. This requires that we
+ push even when layoutState is disabled, so that layoutDelta
+ can still be stored.
+
+ * rendering/LayoutState.cpp:
+ (WebCore::LayoutState::LayoutState):
+ * rendering/LayoutState.h:
+ (WebCore::LayoutState::LayoutState):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::layoutBlock):
+ (WebCore::RenderBlock::layoutBlockChildren):
+ (WebCore::RenderBlock::layoutOnlyPositionedObjects):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::localToAbsolute):
+ (WebCore::RenderBox::absoluteToLocal):
+ (WebCore::RenderBox::computeAbsoluteRepaintRect):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutBlock):
+ * rendering/RenderFlow.cpp:
+ (WebCore::RenderFlow::absoluteClippedOverflowRect):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateLayerPositions):
+ * rendering/RenderTableCell.cpp:
+ (WebCore::RenderTableCell::computeAbsoluteRepaintRect):
+ (WebCore::RenderTableCell::localToAbsolute):
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::pushLayoutState):
+ * rendering/RenderView.h:
+ (WebCore::RenderView::layoutDelta):
+ (WebCore::RenderView::addLayoutDelta):
+ (WebCore::RenderView::doingFullRepaint):
+ (WebCore::RenderView::pushLayoutState):
+ (WebCore::RenderView::popLayoutState):
+ (WebCore::RenderView::layoutStateEnabled):
+ (WebCore::RenderView::layoutState):
+ (WebCore::LayoutStateMaintainer::LayoutStateMaintainer):
+ (WebCore::LayoutStateMaintainer::push):
+ (WebCore::LayoutStateMaintainer::pop):
+ * rendering/bidi.cpp:
+ (WebCore::RenderBlock::layoutInlineChildren):
+
+2009-01-12 Julien Chaffraix <jchaffraix@pleyo.com>
+
+ Reviewed by Holger Freyther.
+
+ [Qt] Build fix after turning the fontCache to a singleton
+ https://bugs.webkit.org/show_bug.cgi?id=23253
+
+ Add a stub implementation for WebCore::fontCache() and FontCache::FontCache().
+
+ * platform/graphics/qt/FontCacheQt.cpp:
+ (WebCore::fontCache):
+ (WebCore::FontCache::FontCache):
+
+2009-01-12 Eric Roman <eroman@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Fix some bugs with Selection::appendTrailingWhitespace().
+ https://bugs.webkit.org/show_bug.cgi?id=23232
+
+ Test: editing/selection/doubleclick-whitespace-crash.html
+
+ * editing/Selection.cpp:
+ (WebCore::makeSearchRange):
+ (WebCore::Selection::appendTrailingWhitespace):
+
+2009-01-12 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Add the first pieces of platform/graphics/chromium
+ https://bugs.webkit.org/show_bug.cgi?id=23257
+
+ * platform/graphics/chromium/ColorChromium.cpp: Added.
+ (WebCore::focusRingColor):
+ * platform/graphics/chromium/FontCacheChromiumWin.cpp: Added.
+ (WebCore::FontCache::platformInit):
+ (WebCore::isStringASCII):
+ (WebCore::LookupAltName):
+ (WebCore::FontCodepage::):
+ (WebCore::FontCodepage::if):
+ (WebCore::createFontIndirectAndGetWinName):
+ (WebCore::fontContainsCharacter):
+ (WebCore::FontCache::getFontDataForCharacters):
+ (WebCore::FontCache::alternateFamilyName):
+ (WebCore::FontCache::getSimilarFontPlatformData):
+ (WebCore::FontCache::getLastResortFallbackFont):
+ (WebCore::toGDIFontWeight):
+ (WebCore::FontCache::getGenericFontForScript):
+ (WebCore::FillLogFont):
+ (WebCore::FontCache::fontExists):
+ (WebCore::TraitsInFamilyProcData::TraitsInFamilyProcData):
+ (WebCore::traitsInFamilyEnumProc):
+ (WebCore::FontCache::getTraitsInFamily):
+ (WebCore::FontCache::createFontPlatformData):
+ * platform/graphics/chromium/FontCacheLinux.cpp: Added.
+ (WebCore::FontCache::platformInit):
+ (WebCore::FontCache::getFontDataForCharacters):
+ (WebCore::FontCache::alternateFamilyName):
+ (WebCore::FontCache::getSimilarFontPlatformData):
+ (WebCore::FontCache::getLastResortFallbackFont):
+ (WebCore::FontCache::getTraitsInFamily):
+ (WebCore::FontCache::createFontPlatformData):
+ (WebCore::FontCache::getGenericFontForScript):
+ * platform/graphics/chromium/FontChromiumWin.cpp: Added.
+ (WebCore::windowsCanHandleTextDrawing):
+ (WebCore::skiaDrawText):
+ (WebCore::PaintSkiaText):
+ (WebCore::Font::drawGlyphs):
+ (WebCore::Font::selectionRectForComplexText):
+ (WebCore::Font::drawComplexText):
+ (WebCore::Font::floatWidthForComplexText):
+ (WebCore::Font::offsetForPositionForComplexText):
+
+2009-01-12 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23254
+ Upstream page/chromium/
+
+ * page/chromium/AXObjectCacheChromium.cpp: Added.
+ (WebCore::AXObjectCache::detachWrapper):
+ (WebCore::AXObjectCache::attachWrapper):
+ (WebCore::AXObjectCache::postNotification):
+ (WebCore::AXObjectCache::postNotificationToElement):
+ (WebCore::AXObjectCache::handleFocusedUIElementChanged):
+ * page/chromium/AccessibilityObjectChromium.cpp:
+ * page/chromium/AccessibilityObjectWrapper.h:
+ * page/chromium/ChromeClientChromium.h: Added.
+ * page/chromium/DragControllerChromium.cpp: Added.
+ (WebCore::DragController::dragOperation):
+ (WebCore::DragController::isCopyKeyDown):
+ (WebCore::DragController::maxDragImageSize):
+ (WebCore::DragController::cleanupAfterSystemDrag):
+ * page/chromium/EventHandlerChromium.cpp: Added.
+ (WebCore::EventHandler::passMousePressEventToSubframe):
+ (WebCore::EventHandler::passMouseMoveEventToSubframe):
+ (WebCore::EventHandler::passMouseReleaseEventToSubframe):
+ (WebCore::EventHandler::passWheelEventToWidget):
+ (WebCore::EventHandler::passWidgetMouseDownEventToWidget):
+ (WebCore::EventHandler::passMouseDownEventToWidget):
+ (WebCore::EventHandler::tabsToAllControls):
+ (WebCore::EventHandler::eventActivatedView):
+ (WebCore::EventHandler::createDraggingClipboard):
+ (WebCore::EventHandler::focusDocumentView):
+ (WebCore::EventHandler::accessKeyModifiers):
+ * page/chromium/FrameChromium.cpp: Added.
+ (WebCore::computePageRectsForFrame):
+ (WebCore::Frame::dragImageForSelection):
+ * page/chromium/FrameChromium.h: Added.
+
+2009-01-12 Dimitri Glazkov <dglazkov@chromium.org>
Reviewed by Darin Adler.
@@ -949,6 +53375,948 @@
* loader/FrameLoaderClient.cpp:
(WebCore::FrameLoaderClient::transitionToCommittedForNewPage):
+2009-01-12 Julien Chaffraix <jchaffraix@pleyo.com>
+
+ Reviewed by Darin Adler.
+
+ Bug 22861: Turn the FontCache into a singleton
+ https://bugs.webkit.org/show_bug.cgi?id=22861
+
+ - Added fontCache() to get the global FontCache.
+
+ - Made all the methods in FontCache instance method.
+
+ - Changed FontCache:: to fontCache()-> in WebCore.
+
+ * WebCore.base.exp: Now export fontCache().
+ * css/CSSFontFaceSource.cpp:
+ (WebCore::CSSFontFaceSource::getFontData):
+ * css/CSSFontSelector.cpp:
+ (WebCore::CSSFontSelector::CSSFontSelector):
+ (WebCore::CSSFontSelector::~CSSFontSelector):
+ (WebCore::CSSFontSelector::addFontFaceRule):
+ (WebCore::fontDataForGenericFamily):
+ * platform/graphics/Font.cpp:
+ (WebCore::Font::glyphDataForCharacter):
+ * platform/graphics/FontCache.cpp:
+ (WebCore::fontCache):
+ (WebCore::FontCache::FontCache):
+ * platform/graphics/FontCache.h:
+ * platform/graphics/FontFallbackList.cpp:
+ (WebCore::FontFallbackList::FontFallbackList):
+ (WebCore::FontFallbackList::invalidate):
+ (WebCore::FontFallbackList::releaseFontData):
+ (WebCore::FontFallbackList::fontDataAt):
+ (WebCore::FontFallbackList::fontDataForCharacters):
+ (WebCore::FontFallbackList::setPlatformFont):
+ * platform/graphics/SimpleFontData.cpp:
+ (WebCore::SimpleFontData::~SimpleFontData):
+ * platform/graphics/mac/FontCacheMac.mm:
+ (WebCore::fontCacheATSNotificationCallback):
+ * platform/graphics/mac/SimpleFontDataMac.mm:
+ (WebCore::SimpleFontData::smallCapsFontData):
+ * platform/graphics/win/FontCacheWin.cpp:
+ (WebCore::getCJKCodePageMasks):
+ * platform/graphics/win/SimpleFontDataWin.cpp:
+ (WebCore::SimpleFontData::containsCharacters):
+
+2009-01-11 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 23247: createSVGPathSegCurvetoCubicSmoothAbs doesn't set y2 correctly
+ https://bugs.webkit.org/show_bug.cgi?id=23247
+
+ Also fix problems where partially parsed paths will still have an effect
+ rather than failing parsing and being ignored.
+
+ Test: dom/path-segments.html
+
+ * platform/graphics/Path.h:
+ (WebCore::Path::swap): Added.
+
+ * svg/SVGParserUtilities.cpp:
+ (WebCore::SVGPathParser::parseSVG): Removed unneeded special case for empty string.
+ (WebCore::PathBuilder::build): Changed to not modify the path if parsing fails.
+ (WebCore::SVGPathSegListBuilder::build): Changed to not modify the segment list if
+ parsing fails.
+ (WebCore::SVGPathSegListBuilder::svgMoveTo): Put the path element into the vector,
+ not directly into the segment list.
+ (WebCore::SVGPathSegListBuilder::svgLineTo): Ditto.
+ (WebCore::SVGPathSegListBuilder::svgLineToHorizontal): Ditto.
+ (WebCore::SVGPathSegListBuilder::svgLineToVertical): Ditto.
+ (WebCore::SVGPathSegListBuilder::svgCurveToCubic): Ditto.
+ (WebCore::SVGPathSegListBuilder::svgCurveToCubicSmooth): Ditto.
+ (WebCore::SVGPathSegListBuilder::svgCurveToQuadratic): Ditto.
+ (WebCore::SVGPathSegListBuilder::svgCurveToQuadraticSmooth): Ditto.
+ (WebCore::SVGPathSegListBuilder::svgArcTo): Ditto.
+ (WebCore::SVGPathSegListBuilder::svgClosePath): Ditto.
+
+ * svg/SVGPathSegCurvetoCubicSmooth.h:
+ (WebCore::SVGPathSegCurvetoCubicSmooth::SVGPathSegCurvetoCubicSmooth):
+ Set y2 to y2, not to y.
+
+2009-01-11 Darin Adler <darin@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Bug 23102: turn on unused parameter warnings in WebCore
+ https://bugs.webkit.org/show_bug.cgi?id=23102
+
+ Fourth step: Remove arguments entirely in the many cases where they are not
+ needed at all. This step is a little less mechanical than the earlier ones.
+
+ * dom/DOMImplementation.cpp:
+ (WebCore::DOMImplementation::isXMLMIMEType): Pass TextCaseSensitive when creating
+ the regular expression, since we already specify a-zA-Z in our expression.
+
+ * dom/Document.cpp:
+ (WebCore::Document::databaseThread): Don't pass in the document when creating
+ a DatabaseThread.
+
+ * dom/Element.cpp:
+ (WebCore::Element::createRareData): Don't pass the element when creating an
+ ElementRareData.
+ (WebCore::Element::detach): Don't pass the element when calling resetComputedStyle.
+ (WebCore::Element::recalcStyle): Ditto.
+
+ * dom/ElementRareData.h: Remove the unused Element* from the constructor and
+ the resetComputedStyle function.
+
+ * dom/EventTargetNode.cpp:
+ (WebCore::EventTargetNode::dispatchEvent): Don't pass ec to dispatchGenericEvent.
+ (WebCore::EventTargetNode::dispatchGenericEvent): Remove the unused ec argument.
+ (WebCore::EventTargetNode::dispatchWindowEvent): Don't pass ec to dispatchGenericEvent.
+ * dom/EventTargetNode.h: Remove the ExceptionCode& argument form disaptchGenericEvent.
+
+ * editing/ApplyStyleCommand.cpp: Remove the empty removeBlockStyle function.
+ (WebCore::ApplyStyleCommand::pushDownTextDecorationStyleAroundNode): Remove the unused
+ start and end arguments.
+ (WebCore::ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries): Don't pass start
+ and end to pushDownTextDecorationStyleAroundNode.
+
+ * editing/ApplyStyleCommand.h: Remove the empty removeBlockStyle function. Removed the
+ unused start and end arguments from pushDownTextDecorationStyleAroundNode.
+
+ * editing/htmlediting.cpp: Removed include of unused RegularExpression.h header.
+
+ * html/HTMLTokenizer.cpp:
+ (WebCore::Token::addAttribute): Removed unused Document* argument.
+ (WebCore::HTMLTokenizer::parseTag): Don't pass document to addAttribute.
+
+ * html/HTMLTokenizer.h: Removed unused Document* argument to to addAttribute.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::localStorage): Don't pass the frame to storageArea.
+
+ * page/DragController.cpp:
+ (WebCore::DragController::dragIsMove): Removed unused DragData argument.
+ (WebCore::DragController::performDrag): Call concludeEditDrag rather than
+ concludeDrag.
+ (WebCore::DragController::tryDocumentDrag): Don't pass dragData to dragIsMove.
+ (WebCore::DragController::concludeEditDrag): Renamed to make it clear this
+ should only be called for edit drags. Removed the action mask argument. Also
+ changed dragIsMove call sites to not pass dragData.
+
+ * page/DragController.h: Updated for above changes and tweaked comment format.
+
+ * page/Frame.cpp:
+ (WebCore::createRegExpForLabels): Pass TextCaseSensitive and TextCaseInsensitive
+ when creating regular expressions for clarity. Call match instead of search,
+ since both do the same thing except for with negative start offsets, and none
+ used here are negative.
+ (WebCore::Frame::matchLabelsAgainstElement): Ditto.
+
+ * page/Page.h: Moved TextCaseSensitivity from here to StringImpl.h in platform.
+
+ * page/mac/AccessibilityObjectWrapper.mm:
+ (AXAttributeStringSetHeadingLevel): Removed unused object argument.
+ (AXAttributedStringAppendText): Ditto.
+ (-[AccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:]): Ditto.
+
+ * page/mac/FrameMac.mm:
+ (WebCore::regExpForLabels): Pass TextCaseSensitive and TextCaseInsensitive
+ when creating regular expressions for clarity. Call match instead of search,
+ since both do the same thing except for with negative start offsets, and none
+ used here are negative.
+ (WebCore::Frame::matchLabelsAgainstElement): Ditto.
+
+ * platform/graphics/SegmentedFontData.cpp:
+ (WebCore::SegmentedFontData::containsCharacter): Added.
+ (WebCore::SegmentedFontData::containsCharacters): Updated to check all characters
+ instead of just the first one, using containsCharacter.
+
+ * platform/graphics/SegmentedFontData.h: Made more members private.
+ Added containsCharacter function member.
+
+ * platform/mac/DragImageMac.mm:
+ (WebCore::dragImageSize): Changed to use RetainPtr<NSImage> directly instead of
+ DragImageRef for clarity, since this is platform-specific code.
+ (WebCore::deleteDragImage): Ditto. Also remove argument name to get rid of unused
+ variable warning.
+ (WebCore::scaleDragImage): Ditto.
+ (WebCore::dissolveDragImageToFraction): Ditto.
+ (WebCore::createDragImageFromImage): Ditto.
+ (WebCore::createDragImageIconForCachedImage): Ditto.
+
+ * platform/mac/WebFontCache.mm:
+ (acceptableChoice): Removed the unused weight-related arguments.
+ (betterChoice): Ditto.
+ (+[WebFontCache internalFontWithFamily:traits:weight:size:]): Ditto.
+
+ * platform/posix/FileSystemPOSIX.cpp: Removed the implementation of listDirectory
+ because we'd rather get a link error rather than a runtime error if we use it
+ for anything, and right now it's not used.
+
+ * platform/text/RegularExpression.cpp: Removed unused private data,
+ including pattern, lastMatchString, lastMatchOffsets, lastMatchCount,
+ and lastMatchPos. Made the RegularExpression::Private::regex be private
+ and use an accessor function to get at it.
+ (WebCore::RegularExpression::RegularExpression): Removed the const char* version
+ of the constructor because it's not any more efficient. Changed the boolean
+ constructor argument to use TextCaseSensitivity instead to make it less likely
+ we'll use it wrong.
+ (WebCore::RegularExpression::operator=): Since the only member is a single RefPtr,
+ just use plain old assignment on it. The only reason we do this instead of using
+ the compiler generated assignment operator is that we want the Private structure
+ to be internal to the .cpp file.
+ (WebCore::RegularExpression::match): Added a null check so we won't crash if
+ we fail to compile the regular expression. Removed the code to handle multiple
+ match strings, since that was unused.
+
+ * platform/text/RegularExpression.h: Changed the case sensitivity argument to use
+ TextCaseSensitivity and not have a default value. Removed the default constructor,
+ and the pattern, match, and pos functions.
+
+ * platform/text/StringImpl.h: Moved the TextCaseSensitivity enum here from
+ Page.h, because we should eventually use it in all the places where we have
+ an argument to control case sensitivity, starting with the functions in this
+ class.
+
+ * platform/text/mac/ShapeArabic.c:
+ (shapeUnicode): Removed the unused options and pErrorCode arguments. Even though
+ this is code borrowed from ICU, this seems like a simple safe change to make.
+ (shapeArabic): Don't pass options or pErrorCode in to shapeUnicode.
+
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::RenderPath): Removed the unused style argument.
+ Also removed the type check. The argument already has the correct type,
+ so it's not helpful to upcast it and then check its type again, unless
+ we have some reason to believe the type is not reliable. And we don't.
+
+ * rendering/RenderPath.h: Removed the RenderStyle* argument to the
+ constructor. Also removed the explicit declaration of the destructor.
+ It's not helpful or needed.
+
+ * rendering/RenderSVGInlineText.cpp:
+ (WebCore::RenderSVGInlineText::localCaretRect): Updated the comment here to
+ make it clear that just returning an empty rect is not a good implementation.
+ Removed the argument names to get rid of the warning.
+
+ * rendering/RenderTreeAsText.cpp:
+ (WebCore::printBorderStyle): Removed the unused RenderObject argument.
+ (WebCore::operator<<): Updated for the change to printBorderStyle function.
+
+ * storage/DatabaseThread.cpp:
+ (WebCore::DatabaseThread::DatabaseThread): Removed the unused document argument.
+ * storage/DatabaseThread.h: Ditto.
+
+ * storage/LocalStorage.cpp:
+ (WebCore::LocalStorage::storageArea): Removed the unused Frame* argument.
+ * storage/LocalStorage.h: Ditto.
+
+ * svg/SVGElement.cpp:
+ (WebCore::SVGElement::sendSVGLoadEventIfPossible): Don't pass an exception
+ code location to dispatchGenericEvent.
+ * svg/SVGElementInstance.cpp:
+ (WebCore::SVGElementInstance::dispatchEvent): Ditto.
+
+ * svg/SVGStyledTransformableElement.cpp: Removed include of unused RegularExpression.h.
+ (WebCore::SVGStyledTransformableElement::createRenderer): Don't pass style in to
+ the RenderPath constructor.
+
+ * svg/SVGTransformable.cpp: Removed include of unused RegularExpression.h.
+
+ * xml/XSLTProcessor.cpp:
+ (WebCore::createFragmentFromSource): Removed unused sourceNode argument.
+ (WebCore::XSLTProcessor::transformToFragment): Don't pass sourceNode to createFragmentFromSource.
+
+2009-01-11 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23165
+ Disable application cache dynamic entries support.
+
+ * bindings/js/JSDOMApplicationCacheCustom.cpp:
+ * loader/appcache/DOMApplicationCache.idl:
+
+2009-01-11 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by Darin Adler.
+
+ Correct coordinate transformation for deeply nested frames on resizing. This
+ fixes https://bugs.webkit.org/show_bug.cgi?id=20766.
+
+ Test: fast/frames/frame-deep-nested-resize.html
+
+ * rendering/RenderFrameSet.cpp:
+ (WebCore::RenderFrameSet::userResize):
+
+2009-01-11 Mark Rowe <mrowe@apple.com>
+
+ Tiger build fix. The connection parameter is still used on Tiger in this method.
+
+ * platform/network/mac/ResourceHandleMac.mm:
+ (-[WebCoreResourceHandleAsDelegate connection:willCacheResponse:]):
+
+2009-01-11 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 23102: turn on unused parameter warnings in WebCore
+ https://bugs.webkit.org/show_bug.cgi?id=23102
+
+ Third step: Deal with cases of arguments used only in assertions.
+
+ * dom/MessagePort.cpp:
+ (WebCore::MessagePortCloseEventTask::performTask): Use ASSERT_UNUSED.
+ * dom/Worker.cpp:
+ (WebCore::Worker::notifyFinished): Ditto.
+ * dom/XMLTokenizer.cpp:
+ (WebCore::XMLTokenizer::notifyFinished): Ditto.
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::failedLoadingMainResource): Ditto.
+ * loader/appcache/ApplicationCacheStorage.cpp:
+ (WebCore::ApplicationCacheStorage::verifySchemaVersion): Ditto.
+ * loader/icon/IconLoader.cpp:
+ (WebCore::IconLoader::didReceiveData): Since loader and size are only
+ used when logging, use UNUSED_PARAM when logging is disabled.
+ * platform/mac/WidgetMac.mm:
+ (WebCore::Widget::beforeMouseDown): Use ASSERT_UNUSED.
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::didCancelAuthenticationChallenge): Use the
+ argument since it's probably a tiny bit more efficient and gets rid
+ of the unused argument warning.
+ * rendering/RenderListMarker.cpp:
+ (WebCore::RenderListMarker::createInlineBox): Use ASSERT_UNUSED.
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::createInlineBox): Ditto.
+ * rendering/RenderSVGInline.cpp:
+ (WebCore::RenderSVGInline::createInlineBox): Use UNUSED_PARAM.
+ I couldn't use ASSERT_UNUSED because it's a single assertion, but it's
+ the only use for two different arguments.
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::createInlineBox): Use ASSERT_UNUSED.
+ * rendering/RenderThemeMac.mm:
+ (-[WebCoreRenderThemeNotificationObserver systemColorsDidChange:]): Ditto.
+
+2009-01-11 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Oliver Hunt
+
+ https://bugs.webkit.org/show_bug.cgi?id=23242
+
+ Fix CanvasRenderingContext2D::transform to do a pre-multiply,
+ rather than a post-multiply into m_transform. This bug did not affect
+ drawing, but did cause m_transform to be incorrect, which impacted
+ willDraw(), and isPointInPath.
+
+ Test: fast/canvas/canvas-incremental-repaint-2.html
+
+ * html/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::transform):
+
+2009-01-11 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Bug 23102: turn on unused parameter warnings in WebCore
+ https://bugs.webkit.org/show_bug.cgi?id=23102
+
+ Second step: Fix simple Objective-C cases where we need to use UNUSED_PARAM.
+ That's because you can't omit an argument name in Objective-C methods.
+
+ * bindings/objc/DOMObject.mm:
+ (-[DOMObject copyWithZone:]): Use UNUSED_PARAM. Also rename argument to include
+ the word "unused" so we don't just start using it without removing the macro.
+ * bindings/objc/WebScriptObject.mm:
+ (+[WebUndefined allocWithZone:]): Ditto.
+ (-[WebUndefined initWithCoder:]): Ditto.
+ (-[WebUndefined encodeWithCoder:]): Ditto.
+ (-[WebUndefined copyWithZone:]): Ditto.
+ * page/mac/WebDashboardRegion.m:
+ (-[WebDashboardRegion copyWithZone:]): Ditto.
+ * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
+ (WebCore::mainThreadSetNeedsDisplay): Omit argument name.
+ (-[WebCoreMovieObserver loadStateChanged:]): Use UNUSED_PARAM as above.
+ (-[WebCoreMovieObserver rateChanged:]): Ditto.
+ (-[WebCoreMovieObserver sizeChanged:]): Ditto.
+ (-[WebCoreMovieObserver timeChanged:]): Ditto.
+ (-[WebCoreMovieObserver didEnd:]): Ditto.
+ (-[WebCoreMovieObserver newImageAvailable:]): Ditto.
+ * platform/mac/ScrollbarThemeMac.mm:
+ (+[ScrollbarPrefsObserver appearancePrefsChanged:]): Ditto.
+ (+[ScrollbarPrefsObserver behaviorPrefsChanged:]): Ditto.
+ * platform/mac/SharedTimerMac.mm:
+ (-[WebCorePowerNotifier didWake:]): Ditto.
+ * platform/mac/WebCoreKeyGenerator.m:
+ (-[WebCoreKeyGenerator signedPublicKeyAndChallengeStringWithStrengthIndex:challenge:pageURL:]): Ditto.
+ * platform/network/mac/ResourceHandleMac.mm:
+ (-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]): Ditto.
+ (-[WebCoreResourceHandleAsDelegate connectionShouldUseCredentialStorage:]): Ditto.
+ (-[WebCoreResourceHandleAsDelegate connection:didReceiveAuthenticationChallenge:]): Ditto.
+ (-[WebCoreResourceHandleAsDelegate connection:didCancelAuthenticationChallenge:]): Ditto.
+ (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]): Ditto.
+ (-[WebCoreResourceHandleAsDelegate connection:didReceiveData:lengthReceived:]): Ditto.
+ (-[WebCoreResourceHandleAsDelegate connection:willStopBufferingData:]): Ditto.
+ (-[WebCoreResourceHandleAsDelegate connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:]): Ditto.
+ (-[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:]): Ditto.
+ (-[WebCoreResourceHandleAsDelegate connection:didFailWithError:]): Ditto.
+ (-[WebCoreResourceHandleAsDelegate connection:willCacheResponse:]): Ditto.
+ (-[WebCoreSynchronousLoader connection:willSendRequest:redirectResponse:]): Ditto.
+ (-[WebCoreSynchronousLoader connection:didReceiveAuthenticationChallenge:]): Ditto.
+ (-[WebCoreSynchronousLoader connection:didReceiveResponse:]): Ditto.
+ (-[WebCoreSynchronousLoader connection:didReceiveData:]): Ditto.
+ (-[WebCoreSynchronousLoader connectionDidFinishLoading:]): Ditto.
+ (-[WebCoreSynchronousLoader connection:didFailWithError:]): Ditto.
+
+2009-01-11 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Move platform dependent strokeContains back to RenderPath, Path and delete
+ unneeded Code in svg.
+
+ RenderPath clean-up for strokeContains
+ [https://bugs.webkit.org/show_bug.cgi?id=22957]
+
+ * GNUmakefile.am:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/graphics/Path.h:
+ * platform/graphics/cairo/PathCairo.cpp:
+ (WebCore::Path::strokeContains):
+ * platform/graphics/cg/PathCG.cpp:
+ (WebCore::Path::strokeContains):
+ * platform/graphics/qt/PathQt.cpp:
+ (WebCore::Path::strokeContains):
+ * rendering/RenderPath.cpp:
+ (WebCore::RenderPath::strokeContains):
+ * svg/graphics/cairo/RenderPathCairo.cpp: Removed.
+ * svg/graphics/cg/CgSupport.cpp: Removed.
+ * svg/graphics/cg/CgSupport.h: Removed.
+ * svg/graphics/cg/RenderPathCg.cpp: Removed.
+ * svg/graphics/cg/SVGPaintServerPatternCg.cpp:
+ * svg/graphics/cg/SVGResourceMaskerCg.mm:
+ * svg/graphics/qt/RenderPathQt.cpp: Removed.
+
+2009-01-11 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Anders Carlsson.
+
+ [GTK] make distcheck complains that distclean is not deleting JSWorkerContextBase.lut.h
+
+ make distcheck pass by adding JSWorkerContextBase.lut.h to the
+ CLEANFILES that will be cleaned on a make distclean.
+
+ * GNUmakefile.am:
+
+2009-01-11 Zalan Bujtas <zbujtas@gmail.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23235
+ Build fix for non-VIDEO builds.
+
+ * rendering/RenderTheme.cpp:
+ * rendering/RenderTheme.h:
+
+2009-01-11 Gabriella Toth <gtoth@inf.u-szeged.hu>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19287
+ return value of malloc() is not checked in npruntime.cpp
+
+ Checking whether malloc can allocate memory or not. If it can't, CRASH macro is invoked
+ (like in fastMalloc).
+
+ * bridge/npruntime.cpp:
+ (_NPN_GetStringIdentifier):
+ (_NPN_GetIntIdentifier):
+ (NPN_InitializeVariantWithStringCopy):
+ (_NPN_CreateObject):
+
+2009-01-11 Glenn Wilson <gwilson@google.com>
+
+ Reviewed by Darin Adler.
+
+ Changes radio buttons so they can be 'checked' even if they
+ don't have the name attribute set.
+
+ See https://bugs.webkit.org/show_bug.cgi?id=21534
+
+ Test: fast/html/select-unnamed-radio.html
+
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::preDispatchEventHandler):
+
+2009-01-11 Bernhard Rosenkraenzer <bero@arklinux.ch>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22205
+ Fix compatibility with bison 2.4, partially based on older patch by
+ Priit Laes <amd@store20.com>
+
+ * WebCore/css/CSSGrammar.y: Made compatible with bison 2.4
+
+2009-01-11 Jeremy Moskovich <jeremy@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16001
+ Incorrect assumption that selection is always contiguous LTR.
+
+ Test: editing/selection/extend-selection-bidi.html
+
+ * rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::fillLineSelectionGap):
+ Make this function not assume a contiguous visual LTR selection range.
+
+2009-01-11 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23207
+ Moved currentTime() to from WebCore to WTF.
+
+ Most of these files only have a different header file included.
+ Various build files reflect removal of SystemTimeGtk, Wx, Qt and Linux
+ which were removed since they only implemented currentTime().
+
+ * ForwardingHeaders/wtf/CurrentTime.h: Added.
+ * GNUmakefile.am:
+ * WebCore.base.exp:
+ * WebCore.pro:
+ * dom/ContainerNode.cpp:
+ * dom/Document.cpp:
+ * dom/Event.cpp:
+ * history/CachedPage.cpp:
+ * history/PageCache.cpp:
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::load):
+ (WebCore::HTMLMediaElement::progressEventTimerFired):
+ * html/HTMLTokenizer.cpp:
+ * html/PreloadScanner.cpp:
+ * inspector/InspectorController.cpp:
+ * loader/Cache.cpp:
+ (WebCore::Cache::pruneLiveResources):
+ * loader/CachedImage.cpp:
+ * loader/CachedResource.cpp:
+ * loader/FrameLoader.cpp:
+ * loader/ProgressTracker.cpp:
+ * loader/icon/IconDatabase.cpp:
+ * loader/icon/IconRecord.cpp:
+ * page/DragController.cpp:
+ * page/Frame.cpp:
+ * page/FrameView.cpp:
+ * page/animation/AnimationBase.cpp:
+ * page/animation/AnimationController.cpp:
+ * page/animation/KeyframeAnimation.cpp:
+ * platform/SystemTime.h:
+ * platform/Timer.cpp:
+ * platform/graphics/BitmapImage.cpp:
+ * platform/gtk/MouseEventGtk.cpp:
+ * platform/gtk/SharedTimerGtk.cpp:
+ * platform/gtk/SystemTimeGtk.cpp: Removed.
+ * platform/gtk/SystemTimeLinux.cpp: Removed.
+ * platform/mac/SystemTimeMac.cpp:
+ * platform/qt/PlatformMouseEventQt.cpp:
+ (WebCore::PlatformMouseEvent::PlatformMouseEvent):
+ * platform/qt/SharedTimerQt.cpp:
+ * platform/qt/SharedTimerQt.h:
+ * platform/qt/SystemTimeQt.cpp: Removed.
+ * platform/win/SharedTimerWin.cpp:
+ * platform/win/SystemTimeWin.cpp:
+ * platform/wx/MouseEventWx.cpp:
+ (WebCore::PlatformMouseEvent::PlatformMouseEvent):
+ * platform/wx/SharedTimerWx.cpp:
+ * platform/wx/SystemTimeWx.cpp: Removed.
+ * rendering/RenderImage.cpp:
+ * rendering/RenderMedia.cpp:
+ * svg/animation/SMILTimeContainer.cpp:
+ * webcore-wx.bkl:
+ * xml/XMLHttpRequest.cpp:
+
+2009-01-11 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Make ScheduledAction (Timeout callback) able to execute the callback under WorkerContext.
+ Part of 'Timers in Workers' work.
+ https://bugs.webkit.org/show_bug.cgi?id=23223
+
+ * bindings/js/ScheduledAction.cpp:
+ (WebCore::ScheduledAction::execute): new method that takes WorkerContext.
+ (WebCore::ScheduledAction::executeFunctionInContext): Executes a JSFunction in proper context with 'this' object.
+ * bindings/js/ScheduledAction.h:
+
+2009-01-10 Eric Carlson <eric.carlson@apple.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23210
+ Make it easier for ports to define custom UI for media controls
+
+ * css/CSSStyleSelector.cpp:
+ (WebCore::CSSStyleSelector::styleForElement): call theme()->styleSheetForMediaControls to
+ get the media controller style sheet
+
+ * rendering/MediaControlElements.cpp:
+ (WebCore::MediaControlInputElement::hitTest): Added
+ * rendering/MediaControlElements.h: Updated
+
+ * rendering/RenderMedia.cpp:
+ (WebCore::RenderMedia::forwardEvent): Call element hitTest() method instead of local function
+ so control elements don't necessarily have to be rectangular
+
+ * rendering/RenderTheme.cpp:
+ (WebCore::RenderTheme::styleSheetForMediaControls): Added
+ (WebCore::RenderTheme::hitTestMediaControlPart): Added
+ * rendering/RenderTheme.h: Updated
+
+2009-01-10 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ https://bugs.webkit.org/show_bug.cgi?id=23222
+
+ We need to disable LayoutState when an object has transforms,
+ because LayoutState is not transform-aware and therefore
+ repaint rects can be computed incorrectly.
+
+ Test: fast/repaint/transform-disable-layoutstate.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::layoutBlock):
+ (WebCore::RenderBlock::layoutOnlyPositionedObjects):
+ * rendering/RenderFlexibleBox.cpp:
+ (WebCore::RenderFlexibleBox::layoutBlock):
+
+2009-01-09 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Simon Hausmann.
+
+ [QT] Make SharedTimer use QBasicTimer
+
+ Kill the SharedTimerQt.h and the usage of signal and slots
+ by using QBasicTimer.
+
+ * WebCore.pro:
+ * platform/qt/SharedTimerQt.cpp:
+ (WebCore::SharedTimerQt::SharedTimerQt):
+ (WebCore::SharedTimerQt::inst):
+ (WebCore::SharedTimerQt::start):
+ (WebCore::SharedTimerQt::stop):
+ (WebCore::SharedTimerQt::timerEvent):
+ (WebCore::setSharedTimerFiredFunction):
+ (WebCore::setSharedTimerFireTime):
+ (WebCore::stopSharedTimer):
+ * platform/qt/SharedTimerQt.h: Removed.
+
+2009-01-09 Adam Bergkvist <adam.bergkvist@ericsson.com>
+
+ Reviewed by Holger Freyther.
+
+ [CURL] POST without body becomes GET
+ https://bugs.webkit.org/show_bug.cgi?id=23182
+
+ Make sure that method is always set to POST even when the body is
+ empty. Cleaned up httpBody null check.
+
+ * platform/network/curl/ResourceHandleManager.cpp:
+ (WebCore::ResourceHandleManager::setupPOST):
+
+2009-01-09 Adam Treat <adam.treat@torchmobile.com>
+
+ Build fix.
+
+ * plugins/PluginView.cpp:
+
+2009-01-09 Adele Peterson <adele@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Fix infinite recursion in clientPaddingLeft and clientPaddingRight. This changes the code back to
+ how it was before RenderTextControlSingleLine was split out from RenderTextControl.
+
+ No test added since this code is only exercised when trying to place a search field's recent searches popup menu.
+
+ * rendering/RenderTextControlSingleLine.cpp:
+ (WebCore::RenderTextControlSingleLine::clientPaddingLeft):
+ (WebCore::RenderTextControlSingleLine::clientPaddingRight):
+
+2009-01-09 Darin Adler <darin@apple.com>
+
+ Reviewed by Jon Honeycutt.
+
+ Bug 22913: REGRESSION: Space bar doesn't scroll on windows
+ https://bugs.webkit.org/show_bug.cgi?id=22913
+ rdar://problem/6479834
+
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::defaultKeyboardEventHandler): Added code to call
+ defaultSpaceEventHandler.
+ (WebCore::EventHandler::defaultSpaceEventHandler): Added. Scrolls down or up based
+ on the shift key.
+ * page/EventHandler.h: Added defaultSpaceEventHandler.
+
+ * platform/mac/ScrollViewMac.mm:
+ (WebCore::ScrollView::platformScroll): Return false, because this function does
+ not scroll. In an earlier version of this patch, I used this to prevent the
+ patch from affecting the Mac, but I decided to use #if instead.
+
+2009-01-09 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Delete references to JSValue, removing this class.
+
+ * bindings/js/JSWorkerContextCustom.cpp:
+ (WebCore::JSWorkerContext::self):
+ * bindings/js/ScriptCallStack.h:
+
+2009-01-09 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Add svg/graphics/skia files.
+ https://bugs.webkit.org/show_bug.cgi?id=23147
+
+ * svg/graphics/skia/RenderPathSkia.cpp: Added.
+ (WebCore::RenderPath::strokeContains):
+ * svg/graphics/skia/SVGPaintServerPatternSkia.cpp: Added.
+ (WebCore::SVGPaintServerPattern::setup):
+ * svg/graphics/skia/SVGPaintServerSkia.cpp: Added.
+ (WebCore::SVGPaintServer::draw):
+ (WebCore::SVGPaintServer::teardown):
+ (WebCore::SVGPaintServer::renderPath):
+ * svg/graphics/skia/SVGResourceFilterSkia.cpp: Added.
+ (WebCore::SVGResourceFilter::createPlatformData):
+ (WebCore::SVGResourceFilter::prepareFilter):
+ (WebCore::SVGResourceFilter::applyFilter):
+ * svg/graphics/skia/SVGResourceMaskerSkia.cpp: Added.
+ (WebCore::SVGResourceMasker::applyMask):
+
+2009-01-09 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Add SkiaFontWin to platform/graphics/chromium
+ https://bugs.webkit.org/show_bug.cgi?id=23215
+
+ * platform/graphics/skia/SkiaFontWin.cpp: Added.
+ (WebCore::CachedOutlineKey::CachedOutlineKey):
+ (WebCore::operator==):
+ (WebCore::CachedOutlineKeyHash::hash):
+ (WebCore::CachedOutlineKeyHash::equal):
+ (WebCore::FIXEDToSkScalar):
+ (WebCore::deleteOutline):
+ (WebCore::addPolyCurveToPath):
+ (WebCore::getPathForGlyph):
+ (WebCore::SkiaWinOutlineCache::lookupOrCreatePathForGlyph):
+ (WebCore::SkiaWinOutlineCache::removePathsForFont):
+ * platform/graphics/skia/SkiaFontWin.h: Added.
+
+2009-01-09 Anders Carlsson <andersca@apple.com>
+
+ Fix build.
+
+ * WebCore.LP64.exp:
+
+2009-01-09 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Add PlatformContextSkia and PlatformGraphics.h to platform/graphics/skia
+ https://bugs.webkit.org/show_bug.cgi?id=23215
+
+ * platform/graphics/skia/PlatformContextSkia.cpp: Added.
+ (PlatformContextSkia::State::State):
+ (PlatformContextSkia::State::~State):
+ (PlatformContextSkia::State::applyAlpha):
+ (PlatformContextSkia::PlatformContextSkia):
+ (PlatformContextSkia::~PlatformContextSkia):
+ (PlatformContextSkia::setCanvas):
+ (PlatformContextSkia::save):
+ (PlatformContextSkia::restore):
+ (PlatformContextSkia::drawRect):
+ (PlatformContextSkia::setupPaintCommon):
+ (PlatformContextSkia::setupPaintForFilling):
+ (PlatformContextSkia::setupPaintForStroking):
+ (PlatformContextSkia::setDrawLooper):
+ (PlatformContextSkia::setMiterLimit):
+ (PlatformContextSkia::setAlpha):
+ (PlatformContextSkia::setLineCap):
+ (PlatformContextSkia::setLineJoin):
+ (PlatformContextSkia::setPorterDuffMode):
+ (PlatformContextSkia::setFillColor):
+ (PlatformContextSkia::getDrawLooper):
+ (PlatformContextSkia::getStrokeStyle):
+ (PlatformContextSkia::setStrokeStyle):
+ (PlatformContextSkia::setStrokeColor):
+ (PlatformContextSkia::getStrokeThickness):
+ (PlatformContextSkia::setStrokeThickness):
+ (PlatformContextSkia::getTextDrawingMode):
+ (PlatformContextSkia::setTextDrawingMode):
+ (PlatformContextSkia::setUseAntialiasing):
+ (PlatformContextSkia::fillColor):
+ (PlatformContextSkia::beginPath):
+ (PlatformContextSkia::addPath):
+ (PlatformContextSkia::setFillRule):
+ (PlatformContextSkia::setGradient):
+ (PlatformContextSkia::setPattern):
+ (PlatformContextSkia::setDashPathEffect):
+ (PlatformContextSkia::paintSkPaint):
+ (PlatformContextSkia::bitmap):
+ (PlatformContextSkia::isPrinting):
+ * platform/graphics/skia/PlatformContextSkia.h: Added.
+ (PlatformContextSkia::currentPath):
+ (PlatformContextSkia::canvas):
+ (PlatformContextSkia::gdk_skia):
+ * platform/graphics/skia/PlatformGraphics.h: Added.
+
+2009-01-09 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Add TransformationMatrixSkia to platform/graphics/skia
+ https://bugs.webkit.org/show_bug.cgi?id=23215
+
+ * platform/graphics/skia/TransformationMatrixSkia.cpp: Added.
+ (WebCore::TransformationMatrix::TransformationMatrix):
+ (WebCore::TransformationMatrix::setMatrix):
+ (WebCore::TransformationMatrix::map):
+ (WebCore::TransformationMatrix::mapRect):
+ (WebCore::TransformationMatrix::isIdentity):
+ (WebCore::TransformationMatrix::reset):
+ (WebCore::TransformationMatrix::scale):
+ (WebCore::TransformationMatrix::rotate):
+ (WebCore::TransformationMatrix::translate):
+ (WebCore::TransformationMatrix::shear):
+ (WebCore::TransformationMatrix::det):
+ (WebCore::TransformationMatrix::inverse):
+ (WebCore::TransformationMatrix::operator SkMatrix):
+ (WebCore::TransformationMatrix::operator==):
+ (WebCore::TransformationMatrix::operator*=):
+ (WebCore::TransformationMatrix::operator*):
+ (WebCore::TransformationMatrix::a):
+ (WebCore::TransformationMatrix::setA):
+ (WebCore::TransformationMatrix::b):
+ (WebCore::TransformationMatrix::setB):
+ (WebCore::TransformationMatrix::c):
+ (WebCore::TransformationMatrix::setC):
+ (WebCore::TransformationMatrix::d):
+ (WebCore::TransformationMatrix::setD):
+ (WebCore::TransformationMatrix::e):
+ (WebCore::TransformationMatrix::setE):
+ (WebCore::TransformationMatrix::f):
+ (WebCore::TransformationMatrix::setF):
+
+2009-01-09 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/6477502> Repro crash reloading page using HTML5 AppCache on Windows
+
+ Test: http/tests/appcache/reload.html
+
+ On Windows, reloading resulted in the following sequence of events:
+ 1) A new main resource loader was created and associated with the cache. Its document loader
+ was not associated with the cache yet.
+ 2) The old document loader was destroyed, and since it was the last one, ApplicationCacheGroup
+ teardown started, with newestCache being zeroed out.
+ 3) The new document loader was associated with the cache group, and cache update started.
+ 4) Since newestCache was null, this caused many problems.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::documentLoaderDestroyed): Improve comments and assertions,
+ no functional changes.
+ (WebCore::ApplicationCacheGroup::associateDocumentLoaderWithCache): Revive the cache group
+ if its newest cache pointer is already saved for teardown. Note that the cache pointer
+ validity is ensured by MainResourceLoader that holds a reference to it.
+
+2009-01-09 Darin Fisher <darin@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23214
+ Upstream platform/network/chromium/
+
+ * platform/network/chromium/AuthenticationChallenge.h: Added.
+ (WebCore::AuthenticationChallenge::AuthenticationChallenge):
+ (WebCore::AuthenticationChallenge::sourceHandle):
+ * platform/network/chromium/AuthenticationChallengeChromium.cpp: Added.
+ (WebCore::AuthenticationChallenge::platformCompare):
+ * platform/network/chromium/CookieJarChromium.cpp: Added.
+ (WebCore::setCookies):
+ (WebCore::cookies):
+ (WebCore::cookiesEnabled):
+ * platform/network/chromium/DNSChromium.cpp: Added.
+ (WebCore::prefetchDNS):
+ * platform/network/chromium/NetworkStateNotifierChromium.cpp: Added.
+ (WebCore::NetworkStateNotifier::updateState):
+ (WebCore::NetworkStateNotifier::NetworkStateNotifier):
+ * platform/network/chromium/NetworkStateNotifierPrivate.h: Added.
+ * platform/network/chromium/ResourceError.h: Added.
+ (WebCore::ResourceError::ResourceError):
+ * platform/network/chromium/ResourceRequest.h: Added.
+ (WebCore::ResourceRequest::):
+ (WebCore::ResourceRequest::ResourceRequest):
+ (WebCore::ResourceRequest::frame):
+ (WebCore::ResourceRequest::setFrame):
+ (WebCore::ResourceRequest::setTargetType):
+ (WebCore::ResourceRequest::targetType):
+ (WebCore::ResourceRequest::originPid):
+ (WebCore::ResourceRequest::setOriginPid):
+ (WebCore::ResourceRequest::securityInfo):
+ (WebCore::ResourceRequest::setSecurityInfo):
+ (WebCore::ResourceRequest::doUpdatePlatformRequest):
+ (WebCore::ResourceRequest::doUpdateResourceRequest):
+ * platform/network/chromium/ResourceResponse.h:
+ (WebCore::ResourceResponse::ResourceResponse):
+ (WebCore::ResourceResponse::getSecurityInfo):
+ (WebCore::ResourceResponse::setSecurityInfo):
+ (WebCore::ResourceResponse::isContentFiltered):
+ (WebCore::ResourceResponse::setIsContentFiltered):
+ (WebCore::ResourceResponse::doUpdateResourceResponse):
+
+2009-01-09 Peter Kasting <pkasting@google.com>
+
+ Reviewed by David Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22995
+ Fix flaky image animation by resetting the metadata for a frame when
+ we get new data for that frame. This fixes animations that halted
+ when the next frame of the animation wasn't complete by the time the
+ current frame's duration expired.
+
+ * platform/graphics/BitmapImage.cpp:
+ (WebCore::BitmapImage::destroyDecodedData):
+ (WebCore::BitmapImage::dataChanged):
+ * platform/graphics/BitmapImage.h:
+ (WebCore::FrameData::~FrameData):
+ * platform/graphics/cairo/ImageCairo.cpp:
+ (WebCore::FrameData::clear):
+ * platform/graphics/cg/ImageCG.cpp:
+ (WebCore::FrameData::clear):
+ * platform/graphics/qt/ImageQt.cpp:
+ (WebCore::FrameData::clear):
+ * platform/graphics/wx/ImageWx.cpp:
+ (WebCore::FrameData::clear):
+
2009-01-09 Simon Hausmann <simon.hausmann@nokia.com>
Rubber-stamped by Tor Arne Vestbø.
@@ -959,12 +54327,22 @@
* WebCore.pro:
+2009-01-09 David Levin <levin@chromium.org>
+
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23175
+
+ Added forwarding header.
+
+ * ForwardingHeaders/wtf/PtrAndFlags.h: Added.
+
2009-01-09 Tor Arne Vestbø <tavestbo@trolltech.com>
Reviewed by Simon Hausmann.
Prevent qmake from generating duplicate rules for embedded stylesheets
-
+
The STYLESHEETS_EMBED variable used to contain only one file name, but
now that it is a list of files we need to change it to be a dependency
for the stylesheet generator instead of the input.
@@ -1085,7 +54463,7 @@
Add ImageSourceSkia to platform/graphics/skia
https://bugs.webkit.org/show_bug.cgi?id=23200
-
+
ImageSourceSkia is mostly a hack to support our
ICO decoder model. See ImageSourceSkia.h for more
explanation. Eventually we'd like to make our ICO
@@ -1176,9 +54554,9 @@
Reviewed by Oliver Hunt.
- Fix <rdar://problem/6467206>
+ Fix <rdar://problem/6467206>
Resources loaded from the memory cache do not get correctly inserted into the DocLoader resource map (22994)
-
+
Use CachedResourceHandle in document resource map so resources get updated correctly when using
using cache validation conditionals.
@@ -1485,7 +54863,7 @@
Reviewed by Darin Adler.
- Part one of
+ Part one of
https://bugs.webkit.org/show_bug.cgi?id=23165
Add support for application cache dynamic entries
@@ -1519,7 +54897,7 @@
* loader/appcache/ApplicationCache.h: Added a list of pending dynamic entry actions, to be
used in the near future.
- * loader/appcache/DOMApplicationCache.idl: Updated for spec changes. Instead of length
+ * loader/appcache/DOMApplicationCache.idl: Updated for spec changes. Instead of length
attribute and item(), we now have an items attribute that returns a DOMStringList, and a
hasItem convenience method.
@@ -1665,7 +55043,7 @@
2009-01-07 Anders Carlsson <andersca@apple.com>
Another build fix.
-
+
* WebCore.LP64.exp:
2008-12-16 David Hyatt <hyatt@apple.com>
@@ -1752,7 +55130,7 @@
Reviewed by Oliver Hunt.
<rdar://problem/6391734> SnowLeopard: Crash doing Copy Image from context menu
-
+
Can't create an automated test case for specific contextual menu items yet and
a normal Copy doesn't cause a crash.
@@ -2409,18 +55787,18 @@
animations/simultaneous-start-transform.html
Fixed https://bugs.webkit.org/show_bug.cgi?id=22870
-
+
I added calls beginAnimationUpdate() and endAnimationUpdate() calls
to AnimationController. These are called by Document at the start
- and end of the recalcStyle cycle. Right now, I'm just using the
+ and end of the recalcStyle cycle. Right now, I'm just using the
beginAnimationUpdate() method to reset an animation time value.
The first time the animation time is accessed after this reset I set
it to the currentTime. So all animations in that cycle get the same
- start time.
+ start time.
The test cases checked in test this, but in the case of the 'left'
test it actually doesn't make any difference in most cases. This is
- because values are clamped to whole pixels, so the start times would
+ because values are clamped to whole pixels, so the start times would
have to be pretty far off for the test to fail using the old
currentTime() model. Still, under really heavy load, it's possible for
the test to fail without these changes.
@@ -2476,9 +55854,9 @@
Reviewed by Sam Weinig.
- Add a way for frame loader clients to always create a PluginDocument, regardless of
+ Add a way for frame loader clients to always create a PluginDocument, regardless of
the real document MIME type.
-
+
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::begin):
(WebCore::FrameLoader::shouldUsePlugin):
@@ -2547,7 +55925,7 @@
2009-01-06 David Smith <catfish.man@gmail.com>
Reviewed by Darin Adler.
-
+
https://bugs.webkit.org/show_bug.cgi?id=23129
Devirtualize Node::childNodes().
@@ -2612,18 +55990,18 @@
Reviewed by Dave Hyatt
https://bugs.webkit.org/show_bug.cgi?id=22985
-
+
Add an assertion that clip rects are being used when painting with the same
rootLayer that they were computed with.
-
+
Fix two issues detected by the assertion:
RenderLayer::updateClipRects() should not unconditionally update the clip rects
on its parent, but stop when reaching rootLayer (just like calculateClipRects()).
-
+
We need to pass the temporaryClipRects flag down through reflection painting
to handle the case of nested reflections.
-
+
Also use temporary clip rects in RenderTreeAsText, since that code does not
reset the painting root for transformed layers, so cached clip rects will not
match those used for painting.
@@ -2687,17 +56065,17 @@
Implement 'pointer-events' for HTML content. This involved
adding a new value 'auto' which behaves as 'visiblePainted'
- in SVG content.
-
+ in SVG content.
+
Moved the property out of the SVG CSS code and into
- the general CSS (both parsing and RenderStyle).
-
+ the general CSS (both parsing and RenderStyle).
+
Changes to the hit testing functionality of the Render tree,
- specifically the nodeAtPoint methods. Where they used to
+ specifically the nodeAtPoint methods. Where they used to
test for visibility, they now use a helper function defined
on base classes (RenderObject and InlineBox) that checks both
visibility and pointer-events.
-
+
https://bugs.webkit.org/show_bug.cgi?id=11395
Tests: fast/events/pointer-events-2.html
@@ -2774,7 +56152,7 @@
Reviewed by Gavin Barraclough.
- CanvasPixelArray performance is too slow
+ CanvasPixelArray performance is too slow
<https://bugs.webkit.org/show_bug.cgi?id=23123>
Remove the WebCore CanvasPixelArray implementation and replace
@@ -2829,18 +56207,18 @@
2009-01-05 Anders Carlsson <andersca@apple.com>
Build fix.
-
+
* plugins/PluginView.h:
(WebCore::PluginManualLoader::~PluginManualLoader):
2009-01-05 Anders Carlsson <andersca@apple.com>
Reviewed by Kevin Decker.
-
- Add an abstract PluginManualLoader class and make PluginView inherit from it.
-
+
+ Add an abstract PluginManualLoader class and make PluginView inherit from it.
+
Add some error checking that currently exists in WebKit (but not for long!)
-
+
* plugins/PluginView.cpp:
(WebCore::PluginView::didReceiveResponse):
(WebCore::PluginView::didReceiveData):
@@ -3138,7 +56516,7 @@
Reviewed by Darin Adler
https://bugs.webkit.org/show_bug.cgi?id=23090
-
+
If an object gets a Layout hint, and the style change will result in
the creation of a RenderLayer, then we need to repaint the old position
of the object. This was done for transform, but we have to test opacity too.
@@ -3221,9 +56599,9 @@
Reverse the order in the icon database main thread loop to
write the pending icons to the database before trying
- to read any requested icons. This ensures that a requested icon
+ to read any requested icons. This ensures that a requested icon
has the correct data when read.
-
+
* loader/icon/IconDatabase.cpp:
(WebCore::IconDatabase::syncThreadMainLoop):
@@ -3240,7 +56618,7 @@
https://bugs.webkit.org/show_bug.cgi?id=23025
DOMTimer lifetime cleanup: timeoutMap methods on Document now do not delete the timer.
Instead, all 3 places that delete timers do it directly calling 'delete' and then timer's dtor removes the ID from the timeoutMap.
- Note that in case the context is destroyed and timers are deleted at once, the check in ~DOMTimer() prevents
+ Note that in case the context is destroyed and timers are deleted at once, the check in ~DOMTimer() prevents
unnecessary HashMap remove in case the Document is being destroyed.
* bindings/js/DOMTimer.cpp:
@@ -3311,10 +56689,10 @@
Reviewed by Darin Adler
https://bugs.webkit.org/show_bug.cgi?id=23082
-
+
Fix GIF animation by ensuring that the signature of
startAnimation() in the base class matches the method in BitmapImage.
-
+
Test: fast/backgrounds/animated-gif-as-background.html
* platform/graphics/Image.h:
@@ -3323,10 +56701,10 @@
2009-01-02 David Smith <catfish.man@gmail.com>
Reviewed by Darin Adler.
-
+
https://bugs.webkit.org/show_bug.cgi?id=22699
Enable NodeList caching for getElementsByTagName
-
+
test: fast/dom/getelementsbytagnamens-mixed-namespaces.html
* dom/Document.cpp:
@@ -3342,7 +56720,7 @@
(WebCore::MappedAttributeHash::hash): Use WTF::stringHashingStartValue
* dom/TagNodeList.cpp:
(WebCore::TagNodeList::TagNodeList): Add a NodeList cache argument
- * dom/TagNodeList.h:
+ * dom/TagNodeList.h:
(WebCore::TagNodeList::create): Add a NodeList cache argument
* platform/text/StringHash.h:
(WebCore::CaseFoldingHash::hash): Use WTF::stringHashingStartValue
@@ -3353,7 +56731,7 @@
Reviewed by Darin Adler
- Fix for https://bugs.webkit.org/show_bug.cgi?id=23066 & <rdar://problem/6028417>
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=23066 & <rdar://problem/6028417>
Full Page Zoom: a <video> element that doesn't include width/height attribute does not scale
* rendering/RenderVideo.cpp:
@@ -3418,7 +56796,7 @@
Reviewed by Darin Adler
Use an OwnPtr for m_chromeClient.
-
+
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::~SVGImage):
(WebCore::SVGImage::dataChanged):
@@ -3437,7 +56815,7 @@
a rect parameter for the changed rect, allowing incremental repaints.
Fix RenderImage::imageChanged to take advantage of this changedRect to
only repaint the changed parts of the image.
-
+
This also enables incremental painting for canvas-as-image, so
add tests for that too.
@@ -3681,11 +57059,11 @@
Reviewed by Darin Adler, Oliver Hunt
https://bugs.webkit.org/show_bug.cgi?id=23065
-
+
Enable incremental painting of canvas. This turns incremental painting
back on, and fixes issues with stroke width and miters, calling willDraw()
for strokeText and fillText, and taking shadows into account.
-
+
Test: fast/canvas/canvas-incremental-repaint.html
* html/CanvasRenderingContext2D.cpp:
@@ -3852,11 +57230,11 @@
Reviewed by Darin Adler
https://bugs.webkit.org/show_bug.cgi?id=23042
-
+
Rather than doing a repaint() inside of computeAbsoluteRepaintRect()
when there is a reflection, compute the location of the rect inside
the reflection and take the union of the unreflected and reflected rects.
-
+
Test: fast/repaint/reflection-redraw.html
* rendering/RenderBox.cpp:
@@ -4016,9 +57394,9 @@
Reviewed by Brady Eidson.
Fix for https://bugs.webkit.org/show_bug.cgi?id=21797
- <rdar://problem/6310682> REGRESSION: Crash in CFHTTPCookieStorageCopy beneath WebCore::cookies() when
+ <rdar://problem/6310682> REGRESSION: Crash in CFHTTPCookieStorageCopy beneath WebCore::cookies() when
running fast/dom/document-attribute-js-null.html and http/tests/security/cookies/create-document.html
-
+
Return early if the document is trying to get or set a cookie with an empty cookie url.
* dom/Document.cpp:
@@ -4304,7 +57682,7 @@
Prepare to add create/remove timeout methods to JSWorkerContext by moving
timer-specific code from JSDOMWindowBase to DOMTimer.
Moved everything JS-related from DOMTimer to ScheduledAction.
- Now ScheduledAction is what it wanted to be all the time: a JS engine-specific
+ Now ScheduledAction is what it wanted to be all the time: a JS engine-specific
container for timer callback that knows how to invoke it.
DOMTimer is not anymore JS-specific.
@@ -4414,9 +57792,9 @@
Reviewed by Oliver Hunt.
<rdar://problem/6465669> Frequent !isPurgeable() assertion in WebCore::CachedResource::addClient
-
+
Disallow turning resources that are being revalidated to purgable state.
-
+
No test, the condition is difficult to produce in DRT.
* loader/CachedCSSStyleSheet.cpp:
@@ -4513,10 +57891,10 @@
Reviewed by Dan Bernstein
https://bugs.webkit.org/show_bug.cgi?id=22941
-
+
If the document element has opacity, we need to erase the view background to
white before painting.
-
+
Test: fast/backgrounds/opacity-on-document-element.html
* rendering/RenderView.cpp:
@@ -4527,10 +57905,10 @@
Reviewed by Dan Bernstein
https://bugs.webkit.org/show_bug.cgi?id=21910
-
+
Fix SVGImage painting by ensuring that the SVGImage resizes its FrameView correctly.
Otherwise the FrameView is left at 0x0, and nothing paints.
-
+
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::draw):
@@ -5441,7 +58819,7 @@
Reviewed by Kevin Ollivier.
Add Context Menu support to wx bindings.
-
+
https://bugs.webkit.org/show_bug.cgi?id=22675
* platform/ContextMenu.h:
@@ -5458,12 +58836,12 @@
Reviewed by Darin Adler.
- Temporary band-aide fix for <rdar://problem/6372481> In Gmail, a
- crash occurs at
- AccessibilityTable::isTableExposableThroughAccessibility() when
+ Temporary band-aide fix for <rdar://problem/6372481> In Gmail, a
+ crash occurs at
+ AccessibilityTable::isTableExposableThroughAccessibility() when
attempting to create a link in a rich text message
- We need to disable Accessibility Tables until we get this fixed for
+ We need to disable Accessibility Tables until we get this fixed for
real to prevent rampant crashing.
* page/AccessibilityTable.cpp:
@@ -5474,10 +58852,10 @@
Reviewed by Darin Adler
https://bugs.webkit.org/show_bug.cgi?id=22938
-
+
When the document element is transformed, we need to paint
the view background to avoid unpainted areas.
-
+
Test: fast/transforms/transformed-document-element.html
* rendering/RenderView.cpp:
@@ -5595,7 +58973,7 @@
storage is disallowed, all authentication challenges are sent to
the client.
- let the FrameLoaderClient decide whether to use the credential
- storage.
+ storage.
* loader/EmptyClients.h:
(WebCore::EmptyFrameLoaderClient::shouldUseCredentialStorage): Added.
@@ -5605,7 +58983,7 @@
to the FrameLoaderClient.
* loader/FrameLoader.h: Declared shouldUseCredentialStorage().
* loader/FrameLoaderClient.h: Declared shouldUseCredentialStorage().
- * loader/ResourceLoader.cpp:
+ * loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::shouldUseCredentialStorage): Added. Calls
through to the FrameLoader.
* loader/ResourceLoader.h:
@@ -5679,7 +59057,7 @@
Reviewed by John Sullivan.
- Add new FrameLoaderClient method to indicate the first visually
+ Add new FrameLoaderClient method to indicate the first visually
non-empty layout based on an heuristic. Right now that heuristic
is the first layout after an image, text or plugin has been added
to the render tree, but I can imagine it becoming much smarter.
@@ -5853,7 +59231,7 @@
If JavaScript is not currently executing, the handleEvent member function
of JSAbstractEventListener should set the dynamic global object to the
global object of the context in which the event occurred.
-
+
If this is not set, then JavaScriptCore will simply take the global object
of the context where the event handler function was created, which may be
a different frame. This will cause the popup blocker to incorrectly block
@@ -5869,13 +59247,13 @@
Reviewed by Dave Hyatt
https://bugs.webkit.org/show_bug.cgi?id=22570
-
+
Add the ability to compute clip rects independently from
- caching them on the RenderLayer. When painting reflections, use
+ caching them on the RenderLayer. When painting reflections, use
such temporarily computed clipRects, otherwise the layer may cache
clipRects which are invalid, since they have been computed with
a rootLayer that is not the one usually used to paint.
-
+
Test: fast/reflections/reflection-overflow-hidden.html
* rendering/RenderLayer.cpp:
@@ -5905,7 +59283,7 @@
https://bugs.webkit.org/show_bug.cgi?id=22618
- Fix MinGW QtWebKit linking problems and also make the
+ Fix MinGW QtWebKit linking problems and also make the
QtWebKit build system more robust.
* WebCore.pro:
@@ -6018,9 +59396,9 @@
Reviewed by Geoff Garen.
- Change HTTPHeaderMap to use an AtomicString as its key.
+ Change HTTPHeaderMap to use an AtomicString as its key.
Shaves ~1MB off of the Mozilla Memory Test
- No functionality difference
+ No functionality difference
* WebCore.xcodeproj/project.pbxproj:
* inspector/InspectorController.cpp:
@@ -6109,7 +59487,7 @@
Fix for https://bugs.webkit.org/show_bug.cgi?id=22871
<rdar://problem/6417316> RenderThemeWin buttons are too short/thin
- * rendering/RenderButton.cpp: (WebCore::RenderButton::setupInnerStyle):
+ * rendering/RenderButton.cpp: (WebCore::RenderButton::setupInnerStyle):
Check if the button's style (not the new inner style) has appearance set to determine whether we should set padding on the inner style.
2008-12-15 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
@@ -6189,7 +59567,7 @@
* bindings/js/JSGeolocationCustom.cpp:
(WebCore::createPositionOptions): Added. Extracts the enableHighAccuracy
- and timeout fields from a vanilla JS object in order to create the
+ and timeout fields from a vanilla JS object in order to create the
PositionOptions object, checking for exceptions as necessary.
(WebCore::JSGeolocation::getCurrentPosition): Use createPositionOptions
instead of toPositionOptions.
@@ -6311,13 +59689,13 @@
Reviewed by Darin Adler.
When a resource is cached locally, WebKit should follow RFC 2616 "Specific end-to-end revalidation" instead of "Unspecified end-to-end revalidation"
- https://bugs.webkit.org/show_bug.cgi?id=17998
-
- - Enable conditional revalidation for reloads by default.
+ https://bugs.webkit.org/show_bug.cgi?id=17998
+
+ - Enable conditional revalidation for reloads by default.
- Add a parameter to FrameLoader::reload() for forcing end-to-end reload.
- - To avoid duplicating state remove m_cachePolicy variables from FrameLoader and DocLoader.
+ - To avoid duplicating state remove m_cachePolicy variables from FrameLoader and DocLoader.
Instead synthezise the policy on demand.
-
+
This speeds up reloads and makes them use way less bandwidth.
* WebCore.base.exp:
@@ -6328,10 +59706,10 @@
(WebCore::DocLoader::checkForReload): Support CachePolicyRevalidate.
(WebCore::DocLoader::requestResource):
(WebCore::DocLoader::cachePolicy):
- * loader/DocLoader.h: Get rid of m_cachePolicy member.
+ * loader/DocLoader.h: Get rid of m_cachePolicy member.
* loader/FrameLoader.cpp:
- (WebCore::ScheduledRedirection::ScheduledRedirection):
- Add parameter to differentiate refresh from other types of redirects.
+ (WebCore::ScheduledRedirection::ScheduledRedirection):
+ Add parameter to differentiate refresh from other types of redirects.
m_cachePolicy was used for signaling this before.
(WebCore::isBackForwardLoadType):
(WebCore::FrameLoader::FrameLoader):
@@ -6347,11 +59725,11 @@
(WebCore::FrameLoader::redirectionTimerFired):
(WebCore::FrameLoader::canCachePage):
(WebCore::FrameLoader::loadURL):
- (WebCore::FrameLoader::reload):
+ (WebCore::FrameLoader::reload):
Differentiate between revalidation and reload.
No need to use setHTTPHeaderField here, addExtraFieldsToRequest will set the headers.
(WebCore::FrameLoader::transitionToCommitted):
- (WebCore::FrameLoader::cachePolicy): Determine the cache policy based on current load type.
+ (WebCore::FrameLoader::cachePolicy): Determine the cache policy based on current load type.
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
(WebCore::FrameLoader::addExtraFieldsToRequest): Set Cache-control: no-cache for FrameLoadTypeReloadFromOrigin
(WebCore::FrameLoader::shouldScrollToAnchor):
@@ -6362,7 +59740,7 @@
* loader/FrameLoader.h:
* loader/FrameLoaderTypes.h: Add FrameLoadTypeReloadFromOrigin
(WebCore::):
- * loader/NavigationAction.cpp:
+ * loader/NavigationAction.cpp:
(WebCore::navigationType): Support FrameLoadTypeReloadFromOrigin
* loader/loader.cpp:
(WebCore::Loader::Host::servePendingRequests):
@@ -6755,7 +60133,7 @@
* platform/win/DragImageCGWin.cpp:
(WebCore::deallocContext): Add a generic CGContextRef destructor.
* platform/win/DragImageCairoWin.cpp:
- (WebCore::deallocContext): Add a generic cairo_* destructor.
+ (WebCore::deallocContext): Add a generic cairo_* destructor.
(WebCore::allocImage): New implementation to allocate a Cairo
surface of a specified size.
(WebCore::createCairoContextFromBitmap): New implementation to
@@ -6774,7 +60152,7 @@
WebKitCSSKeyframesRule to Window object.
This required generating constructors for the event
interfaces.
-
+
https://bugs.webkit.org/show_bug.cgi?id=20560
* dom/WebKitAnimationEvent.idl:
@@ -6837,19 +60215,19 @@
Delete the previous timer-queue timer in the main thread, just prior to scheduling a new timer.
The code previously called DeleteTimerQueueTimer in the timer callback proc.
-
+
The new technique simplifies the code, since we now create and delete timers on the
same thread, and don't access the timer queue or timer handles in the callback.
This allows us to remove some mutex use, and more importantly, it solves a race
condition that was occuring between ChangeTimerQueueTimer and DeleteTimerQueueTimer.
-
+
Since the timer callback isn't passed the timer handle, we were retrieving that handle
via a global. If the timer callback code was entered, but then a new timer was immediately
scheduled (prior to the callback acquiring the mutex and calling DeleteTimerQueueTimer),
there was a small window where the timer could be re-scheduled via ChangeTimerQueueTimer
and then immediately deleted once the already running callback acquired the mutex and
then called DeleteTimerQueueTimer. This resulted in the newly scheduled timer never firing.
-
+
Reviewed by Oliver Hunt.
* platform/win/SharedTimerWin.cpp:
@@ -6986,7 +60364,7 @@
Reviewed by Simon Hausmann.
Implement ImageSource::filenameExtension() for the Qt port
-
+
We're using QImageReader::imageFormat().toLower() to check
that the image format is supported, and if it is we store
the resulting extension when creating the ImageDecoderQt.
@@ -7005,11 +60383,11 @@
Reviewed by Geoff Garen
Account for the size of the response and request headers as well as other overhead
- when calculating the size a resource takes up in the cache. Halts unbounded
+ when calculating the size a resource takes up in the cache. Halts unbounded
growth in the cache. Reduced stress test memory high water marks by > 50%.
- Uses estimates gathered from the stress test to set the overhead size.
- A version of the patch was created that calculated most of the sizes, but it was
+ Uses estimates gathered from the stress test to set the overhead size.
+ A version of the patch was created that calculated most of the sizes, but it was
decided that the patch was still at a basic level an estimate. What gains it made
in accuracy was offset by the complexity involved in creating and updating the
estimate.
@@ -7186,7 +60564,7 @@
I had to add one more bit of code. When animation timers used to fire the animation events.
This would always happen from the RunLoop, so any style changes that happened in the
event handler would get picked up on the next updateRendering() call. But now the start
- event is generated during the styleIsAvailable() call, which is in the middle of the
+ event is generated during the styleIsAvailable() call, which is in the middle of the
updateRendering() cycle. And calling an event handler in the middle of updateRendering()
is not allowed and causes style changes to get missed. We already have a mechanism in
AnimationController to defer updateRendering() calls. So I added logic to defer all
@@ -7545,7 +60923,7 @@
Reviewed by Antti Koivisto
<rdar://problem/6431224>
-
+
When updating the value of a slider, don't mark the parents
as needing layout, because the size of the slider can never
change. This fixes full-page repaints in some cases.
@@ -7557,7 +60935,7 @@
Potential build fix. The forward declaration of FloatPoint should
be inside the WebCore namespace.
-
+
* platform/graphics/FloatPoint3D.h:
2008-12-10 Simon Fraser <simon.fraser@apple.com>
@@ -7569,7 +60947,7 @@
Cleanup FloatPoint3D: inline the getters and setters,
fix a potential divide-by-zero in normalize(), and add
a FloatPoint constructor.
-
+
* platform/graphics/FloatPoint3D.cpp:
(WebCore::FloatPoint3D::FloatPoint3D):
(WebCore::FloatPoint3D::normalize):
@@ -7661,7 +61039,7 @@
Part of
https://bugs.webkit.org/show_bug.cgi?id=22570
-
+
Rename methods on RenderLayer for clarity:
clearClipRects -> clearClipRectsIncludingDescendants
clearClipRect -> clearClipRects
@@ -7683,7 +61061,7 @@
2008-12-10 Kevin Ollivier <kevino@theolliviers.com>
wx build fix after the script call stack/frame additions.
-
+
* WebCoreSources.bkl:
2008-12-10 Srinivasa Rao M. Hamse <msrinirao@gmail.com>
@@ -7923,7 +61301,7 @@
* bindings/js/ScriptValue.h: Added isNull and isUndefined
* bindings/scripts/CodeGeneratorJS.pm: Add handling for
CustomArgumentHandling attribute.
- * inspector/InspectorController.cpp: Refactored to use
+ * inspector/InspectorController.cpp: Refactored to use
ScriptCallFrame and ScriptCallStack.
(WebCore::ConsoleMessage::ConsoleMessage):
(WebCore::InspectorController::addMessageToConsole):
@@ -8378,11 +61756,11 @@
Fix issues which break reading inline style for -webkit-transition
and -webkit-transform-origin.
-
+
Test: fast/css/transform-inline-style.html
* css/CSSMutableStyleDeclaration.cpp:
- (WebCore::CSSMutableStyleDeclaration::getPropertyValue): Add cases
+ (WebCore::CSSMutableStyleDeclaration::getPropertyValue): Add cases
for CSSPropertyWebkitTransformOrigin and CSSPropertyWebkitTransition
so that these shorthand properties are returned correctly.
* css/CSSParser.cpp:
@@ -8399,12 +61777,12 @@
https://bugs.webkit.org/show_bug.cgi?id=22717
Make CSS values use less memory
-
+
Share CSSPrimitiveValue objects for commonly used values including
- idents
- colors
- small integers
-
+
This reduces the amount CSSPrimitiveValue instances by > 80%.
* css/CSSPrimitiveValue.cpp:
@@ -8424,11 +61802,11 @@
Get CSSValues off from the common StyleBase base class. They don't
need a parent pointer or anything else there and there is no real
reason to have them in same data structures with other CSSOM objects.
-
- Disabled (instead of refactoring around the lack of common base) the ability
- to have style declaration blocks as CSS variable values. They don't exist in
- the spec so I wasn't sure if they have future or not. It would not be hard to
- get them back. CSS variables are in any case an experimental feature and
+
+ Disabled (instead of refactoring around the lack of common base) the ability
+ to have style declaration blocks as CSS variable values. They don't exist in
+ the spec so I wasn't sure if they have future or not. It would not be hard to
+ get them back. CSS variables are in any case an experimental feature and
not enabled by default.
* css/CSSInitialValue.h:
@@ -8528,9 +61906,9 @@
https://bugs.webkit.org/show_bug.cgi?id=22379
Make CSSOM use less memory
-
+
Use vector instead of a double linked list for properties in CSSMutableStyleDeclaration.
-
+
Taught setter functions to use existing slots to avoid memory moves, plus some
other optimizations.
@@ -8605,7 +61983,7 @@
Fix logic related to repainting when transform changes:
If an object has a layer, and the transform changes, then we need
to do a repaintIncludingDescendants(), not just a repaint.
-
+
Test: fast/repaint/transform-repaint-descendants.html
* rendering/RenderObject.cpp:
@@ -8631,7 +62009,7 @@
Reviewed by Dave Hyatt
https://bugs.webkit.org/show_bug.cgi?id=15671
-
+
Fix caret rendering to behave correctly with transforms:
* Rename caretRect() methods to localCaretRect() and
absoluteCaretBounds() as appropriate
@@ -8969,7 +62347,7 @@
Bug 22579: Providing a function to ScrollbarClient.h which allows us to get at the tickmarks
without relying on high-level WebCore types, as requested by Dave Hyatt.
-
+
No functional changes, thus no test cases.
* page/FrameView.cpp:
@@ -9119,9 +62497,9 @@
Reviewed by Kevin Ollivier.
Add a MIME mapping for the .htm extension to wx and GTK ports.
-
+
https://bugs.webkit.org/show_bug.cgi?id=22668
-
+
* platform/gtk/MIMETypeRegistryGtk.cpp:
(WebCore::):
* platform/wx/MimeTypeRegistryWx.cpp:
@@ -9133,7 +62511,7 @@
Implement basic text paste support in wx and add notImplemented stubs
to catch other methods.
-
+
https://bugs.webkit.org/show_bug.cgi?id=22667
* platform/wx/PasteboardWx.cpp:
@@ -9165,7 +62543,7 @@
Reviewed by Kevin Ollivier.
Turn off styled controls until we can implement them properly.
-
+
https://bugs.webkit.org/show_bug.cgi?id=22662
* platform/wx/RenderThemeWx.cpp:
@@ -9456,7 +62834,7 @@
makes it unnecessary to 'serialize' them into special PausedTimeouts
instance, so pause/resumeTimeouts implementation in JSDOMWindowBase can also be removed.
Also, moving TimeoutMap from JSDOMWindowBase to Document matches lifetime
- of timeouts and makes it possible to not roundtrip them via PausedTimeouts
+ of timeouts and makes it possible to not roundtrip them via PausedTimeouts
every time when JSDOMWindow wrapper is destroyed while the page is in the b/f cache.
Timeouts are now paused with other ActiveDOMObjects:
@@ -9485,7 +62863,7 @@
* bindings/js/DOMTimer.h:
* bindings/js/JSDOMBinding.cpp: ActiveDOMObject can have no JS wrapper
- (WebCore::markActiveObjectsForContext):
+ (WebCore::markActiveObjectsForContext):
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::~JSDOMWindowBase):
@@ -9514,7 +62892,7 @@
* inspector/JavaScriptDebugServer.h:
* loader/FrameLoader.cpp:
- (WebCore::FrameLoader::commitProvisionalLoad):
+ (WebCore::FrameLoader::commitProvisionalLoad):
removed clearAllTimeouts since all ActiveDOMObjects will be stopped in FrameLoader::clear();
I don't see how the old comment can be correct - the code in the same method proceeds to invoke 'onunload'
and then calls into client which can be external code and can cause any active object created in onunload
@@ -9531,13 +62909,13 @@
Reviewed by Beth Dakin.
<rdar://problem/6018653> Extra blank line when pasting paragraph in plain text
-
+
In SnowLeopard, Mail occasionally adds an empty, unstyled paragraph at the
end of pasted content so that users don't get stuck with non-standard pargraph
spacing. This content threw off our handling of interchange newlines. Any interchange
newline, regardless of it's position in the incoming fragment was considered to be
- "at the start" of the fragment, and would result in us inserting in a newline before
- inserted content. This patch makes the checks for interchange newlines more strict,
+ "at the start" of the fragment, and would result in us inserting in a newline before
+ inserted content. This patch makes the checks for interchange newlines more strict,
and treats interchange newlines found elsewhere as normal <br>s.
* editing/ReplaceSelectionCommand.cpp:
@@ -9939,7 +63317,7 @@
Reduce size of the CSSSelector by 3/8 by moving rarely used fields to a rare data
struct. Browsing around with some instrumentation showed that ~0.1% of all selectors
encountered had rare data.
-
+
This also eliminates the CSSNthSelector subclass which will make possible to store
CSSSelectors in an array instead of a linked list for futher memory savings.
@@ -10059,11 +63437,11 @@
Reviewed by Dave Hyatt
https://bugs.webkit.org/show_bug.cgi?id=22472
-
+
Override absoluteClippedOverflowRect() in RenderReplaced to return a rect
that is large enough to encompass the selection, so that the repainting of
selected replaced elements works correctly.
-
+
Test: fast/repaint/selected-replaced.html
* rendering/RenderReplaced.cpp:
@@ -10115,7 +63493,7 @@
Bug 22596: Some elements don't report AXBlockQuoteLevel
https://bugs.webkit.org/show_bug.cgi?id=22596
-
+
Reviewed by John Sullivan.
* page/mac/AccessibilityObjectWrapper.mm:
@@ -10151,14 +63529,14 @@
Reviewed by Eric Seidel.
https://bugs.webkit.org/show_bug.cgi?id=22538
-
+
startsWith uses find which searches through the whole string if no match is found.
Using reverseFind with an index of 0 has the benefit of only searching for the match
at the beginning of the string. This may only be a small benefit in the overall program,
but it may help in some cases when the string is big.
No observable change in behavior, so no test.
-
+
* platform/text/StringImpl.h:
(WebCore::StringImpl::startsWith):
@@ -10243,7 +63621,7 @@
Move securityOrigin() from Document and WorkerContext into ScriptExecutionContext.
No observable change in behavior, so no test.
-
+
* dom/Document.cpp:
(WebCore::Document::open):
(WebCore::Document::domain):
@@ -10259,7 +63637,7 @@
(WebCore::WorkerContext::WorkerContext):
* dom/WorkerContext.h:
These changes are for the move of securityOrigin().
-
+
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createRequest):
(WebCore::XMLHttpRequest::makeSimpleCrossSiteAccessRequest):
@@ -10288,22 +63666,22 @@
Reviewed by Dan Bernstein.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=13736 REGRESSION
- (r19811): Using the down arrow in a textarea gets "stuck" at the
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=13736 REGRESSION
+ (r19811): Using the down arrow in a textarea gets "stuck" at the
end of a wrapped line
And corresponding: <rdar://problem/5347931>
- The basic problem here is that Position::getInlineBoxAndOffset()
- failed to look beyond a single renderer. This patch looks for a
- better match beyond the first renderer when the affinity is
- downstream and we failed to find a "perfect" match.
+ The basic problem here is that Position::getInlineBoxAndOffset()
+ failed to look beyond a single renderer. This patch looks for a
+ better match beyond the first renderer when the affinity is
+ downstream and we failed to find a "perfect" match.
* dom/Position.cpp:
(WebCore::isNonTextLeafChild):
(WebCore::searchAheadForBetterMatch):
(WebCore::Position::getInlineBoxAndOffset):
- This is a fix I made based on code inspection. It looks like the
- old code here and skipped over the parent as a possible match.
+ This is a fix I made based on code inspection. It looks like the
+ old code here and skipped over the parent as a possible match.
* rendering/RenderObject.cpp:
(WebCore::RenderObject::nextInPreOrderAfterChildren):
@@ -10316,7 +63694,7 @@
* WebCore.vcproj/WebCore.vcproj:
1. Add files from the wml directory to the set of windows files.
- 2. Extend include paths with new wml directory.
+ 2. Extend include paths with new wml directory.
3. Add new autogenerated WML files to DerivedSources.
4. Alphabetize preprocesor includes (holdover from earlier debugging).
@@ -10324,7 +63702,7 @@
Revise node/selection image fix.
Moved updateLayout call so selection rect is fetched after the layout.
-
+
Reviewed by Adam Roben.
* page/win/FrameCGWin.cpp:
@@ -10352,7 +63730,7 @@
Reviewed by Dan Bernstein
https://bugs.webkit.org/show_bug.cgi?id=22581
-
+
Fix the painting of the caps lock indicator for transformed text inputs,
by replacing a call to absoluteContentBox() with code that computes the
painting rect for the input contents.
@@ -10562,7 +63940,7 @@
them. So now the pointer is valid throughout the entire sequence of callback code.
The testcase for https://bugs.webkit.org/show_bug.cgi?id=22052 also exhibits a
- crash which this patch fixes.
+ crash which this patch fixes.
* page/animation/AnimationBase.cpp:
(WebCore::AnimationBase::updateStateMachine):
@@ -10745,7 +64123,7 @@
Fixes: https://bugs.webkit.org/show_bug.cgi?id=22549
- Add <do> element support. It provides a way to bind a task element to a <template>/<card> element.
+ Add <do> element support. It provides a way to bind a task element to a <template>/<card> element.
Changes numerous of layout tests which contain <do> elements, as they render as buttons now.
* WebCore.xcodeproj/project.pbxproj:
@@ -10943,7 +64321,7 @@
upper-case glyph defined in the set of available fonts.
This changes Font.cpp to check if the font being used exists before trying to apply the small-caps variant.
-
+
Test: fast/css/small-caps-crash.html
* platform/graphics/Font.cpp:
@@ -11472,7 +64850,7 @@
2008-11-25 Kevin Ollivier <kevino@theolliviers.com>
wx build fix - we don't support PurgeableBuffer on Leopard for now.
-
+
* platform/PurgeableBuffer.h:
2008-11-25 Antti Koivisto <antti@apple.com>
@@ -11481,7 +64859,7 @@
Fix https://bugs.webkit.org/show_bug.cgi?id=22483
Assertion failure in CachedResource::makePurgeable during layout tests
-
+
Deleting SVG image can re-enter destroyDecodedData.
* loader/CachedImage.cpp:
@@ -11548,7 +64926,7 @@
http/tests/misc/url-in-utf32be.html
http/tests/misc/url-in-utf32le.html
http/tests/misc/url-in-utf7.html
-
+
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::formData):
* loader/TextResourceDecoder.cpp:
@@ -11578,13 +64956,13 @@
2008-11-24 Antti Koivisto <antti@apple.com>
Reviewed by Darin Adler.
-
+
Fix for https://bugs.webkit.org/show_bug.cgi?id=22073
REGRESSION(r33544): Palace in the Sky crashes WebKit
-
+
HTMLTokenizer::m_hasScriptsWaitingForStylesheets would still be set while
- there were no scripts left to execute.
-
+ there were no scripts left to execute.
+
If m_hasScriptsWaitingForStylesheets becomes true during script execution
bail out from executing more scripts synchronously.
@@ -11651,11 +65029,11 @@
https://bugs.webkit.org/show_bug.cgi?id=22214
Keep dead resources in memory cache in purgeable memory.
<rdar://problem/6333088>
-
+
OS X 10.5 has purgeable memory kernel facility that allows marking reserved memory
areas as less important. Under memory pressure system can steal pages that have
been marked purgeable for (hopefully) better uses. This is ideal for caches.
-
+
Only resources larger than 16KB will be moved to the purgeable memory.
* WebCore.base.exp:
@@ -11890,7 +65268,7 @@
Bug 22461: AccessibilityListBox::doAccessibilityHitTest() signature does not match the base class
https://bugs.webkit.org/show_bug.cgi?id=22461
-
+
Changing AccessibilityListBox to use its parent's signature for hit testing
* page/AccessibilityListBox.cpp:
@@ -11911,8 +65289,8 @@
http://bugs.webkit.org/show_bug.cgi?id=18703
"Changing the 'size' property on a text input does not affect its length"
- Text fields would not repaint themselves after having their "size"
- attributes modified. This fix tells the object to recalculate its
+ Text fields would not repaint themselves after having their "size"
+ attributes modified. This fix tells the object to recalculate its
width and repaint itself when its "size" attribute is parsed.
Test: fast/js/text-field-resize.html
@@ -11925,7 +65303,7 @@
Reviewed by Darin Adler
Followup from changes for https://bugs.webkit.org/show_bug.cgi?id=22433
-
+
Make RenderView::selectionRect() private to cause compile-time
errors if someone tries to call it.
@@ -11936,7 +65314,7 @@
Reviewed by Dan Bernstein
Via: https://bugs.webkit.org/show_bug.cgi?id=22433
-
+
Rename RenderView::selectionRect() to selectionBounds(), to remove
longstanding ambiguity with the base class selectionRect() method.
Do the same on Frame for consistency with RenderView. Assert
@@ -12238,7 +65616,7 @@
Improve wx image drawing performance considerably when using wxGraphicsContext
by avoiding unnecessary copies and drawing.
-
+
https://bugs.webkit.org/show_bug.cgi?id=22404
* platform/graphics/wx/ImageWx.cpp:
@@ -12251,7 +65629,7 @@
Reviewed by Kevin Ollivier.
Implementation of AffineTransform::mapRect for wx.
-
+
https://bugs.webkit.org/show_bug.cgi?id=22401
* platform/graphics/wx/AffineTransformWx.cpp:
@@ -12262,20 +65640,20 @@
Reviewed by Darin Adler.
<rdar://problem/5381788> Match NSTextView editing behavior at the end of hyperlink text
-
- Change link editing behavior to match TextEdit and MS Word when editing before and after
- a link (Pages has two caret positions at link boundaries, Thunderbird and FF behave like we
+
+ Change link editing behavior to match TextEdit and MS Word when editing before and after
+ a link (Pages has two caret positions at link boundaries, Thunderbird and FF behave like we
used to, so it's difficult to get out of link editing mode):
When inserting before or after a link, always insert content outside of the link. This
- makes it impossible to get stuck in link editing mode, while making it slightly more
- difficult to edit link labels. WebKit editors that care about this can add UI for editing
+ makes it impossible to get stuck in link editing mode, while making it slightly more
+ difficult to edit link labels. WebKit editors that care about this can add UI for editing
link labels, like GMail and GoogleDocs have done. We never actually had any bugs complaining
- about how it was difficult to edit link labels at the start/end, the code was just introduced
+ about how it was difficult to edit link labels at the start/end, the code was just introduced
with another bug fix without much thought.
-
- Don't remember removed links anymore, no other editor does this and it made it
+
+ Don't remember removed links anymore, no other editor does this and it made it
difficult/impossible to get out of link editing mode. This code was added to fix
- <rdar://problem/4069359>, which is fixed instead by removing the styles from an
+ <rdar://problem/4069359>, which is fixed instead by removing the styles from an
enclosing anchor element from those styles that we remember when we delete content.
* editing/CompositeEditCommand.cpp:
@@ -12360,7 +65738,7 @@
RenderBox::absoluteClippedOverflowRect() needs to inflate the rect by
maximalOutlineSize(), since a child might have an outline which projects
outside the parent overflowRect().
-
+
We also need to ensure that maximalOutlineSize() is updated early in styleDidChange,
so that it is valid for these repaints.
@@ -12422,12 +65800,12 @@
Reviewed by Darin Adler.
Bug 22388: Add JSInterfaceName to the .in files
- https://bugs.webkit.org/show_bug.cgi?id=22388
+ https://bugs.webkit.org/show_bug.cgi?id=22388
Add JSInterfaceName that is similar to interfaceName but
for the JS wrappers. JSInterfaceName is always equal to interfaceName
unless explicitly set.
-
+
* dom/make_names.pl:
* html/HTMLTagNames.in:
* svg/svgtags.in:
@@ -12637,12 +66015,12 @@
Reviewed by Dan Bernstein
https://bugs.webkit.org/show_bug.cgi?id=19623
-
+
When an non-layer object gained a transform, it would only repaint
the bounds of the new layer, which could result in redraw artifacts
if the new layer was smaller. So if we're gaining a transform, we
repaint.
-
+
Test: fast/repaint/change-transform.html
* rendering/RenderObject.cpp:
@@ -12650,7 +66028,7 @@
2008-11-20 Adele Peterson <adele@apple.com>
- Reviewed by Darin Adler.
+ Reviewed by Darin Adler.
Fix for <rdar://problem/6111436> Support upload progress events on Windows
@@ -12663,7 +66041,7 @@
Reviewed by Darin Adler.
<rdar://problem/2610675> Blank line that is quoted can't be deleted
-
+
If the caret is in an empty quoted paragraph, and either there is nothing before that
paragraph, or what is before is unquoted, and the user presses delete, unquote that
paragraph.
@@ -12717,7 +66095,7 @@
computed values for transform-origin-x, transform-origin-y, and just
return transform-origin instead. Return "none" for default animation-name,
and fix the initial value.
-
+
Tests: animations/computed-style.html
transforms/computed-style-origin.html
@@ -12733,25 +66111,25 @@
2008-11-20 Justin Garcia <justin.garcia@apple.com>
Reviewed by Beth Dakin.
-
+
Preparation for:
<rdar://problem/2610675> Blank line that is quoted can't be deleted
-
+
To fix this we need to make changes to the code that creates selections to delete
when the user does a backward or forward delete with a caret selection. For certain
caret positions, we now want to remove something other than the standard "caret extended
- backward/forward by one unit". The problem is that there were two pieces of code
- responsible for doing this, one in Editor::deleteWithDirection, and another inside
- TypingCommand::deleteKeyPressed. The code in deleteWithDirection is a recent
- addition (r19172), and adding it there caused regressions because it prevented the
- code in deleteKeyPressed from ever running. The regressions were never caught because
+ backward/forward by one unit". The problem is that there were two pieces of code
+ responsible for doing this, one in Editor::deleteWithDirection, and another inside
+ TypingCommand::deleteKeyPressed. The code in deleteWithDirection is a recent
+ addition (r19172), and adding it there caused regressions because it prevented the
+ code in deleteKeyPressed from ever running. The regressions were never caught because
JS deletion uses deleteKeyPressed while manual deletion uses deleteWithDirection.
-
+
This patch removes selection creation code from deleteWithDirection so that deleteKeyPressed
can handle it. That required moving code to handle the kill ring down into deleteKeyPressed.
-
- Follow up patches will fix <rdar://problem/2610675>, and attempt to eliminate the rest of the
- discrepancies between the behavior of JS deletions and manual deletions, so that we
+
+ Follow up patches will fix <rdar://problem/2610675>, and attempt to eliminate the rest of the
+ discrepancies between the behavior of JS deletions and manual deletions, so that we
have better test coverage.
* editing/Editor.cpp:
@@ -12842,11 +66220,11 @@
it into the coords of the part's renderer (which is the one that is painting).
To do this we need to compute an offset relative to some container, so expose
a method on RenderObject for that.
-
+
Also fix the location at which the search popup shows up to take transforms
into account, and fix the math that is used to figure out if the search
results button, or the cancel button should get the mouse events.
-
+
Test: fast/forms/search-transformed.html
* rendering/RenderBox.h:
@@ -12895,7 +66273,7 @@
https://bugs.webkit.org/show_bug.cgi?id=22379
Make CSSOM use less memory
-
+
- Shrink CSSProperty by half by using bitfields.
- Get rid of m_strictParsing field in StyleBase by moving it up to CSSStyleSheet
and CSSMutableStyleDeclaration. This reduces size of many highly popular objects.
@@ -12922,7 +66300,7 @@
https://bugs.webkit.org/show_bug.cgi?id=22373
Ports busted by addition of ScriptValue.{h,cpp}
-
+
* plugins/PluginView.cpp:
(WebCore::PluginView::performRequest):
@@ -12970,11 +66348,11 @@
Reviewed by Justin Garcia.
- Fix for <rdar://problem/5472507> Remove color property when a user
+ Fix for <rdar://problem/5472507> Remove color property when a user
sets color to black
- This patch prevents us from inserting font nodes during the
- ApplyStyleCommand if they will not change the computed style of an
+ This patch prevents us from inserting font nodes during the
+ ApplyStyleCommand if they will not change the computed style of an
element.
* editing/ApplyStyleCommand.cpp:
@@ -12986,9 +66364,9 @@
2008-11-19 Simon Fraser <simon.fraser@apple.com>
Reviewed by Antti Koivisto
-
+
https://bugs.webkit.org/show_bug.cgi?id=22111
-
+
Fix hit testing in controls on transformed video elements
by replacing absoluteBoundingBoxRect().contains() with
code that maps the point into local coords, taking
@@ -13006,7 +66384,7 @@
Reviewed by Darin Adler
https://bugs.webkit.org/show_bug.cgi?id=22348
-
+
Need to educate style sharing about autofill, so that style does not
get shared between input elements that are autofilled, and those
that are not. Setting autofill should also do a setChanged on the node.
@@ -13683,7 +67061,7 @@
2008-11-17 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
-
+
Updated for JavaScriptCore renames.
* WebCore.pro:
@@ -13694,8 +67072,8 @@
Reviewed by Beth Dakin.
<rdar://problem/4922709> Copying less than a paragraph of quoted text and pasting it doesn't retain quote level
-
- There was code to intentionally avoid quoting pasted content if less than a paragraph of
+
+ There was code to intentionally avoid quoting pasted content if less than a paragraph of
it was copied. That was added for <rdar://problem/5006779>, but was unnecessary because
that bug was about Paste and Match style for single paragraphs. And quote stripping for
Paste and Match style is handled elsewhere.
@@ -13706,7 +67084,7 @@
2008-11-17 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
-
+
Updated for JavaScriptCore rename.
* ForwardingHeaders/interpreter/CallFrame.h: Copied from WebCore/ForwardingHeaders/runtime/ExecState.h.
@@ -13758,7 +67136,7 @@
2008-11-17 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
-
+
Updated for JavaScriptCore renames.
* ForwardingHeaders/VM: Removed.
@@ -13803,7 +67181,7 @@
Remove use of static C++ objects that are destroyed at exit time (destructors)
Find some missing DEFINE_STATIC_LOCAL use cases.
-
+
* bindings/js/JSSVGPODTypeWrapper.h:
(WebCore::PODTypeWrapperCacheInfoTraits::emptyValue):
(WebCore::JSSVGDynamicPODTypeWrapperCache::dynamicWrapperHashMap):
@@ -13829,11 +67207,11 @@
Reviewed by Dan Bernstein
https://bugs.webkit.org/show_bug.cgi?id=22118
-
- Fix resize corner tracking in transformed elements by using
+
+ Fix resize corner tracking in transformed elements by using
mapping the point into local coords using absoluteToLocal,
rather than convertToLayerCoords.
-
+
Test: fast/css/resize-corner-tracking-transformed.html
* page/EventHandler.h:
@@ -14196,7 +67574,7 @@
Reviewed by Timothy Hatcher.
Initialize m_networkStateChangedFunction to 0 as otherwise the check for null will fail.
-
+
https://bugs.webkit.org/show_bug.cgi?id=22284
* platform/network/NetworkStateNotifier.h:
@@ -14233,7 +67611,7 @@
2008-11-15 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
-
+
Updated for JavaScriptCore renames.
* bindings/js/JSNodeCustom.cpp:
@@ -14261,10 +67639,10 @@
https://bugs.webkit.org/show_bug.cgi?id=21810
Remove use of static C++ objects that are destroyed at exit time (destructors)
- Create DEFINE_STATIC_LOCAL macro. Change static local objects to leak to avoid
- exit-time destructor. Update code that was changed to fix this issue that ran
- into a gcc bug (<rdar://problem/6354696> Codegen issue with C++ static reference
- in gcc build 5465). Also typdefs for template types needed to be added in some
+ Create DEFINE_STATIC_LOCAL macro. Change static local objects to leak to avoid
+ exit-time destructor. Update code that was changed to fix this issue that ran
+ into a gcc bug (<rdar://problem/6354696> Codegen issue with C++ static reference
+ in gcc build 5465). Also typdefs for template types needed to be added in some
cases so the type could make it through the macro successfully.
Basically code of the form:
@@ -14646,7 +68024,7 @@
https://bugs.webkit.org/show_bug.cgi?id=22264
Need to update to latest Geolocation spec (13 November 2008)
-
+
Update to new error code constants and values.
* page/Geolocation.cpp: Use new named ErrorCode enums
@@ -14661,23 +68039,23 @@
Reviewed by Justin Garcia.
- Fix (again) for <rdar://problem/5089327> Too much indentation when
+ Fix (again) for <rdar://problem/5089327> Too much indentation when
pasting quoted paragraphs
- This patch goes back to Justin's original approach to fix this bug,
- written in revision 38273. That fix was mostly rolled out by
- revision 38310 because of styling issues created by the addition of
- extra blockquote nodes. This patch again goes back to Justin's
- original fix because of cases we discovered the newer fix could not
- possibly cover. This version of the patch minimizes the styling
- issues of extra blockquotes by opting into the merge start code.
+ This patch goes back to Justin's original approach to fix this bug,
+ written in revision 38273. That fix was mostly rolled out by
+ revision 38310 because of styling issues created by the addition of
+ extra blockquote nodes. This patch again goes back to Justin's
+ original fix because of cases we discovered the newer fix could not
+ possibly cover. This version of the patch minimizes the styling
+ issues of extra blockquotes by opting into the merge start code.
* editing/ReplaceSelectionCommand.cpp:
- (WebCore::hasMatchingQuoteLevel): We want shouldMergeStart to
- return true when the quoting level of the end of the inserted
- content matches the quoting level of the end of the existing
+ (WebCore::hasMatchingQuoteLevel): We want shouldMergeStart to
+ return true when the quoting level of the end of the inserted
+ content matches the quoting level of the end of the existing
content.
- (WebCore::ReplaceSelectionCommand::shouldMergeStart): Now calls
+ (WebCore::ReplaceSelectionCommand::shouldMergeStart): Now calls
hasMatchingQuoteLevel
(WebCore::ReplaceSelectionCommand::doApply):
@@ -14767,15 +68145,15 @@
Reviewed by Beth Dakin.
<rdar://problem/4230923> "Make Plain Text" doesn't reset text alignment in single paragraph messages
-
+
When applying block styles, we would add block properties to the body element, and Mail's
Make Plain Text feature isn't equipped to remove those. This could have been fixed on our side,
but this change has the advantage that it fixes the bug on Tiger, where Mail does not plan future updates.
-
+
We have code that puts the paragraphs that we're operating on into blocks of their own before
- adding or removing block properties from the blocks that enclose them. We need to run this code
+ adding or removing block properties from the blocks that enclose them. We need to run this code
when the enclosing block is the body element.
-
+
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::insertNewDefaultParagraphElementAt): Added, moved code from moveParagraphContents
to here.
@@ -14839,11 +68217,11 @@
* platform/text/AtomicString.cpp:
(WebCore::AtomicString::add):
-
+
2008-11-13 Justin Garcia <justin.garcia@apple.com>
Reviewed by Darin Adler.
-
+
https://bugs.webkit.org/show_bug.cgi?id=18620
Long hang under TextIterator::advance() when loading http://www.lsvd.de/
@@ -14851,8 +68229,8 @@
we create VisiblePositions unnecessarily.
* editing/TextIterator.cpp:
- (WebCore::TextIterator::shouldRepresentNodeOffsetZero): Don't proceed to VisiblePosition
- creation if m_node is unrendered or invisible. The answers wouldn't have much meaning
+ (WebCore::TextIterator::shouldRepresentNodeOffsetZero): Don't proceed to VisiblePosition
+ creation if m_node is unrendered or invisible. The answers wouldn't have much meaning
and would be wasteful. Also fixed some comments to reflect the fact that this function
isn't specifically about emitting a newline.
@@ -15133,15 +68511,15 @@
it may be the bounding outline box of a transformed element, and fix it
to respect transforms by mapping the outline box to an absolute quad and
taking the enclosing rect.
-
+
RenderBox::localToAbsoluteQuad() can no longer assert that there is no
LayoutState, but LayoutState cannot be used during quad mapping (it knows
nothing about transforms).
-
+
Finally, fix a bug in RenderBox::localToAbsoluteQuad() which was getting
borderTopExtra() from the object, rather than its container (as localToAbsolute()
does).
-
+
Test: fast/repaint/transform-absolute-child.html
* rendering/RenderBlock.cpp:
@@ -15182,14 +68560,14 @@
https://bugs.webkit.org/show_bug.cgi?id=21942
https://bugs.webkit.org/show_bug.cgi?id=18557
-
+
Add methods which can be used to map renderer-local rectangles
to quads in absolute coordinates, taking transforms into account:
localToAbsoluteQuad() converts a local rect into an absolute quad.
collectAbsoluteLineBoxQuads() is an analogue of addLineBoxRects()
that works with quads.
absoluteQuads() is an analogue of absoluteRects(), for quads.
-
+
Use the quad methods to fix the inspector highlight for transformed
elements.
@@ -15312,7 +68690,7 @@
https://bugs.webkit.org/show_bug.cgi?id=17840
Patch 2
-
+
Code cleanup in RenderBox::computeAbsoluteRepaintRect().
* rendering/RenderBox.cpp:
@@ -15336,24 +68714,24 @@
(WebCore::RenderBox::computeAbsoluteRepaintRect):
2008-11-12 Justin Garcia <justin.garcia@apple.com>
-
+
Reviewed by Beth Dakin.
-
+
<rdar://problem/5495723> Selecting and deleting quoted text quotes other text
<rdar://problem/4775313> Deleting lines from the bottom of a messages leaves the last blank line quoted
-
- We don't want to merge into a block if it will mean changing the quote level of content after deleting
- selections that contain a whole number paragraphs plus a line break, since it is unclear to most users
+
+ We don't want to merge into a block if it will mean changing the quote level of content after deleting
+ selections that contain a whole number paragraphs plus a line break, since it is unclear to most users
that such a selection actually ends at the start of the next paragraph. Instead we want to completely
- remove the selected paragraph(s) and all evidence of the first one's quote level. This matches TextEdit behavior
+ remove the selected paragraph(s) and all evidence of the first one's quote level. This matches TextEdit behavior
for indented paragraphs.
-
+
* editing/DeleteSelectionCommand.cpp:
(WebCore::DeleteSelectionCommand::initializePositionData): For the selections described above, do not
try to merge after the deletion. Instead try and prune the start block or blocks if they've been emptied
so that we remove evidence of the deleted paragraphs' quote level.
- (WebCore::DeleteSelectionCommand::mergeParagraphs): Try and prune the start block(s) if necessary. Also
- make sure that the caret is placed correctly so that it ends up on the same line that the deleted selection
+ (WebCore::DeleteSelectionCommand::mergeParagraphs): Try and prune the start block(s) if necessary. Also
+ make sure that the caret is placed correctly so that it ends up on the same line that the deleted selection
started on, instead of one higher.
* editing/DeleteSelectionCommand.h:
* editing/htmlediting.cpp:
@@ -15568,22 +68946,22 @@
Reviewed by Darin Adler.
- Fix for <rdar://problem/5089327> Too much indentation when pasting
+ Fix for <rdar://problem/5089327> Too much indentation when pasting
quoted paragraphs
- This patch re-addresses pasting blockquotes into blockquotes. It
- backs out most of revision 38273. 38273 fixed the bug by inserting
- the pasted content as a sibling blockquote node to the pre-existing
- blockquote node. The problem with that is that by default,
- blockquotes have a giant margin, so visually, this can be weird.
- This patch instead inserts the pasted content as siblings of the
- the content already inside the outer blockquote, and then removes
- the blockquote node from the pasted content itself, so that it
+ This patch re-addresses pasting blockquotes into blockquotes. It
+ backs out most of revision 38273. 38273 fixed the bug by inserting
+ the pasted content as a sibling blockquote node to the pre-existing
+ blockquote node. The problem with that is that by default,
+ blockquotes have a giant margin, so visually, this can be weird.
+ This patch instead inserts the pasted content as siblings of the
+ the content already inside the outer blockquote, and then removes
+ the blockquote node from the pasted content itself, so that it
doesn't nest itself into the outer blockquote.
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::doApply):
- Move contains() from Element to Node since there is nothing
+ Move contains() from Element to Node since there is nothing
Element-specific about it.
* dom/Element.cpp:
* dom/Element.h:
@@ -15657,7 +69035,7 @@
PatternCairo needs to invert the pattern matrix because
of transformation from user space to pattern space.
- Give a identity matrix to pattern for Qt and Cairo. Because the
+ Give a identity matrix to pattern for Qt and Cairo. Because the
context is transformed already.
[CAIRO][QT] Canvas transformations applied twice to Patterns
@@ -15704,15 +69082,15 @@
Reviewed by Beth Dakin.
- <rdar://problem/4037481> REGRESSION (Mail): pasting quoted text
+ <rdar://problem/4037481> REGRESSION (Mail): pasting quoted text
into quoted text yields double-quoting
-
- Don't nest inserted content in Mail blockquotes. Perform a
+
+ Don't nest inserted content in Mail blockquotes. Perform a
BreakBlockquoteCommand if we're in
one and insert the incoming fragment between the split blockquotes.
* editing/ReplaceSelectionCommand.cpp:
- (WebCore::ReplaceSelectionCommand::shouldMerge): Renamed from ->
+ (WebCore::ReplaceSelectionCommand::shouldMerge): Renamed from ->
source and to -> destination.
(WebCore::ReplaceSelectionCommand::doApply):
@@ -15863,10 +69241,10 @@
2008-11-08 Antti Koivisto <antti@apple.com>
Reviewed by Sam Weinig.
-
+
Fix https://bugs.webkit.org/show_bug.cgi?id=22141
REGRESSION: Safari error page is not fully styled when loaded from cache
-
+
Reset text decoder on flush so it does not pass through the BOM when it is reused.
Test: fast/encoding/css-cached-bom.html
@@ -15875,7 +69253,7 @@
(WebCore::TextResourceDecoder::flush):
2008-11-08 Kevin Ollivier <kevino@theolliviers.com>
-
+
Reviewed by Mark Rowe.
Send URL errors to stderr rather than stdout. While debugging wx DumpRenderTree,
@@ -15886,7 +69264,7 @@
2008-11-08 Kevin Ollivier <kevino@theolliviers.com>
- wx build fixes after addition of JSCore parser and bycompiler dirs.
+ wx build fixes after addition of JSCore parser and bycompiler dirs.
* webcore-base.bkl:
* webcore-wx.bkl:
@@ -15896,13 +69274,13 @@
Reviewed by Dan Bernstein
https://bugs.webkit.org/show_bug.cgi?id=21906
-
+
Override addFocusRingRects() in RenderTextControl to avoid
the RenderFlow behavior of recursing on descendent renderers.
RenderTextControl should only ever need a simple focus rect.
-
+
This fixes focus ring issues with transforms on text controls.
-
+
Test: fast/transforms/transformed-focused-text-input.html
* rendering/RenderTextControl.cpp:
@@ -15996,7 +69374,7 @@
Reviewed by Dan Bernstein
https://bugs.webkit.org/show_bug.cgi?id=22122
-
+
Use a stack-based object to simplify the pushLayoutState/popLayoutState
code. LayoutStateMaintainer either pushes in the constructor, or allows
an explicit push() later. Both cases require an explicit pop().
@@ -16072,10 +69450,10 @@
Reviewed by Dan Bernstein.
https://bugs.webkit.org/show_bug.cgi?id=22093
-
+
Delaying the text decoding caused regression since the decoding
- also determines the encoding in case of @charset rule.
-
+ also determines the encoding in case of @charset rule.
+
Decode immediately in data() and keep the decoded string around
during the checkNotify().
@@ -16130,7 +69508,7 @@
NPN_HasPropertyUPP and NPN_HasMethodUPP entries in NPNetscapeFuncs are NULL
Export _NPN_HasMethod and _NPN_HasProperty.
-
+
* WebCore.NPAPI.exp:
2008-11-06 Simon Fraser <simon.fraser@apple.com>
@@ -16138,7 +69516,7 @@
Reviewed by Antti Koivisto
https://bugs.webkit.org/show_bug.cgi?id=15678
-
+
Fix transformed menu selects to show the popup in the correct
location.
@@ -16226,7 +69604,7 @@
2008-11-06 Steve Falkenburg <sfalken@apple.com>
Fix failed assert at launch caused by unintialized data member.
-
+
Reviewed by Maciej Stachowiak.
* platform/network/win/NetworkStateNotifierWin.cpp:
@@ -16455,10 +69833,10 @@
Reviewed by Dave Hyatt
https://bugs.webkit.org/show_bug.cgi?id=21870
-
+
Implement absoluteToLocal() to convert a point from absolute
to local coordinates, optionally taking transforms into account.
-
+
Use this to set offsetX/offsetY in mouse events, thus fixing
offsetX/offsetY in events on elements with transforms.
@@ -16651,15 +70029,15 @@
2008-11-05 Antti Koivisto <antti@apple.com>
Reviewed by Dan Bernstein.
-
+
https://bugs.webkit.org/show_bug.cgi?id=22093
Don't keep decoded stylesheet data in cache
-
+
<rdar://problem/6343588>
Don't keep decoded stylesheet string around in the cache. There are no sharing benefits and
performance benefits are negligible (no measured PLT impact). Reduces memory consumption of
- style sheet data in cache by 2/3 in common case.
+ style sheet data in cache by 2/3 in common case.
* loader/CachedCSSStyleSheet.cpp:
(WebCore::CachedCSSStyleSheet::sheetText):
@@ -16755,10 +70133,10 @@
Reviewed by Beth Dakin.
<rdar://problem/5480736> In Mail and Gmail, copied indented text pastes with line break
-
- As a rule, we don't allow merges out of blockquotes. In the bug, we are inserting a text node
+
+ As a rule, we don't allow merges out of blockquotes. In the bug, we are inserting a text node
between two blockquotes. Because the start merge moves the text node into a blockquote, when we
- determine whether or not we should do the end merge, it incorrectly appears as though the end merge
+ determine whether or not we should do the end merge, it incorrectly appears as though the end merge
is merging out of a blockquote. The fix is to determine whether or not we should do the end merge
before we do the start merge, so that the start merge doesn't effect our decision.
@@ -16870,7 +70248,7 @@
Reviewed by Dan Bernstein.
Remove two global destructors from CoreTextController.
-
+
* platform/graphics/mac/CoreTextController.cpp:
(WebCore::CoreTextController::collectCoreTextRunsForCharacters):
@@ -17021,12 +70399,12 @@
reported by zdobersek in #webkit.
2008-11-04 Darin Fisher <darin@chromium.org>
-
+
Reviewed by Anders Carlsson.
-
+
No need to clobber all ResourceRequest fields in FrameLoader::reload()
https://bugs.webkit.org/show_bug.cgi?id=21949
-
+
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::reload):
@@ -17684,7 +71062,7 @@
When computing the bounds of the transparency layer, we need to
map the clipRect through the enclosing transform.
-
+
Test: fast/layers/opacity-transforms.html
* rendering/RenderLayer.cpp:
@@ -17696,7 +71074,7 @@
https://bugs.webkit.org/show_bug.cgi?id=22053
- Added additional support needed for the NPDrawingModelCoreAnimation drawing model.
+ Added additional support needed for the NPDrawingModelCoreAnimation drawing model.
* bridge/npapi.h:
@@ -17910,7 +71288,7 @@
WebCore Windows part of fix for <rdar://problem/5839256> FILE CONTROL: multi-file upload.
https://bugs.webkit.org/show_bug.cgi?id=22008
- * platform/FileChooser.cpp: (WebCore::FileChooser::chooseIcon):
+ * platform/FileChooser.cpp: (WebCore::FileChooser::chooseIcon):
Rename newIconForFile and newIconForFiles to createIconForFile and createIconForFiles.
* platform/graphics/Icon.h: ditto.
* platform/graphics/gtk/IconGtk.cpp:
@@ -17929,9 +71307,9 @@
(WebCore::Icon::createIconForFile): ditto.
(WebCore::Icon::createIconForFiles): Add creation of an icon for multiple files.
- * rendering/RenderThemeWin.cpp: (WebCore::RenderThemeWin::paintSearchFieldResultsDecoration):
+ * rendering/RenderThemeWin.cpp: (WebCore::RenderThemeWin::paintSearchFieldResultsDecoration):
Improve icon creation code to match new code in Icon::createIconForFiles
-
+
2008-10-31 Timothy Hatcher <timothy@apple.com>
Add manual tests that check breakpoints on a blockless body of "for" loops.
@@ -18091,7 +71469,7 @@
Reviewed by Sam Weinig
https://bugs.webkit.org/show_bug.cgi?id=21967
-
+
For some platforms the GeolocationService must be suspended and resumed.
* page/Geolocation.cpp:
@@ -18110,7 +71488,7 @@
Reviewed by Sam Weinig
https://bugs.webkit.org/show_bug.cgi?id=21966
-
+
The Geolocation spec was updated on 10/27/2008. This brings WebCore up to date.
http://dev.w3.org/geo/api/spec-source.html
@@ -18144,15 +71522,15 @@
<rdar://problem/6104369> Hitting return at the end of a quoted line creates an extraneous quoted line
* editing/BreakBlockquoteCommand.cpp:
- (WebCore::BreakBlockquoteCommand::doApply):
- Don't store the endingSelection() in selection, just call endingSelection() in the few places it's
+ (WebCore::BreakBlockquoteCommand::doApply):
+ Don't store the endingSelection() in selection, just call endingSelection() in the few places it's
needed. This function is cheap since it just returns a reference to a Selection instead of creating one.
Don't store an affinity. In the one place that it was used, isLastVisiblePositionInNode(VisiblePosition(pos, affinity), topBlockquote),
we now use visiblePos (in order to avoid VisiblePosition creation).
- Set pos after we delete the current selection (if there is one), and be consistent about what we set
+ Set pos after we delete the current selection (if there is one), and be consistent about what we set
pos to. Before, we upstream()ed it if there was a selection to delete and left it alone otherwise. In fact...
- ...we need to use downstream() for pos so that when a caret is at the boundary between two nodes, pos is
- in the first node that we want to move. This fixes the bug, since it lets code that checks for the case
+ ...we need to use downstream() for pos so that when a caret is at the boundary between two nodes, pos is
+ in the first node that we want to move. This fixes the bug, since it lets code that checks for the case
where the caret is between text and a br work correctly.
2008-10-30 Yael Aharon <yael.aharon@nokia.com>
@@ -18179,10 +71557,10 @@
<rdar://problem/6104369> Hitting return at the end of a quoted line creates an extraneous quoted line
* editing/BreakBlockquoteCommand.cpp:
- (WebCore::BreakBlockquoteCommand::doApply): Added comments. Don't need to use newStartNode. If the
- startNode needs to change, change it. Afterwords, check to make sure that it hasn't left topBlockquote.
- This is slightly stricter than before, where we just made sure that it still had a topBlockquote. This
- doesn't really fix a bug, since we can't really get into a situation where we move to a different
+ (WebCore::BreakBlockquoteCommand::doApply): Added comments. Don't need to use newStartNode. If the
+ startNode needs to change, change it. Afterwords, check to make sure that it hasn't left topBlockquote.
+ This is slightly stricter than before, where we just made sure that it still had a topBlockquote. This
+ doesn't really fix a bug, since we can't really get into a situation where we move to a different
topBlockquote, but it simplifies the code.
2008-10-30 Dirk Schulze <vbs85@gmx.de>
@@ -18348,7 +71726,7 @@
Some preparation for:
<rdar://problem/6104369> Hitting return at the end of a quoted line creates an extraneous quoted line
-
+
Added an early return to avoid a level of if-nesting. No other changes. We probably don't
need to rebalance whitespace before the early return but for now don't risk any change in behavior
I'll revisit that later.
@@ -18359,7 +71737,7 @@
2008-10-29 Kevin Ollivier <kevino@theolliviers.com>
wx build fixes after addition of runtime and ImageBuffer changes.
-
+
* platform/graphics/wx/ImageBufferData.h: Added.
* platform/graphics/wx/ImageBufferWx.cpp:
(WebCore::ImageBufferData::ImageBufferData):
@@ -18507,7 +71885,7 @@
(WebCore::Document::~Document):
Moved active object and MessagePort tracking up to ScriptExecutionContext, to share code
with workers.
-
+
* dom/Document.h:
(WebCore::Document::isDocument):
(WebCore::Document::refScriptExecutionContext):
@@ -18580,8 +71958,8 @@
* editing/Editor.cpp:
(WebCore::Editor::ignoreSpelling): Remove misspelling markers from the word.
- (WebCore::Editor::learnSpelling): Added a FIXME about <rdar://problem/5396072>, which
- will probably require a change more complicated than just marking the learned word as
+ (WebCore::Editor::learnSpelling): Added a FIXME about <rdar://problem/5396072>, which
+ will probably require a change more complicated than just marking the learned word as
misspelled. I'll address it with a separate patch.
* editing/EditorCommand.cpp:
(WebCore::executeIgnoreSpelling): Added.
@@ -19028,10 +72406,10 @@
2008-10-27 Kevin Watters <kevinwatters@gmail.com>
Reviewed by Kevin Ollivier.
-
+
Update the active state as well as the focused state as both need to be true
for the caret to be drawn.
-
+
https://bugs.webkit.org/show_bug.cgi?id=21900
* WebView.cpp:
@@ -19119,7 +72497,7 @@
Reviewed by Sam Weinig.
No need to call release if the connection is null.
-
+
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::start):
@@ -19128,9 +72506,9 @@
Reviewed by Kevin Decker.
<rdar://problem/6322650> Crash in fast/loader/simultaneous-reloads-assert.html
-
+
Make sure to null check the NSURLConnection object.
-
+
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::setDefersLoading):
@@ -19172,7 +72550,7 @@
2008-10-25 Geoffrey Garen <ggaren@apple.com>
Not reviewed.
-
+
Try to fix Mac debug build on the buildbot.
* platform/FileChooser.cpp:
@@ -19301,40 +72679,40 @@
Reviewed by Sam Weinig.
<rdar://problem/5440917> Support NPN_Construct
-
+
* WebCore.NPAPI.exp:
Export _NPN_Construct.
-
+
* bridge/NP_jsobject.cpp:
(_NPN_Construct):
Implement this.
-
+
* bridge/c/c_instance.cpp:
(JSC::Bindings::CInstance::supportsConstruct):
(JSC::Bindings::CInstance::invokeConstruct):
Have this call the appropriate NPClass method.
-
+
* bridge/npruntime.h:
Add NPN_Construct.
* bridge/npruntime_impl.h:
Add _NPN_Construct.
-
+
* bridge/runtime.h:
(JSC::Bindings::Instance::supportsConstruct):
(JSC::Bindings::Instance::invokeConstruct):
New methods.
-
+
* bridge/runtime_object.cpp:
(JSC::callRuntimeConstructor):
Call the native instance.
-
+
(JSC::RuntimeObjectImp::getConstructData):
Implement this.
-
+
* bridge/runtime_object.h:
Add new method declarations.
-
+
* plugins/gtk/PluginPackageGtk.cpp:
(WebCore::PluginPackage::load):
* plugins/qt/PluginPackageQt.cpp:
@@ -19376,9 +72754,9 @@
This is consistent with the direction HTML5 will be going in the future.
The initial implementation here will show "n files" as the text next to the control when multiple files are selected. You can view
- the individual files in a tooltip for now. Improvements to this control will come later.
+ the individual files in a tooltip for now. Improvements to this control will come later.
- Web developers will be able to access the FileList from the HTMLInputElement element, where they can get a base name and a size for each file.
+ Web developers will be able to access the FileList from the HTMLInputElement element, where they can get a base name and a size for each file.
These FileList Files can also be sent in an XMLHTTPRequest.
* manual-tests/post-multi-file-upload.html: Added.
@@ -19396,7 +72774,7 @@
but we don't want to break the behavior for existing websites that may rely on this.
(WebCore::HTMLInputElement::setValue): ditto.
(WebCore::HTMLInputElement::setValueFromRenderer): This is no longer used for file upload controls. setFileListFromRenderer is used instead.
- (WebCore::HTMLInputElement::setFileListFromRenderer): Added.
+ (WebCore::HTMLInputElement::setFileListFromRenderer): Added.
* html/HTMLInputElement.h:
* page/Chrome.cpp: (WebCore::Chrome::setToolTip): Show a tooltip with the file name list for the multi-file upload control.
@@ -19466,9 +72844,9 @@
Reviewed by Sam Weinig.
https://bugs.webkit.org/show_bug.cgi?id=21475
-
+
Provide support for the Geolocation API
-
+
http://dev.w3.org/geo/api/spec-source.html
Test: geolocation/geolocation-not-implemented.html
@@ -19583,7 +72961,7 @@
Reviewed by Darin Adler
https://bugs.webkit.org/show_bug.cgi?id=21818
-
+
Add HashTraits for AtomicString so that AtomicString can be used as
the key for a HashMap or HashSet.
@@ -19611,7 +72989,7 @@
Add WebKitCSSKeyframeRule and WebKitCSSKeyframesRule to the
switch in _wrapCSSRule.
-
+
* bindings/objc/DOMCSS.mm:
(+[DOMCSSRule _wrapCSSRule:WebCore::]):
@@ -19917,9 +73295,9 @@
Reviewed by Sam Weinig.
https://bugs.webkit.org/show_bug.cgi?id=21475
-
+
Provide support for the Geolocation API
-
+
http://dev.w3.org/geo/api/spec-source.html
Test: geolocation/geolocation-not-implemented.html
@@ -20142,7 +73520,7 @@
Reviewed by Oliver Hunt.
* platform/network/curl/ResourceRequest.h: A better implementation
- of CFURLRequest, rather than void*. This gives better compatibility
+ of CFURLRequest, rather than void*. This gives better compatibility
with the WebKit.idl interface.
(WebCore::ResourceRequest::cfURLRequest):
@@ -20342,7 +73720,7 @@
- fix https://bugs.webkit.org/show_bug.cgi?id=21809
- Remove PLATFORM(MAC) wrapping USE(ATSUI). It's redundant and inhibits
+ Remove PLATFORM(MAC) wrapping USE(ATSUI). It's redundant and inhibits
its use for PLATFORM(CHROMIUM) in the future.
* platform/graphics/SimpleFontData.h:
@@ -20350,7 +73728,7 @@
2008-10-22 David Smith <catfish.man@gmail.com>
Reviewed by Anders Carlsson.
-
+
https://bugs.webkit.org/show_bug.cgi?id=19974
getElementsByClassName not live enough
@@ -20423,11 +73801,11 @@
<rdar://6261773> - autocomplete="off" doesn't work on Windows
- Visual Studio makes a poor decision regarding the combination of enums and bitfields, such that a
- statement like "m_autocomplete = Off" followed by "return m_autocomplete == Off" would return "false"
+ Visual Studio makes a poor decision regarding the combination of enums and bitfields, such that a
+ statement like "m_autocomplete = Off" followed by "return m_autocomplete == Off" would return "false"
instead of the much more correct "true."
-
- In the past we have worked around this by declaring the bitfield member as an unsigned instead
+
+ In the past we have worked around this by declaring the bitfield member as an unsigned instead
of the enum type.
For more discussion, see http://trac.webkit.org/changeset/25329
@@ -20511,11 +73889,11 @@
Make sure that the AtomicString that identifies a set of animation keyframes
stays live by keeping a copy in the WebKitCSSKeyframesRule.
-
+
Also call styleSheetChanged() when the keyframes name changes, but
add an internal method that doesn't call styleSheetChanged() for use
during normal stylesheet parsing.
-
+
Test: animations/change-keyframes-name.html
* css/CSSGrammar.y:
@@ -20647,14 +74025,14 @@
Reviewed by Darin Adler.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=20352
- REGRESSION(r31030-31055): Choosing "Print window" from frame set
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=20352
+ REGRESSION(r31030-31055): Choosing "Print window" from frame set
prints blank page
and corresponding: <rdar://problem/6142398>
- viewHeight() and viewWidth() only return valuable information if we
- are not printing. Everywhere else in the code, we make sure we are
- not printing before we call these functions. Adding a check for
+ viewHeight() and viewWidth() only return valuable information if we
+ are not printing. Everywhere else in the code, we make sure we are
+ not printing before we call these functions. Adding a check for
printing here fixes this bug, and framesets print again.
* rendering/RenderFrameSet.cpp:
@@ -20677,7 +74055,7 @@
Add a comment explaining layoutDelta(), and an assertion
that checks that delta changes were correctly paired during layout.
-
+
* rendering/RenderView.cpp:
(WebCore::RenderView::layout):
* rendering/RenderView.h:
@@ -20733,9 +74111,9 @@
Fix https://bugs.webkit.org/show_bug.cgi?id=21763
REGRESSION (r36108-r36113): Can't load picture content on wired.com galleries
<rdar://problem/6285025
-
+
If we get 304 response we need to explicitly check if that completes the frame load.
-
+
No test case, simulating the condition is pretty difficult.
* loader/loader.cpp:
@@ -20746,9 +74124,9 @@
Reviewed by Mark Rowe.
Work around <rdar://problem/6301728>.
-
+
Don't assert that loads are deferred when we're using CFNetwork on Mac or Windows.
-
+
* loader/MainResourceLoader.cpp:
(WebCore::MainResourceLoader::didReceiveResponse):
(WebCore::MainResourceLoader::didReceiveData):
@@ -20759,13 +74137,13 @@
Reviewed by Adele Peterson.
- Speculative fix for <rdar://problem/6242585> CrashTracer: [USER] 19
+ Speculative fix for <rdar://problem/6242585> CrashTracer: [USER] 19
crashes in Safari at com.apple.WebCore
WebCore::ScrollView::visibleContentRect const + 153
- d->m_view can be null and is null-checked at other points in the
- code. The logs indicate that this crash occurs when closing a
- window containing a PDF, so in case where we crash, the PDF's view
+ d->m_view can be null and is null-checked at other points in the
+ code. The logs indicate that this crash occurs when closing a
+ window containing a PDF, so in case where we crash, the PDF's view
is probably already null. So the fix is to simply add a null-check.
* page/Frame.cpp:
@@ -20996,7 +74374,7 @@
Reviewed by Jon Honeycutt
- Fix a crash in Accessibility where a table section was being
+ Fix a crash in Accessibility where a table section was being
referenced without first checking if it was null
https://bugs.webkit.org/show_bug.cgi?id=21721
@@ -21114,7 +74492,7 @@
(WebCore::JavaScriptDebugServer::recompileAllJSFunctionsSoon):
(WebCore::JavaScriptDebugServer::didAddListener):
(WebCore::JavaScriptDebugServer::didRemoveListener):
- * inspector/JavaScriptDebugServer.h: Exported an API for recompiling,
+ * inspector/JavaScriptDebugServer.h: Exported an API for recompiling,
used by the Settings object.
* page/Settings.cpp:
@@ -21955,9 +75333,9 @@
2008-10-17 Kevin Watters <kevinwatters@gmail.com>
Reviewed by Kevin Ollivier
-
+
Fix wx port's scrollbar and drawing handling after recent changes.
-
+
https://bugs.webkit.org/show_bug.cgi?id=21720
* platform/ScrollView.h:
@@ -22496,7 +75874,7 @@
https://bugs.webkit.org/show_bug.cgi?id=21587
NPN_PluginThreadAsyncCall does not work properly
-
+
* plugins/PluginMainThreadScheduler.cpp:
(WebCore::PluginMainThreadScheduler::dispatchCalls):
Make sure to set m_callPending to false once the queue has been cleared.
@@ -22619,7 +75997,7 @@
Reviewed by Sam Weinig.
- Implement didSendBodyData delegate method, and use older code path when that delegate doesn't exist.
+ Implement didSendBodyData delegate method, and use older code path when that delegate doesn't exist.
* platform/network/ResourceHandle.h:
* platform/network/mac/FormDataStreamMac.mm: (WebCore::formRead):
@@ -22704,11 +76082,11 @@
Reviewed by Darin Adler, tweaked and landed by Beth.
- * WebCore.base.exp: Exposes two functions to be able to create a
- selection from a point on the screen. Also exposes the new
+ * WebCore.base.exp: Exposes two functions to be able to create a
+ selection from a point on the screen. Also exposes the new
TextIterator::currentNode function.
* WebCore/editing/TextIterator.cpp:
- (TextIterator::currentNode) : New function that returns the current
+ (TextIterator::currentNode) : New function that returns the current
text node or NULL if there is no text node.
2008-10-15 Marco Barisione <marco.barisione@collabora.co.uk>
@@ -22951,7 +76329,7 @@
2008-10-14 Tor Arne Vestbø <tavestbo@trolltech.com>
Reviewed by Simon.
-
+
Fix QtWebKit scrollbar painting errors
* platform/qt/ScrollbarThemeQt.cpp:
@@ -22972,7 +76350,7 @@
Reviewed by Simon.
Use style-painter to draw scrollbars in ScrollbarThemeQt
-
+
This has the benefit of setting up the painter properly without
antialiasing and saving and restoring the brush. It also ensures
that we use the style of the QWebView over the QApplication style
@@ -23053,7 +76431,7 @@
2008-10-13 Maciej Stachowiak <mjs@apple.com>
Rubber stamped by Mark Rowe.
-
+
- use gcc 4.2 when building with Xcode 3.1 or newer on Leopard, even though this is not the default
* Configurations/DebugRelease.xcconfig:
@@ -23085,7 +76463,7 @@
Links from image maps were not being included in the web area's AXLinkUIElements attribute.
The position of image map links was being reported incorrectly and the parent-chain
hierarchy for image map links was incorrect because image map links did not have a reference
- to their parent image.
+ to their parent image.
Test: accessibility/document-links.html
@@ -23309,7 +76687,7 @@
but changes \r, \n, and \r\n to a single space.
Tests: editing/pasteboard/paste-multiline-text-input.html
-
+
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::constrainValue):
@@ -23351,8 +76729,8 @@
Reviewed by Alp Toker.
- Add version parsing for Flash, and the PluginQuirkDontSetNullWindowHandleOnDestroy
- plugin quirk if Flash 10 or newer since at least in b218, setting a NULL window
+ Add version parsing for Flash, and the PluginQuirkDontSetNullWindowHandleOnDestroy
+ plugin quirk if Flash 10 or newer since at least in b218, setting a NULL window
handler on destroy crashes WebKit <https://bugs.webkit.org/show_bug.cgi?id=19859>
* plugins/gtk/PluginPackageGtk.cpp:
@@ -23747,7 +77125,7 @@
Reviewed by Darin Adler
https://bugs.webkit.org/show_bug.cgi?id=21538
-
+
The blendFunc() for TransformOperations should never mess with the
operation lists by replacing some ops with identity, otherwise the lists
no longer match and transitions break.
@@ -23765,7 +77143,7 @@
Fix re-targetting a running transition; if the target property
changes, we do need to make a new ImplicitAnimation.
-
+
Test: transitions/retargetted-transition.html
* page/animation/CompositeAnimation.cpp:
@@ -23996,7 +77374,7 @@
Redesigned how animation events are sent in order to get rid of
AnimationEventDispatcher. ImplicitAnimation and KeyframeAnimation
- are now ref counted. While calling the event handler, I keep a
+ are now ref counted. While calling the event handler, I keep a
reference to this class to avoid it getting destroyed out from under me.
I also moved most of the functionality of CompositeAnimation to
@@ -24112,7 +77490,7 @@
Media controls should not show when element is not visible
https://bugs.webkit.org/show_bug.cgi?id=21155
-
+
Reviewed by Adele Peterson.
* html/HTMLMediaElement.cpp:
@@ -24369,7 +77747,7 @@
Gradient clips were not getting cleared after filling the
gradient, this was causing nothing to draw in Canvex
https://bugs.webkit.org/show_bug.cgi?id=21498
-
+
Tests forthcoming.
* WebCore.xcodeproj/project.pbxproj:
@@ -24381,10 +77759,10 @@
2008-10-09 Eric Seidel <eric@webkit.org>
Reviewed by Oliver Hunt.
-
+
Fix transformed patterns
https://bugs.webkit.org/show_bug.cgi?id=21498
-
+
Test: fast/canvas/patternfill-repeat.html
* WebCore.xcodeproj/project.pbxproj:
@@ -24793,7 +78171,7 @@
Reviewed by Antti Koivisto.
<rdar://problem/6273887> Crash in ApplicationCacheGroup
-
+
Make sure to stop loading even before a cache update is in progress so that the
manifest load will be stopped.
@@ -24895,7 +78273,7 @@
scrollbar-corner
scrollbar-thumb
scrollbar-track
-
+
These elements will work with all the usual pseudo-classes (:hover, :active, :enabled, :disabled, etc.) and with
the following new pseudo-classes:
scrollbar-active
@@ -24903,7 +78281,7 @@
scrollbar-forward
scrollbar-horizontal
scrollbar-vertical
-
+
Reviewed by Adele
* css/CSSSelector.cpp:
@@ -25036,7 +78414,7 @@
2008-10-06 Jeremy Moskovich <jeremy@chromium.org>
Reviewed by Dan Bernstein.
-
+
Added C++ forward declaration for the NSURLAuthenticationChallenge class
so that the m_currentMacChallenge variable doesn't cause a
compilation error when ResourceHandleInternal.h is included from a C++ file.
@@ -25054,7 +78432,7 @@
https://bugs.webkit.org/show_bug.cgi?id=21416
Add missing null checks identified by Application Verifier.
-
+
Reviewed by Darin Adler.
* platform/win/SharedTimerWin.cpp:
@@ -25098,7 +78476,7 @@
2008-10-03 Steve Falkenburg <sfalken@apple.com>
<rdar://problem/6249833> Fix default button appearance
-
+
Reviewed by Adele Peterson.
* rendering/RenderThemeWin.cpp:
@@ -25178,7 +78556,7 @@
SVG should support ascent and descent properties <font-face> instead of <font>!
https://bugs.webkit.org/show_bug.cgi?id=21365
-
+
Tested by many many existing SVG tests.
* svg/SVGFontFaceElement.cpp:
@@ -25293,7 +78671,7 @@
The solution is to track whether we are entering or reentering the parsing
of a script element. We do this simply by 0 checking scriptStartLineno,
- and resetting it after we complete parsing of each script element.
+ and resetting it after we complete parsing of each script element.
Test: http/tests/incremental/pause-in-script-element.pl
@@ -25925,11 +79303,11 @@
2008-10-03 David Hyatt <hyatt@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=21340
-
+
Remove "containingWindow()/setContainingWindow()" from Widget. HostWindow covers this now.
-
+
Reviewed by Dan Bernstein & Darin Adler
-
+
* platform/ScrollView.cpp:
(WebCore::ScrollView::addChild):
* platform/Widget.cpp:
@@ -25996,7 +79374,7 @@
Reviewed by Dan Bernstein.
- Fix for <rdar://problem/6012018>
+ Fix for <rdar://problem/6012018>
https://bugs.webkit.org/show_bug.cgi?id=21335
CrashTracer: [USER] 4959 crashes in Safari at com.apple.WebCore: WebCore::Frame::settings const + 8
@@ -26026,7 +79404,7 @@
2008-10-03 David Hyatt <hyatt@apple.com>
Remove addToDirtyRegion.
-
+
Reviewed by Oliver Hunt
* page/Chrome.cpp:
@@ -26041,7 +79419,7 @@
Reviewed by Maciej Stachowiak.
- - fix a CachedResource leak introduced in r37176
+ - fix a CachedResource leak introduced in r37176
Undo r37176 and instead allow pruneDeadResources() to be re-entered, but
afterwards bail out of the outer pruneDeadResources().
@@ -26058,7 +79436,7 @@
Fix Gtk adjustments so that they are properly checked again before creating horizontal/vertical
scrollbars.
-
+
Reviewed by Oliver Hunt
* platform/ScrollView.cpp:
@@ -26113,16 +79491,16 @@
2008-10-02 David Hyatt <hyatt@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=21328
-
+
Make widget invalidation more cross-platform.
-
+
(1) Make invalidateRect a pure virtual function on Widget. All leaf widgets must now implement this function.
-
+
(2) Scrollbars now send invalidations through the ScrollbarClient. windowClipRect on ScrollbarClient has been removed and replaced with this invalidation call.
This allows all scrollbar invalidations to go through the render tree so that transforms and reflections will be respected.
-
+
(3) Plugins now have the native window invalidation code for windowed plugins. Windowless plugins do a repaintRectangle on the plugin's renderer.
-
+
(4) FrameViews now do a repaintRectangle on their owner element's renderer.
Reviewed by Sam Weinig
@@ -26197,7 +79575,7 @@
Reviewed by Dave Hyatt
- Fix RenderFileUploadControl::setStyle() and
+ Fix RenderFileUploadControl::setStyle() and
RenderMenuList::setStyle() to not touch the style; replace
with html4.css and CSSStyleSelector changes.
@@ -26218,9 +79596,9 @@
Clean up code that changes the RenderStyle passed in to
table renderer setStyle() methods.
-
+
https://bugs.webkit.org/show_bug.cgi?id=21287
-
+
Tests: fast/table/floating-th.html
fast/table/table-display-types-strict.html
fast/table/table-display-types.html
@@ -26308,7 +79686,7 @@
- fix a Database leak that resulted in Document leaks
* storage/Database.cpp:
- (WebCore::Database::openDatabase): Account for the fact that RefCounted
+ (WebCore::Database::openDatabase): Account for the fact that RefCounted
objects start out with a ref count of 1.
2008-10-02 Sam Weinig <sam@webkit.org>
@@ -26323,7 +79701,7 @@
2008-10-02 David Hyatt <hyatt@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=21314
-
+
Make scrollBackingStore cross-platform.
Reviewed by Sam Weinig
@@ -26406,14 +79784,14 @@
2008-10-01 David Hyatt <hyatt@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=21298
-
+
Make updateScrollbars cross-platform. For now a stubbed out scrollContents function is invoked to do the scrolling of the backing store. Next patch
- will make that cross-platform.
-
+ will make that cross-platform.
+
The ScrollView now implements ScrollbarClient, which means that there was a clash of windowClipRect methods from the
multiple inheritance. For now I solved this by adding a Scrollbar* to the ScrollbarClient version of the method, but longer term
windowClipRect is going to be removed from ScrollbarClient (when Widget invalidation gets rewritten).
-
+
Reviewed by Sam Weinig
* page/FrameView.cpp:
@@ -26507,7 +79885,7 @@
(WebCore::XMLHttpRequest::detachRequests):
(WebCore::XMLHttpRequest::setPendingActivity):
(WebCore::XMLHttpRequest::unsetPendingActivity):
- Moved XMLHttpRequest tracking from a global map to Document.
+ Moved XMLHttpRequest tracking from a global map to Document.
* bindings/js/JSDOMBinding.cpp:
(WebCore::wrapperSet):
@@ -26595,7 +79973,7 @@
2008-10-02 Geoffrey Garen <ggaren@apple.com>
Not reviewed.
-
+
Try to fix Windows build.
* WebCore.vcproj/WebCore.vcproj:
@@ -26666,7 +80044,7 @@
(WebCore::JavaScriptDebugServer::didExecuteProgram):
(WebCore::JavaScriptDebugServer::didReachBreakpoint):
* page/JavaScriptDebugServer.h:
- * page/inspector/ScriptsPanel.js: Renamed internal uses of sourceId and
+ * page/inspector/ScriptsPanel.js: Renamed internal uses of sourceId and
sourceIdentifier to sourceID.
2008-10-01 Dan Bernstein <mitz@apple.com>
@@ -26739,7 +80117,7 @@
2008-10-01 Evan Martin <evan@chromium.org>
Reviewed by Eric Seidel.
-
+
https://bugs.webkit.org/show_bug.cgi?id=20669
* css/makeprop.pl:
@@ -26759,7 +80137,7 @@
- fix an assertion failure in http/tests/security/canvas-remote-read-svg-image.html due to re-entry into Cache::pruneDeadResources()
* loader/Cache.cpp:
- (WebCore::Cache::remove): Disable pruning temporarily during
+ (WebCore::Cache::remove): Disable pruning temporarily during
CachedResource deletion.
2008-10-01 Dan Bernstein <mitz@apple.com>
@@ -26899,9 +80277,9 @@
2008-10-01 David Hyatt <hyatt@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=21282
-
+
Make contentsToScreen/screenToContents cross-platform. Only implemented by Mac/Win right now.
-
+
Reviewed by Adam Roben
* loader/EmptyClients.h:
@@ -27113,7 +80491,7 @@
Reviewed by Sam Weinig.
- fix HTMLViewSourceDocument leaks by breaking a ref cycle which
- was fixed in r17249 and re-introduced in r31435.
+ was fixed in r17249 and re-introduced in r31435.
* html/HTMLViewSourceDocument.cpp:
(WebCore::HTMLViewSourceDocument::HTMLViewSourceDocument):
@@ -27129,7 +80507,7 @@
More for https://bugs.webkit.org/show_bug.cgi?id=21122
Autogenerate JS event listeners
- - Make EventListener getter/setters names in c++ files match those in
+ - Make EventListener getter/setters names in c++ files match those in
JS (ie. onLoadListener -> onload).
- Add standard way to access the frame associated with the EventTarget
for EventListener lookup.
@@ -27319,12 +80697,12 @@
Reviewed by Darin Adler.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=20396 Abort caused
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=20396 Abort caused
by failed allocation due to invalid counter/attr
and corresponding: <rdar://problem/6152371>
* css/CSSParser.cpp:
- (WebCore::CSSParser::parseCounterContent): The spec indicates that
+ (WebCore::CSSParser::parseCounterContent): The spec indicates that
only identifiers should be accepted here.
2008-09-30 Kevin McCullough <kmccullough@apple.com>
@@ -27358,7 +80736,7 @@
(3) Used on Qt, but implemented incorrectly to cause a full repaint for no reason.
(4) Used on Gtk, but implemented incorrectly to cause a full repaint for no reason.
(5) Used on wx, but probably not needed (since wx has platform widgets like Mac).
-
+
There is now a paint method on HostWindow that does an immediate mode repaint of an empty rect to
cause the display/flush to happen if needed (thus saving an extra method on ChromeClient).
With the changes to this method, the new behavior is as follows:
@@ -27367,10 +80745,10 @@
(3) Nothing happens on Qt, but only because they have not implemented immediate mode updating.
(4) Gtk now behaves like Windows and will process updates but not do any incorrect additional invalidation.
(5) Not used on wx
-
+
This method was originally added for Windows. It's not clear the display/flush is really even necessary on the other
platforms. At the very least stopping unnecessary full invalidations on Qt/Gtk is a good thing. :)
-
+
Reviewed by Sam Weinig
* ChangeLog:
@@ -27441,7 +80819,7 @@
2008-09-30 Dave Hyatt <hyatt@apple.com>
http://bugs.webkit.org/show_bug.cgi?id=21250
-
+
Rename updateContents to repaintContentRectangle and make it cross-platform by always sending
repaints up through the ChromeClient.
@@ -27656,8 +81034,8 @@
Reviewed by Anders Carlsson.
- * bridge/npapi.h: Tweaked NPNVariable enum. NPNVsupportsCocoaBool, NPNVsupportsCarbonBool are now in the 3000 range instead of
- 2000.
+ * bridge/npapi.h: Tweaked NPNVariable enum. NPNVsupportsCocoaBool, NPNVsupportsCarbonBool are now in the 3000 range instead of
+ 2000.
2008-09-29 Dan Bernstein <mitz@apple.com>
@@ -27750,7 +81128,7 @@
Reviewed by Anders Carlsson
- Fix RenderStyle leak in animation code, and assert that
+ Fix RenderStyle leak in animation code, and assert that
keyframe resolution in CSSStyleSelector is not going to clobber
m_style.
@@ -27765,7 +81143,7 @@
Fixed https://bugs.webkit.org/show_bug.cgi?id=20995
Rewrite keyframe resolution to be like styleForElement()
-
+
Test: animations/lineheight-animation.html
* css/CSSStyleSelector.cpp:
@@ -27817,7 +81195,7 @@
Clean up fix in PropertyWrapperGetter::equals
https://bugs.webkit.org/show_bug.cgi?id=21011
-
+
Test: transitions/override-transition-crash.html
* page/animation/AnimationBase.cpp:
@@ -28412,10 +81790,10 @@
fix https://bugs.webkit.org/show_bug.cgi?id=20994
<rdar://problem/6171023> HTMLVideoElement width and height attributes are now unsigned
-
+
HTML5 spec says HTMLVideoElement width and height attributes should be unsigned. Convert
all unsigned media attributes from string with toUInt() instead of toInt().
-
+
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::playCount): convert from attribute with toUInt().
@@ -28466,7 +81844,7 @@
There was a lot wrong with 17589, so more patches will be coming to deal with the fallout of this patch
(which should never have landed in the first place).
-
+
Reviewed by Tim Hatcher, Sam Weinig
* platform/win/ScrollViewWin.cpp:
@@ -29231,7 +82609,7 @@
Reviewed by Antti
https://bugs.webkit.org/show_bug.cgi?id=21116
- <rdar://problem/5726325> Audio from <video> can still be heard after navigating
+ <rdar://problem/5726325> Audio from <video> can still be heard after navigating
back to page with <video>, then closing tab
Rename willSaveToCache/didRestoreFromCache callbacks to documentWillBecomeInactive/
@@ -29328,8 +82706,8 @@
The solution to this is to make sure we cache these constructors
in the same way as all the other DOM constructors. To achieve this
without causing any refcount cycles it is necessary to replace the
- refcounted document pointer in the Image, MessageChannel, Option,
- XMLHttpRequest, and Audio constructor objects with a reference to
+ refcounted document pointer in the Image, MessageChannel, Option,
+ XMLHttpRequest, and Audio constructor objects with a reference to
the document's JS wrapper.
Tests: fast/dom/constructors-cached-navigate.html
@@ -29422,7 +82800,7 @@
2008-09-25 David Hyatt <hyatt@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=21133
-
+
Rename resizeContents method on ScrollView to setContentsSize (to match contentsSize()). Make it
cross-platform.
@@ -29617,15 +82995,15 @@
2008-09-25 David Smith <catfish.man@gmail.com>
Reviewed by Darin Adler.
-
+
https://bugs.webkit.org/show_bug.cgi?id=20980
Split off uncommonly used data from Node similar to ElementRareData
-
+
Saves an OwnPtr and a short on Node, as well as providing room for an isContainer bit,
which in turn allows inlining firstChild(), lastChild(), childNodeCount(), and childNode()
for a 5-10+% performance win on SlickSpeed and assorted speedups on other tests.
- * WebCore.base.exp:
+ * WebCore.base.exp:
* WebCore.xcodeproj/project.pbxproj:
* dom/ChildNodeList.cpp: Include ContainerNode to pick up its definitions for childNodeCount(), etc...
* dom/ContainerNode.cpp: Set isContainer to true
@@ -29636,7 +83014,7 @@
(WebCore::Node::containerFirstChild): ditto
(WebCore::Node::containerLastChild): ditto
* dom/Element.cpp: Most of the changes here are moving ElementRareData to ElementRareData.h and NodeRareData.h
- (WebCore::Element::Element):
+ (WebCore::Element::Element):
(WebCore::Element::~Element):
(WebCore::Element::rareData):
(WebCore::Element::ensureRareData): Renamed from createRareData
@@ -29807,9 +83185,9 @@
https://bugs.webkit.org/show_bug.cgi?id=21052
Generalize id selector special case for querySelectorAll
-
+
By checking the element we get with getElementById against the selector, we can use the special case in many more circumstances.
- Changes results on http://native.khan.mozilla.org
+ Changes results on http://native.khan.mozilla.org
from
#title: 2ms
h1#title: 55ms
@@ -29819,7 +83197,7 @@
#title: 1ms
h1#title: 2ms
div #title: 5ms
-
+
* dom/Node.cpp:
(WebCore::Node::querySelector):
* dom/SelectorNodeList.cpp:
@@ -29983,7 +83361,7 @@
2008-09-25 Eric Carlson <eric.carlson@apple.com>
Reviewed by Eric Seidel.
-
+
<rdar://problem/6171047> HTMLMediaElement "begin" event is now "loadstart"
https://bugs.webkit.org/show_bug.cgi?id=21003
@@ -30120,10 +83498,10 @@
2008-09-25 David Smith <catfish.man@gmail.com>
Reviewed by Eric Seidel
-
+
fix https://bugs.webkit.org/show_bug.cgi?id=21091
Regression: querySelector matches tag names case sensitively
-
+
Tests: fast/dom/SelectorAPI/caseTag.html
fast/dom/SelectorAPI/caseTagX.xhtml
@@ -30210,7 +83588,7 @@
Reviewed by Dan Bernstein.
Test: editing/spelling/inline_spelling_markers.html
-
+
- https://bugs.webkit.org/show_bug.cgi?id=20092
Spelling markers positioned incorrectly in RTL text
@@ -30861,7 +84239,7 @@
Fix for bug 21012. The Aqua scrollbar was returning the wrong track rect on Windows Aqua theme. Make
sure to not accidentally fall into the vertical scrollbar case for horizontal scrollbars. :)
-
+
Reviewed by Sam Weinig
* platform/mac/ScrollbarThemeMac.mm:
@@ -30874,11 +84252,11 @@
Reviewed by Sam Weinig.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=21041 "Add Contact"
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=21041 "Add Contact"
link at gmail does not support AXPress action
and corresponding: <rdar://problem/6216178>
- I fixed this bug by making AccessibilityObject::anchorElement
+ I fixed this bug by making AccessibilityObject::anchorElement
support ARIA links.
* page/AccessibilityImageMapLink.cpp:
@@ -30903,7 +84281,7 @@
Bug 20949: Catch repeated messages in Inspector Controller to limit
memory usage
- - Store the repeat count in the Console Message object, in the
+ - Store the repeat count in the Console Message object, in the
Inspector Controller and JS ConsoleMessage object.
* page/InspectorController.cpp:
@@ -31090,7 +84468,7 @@
~2% speedup on EarleyBoyer
(WebCore updates.)
-
+
* bindings/js/JSQuarantinedObjectWrapper.h:
(WebCore::JSQuarantinedObjectWrapper::createStructureID):
@@ -31133,7 +84511,7 @@
2008-09-23 Eric Seidel <eric@webkit.org>
No review, build fix only.
-
+
Third time's the charm, eh? My local build is sadly still not done...
* platform/graphics/AffineTransform.cpp: remove extra &
@@ -31313,7 +84691,7 @@
transition end event when -webkit-transition-property: all puts wrong
propertyName in event
https://bugs.webkit.org/show_bug.cgi?id=20903
-
+
* page/animation/ImplicitAnimation.cpp:
(WebCore::ImplicitAnimation::sendTransitionEvent):
@@ -31378,7 +84756,7 @@
- speed up instanceof operator by replacing implementsHasInstance method with a TypeInfo flag
Partial work towards <https://bugs.webkit.org/show_bug.cgi?id=20818>
-
+
2.2% speedup on EarleyBoyer benchmark.
* bindings/js/JSQuarantinedObjectWrapper.cpp:
@@ -31397,11 +84775,11 @@
Reviewed by Dave Hyatt.
Based on initial work by Darin Adler.
-
+
- replace masqueradesAsUndefined virtual method with a flag in TypeInfo
- use this to JIT inline code for eq_null and neq_null
https://bugs.webkit.org/show_bug.cgi?id=20823
-
+
* WebCore.xcodeproj/project.pbxproj:
* WebCore.vcproj/WebCore.vcproj:
* bindings/js/JSCSSStyleDeclarationCustom.cpp:
@@ -31526,7 +84904,7 @@
- introduce a TypeInfo class, for holding per-type (in the C++ class sense) date in StructureID
https://bugs.webkit.org/show_bug.cgi?id=20981
-
+
* bindings/js/JSAudioConstructor.cpp:
(WebCore::JSAudioConstructor::JSAudioConstructor):
* bindings/js/JSCSSStyleDeclarationCustom.cpp:
@@ -31589,7 +84967,7 @@
2008-09-21 Steve Falkenburg <sfalken@apple.com>
Removed unnecessary nested timer check.
-
+
Rubber-stamped by Dan Bernstein.
* platform/win/SharedTimerWin.cpp:
@@ -31599,14 +84977,14 @@
Improve timer resolution on WinXP.
https://bugs.webkit.org/show_bug.cgi?id=20979
-
+
Removed last-chance timer. It should not be necessary.
Change timeEndPeriod timer to fire in 300ms instead of 20ms. Calling timeBeginPeriod/timeEndPeriod too often throws off accuracy.
Remove Vista checks. We now run the same code on both XP and Vista.
-
+
Call through to JSC::getCurrentUTCTimeWithMicroseconds from WebCore::currentTime.
The code previously called GetSystemTimeAsFileTime, which is always low-resolution on XP, even within timeBeginPeriod(1).
-
+
Reviewed by Maciej Stachowiak.
* platform/win/SharedTimerWin.cpp:
@@ -31740,7 +85118,7 @@
Reviewed by Dan Bernstein.
Fix memory leak.
-
+
https://bugs.webkit.org/show_bug.cgi?id=20505
* platform/wx/wxcode/mac/carbon/fontprops.cpp:
@@ -32032,7 +85410,7 @@
2008-09-19 David Hyatt <hyatt@apple.com>
- Add support for hit testing of all five possible scrollbar button placements.
+ Add support for hit testing of all five possible scrollbar button placements.
Reviewed by Sam Weinig
@@ -32176,7 +85554,7 @@
Fix for <rdar://problem/6231308> crash in AutoTableLayout
- The code assumes later on that a TableSection's grid's row vector
+ The code assumes later on that a TableSection's grid's row vector
will never be empty. So make 1 the minimum number of columns.
* rendering/RenderTableSection.cpp:
@@ -32206,7 +85584,7 @@
2008-09-19 Steve Falkenburg <sfalken@apple.com>
Roll out r36626. It is causing variance in SunSpider numbers on XP.
-
+
Rubber stamped by Mark Rowe.
* platform/win/SharedTimerWin.cpp:
@@ -32436,7 +85814,7 @@
(WebCore::CoreTextController::CoreTextController): Added a
mayUseNaturalWritingDirection parameter.
(WebCore::CoreTextController::collectCoreTextRunsForCharacters): Changed
- to force the bidi embedding level whenever
+ to force the bidi embedding level whenever
m_mayUseNaturalWritingDirectrion is false. Since this is now a common
case, made the typesetter options dictionaries static.
* platform/graphics/mac/CoreTextController.h:
@@ -32494,7 +85872,7 @@
<rdar://problem/6213171> WebKit should use new array-centric methods for AX performance
- Implement a few AX API methods that will be called by AppKit, which will
+ Implement a few AX API methods that will be called by AppKit, which will
speed up access to accessibility objects
* page/mac/AccessibilityObjectWrapper.mm:
@@ -32744,7 +86122,7 @@
https://bugs.webkit.org/show_bug.cgi?id=20690
Invoke WebCore::prefetchDNS() on host names that appear in
- in the href of hyperlinks and <link rel="dns-prefetch">. This
+ in the href of hyperlinks and <link rel="dns-prefetch">. This
can be used to implement DNS prefetching.
* WebCore.vcproj/WebCore.vcproj:
@@ -33067,7 +86445,7 @@
Reviewed by Beth Dakin
- <rdar://problem/6224222> AX: should not expose a <table> as an AXTable if ARIA
+ <rdar://problem/6224222> AX: should not expose a <table> as an AXTable if ARIA
role specifies otherwise
If a <table> isn't an AXTable, the rows and cells should default to AccessibilityRenderObject
@@ -33094,7 +86472,7 @@
2008-09-18 Steve Falkenburg <sfalken@apple.com>
Use higher-resolution timers on all variants of Windows.
-
+
Reviewed by Darin Adler.
* platform/win/SharedTimerWin.cpp:
@@ -33133,17 +86511,17 @@
Reviewed by Dave Hyatt.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=20515 Crash upon
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=20515 Crash upon
parsing CSS: unicode-range: searchfield-cancel-buttonpt=-webkit-
dashboard-region=
and corresponding: <rdar://problem/6174100>
- This patch makes CSSParserValue::createCSSValue handle unknown
+ This patch makes CSSParserValue::createCSSValue handle unknown
identifiers.
* css/CSSParserValues.cpp:
- (WebCore::CSSParserValue::createCSSValue): If we have an identifier
- with no id (an unknown identifier) create a CSSPrimitiveValue of
+ (WebCore::CSSParserValue::createCSSValue): If we have an identifier
+ with no id (an unknown identifier) create a CSSPrimitiveValue of
type CSS_PARSER_IDENTIFIER
* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::cssText):
@@ -33332,7 +86710,7 @@
<rdar://problem/5722310> gracefully handle too many console messages
(20904)
- - Keep track of the most previous message and then compare it to the
+ - Keep track of the most previous message and then compare it to the
subsequent messages as they come in. If there are multiple of the same
message create a count that indicates the current number.
@@ -33424,7 +86802,7 @@
Rubber-stamped with love by David Hyatt.
- Split IdentityTransformOperation, MatrixTransformOperation, RotateTransformOperation,
+ Split IdentityTransformOperation, MatrixTransformOperation, RotateTransformOperation,
ScaleTransformOperation, SkewTransformOperation, StyleTransformData, TransformOperation,
TransformOperations and TranslateTransformOperation out of RenderStyle.h/cpp
@@ -33640,7 +87018,7 @@
2008-09-17 Steve Falkenburg <sfalken@apple.com>
Add back isFrameView check to fix failed assertion during scroll bar teardown.
-
+
Reviewed by Dave Hyatt.
* platform/Scrollbar.cpp:
@@ -33719,7 +87097,7 @@
This is a better fix for: Invalid CSS code crashes Safari
https://bugs.webkit.org/show_bug.cgi?id=20512
- The spec indicates that the only valid input for a counter is a
+ The spec indicates that the only valid input for a counter is a
number or an identifier. So that is exactly what we allow.
* css/CSSParser.cpp:
@@ -33742,7 +87120,7 @@
Reviewed by Adele Peterson.
- Patch for <rdar://problem/6133884>
+ Patch for <rdar://problem/6133884>
Calling window.resizeTo() on a subframe shouldn't change the window size
Test: fast/dom/Window/window-resize-and-move-sub-frame.html
@@ -33757,13 +87135,13 @@
Reviewed by Adam Roben.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=20512 Invalid CSS
- code crashes Safari
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=20512 Invalid CSS
+ code crashes Safari
and corresponding: <rdar://problem/6173832>
- Reading through the spec, it seems like a function is not valid
- input for a counter. So this patch checks for that and bails in the
- case of invalid input.
+ Reading through the spec, it seems like a function is not valid
+ input for a counter. So this patch checks for that and bails in the
+ case of invalid input.
* css/CSSParser.cpp:
(WebCore::CSSParser::parseCounterContent):
@@ -33772,9 +87150,9 @@
Reviewed by Antti Koivisto.
- Fix <rdar://problem/6227089>
+ Fix <rdar://problem/6227089>
Crash in WebCore::Frame::setNeedsReapplyStyles()
-
+
View is null checked elsewhere too.
* page/Frame.cpp:
@@ -34317,7 +87695,7 @@
Convert Qt over to its ScrollbarTheme. Add cross-platform support for jumping the thumb location directly
to a pressed location on the track (this is done with the middle mouse on Qt and with Shift-Click on Windows).
-
+
Reviewed by Sam Weinig
* platform/ScrollBar.cpp:
@@ -34360,9 +87738,9 @@
2008-09-15 David Smith <catfish.man@gmail.com>
Reviewed by Sam Weinig.
-
+
https://bugs.webkit.org/show_bug.cgi?id=20180
-
+
Cache the result of parsing the an+b expression in :nth-child(an+b). Roughly a 2x speedup for :nth-child on SlickSpeed.
* GNUmakefile.am: Add CSSNthSelector
@@ -34412,10 +87790,10 @@
Completely switch Windows scrollbars over to ScrollbarTheme. The Aqua windows scrollbar and native scrollbar
now share most of their code.
-
+
Also removing mini size scrollbar support, since it would have crashed Windows had it ever been used, and it
also is never used in our code anyway.
-
+
Reviewed by Sam Weinig
* WebCore.vcproj/WebCore.vcproj:
@@ -34460,7 +87838,7 @@
Lists are now exposed through AX. On the mac (in SnowLeopard) they use two new subroles
AXContentList for <ul>, <ol> and AXDefinitionList for <dl>
- Inside the definition list, each <dt> "term" has an accessibility description ("term"),
+ Inside the definition list, each <dt> "term" has an accessibility description ("term"),
as does each <dd> tag ("definition")
Test: accessibility/lists.html
@@ -34648,7 +88026,7 @@
Convert PlatformScrollbarWin to use ScrollbarTheme for hit testing. PlatformScrollbarQt/Gtk still
need to be converted.
-
+
Reviewed by Sam Weinig
* platform/ScrollBar.cpp:
@@ -34836,12 +88214,12 @@
Reviewed by Maciej.
- <rdar://problem/6163988>
+ <rdar://problem/6163988>
https://bugs.webkit.org/show_bug.cgi?id=20457
Canvas: createPattern crashes WebKit in WTF::RefPtr<WebCore::Image>::operator!() const + 9 with a 1D pattern
-
+
Check the width and height and throw an exception if any of them are 0.
-
+
* html/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::createPattern):
@@ -34896,11 +88274,11 @@
Reviewed by Dave Hyatt.
https://bugs.webkit.org/show_bug.cgi?id=20180
-
+
>2x speedup on querySelector[All] with :nth-child by removing the collectRulesOnly argument on SelectorChecker.
With collectRulesOnly set to true (the default) an optimization is turned off, and no callers were intentionally leaving it true.
querySelector[All] assumed that the default was probably the right way to go, and so ended up being slow.
-
+
* css/CSSStyleSelector.cpp:
(WebCore::CSSStyleSelector::CSSStyleSelector):
(WebCore::CSSStyleSelector::SelectorChecker::SelectorChecker):
@@ -34910,7 +88288,7 @@
Refactor PlatformScrollbarWin's painting so that it is now done by ScrollbarThemeWin. PlatformScrollbarSafari
is still painting itself (a subsequent patch will move its painting into ScrollbarThemeSafari).
-
+
Reviewed by Sam Weinig
* platform/ScrollBar.h:
@@ -35020,7 +88398,7 @@
Add a new ScrollbarThemeComposite base class that is shared by ScrollbarThemeSafari and
ScrollbarThemeWin. Any scrollbar that wants to render by ScrollbarPart can subclass from this
theme.
-
+
Reviewed by Sam Weinig
* WebCore.vcproj/WebCore.vcproj:
@@ -35190,7 +88568,7 @@
Remove scrollbar's setRect method. Clients can now just call setFrameGeometry (the corresponding Widget) method
to set the dimensions of a scrollbar.
-
+
Reviewed by Sam Weinig
* platform/ScrollBar.h:
@@ -35225,7 +88603,7 @@
2008-09-13 Dave Hyatt <hyatt@apple.com>
Remove setEnabled() from all Scrollbar classes that were just using their Widget base class methods.
-
+
Reviewed by Sam Weinig
* platform/ScrollBar.h:
@@ -35302,17 +88680,17 @@
(WebCore::FontCache::getLastResortFallbackFont): Removed an outdated
comment (the user's preferred standard font is included in the search
thanks to code in FontCache::getFontData()) and changed to return the
- LastResort font.
+ LastResort font.
2008-09-13 Dave Hyatt <hyatt@apple.com>
This patch adds ScrollbarTheme to the build. ScrollbarTheme is similar to RenderTheme (but for
scrollbars only). For now ScrollbarTheme just handles returning the size of scrollbars. Subsequent
patches will move rendering and hit testing functionality into this class.
-
+
Implemented ScrollbarTheme subclasses for four ports (Mac, Win, Gtk, Qt). The wxWidgets port does not
implement scrollbars yet, so I added a temporary link stub to keep things compiling on wx.
-
+
Reviewed by Sam Weinig
* GNUmakefile.am:
@@ -35414,7 +88792,7 @@
Move the member variables of PlatformScrollbar up into Scrollbar. Move autoscroll timer handling
up into scrollbar. Make sure a bunch of cross-platform code now just uses "Scrollbar" instead of
"PlatformScrollbar."
-
+
Reviewed by Sam Weinig
* WebCore.vcproj/WebCore.vcproj:
@@ -35535,7 +88913,7 @@
* page/EventHandler.cpp: (WebCore::EventHandler::hitTestResultAtPoint):
Hit testing again on the main frame will only work if we aren't already on the main frame. If we are already on the main frame, that will
- cause infinite recursion. This change checks that we're not already on the main frame before hit testing again.
+ cause infinite recursion. This change checks that we're not already on the main frame before hit testing again.
2008-09-12 Kevin McCullough <kmccullough@apple.com>
@@ -35586,7 +88964,7 @@
Preparation for major scrollbar rearchitecture. Eliminate the concept of non-widget based
scrollbars (which we never supported anyway). Make Scrollbar derive from Widget directly.
Remove all the isWidget and hasPlatformScrollbars guards.
-
+
Reviewed by Tim Hatcher
* platform/ScrollBar.h:
@@ -35709,7 +89087,7 @@
Reviewed by Darin
https://bugs.webkit.org/show_bug.cgi?id=20180
-
+
This speeds up :nth-child matching as tested by querySelectorAll by around 10% by inlining the common case of Node::renderStyle(). Many thanks to mitzpettel and othermaciej for suggestions and help.
* WebCore.xcodeproj/project.pbxproj: Add NodeRenderStyle.h
@@ -35843,7 +89221,7 @@
2008-09-09 Dave Hyatt <hyatt@apple.com
Resurrect PlatformScrollbarWin.
-
+
Reviewed by Adam Roben
* WebCore.vcproj/WebCore.vcproj:
@@ -35928,7 +89306,7 @@
Make the Windows classic case work again. Overlap in slider constants and other constants broke
the push state for buttons and checkboxes. Make sure to check the RenderObject's appearance
value to make sure it's really a slider thumb to resolve this conflict.
-
+
Reviewed by Adam Roben
* rendering/RenderThemeWin.cpp:
@@ -35953,11 +89331,11 @@
RenderThemeWin that does not have any Skia dependencies should provide a good basis for a potential
merge of Google Chrome's RenderThemeWin (to help us see where the Skia stuff can be cut and to see
what changes have been made as compared with the old RenderThemeWin).
-
+
Fix CSS2 system fonts to properly set both the rendering mode (so that they properly pick up GDI vs. CG
text rendering modes) and the printer font setting (so that OS X system fonts properly pick up screen
vs. printer advancement rounding).
-
+
Reviewed by Adam/Sam
* css/CSSStyleSelector.cpp:
@@ -36074,7 +89452,7 @@
Reviewed by Alexey Proskuryakov.
- Try MIME charset names before trying IANA names
+ Try MIME charset names before trying IANA names
( https://bugs.webkit.org/show_bug.cgi?id=17537 )
With this change, shorter and more widely used names (preferred MIME
@@ -36082,8 +89460,8 @@
document.inputEncoding rather than IANA names. This helps
fixing bug 18085 in addition to web developers who are more familiar
with MIME names. For instance, EUC-JP, ISO-8859-X and US-ASCII will be
- returned instead of Extended_UNIX_Code_Packed_Format_for_Japanese,
- ISO-8859-X:19xx, and ANSI_X3.4-1968. It also replaces IBM8xx with cp8xx.
+ returned instead of Extended_UNIX_Code_Packed_Format_for_Japanese,
+ ISO-8859-X:19xx, and ANSI_X3.4-1968. It also replaces IBM8xx with cp8xx.
Note that cp/IBM 8xx are extremly rare in today's web. Even if they're
used, the former is still recognized as aliases to the latter so that
there's very little, if any, to worry about.
@@ -36187,12 +89565,12 @@
Reviewed by Maciej.
<rdar://problem/5850387> Showing bookmarks reloads Google Reader instead.
-
+
In some cases, timeouts scheduled by a page in the onunload handler could fire even when the
page had been unloaded and replaced by a non-HTML representation based view (such as the bookmarks view).
-
+
Fix this by clearing timeouts for pages that aren't cached when the provisional load is committed.
-
+
* bindings/js/JSDOMWindowBase.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::commitProvisionalLoad):
@@ -36699,7 +90077,7 @@
(WebCore::): Added NodeMessageLevel.
* page/Console.idl: Added console.dirxml.
* page/inspector/Console.js: A NodeMessage creates a ElementsTreeOutline.
- * page/inspector/ElementsPanel.js: Modified to use ElementsTreeOutline. The ElementsTreeOutline
+ * page/inspector/ElementsPanel.js: Modified to use ElementsTreeOutline. The ElementsTreeOutline
in the ElementsPanel has includeRootDOMNode and selectEnabled set to true.
* page/inspector/ElementsTreeOutline.js: Added.
(WebInspector.ElementsTreeOutline): A subclass of TreeOutline for displaying a DOM node tree.
@@ -36760,19 +90138,19 @@
Reviewed by Dave Hyatt.
- <rdar://problem/6187043>
+ <rdar://problem/6187043>
Don't parse full HTML user agent style sheet unless it is actually needed
- <rdar://problem/6131889>
+ <rdar://problem/6131889>
WebView is significantly more expensive to create recently
-
+
Parsing the html4.css takes significant amount of time and memory (~50kb) on application
startup. Some clients may never use most of the rules.
-
- With this patch we use simplified UA stylesheet until we hit something it can't handle.
+
+ With this patch we use simplified UA stylesheet until we hit something it can't handle.
This avoids full stylesheet parsing on application startup (due to empty document construction)
- and also makes it possible for clients with very simple demands (divs and spans only) never to load
+ and also makes it possible for clients with very simple demands (divs and spans only) never to load
the full style.
-
+
It also delays view source style parsing until it is used.
* css/CSSStyleSelector.cpp:
@@ -36806,7 +90184,7 @@
Fix <rdar://problem/6201644>
https://bugs.webkit.org/show_bug.cgi?id=20493
Crash after OK in dialog box and reloading page in secure mode
-
+
Limited loader only fix since the general timer fix is causing problems on Windows.
* loader/loader.cpp:
@@ -36990,7 +90368,7 @@
2008-09-05 Antti Koivisto <antti@apple.com>
Build fixes.
-
+
* WebCore.xcodeproj/project.pbxproj:
* svg/graphics/filters/SVGFEImage.cpp:
(WebCore::FEImage::cachedImage):
@@ -37005,17 +90383,17 @@
Implement HTTP 1.1 "Specific end-to-end revalidation" for WebCore memory cache. This patch does
not yet enable it for the biggest use case, reloading. However it is good for general browsing as
well. Doing this in WebCore level as opposed to relying on disk cache has big benefit that
- we avoid re-decoding resources, especially images.
-
+ we avoid re-decoding resources, especially images.
+
To be exact the enabled case is not actually the "Specific end-to-end revalidation" since it does not include
CacheControl: max-age=0 header. That would be added in reload case.
-
+
The approach for revalidation is to kick the original resource out from the memory cache
and create a new CachedResource that represents the revalidation request. In case
- we get 304 back for the request we put the original resource back to the cache, update
+ we get 304 back for the request we put the original resource back to the cache, update
its expiration date and switch the clients registered to revalidation resource to be
clients of the original resource.
-
+
All heap allocated CachedImage pointers now use CachedResourceHandle<CachedImage> (and so on) instead.
This allows updating the handles to point to the original resource when the revalidation succeeds. It
also acts as refcounting smart pointer.
@@ -37115,10 +90493,10 @@
<rdar://problem/6180236> - Safari times out connections after 1 or 2 minutes
- A 60-second default timeout was added in http://trac.webkit.org/changeset/17144 in an attempt
- to model default NSURLRequest behavior in a cross-platform manner.
+ A 60-second default timeout was added in http://trac.webkit.org/changeset/17144 in an attempt
+ to model default NSURLRequest behavior in a cross-platform manner.
- Sadly by always enforcing this 60 second timeout, WebCore was stomping over the wishes of any Webkit
+ Sadly by always enforcing this 60 second timeout, WebCore was stomping over the wishes of any Webkit
client that wished to enforce a much larger default timeout using NSURLRequest API.
Additionally, upon reviewing what all other browsers do, it seems apparent that "no limit" is desirable
@@ -37134,7 +90512,7 @@
(WebCore::ResourceRequestBase::ResourceRequestBase): Rename the constant to "unspecifiedTimeoutInterval"
and make it UINT_MAX so platforms that do set it have an effective "no timeout." (Windows, for example)
* platform/network/mac/ResourceRequestMac.mm:
- (WebCore::ResourceRequest::doUpdatePlatformRequest): If the timeout for this request is
+ (WebCore::ResourceRequest::doUpdatePlatformRequest): If the timeout for this request is
"unspecifiedTimeoutInterval", then don't bother setting the timeout using NSURLRequest API, allowing
WebKit applications to enforce their own default timeout.
@@ -37148,7 +90526,7 @@
* rendering/RenderButton.cpp:
(WebCore::RenderButton::setStyle): Reset the inner block's style box
- flex to 0 to avoid getting a spurious layout hint.
+ flex to 0 to avoid getting a spurious layout hint.
2008-09-04 Kevin Ollivier <kevino@theolliviers.com>
@@ -37277,11 +90655,11 @@
Reviewed by Simon.
Re-enable support for user stylesheets in QtWebKit
-
+
QtWebKit now follows the FRAME_LOADS_USER_STYLESHEET
code path, which allows us to keep API support for
loading user style sheets from remote URLs.
-
+
As part of the change UserStyleSheetLoader.cpp/h was
moved from WebCore/loader/mac to WebCore/loader.
@@ -37452,7 +90830,7 @@
Remove the rest of the "zombie" code from the profiler.
- There is no longer a need for the ProfilerClient callback mechanism.
- * page/Console.cpp:
+ * page/Console.cpp:
(WebCore::Console::Console):
(WebCore::Console::profile):
(WebCore::Console::profileEnd): Move the variables from the header to
@@ -37695,7 +91073,7 @@
style="color:#gray;" would apply the color gray when it should not.
In the bison template, "hexcolor" was defined as both "HEX maybe_space" OR "IDENT maybe_space".
- This caused identifiers not fitting the appropriate hex format but preceded by a '#' to be
+ This caused identifiers not fitting the appropriate hex format but preceded by a '#' to be
interpreted as a valid color (CSSPrimitiveValue::CSS_PARSER_HEXCOLOR), when it was really just
an ignorable token.
@@ -37795,7 +91173,7 @@
AnimationController.cpp should be split into separate files
https://bugs.webkit.org/show_bug.cgi?id=20604
-
+
Note: All makefiles, except WebCore.xcodeproj have been changed without testing, upon
recommendation of Dave Hyatt.
@@ -37805,7 +91183,7 @@
* WebCore.xcodeproj/project.pbxproj:
* WebCoreSources.bkl:
Build files.
-
+
* page/AnimationController.cpp: Removed.
* page/AnimationController.h: Removed.
* page/animation: Added.
@@ -38125,16 +91503,16 @@
Fix for <rdar://problem/6181588>
- This patch makes hit testing take into account the new concept of a
- disconnected frame, in which some of the content may not be
- visible. The current hit testing mechanism starts at a target frame
- and drills down for a HitTestResult. In some cases, drilling down
- will find a non-visible result. When this happens, we need to try
- again, starting at a higher level -- namely, starting at the main
+ This patch makes hit testing take into account the new concept of a
+ disconnected frame, in which some of the content may not be
+ visible. The current hit testing mechanism starts at a target frame
+ and drills down for a HitTestResult. In some cases, drilling down
+ will find a non-visible result. When this happens, we need to try
+ again, starting at a higher level -- namely, starting at the main
frame.
* editing/Editor.cpp:
- (WebCore::Editor::insideVisibleArea): New function that tests if a
+ (WebCore::Editor::insideVisibleArea): New function that tests if a
point is inside the visible area for a disconnected frame.
* editing/Editor.h:
* page/EventHandler.cpp:
@@ -38142,7 +91520,7 @@
2008-08-29 Adele Peterson <adele@apple.com>
- Reviewed by Adam Roben.
+ Reviewed by Adam Roben.
Rename HTMLTextFieldInnerElement.h/.cpp to TextControlInnerElements.h/.cpp
@@ -38186,7 +91564,7 @@
Fix GeneratedImage to respect Image's refcounting
Fixing potential crashers (future if not current)
https://bugs.webkit.org/show_bug.cgi?id=20567
-
+
I don't know if it's possible to make the current code
crash, thus I've not made a test.
@@ -38222,9 +91600,9 @@
Fix for https://bugs.webkit.org/show_bug.cgi?id=20525
<rdar://problem/6169301>
-
+
Return the size of the movie data instead of 1000.
-
+
Test: media/progress-event-total.html
* platform/graphics/win/QTMovieWin.cpp:
@@ -38389,9 +91767,9 @@
Make all the 'isFoo()' methods on CSSValue const,
and fix the subclasses.
-
+
https://bugs.webkit.org/show_bug.cgi?id=20561
-
+
* css/CSSTimingFunctionValue.h:
* css/CSSValue.h:
(WebCore::CSSValue::isFontValue):
@@ -38486,9 +91864,9 @@
<rdar://problem/6182541>
https://bugs.webkit.org/show_bug.cgi?id=20202
Missing http status line from the http headers.
-
+
Add a status line to the header string.
-
+
* plugins/PluginStream.cpp:
(WebCore::PluginStream::startStream):
@@ -38573,12 +91951,12 @@
https://bugs.webkit.org/show_bug.cgi?id=20373
Changed pattern() to canvasPattern() on CanvasStyle to match canvasGradient()
-
+
Made Generator (aka Gradient) RefCounted so that GraphicsContext didn't
have to store large Gradient objects in the GraphicsContextState
-
+
Made Pattern RefCounted for the same reason.
-
+
Many updates to GraphicsContext to support easier drawing with
Patterns and Gradients.
@@ -38655,14 +92033,14 @@
Close a leak of PausedTimeouts if the JavaScriptDebugServer was destroyed
with timeouts paused.
https://bugs.webkit.org/show_bug.cgi?id=20469
-
+
I attempted to clean up the memory management of PausedTimeouts, I'm not
sure the solution I came up with is "cleaner", but it's in some ways
"safer", since it no longer uses raw pointers and manual new/delete.
-
+
This also now prevents CachedPage from needlessly creating Window
objects when caching pages which didn't already have one. :)
-
+
I also made Chrome.cpp no longer depend on the JavaScript bindings
(aka JSDOMWindowBase.h), since there was no real reason for it to.
@@ -38738,7 +92116,7 @@
2008-08-27 Mario Bensi <mbensi@pleyo.com>
Reviewed by Eric Seidel.
-
+
Fix the data content of an image with a base64.
* platform/network/curl/ResourceHandleManager.cpp:
@@ -38753,10 +92131,10 @@
Crash after OK in dialog box and reloading page in secure mode
https://bugs.webkit.org/show_bug.cgi?id=20493
-
- The new run loop spawned by a modal dialog causes a timer in the loader to run
+
+ The new run loop spawned by a modal dialog causes a timer in the loader to run
synchronously inside didFinishLoading() deleting "this" object.
-
+
Defer all WebCore timers when a modal dialog is up. They are not
safe to execute.
@@ -38958,7 +92336,7 @@
Reviewed by Darin Adler.
Change canvas tainting logic to ask the image if it contains
- any resources outside of its own origin. Since there is no
+ any resources outside of its own origin. Since there is no
way to determine if SVG images contain any resources outside its
origin, we always assume it does.
@@ -39086,8 +92464,8 @@
Reviewed by Mark.
<rdar://problem/6149787> crash @ com.apple.JavaScriptCore: WTF::callOnMainThread + 37.
-
- Initialize threading in the call to WebCoreObjCFinalizeOnMainThread. We currently assume
+
+ Initialize threading in the call to WebCoreObjCFinalizeOnMainThread. We currently assume
(safely) that any class that needs finalization on the main thread will also need to be deallocated
on the main thread, and calling initializeThreading from WebCoreObjCFinalizeOnMainThread instead of
calling it from WebCoreObjCScheduleDeallocateOnMainThread seems safer.
@@ -39138,7 +92516,7 @@
* ForwardingHeaders/VM: Added.
* ForwardingHeaders/VM/Machine.h: Added.
- * page/Console.cpp: Gather the line number and file information when
+ * page/Console.cpp: Gather the line number and file information when
profileEnd has been called, but don't use it until didFinishProfiling is
called. We won't need to wait once we remove the profiler "zombie" mode
which this patch helps pave the foundation for.
@@ -39179,21 +92557,21 @@
2008-08-24 Steve Falkenburg <sfalken@apple.com>
Add a "last chance" WM_TIMER to the Windows shared timer.
-
+
The last chance timer fires every 5 seconds to run any lost WM_TIMER based timers.
Failure to fire a timer is fatal to the cross-platform Timer code, since it won't re-schedule
timers if a timer with an earlier expiration is already pending. This results in no timers
firing from that point on.
-
+
We lose WM_TIMER messages occasionally (in the neighborhood of 1 per hour) probably due to a
buggy window message hook.
-
+
This timer will start when the first WM_TIMER is scheduled, and will
fire every 5 seconds thereafter, causing any lost timers to be fired.
-
+
Found this via one of its symptoms: leaking WebFrames. The fix prevents timers from stalling
and prevents the WebFrame leak.
-
+
Reviewed by Darin Adler, Geoff Garen.
* platform/win/SharedTimerWin.cpp:
@@ -39432,7 +92810,7 @@
Test: fast/events/autoscroll-nonscrollable-iframe-in-scrollable-div.html
https://bugs.webkit.org/show_bug.cgi?id=20451
-
+
rdar://problem/6166435 Inspector doesn't auto scroll when selecting text (20451)
When we climb up the rendering tree looking for a scrollable renderer, we need to be able to jump outside of an iframe.
This way we can see if what is embedding the iframe can be scrolled even if the iframe content can't.
@@ -39533,9 +92911,9 @@
Fix a race condition in Windows timer code.
Timer function could end up being called with a 0 timer, leading to a Windows exception.
-
+
Don't post a timer message if one is already pending.
-
+
Reviewed by Ada Chan.
* platform/win/SharedTimerWin.cpp:
@@ -39631,15 +93009,15 @@
<rdar://problem/6153432> - Many images broken in Mail
- This can be traced back to the preload scanner. With that change, CachedResources are created a lot
- sooner than before and confuse the WebArchive machinery.
+ This can be traced back to the preload scanner. With that change, CachedResources are created a lot
+ sooner than before and confuse the WebArchive machinery.
- When referencing WebArchive subresources directly through the WebKit API it is appropriate to ignore
- such CachedResources since they are placeholders and have not been submitted to the ResourceLoadDelegate
+ When referencing WebArchive subresources directly through the WebKit API it is appropriate to ignore
+ such CachedResources since they are placeholders and have not been submitted to the ResourceLoadDelegate
machinery and nothing is known about where the data will eventually come from.
* loader/DocumentLoader.cpp:
- (WebCore::DocumentLoader::subresource): Ignore a CachedResource if its preloadResult is
+ (WebCore::DocumentLoader::subresource): Ignore a CachedResource if its preloadResult is
CachedResource::PreloadReferenced.
2008-08-20 Holger Hans Peter Freyther <zecke@selfish.org>
@@ -39672,7 +93050,7 @@
getComputedStyle() for webkitTransform should return a transform
that does not have the transform origin baked into it.
https://bugs.webkit.org/show_bug.cgi?id=20464
-
+
Test: fast/css/getComputedStyle-transform.html
* css/CSSComputedStyleDeclaration.cpp:
@@ -39685,9 +93063,9 @@
Reviewed and landed by Anders.
- <rdar://problem/6163636>
+ <rdar://problem/6163636>
rename NPCocoaEvent's "event" struct to "data" (20446)
-
+
* bridge/npapi.h:
(_NPCocoaEvent::):
@@ -39695,38 +93073,38 @@
Reviewed by Darin Adler.
- Fix for <rdar://problem/6145626>
- This patch fixes a number of remaining problems getting
- disconnected frames to work correctly with markAllMatchesForText()
- and findString(). Details inline.
+ Fix for <rdar://problem/6145626>
+ This patch fixes a number of remaining problems getting
+ disconnected frames to work correctly with markAllMatchesForText()
+ and findString(). Details inline.
- This was a static helper function in Frame, but this patch requires
- the same functionality in Editor, so I just added it as a function
+ This was a static helper function in Frame, but this patch requires
+ the same functionality in Editor, so I just added it as a function
on Node.
* dom/Node.cpp:
(WebCore::Node::isInShadowTree):
* dom/Node.h:
* editing/Editor.cpp:
- (WebCore::Editor::insideVisibleArea): Returns false if
+ (WebCore::Editor::insideVisibleArea): Returns false if
excludeFromTextSearch() is true.
- In a normal (non-disconnected) frame, findString returns a range of
- the document node if the text is not found in the frame. I changed
- firstVisibleRange and lastVisibleRange to match that behavior when
+ In a normal (non-disconnected) frame, findString returns a range of
+ the document node if the text is not found in the frame. I changed
+ firstVisibleRange and lastVisibleRange to match that behavior when
the text is not found
(WebCore::Editor::firstVisibleRange):
(WebCore::Editor::lastVisibleRange):
- Here are the bulk of the changes in the patch. A lot of text was
- not being found in disconnected frames because I failed to account
- for all of the possible problems associated with shadow trees. That
+ Here are the bulk of the changes in the patch. A lot of text was
+ not being found in disconnected frames because I failed to account
+ for all of the possible problems associated with shadow trees. That
is fixed here.
(WebCore::Editor::nextVisibleRange):
* editing/Editor.h:
- excludeFromTextSearch() is new. It allows a WebKit client to mark a
- frame as not-text-searchable through SPI.
+ excludeFromTextSearch() is new. It allows a WebKit client to mark a
+ frame as not-text-searchable through SPI.
* WebCore.base.exp:
* page/Frame.cpp:
(WebCore::Frame::excludeFromTextSearch):
@@ -39736,8 +93114,8 @@
* page/FramePrivate.h:
(WebCore::Frame::findString):
- (WebCore::Frame::markAllMatchesForText): I kept running into an
- assertion failure in paining code because of the forced paint on
+ (WebCore::Frame::markAllMatchesForText): I kept running into an
+ assertion failure in paining code because of the forced paint on
empty visible rects.
2008-08-20 Timothy Hatcher <timothy@apple.com>
@@ -40042,7 +93420,7 @@
Reviewed by Beth Dakin.
<rdar://problem/4003764> Expose tables as AXTables
-
+
Tests: accessibility/table-attributes.html
accessibility/table-cell-spans.html
accessibility/table-cells.html
@@ -40404,7 +93782,7 @@
* rendering/RenderBox.h:
* rendering/RenderImage.cpp:
(WebCore::RenderImage::calcReplacedWidth):
- (WebCore::RenderImage::calcPrefWidths):
+ (WebCore::RenderImage::calcPrefWidths):
* rendering/RenderImage.h:
* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::calcPrefWidths):
@@ -40501,7 +93879,7 @@
2008-08-17 Geoffrey Garen <ggaren@apple.com>
Reviewed by Cameron Zwarich.
-
+
Updated project files to XCode 3.1.
* manual-tests/NPN_Invoke/NPN_Invoke.xcodeproj/project.pbxproj:
@@ -40511,10 +93889,10 @@
Reviewed by Cameron Zwarich.
Made room for a free word in JSCell.
-
+
Changed JSDOMWindowBase to store its auxiliary data in a subclass of
JSGlobalData, so the two could share a pointer.
-
+
Added a bunch of ASSERTs, to help catch over-sized objects.
2008-08-15 Mark Rowe <mrowe@apple.com>
@@ -40543,10 +93921,10 @@
Don't start preloading body resources before the head is complete. This prevents
body preloads from slowing down initial display when there is limited amount
of bandwidth available.
-
+
Works by queuing up found body preloads to DocLoader and only issuing them
after document has rendering.
-
+
With bandwidth capped to 300kbit/s this speeds up cnn.com initial display by ~25% or 5s
without affecting complete load time.
@@ -40581,7 +93959,7 @@
Some loader performance tweaks:
- Make stylesheets highest priority instead of scripts. We block script execution on stylesheets.
- Especially if a stylesheet @imports other stylesheets it is important to get them to the front of the queue
+ Especially if a stylesheet @imports other stylesheets it is important to get them to the front of the queue
to not delay rendering.
- Issue the first resource load for a host immediately even if the resource is low priority. TCP connection setup
can take long time when latency is high so it is good to get started early.
@@ -40874,7 +94252,7 @@
- fix <rdar://problem/5993323> REGRESSION (r34210): Apple.com favicon appears stretched/clipped
- * platform/graphics/BitmapImage.cpp:
+ * platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::BitmapImage): Added initialization of
m_hasUniformFrameSize.
(WebCore::BitmapImage::cacheFrame): Added code to get the size of the
@@ -40888,7 +94266,7 @@
* platform/graphics/ImageSource.h: Added frameSizeAtIndex().
* platform/graphics/cg/ImageCG.cpp:
(WebCore::BitmapImage::draw): Changed to use currentFrameSize(). This
- fixes the bug, which resulted from assuming that the frame being drawn
+ fixes the bug, which resulted from assuming that the frame being drawn
was the same size as the first frame.
* platform/graphics/cg/ImageSourceCG.cpp:
(WebCore::ImageSource::frameSizeAtIndex): Renamed size() to this and
@@ -41378,7 +94756,7 @@
Tests: media/video-source-type-params.html
* html/HTMLMediaElement.cpp:
- (WebCore::HTMLMediaElement::pickMedia): only pass the portion before the first ';'
+ (WebCore::HTMLMediaElement::pickMedia): only pass the portion before the first ';'
to isSupportedMediaMIMEType()
2008-08-13 Beth Dakin <bdakin@apple.com>
@@ -41387,21 +94765,21 @@
Fix for <rdar://problem/6141345>
- This patch refines findString and markAllMatchesForText functions'
- interactions with disconnected frames. They no longer rely on
- knowing where a range is relative to the visible region and work
+ This patch refines findString and markAllMatchesForText functions'
+ interactions with disconnected frames. They no longer rely on
+ knowing where a range is relative to the visible region and work
with disconnected frames that contain frames.
* editing/Editor.cpp:
- (WebCore::Editor::insideVisibleArea): Now returns a bool instead of
+ (WebCore::Editor::insideVisibleArea): Now returns a bool instead of
the visiblity enum.
- (WebCore::Editor::firstVisibleRange): This now returns the very
- first visible range in the document. It's no longer dependent on
+ (WebCore::Editor::firstVisibleRange): This now returns the very
+ first visible range in the document. It's no longer dependent on
searching forward.
- (WebCore::Editor::lastVisibleRange): This now returns the very last
- visible range in the document. It's no longer dependent on
+ (WebCore::Editor::lastVisibleRange): This now returns the very last
+ visible range in the document. It's no longer dependent on
searching backwards.
- (WebCore::Editor::nextVisibleRange): This returns the next visible
+ (WebCore::Editor::nextVisibleRange): This returns the next visible
range in the appropriate direction from the current range.
* editing/Editor.h:
* page/Frame.cpp:
@@ -41610,7 +94988,7 @@
2008-08-12 Nikolas Zimmermann <zimmermann@kde.org>
Reviewed by Dave.
-
+
Fixes: https://bugs.webkit.org/show_bug.cgi?id=19798
Masks are translated, and the mask images are swapped on the y-axis.
@@ -41851,7 +95229,7 @@
- Because console messages have group levels now, newly created messages
that do not specify the level lose their message since the number of
arguments is wrong.
-
+
* page/inspector/Console.js:
* page/inspector/Resource.js:
@@ -41940,7 +95318,7 @@
* html/HTMLElement.cpp:
* page/AnimationController.cpp:
do all the new event stuff
-
+
* html/HTMLAttributeNames.in:
the onwebkitanimation* and onwebkittransitionend attrs
diff --git a/src/3rdparty/webkit/WebCore/DerivedSources.cpp b/src/3rdparty/webkit/WebCore/DerivedSources.cpp
index f698913..3b8eeb1 100644
--- a/src/3rdparty/webkit/WebCore/DerivedSources.cpp
+++ b/src/3rdparty/webkit/WebCore/DerivedSources.cpp
@@ -32,6 +32,8 @@
#include "JSCanvasRenderingContext2D.cpp"
#include "JSCDATASection.cpp"
#include "JSCharacterData.cpp"
+#include "JSClientRect.cpp"
+#include "JSClientRectList.cpp"
#include "JSClipboard.cpp"
#include "JSComment.cpp"
#include "JSConsole.cpp"
@@ -67,7 +69,6 @@
#include "JSEntityReference.cpp"
#include "JSEvent.cpp"
#include "JSEventException.cpp"
-#include "JSEventTargetNode.cpp"
#include "JSFile.cpp"
#include "JSFileList.cpp"
#include "JSHistory.cpp"
@@ -312,8 +313,18 @@
#include "JSTreeWalker.cpp"
#include "JSUIEvent.cpp"
#include "JSVoidCallback.cpp"
+#include "JSWebKitAnimationEvent.cpp"
+#include "JSWebKitCSSKeyframeRule.cpp"
+#include "JSWebKitCSSKeyframesRule.cpp"
#include "JSWebKitCSSTransformValue.cpp"
+#include "JSWebKitCSSMatrix.cpp"
+#include "JSWebKitPoint.cpp"
+#include "JSWebKitTransitionEvent.cpp"
#include "JSWheelEvent.cpp"
+#include "JSWorker.cpp"
+#include "JSWorkerContext.cpp"
+#include "JSWorkerLocation.cpp"
+#include "JSWorkerNavigator.cpp"
#include "JSXMLHttpRequest.cpp"
#include "JSXMLHttpRequestException.cpp"
#include "JSXMLHttpRequestProgressEvent.cpp"
@@ -325,7 +336,6 @@
#include "JSXPathNSResolver.cpp"
#include "JSXPathResult.cpp"
#include "JSXSLTProcessor.cpp"
-#include "SVGElementFactory.cpp"
#include "UserAgentStyleSheetsData.cpp"
// On MSVC, including StaticConstructors.h causes all global objects not to be
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/Debugger.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/Debugger.h
index 69b7bae..e6cfede 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/Debugger.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/Debugger.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Debugger_h
+#define WebCore_FWD_Debugger_h
#include <JavaScriptCore/Debugger.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/DebuggerActivation.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/DebuggerActivation.h
new file mode 100644
index 0000000..c241bb7
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/DebuggerActivation.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_DebuggerActivation_h
+#define WebCore_FWD_DebuggerActivation_h
+#include <JavaScriptCore/DebuggerActivation.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/DebuggerCallFrame.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/DebuggerCallFrame.h
index 474fec0..4a23742 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/DebuggerCallFrame.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/debugger/DebuggerCallFrame.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_DebuggerCallFrame_h
+#define WebCore_FWD_DebuggerCallFrame_h
#include <JavaScriptCore/DebuggerCallFrame.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/interpreter/CallFrame.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/interpreter/CallFrame.h
index c8c60d4..8c3acee 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/interpreter/CallFrame.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/interpreter/CallFrame.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_CallFrame_h
+#define WebCore_FWD_CallFrame_h
#include <JavaScriptCore/CallFrame.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/interpreter/Interpreter.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/interpreter/Interpreter.h
index 175ddce..1235c21 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/interpreter/Interpreter.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/interpreter/Interpreter.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Interpreter_h
+#define WebCore_FWD_Interpreter_h
#include <JavaScriptCore/Interpreter.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/jit/JITCode.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/jit/JITCode.h
new file mode 100644
index 0000000..b996615
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/jit/JITCode.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_JITCode_h
+#define WebCore_FWD_JITCode_h
+#include <JavaScriptCore/JITCode.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/masm/X86Assembler.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/masm/X86Assembler.h
index e1f0b4d..2b7dd6c 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/masm/X86Assembler.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/masm/X86Assembler.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_X86Assembler_h
+#define WebCore_FWD_X86Assembler_h
#include <JavaScriptCore/X86Assembler.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/Parser.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/Parser.h
index 10a2775..863df59 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/Parser.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/Parser.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Parser_h
+#define WebCore_FWD_Parser_h
#include <JavaScriptCore/Parser.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/SourceCode.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/SourceCode.h
index 17a5069..0a1079b 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/SourceCode.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/SourceCode.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_SourceCode_h
+#define WebCore_FWD_SourceCode_h
#include <JavaScriptCore/SourceCode.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/SourceProvider.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/SourceProvider.h
index 487aae9..0eb078b 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/SourceProvider.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/SourceProvider.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_SourceProvider_h
+#define WebCore_FWD_SourceProvider_h
#include <JavaScriptCore/SourceProvider.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/pcre/pcre.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/pcre/pcre.h
index 47c0d3d..198acc9 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/pcre/pcre.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/pcre/pcre.h
@@ -1 +1,5 @@
+#ifndef WebCore_FWD_pcre_h
+#define WebCore_FWD_pcre_h
#include <JavaScriptCore/pcre.h>
+#endif
+
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/Profile.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/Profile.h
index b591262..d26bafd 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/Profile.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/Profile.h
@@ -1 +1,5 @@
+#ifndef WebCore_FWD_Profile_h
+#define WebCore_FWD_Profile_h
#include <JavaScriptCore/Profile.h>
+#endif
+
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/ProfileNode.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/ProfileNode.h
index 488449f..a19a07e 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/ProfileNode.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/ProfileNode.h
@@ -1 +1,5 @@
+#ifndef WebCore_FWD_ProfileNode_h
+#define WebCore_FWD_ProfileNode_h
#include <JavaScriptCore/ProfileNode.h>
+#endif
+
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/Profiler.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/Profiler.h
index 56c6e0e..06139ff 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/Profiler.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/profiler/Profiler.h
@@ -1 +1,5 @@
+#ifndef WebCore_FWD_Profiler_h
+#define WebCore_FWD_Profiler_h
#include <JavaScriptCore/Profiler.h>
+#endif
+
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ArgList.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ArgList.h
index 02955d4..ce334d4 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ArgList.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ArgList.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_ArgList_h
+#define WebCore_FWD_ArgList_h
#include <JavaScriptCore/ArgList.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ArrayPrototype.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ArrayPrototype.h
index 9719fb0..51b7996 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ArrayPrototype.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ArrayPrototype.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_ArrayPrototype_h
+#define WebCore_FWD_ArrayPrototype_h
#include <JavaScriptCore/ArrayPrototype.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/BooleanObject.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/BooleanObject.h
index 3cea7c6..49d6fc3 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/BooleanObject.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/BooleanObject.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_BooleanObject_h
+#define WebCore_FWD_BooleanObject_h
#include <JavaScriptCore/BooleanObject.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ByteArray.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ByteArray.h
deleted file mode 100644
index f4f40dc..0000000
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ByteArray.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/ByteArray.h>
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CallData.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CallData.h
index 15a6028..03ecef8 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CallData.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CallData.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_CallData_h
+#define WebCore_FWD_CallData_h
#include <JavaScriptCore/CallData.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Collector.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Collector.h
index 6d8b5cd..d133a27 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Collector.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Collector.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Collector_h
+#define WebCore_FWD_Collector_h
#include <JavaScriptCore/Collector.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CollectorHeapIterator.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CollectorHeapIterator.h
index 98166ab..fcfe26d 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CollectorHeapIterator.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CollectorHeapIterator.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_CollectorHeapIterator_h
+#define WebCore_FWD_CollectorHeapIterator_h
#include <JavaScriptCore/CollectorHeapIterator.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Completion.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Completion.h
index d6a081f..9dd6291 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Completion.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Completion.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Completion_h
+#define WebCore_FWD_Completion_h
#include <JavaScriptCore/Completion.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ConstructData.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ConstructData.h
index f8d3d3c..bd04e51 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ConstructData.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ConstructData.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_ConstructData_h
+#define WebCore_FWD_ConstructData_h
#include <JavaScriptCore/ConstructData.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/DateInstance.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/DateInstance.h
index 2429283..c75cfed 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/DateInstance.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/DateInstance.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_DateInstance_h
+#define WebCore_FWD_DateInstance_h
#include <JavaScriptCore/DateInstance.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/DateMath.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/DateMath.h
new file mode 100644
index 0000000..4135742
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/DateMath.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_DateMath_h
+#define WebCore_FWD_DateMath_h
+#include <JavaScriptCore/DateMath.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Error.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Error.h
index 4fbaabd..7ddeab1 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Error.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Error.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Error_h
+#define WebCore_FWD_Error_h
#include <JavaScriptCore/Error.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/FunctionConstructor.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/FunctionConstructor.h
index bc49dca..a1962ed 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/FunctionConstructor.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/FunctionConstructor.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_FunctionConstructor_h
+#define WebCore_FWD_FunctionConstructor_h
#include <JavaScriptCore/FunctionConstructor.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/FunctionPrototype.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/FunctionPrototype.h
index 3f71e8e..1db3b83 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/FunctionPrototype.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/FunctionPrototype.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_FunctionPrototype_h
+#define WebCore_FWD_FunctionPrototype_h
#include <JavaScriptCore/FunctionPrototype.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Identifier.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Identifier.h
index 5c925eb..63f1e42 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Identifier.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Identifier.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Identifier_h
+#define WebCore_FWD_Identifier_h
#include <JavaScriptCore/Identifier.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/InitializeThreading.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/InitializeThreading.h
index 835097b..bd4f735 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/InitializeThreading.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/InitializeThreading.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_InitializeThreadingn_h
+#define WebCore_FWD_InitializeThreading_h
#include <JavaScriptCore/InitializeThreading.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/InternalFunction.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/InternalFunction.h
index f447f78..78df9aa 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/InternalFunction.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/InternalFunction.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_InternalFunction_h
+#define WebCore_FWD_InternalFunction_h
#include <JavaScriptCore/InternalFunction.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSArray.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSArray.h
index 9d70688..5271c27 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSArray.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSArray.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_JSArray_h
+#define WebCore_FWD_JSArray_h
#include <JavaScriptCore/JSArray.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSByteArray.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSByteArray.h
index 9e13ace..ce5140f 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSByteArray.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSByteArray.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_JSByteArray_h
+#define WebCore_FWD_JSByteArray_h
#include <JavaScriptCore/JSByteArray.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSFunction.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSFunction.h
index 396407d..614b3da 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSFunction.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSFunction.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_JSFunction_h
+#define WebCore_FWD_JSFunction_h
#include <JavaScriptCore/JSFunction.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSGlobalData.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSGlobalData.h
index e5f143a..3f98c22 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSGlobalData.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSGlobalData.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_JSGlobalData_h
+#define WebCore_FWD_JSGlobalData_h
#include <JavaScriptCore/JSGlobalData.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSGlobalObject.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSGlobalObject.h
index 915d87a..47e78b2 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSGlobalObject.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSGlobalObject.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_JSGlobalObject_h
+#define WebCore_FWD_JSGlobalObject_h
#include <JavaScriptCore/JSGlobalObject.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSLock.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSLock.h
index 70ad81d..8e6a629 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSLock.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSLock.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_JSLock_h
+#define WebCore_FWD_JSLock_h
#include <JavaScriptCore/JSLock.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSNumberCell.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSNumberCell.h
index 3c68938..e8d3227 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSNumberCell.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSNumberCell.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_JSNumberCell_h
+#define WebCore_FWD_JSNumberCell_h
#include <JavaScriptCore/JSNumberCell.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSObject.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSObject.h
index 45133f3..6c79855 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSObject.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSObject.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_JSObject_h
+#define WebCore_FWD_JSObject_h
#include <JavaScriptCore/JSObject.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSString.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSString.h
index 195ed21..6409607 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSString.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSString.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_JSString_h
+#define WebCore_FWD_JSString_h
#include <JavaScriptCore/JSString.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSValue.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSValue.h
index ebbed6c..d4c21ca 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSValue.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSValue.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_JSValue_h
+#define WebCore_FWD_JSValue_h
#include <JavaScriptCore/JSValue.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Lookup.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Lookup.h
index 0622dca..99936d9 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Lookup.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Lookup.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Lookup_h
+#define WebCore_FWD_Lookup_h
#include <JavaScriptCore/Lookup.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ObjectPrototype.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ObjectPrototype.h
index 54e60b7..f890af1 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ObjectPrototype.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ObjectPrototype.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_ObjectPrototype_h
+#define WebCore_FWD_ObjectPrototype_h
#include <JavaScriptCore/ObjectPrototype.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Operations.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Operations.h
index ab763a6..95ed34c 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Operations.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Operations.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Operations_h
+#define WebCore_FWD_Operations_h
#include <JavaScriptCore/Operations.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PropertyMap.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PropertyMap.h
index d9348b4..fc40963 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PropertyMap.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PropertyMap.h
@@ -1 +1,5 @@
+#ifndef WebCore_FWD_PropertyMap_h
+#define WebCore_FWD_PropertyMap_h
#include <JavaScriptCore/PropertyMap.h>
+#endif
+
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PropertyNameArray.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PropertyNameArray.h
index 0840208..2fdf2d0 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PropertyNameArray.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PropertyNameArray.h
@@ -1 +1,5 @@
+#ifndef WebCore_FWD_PropertyNameArray_h
+#define WebCore_FWD_PropertyNameArray_h
#include <JavaScriptCore/PropertyNameArray.h>
+#endif
+
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Protect.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Protect.h
index 0ba5798..76dc11c 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Protect.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Protect.h
@@ -1 +1,5 @@
+#ifndef WebCore_FWD_Protect_h
+#define WebCore_FWD_Protect_h
#include <JavaScriptCore/Protect.h>
+#endif
+
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PrototypeFunction.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PrototypeFunction.h
index c3f3ea5..9a46fd7 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PrototypeFunction.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/PrototypeFunction.h
@@ -1 +1,5 @@
+#ifndef WebCore_FWD_PrototypeFunction_h
+#define WebCore_FWD_PrototypeFunction_h
#include <JavaScriptCore/PrototypeFunction.h>
+#endif
+
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringObject.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringObject.h
index ca73cc0..0b9a23b 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringObject.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringObject.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_StringObject_h
+#define WebCore_FWD_StringObject_h
#include <JavaScriptCore/StringObject.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringObjectThatMasqueradesAsUndefined.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringObjectThatMasqueradesAsUndefined.h
index 9fd9612..6faa056 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringObjectThatMasqueradesAsUndefined.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringObjectThatMasqueradesAsUndefined.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_StringObjectThatMasqueradesAsUndefined_h
+#define WebCore_FWD_StringObjectThatMasqueradesAsUndefined_h
#include <JavaScriptCore/StringObjectThatMasqueradesAsUndefined.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringPrototype.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringPrototype.h
index ece7fdb..f0786d4 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringPrototype.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StringPrototype.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_StringPrototype_h
+#define WebCore_FWD_StringPrototype_h
#include <JavaScriptCore/StringPrototype.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Structure.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Structure.h
index 81853f3..2333978 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Structure.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/Structure.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Structure_h
+#define WebCore_FWD_Structure_h
#include <JavaScriptCore/Structure.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/SymbolTable.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/SymbolTable.h
index 0868c02..cb099a0 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/SymbolTable.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/SymbolTable.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_SymbolTable_h
+#define WebCore_FWD_SymbolTable_h
#include <JavaScriptCore/SymbolTable.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/UString.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/UString.h
index 7a36767..d985aa5 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/UString.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/UString.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_UString_h
+#define WebCore_FWD_UString_h
#include <JavaScriptCore/UString.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wrec/WREC.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wrec/WREC.h
index cfc4aff..5749ed9 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wrec/WREC.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wrec/WREC.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_WREC_h
+#define WebCore_FWD_WREC_h
#include <JavaScriptCore/WREC.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ASCIICType.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ASCIICType.h
index f2258d2..5851cc6 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ASCIICType.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ASCIICType.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_ASCIICType_h
+#define WebCore_FWD_ASCIICType_h
#include <JavaScriptCore/ASCIICType.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/AlwaysInline.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/AlwaysInline.h
index e591f71..e234162 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/AlwaysInline.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/AlwaysInline.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_AlwaysInline_h
+#define WebCore_FWD_AlwaysInline_h
#include <JavaScriptCore/AlwaysInline.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Assertions.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Assertions.h
index 2144410..5445be4 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Assertions.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Assertions.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Assertions_h
+#define WebCore_FWD_Assertions_h
#include <JavaScriptCore/Assertions.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ByteArray.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ByteArray.h
new file mode 100644
index 0000000..9c078c9
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ByteArray.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_ByteArray_h
+#define WebCore_FWD_ByteArray_h
+#include <JavaScriptCore/ByteArray.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/CrossThreadRefCounted.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/CrossThreadRefCounted.h
new file mode 100644
index 0000000..26987ef
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/CrossThreadRefCounted.h
@@ -0,0 +1 @@
+#include <JavaScriptCore/CrossThreadRefCounted.h>
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/CurrentTime.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/CurrentTime.h
new file mode 100644
index 0000000..0070915
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/CurrentTime.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_CurrentTime_h
+#define WebCore_FWD_CurrentTime_h
+#include <JavaScriptCore/CurrentTime.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Deque.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Deque.h
index 81bd70a..a4eee78 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Deque.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Deque.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Deque_h
+#define WebCore_FWD_Deque_h
#include <JavaScriptCore/Deque.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/DisallowCType.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/DisallowCType.h
index 445944b..c4d59ac 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/DisallowCType.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/DisallowCType.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_DisallowCType_h
+#define WebCore_FWD_DisallowCType_h
#include <JavaScriptCore/DisallowCType.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/FastMalloc.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/FastMalloc.h
index 1701231..b883c0b 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/FastMalloc.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/FastMalloc.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_FastMalloc_h
+#define WebCore_FWD_FastMalloc_h
#include <JavaScriptCore/FastMalloc.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Forward.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Forward.h
index 2d707ec..3e6b8c8 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Forward.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Forward.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Forward_h
+#define WebCore_FWD_Forward_h
#include <JavaScriptCore/Forward.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/GetPtr.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/GetPtr.h
index aedd784..5a36ce2 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/GetPtr.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/GetPtr.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_GetPtr_h
+#define WebCore_FWD_GetPtr_h
#include <JavaScriptCore/GetPtr.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashCountedSet.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashCountedSet.h
index 7388f5a..c92e9f0 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashCountedSet.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashCountedSet.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_HashCountedSet_h
+#define WebCore_FWD_HashCountedSet_h
#include <JavaScriptCore/HashCountedSet.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashFunctions.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashFunctions.h
index 0fa568a..65e110d 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashFunctions.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashFunctions.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_HashFunctions_h
+#define WebCore_FWD_HashFunctions_h
#include <JavaScriptCore/HashFunctions.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashMap.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashMap.h
index 9f262e2..68ea68e 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashMap.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashMap.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_HashMap_h
+#define WebCore_FWD_HashMap_h
#include <JavaScriptCore/HashMap.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashSet.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashSet.h
index cfe2d80..a4cf32b 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashSet.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashSet.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_HashSet_h
+#define WebCore_FWD_HashSet_h
#include <JavaScriptCore/HashSet.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashTable.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashTable.h
index a5e4d57..5975685 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashTable.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashTable.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_HashTable_h
+#define WebCore_FWD_HashTable_h
#include <JavaScriptCore/HashTable.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashTraits.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashTraits.h
index 412fa98..3cf24cb 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashTraits.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/HashTraits.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_HashTraits_h
+#define WebCore_FWD_HashTraits_h
#include <JavaScriptCore/HashTraits.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ListHashSet.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ListHashSet.h
index 4aef773..c528b78 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ListHashSet.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ListHashSet.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_ListHashSet_h
+#define WebCore_FWD_ListHashSet_h
#include <JavaScriptCore/ListHashSet.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ListRefPtr.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ListRefPtr.h
index b766736..379adfb 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ListRefPtr.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ListRefPtr.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_ListRefPtr_h
+#define WebCore_FWD_ListRefPtr_h
#include <JavaScriptCore/ListRefPtr.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Locker.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Locker.h
index 75b0acd..4dbe13e 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Locker.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Locker.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Locker_h
+#define WebCore_FWD_Locker_h
#include <JavaScriptCore/Locker.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MainThread.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MainThread.h
index ff75971..2d8e280 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MainThread.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MainThread.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_MainThread_h
+#define WebCore_FWD_MainThread_h
#include <JavaScriptCore/MainThread.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MathExtras.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MathExtras.h
index 2955786..8594e64 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MathExtras.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MathExtras.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_MathExtras_h
+#define WebCore_FWD_MathExtras_h
#include <JavaScriptCore/MathExtras.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MessageQueue.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MessageQueue.h
index 986cca5..c597e08 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MessageQueue.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/MessageQueue.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_MessageQueue_h
+#define WebCore_FWD_MessageQueue_h
#include <JavaScriptCore/MessageQueue.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Noncopyable.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Noncopyable.h
index f8484d2..c512677 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Noncopyable.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Noncopyable.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Noncopyable_h
+#define WebCore_FWD_Noncopyable_h
#include <JavaScriptCore/Noncopyable.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/NotFound.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/NotFound.h
index cfe1896..1757683 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/NotFound.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/NotFound.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_NotFound_h
+#define WebCore_FWD_NotFound_h
#include <JavaScriptCore/NotFound.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnArrayPtr.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnArrayPtr.h
index 595817d..7700641 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnArrayPtr.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnArrayPtr.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_OwnArrayPtr_h
+#define WebCore_FWD_OwnArrayPtr_h
#include <JavaScriptCore/OwnArrayPtr.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnFastMallocPtr.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnFastMallocPtr.h
new file mode 100644
index 0000000..036d801
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnFastMallocPtr.h
@@ -0,0 +1 @@
+#include <JavaScriptCore/OwnFastMallocPtr.h>
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnPtr.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnPtr.h
index 9211d38..977382d 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnPtr.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnPtr.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_OwnPtr_h
+#define WebCore_FWD_OwnPtr_h
#include <JavaScriptCore/OwnPtr.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnPtrCommon.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnPtrCommon.h
new file mode 100644
index 0000000..5826031
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/OwnPtrCommon.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_PassOwnPtr_h
+#define WebCore_FWD_PassOwnPtr_h
+#include <JavaScriptCore/PassOwnPtr.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PassOwnPtr.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PassOwnPtr.h
new file mode 100644
index 0000000..5826031
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PassOwnPtr.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_PassOwnPtr_h
+#define WebCore_FWD_PassOwnPtr_h
+#include <JavaScriptCore/PassOwnPtr.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PassRefPtr.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PassRefPtr.h
index aafd1a2..ef57e5f 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PassRefPtr.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PassRefPtr.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_PassRefPtr_h
+#define WebCore_FWD_PassRefPtr_h
#include <JavaScriptCore/PassRefPtr.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Platform.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Platform.h
index 3b22955..9f2bb3a 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Platform.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Platform.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Platform_h
+#define WebCore_FWD_Platform_h
#include <JavaScriptCore/Platform.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PtrAndFlags.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PtrAndFlags.h
new file mode 100644
index 0000000..bb6ed9a
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PtrAndFlags.h
@@ -0,0 +1,5 @@
+#ifndef WebCore_FWD_PtrAndFlags_h
+#define WebCore_FWD_PtrAndFlags_h
+#include <JavaScriptCore/PtrAndFlags.h>
+#endif
+
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RandomNumber.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RandomNumber.h
index 42e148a..cb156d2 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RandomNumber.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RandomNumber.h
@@ -1 +1,5 @@
+#ifndef WebCore_FWD_RandomNumber_h
+#define WebCore_FWD_RandomNumber_h
#include <JavaScriptCore/RandomNumber.h>
+#endif
+
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefCounted.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefCounted.h
index 628a63b..c6b2dee 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefCounted.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefCounted.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_RefCounted_h
+#define WebCore_FWD_RefCounted_h
#include <JavaScriptCore/RefCounted.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefCountedLeakCounter.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefCountedLeakCounter.h
index 3f229d1..2abe37e 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefCountedLeakCounter.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefCountedLeakCounter.h
@@ -1,2 +1,5 @@
+#ifndef WebCore_FWD_RefCountedLeakCounter_h
+#define WebCore_FWD_RefCountedLeakCounter_h
#include <JavaScriptCore/RefCountedLeakCounter.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefPtr.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefPtr.h
index 0ff6213..594929d 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefPtr.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RefPtr.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_RefPtr_h
+#define WebCore_FWD_RefPtr_h
#include <JavaScriptCore/RefPtr.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RetainPtr.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RetainPtr.h
index 65fc27b..1352bd8 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RetainPtr.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/RetainPtr.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_RetainPtr_h
+#define WebCore_FWD_RetainPtr_h
#include <JavaScriptCore/RetainPtr.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/StdLibExtras.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/StdLibExtras.h
index 3222ec1..2003295 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/StdLibExtras.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/StdLibExtras.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_StdLibExtras_h
+#define WebCore_FWD_StdLibExtras_h
#include <JavaScriptCore/StdLibExtras.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/StringExtras.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/StringExtras.h
index 063d500..d89f238 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/StringExtras.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/StringExtras.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_StringExtras_h
+#define WebCore_FWD_StringExtras_h
#include <JavaScriptCore/StringExtras.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ThreadSpecific.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ThreadSpecific.h
index 48f1db5..1e5474f 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ThreadSpecific.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/ThreadSpecific.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_ThreadSpecific_h
+#define WebCore_FWD_ThreadSpecific_h
#include <JavaScriptCore/ThreadSpecific.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Threading.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Threading.h
index 17359e5..ad29847 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Threading.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Threading.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Threading_h
+#define WebCore_FWD_Threading_h
#include <JavaScriptCore/Threading.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/TypeTraits.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/TypeTraits.h
new file mode 100644
index 0000000..a4ae09f
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/TypeTraits.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_TypeTraits_h
+#define WebCore_FWD_TypeTraits_h
+#include <JavaScriptCore/TypeTraits.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/UnusedParam.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/UnusedParam.h
index aa3d3d0..5202740 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/UnusedParam.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/UnusedParam.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_UnusedParam_h
+#define WebCore_FWD_UnusedParam_h
#include <JavaScriptCore/UnusedParam.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/VMTags.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/VMTags.h
new file mode 100644
index 0000000..ffd1e12
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/VMTags.h
@@ -0,0 +1,4 @@
+#ifndef WebCore_FWD_VMTags_h
+#define WebCore_FWD_VMTags_h
+#include <JavaScriptCore/VMTags.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Vector.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Vector.h
index c6d15fd..2c1cf7b 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Vector.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/Vector.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Vector_h
+#define WebCore_FWD_Vector_h
#include <JavaScriptCore/Vector.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/VectorTraits.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/VectorTraits.h
index 2fc1158..87a3822 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/VectorTraits.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/VectorTraits.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_VectorTraits_h
+#define WebCore_FWD_VectorTraits_h
#include <JavaScriptCore/VectorTraits.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/dtoa.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/dtoa.h
index 887fdfa..7fd9265 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/dtoa.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/dtoa.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_dtoa_h
+#define WebCore_FWD_dtoa_h
#include <JavaScriptCore/dtoa.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/Collator.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/Collator.h
index 8f341a1..f28a117 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/Collator.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/Collator.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Collator_h
+#define WebCore_FWD_Collator_h
#include <JavaScriptCore/Collator.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/UTF8.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/UTF8.h
index c7d9e92..b9daa43 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/UTF8.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/UTF8.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_UTF8_h
+#define WebCore_FWD_UTF8_h
#include <JavaScriptCore/UTF8.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/Unicode.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/Unicode.h
index 623917f..9f06747 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/Unicode.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/Unicode.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_Unicode_h
+#define WebCore_FWD_Unicode_h
#include <JavaScriptCore/Unicode.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/icu/UnicodeIcu.h b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/icu/UnicodeIcu.h
index 6b64eb5..4819f47 100644
--- a/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/icu/UnicodeIcu.h
+++ b/src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/unicode/icu/UnicodeIcu.h
@@ -1 +1,4 @@
+#ifndef WebCore_FWD_UnicodeIcu_h
+#define WebCore_FWD_UnicodeIcu_h
#include <JavaScriptCore/UnicodeIcu.h>
+#endif
diff --git a/src/3rdparty/webkit/WebCore/Info.plist b/src/3rdparty/webkit/WebCore/Info.plist
index a131f44..525a372 100644
--- a/src/3rdparty/webkit/WebCore/Info.plist
+++ b/src/3rdparty/webkit/WebCore/Info.plist
@@ -7,7 +7,7 @@
<key>CFBundleExecutable</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleGetInfoString</key>
- <string>${BUNDLE_VERSION}, Copyright 2003-2007 Apple Inc.; Copyright 1997 Martin Jones &lt;mjones@kde.org&gt;; Copyright 1998, 1999 Torben Weis &lt;weis@kde.org&gt;; Copyright 1998, 1999, 2002 Waldo Bastian &lt;bastian@kde.org&gt;; Copyright 1998-2000 Lars Knoll &lt;knoll@kde.org&gt;; Copyright 1999, 2001 Antti Koivisto &lt;koivisto@kde.org&gt;; Copyright 1999-2001 Harri Porten &lt;porten@kde.org&gt;; Copyright 2000 Simon Hausmann &lt;hausmann@kde.org&gt;; Copyright 2000, 2001 Dirk Mueller &lt;mueller@kde.org&gt;; Copyright 2000, 2001 Peter Kelly &lt;pmk@post.com&gt;; Copyright 2000 Daniel Molkentin &lt;molkentin@kde.org&gt;; Copyright 2000 Stefan Schimanski &lt;schimmi@kde.org&gt;; Copyright 1998-2000 Netscape Communications Corporation; Copyright 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper; Copyright 2001, 2002 Expat maintainers.</string>
+ <string>${BUNDLE_VERSION}, Copyright 2003-2009 Apple Inc.; Copyright 1997 Martin Jones &lt;mjones@kde.org&gt;; Copyright 1998, 1999 Torben Weis &lt;weis@kde.org&gt;; Copyright 1998, 1999, 2002 Waldo Bastian &lt;bastian@kde.org&gt;; Copyright 1998-2000 Lars Knoll &lt;knoll@kde.org&gt;; Copyright 1999, 2001 Antti Koivisto &lt;koivisto@kde.org&gt;; Copyright 1999-2001 Harri Porten &lt;porten@kde.org&gt;; Copyright 2000 Simon Hausmann &lt;hausmann@kde.org&gt;; Copyright 2000, 2001 Dirk Mueller &lt;mueller@kde.org&gt;; Copyright 2000, 2001 Peter Kelly &lt;pmk@post.com&gt;; Copyright 2000 Daniel Molkentin &lt;molkentin@kde.org&gt;; Copyright 2000 Stefan Schimanski &lt;schimmi@kde.org&gt;; Copyright 1998-2000 Netscape Communications Corporation; Copyright 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper; Copyright 2001, 2002 Expat maintainers.</string>
<key>CFBundleIdentifier</key>
<string>com.apple.${PRODUCT_NAME}</string>
<key>CFBundleInfoDictionaryVersion</key>
diff --git a/src/3rdparty/webkit/WebCore/Resources/panIcon.png b/src/3rdparty/webkit/WebCore/Resources/panIcon.png
new file mode 100644
index 0000000..4ca8d70
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/Resources/panIcon.png
Binary files differ
diff --git a/src/3rdparty/webkit/WebCore/WebCore.LP64.exp b/src/3rdparty/webkit/WebCore/WebCore.LP64.exp
index 71ed666..cc04718 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.LP64.exp
+++ b/src/3rdparty/webkit/WebCore/WebCore.LP64.exp
@@ -1,3 +1,15 @@
# This file gets appended to WebCore.exp, only for 64-bit architectures.
+__ZN3JSC16RuntimeObjectImp6s_infoE
+__ZN3JSC8Bindings10RootObjectD1Ev
+__ZN3JSC8Bindings8Instance19createRuntimeObjectEPNS_9ExecStateE
+__ZN3JSC8Bindings8InstanceC2EN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZN3JSC8Bindings8InstanceD2Ev
+__ZN7WebCore13IdentifierRep3getEi
+__ZN7WebCore13IdentifierRep3getEPKc
+__ZN7WebCore13IdentifierRep7isValidEPS0_
+__ZN7WebCore16ScriptController16createRootObjectEPv
+__ZN7WebCore16ScriptController24jsObjectForPluginElementEPNS_17HTMLPlugInElementE
__ZN7WebCore16ScriptController9isEnabledEv
+__ZN7WebCore6String26fromUTF8WithLatin1FallbackEPKcm
+__ZN7WebCore6String8fromUTF8EPKcm
diff --git a/src/3rdparty/webkit/WebCore/WebCore.NPAPI.exp b/src/3rdparty/webkit/WebCore/WebCore.NPAPI.exp
index 28dd051..d487ade 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.NPAPI.exp
+++ b/src/3rdparty/webkit/WebCore/WebCore.NPAPI.exp
@@ -21,3 +21,10 @@ __NPN_SetProperty
__NPN_UTF8FromIdentifier
__ZN7WebCore16ScriptController20windowScriptNPObjectEv
__ZN7WebCore16ScriptController29cleanupScriptObjectsForPluginEPv
+__ZN7WebCore6String8fromUTF8EPKc
+__ZN7WebCoreplERKNS_6StringEPKc
+__ZNK7WebCore12RenderObject4viewEv
+__ZNK7WebCore14SecurityOrigin9canAccessEPKS0_
+__ZNK7WebCore4KURL7hasPathEv
+__ZNK7WebCore4KURL9prettyURLEv
+__ZNK7WebCore9FrameView22windowClipRectForLayerEPKNS_11RenderLayerEb
diff --git a/src/3rdparty/webkit/WebCore/WebCore.VideoProxy.exp b/src/3rdparty/webkit/WebCore/WebCore.VideoProxy.exp
new file mode 100644
index 0000000..cead63f
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/WebCore.VideoProxy.exp
@@ -0,0 +1,4 @@
+__ZN7WebCore9HTMLNames8videoTagE
+__ZN7WebCore9HTMLNames8audioTagE
+__ZN7WebCore16HTMLMediaElement19deliverNotificationE32MediaPlayerProxyNotificationType
+__ZN7WebCore16HTMLMediaElement19setMediaPlayerProxyEP19WebMediaPlayerProxy
diff --git a/src/3rdparty/webkit/WebCore/WebCore.order b/src/3rdparty/webkit/WebCore/WebCore.order
index 67de812..ddce440 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.order
+++ b/src/3rdparty/webkit/WebCore/WebCore.order
@@ -1,30 +1,37 @@
__ZN7WebCore12IconDatabase20delayDatabaseCleanupEv
-__ZN7WebCore21reportThreadViolationEPKc
+__ZN7WebCore21reportThreadViolationEPKcNS_20ThreadViolationRoundE
+__ZN7WebCoreL43readThreadViolationBehaviorFromUserDefaultsEv
__ZN7WebCore12iconDatabaseEv
+__ZN7WebCore12IconDatabaseC1Ev
__ZN7WebCore12IconDatabaseC2Ev
-__ZN7WebCore5MutexC2Ev
-__ZN7WebCore15ThreadConditionC2Ev
-__ZN7WebCore13defaultClientEv
+__ZN7WebCore9TimerBaseC2Ev
+__ZN7WebCoreL13defaultClientEv
__ZN7WebCore14SQLiteDatabaseC1Ev
+__ZN7WebCore14SQLiteDatabaseC2Ev
__ZN7WebCore12IconDatabase10setEnabledEb
__ZN7WebCore12IconDatabase9setClientEPNS_18IconDatabaseClientE
__ZN7WebCore12IconDatabase25setPrivateBrowsingEnabledEb
__ZN7WebCore6StringC1EP8NSString
+__ZN7WebCore6StringC2EP8NSString
__ZN7WebCore10StringImpl6createEPKtj
+__ZN7WebCore10StringImpl19createUninitializedEjRPt
+__ZN7WebCore10StringImplnwEmPv
__ZN3WTF6VectorItLm1024EE6shrinkEm
__ZN7WebCore12IconDatabase4openERKNS_6StringE
__ZNK7WebCore12IconDatabase6isOpenEv
-__ZN7WebCore5Mutex4lockEv
-__ZN7WebCore5Mutex6unlockEv
__ZNK7WebCore6String4copyEv
__ZN7WebCore10StringImpl4copyEv
__ZN7WebCore12IconDatabase23defaultDatabaseFilenameEv
__ZN7WebCore6StringC1EPKc
+__ZN7WebCore6StringC2EPKc
__ZN7WebCore10StringImpl6createEPKc
+__ZN7WebCore10StringImpl6createEPKcj
__ZN7WebCore24pathByAppendingComponentERKNS_6StringES2_
__ZN7WebCore10StringImpl8endsWithEPS0_b
__ZN7WebCore10StringImpl4findEPS0_ib
__ZN7WebCore10StringImplD1Ev
+__ZN7WebCore10StringImplD2Ev
+__ZN7WebCore10StringImpldlEPv
__ZN7WebCoreplERKNS_6StringEPKc
__ZN7WebCoreplERKNS_6StringES2_
__ZNK7WebCore6String7isEmptyEv
@@ -32,15 +39,9 @@ __ZN7WebCore6String6appendERKS0_
__ZNK7WebCore6String6lengthEv
__ZNK7WebCore6String10charactersEv
__ZN7WebCore10StringImpl5adoptERNS_12StringBufferE
-__ZN7WebCore12createThreadEPFPvS0_ES0_
-__ZN7WebCore35establishIdentifierForPthreadHandleERP17_opaque_pthread_t
+__ZN7WebCore10StringImplnwEm
__ZN7WebCore12IconDatabase27iconDatabaseSyncThreadStartEPv
__ZN7WebCore12IconDatabase22iconDatabaseSyncThreadEv
-__ZN7WebCore14threadMapMutexEv
-__ZN7WebCore9threadMapEv
-__ZNK3WTF7HashMapIjP17_opaque_pthread_tNS_7IntHashIjEENS_10HashTraitsIjEENS5_IS2_EEE3getERKj
-__ZN3WTF9HashTableIjSt4pairIjiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENS8_IiEEEES9_E3addIjPN7WebCore17SegmentedFontDataENS_17HashMapTranslatorILb1ES1_IjSG_ENS_18PairBaseHashTraitsIS9_NS8_ISG_EEEESB_S6_EEEES1_INS_17HashTableIteratorIjS2_S4_S6_SB_S9_EEbERKT_RKT0_
-__ZN3WTF9HashTableIjSt4pairIjiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENS8_IiEEEES9_E5clearEv
__ZN7WebCore18makeAllDirectoriesERKNS_6StringE
__ZN7WebCore24fileSystemRepresentationERKNS_6StringE
__ZNK7WebCore6String14createCFStringEv
@@ -48,255 +49,99 @@ __ZN7WebCore10StringImpl14createCFStringEv
__ZN7WebCore7CString16newUninitializedEmRPc
__ZNK7WebCore7CString4dataEv
__ZN3WTF6VectorIcLm0EE6shrinkEm
+__ZN7WebCore15AutodrainedPoolC1Ei
__ZN7WebCore15AutodrainedPoolC2Ei
__ZN7WebCore10fileExistsERKNS_6StringE
+__ZN7WebCore15AutodrainedPoolD1Ev
__ZN7WebCore15AutodrainedPoolD2Ev
__ZN7WebCore14SQLiteDatabase4openERKNS_6StringE
__ZN7WebCore14SQLiteDatabase5closeEv
__ZN7WebCore6String29charactersWithNullTerminationEv
__ZN7WebCore10StringImpl34createWithTerminatingNullCharacterERKS0_
-_sqlite3_open16
-_sqlite3VdbeMemSetStr
-_WebCoreObjCFinalizeOnMainThread
-__ZN7WebCore16MIMETypeRegistry29getSupportedNonImageMIMETypesEv
-__ZN7WebCore26initialiseMIMETypeRegistryEv
-__ZN7WebCore38initialiseSupportedJavaScriptMIMETypesEv
-__ZN3WTF7HashSetIN7WebCore6StringENS1_10StringHashENS_10HashTraitsIS2_EEE3addERKS2_
-__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E5clearEv
-__ZN3WTF23HashTableRefCounterBaseILb1ENS_9HashTableIPN7WebCore10StringImplES4_NS_17IdentityExtractorIS4_EENS2_15CaseFoldingHashENS_10HashTraitsIS4_EES9_EENS8_INS2_6StringEEEE8derefAllERSA_
-__ZN7WebCore36initialiseSupportedNonImageMimeTypesEv
-_sqlite3VdbeMemRelease
-_sqlite3ValueText
-_sqlite3VdbeMemTranslate
-_sqlite3VdbeMemNulTerminate
-_openDatabase
-_createCollation
-_findCollSeqEntry
-_sqlite3HashInsert
-_strHash
-_sqlite3MallocX
-_rehash
-_sqlite3Error
-_strCompare
-_sqlite3BtreeOpen
-_sqlite3UnixThreadSpecificData
-_sqlite3UnixEnterMutex
-_sqlite3UnixFullPathname
-_sqlite3SetString
-_allocateUnixFile
-_findLockInfo
-_threadLockingTest
-_binHash
-_unixSectorSize
-_unixSeek
-_unixRead
-_sqlite3Realloc
-_sqlite3SchemaGet
-_sqlite3RegisterBuiltinFunctions
-_sqlite3CreateFunc
-_sqlite3FindFunction
-_sqlite3FreeX
-_sqlite3ApiExit
-_sqlite3RegisterLikeFunctions
-_sqlite3_exec
-_sqlite3Prepare
-_sqlite3RunParser
-_getToken
-_sqlite3Parser
-_yy_find_shift_action
-_yy_reduce
-_sqlite3Pragma
-_sqlite3VdbeAddOp
-_sqlite3VdbeChangeP3
-_freeP3
-_sqlite3VdbeMakeReady
-_yy_destructor
-_sqlite3DeleteTable
-_sqlite3DeleteTrigger
-_sqlite3Step
-_sqlite3VdbeExec
-_sqlite3VdbeHalt
-_sqlite3VdbeFreeCursor
-_sqlite3BtreeCommitPhaseTwo
-_sqlite3VdbeReset
-_Cleanup
-_sqlite3VdbeDelete
-__ZN7WebCore13currentThreadEv
__ZN7WebCore15SQLiteStatementC1ERNS_14SQLiteDatabaseERKNS_6StringE
+__ZN7WebCore15SQLiteStatementC2ERNS_14SQLiteDatabaseERKNS_6StringE
__ZN7WebCore15SQLiteStatement14executeCommandEv
__ZN7WebCore15SQLiteStatement7prepareEv
-_sqlite3_prepare16_v2
-_sqlite3Prepare16
+_WebCoreObjCFinalizeOnMainThread
+__ZN7WebCore16MIMETypeRegistry29getSupportedNonImageMIMETypesEv
+__ZN7WebCoreL26initializeMIMETypeRegistryEv
+__ZN7WebCoreL38initializeSupportedJavaScriptMIMETypesEv
+__ZN3WTF7HashSetIN7WebCore6StringENS1_10StringHashENS_10HashTraitsIS2_EEE3addERKS2_
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_E6expandEv
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_E6rehashEi
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_E13allocateTableEi
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_E15deallocateTableE
+__ZN7WebCore5equalEPNS_10StringImplES1_
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_EC1ERKS8_
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_EC2ERKS8_
+__ZN7WebCoreL36initializeSupportedNonImageMimeTypesEv
+__ZN7WebCore14ArchiveFactory29registerKnownArchiveMIMETypesEv
+__ZN7WebCoreL16archiveMIMETypesEv
+__ZN3WTF7HashMapIN7WebCore6StringEPFNS_10PassRefPtrINS1_7ArchiveEEEPNS1_12SharedBufferEENS1_15CaseFoldingHashENS_10HashTraitsIS
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PFNS_10PassRefPtrINS1_7ArchiveEEEPNS1_12SharedBufferEEENS_18PairFirstExtractorIS
__ZN7WebCore15SQLiteStatement4stepEv
-_sqlite3_step
__ZN7WebCore15SQLiteStatement8finalizeEv
-_sqlite3_finalize
__ZN7WebCore15SQLiteStatementD1Ev
+__ZN7WebCore15SQLiteStatementD2Ev
__ZNK7WebCore12IconDatabase24shouldStopThreadActivityEv
__ZN7WebCore12IconDatabase25performOpenInitializationEv
-__ZN7WebCore21databaseVersionNumberERNS_14SQLiteDatabaseE
+__ZN7WebCoreL21databaseVersionNumberERNS_14SQLiteDatabaseE
__ZN7WebCore15SQLiteStatement12getColumnIntEi
-_sqlite3Expr
-_heightOfSelect
-_sqlite3ExprListAppend
-_sqlite3SrcListAppendFromTerm
-_sqlite3SrcListAppend
-_sqlite3SelectNew
-_sqlite3Select
-_sqlite3SelectResolve
-_prepSelectStmt
-_sqlite3Init
-_sqlite3InitOne
-_sqlite3InitCallback
-_sqlite3StartTable
-_sqlite3FindTable
-_sqlite3EndTable
-_sqlite3BtreeCursor
-_sqlite3BtreeBeginTrans
-_sqlite3PagerAcquire
-_unixLock
-_unixFileSize
-_sqlite3BtreeInitPage
-_sqlite3BtreeGetMeta
-_sqlite3PagerUnref
-_sqlite3MPrintf
-_base_vprintf
-_mout
-_printf_realloc
-_walkExprTree
-_nameResolverStep
-_lookupName
-_sqlite3ExprDelete
-_processOrderGroupBy
-_simpleMinMaxQuery
-_computeLimitRegisters
-_sqlite3WhereBegin
-_findTerm
-_sqlite3OpenTable
-_sqlite3TableLock
-_selectInnerLoop
-_codeOffset
-_sqlite3ExprCode
-_sqlite3ExprCodeGetColumn
-_sqlite3ValueFromExpr
-_sqlite3WhereEnd
-_generateColumnNames
-_columnType
-_clearSelect
-_sqlite3SrcListDelete
-_sqlite3VdbeIntValue
-_moveToRoot
-_sqlite3BtreeParseCellPtr
-_sqlite3MallocRaw
-_sqlite3VdbeSerialGet
-_sqlite3_value_text
-_sqlite3_snprintf
-_sqlite3CreateIndex
-_sqlite3BtreeCommitStmt
-_sqlite3BtreeNext
-_sqlite3FixSrcList
-_sqlite3FixSelect
-_sqlite3AddPrimaryKey
-_pageDestructor
-_sqlite3BtreeCloseCursor
-_sqlite3AnalysisLoad
-_unixUnlock
-_whereClauseInsert
-_exprNodeIsConstant
-_exprAnalyze
-_exprTableUsage
-_exprSelectTableUsage
-_sqlite3GetCollSeq
-_sqlite3LocateCollSeq
-_codeAllEqualityTerms
-_codeEqualityTerm
-_applyAffinity
-_sqlite3VdbeSerialPut
-_sqlite3BtreeMoveto
-_sqlite3VdbeRecordCompare
-_sqlite3MemCompare
-_binCollFunc
-_sqlite3VdbeIdxKeyCompare
-_sqlite3VdbeMemFromBtree
-_sqlite3VdbeIdxRowid
-__ZN7WebCore15SQLiteStatement11columnCountEv
-_sqlite3_data_count
-_sqlite3_column_int
__ZN7WebCore14SQLiteDatabase11tableExistsERKNS_6StringE
__ZN7WebCoreplEPKcRKNS_6StringE
-_whereSplit
-_sqlite3ExprIfFalse
-_codeCompare
+__ZN7WebCore14SQLiteDatabase14clearAllTablesEv
+__ZN7WebCore15SQLiteStatement17returnTextResultsEiRN3WTF6VectorINS_6StringELm0EEE
+__ZN3WTF6VectorIN7WebCore6StringELm0EE14shrinkCapacityEm
+__ZN7WebCore14SQLiteDatabase9lastErrorEv
+__ZN7WebCoreL20createDatabaseTablesERNS_14SQLiteDatabaseE
+__ZN7WebCore14SQLiteDatabase14executeCommandERKNS_6StringE
+__ZN7WebCore6String6numberEi
+__ZN7WebCore6String6formatEPKcz
+__ZN3WTF6VectorIcLm256EE4growEm
+__ZN3WTF6VectorIcLm256EE6shrinkEm
__ZN7WebCore12IconDatabase8importedEv
-__ZN7WebCore12IconDatabase16performURLImportEv
-_sqlite3JoinType
-_setJoinExpr
-_sqlite3ExprDup
-_sqlite3ExprListDup
-_sqlite3SelectDup
-_disableTerm
-_applyNumericAffinity
-__ZN7WebCore15SQLiteStatement13getColumnTextEi
-_sqlite3_column_text16
-__ZN7WebCore6StringC2EPKt
-__ZN3WTF7HashMapIN7WebCore6StringEPNS1_13PageURLRecordENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3setERKS2_RKS4_
-__ZN7WebCore13PageURLRecordC2ERKNS_6StringE
-__ZN7WebCore12IconDatabase21getOrCreateIconRecordERKNS_6StringE
-__ZN3WTF7HashMapIN7WebCore6StringEPNS1_10IconRecordENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3setERKS2_RKS4_
-__ZN7WebCore10IconRecordC2ERKNS_6StringE
-__ZN7WebCore13PageURLRecord13setIconRecordEN3WTF10PassRefPtrINS_10IconRecordEEE
-__ZNK3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E8containsIS3_NS_22IdentityHashTranslatorIS3_S3_S6_EEEEbRKT_
-__ZN3WTF6VectorIN7WebCore6StringELm0EE11appendRangeINS_24HashTableIteratorAdapterINS_9HashTableIPNS1_10StringImplES8_NS_17IdentityExtractorIS8_EENS1_10StringHashENS_10HashTraitsIS8_EESD_EES2_EEEEvT_SG_
-__ZN7WebCore16callOnMainThreadEPFvPvES0_
--[WebCoreFunctionWrapper initWithFunction:context:]
-__ZN7WebCore12IconDatabase18syncThreadMainLoopEv
-__ZN7WebCore12IconDatabase16readFromDatabaseEv
-__ZN3WTF6VectorIPN7WebCore10IconRecordELm0EE11appendRangeINS_24HashTableIteratorAdapterINS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEESD_EES3_EEEEvT_SG_
-__ZN7WebCore12IconDatabase15writeToDatabaseEv
-__ZN3WTF6VectorIN7WebCore12IconSnapshotELm0EE11appendRangeINS_23HashTableValuesIteratorINS_9HashTableIPNS1_10StringImplESt4pairIS8_S2_ENS_18PairFirstExtractorISA_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS8_EENSF_IS2_EEEESG_EENS1_6StringES2_EEEEvT_SM_
-__ZN3WTF23HashTableRefCounterBaseILb1ENS_9HashTableIPN7WebCore10StringImplESt4pairIS4_NS2_12IconSnapshotEENS_18PairFirstExtractorIS7_EENS2_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS4_EENSC_IS6_EEEESD_EENS_18PairBaseHashTraitsINSC_INS2_6StringEEESE_EEE8derefAllERSG_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_12IconSnapshotEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IS5_EEEESC_E6expandEv
-__ZN3WTF6VectorIN7WebCore15PageURLSnapshotELm0EE11appendRangeINS_23HashTableValuesIteratorINS_9HashTableIPNS1_10StringImplESt4pairIS8_S2_ENS_18PairFirstExtractorISA_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS8_EENSF_IS2_EEEESG_EENS1_6StringES2_EEEEvT_SM_
-__ZN3WTF23HashTableRefCounterBaseILb1ENS_9HashTableIPN7WebCore10StringImplESt4pairIS4_NS2_15PageURLSnapshotEENS_18PairFirstExtractorIS7_EENS2_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS4_EENSC_IS6_EEEESD_EENS_18PairBaseHashTraitsINSC_INS2_6StringEEESE_EEE8derefAllERSG_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_15PageURLSnapshotEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IS5_EEEESC_E6expandEv
__ZN7WebCore17SQLiteTransactionC1ERNS_14SQLiteDatabaseE
+__ZN7WebCore17SQLiteTransactionC2ERNS_14SQLiteDatabaseE
__ZN7WebCore17SQLiteTransaction5beginEv
-__ZN7WebCore14SQLiteDatabase14executeCommandERKNS_6StringE
+__ZNK7WebCore12IconDatabase12databasePathEv
+__ZN7WebCore12IconDatabase11setImportedEb
__ZN7WebCore17SQLiteTransaction6commitEv
-__ZN7WebCore12IconDatabase24checkForDanglingPageURLsEb
-__ZN7WebCore15SQLiteStatement23returnsAtLeastOneResultEv
-_codeInteger
-_sqlite3ExprIfTrue
-_sqlite3CodeSubselect
-_sqlite3PagerBegin
-_sqlite3PagerWrite
-_pager_write
-_zeroPage
-_sqlite3BtreeCreateTable
-_allocateBtreePage
-_sqlite3BtreeInsert
-_fillInCell
-_insertCell
-_allocateSpace
-_sqlite3BtreeClose
-_sqlite3BtreeRollback
-_sqlite3PagerRollback
-_pageReinit
-_pager_truncate_cache
-_sqlite3PagerClose
__ZN7WebCore17SQLiteTransactionD1Ev
-__ZN7WebCore15ThreadCondition4waitERNS_5MutexE
+__ZN7WebCore17SQLiteTransactionD2Ev
+__ZN7WebCore12IconDatabase16performURLImportEv
+__ZN3WTF6VectorIN7WebCore6StringELm0EE11appendRangeINS_24HashTableIteratorAdapterINS_9HashTableIS2_S2_NS_17IdentityExtractorIS2
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_E5clearEv
+__ZN7WebCore12IconDatabase18syncThreadMainLoopEv
+__ZN7WebCore12IconDatabase15writeToDatabaseEv
+__ZN3WTF6VectorIN7WebCore12IconSnapshotELm0EE11appendRangeINS_23HashTableValuesIteratorINS_9HashTableINS1_6StringESt4pairIS7_S2
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS1_12IconSnapshotEENS_18PairFirstExtractorIS5_EENS1_10StringHashENS_14PairHashT
+__ZN3WTF6VectorIN7WebCore15PageURLSnapshotELm0EE11appendRangeINS_23HashTableValuesIteratorINS_9HashTableINS1_6StringESt4pairIS7
+__ZN7WebCore12IconDatabase16readFromDatabaseEv
+__ZN3WTF6VectorIPN7WebCore10IconRecordELm0EE11appendRangeINS_24HashTableIteratorAdapterINS_9HashTableIS3_S3_NS_17IdentityExtrac
+__ZN7WebCore6StringC1EPK10__CFString
__ZN7WebCore6StringC2EPK10__CFString
-__ZN7WebCore17getMIMETypeForUTIERKNS_6StringE
-__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E4findIS3_NS_22IdentityHashTranslatorIS3_S3_S6_EEEENS_17HashTableIteratorIS3_S3_S5_S6_S8_S8_EERKT_
+__ZN7WebCore26MIMETypeForImageSourceTypeERKNS_6StringE
+__ZN7WebCore24StringWrapperCFAllocatorL9allocatorEv
+__ZN7WebCore24StringWrapperCFAllocatorL6retainEPKv
+__ZN7WebCore24StringWrapperCFAllocatorL8allocateElmPv
+__ZN7WebCore24StringWrapperCFAllocatorL10deallocateEPvS1_
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_E4findIS2_NS_22Iden
__ZN7WebCore10StringImplcvP8NSStringEv
-__ZN7WebCore11FrameLoader24registerURLSchemeAsLocalERKNS_6StringE
-__ZN7WebCore12localSchemesEv
-__ZN3WTF7HashSetIN7WebCore6StringENS1_15CaseFoldingHashENS_10HashTraitsIS2_EEE3addERKS2_
-__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_15CaseFoldingHashENS_10HashTraitsIS3_EES8_E6expandEv
__ZNK7WebCore12IconDatabase9isEnabledEv
__ZN7WebCore12IconDatabase20retainIconForPageURLERKNS_6StringE
-__ZNK3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_15PageURLSnapshotEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IS5_EEEESC_E8containsIS3_NS_22IdentityHashTranslatorIS3_S6_S9_EEEEbRKT_
+__ZNK3WTF7HashMapIN7WebCore6StringEPNS1_13PageURLRecordENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3getERKS2_
+__ZN7WebCore13PageURLRecordC1ERKNS_6StringE
+__ZN7WebCore13PageURLRecordC2ERKNS_6StringE
+__ZN3WTF7HashMapIN7WebCore6StringEPNS1_13PageURLRecordENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3setERKS2_RKS4_
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS1_13PageURLRecordEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHas
+__ZNK3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS1_15PageURLSnapshotEENS_18PairFirstExtractorIS5_EENS1_10StringHashENS_14PairH
+__ZN7WebCore11FrameLoader24registerURLSchemeAsLocalERKNS_6StringE
+__ZN7WebCoreL12localSchemesEv
+__ZN3WTF7HashSetIN7WebCore6StringENS1_15CaseFoldingHashENS_10HashTraitsIS2_EEE3addERKS2_
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_15CaseFoldingHashENS_10HashTraitsIS2_EES7_E6expandEv
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_15CaseFoldingHashENS_10HashTraitsIS2_EES7_E6rehashEi
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_15CaseFoldingHashENS_10HashTraitsIS2_EES7_E13allocateTab
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_15CaseFoldingHashENS_10HashTraitsIS2_EES7_E15deallocateT
+[WebCoreViewFactory sharedFactory]
-[WebCoreViewFactory init]
+[WebCoreKeyGenerator sharedGenerator]
@@ -304,268 +149,374 @@ __ZNK3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_15PageURLSnapshotEENS_
__ZN7WebCore36InitializeLoggingChannelsIfNecessaryEv
__ZN7WebCore15DatabaseTracker7trackerEv
__ZN7WebCore15DatabaseTrackerC1Ev
+__ZN7WebCore15DatabaseTrackerC2Ev
__ZN7WebCore15DatabaseTracker24setDatabaseDirectoryPathERKNS_6StringE
__ZN7WebCore15DatabaseTracker9setClientEPNS_21DatabaseTrackerClientE
+__ZN7WebCore12cacheStorageEv
+__ZN7WebCore23ApplicationCacheStorage17setCacheDirectoryERKNS_6StringE
__ZN7WebCore4PageC1EPNS_12ChromeClientEPNS_17ContextMenuClientEPNS_12EditorClientEPNS_10DragClientEPNS_15InspectorClientE
+__ZN7WebCore4PageC2EPNS_12ChromeClientEPNS_17ContextMenuClientEPNS_12EditorClientEPNS_10DragClientEPNS_15InspectorClientE
+__ZN7WebCore6ChromeC1EPNS_4PageEPNS_12ChromeClientE
__ZN7WebCore6ChromeC2EPNS_4PageEPNS_12ChromeClientE
+__ZN7WebCore19SelectionControllerC1EPNS_5FrameEb
__ZN7WebCore19SelectionControllerC2EPNS_5FrameEb
-__ZN7WebCore9SelectionC2Ev
+__ZN7WebCore16VisibleSelectionC1Ev
+__ZN7WebCore16VisibleSelectionC2Ev
+__ZN7WebCore14DragControllerC1EPNS_4PageEPNS_10DragClientE
__ZN7WebCore14DragControllerC2EPNS_4PageEPNS_10DragClientE
-__ZN7WebCore4KURLC1Ev
-__ZN7WebCore16DeprecatedStringC1Ev
-__ZN7WebCore20DeprecatedStringDataC2Ev
-__ZN7WebCore16DeprecatedString20makeSharedNullHandleEv
-__ZN7WebCore16DeprecatedString14makeSharedNullEv
+__ZN7WebCore4KURL10invalidateEv
+__ZN7WebCore15FocusControllerC1EPNS_4PageE
__ZN7WebCore15FocusControllerC2EPNS_4PageE
+__ZN7WebCore21ContextMenuControllerC1EPNS_4PageEPNS_17ContextMenuClientE
__ZN7WebCore21ContextMenuControllerC2EPNS_4PageEPNS_17ContextMenuClientE
+__ZN7WebCore19InspectorControllerC1EPNS_4PageEPNS_15InspectorClientE
__ZN7WebCore19InspectorControllerC2EPNS_4PageEPNS_15InspectorClientE
+__ZN7WebCore8SettingsC1EPNS_4PageE
__ZN7WebCore8SettingsC2EPNS_4PageE
__ZN7WebCore12AtomicString4initEv
__ZN7WebCore12AtomicString3addEPKc
__ZN7WebCore10StringImpl5emptyEv
+__ZN7WebCore16threadGlobalDataEv
+__ZN7WebCore16ThreadGlobalDataC1Ev
+__ZN7WebCore16ThreadGlobalDataC2Ev
+__ZN7WebCore10StringImplC1Ev
__ZN7WebCore10StringImplC2Ev
-__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_10StringHashENS_10HashTraitsIS3_EEE3addINS1_11UCharBufferENS1_21UCharBufferTranslatorEEESt4pairINS_24HashTableIteratorAdapterINS_9HashTableIS3_S3_NS_17IdentityExtractorIS3_EES4_S6_S6_EES3_EEbERKT_
+__ZN7WebCore10EventNamesC1Ev
+__ZN7WebCore10EventNamesC2Ev
+__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_10StringHashENS_10HashTraitsIS3_EEE3addIPKcNS1_17CStringTranslatorEEESt4pairINS_24H
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E13allocateTa
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E15deallocate
__ZN7WebCore10StringImplC1EPKcjj
+__ZN7WebCore10StringImplC2EPKcjj
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E4findIS3_NS_
+__ZN7WebCore12AtomicStringC2EPKc
+__ZN7WebCore12ThreadTimersC1Ev
+__ZN7WebCore12ThreadTimersC2Ev
+__ZN7WebCoreL21mainThreadSharedTimerEv
+__ZN7WebCore12ThreadTimers14setSharedTimerEPNS_11SharedTimerE
+__ZN7WebCore21MainThreadSharedTimer16setFiredFunctionEPFvvE
+__ZN7WebCore27setSharedTimerFiredFunctionEPFvvE
+__ZN7WebCore12ThreadTimers17updateSharedTimerEv
+__ZN7WebCore21MainThreadSharedTimer4stopEv
+__ZN7WebCore15stopSharedTimerEv
+__ZN7WebCore15ProgressTrackerC1Ev
__ZN7WebCore15ProgressTrackerC2Ev
__ZN7WebCore15BackForwardListC1EPNS_4PageE
-__ZN7WebCore31setFocusRingColorChangeFunctionEPFvvE
-__ZN7WebCore11observeTintEv
-+[WebCoreControlTintObserver controlTintDidChange]
-__ZN7WebCore19makeRGBAFromNSColorEP7NSColor
-__ZN7WebCore8makeRGBAEiiii
+__ZN7WebCore15BackForwardListC2EPNS_4PageE
+__ZN7WebCore20networkStateNotifierEv
+__ZN7WebCore20NetworkStateNotifierC1Ev
+__ZN7WebCore20NetworkStateNotifierC2Ev
+__ZN7WebCore20NetworkStateNotifier11updateStateEv
+__ZN7WebCore20NetworkStateNotifier30setNetworkStateChangedFunctionEPFvvE
__ZN3WTF7HashSetIPN7WebCore4PageENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E6expandEv
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E6rehashEi
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E13allocateTableEi
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E15deallocateTableEPii
--[WebCoreFrameBridge init]
-__ZN7WebCore9TimerBaseC2Ev
-__ZN7WebCore27setSharedTimerFiredFunctionEPFvvE
+__ZN3WTF9HashTableIPN7WebCore4PageES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore4PageES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore4PageES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTableEi
+__ZN3WTF9HashTableIPN7WebCore4PageES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTableEP
+__ZN7WebCore21JavaScriptDebugServer6sharedEv
+__ZN7WebCore21JavaScriptDebugServerC1Ev
+__ZN7WebCore21JavaScriptDebugServerC2Ev
+__ZN7WebCore21JavaScriptDebugServer11pageCreatedEPNS_4PageE
+__ZN7WebCore21JavaScriptDebugServer28hasListenersInterestedInPageEPNS_4PageE
+__ZNK3WTF9HashTableIPN7WebCore4PageESt4pairIS3_PNS_7HashSetIPNS1_23JavaScriptDebugListenerENS_7PtrHashIS7_EENS_10HashTraitsIS7_
+__ZN7WebCore8Settings27setLocalStorageDatabasePathERKNS_6StringE
__ZN7WebCore5FrameC1EPNS_4PageEPNS_21HTMLFrameOwnerElementEPNS_17FrameLoaderClientE
-__ZN7WebCore12FramePrivateC2EPNS_4PageEPNS_5FrameES4_PNS_21HTMLFrameOwnerElementEPNS_17FrameLoaderClientE
+__ZN7WebCore5FrameC2EPNS_4PageEPNS_21HTMLFrameOwnerElementEPNS_17FrameLoaderClientE
+__ZN7WebCore11FrameLoaderC1EPNS_5FrameEPNS_17FrameLoaderClientE
+__ZN7WebCore11FrameLoaderC2EPNS_5FrameEPNS_17FrameLoaderClientE
+__ZN7WebCore11PolicyCheckC1Ev
+__ZN7WebCore11PolicyCheckC2Ev
+__ZN3WTF6RefPtrIN7WebCore10StringImplEED2Ev
+__ZN7WebCore16ScriptControllerC1EPNS_5FrameE
+__ZN7WebCore16ScriptControllerC2EPNS_5FrameE
+__ZN7WebCore16ScriptController18initJavaJSBindingsEv
+__ZN3JSC8Bindings12JavaJSObject22initializeJNIThreadingEv
+__ZN3JSC8Bindings8Instance21setDidExecuteFunctionEPFvPNS_9ExecStateEPNS_8JSObjectEE
+__ZN7WebCore6EditorC1EPNS_5FrameE
__ZN7WebCore6EditorC2EPNS_5FrameE
+__ZN7WebCore22DeleteButtonControllerC1EPNS_5FrameE
__ZN7WebCore22DeleteButtonControllerC2EPNS_5FrameE
+__ZN7WebCore12EventHandlerC1EPNS_5FrameE
__ZN7WebCore12EventHandlerC2EPNS_5FrameE
__ZN7WebCore19AnimationControllerC1EPNS_5FrameE
+__ZN7WebCore19AnimationControllerC2EPNS_5FrameE
__ZN7WebCore26AnimationControllerPrivateC1EPNS_5FrameE
-__ZN7WebCore11FrameLoaderC2EPNS_5FrameEPNS_17FrameLoaderClientE
-__ZN7WebCore11PolicyCheckC2Ev
-__ZN7WebCore16DeprecatedStringC1ERKS0_
-__ZN7WebCore16DeprecatedStringD1Ev
-__ZN7WebCore20DeprecatedStringDataD2Ev
-__ZN7WebCore10EventNames4initEv
-__ZN3WTF6RefPtrIN7WebCore10StringImplEEC2EPS2_
-__ZN3WTF10RefCountedIN7WebCore10StringImplEE3refEv
+__ZN7WebCore26AnimationControllerPrivateC2EPNS_5FrameE
__ZN7WebCore9HTMLNames4initEv
+__ZN7WebCore13QualifiedNameC1ERKNS_12AtomicStringES3_S3_
__ZN7WebCore13QualifiedNameC2ERKNS_12AtomicStringES3_S3_
-__ZN3WTF7HashSetIPN7WebCore13QualifiedName17QualifiedNameImplENS1_9QNameHashENS_10HashTraitsIS4_EEE3addINS1_23QualifiedNameComponentsENS1_25QNameComponentsTranslatorEEESt4pairINS_24HashTableIteratorAdapterINS_9HashTableIS4_S4_NS_17IdentityExtractorIS4_EES5_S7_S7_EES4_EEbERKT_
-__ZN3WTF9HashTableIPN7WebCore13QualifiedName17QualifiedNameImplES4_NS_17IdentityExtractorIS4_EENS1_9QNameHashENS_10HashTraitsIS4_EES9_E6expandEv
+__ZN3WTF7HashSetIPN7WebCore13QualifiedName17QualifiedNameImplENS1_17QualifiedNameHashENS_10HashTraitsIS4_EEE3addINS1_23Qualifie
+__ZN3WTF9HashTableIPN7WebCore13QualifiedName17QualifiedNameImplES4_NS_17IdentityExtractorIS4_EENS1_17QualifiedNameHashENS_10Has
__ZN7WebCore12AtomicString3addEPNS_10StringImplE
-__ZN7WebCore12AtomicStringD1Ev
__ZN3WTF10RefCountedIN7WebCore10StringImplEE5derefEv
-__ZN3WTF9HashTableIPN7WebCore13QualifiedName17QualifiedNameImplES4_NS_17IdentityExtractorIS4_EENS1_9QNameHashENS_10HashTraitsIS4_EES9_E4findIS4_NS_22IdentityHashTranslatorIS4_S4_S7_EEEENS_17HashTableIteratorIS4_S4_S6_S7_S9_S9_EERKT_
__ZN7WebCore13QualifiedName4initEv
__ZN7WebCore17MediaFeatureNames4initEv
__ZN7WebCore8SVGNames4initEv
__ZN7WebCore10XLinkNames4initEv
__ZN7WebCore8XMLNames4initEv
__ZN7WebCore4Page12setMainFrameEN3WTF10PassRefPtrINS_5FrameEEE
-__ZN7WebCore5Frame9setBridgeEP18WebCoreFrameBridge
__ZNK7WebCore5Frame4treeEv
__ZN7WebCore9FrameTree7setNameERKNS_12AtomicStringE
+__ZNK7WebCore9FrameTree6parentEb
__ZN7WebCore5Frame4initEv
__ZN7WebCore11FrameLoader4initEv
-__ZNK7WebCore6String16deprecatedStringEv
-__ZN7WebCore16DeprecatedStringC2EPKci
-__ZN7WebCore20DeprecatedStringData10initializeEPKcj
-__ZN7WebCore4KURLC1ERKNS_16DeprecatedStringE
-__ZN7WebCore4KURL5parseEPKcPKNS_16DeprecatedStringE
-__ZN7WebCore16DeprecatedStringaSEPKc
-__ZN7WebCore16DeprecatedString9setLatin1EPKci
-__ZN7WebCore16DeprecatedString26detachAndDiscardCharactersEv
-__ZN7WebCore16DeprecatedString6detachEv
-__ZN7WebCore20DeprecatedStringDataC2EPKcj
-__ZN7WebCore10freeHandleEPPNS_20DeprecatedStringDataE
+__ZN7WebCore4KURLC1EPKc
+__ZN7WebCore4KURLC2EPKc
+__ZN7WebCore4KURL5parseEPKcPKNS_6StringE
__ZN7WebCore14DocumentLoaderC2ERKNS_15ResourceRequestERKNS_14SubstituteDataE
-__ZN3WTF6RefPtrIN7WebCore18MainResourceLoaderEEC2Ev
-__ZN3WTF7HashSetINS_6RefPtrIN7WebCore14ResourceLoaderEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
-__ZN3WTF6RefPtrIN7WebCore12SharedBufferEEC2Ev
-__ZN3WTF23HashTableRefCounterBaseILb1ENS_9HashTableIPN7WebCore10StringImplESt4pairIS4_iENS_18PairFirstExtractorIS6_EENS2_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS4_EENSB_IiEEEESC_EENS_18PairBaseHashTraitsINSB_INS2_6StringEEENSB_IjEEEEE8derefAllERSF_
-__ZN3WTF7HashMapIN7WebCore6StringES2_NS1_15CaseFoldingHashENS_10HashTraitsIS2_EES5_E3setERKS2_S8_
-__ZN7WebCore4KURLD1Ev
-__ZN3WTF9RetainPtrI12NSURLRequestEC2Ev
-__ZN7WebCore6StringC1Ev
-__ZN3WTF9RetainPtrI13NSURLResponseEC2Ev
-__ZN7WebCore13ResourceErrorC1Ev
+__ZN3WTF6VectorIN7WebCore6StringELm0EEC1ERKS3_
+__ZN3WTF6VectorIN7WebCore6StringELm0EEC2ERKS3_
__ZN7WebCore16NavigationActionC1Ev
-__ZN3WTF6VectorIN7WebCore16ResourceResponseELm0EEC2Ev
+__ZN7WebCore16NavigationActionC2Ev
__ZNK7WebCore5Frame4pageEv
__ZN7WebCore11FrameLoader23setPolicyDocumentLoaderEPNS_14DocumentLoaderE
__ZN7WebCore14DocumentLoader8setFrameEPNS_5FrameE
__ZN7WebCore14DocumentLoader13attachToFrameEv
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_iENS_18PairFirstExtractorIS5_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSA_IiEEEESB_E4swapERSE_
__ZN7WebCore11FrameLoader28setProvisionalDocumentLoaderEPNS_14DocumentLoaderE
__ZN7WebCore11FrameLoader8setStateENS_10FrameStateE
__ZN7WebCore11FrameLoader22provisionalLoadStartedEv
-__ZNK7WebCore5Frame8documentEv
-__ZNK7WebCore5Frame6loaderEv
-__ZNK7WebCore11FrameLoader10isCompleteEv
__ZN7WebCore11FrameLoader17cancelRedirectionEb
__ZN7WebCore11FrameLoader20stopRedirectionTimerEv
__ZNK7WebCore9TimerBase8isActiveEv
-__ZN7WebCore14DocumentLoader11setResponseERKNS_16ResourceResponseE
-__ZN7WebCore16DeprecatedStringaSERKS0_
-__ZN7WebCore16DeprecatedString5derefEv
+__ZN7WebCoreL17timersReadyToFireEv
+__ZNK3WTF9HashTableIPKN7WebCore9TimerBaseES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E8containsIS4
__ZN7WebCore14DocumentLoader15finishedLoadingEv
__ZN7WebCore14DocumentLoader13commitIfReadyEv
__ZNK7WebCore14DocumentLoader11frameLoaderEv
+__ZNK7WebCore5Frame6loaderEv
__ZN7WebCore11FrameLoader21commitProvisionalLoadEN3WTF10PassRefPtrINS_10CachedPageEEE
+__ZN7WebCore11FrameLoader23cachePageForHistoryItemEPNS_11HistoryItemE
__ZN7WebCore11FrameLoader12canCachePageEv
__ZNK7WebCore11FrameLoader8loadTypeEv
+__ZN7WebCore11FrameLoader31canCachePageContainingThisFrameEv
__ZN7WebCore11FrameLoader19closeOldDataSourcesEv
__ZN7WebCore11FrameLoader21transitionToCommittedEN3WTF10PassRefPtrINS_10CachedPageEEE
__ZN7WebCore11FrameLoader22updateHistoryForCommitEv
__ZN7WebCore21isBackForwardLoadTypeENS_13FrameLoadTypeE
__ZN7WebCore11FrameLoader17setDocumentLoaderEPNS_14DocumentLoaderE
-__ZNK7WebCore11FrameLoader14documentLoaderEv
__ZN7WebCore11FrameLoader14detachChildrenEv
-__ZNK7WebCore14DocumentLoader5titleEv
__ZN7WebCore11FrameLoader28updateHistoryForStandardLoadEv
-__ZNK7WebCore5Frame12ownerElementEv
-__ZNK7WebCore14DocumentLoader16isClientRedirectEv
+__ZNK7WebCore5Frame8settingsEv
__ZNK7WebCore14DocumentLoader13urlForHistoryEv
__ZNK7WebCore19ResourceRequestBase3urlEv
__ZNK7WebCore19ResourceRequestBase21updateResourceRequestEv
__ZNK7WebCore5Frame4viewEv
-__ZNK7WebCore14DocumentLoader8responseEv
__ZNK7WebCore16ResourceResponse13nsURLResponseEv
-__ZNK7WebCore4KURL8getNSURLEv
-__ZNK7WebCore16DeprecatedString6isNullEv
--[WebCoreFrameBridge createFrameViewWithNSView:marginWidth:marginHeight:]
+__ZNK7WebCore4KURLcvP5NSURLEv
+-[NSURLResponse(WebCoreURLResponse) _webcore_MIMEType]
+__ZNK7WebCore5Frame13ownerRendererEv
__ZN7WebCore5Frame7setViewEPNS_9FrameViewE
__ZNK7WebCore5Frame12eventHandlerEv
__ZN7WebCore12EventHandler5clearEv
__ZN7WebCore9TimerBase4stopEv
__ZN7WebCore9TimerBase15setNextFireTimeEd
+__ZN3WTF9HashTableIPKN7WebCore9TimerBaseES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E4findIS4_NS_2
__ZN7WebCore11FrameLoader37resetMultipleFormSubmissionProtectionEv
+__ZN7WebCore9FrameViewC1EPNS_5FrameE
__ZN7WebCore9FrameViewC2EPNS_5FrameE
+__ZN7WebCore10ScrollViewC2Ev
+__ZN7WebCore6WidgetC2EP6NSView
+__ZN7WebCore6Widget4initEP6NSView
__ZN7WebCore9FrameView4initEv
+__ZN7WebCore9FrameView5resetEv
+__ZN3WTF6VectorIN7WebCore7IntRectELm0EE14shrinkCapacityEm
+__ZNK7WebCore5Frame8documentEv
+__ZN7WebCore10ScrollView4showEv
__ZN7WebCore6Widget4showEv
-__ZN7WebCore6Widget7setViewEP6NSView
-__ZNK7WebCore5Frame6bridgeEv
--[WebCoreFrameBridge setDrawsBackground:]
__ZN7WebCore9FrameView14setTransparentEb
--[WebCoreFrameBridge setBaseBackgroundColor:]
__ZN7WebCore16colorFromNSColorEP7NSColor
+__ZN7WebCoreL19makeRGBAFromNSColorEP7NSColor
+__ZN7WebCore8makeRGBAEiiii
__ZN7WebCore9FrameView22setBaseBackgroundColorENS_5ColorE
+__ZN7WebCore9FrameView29setShouldUpdateWhileOffscreenEb
__ZNK7WebCore9FrameTree12traverseNextEPKNS_5FrameE
--[WebCoreFrameBridge installInFrame:]
-__ZN7WebCore5Frame13ownerRendererEv
+__ZN7WebCore6Widget21releasePlatformWidgetEv
+__ZN7WebCore6Widget20retainPlatformWidgetEv
__ZN7WebCore9FrameView14initScrollbarsEv
-__ZNK7WebCore10ScrollView14hScrollbarModeEv
-__ZNK7WebCore6Widget7getViewEv
-__ZN7WebCore9FrameView17setScrollbarsModeENS_13ScrollbarModeE
-__ZN7WebCore10ScrollView17setScrollbarsModeENS_13ScrollbarModeE
-__ZNK7WebCore11FrameLoader6clientEv
+__ZN7WebCore9FrameView27updateDefaultScrollbarStateEv
+__ZNK7WebCore10ScrollView14scrollbarModesERNS_13ScrollbarModeES2_
+__ZNK7WebCore10ScrollView22platformScrollbarModesERNS_13ScrollbarModeES2_
+__ZN7WebCore10ScrollView17setScrollbarModesENS_13ScrollbarModeES1_
+__ZN7WebCore10ScrollView16setParentVisibleEb
+__ZNK7WebCore5Frame12ownerElementEv
__ZNK7WebCore14DocumentLoader16responseMIMETypeEv
__ZNK7WebCore20ResourceResponseBase8mimeTypeEv
-__ZNK7WebCore20ResourceResponseBase22updateResourceResponseEv
+__ZNK7WebCore20ResourceResponseBase8lazyInitEv
+__ZN7WebCore16ResourceResponse16platformLazyInitEv
__ZNK7WebCore14DocumentLoader3urlEv
__ZNK7WebCore14DocumentLoader7requestEv
__ZNK7WebCore14DocumentLoader11responseURLEv
__ZNK7WebCore20ResourceResponseBase3urlEv
-__ZN7WebCore4KURLC2EPKc
-__ZN7WebCore22appendEscapingBadCharsERPcPKcm
-__ZN7WebCore20DeprecatedStringData14createAndAdoptERS0_
-__ZN7WebCore20DeprecatedStringData5adoptERS0_
+__ZN7WebCore8blankURLEv
+__ZN7WebCoreL22appendEscapingBadCharsERPcPKcm
+__ZN7WebCore6StringC1EPKcj
+__ZN7WebCore6StringC2EPKcj
__ZN3WTF6VectorIcLm4096EE6shrinkEm
__ZN7WebCore11FrameLoader10didOpenURLERKNS_4KURLE
__ZNK7WebCore5Frame6editorEv
-__ZN7WebCore6Editor18setLastEditCommandEN3WTF10PassRefPtrINS_11EditCommandEEE
+__ZN7WebCore6Editor20clearLastEditCommandEv
__ZN7WebCore11FrameLoader8closeURLEv
__ZN7WebCore11FrameLoader17saveDocumentStateEv
__ZN7WebCore11FrameLoader11stopLoadingEb
__ZN7WebCore6Editor23clearUndoRedoOperationsEv
__ZNK7WebCore6Editor6clientEv
-__ZN7WebCore5Frame18setJSStatusBarTextERKNS_6StringE
-__ZN7WebCore6Chrome16setStatusbarTextEPNS_5FrameERKNS_6StringE
-__ZNK7WebCore5Frame25backslashAsCurrencySymbolEv
-__ZN7WebCore5Frame25setJSDefaultStatusBarTextERKNS_6StringE
-__ZNK7WebCore4KURL8protocolEv
-__ZNK7WebCore16DeprecatedString4leftEj
-__ZNK7WebCore16DeprecatedString3midEjj
-__ZNK7WebCore16DeprecatedString10startsWithEPKc
+__ZNK7WebCore4KURL10protocolIsEPKc
+__ZNK7WebCore6StringixEj
__ZN7WebCore11FrameLoader7startedEv
-__ZN7WebCore11FrameLoader6openedEv
-__ZNK7WebCore14DocumentLoader23isLoadingFromCachedPageEv
__ZN7WebCore11FrameLoader23finishedLoadingDocumentEPNS_14DocumentLoaderE
+__ZN7WebCore14ArchiveFactory17isArchiveMimeTypeERKNS_6StringE
+__ZNK3WTF9HashTableIN7WebCore6StringESt4pairIS2_PFNS_10PassRefPtrINS1_7ArchiveEEEPNS1_12SharedBufferEEENS_18PairFirstExtractorI
__ZN7WebCore11FrameLoader3endEv
__ZN7WebCore11FrameLoader27endIfNotLoadingMainResourceEv
-__ZN7WebCore11FrameLoader14checkCompletedEv
-__ZN7WebCore11FrameLoader22checkCallImplicitCloseEv
-__ZN7WebCore11FrameLoader9completedEv
-__ZN7WebCore11FrameLoader15submitFormAgainEv
-__ZN7WebCore11FrameLoader17checkLoadCompleteEv
-__ZN7WebCore11FrameLoader26recursiveCheckLoadCompleteEv
-__ZN7WebCore11FrameLoader29checkLoadCompleteForThisFrameEv
-__ZNK7WebCore14DocumentLoader19isLoadingInAPISenseEv
-__ZNK7WebCore11FrameLoader5stateEv
-__ZNK7WebCore14DocumentLoader9isLoadingEv
-__ZNK7WebCore11FrameLoader17subframeIsLoadingEv
-__ZN7WebCore11FrameLoader16markLoadCompleteEv
-__ZN7WebCore11FrameLoader18frameLoadCompletedEv
-__ZN7WebCore11FrameLoader22setPreviousHistoryItemEN3WTF10PassRefPtrINS_11HistoryItemEEE
-__ZN7WebCore11currentTimeEv
-__ZN7WebCore14DocumentLoader22stopRecordingResponsesEv
-__ZN7WebCore11FrameLoader15startIconLoaderEv
-__ZNK7WebCore11FrameLoader18isLoadingMainFrameEv
-__ZN7WebCore11FrameLoader7iconURLEv
-__ZN7WebCoreeqERKNS_16DeprecatedStringEPKc
-__ZN7WebCore6StringC1ERKNS_16DeprecatedStringE
-__ZN7WebCore20DeprecatedStringData11makeUnicodeEv
__ZN7WebCore11FrameLoader5beginERKNS_4KURLEbPNS_14SecurityOriginE
-__ZN7WebCore11FrameLoader5clearEbb
-__ZN7WebCore6Editor5clearEv
-__ZN7WebCore4KURL7setUserERKNS_16DeprecatedStringE
-__ZN7WebCore4KURL7setPassERKNS_16DeprecatedStringE
-__ZN7WebCore4KURL6setRefERKNS_16DeprecatedStringE
__ZNK7WebCore5Frame16inViewSourceModeEv
-__ZN7WebCore17DOMImplementation8instanceEv
__ZN7WebCore17DOMImplementation14createDocumentERKNS_6StringEPNS_5FrameEb
__ZN7WebCore5equalEPNS_10StringImplEPKc
-__ZN7WebCore12HTMLDocumentC2EPNS_17DOMImplementationEPNS_5FrameE
-__ZN7WebCore13ContainerNodeC2EPNS_8DocumentE
-__ZN7WebCore15EventTargetNodeC2EPNS_8DocumentE
-__ZN7WebCore4NodeC2EPNS_8DocumentE
+__ZN7WebCore12HTMLDocumentC1EPNS_5FrameE
+__ZN7WebCore12HTMLDocumentC2EPNS_5FrameE
+__ZN7WebCore8DocumentC2EPNS_5FrameEb
+__ZN7WebCore4NodeC2EPNS_8DocumentEbbb
+__ZN7WebCore22ScriptExecutionContextC2Ev
__ZN7WebCore14StyleSheetListC1EPNS_8DocumentE
-__ZN7WebCore21DeprecatedPtrListImplC2EPFvPvE
-__ZN7WebCore23DeprecatedValueListImplC2EPFvPNS_27DeprecatedValueListImplNodeEEPFS2_S2_E
-__ZN7WebCore14HTMLCollection14CollectionInfoC2Ev
-__ZN7WebCore14HTMLCollection14CollectionInfo5resetEv
-__ZN3WTF20deleteAllPairSecondsIPNS_6VectorIPN7WebCore7ElementELm0EEEKNS_7HashMapIPNS2_16AtomicStringImplES6_NS_7PtrHashIS9_EENS_10HashTraitsIS9_EENSC_IS6_EEEEEEvRT0_
-__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E4swapERSB_
-__ZN7WebCore9DocLoaderC2EPNS_5FrameEPNS_8DocumentE
+__ZN7WebCore14StyleSheetListC2EPNS_8DocumentE
+__ZN7WebCore15CollectionCacheC1Ev
+__ZN7WebCore15CollectionCacheC2Ev
+__ZN7WebCore15CollectionCache5resetEv
+__ZN3WTF20deleteAllPairSecondsIPNS_6VectorIPN7WebCore7ElementELm0EEEKNS_7HashMapIPNS2_16AtomicStringImplES6_NS_7PtrHashIS9_EENS
+__ZN7WebCore9DocLoaderC1EPNS_8DocumentE
+__ZN7WebCore9DocLoaderC2EPNS_8DocumentE
__ZN7WebCore5cacheEv
+__ZN7WebCore5CacheC1Ev
__ZN7WebCore5CacheC2Ev
+__ZN7WebCore6LoaderC1Ev
__ZN7WebCore6LoaderC2Ev
+__ZN7WebCore6Loader4HostC1ERKNS_12AtomicStringEj
+__ZN7WebCore6Loader4HostC2ERKNS_12AtomicStringEj
+__ZN7WebCore43initializeMaximumHTTPConnectionCountPerHostEv
__ZN7WebCore5Cache12addDocLoaderEPNS_9DocLoaderE
__ZN3WTF7HashSetIPN7WebCore9DocLoaderENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore9DocLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore9DocLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore9DocLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTabl
+__ZN3WTF9HashTableIPN7WebCore9DocLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTa
+__ZN7WebCore8Document14resetLinkColorEv
+__ZN7WebCore7makeRGBEiii
+__ZN7WebCore8Document21resetVisitedLinkColorEv
+__ZN7WebCore8Document20resetActiveLinkColorEv
+__ZN7WebCore5Color13setNamedColorERKNS_6StringE
+__ZN7WebCore8Document19initSecurityContextEv
+__ZN7WebCore14SecurityOrigin6createERKNS_4KURLE
+__ZN7WebCore14SecurityOriginC1ERKNS_4KURLE
+__ZN7WebCore14SecurityOriginC2ERKNS_4KURLE
+__ZNK7WebCore4KURL8protocolEv
+__ZNK7WebCore6String9substringEjj
+__ZN7WebCore10StringImpl9substringEjj
+__ZNK7WebCore6String5lowerEv
+__ZN7WebCore10StringImpl5lowerEv
+__ZNK7WebCore4KURL4hostEv
+__ZN7WebCore24decodeURLEscapeSequencesERKNS_6StringE
+__ZN7WebCore12UTF8EncodingEv
+__ZN7WebCore12TextEncodingC1EPKc
+__ZN7WebCore12TextEncodingC2EPKc
+__ZN7WebCore31atomicCanonicalTextEncodingNameEPKc
+__ZN7WebCore15TextCodecLatin121registerEncodingNamesEPFvPKcS2_E
+__ZN7WebCoreL24addToTextEncodingNameMapEPKcS1_
+__ZNK3WTF7HashMapIPKcS2_N7WebCore20TextEncodingNameHashENS_10HashTraitsIS2_EES6_E3getERKS2_
+__ZN3WTF7HashMapIPKcS2_N7WebCore20TextEncodingNameHashENS_10HashTraitsIS2_EES6_E3addERKS2_S9_
+__ZN3WTF9HashTableIPKcSt4pairIS2_S2_ENS_18PairFirstExtractorIS4_EEN7WebCore20TextEncodingNameHashENS_14PairHashTraitsINS_10Hash
+__ZN7WebCore15TextCodecLatin114registerCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
+__ZN7WebCoreL17addToTextCodecMapEPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvES9_
+__ZN3WTF7HashMapIPKcN7WebCore16TextCodecFactoryENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS7_IS4_EEE3addERKS2_RKS4_
+__ZN3WTF9HashTableIPKcSt4pairIS2_N7WebCore16TextCodecFactoryEENS_18PairFirstExtractorIS6_EENS_7PtrHashIS2_EENS_14PairHashTraits
+__ZN7WebCore14TextCodecUTF1621registerEncodingNamesEPFvPKcS2_E
+__ZN7WebCore14TextCodecUTF1614registerCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
+__ZN7WebCore20TextCodecUserDefined21registerEncodingNamesEPFvPKcS2_E
+__ZN7WebCore20TextCodecUserDefined14registerCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
+__ZN7WebCore12TextCodecICU25registerBaseEncodingNamesEPFvPKcS2_E
+__ZN7WebCore12TextCodecICU18registerBaseCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
+__ZN7WebCoreL21encodingRegistryMutexEv
+__ZNK7WebCore12TextEncoding25backslashAsCurrencySymbolEv
+__ZN7WebCore30noExtendedTextEncodingNameUsedEv
+__ZN7WebCore24decodeURLEscapeSequencesERKNS_6StringERKNS_12TextEncodingE
+__ZN7WebCore10StringImpl4findEti
+__ZN3WTF6VectorItLm0EE6appendItEEvPKT_m
+__ZN7WebCore10StringImpl5adoptERN3WTF6VectorItLm0EEE
+__ZNK7WebCore4KURL4portEv
+__ZN7WebCore11FrameLoader30shouldTreatURLSchemeAsNoAccessERKNS_6StringE
+__ZN7WebCoreL15noAccessSchemesEv
+__ZNK3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_15CaseFoldingHashENS_10HashTraitsIS2_EES7_E8containsIS2
+__ZNK7WebCore14SecurityOrigin7isLocalEv
+__ZN7WebCore11FrameLoader27shouldTreatURLSchemeAsLocalERKNS_6StringE
+__ZN7WebCoreL24isDefaultPortForProtocolEtRKNS_6StringE
+__ZN7WebCore22ScriptExecutionContext17setSecurityOriginEN3WTF10PassRefPtrINS_14SecurityOriginEEE
+__ZN7WebCore11FrameLoader32allowSubstituteDataAccessToLocalEv
__ZNK7WebCore8Document8settingsEv
-__ZNK7WebCore5Frame8settingsEv
+__ZNK7WebCore14SecurityOrigin7isEmptyEv
+__ZN7WebCore11FrameLoader6openerEv
+__ZN7WebCore8Document15initDNSPrefetchEv
+__ZNK7WebCore8Document14parentDocumentEv
+__ZN7WebCore11FrameLoader5clearEbb
+__ZN7WebCore6Editor5clearEv
+__ZN3WTF6VectorIN7WebCore20CompositionUnderlineELm0EE14shrinkCapacityEm
+__ZN7WebCore5Frame6scriptEv
+__ZN7WebCore16ScriptController27updatePlatformScriptObjectsEv
+__ZN7WebCore4KURL7setUserERKNS_6StringE
+__ZN7WebCore4KURL7setPassERKNS_6StringE
+__ZN7WebCore4KURL6setRefERKNS_6StringE
+__ZN7WebCore5Frame11setDocumentEN3WTF10PassRefPtrINS_8DocumentEEE
+__ZNK7WebCore5Frame9selectionEv
+__ZNK7WebCore19SelectionController18isFocusedAndActiveEv
+__ZN7WebCore8Document6attachEv
+__ZN7WebCore11RenderArenaC1Ej
+__ZN7WebCore11RenderArenaC2Ej
+__ZN7WebCore13InitArenaPoolEPNS_9ArenaPoolEPKcjj
+__ZNK7WebCore8Document4viewEv
+__ZN7WebCore12RenderObjectnwEmPNS_11RenderArenaE
+__ZN7WebCore11RenderArena8allocateEm
+__ZN7WebCore13ArenaAllocateEPNS_9ArenaPoolEj
+__ZN7WebCore10RenderViewC1EPNS_4NodeEPNS_9FrameViewE
+__ZN7WebCore10RenderViewC2EPNS_4NodeEPNS_9FrameViewE
+__ZN7WebCore11RenderBlockC2EPNS_4NodeE
+__ZN7WebCore9RenderBoxC2EPNS_4NodeE
+__ZN7WebCore20RenderBoxModelObjectC2EPNS_4NodeE
+__ZN7WebCore12RenderObjectC2EPNS_4NodeE
+__ZN7WebCore12RenderObject18setPrefWidthsDirtyEbb
+__ZN7WebCore11RenderLayernwEmPNS_11RenderArenaE
+__ZN7WebCore11RenderLayerC1EPNS_20RenderBoxModelObjectE
+__ZN7WebCore11RenderLayerC2EPNS_20RenderBoxModelObjectE
+__ZNK7WebCore11RenderLayer22shouldBeNormalFlowOnlyEv
+__ZNK7WebCore11RenderBlock15virtualChildrenEv
__ZNK7WebCore8Document14userStyleSheetEv
__ZN7WebCore16CSSStyleSelectorC1EPNS_8DocumentERKNS_6StringEPNS_14StyleSheetListEPNS_13CSSStyleSheetEbb
-__ZN7WebCore15BackgroundLayerC2Ev
-__ZN7WebCore16CSSStyleSelector4initEv
+__ZN7WebCore16CSSStyleSelectorC2EPNS_8DocumentERKNS_6StringEPNS_14StyleSheetListEPNS_13CSSStyleSheetEbb
+__ZN7WebCore9FillLayerC1ENS_14EFillLayerTypeE
+__ZN7WebCore9FillLayerC2ENS_14EFillLayerTypeE
+__ZN7WebCore16CSSStyleSelector15SelectorCheckerC1EPNS_8DocumentEb
+__ZN7WebCore16CSSStyleSelector15SelectorCheckerC2EPNS_8DocumentEb
+__ZNK7WebCore12HTMLDocument14isHTMLDocumentEv
__ZN7WebCore15CSSFontSelectorC1EPNS_8DocumentE
-__ZN7WebCore16CSSStyleSelector16loadDefaultStyleEv
+__ZN7WebCore15CSSFontSelectorC2EPNS_8DocumentE
+__ZN7WebCore9fontCacheEv
+__ZN7WebCore9FontCache9addClientEPNS_12FontSelectorE
+__ZN3WTF7HashSetIPN7WebCore12FontSelectorENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore12FontSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore12FontSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore12FontSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocate
+__ZN3WTF9HashTableIPN7WebCore12FontSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15dealloca
+__ZN7WebCore16CSSStyleSelector4initEv
+__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm64EE14shrinkCapacityEm
+__ZNK7WebCore8Document20cacheDocumentElementEv
+__ZN7WebCore10CSSRuleSetC1Ev
__ZN7WebCore10CSSRuleSetC2Ev
-__ZN7WebCore12parseUASheetIA9488_cEEPNS_13CSSStyleSheetERKT_
-__ZN7WebCore12parseUASheetEPKcj
+__ZN7WebCoreL12parseUASheetEPKcj
+__ZN7WebCoreL12parseUASheetERKNS_6StringE
+__ZN7WebCore13CSSStyleSheetC1EPS0_RKNS_6StringES4_
__ZN7WebCore13CSSStyleSheetC2EPS0_RKNS_6StringES4_
__ZN7WebCore10StyleSheetC2EPS0_RKNS_6StringE
-__ZN7WebCore6StringC1EPKcj
-__ZN7WebCore10StringImpl6createEPKcj
__ZN7WebCore13CSSStyleSheet11parseStringERKNS_6StringEb
+__ZN7WebCore9CSSParserC1Eb
__ZN7WebCore9CSSParserC2Eb
__ZN7WebCore9CSSParser10parseSheetEPNS_13CSSStyleSheetERKNS_6StringE
__ZN7WebCore9CSSParser11setupParserEPKcRKNS_6StringES2_
@@ -573,486 +524,548 @@ __Z10cssyyparsePv
__ZN7WebCore9CSSParser3lexEPv
__ZN7WebCore9CSSParser3lexEv
__ZN7WebCore9CSSParser4textEPi
-__ZNK7WebCore13CSSStyleSheet15isCSSStyleSheetEv
-__ZN7WebCore12AtomicString3addEPKti
-__ZN7WebCore13CSSStyleSheet12addNamespaceEPNS_9CSSParserERKNS_12AtomicStringES5_
__ZNK7WebCore9CSSParser8documentEv
+__ZNK7WebCore13CSSStyleSheet15isCSSStyleSheetEv
__ZN7WebCore9CSSParser22createFloatingSelectorEv
-__ZN7WebCore13QualifiedNameC2ERKS0_
__ZN3WTF7HashSetIPN7WebCore11CSSSelectorENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore13QualifiedNameaSERKS0_
+__ZN3WTF9HashTableIPN7WebCore11CSSSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore11CSSSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore11CSSSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateT
+__ZN3WTF9HashTableIPN7WebCore11CSSSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocat
+__ZN7WebCore12AtomicString3addEPKti
+__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_10StringHashENS_10HashTraitsIS3_EEE3addINS1_11UCharBufferENS1_21UCharBufferTranslat
__ZN7WebCore13QualifiedName5derefEv
-__ZN7WebCore13QualifiedNameD2Ev
-__ZN7WebCore11ParseString5lowerEv
-__ZN7WebCore16deprecatedStringERKNS_11ParseStringE
-__ZN7WebCore16DeprecatedStringC2EPKNS_14DeprecatedCharEj
-__ZN7WebCore20DeprecatedStringData10initializeEPKNS_14DeprecatedCharEj
-__ZN7WebCore20DeprecatedStringData9makeAsciiEv
-__ZN7WebCore13getPropertyIDEPKci
-__Z8findPropPKcj
-__ZNK7WebCore16DeprecatedString5lowerEv
-__Z9findValuePKcj
+__ZN3WTF15deleteAllValuesIPN7WebCore11CSSSelectorELm0EEEvRKNS_6VectorIT_XT0_EEE
+__ZN3WTF6VectorIPN7WebCore11CSSSelectorELm0EE6shrinkEm
+__ZN7WebCore9CSSParser20sinkFloatingSelectorEPNS_11CSSSelectorE
+__ZN3WTF9HashTableIPN7WebCore11CSSSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS
+__ZN3WTF9HashTableIPN7WebCore11CSSSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAnd
+__ZN3WTF9HashTableIPN7WebCore11CSSSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3
+__ZN3WTF6VectorIPN7WebCore11CSSSelectorELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore11CSSSelectorELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore11CSSSelectorELm0EE15reserveCapacityEm
+__ZN7WebCore13cssPropertyIDERKNS_15CSSParserStringE
+__ZN7WebCoreL13cssPropertyIDEPKtj
+__ZN7WebCore17cssValueKeywordIDERKNS_15CSSParserStringE
__ZN7WebCore9CSSParser23createFloatingValueListEv
-__ZN3WTF7HashSetIPN7WebCore9ValueListENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore9CSSParser17sinkFloatingValueERNS_5ValueE
-__ZN7WebCore9CSSParser21sinkFloatingValueListEPNS_9ValueListE
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E4findIiNS_22IdentityHashTranslatorIiiS4_EEEENS_17HashTableIteratorIiiS2_S4_S6_S6_EERKT_
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E47removeAndInvalidateWithoutEntryConsistencyCheckEPi
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E6removeEPi
+__ZN3WTF7HashSetIPN7WebCore18CSSParserValueListENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore18CSSParserValueListES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6exp
+__ZN3WTF9HashTableIPN7WebCore18CSSParserValueListES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6reh
+__ZN3WTF9HashTableIPN7WebCore18CSSParserValueListES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13al
+__ZN3WTF9HashTableIPN7WebCore18CSSParserValueListES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15de
+__ZN7WebCore9CSSParser17sinkFloatingValueERNS_14CSSParserValueE
+__ZN7WebCore18CSSParserValueList8addValueERKNS_14CSSParserValueE
+__ZN7WebCore9CSSParser21sinkFloatingValueListEPNS_18CSSParserValueListE
+__ZN3WTF9HashTableIPN7WebCore18CSSParserValueListES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4fin
+__ZN3WTF9HashTableIPN7WebCore18CSSParserValueListES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47re
+__ZN3WTF9HashTableIPN7WebCore18CSSParserValueListES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rem
__ZN7WebCore9CSSParser10parseValueEib
__ZN7WebCore9CSSParser21checkForOrphanedUnitsEv
+__ZN7WebCore9CSSParser17checkForVariablesEPNS_18CSSParserValueListE
+__ZN7WebCore17CSSPrimitiveValue16createIdentifierEi
+__ZN7WebCore17CSSPrimitiveValueC1Ei
__ZN7WebCore17CSSPrimitiveValueC2Ei
__ZN7WebCore9CSSParser11addPropertyEiN3WTF10PassRefPtrINS_8CSSValueEEEb
-__ZN7WebCore9ValueListD2Ev
-__ZN3WTF6VectorIN7WebCore5ValueELm16EE6shrinkEm
-__ZN7WebCore9CSSParser15createStyleRuleEPNS_11CSSSelectorE
-__ZN7WebCore12CSSStyleRuleC2EPNS_9StyleBaseE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore9StyleBaseEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore9StyleBaseEEELm0EE15reserveCapacityEm
-__ZN7WebCore9CSSParser20sinkFloatingSelectorEPNS_11CSSSelectorE
+__ZN7WebCore18CSSParserValueListD1Ev
+__ZN7WebCore18CSSParserValueListD2Ev
+__ZN3WTF6VectorIN7WebCore14CSSParserValueELm4EE6shrinkEm
+__ZN7WebCore9CSSParser15createStyleRuleEPN3WTF6VectorIPNS_11CSSSelectorELm0EEE
+__ZN7WebCore12CSSStyleRuleC1EPNS_13CSSStyleSheetE
+__ZN7WebCore12CSSStyleRuleC2EPNS_13CSSStyleSheetE
+__ZN7WebCore15CSSSelectorList19adoptSelectorVectorERN3WTF6VectorIPNS_11CSSSelectorELm0EEE
+__ZN7WebCore15CSSSelectorList15deleteSelectorsEv
+__ZN7WebCore26CSSMutableStyleDeclarationC1EPNS_7CSSRuleEPKPKNS_11CSSPropertyEi
__ZN7WebCore26CSSMutableStyleDeclarationC2EPNS_7CSSRuleEPKPKNS_11CSSPropertyEi
__ZN7WebCore19CSSStyleDeclarationC2EPNS_7CSSRuleE
-__ZN7WebCore23DeprecatedValueListImpl10appendNodeEPNS_27DeprecatedValueListImplNodeE
-__ZN7WebCore23DeprecatedValueListImpl11copyOnWriteEv
+__ZNK7WebCore9StyleBase16useStrictParsingEv
+__ZNK7WebCore8CSSValue24isVariableDependentValueEv
__ZN7WebCore12CSSStyleRule14setDeclarationEN3WTF10PassRefPtrINS_26CSSMutableStyleDeclarationEEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9StyleBaseEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9StyleBaseEEELm0EE15reserveCapacityEm
__ZN7WebCore9CSSParser15clearPropertiesEv
__ZN7WebCore9StyleList6appendEN3WTF10PassRefPtrINS_9StyleBaseEEE
__ZN7WebCore9StyleBase18insertedIntoParentEv
-__ZN3WTF6VectorIcLm256EE6shrinkEm
+__ZN7WebCore18charactersToDoubleEPKtmPb
__ZN7WebCore9CSSParser12parse4ValuesEiPKib
-__ZN7WebCore9CSSParser9validUnitEPNS_5ValueENS0_5UnitsEb
+__ZN7WebCore9CSSParser9validUnitEPNS_14CSSParserValueENS0_5UnitsEb
+__ZN7WebCore17CSSPrimitiveValue6createEdNS0_9UnitTypesE
+__ZN7WebCore17CSSPrimitiveValueC1EdNS0_9UnitTypesE
__ZN7WebCore17CSSPrimitiveValueC2EdNS0_9UnitTypesE
-__ZN7WebCore10StringImplC1EPKtjj
+__ZN7WebCore15CSSParserString5lowerEv
__ZNK7WebCore11CSSSelector17extractPseudoTypeEv
-__ZN7WebCore9CSSParser12parseContentEib
+__ZN7WebCoreL9hasPrefixEPKcjS1_
+__ZN7WebCore9CSSParser14parseShorthandEiPKiib
+__ZN7WebCore12CSSValueListC1Eb
__ZN7WebCore12CSSValueListC2Eb
-__ZN7WebCore6StringC2EPKtj
-__ZN7WebCore17CSSPrimitiveValueC2ERKNS_6StringENS0_9UnitTypesE
__ZN7WebCore12CSSValueList6appendEN3WTF10PassRefPtrINS_8CSSValueEEE
__ZN3WTF6VectorINS_6RefPtrIN7WebCore8CSSValueEEELm0EE14expandCapacityEm
__ZN3WTF6VectorINS_6RefPtrIN7WebCore8CSSValueEEELm0EE15reserveCapacityEm
-__ZN7WebCore9CSSParser14parseShorthandEiPKiib
-__ZN7WebCore20DeprecatedStringDataC2EPKNS_14DeprecatedCharEj
-__ZN7WebCore9CSSParser10parseColorEPNS_5ValueE
-__ZN7WebCore9CSSParser19parseColorFromValueEPNS_5ValueERjb
-__ZN7WebCore9CSSParser10parseColorERKNS_6StringERjb
-__ZN7WebCore5Color13parseHexColorERKNS_6StringERj
-__ZNK7WebCore16DeprecatedString5toIntEPbi
-__ZN7WebCore24isCharacterAllowedInBaseENS_14DeprecatedCharEi
-__ZN7WebCore17CSSPrimitiveValueC2Ej
-__ZN7WebCore9CSSParser23parseBackgroundPropertyEiRiS1_RN3WTF6RefPtrINS_8CSSValueEEES6_
-__ZN7WebCore9CSSParser20parseBackgroundImageERN3WTF6RefPtrINS_8CSSValueEEE
-__ZN7WebCore13CSSImageValueC2Ev
-__ZN7WebCore17CSSPrimitiveValue4initEN3WTF10PassRefPtrINS_4PairEEE
-__ZN7WebCore9CSSParser15parseFontFamilyEv
+__ZN7WebCore11CSSSelector13setTagHistoryEPS0_
+__ZN7WebCore9CSSParserD1Ev
__ZN7WebCore9CSSParserD2Ev
-__ZN3WTF15deleteAllValuesIPN7WebCore11CSSSelectorEKNS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEESA_EEEEvRT0_
-__ZN3WTF15deleteAllValuesIPN7WebCore9ValueListEKNS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEESA_EEEEvRT0_
-__ZN3WTF15deleteAllValuesIPN7WebCore8FunctionEKNS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEESA_EEEEvRT0_
+__ZN7WebCore9CSSParser14clearVariablesEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore8CSSValueEEELm0EE14shrinkCapacityEm
+__ZN3WTF15deleteAllValuesIPN7WebCore11CSSSelectorEKNS_9HashTableIS3_S3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTr
+__ZN3WTF15deleteAllValuesIPN7WebCore18CSSParserValueListEKNS_9HashTableIS3_S3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_1
+__ZN3WTF15deleteAllValuesIPN7WebCore17CSSParserFunctionEKNS_9HashTableIS3_S3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10
+__ZN3WTF9HashTableIPN7WebCore17CSSParserFunctionES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15dea
__ZN3WTF6VectorINS_6RefPtrIN7WebCore9StyleBaseEEELm0EE6shrinkEm
-__ZN7WebCore10screenEvalEv
+__ZN7WebCoreL10screenEvalEv
+__ZN7WebCore19MediaQueryEvaluatorC1EPKcb
__ZN7WebCore19MediaQueryEvaluatorC2EPKcb
__ZN7WebCore10CSSRuleSet17addRulesFromSheetEPNS_13CSSStyleSheetERKNS_19MediaQueryEvaluatorEPNS_16CSSStyleSelectorE
__ZN7WebCore12CSSStyleRule11isStyleRuleEv
__ZN7WebCore10CSSRuleSet7addRuleEPNS_12CSSStyleRuleEPNS_11CSSSelectorE
-__ZN7WebCore10CSSRuleSet12addToRuleSetEPNS_16AtomicStringImplERN3WTF7HashMapIS2_PNS_15CSSRuleDataListENS3_7PtrHashIS2_EENS3_10HashTraitsIS2_EENS9_IS6_EEEEPNS_12CSSStyleRuleEPNS_11CSSSelectorE
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_15CSSRuleDataListENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
-__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E4findIiNS_22IdentityHashTranslatorIiS2_S6_EEEENS_17HashTableIteratorIiS2_S4_S6_SA_S9_EERKT_
-__ZN7WebCore9printEvalEv
-__ZN7WebCore12parseUASheetIA331_cEEPNS_13CSSStyleSheetERKT_
-__ZN7WebCore12parseUASheetIA1931_cEEPNS_13CSSStyleSheetERKT_
-__ZN7WebCore9CSSParser12parseCounterEiib
-__ZN7WebCore9CSSParser22createFloatingFunctionEv
-__ZN3WTF7HashSetIPN7WebCore8FunctionENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZNK7WebCore6String5lowerEv
-__ZN7WebCore10StringImpl5lowerEv
-__ZN7WebCore9CSSParser20parseColorParametersEPNS_5ValueEPib
-__ZN7WebCore7makeRGBEiii
-__ZN7WebCore15FontFamilyValueC2ERKNS_16DeprecatedStringE
-__ZN7WebCore17RegularExpressionC2EPKc
-__ZN7WebCore16DeprecatedStringC1EPKc
-__ZN7WebCore17RegularExpression7PrivateC2ENS_16DeprecatedStringEbb
-__ZN7WebCore17RegularExpression7Private7compileEbb
-__ZN7WebCore16DeprecatedString7replaceERKNS_17RegularExpressionERKS0_
-__ZNK7WebCore17RegularExpression5matchERKNS_16DeprecatedStringEiPi
-__ZN7WebCore9CSSParser19parseCounterContentEPNS_9ValueListEb
-__ZN7WebCore17CSSPrimitiveValue4initEN3WTF10PassRefPtrINS_7CounterEEE
-__ZN7WebCore9CSSParser11parseShadowEib
-__ZN7WebCore18ShadowParseContext11commitValueEv
-__ZN7WebCore11ShadowValueC2EN3WTF10PassRefPtrINS_17CSSPrimitiveValueEEES4_S4_S4_
-__ZN7WebCore16DeprecatedString6appendEc
-__ZN7WebCore16DeprecatedString6appendERKS0_
-__ZN7WebCore16DeprecatedString6insertEjRKS0_
-__ZN7WebCore16DeprecatedString12forceUnicodeEv
-__ZN7WebCore16DeprecatedString9setLengthEj
-__ZN7WebCore20DeprecatedStringData19increaseUnicodeSizeEj
-__ZNK7WebCore8Document4viewEv
+__ZN7WebCore10CSSRuleSet12addToRuleSetEPNS_16AtomicStringImplERN3WTF7HashMapIS2_PNS_15CSSRuleDataListENS3_7PtrHashIS2_EENS3_10H
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_15CSSRuleDataListENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_15CSSRuleDataListENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setERKS3
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PNS1_15CSSRuleDataListEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_
__ZNK7WebCore9FrameView9mediaTypeEv
+__ZN7WebCore19MediaQueryEvaluatorC1ERKNS_6StringEb
__ZN7WebCore19MediaQueryEvaluatorC2ERKNS_6StringEb
-__ZNK7WebCore8Document15documentElementEv
-__ZN7WebCore29DeprecatedPtrListImplIteratorC2ERKNS_21DeprecatedPtrListImplE
-__ZNK7WebCore21DeprecatedPtrListImpl11addIteratorEPNS_29DeprecatedPtrListImplIteratorE
-__ZNK7WebCore29DeprecatedPtrListImplIterator7currentEv
-__ZN7WebCore29DeprecatedPtrListImplIteratorD2Ev
-__ZNK7WebCore21DeprecatedPtrListImpl14removeIteratorEPNS_29DeprecatedPtrListImplIteratorE
-__ZN7WebCore8Document14resetLinkColorEv
-__ZN7WebCore8Document21resetVisitedLinkColorEv
-__ZN7WebCore8Document20resetActiveLinkColorEv
-__ZN7WebCore5Color13setNamedColorERKNS_6StringE
-__ZNK7WebCore16DeprecatedString10isAllASCIIEv
-__ZN7WebCore8Document18initSecurityOriginEv
-__ZN7WebCore14SecurityOrigin14createForFrameEPNS_5FrameE
-__ZN7WebCore11FrameLoader6openerEv
-__ZNK7WebCore4KURL4portEv
-__ZNK7WebCore4KURL4hostEv
-__ZN7WebCore14SecurityOrigin6createERKNS_6StringES3_tPS0_
-__ZN7WebCore14SecurityOriginC1ERKNS_6StringES3_t
-__ZN7WebCore24isDefaultPortForProtocolEtNS_6StringE
-__ZNK7WebCore14SecurityOrigin7isEmptyEv
-__ZN7WebCore5Frame11setDocumentEN3WTF10PassRefPtrINS_8DocumentEEE
-__ZNK7WebCore5Frame19selectionControllerEv
-__ZNK7WebCore19SelectionController18isFocusedAndActiveEv
-__ZN7WebCore8Document6attachEv
-__ZN7WebCore11RenderArenaC2Ej
-__ZN7WebCore13InitArenaPoolEPNS_9ArenaPoolEPKcjj
-__ZN7WebCore12RenderObjectnwEmPNS_11RenderArenaE
-__ZN7WebCore11RenderArena8allocateEm
-__ZN7WebCore13ArenaAllocateEPNS_9ArenaPoolEj
-__ZN7WebCore10RenderViewC2EPNS_4NodeEPNS_9FrameViewE
-__ZN7WebCore15RenderContainerC2EPNS_4NodeE
-__ZN7WebCore9RenderBoxC2EPNS_4NodeE
-__ZN7WebCore12RenderObjectC2EPNS_4NodeE
-__ZN7WebCore12RenderObject18setPrefWidthsDirtyEbb
-__ZN7WebCore11RenderLayernwEmPNS_11RenderArenaE
-__ZN7WebCore11RenderLayerC2EPNS_12RenderObjectE
-__ZNK7WebCore11RenderLayer20shouldBeOverflowOnlyEv
-__ZNK7WebCore15RenderContainer10firstChildEv
+__ZNK7WebCore14StyleSheetList6lengthEv
__ZN7WebCore8Document11recalcStyleENS_4Node11StyleChangeE
-__ZNK7WebCore5Frame10isPaintingEv
+__ZNK7WebCore9FrameView10isPaintingEv
__ZN7WebCore13ContainerNode26suspendPostAttachCallbacksEv
-__ZN7WebCore11RenderStylenwEmPNS_11RenderArenaE
+__ZNK7WebCore8Document4pageEv
+__ZN7WebCore4Page32setMemoryCacheClientCallsEnabledEb
+__ZN7WebCore6Loader22suspendPendingRequestsEv
+__ZN7WebCore9FrameView20pauseScheduledEventsEv
+__ZN7WebCore11RenderStyle6createEv
+__ZN7WebCore11RenderStyleC1Ev
__ZN7WebCore11RenderStyleC2Ev
+__ZN7WebCore11RenderStyle18createDefaultStyleEv
+__ZN7WebCore11RenderStyleC1Eb
__ZN7WebCore11RenderStyleC2Eb
-__ZN7WebCore11RenderStyle14setBitDefaultsEv
+__ZN7WebCore12StyleBoxDataC1Ev
__ZN7WebCore12StyleBoxDataC2Ev
+__ZN7WebCore15StyleVisualDataC1Ev
__ZN7WebCore15StyleVisualDataC2Ev
+__ZN7WebCore19StyleBackgroundDataC1Ev
__ZN7WebCore19StyleBackgroundDataC2Ev
+__ZN7WebCore17StyleSurroundDataC1Ev
__ZN7WebCore17StyleSurroundDataC2Ev
+__ZN7WebCore25StyleRareNonInheritedDataC1Ev
__ZN7WebCore25StyleRareNonInheritedDataC2Ev
+__ZN7WebCore20StyleFlexibleBoxDataC1Ev
__ZN7WebCore20StyleFlexibleBoxDataC2Ev
+__ZN7WebCore16StyleMarqueeDataC1Ev
__ZN7WebCore16StyleMarqueeDataC2Ev
+__ZN7WebCore17StyleMultiColDataC1Ev
__ZN7WebCore17StyleMultiColDataC2Ev
__ZN7WebCore18StyleTransformDataC1Ev
+__ZN7WebCore18StyleTransformDataC2Ev
+__ZN7WebCore19TransformOperationsC1Eb
+__ZN7WebCore19TransformOperationsC2Eb
__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EEC1ERKS5_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EEC2ERKS5_
+__ZN7WebCore22StyleRareInheritedDataC1Ev
__ZN7WebCore22StyleRareInheritedDataC2Ev
+__ZN7WebCore18StyleInheritedDataC1Ev
__ZN7WebCore18StyleInheritedDataC2Ev
__ZN7WebCore4FontC1Ev
+__ZN7WebCore4FontC2Ev
+__ZN7WebCore14SVGRenderStyleC1Ev
__ZN7WebCore14SVGRenderStyleC2Ev
-__ZN7WebCore14SVGRenderStyleC2Eb
+__ZN7WebCore14SVGRenderStyleC1ENS0_17CreateDefaultTypeE
+__ZN7WebCore14SVGRenderStyleC2ENS0_17CreateDefaultTypeE
+__ZN7WebCore13StyleFillDataC1Ev
__ZN7WebCore13StyleFillDataC2Ev
__ZN7WebCore8SVGPaint11defaultFillEv
+__ZN7WebCore8SVGPaintC1ERKNS_5ColorE
__ZN7WebCore8SVGPaintC2ERKNS_5ColorE
+__ZN7WebCore8SVGColorC2ERKNS_5ColorE
+__ZN7WebCore15StyleStrokeDataC1Ev
__ZN7WebCore15StyleStrokeDataC2Ev
__ZN7WebCore8SVGPaint13defaultStrokeEv
+__ZN7WebCore8SVGPaintC1ENS0_12SVGPaintTypeE
__ZN7WebCore8SVGPaintC2ENS0_12SVGPaintTypeE
__ZN7WebCore8SVGColorC2Ev
+__ZN7WebCore13StyleTextDataC1Ev
__ZN7WebCore13StyleTextDataC2Ev
+__ZN7WebCore13StyleStopDataC1Ev
__ZN7WebCore13StyleStopDataC2Ev
+__ZN7WebCore13StyleClipDataC1Ev
__ZN7WebCore13StyleClipDataC2Ev
+__ZN7WebCore13StyleMaskDataC1Ev
__ZN7WebCore13StyleMaskDataC2Ev
+__ZN7WebCore13StyleMiscDataC1Ev
__ZN7WebCore13StyleMiscDataC2Ev
+__ZN7WebCore15StyleMarkerDataC1Ev
__ZN7WebCore15StyleMarkerDataC2Ev
+__ZNK7WebCore5Frame19shouldApplyPageZoomEv
__ZNK7WebCore8Settings17fontRenderingModeEv
__ZNK7WebCore16CSSStyleSelector18fontSizeForKeywordEibb
__ZN7WebCore16CSSStyleSelector11setFontSizeERNS_15FontDescriptionEf
__ZN7WebCore16CSSStyleSelector32getComputedSizeFromSpecifiedSizeEbf
-__ZNK7WebCore5Frame10zoomFactorEv
-__ZNK7WebCore10FontFamilyeqERKS0_
+__ZNK7WebCore5Frame19shouldApplyTextZoomEv
+__ZN7WebCoreeqERKNS_10FontFamilyES2_
+__ZN7WebCore4FontC1ERKNS_15FontDescriptionEss
__ZN7WebCore4FontC2ERKNS_15FontDescriptionEss
+__ZN7WebCore10FontFamilyC1ERKS0_
__ZN7WebCore10FontFamilyC2ERKS0_
+__ZN7WebCore18StyleInheritedDataC1ERKS0_
__ZN7WebCore18StyleInheritedDataC2ERKS0_
+__ZN7WebCore4FontC1ERKS0_
__ZN7WebCore4FontC2ERKS0_
__ZN7WebCore4FontaSERKS0_
__ZN7WebCore10FontFamilyaSERKS0_
+__ZN3WTF9HashTableIiSt4pairIiPN7WebCore17GlyphPageTreeNodeEENS_18PairFirstExtractorIS5_EENS_7IntHashIjEENS_14PairHashTraitsINS_
__ZN7WebCore4FontD1Ev
+__ZN7WebCore4FontD2Ev
__ZNK7WebCore4Font6updateEN3WTF10PassRefPtrINS_12FontSelectorEEE
+__ZN7WebCore16FontFallbackListC1Ev
__ZN7WebCore16FontFallbackListC2Ev
+__ZN7WebCore9FontCache10generationEv
__ZN7WebCore16FontFallbackList10invalidateEN3WTF10PassRefPtrINS_12FontSelectorEEE
-__ZNK7WebCore4Node4diffEPNS_11RenderStyleES2_
-__ZNK7WebCore11RenderStyle14hasPseudoStyleENS0_8PseudoIdE
-__ZN7WebCore11RenderBlock8setStyleEPNS_11RenderStyleE
-__ZN7WebCore9RenderBox8setStyleEPNS_11RenderStyleE
-__ZN7WebCore12RenderObject8setStyleEPNS_11RenderStyleE
+__ZN7WebCore16FontFallbackList15releaseFontDataEv
+__ZN3WTF6VectorISt4pairIPKN7WebCore8FontDataEbELm1EE14shrinkCapacityEm
+__ZN7WebCore4Node4diffEPNS_11RenderStyleES2_
+__ZNK7WebCore11RenderStyle14hasPseudoStyleENS_8PseudoIdE
+__ZN7WebCore12RenderObject8setStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
+__ZNK7WebCore12RenderObject21adjustStyleDifferenceENS_15StyleDifferenceEj
+__ZN7WebCore11RenderBlock15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore9RenderBox15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore20RenderBoxModelObject15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore11RenderLayer19isSelfPaintingLayerEv
+__ZN7WebCore12RenderObject15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
__ZNK7WebCore12RenderObject4viewEv
-__ZN7WebCore12RenderObject22updateBackgroundImagesEPNS_11RenderStyleE
+__ZN7WebCore12RenderObject16updateFillImagesEPKNS_9FillLayerES3_
+__ZN7WebCore12RenderObject11updateImageEPNS_10StyleImageES2_
+__ZN7WebCore11RenderBlock14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore9RenderBox14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore20RenderBoxModelObject14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore12RenderObject14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore9RenderBox27updateBoxModelInfoFromStyleEv
+__ZN7WebCore20RenderBoxModelObject27updateBoxModelInfoFromStyleEv
__ZNK7WebCore10RenderView12isRenderViewEv
+__ZNK7WebCore20RenderBoxModelObject13requiresLayerEv
+__ZN7WebCore11RenderLayer12styleChangedENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore11RenderLayer23updateScrollCornerStyleEv
+__ZN7WebCore4Node18shadowAncestorNodeEv
+__ZNK7WebCore4Node12isSVGElementEv
+__ZN7WebCore4Node18shadowTreeRootNodeEv
+__ZNK7WebCore4Node12isShadowNodeEv
+__ZN7WebCore11RenderLayer18updateResizerStyleEv
__ZNK7WebCore12RenderObject6isBodyEv
-__ZNK7WebCore4Node17virtualHasTagNameERKNS_13QualifiedNameE
-__ZNK7WebCore11RenderBlock13isRenderBlockEv
-__ZN7WebCore12RenderObject13requiresLayerEv
-__ZN7WebCore11RenderLayer12styleChangedEv
-__ZNK7WebCore15RenderContainer15canHaveChildrenEv
-__ZN7WebCore15RenderContainer24updateBeforeAfterContentENS_11RenderStyle8PseudoIdE
-__ZN7WebCore15RenderContainer36updateBeforeAfterContentForContainerENS_11RenderStyle8PseudoIdEPS0_
-__ZNK7WebCore12RenderObject14getPseudoStyleENS_11RenderStyle8PseudoIdEPS1_
-__ZN7WebCore15RenderContainer20beforeAfterContainerENS_11RenderStyle8PseudoIdE
-__ZNK7WebCore15RenderContainer9lastChildEv
__ZN7WebCore11RenderBlock17updateFirstLetterEv
-__ZN7WebCore4Node10setChangedENS_15StyleChangeTypeE
-__ZN7WebCore8Document18setDocumentChangedEb
+__ZN7WebCore4Node19setNeedsStyleRecalcENS_15StyleChangeTypeE
+__ZN7WebCore8Document21unscheduleStyleRecalcEv
+__ZN7WebCore9FrameView21resumeScheduledEventsEv
+__ZN7WebCore9FrameView23dispatchScheduledEventsEv
__ZN7WebCore13ContainerNode25resumePostAttachCallbacksEv
+__ZN7WebCore11FrameLoader35tellClientAboutPastMemoryCacheLoadsEv
+__ZN7WebCore6Loader21resumePendingRequestsEv
+__ZNK7WebCore6Loader4Host11hasRequestsEv
__ZN7WebCore13ContainerNode6attachEv
__ZN7WebCore4Node6attachEv
-__ZN7WebCore8Document6setURLERKNS_16DeprecatedStringE
-__ZN7WebCoreeqERKNS_16DeprecatedStringES2_
-__ZN7WebCore8Document10setBaseURLERKNS_16DeprecatedStringE
-__ZN7WebCore11FrameLoader19updatePolicyBaseURLEv
-__ZN7WebCore11FrameLoader16setPolicyBaseURLERKNS_6StringE
+__ZN7WebCore16ScriptController14updateDocumentEv
+__ZN7WebCore8Document6setURLERKNS_4KURLE
+__ZN7WebCore8Document13updateBaseURLEv
+__ZN7WebCore4KURLC1ERKS0_RKNS_6StringE
+__ZN7WebCore4KURLC2ERKS0_RKNS_6StringE
+__ZN7WebCore4KURL4initERKS0_RKNS_6StringERKNS_12TextEncodingE
+__ZN7WebCoreL9copyASCIIEPKtiPc
+__ZN7WebCore17equalIgnoringCaseEPNS_10StringImplES1_
+__ZN3WTF6VectorIcLm512EE6shrinkEm
+__ZNK7WebCore5Frame9domWindowEv
+__ZN7WebCore9DOMWindowC1EPNS_5FrameE
+__ZN7WebCore9DOMWindowC2EPNS_5FrameE
+__ZN7WebCore11FrameLoader26updateFirstPartyForCookiesEv
+__ZN7WebCore11FrameLoader23setFirstPartyForCookiesERKNS_4KURLE
__ZN7WebCore9DocLoader17setAutoLoadImagesEb
+__ZNK7WebCore20ResourceResponseBase15httpHeaderFieldERKNS_12AtomicStringE
+__ZNK3WTF7HashMapIN7WebCore12AtomicStringENS1_6StringENS1_15CaseFoldingHashENS_10HashTraitsIS2_EENS5_IS3_EEE3getERKS2_
+__ZN7WebCore12AtomicString6removeEPNS_10StringImplE
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E47removeAndI
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E6removeEPS3_
__ZN7WebCore11FrameLoader20restoreDocumentStateEv
__ZN7WebCore8Document12implicitOpenEv
__ZN7WebCore8Document13cancelParsingEv
__ZN7WebCore8Document5clearEv
__ZN7WebCore13ContainerNode14removeChildrenEv
-__ZN7WebCore23DeprecatedValueListImpl5clearEv
+__ZNK7WebCore8Document9domWindowEv
+__ZN7WebCore9DOMWindow23removeAllEventListenersEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore23RegisteredEventListenerEEELm0EE14shrinkCapacityEm
+__ZN7WebCoreL29pendingUnloadEventListenerMapEv
+__ZN7WebCoreL27removePendingEventListenersERN3WTF7HashMapIPNS_9DOMWindowEPNS0_6VectorINS0_6RefPtrINS_23RegisteredEventListenerE
+__ZN3WTF7HashMapIPN7WebCore9DOMWindowEPNS_6VectorINS_6RefPtrINS1_23RegisteredEventListenerEEELm0EEENS_7PtrHashIS3_EENS_10HashTr
+__ZN7WebCoreL35pendingBeforeUnloadEventListenerMapEv
__ZN7WebCore12HTMLDocument15createTokenizerEv
__ZN7WebCore19InspectorController13windowVisibleEv
+__ZN7WebCore13HTMLTokenizerC1EPNS_12HTMLDocumentEb
__ZN7WebCore13HTMLTokenizerC2EPNS_12HTMLDocumentEb
+__ZN7WebCore10HTMLParserC1EPNS_12HTMLDocumentEb
__ZN7WebCore10HTMLParserC2EPNS_12HTMLDocumentEb
__ZN7WebCore13HTMLTokenizer5beginEv
__ZN7WebCore13HTMLTokenizer5resetEv
+__ZN3WTF6VectorItLm0EE14shrinkCapacityEm
__ZN7WebCore15SegmentedString5clearEv
__ZN7WebCore8Document10setParsingEb
-__ZN7WebCore10ScrollView14resizeContentsEii
-__ZNK7WebCore10ScrollView15getDocumentViewEv
+__ZNK7WebCore5Frame9animationEv
+__ZN7WebCore19AnimationController20beginAnimationUpdateEv
+__ZN7WebCore9FrameView15setContentsSizeERKNS_7IntSizeE
+__ZN7WebCore10ScrollView15setContentsSizeERKNS_7IntSizeE
+__ZNK7WebCore10ScrollView12contentsSizeEv
+__ZNK7WebCore10ScrollView20platformContentsSizeEv
+__ZNK7WebCore10ScrollView12documentViewEv
+__ZN7WebCore16enclosingIntRectERK6CGRect
+__ZNK7WebCore6Chrome19contentsSizeChangedEPNS_5FrameERKNS_7IntSizeE
__ZN7WebCore11FrameLoader5writeEPKcib
__ZNK7WebCore9Tokenizer12wantsRawDataEv
__ZN7WebCore12TextEncodingC1ERKNS_6StringE
+__ZN7WebCore12TextEncodingC2ERKNS_6StringE
__ZN7WebCore31atomicCanonicalTextEncodingNameEPKtm
-__ZN7WebCore31atomicCanonicalTextEncodingNameEPKc
-__ZN7WebCore19TextResourceDecoderC1ERKNS_6StringERKNS_12TextEncodingE
+__ZN7WebCore19TextResourceDecoderC1ERKNS_6StringERKNS_12TextEncodingEb
+__ZN7WebCore19TextResourceDecoderC2ERKNS_6StringERKNS_12TextEncodingEb
__ZN7WebCore19TextResourceDecoder20determineContentTypeERKNS_6StringE
__ZN7WebCore17equalIgnoringCaseEPNS_10StringImplEPKc
__ZN7WebCore19TextResourceDecoder15defaultEncodingENS0_11ContentTypeERKNS_12TextEncodingE
__ZN7WebCore14Latin1EncodingEv
-__ZN7WebCore12TextEncodingC2EPKc
-__ZN7WebCore15TextCodecLatin121registerEncodingNamesEPFvPKcS2_E
-__ZN7WebCore24addToTextEncodingNameMapEPKcS1_
-__ZNK3WTF7HashMapIPKcS2_N7WebCore20TextEncodingNameHashENS_10HashTraitsIS2_EES6_E3getERKS2_
-__ZN3WTF9HashTableIPKcSt4pairIS2_iENS_18PairFirstExtractorIS4_EEN7WebCore20TextEncodingNameHashENS_14PairHashTraitsINS_10HashTraitsIS2_EENSA_IiEEEESB_E3addIS2_S2_NS_17HashMapTranslatorILb1ES3_IS2_S2_ENS_18PairBaseHashTraitsISB_SB_EESD_S8_EEEES3_INS_17HashTableIteratorIS2_S4_S6_S8_SD_SB_EEbERKT_RKT0_
-__ZN3WTF9HashTableIPKcSt4pairIS2_iENS_18PairFirstExtractorIS4_EEN7WebCore20TextEncodingNameHashENS_14PairHashTraitsINS_10HashTraitsIS2_EENSA_IiEEEESB_E6expandEv
-__ZN7WebCore15TextCodecLatin114registerCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
-__ZN7WebCore17addToTextCodecMapEPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvES9_
-__ZNK3WTF7HashMapIPKcN7WebCore16TextCodecFactoryENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS7_IS4_EEE3getERKS2_
-__ZN3WTF9HashTableIiSt4pairIiN7WebCore16TextCodecFactoryEENS_18PairFirstExtractorIS4_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E3addIPKcS3_NS_17HashMapTranslatorILb1ES1_ISH_S3_ENS_18PairBaseHashTraitsINSA_ISH_EESC_EESD_NS_7PtrHashISH_EEEEEES1_INS_17HashTableIteratorIiS4_S6_S8_SD_SB_EEbERKT_RKT0_
-__ZN3WTF9HashTableIiSt4pairIiN7WebCore16TextCodecFactoryEENS_18PairFirstExtractorIS4_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E6expandEv
-__ZN7WebCore14TextCodecUTF1621registerEncodingNamesEPFvPKcS2_E
-__ZN3WTF9HashTableIPKcSt4pairIS2_iENS_18PairFirstExtractorIS4_EEN7WebCore20TextEncodingNameHashENS_14PairHashTraitsINS_10HashTraitsIS2_EENSA_IiEEEESB_E4findIS2_NS_22IdentityHashTranslatorIS2_S4_S8_EEEENS_17HashTableIteratorIS2_S4_S6_S8_SD_SB_EERKT_
-__ZN7WebCore14TextCodecUTF1614registerCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
-__ZN7WebCore20TextCodecUserDefined21registerEncodingNamesEPFvPKcS2_E
-__ZN7WebCore20TextCodecUserDefined14registerCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
-__ZN7WebCore12TextCodecICU25registerBaseEncodingNamesEPFvPKcS2_E
-__ZN7WebCore12TextCodecICU18registerBaseCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
-__ZN7WebCore11TextDecoderC2ERKNS_12TextEncodingE
-__ZN7WebCore8Document10setDecoderEPNS_19TextResourceDecoderE
+__ZN7WebCore8Document10setDecoderEN3WTF10PassRefPtrINS_19TextResourceDecoderEEE
__ZN7WebCore19TextResourceDecoder6decodeEPKcm
__ZN7WebCore19TextResourceDecoder11checkForBOMEPKcm
__ZN7WebCore19TextResourceDecoder19checkForHeadCharsetEPKcmRb
__ZN3WTF6VectorIcLm0EE4growEm
__ZN7WebCore19TextResourceDecoder5flushEv
-__ZN7WebCore11TextDecoder11checkForBOMEPKcmb
__ZN7WebCore12newTextCodecERKNS_12TextEncodingE
-__ZN7WebCore36newStreamingTextDecoderWindowsLatin1ERKNS_12TextEncodingEPKv
-__ZN7WebCore15TextCodecLatin16decodeEPKcmb
+__ZNK3WTF7HashMapIPKcN7WebCore16TextCodecFactoryENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS7_IS4_EEE3getERKS2_
+__ZN7WebCoreL36newStreamingTextDecoderWindowsLatin1ERKNS_12TextEncodingEPKv
+__ZN7WebCore15TextCodecLatin16decodeEPKcmbbRb
+__ZN3WTF6VectorIcLm0EE14shrinkCapacityEm
+__ZN7WebCore15TextCodecLatin1D0Ev
+__ZN7WebCore9TextCodecD2Ev
__ZN7WebCore8Document13finishParsingEv
__ZN7WebCore13HTMLTokenizer6finishEv
__ZN7WebCore13HTMLTokenizer3endEv
__ZN7WebCore13HTMLTokenizer12processTokenEv
-__ZN7WebCore5Frame11scriptProxyEv
+__ZN7WebCore16ScriptController9isEnabledEv
__ZN7WebCore10HTMLParser8finishedEv
-__ZNK7WebCore8Document14isDocumentNodeEv
-__ZN7WebCore15HTMLHtmlElementC2EPNS_8DocumentE
+__ZN7WebCore15HTMLHtmlElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLHtmlElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore11HTMLElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore13StyledElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore7ElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore10HTMLParser10insertNodeEPNS_4NodeEb
-__ZNK7WebCore7Element9localNameEv
+__ZNK7WebCore7Element16virtualLocalNameEv
__ZNK7WebCore11HTMLElement13isHTMLElementEv
__ZNK7WebCore15HTMLHtmlElement11tagPriorityEv
__ZN7WebCore13ContainerNode8addChildEN3WTF10PassRefPtrINS_4NodeEEE
-__ZNK7WebCore12HTMLDocument14isHTMLDocumentEv
__ZN7WebCore12HTMLDocument12childAllowedEPNS_4NodeE
-__ZNK7WebCore7Element17virtualHasTagNameERKNS_13QualifiedNameE
+__ZN7WebCore22appendChildToContainerINS_4NodeENS_13ContainerNodeEEEvPT_PT0_
+__ZN7WebCore15HTMLHtmlElement20insertedIntoDocumentEv
__ZN7WebCore7Element20insertedIntoDocumentEv
__ZN7WebCore13ContainerNode20insertedIntoDocumentEv
-__ZN7WebCore15EventTargetNode20insertedIntoDocumentEv
-__ZN7WebCore11EventTarget20insertedIntoDocumentEPNS_15EventTargetNodeE
__ZN7WebCore4Node20insertedIntoDocumentEv
+__ZNK7WebCore4Node14eventListenersEv
__ZN7WebCore13ContainerNode16insertedIntoTreeEb
-__ZN7WebCore8Document15childrenChangedEb
-__ZNK7WebCore7Element13isElementNodeEv
+__ZNK7WebCore7Element12getAttributeERKNS_13QualifiedNameE
+__ZN7WebCore21ApplicationCacheGroup29selectCacheWithoutManifestURLEPNS_5FrameE
+__ZN7WebCore8Document15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore13ContainerNode15childrenChangedEbPNS_4NodeES2_i
__ZN7WebCore10HTMLParser9pushBlockERKNS_12AtomicStringEi
-__ZN7WebCore4Node20beginParsingChildrenEv
+__ZN7WebCoreL12isScopingTagERKNS_12AtomicStringE
+__ZN7WebCore7Element20beginParsingChildrenEv
__ZN7WebCore7Element6attachEv
__ZN7WebCore4Node22createRendererIfNeededEv
__ZN7WebCore8Document21shouldCreateRenderersEv
+__ZNK7WebCore12RenderObject15canHaveChildrenEv
__ZNK7WebCore4Node25childShouldCreateRendererEPS0_
-__ZN7WebCore7Element16styleForRendererEPNS_12RenderObjectE
+__ZN7WebCore4Node16styleForRendererEv
__ZN7WebCore16CSSStyleSelector15styleForElementEPNS_7ElementEPNS_11RenderStyleEbb
__ZN7WebCore16CSSStyleSelector25initElementAndPseudoStateEPNS_7ElementE
__ZNK7WebCore13StyledElement15isStyledElementEv
__ZN7WebCore16CSSStyleSelector17locateSharedStyleEv
__ZN7WebCore16CSSStyleSelector16locateCousinListEPNS_7ElementEj
-__ZNK7WebCore4Node15isStyledElementEv
-__ZN7WebCore16CSSStyleSelector19initForStyleResolveEPNS_7ElementEPNS_11RenderStyleE
-__ZNK7WebCore4Node11renderStyleEv
+__ZN7WebCore16CSSStyleSelector19initForStyleResolveEPNS_7ElementEPNS_11RenderStyleENS_8PseudoIdE
__ZN7WebCore11RenderStyle11inheritFromEPKS0_
-__ZNK7WebCore4Node12isSVGElementEv
+__ZN7WebCoreL31elementCanUseSimpleDefaultStyleEPNS_7ElementE
__ZN7WebCore16CSSStyleSelector12matchUARulesERiS1_
__ZNK7WebCore19MediaQueryEvaluator22mediaTypeMatchSpecificEPKc
__ZN7WebCore16CSSStyleSelector10matchRulesEPNS_10CSSRuleSetERiS3_
+__ZN3WTF6VectorIPN7WebCore11CSSRuleDataELm32EE14shrinkCapacityEm
__ZN7WebCore16CSSStyleSelector17matchRulesForListEPNS_15CSSRuleDataListERiS3_
__ZN7WebCore16CSSStyleSelector13checkSelectorEPNS_11CSSSelectorE
-__ZN7WebCore16CSSStyleSelector13checkSelectorEPNS_11CSSSelectorEPNS_7ElementEbb
-__ZN7WebCore16CSSStyleSelector16checkOneSelectorEPNS_11CSSSelectorEPNS_7ElementEbb
-__ZNK7WebCore7Element12namespaceURIEv
+__ZNK7WebCore16CSSStyleSelector15SelectorChecker13checkSelectorEPNS_11CSSSelectorEPNS_7ElementEPN3WTF7HashSetIPNS_16AtomicStrin
+__ZNK7WebCore16CSSStyleSelector15SelectorChecker16checkOneSelectorEPNS_11CSSSelectorEPNS_7ElementEPN3WTF7HashSetIPNS_16AtomicSt
__ZNK7WebCore26CSSMutableStyleDeclaration6lengthEv
-__ZNK7WebCore23DeprecatedValueListImpl5countEv
-__ZN3WTF6VectorIPN7WebCore11CSSRuleDataELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore11CSSRuleDataELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore11CSSRuleDataELm0EE15reserveCapacityEm
__ZN7WebCore16CSSStyleSelector16sortMatchedRulesEjj
-__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIPN7WebCore11CSSRuleDataELm0EE6shrinkEm
+__ZN7WebCore16CSSStyleSelector21addMatchedDeclarationEPNS_26CSSMutableStyleDeclarationE
+__ZN3WTF6VectorIPN7WebCore11CSSRuleDataELm32EE6shrinkEm
__ZNK7WebCore13StyledElement36canHaveAdditionalAttributeStyleDeclsEv
__ZN7WebCore16CSSStyleSelector17applyDeclarationsEbbii
-__ZNK7WebCore23DeprecatedValueListImpl5beginEv
-__ZNK7WebCore23DeprecatedValueListImpl9firstNodeEv
__ZN7WebCore16CSSStyleSelector13applyPropertyEiPNS_8CSSValueE
__ZNK7WebCore17CSSPrimitiveValue16isPrimitiveValueEv
__ZNK7WebCore17CSSPrimitiveValue12cssValueTypeEv
__ZN7WebCore16CSSStyleSelector24cacheBorderAndBackgroundEv
__ZN7WebCore16CSSStyleSelector17adjustRenderStyleEPNS_11RenderStyleEPNS_7ElementE
+__ZN7WebCore12StyleBoxDataC1ERKS0_
__ZN7WebCore12StyleBoxDataC2ERKS0_
-__ZN7WebCore11RenderStyle22adjustBackgroundLayersEv
+__ZN7WebCore11RenderStyle16adjustAnimationsEv
__ZN7WebCore11RenderStyle17adjustTransitionsEv
-__ZNK7WebCore4Node9isControlEv
+__ZNK7WebCore7Element20isFormControlElementEv
__ZN7WebCore11HTMLElement16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore4Node16rendererIsNeededEPNS_11RenderStyleE
__ZN7WebCore11HTMLElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
__ZN7WebCore12RenderObject12createObjectEPNS_4NodeEPNS_11RenderStyleE
-__ZN7WebCore11RenderBlockC2EPNS_4NodeE
+__ZN7WebCore11RenderBlockC1EPNS_4NodeE
__ZNK7WebCore12RenderObject14isChildAllowedEPS0_PNS_11RenderStyleE
-__ZN7WebCore12RenderObject18setAnimatableStyleEPNS_11RenderStyleE
+__ZN7WebCore12RenderObject18setAnimatableStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
+__ZNK7WebCore12RenderObject9animationEv
+__ZN7WebCore19AnimationController16updateAnimationsEPNS_12RenderObjectEPNS_11RenderStyleE
+__ZNK7WebCore12RenderObject12isRenderViewEv
__ZN7WebCore11RenderLayer19insertOnlyThisLayerEv
-__ZN7WebCore11RenderLayer14clearClipRectsEv
+__ZN7WebCore11RenderLayer34clearClipRectsIncludingDescendantsEv
__ZN7WebCore4Node12nextRendererEv
-__ZN7WebCore10RenderFlow8addChildEPNS_12RenderObjectES2_
-__ZNK7WebCore10RenderFlow12continuationEv
-__ZN7WebCore11RenderBlock14addChildToFlowEPNS_12RenderObjectES2_
-__ZNK7WebCore15RenderContainer14isAfterContentEPNS_12RenderObjectE
+__ZN7WebCore11RenderBlock8addChildEPNS_12RenderObjectES2_
+__ZNK7WebCore9RenderBox14isAfterContentEPNS_12RenderObjectE
__ZN7WebCore11RenderBlock21makeChildrenNonInlineEPNS_12RenderObjectE
-__ZN7WebCore15RenderContainer8addChildEPNS_12RenderObjectES2_
+__ZN7WebCore12RenderObject8addChildEPS0_S1_
+__ZN7WebCore11RenderBlock15virtualChildrenEv
__ZNK7WebCore12RenderObject10isListItemEv
__ZNK7WebCore12RenderObject10isTableColEv
+__ZNK7WebCore11RenderBlock13isRenderBlockEv
__ZNK7WebCore12RenderObject14isTableSectionEv
__ZNK7WebCore12RenderObject10isTableRowEv
__ZNK7WebCore12RenderObject11isTableCellEv
-__ZN7WebCore15RenderContainer15insertChildNodeEPNS_12RenderObjectES2_b
-__ZN7WebCore15RenderContainer15appendChildNodeEPNS_12RenderObjectEb
+__ZN7WebCore21RenderObjectChildList15insertChildNodeEPNS_12RenderObjectES2_S2_b
+__ZN7WebCore21RenderObjectChildList15appendChildNodeEPNS_12RenderObjectES2_b
__ZNK7WebCore12RenderObject14enclosingLayerEv
-__ZNK7WebCore9RenderBox5layerEv
__ZN7WebCore12RenderObject9addLayersEPNS_11RenderLayerEPS0_
-__ZN7WebCore9addLayersEPNS_12RenderObjectEPNS_11RenderLayerERS1_RS3_
+__ZN7WebCoreL9addLayersEPNS_12RenderObjectEPNS_11RenderLayerERS1_RS3_
__ZN7WebCore12RenderObject13findNextLayerEPNS_11RenderLayerEPS0_b
__ZN7WebCore11RenderLayer8addChildEPS0_S1_
+__ZN7WebCore11RenderLayer9setParentEPS0_
+__ZN7WebCore11RenderLayer31dirtyStackingContextZOrderListsEv
__ZNK7WebCore11RenderLayer15stackingContextEv
__ZN7WebCore11RenderLayer16dirtyZOrderListsEv
__ZN7WebCore11RenderLayer22updateVisibilityStatusEv
__ZN7WebCore11RenderLayer22childVisibilityChangedEb
-__ZNK7WebCore11RenderBlock14childrenInlineEv
-__ZN7WebCore12RenderObject14setNeedsLayoutEbb
-__ZN7WebCore12RenderObject29markContainingBlocksForLayoutEbPS0_
__ZNK7WebCore12RenderObject9containerEv
-__ZNK7WebCore12RenderObject11isTextFieldEv
-__ZNK7WebCore12RenderObject10isTextAreaEv
+__ZNK7WebCore12RenderObject13isTextControlEv
__ZNK7WebCore12RenderObject9isSVGRootEv
__ZN7WebCore12RenderObject16scheduleRelayoutEv
__ZN7WebCore9FrameView16scheduleRelayoutEv
+__ZNK7WebCore9FrameView11needsLayoutEv
+__ZNK7WebCore5Frame15contentRendererEv
+__ZNK7WebCore9FrameView13layoutPendingEv
__ZN7WebCore8Document20shouldScheduleLayoutEv
-__ZN7WebCore8Document4bodyEv
-__ZNK7WebCore13ContainerNode17virtualFirstChildEv
+__ZNK7WebCore8Document4bodyEv
+__ZN7WebCore12RenderObject24setLayerNeedsFullRepaintEv
__ZN7WebCore12RenderObject29invalidateContainerPrefWidthsEv
+__ZN7WebCore11FrameLoader32dispatchDocumentElementAvailableEv
__ZN7WebCore10HTMLParser9freeBlockEv
__ZN7WebCore10HTMLParser11popOneBlockEv
__ZN7WebCore7Element21finishParsingChildrenEv
-__ZN7WebCore15checkStyleRulesEPNS_7ElementEPNS_11RenderStyleEb
+__ZN7WebCoreL27checkForSiblingStyleChangesEPNS_7ElementEPNS_11RenderStyleEbPNS_4NodeES5_i
__ZN7WebCore10HTMLParser10setCurrentEPNS_4NodeE
__ZN7WebCore8Document15finishedParsingEv
+__ZN7WebCore5EventC1ERKNS_12AtomicStringEbb
__ZN7WebCore5EventC2ERKNS_12AtomicStringEbb
-__ZN7WebCore15EventTargetNode13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERib
-__ZN7WebCore11EventTarget35eventTargetRespectingSVGTargetRulesERPNS_15EventTargetNodeE
-__ZThn36_N7WebCore15EventTargetNode14refEventTargetEv
-__ZN7WebCore15EventTargetNode14refEventTargetEv
+__ZN7WebCore4Node13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERi
+__ZN7WebCore4Node14refEventTargetEv
__ZN7WebCore5Event9setTargetEN3WTF10PassRefPtrINS_11EventTargetEEE
__ZN7WebCore5Event14receivedTargetEv
-__ZN7WebCore11EventTarget20dispatchGenericEventEPNS_15EventTargetNodeEN3WTF10PassRefPtrINS_5EventEEERib
-__ZN7WebCore21DeprecatedPtrListImpl7prependEPKv
-__ZN7WebCore21DeprecatedPtrListImpl6insertEjPKv
+__ZN7WebCore4Node20dispatchGenericEventEN3WTF10PassRefPtrINS_5EventEEE
__ZN7WebCore4Node15eventParentNodeEv
__ZN7WebCore11EventTarget23preDispatchEventHandlerEPNS_5EventE
-__ZN7WebCore29DeprecatedPtrListImplIterator7toFirstEv
-__ZN7WebCore8Document17handleWindowEventEPNS_5EventEb
-__ZNK7WebCore23DeprecatedValueListImpl7isEmptyEv
-__ZN7WebCore29DeprecatedPtrListImplIterator6toLastEv
-__ZN7WebCore15EventTargetNode17handleLocalEventsEPNS_5EventEb
-__ZNK7WebCore15EventTargetNode8disabledEv
-__ZN7WebCore11EventTarget17handleLocalEventsEPNS_15EventTargetNodeEPNS_5EventEb
-__ZN7WebCore29DeprecatedPtrListImplIteratormmEv
+__ZNK7WebCore9DOMWindow8documentEv
+__ZN7WebCore9DOMWindow11handleEventEPNS_5EventEbPN3WTF6VectorINS3_6RefPtrINS_23RegisteredEventListenerEEELm0EEE
+__ZN7WebCore4Node17handleLocalEventsEPNS_5EventEb
+__ZNK7WebCore4Node8disabledEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore23RegisteredEventListenerEEELm0EEC1ERKS5_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore23RegisteredEventListenerEEELm0EEC2ERKS5_
__ZN7WebCore11EventTarget24postDispatchEventHandlerEPNS_5EventEPv
-__ZN7WebCore15EventTargetNode19defaultEventHandlerEPNS_5EventE
-__ZN7WebCore29DeprecatedPtrListImplIteratorppEv
-__ZN7WebCore8Document24updateDocumentsRenderingEv
-__ZN7WebCore21DeprecatedPtrListImpl5clearEb
-__ZN7WebCore21DeprecatedPtrListImplD2Ev
-__ZN7WebCore5EventD1Ev
-__ZThn36_N7WebCore15EventTargetNode16derefEventTargetEv
-__ZN7WebCore15EventTargetNode16derefEventTargetEv
+__ZN7WebCore4Node19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore8Document26updateStyleForAllDocumentsEv
+__ZN7WebCore5EventD0Ev
+__ZN7WebCore4Node16derefEventTargetEv
__ZN7WebCore11FrameLoader15finishedParsingEv
-__ZN7WebCore8Document7iconURLEv
-__ZN7WebCore13HTMLTokenizerD1Ev
-__ZN7WebCore23DeprecatedValueListImplD2Ev
-__ZN7WebCore23DeprecatedValueListImpl7Private10deleteListEPNS_27DeprecatedValueListImplNodeE
+__ZN7WebCore13HTMLTokenizerD0Ev
+__ZN7WebCore10HTMLParserD0Ev
+__ZN7WebCore9TimerBaseD2Ev
__ZN7WebCore8Document5closeEv
-__ZN7WebCore11numRequestsEPNS_8DocumentE
+__ZN7WebCore11FrameLoader14checkCompletedEv
+__ZN7WebCore9FrameView33checkStopDelayingDeferredRepaintsEv
+__ZN7WebCoreL11numRequestsEPNS_8DocumentE
__ZN7WebCore9DocLoader12requestCountEv
+__ZN7WebCore11FrameLoader22checkCallImplicitCloseEv
__ZN7WebCore8Document13implicitCloseEv
--[WebCoreFrameBridge setTextSizeMultiplier:]
+__ZN7WebCore11FrameLoader9completedEv
+__ZN7WebCore11FrameLoader17checkLoadCompleteEv
+__ZN7WebCore11FrameLoader26recursiveCheckLoadCompleteEv
+__ZN7WebCore11FrameLoader29checkLoadCompleteForThisFrameEv
+__ZNK7WebCore14DocumentLoader19isLoadingInAPISenseEv
+__ZNK7WebCore11FrameLoader17subframeIsLoadingEv
+__ZN7WebCore11FrameLoader16markLoadCompleteEv
+__ZN7WebCore11FrameLoader18frameLoadCompletedEv
+__ZN7WebCore14DocumentLoader22stopRecordingResponsesEv
+__ZN7WebCore8Settings16setZoomsTextOnlyEb
+__ZN7WebCore5Frame13setZoomFactorEfb
+__ZNK7WebCore5Frame20isZoomFactorTextOnlyEv
+__ZN7WebCore12SchedulePairC1EP9NSRunLoopPK10__CFString
+__ZN7WebCore12SchedulePairC2EP9NSRunLoopPK10__CFString
+__ZN7WebCore4Page15addSchedulePairEN3WTF10PassRefPtrINS_12SchedulePairEEE
+__ZN3WTF7HashSetINS_6RefPtrIN7WebCore12SchedulePairEEENS2_16SchedulePairHashENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore12SchedulePairEEES4_NS_17IdentityExtractorIS4_EENS2_16SchedulePairHashENS_10HashTraitsIS
+__ZN7WebCore14DocumentLoader8scheduleEPNS_12SchedulePairE
+__ZN7WebCoreL11scheduleAllERKN3WTF7HashSetINS0_6RefPtrINS_14ResourceLoaderEEENS0_7PtrHashIS4_EENS0_10HashTraitsIS4_EEEEPNS_12Sc
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14ResourceLoaderEEES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EE
__ZN7WebCore4Page12setGroupNameERKNS_6StringE
-__ZN3WTF7HashMapIN7WebCore6StringEPNS_7HashSetIPNS1_4PageENS_7PtrHashIS5_EENS_10HashTraitsIS5_EEEENS1_10StringHashENS8_IS2_EENS8_ISB_EEE3addERKS2_RKSB_
+__ZN7WebCore9PageGroup9pageGroupERKNS_6StringE
+__ZN3WTF7HashMapIN7WebCore6StringEPNS1_9PageGroupENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3addERKS2_RKS4_
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS1_9PageGroupEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHashTrai
+__ZN7WebCore9PageGroupC1ERKNS_6StringE
+__ZN7WebCore9PageGroupC2ERKNS_6StringE
+__ZN7WebCoreL19getUniqueIdentifierEv
+__ZN7WebCore9PageGroup7addPageEPNS_4PageE
+__ZN7WebCore12LocalStorage12localStorageERKNS_6StringE
+__ZN7WebCoreL15localStorageMapEv
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS1_12LocalStorageEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHash
+__ZN7WebCore12LocalStorageC1ERKNS_6StringE
+__ZN7WebCore12LocalStorageC2ERKNS_6StringE
+__ZN7WebCore18LocalStorageThread6createEv
+__ZN7WebCore18LocalStorageThreadC1Ev
+__ZN7WebCore18LocalStorageThreadC2Ev
+__ZN7WebCore18LocalStorageThread5startEv
+__ZN7WebCore18LocalStorageThread14scheduleImportEN3WTF10PassRefPtrINS_12LocalStorageEEE
+__ZN7WebCore16LocalStorageTaskC1ENS0_4TypeEN3WTF10PassRefPtrINS_12LocalStorageEEE
+__ZN7WebCore16LocalStorageTaskC2ENS0_4TypeEN3WTF10PassRefPtrINS_12LocalStorageEEE
+__ZN7WebCore18LocalStorageThread23localStorageThreadStartEPv
+__ZN3WTF5DequeINS_6RefPtrIN7WebCore16LocalStorageTaskEEEE14expandCapacityEv
+__ZN7WebCore18LocalStorageThread18localStorageThreadEv
+__ZN3WTF7HashMapIN7WebCore6StringEPNS1_12LocalStorageENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3setERKS2_RKS4_
+__ZN3WTF12MessageQueueINS_6RefPtrIN7WebCore16LocalStorageTaskEEEE19alwaysTruePredicateERS4_
+__ZN7WebCore16LocalStorageTask11performTaskEv
+__ZN7WebCore12LocalStorage13performImportEv
__ZN7WebCore5Cache13setCapacitiesEjjj
__ZN7WebCore9pageCacheEv
+__ZN7WebCore9PageCacheC1Ev
__ZN7WebCore9PageCacheC2Ev
__ZN7WebCore9PageCache11setCapacityEi
__ZN7WebCore9PageCache5pruneEv
__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_10StringHashENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_15CaseFoldingHashENS_10HashTraitsIS3_EES8_E3addIS3_S3_NS_17HashSetTranslatorILb1ES3_S8_S8_S6_EEEESt4pairINS_17HashTableIteratorIS3_S3_S5_S6_S8_S8_EEbERKT_RKT0_
__ZN7WebCore8Settings20setCursiveFontFamilyERKNS_12AtomicStringE
-__ZN7WebCore32setNeedsReapplyStylesInAllFramesEPNS_4PageE
+__ZN7WebCoreL32setNeedsReapplyStylesInAllFramesEPNS_4PageE
__ZN7WebCore5Frame21setNeedsReapplyStylesEv
-__ZN7WebCore6Widget10invalidateEv
__ZN7WebCore8Settings23setDefaultFixedFontSizeEi
__ZN7WebCore8Settings18setDefaultFontSizeEi
__ZN7WebCore8Settings26setDefaultTextEncodingNameERKNS_6StringE
+__ZN7WebCore8Settings23setUsesEncodingDetectorEb
__ZN7WebCore8Settings20setFantasyFontFamilyERKNS_12AtomicStringE
__ZN7WebCore8Settings18setFixedFontFamilyERKNS_12AtomicStringE
__ZN7WebCore8Settings28setForceFTPDirectoryListingsEb
__ZN7WebCore8Settings27setFTPDirectoryTemplatePathERKNS_6StringE
__ZN7WebCore8Settings14setJavaEnabledEb
__ZN7WebCore8Settings20setJavaScriptEnabledEb
+__ZN7WebCore8Settings21setWebSecurityEnabledEb
+__ZN7WebCore8Settings35setAllowUniversalAccessFromFileURLsEb
__ZN7WebCore8Settings40setJavaScriptCanOpenWindowsAutomaticallyEb
__ZN7WebCore8Settings18setMinimumFontSizeEi
__ZN7WebCore8Settings25setMinimumLogicalFontSizeEi
__ZN7WebCore8Settings17setPluginsEnabledEb
+__ZN7WebCore8Settings19setDatabasesEnabledEb
+__ZN7WebCore8Settings22setLocalStorageEnabledEb
__ZN7WebCore8Settings25setPrivateBrowsingEnabledEb
__ZN7WebCore8Settings22setSansSerifFontFamilyERKNS_12AtomicStringE
__ZN7WebCore8Settings18setSerifFontFamilyERKNS_12AtomicStringE
@@ -1062,88 +1075,64 @@ __ZN7WebCore8Settings25setShouldPrintBackgroundsEb
__ZN7WebCore8Settings24setTextAreasAreResizableEb
__ZN7WebCore8Settings31setShrinksStandaloneImagesToFitEb
__ZN7WebCore8Settings23setEditableLinkBehaviorENS_20EditableLinkBehaviorE
+__ZN7WebCore8Settings40setTextDirectionSubmenuInclusionBehaviorENS_37TextDirectionSubmenuInclusionBehaviorE
__ZN7WebCore8Settings18setDOMPasteAllowedEb
__ZN7WebCore8Settings16setUsesPageCacheEb
__ZN7WebCore8Settings22setShowsURLsInToolTipsEb
__ZN7WebCore8Settings25setDeveloperExtrasEnabledEb
__ZN7WebCore8Settings29setAuthorAndUserStylesEnabledEb
+__ZN7WebCore8Settings24setApplicationChromeModeEb
__ZN7WebCore4KURLC1EP5NSURL
-__ZN3WTF6VectorIcLm2048EE6shrinkEm
+__ZN7WebCore4KURLC2EP5NSURL
__ZN7WebCore8Settings25setUserStyleSheetLocationERKNS_4KURLE
-__ZN7WebCoreeqERKNS_4KURLES2_
+__ZN7WebCore4Page29userStyleSheetLocationChangedEv
__ZN7WebCore8Settings32setNeedsAdobeFrameReloadingQuirkEb
__ZN7WebCore8Settings41setNeedsKeyboardEventDisambiguationQuirksEb
+__ZN7WebCore8Settings25setNeedsLeopardMailQuirksEb
+__ZN7WebCore8Settings23setNeedsTigerMailQuirksEb
+__ZN7WebCore8Settings26setNeedsSiteSpecificQuirksEb
+__ZN7WebCore8Settings29setWebArchiveDebugModeEnabledEb
+__ZN7WebCore8Settings36setOfflineWebApplicationCacheEnabledEb
+__ZN7WebCore8Settings33setEnforceCSSMIMETypeInStrictModeEb
__ZN7WebCore4Page15backForwardListEv
__ZN7WebCore15BackForwardList10setEnabledEb
__ZN7WebCore15BackForwardList7enabledEv
__ZN7WebCore15BackForwardList11setCapacityEi
-__ZN7WebCore16FontPlatformDataC1EP6NSFontbb
-__ZN7WebCore4FontC1ERKNS_16FontPlatformDataEb
-__ZN7WebCore16FontFallbackList15setPlatformFontERKNS_16FontPlatformDataE
-__ZN7WebCore9FontCache17getCachedFontDataEPKNS_16FontPlatformDataE
-__ZN3WTF7HashMapIN7WebCore16FontPlatformDataEPNS1_14SimpleFontDataENS1_20FontDataCacheKeyHashENS1_22FontDataCacheKeyTraitsENS_10HashTraitsIS4_EEE3setERKS2_RKS4_
-__ZN7WebCore14SimpleFontDataC1ERKNS_16FontPlatformDataEbbPNS_11SVGFontDataE
-__ZN7WebCore16FontPlatformDataC2ERKS0_
-__ZN7WebCore14SimpleFontData12platformInitEv
-__ZN7WebCore12initFontDataEPNS_14SimpleFontDataE
-__ZN7WebCore17GlyphPageTreeNode7getRootEj
-__ZN7WebCore17GlyphPageTreeNode8getChildEPKNS_8FontDataEj
-__ZNK7WebCore14SimpleFontData12isCustomFontEv
-__ZNK3WTF7HashMapIPKN7WebCore8FontDataEPNS1_17GlyphPageTreeNodeENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3getERKS4_
-__ZN7WebCore17GlyphPageTreeNode14initializePageEPKNS_8FontDataEj
-__ZNK7WebCore14SimpleFontData11isSegmentedEv
-__ZN7WebCore9GlyphPage4fillEjjPtjPKNS_14SimpleFontDataE
-__ZNK7WebCore14SimpleFontData13widthForGlyphEt
-__ZN7WebCore13GlyphWidthMap13widthForGlyphEt
-__ZNK7WebCore14SimpleFontData21platformWidthForGlyphEt
-__ZN7WebCore13GlyphWidthMap16setWidthForGlyphEtf
-__ZN7WebCore14SimpleFontData14determinePitchEv
-__ZNK3WTF7HashMapIiPN7WebCore13GlyphWidthMap14GlyphWidthPageENS_7IntHashIjEENS_10HashTraitsIiEENS7_IS4_EEE3getERKi
-__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIiEENS8_IsEEEES9_E6expandEv
-__ZN3WTF9HashTableIN7WebCore16FontPlatformDataESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_20FontDataCacheKeyHashENS_14PairHashTraitsINS1_22FontDataCacheKeyTraitsENS_10HashTraitsIiEEEES9_E3addIS2_PNS1_14SimpleFontDataENS_17HashMapTranslatorILb1ES3_IS2_SG_ENS_18PairBaseHashTraitsIS9_NSA_ISG_EEEESC_S7_EEEES3_INS_17HashTableIteratorIS2_S4_S6_S7_SC_S9_EEbERKT_RKT0_
-__ZN3WTF9HashTableIN7WebCore16FontPlatformDataESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_20FontDataCacheKeyHashENS_14PairHashTraitsINS1_22FontDataCacheKeyTraitsENS_10HashTraitsIiEEEES9_E6expandEv
-__ZN7WebCore16FontPlatformDataD1Ev
-__ZN7WebCore15StringTruncator14centerTruncateERKNS_6StringEfRKNS_4FontEb
-__ZN7WebCore14truncateStringERKNS_6StringEfRKNS_4FontEPFjS2_jjPtEb
-__ZN7WebCore11stringWidthERKNS_4FontEPKtjb
-__ZNK7WebCore4Font10floatWidthERKNS_7TextRunE
-__ZNK7WebCore4Font16cachePrimaryFontEv
-__ZNK7WebCore16FontFallbackList10fontDataAtEPKNS_4FontEj
-__ZNK7WebCore14SimpleFontData20fontDataForCharacterEi
-__ZNK7WebCore4Font16canUseGlyphCacheERKNS_7TextRunE
-__ZNK7WebCore4Font23floatWidthForSimpleTextERKNS_7TextRunEPNS_11GlyphBufferE
-__ZN7WebCore13WidthIteratorC1EPKNS_4FontERKNS_7TextRunE
-__ZN7WebCore13WidthIterator7advanceEiPNS_11GlyphBufferE
-__ZNK7WebCore4Font21glyphDataForCharacterEibb
-__ZN3WTF7HashMapIiPN7WebCore17GlyphPageTreeNodeENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3setERKiRKS3_
-__ZNK7WebCore4Font10fontDataAtEj
-__ZN3WTF6VectorIPKN7WebCore8FontDataELm1EE6shrinkEm
-__ZN7WebCore7IntSizeC1ERK7_NSSize
+__ZN7WebCore7IntSizeC1ERK6CGSize
+__ZN7WebCore7IntSizeC2ERK6CGSize
__ZN7WebCore12IconDatabase11defaultIconERKNS_7IntSizeE
+__ZN7WebCore10IconRecordC1ERKNS_6StringE
+__ZN7WebCore10IconRecordC2ERKNS_6StringE
+__ZN7WebCore12SharedBufferC1EPKhi
__ZN7WebCore12SharedBufferC2EPKhi
__ZN3WTF6VectorIcLm0EE6appendIhEEvPKT_m
__ZN3WTF6VectorIcLm0EE14expandCapacityEm
__ZN3WTF6VectorIcLm0EE15reserveCapacityEm
__ZN7WebCore10IconRecord12setImageDataEN3WTF10PassRefPtrINS_12SharedBufferEEE
+__ZN7WebCore11BitmapImageC1EPNS_13ImageObserverE
__ZN7WebCore11BitmapImageC2EPNS_13ImageObserverE
__ZN7WebCore5ImageC2EPNS_13ImageObserverE
+__ZN7WebCore11ImageSourceC1Ev
__ZN7WebCore11ImageSourceC2Ev
__ZN7WebCore11BitmapImage16initPlatformDataEv
__ZN7WebCore5Image7setDataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
__ZNK7WebCore12SharedBuffer4sizeEv
__ZNK7WebCore12SharedBuffer15hasPlatformDataEv
__ZN7WebCore11BitmapImage11dataChangedEb
-__ZN7WebCore11BitmapImage18destroyDecodedDataEb
+__ZN7WebCore11BitmapImage24destroyMetadataAndNotifyEi
+__ZN7WebCore11BitmapImage22invalidatePlatformDataEv
+__ZN7WebCoreL10frameBytesERKNS_7IntSizeE
__ZN7WebCore11ImageSource7setDataEPNS_12SharedBufferEb
__ZN7WebCore12SharedBuffer12createCFDataEv
+[WebCoreSharedBufferData initialize]
+-[WebCoreSharedBufferData .cxx_construct]
-[WebCoreSharedBufferData initWithSharedBuffer:]
-[WebCoreSharedBufferData length]
__ZN7WebCore11BitmapImage15isSizeAvailableEv
__ZN7WebCore11ImageSource15isSizeAvailableEv
-[WebCoreSharedBufferData bytes]
__ZNK7WebCore12SharedBuffer4dataEv
-__ZN7WebCore18imageSourceOptionsEv
+__ZN7WebCoreL18imageSourceOptionsEv
__ZN7WebCore10IconRecord5imageERKNS_7IntSizeE
__ZN7WebCore11BitmapImage10getNSImageEv
__ZN7WebCore11BitmapImage21getTIFFRepresentationEv
@@ -1151,108 +1140,235 @@ __ZN7WebCore11BitmapImage10frameCountEv
__ZNK7WebCore11ImageSource10frameCountEv
__ZN7WebCore11BitmapImage12frameAtIndexEm
__ZN7WebCore11BitmapImage10cacheFrameEm
-__ZN7WebCore11BitmapImage13shouldAnimateEv
__ZN3WTF6VectorIN7WebCore9FrameDataELm0EE4growEm
__ZN3WTF6VectorIN7WebCore9FrameDataELm0EE14expandCapacityEm
__ZN3WTF6VectorIN7WebCore9FrameDataELm0EE15reserveCapacityEm
__ZN7WebCore11ImageSource18createFrameAtIndexEm
+__ZNK7WebCore11ImageSource11initializedEv
__ZN7WebCore11BitmapImage18checkForSolidColorEv
+__ZN7WebCore11ImageSource22frameIsCompleteAtIndexEm
+__ZN7WebCore11BitmapImage15repetitionCountEb
+__ZN7WebCore11ImageSource15repetitionCountEv
__ZN7WebCore11ImageSource20frameHasAlphaAtIndexEm
__ZN3WTF6VectorIP7CGImageLm0EE14expandCapacityEmPKS2_
__ZN3WTF6VectorIP7CGImageLm0EE14expandCapacityEm
__ZN3WTF6VectorIP7CGImageLm0EE15reserveCapacityEm
__ZN3WTF6VectorIP7CGImageLm0EE6shrinkEm
-__ZNK7WebCore11FrameLoader25provisionalDocumentLoaderEv
+__ZN7WebCore16FontPlatformDataC1EP6NSFontbb
+__ZN7WebCore16FontPlatformDataC2EP6NSFontbb
+__ZN7WebCore4FontC1ERKNS_16FontPlatformDataEb
+__ZN7WebCore4FontC2ERKNS_16FontPlatformDataEb
+__ZN7WebCore16FontFallbackList15setPlatformFontERKNS_16FontPlatformDataE
+__ZN7WebCore9FontCache17getCachedFontDataEPKNS_16FontPlatformDataE
+__ZN3WTF9HashTableIN7WebCore16FontPlatformDataESt4pairIS2_S3_IPNS1_14SimpleFontDataEjEENS_18PairFirstExtractorIS7_EENS1_20FontD
+__ZN7WebCore14SimpleFontDataC1ERKNS_16FontPlatformDataEbbPNS_11SVGFontDataE
+__ZN7WebCore14SimpleFontDataC2ERKNS_16FontPlatformDataEbbPNS_11SVGFontDataE
+__ZN7WebCore16FontPlatformDataC1ERKS0_
+__ZN7WebCore16FontPlatformDataC2ERKS0_
+__ZN7WebCore14SimpleFontData12platformInitEv
+__ZN7WebCoreL12initFontDataEPNS_14SimpleFontDataE
+__ZN7WebCore17GlyphPageTreeNode7getRootEj
+__ZN7WebCore17GlyphPageTreeNode8getChildEPKNS_8FontDataEj
+__ZNK3WTF7HashMapIPKN7WebCore8FontDataEPNS1_17GlyphPageTreeNodeENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3getERKS4_
+__ZNK7WebCore14SimpleFontData12isCustomFontEv
+__ZN3WTF7HashMapIPKN7WebCore8FontDataEPNS1_17GlyphPageTreeNodeENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3setERKS4_RKS6_
+__ZN3WTF9HashTableIPKN7WebCore8FontDataESt4pairIS4_PNS1_17GlyphPageTreeNodeEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS4_EENS_1
+__ZN7WebCore17GlyphPageTreeNode14initializePageEPKNS_8FontDataEj
+__ZNK7WebCore14SimpleFontData11isSegmentedEv
+__ZN7WebCore9GlyphPage4fillEjjPtjPKNS_14SimpleFontDataE
+__ZN3WTF6VectorItLm512EE6shrinkEm
+__ZN7WebCore14SimpleFontData17platformGlyphInitEv
+__ZN7WebCore13GlyphWidthMap18locatePageSlowCaseEj
+__ZNK7WebCore14SimpleFontData21platformWidthForGlyphEt
+__ZN7WebCore14SimpleFontData14determinePitchEv
+__ZN3WTF7HashMapIiPN7WebCore13GlyphWidthMap14GlyphWidthPageENS_7IntHashIjEENS_10HashTraitsIiEENS7_IS4_EEE3setERKiRKS4_
+__ZN3WTF9HashTableIiSt4pairIiPN7WebCore13GlyphWidthMap14GlyphWidthPageEENS_18PairFirstExtractorIS6_EENS_7IntHashIjEENS_14PairHa
+__ZN7WebCore14SimpleFontData21platformCharWidthInitEv
+__ZN7WebCore14SimpleFontData14initCharWidthsEv
+__ZN3WTF7HashMapIN7WebCore16FontPlatformDataESt4pairIPNS1_14SimpleFontDataEjENS1_20FontDataCacheKeyHashENS1_22FontDataCacheKeyT
+__ZN7WebCore16FontPlatformDataaSERKS0_
+__ZN7WebCore16FontPlatformDataD1Ev
+__ZN7WebCore16FontPlatformDataD2Ev
+__ZN7WebCore15StringTruncator14centerTruncateERKNS_6StringEfRKNS_4FontEb
+__ZN7WebCoreL14truncateStringERKNS_6StringEfRKNS_4FontEPFjS2_jjPtEb
__ZNK7WebCore11FrameLoader14frameHasLoadedEv
-_stringIsFileURL
-__ZN7WebCore12IconDatabase14iconForPageURLERKNS_6StringERKNS_7IntSizeEb
-__ZN7WebCore12IconDatabase24getOrCreatePageURLRecordERKNS_6StringE
-_urlWithDataRelativeToURL
-_urlByRemovingResourceSpecifier
-_urlByRemovingComponent
-_canonicalURL
-_urlOriginalDataAsString
-_urlOriginalData
-__ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestE
-__ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestERKNS_14SubstituteDataE
+__ZN7WebCore9FrameView14setNeedsLayoutEv
+__ZN7WebCore4Page15didMoveOnscreenEv
+__ZN7WebCore9FrameView15didMoveOnscreenEv
+__ZN7WebCore10RenderView15didMoveOnscreenEv
+_WebCoreTextFloatWidth
+__ZNK7WebCore4Font10floatWidthERKNS_7TextRunEPN3WTF7HashSetIPKNS_14SimpleFontDataENS4_7PtrHashIS8_EENS4_10HashTraitsIS8_EEEE
+__ZNK7WebCore4Font16cachePrimaryFontEv
+__ZNK7WebCore16FontFallbackList10fontDataAtEPKNS_4FontEj
+__ZNK7WebCore14SimpleFontData20fontDataForCharacterEi
+__ZNK7WebCore4Font16canUseGlyphCacheERKNS_7TextRunE
+__ZN7WebCore4Font36canReturnFallbackFontsForComplexTextEv
+__ZNK7WebCore4Font23floatWidthForSimpleTextERKNS_7TextRunEPNS_11GlyphBufferEPN3WTF7HashSetIPKNS_14SimpleFontDataENS6_7PtrHashIS
+__ZN7WebCore13WidthIteratorC1EPKNS_4FontERKNS_7TextRunEPN3WTF7HashSetIPKNS_14SimpleFontDataENS7_7PtrHashISB_EENS7_10HashTraitsI
+__ZN7WebCore13WidthIteratorC2EPKNS_4FontERKNS_7TextRunEPN3WTF7HashSetIPKNS_14SimpleFontDataENS7_7PtrHashISB_EENS7_10HashTraitsI
+__ZN7WebCore13WidthIterator7advanceEiPNS_11GlyphBufferE
+__ZNK7WebCore4Font21glyphDataForCharacterEibb
+__ZNK7WebCore4Font10fontDataAtEj
+__ZN7WebCore9FontCache15releaseFontDataEPKNS_14SimpleFontDataE
+__ZN3WTF11ListHashSetIPKN7WebCore14SimpleFontDataENS_7PtrHashIS4_EEE3addERKS4_
+__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPKN7WebCore14SimpleFontDataEEES7_NS_17IdentityExtractorIS7_EENS_28ListHashSetNodeHashF
+__ZN3WTF11ListHashSetIPKN7WebCore14SimpleFontDataENS_7PtrHashIS4_EEE10appendNodeEPNS_15ListHashSetNodeIS4_EE
+__ZN3WTF6VectorISt4pairIPKN7WebCore8FontDataEbELm1EE6shrinkEm
+__ZN3WTF11ListHashSetIPKN7WebCore14SimpleFontDataENS_7PtrHashIS4_EEE15unlinkAndDeleteEPNS_15ListHashSetNodeIS4_EE
+__ZN7WebCore12IconDatabase14iconForPageURLERKNS_6StringERKNS_7IntSizeE
+__ZN7WebCoreL11stringWidthERKNS_4FontEPKtjb
+__ZNK3WTF7HashMapIiPN7WebCore17GlyphPageTreeNodeENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3getERKi
+__ZN3WTF7HashMapIiPN7WebCore17GlyphPageTreeNodeENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3setERKiRKS3_
+__ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestEb
+__ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestERKNS_14SubstituteDataEb
__ZN7WebCore11FrameLoader4loadEPNS_14DocumentLoaderE
__ZN7WebCore14DocumentLoader7requestEv
-__ZN7WebCore11FrameLoader23addExtraFieldsToRequestERNS_15ResourceRequestEbb
-__ZN7WebCore11FrameLoader14applyUserAgentERNS_15ResourceRequestE
+__ZN7WebCore11FrameLoader35addExtraFieldsToMainResourceRequestERNS_15ResourceRequestE
+__ZN7WebCore11FrameLoader23addExtraFieldsToRequestERNS_15ResourceRequestENS_13FrameLoadTypeEbb
+__ZNK7WebCore19ResourceRequestBase20firstPartyForCookiesEv
__ZN7WebCore15ResourceRequest23doUpdateResourceRequestEv
-__ZN7WebCore16DeprecatedString10setUnicodeEPKNS_14DeprecatedCharEj
-__ZN7WebCore19ResourceRequestBase18setHTTPHeaderFieldERKNS_6StringES3_
-__ZNK7WebCore19ResourceRequestBase15mainDocumentURLEv
-__ZN7WebCore19ResourceRequestBase18setMainDocumentURLERKNS_4KURLE
+__ZNK7WebCore11FrameLoader18isLoadingMainFrameEv
+__ZN7WebCore19ResourceRequestBase23setFirstPartyForCookiesERKNS_4KURLE
+__ZN7WebCore11FrameLoader14applyUserAgentERNS_15ResourceRequestE
+__ZN7WebCore19ResourceRequestBase18setHTTPHeaderFieldERKNS_12AtomicStringERKNS_6StringE
+__ZN3WTF7HashMapIN7WebCore12AtomicStringENS1_6StringENS1_15CaseFoldingHashENS_10HashTraitsIS2_EENS5_IS3_EEE3setERKS2_RKS3_
+__ZN7WebCore11FrameLoader21addHTTPOriginIfNeededERNS_15ResourceRequestENS_6StringE
+__ZNK7WebCore19ResourceRequestBase15httpHeaderFieldERKNS_12AtomicStringE
+__ZNK7WebCore19ResourceRequestBase10httpMethodEv
+__ZN7WebCore19ResourceRequestBase50setResponseContentDispositionEncodingFallbackArrayERKNS_6StringES3_S3_
+__ZN3WTF6VectorIN7WebCore6StringELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore6StringELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore6StringELm0EE15reserveCapacityEm
__ZNK7WebCore14DocumentLoader15originalRequestEv
__ZNK7WebCore11FrameLoader29shouldTreatURLAsSameAsCurrentERKNS_4KURLE
-__ZNK7WebCore14DocumentLoader16overrideEncodingEv
-__ZN7WebCore14DocumentLoader19setOverrideEncodingERKNS_6StringE
__ZN7WebCore11FrameLoader34shouldReloadToHandleUnreachableURLEPNS_14DocumentLoaderE
__ZNK7WebCore14DocumentLoader14unreachableURLEv
-__ZN7WebCore11FrameLoader4loadEPNS_14DocumentLoaderENS_13FrameLoadTypeEN3WTF10PassRefPtrINS_9FormStateEEE
+__ZN7WebCore11FrameLoader22loadWithDocumentLoaderEPNS_14DocumentLoaderENS_13FrameLoadTypeEN3WTF10PassRefPtrINS_9FormStateEEE
+__ZN7WebCore11FrameLoader20shouldScrollToAnchorEbNS_13FrameLoadTypeERKNS_4KURLE
+__ZN7WebCore11FrameLoader12shouldReloadERKNS_4KURLES3_
+__ZNK7WebCore4KURL6hasRefEv
__ZN7WebCore11FrameLoader15stopPolicyCheckEv
__ZN7WebCore11PolicyCheck5clearEv
__ZN7WebCore11PolicyCheck12clearRequestEv
+__ZN3WTF6VectorIN7WebCore6StringELm0EEaSERKS3_
__ZN7WebCore11PolicyCheck6cancelEv
-__ZN7WebCore11FrameLoader21checkNavigationPolicyERKNS_15ResourceRequestEPNS_14DocumentLoaderEN3WTF10PassRefPtrINS_9FormStateEEEPFvPvS3_S9_bESA_
-__ZNK7WebCore14DocumentLoader16triggeringActionEv
-__ZN7WebCore16NavigationActionC1ERKNS_4KURLENS_14NavigationTypeE
-__ZN7WebCore14DocumentLoader19setTriggeringActionERKNS_16NavigationActionE
-__ZNK7WebCore14DocumentLoader18lastCheckedRequestEv
+__ZN7WebCore15ResourceRequestD2Ev
+__ZN7WebCore16NavigationActionC1ERKNS_4KURLENS_13FrameLoadTypeEb
+__ZN7WebCore16NavigationActionC2ERKNS_4KURLENS_13FrameLoadTypeEb
+__ZN7WebCoreL14navigationTypeENS_13FrameLoadTypeEbb
+__ZN7WebCore11FrameLoader21checkNavigationPolicyERKNS_15ResourceRequestEPNS_14DocumentLoaderEN3WTF10PassRefPtrINS_9FormStateEEE
__ZN7WebCore25equalIgnoringHeaderFieldsERKNS_19ResourceRequestBaseES2_
__ZNK7WebCore19ResourceRequestBase6isNullEv
-__ZN7WebCore14DocumentLoader21setLastCheckedRequestERKNS_15ResourceRequestE
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_iENS_18PairFirstExtractorIS5_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSA_IiEEEESB_E3addINS1_6StringEjNS_17HashMapTranslatorILb0ES4_ISG_jENS_18PairBaseHashTraitsINSA_ISG_EENSA_IjEEEESD_S8_EEEES4_INS_17HashTableIteratorIS3_S5_S7_S8_SD_SB_EEbERKT_RKT0_
__ZN7WebCore11PolicyCheck3setERKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEEPFvPvS3_S7_bES8_
__ZNK7WebCore15ResourceRequest12nsURLRequestEv
__ZNK7WebCore19ResourceRequestBase21updatePlatformRequestEv
__ZN7WebCore15ResourceRequest23doUpdatePlatformRequestEv
__ZNK7WebCore4KURL11createCFURLEv
+__ZNK7WebCore4KURL12copyToBufferERN3WTF6VectorIcLm512EEE
__ZNK7WebCore19ResourceRequestBase11cachePolicyEv
__ZNK7WebCore19ResourceRequestBase15timeoutIntervalEv
-__ZNK7WebCore19ResourceRequestBase10httpMethodEv
__ZNK7WebCore19ResourceRequestBase16allowHTTPCookiesEv
__ZNK7WebCore19ResourceRequestBase16httpHeaderFieldsEv
__ZNK7WebCore19ResourceRequestBase8httpBodyEv
__ZN7WebCore21findEventWithKeyStateEPNS_5EventE
__ZN7WebCore11FrameLoader29continueAfterNavigationPolicyENS_12PolicyActionE
+__ZN3WTF6VectorIN7WebCore6StringELm0EE6shrinkEm
__ZN7WebCore11PolicyCheck4callEb
__ZN7WebCore11FrameLoader37callContinueLoadAfterNavigationPolicyEPvRKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEEb
__ZN7WebCore11FrameLoader33continueLoadAfterNavigationPolicyERKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEEb
-__ZN7WebCore5Frame11shouldCloseEv
+__ZN7WebCore5Frame11shouldCloseEPN3WTF6VectorINS1_6RefPtrINS_23RegisteredEventListenerEEELm0EEE
__ZN7WebCore6Chrome30canRunBeforeUnloadConfirmPanelEv
__ZN7WebCore11FrameLoader14stopAllLoadersEv
__ZN7WebCore11FrameLoader20stopLoadingSubframesEv
__ZN7WebCore14DocumentLoader11stopLoadingEv
-__ZN7WebCore9cancelAllERKN3WTF7HashSetINS0_6RefPtrINS_14ResourceLoaderEEENS0_7PtrHashIS4_EENS0_10HashTraitsIS4_EEEE
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_EC2ERKS7_
+__ZN7WebCoreL9cancelAllERKN3WTF7HashSetINS0_6RefPtrINS_14ResourceLoaderEEENS0_7PtrHashIS4_EENS0_10HashTraitsIS4_EEEE
+__ZN7WebCore14DocumentLoader21clearArchiveResourcesEv
+__ZN7WebCore19InspectorController14resumeDebuggerEv
__ZN7WebCore11FrameLoader31continueLoadAfterWillSubmitFormENS_12PolicyActionE
__ZN7WebCore14DocumentLoader19prepareForLoadStartEv
__ZN7WebCore14DocumentLoader22setPrimaryLoadCompleteEb
__ZN7WebCore14DocumentLoader11clearErrorsEv
-__ZN7WebCore14DocumentLoader10setLoadingEb
__ZN7WebCore11FrameLoader19prepareForLoadStartEv
__ZN7WebCore15ProgressTracker15progressStartedEPNS_5FrameE
__ZN7WebCore15ProgressTracker5resetEv
__ZN3WTF20deleteAllPairSecondsIPN7WebCore12ProgressItemEKNS_7HashMapImS3_NS_7IntHashImEENS_10HashTraitsImEENS7_IS3_EEEEEEvRT0_
-__ZN3WTF9HashTableImSt4pairImiENS_18PairFirstExtractorIS2_EENS_7IntHashImEENS_14PairHashTraitsINS_10HashTraitsImEENS8_IiEEEES9_E6expandEv
+_stringIsCaseInsensitiveEqualToString
+__ZN7WebCore15BackForwardList11currentItemEv
+__ZN7WebCore4Page16setDefersLoadingEb
+__ZN7WebCore11FrameLoader16setDefersLoadingEb
+__ZN7WebCore14DocumentLoader16setDefersLoadingEb
+__ZN7WebCoreL19setAllDefersLoadingERKN3WTF7HashSetINS0_6RefPtrINS_14ResourceLoaderEEENS0_7PtrHashIS4_EENS0_10HashTraitsIS4_EEEE
__ZNK7WebCore11FrameLoader20activeDocumentLoaderEv
__ZNK7WebCore14DocumentLoader21isLoadingMainResourceEv
-__ZN7WebCore14DocumentLoader24setLoadingFromCachedPageEb
__ZN7WebCore15ProgressTracker22createUniqueIdentifierEv
__ZN7WebCore11FrameLoader40dispatchAssignIdentifierToInitialRequestEmPNS_14DocumentLoaderERKNS_15ResourceRequestE
__ZN7WebCore19InspectorController27identifierForInitialRequestEmPNS_14DocumentLoaderERKNS_15ResourceRequestE
__ZNK7WebCore19InspectorController7enabledEv
__ZN7WebCore14DocumentLoader24startLoadingMainResourceEm
__ZN7WebCore18MainResourceLoader6createEPNS_5FrameE
+__ZN7WebCore18MainResourceLoaderC1EPNS_5FrameE
__ZN7WebCore18MainResourceLoaderC2EPNS_5FrameE
__ZN7WebCore14ResourceLoaderC2EPNS_5FrameEbb
__ZN7WebCore18MainResourceLoader4loadERKNS_15ResourceRequestERKNS_14SubstituteDataE
+__ZNK7WebCore14ResourceLoader11frameLoaderEv
+__ZN7WebCore21ApplicationCacheGroup19cacheForMainRequestERKNS_15ResourceRequestEPNS_14DocumentLoaderE
+__ZN7WebCore16ApplicationCache23requestIsHTTPOrHTTPSGetERKNS_15ResourceRequestE
+__ZN7WebCore23ApplicationCacheStorage16cacheGroupForURLERKNS_4KURLE
+__ZN7WebCore23ApplicationCacheStorage22loadManifestHostHashesEv
+__ZN7WebCore23ApplicationCacheStorage12openDatabaseEb
+__ZN7WebCoreL11urlHostHashERKNS_4KURLE
+__ZNK3WTF9HashTableIjSt4pairIjjENS_18PairFirstExtractorIS2_EEN7WebCore13AlreadyHashedENS_14PairHashTraitsINS_10HashTraitsIjEES9
+__ZN7WebCoreL25shouldLoadAsEmptyDocumentERKNS_4KURLE
+_WebCoreObjCScheduleDeallocateOnMainThread
+__ZN7WebCore15BackForwardList8backItemEv
+__ZN7WebCore15BackForwardList11forwardItemEv
+__ZN7WebCore15FocusController18focusedOrMainFrameEv
+__ZN7WebCore19SelectionController10setFocusedEb
+__ZN7WebCore19SelectionController27focusedOrActiveStateChangedEv
+__ZNK7WebCore5Frame15selectionBoundsEb
+__ZNK7WebCore10RenderView15selectionBoundsEb
+__ZN7WebCore8Document19updateStyleIfNeededEv
+__ZN7WebCoreL21rendererAfterPositionEPNS_12RenderObjectEj
+__ZN3WTF9HashTableIPN7WebCore12RenderObjectESt4pairIS3_PNS1_19RenderSelectionInfoEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_
+__ZNK7WebCore10ScrollView18visibleContentRectEb
+__ZNK7WebCore10ScrollView26platformVisibleContentRectEb
+__ZN7WebCore7IntRect9intersectERKS0_
+__ZN7WebCore9FloatRectC1ERKNS_7IntRectE
+__ZN7WebCore9FloatRectC2ERKNS_7IntRectE
+__ZN7WebCore10FloatPointC1ERKNS_8IntPointE
+__ZN7WebCore10FloatPointC2ERKNS_8IntPointE
+__ZN7WebCore9FloatSizeC1ERKNS_7IntSizeE
+__ZN7WebCore9FloatSizeC2ERKNS_7IntSizeE
+__ZN7WebCore16enclosingIntRectERKNS_9FloatRectE
+__ZN7WebCore10RenderView41repaintRectangleInViewAndCompositedLayersERKNS_7IntRectEb
+__ZNK7WebCore10RenderView13shouldRepaintERKNS_7IntRectE
+__ZNK7WebCore10RenderView8printingEv
+__ZN7WebCore5Frame15setCaretVisibleEb
+__ZN7WebCore12EventHandler27capsLockStateMayHaveChangedEv
+__ZNK7WebCore8Document32useSecureKeyboardEntryWhenActiveEv
+__ZN7WebCore8Document19dispatchWindowEventERKNS_12AtomicStringEbb
+__ZN7WebCore9DOMWindow13dispatchEventERKNS_12AtomicStringEbb
+__ZN7WebCore9DOMWindow13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERi
+__ZN7WebCore9DOMWindow14refEventTargetEv
+__ZN7WebCore9DOMWindow16derefEventTargetEv
+__ZN7WebCore9FrameView18updateControlTintsEv
+__ZN7WebCore9PageGroup26setShouldTrackVisitedLinksEb
+__ZN7WebCore9PageGroup21removeAllVisitedLinksEv
+__ZN7WebCore4Page21removeAllVisitedLinksEv
+__ZN3WTF7HashSetIPN7WebCore9PageGroupENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore9PageGroupES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore9PageGroupES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore9PageGroupES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTabl
+__ZN3WTF9HashTableIPN7WebCore9PageGroupES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTa
+__ZN7WebCore9PageGroup18removeVisitedLinksEv
+__ZN7WebCore12IconDatabase20allowDatabaseCleanupEv
+__ZN7WebCore12IconDatabase38notifyPendingLoadDecisionsOnMainThreadEPv
+__ZN7WebCore12IconDatabase26notifyPendingLoadDecisionsEv
+__ZN7WebCore14DocumentLoader36deliverSubstituteResourcesAfterDelayEv
+__ZN7WebCore18MainResourceLoader16setDefersLoadingEb
+__ZN7WebCore14ResourceLoader16setDefersLoadingEb
__ZN7WebCore18MainResourceLoader7loadNowERNS_15ResourceRequestE
-__ZN7WebCore25shouldLoadAsEmptyDocumentERKNS_4KURLE
__ZN7WebCore18MainResourceLoader15willSendRequestERNS_15ResourceRequestERKNS_16ResourceResponseE
-__ZNK7WebCore14ResourceLoader11frameLoaderEv
__ZN7WebCore18MainResourceLoader25isPostOrRedirectAfterPostERKNS_15ResourceRequestERKNS_16ResourceResponseE
__ZNK7WebCore20ResourceResponseBase14httpStatusCodeEv
__ZN7WebCore14ResourceLoader15willSendRequestERNS_15ResourceRequestERKNS_16ResourceResponseE
@@ -1260,67 +1376,113 @@ __ZN7WebCore11FrameLoader15willSendRequestEPNS_14ResourceLoaderERNS_15ResourceRe
__ZN7WebCore11FrameLoader23dispatchWillSendRequestEPNS_14DocumentLoaderEmRNS_15ResourceRequestERKNS_16ResourceResponseE
__ZN7WebCore19InspectorController15willSendRequestEPNS_14DocumentLoaderEmRNS_15ResourceRequestERKNS_16ResourceResponseE
__ZN7WebCore14DocumentLoader10setRequestERKNS_15ResourceRequestE
-__ZN7WebCore11FrameLoader21checkNavigationPolicyERKNS_15ResourceRequestEPFvPvS3_N3WTF10PassRefPtrINS_9FormStateEEEbES4_
-__ZN7WebCore5equalEPNS_10StringImplES1_
-__ZN7WebCore18MainResourceLoader33callContinueAfterNavigationPolicyEPvRKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEEb
-__ZN7WebCore18MainResourceLoader29continueAfterNavigationPolicyERKNS_15ResourceRequestEb
__ZN7WebCore11FrameLoader32representationExistsForURLSchemeERKNS_6StringE
__ZN7WebCore14ResourceHandle6createERKNS_15ResourceRequestEPNS_20ResourceHandleClientEPNS_5FrameEbbb
+__ZN7WebCore14ResourceHandle21shouldContentSniffURLERKNS_4KURLE
+__ZN7WebCore14ResourceHandleC1ERKNS_15ResourceRequestEPNS_20ResourceHandleClientEbbb
__ZN7WebCore14ResourceHandleC2ERKNS_15ResourceRequestEPNS_20ResourceHandleClientEbbb
-__ZN7WebCore23AuthenticationChallengeC2Ev
+__ZN7WebCore27AuthenticationChallengeBaseC2Ev
+__ZN7WebCore15ProtectionSpaceC1Ev
__ZN7WebCore15ProtectionSpaceC2Ev
+__ZN7WebCore10CredentialC1Ev
__ZN7WebCore10CredentialC2Ev
-__ZN7WebCore14ResourceHandle11portAllowedERKNS_15ResourceRequestE
+__ZNK7WebCore4KURL4userEv
+__ZNK7WebCore4KURL4passEv
+__ZN7WebCore19ResourceRequestBase17removeCredentialsEv
+__ZN7WebCore4KURL5parseERKNS_6StringE
+__ZN7WebCoreL11portAllowedERKNS_15ResourceRequestE
__ZN7WebCore14ResourceHandle5startEPNS_5FrameE
__ZN7WebCore14ResourceHandle8delegateEv
-[WebCoreResourceHandleAsDelegate initWithHandle:]
+__ZN7WebCore14ResourceHandle29didSendBodyDataDelegateExistsEv
+-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]
+__ZNK7WebCore14ResourceHandle6clientEv
+-[WebCoreResourceHandleAsDelegate connectionShouldUseCredentialStorage:]
+__ZN7WebCore14ResourceHandle26shouldUseCredentialStorageEv
+__ZN7WebCore14ResourceLoader26shouldUseCredentialStorageEPNS_14ResourceHandleE
+__ZN7WebCore14ResourceLoader26shouldUseCredentialStorageEv
+__ZN7WebCore11FrameLoader26shouldUseCredentialStorageEPNS_14ResourceLoaderE
+__ZNK7WebCore15ProgressTracker17estimatedProgressEv
+__ZN7WebCore12IconDatabase24getOrCreatePageURLRecordERKNS_6StringE
+_WebCoreShouldUseFontSmoothing
+_WebCoreSetShouldUseFontSmoothing
+_WebCoreDrawTextAtPoint
+__ZN7WebCore15GraphicsContextC1EP9CGContext
+__ZN7WebCore15GraphicsContextC2EP9CGContext
+__ZN7WebCore15GraphicsContext28createGraphicsContextPrivateEv
+__ZN7WebCore15GraphicsContext19setPaintingDisabledEb
+__ZNK7WebCore15GraphicsContext9fillColorEv
+__ZN7WebCore15GraphicsContext20setPlatformFillColorERKNS_5ColorE
+__ZNK7WebCore15GraphicsContext16paintingDisabledEv
+__ZNK7WebCore15GraphicsContext15platformContextEv
+__ZN7WebCoreL14setCGFillColorEP9CGContextRKNS_5ColorE
+__ZNK7WebCore5Color7getRGBAERdS1_S1_S1_
+__ZNK7WebCore15GraphicsContext11strokeColorEv
+__ZN7WebCore15GraphicsContext22setPlatformStrokeColorERKNS_5ColorE
+__ZN7WebCore15GraphicsContext12setFillColorERKNS_5ColorE
+__ZNK7WebCore4Font8drawTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
+__ZNK7WebCore4Font14drawSimpleTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
+__ZNK7WebCore4Font15drawGlyphBufferEPNS_15GraphicsContextERKNS_11GlyphBufferERKNS_7TextRunERKNS_10FloatPointE
+__ZNK7WebCore4Font10drawGlyphsEPNS_15GraphicsContextEPKNS_14SimpleFontDataERKNS_11GlyphBufferEiiRKNS_10FloatPointE
+__ZNK7WebCore15GraphicsContext9getShadowERNS_7IntSizeERiRNS_5ColorE
+__ZN7WebCore15GraphicsContext15textDrawingModeEv
+__ZN3WTF6VectorI6CGSizeLm2048EE6shrinkEm
+__ZN3WTF6VectorItLm2048EE6shrinkEm
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm2048EE6shrinkEm
+__ZN7WebCore15GraphicsContextD1Ev
+__ZN7WebCore15GraphicsContextD2Ev
+__ZN7WebCore15GraphicsContext29destroyGraphicsContextPrivateEPNS_22GraphicsContextPrivateE
+__ZN7WebCore15SQLiteStatement11columnCountEv
+__ZN7WebCore15SQLiteStatement13getColumnTextEi
+__ZN7WebCore6StringC1EPKt
+__ZN7WebCore6StringC2EPKt
+__ZN7WebCore12IconDatabase21getOrCreateIconRecordERKNS_6StringE
+__ZNK3WTF7HashMapIN7WebCore6StringEPNS1_10IconRecordENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3getERKS2_
+__ZN3WTF7HashMapIN7WebCore6StringEPNS1_10IconRecordENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3setERKS2_RKS4_
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS1_10IconRecordEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHashTr
+__ZN7WebCore13PageURLRecord13setIconRecordEN3WTF10PassRefPtrINS_10IconRecordEEE
+__ZNK3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_E8containsIS2_NS_2
__ZN7WebCore11HistoryItemC1ERKNS_6StringES3_S3_d
+__ZN7WebCore11HistoryItemC2ERKNS_6StringES3_S3_d
__ZN7WebCore11HistoryItem13setVisitCountEi
+__ZN7WebCore11HistoryItem16adoptVisitCountsERN3WTF6VectorIiLm0EEES4_
+__ZN3WTF6VectorIiLm0EE14shrinkCapacityEm
__ZNK7WebCore11HistoryItem9urlStringEv
__ZNK7WebCore11HistoryItem15lastVisitedTimeEv
-+[WebCoreHistory setHistoryProvider:]
-__ZN7WebCore12IconDatabase20allowDatabaseCleanupEv
--[WebCoreFunctionWrapper invoke]
-__ZN7WebCore12IconDatabase38notifyPendingLoadDecisionsOnMainThreadEPv
-__ZN7WebCore12IconDatabase26notifyPendingLoadDecisionsEv
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E5clearEv
+__ZN7WebCore11HistoryItem15setRedirectURLsESt8auto_ptrIN3WTF6VectorINS_6StringELm0EEEE
+__ZN7WebCore7Console24setShouldPrintExceptionsEb
+__ZN7WebCore10IconRecord15imageDataStatusEv
+__ZN3WTF7HashSetIPN7WebCore10IconRecordENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore10IconRecordES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore10IconRecordES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore10IconRecordES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTa
+__ZN3WTF9HashTableIPN7WebCore10IconRecordES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocate
+__ZN7WebCore12IconDatabase14wakeSyncThreadEv
+__ZN7WebCore24disableSuddenTerminationEv
+__ZN3WTF6VectorIPN7WebCore10IconRecordELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore10IconRecordELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore10IconRecordELm0EE15reserveCapacityEm
+__ZN7WebCore12IconDatabase37getImageDataForIconURLFromSQLDatabaseERKNS_6StringE
+__ZN7WebCore15SQLiteStatement8bindTextEiRKNS_6StringE
+__ZN7WebCore15SQLiteStatement21getColumnBlobAsVectorEiRN3WTF6VectorIcLm0EEE
+__ZN7WebCore12SharedBufferC1EPKci
+__ZN7WebCore12SharedBufferC2EPKci
+__ZN3WTF6VectorIcLm0EE6appendIcEEvPKT_m
+__ZN3WTF6VectorIcLm0EE14expandCapacityEmPKc
+__ZN7WebCore15SQLiteStatement5resetEv
+__ZNK3WTF9HashTableIPN7WebCore10IconRecordES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E8containsIS
+__ZN3WTF9HashTableIPN7WebCore10IconRecordES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_
+__ZN3WTF9HashTableIPN7WebCore10IconRecordES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndI
+__ZN3WTF9HashTableIPN7WebCore10IconRecordES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN7WebCore15AutodrainedPool5cycleEv
+__ZN3WTF6VectorIPN7WebCore10IconRecordELm0EE6shrinkEm
+__ZN7WebCore23enableSuddenTerminationEv
-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]
-__ZNK7WebCore14ResourceHandle6clientEv
__ZN7WebCore14ResourceLoader18didReceiveResponseEPNS_14ResourceHandleERKNS_16ResourceResponseE
+-[NSHTTPURLResponse(WebCoreURLResponse) _webcore_MIMEType]
+__ZL24webNSURLResponseMIMETypeP11objc_objectP13objc_selector
__ZN7WebCore18MainResourceLoader18didReceiveResponseERKNS_16ResourceResponseE
-__ZN7WebCore16ResourceResponse24doUpdateResourceResponseEv
-__ZNK7WebCore4KURL11isLocalFileEv
-__ZN7WebCore17equalIgnoringCaseERKNS_16DeprecatedStringES2_
-__ZNK7WebCore4KURL4pathEv
-__ZN7WebCore4KURL13decode_stringERKNS_16DeprecatedStringE
-__ZN7WebCore12UTF8EncodingEv
-__ZN7WebCore4KURL13decode_stringERKNS_16DeprecatedStringERKNS_12TextEncodingE
-__ZNK7WebCore16DeprecatedString4findEci
-__ZNK7WebCore16DeprecatedString2atEj
-__ZN3WTF6VectorIcLm2048EE4growEm
-__ZNK7WebCore16DeprecatedString10copyLatin1EPcjj
-__ZNK7WebCore12TextEncoding6decodeEPKcm
-__ZN7WebCore15newTextCodecICUERKNS_12TextEncodingEPKv
-__ZN7WebCore12TextCodecICUC2ERKNS_12TextEncodingE
-__ZN7WebCore12TextCodecICU6decodeEPKcmb
-__ZNK7WebCore12TextCodecICU18createICUConverterEv
-__ZN7WebCore9TextCodec17appendOmittingBOMERN3WTF6VectorItLm0EEEPKtm
-__ZN3WTF6VectorItLm0EE6appendItEEvPKT_m
-__ZN3WTF6VectorItLm0EE14expandCapacityEmPKt
-__ZN3WTF6VectorItLm0EE14expandCapacityEm
-__ZN3WTF6VectorItLm0EE15reserveCapacityEm
-__ZN7WebCore10StringImpl5adoptERN3WTF6VectorItLm0EEE
-__ZN7WebCore12TextCodecICU29registerExtendedEncodingNamesEPFvPKcS2_E
-__ZN7WebCore12TextCodecICU22registerExtendedCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
-__ZN3WTF9HashTableIiSt4pairIiN7WebCore16TextCodecFactoryEENS_18PairFirstExtractorIS4_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E4findIiNS_22IdentityHashTranslatorIiS4_S8_EEEENS_17HashTableIteratorIiS4_S6_S8_SD_SB_EERKT_
-__ZN7WebCore12TextCodecMac21registerEncodingNamesEPFvPKcS2_E
-__ZN7WebCore12TextCodecMac14registerCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
-__ZNK7WebCore12TextCodecICU19releaseICUConverterEv
-__ZNK7WebCore16DeprecatedString11isAllLatin1Ev
-__ZN7WebCore16DeprecatedString6insertEjPKcj
-__ZN7WebCore20DeprecatedStringData17increaseAsciiSizeEj
-__ZN7WebCore16DeprecatedString6appendEPKNS_14DeprecatedCharEj
-__ZN7WebCore16DeprecatedString6insertEjPKNS_14DeprecatedCharEj
+__ZNK7WebCore20ResourceResponseBase16httpHeaderFieldsEv
__ZN7WebCore11FrameLoader18checkContentPolicyERKNS_6StringEPFvPvNS_12PolicyActionEES4_
__ZN7WebCore11PolicyCheck3setEPFvPvNS_12PolicyActionEES1_
__ZN7WebCore11FrameLoader26continueAfterContentPolicyENS_12PolicyActionE
@@ -1328,7 +1490,6 @@ __ZN7WebCore11PolicyCheck4callENS_12PolicyActionE
__ZN7WebCore18MainResourceLoader30callContinueAfterContentPolicyEPvNS_12PolicyActionE
__ZN7WebCore18MainResourceLoader26continueAfterContentPolicyENS_12PolicyActionE
__ZNK7WebCore11FrameLoader10isStoppingEv
-__ZNK7WebCore14DocumentLoader10isStoppingEv
__ZN7WebCore18MainResourceLoader26continueAfterContentPolicyENS_12PolicyActionERKNS_16ResourceResponseE
__ZNK7WebCore11FrameLoader15canShowMIMETypeERKNS_6StringE
__ZNK7WebCore20ResourceResponseBase6isHTTPEv
@@ -1341,9 +1502,11 @@ __ZN3WTF6VectorIN7WebCore16ResourceResponseELm0EE15reserveCapacityEm
__ZN7WebCore15ProgressTracker17incrementProgressEmRKNS_16ResourceResponseE
__ZNK7WebCore20ResourceResponseBase21expectedContentLengthEv
__ZNK3WTF7HashMapImPN7WebCore12ProgressItemENS_7IntHashImEENS_10HashTraitsImEENS6_IS3_EEE3getERKm
-__ZN3WTF9HashTableImSt4pairImiENS_18PairFirstExtractorIS2_EENS_7IntHashImEENS_14PairHashTraitsINS_10HashTraitsImEENS8_IiEEEES9_E3addImPN7WebCore12ProgressItemENS_17HashMapTranslatorILb1ES1_ImSG_ENS_18PairBaseHashTraitsIS9_NS8_ISG_EEEESB_S6_EEEES1_INS_17HashTableIteratorImS2_S4_S6_SB_S9_EEbERKT_RKT0_
+__ZN3WTF7HashMapImPN7WebCore12ProgressItemENS_7IntHashImEENS_10HashTraitsImEENS6_IS3_EEE3setERKmRKS3_
+__ZN3WTF9HashTableImSt4pairImPN7WebCore12ProgressItemEENS_18PairFirstExtractorIS5_EENS_7IntHashImEENS_14PairHashTraitsINS_10Has
__ZN7WebCore11FrameLoader26dispatchDidReceiveResponseEPNS_14DocumentLoaderEmRKNS_16ResourceResponseE
__ZN7WebCore19InspectorController18didReceiveResponseEPNS_14DocumentLoaderEmRKNS_16ResourceResponseE
+__ZN7WebCore20ResourceResponseBaseD2Ev
-[WebCoreResourceHandleAsDelegate connection:didReceiveData:lengthReceived:]
__ZN7WebCore14ResourceLoader14didReceiveDataEPNS_14ResourceHandleEPKcii
__ZN7WebCore18MainResourceLoader14didReceiveDataEPKcixb
@@ -1356,40 +1519,31 @@ __ZN7WebCore14DocumentLoader12receivedDataEPKci
__ZNK7WebCore14DocumentLoader19doesProgressiveLoadERKNS_6StringE
__ZNK7WebCore11FrameLoader11isReplacingEv
__ZN7WebCore14DocumentLoader10commitLoadEPKci
-__ZNK7WebCore14DocumentLoader17mainDocumentErrorEv
-__ZN7WebCore8Document7appletsEv
-__ZN7WebCore14HTMLCollectionC1EN3WTF10PassRefPtrINS_4NodeEEENS0_4TypeE
-__ZNK7WebCore14HTMLCollection6lengthEv
-__ZNK7WebCore14HTMLCollection19resetCollectionInfoEv
-__ZNK7WebCore14HTMLCollection10calcLengthEv
-__ZNK7WebCore14HTMLCollection9itemAfterEPNS_7ElementE
-__ZN7WebCore17nextNodeOrSiblingEPNS_4NodeES1_b
-__ZNK7WebCore4Node16traverseNextNodeEPKS0_
-__ZN7WebCore8Document22hasWindowEventListenerERKNS_12AtomicStringE
-__ZN7WebCore23DeprecatedValueListImpl5beginEv
-__ZN7WebCore23DeprecatedValueListImpl3endEv
-__ZNK7WebCore23DeprecatedValueListImpl3endEv
-__ZN7WebCore15BackForwardList8capacityEv
-__ZN7WebCore15EventTargetNode19dispatchWindowEventERKNS_12AtomicStringEbb
-__ZN7WebCore8Document15updateRenderingEv
-__ZN7WebCore8Document11inPageCacheEv
-__ZN7WebCore8Document35removeAllEventListenersFromAllNodesEv
+__ZN7WebCore9DOMWindow16hasEventListenerERKNS_12AtomicStringE
+__ZN7WebCore9DOMWindow19dispatchUnloadEventEPN3WTF6VectorINS1_6RefPtrINS_23RegisteredEventListenerEEELm0EEE
+__ZN7WebCore8Document23removeAllEventListenersEv
__ZN7WebCore8Document39removeAllDisconnectedNodeEventListenersEv
-__ZNK7WebCore15EventTargetNode17isEventTargetNodeEv
-__ZN7WebCore15EventTargetNode23removeAllEventListenersEv
-__ZN7WebCore11EventTarget23removeAllEventListenersEPNS_15EventTargetNodeE
+__ZN3WTF9HashTableIPN7WebCore4NodeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E5clearEv
+__ZN3WTF9HashTableIPN7WebCore4NodeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTableEP
+__ZNK7WebCore4Node16traverseNextNodeEPKS0_
__ZN7WebCore6Loader14cancelRequestsEPNS_9DocLoaderE
-__ZN7WebCore14XMLHttpRequest14cancelRequestsEPNS_8DocumentE
-__ZN7WebCore18requestsByDocumentEv
+__ZN7WebCore9DocLoader20clearPendingPreloadsEv
+__ZN3WTF6VectorIN7WebCore9DocLoader14PendingPreloadELm0EE14shrinkCapacityEm
+__ZN7WebCore6Loader28scheduleServePendingRequestsEv
+__ZN7WebCore9TimerBase5startEdd
+__ZN7WebCoreL9timerHeapEv
+__ZN3WTF6VectorIPN7WebCore9TimerBaseELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore9TimerBaseELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore9TimerBaseELm0EE15reserveCapacityEm
+__ZN7WebCore9TimerBase15heapDecreaseKeyEv
+__ZSt11__push_heapIN7WebCore17TimerHeapIteratorEiNS0_16TimerHeapElementEEvT_T0_S4_T1_
+__ZN7WebCore21MainThreadSharedTimer11setFireTimeEd
+__ZN7WebCore22setSharedTimerFireTimeEd
+-[WebCorePowerNotifier init]
+__ZN7WebCore8Document13stopDatabasesEv
__ZN7WebCore14DocumentLoader23stopLoadingSubresourcesEv
__ZN7WebCore14DocumentLoader18stopLoadingPlugInsEv
__ZN7WebCore14DocumentLoader15detachFromFrameEv
-__ZN7WebCore11FrameLoader28addHistoryForCurrentLocationEv
-__ZN7WebCore11HistoryItemC1ERKNS_6StringES3_d
-__ZN7WebCore11HistoryItem18setLastVisitedTimeEd
-__ZN7WebCore11HistoryItem22mergeAutoCompleteHintsEPS0_
-__ZN7WebCore11HistoryItemD1Ev
-__ZN7WebCore12IconDatabase21releaseIconForPageURLERKNS_6StringE
__ZN7WebCore11FrameLoader33addBackForwardItemClippedAtTargetEb
__ZN7WebCore15BackForwardList7entriesEv
__ZN7WebCore11FrameLoader21createHistoryItemTreeEPNS_5FrameEb
@@ -1397,6 +1551,7 @@ __ZN7WebCore11FrameLoader17createHistoryItemEb
__ZNK7WebCore14DocumentLoader11originalURLEv
__ZNK7WebCore14DocumentLoader10requestURLEv
__ZN7WebCore11HistoryItemC1ERKNS_4KURLERKNS_6StringES6_S6_
+__ZN7WebCore11HistoryItemC2ERKNS_4KURLERKNS_6StringES6_S6_
__ZN7WebCore11HistoryItem20setOriginalURLStringERKNS_6StringE
__ZN7WebCore11HistoryItem22setFormInfoFromRequestERKNS_15ResourceRequestE
__ZN7WebCore11HistoryItem15setIsTargetItemEb
@@ -1404,1050 +1559,2044 @@ __ZN7WebCore15BackForwardList7addItemEN3WTF10PassRefPtrINS_11HistoryItemEEE
__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HistoryItemEEELm0EE14expandCapacityEm
__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HistoryItemEEELm0EE15reserveCapacityEm
__ZN3WTF7HashSetINS_6RefPtrIN7WebCore11HistoryItemEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
-__ZN7WebCore10ScrollView18suppressScrollbarsEbb
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore11HistoryItemEEES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_
+__ZNK7WebCore14DocumentLoader28urlForHistoryReflectsFailureEv
+__ZNK7WebCore14DocumentLoader19originalRequestCopyEv
+__ZN7WebCore11HistoryItem7visitedERKNS_6StringEd
+__ZN7WebCore11HistoryItem17recordVisitAtTimeEd
+__ZN7WebCore11HistoryItem25padDailyCountsForNewVisitEd
+__ZN3WTF6VectorIiLm0EE4fillERKim
+__ZSt4fillIPiiEvT_S1_RKT0_
+__ZN3WTF6VectorIiLm0EE6insertIiEEvmPKT_m
+__ZN7WebCore11HistoryItem27collapseDailyVisitsToWeeklyEv
+__ZNK7WebCore11HistoryItem17originalURLStringEv
+__ZN7WebCore4Page20setGlobalHistoryItemEPNS_11HistoryItemE
+__ZN7WebCore9PageGroup14addVisitedLinkERKNS_4KURLE
+__ZN7WebCore15visitedLinkHashEPKtj
+__ZN3WTF7HashSetIyN7WebCore12LinkHashHashENS_10HashTraitsIyEEE3addERKy
+__ZN3WTF9HashTableIyyNS_17IdentityExtractorIyEEN7WebCore12LinkHashHashENS_10HashTraitsIyEES6_E6expandEv
+__ZN3WTF9HashTableIyyNS_17IdentityExtractorIyEEN7WebCore12LinkHashHashENS_10HashTraitsIyEES6_E6rehashEi
+__ZN3WTF9HashTableIyyNS_17IdentityExtractorIyEEN7WebCore12LinkHashHashENS_10HashTraitsIyEES6_E13allocateTableEi
+__ZN3WTF9HashTableIyyNS_17IdentityExtractorIyEEN7WebCore12LinkHashHashENS_10HashTraitsIyEES6_E15deallocateTableEPyi
+__ZN7WebCore4Page19visitedStateChangedEPNS_9PageGroupEy
+__ZN7WebCore16CSSStyleSelector15SelectorChecker19visitedStateChangedEy
+__ZNK3WTF9HashTableIyyNS_17IdentityExtractorIyEEN7WebCore12LinkHashHashENS_10HashTraitsIyEES6_E8containsIyNS_22IdentityHashTran
+__ZN7WebCore10ScrollView23setScrollbarsSuppressedEbb
+__ZN7WebCore10ScrollView31platformSetScrollbarsSuppressedEb
+__ZN7WebCore14DocumentLoaderD2Ev
__ZNK7WebCore11HistoryItem17isCurrentDocumentEPNS_8DocumentE
-__ZN7WebCoreeqERKNS_6StringERKNS_16DeprecatedStringE
-__ZNK7WebCore12TextEncoding25backslashAsCurrencySymbolEv
-__ZN7WebCore30noExtendedTextEncodingNameUsedEv
+__ZN7WebCore5Frame18setJSStatusBarTextERKNS_6StringE
+__ZN7WebCore6Chrome16setStatusbarTextEPNS_5FrameERKNS_6StringE
+__ZNK7WebCore8Document31displayStringModifiedByEncodingERKNS_6StringE
+__ZN7WebCore5Frame25setJSDefaultStatusBarTextERKNS_6StringE
+__ZN3WTF6VectorItLm0EE14expandCapacityEmPKt
+__ZN3WTF6VectorItLm0EE14expandCapacityEm
+__ZN3WTF6VectorItLm0EE15reserveCapacityEm
+__ZNK7WebCore4KURL4pathEv
__ZN7WebCore11FrameLoader13committedLoadEPNS_14DocumentLoaderEPKci
--[WebCoreFrameBridge receivedData:textEncodingName:]
__ZN7WebCore11FrameLoader11setEncodingERKNS_6StringEb
__ZN7WebCore11FrameLoader17receivedFirstDataEv
+__ZN3WTF7HashMapIN7WebCore6StringEjNS1_10StringHashENS_10HashTraitsIS2_EENS4_IjEEE3setERKS2_RKj
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_jENS_18PairFirstExtractorIS4_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTra
+__ZNK3WTF7HashMapIN7WebCore6StringEjNS1_10StringHashENS_10HashTraitsIS2_EENS4_IjEEE3getERKS2_
__ZNK7WebCore14SecurityOrigin20isSecureTransitionToERKNS_4KURLE
+__ZN7WebCore22ScriptExecutionContext20stopActiveDOMObjectsEv
__ZN7WebCore13ContainerNode10willRemoveEv
__ZN7WebCore4Node10willRemoveEv
__ZN7WebCore8Document6detachEv
+__ZN7WebCore8Document18clearAXObjectCacheEv
+__ZNK7WebCore8Document11topDocumentEv
+__ZNK7WebCore8Document12ownerElementEv
+__ZN7WebCore8Document26documentWillBecomeInactiveEv
__ZN7WebCore13ContainerNode6detachEv
__ZN7WebCore7Element6detachEv
__ZN7WebCore7Element27cancelFocusAppearanceUpdateEv
__ZN7WebCore4Node6detachEv
-__ZN7WebCore10RenderFlow7destroyEv
-__ZN7WebCore15RenderContainer23destroyLeftoverChildrenEv
-__ZNK7WebCore12RenderObject22documentBeingDestroyedEv
-__ZN7WebCore10RenderFlow15deleteLineBoxesEv
-__ZN7WebCore15RenderContainer7destroyEv
+__ZN7WebCore11RenderBlock7destroyEv
+__ZN7WebCore21RenderObjectChildList23destroyLeftoverChildrenEv
+__ZN7WebCore17RenderLineBoxList15deleteLineBoxesEPNS_11RenderArenaE
__ZN7WebCore9RenderBox7destroyEv
-__ZN7WebCore11RenderLayer13clearClipRectEv
+__ZN7WebCore20RenderBoxModelObject7destroyEv
+__ZN7WebCore11RenderLayer14clearClipRectsEv
__ZN7WebCore12RenderObject7destroyEv
__ZNK7WebCore12EventHandler18autoscrollRendererEv
-__ZNK7WebCore12RenderObject19animationControllerEv
-__ZNK7WebCore5Frame19animationControllerEv
-__ZN7WebCore19AnimationController24cancelImplicitAnimationsEPNS_12RenderObjectE
+__ZN7WebCore19AnimationController16cancelAnimationsEPNS_12RenderObjectE
__ZN7WebCore11RenderBlock11removeChildEPNS_12RenderObjectE
-__ZN7WebCore15RenderContainer11removeChildEPNS_12RenderObjectE
-__ZN7WebCore12RenderObject21removeFromObjectListsEv
-__ZN7WebCore15RenderContainer15removeChildNodeEPNS_12RenderObjectEb
+__ZN7WebCore12RenderObject11removeChildEPS0_
+__ZN7WebCore21RenderObjectChildList15removeChildNodeEPNS_12RenderObjectES2_b
__ZN7WebCore9RenderBox20deleteLineBoxWrapperEv
+__ZN7WebCore20RenderBoxModelObject12destroyLayerEv
__ZN7WebCore11RenderLayer7destroyEPNS_11RenderArenaE
+__ZN7WebCore11RenderLayerD0Ev
__ZN7WebCore11RenderLayer16destroyScrollbarENS_20ScrollbarOrientationE
__ZN7WebCore11RenderLayerdlEPvm
__ZN7WebCore11RenderArena4freeEmPv
__ZN7WebCore12RenderObject11arenaDeleteEPNS_11RenderArenaEPv
-__ZN7WebCore11RenderStyle11arenaDeleteEPNS_11RenderArenaE
+__ZN7WebCore11RenderBlockD0Ev
+__ZN7WebCore9RenderBoxD2Ev
+__ZN7WebCore20RenderBoxModelObjectD2Ev
+__ZN7WebCore12RenderObjectD2Ev
+__ZN7WebCore11RenderStyleD1Ev
__ZN7WebCore11RenderStyleD2Ev
-__ZN7WebCore11RenderStyledlEPvm
__ZN7WebCore12RenderObjectdlEPvm
+__ZN7WebCore10RenderViewD0Ev
+__ZN3WTF9HashTableIPN7WebCore12RenderWidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15dealloca
+__ZN7WebCore11RenderBlockD2Ev
+__ZN7WebCore18StyleInheritedDataD1Ev
__ZN7WebCore18StyleInheritedDataD2Ev
+__ZN7WebCore11RenderArenaD1Ev
__ZN7WebCore11RenderArenaD2Ev
__ZN7WebCore15FinishArenaPoolEPNS_9ArenaPoolE
-__ZN7WebCore13FreeArenaListEPNS_9ArenaPoolEPNS_5ArenaEb
+__ZN7WebCoreL13FreeArenaListEPNS_9ArenaPoolEPNS_5ArenaEb
__ZN7WebCore8Document26removeFocusedNodeOfSubtreeEPNS_4NodeEb
__ZN7WebCore19SelectionController5clearEv
-__ZN7WebCore19SelectionController12setSelectionERKNS_9SelectionEbbb
+__ZN7WebCore19SelectionController12setSelectionERKNS_16VisibleSelectionEbbb
__ZN7WebCore13TypingCommand11closeTypingEPNS_11EditCommandE
__ZN7WebCore13TypingCommand26isOpenForMoreTypingCommandEPKNS_11EditCommandE
__ZN7WebCore5Frame16clearTypingStyleEv
__ZN7WebCore9FrameView5clearEv
-__ZN7WebCore10ScrollView19setStaticBackgroundEb
+__ZN7WebCore10ScrollView18setCanBlitOnScrollEb
+__ZN7WebCore10ScrollView26platformSetCanBlitOnScrollEb
+__ZN7WebCore5Frame23setSelectionGranularityENS_15TextGranularityE
+__ZThn8_N7WebCore8Document14removedLastRefEv
__ZN7WebCore8Document14removedLastRefEv
__ZN7WebCore13ContainerNode17removeAllChildrenEv
-__ZN7WebCore13ContainerNode28addChildNodesToDeletionQueueERPNS_4NodeES3_PS0_
-__ZNK7WebCore13ContainerNode13hasChildNodesEv
+__ZN7WebCore28removeAllChildrenInContainerINS_4NodeENS_13ContainerNodeEEEvPT0_
+__ZN7WebCore7Private28addChildNodesToDeletionQueueINS_4NodeENS_13ContainerNodeEEEvRPT_S6_PT0_
+__ZN7WebCore15HTMLHtmlElementD0Ev
+__ZN7WebCore11HTMLElementD2Ev
+__ZN7WebCore13StyledElementD2Ev
__ZN7WebCore13StyledElement22destroyInlineStyleDeclEv
-__ZN7WebCore11EventTargetD0Ev
-__ZN3WTF20deleteAllPairSecondsIPSt4pairINS_6VectorIN7WebCore14DocumentMarkerELm0EEENS2_INS3_7IntRectELm0EEEEKNS_7HashMapINS_6RefPtrINS3_4NodeEEES9_NS_7PtrHashISD_EENS_10HashTraitsISD_EENSG_IS9_EEEEEEvRT0_
-__ZN7WebCore12HTMLDocumentD1Ev
-__ZN7WebCore14XMLHttpRequest14detachRequestsEPNS_8DocumentE
-__ZN3KJS17ScriptInterpreter28forgetAllDOMNodesForDocumentEPN7WebCore8DocumentE
-__ZN3KJS19domNodesPerDocumentEv
+__ZN7WebCore7ElementD2Ev
+__ZN7WebCore13ContainerNodeD2Ev
+__ZN7WebCore4NodeD2Ev
+__ZN7WebCore11EventTargetD2Ev
+__ZN3WTF20deleteAllPairSecondsIPSt4pairINS_6VectorIN7WebCore14DocumentMarkerELm0EEENS2_INS3_7IntRectELm0EEEEKNS_7HashMapINS_6Re
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS_6RefPtrINS1_17HTMLCanvasElementEEEENS_18PairFirstExtractorIS7_EENS1_10StringH
+__ZN7WebCore12HTMLDocumentD0Ev
+__ZN7WebCore8DocumentD2Ev
+__ZN7WebCore28forgetAllDOMNodesForDocumentEPNS_8DocumentE
+__ZN7WebCore16CSSStyleSelectorD1Ev
__ZN7WebCore16CSSStyleSelectorD2Ev
+__ZN7WebCore19MediaQueryEvaluatorD1Ev
__ZN7WebCore19MediaQueryEvaluatorD2Ev
+__ZN7WebCore10CSSRuleSetD1Ev
__ZN7WebCore10CSSRuleSetD2Ev
-__ZN3WTF20deleteAllPairSecondsIPN7WebCore15CSSRuleDataListEKNS_7HashMapIPNS1_16AtomicStringImplES3_NS_7PtrHashIS6_EENS_10HashTraitsIS6_EENS9_IS3_EEEEEEvRT0_
-__ZN7WebCore15CSSFontSelectorD1Ev
-__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm0EE6shrinkEm
-__ZN7WebCore15BackgroundLayerD2Ev
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore15CSSRuleDataListEKNS_7HashMapIPNS1_16AtomicStringImplES3_NS_7PtrHashIS6_EENS_10HashTr
+__ZN3WTF15deleteAllValuesIPN7WebCore16MediaQueryResultELm0EEEvRKNS_6VectorIT_XT0_EEE
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_NS_6RefPtrINS1_22WebKitCSSKeyframesRuleEEEENS_18PairFirstExtractorIS
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deal
+__ZN7WebCore15CSSFontSelectorD0Ev
+__ZN7WebCore9FontCache12removeClientEPNS_12FontSelectorE
+__ZN3WTF9HashTableIPN7WebCore12FontSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_N
+__ZN3WTF9HashTableIPN7WebCore12FontSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAn
+__ZN3WTF9HashTableIPN7WebCore12FontSelectorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS
+__ZN3WTF20deleteAllPairSecondsIPNS_6VectorINS_6RefPtrIN7WebCore11CSSFontFaceEEELm0EEEKNS_7HashMapINS3_6StringES7_NS3_15CaseFold
+__ZN3WTF20deleteAllPairSecondsIPNS_7HashMapIjNS_6RefPtrIN7WebCore20CSSSegmentedFontFaceEEENS_7IntHashIjEENS_10HashTraitsIjEENS8
+__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm64EE6shrinkEm
+__ZN7WebCore9FillLayerD1Ev
+__ZN7WebCore9FillLayerD2Ev
+__ZN7WebCore9DocLoaderD1Ev
__ZN7WebCore9DocLoaderD2Ev
+__ZN7WebCore9DocLoader13clearPreloadsEv
+__ZN3WTF11ListHashSetIPN7WebCore14CachedResourceENS_7PtrHashIS3_EEE14deleteAllNodesEv
__ZN7WebCore5Cache15removeDocLoaderEPNS_9DocLoaderE
-__ZN3WTF20deleteAllPairSecondsIPN7WebCore14HTMLCollection14CollectionInfoEKNS_7HashMapIPNS1_16AtomicStringImplES4_NS_7PtrHashIS7_EENS_10HashTraitsIS7_EENSA_IS4_EEEEEEvRT0_
+__ZN3WTF9HashTableIPN7WebCore9DocLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22
+__ZN3WTF9HashTableIPN7WebCore9DocLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInv
+__ZN3WTF9HashTableIPN7WebCore9DocLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore15CollectionCacheEKNS_7HashMapIPNS1_16AtomicStringImplES3_NS_7PtrHashIS6_EENS_10HashTr
__ZN7WebCore14StyleSheetList17documentDestroyedEv
-__ZN7WebCore14HTMLCollection14CollectionInfoD2Ev
-__ZN3WTF11ListHashSetIPN7WebCore31HTMLFormControlElementWithStateENS_7PtrHashIS3_EEE14deleteAllNodesEv
-__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore31HTMLFormControlElementWithStateEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashFunctionsIS4_NS_7PtrHashIS4_EEEENS_10HashTraitsIS6_EESE_E19removeAndInvalidateEPS6_
+__ZN3WTF9HashTableIPN7WebCore7ElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTabl
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PNS1_15CollectionCacheEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_
+__ZN7WebCore15CollectionCacheD1Ev
+__ZN7WebCore15CollectionCacheD2Ev
+__ZN3WTF11ListHashSetIPN7WebCore7ElementENS_7PtrHashIS3_EEE14deleteAllNodesEv
+__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore7ElementEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashFunctionsI
+__ZN3WTF11ListHashSetIPN7WebCore4NodeENS_7PtrHashIS3_EEE14deleteAllNodesEv
+__ZN7WebCore14StyleSheetListD1Ev
__ZN7WebCore14StyleSheetListD2Ev
+__ZN3WTF9HashTableIPN7WebCore5RangeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTableE
+__ZN3WTF9HashTableIPN7WebCore12NodeIteratorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15dealloca
+__ZN7WebCore22ScriptExecutionContextD2Ev
+__ZN3WTF9HashTableIPN7WebCore11MessagePortES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocat
__ZN7WebCore19TextResourceDecoderD1Ev
-__ZN7WebCoreplERKNS_16DeprecatedStringES2_
-__ZNK3WTF7HashMapIN7WebCore6StringEjNS1_10StringHashENS_10HashTraitsIS2_EENS4_IjEEE3getERKS2_
-__ZN7WebCore16CSSStyleSelector13setEncodedURLERKNS_4KURLE
-__ZN7WebCore4KURL8setQueryERKNS_16DeprecatedStringE
-__ZNK7WebCore16DeprecatedString7findRevEci
-__ZN7WebCore16DeprecatedString8truncateEj
-__ZN7WebCore4KURL7setPathERKNS_16DeprecatedStringE
-__ZN7WebCore4KURL13encode_stringERKNS_16DeprecatedStringE
-__ZNK7WebCore16DeprecatedString4utf8ERi
-__ZNK7WebCore12TextEncoding6encodeEPKtmb
-__ZN7WebCore7CStringC2EPKc
-__ZN7WebCore7CString4initEPKcj
-__ZNK7WebCore7CString17deprecatedCStringEv
-__ZNK7WebCore7CString6lengthEv
-__ZN7WebCore17DeprecatedCStringC2EPKcj
-__ZN7WebCore9ArrayImplC2Emm
-__ZN7WebCore9ArrayImpl12ArrayPrivateC2Emm
-__ZN7WebCore17DeprecatedCString6resizeEj
-__ZN7WebCore9ArrayImpl6resizeEm
-__ZNK7WebCore9ArrayImpl4dataEv
-__ZNK7WebCore17DeprecatedCString6lengthEv
-__ZN7WebCore9ArrayImplD2Ev
-__ZN7WebCore9ArrayImpl12ArrayPrivateD2Ev
-__ZNK7WebCore8Document35shouldBeAllowedToLoadLocalResourcesEv
-__ZN7WebCore11FrameLoader21shouldTreatURLAsLocalERKNS_6StringE
+__ZN7WebCore19TextResourceDecoderD2Ev
__ZNK7WebCore11HistoryItem13documentStateEv
__ZN7WebCore8Document26setStateForNewFormElementsERKN3WTF6VectorINS_6StringELm0EEE
__ZN7WebCore11FrameLoader21dispatchDidCommitLoadEv
-__ZN7WebCore15BackForwardList11currentItemEv
-__ZNK7WebCore11HistoryItem20getTransientPropertyERKNS_6StringE
+__ZN7WebCore4Page27setJavaScriptURLsAreAllowedEb
__ZN7WebCore15FocusController9setActiveEb
-__ZN7WebCore15FocusController18focusedOrMainFrameEv
-__ZN7WebCore19SelectionController10setFocusedEb
+__ZN7WebCore19SelectionController21pageActivationChangedEv
+__ZN7WebCore5Frame20setSelectionFromNoneEv
+__ZNK7WebCore5Frame17isContentEditableEv
+__ZNK7WebCore6Editor16clientIsEditableEv
+__ZNK7WebCore8Document12inDesignModeEv
+__ZN7WebCore5Frame22clearCaretRectIfNeededEv
+__ZN7WebCore19SelectionController19invalidateCaretRectEv
+__ZN7WebCore5Frame22selectionLayoutChangedEv
+__ZN7WebCore19SelectionController18recomputeCaretRectEv
+__ZNK7WebCore19SelectionController14localCaretRectEv
+__ZN7WebCore19SelectionController6layoutEv
+__ZNK7WebCore19SelectionController26absoluteBoundsForLocalRectERKNS_7IntRectE
+__ZNK7WebCore19SelectionController13caretRendererEv
+__ZN7WebCore10RenderView14clearSelectionEv
+__ZN7WebCore10RenderView20repaintViewRectangleERKNS_7IntRectEb
+__ZN7WebCore10RenderView12setSelectionEPNS_12RenderObjectEiS2_iNS0_20SelectionRepaintModeE
__ZNK7WebCore6Editor7canEditEv
-__ZNK7WebCore9Selection17isContentEditableEv
+__ZNK7WebCore16VisibleSelection17isContentEditableEv
__ZN7WebCore18isEditablePositionERKNS_8PositionE
__ZN7WebCore19InspectorController13didCommitLoadEPNS_14DocumentLoaderE
__ZN7WebCore11FrameLoader29dispatchWindowObjectAvailableEv
-__ZN7WebCore8KJSProxyC2EPNS_5FrameE
-__ZN7WebCore9DocLoader14setCachePolicyENS_11CachePolicyE
-__ZNK7WebCore20ResourceResponseBase15httpHeaderFieldERKNS_6StringE
__ZN7WebCore16parseHTTPRefreshERKNS_6StringEbRdRS0_
--[WebCoreFrameBridge addData:]
__ZN7WebCore8Document24setShouldCreateRenderersEb
__ZN7WebCore11FrameLoader7addDataEPKci
+__ZN7WebCore19TextResourceDecoder11setEncodingERKNS_12TextEncodingENS0_14EncodingSourceE
__ZNK7WebCore12TextEncoding10isJapaneseEv
-__ZN7WebCore15addEncodingNameERN3WTF7HashSetIPKcNS0_7PtrHashIS3_EENS0_10HashTraitsIS3_EEEES3_
-__ZN3WTF7HashSetIPKcNS_7PtrHashIS2_EENS_10HashTraitsIS2_EEE3addERKS2_
-__ZNK3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E8containsIiNS_22IdentityHashTranslatorIiiS4_EEEEbRKT_
-__ZN7WebCore12HTMLDocument18determineParseModeERKNS_6StringE
-__ZN7WebCore10StringImpl4findEti
-__ZNK7WebCore6StringixEj
-__ZN7WebCore14containsStringEPKcRKNS_6StringEi
-__ZNK7WebCore6String9substringEjj
-__ZN7WebCore10StringImpl9substringEjj
-__ZN7WebCore16parseDocTypePartERKNS_6StringEi
-__ZNK7WebCore6String15stripWhiteSpaceEv
-__ZN7WebCore10StringImpl15stripWhiteSpaceEv
-__ZN7WebCore12DocumentTypeC2EPNS_8DocumentERKNS_6StringES5_S5_
-__ZN7WebCore8Document10setDocTypeEN3WTF10PassRefPtrINS_12DocumentTypeEEE
-__ZNK7WebCore6String6latin1Ev
-__ZN7WebCore15TextCodecLatin16encodeEPKtmb
-__Z16findDoctypeEntryPKcj
+__ZNK7WebCore19TextResourceDecoder16shouldAutoDetectEv
+__ZN7WebCoreL15newTextCodecICUERKNS_12TextEncodingEPKv
+__ZN7WebCore12TextCodecICUC1ERKNS_12TextEncodingE
+__ZN7WebCore12TextCodecICUC2ERKNS_12TextEncodingE
+__ZN7WebCore12TextCodecICU6decodeEPKcmbbRb
+__ZNK7WebCore12TextCodecICU18createICUConverterEv
+__ZN7WebCoreL18cachedConverterICUEv
+__ZN7WebCore12TextCodecICU14decodeToBufferEPtS1_RPKcS3_PibR10UErrorCode
__ZNK7WebCore12TextEncoding18usesVisualOrderingEv
-__ZNK7WebCore11RenderStyle21contentDataEquivalentEPKS0_
+__ZNK7WebCore25StyleRareNonInheritedData21contentDataEquivalentERKS0_
__ZNK7WebCore11RenderStyleeqERKS0_
-__ZNK7WebCore11RenderStyle17inheritedNotEqualEPS0_
-__ZNK7WebCore11RenderStyle4diffEPKS0_
+__ZNK7WebCore18StyleInheritedDataeqERKS0_
__ZNK7WebCore4FonteqERKS0_
__ZN7WebCore13HTMLTokenizer5writeERKNS_15SegmentedStringEb
+__ZN7WebCore15SegmentedStringC1ERKS0_
__ZN7WebCore15SegmentedStringC2ERKS0_
-__ZN7WebCore23DeprecatedValueListImplC2ERKS0_
__ZN7WebCore13HTMLTokenizer6setSrcERKNS_15SegmentedStringE
__ZN7WebCore15SegmentedStringaSERKS0_
-__ZN7WebCore23DeprecatedValueListImplaSERKS0_
__ZN7WebCore13HTMLTokenizer8parseTagERNS_15SegmentedStringENS0_5StateE
-__ZNK7WebCore15SegmentedString6lengthEv
-__ZN7WebCore12AtomicString3addEPKt
-__ZN7WebCore5Token12addAttributeEPNS_8DocumentERNS_12AtomicStringERKS3_b
-__ZN7WebCore18NamedMappedAttrMapC2EPNS_7ElementE
-__ZNK7WebCore12NamedAttrMap16getAttributeItemERKNS_13QualifiedNameE
-__ZN7WebCore12NamedAttrMap12addAttributeEN3WTF10PassRefPtrINS_9AttributeEEE
-__ZN7WebCore10StringImpl29createStrippingNullCharactersEPKtj
+__ZN7WebCore13HTMLTokenizer12parseDoctypeERNS_15SegmentedStringENS0_5StateE
+__ZN7WebCore13HTMLTokenizer19processDoctypeTokenEv
+__ZN7WebCore10HTMLParser17parseDoctypeTokenEPNS_12DoctypeTokenE
+__ZN7WebCore12DocumentTypeC1EPNS_8DocumentERKNS_6StringES5_S5_
+__ZN7WebCore12DocumentTypeC2EPNS_8DocumentERKNS_6StringES5_S5_
+__ZNK7WebCore4Node13isCommentNodeEv
+__ZNK7WebCore12DocumentType8nodeTypeEv
+__ZN7WebCore12DocumentType20insertedIntoDocumentEv
+__ZN7WebCore8Document10setDocTypeEN3WTF10PassRefPtrINS_12DocumentTypeEEE
+__ZN7WebCore4Node11setDocumentEPNS_8DocumentE
+__ZN7WebCore12HTMLDocument18determineParseModeEv
+__ZNK7WebCore6String6latin1Ev
+__ZNK7WebCore12TextEncoding6encodeEPKtmNS_19UnencodableHandlingE
+__ZN7WebCore15TextCodecLatin16encodeEPKtmNS_19UnencodableHandlingE
+__ZNK7WebCore7CString6lengthEv
+__ZN7WebCore8Document19updateStyleSelectorEv
+__ZN7WebCore8Document19recalcStyleSelectorEv
+__ZNK7WebCore11RenderStyle17inheritedNotEqualEPS0_
+__ZNK7WebCore11RenderStyle4diffEPKS0_Rj
+__ZNK7WebCore19TransformOperationseqERKS0_
+__ZN7WebCore4Node11recalcStyleENS0_11StyleChangeE
__ZN7WebCore10HTMLParser10parseTokenEPNS_5TokenE
+__ZNK7WebCore4Node16virtualLocalNameEv
__ZN7WebCore4Text21createWithLengthLimitEPNS_8DocumentERKNS_6StringERjj
+__ZN7WebCore4TextC1EPNS_8DocumentERKNS_6StringE
__ZN7WebCore4TextC2EPNS_8DocumentERKNS_6StringE
-__ZN7WebCore13CharacterDataC2EPNS_8DocumentERKNS_6StringE
-__ZNK7WebCore4Node9localNameEv
+__ZN7WebCore13CharacterDataC2EPNS_8DocumentERKNS_6StringEb
__ZNK7WebCore4Node13isHTMLElementEv
-__ZNK7WebCore4Node13isCommentNodeEv
+__ZNK7WebCore4Text8nodeTypeEv
__ZN7WebCore10HTMLParser11handleErrorEPNS_4NodeEbRKNS_12AtomicStringEi
-__ZNK7WebCore4Text10isTextNodeEv
__ZNK7WebCore13CharacterData22containsOnlyWhitespaceEv
__ZN7WebCore10StringImpl22containsOnlyWhitespaceEv
__ZN7WebCore10TreeSharedINS_4NodeEE14removedLastRefEv
-__ZN7WebCore4TextD1Ev
-__ZN7WebCore12NamedAttrMap15clearAttributesEv
-__ZN7WebCore12AtomicString6removeEPNS_10StringImplE
+__ZThn8_N7WebCore4TextD0Ev
+__ZN7WebCore4TextD0Ev
+__ZN7WebCore13CharacterDataD2Ev
+__ZN7WebCore13HTMLTokenizer12parseCommentERNS_15SegmentedStringENS0_5StateE
+__ZNK7WebCore15SegmentedString6lengthEv
+__ZN7WebCore13HTMLTokenizer19enlargeScriptBufferEi
+__ZN7WebCore13HTMLTokenizer14processListingENS_15SegmentedStringENS0_5StateE
+__ZN7WebCore15SegmentedString15advanceSlowCaseEv
+__ZN7WebCore15SegmentedString16advanceSubstringEv
__ZN7WebCore10HTMLParser7getNodeEPNS_5TokenE
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEMNS1_10HTMLParserEFbPNS1_5TokenERNS_6RefPtrINS1_4NodeEEEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSF_ISC_EEE3getERKS3_
-__ZN3WTF9HashTableIiSt4pairIiMN7WebCore10HTMLParserEFbPNS2_5TokenERNS_6RefPtrINS2_4NodeEEEEENS_18PairFirstExtractorISC_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSI_ISB_EEEESJ_E3addIPNS2_16AtomicStringImplESB_NS_17HashMapTranslatorILb1ES1_ISP_SB_ENS_18PairBaseHashTraitsINSI_ISP_EESK_EESL_NS_7PtrHashISP_EEEEEES1_INS_17HashTableIteratorIiSC_SE_SG_SL_SJ_EEbERKT_RKT0_
-__ZN3WTF9HashTableIiSt4pairIiMN7WebCore10HTMLParserEFbPNS2_5TokenERNS_6RefPtrINS2_4NodeEEEEENS_18PairFirstExtractorISC_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSI_ISB_EEEESJ_E6expandEv
-__ZN3WTF9HashTableIiSt4pairIiMN7WebCore10HTMLParserEFbPNS2_5TokenERNS_6RefPtrINS2_4NodeEEEEENS_18PairFirstExtractorISC_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSI_ISB_EEEESJ_E4findIiNS_22IdentityHashTranslatorIiSC_SG_EEEENS_17HashTableIteratorIiSC_SE_SG_SL_SJ_EERKT_
-__ZN7WebCore18HTMLElementFactory17createHTMLElementERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore6addTagERKNS_13QualifiedNameEPFN3WTF10PassRefPtrINS_11HTMLElementEEERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEbE
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPFNS_10PassRefPtrINS1_11HTMLElementEEERKNS1_12AtomicStringEPNS1_8DocumentEPNS1_15HTMLFormElementEbENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSI_ISF_EEE3getERKS3_
-__ZN7WebCore15htmlConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore7Element15setAttributeMapEPNS_12NamedAttrMapE
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEMNS1_10HTMLParserEFbPNS1_5TokenERNS_6RefPtrINS1_4NodeEEEENS_7PtrHashIS3_EENS_10Ha
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_MNS1_10HTMLParserEFbPNS1_5TokenERNS_6RefPtrINS1_4NodeEEEEENS_18PairF
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEMNS1_10HTMLParserEFbPNS1_5TokenERNS_6RefPtrINS1_4NodeEEEENS_7PtrHashIS3_EENS_10H
+__ZN7WebCore10HTMLParser23commentCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCore7CommentC1EPNS_8DocumentERKNS_6StringE
+__ZN7WebCore7CommentC2EPNS_8DocumentERKNS_6StringE
+__ZNK7WebCore7Comment13isCommentNodeEv
+__ZN7WebCore4Node21finishParsingChildrenEv
+__ZN7WebCore10HTMLParser15processCloseTagEPNS_5TokenE
+__ZN7WebCore12AtomicString3addEPKt
+__ZN7WebCore10StringImplC1EPKtjj
+__ZN7WebCore10StringImplC2EPKtjj
+__ZN7WebCore5Token12addAttributeERNS_12AtomicStringERKS1_b
+__ZNK7WebCore12NamedNodeMap16getAttributeItemERKNS_13QualifiedNameE
+__ZN7WebCore12NamedNodeMap12addAttributeEN3WTF10PassRefPtrINS_9AttributeEEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9AttributeEEELm0EE14shrinkCapacityEm
+__ZN7WebCore18HTMLElementFactory17createHTMLElementERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCoreL6addTagERKNS_13QualifiedNameEPFN3WTF10PassRefPtrINS_11HTMLElementEEES2_PNS_8DocumentEPNS_15HTMLFormElementEbE
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPFNS_10PassRefPtrINS1_11HTMLElementEEERKNS1_13QualifiedNameEPNS1_8DocumentEPNS1_1
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PFNS_10PassRefPtrINS1_11HTMLElementEEERKNS1_13QualifiedNameEPNS1_8Do
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPFNS_10PassRefPtrINS1_11HTMLElementEEERKNS1_13QualifiedNameEPNS1_8DocumentEPNS1_
+__ZN7WebCoreL15htmlConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore7Element15setAttributeMapEN3WTF10PassRefPtrINS_12NamedNodeMapEEE
+__ZN7WebCore13StyledElement16attributeChangedEPNS_9AttributeEb
+__ZN7WebCore15MappedAttribute17isMappedAttributeEv
+__ZNK7WebCore11HTMLElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZNK7WebCore13StyledElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore11HTMLElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore4Node13ownerDocumentEv
+__ZN7WebCore16CSSStyleSelector23hasSelectorForAttributeERKNS_12AtomicStringE
+__ZNK3WTF9HashTableIPN7WebCore16AtomicStringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E8cont
+__ZN7WebCore7Element16attributeChangedEPNS_9AttributeEb
+__ZNK7WebCore8Document13axObjectCacheEv
+__ZN7WebCore13StyledElement22getMappedAttributeDeclENS_20MappedAttributeEntryEPNS_9AttributeE
+__ZN7WebCore13StyledElement14addCSSPropertyEPNS_15MappedAttributeEiRKNS_6StringE
+__ZN7WebCore13StyledElement16createMappedDeclEPNS_15MappedAttributeE
+__ZN7WebCore26CSSMutableStyleDeclarationC2EPNS_7CSSRuleE
+__ZN7WebCore8Document12elementSheetEv
+__ZN7WebCore13CSSStyleSheetC1EPNS_4NodeERKNS_6StringES5_
+__ZN7WebCore13CSSStyleSheetC2EPNS_4NodeERKNS_6StringES5_
+__ZN7WebCore10StyleSheetC2EPNS_4NodeERKNS_6StringE
+__ZN7WebCore26CSSMutableStyleDeclaration11setPropertyEiRKNS_6StringEbb
+__ZN7WebCore9CSSParser10parseValueEPNS_26CSSMutableStyleDeclarationEiRKNS_6StringEb
+__ZN7WebCore9StyleBase10stylesheetEv
+__ZNK7WebCore9StyleBase12isStyleSheetEv
+__ZNK7WebCore10StyleSheet12isStyleSheetEv
+__ZN7WebCore26CSSMutableStyleDeclaration19addParsedPropertiesEPKPKNS_11CSSPropertyEi
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm4EE15reserveCapacityEm
+__ZNK7WebCore26CSSMutableStyleDeclaration19getPropertyPriorityEi
+__ZNK7WebCore26CSSMutableStyleDeclaration18findPropertyWithIdEi
+__ZN7WebCore26CSSMutableStyleDeclaration14removePropertyEibb
+__ZN7WebCore26CSSMutableStyleDeclaration23removeShorthandPropertyEib
+__ZN7WebCore19longhandForPropertyEi
+__ZN7WebCoreL16initShorthandMapERN3WTF7HashMapIiNS_19CSSPropertyLonghandENS0_7IntHashIjEENS0_10HashTraitsIiEENS5_IS2_EEEE
+__ZN3WTF7HashMapIiN7WebCore19CSSPropertyLonghandENS_7IntHashIjEENS_10HashTraitsIiEENS5_IS2_EEE3setERKiRKS2_
+__ZN3WTF9HashTableIiSt4pairIiN7WebCore19CSSPropertyLonghandEENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS
+__ZNK3WTF7HashMapIiN7WebCore19CSSPropertyLonghandENS_7IntHashIjEENS_10HashTraitsIiEENS5_IS2_EEE3getERKi
+__ZN7WebCore26CSSMutableStyleDeclaration18findPropertyWithIdEi
+__ZN7WebCore26CSSMutableStyleDeclaration19setNeedsStyleRecalcEv
+__ZN7WebCore13StyledElement14addCSSPropertyEPNS_15MappedAttributeEii
+__ZN7WebCore26CSSMutableStyleDeclaration11setPropertyEiibb
+__ZN7WebCore26CSSMutableStyleDeclaration19setPropertyInternalERKNS_11CSSPropertyEPS1_
+__ZN7WebCore13StyledElement22setMappedAttributeDeclENS_20MappedAttributeEntryEPNS_9AttributeEPNS_29CSSMappedAttributeDeclaratio
+__ZN3WTF7HashMapIN7WebCore18MappedAttributeKeyEPNS1_29CSSMappedAttributeDeclarationENS1_19MappedAttributeHashENS1_24MappedAttri
+__ZN3WTF9HashTableIN7WebCore18MappedAttributeKeyESt4pairIS2_PNS1_29CSSMappedAttributeDeclarationEENS_18PairFirstExtractorIS6_EE
+__ZN7WebCore19MappedAttributeHash4hashERKNS_18MappedAttributeKeyE
__ZNK7WebCore15HTMLHtmlElement17endTagRequirementEv
+__ZNK7WebCore14DocumentLoader28mainResourceApplicationCacheEv
__ZN7WebCore11HTMLElement12childAllowedEPNS_4NodeE
__ZN7WebCore4Node12childAllowedEPS0_
-__ZNK7WebCore4Text8nodeTypeEv
__ZN7WebCore7Element16childTypeAllowedENS_4Node8NodeTypeE
-__ZNK7WebCore4Node13isElementNodeEv
__ZN7WebCore15HTMLHtmlElement8checkDTDEPKNS_4NodeE
__ZN7WebCore10HTMLParser20headCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore15HTMLHeadElementC2EPNS_8DocumentE
+__ZN7WebCore15HTMLHeadElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLHeadElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZNK7WebCore15HTMLHeadElement17endTagRequirementEv
__ZN7WebCore10HTMLParser8popBlockERKNS_12AtomicStringEb
__ZNK7WebCore15HTMLHeadElement11tagPriorityEv
__ZNK7WebCore7Element8nodeTypeEv
-__ZN7WebCore7Element15childrenChangedEb
-__ZN7WebCore7Element20beginParsingChildrenEv
+__ZN7WebCore7Element15childrenChangedEbPNS_4NodeES2_i
+__ZNK7WebCore4Node22nonRendererRenderStyleEv
+__ZN7WebCoreL20loadFullDefaultStyleEv
+__ZN7WebCore13CSSStyleSheetD0Ev
+__ZN7WebCore10StyleSheetD2Ev
+__ZN7WebCore12CSSStyleRuleD0Ev
+__ZN7WebCore15CSSSelectorListD1Ev
+__ZN7WebCore15CSSSelectorListD2Ev
+__ZN7WebCore26CSSMutableStyleDeclarationD0Ev
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm4EE6shrinkEm
+__ZN7WebCore12CSSValueListD0Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore8CSSValueEEELm0EE6shrinkEm
+__ZN7WebCore11CSSSelectorD2Ev
+__ZN7WebCore5themeEv
+__ZN7WebCore14RenderThemeMacC1Ev
+__ZN7WebCore14RenderThemeMacC2Ev
+__ZN7WebCore11RenderThemeC2Ev
+__ZN7WebCore13platformThemeEv
+-[WebCoreRenderThemeNotificationObserver initWithTheme:]
+__ZN7WebCore11RenderTheme22extraDefaultStyleSheetEv
+__ZN7WebCore13CSSStyleSheet12addNamespaceEPNS_9CSSParserERKNS_12AtomicStringES5_
+__ZN7WebCore9CSSParser12parseContentEib
+__ZN7WebCore6StringC1EPKtj
+__ZN7WebCore6StringC2EPKtj
+__ZN7WebCore17CSSPrimitiveValue6createERKNS_6StringENS0_9UnitTypesE
+__ZN7WebCore17CSSPrimitiveValueC1ERKNS_6StringENS0_9UnitTypesE
+__ZN7WebCore17CSSPrimitiveValueC2ERKNS_6StringENS0_9UnitTypesE
+__ZN7WebCore9CSSParser15parseFontWeightEb
+__ZN7WebCore11CSSSelector12setAttributeERKNS_13QualifiedNameE
+__ZN7WebCore9CSSParser10parseColorEPNS_14CSSParserValueE
+__ZN7WebCore9CSSParser19parseColorFromValueEPNS_14CSSParserValueERjb
+__ZN7WebCore9CSSParser10parseColorERKNS_6StringERjb
+__ZN7WebCore17CSSPrimitiveValue11createColorEj
+__ZNK3WTF7HashMapIjNS_6RefPtrIN7WebCore17CSSPrimitiveValueEEENS_7IntHashIjEENS_10HashTraitsIjEENS7_IS4_EEE3getERKj
+__ZN7WebCore17CSSPrimitiveValueC1Ej
+__ZN7WebCore17CSSPrimitiveValueC2Ej
+__ZN3WTF7HashMapIjNS_6RefPtrIN7WebCore17CSSPrimitiveValueEEENS_7IntHashIjEENS_10HashTraitsIjEENS7_IS4_EEE3addERKjRKS4_
+__ZN7WebCore5Color13parseHexColorERKNS_6StringERj
+__ZN7WebCore9CSSParser17parseFillPropertyEiRiS1_RN3WTF6RefPtrINS_8CSSValueEEES6_
+__ZN7WebCore9CSSParser14parseFillImageERN3WTF6RefPtrINS_8CSSValueEEE
+__ZN7WebCore13CSSImageValueC1Ev
+__ZN7WebCore13CSSImageValueC2Ev
+__ZN7WebCore17CSSPrimitiveValue4initEN3WTF10PassRefPtrINS_4PairEEE
+__ZN7WebCore9CSSParser14parseFontStyleEb
+__ZN7WebCore9CSSParser15parseFontFamilyEv
+__ZN7WebCoreL9printEvalEv
+__ZN7WebCore11RenderTheme21extraQuirksStyleSheetEv
+__ZN7WebCore9CSSParser16parseFontVariantEb
+__ZN7WebCore11CSSSelector17setSimpleSelectorEPS0_
__ZN7WebCore15HTMLHeadElement12childAllowedEPNS_4NodeE
-__ZN7WebCore4Node16insertedIntoTreeEb
__ZN7WebCore4Text6attachEv
-__ZN7WebCore4Node21finishParsingChildrenEv
-__ZN7WebCore16titleConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLTitleElementC2EPNS_8DocumentE
+__ZN7WebCoreL16titleConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLTitleElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLTitleElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZNK7WebCore11HTMLElement17endTagRequirementEv
__ZNK7WebCore11HTMLElement11tagPriorityEv
-__ZNK7WebCore4Node10isTextNodeEv
__ZN7WebCore15HTMLHeadElement8checkDTDEPKNS_4NodeE
__ZN7WebCore16HTMLTitleElement20insertedIntoDocumentEv
__ZN7WebCore8Document8setTitleERKNS_6StringEPNS_7ElementE
__ZN7WebCore13HTMLTokenizer12parseSpecialERNS_15SegmentedStringENS0_5StateE
-__ZN7WebCore13HTMLTokenizer19enlargeScriptBufferEi
-__ZN7WebCore13HTMLTokenizer14processListingENS_15SegmentedStringENS0_5StateE
-__ZN7WebCore15SegmentedString15advanceSlowCaseEv
-__ZN7WebCore15SegmentedString16advanceSubstringEv
__ZN7WebCore16HTMLTitleElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore16HTMLTitleElement15childrenChangedEb
+__ZN7WebCore16HTMLTitleElement15childrenChangedEbPNS_4NodeES2_i
__ZNK7WebCore13CharacterData9nodeValueEv
__ZN7WebCore8Document11updateTitleEv
__ZN7WebCore11FrameLoader8setTitleERKNS_6StringE
__ZN7WebCore14DocumentLoader8setTitleERKNS_6StringE
+__ZNK7WebCore8Document31displayBufferModifiedByEncodingEPtj
__ZN7WebCore11FrameLoader15willChangeTitleEPNS_14DocumentLoaderE
__ZN7WebCore11FrameLoader14didChangeTitleEPNS_14DocumentLoaderE
-__ZNK7WebCore14DocumentLoader11isCommittedEv
__ZN7WebCore11HistoryItem8setTitleERKNS_6StringE
-__ZN7WebCore10HTMLParser15processCloseTagEPNS_5TokenE
__ZN7WebCore10HTMLParser25isAffectedByResidualStyleERKNS_12AtomicStringE
__ZN3WTF7HashSetIPN7WebCore16AtomicStringImplENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expan
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehas
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allo
__ZN7WebCore10HTMLParser23reopenResidualStyleTagsEPNS_13HTMLStackElemEPNS_4NodeE
-__ZN7WebCore16styleConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLStyleElementC2EPNS_8DocumentE
+__ZN7WebCoreL15metaConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore15HTMLMetaElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLMetaElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLMetaElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore15HTMLMetaElement7processEv
+__ZNK7WebCore15HTMLMetaElement17endTagRequirementEv
+__ZNK7WebCore15HTMLMetaElement11tagPriorityEv
+__ZN7WebCore15HTMLMetaElement20insertedIntoDocumentEv
+__ZN7WebCore8Document16processHttpEquivERKNS_6StringES3_
+__ZN7WebCoreL15linkConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore15HTMLLinkElementC1ERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore15HTMLLinkElementC2ERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore15HTMLLinkElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore15HTMLLinkElement20tokenizeRelAttributeERKNS_12AtomicStringERbS4_S4_S4_
+__ZN7WebCore15HTMLLinkElement7processEv
+__ZN7WebCore8parseURLERKNS_6StringE
+__ZNK7WebCore8Document11completeURLERKNS_6StringE
+__ZN7WebCore4KURLC1ERKS0_RKNS_6StringERKNS_12TextEncodingE
+__ZN7WebCore4KURLC2ERKS0_RKNS_6StringERKNS_12TextEncodingE
+__ZNK7WebCore12TextEncoding25encodingForFormSubmissionEv
+__ZNK7WebCore12TextEncoding22isNonByteBasedEncodingEv
+__ZN7WebCore25UTF16LittleEndianEncodingEv
+__ZN7WebCore22UTF16BigEndianEncodingEv
+__ZNK7WebCore12TextEncoding14isUTF7EncodingEv
+__ZNK7WebCore15HTMLLinkElement17endTagRequirementEv
+__ZNK7WebCore15HTMLLinkElement11tagPriorityEv
+__ZN7WebCore15HTMLLinkElement20insertedIntoDocumentEv
+__ZN7WebCore8Document26addStyleSheetCandidateNodeEPNS_4NodeEb
+__ZN3WTF11ListHashSetIPN7WebCore4NodeENS_7PtrHashIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore4NodeEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashFunctionsIS4_
+__ZN3WTF11ListHashSetIPN7WebCore4NodeENS_7PtrHashIS3_EEE10appendNodeEPNS_15ListHashSetNodeIS3_EE
+__ZN7WebCore8Document10setIconURLERKNS_6StringES3_
+__ZN7WebCore15HTMLLinkElement21finishParsingChildrenEv
+__ZN7WebCore10StringImpl7replaceEtt
+__ZNK7WebCore6String5splitEtRN3WTF6VectorIS0_Lm0EEE
+__ZNK7WebCore6String5splitERKS0_bRN3WTF6VectorIS0_Lm0EEE
+__ZN7WebCore4Node23compareDocumentPositionEPS0_
+__ZN3WTF6VectorIPN7WebCore4NodeELm16EE6shrinkEm
+__ZN3WTF11ListHashSetIPN7WebCore4NodeENS_7PtrHashIS3_EEE12insertBeforeERKS3_S8_
+__ZN3WTF11ListHashSetIPN7WebCore4NodeENS_7PtrHashIS3_EEE12insertBeforeENS_19ListHashSetIteratorIS3_S5_EERKS3_
+__ZN3WTF11ListHashSetIPN7WebCore4NodeENS_7PtrHashIS3_EEE16insertNodeBeforeEPNS_15ListHashSetNodeIS3_EES9_
+__ZN7WebCoreL16styleConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLStyleElementC1ERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore16HTMLStyleElementC2ERKNS_13QualifiedNameEPNS_8DocumentEb
__ZN7WebCore12StyleElementC2Ev
-__ZNK7WebCore12NamedAttrMap6lengthEv
-__ZN7WebCore13StyledElement16attributeChangedEPNS_9AttributeEb
-__ZNK7WebCore11HTMLElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZNK7WebCore13StyledElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
__ZN7WebCore16HTMLStyleElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore11HTMLElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore4Node13ownerDocumentEv
-__ZN7WebCore16CSSStyleSelector23hasSelectorForAttributeERKNS_12AtomicStringE
__ZNK7WebCore16HTMLStyleElement17endTagRequirementEv
__ZNK7WebCore16HTMLStyleElement11tagPriorityEv
__ZN7WebCore16HTMLStyleElement20insertedIntoDocumentEv
-__ZN7WebCore13HTMLTokenizer13enlargeBufferEi
__ZN7WebCore16HTMLStyleElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore16HTMLStyleElement15childrenChangedEb
+__ZN7WebCore16HTMLStyleElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore16HTMLStyleElement21finishParsingChildrenEv
__ZN7WebCore12StyleElement7processEPNS_7ElementE
__ZN7WebCore12StyleElement11createSheetEPNS_7ElementERKNS_6StringE
-__ZThn68_NK7WebCore16HTMLStyleElement4typeEv
+__ZThn112_NK7WebCore16HTMLStyleElement4typeEv
__ZNK7WebCore16HTMLStyleElement4typeEv
-__ZNK7WebCore7Element12getAttributeERKNS_13QualifiedNameE
-__ZNK7WebCore12AtomicString16deprecatedStringEv
-__ZN7WebCore12AtomicStringC2ERKNS_16DeprecatedStringE
-__ZThn68_NK7WebCore16HTMLStyleElement5mediaEv
+__ZThn112_NK7WebCore16HTMLStyleElement5mediaEv
__ZNK7WebCore16HTMLStyleElement5mediaEv
+__ZN7WebCore9MediaListC1EPNS_13CSSStyleSheetERKNS_6StringEb
__ZN7WebCore9MediaListC2EPNS_13CSSStyleSheetERKNS_6StringEb
__ZN7WebCore9MediaList12setMediaTextERKNS_6StringERi
-__ZNK7WebCore6String5splitEtb
-__ZNK7WebCore6String5splitERKS0_b
+__ZN7WebCore9MediaListC1EPNS_13CSSStyleSheetEb
+__ZN7WebCore9MediaListC2EPNS_13CSSStyleSheetEb
+__ZNK7WebCore6String15stripWhiteSpaceEv
+__ZN7WebCore10StringImpl15stripWhiteSpaceEv
+__ZN7WebCore9CSSParser15parseMediaQueryEPNS_9MediaListERKNS_6StringE
+__ZN7WebCore9CSSParser31createFloatingMediaQueryExpListEv
+__ZN7WebCore9CSSParser29sinkFloatingMediaQueryExpListEPN3WTF6VectorIPNS_13MediaQueryExpELm0EEE
+__ZN7WebCore9CSSParser24createFloatingMediaQueryENS_10MediaQuery10RestrictorERKNS_6StringEPN3WTF6VectorIPNS_13MediaQueryExpELm0
+__ZN7WebCore10MediaQueryC1ENS0_10RestrictorERKNS_6StringEPN3WTF6VectorIPNS_13MediaQueryExpELm0EEE
+__ZN7WebCore10MediaQueryC2ENS0_10RestrictorERKNS_6StringEPN3WTF6VectorIPNS_13MediaQueryExpELm0EEE
+__ZN7WebCore9CSSParser22sinkFloatingMediaQueryEPNS_10MediaQueryE
+__ZN7WebCore9MediaList16appendMediaQueryEPNS_10MediaQueryE
+__ZN3WTF6VectorIPN7WebCore10MediaQueryELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore10MediaQueryELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore10MediaQueryELm0EE15reserveCapacityEm
__ZN3WTF15deleteAllValuesIPN7WebCore10MediaQueryELm0EEEvRKNS_6VectorIT_XT0_EEE
__ZN3WTF6VectorIPN7WebCore10MediaQueryELm0EEaSERKS4_
+__ZN3WTF6VectorIPN7WebCore10MediaQueryELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIPN7WebCore10MediaQueryELm0EE6shrinkEm
+__ZN7WebCore9MediaList13notifyChangedEv
__ZN7WebCore9MediaListD0Ev
-__ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_9MediaListE
-__ZThn68_N7WebCore16HTMLStyleElement10setLoadingEb
+__ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_9MediaListEPNS_16CSSStyleSelectorE
+__ZNK7WebCore19MediaQueryEvaluator14mediaTypeMatchERKNS_6StringE
+__ZN7WebCoreL15applyRestrictorENS_10MediaQuery10RestrictorEb
+__ZThn112_N7WebCore16HTMLStyleElement10setLoadingEb
__ZN7WebCore16HTMLStyleElement10setLoadingEb
-__ZNK7WebCore8Document13inputEncodingEv
-__ZN7WebCore13CSSStyleSheetC2EPNS_4NodeERKNS_6StringES5_
-__ZN7WebCore10StyleSheetC2EPNS_4NodeERKNS_6StringE
-__ZN7WebCore9CSSParser24parseBackgroundShorthandEb
-__ZN7WebCore9CSSParser23parseBackgroundPositionERN3WTF6RefPtrINS_8CSSValueEEES5_
-__ZN7WebCore9CSSParser25parseBackgroundPositionXYERbS1_
-__ZN7WebCore9CSSParser20parseBackgroundColorEv
-__ZN7WebCore9CSSParser18addBackgroundValueERN3WTF6RefPtrINS_8CSSValueEEENS1_10PassRefPtrIS3_EE
-__ZN7WebCore9CSSParser9parseFontEb
-__ZN7WebCore10StyleSheet8setMediaEPNS_9MediaListE
+__ZNK7WebCore8Document8encodingEv
+__ZNK7WebCore12TextEncoding7domNameEv
+__ZN7WebCore9CSSParser15createMediaListEv
+__ZN7WebCore9CSSParser16createImportRuleERKNS_15CSSParserStringEPNS_9MediaListE
+__ZN7WebCore13CSSImportRuleC1EPNS_13CSSStyleSheetERKNS_6StringEN3WTF10PassRefPtrINS_9MediaListEEE
+__ZN7WebCore13CSSImportRuleC2EPNS_13CSSStyleSheetERKNS_6StringEN3WTF10PassRefPtrINS_9MediaListEEE
+__ZN7WebCore13CSSImportRule18insertedIntoParentEv
+__ZNK7WebCore7CSSRule16parentStyleSheetEv
+__ZN7WebCore9DocLoader20requestCSSStyleSheetERKNS_6StringES3_
+__ZN7WebCore9DocLoader15requestResourceENS_14CachedResource4TypeERKNS_6StringES5_b
+__ZN7WebCore9DocLoader10canRequestENS_14CachedResource4TypeERKNS_4KURLE
+__ZN7WebCore9DocLoader14checkForReloadERKNS_4KURLE
+__ZN7WebCore5Cache14resourceForURLERKNS_6StringE
+__ZNK3WTF7HashMapIN7WebCore6StringEPNS1_14CachedResourceENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3getERKS2_
+__ZN7WebCore5Cache15requestResourceEPNS_9DocLoaderENS_14CachedResource4TypeERKNS_4KURLERKNS_6StringEb
+__ZN7WebCore11FrameLoader21restrictAccessToLocalEv
+__ZN7WebCore11FrameLoader7canLoadERKNS_4KURLERKNS_6StringEPKNS_8DocumentE
+__ZN7WebCore11FrameLoader21shouldTreatURLAsLocalERKNS_6StringE
+__ZN7WebCoreL14createResourceENS_14CachedResource4TypeERKNS_4KURLERKNS_6StringE
+__ZN7WebCore19CachedCSSStyleSheetC1ERKNS_6StringES3_
+__ZN7WebCore19CachedCSSStyleSheetC2ERKNS_6StringES3_
+__ZN7WebCore14CachedResourceC2ERKNS_6StringENS0_4TypeE
+__ZN7WebCore14CachedResource4loadEPNS_9DocLoaderE
+__ZN7WebCore14CachedResource4loadEPNS_9DocLoaderEbbb
+__ZN7WebCore6Loader4loadEPNS_9DocLoaderEPNS_14CachedResourceEbbb
+__ZN7WebCore7RequestC1EPNS_9DocLoaderEPNS_14CachedResourceEbbb
+__ZN7WebCore7RequestC2EPNS_9DocLoaderEPNS_14CachedResourceEbbb
+__ZN7WebCore14CachedResource10setRequestEPNS_7RequestE
+__ZN7WebCore4KURLC1ERKNS_6StringE
+__ZN7WebCore4KURLC2ERKNS_6StringE
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_6Loader4HostENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3getERKS3_
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_6Loader4HostENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3addERKS3_RKS6
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PNS1_6Loader4HostEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS3_EENS_
+__ZNK7WebCore6Loader17determinePriorityEPKNS_14CachedResourceE
+__ZN7WebCore6Loader4Host10addRequestEPNS_7RequestENS0_8PriorityE
+__ZN3WTF5DequeIPN7WebCore7RequestEE14expandCapacityEv
+__ZN7WebCore9DocLoader21incrementRequestCountEv
+__ZN7WebCore6Loader4Host20servePendingRequestsENS0_8PriorityE
+__ZN7WebCore6Loader4Host20servePendingRequestsERN3WTF5DequeIPNS_7RequestEEERb
+__ZN7WebCore17SubresourceLoader6createEPNS_5FrameEPNS_23SubresourceLoaderClientERKNS_15ResourceRequestEbbb
+__ZNK7WebCore11FrameLoader16outgoingReferrerEv
+__ZN7WebCore11FrameLoader18shouldHideReferrerERKNS_4KURLERKNS_6StringE
+__ZN7WebCore10protocolIsERKNS_6StringEPKc
+__ZNK7WebCore11FrameLoader14outgoingOriginEv
+__ZNK7WebCore14SecurityOrigin8toStringEv
+__ZNK7WebCore19ResourceRequestBase13isConditionalEv
+__ZNK3WTF9HashTableIN7WebCore12AtomicStringESt4pairIS2_NS1_6StringEENS_18PairFirstExtractorIS5_EENS1_15CaseFoldingHashENS_14Pai
+__ZNK7WebCore11FrameLoader15originalRequestEv
+__ZN7WebCore19ResourceRequestBase14setCachePolicyENS_26ResourceRequestCachePolicyE
+__ZN7WebCore11FrameLoader34addExtraFieldsToSubresourceRequestERNS_15ResourceRequestE
+__ZNK7WebCore11FrameLoader8encodingEv
+__ZN7WebCore17SubresourceLoaderC1EPNS_5FrameEPNS_23SubresourceLoaderClientEbb
+__ZN7WebCore17SubresourceLoaderC2EPNS_5FrameEPNS_23SubresourceLoaderClientEbb
+__ZN7WebCore14DocumentLoader20addSubresourceLoaderEPNS_14ResourceLoaderE
+__ZN3WTF7HashSetINS_6RefPtrIN7WebCore14ResourceLoaderEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN7WebCore14ResourceLoader4loadERKNS_15ResourceRequestE
+__ZN7WebCore17SubresourceLoader15willSendRequestERNS_15ResourceRequestERKNS_16ResourceResponseE
+__ZN7WebCore11FrameLoader32assignIdentifierToInitialRequestEmRKNS_15ResourceRequestE
+__ZN7WebCore14DocumentLoader19scheduleArchiveLoadEPNS_14ResourceLoaderERKNS_15ResourceRequestERKNS_4KURLE
+__ZNK7WebCore14DocumentLoader21archiveResourceForURLERKNS_4KURLE
+__ZN7WebCore14DocumentLoader28scheduleApplicationCacheLoadEPNS_14ResourceLoaderERKNS_15ResourceRequestERKNS_4KURLE
+__ZN7WebCore14DocumentLoader38shouldLoadResourceFromApplicationCacheERKNS_15ResourceRequestERPNS_24ApplicationCacheResourceE
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore17SubresourceLoaderEEEPNS2_7RequestENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3addE
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore17SubresourceLoaderEEESt4pairIS4_PNS2_7RequestEENS_18PairFirstExtractorIS8_EENS_7PtrHash
+__ZN3WTF7HashMapIN7WebCore6StringEPNS1_14CachedResourceENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3setERKS2_RKS4_
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS1_14CachedResourceEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHa
+__ZN7WebCore5Cache16resourceAccessedEPNS_14CachedResourceE
+__ZN7WebCore5Cache17removeFromLRUListEPNS_14CachedResourceE
+__ZNK7WebCore14CachedResource12overheadSizeEv
+__ZN7WebCore5Cache10adjustSizeEbi
+__ZN7WebCore5Cache15insertInLRUListEPNS_14CachedResourceE
+__ZN7WebCore5Cache10lruListForEPNS_14CachedResourceE
+__ZN3WTF6VectorIN7WebCore5Cache7LRUListELm32EE4growEm
+__ZN3WTF7HashMapIN7WebCore6StringENS1_20CachedResourceHandleINS1_14CachedResourceEEENS1_10StringHashENS_10HashTraitsIS2_EENS7_I
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS1_20CachedResourceHandleINS1_14CachedResourceEEEENS_18PairFirstExtractorIS7_EE
+__ZN7WebCore24CachedResourceHandleBase11setResourceEPNS_14CachedResourceE
+__ZN7WebCore9DocLoader22checkCacheObjectStatusEPNS_14CachedResourceE
+__ZNK7WebCore9DocLoader5frameEv
+__ZN7WebCore19CachedCSSStyleSheet9addClientEPNS_20CachedResourceClientE
+__ZN7WebCore14CachedResource9addClientEPNS_20CachedResourceClientE
+__ZN7WebCore5Cache22addToLiveResourcesSizeEPNS_14CachedResourceE
+__ZN3WTF7HashMapIPN7WebCore20CachedResourceClientEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3addERKS3_RKj
+__ZN7WebCore10StyleSheet8setMediaEN3WTF10PassRefPtrINS_9MediaListEEE
__ZNK7WebCore11HTMLElement5titleEv
__ZN7WebCore13CSSStyleSheet11checkLoadedEv
__ZN7WebCore13CSSStyleSheet9isLoadingEv
+__ZN7WebCore13CSSImportRule12isImportRuleEv
+__ZNK7WebCore13CSSImportRule9isLoadingEv
+__ZN7WebCore12StyleElement5sheetEPNS_7ElementE
+__ZN7WebCore9CSSParser18parseFillShorthandEiPKiib
+__ZN7WebCore9CSSParser12addFillValueERN3WTF6RefPtrINS_8CSSValueEEENS1_10PassRefPtrIS3_EE
+__ZN7WebCore9CSSParser17parseFillPositionERN3WTF6RefPtrINS_8CSSValueEEES5_
+__ZN7WebCore9CSSParser19parseFillPositionXYERbS1_
+__ZN7WebCore9CSSParser20parseBackgroundColorEv
__ZN7WebCore9StyleBase12isImportRuleEv
__ZN7WebCore16HTMLStyleElement11sheetLoadedEv
__ZNK7WebCore16HTMLStyleElement9isLoadingEv
__ZN7WebCore8Document18removePendingSheetEv
-__ZN7WebCore8Document19updateStyleSelectorEv
-__ZN7WebCore8Document19recalcStyleSelectorEv
-__ZN7WebCore21DeprecatedPtrListImplC2ERKS0_
-__ZNK7WebCore8Document8nodeTypeEv
-__ZNK7WebCore4Node17virtualFirstChildEv
+__ZNK7WebCore15HTMLLinkElement9isLoadingEv
+__ZNK7WebCore15HTMLLinkElement5sheetEv
__ZN7WebCore16HTMLStyleElement5sheetEv
-__ZN7WebCore12StyleElement5sheetEPNS_7ElementE
-__ZN7WebCore21DeprecatedPtrListImpl6appendEPKv
-__ZN7WebCore19MediaQueryEvaluatorC2ERKNS_6StringEPNS_4PageEPNS_11RenderStyleE
-__ZNK7WebCore18StyleInheritedDataeqERKS0_
-__ZNK7WebCore12RenderObject12isListMarkerEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore10StyleSheetEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore10StyleSheetEEELm0EE15reserveCapacityEm
+__ZN7WebCore19MediaQueryEvaluatorC1ERKNS_6StringEPNS_5FrameEPNS_11RenderStyleE
+__ZN7WebCore19MediaQueryEvaluatorC2ERKNS_6StringEPNS_5FrameEPNS_11RenderStyleE
+__ZN7WebCore14StyleSheetList4itemEj
+__ZN7WebCore9StyleBase11isStyleRuleEv
__ZN7WebCore7Element11recalcStyleENS_4Node11StyleChangeE
__ZNK7WebCore12StyleBoxDataeqERKS0_
-__ZN7WebCore4Node14setRenderStyleEPNS_11RenderStyleE
+__ZN7WebCore4Node14setRenderStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
__ZN7WebCore12RenderObject7repaintEb
-__ZNK7WebCore10RenderView8printingEv
-__ZN7WebCore10RenderFlow27absoluteClippedOverflowRectEv
-__ZNK7WebCore11RenderBlock12isInlineFlowEv
-__ZN7WebCore9RenderBox27absoluteClippedOverflowRectEv
+__ZN7WebCore12RenderObject8isRootedEPPNS_10RenderViewE
+__ZNK7WebCore12RenderObject19containerForRepaintEv
+__ZN7WebCore9RenderBox29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
__ZNK7WebCore11RenderBlock12overflowRectEb
__ZNK7WebCore11RenderBlock12overflowLeftEb
-__ZNK7WebCore12RenderObject14borderTopExtraEv
__ZNK7WebCore11RenderBlock11overflowTopEb
-__ZNK7WebCore9RenderBox6heightEv
-__ZNK7WebCore12RenderObject17borderBottomExtraEv
__ZNK7WebCore11RenderBlock14overflowHeightEb
__ZNK7WebCore11RenderBlock13overflowWidthEb
-__ZN7WebCore10RenderView26computeAbsoluteRepaintRectERNS_7IntRectEb
-__ZN7WebCore10RenderView20repaintViewRectangleERKNS_7IntRectEb
-__ZNK7WebCore12RenderObject23createsAnonymousWrapperEv
-__ZN7WebCore4Text11recalcStyleENS_4Node11StyleChangeE
-__ZNK7WebCore4Node12isShadowNodeEv
-__ZN7WebCore13HTMLTokenizer35executeScriptsWaitingForStylesheetsEv
-__ZN7WebCore16HTMLStyleElement21finishParsingChildrenEv
+__ZN7WebCore10RenderView21computeRectForRepaintEPNS_20RenderBoxModelObjectERNS_7IntRectEb
+__ZN7WebCore12RenderObject21repaintUsingContainerEPNS_20RenderBoxModelObjectERKNS_7IntRectEb
+__ZNK7WebCore7Comment8nodeTypeEv
+__ZN7WebCoreL17scriptConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLScriptElementC1ERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore17HTMLScriptElementC2ERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore17ScriptElementDataC1EPNS_13ScriptElementEPNS_7ElementE
+__ZN7WebCore17ScriptElementDataC2EPNS_13ScriptElementEPNS_7ElementE
+__ZN7WebCore17HTMLScriptElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore17HTMLScriptElement17endTagRequirementEv
+__ZNK7WebCore17HTMLScriptElement11tagPriorityEv
+__ZN7WebCore17HTMLScriptElement20insertedIntoDocumentEv
+__ZNK7WebCore17HTMLScriptElement20sourceAttributeValueEv
+__ZN7WebCore13ScriptElement20insertedIntoDocumentERNS_17ScriptElementDataERKNS_6StringE
+__ZNK7WebCore17HTMLScriptElement13scriptCharsetEv
+__ZNK7WebCore17ScriptElementData13scriptCharsetEv
+__ZThn112_NK7WebCore17HTMLScriptElement21charsetAttributeValueEv
+__ZNK7WebCore17HTMLScriptElement21charsetAttributeValueEv
+__ZN7WebCore13HTMLTokenizer13scriptHandlerENS0_5StateE
+__ZNK7WebCore17HTMLScriptElement25shouldExecuteAsJavaScriptEv
+__ZNK7WebCore17ScriptElementData25shouldExecuteAsJavaScriptEv
+__ZThn112_NK7WebCore17HTMLScriptElement18typeAttributeValueEv
+__ZNK7WebCore17HTMLScriptElement18typeAttributeValueEv
+__ZN7WebCore16MIMETypeRegistry29isSupportedJavaScriptMIMETypeERKNS_6StringE
+__ZN7WebCore13HTMLTokenizer13enlargeBufferEi
+__ZN7WebCore10HTMLParser20textCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCore17HTMLScriptElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore17HTMLScriptElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore13ScriptElement15childrenChangedERNS_17ScriptElementDataE
+__ZNK7WebCore4Node11textContentEb
+__ZNK7WebCore4Node17appendTextContentEbRNS_13StringBuilderE
+__ZN7WebCore13StringBuilder6appendERKNS_6StringE
+__ZNK7WebCore13StringBuilder8toStringEv
+__ZN3WTF6VectorIN7WebCore6StringELm16EE6shrinkEm
+__ZN7WebCore17HTMLScriptElement21finishParsingChildrenEv
+__ZN7WebCore13ScriptElement21finishParsingChildrenERNS_17ScriptElementDataERKNS_6StringE
+__ZNK7WebCore17ScriptElementData13scriptContentEv
+__ZN7WebCore15SegmentedString7prependERKS0_
+__ZN7WebCore15SegmentedString7prependERKNS_18SegmentedSubstringE
+__ZNK7WebCore6StringcvN3JSC7UStringEEv
+__ZNK7WebCore20StringSourceProvider6lengthEv
+__ZN7WebCore13HTMLTokenizer15scriptExecutionERKNS_16ScriptSourceCodeENS0_5StateE
+__ZN7WebCore11FrameLoader13executeScriptERKNS_16ScriptSourceCodeE
+__ZN7WebCore16ScriptController8evaluateERKNS_16ScriptSourceCodeE
+__ZN7WebCore16ScriptController10initScriptEv
+__ZN7WebCore16JSDOMWindowShellnwEm
+__ZN7WebCore15JSDOMWindowBase18commonJSGlobalDataEv
+__ZN7WebCore16JSDOMWindowShellC1EN3WTF10PassRefPtrINS_9DOMWindowEEE
+__ZN7WebCore16JSDOMWindowShellC2EN3WTF10PassRefPtrINS_9DOMWindowEEE
+__ZN7WebCore16JSDOMWindowShell9setWindowEN3WTF10PassRefPtrINS_9DOMWindowEEE
+__ZN7WebCore20JSDOMWindowPrototypenwEm
+__ZN7WebCore11JSDOMWindowC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9DOMWindowEEEPNS_16JSDOMWindowShellE
+__ZN7WebCore11JSDOMWindowC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9DOMWindowEEEPNS_16JSDOMWindowShellE
+__ZN7WebCore15JSDOMWindowBaseC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9DOMWindowEEEPNS_16JSDOMWindowShellE
+__ZN7WebCore15JSDOMWindowBase19JSDOMWindowBaseDataC1EN3WTF10PassRefPtrINS_9DOMWindowEEEPNS_16JSDOMWindowShellE
+__ZN7WebCore15JSDOMWindowBase19JSDOMWindowBaseDataC2EN3WTF10PassRefPtrINS_9DOMWindowEEEPNS_16JSDOMWindowShellE
+__ZN7WebCore17JSDOMGlobalObject21JSDOMGlobalObjectDataC2Ev
+__ZN7WebCore17JSDOMGlobalObjectC2EN3WTF10PassRefPtrIN3JSC9StructureEEEPNS0_21JSDOMGlobalObjectDataEPNS3_8JSObjectE
+__ZN7WebCore15JSDOMWindowBase10globalExecEv
+__ZN7WebCore5Frame9keepAliveEv
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEENS2_16SymbolTableEntryENS2_17IdentifierRepHashENS_10HashTraitsIS5_EENS2_26Symbo
+__ZN7WebCore15JSDOMWindowBase14updateDocumentEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_4NodeE
+__ZN7WebCore23getCachedDOMNodeWrapperEPNS_8DocumentEPNS_4NodeE
+__ZNK3WTF7HashMapIPN7WebCore4NodeEPNS1_6JSNodeENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
+__ZNK7WebCore8Document8nodeTypeEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_8DocumentE
+__ZN7WebCore25getCachedDOMObjectWrapperERN3JSC12JSGlobalDataEPv
+__ZNK3WTF7HashMapIPvPN7WebCore9DOMObjectENS_7PtrHashIS1_EENS_10HashTraitsIS1_EENS7_IS4_EEE3getERKS1_
+__ZN7WebCore21getCachedDOMStructureEPNS_17JSDOMGlobalObjectEPKN3JSC9ClassInfoE
+__ZNK3WTF7HashMapIPKN3JSC9ClassInfoENS_6RefPtrINS1_9StructureEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENSA_IS7_EEE3getERKS4_
+__ZN7WebCore14JSHTMLDocument15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSDocumentPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSDocument15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSNodePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore6JSNode15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17cacheDOMStructureEPNS_17JSDOMGlobalObjectEN3WTF10PassRefPtrIN3JSC9StructureEEEPKNS4_9ClassInfoE
+__ZN3WTF7HashMapIPKN3JSC9ClassInfoENS_6RefPtrINS1_9StructureEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENSA_IS7_EEE3setERKS4_RKS7_
+__ZN3WTF9HashTableIPKN3JSC9ClassInfoESt4pairIS4_NS_6RefPtrINS1_9StructureEEEENS_18PairFirstExtractorIS9_EENS_7PtrHashIS4_EENS_1
+__ZN7WebCore14JSHTMLDocumentC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12HTMLDocumentEEE
+__ZN7WebCore14JSHTMLDocumentC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12HTMLDocumentEEE
+__ZN7WebCore10JSDocumentC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8DocumentEEE
+__ZN7WebCore6JSNodeC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_4NodeEEE
+__ZN7WebCore21cacheDOMObjectWrapperERN3JSC12JSGlobalDataEPvPNS_9DOMObjectE
+__ZN3WTF7HashMapIPvPN7WebCore9DOMObjectENS_7PtrHashIS1_EENS_10HashTraitsIS1_EENS7_IS4_EEE3setERKS1_RKS4_
+__ZN3WTF9HashTableIPvSt4pairIS1_PN7WebCore9DOMObjectEENS_18PairFirstExtractorIS6_EENS_7PtrHashIS1_EENS_14PairHashTraitsINS_10Ha
+__ZN7WebCore16ScriptController14attachDebuggerEPN3JSC8DebuggerE
+__ZN7WebCore16ScriptController18windowScriptObjectEv
+__ZN7WebCore16ScriptController17bindingRootObjectEv
+__ZN3JSC8Bindings10RootObject6createEPKvPNS_14JSGlobalObjectE
+__ZN3JSC8Bindings10RootObjectC1EPKvPNS_14JSGlobalObjectE
+__ZN3JSC8Bindings10RootObjectC2EPKvPNS_14JSGlobalObjectE
+__ZN3JSC8BindingsL13rootObjectSetEv
+__ZN3WTF7HashSetIPN3JSC8Bindings10RootObjectENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN3WTF9HashTableIPN3JSC8Bindings10RootObjectES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6expand
+__ZN3WTF9HashTableIPN3JSC8Bindings10RootObjectES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6rehash
+__ZN3WTF9HashTableIPN3JSC8Bindings10RootObjectES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E13alloc
+__ZN3WTF9HashTableIPN3JSC8Bindings10RootObjectES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E15deall
++[WebScriptObject initialize]
++[WebScriptObject scriptObjectForJSObject:originRootObject:rootObject:]
+__Z16createDOMWrapperPN3JSC8JSObjectEN3WTF10PassRefPtrINS_8Bindings10RootObjectEEES6_
+__ZNK7WebCore16JSDOMWindowShell9classInfoEv
+__ZNK7WebCore16JSDOMWindowShell4implEv
+__Z3kitPN7WebCore9DOMWindowE
+__Z13getDOMWrapperP17DOMObjectInternal
+-[WebScriptObject(WebScriptObjectInternal) _init]
+__Z13addDOMWrapperP8NSObjectP17DOMObjectInternal
+__Z18createWrapperCachev
+-[WebScriptObject _hasImp]
+-[WebScriptObject _setImp:originRootObject:rootObject:]
+__ZN7WebCore12addJSWrapperEP8NSObjectPN3JSC8JSObjectE
+__ZN3JSC8Bindings10RootObject9gcProtectEPNS_8JSObjectE
+__ZNK3WTF9HashTableIPN3JSC8JSObjectESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTra
+__ZN3WTF7HashMapIPN3JSC8JSObjectEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3addERKS3_RKj
+__ZN3WTF9HashTableIPN3JSC8JSObjectESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTrai
+__ZN7WebCore19InspectorController34inspectedWindowScriptObjectClearedEPNS_5FrameE
+__ZN7WebCore6StringC1ERKN3JSC7UStringE
+__ZN7WebCore6StringC2ERKN3JSC7UStringE
+__ZNK7WebCore20StringSourceProvider4dataEv
+__ZNK7WebCore15JSDOMWindowBase17supportsProfilingEv
+__ZN7WebCore16JSDOMWindowShell18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore11JSDOMWindow18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore15JSDOMWindowBase18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore12AtomicString3addERKN3JSC10IdentifierE
+__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_10StringHashENS_10HashTraitsIS3_EEE3addINS1_17HashAndCharactersENS1_27HashAndCharac
+__ZNK7WebCore9FrameTree5childERKNS_12AtomicStringE
+__ZN7WebCore20JSDOMWindowPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore15JSDOMWindowBase12toThisObjectEPN3JSC9ExecStateE
+__ZNK7WebCore15JSDOMWindowBase5shellEv
+__ZN7WebCore44jsDOMWindowPrototypeFunctionAddEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13toJSDOMWindowEN3JSC7JSValueE
+__ZN7WebCore11JSDOMWindow16addEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore17JSDOMGlobalObject27findOrCreateJSEventListenerEN3JSC7JSValueE
+__ZN7WebCore17JSDOMGlobalObject19findJSEventListenerEN3JSC7JSValueE
+__ZNK3WTF7HashMapIPN3JSC8JSObjectEPN7WebCore15JSEventListenerENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3getERKS3_
+__ZN7WebCore15JSEventListenerC1EPN3JSC8JSObjectEPNS_17JSDOMGlobalObjectEb
+__ZN7WebCore15JSEventListenerC2EPN3JSC8JSObjectEPNS_17JSDOMGlobalObjectEb
+__ZN7WebCore17JSDOMGlobalObject16jsEventListenersEv
+__ZN3WTF7HashMapIPN3JSC8JSObjectEPN7WebCore15JSEventListenerENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3setERKS3_RKS6_
+__ZN3WTF9HashTableIPN3JSC8JSObjectESt4pairIS3_PN7WebCore15JSEventListenerEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS3_EENS_14P
+__ZN7WebCore12AtomicString3addERKN3JSC7UStringE
+__ZN7WebCore9DOMWindow16addEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
+__ZN7WebCore9DOMWindow19removeEventListenerERKNS_12AtomicStringEPNS_13EventListenerEb
+__ZN7WebCore8Document23addListenerTypeIfNeededERKNS_12AtomicStringE
+__ZN7WebCore23RegisteredEventListenerC1ERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
+__ZN7WebCore23RegisteredEventListenerC2ERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore23RegisteredEventListenerEEELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore23RegisteredEventListenerEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore23RegisteredEventListenerEEELm0EE15reserveCapacityEm
+__ZN7WebCore15SegmentedString6appendERKS0_
+__ZN7WebCore15SegmentedString6appendERKNS_18SegmentedSubstringE
__ZN7WebCore10HTMLParser20bodyCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCore10HTMLParser10createHeadEv
__ZN7WebCore10HTMLParser9startBodyEv
-__ZN7WebCore15bodyConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore15HTMLBodyElementC2EPNS_8DocumentE
+__ZN7WebCoreL15bodyConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore15HTMLBodyElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLBodyElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZNK7WebCore15HTMLBodyElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore13StyledElement22getMappedAttributeDeclENS_20MappedAttributeEntryEPNS_9AttributeE
__ZN7WebCore15HTMLBodyElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore13StyledElement11addCSSColorEPNS_15MappedAttributeEiRKNS_6StringE
-__ZN7WebCore13StyledElement16createMappedDeclEPNS_15MappedAttributeE
-__ZN7WebCore26CSSMutableStyleDeclarationC2EPNS_7CSSRuleE
-__ZN7WebCore8Document12elementSheetEv
-__ZN7WebCore26CSSMutableStyleDeclaration11setPropertyEiRKNS_6StringEbbRi
-__ZN7WebCore9CSSParser10parseValueEPNS_26CSSMutableStyleDeclarationEiRKNS_6StringEb
-__ZN7WebCore9StyleBase10stylesheetEv
-__ZNK7WebCore9StyleBase12isStyleSheetEv
-__ZNK7WebCore10StyleSheet12isStyleSheetEv
-__ZN7WebCore26CSSMutableStyleDeclaration19addParsedPropertiesEPKPKNS_11CSSPropertyEi
-__ZNK7WebCore26CSSMutableStyleDeclaration19getPropertyPriorityEi
-__ZN7WebCore26CSSMutableStyleDeclaration14removePropertyEibbRi
-__ZZN7WebCore16initShorthandMapERN3WTF7HashMapIiNS_16PropertyLonghandENS0_7IntHashIjEENS0_10HashTraitsIiEENS5_IS2_EEEEE21borderColorProperties
-__ZNK3WTF7HashMapIiN7WebCore16PropertyLonghandENS_7IntHashIjEENS_10HashTraitsIiEENS5_IS2_EEE3getERKi
-__ZN3WTF9HashTableIiSt4pairIiN7WebCore16PropertyLonghandEENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E3addIiS3_NS_17HashMapTranslatorILb1ES4_NS_18PairBaseHashTraitsISB_SC_EESD_S8_EEEES1_INS_17HashTableIteratorIiS4_S6_S8_SD_SB_EEbERKT_RKT0_
-__ZN3WTF9HashTableIiSt4pairIiN7WebCore16PropertyLonghandEENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E6expandEv
-__ZN7WebCore23DeprecatedValueListImpl8fromLastEv
-__ZN7WebCore23DeprecatedValueListImpl8lastNodeEv
-__ZNK7WebCore23DeprecatedValueListImpl8lastNodeEv
-__ZN7WebCore26CSSMutableStyleDeclaration10setChangedENS_15StyleChangeTypeE
-__ZN7WebCore13StyledElement22setMappedAttributeDeclENS_20MappedAttributeEntryEPNS_9AttributeEPNS_29CSSMappedAttributeDeclarationE
-__ZNK3WTF7HashMapIN7WebCore18MappedAttributeKeyEPNS1_29CSSMappedAttributeDeclarationENS1_19MappedAttributeHashENS1_24MappedAttributeKeyTraitsENS_10HashTraitsIS4_EEE3getERKS2_
-__ZN3WTF9HashTableIN7WebCore18MappedAttributeKeyESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_19MappedAttributeHashENS_14PairHashTraitsINS1_24MappedAttributeKeyTraitsENS_10HashTraitsIiEEEES9_E3addIS2_PNS1_29CSSMappedAttributeDeclarationENS_17HashMapTranslatorILb1ES3_IS2_SG_ENS_18PairBaseHashTraitsIS9_NSA_ISG_EEEESC_S7_EEEES3_INS_17HashTableIteratorIS2_S4_S6_S7_SC_S9_EEbERKT_RKT0_
-__ZN3WTF9HashTableIN7WebCore18MappedAttributeKeyESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_19MappedAttributeHashENS_14PairHashTraitsINS1_24MappedAttributeKeyTraitsENS_10HashTraitsIiEEEES9_E6expandEv
-__ZN7WebCore19MappedAttributeHash4hashERKNS_18MappedAttributeKeyE
-__ZN7WebCore13StyledElement12addCSSLengthEPNS_15MappedAttributeEiRKNS_6StringE
-__ZN7WebCore26CSSMutableStyleDeclaration17setLengthPropertyEiRKNS_6StringEbb
+__ZN7WebCore13StyledElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore13StyledElement18getInlineStyleDeclEv
+__ZN7WebCore13StyledElement21createInlineStyleDeclEv
+__ZN7WebCore26CSSMutableStyleDeclarationC1Ev
+__ZN7WebCore26CSSMutableStyleDeclarationC2Ev
+__ZN7WebCore26CSSMutableStyleDeclaration16parseDeclarationERKNS_6StringE
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm4EE14shrinkCapacityEm
+__ZN7WebCore9CSSParser16parseDeclarationEPNS_26CSSMutableStyleDeclarationERKNS_6StringE
+__ZN7WebCore13StyledElement24invalidateStyleAttributeEv
__ZNK7WebCore15HTMLBodyElement17endTagRequirementEv
__ZNK7WebCore15HTMLBodyElement11tagPriorityEv
__ZN7WebCore15HTMLBodyElement20insertedIntoDocumentEv
-__ZNK7WebCore8Document12ownerElementEv
-__ZN7WebCore8Document18minimumLayoutDelayEv
-__ZNK7WebCore8Document11elapsedTimeEv
-__ZN7WebCore9TimerBase5startEdd
-__ZN3WTF6VectorIPN7WebCore9TimerBaseELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore9TimerBaseELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore9TimerBaseELm0EE15reserveCapacityEm
-__ZN7WebCore9TimerBase15heapDecreaseKeyEv
-__ZSt11__push_heapIN7WebCore17TimerHeapIteratorEiNS0_16TimerHeapElementEEvT_T0_S4_T1_
-__ZN7WebCore17updateSharedTimerEv
-__ZN7WebCore22setSharedTimerFireTimeEd
--[WebCorePowerNotifier init]
-__ZN7WebCore16CSSStyleSelector24canShareStyleWithElementEPNS_4NodeE
-__ZNK7WebCore18NamedMappedAttrMap19hasMappedAttributesEv
-__ZNK7WebCore9StyleBase16isPrimitiveValueEv
+__ZN7WebCore11HTMLElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore11HTMLElement15inEitherTagListEPKNS_4NodeE
+__ZN7WebCore10HTMLParser23pCloserCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCoreL14divConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore14HTMLDivElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14HTMLDivElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore7Element8updateIdERKNS_12AtomicStringES3_
+__ZNK7WebCore14HTMLDivElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore14HTMLDivElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore14HTMLDivElement17endTagRequirementEv
+__ZNK7WebCore14HTMLDivElement11tagPriorityEv
+__ZN7WebCoreL13inlineTagListEv
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findI
+__ZN7WebCoreL12blockTagListEv
+__ZN7WebCore8Document14addElementByIdERKNS_12AtomicStringEPNS_7ElementE
+__ZNK3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraits
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_7ElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3addERKS3_RKS5_
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PNS1_7ElementEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_EENS_14Pa
+__ZN7WebCore13StyledElement21classAttributeChangedERKNS_12AtomicStringE
+__ZN7WebCore18NamedMappedAttrMap8setClassERKNS_6StringE
+__ZN7WebCore4Node28dispatchSubtreeModifiedEventEv
+__ZN7WebCore4Node31notifyNodeListsAttributeChangedEv
+__ZN7WebCore4Node36notifyLocalNodeListsAttributeChangedEv
+__ZN3WTF6VectorIN7WebCore14CSSParserValueELm4EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore14CSSParserValueELm4EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore14CSSParserValueELm4EE15reserveCapacityEm
+__ZN7WebCore15FontFamilyValueC1ERKNS_6StringE
+__ZN7WebCore15FontFamilyValueC2ERKNS_6StringE
+__ZN7WebCore6String8truncateEj
+__ZN7WebCoreL16imageConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLImageElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore16HTMLImageElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore15HTMLImageLoaderC1EPNS_7ElementE
+__ZN7WebCore15HTMLImageLoaderC2EPNS_7ElementE
+__ZN7WebCore11ImageLoaderC2EPNS_7ElementE
+__ZNK7WebCore16HTMLImageElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore16HTMLImageElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore11ImageLoader38updateFromElementIgnoringPreviousErrorEv
+__ZN7WebCore11ImageLoader17updateFromElementEv
+__ZNK7WebCore7Element24imageSourceAttributeNameEv
+__ZNK7WebCore15HTMLImageLoader9sourceURIERKNS_12AtomicStringE
+__ZN7WebCore9DocLoader12requestImageERKNS_6StringE
+__ZN7WebCore11CachedImageC1ERKNS_6StringE
+__ZN7WebCore11CachedImageC2ERKNS_6StringE
+__ZN7WebCore11CachedImage4loadEPNS_9DocLoaderE
+__ZN7WebCore11ImageLoader15setLoadingImageEPNS_11CachedImageE
+__ZN7WebCore11CachedImage9addClientEPNS_20CachedResourceClientE
+__ZNK3WTF7HashMapIN7WebCore18MappedAttributeKeyEPNS1_29CSSMappedAttributeDeclarationENS1_19MappedAttributeHashENS1_24MappedAttr
+__ZN7WebCore13StyledElement12addCSSLengthEPNS_15MappedAttributeEiRKNS_6StringE
+__ZN7WebCore26CSSMutableStyleDeclaration17setLengthPropertyEiRKNS_6StringEbb
+__ZNK7WebCore16HTMLImageElement17endTagRequirementEv
+__ZNK7WebCore16HTMLImageElement11tagPriorityEv
+__ZN7WebCore16HTMLImageElement20insertedIntoDocumentEv
+__ZN7WebCore12HTMLDocument12addNamedItemERKNS_12AtomicStringE
+__ZN7WebCoreL12addItemToMapERN3WTF7HashMapIPNS_16AtomicStringImplEiNS0_7PtrHashIS3_EENS0_10HashTraitsIS3_EENS6_IiEEEERKNS_12Ato
+__ZN7WebCore12HTMLDocument17addExtraNamedItemERKNS_12AtomicStringE
+__ZN7WebCore16HTMLImageElement6attachEv
+__ZN7WebCore10HTMLParser22nestedCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCoreL17anchorConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLAnchorElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17HTMLAnchorElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17HTMLAnchorElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore11prefetchDNSERKNS_6StringE
+__ZNK7WebCore4Page24javaScriptURLsAreAllowedEv
+__ZNK7WebCore17HTMLAnchorElement17endTagRequirementEv
+__ZNK7WebCore17HTMLAnchorElement11tagPriorityEv
+__ZN7WebCore10HTMLParser27nestedStyleCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCore10HTMLParser23allowNestedRedundantTagERKNS_12AtomicStringE
+__ZN7WebCore11HTMLElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL13brConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore13HTMLBRElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore13HTMLBRElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore13HTMLBRElement17endTagRequirementEv
+__ZNK7WebCore13HTMLBRElement11tagPriorityEv
+__ZN7WebCore13HTMLTokenizer11parseEntityERNS_15SegmentedStringERPtNS0_5StateERjbb
+__ZN7WebCoreL20encodeRelativeStringERKNS_6StringERKNS_12TextEncodingERN3WTF6VectorIcLm512EEE
+__ZN3WTF6VectorItLm512EE14shrinkCapacityEm
+__ZN7WebCoreL11findFirstOfEPKtiiPKc
+__ZN3WTF6VectorItLm512EE6appendItEEvPKT_m
+__ZN7WebCoreL21appendEncodedHostnameERN3WTF6VectorItLm512EEEPKtj
+__ZN7WebCore12TextCodecICU6encodeEPKtmNS_19UnencodableHandlingE
+__ZN7WebCore7CStringC1EPKcj
+__ZN7WebCore7CStringC2EPKcj
+__ZN7WebCore7CString4initEPKcj
+__ZN7WebCore12TextCodecICUD0Ev
+__ZNK7WebCore12TextCodecICU19releaseICUConverterEv
+__ZN7WebCoreL18headingConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore18HTMLHeadingElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore18HTMLHeadingElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore18HTMLHeadingElement17endTagRequirementEv
+__ZNK7WebCore18HTMLHeadingElement11tagPriorityEv
+__ZN7WebCoreL16labelConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLLabelElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLLabelElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore16HTMLLabelElement11tagPriorityEv
+__ZN7WebCore18HTMLHeadingElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore10HTMLParser20formCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCore15HTMLFormElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLFormElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15FormDataBuilderC1Ev
+__ZN7WebCore15FormDataBuilderC2Ev
+__ZN7WebCore15HTMLFormElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore15HTMLFormElement17endTagRequirementEv
+__ZNK7WebCore15HTMLFormElement11tagPriorityEv
+__ZN7WebCore15HTMLFormElement20insertedIntoDocumentEv
+__ZN7WebCore15HTMLFormElement6attachEv
+__ZN7WebCoreL19fieldsetConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore19HTMLFieldSetElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore19HTMLFieldSetElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore22HTMLFormControlElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore15HTMLFormElement19registerFormElementEPNS_22HTMLFormControlElementE
+__ZN7WebCore19CheckedRadioButtons12removeButtonEPNS_22HTMLFormControlElementE
+__ZNK7WebCore22HTMLFormControlElement15formControlNameEv
+__ZN7WebCore19CheckedRadioButtons9addButtonEPNS_22HTMLFormControlElementE
+__ZNK7WebCore22HTMLFormControlElement13isRadioButtonEv
+__ZN7WebCore15HTMLFormElement16formElementIndexEPNS_22HTMLFormControlElementE
+__ZN3WTF6VectorIPN7WebCore22HTMLFormControlElementELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore22HTMLFormControlElementELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore22HTMLFormControlElementELm0EE15reserveCapacityEm
+__ZN7WebCore22HTMLFormControlElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore22HTMLFormControlElement17endTagRequirementEv
+__ZNK7WebCore19HTMLFieldSetElement11tagPriorityEv
+__ZN7WebCore22HTMLFormControlElement16insertedIntoTreeEb
+__ZN7WebCore22HTMLFormControlElement6attachEv
+__ZNK7WebCore22HTMLFormControlElement9autofocusEv
+__ZNK7WebCore7Element12hasAttributeERKNS_13QualifiedNameE
+__ZNK7WebCore7Element14hasAttributeNSERKNS_6StringES3_
+__ZNK7WebCore7Element10attributesEb
+__ZN7WebCore19HTMLFieldSetElement8checkDTDEPKNS_4NodeE
+__ZN7WebCoreL16inputConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLInputElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore16HTMLInputElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore31HTMLFormControlElementWithStateC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN3WTF11ListHashSetIPN7WebCore7ElementENS_7PtrHashIS3_EEE3addERKS3_
+__ZN3WTF11ListHashSetIPN7WebCore7ElementENS_7PtrHashIS3_EEE10appendNodeEPNS_15ListHashSetNodeIS3_EE
+__ZN7WebCore16InputElementDataC1EPNS_12InputElementEPNS_7ElementE
+__ZN7WebCore16InputElementDataC2EPNS_12InputElementEPNS_7ElementE
+__ZNK7WebCore16HTMLInputElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore16HTMLInputElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore16HTMLInputElement12setInputTypeERKNS_6StringE
+__ZNK7WebCore16HTMLInputElement15formControlNameEv
+__ZNK7WebCore16InputElementData4nameEv
+__ZNK7WebCore16HTMLInputElement13isRadioButtonEv
+__ZN7WebCore12InputElement18parseSizeAttributeERNS_16InputElementDataEPNS_15MappedAttributeE
+__ZNK7WebCore6String5toIntEPb
+__ZN7WebCore10StringImpl5toIntEPb
+__ZN7WebCore15charactersToIntEPKtmPb
+__ZN7WebCoreL27lengthOfCharactersAsIntegerEPKtm
+__ZN7WebCoreL24isCharacterAllowedInBaseEti
+__ZNK7WebCore16HTMLInputElement17endTagRequirementEv
+__ZNK7WebCore16HTMLInputElement11tagPriorityEv
+__ZN7WebCore16HTMLInputElement6attachEv
+__ZNK7WebCore16HTMLInputElement17isInputTypeHiddenEv
+__ZN7WebCore31HTMLFormControlElementWithState21finishParsingChildrenEv
+__ZNK7WebCore8Document26hasStateForNewFormElementsEv
+__ZN7WebCore10HTMLParser22selectCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCoreL17selectConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLSelectElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore17HTMLSelectElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore17HTMLSelectElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore28createAttributeEventListenerEPNS_4NodeEPNS_9AttributeE
+__ZN7WebCore19createJSHTMLWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPFPNS1_6JSNodeEPN3JSC9ExecStateENS_10PassRefPtrINS1_11HTMLElementEEEENS_7PtrHashI
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PFPNS1_6JSNodeEPN3JSC9ExecStateENS_10PassRefPtrINS1_11HTMLElementEEE
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPFPNS1_6JSNodeEPN3JSC9ExecStateENS_10PassRefPtrINS1_11HTMLElementEEEENS_7PtrHash
+__ZN7WebCoreL30createHTMLSelectElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLSelectElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSHTMLElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore13JSHTMLElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore9JSElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLSelectElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLSelectElementEEE
+__ZN7WebCore19JSHTMLSelectElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLSelectElementEEE
+__ZN7WebCore13JSHTMLElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11HTMLElementEEE
+__ZN7WebCore9JSElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7ElementEEE
+__ZN7WebCore19cacheDOMNodeWrapperEPNS_8DocumentEPNS_4NodeEPNS_6JSNodeE
+__ZN3WTF7HashMapIPN7WebCore4NodeEPNS1_6JSNodeENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setERKS3_RKS5_
+__ZN7WebCoreL18eventParameterNameEb
+__ZN7WebCore19JSLazyEventListenerC1ERKNS_6StringES3_S3_PNS_17JSDOMGlobalObjectEPNS_4NodeEi
+__ZN7WebCore19JSLazyEventListenerC2ERKNS_6StringES3_S3_PNS_17JSDOMGlobalObjectEPNS_4NodeEi
+__ZN7WebCore4Node25setAttributeEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore4Node27clearAttributeEventListenerERKNS_12AtomicStringE
+__ZN7WebCore4Node16addEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
+__ZN7WebCore4Node14ensureRareDataEv
+__ZN7WebCore7Element14createRareDataEv
+__ZN3WTF7HashMapIPKN7WebCore4NodeEPNS1_12NodeRareDataENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3setERKS4_RKS6_
+__ZN7WebCore4Node19removeEventListenerERKNS_12AtomicStringEPNS_13EventListenerEb
+__ZNK7WebCore4Node8rareDataEv
+__ZNK3WTF7HashMapIPKN7WebCore4NodeEPNS1_12NodeRareDataENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3getERKS4_
+__ZN7WebCore8Document42registerDisconnectedNodeWithEventListenersEPNS_4NodeE
+__ZN3WTF7HashSetIPN7WebCore4NodeENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore4NodeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore4NodeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore4NodeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTableEi
+__ZNK7WebCore17HTMLSelectElement11tagPriorityEv
+__ZN7WebCore8Document44unregisterDisconnectedNodeWithEventListenersEPNS_4NodeE
+__ZN3WTF9HashTableIPN7WebCore4NodeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22Ident
+__ZN3WTF9HashTableIPN7WebCore4NodeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInvalida
+__ZN3WTF9HashTableIPN7WebCore4NodeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN7WebCore17HTMLSelectElement16insertedIntoTreeEb
+__ZNK7WebCore17HTMLSelectElement15recalcListItemsEb
+__ZN3WTF6VectorIPN7WebCore11HTMLElementELm0EE14shrinkCapacityEm
+__ZN7WebCore17HTMLSelectElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore17HTMLSelectElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore17HTMLSelectElement18setRecalcListItemsEv
+__ZN7WebCore8Document19scheduleStyleRecalcEv
+__ZN3WTF7HashSetIPN7WebCore8DocumentENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore8DocumentES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore8DocumentES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore8DocumentES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTable
+__ZN3WTF9HashTableIPN7WebCore8DocumentES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTab
+__ZN7WebCoreL17optionConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLOptionElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore17HTMLOptionElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore17OptionElementDataC1EPNS_7ElementE
+__ZN7WebCore17OptionElementDataC2EPNS_7ElementE
+__ZN7WebCore17HTMLOptionElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore17HTMLOptionElement17endTagRequirementEv
+__ZNK7WebCore17HTMLOptionElement11tagPriorityEv
+__ZN7WebCore17HTMLOptionElement16insertedIntoTreeEb
+__ZNK7WebCore17HTMLOptionElement18ownerSelectElementEv
+__ZNK7WebCore17HTMLOptionElement8selectedEv
+__ZN7WebCore17HTMLSelectElement17scrollToSelectionEv
+__ZN7WebCore17HTMLOptionElement6attachEv
+__ZN7WebCore17HTMLOptionElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore17HTMLOptionElement15childrenChangedEbPNS_4NodeES2_i
+__ZNK7WebCore17HTMLOptionElement22nonRendererRenderStyleEv
+__ZNK7WebCore17HTMLOptionElement5indexEv
+__ZNK7WebCore4Node19traverseNextSiblingEPKS0_
+__ZN3WTF6VectorIPN7WebCore11HTMLElementELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore11HTMLElementELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore11HTMLElementELm0EE15reserveCapacityEm
+__ZN7WebCore17HTMLOptionElement16setSelectedStateEb
+__ZN7WebCore13OptionElement16setSelectedStateERNS_17OptionElementDataEb
+__ZN7WebCore17HTMLSelectElement16setSelectedIndexEibb
+__ZNK7WebCore17HTMLSelectElement17optionToListIndexEi
+__ZN7WebCore17HTMLSelectElement29setActiveSelectionAnchorIndexEi
+__ZN3WTF6VectorIbLm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIbLm0EE14expandCapacityEmPKb
+__ZN3WTF6VectorIbLm0EE14expandCapacityEm
+__ZN3WTF6VectorIbLm0EE15reserveCapacityEm
+__ZN7WebCore17HTMLSelectElement13deselectItemsEPNS_17HTMLOptionElementE
+__ZNK7WebCore16HTMLInputElement32storesValueSeparateFromAttributeEv
+__ZN7WebCore12InputElement19updateValueIfNeededERNS_16InputElementDataE
+__ZThn128_NK7WebCore16HTMLInputElement14constrainValueERKNS_6StringE
+__ZNK7WebCore16HTMLInputElement14constrainValueERKNS_6StringE
+__ZN7WebCore12InputElement14constrainValueERKNS_16InputElementDataERKNS_6StringEi
+__ZThn128_NK7WebCore16HTMLInputElement11isTextFieldEv
+__ZNK7WebCore16HTMLInputElement11isTextFieldEv
+__ZN7WebCore12InputElement22notifyFormStateChangedERNS_16InputElementDataEPNS_8DocumentE
+__ZN7WebCore22HTMLFormControlElement34setFormControlValueMatchesRendererEb
+__ZN7WebCoreL13hrConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore13HTMLHRElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore13HTMLHRElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore13HTMLHRElement17endTagRequirementEv
+__ZNK7WebCore13HTMLHRElement11tagPriorityEv
+__ZN7WebCore14CachedResource13makePurgeableEb
+__ZNK7WebCore9DocLoader11cachePolicyEv
+__ZNK7WebCore11FrameLoader11cachePolicyEv
+__ZNK7WebCore14CachedResource14mustRevalidateENS_11CachePolicyE
+__ZN3WTF6VectorItLm0EE4growEm
+__ZN3WTF6VectorItLm0EE6shrinkEm
+__ZN3WTF9HashTableIPN7WebCore20CachedResourceClientESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTra
+__ZNK7WebCore13HTMLBRElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore13HTMLBRElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore15SegmentedString15advanceSlowCaseERi
+__ZNK7WebCore8Document15isMediaDocumentEv
+__ZN7WebCore11FrameLoader14didReceiveDataEPNS_14ResourceLoaderEPKcii
+__ZN7WebCore15ProgressTracker17incrementProgressEmPKci
+__ZNK7WebCore11FrameLoader27numPendingOrLoadingRequestsEb
+__ZNK7WebCore11FrameLoader15firstLayoutDoneEv
+__ZN7WebCore11FrameLoader31dispatchDidReceiveContentLengthEPNS_14DocumentLoaderEmi
+__ZN7WebCore19InspectorController23didReceiveContentLengthEPNS_14DocumentLoaderEmi
+-[WebCoreResourceHandleAsDelegate connection:willCacheResponse:]
+__ZN7WebCore14ResourceLoader17willCacheResponseEPNS_14ResourceHandleEP19NSCachedURLResponse
+__ZN7WebCore14ResourceLoader17willCacheResponseEPNS_14ResourceHandleERNS_18CacheStoragePolicyE
+-[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:]
+__ZN7WebCore14ResourceLoader16didFinishLoadingEPNS_14ResourceHandleE
+__ZN7WebCore18MainResourceLoader16didFinishLoadingEv
+__ZN7WebCore11FrameLoader15finishedLoadingEv
+__ZN7WebCoreL24urlEscapedEntityCallbackEPKvP25UConverterFromUnicodeArgsPKtii24UConverterCallbackReasonP10UErrorCode
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore23RegisteredEventListenerEEELm0EE6shrinkEm
+__ZN3WTF9HashTableIPN7WebCore8DocumentES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22I
+__ZN3WTF9HashTableIPN7WebCore8DocumentES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInva
+__ZN3WTF9HashTableIPN7WebCore8DocumentES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN7WebCore4Text11recalcStyleENS_4Node11StyleChangeE
+__ZN7WebCore22HTMLFormControlElement11recalcStyleENS_4Node11StyleChangeE
+__ZN7WebCore17HTMLSelectElement11recalcStyleENS_4Node11StyleChangeE
+__ZN3WTF6VectorIPN7WebCore11HTMLElementELm0EE6shrinkEm
+__ZN7WebCore9TimerBase10heapPopMinEv
+__ZSt13__adjust_heapIN7WebCore17TimerHeapIteratorEiNS0_16TimerHeapElementEEvT_T0_S4_T1_
+__ZN3WTF6VectorIPN7WebCore9TimerBaseELm0EE6shrinkEm
+__ZN7WebCore19AnimationController18endAnimationUpdateEv
+__ZN7WebCore26AnimationControllerPrivate14styleAvailableEv
+__ZN7WebCore26AnimationControllerPrivate24beginAnimationUpdateTimeEv
+__ZN7WebCore26AnimationControllerPrivate17startTimeResponseEd
+__ZN7WebCore9FrameView16restoreScrollbarEv
+__ZN7WebCore11FrameLoader10gotoAnchorEv
+__ZN7WebCore14ResourceLoader12resourceDataEv
+__ZN7WebCore14DocumentLoader13updateLoadingEv
+__ZNK7WebCore11FrameLoader9isLoadingEv
+__ZNK7WebCore14DocumentLoader21isLoadingSubresourcesEv
+__ZN7WebCore14ResourceLoader16didFinishLoadingEv
+__ZN7WebCore14ResourceLoader23didFinishLoadingOnePartEv
+__ZN7WebCore11FrameLoader13didFinishLoadEPNS_14ResourceLoaderE
+__ZN7WebCore15ProgressTracker16completeProgressEm
+__ZN7WebCore11FrameLoader24dispatchDidFinishLoadingEPNS_14DocumentLoaderEm
+__ZN7WebCore19InspectorController16didFinishLoadingEPNS_14DocumentLoaderEm
+__ZN7WebCore14ResourceLoader16releaseResourcesEv
+__ZN7WebCore14ResourceHandle9setClientEPNS_20ResourceHandleClientE
+__ZN7WebCore14ResourceHandleD1Ev
+__ZN7WebCore14ResourceHandleD2Ev
+__ZN7WebCore14ResourceHandle15releaseDelegateEv
+-[WebCoreResourceHandleAsDelegate detachHandle]
+__ZN7WebCore22ResourceHandleInternalD1Ev
+__ZN7WebCore22ResourceHandleInternalD2Ev
+__ZN7WebCore27AuthenticationChallengeBaseD2Ev
+__ZN7WebCore19ResourceRequestBaseD2Ev
+__ZN7WebCore18MainResourceLoaderD0Ev
+__ZN7WebCore16RunLoopTimerBaseD2Ev
+__ZN7WebCore16RunLoopTimerBase4stopEv
+__ZN7WebCore14ResourceLoaderD2Ev
+__ZN7WebCore12ThreadTimers16sharedTimerFiredEv
+__ZN7WebCore12ThreadTimers24sharedTimerFiredInternalEv
+__ZN7WebCore12ThreadTimers19collectFiringTimersEdRN3WTF6VectorIPNS_9TimerBaseELm0EEE
+__ZN3WTF7HashSetIPKN7WebCore9TimerBaseENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN3WTF9HashTableIPKN7WebCore9TimerBaseES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6expandEv
+__ZN3WTF9HashTableIPKN7WebCore9TimerBaseES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6rehashEi
+__ZN3WTF9HashTableIPKN7WebCore9TimerBaseES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E13allocateTab
+__ZN3WTF9HashTableIPKN7WebCore9TimerBaseES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E15deallocateT
+__ZN7WebCore9TimerBase13heapDeleteMinEv
+__ZN7WebCore12ThreadTimers10fireTimersEdRKN3WTF6VectorIPNS_9TimerBaseELm0EEE
+__ZN3WTF9HashTableIPKN7WebCore9TimerBaseES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E47removeAndIn
+__ZN3WTF9HashTableIPKN7WebCore9TimerBaseES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6removeEPS4_
+__ZN7WebCore5TimerINS_6LoaderEE5firedEv
+__ZN7WebCore6Loader17requestTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore6Loader20servePendingRequestsENS0_8PriorityE
+__ZN3WTF6VectorIPN7WebCore6Loader4HostELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore6Loader4HostELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIPN7WebCore6Loader4HostELm0EE6shrinkEm
+__ZN7WebCore5TimerINS_5FrameEE5firedEv
+__ZN7WebCore5Frame21lifeSupportTimerFiredEPNS_5TimerIS0_EE
+__ZN3WTF9HashTableIPKN7WebCore9TimerBaseES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E5clearEv
+__ZN7WebCore17SubresourceLoader26shouldUseCredentialStorageEv
+__ZN7WebCore23SubresourceLoaderClient29getShouldUseCredentialStorageEPNS_17SubresourceLoaderERb
+__ZN7WebCore17SubresourceLoader18didReceiveResponseERKNS_16ResourceResponseE
+__ZN7WebCore6Loader4Host18didReceiveResponseEPNS_17SubresourceLoaderERKNS_16ResourceResponseE
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore17SubresourceLoaderEEEPNS2_7RequestENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3get
+__ZN7WebCore14CachedResource11setResponseERKNS_16ResourceResponseE
+__ZNK7WebCore20ResourceResponseBase14expirationDateEv
+__ZNK7WebCore20ResourceResponseBase16textEncodingNameEv
+__ZN7WebCore17SubresourceLoader14didReceiveDataEPKcixb
+__ZN7WebCore6Loader4Host14didReceiveDataEPNS_17SubresourceLoaderEPKci
+__ZN7WebCore17SubresourceLoader16didFinishLoadingEv
+__ZN7WebCore6Loader4Host16didFinishLoadingEPNS_17SubresourceLoaderE
+__ZN7WebCore9DocLoader21decrementRequestCountEv
+__ZN7WebCore9DocLoader17setLoadInProgressEb
+__ZN7WebCore19CachedCSSStyleSheet4dataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
+__ZN7WebCore14CachedResource14setEncodedSizeEj
+__ZN7WebCore19TextResourceDecoder18checkForCSSCharsetEPKcmRb
+__ZN7WebCore19CachedCSSStyleSheet11checkNotifyEv
+__ZN7WebCore26CachedResourceClientWalkerC1ERKN3WTF14HashCountedSetIPNS_20CachedResourceClientENS1_7PtrHashIS4_EENS1_10HashTrait
+__ZN7WebCore26CachedResourceClientWalkerC2ERKN3WTF14HashCountedSetIPNS_20CachedResourceClientENS1_7PtrHashIS4_EENS1_10HashTrait
+__ZN7WebCore26CachedResourceClientWalker4nextEv
+__ZNK3WTF9HashTableIPN7WebCore20CachedResourceClientESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTr
+__ZThn24_N7WebCore13CSSImportRule16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
+__ZN7WebCore13CSSImportRule16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
+__ZN7WebCore13CSSStyleSheetC1EPNS_7CSSRuleERKNS_6StringES5_
+__ZN7WebCore13CSSStyleSheetC2EPNS_7CSSRuleERKNS_6StringES5_
+__ZN7WebCore10StyleSheetC2EPNS_9StyleBaseERKNS_6StringE
+__ZNK7WebCore19CachedCSSStyleSheet9sheetTextEb
+__ZNK7WebCore19CachedCSSStyleSheet11canUseSheetEb
+__ZN7WebCore28extractMIMETypeFromMediaTypeERKNS_6StringE
+__ZN3WTF6VectorItLm64EE15reserveCapacityEm
+__ZN3WTF6VectorItLm64EE6shrinkEm
+__ZN7WebCore9CSSParser9parseFontEb
+__ZNK7WebCore13CSSStyleSheet11completeURLERKNS_6StringE
+__ZNK7WebCore9StyleBase7baseURLEv
+__ZNK7WebCore4KURL14isHierarchicalEv
+__ZN7WebCoreL20copyPathRemovingDotsEPcPKcii
+__ZN7WebCore13CSSImageValueC1ERKNS_6StringE
+__ZN7WebCore13CSSImageValueC2ERKNS_6StringE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore10StyleSheetEEELm0EE6shrinkEm
+__ZN7WebCore11RenderBlock24updateBeforeAfterContentENS_8PseudoIdE
+__ZN7WebCore21RenderObjectChildList24updateBeforeAfterContentEPNS_12RenderObjectENS_8PseudoIdES2_
+__ZNK7WebCore12RenderObject20getCachedPseudoStyleENS_8PseudoIdEPNS_11RenderStyleE
+__ZN7WebCoreL20beforeAfterContainerEPNS_12RenderObjectENS_8PseudoIdE
+__ZNK7WebCore12RenderObject12isListMarkerEv
+__ZNK7WebCore12RenderObject23createsAnonymousWrapperEv
+__ZNK7WebCore8CSSValue16isPrimitiveValueEv
__ZNK7WebCore8CSSValue12cssValueTypeEv
-__ZN7WebCore9FontValue11isFontValueEv
+__ZNK7WebCore9FontValue11isFontValueEv
__ZN7WebCore17CSSPrimitiveValue8getIdentEv
-__ZN7WebCore17CSSPrimitiveValue18computeLengthFloatEPNS_11RenderStyleEb
-__ZN7WebCore17CSSPrimitiveValue19computeLengthDoubleEPNS_11RenderStyleEb
+__ZN7WebCore11RenderStyle18setFontDescriptionERKNS_15FontDescriptionE
__ZNK7WebCore12CSSValueList12cssValueTypeEv
-__ZN7WebCore12CSSValueList11isValueListEv
+__ZNK7WebCore12CSSValueList11isValueListEv
+__ZN7WebCore16CSSStyleSelector26getColorFromPrimitiveValueEPNS_17CSSPrimitiveValueE
+__ZN7WebCoreL16colorForCSSValueEi
__ZN7WebCore16CSSStyleSelector10updateFontEv
__ZN7WebCore16CSSStyleSelector22checkForTextSizeAdjustEv
__ZN7WebCore16CSSStyleSelector27checkForGenericFamilyChangeEPNS_11RenderStyleES2_
+__ZN7WebCore16CSSStyleSelector18checkForZoomChangeEPNS_11RenderStyleES2_
__ZN7WebCore17CSSPrimitiveValue12isQuirkValueEv
-__ZN7WebCore17CSSPrimitiveValue25computeLengthIntForLengthEPNS_11RenderStyleE
+__ZN7WebCore17CSSPrimitiveValue25computeLengthIntForLengthEPNS_11RenderStyleEd
+__ZN7WebCore17CSSPrimitiveValue19computeLengthDoubleEPNS_11RenderStyleEdb
+__ZN7WebCore7DataRefINS_17StyleSurroundDataEE6accessEv
+__ZN7WebCore17StyleSurroundDataC1ERKS0_
__ZN7WebCore17StyleSurroundDataC2ERKS0_
-__ZN7WebCore16CSSStyleSelector26getColorFromPrimitiveValueEPNS_17CSSPrimitiveValueE
+__ZN7WebCore7DataRefINS_19StyleBackgroundDataEE6accessEv
+__ZN7WebCore19StyleBackgroundDataC1ERKS0_
__ZN7WebCore19StyleBackgroundDataC2ERKS0_
-__ZN7WebCore15BackgroundLayerC2ERKS0_
+__ZN7WebCore9FillLayerC1ERKS0_
+__ZN7WebCore9FillLayerC2ERKS0_
+__ZNK7WebCore8CSSValue11isValueListEv
+__ZN7WebCore16CSSStyleSelector12mapFillImageEPNS_9FillLayerEPNS_8CSSValueE
+__ZN7WebCore16CSSStyleSelector10styleImageEPNS_8CSSValueE
+__ZNK7WebCore13CSSImageValue12isImageValueEv
+__ZN7WebCore13CSSImageValue11cachedImageEPNS_9DocLoaderE
+__ZNK7WebCore17CSSPrimitiveValue14getStringValueEv
+__ZN7WebCore13CSSImageValue11cachedImageEPNS_9DocLoaderERKNS_6StringE
+__ZN7WebCore16CSSStyleSelector13mapFillRepeatEPNS_9FillLayerEPNS_8CSSValueE
__ZNK7WebCore15CSSInitialValue12cssValueTypeEv
-__ZNK7WebCore12RenderObject12isRenderViewEv
-__ZN7WebCore11HTMLElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore11HTMLElement15inEitherTagListEPKNS_4NodeE
-__ZN7WebCore4Node16styleForRendererEPNS_12RenderObjectE
+__ZN7WebCore16CSSStyleSelector16mapFillXPositionEPNS_9FillLayerEPNS_8CSSValueE
+__ZN7WebCore16CSSStyleSelector16mapFillYPositionEPNS_9FillLayerEPNS_8CSSValueE
+__ZN7WebCore16HTMLInputElement6detachEv
+__ZN7WebCore17HTMLOptionElement6detachEv
__ZN7WebCore4Text16rendererIsNeededEPNS_11RenderStyleE
__ZN7WebCore13CharacterData16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore4Node16rendererIsNeededEPNS_11RenderStyleE
__ZNK7WebCore12RenderObject7isTableEv
__ZNK7WebCore12RenderObject10isFrameSetEv
__ZN7WebCore4Node16previousRendererEv
-__ZN7WebCore11HTMLElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore13inlineTagListEv
-__ZN7WebCore12blockTagListEv
-__ZN7WebCore13HTMLTokenizer12parseCommentERNS_15SegmentedStringENS0_5StateE
-__ZN7WebCore10HTMLParser23commentCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore7CommentC2EPNS_8DocumentERKNS_6StringE
-__ZNK7WebCore7Comment8nodeTypeEv
-__ZNK7WebCore7Comment13isCommentNodeEv
-__ZN7WebCore16tableConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLTableElementC2EPNS_8DocumentE
-__ZNK7WebCore16HTMLTableElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore16HTMLTableElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore16HTMLTableElement11cellBordersEv
-__ZNK7WebCore6String5toIntEPb
-__ZN7WebCore10StringImpl5toIntEPb
-__ZN7WebCore21DeprecatedConstStringC2EPKNS_14DeprecatedCharEj
-__ZN7WebCore20DeprecatedStringDataC2EPNS_14DeprecatedCharEjj
-__ZN7WebCore16DeprecatedStringC2EPNS_20DeprecatedStringDataEb
-__ZN7WebCore21DeprecatedConstStringD2Ev
-__ZN7WebCore6String6numberEi
-__ZN7WebCore6String6formatEPKcz
-__ZN3WTF6VectorIcLm256EE4growEm
-__ZNK7WebCore16HTMLTableElement17endTagRequirementEv
-__ZNK7WebCore16HTMLTableElement11tagPriorityEv
-__ZN7WebCore16HTMLTableElement6attachEv
-__ZNK7WebCore16HTMLTableElement36canHaveAdditionalAttributeStyleDeclsEv
-__ZN7WebCore16HTMLTableElement29additionalAttributeStyleDeclsERN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
-__ZN7WebCore17CSSPrimitiveValue18computeLengthShortEPNS_11RenderStyleE
-__ZN7WebCore11RenderTableC2EPNS_4NodeE
-__ZN3WTF6VectorIiLm0EE4fillERKim
-__ZN3WTF6VectorIiLm0EE15reserveCapacityEm
-__ZSt4fillIPiiEvT_S1_RKT0_
-__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE4fillERKS3_m
-__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE15reserveCapacityEm
-__ZSt4fillIPN7WebCore11RenderTable12ColumnStructES2_EvT_S4_RKT0_
-__ZN7WebCore11RenderTable8setStyleEPNS_11RenderStyleE
-__ZN7WebCore11RenderTable17updateFirstLetterEv
-__ZN7WebCore15AutoTableLayoutC2EPNS_11RenderTableE
-__ZN7WebCore16HTMLTableElement8addChildEN3WTF10PassRefPtrINS_4NodeEEE
-__ZN7WebCore16HTMLTableElement8checkDTDEPKNS_4NodeE
-__ZNK7WebCore11RenderTable7isTableEv
-__ZN7WebCore10HTMLParser22nestedCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore19tableRowConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore19HTMLTableRowElementC2EPNS_8DocumentE
-__ZNK7WebCore19HTMLTableRowElement17endTagRequirementEv
-__ZNK7WebCore19HTMLTableRowElement11tagPriorityEv
-__ZN7WebCore14isTableSectionEPNS_4NodeE
-__ZN7WebCore23HTMLTableSectionElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore23HTMLTableSectionElement11tagPriorityEv
-__ZNK7WebCore23HTMLTableSectionElement36canHaveAdditionalAttributeStyleDeclsEv
-__ZN7WebCore23HTMLTableSectionElement29additionalAttributeStyleDeclsERN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
-__ZN7WebCore16HTMLTableElement19addSharedGroupDeclsEbRN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
-__ZNK7WebCore17CSSInheritedValue12cssValueTypeEv
-__ZN7WebCore18RenderTableSectionC2EPNS_4NodeE
-__ZN7WebCore18RenderTableSection8setStyleEPNS_11RenderStyleE
+__ZNK7WebCore12RenderObject14isRenderInlineEv
+__ZNK7WebCore7Element14getIDAttributeEv
+__ZN7WebCore7DataRefINS_12StyleBoxDataEE6accessEv
+__ZN7WebCore14ClassNamesData12createVectorEv
+__ZN7WebCore17CSSPrimitiveValue18computeLengthFloatEPNS_11RenderStyleEb
+__ZN7WebCore7DataRefINS_18StyleInheritedDataEE6accessEv
+__ZN7WebCore16HTMLImageElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore11RenderImageC1EPNS_4NodeE
+__ZN7WebCore11RenderImageC2EPNS_4NodeE
+__ZN7WebCore14RenderReplacedC2EPNS_4NodeERKNS_7IntSizeE
+__ZN7WebCore11RenderImage13updateAltTextEv
+__ZNK7WebCore16HTMLImageElement7altTextEv
+__ZN7WebCore14RenderReplaced14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
__ZNK7WebCore12RenderObject13isRenderBlockEv
-__ZNK7WebCore18RenderTableSection14isTableSectionEv
-__ZN7WebCore11RenderTable8addChildEPNS_12RenderObjectES2_
-__ZN7WebCore10RenderFlow26dirtyLinesFromChangedChildEPNS_12RenderObjectE
-__ZN7WebCore23HTMLTableSectionElement8addChildEN3WTF10PassRefPtrINS_4NodeEEE
-__ZNK7WebCore23HTMLTableSectionElement17endTagRequirementEv
-__ZN7WebCore23HTMLTableSectionElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore14RenderTableRowC2EPNS_4NodeE
-__ZN7WebCore14RenderTableRow8setStyleEPNS_11RenderStyleE
-__ZNK7WebCore14RenderTableRow10isTableRowEv
-__ZN7WebCore14RenderTableRow13requiresLayerEv
-__ZN7WebCore18RenderTableSection8addChildEPNS_12RenderObjectES2_
-__ZN7WebCore18RenderTableSection10ensureRowsEi
-__ZN3WTF6VectorIN7WebCore18RenderTableSection9RowStructELm0EE4growEm
-__ZN3WTF6VectorIN7WebCore18RenderTableSection9RowStructELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore18RenderTableSection9RowStructELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIN7WebCore18RenderTableSection10CellStructELm0EE4fillERKS3_m
-__ZSt4fillIPN7WebCore18RenderTableSection10CellStructES2_EvT_S4_RKT0_
-__ZNK7WebCore12RenderObject14childrenInlineEv
-__ZN7WebCore19HTMLTableRowElement8addChildEN3WTF10PassRefPtrINS_4NodeEEE
-__ZN7WebCore19HTMLTableRowElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore10HTMLParser25tableCellCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZNK7WebCore4Font6ascentEv
-__ZNK7WebCore4Font7descentEv
+__ZNK7WebCore12RenderObject15virtualChildrenEv
+__ZN7WebCore11RenderBlock26dirtyLinesFromChangedChildEPNS_12RenderObjectE
+__ZN7WebCore17RenderLineBoxList26dirtyLinesFromChangedChildEPNS_12RenderObjectES2_
+__ZNK7WebCore11RenderImage7isImageEv
+__ZNK7WebCore11RenderImage8hasImageEv
+__ZN7WebCore11RenderImage14setCachedImageEPNS_11CachedImageE
+__ZN7WebCoreeqINS_11CachedImageES1_EEbRKNS_20CachedResourceHandleIT_EEPKT0_
+__ZNK7WebCore12RenderObject4isBREv
+__ZN7WebCore4Text14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore10RenderTextC1EPNS_4NodeEN3WTF10PassRefPtrINS_10StringImplEEE
+__ZN7WebCore10RenderTextC2EPNS_4NodeEN3WTF10PassRefPtrINS_10StringImplEEE
+__ZNK7WebCore8Document31displayStringModifiedByEncodingEN3WTF10PassRefPtrINS_10StringImplEEE
+__ZN7WebCore10RenderText15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore10RenderText14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore16CSSStyleSelector15SelectorChecker16checkPseudoStateEPNS_7ElementEb
+__ZN7WebCore15visitedLinkHashERKNS_4KURLERKNS_12AtomicStringE
+__ZN7WebCore10visitedURLERKNS_4KURLERKNS_12AtomicStringERN3WTF6VectorItLm512EEE
+__ZN7WebCore9PageGroup13isLinkVisitedEy
+__ZN7WebCore9PageGroup14addVisitedLinkEPKtm
+__ZN3WTF9HashTableIyyNS_17IdentityExtractorIyEEN7WebCore12LinkHashHashENS_10HashTraitsIyEES6_E4findIyNS_22IdentityHashTranslato
+__ZNK7WebCore11CSSSelector9attributeEv
+__ZN7WebCoreL36htmlAttributeHasCaseInsensitiveValueERKNS_13QualifiedNameE
+__ZN7WebCoreL17addLocalNameToSetEPN3WTF7HashSetIPNS_16AtomicStringImplENS0_7PtrHashIS3_EENS0_10HashTraitsIS3_EEEERKNS_13Qualifi
+__ZN7WebCore10StringImpl11reverseFindEPS0_ib
+__ZN7WebCoregtERNS_11CSSRuleDataES1_
+__ZN7WebCore11CSSSelector11specificityEv
+__ZN7WebCore15StyleVisualDataC1ERKS0_
+__ZN7WebCore15StyleVisualDataC2ERKS0_
+__ZN7WebCore11RenderStyle15clearCursorListEv
+__ZN7WebCoreL19valueOrPropertyNameEi
+__Z12getValueNamet
+__ZN7WebCore12RenderInlineC1EPNS_4NodeE
+__ZN7WebCore12RenderInlineC2EPNS_4NodeE
+__ZN7WebCore12RenderInline14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore12RenderInline27updateBoxModelInfoFromStyleEv
+__ZNK7WebCore12RenderInline13requiresLayerEv
+__ZNK7WebCore12RenderInline18inlineContinuationEv
+__ZNK7WebCore12RenderInline15virtualChildrenEv
+__ZNK7WebCore16CSSStyleSelector14largerFontSizeEfb
+__ZN7WebCore12RenderInline8addChildEPNS_12RenderObjectES2_
+__ZN7WebCore12RenderInline28addChildIgnoringContinuationEPNS_12RenderObjectES2_
+__ZN7WebCore12RenderInline15virtualChildrenEv
+__ZN7WebCore12RenderInline26dirtyLinesFromChangedChildEPNS_12RenderObjectE
+__ZNK7WebCore15FontDescription12bolderWeightEv
+__ZN7WebCore16CSSStyleSelector24canShareStyleWithElementEPNS_4NodeE
+__ZN7WebCore13HTMLBRElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore8RenderBRC1EPNS_4NodeE
+__ZN7WebCore8RenderBRC2EPNS_4NodeE
+__ZN7WebCore8RenderBR14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore8RenderBR4isBREv
+__ZNK7WebCore16CSSStyleSelector15smallerFontSizeEfb
+__ZNK7WebCore12RenderObject22getUncachedPseudoStyleENS_8PseudoIdEPNS_11RenderStyleE
+__ZN7WebCore16CSSStyleSelector21pseudoStyleForElementENS_8PseudoIdEPNS_7ElementEPNS_11RenderStyleE
+__ZN7WebCore22CSSQuirkPrimitiveValue12isQuirkValueEv
+__ZN7WebCore17CSSPrimitiveValue18computeLengthShortEPNS_11RenderStyleEd
+__ZNK7WebCore12RenderInline14isRenderInlineEv
+__ZNK7WebCore10RenderText12originalTextEv
+__ZN7WebCore10RenderText7setTextEN3WTF10PassRefPtrINS_10StringImplEEEb
+__ZN7WebCore10RenderText15setTextInternalEN3WTF10PassRefPtrINS_10StringImplEEE
+__ZNK7WebCore12RenderObject9isSVGTextEv
+__ZN7WebCore15HTMLFormElement16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore11RenderBlock17deleteLineBoxTreeEv
+__ZN7WebCore17RenderLineBoxList17deleteLineBoxTreeEPNS_11RenderArenaE
+__ZNK7WebCore11RenderBlock20createAnonymousBlockEv
+__ZN7WebCoreL9moveChildEPNS_12RenderObjectEPNS_21RenderObjectChildListES1_S3_S1_
+__ZNK7WebCore12RenderObject17isSelectionBorderEv
+__ZN7WebCore9RenderBox21computeRectForRepaintEPNS_20RenderBoxModelObjectERNS_7IntRectEb
+__ZNK7WebCore11RenderBlock11isBlockFlowEv
+__ZNK7WebCore14RenderThemeMac11systemColorEi
+__ZNK3WTF9HashTableIiSt4pairIijENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIiEENS8_IjEEEES9
+__ZN3WTF7HashMapIijNS_7IntHashIjEENS_10HashTraitsIiEENS3_IjEEE3setERKiRKj
+__ZN3WTF9HashTableIiSt4pairIijENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIiEENS8_IjEEEES9_
+__ZNK3WTF7HashMapIijNS_7IntHashIjEENS_10HashTraitsIiEENS3_IjEEE3getERKi
+__ZNK7WebCore22HTMLFormControlElement20isFormControlElementEv
+__ZN7WebCore19HTMLFieldSetElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore14RenderFieldsetC1EPNS_4NodeE
+__ZN7WebCore14RenderFieldsetC2EPNS_4NodeE
+__ZN7WebCore14RenderFieldset14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore14toInputElementEPNS_7ElementE
+__ZThn128_NK7WebCore16HTMLInputElement12isAutofilledEv
+__ZNK7WebCore16HTMLInputElement12isAutofilledEv
+__ZNK7WebCore14RenderThemeMac10systemFontEiRNS_15FontDescriptionE
+__ZN7WebCoreL12toFontWeightEl
+__ZN7WebCore11RenderStyle13setTextShadowEPNS_10ShadowDataEb
+__ZN7WebCore22StyleRareInheritedDataC1ERKS0_
+__ZN7WebCore22StyleRareInheritedDataC2ERKS0_
+__ZN7WebCore7DataRefINS_25StyleRareNonInheritedDataEE6accessEv
+__ZN7WebCore25StyleRareNonInheritedDataC1ERKS0_
+__ZN7WebCore25StyleRareNonInheritedDataC2ERKS0_
+__ZN7WebCore9FillLayeraSERKS0_
+__ZN7WebCore11RenderTheme11adjustStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementEbRKNS_10BorderDataERKNS_9FillLayer
+__ZNK7WebCore14RenderThemeMac15isControlStyledEPKNS_11RenderStyleERKNS_10BorderDataERKNS_9FillLayerERKNS_5ColorE
+__ZNK7WebCore14NinePieceImageeqERKS0_
+__ZN7WebCore11RenderStyle12setBoxShadowEPNS_10ShadowDataEb
+__ZNK7WebCore14RenderThemeMac20adjustTextFieldStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZN7WebCore16HTMLInputElement16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore16HTMLInputElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore27RenderTextControlSingleLineC1EPNS_4NodeE
+__ZN7WebCore27RenderTextControlSingleLineC2EPNS_4NodeE
+__ZN7WebCore17RenderTextControlC2EPNS_4NodeE
+__ZN7WebCore27RenderTextControlSingleLine14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore17RenderTextControl14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore17RenderTextControl15canHaveChildrenEv
+__ZN7WebCore27RenderTextControlSingleLine17updateFromElementEv
+__ZN7WebCore27RenderTextControlSingleLine21createSubtreeIfNeededEv
+__ZNK7WebCore27RenderTextControlSingleLine12inputElementEv
+__ZThn128_NK7WebCore16HTMLInputElement13isSearchFieldEv
+__ZNK7WebCore16HTMLInputElement13isSearchFieldEv
+__ZN7WebCore17RenderTextControl21createSubtreeIfNeededEPNS_23TextControlInnerElementE
+__ZN7WebCore27TextControlInnerTextElementC1EPNS_8DocumentEPNS_4NodeE
+__ZN7WebCore27TextControlInnerTextElementC2EPNS_8DocumentEPNS_4NodeE
+__ZN7WebCore23TextControlInnerElementC2EPNS_8DocumentEPNS_4NodeE
+__ZNK7WebCore27RenderTextControlSingleLine20createInnerTextStyleEPKNS_11RenderStyleE
+__ZNK7WebCore27RenderTextControlSingleLine26placeholderShouldBeVisibleEv
+__ZThn128_NK7WebCore16HTMLInputElement26placeholderShouldBeVisibleEv
+__ZNK7WebCore16HTMLInputElement26placeholderShouldBeVisibleEv
+__ZNK7WebCore17RenderTextControl20adjustInnerTextStyleEPKNS_11RenderStyleEPS1_
+__ZNK7WebCore22HTMLFormControlElement20isEnabledFormControlEv
+__ZNK7WebCore22HTMLFormControlElement8disabledEv
+__ZNK7WebCore22HTMLFormControlElement21isReadOnlyFormControlEv
+__ZN7WebCore9FontCache11getFontDataERKNS_4FontERiPNS_12FontSelectorE
+__ZN7WebCore15CSSFontSelector11getFontDataERKNS_15FontDescriptionERKNS_12AtomicStringE
+__ZN7WebCore9FontCache25getCachedFontPlatformDataERKNS_15FontDescriptionERKNS_12AtomicStringEb
+__ZN7WebCore9FontCache12platformInitEv
+__ZN3WTF9HashTableIN7WebCore24FontPlatformDataCacheKeyESt4pairIS2_PNS1_16FontPlatformDataEENS_18PairFirstExtractorIS6_EENS1_28F
+__ZN7WebCore9FontCache22createFontPlatformDataERKNS_15FontDescriptionERKNS_12AtomicStringE
+__ZN7WebCoreL18toAppKitFontWeightENS_10FontWeightE
++[WebFontCache fontWithFamily:traits:weight:size:]
++[WebFontCache internalFontWithFamily:traits:weight:size:]
+__ZL16acceptableChoicemm
+__ZNK7WebCore14SimpleFontData9isLoadingEv
+__ZNK7WebCore11RenderBlock10lineHeightEbb
+__ZN7WebCore23TextControlInnerElement18attachInnerElementEPNS_4NodeEN3WTF10PassRefPtrINS_11RenderStyleEEEPNS_11RenderArenaE
+__ZN7WebCore27TextControlInnerTextElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZNK7WebCore23TextControlInnerElement12isShadowNodeEv
+__ZN7WebCore23TextControlInnerElement16shadowParentNodeEv
+__ZNK7WebCore12RenderObject10isTextAreaEv
+__ZNK7WebCore11RenderLayer13isTransparentEv
+__ZNK7WebCore7Element19virtualNamespaceURIEv
+__ZN7WebCore11RenderLayer19dirtyNormalFlowListEv
+__ZNK7WebCore17RenderTextControl13isTextControlEv
+__ZN7WebCore9FrameView25scheduleRelayoutOfSubtreeEPNS_12RenderObjectE
+__ZN7WebCore17RenderTextControl17updateFromElementEv
+__ZNK7WebCore22HTMLFormControlElement31formControlValueMatchesRendererEv
+__ZThn128_NK7WebCore16HTMLInputElement5valueEv
+__ZNK7WebCore16HTMLInputElement5valueEv
+__ZN7WebCore17RenderTextControl17setInnerTextValueERKNS_6StringE
+__ZN7WebCore17RenderTextControl4textEv
+__ZNK7WebCore17RenderTextControl10finishTextERN3WTF6VectorItLm0EEE
+__ZN7WebCore11HTMLElement12setInnerTextERKNS_6StringERi
+__ZNK7WebCore4Node15rareDataFocusedEv
+__ZN7WebCore20StyleFlexibleBoxDataC1ERKS0_
+__ZN7WebCore20StyleFlexibleBoxDataC2ERKS0_
+__ZN7WebCore17CSSPrimitiveValue16computeLengthIntEPNS_11RenderStyleEd
+__ZNK7WebCore11RenderTheme15isControlStyledEPKNS_11RenderStyleERKNS_10BorderDataERKNS_9FillLayerERKNS_5ColorE
+__ZNK7WebCore9FillLayereqERKS0_
+__ZNK7WebCore14RenderThemeMac19adjustMenuListStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZNK7WebCore14RenderThemeMac18controlSizeForFontEPNS_11RenderStyleE
+__ZN7WebCore11RenderStyle11resetBorderEv
+__ZN7WebCoreL19menuListButtonSizesEv
+__ZNK7WebCore14RenderThemeMac15setSizeFromFontEPNS_11RenderStyleEPKNS_7IntSizeE
+__ZNK7WebCore14RenderThemeMac11sizeForFontEPNS_11RenderStyleEPKNS_7IntSizeE
+__ZNK7WebCore14RenderThemeMac22setFontFromControlSizeEPNS_16CSSStyleSelectorEPNS_11RenderStyleEm
+__ZN7WebCore10FontFamilyD2Ev
+__ZN7WebCore17HTMLSelectElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore14RenderMenuListC1EPNS_17HTMLSelectElementE
+__ZN7WebCore14RenderMenuListC2EPNS_17HTMLSelectElementE
+__ZN7WebCore17RenderFlexibleBoxC2EPNS_4NodeE
+__ZN7WebCore14RenderMenuList14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore14RenderMenuList15canHaveChildrenEv
+__ZN7WebCore14RenderMenuList18updateOptionsWidthEv
+__ZN7WebCore15toOptionElementEPNS_7ElementE
+__ZThn128_NK7WebCore17HTMLOptionElement31textIndentedToRespectGroupLabelEv
+__ZNK7WebCore17HTMLOptionElement31textIndentedToRespectGroupLabelEv
+__ZN7WebCore13OptionElement37collectOptionTextRespectingGroupLabelERKNS_17OptionElementDataEPNS_8DocumentE
+__ZN7WebCore20toOptionGroupElementEPNS_7ElementE
+__ZN7WebCore13OptionElement17collectOptionTextERKNS_17OptionElementDataEPNS_8DocumentE
+__ZNK7WebCore6String18simplifyWhiteSpaceEv
+__ZN7WebCore10StringImpl18simplifyWhiteSpaceEv
+__ZNK7WebCore11RenderTheme29popupOptionSupportsTextIndentEv
+__ZN7WebCore9FontCache24getFontDataForCharactersERKNS_4FontEPKti
+__ZNK3WTF7HashMapIiPN7WebCore13GlyphWidthMap14GlyphWidthPageENS_7IntHashIjEENS_10HashTraitsIiEENS7_IS4_EEE3getERKi
+__ZNK7WebCore17HTMLOptionElement8disabledEv
+__ZN7WebCore17HTMLOptionElement14setRenderStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
+__ZN7WebCore14RenderMenuList17updateFromElementEv
+__ZNK7WebCore17HTMLSelectElement13selectedIndexEv
+__ZN7WebCore14RenderMenuList17setTextFromOptionEi
+__ZN7WebCore14RenderMenuList7setTextERKNS_6StringE
+__ZN7WebCore14RenderMenuList8addChildEPNS_12RenderObjectES2_
+__ZN7WebCore14RenderMenuList16createInnerBlockEv
+__ZN7WebCore14RenderMenuList16adjustInnerStyleEv
+__ZNK7WebCore14RenderThemeMac24popupInternalPaddingLeftEPNS_11RenderStyleE
+__ZNK7WebCore14RenderThemeMac18popupButtonPaddingEm
+__ZNK7WebCore14RenderThemeMac25popupInternalPaddingRightEPNS_11RenderStyleE
+__ZNK7WebCore14RenderThemeMac23popupInternalPaddingTopEPNS_11RenderStyleE
+__ZNK7WebCore14RenderThemeMac26popupInternalPaddingBottomEPNS_11RenderStyleE
+__ZN7WebCore9PopupMenu29itemWritingDirectionIsNaturalEv
+__ZN7WebCore10StringImpl23defaultWritingDirectionEv
+__ZThn128_NK7WebCore16HTMLInputElement17isInputTypeHiddenEv
+__ZN7WebCoreL21convertNSColorToColorEP7NSColor
+__ZNK7WebCore8ThemeMac13controlBorderENS_11ControlPartERKNS_4FontERKNS_9LengthBoxEf
+__ZNK7WebCore5Theme13controlBorderENS_11ControlPartERKNS_4FontERKNS_9LengthBoxEf
+__ZNK7WebCore8ThemeMac14controlPaddingENS_11ControlPartERKNS_4FontERKNS_9LengthBoxEf
+__ZNK7WebCore8ThemeMac28controlRequiresPreWhiteSpaceENS_11ControlPartE
+__ZNK7WebCore8ThemeMac11controlSizeENS_11ControlPartERKNS_4FontERKNS_10LengthSizeEf
+__ZN7WebCoreL11buttonSizesEv
+__ZN7WebCoreL12sizeFromFontERKNS_4FontERKNS_10LengthSizeEfPKNS_7IntSizeE
+__ZN7WebCoreL18controlSizeForFontERKNS_4FontE
+__ZNK7WebCore8ThemeMac18minimumControlSizeENS_11ControlPartERKNS_4FontEf
+__ZNK7WebCore8ThemeMac11controlFontENS_11ControlPartERKNS_4FontEf
+__ZN7WebCore12RenderButtonC1EPNS_4NodeE
+__ZN7WebCore12RenderButtonC2EPNS_4NodeE
+__ZN7WebCore12RenderButton15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore12RenderButton14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore12RenderButton15canHaveChildrenEv
+__ZNK7WebCore11RenderTheme9isDefaultEPKNS_12RenderObjectE
+__ZN7WebCore12RenderButton17updateFromElementEv
+__ZNK7WebCore16HTMLInputElement16valueWithDefaultEv
+__ZN7WebCore12RenderButton7setTextERKNS_6StringE
+__ZN7WebCore18RenderTextFragmentC1EPNS_4NodeEPNS_10StringImplE
+__ZN7WebCore18RenderTextFragmentC2EPNS_4NodeEPNS_10StringImplE
+__ZN7WebCore12RenderButton8addChildEPNS_12RenderObjectES2_
+__ZN7WebCore12RenderButton15setupInnerStyleEPNS_11RenderStyleE
+__ZNK7WebCore11RenderTheme24buttonInternalPaddingTopEv
+__ZNK7WebCore11RenderTheme26buttonInternalPaddingRightEv
+__ZNK7WebCore11RenderTheme27buttonInternalPaddingBottomEv
+__ZNK7WebCore11RenderTheme25buttonInternalPaddingLeftEv
+__ZN7WebCore22StyleRareInheritedDataD1Ev
+__ZN7WebCore22StyleRareInheritedDataD2Ev
+__ZN7WebCore25StyleRareNonInheritedDataD1Ev
+__ZN7WebCore25StyleRareNonInheritedDataD2Ev
+__ZN7WebCore12RenderObject17updateFromElementEv
+__ZNK7WebCore18NamedMappedAttrMap14mapsEquivalentEPKS0_
+__ZNK7WebCore18NamedMappedAttrMap9declCountEv
+__ZN7WebCore8Document18minimumLayoutDelayEv
+__ZNK7WebCore8Document11elapsedTimeEv
+__ZN7WebCore13HTMLTokenizer35executeScriptsWaitingForStylesheetsEv
+__ZN3WTF6VectorIPN7WebCore20CachedResourceClientELm0EE6shrinkEm
+__ZN7WebCore14CachedResource6finishEv
+__ZN7WebCore7RequestD1Ev
+__ZN7WebCore7RequestD2Ev
+__ZN7WebCore11FrameLoader8loadDoneEv
+__ZN7WebCore9DocLoader23checkForPendingPreloadsEv
+__ZN7WebCore14DocumentLoader23removeSubresourceLoaderEPNS_14ResourceLoaderE
+__ZN7WebCore17SubresourceLoaderD0Ev
+__ZN7WebCore11CachedImage4dataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
+__ZN7WebCore11CachedImage23maximumDecodedImageSizeEv
+__ZNK7WebCore11CachedImage9imageSizeEf
+__ZNK7WebCore11BitmapImage4sizeEv
+__ZNK7WebCore11ImageSource4sizeEv
+__ZNK7WebCore11ImageSource16frameSizeAtIndexEm
+__ZN7WebCore11CachedImage15notifyObserversEPKNS_7IntRectE
+__ZN7WebCore12RenderObject12imageChangedEPNS_11CachedImageEPKNS_7IntRectE
+__ZN7WebCore11RenderImage12imageChangedEPvPKNS_7IntRectE
+__ZNK7WebCore11RenderImage8imagePtrEv
+__ZNK7WebCore11RenderImage13errorOccurredEv
__ZNK7WebCore14RenderReplaced13intrinsicSizeEv
+__ZNK7WebCore11RenderImage9imageSizeEf
__ZN7WebCore14RenderReplaced16setIntrinsicSizeERKNS_7IntSizeE
-__ZNK7WebCore11CachedImage9imageSizeEv
+__ZNK7WebCore12RenderObject15containingBlockEv
+__ZNK7WebCore12RenderObject7isMediaEv
+__ZNK7WebCore12RenderObject14isSVGContainerEv
__ZN7WebCore9RenderBox9calcWidthEv
__ZNK7WebCore9FrameView10layoutRootEb
-__ZNK7WebCore9FrameView13layoutPendingEv
__ZNK7WebCore12RenderObject13isFlexibleBoxEv
__ZNK7WebCore9RenderBox29shouldCalculateSizeAsReplacedEv
__ZNK7WebCore12RenderObject26isInlineBlockOrInlineTableEv
-__ZNK7WebCore11RenderImage17calcReplacedWidthEv
+__ZNK7WebCore11RenderImage17calcReplacedWidthEb
+__ZNK7WebCore11RenderImage21imageHasRelativeWidthEv
__ZNK7WebCore11CachedImage21imageHasRelativeWidthEv
+__ZNK7WebCore5Image16hasRelativeWidthEv
__ZNK7WebCore11RenderImage16isWidthSpecifiedEv
__ZNK7WebCore9RenderBox22calcReplacedWidthUsingENS_6LengthE
__ZNK7WebCore9RenderBox19calcContentBoxWidthEi
-__ZNK7WebCore9RenderBox20containingBlockWidthEv
-__ZNK7WebCore12RenderObject19shrinkToAvoidFloatsEv
+__ZNK7WebCore9RenderBox30containingBlockWidthForContentEv
+__ZNK7WebCore9RenderBox19shrinkToAvoidFloatsEv
__ZNK7WebCore12RenderObject13isHTMLMarqueeEv
__ZNK7WebCore11RenderBlock14availableWidthEv
-__ZNK7WebCore12RenderObject11clientWidthEv
-__ZNK7WebCore9RenderBox5widthEv
-__ZNK7WebCore15RenderTableCell10borderLeftEv
-__ZNK7WebCore15RenderTableCell11borderRightEv
-__ZNK7WebCore12RenderObject22verticalScrollbarWidthEv
-__ZNK7WebCore12RenderObject11paddingLeftEv
-__ZNK7WebCore12RenderObject12paddingRightEv
+__ZNK7WebCore9RenderBox11clientWidthEv
+__ZNK7WebCore20RenderBoxModelObject10borderLeftEv
+__ZNK7WebCore20RenderBoxModelObject11borderRightEv
+__ZNK7WebCore9RenderBox22verticalScrollbarWidthEv
+__ZNK7WebCore20RenderBoxModelObject11paddingLeftEb
+__ZNK7WebCore20RenderBoxModelObject12paddingRightEb
__ZNK7WebCore9RenderBox12minPrefWidthEv
__ZN7WebCore11RenderImage14calcPrefWidthsEv
-__ZNK7WebCore12RenderObject10borderLeftEv
-__ZNK7WebCore12RenderObject11borderRightEv
__ZN7WebCore9RenderBox10calcHeightEv
__ZN7WebCore9RenderBox19calcVerticalMarginsEv
__ZNK7WebCore11RenderImage18calcReplacedHeightEv
__ZNK7WebCore11RenderImage17isHeightSpecifiedEv
__ZNK7WebCore9RenderBox23calcReplacedHeightUsingENS_6LengthE
__ZNK7WebCore9RenderBox20calcContentBoxHeightEi
-__ZNK7WebCore12RenderObject9borderTopEv
-__ZNK7WebCore12RenderObject12borderBottomEv
-__ZNK7WebCore12RenderObject10paddingTopEv
-__ZNK7WebCore12RenderObject13paddingBottomEv
-__ZN3WTF6VectorIPN7WebCore20CachedResourceClientELm0EE6shrinkEm
+__ZNK7WebCore20RenderBoxModelObject9borderTopEv
+__ZNK7WebCore20RenderBoxModelObject12borderBottomEv
+__ZNK7WebCore20RenderBoxModelObject10paddingTopEb
+__ZNK7WebCore20RenderBoxModelObject13paddingBottomEb
+__ZN7WebCore20CachedResourceClient12imageChangedEPNS_11CachedImageEPKNS_7IntRectE
+-[WebCoreSharedBufferData dealloc]
+-[WebCoreSharedBufferData .cxx_destruct]
+__ZNK7WebCore9RenderBox12clientHeightEv
+__ZNK7WebCore9RenderBox25horizontalScrollbarHeightEv
+__ZN7WebCore12RenderObject16repaintRectangleERKNS_7IntRectEb
+__ZNK7WebCore12RenderObject11isBlockFlowEv
+__ZN7WebCore12RenderInline21computeRectForRepaintEPNS_20RenderBoxModelObjectERNS_7IntRectEb
__ZN7WebCore11CachedImage11checkNotifyEv
+__ZN7WebCore11RenderImage14notifyFinishedEPNS_14CachedResourceE
__ZN7WebCore15HTMLImageLoader14notifyFinishedEPNS_14CachedResourceE
-__ZN7WebCore8Document26dispatchImageLoadEventSoonEPNS_15HTMLImageLoaderE
-__ZN7WebCore20CachedResourceClient14notifyFinishedEPNS_14CachedResourceE
-__ZN7WebCore11FrameLoader8loadDoneEv
-__ZN7WebCore5Cache6removeEPNS_14CachedResourceE
-__ZN7WebCore5Cache34removeFromLiveDecodedResourcesListEPNS_14CachedResourceE
-__ZNK7WebCore9DocLoader20removeCachedResourceEPNS_14CachedResourceE
-__ZN7WebCore7RequestD2Ev
-__ZN7WebCore14DocumentLoader23removeSubresourceLoaderEPNS_14ResourceLoaderE
-__ZN7WebCore14ResourceLoader7didFailERKNS_13ResourceErrorE
-__ZN7WebCore11FrameLoader13didFailToLoadEPNS_14ResourceLoaderERKNS_13ResourceErrorE
-__ZNK7WebCore13ResourceErrorcvP7NSErrorEv
-__ZN7WebCore9RenderBox12imageChangedEPNS_11CachedImageE
-__ZNK7WebCore12RenderObject12avoidsFloatsEv
-__ZNK7WebCore9RenderBox28stretchesToMinIntrinsicWidthEv
-__ZN7WebCore9RenderBox21calcHorizontalMarginsERKNS_6LengthES3_i
-__ZNK7WebCore11CachedImage22usesImageContainerSizeEv
-__ZNK7WebCore11RenderImage20calcAspectRatioWidthEv
-__ZNK7WebCore11CachedImage22imageHasRelativeHeightEv
-__ZNK7WebCore11RenderImage21calcAspectRatioHeightEv
-__ZNK7WebCore9Tokenizer10wellFormedEv
-__ZN7WebCore8Document26dispatchImageLoadEventsNowEv
-__ZN7WebCore9TimerBase10heapPopMinEv
-__ZSt13__adjust_heapIN7WebCore17TimerHeapIteratorEiNS0_16TimerHeapElementEEvT_T0_S4_T1_
-__ZN3WTF6VectorIPN7WebCore9TimerBaseELm0EE6shrinkEm
-__ZN7WebCore21DeprecatedPtrListImpl6assignERKS0_b
-__ZN7WebCore21DeprecatedPtrListImpl4swapERS0_
-__ZN7WebCore15HTMLImageLoader17dispatchLoadEventEv
-__ZN7WebCore15EventTargetNode17dispatchHTMLEventERKNS_12AtomicStringEbb
-__ZN7WebCore8KJSProxy17finishedWithEventEPNS_5EventE
-__ZN3KJS17ScriptInterpreter15forgetDOMObjectEPv
-__ZN3KJS10domObjectsEv
-__ZN3WTF7HashMapIPvPN3KJS9DOMObjectENS_7PtrHashIS1_EENS_10HashTraitsIS1_EENS7_IS4_EEE4takeERKS1_
-__ZThn36_N7WebCore16HTMLInputElement23preDispatchEventHandlerEPNS_5EventE
-__ZN7WebCore16HTMLInputElement23preDispatchEventHandlerEPNS_5EventE
-__ZN7WebCore15HTMLFormElement17handleLocalEventsEPNS_5EventEb
-__ZThn36_N7WebCore15EventTargetNode6toNodeEv
-__ZN7WebCore15EventTargetNode6toNodeEv
-__ZThn36_N7WebCore16HTMLInputElement24postDispatchEventHandlerEPNS_5EventEPv
-__ZN7WebCore16HTMLInputElement24postDispatchEventHandlerEPNS_5EventEPv
-__ZN7WebCore16HTMLInputElement19defaultEventHandlerEPNS_5EventE
-__ZNK7WebCore5Event12isMouseEventEv
-__ZNK7WebCore5Event25isBeforeTextInsertedEventEv
-__ZN7WebCore11FrameLoader19handledOnloadEventsEv
+__ZN7WebCore11ImageLoader14notifyFinishedEPNS_14CachedResourceE
+__ZN7WebCoreL15loadEventSenderEv
+__ZN7WebCore20ImageLoadEventSenderC1Ev
+__ZN7WebCore20ImageLoadEventSenderC2Ev
+__ZN7WebCore20ImageLoadEventSender21dispatchLoadEventSoonEPNS_11ImageLoaderE
+__ZN3WTF6VectorIPN7WebCore11ImageLoaderELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore11ImageLoaderELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore11ImageLoaderELm0EE15reserveCapacityEm
+__ZN7WebCore5TimerINS_9FrameViewEE5firedEv
+__ZN7WebCore9FrameView16layoutTimerFiredEPNS_5TimerIS0_EE
__ZN7WebCore9FrameView6layoutEb
-__ZN7WebCore15stopSharedTimerEv
+__ZNK7WebCore16CSSStyleSelector24affectedByViewportChangeEv
__ZNK7WebCore5Frame18needsReapplyStylesEv
__ZN7WebCore5Frame13reapplyStylesEv
__ZN7WebCore5Frame17setUserStyleSheetERKNS_6StringE
__ZN7WebCore8Document17setUserStyleSheetERKNS_6StringE
-__ZN7WebCore4Node11recalcStyleENS0_11StyleChangeE
-__ZN7WebCore10RenderText7setTextEN3WTF10PassRefPtrINS_10StringImplEEEb
+__ZN7WebCore11CSSRuleDataD2Ev
+__ZNK7WebCore19StyleBackgroundDataeqERKS0_
+__ZNK7WebCore17StyleSurroundDataeqERKS0_
+__ZN7WebCore15StyleVisualDataD1Ev
+__ZNK7WebCore25StyleRareNonInheritedDataeqERKS0_
+__ZN3WTFeqIN7WebCore20StyleDashboardRegionELm0EEEbRKNS_6VectorIT_XT0_EEES7_
+__ZNK7WebCore25StyleRareNonInheritedData20shadowDataEquivalentERKS0_
+__ZNK7WebCore25StyleRareNonInheritedData24reflectionDataEquivalentERKS0_
+__ZNK7WebCore25StyleRareNonInheritedData23animationDataEquivalentERKS0_
+__ZNK7WebCore25StyleRareNonInheritedData24transitionDataEquivalentERKS0_
+__ZNK7WebCore22StyleRareInheritedDataeqERKS0_
+__ZNK7WebCore22StyleRareInheritedData20shadowDataEquivalentERKS0_
+__ZNK7WebCore20StyleFlexibleBoxDataeqERKS0_
__ZN7WebCore9FrameView23applyOverflowToViewportEPNS_12RenderObjectERNS_13ScrollbarModeES4_
-__ZNK7WebCore10ScrollView14vScrollbarModeEv
-__ZNK7WebCore6Widget6heightEv
-__ZNK7WebCore6Widget13frameGeometryEv
+__ZNK7WebCore6Widget9frameRectEv
__ZNK7WebCore6Widget12getOuterViewEv
-__ZN7WebCore16enclosingIntRectERK7_NSRect
-__ZNK7WebCore6Widget5widthEv
-__ZN7WebCore10ScrollView17setVScrollbarModeENS_13ScrollbarModeE
-__ZN7WebCore10ScrollView17setHScrollbarModeENS_13ScrollbarModeE
-__ZNK7WebCore10ScrollView13visibleHeightEv
-__ZNK7WebCore10ScrollView12visibleWidthEv
-__ZN7WebCore9FrameView20pauseScheduledEventsEv
+__ZN7WebCore10ScrollView25platformSetScrollbarModesEv
+__ZNK7WebCore10ScrollView12layoutHeightEv
+__ZNK7WebCore10ScrollView11layoutWidthEv
+__ZN7WebCore9FrameView21beginDeferredRepaintsEv
__ZN7WebCore10RenderView6layoutEv
-__ZN7WebCore12RenderObject19setChildNeedsLayoutEbb
+__ZNK7WebCore10RenderView9viewWidthEv
+__ZNK7WebCore10ScrollView14useFixedLayoutEv
__ZN7WebCore11RenderBlock6layoutEv
__ZN7WebCore11RenderBlock11layoutBlockEb
__ZN7WebCore11RenderBlock27layoutOnlyPositionedObjectsEv
-__ZNK7WebCore12RenderObject27checkForRepaintDuringLayoutEv
-__ZNK7WebCore9FrameView16needsFullRepaintEv
__ZNK7WebCore11RenderBlock18desiredColumnWidthEv
__ZN7WebCore10RenderView9calcWidthEv
__ZN7WebCore11RenderBlock15calcColumnWidthEv
__ZN7WebCore11RenderBlock29setDesiredColumnCountAndWidthEii
__ZN7WebCore11RenderBlock11clearFloatsEv
__ZNK7WebCore11RenderBlock12avoidsFloatsEv
+__ZNK7WebCore9RenderBox12avoidsFloatsEv
__ZNK7WebCore12RenderObject4isHREv
__ZN7WebCore11RenderBlock19layoutBlockChildrenEbRi
-__ZNK7WebCore12RenderObject25horizontalScrollbarHeightEv
+__ZN7WebCore11RenderBlock10MarginInfoC1EPS0_ii
__ZN7WebCore11RenderBlock10MarginInfoC2EPS0_ii
__ZN7WebCore11RenderBlock12layoutLegendEb
__ZNK7WebCore9RenderBox9marginTopEv
-__ZN7WebCore11RenderBlock18handleSpecialChildEPNS_12RenderObjectERKNS0_10MarginInfoERNS0_11CompactInfoERb
-__ZN7WebCore11RenderBlock21handlePositionedChildEPNS_12RenderObjectERKNS0_10MarginInfoERb
-__ZN7WebCore11RenderBlock19handleFloatingChildEPNS_12RenderObjectERKNS0_10MarginInfoERb
-__ZN7WebCore11RenderBlock18handleCompactChildEPNS_12RenderObjectERNS0_11CompactInfoERb
-__ZN7WebCore11RenderBlock16handleRunInChildEPNS_12RenderObjectERb
-__ZN7WebCore11RenderBlock24estimateVerticalPositionEPNS_12RenderObjectERKNS0_10MarginInfoE
-__ZN7WebCore9RenderBox6setPosEii
+__ZN7WebCore11RenderBlock18handleSpecialChildEPNS_9RenderBoxERKNS0_10MarginInfoERb
+__ZN7WebCore11RenderBlock21handlePositionedChildEPNS_9RenderBoxERKNS0_10MarginInfoERb
+__ZN7WebCore11RenderBlock19handleFloatingChildEPNS_9RenderBoxERKNS0_10MarginInfoERb
+__ZN7WebCore11RenderBlock16handleRunInChildEPNS_9RenderBoxERb
+__ZN7WebCore11RenderBlock24estimateVerticalPositionEPNS_9RenderBoxERKNS0_10MarginInfoE
+__ZN7WebCore11RenderBlock13getClearDeltaEPNS_9RenderBoxEi
__ZNK7WebCore11RenderBlock11floatBottomEv
__ZN7WebCore9RenderBox14calcWidthUsingENS_9WidthTypeEi
__ZNK7WebCore9RenderBox21sizesToIntrinsicWidthENS_9WidthTypeE
__ZNK7WebCore11RenderBlock26isInlineBlockOrInlineTableEv
__ZNK7WebCore9RenderBox18calcBorderBoxWidthEi
+__ZNK7WebCore9RenderBox28stretchesToMinIntrinsicWidthEv
__ZNK7WebCore11RenderBlock12maxTopMarginEb
-__ZNK7WebCore11RenderTable12avoidsFloatsEv
-__ZN7WebCore11RenderTable6layoutEv
-__ZN7WebCore11RenderTable9calcWidthEv
-__ZN7WebCore11RenderTable14calcPrefWidthsEv
-__ZN7WebCore11RenderTable23recalcHorizontalBordersEv
-__ZNK7WebCore11RenderTable14calcBorderLeftEv
-__ZNK7WebCore11RenderTable15calcBorderRightEv
-__ZN7WebCore15AutoTableLayout14calcPrefWidthsERiS1_
-__ZN7WebCore15AutoTableLayout10fullRecalcEv
-__ZN3WTF6VectorIN7WebCore15AutoTableLayout6LayoutELm4EE6resizeEm
-__ZN3WTF6VectorIN7WebCore15AutoTableLayout6LayoutELm4EE4fillERKS3_m
-__ZSt4fillIPN7WebCore15AutoTableLayout6LayoutES2_EvT_S4_RKT0_
-__ZN3WTF6VectorIPN7WebCore15RenderTableCellELm4EE4fillERKS3_m
-__ZSt4fillIPPN7WebCore15RenderTableCellES2_EvT_S4_RKT0_
-__ZN7WebCore15AutoTableLayout12recalcColumnEi
-__ZN7WebCore15RenderTableCell14calcPrefWidthsEv
-__ZN7WebCore11RenderBlock14calcPrefWidthsEv
-__ZN7WebCore11RenderBlock20calcInlinePrefWidthsEv
-__ZNK7WebCore11RenderTable10borderLeftEv
-__ZNK7WebCore11RenderTable11borderRightEv
-__ZN7WebCore20InlineMinMaxIterator4nextEv
-__ZNK7WebCore12RenderObject12isInlineFlowEv
-__ZNK7WebCore12RenderObject14isRenderInlineEv
-__ZNK7WebCore9RenderBox12maxPrefWidthEv
-__ZNK7WebCore15RenderTableCell15styleOrColWidthEv
-__ZN7WebCore11RenderBlock19calcBlockPrefWidthsEv
-__ZN7WebCore15AutoTableLayout18calcEffectiveWidthEv
-__ZN7WebCore15AutoTableLayout6layoutEv
-__ZN7WebCore11RenderTable13setCellWidthsEv
-__ZN7WebCore18RenderTableSection13setCellWidthsEv
-__ZN7WebCore15RenderTableCell8setWidthEi
-__ZN7WebCore15RenderContainer6layoutEv
-__ZN7WebCore14RenderTableRow6layoutEv
-__ZN7WebCore15RenderTableCell6layoutEv
-__ZNK7WebCore15RenderTableCell4yPosEv
-__ZN7WebCore15RenderTableCell9calcWidthEv
+__ZN7WebCore9RenderBox21calcHorizontalMarginsERKNS_6LengthES3_i
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore11RenderBlock14FloatingObjectEKNS_7HashMapIPNS1_12RenderObjectES4_NS_7PtrHashIS7_EENS_
+__ZN7WebCore11RenderBlock29markLinesDirtyInVerticalRangeEii
__ZN7WebCore11RenderBlock20layoutInlineChildrenEbRiS1_
-__ZNK7WebCore15RenderTableCell9borderTopEv
-__ZNK7WebCore15RenderTableCell12borderBottomEv
-__ZN7WebCore9bidiFirstEPNS_11RenderBlockERNS_12BidiResolverINS_12BidiIteratorENS_7BidiRunEEEb
+__ZN7WebCoreL9bidiFirstEPNS_11RenderBlockEPNS_12BidiResolverINS_14InlineIteratorENS_7BidiRunEEEb
+__ZNK7WebCore9RenderBox12marginBottomEv
+__ZNK7WebCore9RenderBox10marginLeftEv
+__ZNK7WebCore9RenderBox11marginRightEv
+__ZN3WTF6VectorIN7WebCore11RenderBlock13FloatWithRectELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIN7WebCore11RenderBlock13FloatWithRectELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore11RenderBlock13FloatWithRectELm0EE15reserveCapacityEm
+__ZN7WebCore9RenderBox14dirtyLineBoxesEb
__ZN7WebCore14RenderReplaced6layoutEv
+__ZNK7WebCore12RenderObject27checkForRepaintDuringLayoutEv
__ZNK7WebCore11RenderImage21minimumReplacedHeightEv
-__ZN7WebCore14RenderReplaced26adjustOverflowForBoxShadowEv
-__ZN7WebCore8bidiNextEPNS_11RenderBlockEPNS_12RenderObjectERNS_12BidiResolverINS_12BidiIteratorENS_7BidiRunEEEbPb
-__ZN7WebCore11RenderBlock22determineStartPositionEbRNS_12BidiIteratorERNS_12BidiResolverIS1_NS_7BidiRunEEE
-__ZN7WebCore11RenderBlock17findNextLineBreakERNS_12BidiIteratorERNS_12BidiResolverIS1_NS_7BidiRunEEE
-__ZN7WebCore11RenderBlock14skipWhitespaceERNS_12BidiIteratorERNS_12BidiResolverIS1_NS_7BidiRunEEE
-__ZNK7WebCore11RenderBlock9lineWidthEi
+__ZN7WebCore14RenderReplaced36adjustOverflowForBoxShadowAndReflectEv
+__ZNK7WebCore12RenderObject9isCounterEv
+__ZN7WebCore10RenderText14dirtyLineBoxesEb
+__ZN7WebCore10RenderText15deleteTextBoxesEv
+__ZN7WebCore11RenderBlock22determineStartPositionERbS1_RNS_12BidiResolverINS_14InlineIteratorENS_7BidiRunEEERN3WTF6VectorINS0_1
+__ZN7WebCore11BidiContext6createEhN3WTF7Unicode9DirectionEbPS0_
+__ZN7WebCore12BidiResolverINS_14InlineIteratorENS_7BidiRunEE23commitExplicitEmbeddingEv
+__ZN3WTF6VectorINS_7Unicode9DirectionELm8EE14shrinkCapacityEm
+__ZN7WebCore11RenderBlock17findNextLineBreakERNS_12BidiResolverINS_14InlineIteratorENS_7BidiRunEEEbPNS_6EClearE
+__ZN7WebCore11RenderBlock21skipLeadingWhitespaceERNS_12BidiResolverINS_14InlineIteratorENS_7BidiRunEEEb
+__ZNK7WebCore11RenderBlock9lineWidthEib
__ZNK7WebCore11RenderBlock11rightOffsetEv
__ZNK7WebCore11RenderBlock14rightRelOffsetEiibPi
__ZNK7WebCore11RenderBlock10leftOffsetEv
__ZNK7WebCore11RenderBlock13leftRelOffsetEiibPi
-__ZN7WebCore11RenderBlock20insertFloatingObjectEPNS_12RenderObjectE
-__ZNK7WebCore9RenderBox10marginLeftEv
-__ZNK7WebCore9RenderBox11marginRightEv
-__ZN7WebCore11RenderBlock17positionNewFloatsEv
-__ZN7WebCore21DeprecatedPtrListImpl4lastEv
-__ZNK7WebCore21DeprecatedPtrListImpl7getPrevEv
-__ZNK7WebCore9RenderBox12marginBottomEv
-__ZN7WebCore21DeprecatedPtrListImpl4nextEv
-__ZN7WebCore12BidiResolverINS_12BidiIteratorENS_7BidiRunEE10deleteRunsEv
-__ZN7WebCore11RenderBlock21checkLinesForOverflowEv
-__ZNK7WebCore11RenderBlock14hasLineIfEmptyEv
-__ZNK7WebCore11HTMLElement17isContentEditableEv
-__ZNK7WebCore5Frame17isContentEditableEv
-__ZNK7WebCore6Editor16clientIsEditableEv
-__ZNK7WebCore8Document12inDesignModeEv
-__ZNK7WebCore8Document14parentDocumentEv
-__ZN7WebCore11RenderBlock13layoutColumnsEi
-__ZN7WebCore11RenderBlock20hasOverhangingFloatsEv
-__ZNK7WebCore15RenderTableCell33expandsToEncloseOverhangingFloatsEv
-__ZNK7WebCore12RenderObject14hasControlClipEv
-__ZNK7WebCore11RenderBlock9floatRectEv
-__ZNK7WebCore14RenderReplaced12overflowRectEb
-__ZNK7WebCore9RenderBox9borderBoxEv
-__ZN7WebCore7IntRect5uniteERKS0_
-__ZN7WebCore11RenderBlock17addVisualOverflowERKNS_7IntRectE
-__ZN7WebCore11RenderBlock23layoutPositionedObjectsEb
-__ZN7WebCore11RenderBlock18positionListMarkerEv
-__ZN7WebCore9RenderBox14dirtyLineBoxesEbb
-__ZNK7WebCore12BidiIterator7currentEv
-__ZN7WebCore11inlineWidthEPNS_12RenderObjectEbb
-__ZN7WebCore11RenderBlock15bidiReorderLineERKNS_12BidiIteratorES3_RNS_12BidiResolverIS1_NS_7BidiRunEEE
-__ZN7WebCore12BidiResolverINS_12BidiIteratorENS_7BidiRunEE21createBidiRunsForLineERKS1_S5_bb
-__ZN7WebCore12BidiResolverINS_12BidiIteratorENS_7BidiRunEE9appendRunEv
+__ZN7WebCoreL11inlineWidthEPNS_12RenderObjectEbb
+__ZNK7WebCore4Font12isFixedPitchEv
+__ZNK7WebCore16FontFallbackList14determinePitchEPKNS_4FontE
+__ZNK7WebCore10RenderText11isWordBreakEv
+__ZNK7WebCore10RenderText5widthEjjRKNS_4FontEiPN3WTF7HashSetIPKNS_14SimpleFontDataENS4_7PtrHashIS8_EENS4_10HashTraitsIS8_EEEE
+__ZNK7WebCore10RenderText12maxPrefWidthEv
+__ZN7WebCore10RenderText14calcPrefWidthsEi
+__ZN7WebCore10RenderText14calcPrefWidthsEiRN3WTF7HashSetIPKNS_14SimpleFontDataENS1_7PtrHashIS5_EENS1_10HashTraitsIS5_EEEE
+__ZN7WebCore21nextBreakablePositionEPKtiib
+__ZN3WTF9HashTableIPKN7WebCore14SimpleFontDataES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E15deall
+__ZN7WebCoreL14checkMidpointsERNS_14InlineIteratorE
+__ZN7WebCoreL11addMidpointERKNS_14InlineIteratorE
+__ZN3WTF6VectorIN7WebCore14InlineIteratorELm0EE4growEm
+__ZN3WTF6VectorIN7WebCore14InlineIteratorELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore14InlineIteratorELm0EE15reserveCapacityEm
+__ZN7WebCore11RenderBlock15bidiReorderLineERNS_12BidiResolverINS_14InlineIteratorENS_7BidiRunEEERKS2_
+__ZN7WebCore12BidiResolverINS_14InlineIteratorENS_7BidiRunEE21createBidiRunsForLineERKS1_bb
+__ZN7WebCore12BidiResolverINS_14InlineIteratorENS_7BidiRunEE9appendRunEv
__ZNK7WebCore12RenderObject6lengthEv
-__ZN7WebCore19appendRunsForObjectEiiPNS_12RenderObjectERNS_12BidiResolverINS_12BidiIteratorENS_7BidiRunEEE
+__ZN7WebCoreL19appendRunsForObjectEiiPNS_12RenderObjectERNS_12BidiResolverINS_14InlineIteratorENS_7BidiRunEEE
__ZN7WebCore7BidiRunnwEmPNS_11RenderArenaE
-__ZN7WebCore11RenderBlock13constructLineERKNS_12BidiIteratorES3_
-__ZN7WebCore12RenderObject15createInlineBoxEbbb
+__ZNK7WebCore10RenderText6lengthEv
+__ZN7WebCore11RenderBlock13constructLineEjPNS_7BidiRunES2_bbPNS_12RenderObjectE
+__ZN7WebCore9RenderBox15createInlineBoxEv
__ZN7WebCore9InlineBoxnwEmPNS_11RenderArenaE
-__ZN7WebCore11RenderBlock15createLineBoxesEPNS_12RenderObjectE
-__ZN7WebCore10RenderFlow15createInlineBoxEbbb
+__ZN7WebCore11RenderBlock15createLineBoxesEPNS_12RenderObjectEb
+__ZN7WebCore11RenderBlock19createRootInlineBoxEv
+__ZN7WebCore11RenderBlock13createRootBoxEv
+__ZN7WebCore17RenderLineBoxList13appendLineBoxEPNS_13InlineFlowBoxE
__ZN7WebCore13InlineFlowBox9addToLineEPNS_9InlineBoxE
-__ZNK7WebCore9InlineBox6isTextEv
-__ZNK7WebCore14RenderReplaced14selectionStateEv
__ZN7WebCore9InlineBox15isInlineTextBoxEv
__ZN7WebCore13InlineFlowBox28determineSpacingForFlowBoxesEbPNS_12RenderObjectE
-__ZN7WebCore9InlineBox15isInlineFlowBoxEv
+__ZNK7WebCore9InlineBox15isInlineFlowBoxEv
__ZN7WebCore13InlineFlowBox14setConstructedEv
__ZN7WebCore9InlineBox14setConstructedEv
-__ZN7WebCore11RenderBlock33computeHorizontalPositionsForLineEPNS_13RootInlineBoxEb
+__ZN7WebCore11RenderBlock33computeHorizontalPositionsForLineEPNS_13RootInlineBoxEbPNS_7BidiRunES4_b
__ZN7WebCore13InlineFlowBox19getFlowSpacingWidthEv
-__ZN7WebCore13InlineFlowBox23marginBorderPaddingLeftEv
-__ZN7WebCore13InlineFlowBox10marginLeftEv
-__ZN7WebCore13InlineFlowBox24marginBorderPaddingRightEv
-__ZN7WebCore13InlineFlowBox11marginRightEv
__ZNK7WebCore9InlineBox11isLineBreakEv
__ZN7WebCore13InlineFlowBox22placeBoxesHorizontallyEiRiS1_Rb
__ZNK7WebCore14RenderReplaced12overflowLeftEb
__ZNK7WebCore14RenderReplaced13overflowWidthEb
-__ZN7WebCore11RenderBlock31computeVerticalPositionsForLineEPNS_13RootInlineBoxE
-__ZN7WebCore13InlineFlowBox20verticallyAlignBoxesERi
+__ZN7WebCore11RenderBlock31computeVerticalPositionsForLineEPNS_13RootInlineBoxEPNS_7BidiRunE
+__ZN7WebCore13InlineFlowBox20verticallyAlignBoxesEi
__ZN7WebCore13InlineFlowBox24computeLogicalBoxHeightsERiS1_S1_S1_b
-__ZN7WebCore13RootInlineBox15isRootInlineBoxEv
+__ZNK7WebCore13RootInlineBox15isRootInlineBoxEv
__ZNK7WebCore11RenderBlock16baselinePositionEbb
__ZNK7WebCore12RenderObject16baselinePositionEbb
__ZNK7WebCore14RenderReplaced10lineHeightEbb
__ZNK7WebCore14RenderReplaced16baselinePositionEbb
-__ZNK7WebCore12RenderObject20verticalPositionHintEb
-__ZNK7WebCore12RenderObject19getVerticalPositionEb
+__ZNK7WebCore20RenderBoxModelObject16verticalPositionEb
__ZN7WebCore13InlineFlowBox20placeBoxesVerticallyEiiibRiS1_S1_S1_
__ZNK7WebCore14RenderReplaced11overflowTopEb
__ZNK7WebCore14RenderReplaced14overflowHeightEb
+__ZNK7WebCore9InlineBox6heightEv
__ZN7WebCore13RootInlineBox28setVerticalOverflowPositionsEii
__ZN7WebCore13RootInlineBox8OverflownwEmPNS_11RenderArenaE
__ZN7WebCore13RootInlineBox29setVerticalSelectionPositionsEii
-__ZN7WebCore13InlineFlowBox29shrinkBoxesWithNoTextChildrenEii
-__ZN7WebCore13RootInlineBox14bottomOverflowEv
-__ZN7WebCore9RenderBox8positionEPNS_9InlineBoxE
+__ZNK7WebCore13RootInlineBox14bottomOverflowEv
+__ZN7WebCore9RenderBox15positionLineBoxEPNS_9InlineBoxE
__ZN7WebCore13RootInlineBox36computePerCharacterLayoutInformationEv
-__ZN7WebCore7BidiRun7destroyEPNS_11RenderArenaE
+__ZN7WebCore12BidiResolverINS_14InlineIteratorENS_7BidiRunEE10deleteRunsEv
+__ZN7WebCore7BidiRun7destroyEv
__ZN7WebCore7BidiRundlEPvm
__ZN7WebCore13RootInlineBox16setLineBreakInfoEPNS_12RenderObjectEjRKNS_10BidiStatusE
-__ZN7WebCore11RenderBlock7newLineEv
-__ZN7WebCore13RootInlineBox12leftOverflowEv
-__ZN7WebCore13RootInlineBox11topOverflowEv
-__ZN7WebCore13RootInlineBox13rightOverflowEv
-__ZN7WebCore18RenderTableSection13calcRowHeightEv
-__ZN3WTF6VectorIiLm0EE6resizeEm
-__ZNK7WebCore9RenderBox12overrideSizeEv
-__ZN7WebCore18RenderTableSection10layoutRowsEi
-__ZN7WebCore9RenderBox8setWidthEi
-__ZN7WebCore9RenderBox9setHeightEi
-__ZNK7WebCore15RenderTableCell14borderTopExtraEv
-__ZNK7WebCore15RenderTableCell17borderBottomExtraEv
-__ZNK7WebCore11RenderTable9borderTopEv
-__ZNK7WebCore11RenderTable12borderBottomEv
-__ZNK7WebCore18RenderTableSection12overflowLeftEb
-__ZNK7WebCore18RenderTableSection13overflowWidthEb
-__ZNK7WebCore18RenderTableSection11overflowTopEb
-__ZNK7WebCore18RenderTableSection14overflowHeightEb
-__ZNK7WebCore11RenderTable12sectionBelowEPKNS_18RenderTableSectionEb
-__ZN7WebCore11RenderBlock15collapseMarginsEPNS_12RenderObjectERNS0_10MarginInfoEi
+__ZN7WebCore11RenderBlock7newLineENS_6EClearE
+__ZN7WebCore11RenderBlock17positionNewFloatsEv
+__ZN7WebCore11RenderBlock21checkLinesForOverflowEv
+__ZNK7WebCore13RootInlineBox12leftOverflowEv
+__ZNK7WebCore13RootInlineBox11topOverflowEv
+__ZNK7WebCore13RootInlineBox13rightOverflowEv
+__ZN7WebCore11RenderBlock13layoutColumnsEi
+__ZN7WebCore9RenderBox15calcHeightUsingERKNS_6LengthE
+__ZNK7WebCore9RenderBox19calcBorderBoxHeightEi
+__ZN7WebCore11RenderBlock23layoutPositionedObjectsEb
+__ZN7WebCore11RenderBlock18positionListMarkerEv
+__ZNK7WebCore9RenderBox14hasControlClipEv
+__ZN7WebCore11RenderBlock15collapseMarginsEPNS_9RenderBoxERNS0_10MarginInfoE
__ZNK7WebCore11RenderBlock21isSelfCollapsingBlockEv
-__ZNK7WebCore11RenderBlock16isTopMarginQuirkEv
+__ZN7WebCore11RenderBlock16setMaxTopMarginsEii
__ZNK7WebCore11RenderBlock15maxBottomMarginEb
-__ZN7WebCore11RenderBlock19clearFloatsIfNeededEPNS_12RenderObjectERNS0_10MarginInfoEii
-__ZN7WebCore11RenderBlock13getClearDeltaEPNS_12RenderObjectE
-__ZN7WebCore11RenderBlock14containsFloatsEv
-__ZN7WebCore11RenderBlock27determineHorizontalPositionEPNS_12RenderObjectE
-__ZN7WebCore11RenderBlock20addOverhangingFloatsEPS0_iib
-__ZN7WebCore11RenderBlock21insertCompactIfNeededEPNS_12RenderObjectERNS0_11CompactInfoE
+__ZN7WebCore11RenderBlock19clearFloatsIfNeededEPNS_9RenderBoxERNS0_10MarginInfoEiii
+__ZN7WebCore11RenderBlock27determineHorizontalPositionEPNS_9RenderBoxE
+__ZNK7WebCore20RenderBoxModelObject20hasSelfPaintingLayerEv
+__ZN7WebCore11RenderBlock22insertPositionedObjectEPNS_9RenderBoxE
+__ZN3WTF11ListHashSetIPN7WebCore9RenderBoxENS_7PtrHashIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore9RenderBoxEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashFunction
+__ZN3WTF11ListHashSetIPN7WebCore9RenderBoxENS_7PtrHashIS3_EEE10appendNodeEPNS_15ListHashSetNodeIS3_EE
+__ZNK7WebCore11RenderBlock14hasLineIfEmptyEv
+__ZNK7WebCore11HTMLElement17isContentEditableEv
+__ZN7WebCore9RenderBox22calcAbsoluteHorizontalEv
+__ZNK7WebCore9RenderBox33containingBlockWidthForPositionedEPKNS_20RenderBoxModelObjectE
+__ZN7WebCore9RenderBox28calcAbsoluteHorizontalValuesENS_6LengthEPKNS_20RenderBoxModelObjectENS_13TextDirectionEiiS1_S1_S1_S1_Ri
+__ZN7WebCoreL24fontDataForGenericFamilyEPNS_8DocumentERKNS_15FontDescriptionERKNS_12AtomicStringE
+__ZN7WebCoreeqERKNS_12AtomicStringEPKc
__ZN7WebCore11RenderBlock19handleBottomOfBlockEiiRNS0_10MarginInfoE
__ZN7WebCore11RenderBlock24setCollapsedBottomMarginERKNS0_10MarginInfoE
-__ZN7WebCore11RenderBlock16setMaxTopMarginsEii
-__ZN7WebCore10RenderText14dirtyLineBoxesEbb
-__ZNK7WebCore10RenderText6lengthEv
-__ZN7WebCore8RenderBR15createInlineBoxEbbb
-__ZN7WebCore10RenderText15createInlineBoxEbbb
+__ZN7WebCore9RenderBox20calcAbsoluteVerticalEv
+__ZNK7WebCore9RenderBox34containingBlockHeightForPositionedEPKNS_20RenderBoxModelObjectE
+__ZN7WebCore9RenderBox26calcAbsoluteVerticalValuesENS_6LengthEPKNS_20RenderBoxModelObjectEiiS1_S1_S1_S1_RiS5_S5_S5_
+__ZNK7WebCore11RenderBlock9floatRectEv
+__ZN7WebCore11RenderBlock17addVisualOverflowERKNS_7IntRectE
+__ZNK7WebCore9RenderBox12maxPrefWidthEv
+__ZN7WebCore11RenderBlock14calcPrefWidthsEv
+__ZN7WebCore11RenderBlock20calcInlinePrefWidthsEv
+__ZN7WebCore20InlineMinMaxIterator4nextEv
+__ZNK7WebCore12RenderInline10marginLeftEv
+__ZN7WebCoreL11getBPMWidthEiNS_6LengthE
+__ZN7WebCore10RenderText17trimmedPrefWidthsEiRiRbS1_S2_S2_S2_S1_S1_S1_S1_S2_
+__ZL12betterChoicemimimi
+__ZNK7WebCore12RenderInline11marginRightEv
+__ZN7WebCore12RenderInline14dirtyLineBoxesEb
+__ZN7WebCoreL22getBorderPaddingMarginEPNS_20RenderBoxModelObjectEb
__ZN7WebCore10RenderText19createInlineTextBoxEv
-__ZNK7WebCore13InlineTextBox6isTextEv
+__ZN7WebCore10RenderText13createTextBoxEv
+__ZN7WebCore12RenderInline19createInlineFlowBoxEv
+__ZN7WebCore12RenderInline13createFlowBoxEv
__ZN7WebCore13InlineTextBox15isInlineTextBoxEv
+__ZNK7WebCore13InlineFlowBox15isInlineFlowBoxEv
+__ZNK7WebCore13InlineFlowBox17rendererLineBoxesEv
+__ZNK7WebCore9InlineBox16nextOnLineExistsEv
__ZNK7WebCore13InlineTextBox11isLineBreakEv
+__ZNK7WebCore10RenderText5widthEjjibPN3WTF7HashSetIPKNS_14SimpleFontDataENS1_7PtrHashIS5_EENS1_10HashTraitsIS5_EEEE
+__ZNK7WebCore12RenderInline10lineHeightEbb
+__ZNK7WebCore12RenderInline25verticalPositionFromCacheEb
+__ZNK7WebCore9InlineBox15isRootInlineBoxEv
+__ZN7WebCore13InlineTextBox17takeFallbackFontsERN3WTF6VectorIPKNS_14SimpleFontDataELm0EEE
+__ZNK7WebCore10RenderText10lineHeightEbb
__ZNK7WebCore8RenderBR10lineHeightEbb
+__ZNK7WebCore12RenderObject10lineHeightEbb
__ZNK7WebCore8RenderBR16baselinePositionEbb
-__ZNK7WebCore10RenderText20verticalPositionHintEb
-__ZN7WebCore10RenderText8positionEPNS_9InlineBoxE
-__ZN7WebCore9RenderBox15calcHeightUsingERKNS_6LengthE
-__ZNK7WebCore9RenderBox19calcBorderBoxHeightEi
-__ZNK7WebCore11RenderTable10colElementEiPbS1_
-__ZN7WebCore10RenderFlow14dirtyLineBoxesEbb
-__ZN7WebCore22getBorderPaddingMarginEPNS_12RenderObjectEb
-__ZN7WebCore21nextBreakablePositionEPKtiib
-__ZNK7WebCore10RenderText5widthEjjRKNS_4FontEi
-__ZNK7WebCore4Font12isFixedPitchEv
-__ZNK7WebCore16FontFallbackList14determinePitchEPKNS_4FontE
-__Z12betterChoicejijiji
-__ZNK7WebCore12RenderObject14selectionStateEv
-__ZN7WebCore13InlineFlowBox15isInlineFlowBoxEv
-__ZNK7WebCore9InlineBox16nextOnLineExistsEv
+__ZN7WebCore10RenderText15positionLineBoxEPNS_9InlineBoxE
+__ZN7WebCore17lineBreakIteratorEPKti
+__ZN7WebCoreL13setUpIteratorERbRPNS_17TextBreakIteratorE18UBreakIteratorTypePKti
+__ZN7WebCore24currentTextBreakLocaleIDEv
+__ZN7WebCore18textBreakFollowingEPNS_17TextBreakIteratorEi
+__ZN7WebCore9FontCache26getSimilarFontPlatformDataERKNS_4FontE
+__ZN3WTF7HashSetIPKN7WebCore14SimpleFontDataENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN3WTF9HashTableIPKN7WebCore14SimpleFontDataES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6expand
+__ZN3WTF9HashTableIPKN7WebCore14SimpleFontDataES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6rehash
+__ZN3WTF9HashTableIPKN7WebCore14SimpleFontDataES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E13alloc
+__ZN7WebCore13WidthIterator21normalizeVoicingMarksEi
+__ZN7WebCore13InlineTextBox16setFallbackFontsERKN3WTF7HashSetIPKNS_14SimpleFontDataENS1_7PtrHashIS5_EENS1_10HashTraitsIS5_EEEE
+__ZN3WTF7HashMapIPN7WebCore13InlineTextBoxENS_6VectorIPKNS1_14SimpleFontDataELm0EEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSB_IS
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm0EEC1ERKS5_
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm0EEC2ERKS5_
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm0EEaSERKS5_
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm0EE15reserveCapacityEm
+__ZN3WTF9HashTableIPN7WebCore13InlineTextBoxESt4pairIS3_NS_6VectorIPKNS1_14SimpleFontDataELm0EEEENS_18PairFirstExtractorISA_EEN
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm0EE6shrinkEm
__ZN7WebCore13InlineFlowBox10onEndChainEPNS_12RenderObjectE
-__ZNK7WebCore10RenderText5widthEjjib
-__ZNK7WebCore10RenderText12maxPrefWidthEv
-__ZN7WebCore10RenderText14calcPrefWidthsEi
-__ZN7WebCore9InlineBox15isRootInlineBoxEv
-__ZNK7WebCore10RenderText10lineHeightEbb
-__ZN7WebCore15HTMLFormElement11isMalformedEv
+__ZNK7WebCore14RenderFieldset12avoidsFloatsEv
+__ZNK7WebCore14RenderFieldset28stretchesToMinIntrinsicWidthEv
+__ZN7WebCore14RenderFieldset14calcPrefWidthsEv
__ZN7WebCore17RenderTextControl14calcPrefWidthsEv
__ZNK7WebCore12RenderObject7isImageEv
-__ZN7WebCore15AutoTableLayout14insertSpanCellEPNS_15RenderTableCellE
-__ZN3WTF6VectorIPN7WebCore15RenderTableCellELm4EE4growEm
-__ZN3WTF6VectorIPN7WebCore15RenderTableCellELm4EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore15RenderTableCellELm4EE15reserveCapacityEm
-__ZN7WebCore11getBPMWidthEiNS_6LengthE
-__ZNK7WebCore10RenderFlow11isWordBreakEv
-__ZNK7WebCore12RenderInline14isRenderInlineEv
-__ZN7WebCore10RenderText17trimmedPrefWidthsEiRiRbS1_S2_S2_S2_S1_S1_S1_S1_S2_
-__ZN7WebCore17RenderTextControl6layoutEv
+__ZN7WebCore14RenderMenuList14calcPrefWidthsEv
+__ZNK7WebCore14RenderThemeMac19minimumMenuListSizeEPNS_11RenderStyleE
+__ZNK7WebCore14RenderThemeMac13menuListSizesEv
+__ZNK7WebCore14RenderThemeMac17sizeForSystemFontEPNS_11RenderStyleEPKNS_7IntSizeE
+__ZNK7WebCore14RenderThemeMac24controlSizeForSystemFontEPNS_11RenderStyleE
+__ZN7WebCore17RenderFlexibleBox14calcPrefWidthsEv
+__ZN7WebCore17RenderFlexibleBox24calcHorizontalPrefWidthsEv
+__ZNK7WebCore14RenderFieldset10findLegendEv
+__ZN7WebCore27RenderTextControlSingleLine6layoutEv
__ZN7WebCore17RenderTextControl10calcHeightEv
+__ZNK7WebCore4Node9renderBoxEv
+__ZN7WebCore27RenderTextControlSingleLine36adjustControlHeightBasedOnLineHeightEi
+__ZNK7WebCore17RenderTextControl16innerTextElementEv
+__ZNK7WebCore17RenderTextControl15textBlockHeightEv
+__ZNK7WebCore27RenderTextControlSingleLine14textBlockWidthEv
+__ZNK7WebCore17RenderTextControl14textBlockWidthEv
__ZNK7WebCore17RenderTextControl12avoidsFloatsEv
__ZNK7WebCore4Node19rootEditableElementEv
__ZN7WebCore11RenderLayer27updateScrollInfoAfterLayoutEv
__ZN7WebCore11RenderLayer23computeScrollDimensionsEPbS1_
-__ZNK7WebCore12RenderObject12clientHeightEv
__ZNK7WebCore11RenderBlock17rightmostPositionEbb
-__ZNK7WebCore10RenderFlow17rightmostPositionEbb
__ZNK7WebCore11RenderBlock14lowestPositionEbb
-__ZNK7WebCore10RenderFlow14lowestPositionEbb
__ZN7WebCore11RenderLayer11scrollWidthEv
__ZN7WebCore11RenderLayer12scrollHeightEv
-__ZNK7WebCore17RenderTextControl14hasControlClipEv
-__ZNK7WebCore11RenderBlock14selectionStateEv
-__ZNK7WebCore17RenderTextControl16baselinePositionEbb
-__ZNK7WebCore11RenderTheme18isControlContainerENS_11EAppearanceE
-__ZNK7WebCore11RenderBlock24getBaselineOfLastLineBoxEv
-__ZN7WebCore25inlineFlowRequiresLineBoxEPNS_12RenderObjectE
-__ZN7WebCore11RenderBlock19setMaxBottomMarginsEii
-__ZNK7WebCore11RenderBlock19isBottomMarginQuirkEv
-__ZN7WebCore14RenderMenuList14calcPrefWidthsEv
-__ZNK7WebCore14RenderThemeMac19minimumMenuListSizeEPNS_11RenderStyleE
-__ZNK7WebCore14RenderThemeMac13menuListSizesEv
-__ZNK7WebCore14RenderThemeMac17sizeForSystemFontEPNS_11RenderStyleEPKNS_7IntSizeE
-__ZNK7WebCore14RenderThemeMac24controlSizeForSystemFontEPNS_11RenderStyleE
+__ZNK7WebCore27RenderTextControlSingleLine14hasControlClipEv
__ZN7WebCore17RenderFlexibleBox11layoutBlockEb
__ZN7WebCore17RenderFlexibleBox19layoutHorizontalBoxEb
__ZN7WebCore9RenderBox15setOverrideSizeEi
__ZNK7WebCore17RenderFlexibleBox13isFlexibleBoxEv
__ZNK7WebCore17RenderFlexibleBox20isStretchingChildrenEv
-__ZN7WebCore17RenderFlexibleBox10placeChildEPNS_12RenderObjectEii
-__ZN7WebCore17RenderFlexibleBox16allowedChildFlexEPNS_12RenderObjectEbj
+__ZN7WebCore15FlexBoxIterator4nextEv
+__ZN7WebCore17RenderFlexibleBox10placeChildEPNS_9RenderBoxEii
+__ZN7WebCore17RenderFlexibleBox16allowedChildFlexEPNS_9RenderBoxEbj
__ZNK7WebCore9RenderBox13overrideWidthEv
-__ZNK3WTF7HashMapIPKN7WebCore9RenderBoxEiNS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS7_IiEEE3getERKS4_
+__ZN3WTF7HashMapIPKN7WebCore9RenderBoxEiNS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS7_IiEEE3setERKS4_RKi
+__ZN3WTF9HashTableIPKN7WebCore9RenderBoxESt4pairIS4_iENS_18PairFirstExtractorIS6_EENS_7PtrHashIS4_EENS_14PairHashTraitsINS_10Ha
__ZNK7WebCore17RenderFlexibleBox17isFlexingChildrenEv
+__ZNK7WebCore9RenderBox12overrideSizeEv
+__ZNK3WTF7HashMapIPKN7WebCore9RenderBoxEiNS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS7_IiEEE3getERKS4_
__ZN7WebCore13RootInlineBox7destroyEPNS_11RenderArenaE
__ZN7WebCore13RootInlineBox17detachEllipsisBoxEPNS_11RenderArenaE
__ZN7WebCore9InlineBox7destroyEPNS_11RenderArenaE
+__ZN7WebCore13RootInlineBoxD0Ev
__ZN7WebCore9InlineBoxdlEPvm
-__ZN7WebCore13InlineTextBoxD1Ev
+__ZN7WebCore13InlineTextBoxD0Ev
__ZNK7WebCore14RenderMenuList14hasControlClipEv
-__ZN7WebCore11addMidpointERKNS_12BidiIteratorE
-__ZN3WTF6VectorIN7WebCore12BidiIteratorELm0EE4growEm
-__ZN3WTF6VectorIN7WebCore12BidiIteratorELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore12BidiIteratorELm0EE15reserveCapacityEm
-__ZN7WebCore17lineBreakIteratorEPKti
-__ZN7WebCore13setUpIteratorERbRPNS_17TextBreakIteratorE18UBreakIteratorTypePKti
-__ZN7WebCore24currentTextBreakLocaleIDEv
-__ZN7WebCore18textBreakFollowingEPNS_17TextBreakIteratorEi
-__ZNK7WebCore12RenderObject18collapsedMarginTopEv
-__ZNK7WebCore12RenderObject21collapsedMarginBottomEv
+__ZNK7WebCore12RenderButton14hasControlClipEv
+__ZNK7WebCore11RenderTheme18isControlContainerENS_11ControlPartE
+__ZNK7WebCore11RenderBlock19lastLineBoxBaselineEv
+__ZN7WebCore13InlineFlowBox25adjustMaxAscentAndDescentERiS1_ii
+__ZN7WebCore11RenderBlock19setMaxBottomMarginsEii
+__ZNK7WebCore9RenderBox17rightmostPositionEbb
+__ZNK7WebCore20RenderBoxModelObject23relativePositionOffsetXEv
+__ZNK7WebCore9RenderBox14lowestPositionEbb
+__ZNK7WebCore20RenderBoxModelObject23relativePositionOffsetYEv
+__ZNK7WebCore4Font24floatWidthForComplexTextERKNS_7TextRunEPN3WTF7HashSetIPKNS_14SimpleFontDataENS4_7PtrHashIS8_EENS4_10HashTra
+__ZN7WebCore18CoreTextControllerC1EPKNS_4FontERKNS_7TextRunEbPN3WTF7HashSetIPKNS_14SimpleFontDataENS7_7PtrHashISB_EENS7_10HashT
+__ZN7WebCore18CoreTextControllerC2EPKNS_4FontERKNS_7TextRunEbPN3WTF7HashSetIPKNS_14SimpleFontDataENS7_7PtrHashISB_EENS7_10HashT
+__ZN7WebCore18CoreTextController19collectCoreTextRunsEv
+__ZN7WebCore18CoreTextController32collectCoreTextRunsForCharactersEPKtjjPKNS_14SimpleFontDataE
+__ZNK7WebCore14SimpleFontData21getCFStringAttributesEv
+__ZNK7WebCore14SimpleFontData9getCTFontEv
+__ZNK7WebCore16FontPlatformData15allowsLigaturesEv
+__ZN7WebCore18CoreTextController11CoreTextRunC1EPK7__CTRunPKNS_14SimpleFontDataEPKtjm
+__ZN7WebCore18CoreTextController11CoreTextRunC2EPK7__CTRunPKNS_14SimpleFontDataEPKtjm
+__ZN7WebCore18CoreTextController23adjustGlyphsAndAdvancesEv
+__ZNK7WebCore16FontPlatformData19roundsGlyphAdvancesEv
+__ZN3WTF6VectorItLm256EE6shrinkEm
+__ZN3WTF6VectorI6CGSizeLm256EE6shrinkEm
+__ZN3WTF6VectorIN7WebCore18CoreTextController11CoreTextRunELm16EE6shrinkEm
+__ZN7WebCore18CoreTextController11CoreTextRunC1EPKNS_14SimpleFontDataEPKtjmb
+__ZN7WebCore18CoreTextController11CoreTextRunC2EPKNS_14SimpleFontDataEPKtjmb
+__ZN3WTF6VectorIlLm16EE6shrinkEm
+__ZN3WTF6VectorItLm256EE4fillERKtm
+__ZSt4fillIPttEvT_S1_RKT0_
+__ZN3WTF6VectorI6CGSizeLm256EE4fillERKS1_m
+__ZSt4fillIP6CGSizeS0_EvT_S2_RKT0_
+__ZN7WebCore12BidiResolverINS_14InlineIteratorENS_7BidiRunEE5embedEN3WTF7Unicode9DirectionE
+__ZN7WebCore12BidiResolverINS_14InlineIteratorENS_7BidiRunEE27raiseExplicitEmbeddingLevelEN3WTF7Unicode9DirectionES6_
+__ZN3WTF6VectorINS_7Unicode9DirectionELm8EE6shrinkEm
+__ZN7WebCore12BidiResolverINS_14InlineIteratorENS_7BidiRunEE27lowerExplicitEmbeddingLevelEN3WTF7Unicode9DirectionE
+__ZN3WTF10RefCountedIN7WebCore11BidiContextEE5derefEv
+__ZN7WebCore12BidiResolverINS_14InlineIteratorENS_7BidiRunEE11reverseRunsEjj
+__ZNK7WebCore9InlineBox16prevOnLineExistsEv
+__ZN7WebCore11RenderBlock20insertFloatingObjectEPNS_9RenderBoxE
+__ZN7WebCore21DeprecatedPtrListImplC1EPFvPvE
+__ZN7WebCore21DeprecatedPtrListImplC2EPFvPvE
+__ZN7WebCore21DeprecatedPtrListImpl6appendEPKv
+__ZN7WebCore21DeprecatedPtrListImpl6insertEjPKv
+__ZN7WebCore21DeprecatedPtrListImpl4lastEv
+__ZNK7WebCore21DeprecatedPtrListImpl7currentEv
+__ZNK7WebCore21DeprecatedPtrListImpl7getPrevEv
+__ZN7WebCore29DeprecatedPtrListImplIteratorC1ERKNS_21DeprecatedPtrListImplE
+__ZN7WebCore29DeprecatedPtrListImplIteratorC2ERKNS_21DeprecatedPtrListImplE
+__ZNK7WebCore21DeprecatedPtrListImpl11addIteratorEPNS_29DeprecatedPtrListImplIteratorE
+__ZNK7WebCore29DeprecatedPtrListImplIterator7currentEv
+__ZN7WebCore29DeprecatedPtrListImplIteratorppEv
+__ZN7WebCore29DeprecatedPtrListImplIteratorD1Ev
+__ZN7WebCore29DeprecatedPtrListImplIteratorD2Ev
+__ZNK7WebCore21DeprecatedPtrListImpl14removeIteratorEPNS_29DeprecatedPtrListImplIteratorE
+__ZN7WebCore21DeprecatedPtrListImpl4nextEv
+__ZN3WTF6VectorIN7WebCore11RenderBlock13FloatWithRectELm0EE6shrinkEm
+__ZNK7WebCore11RenderBlock33expandsToEncloseOverhangingFloatsEv
+__ZNK7WebCore12RenderObject10isFieldsetEv
+__ZN7WebCore11RenderBlock20addOverhangingFloatsEPS0_iib
+__ZN7WebCore11RenderBlock13containsFloatEPNS_12RenderObjectE
+__ZNK7WebCore12RenderObject26enclosingSelfPaintingLayerEv
+__ZN7WebCore11RenderBlock37markAllDescendantsWithFloatsForLayoutEPNS_9RenderBoxEb
+__ZN7WebCore11RenderBlock18addIntrudingFloatsEPS0_ii
+__ZN7WebCore21DeprecatedPtrListImpl5firstEv
+__ZNK3WTF7HashMapIPN7WebCore12RenderObjectEPNS1_11RenderBlock14FloatingObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE
+__ZN7WebCore7IntRect5uniteERKS0_
__ZN7WebCore10RenderView10calcHeightEv
-__ZN7WebCore10RenderView20hasOverhangingFloatsEv
+__ZNK7WebCore10RenderView10viewHeightEv
__ZN7WebCore11RenderBlock16setOverflowWidthEi
__ZN7WebCore11RenderBlock17setOverflowHeightEi
__ZNK7WebCore10RenderView8docWidthEv
-__ZNK7WebCore18RenderTableSection17rightmostPositionEbb
-__ZNK7WebCore9RenderBox17rightmostPositionEbb
__ZNK7WebCore10RenderView9docHeightEv
-__ZNK7WebCore18RenderTableSection14lowestPositionEbb
-__ZNK7WebCore9RenderBox14lowestPositionEbb
+__ZNK7WebCore9RenderBox15availableHeightEv
+__ZNK7WebCore9RenderBox20availableHeightUsingERKNS_6LengthE
+__ZN7WebCore9FrameView19endDeferredRepaintsEv
+__ZNK7WebCore9FrameView28adjustedDeferredRepaintDelayEv
+__ZN7WebCore9FrameView18doDeferredRepaintsEv
+__ZNK7WebCore10ScrollView11isOffscreenEv
+__ZNK7WebCore10ScrollView19platformIsOffscreenEv
+__ZN7WebCore9FrameView26updateDeferredRepaintDelayEv
__ZN7WebCore5Frame19invalidateSelectionEv
__ZN7WebCore19SelectionController14setNeedsLayoutEb
-__ZN7WebCore5Frame22selectionLayoutChangedEv
-__ZN7WebCore19SelectionController18recomputeCaretRectEv
-__ZNK7WebCore19SelectionController9caretRectEv
-__ZN7WebCore19SelectionController6layoutEv
-__ZNK7WebCore5Frame8rendererEv
-__ZN7WebCore10RenderView14clearSelectionEv
-__ZN7WebCore10RenderView12setSelectionEPNS_12RenderObjectEiS2_i
__ZN7WebCore9FrameView14adjustViewSizeEv
--[WebCoreFrameBridge forceLayoutAdjustingViewSize:]
-__ZN7WebCore5Frame11forceLayoutEb
-__ZN7WebCore17DeprecatedPtrListINS_11RenderBlock14FloatingObjectEE10deleteFuncEPv
-__ZN7WebCore13RootInlineBox8Overflow7destroyEPNS_11RenderArenaE
-__ZN7WebCore13RootInlineBox8OverflowdlEPvm
-__ZN7WebCore13InlineFlowBoxD1Ev
+__ZN7WebCore10ScrollView23platformSetContentsSizeEv
__ZN7WebCore11RenderLayer20updateLayerPositionsEbb
-__ZN7WebCore9FrameView16repaintRectangleERKNS_7IntRectEb
-__ZN7WebCore10ScrollView14updateContentsERKNS_7IntRectEb
-__ZNK7WebCore10ScrollView18visibleContentRectEv
-__ZN7WebCore9FloatRectC1ERK7_NSRect
-__ZN7WebCore10FloatPointC2ERK8_NSPoint
-__ZN7WebCore9FloatSizeC2ERK7_NSSize
-__ZNK7WebCore9FloatRectcv7_NSRectEv
-__ZNK7WebCore7IntRectcv7_NSRectEv
+__ZN7WebCore9FrameView23repaintContentRectangleERKNS_7IntRectEb
+__ZN3WTF6VectorIN7WebCore7IntRectELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore7IntRectELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore7IntRectELm0EE15reserveCapacityEm
__ZN7WebCore11RenderLayer19updateLayerPositionEv
-__ZN7WebCore11RenderLayer24positionOverflowControlsEv
+__ZNK7WebCore11RenderLayer20convertToLayerCoordsEPKS0_RiS3_
+__ZN7WebCore11RenderLayer24positionOverflowControlsEii
__ZN7WebCore11RenderLayer15updateTransformEv
-__ZNK7WebCore12RenderObject18absoluteOutlineBoxEv
-__ZNK7WebCore10RenderView16absolutePositionERiS1_b
+__ZNK7WebCore9RenderBox23outlineBoundsForRepaintEPNS_20RenderBoxModelObjectE
+__ZNK7WebCore9RenderBox17borderBoundingBoxEv
__ZNK7WebCore12RenderObject29adjustRectForOutlineAndShadowERNS_7IntRectE
-__ZN7WebCore11RenderLayer20subtractScrollOffsetERiS1_
-__ZNK7WebCore9RenderBox16absolutePositionERiS1_b
-__ZNK7WebCore15RenderTableCell16absolutePositionERiS1_b
+__ZNK7WebCore11RenderBlock22outlineStyleForRepaintEv
+__ZNK7WebCore12RenderObject20localToContainerQuadERKNS_9FloatQuadEPNS_20RenderBoxModelObjectEb
+__ZNK7WebCore10RenderView19mapLocalToContainerEPNS_20RenderBoxModelObjectEbbRNS_14TransformStateE
+__ZN7WebCore14TransformState7flattenEv
+__ZNK7WebCore9FloatQuad11boundingBoxEv
+__ZNK7WebCore11RenderLayer29subtractScrolledContentOffsetERiS1_
+__ZNK7WebCore9RenderBox19mapLocalToContainerEPNS_20RenderBoxModelObjectEbbRNS_14TransformStateE
+__ZNK7WebCore9RenderBox19offsetFromContainerEPNS_12RenderObjectE
+__ZNK7WebCore12RenderObject31shouldUseTransformFromContainerEPKS0_
+__ZN7WebCore14TransformState4moveEiiNS0_21TransformAccumulationE
+__ZNK7WebCore11RenderLayer27enclosingPositionedAncestorEv
+__ZN7WebCore10ScrollView23repaintContentRectangleERKNS_7IntRectEb
+__ZN7WebCore10ScrollView31platformRepaintContentRectangleERKNS_7IntRectEb
+__ZNK7WebCore7IntRectcv6CGRectEv
+__ZN3WTF6VectorIN7WebCore7IntRectELm0EE6shrinkEm
__ZN7WebCore9FrameView22updateDashboardRegionsEv
__ZNK7WebCore9FrameView15useSlowRepaintsEv
__ZN7WebCore9FrameView22performPostLayoutTasksEv
-__ZN7WebCore10RenderView21updateWidgetPositionsEv
-__ZN7WebCore9FrameView21resumeScheduledEventsEv
-__ZNK7WebCore9FrameView11needsLayoutEv
__ZN7WebCore11FrameLoader14didFirstLayoutEv
-__ZN7WebCore9FrameView23dispatchScheduledEventsEv
-__ZN7WebCore8Document13svgExtensionsEv
-__ZNK7WebCore14DocumentLoader16isLoadingPlugInsEv
-__ZNK7WebCore8Document16isPluginDocumentEv
-__ZNK7WebCore8Document15isImageDocumentEv
-+[WebScriptObject initialize]
-+[DOMDocument(WebCoreInternal) _wrapDocument:]
-+[DOMNode(WebCoreInternal) _wrapNode:]
-__ZN7WebCore13getDOMWrapperEP17DOMObjectInternal
--[DOMNode(WebCoreInternal) _initWithNode:]
--[DOMObject(WebCoreInternal) _init]
--[WebScriptObject(WebScriptObjectInternal) _init]
-__ZN7WebCore13addDOMWrapperEP8NSObjectP17DOMObjectInternal
-__ZNK3WTF7HashMapIP17DOMObjectInternalP8NSObjectNS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS7_IS4_EEE3getERKS2_
--[DOMDocument getElementsByTagName:]
-__ZN7WebCore4Node20getElementsByTagNameERKNS_6StringE
-__ZN7WebCore4Node22getElementsByTagNameNSERKNS_6StringES3_
-__ZN7WebCore11TagNodeListC2EN3WTF10PassRefPtrINS_4NodeEEERKNS_12AtomicStringES7_
-__ZN7WebCore15DynamicNodeListC2EN3WTF10PassRefPtrINS_4NodeEEEb
-__ZN7WebCore15DynamicNodeList6CachesC1Ev
-__ZN7WebCore4Node23registerDynamicNodeListEPNS_15DynamicNodeListE
-__ZN3WTF7HashSetIPN7WebCore15DynamicNodeListENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-+[DOMNodeList(WebCoreInternal) _wrapNodeList:]
--[DOMNodeList(WebCoreInternal) _initWithNodeList:]
--[DOMNodeList length]
-__ZNK7WebCore15DynamicNodeList6lengthEv
-__ZNK7WebCore11TagNodeList11nodeMatchesEPNS_4NodeE
-__ZN7WebCore15ProgressTracker17progressCompletedEPNS_5FrameE
-__ZN7WebCore15ProgressTracker21finalProgressCompleteEv
--[DOMNodeList dealloc]
-__ZN7WebCore4Node25unregisterDynamicNodeListEPNS_15DynamicNodeListE
--[DOMObject dealloc]
-__ZN7WebCore16removeDOMWrapperEP17DOMObjectInternal
--[WebScriptObject dealloc]
--[DOMNode dealloc]
--[WebCoreFrameBridge needsLayout]
--[WebCoreFrameBridge drawRect:]
-__ZN7WebCore15GraphicsContextC2EP9CGContext
-__ZN7WebCore15GraphicsContext28createGraphicsContextPrivateEv
-__ZN7WebCore22GraphicsContextPrivateC2Ev
-__ZN7WebCore15GraphicsContext19setPaintingDisabledEb
-__ZNK7WebCore15GraphicsContext9fillColorEv
-__ZN7WebCore15GraphicsContext20setPlatformFillColorERKNS_5ColorE
-__ZNK7WebCore15GraphicsContext16paintingDisabledEv
-__ZNK7WebCore15GraphicsContext15platformContextEv
-__ZN7WebCore14setCGFillColorEP9CGContextRKNS_5ColorE
-__ZNK7WebCore5Color7getRGBAERfS1_S1_S1_
-__ZNK7WebCore15GraphicsContext11strokeColorEv
-__ZN7WebCore15GraphicsContext22setPlatformStrokeColorERKNS_5ColorE
-__ZN7WebCore5Frame5paintEPNS_15GraphicsContextERKNS_7IntRectE
+__ZN7WebCore11FrameLoader30didFirstVisuallyNonEmptyLayoutEv
+__ZN7WebCore10RenderView21updateWidgetPositionsEv
+__ZN7WebCore9FrameView13updateWidgetsEv
+__ZN7WebCore5TimerINS_20ImageLoadEventSenderEE5firedEv
+__ZN7WebCore20ImageLoadEventSender10timerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore20ImageLoadEventSender25dispatchPendingLoadEventsEv
+__ZN7WebCore11ImageLoader24dispatchPendingLoadEventEv
+__ZN7WebCore15HTMLImageLoader17dispatchLoadEventEv
+__ZN7WebCore4Node13dispatchEventERKNS_12AtomicStringEbb
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore13ContainerNodeEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore13ContainerNodeEEELm0EE15reserveCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore13ContainerNodeEEELm0EE6shrinkEm
+__ZN3WTF6VectorIPN7WebCore11ImageLoaderELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIPN7WebCore11ImageLoaderELm0EE6shrinkEm
+__ZN7WebCore9FrameView13paintContentsEPNS_15GraphicsContextERKNS_7IntRectE
__ZN7WebCore8Document39invalidateRenderedRectsForMarkersInRectERKNS_7IntRectE
__ZN7WebCore11RenderLayer5paintEPNS_15GraphicsContextERKNS_7IntRectENS_16PaintRestrictionEPNS_12RenderObjectE
-__ZN7WebCore11RenderLayer10paintLayerEPS0_PNS_15GraphicsContextERKNS_7IntRectEbNS_16PaintRestrictionEPNS_12RenderObjectE
-__ZNK7WebCore4Node12namespaceURIEv
-__ZNK7WebCore11RenderLayer14calculateRectsEPKS0_RKNS_7IntRectERS3_S6_S6_S6_
-__ZNK7WebCore11RenderLayer20convertToLayerCoordsEPKS0_RiS3_
+__ZN7WebCore11RenderLayer10paintLayerEPS0_PNS_15GraphicsContextERKNS_7IntRectEbNS_16PaintRestrictionEPNS_12RenderObjectEPN3WTF7
+__ZNK7WebCore4Node19virtualNamespaceURIEv
+__ZNK7WebCore11RenderLayer14calculateRectsEPKS0_RKNS_7IntRectERS3_S6_S6_S6_b
+__ZN7WebCore11RenderLayer24updateLayerListsIfNeededEv
__ZN7WebCore11RenderLayer17updateZOrderListsEv
__ZN7WebCore11RenderLayer13collectLayersERPN3WTF6VectorIPS0_Lm0EEES6_
__ZN3WTF6VectorIPN7WebCore11RenderLayerELm0EE14expandCapacityEmPKS3_
__ZN3WTF6VectorIPN7WebCore11RenderLayerELm0EE14expandCapacityEm
__ZN3WTF6VectorIPN7WebCore11RenderLayerELm0EE15reserveCapacityEm
+__ZNSt17_Temporary_bufferIPPN7WebCore11RenderLayerES2_EC1ES3_S3_
__ZNSt17_Temporary_bufferIPPN7WebCore11RenderLayerES2_EC2ES3_S3_
-__ZSt22__get_temporary_bufferIPN7WebCore11RenderLayerEESt4pairIPT_iEiS5_
-__ZSt22__stable_sort_adaptiveIPPN7WebCore11RenderLayerES3_iPFbS2_S2_EEvT_S6_T0_T1_T2_
+__ZSt22__get_temporary_bufferIPN7WebCore11RenderLayerEESt4pairIPT_lElS5_
+__ZSt22__stable_sort_adaptiveIPPN7WebCore11RenderLayerES3_lPFbS2_S2_EEvT_S6_T0_T1_T2_
__ZSt24__merge_sort_with_bufferIPPN7WebCore11RenderLayerES3_PFbS2_S2_EEvT_S6_T0_T1_
-__ZSt22__chunk_insertion_sortIPPN7WebCore11RenderLayerEiPFbS2_S2_EEvT_S6_T0_T1_
+__ZSt22__chunk_insertion_sortIPPN7WebCore11RenderLayerElPFbS2_S2_EEvT_S6_T0_T1_
__ZSt16__insertion_sortIPPN7WebCore11RenderLayerEPFbS2_S2_EEvT_S6_T0_
-__ZSt16__merge_adaptiveIPPN7WebCore11RenderLayerEiS3_PFbS2_S2_EEvT_S6_S6_T0_S7_T1_S7_T2_
+__ZSt16__merge_adaptiveIPPN7WebCore11RenderLayerElS3_PFbS2_S2_EEvT_S6_S6_T0_S7_T1_S7_T2_
__ZSt16__merge_backwardIPPN7WebCore11RenderLayerES3_S3_PFbS2_S2_EET1_T_S7_T0_S8_S6_T2_
__ZSt23return_temporary_bufferIPN7WebCore11RenderLayerEEvPT_
-__ZN7WebCore11RenderLayer18updateOverflowListEv
+__ZN7WebCore11RenderLayer20updateNormalFlowListEv
__ZNK7WebCore11RenderLayer20intersectsDamageRectERKNS_7IntRectES3_PKS0_
-__ZN7WebCore7setClipEPNS_15GraphicsContextERKNS_7IntRectES4_
+__ZN7WebCoreL7setClipEPNS_15GraphicsContextERKNS_7IntRectES4_
__ZN7WebCore10RenderView5paintERNS_12RenderObject9PaintInfoEii
__ZN7WebCore11RenderBlock11paintObjectERNS_12RenderObject9PaintInfoEii
__ZN7WebCore10RenderView19paintBoxDecorationsERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore11RenderLayer21paintOverflowControlsEPNS_15GraphicsContextEiiRKNS_7IntRectE
-__ZN7WebCore11restoreClipEPNS_15GraphicsContextERKNS_7IntRectES4_
+__ZN7WebCoreL11restoreClipEPNS_15GraphicsContextERKNS_7IntRectES4_
__ZN7WebCore11RenderBlock13paintContentsERNS_12RenderObject9PaintInfoEii
__ZN7WebCore11RenderBlock13paintChildrenERNS_12RenderObject9PaintInfoEii
__ZN7WebCore11RenderBlock14paintSelectionERNS_12RenderObject9PaintInfoEii
__ZNK7WebCore11RenderBlock24shouldPaintSelectionGapsEv
__ZN7WebCore11RenderBlock11paintFloatsERNS_12RenderObject9PaintInfoEiib
-__ZN7WebCore11RenderBlock10paintCaretERNS_12RenderObject9PaintInfoENS_9CaretTypeE
+__ZN7WebCore11RenderBlock10paintCaretERNS_12RenderObject9PaintInfoEiiNS_9CaretTypeE
__ZNK7WebCore5Frame19dragCaretControllerEv
__ZN7WebCore11RenderBlock25paintContinuationOutlinesERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore24continuationOutlineTableEv
+__ZN7WebCoreL24continuationOutlineTableEv
__ZNK7WebCore12RenderObject20hasOutlineAnnotationEv
-__ZN7WebCore11RenderLayer18calculateClipRectsEPKS0_
+__ZNK7WebCore11RenderLayer15parentClipRectsEPKS0_RNS_9ClipRectsEb
+__ZN7WebCore11RenderLayer15updateClipRectsEPKS0_
+__ZNK7WebCore11RenderLayer18calculateClipRectsEPKS0_RNS_9ClipRectsEb
__ZN7WebCore9ClipRectsnwEmPNS_11RenderArenaE
-__ZN7WebCore7IntRect9intersectERKS0_
+__ZN7WebCoreL13compareZIndexEPNS_11RenderLayerES1_
+__ZSt25__unguarded_linear_insertIPPN7WebCore11RenderLayerES2_PFbS2_S2_EEvT_T0_T1_
+__ZSt17__merge_sort_loopIPPN7WebCore11RenderLayerES3_lPFbS2_S2_EEvT_S6_T0_T1_T2_
+__ZSt5mergeIPPN7WebCore11RenderLayerES3_S3_PFbS2_S2_EET1_T_S7_T0_S8_S6_T2_
__ZN7WebCore11RenderBlock5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore9RenderBox16pushContentsClipERNS_12RenderObject9PaintInfoEii
__ZN7WebCore9RenderBox19paintBoxDecorationsERNS_12RenderObject9PaintInfoEii
__ZN7WebCore9RenderBox23paintRootBoxDecorationsERNS_12RenderObject9PaintInfoEii
-__ZNK7WebCore10ScrollView13contentsWidthEv
-__ZNK7WebCore10ScrollView14contentsHeightEv
-__ZN7WebCore9RenderBox16paintBackgroundsEPNS_15GraphicsContextERKNS_5ColorEPKNS_15BackgroundLayerEiiiiii
-__ZN7WebCore9RenderBox15paintBackgroundEPNS_15GraphicsContextERKNS_5ColorEPKNS_15BackgroundLayerEiiiiii
-__ZN7WebCore9RenderBox23paintBackgroundExtendedEPNS_15GraphicsContextERKNS_5ColorEPKNS_15BackgroundLayerEiiiiiibb
-__ZN7WebCore15GraphicsContext8fillRectERKNS_7IntRectERKNS_5ColorE
-__ZNK7WebCore7IntRectcv6CGRectEv
+__ZN7WebCore9RenderBox15paintFillLayersERKNS_12RenderObject9PaintInfoERKNS_5ColorEPKNS_9FillLayerEiiiiiiNS_17CompositeOperatorE
+__ZN7WebCore9RenderBox14paintFillLayerERKNS_12RenderObject9PaintInfoERKNS_5ColorEPKNS_9FillLayerEiiiiiiNS_17CompositeOperatorE
+__ZN7WebCore20RenderBoxModelObject22paintFillLayerExtendedERKNS_12RenderObject9PaintInfoERKNS_5ColorEPKNS_9FillLayerEiiiiiiPNS_
+__ZN7WebCore9FrameView18setContentIsOpaqueEb
+__ZNK7WebCore9FrameView19baseBackgroundColorEv
+__ZN7WebCore15GraphicsContext4saveEv
+__ZN3WTF6VectorIN7WebCore20GraphicsContextStateELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore20GraphicsContextStateELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore20GraphicsContextStateELm0EE15reserveCapacityEm
+__ZN7WebCore15GraphicsContext17savePlatformStateEv
+__ZN7WebCore15GraphicsContext21setCompositeOperationENS_17CompositeOperatorE
+__ZN7WebCore15GraphicsContext8fillRectERKNS_9FloatRectERKNS_5ColorE
+__ZNK7WebCore9FloatRectcv6CGRectEv
+__ZN7WebCore15GraphicsContext7restoreEv
+__ZN3WTF6VectorIN7WebCore20GraphicsContextStateELm0EE6shrinkEm
+__ZN7WebCore15GraphicsContext20restorePlatformStateEv
__ZNK7WebCore12RenderObject18maximalOutlineSizeENS_10PaintPhaseE
__ZNK7WebCore7IntRect10intersectsERKS0_
-__ZNK7WebCore11RenderBlock15borderFitAdjustERiS1_
-__ZN7WebCore12RenderObject14paintBoxShadowEPNS_15GraphicsContextEiiiiPKNS_11RenderStyleEbb
-__ZN7WebCore11RenderTable5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore18RenderTableSection5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore15RenderTableCell26paintBackgroundsBehindCellERNS_12RenderObject9PaintInfoEiiPS1_
-__ZN7WebCore15RenderTableCell5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore15RenderTableCell19paintBoxDecorationsERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore10RenderFlow10paintLinesERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore14RenderReplaced5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore14RenderReplaced11shouldPaintERNS_12RenderObject9PaintInfoERiS4_
-__ZNK7WebCore14RenderReplaced10isSelectedEv
-__ZN7WebCore11RenderImage13paintReplacedERNS_12RenderObject9PaintInfoEii
+__ZNK7WebCore17RenderLineBoxList5paintEPNS_20RenderBoxModelObjectERNS_12RenderObject9PaintInfoEii
__ZN7WebCore9InlineBox4rootEv
__ZN7WebCore13RootInlineBox12selectionTopEv
__ZN7WebCore13RootInlineBox5paintERNS_12RenderObject9PaintInfoEii
@@ -2455,1247 +3604,207 @@ __ZN7WebCore13InlineFlowBox5paintERNS_12RenderObject9PaintInfoEii
__ZN7WebCore13InlineFlowBox19paintBoxDecorationsERNS_12RenderObject9PaintInfoEii
__ZN7WebCore13InlineFlowBox20paintTextDecorationsERNS_12RenderObject9PaintInfoEiib
__ZN7WebCore9InlineBox5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore15GraphicsContext14setStrokeStyleERKNS_11StrokeStyleE
-__ZN7WebCore15GraphicsContext14setStrokeColorERKNS_5ColorE
-__ZN7WebCore15GraphicsContext12setFillColorERKNS_5ColorE
-__ZN7WebCore15GraphicsContext8drawRectERKNS_7IntRectE
-__ZNK7WebCore15GraphicsContext11strokeStyleEv
-__ZNK7WebCore9FloatRectcv6CGRectEv
-__ZNK7WebCore5Image6isNullEv
-__ZN7WebCore15GraphicsContext9drawImageEPNS_5ImageERKNS_8IntPointENS_17CompositeOperatorE
-__ZN7WebCore15GraphicsContext9drawImageEPNS_5ImageERKNS_8IntPointERKNS_7IntRectENS_17CompositeOperatorE
+__ZN7WebCore14RenderReplaced5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore14RenderReplaced11shouldPaintERNS_12RenderObject9PaintInfoERiS4_
+__ZNK7WebCore14RenderReplaced10isSelectedEv
+__ZN7WebCore11RenderImage13paintReplacedERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore11RenderImage5imageEii
+__ZNK7WebCore11CachedImage5imageEv
+__ZN7WebCore24RenderImageScaleObserver28shouldImagePaintAtLowQualityEPNS_11RenderImageERKNS_7IntSizeE
+__ZNK7WebCore11BitmapImage13isBitmapImageEv
+__ZN7WebCore15GraphicsContext9drawImageEPNS_5ImageERKNS_7IntRectENS_17CompositeOperatorEb
__ZN7WebCore15GraphicsContext9drawImageEPNS_5ImageERKNS_7IntRectES5_NS_17CompositeOperatorEb
-__ZN7WebCore9FloatRectC2ERKNS_7IntRectE
-__ZN7WebCore10FloatPointC2ERKNS_8IntPointE
-__ZN7WebCore9FloatSizeC2ERKNS_7IntSizeE
__ZN7WebCore15GraphicsContext9drawImageEPNS_5ImageERKNS_9FloatRectES5_NS_17CompositeOperatorEb
__ZN7WebCore11BitmapImage4drawEPNS_15GraphicsContextERKNS_9FloatRectES5_NS_17CompositeOperatorE
--[DOMDocument forms]
-__ZN7WebCore8Document5formsEv
-+[DOMHTMLCollection(WebCoreInternal) _wrapHTMLCollection:]
--[DOMHTMLCollection(WebCoreInternal) _initWithHTMLCollection:]
--[DOMHTMLCollection length]
--[DOMHTMLCollection item:]
-__ZNK7WebCore14HTMLCollection4itemEj
-__ZN7WebCore12elementClassERKNS_13QualifiedNameEP10objc_class
-__ZN7WebCore15addElementClassERKNS_13QualifiedNameEP10objc_class
-__ZNK3WTF7HashMapIPKN7WebCore13QualifiedName17QualifiedNameImplEP10objc_classNS_7PtrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3getERKS5_
--[DOMHTMLFormElement elements]
-__ZN7WebCore15HTMLFormElement8elementsEv
-__ZN7WebCore18HTMLFormCollectionC1EN3WTF10PassRefPtrINS_15HTMLFormElementEEE
-__ZN7WebCore14HTMLCollectionC2EN3WTF10PassRefPtrINS_4NodeEEENS0_4TypeEPNS0_14CollectionInfoE
-__ZNK7WebCore18HTMLFormCollection10calcLengthEv
-__ZNK7WebCore15HTMLFormElement6lengthEv
-__ZNK7WebCore16HTMLInputElement14isEnumeratableEv
-__ZNK7WebCore18HTMLFormCollection4itemEj
--[DOMHTMLInputElement(FormAutoFillTransition) _isTextField]
--[DOMHTMLInputElement type]
-__ZNK7WebCore16HTMLInputElement4typeEv
--[DOMHTMLCollection dealloc]
-__ZNK7WebCore11HistoryItem17originalURLStringEv
-__ZNK7WebCore5Frame10isFrameSetEv
--[DOMDocument documentElement]
-+[DOMElement(WebCoreInternal) _wrapElement:]
--[DOMDocument createRange]
-__ZN7WebCore8Document11createRangeEv
-__ZN7WebCore5RangeC2EPNS_8DocumentE
-+[DOMRange(WebCoreInternal) _wrapRange:]
--[DOMRange(WebCoreInternal) _initWithRange:]
--[DOMRange selectNode:]
--[DOMNode(WebCoreInternal) _node]
-__ZN7WebCore5Range10selectNodeEPNS_4NodeERi
-__ZN7WebCore5Range14setStartBeforeEPNS_4NodeERi
-__ZNK7WebCore5Range11checkNodeBAEPNS_4NodeERi
-__ZNK7WebCore4Node9nodeIndexEv
-__ZN7WebCore5Range8setStartEPNS_4NodeEiRi
-__ZNK7WebCore5Range16checkNodeWOffsetEPNS_4NodeEiRi
-__ZNK7WebCore13ContainerNode14childNodeCountEv
-__ZN7WebCore5Range21compareBoundaryPointsEPNS_4NodeEiS2_i
-__ZN7WebCore5Range11setEndAfterEPNS_4NodeERi
-__ZN7WebCore5Range6setEndEPNS_4NodeEiRi
--[WebCoreFrameBridge stringForRange:]
--[DOMRange(WebCoreInternal) _range]
-__ZN7WebCore32plainTextToMallocAllocatedBufferEPKNS_5RangeERj
-__ZN7WebCore12TextIteratorC2EPKNS_5RangeEb
-__ZNK7WebCore5Range14startContainerERi
-__ZNK7WebCore5Range11startOffsetERi
-__ZNK7WebCore5Range12endContainerERi
-__ZNK7WebCore5Range9endOffsetERi
-__ZNK7WebCore5Range9startNodeEv
-__ZNK7WebCore4Node18offsetInCharactersEv
-__ZNK7WebCore13ContainerNode9childNodeEj
-__ZNK7WebCore5Range11pastEndNodeEv
-__ZN7WebCore12TextIterator7advanceEv
-__ZN7WebCore12TextIterator17handleNonTextNodeEv
-__ZN7WebCore24shouldEmitNewlineForNodeEPNS_4NodeE
-__ZN7WebCore12TextIterator23representNodeOffsetZeroEv
-__ZN7WebCore23shouldEmitTabBeforeNodeEPNS_4NodeE
-__ZN7WebCore11isTableCellEPKNS_4NodeE
-__ZN7WebCore27shouldEmitNewlineBeforeNodeEPNS_4NodeE
-__ZN7WebCore36shouldEmitNewlinesBeforeAndAfterNodeEPNS_4NodeE
-__ZN7WebCore12TextIterator29shouldRepresentNodeOffsetZeroEv
-__ZNK7WebCore4Node14isDescendantOfEPKS0_
-__ZN7WebCore12TextIterator33shouldEmitSpaceBeforeAndAfterNodeEPNS_4NodeE
-__ZNK7WebCore11RenderTable10cellBeforeEPKNS_15RenderTableCellE
-__ZNK7WebCore11RenderTable9cellAboveEPKNS_15RenderTableCellE
-__ZNK7WebCore11RenderTable12sectionAboveEPKNS_18RenderTableSectionEb
-__ZN7WebCore12TextIterator21handleReplacedElementEv
-__ZN7WebCore12TextIterator8exitNodeEv
-__ZN7WebCore12TextIterator13emitCharacterEtPNS_4NodeES2_ii
-__ZN7WebCore12TextIterator14handleTextNodeEv
-__ZN7WebCore12TextIterator13handleTextBoxEv
-__ZN7WebCore12TextIterator8emitTextEPNS_4NodeEii
-__ZN7WebCore26shouldEmitNewlineAfterNodeEPNS_4NodeE
-__ZN3WTF6VectorItLm0EE6shrinkEm
--[DOMRange dealloc]
-__ZN7WebCore5RangeD1Ev
-__ZN7WebCore9FrameView18updateControlTintsEv
-__ZNK7WebCore14RenderThemeMac20supportsControlTintsEv
-__ZN7WebCore15GraphicsContext23setUpdatingControlTintsEb
-__ZNK7WebCore14RenderThemeMac20controlSupportsTintsEPKNS_12RenderObjectE
-__ZN7WebCore14RenderThemeMac17adjustRepaintRectEPKNS_12RenderObjectERNS_7IntRectE
-__ZN7WebCore19SelectionController21pageActivationChangedEv
-__ZN7WebCore19SelectionController27focusedOrActiveStateChangedEv
-__ZNK7WebCore5Frame13selectionRectEb
-__ZNK7WebCore10RenderView13selectionRectEb
-__ZN7WebCore21rendererAfterPositionEPNS_12RenderObjectEj
-__ZN7WebCore9FloatRect9intersectERKS0_
-__ZN7WebCore5Frame15setCaretVisibleEb
-__ZN7WebCore12EventHandler27capsLockStateMayHaveChangedEv
-__ZNK7WebCore8Document32useSecureKeyboardEntryWhenActiveEv
-__ZN7WebCore5Frame20setSelectionFromNoneEv
-__ZN7WebCore5Frame22clearCaretRectIfNeededEv
-__ZN7WebCore19SelectionController19invalidateCaretRectEv
-__ZNK7WebCore19SelectionController17isInPasswordFieldEv
-__ZNK7WebCore11HistoryItem3urlEv
-__ZNK7WebCore11HistoryItem11originalURLEv
-__ZN7WebCore17BeforeUnloadEventC2Ev
--[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]
-__ZNK7WebCore11FrameLoader21isQuickRedirectComingEv
-__ZN7WebCore11FrameLoader23cachePageForHistoryItemEPNS_11HistoryItemE
-__ZN7WebCore10CachedPage6createEPNS_4PageE
-__ZN7WebCore10CachedPageC2EPNS_4PageE
-__ZNK7WebCore12EventHandler14mousePressNodeEv
-__ZN7WebCore8Document15willSaveToCacheEv
-__ZN3KJS6Window14retrieveWindowEPN7WebCore5FrameE
-__ZN3KJS6Window8retrieveEPN7WebCore5FrameE
-__ZN7WebCore16ScriptController10initScriptEv
-__ZN7WebCore11JSDOMWindowC2EPNS_9DOMWindowE
-__ZN7WebCore20JSDOMWindowPrototype4selfEv
-__ZN3KJS6WindowC2EPNS_8JSObjectEPN7WebCore9DOMWindowE
-__ZNK7WebCore11FrameLoader9userAgentERKNS_4KURLE
-__ZN7WebCore10StringImpl4findEPKcib
-__ZN7WebCore5Frame18windowScriptObjectEv
-__ZN7WebCore5Frame17bindingRootObjectEv
-+[WebScriptObject scriptObjectForJSObject:originRootObject:rootObject:]
-__ZN7WebCore16createDOMWrapperEPN3KJS8JSObjectEN3WTF10PassRefPtrINS0_8Bindings10RootObjectEEES7_
-__ZNK7WebCore11JSDOMWindow9classInfoEv
-+[DOMAbstractView(WebCoreInternal) _wrapAbstractView:]
--[DOMAbstractView(WebCoreInternal) _initWithDOMWindow:]
--[WebScriptObject _hasImp]
--[WebScriptObject _setImp:originRootObject:rootObject:]
-__ZN7WebCore12addJSWrapperEP8NSObjectPN3KJS8JSObjectE
-__ZNK3WTF7HashMapIPN3KJS8JSObjectEP8NSObjectNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
-__ZN7WebCore5Frame11clearTimersEv
-__ZN7WebCore5Frame11clearTimersEPNS_9FrameViewE
-__ZN7WebCore9FrameView18unscheduleRelayoutEv
-__ZN7WebCore11RenderLayer15suspendMarqueesEv
-__ZN7WebCore19AnimationController17suspendAnimationsEv
-__ZNK3KJS6Window8locationEv
-__ZN7WebCore10JSLocationC1EPN3KJS8JSObjectEPNS_5FrameE
-__ZN3KJS6Window13pauseTimeoutsEv
-__ZN7WebCore8Document14setInPageCacheEb
-__ZN7WebCore9FrameView15resetScrollbarsEv
-__ZN7WebCore10CachedPage17setTimeStampToNowEv
-__ZN7WebCore10CachedPage17setDocumentLoaderEN3WTF10PassRefPtrINS_14DocumentLoaderEEE
-__ZN7WebCore10CachedPage25setCachedPagePlatformDataEPNS_22CachedPagePlatformDataE
-__ZN7WebCore9PageCache3addEN3WTF10PassRefPtrINS_11HistoryItemEEENS2_INS_10CachedPageEEE
-__ZN7WebCore9PageCache12addToLRUListEPNS_11HistoryItemE
-__ZNK7WebCore8Document17formElementsStateEv
-__ZN3WTF6VectorIN7WebCore6StringELm0EE15reserveCapacityEm
-__ZNK7WebCore16HTMLInputElement9saveStateERNS_6StringE
-__ZNK7WebCore17HTMLSelectElement9saveStateERNS_6StringE
-__ZN3WTF6VectorIcLm1024EE6shrinkEm
-__ZNK7WebCore17HTMLSelectElement4typeEv
-__ZN7WebCore11HistoryItem16setDocumentStateERKN3WTF6VectorINS_6StringELm0EEE
-__ZN3WTF6VectorIN7WebCore6StringELm0EEaSERKS3_
-__ZN3WTF6VectorIN7WebCore6StringELm0EE6shrinkEm
-__ZN7WebCore11FrameLoader36saveScrollPositionAndViewStateToItemEPNS_11HistoryItemE
-__ZN7WebCore11HistoryItem14setScrollPointERKNS_8IntPointE
-__ZN7WebCore5Frame16clearScriptProxyEv
-__ZN7WebCore8KJSProxy5clearEv
-__ZN3KJS6Window5clearEv
-__ZN3KJS6Window16clearAllTimeoutsEv
-__ZN3WTF20deleteAllPairSecondsIPN3KJS14DOMWindowTimerEKNS_7HashMapIiS3_NS_7IntHashIjEENS_10HashTraitsIiEENS7_IS3_EEEEEEvRT0_
-__ZN3KJS6Window27clearHelperObjectPropertiesEv
-__ZN7WebCore12gcControllerEv
-__ZN7WebCore12GCControllerC2Ev
-__ZN7WebCore12GCController18garbageCollectSoonEv
-__ZN7WebCore5Frame14clearDOMWindowEv
-__ZN7WebCore9DOMWindow5clearEv
-__ZN7WebCore8KJSProxy20clearDocumentWrapperEv
-__ZN7WebCore5Frame18clearScriptObjectsEv
-__ZN7WebCore5Frame26clearPlatformScriptObjectsEv
--[WebScriptObject _setOriginRootObject:andRootObject:]
-__ZN7WebCore5Frame25setUseSecureKeyboardEntryEb
-__ZN7WebCore16DeprecatedString6insertEjc
-__ZN7WebCore8Document14setFocusedNodeEN3WTF10PassRefPtrINS_4NodeEEE
-__ZN7WebCore19TextResourceDecoder11setEncodingERKNS_12TextEncodingENS0_14EncodingSourceE
-__ZN7WebCore11TextDecoder5resetERKNS_12TextEncodingE
-__ZN7WebCore15metaConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore15HTMLMetaElementC2EPNS_8DocumentE
-__ZN7WebCore15HTMLMetaElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore15HTMLMetaElement7processEv
-__ZNK7WebCore15HTMLMetaElement17endTagRequirementEv
-__ZNK7WebCore15HTMLMetaElement11tagPriorityEv
-__ZN7WebCore15HTMLMetaElement20insertedIntoDocumentEv
-__ZN7WebCore8Document16processHttpEquivERKNS_6StringES3_
-__ZN7WebCore15linkConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore15HTMLLinkElementC2EPNS_8DocumentE
-__ZN7WebCore15HTMLLinkElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore15HTMLLinkElement20tokenizeRelAttributeERKNS_12AtomicStringE
-__ZN3WTF6VectorIN7WebCore6StringELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore6StringELm0EE14expandCapacityEm
-__ZN7WebCore15HTMLLinkElement7processEv
-__ZNK7WebCore15HTMLLinkElement17endTagRequirementEv
-__ZNK7WebCore15HTMLLinkElement11tagPriorityEv
-__ZN7WebCore15HTMLLinkElement20insertedIntoDocumentEv
-__ZN7WebCore17scriptConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLScriptElementC2EPNS_8DocumentE
-__ZN7WebCore17HTMLScriptElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore17HTMLScriptElement17endTagRequirementEv
-__ZNK7WebCore17HTMLScriptElement11tagPriorityEv
-__ZN7WebCore17HTMLScriptElement20insertedIntoDocumentEv
-__ZN7WebCore13HTMLTokenizer13scriptHandlerENS0_5StateE
-__ZN7WebCore9DocLoader13requestScriptERKNS_6StringES3_
-__ZN7WebCore12CachedScriptC2EPNS_9DocLoaderERKNS_6StringES5_
-__ZNK7WebCore19ResourceRequestBase15httpHeaderFieldERKNS_6StringE
-__ZN7WebCore17HTMLScriptElement21finishParsingChildrenEv
-__ZN7WebCore15SegmentedString7prependERKS0_
-__ZN7WebCore15SegmentedString7prependERKNS_18SegmentedSubstringE
-__ZN7WebCore12CachedScript3refEPNS_20CachedResourceClientE
--[WebCoreResourceHandleAsDelegate connection:willCacheResponse:]
-__ZN7WebCore14ResourceLoader17willCacheResponseEPNS_14ResourceHandleEP19NSCachedURLResponse
-__ZN7WebCore14ResourceLoader17willCacheResponseEPNS_14ResourceHandleERNS_18CacheStoragePolicyE
-__ZN7WebCore4KURL11setProtocolERKNS_16DeprecatedStringE
-__ZN7WebCoreplERKNS_16DeprecatedStringEPKc
-__ZN7WebCore4KURL7setHostERKNS_16DeprecatedStringE
-__ZN7WebCore12TextCodecICU6encodeEPKtmb
-__ZN7WebCore7CStringC2EPKcj
+__ZN7WebCore11BitmapImage14startAnimationEb
+__ZN7WebCore11BitmapImage13shouldAnimateEv
+__ZThn392_N7WebCore11CachedImage18decodedSizeChangedEPKNS_5ImageEi
+__ZN7WebCore11CachedImage18decodedSizeChangedEPKNS_5ImageEi
+__ZN7WebCore14CachedResource14setDecodedSizeEj
+__ZN7WebCore5Cache32insertInLiveDecodedResourcesListEPNS_14CachedResourceE
+__ZN7WebCore11BitmapImage21mayFillWithSolidColorEv
+__ZNK7WebCore11BitmapImage16currentFrameSizeEv
+__ZThn392_N7WebCore11CachedImage7didDrawEPKNS_5ImageE
+__ZN7WebCore11CachedImage7didDrawEPKNS_5ImageE
+__ZN7WebCore14CachedResource20didAccessDecodedDataEd
+__ZN7WebCore5Cache34removeFromLiveDecodedResourcesListEPNS_14CachedResourceE
+__ZNK7WebCore13RootInlineBox16paintEllipsisBoxERNS_12RenderObject9PaintInfoEii
+__ZN3WTF11ListHashSetIPN7WebCore12RenderInlineENS_7PtrHashIS3_EEE14deleteAllNodesEv
+__ZN7WebCore9RenderBox16overflowClipRectEii
+__ZNK7WebCore11RenderLayer22verticalScrollbarWidthEv
+__ZNK7WebCore11RenderLayer25horizontalScrollbarHeightEv
+__ZNK7WebCore11RenderLayer11boundingBoxEPKS0_
+__ZNK7WebCore11RenderLayer16localBoundingBoxEv
+__ZN7WebCore13InlineTextBox5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore13InlineTextBox14selectionStateEv
+__ZN7WebCore13InlineTextBox20paintDocumentMarkersEPNS_15GraphicsContextEiiPNS_11RenderStyleERKNS_4FontEb
+__ZN7WebCore8Document14markersForNodeEPNS_4NodeE
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore4NodeEEEPSt4pairINS_6VectorINS2_14DocumentMarkerELm0EEENS6_INS2_7IntRectELm0EEEENS_7PtrHa
+__ZNK7WebCore13InlineTextBox7textPosEv
+__ZN7WebCore21updateGraphicsContextEPNS_15GraphicsContextERKNS_5ColorES4_f
+__ZN7WebCoreL20paintTextWithShadowsEPNS_15GraphicsContextERKNS_4FontERKNS_7TextRunEiiRKNS_8IntPointEiiiiPNS_10ShadowDataEb
+__ZN7WebCore15GraphicsContext8drawTextERKNS_4FontERKNS_7TextRunERKNS_8IntPointEii
+__ZNK7WebCore13RootInlineBox5blockEv
+__ZN7WebCore15GraphicsContext4clipERKNS_9FloatRectE
+__ZN7WebCore11RenderLayer21paintOverflowControlsEPNS_15GraphicsContextEiiRKNS_7IntRectE
+__ZN7WebCore11RenderLayer17paintScrollCornerEPNS_15GraphicsContextEiiRKNS_7IntRectE
+__ZN7WebCoreL16scrollCornerRectEPKNS_11RenderLayerERKNS_7IntRectE
+__ZN7WebCore11RenderLayer12paintResizerEPNS_15GraphicsContextEiiRKNS_7IntRectE
+__ZN7WebCore14RenderFieldset19paintBoxDecorationsERNS_12RenderObject9PaintInfoEii
+__ZNK7WebCore11RenderBlock15borderFitAdjustERiS1_
+__ZN7WebCore20RenderBoxModelObject14paintBoxShadowEPNS_15GraphicsContextEiiiiPKNS_11RenderStyleEbb
+__ZN7WebCore20RenderBoxModelObject11paintBorderEPNS_15GraphicsContextEiiiiPKNS_11RenderStyleEbb
+__ZN7WebCore20RenderBoxModelObject19paintNinePieceImageEPNS_15GraphicsContextEiiiiPKNS_11RenderStyleERKNS_14NinePieceImageENS_1
+__ZN7WebCore12RenderObject18drawLineForBoxSideEPNS_15GraphicsContextEiiiiNS_7BoxSideENS_5ColorERKS4_NS_12EBorderStyleEii
+__ZN7WebCore15GraphicsContext14setStrokeStyleERKNS_11StrokeStyleE
+__ZN7WebCore15GraphicsContext8drawRectERKNS_7IntRectE
+__ZNK7WebCore15GraphicsContext11strokeStyleEv
+__ZN7WebCore27RenderTextControlSingleLine5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore11RenderTheme5paintEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZNK7WebCore15GraphicsContext20updatingControlTintsEv
+__ZN7WebCore11RenderTheme16paintDecorationsEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore11RenderTheme15paintBorderOnlyEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore14RenderThemeMac14paintTextFieldEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore27LocalCurrentGraphicsContextC1EPNS_15GraphicsContextE
+__ZN7WebCore27LocalCurrentGraphicsContextC2EPNS_15GraphicsContextE
+__ZNK7WebCore11RenderTheme9isEnabledEPKNS_12RenderObjectE
+__ZNK7WebCore11RenderTheme17isReadOnlyControlEPKNS_12RenderObjectE
+__ZN7WebCore27LocalCurrentGraphicsContextD1Ev
+__ZN7WebCore27LocalCurrentGraphicsContextD2Ev
+__ZN7WebCore9RenderBox15popContentsClipERNS_12RenderObject9PaintInfoENS_10PaintPhaseEii
+__ZN7WebCore14RenderThemeMac13paintMenuListEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore14RenderThemeMac23setPopupButtonCellStateEPKNS_12RenderObjectERKNS_7IntRectE
+__ZNK7WebCore14RenderThemeMac11popupButtonEv
+__ZNK7WebCore14RenderThemeMac16popupButtonSizesEv
+__ZN7WebCore14RenderThemeMac14setControlSizeEP6NSCellPKNS_7IntSizeERS4_f
+__ZN7WebCore14RenderThemeMac18updateCheckedStateEP6NSCellPKNS_12RenderObjectE
+__ZNK7WebCore11RenderTheme15isIndeterminateEPKNS_12RenderObjectE
+__ZNK7WebCore11RenderTheme9isCheckedEPKNS_12RenderObjectE
+__ZN7WebCore14RenderThemeMac18updateEnabledStateEP6NSCellPKNS_12RenderObjectE
+__ZN7WebCore14RenderThemeMac18updatePressedStateEP6NSCellPKNS_12RenderObjectE
+__ZN7WebCore14RenderThemeMac18updateFocusedStateEP6NSCellPKNS_12RenderObjectE
+__ZNK7WebCore11RenderTheme9isFocusedEPKNS_12RenderObjectE
+__ZNK7WebCore14RenderThemeMac18popupButtonMarginsEv
+__ZNK7WebCore14RenderThemeMac11inflateRectERKNS_7IntRectERKNS_7IntSizeEPKif
+__ZNK7WebCore14RenderMenuList15controlClipRectEii
+__ZNK7WebCore11RenderTheme24controlStatesForRendererEPKNS_12RenderObjectE
+__ZNK7WebCore11RenderTheme9isHoveredEPKNS_12RenderObjectE
+__ZNK7WebCore11RenderTheme9isPressedEPKNS_12RenderObjectE
+__ZThn128_NK7WebCore16HTMLInputElement9isCheckedEv
+__ZNK7WebCore16HTMLInputElement9isCheckedEv
+__ZNK7WebCore11RenderTheme8isActiveEPKNS_12RenderObjectE
+__ZThn128_NK7WebCore16HTMLInputElement15isIndeterminateEv
+__ZNK7WebCore16HTMLInputElement15isIndeterminateEv
+__ZNK7WebCore8ThemeMac5paintENS_11ControlPartEjPNS_15GraphicsContextERKNS_7IntRectEfPNS_10ScrollViewE
+__ZN7WebCoreL6buttonENS_11ControlPartEjRKNS_7IntRectEf
+__ZN7WebCoreL14setControlSizeEP6NSCellPKNS_7IntSizeERS3_f
+__ZN7WebCoreL12updateStatesEP6NSCellj
+__ZN7WebCoreL13buttonMarginsEm
+__ZN7WebCoreL11inflateRectERKNS_7IntRectERKNS_7IntSizeEPKif
+__ZNK7WebCore12RenderButton15controlClipRectEii
+__ZN7WebCore20CachedResourceClient14notifyFinishedEPNS_14CachedResourceE
+__ZNK7WebCore9Tokenizer10wellFormedEv
+__ZN7WebCore11FrameLoader15startIconLoaderEv
+__ZN7WebCore11FrameLoader7iconURLEv
__ZN7WebCore12IconDatabase22loadDecisionForIconURLERKNS_6StringEPNS_14DocumentLoaderE
__ZN7WebCore11FrameLoader27commitIconURLToIconDatabaseERKNS_4KURLE
__ZN7WebCore12IconDatabase20setIconURLForPageURLERKNS_6StringES3_
-__ZNK7WebCore13PageURLRecord8snapshotEb
-__ZN3WTF7HashMapIN7WebCore6StringENS1_15PageURLSnapshotENS1_10StringHashENS_10HashTraitsIS2_EENS5_IS3_EEE3setERKS2_RKS3_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_15PageURLSnapshotEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IS5_EEEESC_E3addINS1_6StringES5_NS_17HashMapTranslatorILb0ES4_ISH_S5_ENS_18PairBaseHashTraitsINSB_ISH_EESD_EESE_S9_EEEES4_INS_17HashTableIteratorIS3_S6_S8_S9_SE_SC_EEbERKT_RKT0_
-__ZN7WebCore12IconDatabase24scheduleOrDeferSyncTimerEv
__ZNK7WebCore11FrameLoader18originalRequestURLEv
-__ZNK7WebCore14DocumentLoader14initialRequestEv
__ZN7WebCore12IconDatabase23iconDataKnownForIconURLERKNS_6StringE
-__ZN7WebCore10IconRecord15imageDataStatusEv
-__ZN3WTF7HashSetIPN7WebCore10IconRecordENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore12IconDatabase14wakeSyncThreadEv
-__ZN7WebCore15ThreadCondition6signalEv
-__ZN3WTF6VectorIPN7WebCore10IconRecordELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore10IconRecordELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore10IconRecordELm0EE15reserveCapacityEm
-__ZN7WebCore12IconDatabase37getImageDataForIconURLFromSQLDatabaseERKNS_6StringE
-__ZN7WebCore15SQLiteStatement8bindTextEiRKNS_6StringE
-_sqlite3_bind_text16
-_bindText
-_vdbeUnbind
-_accessPayload
-__ZN7WebCore15SQLiteStatement21getColumnBlobAsVectorEiRN3WTF6VectorIcLm0EEE
-_sqlite3_column_blob
-_sqlite3_column_bytes
-__ZN3WTF6VectorIcLm0EE6resizeEm
-__ZN7WebCore12SharedBufferC2Ev
-__ZN7WebCore12SharedBuffer6appendEPKci
-__ZN7WebCore12SharedBuffer25maybeTransferPlatformDataEv
-__ZN3WTF6VectorIcLm0EE6appendIcEEvPKT_m
-__ZN3WTF6VectorIcLm0EE14expandCapacityEmPKc
-__ZN7WebCore15SQLiteStatement5resetEv
-_sqlite3_reset
-__ZN7WebCore15AutodrainedPool5cycleEv
-__ZN3WTF6VectorIPN7WebCore10IconRecordELm0EE6shrinkEm
-__ZN3WTF6VectorIN7WebCore15PageURLSnapshotELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore15PageURLSnapshotELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore15PageURLSnapshotELm0EE15reserveCapacityEm
-__ZN7WebCore12IconDatabase33setIconURLForPageURLInSQLDatabaseERKNS_6StringES3_
-__ZN7WebCore12IconDatabase34getIconIDForIconURLFromSQLDatabaseERKNS_6StringE
-__ZN7WebCore15SQLiteStatement14getColumnInt64Ei
-_sqlite3_column_int64
-__ZN7WebCore12IconDatabase32setIconIDForPageURLInSQLDatabaseExRKNS_6StringE
-_sqlite3IdListAppend
-_sqlite3Insert
-_sqlite3ViewGetColumnNames
-_sqlite3BeginWriteOperation
-_autoIncBegin
-_sqlite3OpenTableAndIndices
-_sqlite3GenerateConstraintChecks
-_sqlite3GenerateRowDelete
-_sqlite3GenerateIndexKey
-_sqlite3CompleteInsertion
-_autoIncEnd
-__ZN7WebCore15SQLiteStatement9bindInt64Eix
-_sqlite3_bind_int64
-_pager_open_journal
-_unixSetFullSync
-_unixOpenDirectory
-_writeJournalHdr
-_sqlite3UnixRandomSeed
-_unixWrite
-_sqlite3PagerCommitPhaseOne
-_syncJournal
-_unixSync
-__ZN7WebCore17SubresourceLoader18didReceiveResponseERKNS_16ResourceResponseE
-__ZN7WebCore6Loader18didReceiveResponseEPNS_17SubresourceLoaderERKNS_16ResourceResponseE
-__ZNK7WebCore20ResourceResponseBase16textEncodingNameEv
-__ZN7WebCore17SubresourceLoader14didReceiveDataEPKcixb
-__ZN7WebCore6Loader14didReceiveDataEPNS_17SubresourceLoaderEPKci
-__ZN7WebCore17SubresourceLoader16didFinishLoadingEv
-__ZN7WebCore6Loader16didFinishLoadingEPNS_17SubresourceLoaderE
-__ZN7WebCore12CachedScript4dataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
-__ZN7WebCore5Cache10adjustSizeEbi
-__ZN7WebCore12CachedScript11checkNotifyEv
-__ZThn8_N7WebCore13HTMLTokenizer14notifyFinishedEPNS_14CachedResourceE
-__ZN7WebCore13HTMLTokenizer14notifyFinishedEPNS_14CachedResourceE
-__ZNK7WebCore21DeprecatedPtrListImpl8getFirstEv
-__ZN7WebCore21DeprecatedPtrListImpl11removeFirstEb
-__ZN7WebCore21DeprecatedPtrListImpl6removeEjb
-__ZN7WebCore14CachedResource5derefEPNS_20CachedResourceClientE
-__ZN7WebCore5Cache27removeFromLiveResourcesSizeEPNS_14CachedResourceE
-__ZN7WebCore14CachedResource20allReferencesRemovedEv
-__ZN7WebCore17HTMLScriptElement25shouldExecuteAsJavaScriptEv
-__ZN7WebCore16MIMETypeRegistry29isSupportedJavaScriptMIMETypeERKNS_6StringE
-__ZN7WebCore13HTMLTokenizer15scriptExecutionERKNS_6StringENS0_5StateES3_i
-__ZN7WebCore11FrameLoader13executeScriptERKNS_6StringEiS3_
-__ZN7WebCore8KJSProxy8evaluateERKNS_6StringEiS3_
-__ZN3KJS6Window10globalExecEv
-__ZN7WebCore5Frame9keepAliveEv
-__ZNK7WebCore6StringcvN3KJS7UStringEEv
-_pager_write_pagelist
-_pager_end_transaction
-_unixClose
-_binCompare
-__ZN3WTF6VectorIN7WebCore15PageURLSnapshotELm0EE6shrinkEm
-__ZN7WebCore12IconDatabase20pruneUnretainedIconsEv
-__ZNK3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_iENS_18PairFirstExtractorIS5_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSA_IaEEEESB_E8containsIS3_NS_22IdentityHashTranslatorIS3_S5_S8_EEEEbRKT_
-_sqlite3DeleteFrom
-_clearCell
-_freeSpace
-__ZN7WebCore11JSDOMWindow18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore11JSDOMWindow24customGetOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore11JSDOMWindow4implEv
-__ZNK7WebCore20JSDOMWindowPrototype9classInfoEv
-__ZN3KJS6Window18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN7WebCore12AtomicString3addERKN3KJS10IdentifierE
-__ZNK7WebCore9FrameTree5childERKNS_12AtomicStringE
-__ZNK3KJS6Window16allowsAccessFromEPNS_9ExecStateE
-__ZNK3KJS6Window16allowsAccessFromEPKNS_14JSGlobalObjectERN7WebCore14SecurityOrigin6ReasonERNS4_6StringE
-__ZN7WebCore12HTMLDocument12hasNamedItemERKNS_6StringE
-__ZNK3WTF7HashMapIPN7WebCore10StringImplEiNS1_10StringHashENS_10HashTraitsIS3_EENS5_IiEEE3getERKS3_
-__ZNK7WebCore8Document14getElementByIdERKNS_12AtomicStringE
-__ZN7WebCore20JSDOMWindowPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK3KJS14JSGlobalObject14isGlobalObjectEv
-__ZN3KJS17staticValueGetterIN7WebCore11JSDOMWindowEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore11JSDOMWindow16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore9DOMWindow4selfEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_9DOMWindowE
-__ZN3KJS17staticValueGetterINS_6WindowEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS6Window16getValuePropertyEPNS_9ExecStateEi
-__ZN3KJS9NavigatorC1EPNS_8JSObjectEPN7WebCore5FrameE
-__ZN3KJS9Navigator18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS17staticValueGetterINS_9NavigatorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS9Navigator16getValuePropertyEPNS_9ExecStateEi
-__ZNK7WebCore9DOMWindow8documentEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_8DocumentE
-__ZN3KJS17ScriptInterpreter12getDOMObjectEPv
-__ZNK3WTF7HashMapIPvPN3KJS9DOMObjectENS_7PtrHashIS1_EENS_10HashTraitsIS1_EENS7_IS4_EEE3getERKS1_
-__ZN7WebCore23JSHTMLDocumentPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSDocumentPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSNodePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore14JSHTMLDocumentC1EPN3KJS8JSObjectEPNS_12HTMLDocumentE
-__ZN7WebCore10JSDocumentC1EPN3KJS8JSObjectEPNS_8DocumentE
-__ZN7WebCore17JSEventTargetNodeC2EPN3KJS8JSObjectEPNS_4NodeE
-__ZN7WebCore6JSNodeC1EPN3KJS8JSObjectEPNS_4NodeE
-__ZN3KJS17ScriptInterpreter12putDOMObjectEPvPNS_9DOMObjectE
-__ZN3WTF7HashMapIPvPN3KJS9DOMObjectENS_7PtrHashIS1_EENS_10HashTraitsIS1_EENS7_IS4_EEE3setERKS1_RKS4_
-__ZN7WebCore14JSHTMLDocument18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore14JSHTMLDocument18canGetItemsForNameEPN3KJS9ExecStateEPNS_12HTMLDocumentERKNS1_10IdentifierE
-__ZN7WebCore6StringC2ERKN3KJS10IdentifierE
-__ZN7WebCore12HTMLDocument20hasDocExtraNamedItemERKNS_6StringE
-__ZN7WebCore10JSDocument18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore17JSEventTargetNode18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore6JSNode18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore23JSHTMLDocumentPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore19JSDocumentPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS20staticFunctionGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN7WebCore13JSHTMLElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore22JSHTMLElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore40jsDocumentPrototypeFunctionCreateElementEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore14JSHTMLDocument9classInfoEv
-__ZN7WebCore6StringC2ERKN3KJS7UStringE
-__ZN7WebCore12HTMLDocument13createElementERKNS_6StringERi
-__ZN7WebCore8Document11isValidNameERKNS_6StringE
-__ZN7WebCore14divConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore14HTMLDivElementC2EPNS_8DocumentE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_11EventTargetE
-__ZN7WebCore11EventTarget20toSVGElementInstanceEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_4NodeEEE
-__ZN3KJS17ScriptInterpreter21getDOMNodeForDocumentEPN7WebCore8DocumentEPNS1_4NodeE
-__ZN7WebCore19createJSHTMLWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPFPNS1_6JSNodeEPN3KJS9ExecStateENS_10PassRefPtrINS1_11HTMLElementEEEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSG_ISD_EEE3getERKS3_
-__ZN7WebCore16createDivWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore25JSHTMLDivElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSHTMLDivElementC1EPN3KJS8JSObjectEPNS_14HTMLDivElementE
-__ZN7WebCore13JSHTMLElementC1EPN3KJS8JSObjectEPNS_11HTMLElementE
-__ZN7WebCore9JSElementC1EPN3KJS8JSObjectEPNS_7ElementE
-__ZN3KJS17ScriptInterpreter21putDOMNodeForDocumentEPN7WebCore8DocumentEPNS1_4NodeEPNS1_6JSNodeE
-__ZNK3WTF7HashMapIPN7WebCore8DocumentEPNS0_IPNS1_4NodeEPNS1_6JSNodeENS_7PtrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEEENS8_IS3_EENSA_IS3_EENSA_ISE_EEE3getERKS3_
-__ZNK3WTF7HashMapIPN7WebCore4NodeEPNS1_6JSNodeENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
-__ZN3KJS15setDOMExceptionEPNS_9ExecStateEi
-__ZN7WebCore16JSHTMLDivElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore13JSHTMLElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore9JSElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore15formConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17createFormWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore26JSHTMLFormElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLFormElementC1EPN3KJS8JSObjectEPNS_15HTMLFormElementE
-__ZN7WebCore17JSHTMLFormElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore13JSHTMLElement4implEv
-__ZNK7WebCore9JSElement4implEv
-__ZN7WebCore17JSHTMLFormElement18canGetItemsForNameEPN3KJS9ExecStateEPNS_15HTMLFormElementERKNS1_10IdentifierE
-__ZN7WebCore15HTMLFormElement16getNamedElementsERKNS_12AtomicStringERN3WTF6VectorINS4_6RefPtrINS_4NodeEEELm0EEE
-__ZNK7WebCore14HTMLCollection10namedItemsERKNS_12AtomicStringERN3WTF6VectorINS4_6RefPtrINS_4NodeEEELm0EEE
-__ZNK7WebCore18HTMLFormCollection15updateNameCacheEv
-__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS_6VectorIPNS1_7ElementELm0EEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSB_IS8_EEE3addERKS3_RKS8_
-__ZN7WebCore15HTMLFormElement15elementForAliasERKNS_12AtomicStringE
-__ZN3KJS8JSObject18isActivationObjectEv
-__ZN7WebCore41jsDocumentPrototypeFunctionCreateTextNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document14createTextNodeERKNS_6StringE
-__ZN7WebCore15JSTextPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore24JSCharacterDataPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore6JSTextC1EPN3KJS8JSObjectEPNS_4TextE
-__ZN7WebCore15JSCharacterDataC2EPN3KJS8JSObjectEPNS_13CharacterDataE
-__ZN3KJS8JSObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN7WebCore18JSElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore22JSEventTargetPrototypeINS_15JSNodePrototypeENS_33JSEventTargetPrototypeInformationEE18getOwnPropertySlotEPN3KJS9ExecStateERKNS4_10IdentifierERNS4_12PropertySlotE
-__ZN7WebCore15JSNodePrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore34jsNodePrototypeFunctionAppendChildEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore16JSHTMLDivElement9classInfoEv
-__ZN7WebCore6JSNode11appendChildEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore6toNodeEPN3KJS7JSValueE
-__ZNK7WebCore6JSText9classInfoEv
-__ZN7WebCore13ContainerNode11appendChildEN3WTF10PassRefPtrINS_4NodeEEERi
-__ZN7WebCore4Node13checkAddChildEPS0_Ri
-__ZN7WebCore4Node14isReadOnlyNodeEv
-__ZN7WebCore28dispatchChildInsertionEventsEPNS_4NodeERi
-__ZN7WebCore15EventTargetNode28dispatchSubtreeModifiedEventEb
-__ZN7WebCore4Node30notifyNodeListsChildrenChangedEv
-__ZN7WebCore4Node35notifyLocalNodeListsChildrenChangedEv
-__ZN7WebCore14JSHTMLDocument3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore10JSDocument3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore17JSEventTargetNode3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore6JSNode3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore6JSNode14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore17JSNodeConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore17JSNodeConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSNodeConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore9JSElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore11JSDOMWindow3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore11JSDOMWindow9customPutEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore11JSDOMWindow16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZNK7WebCore20JSElementConstructor9classInfoEv
-__ZN7WebCore20JSElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore7JSEvent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore16JSEventPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSEventConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore24JSHTMLElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS26windowProtoFuncSetIntervalEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS6Window14installTimeoutEPNS_7JSValueERKNS_4ListEib
-__ZN7WebCore15ScheduledActionC1EPN3KJS7JSValueERKNS1_4ListE
-__ZN3KJS12ProtectedPtrINS_7JSValueEEC2EPS1_
-__ZN3KJS6Window14installTimeoutEPN7WebCore15ScheduledActionEib
-__ZN3WTF7HashMapIiPN3KJS14DOMWindowTimerENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE4takeERKi
-__ZNK3KJS8JSObject21masqueradeAsUndefinedEv
-__ZN3KJS6Window3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZN3KJS31windowProtoFuncAddEventListenerEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS6Window27findOrCreateJSEventListenerEPNS_7JSValueEb
-__ZN3KJS6Window19findJSEventListenerEPNS_7JSValueEb
-__ZN3WTF7HashMapIPN3KJS8JSObjectEPN7WebCore15JSEventListenerENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3setERKS3_RKS6_
-__ZN7WebCore15JSEventListenerC2EPN3KJS8JSObjectEPNS1_6WindowEb
-__ZN7WebCore23JSAbstractEventListenerC2Eb
-__ZN3KJS12ProtectedPtrINS_8JSObjectEEC2EPS1_
-__ZN3KJS12ProtectedPtrINS_6WindowEEC2EPS1_
-__ZN3KJS6Window16jsEventListenersEv
-__ZN7WebCore12AtomicString3addERKN3KJS7UStringE
-__ZN7WebCore8Document22addWindowEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
-__ZN7WebCore8Document25removeWindowEventListenerERKNS_12AtomicStringEPNS_13EventListenerEb
-__ZN7WebCore23RegisteredEventListenerC2ERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
-__ZN3KJS6Window4markEv
-__ZN7WebCore6JSNode4markEv
-__ZN7WebCore10JSDocument4markEv
-__ZN3KJS17ScriptInterpreter23markDOMNodesForDocumentEPN7WebCore8DocumentE
-__ZN3KJS17ScriptInterpreter24forgetDOMNodeForDocumentEPN7WebCore8DocumentEPNS1_4NodeE
-__ZN7WebCore14HTMLDivElementD1Ev
-__ZN7WebCore17JSHTMLFormElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore28JSHTMLFormElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore18JSHTMLInputElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore27JSHTMLInputElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore31JSHTMLInputElementBasePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore29JSHTMLInputElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore19JSHTMLSelectElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore28JSHTMLSelectElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore30JSHTMLSelectElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore21JSHTMLTextAreaElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore16MIMETypeRegistry26getSupportedImageMIMETypesEv
-__ZN7WebCore15PluginInfoStore32createPluginInfoForPluginAtIndexEj
-__ZN3WTF6VectorIPN7WebCore13MimeClassInfoELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore13MimeClassInfoELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore13MimeClassInfoELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIPN7WebCore10PluginInfoELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore10PluginInfoELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore10PluginInfoELm0EE15reserveCapacityEm
-__ZN3KJS7Plugins18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS17staticValueGetterINS_7PluginsEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS7Plugins16getValuePropertyEPNS_9ExecStateEi
-__ZN3KJS7Plugins11indexGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS6Plugin18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS17staticValueGetterINS_6PluginEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS6Plugin16getValuePropertyEPNS_9ExecStateEi
-__ZNK3KJS8JSObject11toPrimitiveEPNS_9ExecStateENS_6JSTypeE
-__ZN7WebCore27jsLocationProtoFuncToStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore10JSLocation9classInfoEv
-__ZNK7WebCore4KURL7hasPathEv
-__ZNK7WebCore4KURL9prettyURLEv
-__ZN7WebCoreplEPKcRKNS_16DeprecatedStringE
-__ZNK7WebCore8Document8referrerEv
-__ZNK7WebCore11FrameLoader8referrerEv
-__ZN3KJS10PluginBaseD0Ev
-__ZN3WTF6VectorIPN7WebCore7ElementELm0EE6shrinkEm
-__ZN3KJS6Window15namedItemGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN7WebCore8Document16windowNamedItemsERKNS_6StringE
-__ZN7WebCore18HTMLNameCollectionC1EN3WTF10PassRefPtrINS_8DocumentEEENS_14HTMLCollection4TypeERKNS_6StringE
-__ZN7WebCore8Document18nameCollectionInfoENS_14HTMLCollection4TypeERKNS_12AtomicStringE
-__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_14HTMLCollection14CollectionInfoENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3addERKS3_RKS6_
-__ZNK7WebCore18HTMLNameCollection9itemAfterEPNS_7ElementE
-__ZNK7WebCore14HTMLCollection9firstItemEv
-__ZN7WebCore18JSHTMLImageElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore18JSHTMLImageElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore16HTMLImageElement6setSrcERKNS_6StringE
-__ZN7WebCore7Element12setAttributeERKNS_13QualifiedNameERKNS_6StringE
-__ZN7WebCore7Element12setAttributeERKNS_13QualifiedNameEPNS_10StringImplERi
-__ZN7WebCore12NamedAttrMap14isReadOnlyNodeEv
-__ZN7WebCore13StyledElement15createAttributeERKNS_13QualifiedNameEPNS_10StringImplE
-__ZN7WebCore7Element25dispatchAttrAdditionEventEPNS_9AttributeE
-__ZN7WebCore4Node31notifyNodeListsAttributeChangedEv
-__ZN7WebCore4Node36notifyLocalNodeListsAttributeChangedEv
-__ZNK7WebCore15ProgressTracker17estimatedProgressEv
-__ZN7WebCore5TimerINS_9FrameViewEE5firedEv
-__ZN7WebCore9FrameView16layoutTimerFiredEPNS_5TimerIS0_EE
-__ZNK7WebCore12RenderObject33expandsToEncloseOverhangingFloatsEv
-__ZN7WebCore11RenderBlock13containsFloatEPNS_12RenderObjectE
-__ZN7WebCore11RenderBlock22insertPositionedObjectEPNS_12RenderObjectE
-__ZN3WTF11ListHashSetIPN7WebCore12RenderObjectENS_7PtrHashIS3_EEE3addERKS3_
-__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore12RenderObjectEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashFunctionsIS4_NS_7PtrHashIS4_EEEENS_10HashTraitsIS6_EESE_E3addIS4_PNS_24ListHashSetNodeAllocatorIS4_EENS_21ListHashSetTranslatorIS4_SB_EEEESt4pairINS_17HashTableIteratorIS6_S6_S8_SC_SE_SE_EEbERKT_RKT0_
-__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore12RenderObjectEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashFunctionsIS4_NS_7PtrHashIS4_EEEENS_10HashTraitsIS6_EESE_E6expandEv
-__ZN3WTF11ListHashSetIPN7WebCore12RenderObjectENS_7PtrHashIS3_EEE10appendNodeEPNS_15ListHashSetNodeIS3_EE
-__ZN7WebCore11RenderBlock21adjustPositionedBlockEPNS_12RenderObjectERKNS0_10MarginInfoE
-__ZNK7WebCore12RenderObject10hasStaticXEv
-__ZN7WebCore9RenderBox22calcAbsoluteHorizontalEv
-__ZNK7WebCore9RenderBox33containingBlockWidthForPositionedEPKNS_12RenderObjectE
-__ZN7WebCore9RenderBox28calcAbsoluteHorizontalValuesENS_6LengthEPKNS_12RenderObjectENS_13TextDirectionEiiS1_S1_S1_S1_RiS6_S6_S6_
-__ZNK7WebCore25HTMLTextFieldInnerElement12isShadowNodeEv
-__ZN7WebCore9RenderBox20calcAbsoluteVerticalEv
-__ZNK7WebCore9RenderBox34containingBlockHeightForPositionedEPKNS_12RenderObjectE
-__ZN7WebCore9RenderBox26calcAbsoluteVerticalValuesENS_6LengthEPKNS_12RenderObjectEiiS1_S1_S1_S1_RiS5_S5_S5_
-__ZNK7WebCore9RenderBox23relativePositionOffsetXEv
-__ZNK7WebCore9RenderBox23relativePositionOffsetYEv
-__ZN7WebCore9InlineBoxD1Ev
-__ZNK7WebCore11RenderLayer27enclosingPositionedAncestorEv
-__ZN7WebCore5TimerINS_13HTMLTokenizerEE5firedEv
-__ZN7WebCore13HTMLTokenizer10timerFiredEPNS_5TimerIS0_EE
-__ZNK7WebCore9RenderBox16inlineBoxWrapperEv
-__ZN7WebCore11RenderBlock17deleteLineBoxTreeEv
-__ZN7WebCore15RenderContainer13moveChildNodeEPNS_12RenderObjectE
-__ZN7WebCore20paragraphConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore20HTMLParagraphElementC2EPNS_8DocumentE
-__ZNK7WebCore20HTMLParagraphElement17endTagRequirementEv
-__ZNK7WebCore20HTMLParagraphElement11tagPriorityEv
-__ZN7WebCore20HTMLParagraphElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore11HTMLElement15inInlineTagListEPKNS_4NodeE
-__ZNK7WebCore20HTMLParagraphElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore20HTMLParagraphElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore11HTMLElement20setHTMLEventListenerERKNS_12AtomicStringEPNS_9AttributeE
-__ZN7WebCore8Document23createHTMLEventListenerERKNS_6StringES3_PNS_4NodeE
-__ZN7WebCore8KJSProxy22createHTMLEventHandlerERKNS_6StringES3_PNS_4NodeE
-__ZN7WebCore19JSLazyEventListenerC2ERKNS_6StringES3_PN3KJS6WindowEPNS_4NodeEi
-__ZN7WebCore15EventTargetNode20setHTMLEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEE
-__ZN7WebCore15EventTargetNode23removeHTMLEventListenerERKNS_12AtomicStringE
-__ZN7WebCore8Document42registerDisconnectedNodeWithEventListenersEPNS_4NodeE
-__ZN3WTF7HashSetIPN7WebCore4NodeENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore8Document44unregisterDisconnectedNodeWithEventListenersEPNS_4NodeE
-__ZN7WebCore23JSAbstractEventListener11handleEventEPNS_5EventEb
-__ZNK7WebCore15JSEventListener11listenerObjEv
-__ZNK7WebCore15JSEventListener9windowObjEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_5EventE
-__ZNK7WebCore5Event15isKeyboardEventEv
-__ZNK7WebCore5Event11isTextEventEv
-__ZNK7WebCore5Event12isWheelEventEv
+__ZN7WebCore19AnimationController16resumeAnimationsEPNS_8DocumentE
+__ZN7WebCore26AnimationControllerPrivate16resumeAnimationsEPNS_8DocumentE
+__ZN7WebCore26AnimationControllerPrivate20updateAnimationTimerEb
+__ZN7WebCore11ImageLoader25dispatchPendingLoadEventsEv
+__ZN7WebCore8Document17dispatchLoadEventEv
+__ZN7WebCore9DOMWindow17dispatchLoadEventEv
+__ZN7WebCore15JSEventListener11handleEventEPNS_5EventEb
+__ZNK7WebCore15JSEventListener10jsFunctionEv
+__ZNK7WebCore15JSDOMWindowBase22scriptExecutionContextEv
+__ZThn88_NK7WebCore8Document10isDocumentEv
+__ZNK7WebCore8Document10isDocumentEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_5EventE
__ZNK7WebCore5Event9isUIEventEv
__ZNK7WebCore5Event15isMutationEventEv
__ZNK7WebCore5Event15isOverflowEventEv
__ZNK7WebCore5Event14isMessageEventEv
__ZNK7WebCore5Event15isProgressEventEv
-__ZN7WebCore7JSEventC1EPN3KJS8JSObjectEPNS_5EventE
-__ZN3KJS6Window15setCurrentEventEPN7WebCore5EventE
-__ZN3KJS27windowProtoFuncClearTimeoutEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS6Window12clearTimeoutEib
-__ZN3KJS14DOMWindowTimerD1Ev
-__ZN3KJS12ProtectedPtrINS_7JSValueEED2Ev
-__ZN7WebCore47jsDocumentPrototypeFunctionGetElementsByTagNameEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_8NodeListE
-__ZN7WebCore19JSNodeListPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore10JSNodeListC1EPN3KJS8JSObjectEPNS_8NodeListE
-__ZN7WebCore10JSNodeList18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore10JSNodeListEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore10JSNodeList16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore10JSNodeList11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZNK7WebCore15DynamicNodeList4itemEj
-__ZNK7WebCore15DynamicNodeList23itemForwardsFromCurrentEPNS_4NodeEji
-__ZN7WebCore18createInputWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore18JSHTMLInputElementC1EPN3KJS8JSObjectEPNS_16HTMLInputElementE
-__ZN7WebCore22JSHTMLInputElementBaseC2EPN3KJS8JSObjectEN3WTF10PassRefPtrINS_16HTMLInputElementEEE
-__ZN7WebCore18JSHTMLInputElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore22JSHTMLInputElementBase18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore16HTMLInputElement16canHaveSelectionEv
-__ZN7WebCore27JSHTMLInputElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore31JSHTMLInputElementBasePrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore13JSHTMLElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore13JSHTMLElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore11HTMLElement9classNameEv
-__ZN7WebCore12RenderObject16setStyleInternalEPNS_11RenderStyleE
-__ZN3WTF6VectorIPN3KJS7JSValueELm8EE6shrinkEm
-__ZN7WebCore11LayoutStatenwEmPNS_11RenderArenaE
-__ZN7WebCore11LayoutStateC2EPS0_PNS_9RenderBoxERKNS_7IntSizeE
-__ZN7WebCore11RenderBlock20determineEndPositionEPNS_13RootInlineBoxERNS_12BidiIteratorERNS_10BidiStatusERi
-__ZN7WebCore13InlineFlowBox10deleteLineEPNS_11RenderArenaE
-__ZN7WebCore9InlineBox10deleteLineEPNS_11RenderArenaE
-__ZN7WebCore9RenderBox19setInlineBoxWrapperEPNS_9InlineBoxE
-__ZN7WebCore10RenderFlow13removeLineBoxEPNS_13InlineFlowBoxE
-__ZN7WebCore11LayoutState7destroyEPNS_11RenderArenaE
-__ZN7WebCore11LayoutStatedlEPvm
-__ZN7WebCore12RenderObject26repaintAfterLayoutIfNeededERKNS_7IntRectES3_
-__ZNK7WebCore12RenderObject29mustRepaintBackgroundOrBorderEv
-__ZN7WebCore9FrameView14addRepaintInfoEPNS_12RenderObjectERKNS_7IntRectE
-__ZN3WTF6VectorIN7WebCore12RenderObject11RepaintInfoELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIN7WebCore12RenderObject11RepaintInfoELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore12RenderObject11RepaintInfoELm0EE15reserveCapacityEm
-__ZN7WebCore9RenderBox26repaintDuringLayoutIfMovedERKNS_7IntRectE
-__ZN7WebCore11RenderBlock24repaintOverhangingFloatsEb
-__ZNK7WebCore12RenderObject14isDescendantOfEPKS0_
-__ZN7WebCore11RenderBlock37markAllDescendantsWithFloatsForLayoutEPNS_12RenderObjectE
-__ZN7WebCore11RenderBlock18addIntrudingFloatsEPS0_ii
-__ZN7WebCore12RenderObject24repaintOverhangingFloatsEb
-__ZN7WebCore11RenderBlock19adjustFloatingBlockERKNS0_10MarginInfoE
-__ZNK7WebCore11RenderBlock18nearestFloatBottomEi
-__ZN7WebCore12RenderObject16repaintRectangleERKNS_7IntRectEb
-__ZN3WTF6VectorIN7WebCore12RenderObject11RepaintInfoELm0EE6shrinkEm
-__ZN7WebCore13compareZIndexEPNS_11RenderLayerES1_
-__ZSt25__unguarded_linear_insertIPPN7WebCore11RenderLayerES2_PFbS2_S2_EEvT_T0_T1_
-__ZSt5mergeIPPN7WebCore11RenderLayerES3_S3_PFbS2_S2_EET1_T_S7_T0_S8_S6_T2_
-__ZN7WebCore9nullImageEv
-__ZN7WebCore12RenderObject11paintBorderEPNS_15GraphicsContextEiiiiPKNS_11RenderStyleEbb
-__ZN7WebCore12RenderObject10drawBorderEPNS_15GraphicsContextEiiiiNS0_10BorderSideENS_5ColorERKS4_NS_12EBorderStyleEii
-__ZN7WebCore15GraphicsContext14drawTiledImageEPNS_5ImageERKNS_7IntRectERKNS_8IntPointERKNS_7IntSizeENS_17CompositeOperatorE
-__ZN7WebCore5Image9drawTiledEPNS_15GraphicsContextERKNS_9FloatRectERKNS_10FloatPointERKNS_9FloatSizeENS_17CompositeOperatorE
-__ZN7WebCore11BitmapImage26nativeImageForCurrentFrameEv
-__ZN7WebCore11ImageSource15repetitionCountEv
-__ZThn256_N7WebCore11CachedImage18decodedSizeChangedEPKNS_5ImageEi
-__ZN7WebCore11CachedImage18decodedSizeChangedEPKNS_5ImageEi
-__ZN7WebCore14CachedResource14setDecodedSizeEj
-__ZN7WebCore5Cache32insertInLiveDecodedResourcesListEPNS_14CachedResourceE
-__ZNK7WebCore5Image16hasRelativeWidthEv
-__ZNK7WebCore5Image17hasRelativeHeightEv
-__ZN7WebCore15AffineTransformC2Ev
-__ZN7WebCore15AffineTransform5scaleEdd
-__ZNK7WebCore9FloatRect8containsERKS0_
-__ZThn256_N7WebCore11CachedImage7didDrawEPKNS_5ImageE
-__ZN7WebCore11CachedImage7didDrawEPKNS_5ImageE
-__ZN7WebCore14CachedResource20didAccessDecodedDataEd
-__ZN7WebCore14RenderThemeMac16paintSearchFieldEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZNK7WebCore14RenderThemeMac6searchEv
-__ZN7WebCore14RenderThemeMac18setSearchCellStateEPNS_12RenderObjectERKNS_7IntRectE
-__ZNK7WebCore17RenderTextControl15controlClipRectEii
-__ZNK7WebCore12RenderObject10contentBoxEv
-__ZN7WebCore14RenderThemeMac26paintSearchFieldDecorationEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZNK7WebCore11RenderLayer11boundingBoxEPKS0_
-__ZNK7WebCore5Image4rectEv
-__ZNK7WebCore8Document4pageEv
-__ZNK7WebCore4Page34inLowQualityImageInterpolationModeEv
-__ZN7WebCore15GraphicsContext9drawImageEPNS_5ImageERKNS_7IntRectENS_17CompositeOperatorEb
-__ZN7WebCore11ImageSource20frameDurationAtIndexEm
-__ZN7WebCore11BitmapImage22invalidatePlatformDataEv
-__ZN7WebCore38jsDocumentPrototypeFunctionCreateEventEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document11createEventERKNS_6StringERi
-__ZN7WebCore5EventC2Ev
-__ZN7WebCore7JSEvent18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore16JSEventPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore33jsEventPrototypeFunctionInitEventEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore7JSEvent9classInfoEv
-__ZN7WebCore5Event9initEventERKNS_12AtomicStringEbb
-__ZN7WebCore7JSEvent3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore26jsEventTargetDispatchEventEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7toEventEPN3KJS7JSValueE
-__ZThn36_N7WebCore15EventTargetNode13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERib
-__ZN7WebCore5TimerINS_8DocumentEE5firedEv
-__ZN7WebCore8Document24imageLoadEventTimerFiredEPNS_5TimerIS0_EE
-__ZN3KJS30JSXMLHttpRequestConstructorImpC2EPNS_9ExecStateEPN7WebCore8DocumentE
-__ZN3KJS25JSXMLHttpRequestPrototype4selfEPNS_9ExecStateE
-__ZNK3KJS30JSXMLHttpRequestConstructorImp19implementsConstructEv
-__ZN3KJS30JSXMLHttpRequestConstructorImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS16JSXMLHttpRequestC1EPNS_8JSObjectEPN7WebCore8DocumentE
-__ZN7WebCore14XMLHttpRequestC2EPNS_8DocumentE
-__ZNK3WTF7HashMapIPN7WebCore8DocumentEPNS_7HashSetIPNS1_14XMLHttpRequestENS_7PtrHashIS6_EENS_10HashTraitsIS6_EEEENS7_IS3_EENS9_IS3_EENS9_ISC_EEE3getERKS3_
-__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E3addIPN7WebCore16AtomicStringImplESF_NS_17HashMapTranslatorILb1ES1_ISF_SF_ENS_18PairBaseHashTraitsINS8_ISF_EESJ_EESA_NS_7PtrHashISF_EEEEEES1_INS_17HashTableIteratorIiS2_S4_S6_SA_S9_EEbERKT_RKT0_
-__ZN3WTF7HashSetIPN7WebCore14XMLHttpRequestENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E3addIPN7WebCore5XPath4Step8NodeTestESD_NS_17HashSetTranslatorILb1ESD_NS5_ISD_EES6_NS_7PtrHashISD_EEEEEESt4pairINS_17HashTableIteratorIiiS2_S4_S6_S6_EEbERKT_RKT0_
-__ZNK3KJS16JSXMLHttpRequest9toBooleanEPNS_9ExecStateE
-__ZN3KJS16JSXMLHttpRequest18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS17staticValueGetterINS_16JSXMLHttpRequestEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS16JSXMLHttpRequest16getValuePropertyEPNS_9ExecStateEi
-__ZNK7WebCore14XMLHttpRequest13getReadyStateEv
-__ZN3KJS25JSXMLHttpRequestPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS37jsXMLHttpRequestPrototypeFunctionOpenEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS16JSXMLHttpRequest9classInfoEv
-__ZN3KJS6Window14retrieveActiveEPNS_9ExecStateE
-__ZN7WebCore16DeprecatedStringC2ERKN3KJS7UStringE
-__ZN7WebCore11FrameLoader11completeURLERKNS_6StringE
-__ZN7WebCore14XMLHttpRequest4openERKNS_6StringERKNS_4KURLEbRi
-__ZN7WebCore14XMLHttpRequest5abortEv
-__ZNK7WebCore14XMLHttpRequest24urlMatchesDocumentDomainERKNS_4KURLE
-__ZN7WebCore12isValidTokenERKNS_6StringE
-__ZNK7WebCore6String5upperEv
-__ZN7WebCore10StringImpl5upperEv
-__ZN7WebCore14XMLHttpRequest11changeStateENS_19XMLHttpRequestStateE
-__ZN7WebCore14XMLHttpRequest28callReadyStateChangeListenerEv
-__ZN7WebCore14XMLHttpRequest13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERib
-__ZN3KJS25windowProtoFuncSetTimeoutEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS16JSXMLHttpRequest3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEi
-__ZN3KJS16JSXMLHttpRequest16putValuePropertyEPNS_9ExecStateEiPNS_7JSValueEi
-__ZN3KJS6Window38findOrCreateJSUnprotectedEventListenerEPNS_7JSValueEb
-__ZN3KJS6Window30findJSUnprotectedEventListenerEPNS_7JSValueEb
-__ZN3WTF7HashMapIPN3KJS8JSObjectEPN7WebCore26JSUnprotectedEventListenerENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3setERKS3_RKS6_
-__ZN7WebCore26JSUnprotectedEventListenerC2EPN3KJS8JSObjectEPNS1_6WindowEb
-__ZN3KJS6Window31jsUnprotectedHTMLEventListenersEv
-__ZN7WebCore14XMLHttpRequest29setOnReadyStateChangeListenerEPNS_13EventListenerE
-__ZN3KJS49jsXMLHttpRequestPrototypeFunctionSetRequestHeaderEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore14XMLHttpRequest16setRequestHeaderERKNS_6StringES3_Ri
-__ZN7WebCore19canSetRequestHeaderERKNS_6StringE
-__ZNK3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_15CaseFoldingHashENS_10HashTraitsIS3_EES8_E8containsIS3_NS_22IdentityHashTranslatorIS3_S3_S6_EEEEbRKT_
-__ZN3KJS37jsXMLHttpRequestPrototypeFunctionSendEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore14XMLHttpRequest4sendERKNS_6StringERi
-__ZN7WebCore19ResourceRequestBase13setHTTPMethodERKNS_6StringE
-__ZN7WebCore19ResourceRequestBase19addHTTPHeaderFieldsERKN3WTF7HashMapINS_6StringES3_NS_15CaseFoldingHashENS1_10HashTraitsIS3_EES6_EE
-__ZN7WebCore19ResourceRequestBase18addHTTPHeaderFieldERKNS_6StringES3_
-__ZN7WebCore41jsDocumentPrototypeFunctionGetElementByIdEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore38jsElementPrototypeFunctionSetAttributeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZNK7WebCore5Event14isStorageEventEv
+__ZNK7WebCore5Event22isWebKitAnimationEventEv
+__ZNK7WebCore5Event23isWebKitTransitionEventEv
+__ZN7WebCore7JSEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN3JSC9Structure6createENS_7JSValueERKNS_8TypeInfoE
+__ZN7WebCore7JSEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_5EventEEE
+__ZN7WebCore7JSEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_5EventEEE
+__ZNK7WebCore17JSDOMGlobalObject12currentEventEv
+__ZN7WebCore17JSDOMGlobalObject15setCurrentEventEPNS_5EventE
+__ZN7WebCore14JSHTMLDocument18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore14JSHTMLDocument18canGetItemsForNameEPN3JSC9ExecStateEPNS_12HTMLDocumentERKNS1_10IdentifierE
+__ZN7WebCore12AtomicString4findERKN3JSC10IdentifierE
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_10StringHashENS_10HashTraitsIS3_EES8_E4findINS1_17
+__ZN7WebCore23JSHTMLDocumentPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19JSDocumentPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore41jsDocumentPrototypeFunctionGetElementByIdEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK3JSC6JSCell8isObjectEPKNS_9ClassInfoE
+__ZNK7WebCore14JSHTMLDocument9classInfoEv
+__ZNK7WebCore8Document14getElementByIdERKNS_12AtomicStringE
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_7ElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
+__ZN7WebCoreL29createHTMLInputElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLInputElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLInputElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLInputElementEEE
+__ZN7WebCore18JSHTMLInputElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLInputElementEEE
+__ZN7WebCore18JSHTMLInputElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore13JSHTMLElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27JSHTMLInputElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22JSHTMLElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18JSElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore31jsElementPrototypeFunctionFocusEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZNK7WebCore18JSHTMLInputElement9classInfoEv
-__ZN7WebCore9JSElement12setAttributeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore7Element12setAttributeERKNS_6StringES3_Ri
-__ZNK7WebCore12NamedAttrMap16getAttributeItemERKNS_6StringE
-__ZN7WebCore38jsElementPrototypeFunctionGetAttributeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore7Element12getAttributeERKNS_6StringE
-__ZNK7WebCore13QualifiedName8toStringEv
-__ZN3KJS14jsStringOrNullERKN7WebCore6StringE
-__ZN7WebCore9InlineBox6removeEv
-__ZN7WebCore13InlineFlowBox11removeChildEPNS_9InlineBoxE
-__ZN7WebCore13RootInlineBox12childRemovedEPNS_9InlineBoxE
-__ZN7WebCore12RenderObject12removeLayersEPNS_11RenderLayerE
-__ZN7WebCore11RenderLayer11removeChildEPS0_
-__ZN3WTF6VectorIPN7WebCore11RenderLayerELm0EE6shrinkEm
-__ZN7WebCore11RenderLayer28dirtyVisibleDescendantStatusEv
-__ZN7WebCore9InlineBox14dirtyLineBoxesEv
-__ZNK7WebCore14RenderThemeMac39adjustSearchFieldResultsDecorationStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZNK7WebCore12RenderObject5layerEv
-__ZN7WebCore15DynamicNodeList24rootNodeAttributeChangedEv
-__ZN7WebCore18JSHTMLInputElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore22JSHTMLInputElementBase3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore13JSHTMLElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore9JSElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore17JSEventTargetNode16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore25eventNameForPropertyTokenEi
-__ZNK7WebCore17JSEventTargetNode11setListenerEPN3KJS9ExecStateERKNS_12AtomicStringEPNS1_7JSValueE
-__ZN7WebCore26JSHTMLFormElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore17JSHTMLFormElement9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore6JSNodeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore6JSNode16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore34jsNodePrototypeFunctionRemoveChildEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore6JSNode11removeChildEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore13ContainerNode11removeChildEPNS_4NodeERi
-__ZN7WebCore15willRemoveChildEPNS_4NodeE
-__ZN7WebCore8Document23notifyBeforeNodeRemovalEPNS_4NodeE
-__ZN7WebCore19SelectionController17nodeWillBeRemovedEPNS_4NodeE
-__ZN7WebCore15DynamicNodeList6Caches5resetEv
-__ZN7WebCore15DynamicNodeList23rootNodeChildrenChangedEv
-__ZN7WebCore7Element19removedFromDocumentEv
-__ZN7WebCore8Document17removeElementByIdERKNS_12AtomicStringEPNS_7ElementE
-__ZN7WebCore13ContainerNode19removedFromDocumentEv
-__ZN7WebCore15EventTargetNode19removedFromDocumentEv
-__ZN7WebCore11EventTarget19removedFromDocumentEPNS_15EventTargetNodeE
-__ZN7WebCore4Node19removedFromDocumentEv
-__ZN7WebCore22HTMLGenericFormElement15removedFromTreeEb
-__ZN7WebCore15HTMLFormElement17removeFormElementEPNS_22HTMLGenericFormElementE
-__ZN7WebCore13ContainerNode15removedFromTreeEb
-__ZNK7WebCore13StyledElement18createAttributeMapEv
-__ZN7WebCore16HTMLImageElement8setWidthEi
-__ZN7WebCore16HTMLImageElement9setHeightEi
-__ZN7WebCore16HTMLImageElement9setBorderERKNS_6StringE
-__ZN7WebCore16HTMLImageElement6setAltERKNS_6StringE
-__ZN7WebCore13JSHTMLElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore11HTMLElement5setIdERKNS_6StringE
-__ZN7WebCore18JSHTMLImageElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore9JSElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore9JSElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore13StyledElement5styleEv
-__ZN7WebCore13StyledElement18getInlineStyleDeclEv
-__ZN7WebCore13StyledElement21createInlineStyleDeclEv
-__ZN7WebCore26CSSMutableStyleDeclarationC1Ev
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_19CSSStyleDeclarationE
-__ZN7WebCore30JSCSSStyleDeclarationPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore21JSCSSStyleDeclarationC1EPN3KJS8JSObjectEPNS_19CSSStyleDeclarationE
-__ZN7WebCore21JSCSSStyleDeclaration3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore21JSCSSStyleDeclaration9customPutEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore17isCSSPropertyNameERKN3KJS10IdentifierE
-__ZN7WebCore15cssPropertyNameERKN3KJS10IdentifierEPb
-__ZN7WebCore16DeprecatedStringC2ERKN3KJS10IdentifierE
-__ZN7WebCore19CSSStyleDeclaration14isPropertyNameERKNS_6StringE
-__ZN7WebCore10propertyIDERKNS_6StringE
-__ZN7WebCore19CSSStyleDeclaration11setPropertyERKNS_6StringES3_Ri
-__ZN7WebCore19CSSStyleDeclaration11setPropertyERKNS_6StringES3_S3_Ri
-__ZN7WebCore26CSSMutableStyleDeclaration11setPropertyEiRKNS_6StringEbRi
-__ZN7WebCore13StyledElement24invalidateStyleAttributeEv
-__ZNK7WebCore18JSHTMLImageElement9classInfoEv
-__ZNK7WebCore26CSSMutableStyleDeclaration7cssTextEv
-__ZNK7WebCore11CSSProperty7cssTextEv
-__ZNK7WebCore17CSSPrimitiveValue7cssTextEv
-__Z12getValueNamet
-__Z15getPropertyName13CSSPropertyID
-__ZN7WebCore17JSHTMLFormElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore23replaceChildrenWithTextEPNS_11HTMLElementERKNS_6StringERi
-__ZN7WebCore9ClipRects7destroyEPNS_11RenderArenaE
-__ZN7WebCore9ClipRectsdlEPvm
-__ZN7WebCore14RenderThemeMac33paintSearchFieldResultsDecorationEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore25HTMLTextFieldInnerElement16shadowParentNodeEv
-__ZN7WebCore12RenderObject23absoluteBoundingBoxRectEv
-__ZN7WebCore12RenderObject13absoluteRectsERN3WTF6VectorINS_7IntRectELm0EEEiib
-__ZN3WTF6VectorIN7WebCore7IntRectELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore7IntRectELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore7IntRectELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIN7WebCore7IntRectELm0EE6shrinkEm
-__ZThn8_N7WebCore14XMLHttpRequest18didReceiveResponseEPNS_17SubresourceLoaderERKNS_16ResourceResponseE
-__ZN7WebCore14XMLHttpRequest18didReceiveResponseEPNS_17SubresourceLoaderERKNS_16ResourceResponseE
-__ZN7WebCore27extractCharsetFromMediaTypeERKNS_6StringE
-__ZThn8_N7WebCore14XMLHttpRequest14didReceiveDataEPNS_17SubresourceLoaderEPKci
-__ZN7WebCore14XMLHttpRequest14didReceiveDataEPNS_17SubresourceLoaderEPKci
-__ZN7WebCore14XMLHttpRequest14refEventTargetEv
-__ZNK7WebCore26JSUnprotectedEventListener11listenerObjEv
-__ZNK7WebCore26JSUnprotectedEventListener9windowObjEv
-__ZN7WebCore11EventTarget6toNodeEv
-__ZN7WebCore14XMLHttpRequest16toXMLHttpRequestEv
-__ZNK7WebCore14XMLHttpRequest13responseIsXMLEv
-__ZNK7WebCore14XMLHttpRequest16responseMIMETypeEv
-__ZN7WebCore28extractMIMETypeFromMediaTypeERKNS_6StringE
-__ZN7WebCore17DOMImplementation13isXMLMIMETypeERKNS_6StringE
-__ZNK7WebCore17DeprecatedCString4findEPKcib
-__ZNK7WebCore17DeprecatedCString3midEjj
-__ZNK7WebCore12TextEncoding21closest8BitEquivalentEv
-__ZN7WebCore22UTF16BigEndianEncodingEv
-__ZN7WebCore25UTF16LittleEndianEncodingEv
-__ZNK7WebCore14XMLHttpRequest9getStatusERi
-__ZNK7WebCore14XMLHttpRequest13getStatusTextERi
-__ZNK7WebCore14XMLHttpRequest15getResponseTextERi
-__ZN3KJS19jsOwnedStringOrNullERKNS_7UStringE
-__ZN3KJS50jsXMLHttpRequestPrototypeFunctionGetResponseHeaderEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK7WebCore14XMLHttpRequest17getResponseHeaderERKNS_6StringERi
-__ZThn8_N7WebCore14XMLHttpRequest16didFinishLoadingEPNS_17SubresourceLoaderE
-__ZN7WebCore14XMLHttpRequest16didFinishLoadingEPNS_17SubresourceLoaderE
-__ZNK7WebCore14XMLHttpRequest14getResponseXMLERi
-__ZNK7WebCore8Document14implementationEv
-__ZN7WebCore17DOMImplementation14createDocumentEPNS_5FrameE
-__ZN7WebCore8DocumentC2EPNS_17DOMImplementationEPNS_5FrameEb
-__ZN7WebCore8Document4openEv
-__ZN7WebCore8Document15createTokenizerEv
-__ZN7WebCore12XMLTokenizerC2EPNS_8DocumentEPNS_9FrameViewE
-__ZN7WebCore12XMLTokenizer5writeERKNS_15SegmentedStringEb
-__ZNK7WebCore15SegmentedString8toStringEv
-__ZN7WebCore12XMLTokenizer23initializeParserContextEv
-__ZN7WebCore18createStringParserEP14_xmlSAXHandlerPv
-__ZN7WebCore20startDocumentHandlerEPv
-__ZN7WebCore12XMLTokenizer13startDocumentEPKhS2_i
-__ZN7WebCore8Document13setXMLVersionERKNS_6StringERi
-__ZNK7WebCore17DOMImplementation10hasFeatureERKNS_6StringES3_
-__ZN7WebCore8Document16setXMLStandaloneEbRi
-__ZN7WebCore21startElementNsHandlerEPvPKhS2_S2_iPS2_iiS3_
-__ZN7WebCore12XMLTokenizer14startElementNsEPKhS2_S2_iPS2_iiS3_
-__ZN7WebCore12XMLTokenizer8exitTextEv
-__ZN7WebCore8toStringEPKh
-__ZN7WebCore8Document13createElementERKNS_13QualifiedNameEbRi
-__ZN7WebCore7ElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore7Element14setAttributeNSERKNS_6StringES3_S3_Ri
-__ZN7WebCore8Document18parseQualifiedNameERKNS_6StringERS1_S4_
-__ZNK7WebCore7Element28updateStyleAttributeIfNeededEv
-__ZNK7WebCore7Element18createAttributeMapEv
-__ZN7WebCore12NamedAttrMapC2EPNS_7ElementE
-__ZN7WebCore7Element15createAttributeERKNS_13QualifiedNameEPNS_10StringImplE
-__ZN7WebCore7Element16attributeChangedEPNS_9AttributeEb
-__ZNK7WebCore8Document14isHTMLDocumentEv
-__ZN7WebCore12XMLTokenizer14setCurrentNodeEPNS_4NodeE
-__ZN7WebCore17charactersHandlerEPvPKhi
-__ZN7WebCore12XMLTokenizer10charactersEPKhi
-__ZN7WebCore12XMLTokenizer9enterTextEv
-__ZN3WTF6VectorIhLm0EE6appendIhEEvPKT_m
-__ZN3WTF6VectorIhLm0EE14expandCapacityEmPKh
-__ZN3WTF6VectorIhLm0EE14expandCapacityEm
-__ZN3WTF6VectorIhLm0EE15reserveCapacityEm
-__ZN7WebCore13CharacterData10appendDataERKNS_6StringERi
-__ZN7WebCore13CharacterData21dispatchModifiedEventEPNS_10StringImplE
-__ZN7WebCore4Node15childrenChangedEb
-__ZN3WTF6VectorIhLm0EE6shrinkEm
-__ZN7WebCore19endElementNsHandlerEPvPKhS2_S2_
-__ZN7WebCore12XMLTokenizer12endElementNsEv
-__ZN7WebCore16getEntityHandlerEPvPKh
-__ZN7WebCore12XMLTokenizer6finishEv
-__ZN7WebCore12XMLTokenizer3endEv
-__ZN7WebCore18endDocumentHandlerEPv
-__ZN7WebCore12XMLTokenizer11endDocumentEv
-__ZNK7WebCore12XMLTokenizer10wellFormedEv
-__ZN7WebCore12XMLTokenizerD1Ev
-__ZNK7WebCore8Document13isSVGDocumentEv
-__ZNK7WebCore10JSDocument9classInfoEv
-__ZNK7WebCore10JSNodeList14implementsCallEv
-__ZN7WebCore10JSNodeList18canGetItemsForNameEPN3KJS9ExecStateEPNS_8NodeListERKNS1_10IdentifierE
-__ZNK7WebCore15DynamicNodeList12itemWithNameERKNS_12AtomicStringE
-__ZN7WebCore19JSNodeListPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore10JSNodeList9classInfoEv
-__ZNK7WebCore15DynamicNodeList24itemBackwardsFromCurrentEPNS_4NodeEji
-__ZNK7WebCore4Node20traversePreviousNodeEPKS0_
-__ZNK7WebCore4Node16virtualLastChildEv
-__ZN7WebCore46jsElementPrototypeFunctionGetElementsByTagNameEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9JSElement9classInfoEv
-__ZN7WebCore4Node10childNodesEv
-__ZN7WebCore13ChildNodeListC1EN3WTF10PassRefPtrINS_4NodeEEEPNS_15DynamicNodeList6CachesE
-__ZN7WebCore15DynamicNodeListC2EN3WTF10PassRefPtrINS_4NodeEEEPNS0_6CachesEb
-__ZNK7WebCore13ChildNodeList6lengthEv
-__ZNK7WebCore13ChildNodeList4itemEj
-__ZN7WebCore6JSText18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore15JSCharacterData18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore19createAnchorWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore28JSHTMLAnchorElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLAnchorElementC1EPN3KJS8JSObjectEPNS_17HTMLAnchorElementE
-__ZN7WebCore19JSHTMLAnchorElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore11HTMLElement12setInnerHTMLERKNS_6StringERi
-__ZN7WebCore11HTMLElement24createContextualFragmentERKNS_6StringE
-__ZN7WebCore16DocumentFragmentC2EPNS_8DocumentE
-__ZN7WebCore25parseHTMLDocumentFragmentERKNS_6StringEPNS_16DocumentFragmentE
-__ZN7WebCore13HTMLTokenizerC2EPNS_16DocumentFragmentE
-__ZN7WebCore10HTMLParserC2EPNS_16DocumentFragmentE
-__ZN7WebCore13HTMLTokenizer19setForceSynchronousEb
-__ZN7WebCore16DocumentFragment16childTypeAllowedENS_4Node8NodeTypeE
-__ZN7WebCore27replaceChildrenWithFragmentEPNS_11HTMLElementEN3WTF10PassRefPtrINS_16DocumentFragmentEEERi
-__ZN7WebCore13CharacterData7setDataERKNS_6StringERi
-__ZN7WebCore10RenderText15setTextInternalEN3WTF10PassRefPtrINS_10StringImplEEE
-__ZN7WebCore8Document13removeMarkersEPNS_4NodeE
-__ZNK7WebCore4Node13hasChildNodesEv
-__ZN7WebCore14XMLHttpRequest14dropProtectionEv
--[DOMNodeList item:]
--[DOMNode attributes]
-__ZNK7WebCore7Element10attributesEv
-+[DOMNamedNodeMap(WebCoreInternal) _wrapNamedNodeMap:]
--[DOMNamedNodeMap(WebCoreInternal) _initWithNamedNodeMap:]
--[DOMNamedNodeMap getNamedItem:]
-__ZNK7WebCore12NamedAttrMap12getNamedItemERKNS_6StringE
-__ZN7WebCore9Attribute18createAttrIfNeededEPNS_7ElementE
-__ZN7WebCore4AttrC1EPNS_7ElementEPNS_8DocumentEN3WTF10PassRefPtrINS_9AttributeEEE
-__ZN7WebCore4Attr15createTextChildEv
-__ZNK7WebCore4Attr8nodeTypeEv
--[DOMNode nodeValue]
-__ZNK7WebCore4Attr9nodeValueEv
--[DOMNamedNodeMap dealloc]
-__ZNK7WebCore9TimerBase16nextFireIntervalEv
-__ZN7WebCore6Screen15disconnectFrameEv
-__ZNK7WebCore6Screen10availWidthEv
-__ZN7WebCore19screenAvailableRectEPNS_6WidgetE
-__ZN7WebCore16HTMLInputElementD1Ev
-__ZN7WebCore22HTMLGenericFormElement14removeFromFormEv
-__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore31HTMLFormControlElementWithStateEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashFunctionsIS4_NS_7PtrHashIS4_EEEENS_10HashTraitsIS6_EESE_E4findIS4_NS_21ListHashSetTranslatorIS4_SB_EEEENS_17HashTableIteratorIS6_S6_S8_SC_SE_SE_EERKT_
-__ZN3WTF11ListHashSetIPN7WebCore31HTMLFormControlElementWithStateENS_7PtrHashIS3_EEE15unlinkAndDeleteEPNS_15ListHashSetNodeIS3_EE
-__ZN7WebCore12NamedAttrMap17detachFromElementEv
-__ZN7WebCore18NamedMappedAttrMap15clearAttributesEv
-__ZN7WebCore14XMLHttpRequest16derefEventTargetEv
-__ZN7WebCore14XMLHttpRequest17setOnLoadListenerEPNS_13EventListenerE
-__ZN3WTF9HashTableIiSt4pairIiNS_6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EEEENS_18PairFirstExtractorIS8_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSE_IS7_EEEESF_E6expandEv
-__ZN7WebCore28removeFromRequestsByDocumentEPNS_8DocumentEPNS_14XMLHttpRequestE
-__ZN7WebCore7ElementD1Ev
-__ZN7WebCore12NamedAttrMapD1Ev
-__ZN3WTF23HashTableRefCounterBaseILb1ENS_9HashTableIPN7WebCore10StringImplESt4pairIS4_NS2_15DynamicNodeList6CachesEENS_18PairFirstExtractorIS8_EENS2_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS4_EENSD_IS7_EEEESE_EENS_18PairBaseHashTraitsINSD_INS2_6StringEEESF_EEE8derefAllERSH_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_15DynamicNodeList6CachesEENS_18PairFirstExtractorIS7_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSC_IS6_EEEESD_E6expandEv
-__ZN3KJS7Plugins10nameGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN7WebCore15baseConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore15HTMLBaseElementC2EPNS_8DocumentE
-__ZN7WebCore15HTMLBaseElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore15HTMLBaseElement7processEv
-__ZNK7WebCore15HTMLBaseElement17endTagRequirementEv
-__ZNK7WebCore15HTMLBaseElement11tagPriorityEv
-__ZN7WebCore15HTMLBaseElement20insertedIntoDocumentEv
-__ZN7WebCore10HTMLParser24noscriptCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore9CSSParser22rollbackLastPropertiesEi
-__ZN7WebCore9CSSParser13parseSVGValueEib
-__ZN7WebCore10IconLoader6createEPNS_5FrameE
-__ZN7WebCore10IconLoaderC2EPNS_5FrameE
-__ZN7WebCore10IconLoader12startLoadingEv
-__ZN7WebCore19DeprecatedValueListINS_18SegmentedSubstringEE8copyNodeEPNS_27DeprecatedValueListImplNodeE
-__ZN7WebCore19DeprecatedValueListINS_18SegmentedSubstringEE10deleteNodeEPNS_27DeprecatedValueListImplNodeE
-__ZN7WebCore23DeprecatedValueListImpl11prependNodeEPNS_27DeprecatedValueListImplNodeE
-__ZN7WebCore11HTMLElement19isRecognizedTagNameERKNS_13QualifiedNameE
-__ZN7WebCore9HTMLNames11getHTMLTagsEPm
-__ZN7WebCore11CSSRuleDataD2Ev
-__ZN7WebCore11RenderStyle17setHasPseudoStyleENS0_8PseudoIdE
-__ZN7WebCore11RenderStyle10setContentEPNS_10StringImplEb
-__ZN7WebCore18RenderTextFragmentC2EPNS_4NodeEPNS_10StringImplE
-__ZN7WebCore14RenderListItemC2EPNS_4NodeE
-__ZN7WebCore14RenderListItem8setStyleEPNS_11RenderStyleE
-__ZNK7WebCore14RenderListItem10isListItemEv
-__ZN7WebCore23updateListMarkerNumbersEPNS_12RenderObjectE
-__ZN7WebCore14RenderListItem18clearExplicitValueEv
-__ZNK7WebCore9DOMWindow7historyEv
-__ZN7WebCore7HistoryC2EPNS_5FrameE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_7HistoryE
-__ZN7WebCore18JSHistoryPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore9JSHistoryC1EPN3KJS8JSObjectEPNS_7HistoryE
-__ZN7WebCore9JSHistory18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore9JSHistory24customGetOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore7History5frameEv
-__ZN3KJS17staticValueGetterIN7WebCore9JSHistoryEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore9JSHistory16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore7History6lengthEv
-__ZN7WebCore11FrameLoader16getHistoryLengthEv
-__ZN7WebCore15BackForwardList13backListCountEv
-__ZN7WebCore18createUListWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore27JSHTMLUListElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLUListElementC1EPN3KJS8JSObjectEPNS_16HTMLUListElementE
-__ZN7WebCore18JSHTMLUListElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore15createLIWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore24JSHTMLLIElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSHTMLLIElementC1EPN3KJS8JSObjectEPNS_13HTMLLIElementE
-__ZN7WebCore15JSHTMLLIElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore11HTMLElement12setClassNameERKNS_6StringE
-__ZN3WTF6VectorIN7WebCore12AtomicStringELm8EE6shrinkEm
-__ZN7WebCore19JSHTMLAnchorElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore15JSHTMLLIElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore11ContentData5clearEv
-__ZN7WebCore12RenderInlineD1Ev
-__ZN7WebCore11RenderBlock20removeFloatingObjectEPNS_12RenderObjectE
-__ZN7WebCore14RenderListItem7destroyEv
-__ZN7WebCore18headingConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore18HTMLHeadingElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore18HTMLHeadingElement17endTagRequirementEv
-__ZNK7WebCore18HTMLHeadingElement11tagPriorityEv
-__ZN7WebCore18HTMLHeadingElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore10HTMLParser19mapCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore14HTMLMapElementC2EPNS_8DocumentE
-__ZN7WebCore14HTMLMapElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore8Document14removeImageMapEPNS_14HTMLMapElementE
-__ZN7WebCore8Document11addImageMapEPNS_14HTMLMapElementE
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_14HTMLMapElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
-__ZNK7WebCore14HTMLMapElement17endTagRequirementEv
-__ZNK7WebCore14HTMLMapElement11tagPriorityEv
-__ZN7WebCore15areaConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore15HTMLAreaElementC2EPNS_8DocumentE
-__ZN7WebCore4PathC2Ev
-__ZN7WebCore15HTMLAreaElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore6String13toCoordsArrayERi
-__ZN7WebCore10StringImpl13toCoordsArrayERi
-__ZN7WebCore14countCharacterEPNS_10StringImplEt
-__ZN7WebCore11parseLengthEPKtj
-__ZNK7WebCore15HTMLAreaElement17endTagRequirementEv
-__ZNK7WebCore15HTMLAreaElement11tagPriorityEv
-__ZN7WebCore14HTMLMapElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore26CSSMutableStyleDeclaration16parseDeclarationERKNS_6StringE
-__ZN7WebCore9CSSParser16parseDeclarationEPNS_26CSSMutableStyleDeclarationERKNS_6StringE
-__ZN7WebCore16JSHTMLDivElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore16embedConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLEmbedElementC2EPNS_8DocumentE
-__ZN7WebCore17HTMLPlugInElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore21HTMLFrameOwnerElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore16HTMLEmbedElement16attributeChangedEPNS_9AttributeEb
-__ZNK7WebCore16HTMLEmbedElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZNK7WebCore17HTMLPlugInElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore16HTMLEmbedElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore17HTMLPlugInElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore16HTMLEmbedElement17endTagRequirementEv
-__ZNK7WebCore16HTMLEmbedElement11tagPriorityEv
-__ZNK7WebCore16DocumentFragment8nodeTypeEv
-__ZN7WebCore16HTMLEmbedElement20insertedIntoDocumentEv
-__ZN7WebCore16HTMLEmbedElement6attachEv
-__ZN7WebCore13ContainerNode23queuePostAttachCallbackEPFvPNS_4NodeEES2_
-__ZN3WTF6VectorISt4pairIPFvPN7WebCore4NodeEENS_6RefPtrIS3_EEELm0EE14expandCapacityEmPKS9_
-__ZN3WTF6VectorISt4pairIPFvPN7WebCore4NodeEENS_6RefPtrIS3_EEELm0EE14expandCapacityEm
-__ZN3WTF6VectorISt4pairIPFvPN7WebCore4NodeEENS_6RefPtrIS3_EEELm0EE15reserveCapacityEm
-__ZN7WebCore16HTMLEmbedElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore16HTMLEmbedElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore16RenderPartObjectC2EPNS_21HTMLFrameOwnerElementE
-__ZN7WebCore10RenderPartC2EPNS_21HTMLFrameOwnerElementE
-__ZN7WebCore12RenderWidgetC2EPNS_4NodeE
-__ZN7WebCore14RenderReplacedC2EPNS_4NodeE
-__ZN7WebCore10RenderView9addWidgetEPNS_12RenderObjectE
-__ZN3WTF7HashSetIPN7WebCore12RenderObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore12RenderWidget8setStyleEPNS_11RenderStyleE
-__ZN7WebCore13ContainerNode27dispatchPostAttachCallbacksEv
-__ZN7WebCore17HTMLPlugInElement20updateWidgetCallbackEPNS_4NodeE
-__ZN7WebCore16HTMLEmbedElement12updateWidgetEv
-__ZN7WebCore16RenderPartObject12updateWidgetEb
-__ZN7WebCore12isURLAllowedEPNS_8DocumentERKNS_6StringE
-__ZN7WebCore16MIMETypeRegistry24isSupportedImageMIMETypeERKNS_6StringE
-__ZN3WTF6VectorISt4pairIPFvPN7WebCore4NodeEENS_6RefPtrIS3_EEELm0EE6shrinkEm
-__ZN7WebCore16HTMLImageElement9setUseMapERKNS_6StringE
-__ZN7WebCore19fieldsetConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore19HTMLFieldSetElementC2EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZNK7WebCore19HTMLFieldSetElement11tagPriorityEv
-__ZNK7WebCore14RenderThemeMac11systemColorEi
-__ZN3WTF7HashMapIijNS_7IntHashIjEENS_10HashTraitsIiEENS3_IjEEE3setERKiRKj
-__ZNK3WTF7HashMapIijNS_7IntHashIjEENS_10HashTraitsIiEENS3_IjEEE3getERKi
-__ZN7WebCore19HTMLFieldSetElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore14RenderFieldsetC2EPNS_22HTMLGenericFormElementE
-__ZN7WebCore14RenderFieldset8setStyleEPNS_11RenderStyleE
-__ZN7WebCore19HTMLFieldSetElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore17legendConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLLegendElementC2EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZNK7WebCore22HTMLGenericFormElement11tagPriorityEv
-__ZN7WebCore17HTMLLegendElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore12RenderLegendC2EPNS_22HTMLGenericFormElementE
-__ZN7WebCore13dlConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLDListElementC2EPNS_8DocumentE
-__ZNK7WebCore16HTMLDListElement17endTagRequirementEv
-__ZNK7WebCore16HTMLDListElement11tagPriorityEv
-__ZN7WebCore10HTMLParser18dtCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCoreleERNS_11CSSRuleDataES1_
-__ZNK7WebCore10RenderText12originalTextEv
-__ZN7WebCore10HTMLParser18ddCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZNK7WebCore16HTMLInputElement17isInputTypeHiddenEv
-__ZN7WebCore21convertNSColorToColorEP7NSColor
-__ZN7WebCore12RenderButtonC2EPNS_4NodeE
-__ZN7WebCore12RenderButton8setStyleEPNS_11RenderStyleE
-__ZNK7WebCore12RenderButton15canHaveChildrenEv
-__ZN7WebCore12RenderButton17updateFromElementEv
-__ZNK7WebCore16HTMLInputElement16valueWithDefaultEv
-__ZN7WebCore12RenderButton7setTextERKNS_6StringE
-__ZN7WebCore12RenderButton8addChildEPNS_12RenderObjectES2_
-__ZN7WebCore14JSHTMLDocument10nameGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore8Document18documentNamedItemsERKNS_6StringE
-__ZNK7WebCore22HTMLGenericFormElement14isEnumeratableEv
-__ZN7WebCore15HTMLFormElement15addElementAliasEPNS_22HTMLGenericFormElementERKNS_12AtomicStringE
-__ZN7WebCore17JSHTMLFormElement10nameGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN3WTF7HashMapINS_6RefPtrIN7WebCore16AtomicStringImplEEENS1_INS2_22HTMLGenericFormElementEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3setEPS3_RKS6_
-__ZN7WebCore40jsHTMLInputElementPrototypeFunctionFocusEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
__ZN7WebCore7Element5focusEb
__ZN7WebCore8Document36updateLayoutIgnorePendingStylesheetsEv
-__ZN7WebCore9RenderBox10setStaticXEi
-__ZN7WebCore9RenderBox10setStaticYEi
-__ZNK7WebCore9RenderBox7staticXEv
-__ZNK7WebCore9RenderBox7staticYEv
-__ZN7WebCore14RenderReplaced14calcPrefWidthsEv
-__ZNK7WebCore9RenderBox17calcReplacedWidthEv
-__ZN7WebCore16RenderPartObject6layoutEv
-__ZNK7WebCore9RenderBox18calcReplacedHeightEv
-__ZN7WebCore12RenderWidget6layoutEv
-__ZN7WebCore9FrameView17addWidgetToUpdateEPNS_16RenderPartObjectE
-__ZN3WTF7HashSetIPN7WebCore16RenderPartObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZNK7WebCore14RenderFieldset12avoidsFloatsEv
-__ZNK7WebCore14RenderFieldset28stretchesToMinIntrinsicWidthEv
-__ZN7WebCore14RenderFieldset14calcPrefWidthsEv
-__ZN7WebCore17RenderFlexibleBox14calcPrefWidthsEv
-__ZNK7WebCore14RenderFieldset10findLegendEv
-__ZN7WebCore14RenderFieldset12layoutLegendEb
-__ZN7WebCore14RenderListItem6layoutEv
-__ZN7WebCore14RenderListItem20updateMarkerLocationEv
-__ZN7WebCore14RenderListItem14calcPrefWidthsEv
-__ZN7WebCore14RenderListItem18positionListMarkerEv
-__ZNK7WebCore17RenderFlexibleBox12avoidsFloatsEv
-__ZNK7WebCore12RenderButton14hasControlClipEv
-__ZNK7WebCore12RenderObject12maxTopMarginEb
-__ZNK7WebCore12RenderObject21isSelfCollapsingBlockEv
-__ZNK7WebCore12RenderObject16isTopMarginQuirkEv
-__ZNK7WebCore12RenderObject15maxBottomMarginEb
-__ZN7WebCore12RenderObject14containsFloatsEv
-__ZNK7WebCore12RenderObject21containingBlockHeightEv
-__ZNK7WebCore12RenderInline5widthEv
-__ZNK7WebCore12RenderInline6heightEv
-__ZNK7WebCore12RenderObject13overflowWidthEb
-__ZNK7WebCore12RenderObject14overflowHeightEb
-__ZN7WebCore10RenderPart20updateWidgetPositionEv
-__ZN3WTF6VectorIPN7WebCore16RenderPartObjectELm0EE6resizeEm
-__ZN3WTF6VectorIPN7WebCore16RenderPartObjectELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore16RenderPartObjectELm0EE15reserveCapacityEm
-__ZN7WebCore11FrameLoader13requestObjectEPNS_10RenderPartERKNS_6StringERKNS_12AtomicStringES5_RKN3WTF6VectorIS3_Lm0EEESD_
-__ZN7WebCore11FrameLoader15shouldUsePluginERKNS_4KURLERKNS_6StringEbRb
-__ZN7WebCore11FrameLoader10loadPluginEPNS_10RenderPartERKNS_4KURLERKNS_6StringERKN3WTF6VectorIS6_Lm0EEESD_b
--[WebCoreFrameBridge baseURL]
-__ZN7WebCore6WidgetC1EP6NSView
-__ZN7WebCore10RenderPart9setWidgetEPNS_6WidgetE
-__ZNK7WebCore6Widget11isFrameViewEv
-__ZN7WebCore12RenderWidget9setWidgetEPNS_6WidgetE
-__ZN7WebCore17widgetRendererMapEv
-__ZNK3WTF7HashMapIPKN7WebCore6WidgetEPNS1_12RenderWidgetENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3getERKS4_
-__ZN7WebCore12RenderWidget12resizeWidgetEPNS_6WidgetEii
-__ZN7WebCore10ScrollView8addChildEPNS_6WidgetE
-__ZN7WebCore6Widget14addToSuperviewEP6NSView
--[DOMElement(WebPrivate) _windowClipRect]
--[DOMElement(WebCoreInternal) _element]
-__ZNK7WebCore9FrameView22windowClipRectForLayerEPKNS_11RenderLayerEb
-__ZNK7WebCore11RenderLayer16childrenClipRectEv
-__ZNK7WebCore10ScrollView16contentsToWindowERKNS_7IntRectE
-__ZN7WebCore7IntRectC2ERKNS_9FloatRectE
-__ZNK7WebCore9FrameView14windowClipRectEv
-__ZNK7WebCore9FrameView14windowClipRectEb
-__ZN7WebCore5Frame20windowScriptNPObjectEv
-__ZNK7WebCore9DOMWindow3topEv
-__ZN7WebCore4Page16setDefersLoadingEb
-__ZN7WebCore11FrameLoader16setDefersLoadingEb
-__ZN7WebCore14DocumentLoader16setDefersLoadingEb
-__ZN7WebCore19setAllDefersLoadingERKN3WTF7HashSetINS0_6RefPtrINS_14ResourceLoaderEEENS0_7PtrHashIS4_EENS0_10HashTraitsIS4_EEEEb
-__ZN7WebCore14ResourceLoader16setDefersLoadingEb
-__ZN7WebCore14ResourceHandle16setDefersLoadingEb
-_urlIsEmpty
-__ZN7WebCore26NetscapePlugInStreamLoader6createEPNS_5FrameEPNS_32NetscapePlugInStreamLoaderClientE
-__ZN7WebCore26NetscapePlugInStreamLoaderC1EPNS_5FrameEPNS_32NetscapePlugInStreamLoaderClientE
-__ZN7WebCore14ResourceLoader19setShouldBufferDataEb
-__ZN7WebCore14DocumentLoader21addPlugInStreamLoaderEPNS_14ResourceLoaderE
-__ZN7WebCore16RenderPartObject11viewClearedEv
-__ZN7WebCore6Widget16setFrameGeometryERKNS_7IntRectE
-__ZN7WebCore12RenderWidget5derefEPNS_11RenderArenaE
-__ZN3WTF6VectorIPN7WebCore16RenderPartObjectELm0EE6shrinkEm
-__ZNK7WebCore22HTMLGenericFormElement13supportsFocusEv
-__ZNK7WebCore22HTMLGenericFormElement11isFocusableEv
+__ZN7WebCore8Document12updateLayoutEv
+__ZNK7WebCore22HTMLFormControlElement13supportsFocusEv
+__ZNK7WebCore22HTMLFormControlElement11isFocusableEv
__ZN7WebCore15FocusController14setFocusedNodeEPNS_4NodeEN3WTF10PassRefPtrINS_5FrameEEE
__ZN7WebCore15FocusController15setFocusedFrameEN3WTF10PassRefPtrINS_5FrameEEE
+__ZN7WebCore8Document14setFocusedNodeEN3WTF10PassRefPtrINS_4NodeEEE
__ZN7WebCore16HTMLInputElement18dispatchFocusEventEv
-__ZN7WebCore15EventTargetNode18dispatchFocusEventEv
+__ZN7WebCore12InputElement18dispatchFocusEventERNS_16InputElementDataEPNS_8DocumentE
+__ZN7WebCore12InputElement27updatePlaceholderVisibilityERNS_16InputElementDataEPNS_8DocumentEb
+__ZThn128_NK7WebCore16HTMLInputElement15isPasswordFieldEv
+__ZNK7WebCore16HTMLInputElement15isPasswordFieldEv
+__ZN7WebCore4Node18dispatchFocusEventEv
+__ZN7WebCore16HTMLInputElement23preDispatchEventHandlerEPNS_5EventE
+__ZN7WebCore15HTMLFormElement17handleLocalEventsEPNS_5EventEb
+__ZN7WebCore4Node6toNodeEv
+__ZN7WebCore16HTMLInputElement24postDispatchEventHandlerEPNS_5EventEPv
+__ZN7WebCore16HTMLInputElement19defaultEventHandlerEPNS_5EventE
+__ZNK7WebCore5Event25isBeforeTextInsertedEventEv
+__ZNK7WebCore5Event12isMouseEventEv
__ZNK7WebCore5Event11isDragEventEv
+__ZNK7WebCore5Event12isWheelEventEv
+__ZN7WebCore27RenderTextControlSingleLine12forwardEventEPNS_5EventE
+__ZN7WebCore27RenderTextControlSingleLine27capsLockStateMayHaveChangedEv
__ZN7WebCore17RenderTextControl12forwardEventEPNS_5EventE
-__ZN7WebCore17RenderTextControl27capsLockStateMayHaveChangedEv
-__ZN7WebCore15EventTargetNode15dispatchUIEventERKNS_12AtomicStringEiN3WTF10PassRefPtrINS_5EventEEE
-__ZN7WebCore7UIEventC2ERKNS_12AtomicStringEbbPNS_9DOMWindowEi
+__ZN7WebCore4Node15dispatchUIEventERKNS_12AtomicStringEiN3WTF10PassRefPtrINS_5EventEEE
+__ZN7WebCore7UIEventC1ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEEi
+__ZN7WebCore7UIEventC2ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEEi
+__ZN7WebCore5Event18setUnderlyingEventEN3WTF10PassRefPtrIS0_EE
+__ZN7WebCore7UIEventD0Ev
+__ZN7WebCore5EventD2Ev
__ZN7WebCore13ContainerNode8setFocusEb
+__ZN7WebCore4Node8setFocusEb
__ZN7WebCore14focusRingColorEv
++[WebCoreControlTintObserver controlTintDidChange]
__ZN7WebCore26usesTestModeFocusRingColorEv
__ZNK7WebCore14SVGRenderStyle17inheritedNotEqualEPKS0_
-__ZN7WebCore13widgetForNodeEPNS_4NodeE
+__ZN7WebCore14RenderThemeMac17adjustRepaintRectEPKNS_12RenderObjectERNS_7IntRectE
+__ZN7WebCoreL13widgetForNodeEPNS_4NodeE
+__ZNK7WebCore12RenderObject8isWidgetEv
__ZN7WebCore6Widget8setFocusEv
__ZN7WebCore5Frame14frameForWidgetEPKNS_6WidgetE
__ZN7WebCore12RenderWidget4findEPKNS_6WidgetE
+__ZN7WebCoreL17widgetRendererMapEv
+__ZNK3WTF7HashMapIPKN7WebCore6WidgetEPNS1_12RenderWidgetENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3getERKS4_
-[NSScrollView(WebCoreView) _webcore_effectiveFirstResponder]
-[NSClipView(WebCoreView) _webcore_effectiveFirstResponder]
-[NSView(WebCoreView) _webcore_effectiveFirstResponder]
@@ -3703,2139 +3812,2584 @@ __ZN7WebCore6Chrome11focusNSViewEP6NSView
__ZNK7WebCore16HTMLInputElement20shouldUseInputMethodEv
__ZN7WebCore8Document27cancelFocusAppearanceUpdateEv
__ZN7WebCore16HTMLInputElement21updateFocusAppearanceEb
+__ZN7WebCore12InputElement21updateFocusAppearanceERNS_16InputElementDataEPNS_8DocumentEb
+__ZThn128_N7WebCore16HTMLInputElement6selectEv
__ZN7WebCore16HTMLInputElement6selectEv
__ZN7WebCore17RenderTextControl6selectEv
__ZN7WebCore17RenderTextControl17setSelectionRangeEii
__ZN7WebCore17RenderTextControl23visiblePositionForIndexEi
+__ZN7WebCore15VisiblePositionC1EPNS_4NodeEiNS_9EAffinityE
__ZN7WebCore15VisiblePositionC2EPNS_4NodeEiNS_9EAffinityE
-__ZN7WebCore8PositionC2EPNS_4NodeEi
+__ZN7WebCore8PositionC1EN3WTF10PassRefPtrINS_4NodeEEEi
+__ZN7WebCore8PositionC2EN3WTF10PassRefPtrINS_4NodeEEEi
+__ZN7WebCore8Position34anchorTypeForLegacyEditingPositionEPNS_4NodeEi
+__ZN7WebCore21editingIgnoresContentEPKNS_4NodeE
+__ZN7WebCore25canHaveChildrenForEditingEPKNS_4NodeE
__ZN7WebCore15VisiblePosition4initERKNS_8PositionENS_9EAffinityE
__ZN7WebCore15VisiblePosition17canonicalPositionERKNS_8PositionE
__ZNK7WebCore8Position8upstreamEv
-__ZN7WebCore14enclosingBlockEPNS_4NodeE
-__ZN7WebCore19enclosingNodeOfTypeERKNS_8PositionEPFbPKNS_4NodeEE
-__ZN7WebCore19highestEditableRootERKNS_8PositionE
-__ZN7WebCore23editableRootForPositionERKNS_8PositionE
-__ZN7WebCore17isContentEditableEPKNS_4NodeE
-__ZN7WebCore7isBlockEPKNS_4NodeE
+__ZN7WebCoreL23enclosingVisualBoundaryEPNS_4NodeE
+__ZN7WebCoreL38endsOfNodeAreVisuallyDistinctPositionsEPNS_4NodeE
+__ZNK7WebCore13ContainerNode9childNodeEj
__ZNK7WebCore16PositionIterator7atStartEv
-__ZN7WebCore8PositionC2ERKNS_16PositionIteratorE
+__ZNK7WebCore16PositionIteratorcvNS_8PositionEEv
__ZNK7WebCore8Position11isCandidateEv
__ZN7WebCore14isTableElementEPNS_4NodeE
-__ZN7WebCore21editingIgnoresContentEPKNS_4NodeE
-__ZN7WebCore25canHaveChildrenForEditingEPKNS_4NodeE
__ZN7WebCore8Position44hasRenderedNonAnonymousDescendantsWithHeightEPNS_12RenderObjectE
__ZNK7WebCore12RenderObject27nextInPreOrderAfterChildrenEv
+__ZNK7WebCore8Position29atFirstEditingPositionForNodeEv
__ZN7WebCore8Position20nodeIsUserSelectNoneEPNS_4NodeE
-__ZN7WebCore9SelectionC2ERKNS_15VisiblePositionES3_
-__ZN7WebCore9Selection8validateEv
+__ZN7WebCore16VisibleSelectionC1ERKNS_15VisiblePositionES3_
+__ZN7WebCore16VisibleSelectionC2ERKNS_15VisiblePositionES3_
+__ZN7WebCore16VisibleSelection8validateEv
+__ZN7WebCore16VisibleSelection33setBaseAndExtentToDeepEquivalentsEv
+__ZN7WebCore15VisiblePositionC1ERKNS_8PositionENS_9EAffinityE
__ZN7WebCore15VisiblePositionC2ERKNS_8PositionENS_9EAffinityE
__ZN7WebCore16comparePositionsERKNS_8PositionES2_
-__ZN7WebCore9Selection24adjustForEditableContentEv
+__ZN7WebCore5Range21compareBoundaryPointsEPNS_4NodeEiS2_i
+__ZN7WebCore16VisibleSelection52setStartAndEndFromBaseAndExtentRespectingGranularityEv
+__ZN7WebCore16VisibleSelection47adjustSelectionToAvoidCrossingEditingBoundariesEv
+__ZN7WebCore19highestEditableRootERKNS_8PositionE
+__ZN7WebCore23editableRootForPositionERKNS_8PositionE
__ZN7WebCore22lowestEditableAncestorEPNS_4NodeE
+__ZN7WebCore16VisibleSelection19updateSelectionTypeEv
__ZN7WebCore5Frame22setFocusedNodeIfNeededEv
-__ZNK7WebCore9Selection19rootEditableElementEv
-__ZNK7WebCore25HTMLTextFieldInnerElement16isMouseFocusableEv
+__ZNK7WebCore16VisibleSelection19rootEditableElementEv
+__ZNK7WebCore23TextControlInnerElement16isMouseFocusableEv
__ZNK7WebCore16HTMLInputElement16isMouseFocusableEv
-__ZN7WebCore10RenderFlow9caretRectEiNS_9EAffinityEPi
-__ZNK7WebCore11RenderTheme19caretBlinkFrequencyEv
+__ZNK7WebCore15VisiblePosition14localCaretRectERPNS_12RenderObjectE
+__ZNK7WebCore8Position21getInlineBoxAndOffsetENS_9EAffinityERPNS_9InlineBoxERi
+__ZNK7WebCore8Position21getInlineBoxAndOffsetENS_9EAffinityENS_13TextDirectionERPNS_9InlineBoxERi
+__ZN7WebCore11RenderBlock14localCaretRectEPNS_9InlineBoxEiPi
+__ZNK7WebCore19SelectionController22caretRendersInsideNodeEPNS_4NodeE
__ZNK7WebCore19SelectionController16caretRepaintRectEv
+__ZNK7WebCore11RenderTheme18caretBlinkIntervalEv
__ZN7WebCore19SelectionController41selectFrameElementInParentIfFullySelectedEv
__ZN7WebCore5Frame31notifyRendererOfSelectionChangeEb
-__ZNK7WebCore17RenderTextControl10isTextAreaEv
__ZN7WebCore17RenderTextControl16selectionChangedEb
__ZN7WebCore17RenderTextControl12selectionEndEv
__ZN7WebCore17RenderTextControl23indexForVisiblePositionERKNS_15VisiblePositionE
+__ZN7WebCore5Range6createEN3WTF10PassRefPtrINS_8DocumentEEE
+__ZN7WebCore8Document11attachRangeEPNS_5RangeE
+__ZN3WTF7HashSetIPN7WebCore5RangeENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore5RangeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore5RangeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore5RangeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTableEi
+__ZN7WebCore5Range8setStartEN3WTF10PassRefPtrINS_4NodeEEEiRi
+__ZNK7WebCore5Range16checkNodeWOffsetEPNS_4NodeEiRi
__ZN7WebCore5Range8collapseEbRi
+__ZN7WebCore5Range6setEndEN3WTF10PassRefPtrINS_4NodeEEEiRi
__ZN7WebCore12TextIterator11rangeLengthEPKNS_5RangeEb
+__ZN7WebCore12TextIteratorC1EPKNS_5RangeEbb
+__ZN7WebCore12TextIteratorC2EPKNS_5RangeEbb
+__ZNK7WebCore5Range9firstNodeEv
+__ZNK7WebCore4Node18offsetInCharactersEv
+__ZNK7WebCore5Range12pastLastNodeEv
+__ZN7WebCore12TextIterator7advanceEv
+__ZN7WebCore12TextIterator23representNodeOffsetZeroEv
+__ZN7WebCoreL23shouldEmitTabBeforeNodeEPNS_4NodeE
+__ZN7WebCore11isTableCellEPKNS_4NodeE
+__ZN7WebCoreL27shouldEmitNewlineBeforeNodeEPNS_4NodeE
+__ZN7WebCoreL36shouldEmitNewlinesBeforeAndAfterNodeEPNS_4NodeE
+__ZN7WebCore12TextIterator29shouldRepresentNodeOffsetZeroEv
+__ZN7WebCore5RangeD1Ev
+__ZN7WebCore5RangeD2Ev
+__ZN7WebCore8Document11detachRangeEPNS_5RangeE
+__ZN3WTF9HashTableIPN7WebCore5RangeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22Iden
+__ZN3WTF9HashTableIPN7WebCore5RangeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInvalid
+__ZN3WTF9HashTableIPN7WebCore5RangeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
__ZN7WebCore17RenderTextControl14selectionStartEv
-__ZN7WebCore5Frame25respondToChangedSelectionERKNS_9SelectionEb
+__ZN7WebCore27RenderTextControlSingleLine14cacheSelectionEii
+__ZThn128_N7WebCore16HTMLInputElement14cacheSelectionEii
+__ZN7WebCore16HTMLInputElement14cacheSelectionEii
+__ZN7WebCore5Frame25respondToChangedSelectionERKNS_16VisibleSelectionEb
__ZN7WebCore6Editor32isContinuousSpellCheckingEnabledEv
__ZN7WebCore6Editor24isGrammarCheckingEnabledEv
__ZN7WebCore9endOfWordERKNS_15VisiblePositionENS_9EWordSideE
__ZN7WebCore16isEndOfParagraphERKNS_15VisiblePositionE
__ZN7WebCore14endOfParagraphERKNS_15VisiblePositionE
+__ZN7WebCoreL28renderedAsNonInlineTableOrHREPNS_12RenderObjectE
+__ZN7WebCore14enclosingBlockEPNS_4NodeE
+__ZN7WebCore19enclosingNodeOfTypeERKNS_8PositionEPFbPKNS_4NodeEEb
+__ZN7WebCore17isContentEditableEPKNS_4NodeE
+__ZN7WebCore7isBlockEPKNS_4NodeE
__ZN7WebCore11startOfWordERKNS_15VisiblePositionENS_9EWordSideE
-__ZN7WebCore16previousBoundaryERKNS_15VisiblePositionEPFjPKtjE
+__ZN7WebCoreL16previousBoundaryERKNS_15VisiblePositionEPFjPKtjjNS_33BoundarySearchContextAvailabilityERbE
__ZNK7WebCore4Node25enclosingBlockFlowElementEv
__ZNK7WebCore4Node11isBlockFlowEv
__ZN7WebCore24rangeCompliantEquivalentERKNS_8PositionE
+__ZNK7WebCore15VisiblePosition8previousEb
+__ZN7WebCore33previousVisuallyDistinctCandidateERKNS_8PositionE
+__ZNK7WebCore8Position10downstreamEv
+__ZNK7WebCore16PositionIterator5atEndEv
+__ZN7WebCore20lastOffsetForEditingEPKNS_4NodeE
+__ZNK7WebCore8Position13atStartOfTreeEv
+__ZNK7WebCore15VisiblePosition14characterAfterEv
+__ZN7WebCore31SimplifiedBackwardsTextIteratorC1EPKNS_5RangeE
__ZN7WebCore31SimplifiedBackwardsTextIteratorC2EPKNS_5RangeE
+__ZNK7WebCore13ContainerNode14childNodeCountEv
__ZN7WebCore31SimplifiedBackwardsTextIterator7advanceEv
__ZNK7WebCore31SimplifiedBackwardsTextIterator5rangeEv
-__ZN7WebCore5RangeC1EPNS_8DocumentEPNS_4NodeEiS4_i
-__ZNK7WebCore5Range13startPositionEv
-__ZNK7WebCore9Selection7toRangeEv
+__ZN7WebCore5Range6createEN3WTF10PassRefPtrINS_8DocumentEEENS2_INS_4NodeEEEiS6_i
+__ZNK7WebCore16VisibleSelection17toNormalizedRangeEv
+__ZN7WebCore5Range6createEN3WTF10PassRefPtrINS_8DocumentEEERKNS_8PositionES7_
__ZN7WebCore8Document13removeMarkersEPNS_5RangeENS_14DocumentMarker10MarkerTypeE
__ZN7WebCore8Document13removeMarkersENS_14DocumentMarker10MarkerTypeE
-__ZN7WebCore6Editor25respondToChangedSelectionERKNS_9SelectionE
--[WebCoreFrameBridge fontForSelection:]
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore4NodeEEESt4pairIS4_PS5_INS_6VectorINS2_14DocumentMarkerELm0EEENS6_INS2_7IntRectELm0EEEEE
+__ZN7WebCore6Editor25respondToChangedSelectionERKNS_16VisibleSelectionE
__ZNK7WebCore6Editor16fontForSelectionERb
__ZNK7WebCore5Frame22styleForSelectionStartERPNS_4NodeE
-__ZN7WebCore22DeleteButtonController25respondToChangedSelectionERKNS_9SelectionE
-__ZN7WebCore25enclosingDeletableElementERKNS_9SelectionE
+__ZN7WebCore22DeleteButtonController25respondToChangedSelectionERKNS_16VisibleSelectionE
+__ZN7WebCoreL25enclosingDeletableElementERKNS_16VisibleSelectionE
__ZNK7WebCore5Range23commonAncestorContainerERi
__ZN7WebCore5Range23commonAncestorContainerEPNS_4NodeES2_
-__ZN7WebCore18isDeletableElementEPKNS_4NodeE
+__ZN7WebCoreL18isDeletableElementEPKNS_4NodeE
__ZN7WebCore19SelectionController37notifyAccessibilityForSelectionChangeEv
-__ZNK7WebCore5Frame23setSelectionGranularityENS_15TextGranularityE
-__ZNK7WebCore5Frame15revealSelectionERKNS_11RenderLayer15ScrollAlignmentE
-__ZN7WebCore11RenderLayer19scrollRectToVisibleERKNS_7IntRectERKNS0_15ScrollAlignmentES6_
-__ZN7WebCore11RenderLayer15getRectToExposeERKNS_7IntRectES3_RKNS0_15ScrollAlignmentES6_
-__ZNK7WebCore10ScrollView46visibleContentRectConsideringExternalScrollersEv
+__ZN7WebCore5Frame15revealSelectionERKNS_15ScrollAlignmentEb
+__ZN7WebCore19SelectionController19absoluteCaretBoundsEv
+__ZN7WebCore11RenderLayer19scrollRectToVisibleERKNS_7IntRectEbRKNS_15ScrollAlignmentES6_
+__ZNK7WebCore12RenderObject15localToAbsoluteENS_10FloatPointEbb
+__ZN7WebCore11RenderLayer15getRectToExposeERKNS_7IntRectES3_RKNS_15ScrollAlignmentES6_
+__ZNK7WebCore9RenderBox28canBeProgramaticallyScrolledEb
__ZN7WebCore9FrameView29scrollRectIntoViewRecursivelyERKNS_7IntRectE
-__ZNK7WebCore5Frame18prohibitsScrollingEv
__ZN7WebCore10ScrollView29scrollRectIntoViewRecursivelyERKNS_7IntRectE
-__ZN7WebCore17JSHTMLFormElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore15HTMLFormElement9setActionERKNS_6StringE
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLInputElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLInputElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore18JSHTMLInputElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore16HTMLInputElement8setValueERKNS_6StringE
-__ZNK7WebCore19SelectionController12isInsideNodeEv
-__ZNK7WebCore9FrameView13isTransparentEv
-__ZNK7WebCore9FrameView19baseBackgroundColorEv
-__ZN7WebCore15GraphicsContext17drawConvexPolygonEmPKNS_10FloatPointEb
-__ZN7WebCore12RenderWidget5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore6Widget4moveEii
-__ZN7WebCore6Widget5paintEPNS_15GraphicsContextERKNS_7IntRectE
-__ZNK7WebCore5Frame10paintCaretEPNS_15GraphicsContextERKNS_7IntRectE
-__ZN7WebCore19SelectionController10paintCaretEPNS_15GraphicsContextERKNS_7IntRectE
-__ZNK7WebCore12RenderButton15controlClipRectEii
-__ZN7WebCore14RenderListItem5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore13InlineFlowBox16paintBackgroundsEPNS_15GraphicsContextERKNS_5ColorEPKNS_15BackgroundLayerEiiiiii
-__ZN7WebCore13InlineFlowBox15paintBackgroundEPNS_15GraphicsContextERKNS_5ColorEPKNS_15BackgroundLayerEiiiiii
-__ZN7WebCore12RenderInline5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore10IconLoader18didReceiveResponseEPNS_17SubresourceLoaderERKNS_16ResourceResponseE
-__ZN7WebCore10IconLoader14didReceiveDataEPNS_17SubresourceLoaderEPKci
-__ZN7WebCore10IconLoader16didFinishLoadingEPNS_17SubresourceLoaderE
-__ZNK7WebCore14ResourceHandle7requestEv
-__ZN7WebCore10IconLoader13finishLoadingERKNS_4KURLEN3WTF10PassRefPtrINS_12SharedBufferEEE
-__ZN7WebCore12IconDatabase21setIconDataForIconURLEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_6StringE
-__ZNK7WebCore12SharedBuffer4copyEv
-__ZN7WebCore12SharedBufferC2EPKci
-__ZN3WTF6VectorIN7WebCore6StringELm0EE11appendRangeINS_29HashTableConstIteratorAdapterINS_9HashTableIPNS1_10StringImplES8_NS_17IdentityExtractorIS8_EENS1_10StringHashENS_10HashTraitsIS8_EESD_EES2_EEEEvT_SG_
-__ZNK7WebCore10IconRecord8snapshotEb
-__ZN3WTF7HashMapIN7WebCore6StringENS1_12IconSnapshotENS1_10StringHashENS_10HashTraitsIS2_EENS5_IS3_EEE3setERKS2_RKS3_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_12IconSnapshotEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IS5_EEEESC_E3addINS1_6StringES5_NS_17HashMapTranslatorILb0ES4_ISH_S5_ENS_18PairBaseHashTraitsINSB_ISH_EESD_EESE_S9_EEEES4_INS_17HashTableIteratorIS3_S6_S8_S9_SE_SC_EEbERKT_RKT0_
-__ZN7WebCore10IconLoader17clearLoadingStateEv
-__ZN7WebCore23DeprecatedValueListImpl9firstNodeEv
-__ZN7WebCore23DeprecatedValueListImpl14removeIteratorERNS_31DeprecatedValueListImplIteratorE
-__ZN7WebCore13olConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLOListElementC2EPNS_8DocumentE
-__ZNK7WebCore16HTMLOListElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore16HTMLOListElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore16HTMLOListElement17endTagRequirementEv
-__ZNK7WebCore16HTMLOListElement11tagPriorityEv
-__ZNK7WebCore16CSSStyleSelector15smallerFontSizeEfb
-__ZN7WebCore13hrConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore13HTMLHRElementC2EPNS_8DocumentE
-__ZNK7WebCore13HTMLHRElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore13HTMLHRElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore13HTMLHRElement17endTagRequirementEv
-__ZNK7WebCore13HTMLHRElement11tagPriorityEv
-__ZN7WebCore11RenderLayer27repaintIncludingDescendantsEv
-__ZN7WebCore11RenderBlock23removePositionedObjectsEPS0_
-__ZN7WebCore19ImageConstructorImpC2EPN3KJS9ExecStateEPNS_8DocumentE
-__ZNK7WebCore19ImageConstructorImp19implementsConstructEv
-__ZN7WebCore19ImageConstructorImp9constructEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore16RenderListMarkerC2EPNS_14RenderListItemE
-__ZN7WebCore16RenderListMarker8setStyleEPNS_11RenderStyleE
-__ZN7WebCore15RenderTableCell27absoluteClippedOverflowRectEv
-__ZN7WebCore9RenderBox30calcAbsoluteHorizontalReplacedEv
-__ZN7WebCore9RenderBox28calcAbsoluteVerticalReplacedEv
-__ZN7WebCore23getParentOfFirstLineBoxEPNS_11RenderBlockEPNS_12RenderObjectE
-__ZN7WebCore11RenderBlock32generatesLineBoxesForInlineChildEPNS_12RenderObjectE
-__ZN7WebCore16RenderListMarker14calcPrefWidthsEv
-__ZNK7WebCore16RenderListMarker7isImageEv
-__ZNK7WebCore14RenderListItem14updateValueNowEv
-__ZN7WebCore14listMarkerTextENS_14EListStyleTypeEi
-__ZN7WebCore16RenderListMarker13updateMarginsEv
-__ZNK7WebCore16RenderListMarker8isInsideEv
-__ZN7WebCore16RenderListMarker6layoutEv
-__ZNK7WebCore16RenderListMarker12isListMarkerEv
-__ZN7WebCore36shouldSkipWhitespaceAfterStartObjectEPNS_11RenderBlockEPNS_12RenderObjectERNS_12BidiResolverINS_12BidiIteratorENS_7BidiRunEEE
-__ZN7WebCore16RenderListMarker15createInlineBoxEbbb
-__ZN7WebCore13ListMarkerBoxC2EPNS_12RenderObjectE
-__ZNK7WebCore13ListMarkerBox6isTextEv
-__ZNK7WebCore16RenderListMarker14selectionStateEv
-__ZNK7WebCore9RenderBox13intrinsicSizeEv
-__ZNK7WebCore16RenderListMarker10lineHeightEbb
-__ZNK7WebCore16RenderListMarker16baselinePositionEbb
-__ZN7WebCore9InlineBox14adjustPositionEii
-__ZSt17__merge_sort_loopIPPN7WebCore11RenderLayerES3_iPFbS2_S2_EEvT_S6_T0_T1_T2_
-__ZNK7WebCore9RenderBox15borderFitAdjustERiS1_
-__ZN7WebCore16RenderListMarker5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore16RenderListMarker21getRelativeMarkerRectEv
-__ZN7WebCore26NetscapePlugInStreamLoader18didReceiveResponseERKNS_16ResourceResponseE
-__ZN7WebCore26NetscapePlugInStreamLoader14didReceiveDataEPKcixb
-__ZN7WebCore26NetscapePlugInStreamLoader16didFinishLoadingEv
-__ZN7WebCore14DocumentLoader24removePlugInStreamLoaderEPNS_14ResourceLoaderE
-__ZN7WebCore26NetscapePlugInStreamLoader16releaseResourcesEv
-__ZNK7WebCore5Image17usesContainerSizeEv
-__ZZN7WebCore5Image11drawPatternEPNS_15GraphicsContextERKNS_9FloatRectERKNS_15AffineTransformERKNS_10FloatPointENS_17CompositeOperatorES5_E16patternCallbacks
-__ZNK7WebCore15AffineTransform12isInvertibleEv
-__ZNK7WebCore15AffineTransform3detEv
-__ZNK7WebCore15AffineTransform1dEv
-__ZNK7WebCore15AffineTransform1aEv
-__ZN7WebCore17createHeadWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore26JSHTMLHeadElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLHeadElementC1EPN3KJS8JSObjectEPNS_15HTMLHeadElementE
-__ZNK7WebCore18JSHTMLUListElement9classInfoEv
-__ZN7WebCore28JSHTMLAnchorElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore11HTMLElement2idEv
-__ZN3KJS17staticValueGetterIN7WebCore17JSEventTargetNodeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSEventTargetNode16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore17JSEventTargetNode11getListenerERKNS_12AtomicStringE
-__ZN7WebCore15EventTargetNode20getHTMLEventListenerERKNS_12AtomicStringE
-__ZN7WebCore20createHeadingWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore29JSHTMLHeadingElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore20JSHTMLHeadingElementC1EPN3KJS8JSObjectEPNS_18HTMLHeadingElementE
-__ZN7WebCore20JSHTMLHeadingElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore19JSHTMLAnchorElement9classInfoEv
-__ZNK7WebCore11HTMLElement8nodeNameEv
-__ZNK7WebCore15JSHTMLLIElement9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore19JSHTMLAnchorElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSHTMLAnchorElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore17HTMLAnchorElement4hrefEv
-__ZNK7WebCore13JSHTMLElement9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore17JSHTMLFormElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSHTMLFormElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore18createOListWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore27JSHTMLOListElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLOListElementC1EPN3KJS8JSObjectEPNS_16HTMLOListElementE
-__ZN7WebCore18JSHTMLOListElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore18JSHTMLOListElement9classInfoEv
-__ZN7WebCore18createDListWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore27JSHTMLDListElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLDListElementC1EPN3KJS8JSObjectEPNS_16HTMLDListElementE
-__ZN7WebCore15highestAncestorEPNS_4NodeE
-__ZN7WebCore4Node15removedFromTreeEb
-__ZN7WebCore11RenderLayer20setHasVisibleContentEb
-__ZN7WebCore7Element12offsetHeightEv
-__ZN7WebCore13InlineTextBox10deleteLineEPNS_11RenderArenaE
-__ZN7WebCore10RenderText13removeTextBoxEPNS_13InlineTextBoxE
-__ZNK7WebCore13RootInlineBox19lineBreakBidiStatusEv
-__ZNK7WebCore12RenderObject12offsetHeightEv
-__ZN3KJS6Window14installTimeoutERKNS_7UStringEib
-__ZN7WebCore17createLinkWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore26JSHTMLLinkElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLLinkElementC1EPN3KJS8JSObjectEPNS_15HTMLLinkElementE
-__ZN7WebCore17JSHTMLLinkElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore17JSHTMLLinkElement9classInfoEv
-__ZN7WebCore17JSHTMLHeadElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore17JSHTMLHeadElement9classInfoEv
-__ZN7WebCore19createScriptWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore28JSHTMLScriptElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLScriptElementC1EPN3KJS8JSObjectEPNS_17HTMLScriptElementE
-__ZN7WebCore19JSHTMLScriptElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore19JSHTMLScriptElement9classInfoEv
-__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3addERKS3_RKj
-__ZN7WebCore8Document5linksEv
-__ZN3KJS17staticValueGetterIN7WebCore16JSHTMLCollectionEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSHTMLCollection16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore16JSHTMLCollection11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore17createAreaWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore26JSHTMLAreaElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLAreaElementC1EPN3KJS8JSObjectEPNS_15HTMLAreaElementE
-__ZN7WebCore17JSHTMLAreaElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore19JSLazyEventListener11listenerObjEv
-__ZNK7WebCore19JSLazyEventListener9parseCodeEv
-__ZNK7WebCore19JSLazyEventListener18eventParameterNameEv
-__ZNK7WebCore6StringcvN3KJS10IdentifierEEv
-__ZNK7WebCore13JSHTMLElement21pushEventHandlerScopeEPN3KJS9ExecStateERNS1_10ScopeChainE
-__ZNK7WebCore11HTMLElement11virtualFormEv
-__ZNK7WebCore11HTMLElement16findFormAncestorEv
-__ZN7WebCore17JSHTMLAreaElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore19JSLazyEventListenerD1Ev
-__ZN3KJS12ProtectedPtrINS_6WindowEED2Ev
-__ZN3KJS12ProtectedPtrINS_8JSObjectEED2Ev
-__ZNK7WebCore17JSHTMLAreaElement9classInfoEv
-__ZN7WebCore11FrameLoader13executeScriptERKNS_6StringEb
-__ZN7WebCore16HTMLEmbedElement6detachEv
-__ZN7WebCore12RenderWidget7destroyEv
-__ZN7WebCore10RenderView12removeWidgetEPNS_12RenderObjectE
-__ZNK7WebCore8Document13axObjectCacheEv
-__ZNK7WebCore8Document11topDocumentEv
-__ZN7WebCore13AXObjectCache6removeEPNS_12RenderObjectE
-__ZN7WebCore9FrameView20removeWidgetToUpdateEPNS_16RenderPartObjectE
-__ZN7WebCore12RenderWidget12deleteWidgetEv
-__ZNK7WebCore12RenderObject12overflowRectEb
-__ZN7WebCore13ListMarkerBoxD1Ev
-__ZThn68_N7WebCore17HTMLScriptElement14notifyFinishedEPNS_14CachedResourceE
-__ZN7WebCore17HTMLScriptElement14notifyFinishedEPNS_14CachedResourceE
-__ZN7WebCore17HTMLScriptElement14evaluateScriptERKNS_6StringES3_
-__ZNK7WebCore11HTMLElement9innerHTMLEv
-__ZN7WebCore12createMarkupEPKNS_4NodeENS_13EChildrenOnlyEPN3WTF6VectorIPS0_Lm0EEE
-__ZN7WebCore22DeleteButtonController7disableEv
-__ZN7WebCore22DeleteButtonController4hideEv
-__ZN7WebCore12appendMarkupERN3WTF6VectorItLm0EEEPNS_4NodeEbPNS1_IS5_Lm0EEEPKNS0_7HashMapIPNS_16AtomicStringImplESA_NS0_7PtrHashISA_EENS0_10HashTraitsISA_EESE_EE
-__ZZN7WebCore17appendStartMarkupERN3WTF6VectorItLm0EEEPKNS_4NodeEPKNS_5RangeENS_23EAnnotateForInterchangeEbPNS0_7HashMapIPNS_16AtomicStringImplESD_NS0_7PtrHashISD_EENS0_10HashTraitsISD_EESH_EEE11stylePrefix
-__ZNK7WebCore7Element22nodeNamePreservingCaseEv
-__ZNK7WebCore7Element14isURLAttributeEPNS_9AttributeE
-__ZN7WebCore20appendAttributeValueERN3WTF6VectorItLm0EEERKNS_6StringE
-__ZNK7WebCore17HTMLAnchorElement14isURLAttributeEPNS_9AttributeE
-__ZN7WebCore29appendQuotedURLAttributeValueERN3WTF6VectorItLm0EEENS_6StringE
-__ZN7WebCore20appendEscapedContentERN3WTF6VectorItLm0EEESt4pairIPKtmE
-__ZN7WebCore15appendEndMarkupERN3WTF6VectorItLm0EEEPKNS_4NodeE
-__ZN7WebCore22DeleteButtonController6enableEv
-__ZN7WebCore22DeleteButtonController4showEPNS_11HTMLElementE
-__ZN7WebCore27removingNodeRemovesPositionEPNS_4NodeERKNS_8PositionE
-__ZNK7WebCore7Element8containsEPKNS_4NodeE
-__ZN7WebCore5Range21compareBoundaryPointsERKNS_8PositionES3_
-__ZN7WebCore11HTMLElementD1Ev
-__ZN7WebCore21createFieldSetWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore30JSHTMLFieldSetElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore21JSHTMLFieldSetElementC1EPN3KJS8JSObjectEPNS_19HTMLFieldSetElementE
-__ZN7WebCore21JSHTMLFieldSetElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore21JSHTMLFieldSetElement9classInfoEv
-__ZN7WebCore32jsEventTargetRemoveEventListenerEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZThn36_N7WebCore15EventTargetNode19removeEventListenerERKNS_12AtomicStringEPNS_13EventListenerEb
-__ZN7WebCore15EventTargetNode19removeEventListenerERKNS_12AtomicStringEPNS_13EventListenerEb
-__ZN7WebCore16HTMLImageElementD1Ev
-__ZN7WebCore11CachedImage20allReferencesRemovedEv
-__ZN7WebCore11BitmapImage14resetAnimationEv
-__ZN7WebCore11BitmapImage13stopAnimationEv
-__ZN7WebCore8Document11removeImageEPNS_15HTMLImageLoaderE
-__ZN7WebCore17HTMLAnchorElementD1Ev
-__ZNK7WebCore9DOMWindow6lengthEv
-__ZN7WebCore5Frame20caretBlinkTimerFiredEPNS_5TimerIS0_EE
-__ZNK7WebCore12RenderWidget8isWidgetEv
-__ZN3WTF6VectorIPN7WebCore17SubresourceLoaderELm256EE6shrinkEm
-__ZNK7WebCore11FrameLoader14cancelledErrorERKNS_15ResourceRequestE
-__ZN7WebCore14DocumentLoader20setMainDocumentErrorERKNS_13ResourceErrorE
-__ZN7WebCore11FrameLoader20setMainDocumentErrorEPNS_14DocumentLoaderERKNS_13ResourceErrorE
-__ZN7WebCore14ResourceLoader6cancelEv
-__ZN7WebCore14ResourceLoader6cancelERKNS_13ResourceErrorE
-__ZN7WebCore14ResourceLoader14cancelledErrorEv
-__ZN7WebCore17SubresourceLoader9didCancelERKNS_13ResourceErrorE
-__ZN7WebCore14ResourceLoader9didCancelERKNS_13ResourceErrorE
-__ZN7WebCore14ResourceHandle19clearAuthenticationEv
-__ZN7WebCore23AuthenticationChallenge7nullifyEv
-__ZN7WebCore11FrameLoader24cancelPendingArchiveLoadEPNS_14ResourceLoaderE
-__ZN7WebCore14ResourceHandle6cancelEv
-__ZN7WebCore18MainResourceLoader16setDefersLoadingEb
-__ZN7WebCore16HTMLInputElement13aboutToUnloadEv
-__ZN7WebCore5Frame22textFieldDidEndEditingEPNS_7ElementE
-+[DOMHTMLInputElement(WebCoreInternal) _wrapHTMLInputElement:]
-__ZN3KJS34windowProtoFuncRemoveEventListenerEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore18RenderTextFragment7destroyEv
-__ZN7WebCore18RenderTextFragmentD1Ev
-__ZN3WTF11ListHashSetIPN7WebCore12RenderObjectENS_7PtrHashIS3_EEE14deleteAllNodesEv
-__ZN7WebCore10ScrollView11removeChildEPNS_6WidgetE
-__ZN7WebCore6Widget19removeFromSuperviewEv
-__ZN7WebCore23safeRemoveFromSuperviewEP6NSView
-__ZN7WebCore5Frame29cleanupScriptObjectsForPluginEPv
-__ZN7WebCore6WidgetD1Ev
-__ZN7WebCore12RenderButton11removeChildEPNS_12RenderObjectE
-__ZN7WebCore15RenderTableCell7destroyEv
-__ZN7WebCore14RenderTableRow7destroyEv
-__ZN7WebCore18RenderTableSection15removeChildNodeEPNS_12RenderObjectEb
-__ZN7WebCore18RenderTableSection7destroyEv
-__ZN7WebCore11RenderTable15removeChildNodeEPNS_12RenderObjectEb
-__ZN7WebCore18RenderTableSection9clearGridEv
-__ZN3WTF6VectorIN7WebCore18RenderTableSection10CellStructELm0EE6shrinkEm
-__ZN3WTF6VectorIiLm0EE6shrinkEm
-__ZN3WTF6VectorIN7WebCore18RenderTableSection9RowStructELm0EE6shrinkEm
-__ZN3WTF6VectorIN7WebCore15AutoTableLayout6LayoutELm4EE6shrinkEm
-__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE6shrinkEm
-__ZN7WebCore7History15disconnectFrameEv
-__ZN3WTF6VectorIN7WebCore16ResourceResponseELm0EE6shrinkEm
-__ZN7WebCore27JSHTMLImageElementPrototypeD0Ev
-__ZN7WebCore25JSHTMLDivElementPrototypeD0Ev
-__ZN7WebCore24JSHTMLLIElementPrototypeD0Ev
-__ZN7WebCore27JSHTMLUListElementPrototypeD0Ev
-__ZN7WebCore22JSHTMLElementPrototypeD0Ev
-__ZN7WebCore26JSHTMLHeadElementPrototypeD0Ev
-__ZN7WebCore26JSHTMLBodyElementPrototypeD0Ev
-__ZN7WebCore27JSHTMLOListElementPrototypeD0Ev
-__ZN7WebCore13JSHTMLElementD0Ev
-__ZN7WebCore11CachedImageD1Ev
-__ZN7WebCore29JSHTMLHeadingElementPrototypeD0Ev
-__ZN7WebCore30JSHTMLFieldSetElementPrototypeD0Ev
-__ZN7WebCore15HTMLLinkElement19removedFromDocumentEv
-__ZN7WebCore17HTMLScriptElement19removedFromDocumentEv
-__ZN7WebCore17HTMLScriptElementD1Ev
-__ZN7WebCore16HTMLTitleElementD1Ev
-__ZN7WebCore16HTMLStyleElementD1Ev
-__ZN7WebCore14HTMLMapElementD1Ev
-__ZN7WebCore16HTMLImageElement19removedFromDocumentEv
-__ZN7WebCore12HTMLDocument15removeNamedItemERKNS_6StringE
-__ZN7WebCore17removeItemFromMapERN3WTF7HashMapIPNS_10StringImplEiNS_10StringHashENS0_10HashTraitsIS3_EENS5_IiEEEERKNS_6StringE
-__ZN7WebCore12HTMLDocument23removeDocExtraNamedItemERKNS_6StringE
-__ZN3WTF6VectorIPN7WebCore22HTMLGenericFormElementELm0EE6shrinkEm
-__ZN7WebCore16HTMLEmbedElementD1Ev
-__ZN7WebCore16HTMLTableElementD1Ev
-__ZN7WebCore16HTMLLabelElementD1Ev
-__ZN7WebCore23HTMLTableSectionElementD1Ev
-__ZN7WebCore19HTMLTableRowElementD1Ev
-__ZN7WebCore20HTMLTableCellElementD1Ev
-__ZN7WebCore12CSSValueListD1Ev
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore8CSSValueEEELm0EE6shrinkEm
-__ZN7WebCore22JSEventTargetPrototypeINS_15JSNodePrototypeENS_33JSEventTargetPrototypeInformationEED0Ev
-__ZN7WebCore17JSScreenPrototypeD0Ev
-__ZN7WebCore4PathD2Ev
-__ZN7WebCore26JSHTMLAreaElementPrototypeD0Ev
-__ZN7WebCore28JSHTMLScriptElementPrototypeD0Ev
-__ZN7WebCore15HTMLLinkElementD1Ev
-__ZN7WebCore26JSHTMLLinkElementPrototypeD0Ev
-__ZN7WebCore27JSHTMLDListElementPrototypeD0Ev
-__ZN7WebCore13AXObjectCacheD2Ev
-__ZN3WTF9HashTableIjjNS_17IdentityExtractorIjEENS_7IntHashIjEEN7WebCore14AXIDHashTraitsES6_E6expandEv
-__ZN7WebCore12CSSStyleRuleD1Ev
-__ZN7WebCore11CSSSelectorD2Ev
-__ZN7WebCore13CSSImageValueD1Ev
-__ZN7WebCore8Document26setHTMLWindowEventListenerERKNS_12AtomicStringEPNS_9AttributeE
-__ZN7WebCore17iframeConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLIFrameElementC2EPNS_8DocumentE
-__ZN7WebCore20HTMLFrameElementBaseC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore17HTMLIFrameElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore17HTMLIFrameElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore20HTMLFrameElementBase20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore20HTMLFrameElementBase11setLocationERKNS_6StringE
-__ZNK7WebCore17HTMLIFrameElement17endTagRequirementEv
-__ZNK7WebCore17HTMLIFrameElement11tagPriorityEv
-__ZN7WebCore17HTMLIFrameElement20insertedIntoDocumentEv
-__ZN7WebCore20HTMLFrameElementBase20insertedIntoDocumentEv
-__ZN7WebCore17HTMLIFrameElement6attachEv
-__ZN7WebCore20HTMLFrameElementBase6attachEv
-__ZN7WebCore20HTMLFrameElementBase25setNameAndOpenURLCallbackEPNS_4NodeE
-__ZN7WebCore20HTMLFrameElementBase17setNameAndOpenURLEv
-__ZNK7WebCore9FrameTree15uniqueChildNameERKNS_12AtomicStringE
-__ZN7WebCoreeqERKNS_12AtomicStringEPKc
-__ZN7WebCore20HTMLFrameElementBase7openURLEv
-__ZNK7WebCore20HTMLFrameElementBase12isURLAllowedERKNS_12AtomicStringE
-__ZN7WebCore11FrameLoader12requestFrameEPNS_21HTMLFrameOwnerElementERKNS_6StringERKNS_12AtomicStringE
-__ZN7WebCore11FrameLoader12loadSubframeEPNS_21HTMLFrameOwnerElementERKNS_4KURLERKNS_6StringES8_
-__ZNK7WebCore20HTMLFrameElementBase13scrollingModeEv
-__ZN7WebCore11FrameLoader7canLoadERKNS_4KURLERKNS_6StringE
-__ZN7WebCore9FrameTree11appendChildEN3WTF10PassRefPtrINS_5FrameEEE
--[WebCoreFrameBridge _frame]
-__ZN7WebCore11FrameLoader18currentHistoryItemEv
-__ZNK7WebCore11HistoryItem8childrenEv
-__ZN7WebCore11FrameLoader4loadERKNS_4KURLERKNS_6StringENS_13FrameLoadTypeES6_PNS_5EventEN3WTF10PassRefPtrINS_9FormStateEEE
-__ZN7WebCore16NavigationActionC2ERKNS_4KURLENS_13FrameLoadTypeEbN3WTF10PassRefPtrINS_5EventEEE
-__ZN7WebCore14navigationTypeENS_13FrameLoadTypeEbb
-__ZN7WebCore11FrameLoader12shouldReloadERKNS_4KURLES3_
-__ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestERKNS_16NavigationActionENS_13FrameLoadTypeEN3WTF10PassRefPtrINS_9FormStateEEE
-__ZNK7WebCore5Frame19setInViewSourceModeEb
-__ZN7WebCore13ContainerNode12insertBeforeEN3WTF10PassRefPtrINS_4NodeEEEPS3_Ri
-__ZN7WebCore15HTMLFormElement18registerImgElementEPNS_16HTMLImageElementE
-__ZN3WTF6VectorIPN7WebCore16HTMLImageElementELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore16HTMLImageElementELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore16HTMLImageElementELm0EE15reserveCapacityEm
-__ZN3KJS6Window16childFrameGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore14SecurityOrigin9canAccessEPKS0_RNS0_6ReasonE
-__ZN7WebCore11FrameLoader24shouldTreatSchemeAsLocalERKNS_6StringE
-__ZN7WebCore7Element9offsetTopEv
-__ZNK7WebCore11CSSRuleList6lengthEv
-__ZN7WebCore11CSSRuleList4itemEj
-__ZN7WebCore17HTMLOptionElement6detachEv
-__ZN7WebCore17HTMLIFrameElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore17HTMLIFrameElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZNK7WebCore9FrameView11isFrameViewEv
-__ZN7WebCore6Widget4hideEv
-__ZNK7WebCore14RenderThemeMac17adjustButtonStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZNK7WebCore14RenderThemeMac31setButtonPaddingFromControlSizeEPNS_11RenderStyleEj
-__ZN3WTF9HashTableIN7WebCore16FontPlatformDataESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_20FontDataCacheKeyHashENS_14PairHashTraitsINS1_22FontDataCacheKeyTraitsENS_10HashTraitsIiEEEES9_E4findIS2_NS_22IdentityHashTranslatorIS2_S4_S7_EEEENS_17HashTableIteratorIS2_S4_S6_S7_SC_S9_EERKT_
-__ZN7WebCore9FontCache24getFontDataForCharactersERKNS_4FontEPKti
-__ZN7WebCore17RenderFlexibleBox24calcHorizontalPrefWidthsEv
-__ZN3WTF6VectorIN7WebCore15AutoTableLayout6LayoutELm4EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore15AutoTableLayout6LayoutELm4EE15reserveCapacityEm
-__ZNK7WebCore10RenderView8viewRectEv
-__ZNK7WebCore12RenderObject9offsetTopEv
-__ZNK7WebCore12RenderObject12offsetParentEv
-__ZN7WebCore7Element12offsetParentEv
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm10EE6shrinkEm
-__ZN7WebCore12RenderObject10moveLayersEPNS_11RenderLayerES2_
-__ZNK7WebCore15RenderTableCell14borderHalfLeftEb
-__ZNK7WebCore15RenderTableCell19collapsedLeftBorderEb
-__ZN7WebCore14compareBordersERKNS_20CollapsedBorderValueES2_
-__ZNK7WebCore15RenderTableCell15borderHalfRightEb
-__ZNK7WebCore15RenderTableCell20collapsedRightBorderEb
-__ZNK7WebCore11RenderTable9cellAfterEPKNS_15RenderTableCellE
-__ZNK7WebCore15RenderTableCell13borderHalfTopEb
-__ZNK7WebCore15RenderTableCell18collapsedTopBorderEv
-__ZNK7WebCore15RenderTableCell16borderHalfBottomEb
-__ZNK7WebCore15RenderTableCell21collapsedBottomBorderEv
-__ZNK7WebCore11RenderTable9cellBelowEPKNS_15RenderTableCellE
-__ZN7WebCore18RenderTableSection17recalcOuterBorderEv
-__ZNK7WebCore18RenderTableSection18calcOuterBorderTopEv
-__ZNK7WebCore18RenderTableSection21calcOuterBorderBottomEv
-__ZNK7WebCore18RenderTableSection19calcOuterBorderLeftEb
-__ZNK7WebCore18RenderTableSection20calcOuterBorderRightEb
-__ZNK7WebCore11RenderTable16outerBorderRightEv
-__ZNK7WebCore11RenderTable15outerBorderLeftEv
-__ZNK7WebCore11RenderTable14outerBorderTopEv
-__ZNK7WebCore11RenderTable17outerBorderBottomEv
-__ZN7WebCore14RenderThemeMac18setButtonCellStateEPKNS_12RenderObjectERKNS_7IntRectE
-__ZNK7WebCore14RenderThemeMac6buttonEv
-__ZNK7WebCore16HTMLInputElement15isIndeterminateEv
-__ZNK7WebCore16HTMLInputElement9isCheckedEv
-__ZNK7WebCore14RenderThemeMac13buttonMarginsEv
-__ZN7WebCore13InlineFlowBox25adjustMaxAscentAndDescentERiS1_ii
-__ZN7WebCore11RenderLayer25setHasHorizontalScrollbarEb
-__ZN7WebCore11RenderLayer23setHasVerticalScrollbarEb
-__ZN7WebCore11RenderLayer15createScrollbarENS_20ScrollbarOrientationE
-__ZN7WebCore17PlatformScrollbarC2EPNS_15ScrollbarClientENS_20ScrollbarOrientationENS_20ScrollbarControlSizeE
-__ZN7WebCore9ScrollbarC2EPNS_15ScrollbarClientENS_20ScrollbarOrientationENS_20ScrollbarControlSizeE
--[WebCoreScrollBar initWithPlatformScrollbar:]
-__ZThn8_NK7WebCore17PlatformScrollbar5widthEv
-__ZNK7WebCore17PlatformScrollbar5widthEv
-__ZThn8_N7WebCore17PlatformScrollbar10setEnabledEb
-__ZN7WebCore17PlatformScrollbar10setEnabledEb
-__ZN7WebCore6Widget10setEnabledEb
-__ZN7WebCore9Scrollbar8setStepsEiii
-__ZN7WebCore9Scrollbar13setProportionEii
-__ZThn8_N7WebCore17PlatformScrollbar21updateThumbProportionEv
-__ZN7WebCore17PlatformScrollbar21updateThumbProportionEv
-__ZThn8_N7WebCore17PlatformScrollbar7setRectERKNS_7IntRectE
-__ZN7WebCore17PlatformScrollbar7setRectERKNS_7IntRectE
-__ZNK7WebCore12RenderObject14nextInPreOrderEv
-__ZNK7WebCore15RenderTableCell19collectBorderStylesERN3WTF6VectorINS_20CollapsedBorderValueELm100EEE
-__ZN7WebCore14addBorderStyleERN3WTF6VectorINS_20CollapsedBorderValueELm100EEES2_
-__ZN7WebCore15RenderTableCell16sortBorderStylesERN3WTF6VectorINS_20CollapsedBorderValueELm100EEE
-__ZN7WebCore15RenderTableCell20paintCollapsedBorderEPNS_15GraphicsContextEiiii
-__ZN7WebCore20collapsedBorderStyleENS_12EBorderStyleE
-__ZN3WTF6VectorIN7WebCore20CollapsedBorderValueELm100EE6shrinkEm
-__ZNK7WebCore13RootInlineBox11ellipsisBoxEv
-__ZN7WebCore14RenderThemeMac11paintButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore11FrameLoader41updateHistoryForRedirectWithLockedHistoryEv
-__ZN7WebCore11HistoryItem12addChildItemEN3WTF10PassRefPtrIS0_EE
-__ZNK7WebCore17DeprecatedCString5lowerEv
-__ZN7WebCore9ArrayImplC2ERKS0_
-__ZN7WebCore9ArrayImplaSERKS0_
-__ZN7WebCore22characterBreakIteratorEPKti
-__ZNK7WebCore22HTMLGenericFormElement11virtualFormEv
-__ZNK7WebCore17HTMLSelectElement14isEnumeratableEv
-__ZN7WebCore16HTMLInputElement17setSelectionRangeEii
-__ZN7WebCore18createTableWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore27JSHTMLTableElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLTableElementC1EPN3KJS8JSObjectEPNS_16HTMLTableElementE
-__ZN7WebCore18JSHTMLTableElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore22createTableCellWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore31JSHTMLTableCellElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore22JSHTMLTableCellElementC1EPN3KJS8JSObjectEPNS_20HTMLTableCellElementE
-__ZN7WebCore22JSHTMLTableCellElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore19createSelectWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore19JSHTMLSelectElementC1EPN3KJS8JSObjectEPNS_17HTMLSelectElementE
-__ZN7WebCore19JSHTMLSelectElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore19JSHTMLSelectElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore22HTMLGenericFormElement11setDisabledEb
-__ZN7WebCore9JSElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore7Element12setScrollTopEi
-__ZN7WebCore12RenderObject12setScrollTopEi
-__ZN7WebCore11RenderLayer14scrollToOffsetEiibb
-__ZN7WebCore9Scrollbar8setValueEi
-__ZN7WebCore9FrameView13scheduleEventEN3WTF10PassRefPtrINS_5EventEEENS2_INS_15EventTargetNodeEEEb
-__ZNK7WebCore13HTMLTokenizer15isHTMLTokenizerEv
-__ZN7WebCore11RenderBlock22removePositionedObjectEPNS_12RenderObjectE
-__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore12RenderObjectEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashFunctionsIS4_NS_7PtrHashIS4_EEEENS_10HashTraitsIS6_EESE_E4findIS4_NS_21ListHashSetTranslatorIS4_SB_EEEENS_17HashTableIteratorIS6_S6_S8_SC_SE_SE_EERKT_
-__ZN3WTF11ListHashSetIPN7WebCore12RenderObjectENS_7PtrHashIS3_EEE15unlinkAndDeleteEPNS_15ListHashSetNodeIS3_EE
+__ZN7WebCore10ScrollView17setScrollPositionERKNS_8IntPointE
+__ZN7WebCore10ScrollView25platformSetScrollPositionERKNS_8IntPointE
+__ZN7WebCore12EventHandler15sendScrollEventEv
+__ZN7WebCore9FrameView20setWasScrolledByUserEb
+__ZNK7WebCore11RenderBlock17offsetForContentsERiS1_
+__ZNK7WebCore11RenderLayer24addScrolledContentOffsetERiS1_
+__ZNK7WebCore5Frame10paintCaretEPNS_15GraphicsContextEiiRKNS_7IntRectE
+__ZN7WebCore19SelectionController10paintCaretEPNS_15GraphicsContextEiiRKNS_7IntRectE
__ZN7WebCore12RenderObject12paintOutlineEPNS_15GraphicsContextEiiiiPKNS_11RenderStyleE
__ZNK7WebCore11RenderTheme17supportsFocusRingEPKNS_11RenderStyleE
__ZN7WebCore15GraphicsContext13initFocusRingEii
__ZN7WebCore15GraphicsContext14clearFocusRingEv
-__ZN7WebCore10RenderFlow17addFocusRingRectsEPNS_15GraphicsContextEii
+__ZN7WebCore17RenderTextControl17addFocusRingRectsEPNS_15GraphicsContextEii
__ZN7WebCore15GraphicsContext16addFocusRingRectERKNS_7IntRectE
__ZN7WebCore15GraphicsContext13drawFocusRingERKNS_5ColorE
__ZNK7WebCore15GraphicsContext14focusRingWidthEv
__ZNK7WebCore15GraphicsContext15focusRingOffsetEv
-__ZN7WebCore7cgColorERKNS_5ColorE
+__ZN7WebCore13createCGColorERKNS_5ColorE
__ZN7WebCore7nsColorERKNS_5ColorE
-__ZN7WebCore18CGColorFromNSColorEP7NSColor
+__ZN7WebCoreL18CGColorFromNSColorEP7NSColor
__ZNK7WebCore15GraphicsContext14focusRingRectsEv
-__ZNK7WebCore11BitmapImage10solidColorEv
-__ZN7WebCore9FloatRectC2ERK6CGRect
-__ZN7WebCore10FloatPointC2ERK7CGPoint
-__ZN7WebCore9FloatSizeC2ERK6CGSize
-__ZN7WebCore5Image18fillWithSolidColorEPNS_15GraphicsContextERKNS_9FloatRectERKNS_5ColorENS_17CompositeOperatorE
-__ZN7WebCore26CSSMutableStyleDeclaration21removePropertiesInSetEPKijb
-__ZNK7WebCore15CSSInitialValue7cssTextEv
-__ZN7WebCore11FrameLoader29loadedResourceFromMemoryCacheEPKNS_14CachedResourceE
-__ZN7WebCore19InspectorController30didLoadResourceFromMemoryCacheEPNS_14DocumentLoaderERKNS_15ResourceRequestERKNS_16ResourceResponseEi
+__ZNK7WebCore9FrameView10hostWindowEv
+__ZNK7WebCore6Chrome18scrollRectIntoViewERKNS_7IntRectEPKNS_10ScrollViewE
+__ZN3WTF6VectorIN3JSC8RegisterELm8EE6shrinkEm
+__ZN7WebCore20jsDOMWindowNavigatorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow9navigatorEv
+__ZN7WebCore9NavigatorC1EPNS_5FrameE
+__ZN7WebCore9NavigatorC2EPNS_5FrameE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_9NavigatorE
+__ZN7WebCore11JSNavigator15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore11JSNavigatorC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9NavigatorEEE
+__ZN7WebCore11JSNavigatorC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9NavigatorEEE
+__ZN7WebCore11JSNavigator18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19jsNavigatorLanguageEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9Navigator8languageEv
+__ZN7WebCore15defaultLanguageEv
+__ZN7WebCore16jsDocumentCookieEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Document6cookieEv
+__ZN7WebCore7cookiesEPKNS_8DocumentERKNS_4KURLE
+__ZN7WebCoreL13filterCookiesEP7NSArray
+__ZN7WebCore19JSHTMLSelectElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore27setJSHTMLSelectElementValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore26valueToStringWithNullCheckEPN3JSC9ExecStateENS0_7JSValueE
+__ZN7WebCore17HTMLSelectElement8setValueERKNS_6StringE
+__ZNK7WebCore17HTMLOptionElement5valueEv
+__ZN7WebCore13OptionElement18collectOptionValueERKNS_17OptionElementDataEPNS_8DocumentE
+__ZN3WTF6VectorIbLm0EE6shrinkEm
+__ZN7WebCore11FrameLoader19handledOnloadEventsEv
+__ZN7WebCore8Document13svgExtensionsEv
+__ZNK7WebCore14DocumentLoader16isLoadingPlugInsEv
+__ZNK7WebCore8Document16isPluginDocumentEv
+__ZNK7WebCore8Document15isImageDocumentEv
+__Z3kitPN7WebCore8DocumentE
+__Z3kitPN7WebCore4NodeE
+__Z8kitClassPN7WebCore4NodeE
+-[DOMDocument getElementsByTagName:]
+__ZN7WebCore4Node20getElementsByTagNameERKNS_6StringE
+__ZN7WebCore4Node22getElementsByTagNameNSERKNS_12AtomicStringERKNS_6StringE
+__ZN7WebCore4Node14createRareDataEv
+__ZN7WebCore15DynamicNodeList6CachesC1Ev
+__ZN7WebCore15DynamicNodeList6CachesC2Ev
+__ZN3WTF7HashMapIN7WebCore13QualifiedNameEPNS1_15DynamicNodeList6CachesENS1_17QualifiedNameHashENS_10HashTraitsIS2_EENS7_IS5_EE
+__ZN3WTF9HashTableIN7WebCore13QualifiedNameESt4pairIS2_PNS1_15DynamicNodeList6CachesEENS_18PairFirstExtractorIS7_EENS1_17Qualif
+__ZN7WebCore11TagNodeListC1EN3WTF10PassRefPtrINS_4NodeEEERKNS_12AtomicStringES7_PNS_15DynamicNodeList6CachesE
+__ZN7WebCore11TagNodeListC2EN3WTF10PassRefPtrINS_4NodeEEERKNS_12AtomicStringES7_PNS_15DynamicNodeList6CachesE
+__ZN7WebCore15DynamicNodeListC2EN3WTF10PassRefPtrINS_4NodeEEEPNS0_6CachesE
+__ZN7WebCore4Node23registerDynamicNodeListEPNS_15DynamicNodeListE
+__Z3kitPN7WebCore8NodeListE
+-[DOMNodeList length]
+__ZNK7WebCore15DynamicNodeList6lengthEv
+__ZNK7WebCore11TagNodeList11nodeMatchesEPNS_7ElementE
+-[DOMNodeList item:]
+__ZNK7WebCore15DynamicNodeList4itemEj
+__ZNK7WebCore15DynamicNodeList23itemForwardsFromCurrentEPNS_4NodeEji
+__ZN7WebCoreL12elementClassERKNS_13QualifiedNameEP10objc_class
+__ZN7WebCoreL15addElementClassERKNS_13QualifiedNameEP10objc_class
+__ZN3WTF7HashMapIPKN7WebCore13QualifiedName17QualifiedNameImplEP10objc_classNS_7PtrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3s
+__ZN3WTF9HashTableIPKN7WebCore13QualifiedName17QualifiedNameImplESt4pairIS5_P10objc_classENS_18PairFirstExtractorIS9_EENS_7PtrH
+__ZN7WebCoreL18lookupElementClassERKNS_13QualifiedNameE
+__ZNK3WTF7HashMapIPKN7WebCore13QualifiedName17QualifiedNameImplEP10objc_classNS_7PtrHashIS5_EENS_10HashTraitsIS5_EENSA_IS7_EEE3
+-[DOMNode attributes]
+__ZNK7WebCore7Element10attributesEv
+__Z3kitPN7WebCore12NamedNodeMapE
+-[DOMNamedNodeMap getNamedItem:]
+__ZNK7WebCore12NamedNodeMap12getNamedItemERKNS_6StringE
+__ZNK7WebCore12NamedNodeMap16getAttributeItemERKNS_6StringEb
+__ZNK7WebCore13QualifiedName8toStringEv
+__ZN7WebCore9Attribute18createAttrIfNeededEPNS_7ElementE
+__ZN7WebCore4AttrC1EPNS_7ElementEPNS_8DocumentEN3WTF10PassRefPtrINS_9AttributeEEE
+__ZN7WebCore4AttrC2EPNS_7ElementEPNS_8DocumentEN3WTF10PassRefPtrINS_9AttributeEEE
+__ZN7WebCore4Attr15createTextChildEv
+__ZN7WebCore8Document14createTextNodeERKNS_6StringE
+__ZNK7WebCore4Attr8nodeTypeEv
+-[DOMNode nodeValue]
+__ZNK7WebCore4Attr9nodeValueEv
+__ZNK7WebCore11HistoryItem20getTransientPropertyERKNS_6StringE
+__ZN7WebCore15ProgressTracker17progressCompletedEPNS_5FrameE
+__ZN7WebCore15ProgressTracker21finalProgressCompleteEv
+-[DOMNode dealloc]
+__ZThn8_N7WebCore4AttrD0Ev
+__ZN7WebCore4AttrD0Ev
+-[DOMObject dealloc]
+__Z16removeDOMWrapperP17DOMObjectInternal
+-[WebScriptObject dealloc]
+-[DOMNamedNodeMap dealloc]
+-[DOMNodeList dealloc]
+__ZN7WebCore11TagNodeListD0Ev
+__ZN7WebCore15DynamicNodeListD2Ev
+__ZN7WebCore4Node25unregisterDynamicNodeListEPNS_15DynamicNodeListE
+__ZNK7WebCore19SelectionController17isInPasswordFieldEv
+__ZN7WebCore6Loader4HostD0Ev
+-[DOMDocument forms]
+__ZN7WebCore8Document5formsEv
+__ZN7WebCore14HTMLCollection6createEN3WTF10PassRefPtrINS_4NodeEEENS_14CollectionTypeE
+__ZN7WebCore14HTMLCollectionC1EN3WTF10PassRefPtrINS_4NodeEEENS_14CollectionTypeE
+__ZN7WebCore14HTMLCollectionC2EN3WTF10PassRefPtrINS_4NodeEEENS_14CollectionTypeE
+__Z3kitPN7WebCore14HTMLCollectionE
+__Z8kitClassPN7WebCore14HTMLCollectionE
+-[DOMHTMLCollection length]
+__ZNK7WebCore14HTMLCollection6lengthEv
+__ZNK7WebCore14HTMLCollection19resetCollectionInfoEv
+__ZNK7WebCore14HTMLCollection10calcLengthEv
+__ZNK7WebCore14HTMLCollection9itemAfterEPNS_7ElementE
+__ZN7WebCoreL17nextNodeOrSiblingEPNS_4NodeES1_b
+-[DOMHTMLCollection item:]
+__ZNK7WebCore14HTMLCollection4itemEj
+-[DOMHTMLFormElement elements]
+__ZN7WebCore15HTMLFormElement8elementsEv
+__ZN7WebCore18HTMLFormCollection6createEN3WTF10PassRefPtrINS_15HTMLFormElementEEE
+__ZN7WebCore18HTMLFormCollectionC1EN3WTF10PassRefPtrINS_15HTMLFormElementEEE
+__ZN7WebCore18HTMLFormCollectionC2EN3WTF10PassRefPtrINS_15HTMLFormElementEEE
+__ZN7WebCore14HTMLCollectionC2EN3WTF10PassRefPtrINS_4NodeEEENS_14CollectionTypeEPNS_15CollectionCacheE
+__ZNK7WebCore18HTMLFormCollection10calcLengthEv
+__ZNK7WebCore15HTMLFormElement6lengthEv
+__ZNK7WebCore22HTMLFormControlElement14isEnumeratableEv
+__ZNK7WebCore16HTMLInputElement14isEnumeratableEv
+__ZNK7WebCore17HTMLSelectElement14isEnumeratableEv
+__ZNK7WebCore18HTMLFormCollection4itemEj
+-[DOMHTMLInputElement(FormAutoFillTransition) _isTextField]
+__Z4coreP19DOMHTMLInputElement
+__ZNK7WebCore5Frame11currentFormEv
+__Z3kitPN7WebCore7ElementE
+__Z4coreP10DOMElement
+-[DOMElement offsetWidth]
__ZN7WebCore7Element11offsetWidthEv
-__ZThn8_NK7WebCore17PlatformScrollbar8isWidgetEv
-__ZNK7WebCore17PlatformScrollbar8isWidgetEv
-__ZN7WebCore6Widget16removeFromParentEv
--[WebCoreScrollBar detachPlatformScrollbar]
-__ZNK7WebCore12RenderObject11offsetWidthEv
-__ZN7WebCore44jsDOMWindowPrototypeFunctionGetComputedStyleEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9toElementEPN3KJS7JSValueE
+__ZNK7WebCore4Node20renderBoxModelObjectEv
+__ZNK7WebCore20RenderBoxModelObject16isBoxModelObjectEv
+__ZNK7WebCore9RenderBox11offsetWidthEv
+__ZN7WebCoreL21adjustForAbsoluteZoomEiPNS_12RenderObjectE
+-[DOMElement offsetHeight]
+__ZN7WebCore7Element12offsetHeightEv
+__ZNK7WebCore9RenderBox12offsetHeightEv
+-[DOMNode ownerDocument]
+-[DOMDocument getComputedStyle:pseudoElement:]
__ZNK7WebCore9DOMWindow16getComputedStyleEPNS_7ElementERKNS_6StringE
+__ZN7WebCore27CSSComputedStyleDeclarationC1EN3WTF10PassRefPtrINS_4NodeEEE
__ZN7WebCore27CSSComputedStyleDeclarationC2EN3WTF10PassRefPtrINS_4NodeEEE
-__ZN7WebCore21JSCSSStyleDeclaration18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore21JSCSSStyleDeclaration18canGetItemsForNameEPN3KJS9ExecStateEPNS_19CSSStyleDeclarationERKNS1_10IdentifierE
-__ZN7WebCore21JSCSSStyleDeclaration10nameGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore19CSSStyleDeclaration19getPropertyCSSValueERKNS_6StringE
+__Z3kitPN7WebCore19CSSStyleDeclarationE
+-[DOMCSSStyleDeclaration getPropertyValue:]
+__ZN7WebCore19CSSStyleDeclaration16getPropertyValueERKNS_6StringE
+__ZN7WebCore13cssPropertyIDERKNS_6StringE
+__ZNK7WebCore27CSSComputedStyleDeclaration16getPropertyValueEi
__ZNK7WebCore27CSSComputedStyleDeclaration19getPropertyCSSValueEi
__ZNK7WebCore27CSSComputedStyleDeclaration19getPropertyCSSValueEiNS_13EUpdateLayoutE
__ZN7WebCore7Element13computedStyleEv
-__ZN7WebCore7Element10offsetLeftEv
-__ZNK7WebCore12RenderObject10offsetLeftEv
-__ZN7WebCore19CSSStyleDeclaration16getPropertyValueERKNS_6StringE
-__ZNK7WebCore26CSSMutableStyleDeclaration16getPropertyValueEi
-__ZN7WebCore19CSSCursorImageValueC2ERKNS_6StringERKNS_8IntPointEPNS_9StyleBaseE
-__ZN7WebCore11RenderStyle9addCursorEPNS_11CachedImageERKNS_8IntPointE
-__ZN3WTF6VectorIN7WebCore10CursorDataELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore10CursorDataELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore10CursorDataELm0EE15reserveCapacityEm
-__ZNK7WebCore12CSSValueList7cssTextEv
-__ZNK7WebCore15FontFamilyValue7cssTextEv
-__ZN7WebCore15JSTextPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore24JSCharacterDataPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore4Font7xHeightEv
-__ZNK7WebCore11RenderTheme19adjustCheckboxStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZNK7WebCore14RenderThemeMac15setCheckboxSizeEPNS_11RenderStyleE
-__ZNK7WebCore14RenderThemeMac13checkboxSizesEv
-__ZN3WTF6VectorIPN7WebCore12RenderObjectELm16EE6shrinkEm
-__ZN7WebCore11RenderLayer25dirtyVisibleContentStatusEv
-__ZN7WebCore14RenderThemeMac20setCheckboxCellStateEPKNS_12RenderObjectERKNS_7IntRectE
-__ZNK7WebCore14RenderThemeMac8checkboxEv
-__ZNK7WebCore14RenderThemeMac15checkboxMarginsEv
-__ZNK7WebCore14RenderThemeMac16baselinePositionEPKNS_12RenderObjectE
-__ZN7WebCore7Element11clientWidthEv
-__ZN7WebCore7Element12clientHeightEv
-__ZN7WebCore10RenderView15pushLayoutStateEPNS_12RenderObjectE
-__ZN7WebCore11LayoutStateC2EPNS_12RenderObjectE
-__ZN7WebCore27isObjectAncestorContainerOfEPNS_12RenderObjectES1_
-__ZN3WTF6VectorIN7WebCore10CursorDataELm0EE6shrinkEm
-__ZN7WebCore22JSHTMLTableCellElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore19JSHTMLAnchorElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore17HTMLAnchorElement7setHrefERKNS_6StringE
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLImageElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLImageElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore16HTMLImageElement8completeEv
-__ZNK7WebCore16HTMLImageElement3srcEv
-__ZN7WebCore27CSSComputedStyleDeclarationD1Ev
-__ZN7WebCore16HTMLInputElement10setCheckedEbb
-__ZN7WebCore23DeprecatedValueListImpl16removeEqualNodesEPNS_27DeprecatedValueListImplNodeEPFbPKS1_S4_E
-__ZN7WebCore19DeprecatedValueListINS_11CSSPropertyEE10nodesEqualEPKNS_27DeprecatedValueListImplNodeES5_
-__ZN7WebCoreeqERKNS_11CSSPropertyES2_
-__ZNK7WebCore11RenderTheme12stateChangedEPNS_12RenderObjectENS_12ControlStateE
-__ZN7WebCore13textBreakNextEPNS_17TextBreakIteratorE
-__ZN7WebCore18createStyleWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore27JSHTMLStyleElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLStyleElementC1EPN3KJS8JSObjectEPNS_16HTMLStyleElementE
-__ZN7WebCore18JSHTMLStyleElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore18JSHTMLStyleElement9classInfoEv
-__ZN7WebCore18JSHTMLStyleElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore12StyleElement20insertedIntoDocumentEPNS_8DocumentEPNS_7ElementE
-__ZN7WebCore17JSHTMLBodyElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore11FrameLoader15parentCompletedEv
-__ZN7WebCore19JSHTMLScriptElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore12CachedScript11setEncodingERKNS_6StringE
-__ZN7WebCore12RenderInline11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore13InlineTextBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
+__ZNK7WebCore17CSSPrimitiveValue7cssTextEv
+__ZN7WebCore17CSSPrimitiveValueD0Ev
+__ZN7WebCore17CSSPrimitiveValue7cleanupEv
+__ZNK7WebCore16HTMLInputElement12autoCompleteEv
+-[DOMHTMLCollection dealloc]
+__ZN7WebCore14HTMLCollectionD0Ev
+-[DOMCSSStyleDeclaration dealloc]
+__ZN7WebCore27CSSComputedStyleDeclarationD0Ev
+__ZN7WebCore18HTMLFormCollectionD0Ev
+__ZN7WebCore14HTMLCollectionD2Ev
+__ZNK7WebCore4Font15drawComplexTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
+__ZN7WebCore18CoreTextController7advanceEjPNS_11GlyphBufferE
+__ZN7WebCore5Frame20caretBlinkTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore11HistoryItemC1ERKNS_6StringES3_d
+__ZN7WebCore11HistoryItemC2ERKNS_6StringES3_d
+__ZN7WebCore11HistoryItem18recordInitialVisitEv
+__ZN3WTF6VectorIiLm0EE14expandCapacityEmPKi
+__ZN3WTF6VectorIiLm0EE14expandCapacityEm
+__ZN3WTF6VectorIiLm0EE15reserveCapacityEm
+__ZNK7WebCore11HistoryItem10visitCountEv
+__ZN7WebCore13ScriptElement21handleSourceAttributeERNS_17ScriptElementDataERKNS_6StringE
+__ZNK7WebCore17ScriptElementData18ignoresLoadRequestEv
+__ZN7WebCore9DocLoader13requestScriptERKNS_6StringES3_
+__ZN7WebCore12CachedScriptC1ERKNS_6StringES3_
+__ZN7WebCore12CachedScriptC2ERKNS_6StringES3_
+__ZN7WebCore17DOMImplementation13isXMLMIMETypeERKNS_6StringE
+__ZN7WebCore17RegularExpressionC1ERKNS_6StringENS_19TextCaseSensitivityE
+__ZN7WebCore17RegularExpressionC2ERKNS_6StringENS_19TextCaseSensitivityE
+__ZNK7WebCore17RegularExpression5matchERKNS_6StringEiPi
+__ZN3WTF5DequeIN7WebCore20CachedResourceHandleINS1_12CachedScriptEEEE14expandCapacityEv
+__ZN7WebCore12CachedScript9addClientEPNS_20CachedResourceClientE
+__ZN7WebCore14PreloadScannerC1EPNS_8DocumentE
+__ZN7WebCore14PreloadScannerC2EPNS_8DocumentE
+__ZN7WebCore14PreloadScanner5beginEv
+__ZN7WebCore14PreloadScanner5resetEv
+__ZN3WTF6VectorItLm32EE14shrinkCapacityEm
+__ZN3WTF6VectorItLm16EE14shrinkCapacityEm
+__ZN7WebCore14PreloadScanner5writeERKNS_15SegmentedStringE
+__ZN7WebCore14PreloadScanner8tokenizeERKNS_15SegmentedStringE
+__ZN7WebCore14PreloadScanner16processAttributeEv
+__ZN3WTF6VectorItLm32EE6shrinkEm
+__ZN7WebCore14PreloadScanner7emitTagEv
+__ZNK7WebCore14PreloadScanner12scanningBodyEv
+__ZN7WebCore9DocLoader7preloadENS_14CachedResource4TypeERKNS_6StringES5_b
+__ZN7WebCore9DocLoader14requestPreloadENS_14CachedResource4TypeERKNS_6StringES5_
+__ZNK3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore14CachedResourceEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashF
+__ZN3WTF11ListHashSetIPN7WebCore14CachedResourceENS_7PtrHashIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore14CachedResourceEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashFu
+__ZN3WTF11ListHashSetIPN7WebCore14CachedResourceENS_7PtrHashIS3_EEE10appendNodeEPNS_15ListHashSetNodeIS3_EE
+__ZN3WTF5DequeIN7WebCore18SegmentedSubstringEE14expandCapacityEv
+__ZN3WTF6VectorIN7WebCore9DocLoader14PendingPreloadELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIN7WebCore9DocLoader14PendingPreloadELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore9DocLoader14PendingPreloadELm0EE15reserveCapacityEm
+__ZN7WebCore14PreloadScanner13consumeEntityERNS_15SegmentedStringERb
+__ZN3WTF6VectorIcLm10EE6shrinkEm
+__ZN3WTF6VectorItLm10EE6shrinkEm
+__ZNK7WebCore12HTMLDocument10isFrameSetEv
+-[DOMDocument documentElement]
+-[DOMDocument createRange]
+__ZN7WebCore8Document11createRangeEv
+__Z3kitPN7WebCore5RangeE
+-[DOMRange selectNode:]
+__Z4coreP7DOMNode
+__ZN7WebCore5Range10selectNodeEPNS_4NodeERi
+__ZN7WebCore5Range14setStartBeforeEPNS_4NodeERi
+__ZNK7WebCore5Range11checkNodeBAEPNS_4NodeERi
+__ZNK7WebCore4Node9nodeIndexEv
+__ZN7WebCore5Range11setEndAfterEPNS_4NodeERi
+__Z4coreP8DOMRange
+__ZN7WebCore32plainTextToMallocAllocatedBufferEPKNS_5RangeERjb
+__ZN7WebCore12TextIterator17handleNonTextNodeEv
+__ZN7WebCoreL24shouldEmitNewlineForNodeEPNS_4NodeE
+__ZNK7WebCore4Node14isDescendantOfEPKS0_
__ZNK7WebCore4Node17isContentEditableEv
-__ZNK7WebCore4Node17canStartSelectionEv
-__ZN7WebCore11iBeamCursorEv
-__ZN7WebCore12EventHandler8keyEventEP7NSEvent
-__ZN7WebCore21PlatformKeyboardEventC1EP7NSEvent
-__ZN7WebCore25windowsKeyCodeForKeyEventEP7NSEvent
-__ZN7WebCore12EventHandler8keyEventERKNS_21PlatformKeyboardEventE
-__ZN7WebCore26eventTargetNodeForDocumentEPNS_8DocumentE
-__ZN7WebCore12EventHandler15handleAccessKeyERKNS_21PlatformKeyboardEventE
-__ZNK7WebCore12EventHandler38needsKeyboardEventDisambiguationQuirksEv
-__ZNK7WebCore16DeprecatedString10startsWithEPKcb
-__ZN7WebCore21PlatformKeyboardEvent24disambiguateKeyDownEventENS0_4TypeEb
-__ZN7WebCore13KeyboardEventC2ERKNS_21PlatformKeyboardEventEPNS_9DOMWindowE
-__ZN7WebCore6Editor24handleInputMethodKeydownEPNS_13KeyboardEventE
-__ZN7WebCore6Editor19selectionForCommandEPNS_5EventE
-__ZNK7WebCore13KeyboardEvent15isKeyboardEventEv
-__ZN7WebCore24JSKeyboardEventPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSUIEventPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSKeyboardEventC1EPN3KJS8JSObjectEPNS_13KeyboardEventE
-__ZN7WebCore9JSUIEventC1EPN3KJS8JSObjectEPNS_7UIEventE
-__ZN7WebCore15JSKeyboardEvent18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore15JSKeyboardEventEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSKeyboardEvent16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore5Event20storesResultAsStringEv
-__ZN7WebCore5Frame27doTextFieldCommandFromEventEPNS_7ElementEPNS_13KeyboardEventE
-__ZN7WebCore12EventHandler27defaultKeyboardEventHandlerEPNS_13KeyboardEventE
-__ZN7WebCore6Editor19handleKeyboardEventEPNS_13KeyboardEventE
-__ZN7WebCore6Editor7commandERKNS_6StringE
-__ZN7WebCore6Editor7commandERKNS_6StringENS_19EditorCommandSourceE
-__ZN7WebCore16createCommandMapEv
-__ZN3WTF7HashMapIN7WebCore6StringEPKNS1_21EditorInternalCommandENS1_15CaseFoldingHashENS_10HashTraitsIS2_EENS7_IS5_EEE3setERKS2_RKS5_
-__ZN7WebCore6Editor7CommandC1EN3WTF10PassRefPtrINS_5FrameEEEPKNS_21EditorInternalCommandENS_19EditorCommandSourceE
-__ZNK7WebCore6Editor7Command15isTextInsertionEv
-__ZN3WTF6VectorIN7WebCore15KeypressCommandELm0EEaSERKS3_
-__ZN3WTF6VectorIN7WebCore15KeypressCommandELm0EE15reserveCapacityEm
-__ZN7WebCore6Editor10insertTextERKNS_6StringEPNS_5EventE
-__ZN7WebCore12EventHandler20handleTextInputEventERKNS_6StringEPNS_5EventEbb
-__ZN7WebCore9TextEventC2EPNS_9DOMWindowERKNS_6StringE
-__ZNK7WebCore9TextEvent11isTextEventEv
-__ZN7WebCore12EventHandler28defaultTextInputEventHandlerEPNS_9TextEventE
-__ZN7WebCore6Editor33insertTextWithoutSendingTextEventERKNS_6StringEbPNS_5EventE
-__ZNK7WebCore6Editor16shouldInsertTextERKNS_6StringEPNS_5RangeENS_18EditorInsertActionE
-__ZN7WebCore13TypingCommand10insertTextEPNS_8DocumentERKNS_6StringERKNS_9SelectionEbb
-__ZN7WebCore23BeforeTextInsertedEventC2ERKNS_6StringE
-__ZN7WebCore29HTMLTextFieldInnerTextElement19defaultEventHandlerEPNS_5EventE
-__ZNK7WebCore23BeforeTextInsertedEvent25isBeforeTextInsertedEventEv
-__ZN7WebCore19numGraphemeClustersEPNS_10StringImplE
-__ZN7WebCore9plainTextEPKNS_5RangeE
-__ZN7WebCore13TypingCommandC2EPNS_8DocumentENS0_14ETypingCommandERKNS_6StringEbNS_15TextGranularityE
-__ZN7WebCore20CompositeEditCommandC2EPNS_8DocumentE
-__ZN7WebCore11EditCommandC2EPNS_8DocumentE
-__ZN7WebCore25avoidIntersectionWithNodeERKNS_9SelectionEPNS_4NodeE
-__ZN7WebCore11EditCommand20setStartingSelectionERKNS_9SelectionE
-__ZN7WebCore11EditCommand18setEndingSelectionERKNS_9SelectionE
-__ZN7WebCore12applyCommandEN3WTF10PassRefPtrINS_11EditCommandEEE
-__ZN7WebCore11EditCommand5applyEv
-__ZNK7WebCore9Selection23isContentRichlyEditableEv
-__ZN7WebCore24isRichlyEditablePositionERKNS_8PositionE
-__ZNK7WebCore11HTMLElement23isContentRichlyEditableEv
-__ZNK7WebCore13TypingCommand13editingActionEv
-__ZNK7WebCore11EditCommand12updateLayoutEv
-__ZN7WebCore13TypingCommand7doApplyEv
-__ZN7WebCore13TypingCommand10insertTextERKNS_6StringEb
-__ZN7WebCore13TypingCommand28insertTextRunWithoutNewlinesERKNS_6StringEb
-__ZNK7WebCore5Frame11typingStyleEv
-__ZN7WebCore17InsertTextCommandC2EPNS_8DocumentE
-__ZN7WebCore20CompositeEditCommand23applyCommandToCompositeEN3WTF10PassRefPtrINS_11EditCommandEEE
-__ZN7WebCore11EditCommand9setParentEPNS_20CompositeEditCommandE
-__ZN7WebCore17InsertTextCommand7doApplyEv
-__ZNK7WebCore11EditCommand20preservesTypingStyleEv
-__ZN7WebCore11EditCommand14setTypingStyleEN3WTF10PassRefPtrINS_26CSSMutableStyleDeclarationEEE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11EditCommandEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11EditCommandEEELm0EE15reserveCapacityEm
-__ZN7WebCore17InsertTextCommand5inputERKNS_6StringEb
-__ZN7WebCore18positionBeforeNodeEPKNS_4NodeE
-__ZNK7WebCore8Position10downstreamEv
-__ZNK7WebCore16PositionIterator5atEndEv
-__ZN7WebCore13maxDeepOffsetEPKNS_4NodeE
-__ZN7WebCore20CompositeEditCommand23deleteInsignificantTextERKNS_8PositionES3_
-__ZN7WebCore20CompositeEditCommand38positionAvoidingSpecialElementBoundaryERKNS_8PositionEb
-__ZN7WebCore22enclosingAnchorElementERKNS_8PositionE
-__ZN7WebCore17InsertTextCommand23prepareForTextInsertionERKNS_8PositionE
-__ZN7WebCore8Document21createEditingTextNodeERKNS_6StringE
-__ZN7WebCore11EditingTextC2EPNS_8DocumentERKNS_6StringE
-__ZN7WebCore20CompositeEditCommand12insertNodeAtEPNS_4NodeERKNS_8PositionE
-__ZN7WebCore20CompositeEditCommand10appendNodeEPNS_4NodeES2_
-__ZN7WebCore17AppendNodeCommandC2EPNS_4NodeEN3WTF10PassRefPtrIS1_EE
-__ZN7WebCore17AppendNodeCommand7doApplyEv
-__ZN7WebCore11EditingText16rendererIsNeededEPNS_11RenderStyleE
-__ZNK7WebCore10RenderText6heightEv
-__ZN7WebCore9RenderBox9caretRectEiNS_9EAffinityEPi
-__ZNK7WebCore4Node9childNodeEj
-__ZN7WebCore10isStreamerERKNS_16PositionIteratorE
+__ZN7WebCoreL10isStreamerERKNS_16PositionIteratorE
__ZN7WebCore12isAtomicNodeEPKNS_4NodeE
+__ZNK7WebCore16PositionIterator13atStartOfNodeEv
__ZN7WebCore16PositionIterator9decrementEv
-__ZNK7WebCore8Position14inRenderedTextEv
-__ZN7WebCore16PositionIterator9incrementEv
__ZNK7WebCore13CharacterData18offsetInCharactersEv
__ZNK7WebCore13CharacterData18maxCharacterOffsetEv
+__ZN7WebCore8Position23uncheckedPreviousOffsetEPKNS_4NodeEi
+__ZN7WebCore18positionBeforeNodeEPKNS_4NodeE
+__ZNK7WebCore12RenderObject14nextInPreOrderEv
+__ZN7WebCore16PositionIterator9incrementEv
__ZN7WebCore13nextCandidateERKNS_8PositionE
__ZNK7WebCore16PositionIterator11isCandidateEv
-__ZNK7WebCore16PositionIterator13atStartOfNodeEv
-__ZN7WebCore21canonicalizeCandidateERKNS_8PositionE
+__ZN7WebCore8Position19uncheckedNextOffsetEPKNS_4NodeEi
+__ZN7WebCoreL21canonicalizeCandidateERKNS_8PositionE
+__ZNK7WebCore16PositionIterator11atEndOfNodeEv
__ZN7WebCore17previousCandidateERKNS_8PositionE
-__ZN7WebCore20CompositeEditCommand19removePlaceholderAtERKNS_15VisiblePositionE
-__ZN7WebCore12isEndOfBlockERKNS_15VisiblePositionE
-__ZN7WebCore10endOfBlockERKNS_15VisiblePositionE
-__ZN7WebCore8Position23uncheckedPreviousOffsetEPKNS_4NodeEi
-__ZNK7WebCore12RenderObject14previousOffsetEi
-__ZN7WebCore18isStartOfParagraphERKNS_15VisiblePositionE
-__ZN7WebCore16startOfParagraphERKNS_15VisiblePositionE
-__ZN7WebCore25lineBreakExistsAtPositionERKNS_15VisiblePositionE
-__ZNK7WebCore15VisiblePosition14characterAfterEv
-__ZN7WebCore20CompositeEditCommand18insertTextIntoNodeEPNS_4TextEiRKNS_6StringE
-__ZN7WebCore25InsertIntoTextNodeCommandC2EPNS_4TextEiRKNS_6StringE
-__ZN7WebCore25InsertIntoTextNodeCommand7doApplyEv
-__ZN7WebCore13CharacterData10insertDataEjRKNS_6StringERi
-__ZN7WebCore13CharacterData22checkCharDataOperationEjRi
-__ZN7WebCore6String6insertERKS0_j
-__ZN7WebCore6String6insertEPKtjj
-__ZN7WebCore6String6appendEPKtj
-__ZN7WebCore10RenderText17setTextWithOffsetEN3WTF10PassRefPtrINS_10StringImplEEEjjb
-__ZN7WebCore8Document12shiftMarkersEPNS_4NodeEjiNS_14DocumentMarker10MarkerTypeE
-__ZN7WebCore20CompositeEditCommand21rebalanceWhitespaceAtERKNS_8PositionE
-__ZN7WebCore9Selection20setWithoutValidationERKNS_8PositionES3_
-__ZNK7WebCore8Position13computedStyleEv
-__ZNK7WebCore8Position7elementEv
-__ZNK7WebCore19CSSStyleDeclaration4diffEPNS_26CSSMutableStyleDeclarationE
-__ZN7WebCore9SelectionC2ERKNS_8PositionENS_9EAffinityE
-__ZNK7WebCore10RenderText14caretMinOffsetEv
-__ZNK7WebCore13InlineTextBox19containsCaretOffsetEi
-__ZN7WebCore10RenderText9caretRectEiNS_9EAffinityEPi
-__ZNK7WebCore13InlineTextBox17positionForOffsetEi
-__ZNK7WebCore4Font20selectionRectForTextERKNS_7TextRunERKNS_8IntPointEiii
-__ZNK7WebCore4Font26selectionRectForSimpleTextERKNS_7TextRunERKNS_8IntPointEiii
-__ZNK7WebCore12RenderObject16absolutePositionERiS1_b
-__ZNK7WebCore10RenderText14previousOffsetEi
-__ZN7WebCore18textBreakPrecedingEPNS_17TextBreakIteratorEi
-__ZNK7WebCore10RenderText10nextOffsetEi
-__ZN7WebCore13TypingCommand24typingAddedToOpenCommandEv
-__ZN7WebCore13TypingCommand27markMisspellingsAfterTypingEv
-__ZNK7WebCore15VisiblePosition8previousEb
-__ZN7WebCore33previousVisuallyDistinctCandidateERKNS_8PositionE
-__ZNK7WebCore8Position7atStartEv
-__ZNK7WebCore8Position8previousENS_24EUsingComposedCharactersE
-__ZN7WebCore31SimplifiedBackwardsTextIterator8exitNodeEv
-__ZN7WebCore31SimplifiedBackwardsTextIterator13emitCharacterEtPNS_4NodeEii
-__ZN3WTF6VectorItLm1024EE7prependItEEvPKT_m
-__ZN3WTF6VectorItLm1024EE6insertItEEvmPKT_m
-__ZN7WebCore17startWordBoundaryEPKtj
-__ZN7WebCore16findWordBoundaryEPKtiiPiS2_
-__ZN7WebCore31SimplifiedBackwardsTextIterator14handleTextNodeEv
-__ZNK7WebCore5Range11endPositionEv
-__ZNK7WebCore13TypingCommand20preservesTypingStyleEv
-__ZN7WebCore6Editor14appliedEditingEN3WTF10PassRefPtrINS_11EditCommandEEE
-__ZN7WebCore36dispatchEditableContentChangedEventsERKNS_11EditCommandE
-__ZN7WebCore17RenderTextControl17subtreeHasChangedEv
-__ZN7WebCore16HTMLInputElement20setValueFromRendererERKNS_6StringE
-__ZN7WebCore5Frame24textFieldDidBeginEditingEPNS_7ElementE
--[DOMHTMLInputElement value]
--[WebCoreFrameBridge formForElement:]
-__Z26inputElementFromDOMElementP10DOMElement
--[WebCoreFrameBridge controlsInForm:]
-__Z25formElementFromDOMElementP10DOMElement
--[DOMElement offsetWidth]
--[DOMElement offsetHeight]
--[DOMNode ownerDocument]
--[DOMDocument getComputedStyle:pseudoElement:]
-+[DOMCSSStyleDeclaration(WebCoreInternal) _wrapCSSStyleDeclaration:]
--[DOMCSSStyleDeclaration(WebCoreInternal) _initWithCSSStyleDeclaration:]
--[DOMCSSStyleDeclaration getPropertyValue:]
-__ZNK7WebCore27CSSComputedStyleDeclaration16getPropertyValueEi
--[WebCoreFrameBridge elementIsPassword:]
--[WebCoreFrameBridge elementDoesAutoComplete:]
--[DOMElement getAttribute:]
-__ZN7WebCore5Frame24textDidChangeInTextFieldEPNS_7ElementE
-+[WebCoreFrameBridge bridgeForDOMDocument:]
--[DOMDocument(WebCoreInternal) _document]
--[DOMHTMLInputElement form]
-+[DOMHTMLFormElement(WebCoreInternal) _wrapHTMLFormElement:]
--[DOMHTMLFormElement action]
-__ZNK7WebCore15HTMLFormElement6actionEv
--[DOMHTMLInputElement(FormPromptAdditions) _isEdited]
--[DOMNode parentNode]
-__ZNK7WebCore5Frame21shouldChangeSelectionERKNS_9SelectionE
-__ZNK7WebCore5Frame21shouldChangeSelectionERKNS_9SelectionES3_NS_9EAffinityEb
-__ZNK7WebCore10RenderText22caretMaxRenderedOffsetEv
-__ZNK7WebCore10RenderText14caretMaxOffsetEv
-__ZN7WebCore6Editor24respondToChangedContentsERKNS_9SelectionE
--[DOMCSSStyleDeclaration dealloc]
-__ZN7WebCore15EventTargetNode16dispatchKeyEventERKNS_21PlatformKeyboardEventE
-__ZN7WebCore9JSUIEvent18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore9JSUIEventEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore9JSUIEvent16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore13KeyboardEvent7keyCodeEv
-__ZNK7WebCore13TypingCommand15isTypingCommandEv
-__ZNK7WebCore17InsertTextCommand19isInsertTextCommandEv
-__ZN7WebCore17isTabSpanTextNodeEPKNS_4NodeE
-__ZN7WebCore13isTabSpanNodeEPKNS_4NodeE
-__ZNK7WebCore4Node29traversePreviousNodePostOrderEPKS0_
-__ZN7WebCore6Editor37markMisspellingsAfterTypingToPositionERKNS_15VisiblePositionE
-__ZN7WebCore12nextBoundaryERKNS_15VisiblePositionEPFjPKtjE
-__ZN7WebCore5Range18selectNodeContentsEPNS_4NodeERi
-__ZNK7WebCore5Range12maxEndOffsetEv
-__ZN3WTF6VectorItLm1024EE6appendItEEvPKT_m
-__ZN7WebCore15endWordBoundaryEPKtj
-__ZN7WebCore17CharacterIteratorC2EPKNS_5RangeEb
-__ZN7WebCore17CharacterIterator7advanceEi
-__ZNK7WebCore17CharacterIterator5rangeEv
-__ZNK7WebCore12TextIterator5rangeEv
__ZN7WebCore10inSameLineERKNS_15VisiblePositionES2_
__ZN7WebCore11startOfLineERKNS_15VisiblePositionE
-__ZN7WebCore20startPositionForLineERKNS_15VisiblePositionE
-__ZN7WebCore14rootBoxForLineERKNS_15VisiblePositionE
-__ZN7WebCore10RenderText9inlineBoxEiNS_9EAffinityE
+__ZN7WebCoreL20startPositionForLineERKNS_15VisiblePositionE
+__ZN7WebCoreL14rootBoxForLineERKNS_15VisiblePositionE
+__ZNK7WebCore9InlineBox14caretMinOffsetEv
+__ZNK7WebCore12RenderObject14caretMinOffsetEv
+__ZNK7WebCore9InlineBox14caretMaxOffsetEv
+__ZNK7WebCore12RenderObject14caretMaxOffsetEv
+__ZN7WebCore9InlineBox13prevLeafChildEv
+__ZN7WebCore13InlineFlowBox22lastLeafChildBeforeBoxEPNS_9InlineBoxE
__ZN7WebCore13InlineFlowBox14firstLeafChildEv
__ZN7WebCore13InlineFlowBox22firstLeafChildAfterBoxEPNS_9InlineBoxE
__ZN7WebCore9InlineBox14firstLeafChildEv
-__ZN7WebCore36positionAvoidingFirstPositionInTableERKNS_15VisiblePositionE
+__ZN7WebCoreL36positionAvoidingFirstPositionInTableERKNS_15VisiblePositionE
+__ZNK7WebCore8Position8previousENS_16PositionMoveTypeE
+__ZN7WebCore30lastDeepEditingPositionForNodeEPNS_4NodeE
__ZN7WebCore25isLastPositionBeforeTableERKNS_15VisiblePositionE
__ZNK7WebCore15VisiblePosition30honorEditableBoundaryAtOrAfterERKS0_
-__ZN7WebCore6Editor16markMisspellingsERKNS_9SelectionE
-__ZN7WebCore28markMisspellingsOrBadGrammarEPNS_6EditorERKNS_9SelectionEb
-__ZNK7WebCore5Range10isDetachedEv
-__ZN7WebCore27findFirstMisspellingInRangeEPNS_12EditorClientEPNS_5RangeERib
-__ZN7WebCore17WordAwareIteratorC2EPKNS_5RangeE
-__ZN7WebCore17WordAwareIterator7advanceEv
-__ZNK7WebCore17WordAwareIterator10charactersEv
-__ZNK7WebCore17WordAwareIterator6lengthEv
-__ZN7WebCore5TimerINS_12IconDatabaseEE5firedEv
-__ZN7WebCore12IconDatabase14syncTimerFiredEPNS_5TimerIS0_EE
-__ZN3WTF6VectorIN7WebCore12IconSnapshotELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore12IconSnapshotELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore12IconSnapshotELm0EE15reserveCapacityEm
-__ZN7WebCore12IconDatabase30writeIconSnapshotToSQLDatabaseERKNS_12IconSnapshotE
-__ZN7WebCore15SQLiteStatement9isExpiredEv
-_sqlite3_expired
-__ZN7WebCore14SQLiteDatabase15lastInsertRowIDEv
-_sqlite3_last_insert_rowid
-__ZN7WebCore15SQLiteStatement8bindBlobEiPKvi
-_sqlite3_bind_blob
-_balance_deeper
-_balance_nonroot
-__ZN3WTF6VectorIN7WebCore12IconSnapshotELm0EE6shrinkEm
--[DOMHTMLInputElement disabled]
--[WebCoreFrameBridge matchLabels:againstElement:]
-__ZN7WebCore5Frame25matchLabelsAgainstElementEP7NSArrayPNS_7ElementE
-__ZN7WebCore17RegularExpressionD2Ev
-__ZN7WebCore17RegularExpression7PrivateD2Ev
-__ZNK7WebCore16DeprecatedString4findENS_14DeprecatedCharEi
-__ZN7WebCore16DeprecatedStringC2ENS_14DeprecatedCharE
-__ZNK7WebCore16DeprecatedString4findERKS0_ib
-__ZN7WebCore15regExpForLabelsEP7NSArray
-__ZN7WebCore16DeprecatedString12fromNSStringEP8NSString
-__ZN7WebCore16DeprecatedString21setBufferFromCFStringEPK10__CFString
-__ZNK7WebCore17RegularExpression6searchERKNS_16DeprecatedStringEi
-__ZN7WebCore17RegularExpressionC2ERKNS_16DeprecatedStringEbb
-__ZN3WTF6VectorIPN7WebCore17RegularExpressionELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore17RegularExpressionELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore17RegularExpressionELm0EE15reserveCapacityEm
--[WebCoreFrameBridge searchForLabels:beforeElement:]
-__ZN7WebCore5Frame28searchForLabelsBeforeElementEP7NSArrayPNS_7ElementE
-__ZNK7WebCore11HTMLElement20isGenericFormElementEv
-__ZN7WebCore5Frame24searchForLabelsAboveCellEPNS_17RegularExpressionEPNS_20HTMLTableCellElementE
-__ZNK7WebCore17RegularExpression9searchRevERKNS_16DeprecatedStringE
-__ZNK7WebCore22HTMLGenericFormElement20isGenericFormElementEv
-__ZNK7WebCore6Editor7Command11isSupportedEv
-__ZN7WebCore29supportedFromMenuOrKeyBindingEPNS_5FrameENS_19EditorCommandSourceE
-__ZNK7WebCore6Editor7Command7executeEPNS_5EventE
-__ZNK7WebCore6Editor7Command7executeERKNS_6StringEPNS_5EventE
-__ZNK7WebCore6Editor7Command9isEnabledEPNS_5EventE
-__ZN7WebCore21enabledInEditableTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
-__ZN7WebCore21executeDeleteBackwardEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore6Editor19deleteWithDirectionENS_19SelectionController10EDirectionENS_15TextGranularityEbb
-__ZN7WebCore19SelectionController6modifyENS0_11EAlterationENS0_10EDirectionENS_15TextGranularityEb
-__ZN7WebCore19SelectionController14willBeModifiedENS0_11EAlterationENS0_10EDirectionE
-__ZN7WebCore9Selection7setBaseERKNS_8PositionE
-__ZN7WebCore9Selection9setExtentERKNS_8PositionE
-__ZN7WebCore19SelectionController27modifyExtendingLeftBackwardENS_15TextGranularityE
-__ZNK7WebCore15VisiblePosition31honorEditableBoundaryAtOrBeforeERKS0_
-__ZN7WebCore19SelectionController30xPosForVerticalArrowNavigationENS0_13EPositionTypeE
-__ZN7WebCore19SelectionController9setExtentERKNS_15VisiblePositionEb
-__ZN7WebCore9SelectionC2ERKNS_8PositionES3_NS_9EAffinityE
-__ZN7WebCore19SelectionController16setSelectedRangeEPNS_5RangeENS_9EAffinityEb
-__ZNK7WebCore5Range9collapsedERi
-__ZN7WebCore10RenderText17setSelectionStateENS_12RenderObject14SelectionStateE
-__ZNK7WebCore12RenderObject17selectionStartEndERiS1_
-__ZNK7WebCore10RenderView17selectionStartEndERiS1_
-__ZNK7WebCore13InlineTextBox10isSelectedEii
-__ZN7WebCore13RootInlineBox22setHasSelectedChildrenEb
-__ZN7WebCore11RenderBlock17setSelectionStateENS_12RenderObject14SelectionStateE
-__ZNK7WebCore12RenderObject7childAtEj
-__ZNK7WebCore10RenderText18canBeSelectionLeafEv
-__ZN7WebCore10RenderText13selectionRectEb
-__ZN7WebCore13InlineTextBox13selectionRectEiiii
-__ZN7WebCore13InlineTextBox12selectionTopEv
-__ZN7WebCore13InlineTextBox15selectionHeightEv
-__ZN7WebCore12RenderObject26computeAbsoluteRepaintRectERNS_7IntRectEb
-__ZNK3WTF7HashMapIPN7WebCore12RenderObjectEPNS2_13SelectionInfoENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
-__ZN7WebCore11RenderBlock17selectionGapRectsEv
-__ZNK7WebCore11RenderBlock15isSelectionRootEv
-__ZN7WebCore11RenderBlock19leftSelectionOffsetEPS0_i
-__ZN7WebCore11RenderBlock20rightSelectionOffsetEPS0_i
-__ZN7WebCore11RenderBlock17fillSelectionGapsEPS0_iiiiRiS2_S2_PKNS_12RenderObject9PaintInfoE
-__ZN7WebCore11RenderBlock23fillInlineSelectionGapsEPS0_iiiiRiS2_S2_PKNS_12RenderObject9PaintInfoE
-__ZN7WebCore13RootInlineBox20fillLineSelectionGapEiiPNS_11RenderBlockEiiiiPKNS_12RenderObject9PaintInfoE
-__ZN7WebCore13RootInlineBox14selectionStateEv
-__ZN7WebCore11RenderBlock29getHorizontalSelectionGapInfoENS_12RenderObject14SelectionStateERbS3_
-__ZN7WebCore13RootInlineBox16firstSelectedBoxEv
-__ZN7WebCore13RootInlineBox15lastSelectedBoxEv
-__ZN7WebCore13InlineFlowBox13lastLeafChildEv
-__ZN7WebCore13InlineFlowBox22lastLeafChildBeforeBoxEPNS_9InlineBoxE
-__ZN7WebCore9InlineBox13lastLeafChildEv
-__ZNK3WTF7HashMapIPN7WebCore11RenderBlockEPNS2_18BlockSelectionInfoENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
-__ZN7WebCore11RenderBlock22fillBlockSelectionGapsEPS0_iiiiRiS2_S2_PKNS_12RenderObject9PaintInfoE
-__ZNK7WebCore10RenderView14selectionStartEv
-__ZNK7WebCore12RenderObject18canBeSelectionLeafEv
-__ZNK7WebCore5Range20editingStartPositionEv
-__ZN7WebCore13TypingCommand16deleteKeyPressedEPNS_8DocumentEbNS_15TextGranularityE
-__ZN7WebCore13TypingCommand16deleteKeyPressedENS_15TextGranularityE
-__ZN7WebCore25isFirstPositionAfterTableERKNS_15VisiblePositionE
-__ZNK7WebCore5Frame21shouldDeleteSelectionERKNS_9SelectionE
-__ZN7WebCore20CompositeEditCommand15deleteSelectionERKNS_9SelectionEbbbb
-__ZN7WebCore22DeleteSelectionCommandC2ERKNS_9SelectionEbbbb
-__ZN7WebCore22DeleteSelectionCommand7doApplyEv
-__ZN7WebCore5Frame28textWillBeDeletedInTextFieldEPNS_7ElementE
-__ZN7WebCore22DeleteSelectionCommand22initializePositionDataEv
-__ZN7WebCore22DeleteSelectionCommand18initializeStartEndERNS_8PositionES2_
-__ZN7WebCore38positionBeforeContainingSpecialElementERKNS_8PositionEPPNS_4NodeE
-__ZN7WebCore21firstInSpecialElementERKNS_8PositionE
-__ZN7WebCore16isSpecialElementEPKNS_4NodeE
-__ZN7WebCore37positionAfterContainingSpecialElementERKNS_8PositionEPPNS_4NodeE
-__ZN7WebCore20lastInSpecialElementERKNS_8PositionE
-__ZN7WebCore10isTableRowEPKNS_4NodeE
-__ZN7WebCore18enclosingTableCellERKNS_8PositionE
-__ZNK7WebCore8Position25leadingWhitespacePositionENS_9EAffinityEb
-__ZNK7WebCore8Position25previousCharacterPositionENS_9EAffinityE
-__ZN7WebCore13isStartOfLineERKNS_15VisiblePositionE
-__ZNK7WebCore8Position26rendersInDifferentPositionERKS0_
-__ZNK7WebCore8Position14renderedOffsetEv
-__ZNK7WebCore4Node12nextEditableEv
-__ZNK7WebCore4Node12nextLeafNodeEv
-__ZNK7WebCore4Node30nextNodeConsideringAtomicNodesEv
-__ZNK7WebCore4Node16previousEditableEv
-__ZNK7WebCore4Node16previousLeafNodeEv
-__ZNK7WebCore4Node34previousNodeConsideringAtomicNodesEv
-__ZN7WebCore4Node32inSameContainingBlockFlowElementEPS0_
-__ZNK7WebCore8Position26trailingWhitespacePositionENS_9EAffinityEb
-__ZNK7WebCore4Node32enclosingBlockFlowOrTableElementEv
-__ZNK7WebCore4Node23isBlockFlowOrBlockTableEv
-__ZN7WebCore20CompositeEditCommand33deleteInsignificantTextDownstreamERKNS_8PositionE
-__ZNK7WebCore15VisiblePosition4nextEb
-__ZN7WebCore29nextVisuallyDistinctCandidateERKNS_8PositionE
-__ZNK7WebCore8Position5atEndEv
-__ZN7WebCore22DeleteSelectionCommand20saveTypingStyleStateEv
-__ZN7WebCore21positionBeforeTabSpanERKNS_8PositionE
-__ZNK7WebCore27CSSComputedStyleDeclaration25copyInheritablePropertiesEv
-__ZNK7WebCore19CSSStyleDeclaration19copyPropertiesInSetEPKij
-__ZN7WebCore17CSSPrimitiveValueC1ERKNS_6LengthE
-__ZN7WebCore24currentColorOrValidColorEPNS_11RenderStyleERKNS_5ColorE
-__ZN7WebCore26CSSMutableStyleDeclarationC2EPNS_7CSSRuleERKNS_19DeprecatedValueListINS_11CSSPropertyEEE
-__ZN7WebCore26CSSMutableStyleDeclaration14removePropertyEiRi
-__ZNK7WebCore9StyleBase15isCSSStyleSheetEv
-__ZN7WebCore21nearestMailBlockquoteEPKNS_4NodeE
-__ZN7WebCore16isMailBlockquoteEPKNS_4NodeE
-__ZN7WebCore22DeleteSelectionCommand23saveFullySelectedAnchorEv
-__ZN7WebCore20enclosingNodeWithTagERKNS_8PositionERKNS_13QualifiedNameE
-__ZNK7WebCore8Position4nextENS_24EUsingComposedCharactersE
-__ZN7WebCore22DeleteSelectionCommand25handleSpecialCaseBRDeleteEv
-__ZN7WebCore22DeleteSelectionCommand19handleGeneralDeleteEv
-__ZN7WebCore14caretMaxOffsetEPKNS_4NodeE
-__ZN7WebCore22DeleteSelectionCommand18deleteTextFromNodeEPNS_4TextEii
-__ZN7WebCore28updatePositionForTextRemovalEPNS_4NodeEiiRNS_8PositionE
-__ZN7WebCore20CompositeEditCommand18deleteTextFromNodeEPNS_4TextEii
-__ZN7WebCore25DeleteFromTextNodeCommandC2EPNS_4TextEii
-__ZN7WebCore25DeleteFromTextNodeCommand7doApplyEv
-__ZN7WebCore13CharacterData13substringDataEjjRi
-__ZN7WebCore13CharacterData10deleteDataEjjRi
-__ZN7WebCore6String6removeEji
-__ZN7WebCore8Document13removeMarkersEPNS_4NodeEjiNS_14DocumentMarker10MarkerTypeE
-__ZN7WebCore22DeleteSelectionCommand15fixupWhitespaceEv
-__ZN7WebCore22DeleteSelectionCommand15mergeParagraphsEv
-__ZN7WebCore22DeleteSelectionCommand38removePreviouslySelectedEmptyTableRowsEv
-__ZN7WebCore22DeleteSelectionCommand31calculateTypingStyleAfterDeleteEPNS_4NodeE
-__ZN7WebCore4Node13computedStyleEv
-__ZN3WTF6VectorIiLm0EE14expandCapacityEmPKi
-__ZN7WebCore11quoteStringERKNS_6StringE
-__ZN7WebCore10StringImpl7replaceEtPS0_
+__ZN7WebCore12TextIterator33shouldEmitSpaceBeforeAndAfterNodeEPNS_4NodeE
+__ZN7WebCore12TextIterator21handleReplacedElementEv
+__ZN7WebCore12TextIterator14handleTextNodeEv
+__ZN7WebCore12TextIterator8exitNodeEv
+__ZN7WebCoreL26shouldEmitNewlineAfterNodeEPNS_4NodeE
+__ZN7WebCore12TextIterator13emitCharacterEtPNS_4NodeES2_ii
+__ZN7WebCore12TextIterator13handleTextBoxEv
+__ZN7WebCore12TextIterator8emitTextEPNS_4NodeEii
+__ZN3WTF6VectorIPN7WebCore13InlineTextBoxELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIPN7WebCore13InlineTextBoxELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore13InlineTextBoxELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore13InlineTextBoxELm0EE15reserveCapacityEm
+__ZSt16__introsort_loopIPPN7WebCore13InlineTextBoxElPFbPKS1_S5_EEvT_S8_T0_T1_
+__ZSt22__final_insertion_sortIPPN7WebCore13InlineTextBoxEPFbPKS1_S5_EEvT_S8_T0_
+__ZSt16__insertion_sortIPPN7WebCore13InlineTextBoxEPFbPKS1_S5_EEvT_S8_T0_
+__ZN3WTF6VectorIPN7WebCore13InlineTextBoxELm0EE6shrinkEm
+-[DOMRange dealloc]
+__ZN7WebCore12CachedScript4dataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
+__ZN7WebCore12CachedScript11checkNotifyEv
+__ZThn16_N7WebCore13HTMLTokenizer14notifyFinishedEPNS_14CachedResourceE
+__ZN7WebCore13HTMLTokenizer14notifyFinishedEPNS_14CachedResourceE
+__ZNK7WebCore26CachedScriptSourceProvider6lengthEv
+__ZN7WebCore12CachedScript6scriptEv
+__ZN7WebCore14CachedResource12removeClientEPNS_20CachedResourceClientE
+__ZNK7WebCore26CachedScriptSourceProvider4dataEv
+__ZN7WebCoreL23addPendingEventListenerERN3WTF7HashMapIPNS_9DOMWindowEPNS0_6VectorINS0_6RefPtrINS_23RegisteredEventListenerEEELm
+__ZN3WTF9HashTableIPN7WebCore9DOMWindowESt4pairIS3_PNS_6VectorINS_6RefPtrINS1_23RegisteredEventListenerEEELm0EEEENS_18PairFirst
+__ZN7WebCore19MediaQueryEvaluatorC1Eb
+__ZN7WebCore19MediaQueryEvaluatorC2Eb
+__ZN7WebCore11FrameLoader29loadedResourceFromMemoryCacheEPKNS_14CachedResourceE
+__ZN7WebCore19InspectorController30didLoadResourceFromMemoryCacheEPNS_14DocumentLoaderEPKNS_14CachedResourceE
+__ZThn112_N7WebCore15HTMLLinkElement16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
+__ZN7WebCore15HTMLLinkElement16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
+__ZN7WebCore9CSSParser22createFloatingFunctionEv
+__ZN3WTF7HashSetIPN7WebCore17CSSParserFunctionENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore17CSSParserFunctionES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expa
+__ZN3WTF9HashTableIPN7WebCore17CSSParserFunctionES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6reha
+__ZN3WTF9HashTableIPN7WebCore17CSSParserFunctionES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13all
+__ZN3WTF9HashTableIPN7WebCore17CSSParserFunctionES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4find
+__ZN3WTF9HashTableIPN7WebCore17CSSParserFunctionES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47rem
+__ZN3WTF9HashTableIPN7WebCore17CSSParserFunctionES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6remo
+__ZN7WebCore9CSSParser13parseSVGValueEib
+__ZN7WebCore9CSSParser22rollbackLastPropertiesEi
+__ZN7WebCore9CSSParser12parseReflectEib
+__ZN7WebCore9CSSParser16parseBorderImageEibRN3WTF6RefPtrINS_8CSSValueEEE
+__ZN7WebCoreL17equalIgnoringCaseERKNS_15CSSParserStringEPKc
+__ZN7WebCore9CSSParser13parseGradientERN3WTF6RefPtrINS_8CSSValueEEE
+__ZN7WebCore22CSSImageGeneratorValueC2Ev
+__ZN7WebCoreL18parseGradientPointEPNS_14CSSParserValueEb
+__ZN3WTF6VectorIN7WebCore20CSSGradientColorStopELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore20CSSGradientColorStopELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore20CSSGradientColorStopELm0EE15reserveCapacityEm
+__ZN7WebCore9CSSParser20parseColorParametersEPNS_14CSSParserValueEPib
+__ZN7WebCore23BorderImageParseContext17commitBorderImageEPNS_9CSSParserEb
+__ZN7WebCore19CSSBorderImageValueC1EN3WTF10PassRefPtrINS_8CSSValueEEENS2_INS_4RectEEEii
+__ZN7WebCore19CSSBorderImageValueC2EN3WTF10PassRefPtrINS_8CSSValueEEENS2_INS_4RectEEEii
+__ZN7WebCore9CSSParser19createKeyframesRuleEv
+__ZN7WebCore22WebKitCSSKeyframesRuleC1EPNS_13CSSStyleSheetE
+__ZN7WebCore22WebKitCSSKeyframesRuleC2EPNS_13CSSStyleSheetE
+__ZN7WebCore11CSSRuleListC1Ev
+__ZN7WebCore11CSSRuleListC2Ev
+__ZN7WebCore9CSSParser14parseTransformEv
+__ZN7WebCore22TransformOperationInfoC2ERKNS_15CSSParserStringE
+__ZN7WebCore23WebKitCSSTransformValueC1ENS0_22TransformOperationTypeE
+__ZN7WebCore23WebKitCSSTransformValueC2ENS0_22TransformOperationTypeE
+__ZN7WebCore9CSSParser22parseAnimationPropertyEiRN3WTF6RefPtrINS_8CSSValueEEE
+__ZN7WebCore9CSSParser28parseAnimationTimingFunctionEv
+__ZN7WebCore9CSSParser18createKeyframeRuleEPNS_18CSSParserValueListE
__ZN7WebCore6String6numberEd
-__ZN7WebCore5Frame14setTypingStyleEPNS_26CSSMutableStyleDeclarationE
-__ZN7WebCore22DeleteSelectionCommand19clearTransientStateEv
-__ZN7WebCore8Position5clearEv
-__ZNK7WebCore22DeleteSelectionCommand20preservesTypingStyleEv
-__ZN7WebCore9InlineBox13nextLeafChildEv
-__ZN7WebCore9InlineBox13prevLeafChildEv
-__ZN7WebCore6Editor36revealSelectionAfterEditingOperationEv
-__ZNK7WebCore11HistoryItem5titleEv
-__ZNK7WebCore11EditCommand19isInsertTextCommandEv
-__ZNK7WebCore11HistoryItem14alternateTitleEv
-__ZNK7WebCore11HistoryItem10visitCountEv
-__ZN7WebCore12TextIterator8subrangeEPNS_5RangeEii
-__ZN7WebCore8Document9addMarkerEPNS_5RangeENS_14DocumentMarker10MarkerTypeENS_6StringE
-__ZN7WebCore8Document9addMarkerEPNS_4NodeENS_14DocumentMarkerE
-__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EE15reserveCapacityEm
-__ZN7WebCore24placeholderRectForMarkerEv
-__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EEC2ERKS3_
-__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EE6shrinkEm
-__ZN7WebCore13InlineTextBox28paintSpellingOrGrammarMarkerEPNS_15GraphicsContextEiiNS_14DocumentMarkerEPNS_11RenderStyleEPKNS_4FontEb
-__ZN7WebCore15GraphicsContext34drawLineForMisspellingOrBadGrammarERKNS_8IntPointEib
+__ZN7WebCore21WebKitCSSKeyframeRuleC1EPNS_13CSSStyleSheetE
+__ZN7WebCore21WebKitCSSKeyframeRuleC2EPNS_13CSSStyleSheetE
+__ZN7WebCore21WebKitCSSKeyframeRule14setDeclarationEN3WTF10PassRefPtrINS_26CSSMutableStyleDeclarationEEE
+__ZN7WebCore22WebKitCSSKeyframesRule6appendEPNS_21WebKitCSSKeyframeRuleE
+__ZN7WebCore11CSSRuleList6appendEPNS_7CSSRuleE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore7CSSRuleEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore7CSSRuleEEELm0EE15reserveCapacityEm
+__ZN7WebCore9CSSParser19parseAnimationDelayEv
+__ZN7WebCore9CSSParser22parseAnimationDurationEv
+__ZN7WebCore9CSSParser18parseAnimationNameEv
+__ZN7WebCore15HTMLLinkElement11sheetLoadedEv
+__ZN7WebCore9StyleBase11isMediaRuleEv
+__ZN7WebCore9StyleBase14isFontFaceRuleEv
+__ZN7WebCore9StyleBase15isVariablesRuleEv
+__ZN7WebCore22WebKitCSSKeyframesRule15isKeyframesRuleEv
+__ZN7WebCore16CSSStyleSelector16addKeyframeStyleEN3WTF10PassRefPtrINS_22WebKitCSSKeyframesRuleEEE
+__ZNK7WebCore22WebKitCSSKeyframesRule4nameEv
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplENS_6RefPtrINS1_22WebKitCSSKeyframesRuleEEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEN
+__ZN7WebCore10HTMLParser24noscriptCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCore18NamedMappedAttrMapD0Ev
+__ZN7WebCore12NamedNodeMapD2Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9AttributeEEELm0EE6shrinkEm
+__ZN7WebCore15MappedAttributeD0Ev
+__ZN7WebCoreL16audioConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore11MediaPlayer11isAvailableEv
+__ZN7WebCoreL21installedMediaEnginesEv
+__ZN7WebCore18MediaPlayerPrivate19registerMediaEngineEPFvPFPNS_27MediaPlayerPrivateInterfaceEPNS_11MediaPlayerEEPFvRN3WTF7HashS
+__ZN7WebCore18MediaPlayerPrivate11isAvailableEv
+__ZL12QTKitLibraryv
+__ZN7WebCoreL14addMediaEngineEPFPNS_27MediaPlayerPrivateInterfaceEPNS_11MediaPlayerEEPFvRN3WTF7HashSetINS_6StringENS_10StringHa
+__ZN3WTF6VectorIPN7WebCore18MediaPlayerFactoryELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore18MediaPlayerFactoryELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore18MediaPlayerFactoryELm0EE15reserveCapacityEm
+__ZN7WebCore16HTMLAudioElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLAudioElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLMediaElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore8Document38registerForDocumentActivationCallbacksEPNS_7ElementE
+__ZN3WTF7HashSetIPN7WebCore7ElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore7ElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore7ElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore7ElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTableE
+__ZN7WebCore8Document31registerForMediaVolumeCallbacksEPNS_7ElementE
+__ZN7WebCore16HTMLMediaElement16attributeChangedEPNS_9AttributeEb
+__ZN7WebCore16HTMLMediaElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore16HTMLAudioElement11tagPriorityEv
+__ZN7WebCore16HTMLMediaElement20insertedIntoDocumentEv
+__ZNK7WebCore16HTMLMediaElement3srcEv
+__ZN7WebCore16HTMLMediaElement12scheduleLoadEv
+__ZN7WebCore16HTMLMediaElement6attachEv
+__ZN7WebCore14RenderThemeMac28extraMediaControlsStyleSheetEv
+__ZN7WebCoreL20mediaControllerThemeEv
+__ZN7WebCore16HTMLMediaElement16rendererIsNeededEPNS_11RenderStyleE
+__ZNK7WebCore16HTMLMediaElement8controlsEv
+__ZN7WebCore16CSSStyleSelector17mapNinePieceImageEPNS_8CSSValueERNS_14NinePieceImageE
+__ZNK7WebCore8CSSValue12isImageValueEv
+__ZNK7WebCore22CSSImageGeneratorValue21isImageGeneratorValueEv
+__ZN7WebCore22CSSImageGeneratorValue14generatedImageEv
+__ZNK7WebCore22CSSImageGeneratorValue11isFixedSizeEv
+__ZN7WebCore17CSSPrimitiveValue14getDoubleValueEt
+__ZN7WebCore16StyleCachedImage9addClientEPNS_12RenderObjectE
+__ZN7WebCore11RenderLayer16createReflectionEv
+__ZN7WebCore13RenderReplicaC1EPNS_4NodeE
+__ZN7WebCore13RenderReplicaC2EPNS_4NodeE
+__ZN7WebCore11RenderLayer21updateReflectionStyleEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EE15reserveCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EE6shrinkEm
+__ZN7WebCore18StyleTransformDataC1ERKS0_
+__ZN7WebCore18StyleTransformDataC2ERKS0_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EEaSERKS5_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EE14shrinkCapacityEm
+__ZN7WebCore19StyleGeneratedImage9addClientEPNS_12RenderObjectE
+__ZN7WebCore22CSSImageGeneratorValue9addClientEPNS_12RenderObjectERKNS_7IntSizeE
+__ZN3WTF7HashMapIPN7WebCore12RenderObjectENS1_7IntSizeENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS7_IS4_EEE3addERKS3_RKS4_
+__ZN3WTF9HashTableIPN7WebCore12RenderObjectESt4pairIS3_NS1_7IntSizeEENS_18PairFirstExtractorIS6_EENS_7PtrHashIS3_EENS_14PairHas
+__ZNK7WebCore13RenderReplica13requiresLayerEv
+__ZNK7WebCore11RenderLayer15reflectionLayerEv
+__ZNK7WebCore9RenderBox13overflowWidthEb
+__ZNK7WebCore9RenderBox14overflowHeightEb
+__ZNK7WebCore11RenderStyle14applyTransformERNS_20TransformationMatrixERKNS_7IntSizeENS0_20ApplyTransformOriginE
+__ZNK7WebCore27TranslateTransformOperation16getOperationTypeEv
+__ZNK7WebCore23ScaleTransformOperation16getOperationTypeEv
+__ZN7WebCore20TransformationMatrix11translate3dEddd
+__ZNK7WebCore27TranslateTransformOperation5applyERNS_20TransformationMatrixERKNS_7IntSizeE
+__ZNK7WebCore23ScaleTransformOperation5applyERNS_20TransformationMatrixERKNS_7IntSizeE
+__ZN7WebCore20TransformationMatrix7scale3dEddd
+__ZN7WebCore20TransformationMatrix8multLeftERKS0_
+__ZN7WebCore20TransformationMatrix10makeAffineEv
+__ZNK7WebCore9RenderBox12overflowRectEb
+__ZNK7WebCore20TransformationMatrix7mapRectERKNS_7IntRectE
+__ZNK7WebCore20TransformationMatrix7mapRectERKNS_9FloatRectE
+__ZNK7WebCore20TransformationMatrix7mapQuadERKNS_9FloatQuadE
+__ZNK7WebCore20TransformationMatrix8mapPointERKNS_10FloatPointE
+__ZNK7WebCore20TransformationMatrix13multVecMatrixEddRdS1_
+__ZNK7WebCore9RenderBox13reflectedRectERKNS_7IntRectE
+__ZNK7WebCore9RenderBox16reflectionOffsetEv
+__ZNK7WebCore12RenderObject22outlineStyleForRepaintEv
+__ZNK7WebCore12RenderObject25getTransformFromContainerEPKS0_RKNS_7IntSizeERNS_20TransformationMatrixE
+__ZN7WebCore20TransformationMatrix9translateEdd
+__ZNK7WebCore11RenderLayer16currentTransformEv
+__ZN7WebCore14TransformState14applyTransformERKNS_20TransformationMatrixENS0_21TransformAccumulationE
+__ZN7WebCore14TransformState20flattenWithTransformERKNS_20TransformationMatrixE
+__ZN7WebCore12RenderObject26repaintAfterLayoutIfNeededEPNS_20RenderBoxModelObjectERKNS_7IntRectES5_
+__ZNK7WebCore12RenderObject29mustRepaintBackgroundOrBorderEv
+__ZN7WebCoreL21mustRepaintFillLayersEPKNS_12RenderObjectEPKNS_9FillLayerE
+__ZN7WebCore12RenderObject29markContainingBlocksForLayoutEbPS0_
+__ZN7WebCoreL16videoConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLVideoElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLVideoElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLVideoElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore16HTMLVideoElement11tagPriorityEv
+__ZN7WebCore16HTMLVideoElement6attachEv
+__ZN7WebCore16HTMLVideoElement16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore16HTMLVideoElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore11RenderVideoC1EPNS_16HTMLMediaElementE
+__ZN7WebCore11RenderVideoC2EPNS_16HTMLMediaElementE
+__ZN7WebCore11RenderMediaC2EPNS_16HTMLMediaElementE
+__ZN7WebCore14RenderReplacedC2EPNS_4NodeE
+__ZN7WebCore11RenderMedia14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore11RenderMedia15virtualChildrenEv
+__ZN7WebCore11RenderVideo17updateFromElementEv
+__ZN7WebCore11RenderMedia17updateFromElementEv
+__ZN7WebCore11RenderMedia14updateControlsEv
+__ZNK7WebCore11RenderMedia12mediaElementEv
+__ZN7WebCore11RenderVideo12updatePlayerEv
+__ZNK7WebCore11RenderMedia6playerEv
+__ZN7WebCore16HTMLMediaElement8checkDTDEPKNS_4NodeE
+__ZNK7WebCore14RenderReplaced15canHaveChildrenEv
+__ZNK3WTF7HashMapIN7WebCore6StringENS1_20CachedResourceHandleINS1_14CachedResourceEEENS1_10StringHashENS_10HashTraitsIS2_EENS7_
+__ZN3WTF6VectorIN7WebCore9DocLoader14PendingPreloadELm0EE6shrinkEm
+__ZN7WebCore5TimerINS_12CachedScriptEE5firedEv
+__ZN7WebCore12CachedScript29decodedDataDeletionTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore12CachedScript18destroyDecodedDataEv
+__ZNK7WebCore14CachedResource21isSafeToMakePurgeableEv
+__ZN7WebCore16HTMLMediaElement11recalcStyleENS_4Node11StyleChangeE
+__ZNK7WebCore9FillLayer13containsImageEPNS_10StyleImageE
+__ZNK7WebCore16StyleCachedImage4dataEv
+__ZNK7WebCore18StyleTransformDataeqERKS0_
+__ZNK7WebCore27TranslateTransformOperationeqERKNS_18TransformOperationE
+__ZNK7WebCore27TranslateTransformOperation10isSameTypeERKNS_18TransformOperationE
+__ZNK7WebCore23ScaleTransformOperationeqERKNS_18TransformOperationE
+__ZNK7WebCore23ScaleTransformOperation10isSameTypeERKNS_18TransformOperationE
+__ZN7WebCore27TranslateTransformOperationD0Ev
+__ZN7WebCore23ScaleTransformOperationD0Ev
+__ZN7WebCore11RenderBlock29removePercentHeightDescendantEPNS_9RenderBoxE
+__ZNK7WebCore11RenderImage22usesImageContainerSizeEv
+__ZNK7WebCore11CachedImage22usesImageContainerSizeEv
+__ZNK7WebCore11RenderImage20calcAspectRatioWidthEv
+__ZNK7WebCore11RenderImage22imageHasRelativeHeightEv
+__ZNK7WebCore11CachedImage22imageHasRelativeHeightEv
+__ZNK7WebCore11RenderImage21calcAspectRatioHeightEv
+__ZN7WebCore9RenderBox20calcPercentageHeightERKNS_6LengthE
+__ZNK7WebCore9RenderBox13reflectionBoxEv
+__ZN7WebCore11RenderLayer10setStaticYEi
+__ZN7WebCore11RenderBlock19calcBlockPrefWidthsEv
+__ZN7WebCore11RenderVideo6layoutEv
+__ZN7WebCore11RenderMedia6layoutEv
+__ZNK7WebCore14RenderReplaced21minimumReplacedHeightEv
+__ZNK7WebCore11RenderVideo17calcReplacedWidthEb
+__ZNK7WebCore11RenderVideo16isWidthSpecifiedEv
+__ZN7WebCore11RenderVideo14calcPrefWidthsEv
+__ZNK7WebCore11RenderVideo18calcReplacedHeightEv
+__ZNK7WebCore11RenderVideo17isHeightSpecifiedEv
+__ZNK7WebCore11RenderMedia17rightmostPositionEbb
+__ZNK7WebCore11RenderMedia14lowestPositionEbb
+__ZN7WebCore13RenderReplica6layoutEv
+__ZN7WebCore14RenderReplaced29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
+__ZNK7WebCore14RenderReplaced12overflowRectEb
+__ZNK7WebCore14RenderReplaced18localSelectionRectEb
+__ZN7WebCore5TimerINS_16HTMLMediaElementEE5firedEv
+__ZN7WebCore16HTMLMediaElement14loadTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore16HTMLMediaElement12loadInternalEv
+__ZN7WebCore16HTMLMediaElement18stopPeriodicTimersEv
+__ZN7WebCore16HTMLMediaElement31cancelPendingEventsAndCallbacksEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5EventEEELm0EE14shrinkCapacityEm
+__ZNK7WebCore16HTMLMediaElement19defaultPlaybackRateEv
+__ZN7WebCore16HTMLMediaElement15setPlaybackRateEf
+__ZN7WebCore16HTMLMediaElement19selectMediaResourceEv
+__ZN7WebCore16HTMLMediaElement21scheduleProgressEventERKNS_12AtomicStringE
+__ZN7WebCore13ProgressEventC1ERKNS_12AtomicStringEbjj
+__ZN7WebCore13ProgressEventC2ERKNS_12AtomicStringEbjj
+__ZN7WebCore16HTMLMediaElement12enqueueEventEN3WTF6RefPtrINS_5EventEEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5EventEEELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5EventEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5EventEEELm0EE15reserveCapacityEm
+__ZN7WebCore11ContentTypeC1ERKNS_6StringE
+__ZN7WebCore11ContentTypeC2ERKNS_6StringE
+__ZN7WebCore16HTMLMediaElement15isSafeToLoadURLERKNS_4KURLENS0_19InvalidSourceActionE
+__ZN7WebCore16HTMLMediaElement12loadResourceERKNS_4KURLERNS_11ContentTypeE
+__ZN7WebCore16HTMLMediaElement23startProgressEventTimerEv
+__ZN7WebCore11MediaPlayerC1EPNS_17MediaPlayerClientE
+__ZN7WebCore11MediaPlayerC2EPNS_17MediaPlayerClientE
+__ZN7WebCoreL21createNullMediaPlayerEPNS_11MediaPlayerE
+__ZN7WebCore16HTMLMediaElement12updateVolumeEv
+__ZN7WebCore11MediaPlayer9setVolumeEf
+__ZN7WebCore22NullMediaPlayerPrivate9setVolumeEf
+__ZN7WebCore11MediaPlayer4loadERKNS_6StringERKNS_11ContentTypeE
+__ZNK7WebCore11ContentType4typeEv
+__ZNK7WebCore11ContentType9parameterERKNS_6StringE
+__ZN7WebCore16MIMETypeRegistry18getMIMETypeForPathERKNS_6StringE
+__ZN7WebCore10StringImpl11reverseFindEti
+__ZN7WebCore16MIMETypeRegistry23getMIMETypeForExtensionERKNS_6StringE
+__ZN7WebCoreL32chooseBestEngineForTypeAndCodecsERKNS_6StringES2_
+__ZN7WebCore18MediaPlayerPrivate12supportsTypeERKNS_6StringES3_
+__ZN7WebCoreL20mimeModernTypesCacheEv
+__ZL11initQTMoviev
+__ZN7WebCoreL19addFileTypesToCacheEP7NSArrayRN3WTF7HashSetINS_6StringENS_10StringHashENS2_10HashTraitsIS4_EEEE
+__ZN7WebCore22NullMediaPlayerPrivateD0Ev
+__ZN7WebCore18MediaPlayerPrivate6createEPNS_11MediaPlayerE
+__ZN7WebCore18MediaPlayerPrivateC1EPNS_11MediaPlayerE
+__ZN7WebCore18MediaPlayerPrivateC2EPNS_11MediaPlayerE
+-[WebCoreMovieObserver initWithCallback:]
+__ZN7WebCore18MediaPlayerPrivate4loadERKNS_6StringE
+__ZN7WebCore11MediaPlayer19networkStateChangedEv
+__ZThn112_N7WebCore16HTMLMediaElement30mediaPlayerNetworkStateChangedEPNS_11MediaPlayerE
+__ZN7WebCore16HTMLMediaElement30mediaPlayerNetworkStateChangedEPNS_11MediaPlayerE
+__ZN7WebCore11MediaPlayer12networkStateEv
+__ZNK7WebCore18MediaPlayerPrivate12networkStateEv
+__ZN7WebCore16HTMLMediaElement15setNetworkStateENS_11MediaPlayer12NetworkStateE
+__ZN7WebCore18MediaPlayerPrivate10cancelSeekEv
+-[WebCoreMovieObserver setDelayCallbacks:]
+__ZN7WebCore18MediaPlayerPrivate13createQTMovieERKNS_6StringE
+__ZL32initQTMovieApertureModeAttributev
+__ZL28initQTMovieApertureModeCleanv
+__ZL41initQTMovieAskUnresolvedDataRefsAttributev
+__ZL40initQTSecurityPolicyNoCrossSiteAttributev
+__ZL43initQTMoviePreventExternalURLLinksAttributev
+__ZL23initQTMovieURLAttributev
+__ZL15QTMovieFunctionv
+__ZNK7WebCore11MediaPlayer6volumeEv
+__ZL41initQTMovieLoadStateDidChangeNotificationv
+__ZL36initQTMovieRateDidChangeNotificationv
+__ZL36initQTMovieSizeDidChangeNotificationv
+__ZL36initQTMovieTimeDidChangeNotificationv
+__ZL29initQTMovieDidEndNotificationv
+-[WebCoreMovieObserver loadStateChanged:]
+__ZNK7WebCore11RenderVideo8videoBoxEv
+__ZN7WebCore11MediaPlayer7setSizeERKNS_7IntSizeE
+__ZN7WebCore22NullMediaPlayerPrivate7setSizeERKNS_7IntSizeE
+__ZN7WebCore11MediaPlayer10setVisibleEb
+__ZN7WebCore22NullMediaPlayerPrivate10setVisibleEb
+__ZL36QTMovieApertureModeAttributeFunctionv
+__ZL32QTMovieApertureModeCleanFunctionv
+__ZL45QTMovieAskUnresolvedDataRefsAttributeFunctionv
+__ZL44QTSecurityPolicyNoCrossSiteAttributeFunctionv
+__ZL47QTMoviePreventExternalURLLinksAttributeFunctionv
+__ZL27QTMovieURLAttributeFunctionv
+__ZL45QTMovieLoadStateDidChangeNotificationFunctionv
+__ZL40QTMovieRateDidChangeNotificationFunctionv
+__ZL40QTMovieSizeDidChangeNotificationFunctionv
+__ZL40QTMovieTimeDidChangeNotificationFunctionv
+__ZL33QTMovieDidEndNotificationFunctionv
+__ZN7WebCore18MediaPlayerPrivate7setSizeERKNS_7IntSizeE
+__ZN7WebCore18MediaPlayerPrivate10setVisibleEb
+__ZNK7WebCore20TransformationMatrix12isInvertibleEv
+__ZN7WebCoreL14determinant4x4ERA4_A4_Kd
+__ZN7WebCoreL14determinant3x3Eddddddddd
+__ZN7WebCoreL14determinant2x2Edddd
+__ZN7WebCore11RenderLayer23beginTransparencyLayersEPNS_15GraphicsContextEPKS0_
+__ZN7WebCore11RenderLayer27transparentPaintingAncestorEv
+__ZN7WebCore15GraphicsContext9concatCTMERKNS_20TransformationMatrixE
+__ZNK7WebCore20TransformationMatrixcv17CGAffineTransformEv
+__ZNK7WebCore20TransformationMatrix7inverseEv
+__ZN7WebCoreL7inverseERA4_A4_KdRA4_A4_d
+__ZN7WebCoreL19transparencyClipBoxERKNS_20TransformationMatrixEPKNS_11RenderLayerES5_
+__ZN7WebCore9RenderBox12maskClipRectEv
+__ZN7WebCore15GraphicsContext22beginTransparencyLayerEf
+__ZN7WebCore13RenderReplica5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore9RenderBox9paintMaskERNS_12RenderObject9PaintInfoEii
+__ZNK7WebCore9RenderBox15borderFitAdjustERiS1_
+__ZN7WebCore9RenderBox15paintMaskImagesERKNS_12RenderObject9PaintInfoEiiiiii
+__ZNK7WebCore10StyleImage8isLoadedEv
+__ZNK7WebCore10StyleImage9canRenderEf
+__ZN7WebCore19StyleGeneratedImage21setImageContainerSizeERKNS_7IntSizeE
+__ZNK7WebCore19StyleGeneratedImage9imageSizeEPKNS_12RenderObjectEf
+__ZNK7WebCore19StyleGeneratedImage5imageEPNS_12RenderObjectERKNS_7IntSizeE
+__ZN7WebCore16CSSGradientValue5imageEPNS_12RenderObjectERKNS_7IntSizeE
+__ZN7WebCore22CSSImageGeneratorValue8getImageEPNS_12RenderObjectERKNS_7IntSizeE
+__ZNK3WTF7HashMapIPN7WebCore12RenderObjectENS1_7IntSizeENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS7_IS4_EEE3getERKS3_
+__ZN7WebCore22CSSImageGeneratorValue12removeClientEPNS_12RenderObjectE
+__ZN3WTF7HashMapIN7WebCore7IntSizeEjNS_7IntHashIS2_EENS_10HashTraitsIS2_EENS5_IjEEE3addERKS2_RKj
+__ZN3WTF9HashTableIN7WebCore7IntSizeESt4pairIS2_jENS_18PairFirstExtractorIS4_EENS_7IntHashIS2_EENS_14PairHashTraitsINS_10HashTr
+__ZNK3WTF7HashMapIN7WebCore7IntSizeENS_6RefPtrINS1_5ImageEEENS_7IntHashIS2_EENS_10HashTraitsIS2_EENS8_IS5_EEE3getERKS2_
+__ZN7WebCore16CSSGradientValue14createGradientEPNS_12RenderObjectERKNS_7IntSizeE
+__ZN7WebCore16CSSGradientValue12resolvePointEPNS_17CSSPrimitiveValueES2_RKNS_7IntSizeEf
+__ZN7WebCore8GradientC1ERKNS_10FloatPointES3_
+__ZN7WebCore8GradientC2ERKNS_10FloatPointES3_
+__ZN7WebCore16CSSGradientValue17sortStopsIfNeededEv
+__ZNSt17_Temporary_bufferIPN7WebCore20CSSGradientColorStopES1_EC1ES2_S2_
+__ZNSt17_Temporary_bufferIPN7WebCore20CSSGradientColorStopES1_EC2ES2_S2_
+__ZSt22__get_temporary_bufferIN7WebCore20CSSGradientColorStopEESt4pairIPT_lElS4_
+__ZSt26__uninitialized_fill_n_auxIPN7WebCore20CSSGradientColorStopElS1_EvT_T0_RKT1_St12__false_type
+__ZSt22__stable_sort_adaptiveIPN7WebCore20CSSGradientColorStopES2_lPFbRKS1_S4_EEvT_S7_T0_T1_T2_
+__ZSt24__merge_sort_with_bufferIPN7WebCore20CSSGradientColorStopES2_PFbRKS1_S4_EEvT_S7_T0_T1_
+__ZSt22__chunk_insertion_sortIPN7WebCore20CSSGradientColorStopElPFbRKS1_S4_EEvT_S7_T0_T1_
+__ZSt16__insertion_sortIPN7WebCore20CSSGradientColorStopEPFbRKS1_S4_EEvT_S7_T0_
+__ZN7WebCoreL12compareStopsERKNS_20CSSGradientColorStopES2_
+__ZSt25__unguarded_linear_insertIPN7WebCore20CSSGradientColorStopES1_PFbRKS1_S4_EEvT_T0_T1_
+__ZSt16__merge_adaptiveIPN7WebCore20CSSGradientColorStopElS2_PFbRKS1_S4_EEvT_S7_S7_T0_S8_T1_S8_T2_
+__ZSt16__merge_backwardIPN7WebCore20CSSGradientColorStopES2_S2_PFbRKS1_S4_EET1_T_S8_T0_S9_S7_T2_
+__ZSt23return_temporary_bufferIN7WebCore20CSSGradientColorStopEEvPT_
+__ZN7WebCore8Gradient12addColorStopEfRKNS_5ColorE
+__ZNK7WebCore5Color7getRGBAERfS1_S1_S1_
+__ZN3WTF6VectorIN7WebCore8Gradient9ColorStopELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIN7WebCore8Gradient9ColorStopELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore8Gradient9ColorStopELm0EE15reserveCapacityEm
+__ZN7WebCore8Gradient15platformDestroyEv
+__ZN7WebCore22CSSImageGeneratorValue8putImageERKNS_7IntSizeEN3WTF10PassRefPtrINS_5ImageEEE
+__ZN3WTF7HashMapIN7WebCore7IntSizeENS_6RefPtrINS1_5ImageEEENS_7IntHashIS2_EENS_10HashTraitsIS2_EENS8_IS5_EEE3addERKS2_RKS5_
+__ZN7WebCore15GraphicsContext14drawTiledImageEPNS_5ImageERKNS_7IntRectES5_NS1_8TileRuleES6_NS_17CompositeOperatorE
+__ZN7WebCore14GeneratedImage4drawEPNS_15GraphicsContextERKNS_9FloatRectES5_NS_17CompositeOperatorE
+__ZN7WebCore15GraphicsContext9translateEff
+__ZN7WebCore15GraphicsContext8fillRectERKNS_9FloatRectERNS_9GeneratorE
+__ZN7WebCore8Gradient4fillEPNS_15GraphicsContextERKNS_9FloatRectE
+__ZN7WebCore8Gradient16platformGradientEv
+__ZNK7WebCore10FloatPointcv7CGPointEv
+__ZN7WebCoreL16gradientCallbackEPvPKdPd
+__ZNK7WebCore8Gradient8getColorEfPfS1_S1_S1_
+__ZNK7WebCore8Gradient8findStopEf
+__ZN7WebCore15GraphicsContext20endTransparencyLayerEv
+__ZN7WebCore9RenderBox12imageChangedEPvPKNS_7IntRectE
+__ZN7WebCore9RenderBox25repaintLayerRectsForImageEPvPKNS_9FillLayerEb
+__ZNK7WebCore16StyleCachedImage9canRenderEf
+__ZN7WebCore20RenderBoxModelObject32calculateBackgroundImageGeometryEPKNS_9FillLayerEiiiiRNS_7IntRectERNS_8IntPointERNS_7IntSiz
+__ZNK7WebCore20RenderBoxModelObject23calculateBackgroundSizeEPKNS_9FillLayerEii
+__ZN7WebCore16StyleCachedImage21setImageContainerSizeERKNS_7IntSizeE
+__ZN7WebCore11CachedImage21setImageContainerSizeERKNS_7IntSizeE
+__ZN7WebCore5Image16setContainerSizeERKNS_7IntSizeE
+__ZNK7WebCore16StyleCachedImage9imageSizeEPKNS_12RenderObjectEf
+__ZN7WebCore12RenderObject12imageChangedEPvPKNS_7IntRectE
+__ZN7WebCore14ResourceHandle15willSendRequestERNS_15ResourceRequestERKNS_16ResourceResponseE
+__ZN7WebCore14ResourceLoader15willSendRequestEPNS_14ResourceHandleERNS_15ResourceRequestERKNS_16ResourceResponseE
+__ZN7WebCore27protocolHostAndPortAreEqualERKNS_4KURLES2_
+__ZN7WebCore23SubresourceLoaderClient15willSendRequestEPNS_17SubresourceLoaderERNS_15ResourceRequestERKNS_16ResourceResponseE
+__ZN7WebCore18MediaPlayerPrivate16loadStateChangedEv
+__ZN7WebCore18MediaPlayerPrivate12updateStatesEv
+__ZL29initQTMovieLoadStateAttributev
+__ZNK7WebCore18MediaPlayerPrivate7seekingEv
+__ZL33QTMovieLoadStateAttributeFunctionv
+__ZN7WebCore16HTMLMediaElement20asyncEventTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore16HTMLMediaElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore13ProgressEventD0Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5EventEEELm0EE6shrinkEm
+__ZNK7WebCore11RenderMedia7isMediaEv
+__ZN7WebCore11RenderMedia12forwardEventEPNS_5EventE
+__ZNK7WebCore5Image17usesContainerSizeEv
+__ZNK7WebCore9RenderBox18calcReplacedHeightEv
+__ZNK7WebCore5Image17hasRelativeHeightEv
+__ZNK7WebCore9RenderBox17calcReplacedWidthEb
+__ZN7WebCore14PreloadScannerD1Ev
+__ZN7WebCore14PreloadScannerD2Ev
+__ZN7WebCore4KURL11setProtocolERKNS_6StringE
+__ZN7WebCore4KURL7setHostERKNS_6StringE
+__ZN7WebCore4KURL7setPathERKNS_6StringE
+__ZN7WebCore28encodeWithURLEscapeSequencesERKNS_6StringE
+__ZNK7WebCore6String4utf8Ev
+__ZN7WebCore10IconLoader6createEPNS_5FrameE
+__ZN7WebCore10IconLoaderC1EPNS_5FrameE
+__ZN7WebCore10IconLoaderC2EPNS_5FrameE
+__ZN7WebCore10IconLoader12startLoadingEv
+__ZN7WebCore20jsNavigatorUserAgentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9Navigator9userAgentEv
+__ZNK7WebCore11FrameLoader9userAgentERKNS_4KURLE
+__ZN7WebCoreL29createHTMLAudioElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLAudioElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSHTMLMediaElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLMediaElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLAudioElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLAudioElementEEE
+__ZN7WebCore18JSHTMLAudioElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLAudioElementEEE
+__ZN7WebCore18JSHTMLMediaElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLMediaElementEEE
+__ZN7WebCoreL29createHTMLVideoElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLVideoElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLVideoElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLVideoElementEEE
+__ZN7WebCore18JSHTMLVideoElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLVideoElementEEE
+__ZN7WebCore18JSHTMLAudioElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18JSHTMLMediaElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27JSHTMLMediaElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore15JSNodePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore39jsNodePrototypeFunctionAddEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore18JSHTMLAudioElement9classInfoEv
+__ZN7WebCore6JSNode16addEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore4Node22scriptExecutionContextEv
+__ZN7WebCore19toJSDOMGlobalObjectEPNS_22ScriptExecutionContextE
+__ZN7WebCore13toJSDOMWindowEPNS_5FrameE
+__ZN7WebCore47jsDocumentPrototypeFunctionGetElementsByTagNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_8NodeListE
+__ZN7WebCore10JSNodeList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSNodeListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8NodeListEEE
+__ZN7WebCore10JSNodeListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8NodeListEEE
+__ZN7WebCore10JSNodeList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16jsNodeListLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10JSNodeList18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore10JSNodeList11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore21jsHTMLMediaElementSrcEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsHTMLMediaElementPrototypeFunctionLoadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16HTMLMediaElement4loadERi
+__ZN7WebCore11MediaPlayer15totalBytesKnownEv
+__ZNK7WebCore18MediaPlayerPrivate15totalBytesKnownEv
+__ZNK7WebCore18MediaPlayerPrivate10totalBytesEv
+__ZN7WebCore11MediaPlayer11bytesLoadedEv
+__ZNK7WebCore18MediaPlayerPrivate11bytesLoadedEv
+__ZNK7WebCore18MediaPlayerPrivate8durationEv
+__ZN7WebCore11MediaPlayer10totalBytesEv
+__ZN7WebCore4Node21dispatchProgressEventERKNS_12AtomicStringEbjj
+__ZNK7WebCore16HTMLMediaElement18potentiallyPlayingEv
+__ZNK7WebCore16HTMLMediaElement6pausedEv
+__ZN7WebCore11MediaPlayer5pauseEv
+__ZN7WebCore18MediaPlayerPrivate5pauseEv
+__ZN7WebCore11MediaPlayer4seekEf
+__ZN7WebCore18MediaPlayerPrivate4seekEf
+__ZN7WebCore11MediaPlayerD0Ev
+__ZN7WebCore18MediaPlayerPrivateD0Ev
+__ZN7WebCore18MediaPlayerPrivate22tearDownVideoRenderingEv
+__ZN7WebCore18MediaPlayerPrivate22destroyQTVideoRendererEv
+-[WebCoreMovieObserver disconnect]
+__ZN7WebCore15setDOMExceptionEPN3JSC9ExecStateEi
+__ZN7WebCore18JSHTMLVideoElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSHTMLVideoElement9classInfoEv
+__ZN7WebCore21jsDocumentStyleSheetsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8Document11styleSheetsEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14StyleSheetListE
+__ZN7WebCore16JSStyleSheetList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSStyleSheetListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14StyleSheetListEEE
+__ZN7WebCore16JSStyleSheetListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14StyleSheetListEEE
+__ZN7WebCore16JSStyleSheetList18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore16JSStyleSheetList11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_10StyleSheetE
+__ZN7WebCore15JSCSSStyleSheet15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSStyleSheetPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore12JSStyleSheet15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSCSSStyleSheetC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13CSSStyleSheetEEE
+__ZN7WebCore15JSCSSStyleSheetC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13CSSStyleSheetEEE
+__ZN7WebCore12JSStyleSheetC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10StyleSheetEEE
+__ZN7WebCore15JSCSSStyleSheet18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20jsCSSStyleSheetRulesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13CSSStyleSheet8cssRulesEb
+__ZN7WebCore11CSSRuleListC1EPNS_9StyleListEb
+__ZN7WebCore11CSSRuleListC2EPNS_9StyleListEb
+__ZN7WebCore7CSSRule6isRuleEv
+__ZN7WebCore9StyleBase13isCharsetRuleEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_11CSSRuleListE
+__ZN7WebCore13JSCSSRuleList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore13JSCSSRuleListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11CSSRuleListEEE
+__ZN7WebCore13JSCSSRuleListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11CSSRuleListEEE
+__ZN7WebCore13JSCSSRuleList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19jsCSSRuleListLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11CSSRuleList6lengthEv
+__ZN7WebCore13JSCSSRuleList18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore13JSCSSRuleList11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore11CSSRuleList4itemEj
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_7CSSRuleE
+__ZNK7WebCore12CSSStyleRule4typeEv
+__ZN7WebCore14JSCSSStyleRule15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSCSSRulePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore9JSCSSRule15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSCSSStyleRuleC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12CSSStyleRuleEEE
+__ZN7WebCore14JSCSSStyleRuleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12CSSStyleRuleEEE
+__ZN7WebCore9JSCSSRuleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7CSSRuleEEE
+__ZN7WebCore14JSCSSStyleRule18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore9JSCSSRule18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16jsCSSRuleCssTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12CSSStyleRule7cssTextEv
+__ZNK7WebCore12CSSStyleRule12selectorTextEv
+__ZNK7WebCore11CSSSelector12selectorTextEv
+__ZNK7WebCore26CSSMutableStyleDeclaration7cssTextEv
+__ZNK7WebCore11CSSProperty7cssTextEv
+__Z15getPropertyName13CSSPropertyID
+__ZNK7WebCore15CSSInitialValue7cssTextEv
+__ZN7WebCore14jsStringOrNullEPN3JSC9ExecStateERKNS_6StringE
+__ZNK7WebCore9FontValue7cssTextEv
+__ZNK7WebCore12CSSValueList7cssTextEv
+__ZNK7WebCore15FontFamilyValue7cssTextEv
+__ZN7WebCore10StringImpl7replaceEtPS0_
+__ZN7WebCore27jsDOMWindowImageConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15JSDOMWindowBase16allowsAccessFromEPN3JSC9ExecStateE
+__ZNK7WebCore11JSDOMWindow5imageEPN3JSC9ExecStateE
+__ZNK3WTF7HashMapIPKN3JSC9ClassInfoEPNS1_8JSObjectENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3getERKS4_
+__ZN7WebCore18JSImageConstructorC1EPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectE
+__ZN7WebCore18JSImageConstructorC2EPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectE
+__ZN7WebCore27JSHTMLImageElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLImageElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN3WTF7HashMapIPKN3JSC9ClassInfoEPNS1_8JSObjectENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3setERKS4_RKS6_
+__ZN3WTF9HashTableIPKN3JSC9ClassInfoESt4pairIS4_PNS1_8JSObjectEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS4_EENS_14PairHashTrai
+__ZN7WebCore18JSImageConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCoreL14constructImageEPN3JSC9ExecStateEPNS0_8JSObjectERKNS0_7ArgListE
+__ZNK7WebCore18JSImageConstructor8documentEv
+__ZN7WebCoreL29createHTMLImageElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLImageElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLImageElementEEE
+__ZN7WebCore18JSHTMLImageElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLImageElementEEE
+__ZN7WebCore18JSHTMLImageElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSHTMLImageElement9classInfoEv
+__ZN7WebCore18JSHTMLImageElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore24setJSHTMLImageElementSrcEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement6setSrcERKNS_6StringE
+__ZN7WebCore7Element12setAttributeERKNS_13QualifiedNameERKNS_12AtomicStringE
+__ZN7WebCore7Element12setAttributeERKNS_13QualifiedNameERKNS_12AtomicStringERi
+__ZNK7WebCore13StyledElement18createAttributeMapEv
+__ZN7WebCore13StyledElement15createAttributeERKNS_13QualifiedNameERKNS_12AtomicStringE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9AttributeEEELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9AttributeEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9AttributeEEELm0EE15reserveCapacityEm
+__ZNK7WebCore14CachedResource9isExpiredEv
+__ZNK7WebCore20ResourceResponseBase27parseCacheControlDirectivesEv
+__ZN7WebCoreL16parseCacheHeaderERKNS_6StringERN3WTF6VectorISt4pairIS0_S0_ELm0EEE
+__ZNK7WebCore6String16removeCharactersEPFbtE
+__ZN7WebCore10StringImpl16removeCharactersEPFbtE
+__ZN7WebCoreL18isControlCharacterEt
+__ZN7WebCore10StringImpl4findEPFbtEi
+__ZN7WebCoreL22isCacheHeaderSeparatorEt
+__ZN3WTF6VectorISt4pairIN7WebCore6StringES3_ELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorISt4pairIN7WebCore6StringES3_ELm0EE14expandCapacityEm
+__ZN3WTF6VectorISt4pairIN7WebCore6StringES3_ELm0EE15reserveCapacityEm
+__ZN3WTF6VectorISt4pairIN7WebCore6StringES3_ELm0EE6shrinkEm
+__ZN7WebCore7Element25dispatchAttrAdditionEventEPNS_9AttributeE
+__ZNK7WebCore15CSSReflectValue7cssTextEv
+__ZNK7WebCore19CSSBorderImageValue7cssTextEv
+__ZNK7WebCore16CSSGradientValue7cssTextEv
+__ZNK7WebCore22WebKitCSSKeyframesRule4typeEv
+__ZN7WebCore24JSWebKitCSSKeyframesRule15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSWebKitCSSKeyframesRuleC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_22WebKitCSSKeyframesRuleEEE
+__ZN7WebCore24JSWebKitCSSKeyframesRuleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_22WebKitCSSKeyframesRuleEEE
+__ZN7WebCore24JSWebKitCSSKeyframesRule18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore22WebKitCSSKeyframesRule7cssTextEv
+__ZNK7WebCore21WebKitCSSKeyframeRule7cssTextEv
+__ZNK7WebCore23WebKitCSSTransformValue7cssTextEv
+__ZN7WebCoreL19quoteStringIfNeededERKNS_6StringE
+__ZN7WebCore11LayoutStatenwEmPNS_11RenderArenaE
+__ZN7WebCore11LayoutStateC1EPS0_PNS_9RenderBoxERKNS_7IntSizeE
+__ZN7WebCore11LayoutStateC2EPS0_PNS_9RenderBoxERKNS_7IntSizeE
+__ZN7WebCore9InlineBox14dirtyLineBoxesEv
+__ZN7WebCore11RenderBlock20determineEndPositionEPNS_13RootInlineBoxERNS_14InlineIteratorERNS_10BidiStatusERi
+__ZN7WebCore13InlineFlowBox10deleteLineEPNS_11RenderArenaE
+__ZN7WebCore9InlineBox10deleteLineEPNS_11RenderArenaE
+__ZN7WebCore9InlineBoxD0Ev
+__ZN7WebCore13RootInlineBox29removeLineBoxFromRenderObjectEv
+__ZN7WebCore17RenderLineBoxList13removeLineBoxEPNS_13InlineFlowBoxE
+__ZN7WebCore13RootInlineBox8Overflow7destroyEPNS_11RenderArenaE
+__ZN7WebCore13RootInlineBox8OverflowdlEPvm
+__ZN7WebCore11LayoutState7destroyEPNS_11RenderArenaE
+__ZN7WebCore11LayoutStatedlEPvm
+__ZN7WebCore9ClipRects7destroyEPNS_11RenderArenaE
+__ZN7WebCore9ClipRectsdlEPvm
+__ZN7WebCore11ImageSource20frameDurationAtIndexEm
+__ZN7WebCore10IconLoader18didReceiveResponseEPNS_17SubresourceLoaderERKNS_16ResourceResponseE
+__ZN7WebCore10IconLoader14didReceiveDataEPNS_17SubresourceLoaderEPKci
+__ZN7WebCore10IconLoader16didFinishLoadingEPNS_17SubresourceLoaderE
+__ZNK7WebCore14ResourceHandle7requestEv
+__ZN7WebCore10IconLoader13finishLoadingERKNS_4KURLEN3WTF10PassRefPtrINS_12SharedBufferEEE
+__ZNK7WebCore13PageURLRecord8snapshotEb
+__ZN3WTF7HashMapIN7WebCore6StringENS1_15PageURLSnapshotENS1_10StringHashENS_10HashTraitsIS2_EENS5_IS3_EEE3setERKS2_RKS3_
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS1_15PageURLSnapshotEENS_18PairFirstExtractorIS5_EENS1_10StringHashENS_14PairHa
+__ZN7WebCore12IconDatabase24scheduleOrDeferSyncTimerEv
+__ZN7WebCore12IconDatabase21setIconDataForIconURLEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_6StringE
+__ZNK7WebCore12SharedBuffer4copyEv
+__ZN3WTF6VectorIN7WebCore6StringELm0EE11appendRangeINS_29HashTableConstIteratorAdapterINS_9HashTableIS2_S2_NS_17IdentityExtract
+__ZNK7WebCore10IconRecord8snapshotEb
+__ZN3WTF7HashMapIN7WebCore6StringENS1_12IconSnapshotENS1_10StringHashENS_10HashTraitsIS2_EENS5_IS3_EEE3setERKS2_RKS3_
+__ZN7WebCore10IconLoader17clearLoadingStateEv
+__ZN7WebCore12SharedBufferD1Ev
+__ZN7WebCore12SharedBufferD2Ev
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_11EventTargetE
+__ZN7WebCore11EventTarget20toSVGElementInstanceEv
+__ZN7WebCore18MediaPlayerPrivate24disableUnsupportedTracksEv
+__ZL20initQTMediaTypeVideov
+__ZL20initQTMediaTypeSoundv
+__ZL19initQTMediaTypeTextv
+__ZL19initQTMediaTypeBasev
+__ZL19initQTMediaTypeMPEGv
+__ZL29initQTTrackMediaTypeAttributev
+__ZN7WebCore11MediaPlayer15inMediaDocumentEv
+__ZN7WebCore18MediaPlayerPrivate15cacheMovieScaleEv
+__ZL31initQTMovieNaturalSizeAttributev
+__ZNK7WebCore18MediaPlayerPrivate11currentTimeEv
+__ZNK7WebCore18MediaPlayerPrivate13maxTimeLoadedEv
+__ZN7WebCore11MediaPlayer17readyStateChangedEv
+__ZThn112_N7WebCore16HTMLMediaElement28mediaPlayerReadyStateChangedEPNS_11MediaPlayerE
+__ZN7WebCore16HTMLMediaElement28mediaPlayerReadyStateChangedEPNS_11MediaPlayerE
+__ZN7WebCore11MediaPlayer10readyStateEv
+__ZNK7WebCore18MediaPlayerPrivate10readyStateEv
+__ZN7WebCore16HTMLMediaElement13setReadyStateENS_11MediaPlayer10ReadyStateE
+__ZN7WebCore16HTMLMediaElement13scheduleEventERKNS_12AtomicStringE
+__ZN7WebCore11RenderVideo16videoSizeChangedEv
+__ZN7WebCore11MediaPlayer11naturalSizeEv
+__ZNK7WebCore18MediaPlayerPrivate11naturalSizeEv
+__ZL35QTMovieNaturalSizeAttributeFunctionv
+__ZN7WebCore18MediaPlayerPrivate6doSeekEv
+__ZNK7WebCore18MediaPlayerPrivate12createQTTimeEf
+__ZL29initQTMovieTimeScaleAttributev
+__ZL14initQTMakeTimexl
+__ZN7WebCore16HTMLMediaElement15updatePlayStateEv
+__ZNK7WebCore11MediaPlayer6pausedEv
+__ZNK7WebCore18MediaPlayerPrivate6pausedEv
+__ZNK7WebCore11MediaPlayer7visibleEv
+__ZN7WebCore18MediaPlayerPrivate19setUpVideoRenderingEv
+__ZN7WebCoreL20QTVideoRendererClassEv
+__ZN7WebCore18MediaPlayerPrivate21createQTVideoRendererEv
+__ZL58initQTVideoRendererWebKitOnlyNewImageAvailableNotificationv
+-[WebCoreMovieObserver timeChanged:]
+__ZN7WebCore18MediaPlayerPrivate11timeChangedEv
+__ZNK7WebCore16HTMLMediaElement8autoplayEv
+__ZNK7WebCore16HTMLVideoElement7isVideoEv
+__ZN7WebCore16HTMLVideoElement17updatePosterImageEv
+__ZNK7WebCore16HTMLVideoElement6posterEv
+__ZL28initQTMovieDataSizeAttributev
+__ZL32QTMovieDataSizeAttributeFunctionv
+__ZN7WebCore11MediaPlayer11timeChangedEv
+__ZThn112_N7WebCore16HTMLMediaElement22mediaPlayerTimeChangedEPNS_11MediaPlayerE
+__ZN7WebCore16HTMLMediaElement22mediaPlayerTimeChangedEPNS_11MediaPlayerE
+__ZNK7WebCore16HTMLMediaElement11currentTimeEv
+__ZNK7WebCore11MediaPlayer11currentTimeEv
+__ZNK7WebCore16HTMLMediaElement8durationEv
+__ZNK7WebCore11MediaPlayer8durationEv
+__ZN7WebCore16HTMLMediaElement23progressEventTimerFiredEPNS_5TimerIS0_EE
+__ZNK7WebCore13ProgressEvent15isProgressEventEv
+__ZNK7WebCore5Event29isXMLHttpRequestProgressEventEv
+__ZN7WebCore15JSProgressEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSProgressEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13ProgressEventEEE
+__ZN7WebCore15JSProgressEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13ProgressEventEEE
+__ZNK7WebCore10RenderText16linesBoundingBoxEv
+__ZNK7WebCore8Position14inRenderedTextEv
+__ZNK7WebCore13InlineTextBox19containsCaretOffsetEi
+__ZNK7WebCore13InlineTextBox14caretMinOffsetEv
+__ZNK7WebCore13InlineTextBox14caretMaxOffsetEv
+__ZNK7WebCore10RenderText14caretMinOffsetEv
+-[WebCoreMovieObserver newImageAvailable:]
+-[WebCoreMovieObserver repaint]
+__ZN7WebCore18MediaPlayerPrivate7repaintEv
+__ZN7WebCore11MediaPlayer7repaintEv
+__ZThn112_N7WebCore16HTMLMediaElement18mediaPlayerRepaintEPNS_11MediaPlayerE
+__ZN7WebCore16HTMLMediaElement18mediaPlayerRepaintEPNS_11MediaPlayerE
+__ZN7WebCore12EventHandler10mouseMovedEP7NSEvent
+__ZN7WebCoreL12currentEventEv
+__ZN7WebCore18PlatformMouseEventC1EP7NSEvent
+__ZN7WebCore18PlatformMouseEventC2EP7NSEvent
+__ZN7WebCore13pointForEventEP7NSEvent
+__ZN7WebCore8IntPointC1ERK7CGPoint
+__ZN7WebCore8IntPointC2ERK7CGPoint
+__ZN7WebCore19globalPointForEventEP7NSEvent
+__ZN7WebCore11globalPointERK7CGPointP8NSWindow
+__ZN7WebCore15screenForWindowEP8NSWindow
+__ZN7WebCore15flipScreenPointERK7CGPointP8NSScreen
+__ZN7WebCore12EventHandler10mouseMovedERKNS_18PlatformMouseEventE
+__ZN7WebCore13HitTestResultC1ERKNS_8IntPointE
+__ZN7WebCore13HitTestResultC2ERKNS_8IntPointE
+__ZN7WebCore12EventHandler20handleMouseMoveEventERKNS_18PlatformMouseEventEPNS_13HitTestResultE
+__ZN7WebCore12EventHandler17prepareMouseEventERKNS_14HitTestRequestERKNS_18PlatformMouseEventE
+__ZN7WebCoreL27documentPointForWindowPointEPNS_5FrameERKNS_8IntPointE
+__ZNK7WebCore10ScrollView16windowToContentsERKNS_8IntPointE
+__ZNK7WebCore6Widget27convertFromContainingWindowERKNS_8IntPointE
__ZNK7WebCore8IntPointcv7CGPointEv
-__ZN7WebCore20executeInsertNewlineEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore11targetFrameEPNS_5FrameEPNS_5EventE
-__ZNK7WebCore6Editor13canEditRichlyEv
-__ZNK7WebCore4Node23isContentRichlyEditableEv
-__ZNK7WebCore17RenderTextControl8isEditedEv
-__ZN7WebCore22HTMLGenericFormElement8onChangeEv
-__ZN7WebCore17RenderTextControl9setEditedEb
-__ZN7WebCore15HTMLFormElement11submitClickEPNS_5EventE
-__ZNK7WebCore16HTMLInputElement24isSuccessfulSubmitButtonEv
-__ZN7WebCore15EventTargetNode22dispatchSimulatedClickEN3WTF10PassRefPtrINS_5EventEEEbb
-__ZN7WebCore15EventTargetNode27dispatchSimulatedMouseEventERKNS_12AtomicStringEN3WTF10PassRefPtrINS_5EventEEE
-__ZNK7WebCore10MouseEvent12isMouseEventEv
-__ZN7WebCore21JSMouseEventPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore12JSMouseEventC1EPN3KJS8JSObjectEPNS_10MouseEventE
-__ZN7WebCore12JSMouseEvent18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore7JSEventEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore7JSEvent16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore21createTableRowWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore30JSHTMLTableRowElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore21JSHTMLTableRowElementC1EPN3KJS8JSObjectEPNS_19HTMLTableRowElementE
-__ZN7WebCore21JSHTMLTableRowElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25createTableSectionWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore34JSHTMLTableSectionElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore25JSHTMLTableSectionElementC1EPN3KJS8JSObjectEPNS_23HTMLTableSectionElementE
-__ZN7WebCore25JSHTMLTableSectionElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore17createHtmlWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore26JSHTMLHtmlElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLHtmlElementC1EPN3KJS8JSObjectEPNS_15HTMLHtmlElementE
-__ZN7WebCore17JSHTMLHtmlElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore22JSHTMLTableCellElement9classInfoEv
-__ZN7WebCore30JSHTMLTableRowElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore21JSHTMLTableRowElement9classInfoEv
-__ZN7WebCore34JSHTMLTableSectionElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore25JSHTMLTableSectionElement9classInfoEv
-__ZN7WebCore27JSHTMLTableElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore18JSHTMLTableElement9classInfoEv
-__ZNK7WebCore17JSHTMLHtmlElement9classInfoEv
-__ZNK7WebCore7UIEvent9isUIEventEv
-__ZN7WebCore15HTMLFormElement13prepareSubmitEPNS_5EventE
-__ZNK7WebCore12AtomicStringcvN3KJS7UStringEEv
-__ZN7WebCore19JSHTMLSelectElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore19JSHTMLSelectElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSHTMLSelectElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore16HTMLInputElement7setTypeERKNS_6StringE
-__ZN7WebCore22HTMLGenericFormElement7setNameERKNS_12AtomicStringE
-__ZN7WebCore15HTMLFormElement6submitEPNS_5EventEb
-__ZN7WebCore11FrameLoader23clearRecordedFormValuesEv
-__ZNK7WebCore16HTMLInputElement17isActivatedSubmitEv
-__ZN7WebCore11FrameLoader15recordFormValueERKNS_6StringES3_N3WTF10PassRefPtrINS_15HTMLFormElementEEE
-__ZNK3WTF7HashMapIN7WebCore6StringES2_NS1_10StringHashENS_10HashTraitsIS2_EES5_E3getERKS2_
-__ZNK7WebCore22HTMLGenericFormElement17isActivatedSubmitEv
-__ZNK7WebCore22HTMLGenericFormElement24isSuccessfulSubmitButtonEv
-__ZNK7WebCore15HTMLFormElement8formDataEPKc
-__ZN7WebCore17DeprecatedCStringC2EPKc
-__ZNK7WebCore15HTMLFormElement12dataEncodingEv
-__ZNK7WebCore15HTMLFormElement12isMailtoFormEv
-__ZN7WebCore12FormDataListC2ERKNS_12TextEncodingE
-__ZN7WebCore16HTMLInputElement14appendFormDataERNS_12FormDataListEb
-__ZN7WebCore12FormDataList12appendStringERKNS_6StringE
-__ZN3WTF6VectorIN7WebCore16FormDataListItemELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore16FormDataListItemELm0EE15reserveCapacityEm
-__ZNK7WebCore17DeprecatedCString7isEmptyEv
-__ZN7WebCoreeqERKNS_7CStringES2_
-__ZN7WebCore13encodeCStringERKNS_7CStringE
-__ZNK7WebCore17DeprecatedCString8containsEcb
-__ZN7WebCore17DeprecatedCStringC2Ei
-__ZN7WebCore17DeprecatedCString8truncateEj
-__ZN7WebCore17DeprecatedCString6appendEPKc
-__ZN7WebCore9ArrayImpl6detachEv
-__ZN3WTF6VectorIN7WebCore16FormDataListItemELm0EE6shrinkEm
-__ZN7WebCore17DeprecatedCString6appendEc
-__ZN7WebCore8FormData10appendDataEPKvm
-__ZN3WTF6VectorIN7WebCore15FormDataElementELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore15FormDataElementELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore15FormDataElementELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIcLm0EEC2ERKS1_
-__ZN7WebCore11FrameLoader10submitFormEPKcRKNS_6StringEN3WTF10PassRefPtrINS_8FormDataEEES5_S5_S5_PNS_5EventE
-__ZN7WebCore19ResourceRequestBaseC2ERKNS_4KURLENS_26ResourceRequestCachePolicyE
-__ZNK7WebCore8FormData15flattenToStringEv
-__ZNK7WebCore8FormData7flattenERN3WTF6VectorIcLm0EEE
-__ZN7WebCore19ResourceRequestBase6setURLERKNS_4KURLE
-__ZN7WebCore11FrameLoader10submitFormERKNS_16FrameLoadRequestEPNS_5EventE
-__ZNK7WebCore9FrameTree4findERKNS_12AtomicStringE
-__ZNK7WebCore9FrameTree14isDescendantOfEPKNS_5FrameE
-__ZN7WebCore11FrameLoader4loadERKNS_16FrameLoadRequestEbbPNS_5EventEPNS_15HTMLFormElementERKN3WTF7HashMapINS_6StringESA_NS_10StringHashENS8_10HashTraitsISA_EESD_EE
-__ZN7WebCore11FrameLoader22findFrameForNavigationERKNS_12AtomicStringE
-__ZNK7WebCore11FrameLoader21shouldAllowNavigationEPNS_5FrameE
-__ZN7WebCore9FormState6createEN3WTF10PassRefPtrINS_15HTMLFormElementEEERKNS1_7HashMapINS_6StringES6_NS_10StringHashENS1_10HashTraitsIS6_EES9_EENS2_INS_5FrameEEE
-__ZN7WebCore9FormStateC1EN3WTF10PassRefPtrINS_15HTMLFormElementEEERKNS1_7HashMapINS_6StringES6_NS_10StringHashENS1_10HashTraitsIS6_EES9_EENS2_INS_5FrameEEE
+__ZN7WebCore8Document17prepareMouseEventERKNS_14HitTestRequestERKNS_8IntPointERKNS_18PlatformMouseEventE
+__ZNK7WebCore8Document10renderViewEv
+__ZN7WebCore11RenderLayer7hitTestERKNS_14HitTestRequestERNS_13HitTestResultE
+__ZN7WebCore11RenderLayer12hitTestLayerEPS0_S1_RKNS_14HitTestRequestERNS_13HitTestResultERKNS_7IntRectERKNS_8IntPointEbPKNS_24H
+__ZN7WebCore11RenderLayer35update3DTransformedDescendantStatusEv
+__ZN7WebCoreL14isHitCandidateEPKNS_11RenderLayerEbPdPKNS_24HitTestingTransformStateE
+__ZN7WebCore13HitTestResultD1Ev
+__ZN7WebCore13HitTestResultD2Ev
+__ZNK7WebCore11RenderLayer15hitTestContentsERKNS_14HitTestRequestERNS_13HitTestResultERKNS_7IntRectERKNS_8IntPointENS_13HitTest
+__ZN7WebCore12RenderObject7hitTestERKNS_14HitTestRequestERNS_13HitTestResultERKNS_8IntPointEiiNS_13HitTestFilterE
+__ZN7WebCore11RenderBlock11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZN7WebCore11RenderBlock15hitTestContentsERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZN7WebCore29DeprecatedPtrListImplIterator6toLastEv
+__ZN7WebCore29DeprecatedPtrListImplIteratormmEv
+__ZN7WebCore11RenderBlock24isPointInOverflowControlERNS_13HitTestResultEiiii
+__ZN7WebCore11RenderBlock19updateHitTestResultERNS_13HitTestResultERKNS_8IntPointE
+__ZN7WebCore13HitTestResult12setInnerNodeEPNS_4NodeE
+__ZN7WebCore13HitTestResult21setInnerNonSharedNodeEPNS_4NodeE
+__ZN7WebCore13HitTestResultaSERKS0_
+__ZN7WebCore11RenderLayer22updateHoverActiveStateERKNS_14HitTestRequestERNS_13HitTestResultE
+__ZN7WebCore8Document12setHoverNodeEN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore13ContainerNode9setActiveEbb
+__ZN7WebCore13ContainerNode10setHoveredEb
+__ZNK7WebCore11RenderBlock13hoverAncestorEv
+__ZN7WebCore28MouseEventWithHitTestResultsC1ERKNS_18PlatformMouseEventERKNS_13HitTestResultE
+__ZN7WebCore28MouseEventWithHitTestResultsC2ERKNS_18PlatformMouseEventERKNS_13HitTestResultE
+__ZN7WebCore13HitTestResultC1ERKS0_
+__ZN7WebCore13HitTestResultC2ERKS0_
+__ZN7WebCore10ScrollView19scrollbarUnderMouseERKNS_18PlatformMouseEventE
+__ZNK7WebCore28MouseEventWithHitTestResults9scrollbarEv
+__ZN7WebCoreL24subframeForHitTestResultERKNS_28MouseEventWithHitTestResultsE
+__ZN7WebCore12EventHandler12selectCursorERKNS_28MouseEventWithHitTestResultsEPNS_9ScrollbarE
+__ZNK7WebCore28MouseEventWithHitTestResults10targetNodeEv
+__ZNK7WebCore28MouseEventWithHitTestResults10isOverLinkEv
+__ZNK7WebCore11RenderLayer22isPointInResizeControlERKNS_8IntPointE
+__ZN7WebCore13pointerCursorEv
+__ZN7WebCore6CursorC1EP8NSCursor
+__ZN7WebCore6CursorC2EP8NSCursor
+__ZN7WebCore6CursorC1ERKS0_
+__ZN7WebCore6CursorC2ERKS0_
+__ZN7WebCore6Widget9setCursorERKNS_6CursorE
+__ZN7WebCore6CursorD1Ev
+__ZN7WebCore6CursorD2Ev
+__ZN7WebCore12EventHandler18dispatchMouseEventERKNS_12AtomicStringEPNS_4NodeEbiRKNS_18PlatformMouseEventEb
+__ZN7WebCore9FrameView25resetDeferredRepaintDelayEv
+__ZN7WebCore12EventHandler26updateMouseEventTargetNodeEPNS_4NodeERKNS_18PlatformMouseEventEb
+__ZN7WebCore4Node18dispatchMouseEventERKNS_18PlatformMouseEventERKNS_12AtomicStringEiPS0_
+__ZN7WebCore4Node18dispatchMouseEventERKNS_12AtomicStringEiiiiiibbbbbPS0_N3WTF10PassRefPtrINS_5EventEEE
+__ZN7WebCore10MouseEventC1ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEEiiiiibbbbtNS5_INS_11EventTargetEEENS5_INS_9C
+__ZN7WebCore10MouseEventC2ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEEiiiiibbbbtNS5_INS_11EventTargetEEENS5_INS_9C
+__ZN7WebCore17MouseRelatedEventC2ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEEiiiiibbbbb
+__ZN7WebCoreL9contentsXEPNS_9DOMWindowE
+__ZN7WebCoreL9contentsYEPNS_9DOMWindowE
+__ZN7WebCore17MouseRelatedEvent15initCoordinatesEv
+__ZN7WebCore17MouseRelatedEvent19computePageLocationEv
__ZNK7WebCore17MouseRelatedEvent5pageYEv
__ZNK7WebCore17MouseRelatedEvent5pageXEv
-__ZN7WebCore12EventHandler20hitTestResultAtPointERKNS_8IntPointEb
--[DOMDocument URL]
-__ZNK7WebCore16DeprecatedString11getNSStringEv
-+[DOMHTMLElement(WebCoreInternal) _wrapHTMLElement:]
--[WebCoreFrameBridge elementWithName:inForm:]
-__ZNK7WebCore6Chrome5focusEv
-__ZN3WTF6VectorIN7WebCore15FormDataElementELm0EE6shrinkEm
-__ZN7WebCore10RenderPart12deleteWidgetEv
-__ZN7WebCore11RenderLayer23hitTestOverflowControlsERNS_13HitTestResultE
-__ZN7WebCore16HTMLTitleElement7setTextERKNS_6StringE
-__ZN7WebCore13ContainerNode12replaceChildEN3WTF10PassRefPtrINS_4NodeEEEPS3_Ri
-__ZN7WebCore4Node17checkReplaceChildEPS0_S1_Ri
-__ZN7WebCore4Node15canReplaceChildEPS0_S1_
-__ZN7WebCore14RenderTableRow27absoluteClippedOverflowRectEv
-__ZN7WebCore15HTMLFormElement19removedFromDocumentEv
-__ZN7WebCore31jsElementPrototypeFunctionFocusEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore4Node13supportsFocusEv
-__ZNK7WebCore11HTMLElement11isFocusableEv
-__ZN7WebCore19createIFrameWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore28JSHTMLIFrameElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLIFrameElementC1EPN3KJS8JSObjectEPNS_17HTMLIFrameElementE
-__ZN7WebCore19JSHTMLIFrameElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore19JSHTMLIFrameElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSHTMLIFrameElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore21HTMLFrameOwnerElement13contentWindowEv
-__ZN7WebCore35jsNodePrototypeFunctionReplaceChildEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore6JSNode12replaceChildEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore16HTMLStyleElement19removedFromDocumentEv
-__ZN7WebCore12StyleElement19removedFromDocumentEPNS_8DocumentE
-__ZN7WebCore12CSSMediaRuleD1Ev
-__ZN7WebCore11CSSRuleListD2Ev
-__ZN7WebCore10MediaQueryD2Ev
-__ZN3WTF15deleteAllValuesIPN7WebCore13MediaQueryExpELm0EEEvRKNS_6VectorIT_XT0_EEE
-__ZN7WebCore13KeyboardEventD1Ev
-__ZN3WTF6VectorIN7WebCore15KeypressCommandELm0EE6shrinkEm
-__ZN7WebCore13HitTestResult13setURLElementEPNS_7ElementE
-__ZN7WebCore17HTMLAnchorElement9setActiveEbb
-__ZN7WebCore10handCursorEv
-__ZN7WebCore15leakNamedCursorEPKcii
-__ZN7WebCore17HTMLAnchorElement19defaultEventHandlerEPNS_5EventE
-__ZNK7WebCore13HitTestResult11targetFrameEv
-__ZNK7WebCore17HTMLAnchorElement6targetEv
-_urlByRemovingFragment
+__ZN7WebCore17MouseRelatedEvent14receivedTargetEv
+__ZNK7WebCore12RenderObject15absoluteToLocalENS_10FloatPointEbb
+__ZNK7WebCore9RenderBox23mapAbsoluteToLocalPointEbbRNS_14TransformStateE
+__ZNK7WebCore10RenderView23mapAbsoluteToLocalPointEbbRNS_14TransformStateE
+__ZN7WebCore10MouseEventD0Ev
+__ZN7WebCore7UIEventD2Ev
+__ZN7WebCore12EventHandler23handleMouseDraggedEventERKNS_28MouseEventWithHitTestResultsE
+__ZN7WebCore12EventHandler10handleDragERKNS_28MouseEventWithHitTestResultsE
+__ZN7WebCore13HitTestResult22setToNonShadowAncestorEv
+__ZN7WebCore6Chrome23mouseDidMoveOverElementERKNS_13HitTestResultEj
+__ZNK7WebCore13HitTestResult15absoluteLinkURLEv
+__ZN7WebCore19InspectorController23mouseDidMoveOverElementERKNS_13HitTestResultEj
+__ZN7WebCore6Chrome10setToolTipERKNS_13HitTestResultE
+__ZNK7WebCore13HitTestResult15spellingToolTipEv
+__ZN7WebCore8Document21markerContainingPointERKNS_8IntPointENS_14DocumentMarker10MarkerTypeE
+__ZNK7WebCore13HitTestResult5titleEv
+__ZNK7WebCore17RenderLineBoxList7hitTestEPNS_20RenderBoxModelObjectERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestA
+__ZN7WebCore13RootInlineBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
+__ZN7WebCore13InlineFlowBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
+__ZN7WebCore9InlineBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
+__ZN7WebCore11RenderImage11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZN7WebCore9RenderBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZL33QTTrackMediaTypeAttributeFunctionv
+__ZL33QTMovieTimeScaleAttributeFunctionv
+__ZNK7WebCore16HTMLMediaElement7isVideoEv
+__ZN7WebCore39jsHTMLMediaElementPrototypeFunctionPlayEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16HTMLMediaElement4playEv
+__ZN7WebCore16HTMLMediaElement12playInternalEv
+__ZNK7WebCore16HTMLMediaElement13endedPlaybackEv
+__ZNK7WebCore16HTMLMediaElement18stoppedDueToErrorsEv
+__ZNK7WebCore16HTMLMediaElement24pausedForUserInteractionEv
+__ZN7WebCore11MediaPlayer7setRateEf
+__ZN7WebCore18MediaPlayerPrivate7setRateEf
+__ZN7WebCore11MediaPlayer4playEv
+__ZN7WebCore18MediaPlayerPrivate4playEv
+__ZNK7WebCore11MediaPlayer4rateEv
+__ZN7WebCore16HTMLMediaElement26startPlaybackProgressTimerEv
+__ZNK3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_iENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraits
+__ZN7WebCore14jsDocumentBodyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL28createHTMLBodyElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore17JSHTMLBodyElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSHTMLBodyElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLBodyElementEEE
+__ZN7WebCore17JSHTMLBodyElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLBodyElementEEE
+__ZN7WebCore17JSHTMLBodyElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore13JSHTMLElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore25setJSHTMLElementClassNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11HTMLElement12setClassNameERKNS_6StringE
+__ZN7WebCore17NodeListsNodeData38invalidateCachesThatDependOnAttributesEv
+__ZNK7WebCore17NodeListsNodeData7isEmptyEv
+__ZN7WebCore12RenderObject16setStyleInternalEN3WTF10PassRefPtrINS_11RenderStyleEEE
+__ZN7WebCore11RenderStyle16accessAnimationsEv
+__ZN7WebCore9Animation6createEv
+__ZN7WebCore9AnimationC1Ev
+__ZN7WebCore9AnimationC2Ev
+__ZN7WebCore13AnimationList6appendEN3WTF10PassRefPtrINS_9AnimationEEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9AnimationEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9AnimationEEELm0EE15reserveCapacityEm
+__ZN7WebCore16CSSStyleSelector17mapAnimationDelayEPNS_9AnimationEPNS_8CSSValueE
+__ZN7WebCore16CSSStyleSelector20mapAnimationDurationEPNS_9AnimationEPNS_8CSSValueE
+__ZN7WebCore16CSSStyleSelector16mapAnimationNameEPNS_9AnimationEPNS_8CSSValueE
+__ZN7WebCore13AnimationList19fillUnsetPropertiesEv
+__ZN7WebCore26AnimationControllerPrivate24accessCompositeAnimationEPNS_12RenderObjectE
+__ZNK3WTF7HashMapIPN7WebCore12RenderObjectENS_6RefPtrINS1_18CompositeAnimationEEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_
+__ZN3WTF7HashMapIPN7WebCore12RenderObjectENS_6RefPtrINS1_18CompositeAnimationEEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_E
+__ZN3WTF9HashTableIPN7WebCore12RenderObjectESt4pairIS3_NS_6RefPtrINS1_18CompositeAnimationEEEENS_18PairFirstExtractorIS8_EENS_7
+__ZN7WebCore18CompositeAnimation7animateEPNS_12RenderObjectEPNS_11RenderStyleES4_
+__ZN7WebCore18CompositeAnimation24updateKeyframeAnimationsEPNS_12RenderObjectEPNS_11RenderStyleES4_
+__ZN3WTF6VectorIPN7WebCore16AtomicStringImplELm0EE14shrinkCapacityEm
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplENS_6RefPtrINS1_17KeyframeAnimationEEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_I
+__ZN7WebCore17KeyframeAnimationC1EPKNS_9AnimationEPNS_12RenderObjectEiPNS_18CompositeAnimationEPNS_11RenderStyleE
+__ZN7WebCore17KeyframeAnimationC2EPKNS_9AnimationEPNS_12RenderObjectEiPNS_18CompositeAnimationEPNS_11RenderStyleE
+__ZN7WebCore13AnimationBaseC2EPKNS_9AnimationEPNS_12RenderObjectEPNS_18CompositeAnimationE
+__ZN7WebCore12KeyframeList6insertEfN3WTF10PassRefPtrINS_11RenderStyleEEE
+__ZN3WTF6VectorIN7WebCore13KeyframeValueELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore13KeyframeValueELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore13KeyframeValueELm0EE15reserveCapacityEm
+__ZN7WebCore16CSSStyleSelector26keyframeStylesForAnimationEPNS_7ElementEPKNS_11RenderStyleERNS_12KeyframeListE
+__ZN7WebCore12KeyframeList5clearEv
+__ZN3WTF6VectorIN7WebCore13KeyframeValueELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN7WebCore13KeyframeValueELm0EE6shrinkEm
+__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIjEENS_10HashTraitsIiEES6_E5clearEv
+__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIjEENS_10HashTraitsIiEES6_E15deallocateTableEPii
+__ZNK3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_NS_6RefPtrINS1_22WebKitCSSKeyframesRuleEEEENS_18PairFirstExtractorI
+__ZNK7WebCore22WebKitCSSKeyframesRule6lengthEv
+__ZNK7WebCore22WebKitCSSKeyframesRule4itemEj
+__ZN7WebCore21WebKitCSSKeyframeRule14isKeyframeRuleEv
+__ZN7WebCore11RenderStyle5cloneEPKS0_
+__ZN7WebCore11RenderStyleC1ERKS0_
+__ZN7WebCore11RenderStyleC2ERKS0_
+__ZN7WebCore16CSSStyleSelector25createTransformOperationsEPNS_8CSSValueEPNS_11RenderStyleERNS_19TransformOperationsE
+__ZN7WebCoreL25getTransformOperationTypeENS_23WebKitCSSTransformValue22TransformOperationTypeE
+__ZN7WebCore16CSSStyleSelector26mapAnimationTimingFunctionEPNS_9AnimationEPNS_8CSSValueE
+__ZN3WTF7HashSetIiNS_7IntHashIjEENS_10HashTraitsIiEEE3addERKi
+__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIjEENS_10HashTraitsIiEES6_E6expandEv
+__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIjEENS_10HashTraitsIiEES6_E6rehashEi
+__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIjEENS_10HashTraitsIiEES6_E13allocateTableEi
+__ZN7WebCore21WebKitCSSKeyframeRule14parseKeyStringERKNS_6StringERN3WTF6VectorIfLm0EEE
+__ZN3WTF6VectorIfLm0EE14shrinkCapacityEm
+__ZNK7WebCore6String7toFloatEPb
+__ZN7WebCore10StringImpl7toFloatEPb
+__ZN7WebCore17charactersToFloatEPKtmPb
+__ZN3WTF6VectorIfLm0EE14expandCapacityEmPKf
+__ZN3WTF6VectorIfLm0EE14expandCapacityEm
+__ZN3WTF6VectorIfLm0EE15reserveCapacityEm
+__ZN3WTF6VectorIfLm0EE6shrinkEm
+__ZN7WebCore17KeyframeAnimation29validateTransformFunctionListEv
+__ZNK3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIjEENS_10HashTraitsIiEES6_E8containsIiNS_22IdentityHashTranslatorIii
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplENS_6RefPtrINS1_17KeyframeAnimationEEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS
+__ZN3WTF6VectorIPN7WebCore16AtomicStringImplELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore16AtomicStringImplELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore16AtomicStringImplELm0EE15reserveCapacityEm
+__ZN7WebCore18CompositeAnimation17updateTransitionsEPNS_12RenderObjectEPNS_11RenderStyleES4_
+__ZN7WebCore17KeyframeAnimation7animateEPNS_18CompositeAnimationEPNS_12RenderObjectEPKNS_11RenderStyleEPS5_RN3WTF6RefPtrIS5_EE
+__ZN7WebCore13AnimationBase27fireAnimationEventsIfNeededEv
+__ZN7WebCore13AnimationBase18updateStateMachineENS0_14AnimStateInputEd
+__ZNK7WebCore13AnimationBase24beginAnimationUpdateTimeEv
+__ZN7WebCore18CompositeAnimation25cleanupFinishedAnimationsEv
+__ZNK7WebCore18CompositeAnimation17timeToNextServiceEv
+__ZN7WebCore17KeyframeAnimation17timeToNextServiceEv
+__ZN7WebCore13AnimationBase17timeToNextServiceEv
+__ZN7WebCoreL15convertToLengthEPNS_17CSSPrimitiveValueEPNS_11RenderStyleEdPb
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9AnimationEEELm0EE6shrinkEm
+__ZN7WebCore9AnimationD1Ev
+__ZN7WebCore9AnimationD2Ev
+-[WebCoreMovieObserver rateChanged:]
+__ZN7WebCore18MediaPlayerPrivate11rateChangedEv
+__ZN7WebCore11MediaPlayer11rateChangedEv
+__ZThn112_N7WebCore16HTMLMediaElement22mediaPlayerRateChangedEPNS_11MediaPlayerE
+__ZN7WebCore16HTMLMediaElement22mediaPlayerRateChangedEPNS_11MediaPlayerE
+__ZN7WebCore12EventHandler20hitTestResultAtPointERKNS_8IntPointEbb
__ZNK7WebCore13HitTestResult10isSelectedEv
__ZN7WebCore19SelectionController8containsERKNS_8IntPointE
__ZN7WebCore12EventHandler9mouseDownEP7NSEvent
__ZN7WebCore12EventHandler21handleMousePressEventERKNS_18PlatformMouseEventE
__ZN7WebCore8Document13setActiveNodeEN3WTF10PassRefPtrINS_4NodeEEE
-__ZNK7WebCore17HTMLAnchorElement11isFocusableEv
-__ZNK7WebCore17HTMLAnchorElement16isMouseFocusableEv
-__ZNK7WebCore17HTMLAnchorElement17canStartSelectionEv
+__ZNK7WebCore11HTMLElement11isFocusableEv
+__ZNK7WebCore4Node11isFocusableEv
+__ZNK7WebCore4Node16isMouseFocusableEv
+__ZNK7WebCore12EventHandler14mousePressNodeEv
+__ZNK7WebCore4Node17canStartSelectionEv
+__ZN7WebCore6Editor29markMisspellingsAndBadGrammarERKNS_16VisibleSelectionEbS3_
+__ZN7WebCore6Editor40markAllMisspellingsAndBadGrammarInRangesEbPNS_5RangeEbS2_b
+__ZN7WebCoreL29paragraphAlignedRangeForRangeEPNS_5RangeERiRNS_6StringE
+__ZNK7WebCore5Range10cloneRangeERi
+__ZN7WebCore16startOfParagraphERKNS_15VisiblePositionE
+__ZN7WebCore8setStartEPNS_5RangeERKNS_15VisiblePositionE
+__ZN7WebCore24rangeCompliantEquivalentERKNS_15VisiblePositionE
+__ZN7WebCore6setEndEPNS_5RangeERKNS_15VisiblePositionE
+__ZNK7WebCore5Range14startContainerERi
+__ZN7WebCore9plainTextEPKNS_5RangeE
__ZN7WebCore16HTMLInputElement17dispatchBlurEventEv
-__ZN7WebCore15EventTargetNode17dispatchBlurEventEv
+__ZN7WebCore12InputElement17dispatchBlurEventERNS_16InputElementDataEPNS_8DocumentE
+__ZThn128_NK7WebCore16HTMLInputElement11placeholderEv
+__ZNK7WebCore16HTMLInputElement11placeholderEv
+__ZN7WebCore5Frame22textFieldDidEndEditingEPNS_7ElementE
+__Z3kitPN7WebCore16HTMLInputElementE
+__ZN7WebCore4Node17dispatchBlurEventEv
+__ZN7WebCore11RenderLayer14scrollToOffsetEiibb
__ZN7WebCore12EventHandler21handleMousePressEventERKNS_28MouseEventWithHitTestResultsE
__ZN7WebCore12EventHandler9dragStateEv
__ZN7WebCore12EventHandler23canMouseDownStartSelectEPNS_4NodeE
-__ZN7WebCore12EventHandler32passWidgetMouseDownEventToWidgetERKNS_28MouseEventWithHitTestResultsE
+__ZNK7WebCore8Document13isSVGDocumentEv
__ZN7WebCore12EventHandler17focusDocumentViewEv
__ZN7WebCore12EventHandler32handleMousePressEventSingleClickERKNS_28MouseEventWithHitTestResultsE
-__ZNK7WebCore12RenderObject16shouldAutoscrollEv
+__ZNK7WebCore28MouseEventWithHitTestResults10localPointEv
+__ZN7WebCore11RenderBlock16positionForPointERKNS_8IntPointE
+__ZN7WebCore11RenderBlock34positionForPointWithInlineChildrenERKNS_8IntPointE
+__ZN7WebCore12RenderObject21createVisiblePositionEiNS_9EAffinityE
+__ZNK7WebCore10RenderText14previousOffsetEi
+__ZN7WebCore22cursorMovementIteratorEPKti
+__ZN7WebCore18textBreakPrecedingEPNS_17TextBreakIteratorEi
+__ZNK7WebCore8Position28atLastEditingPositionForNodeEv
+__ZN7WebCore16VisibleSelectionC1ERKNS_15VisiblePositionE
+__ZN7WebCore16VisibleSelectionC2ERKNS_15VisiblePositionE
+__ZNK7WebCore5Frame21shouldChangeSelectionERKNS_16VisibleSelectionE
+__ZNK7WebCore5Frame21shouldChangeSelectionERKNS_16VisibleSelectionES3_NS_9EAffinityEb
+__ZN7WebCore9RenderBox14localCaretRectEPNS_9InlineBoxEiPi
+__ZN7WebCore12EventHandler12mouseDraggedEP7NSEvent
+__ZN7WebCore11iBeamCursorEv
+__ZN7WebCore12EventHandler27eventLoopHandleMouseDraggedERKNS_28MouseEventWithHitTestResultsE
+__ZN7WebCore12EventHandler24mouseDownViewIfStillGoodEv
+__ZNK7WebCore12EventHandler14allowDHTMLDragERbS1_
+__ZNK7WebCore10ScrollView16contentsToWindowERKNS_8IntPointE
+__ZNK7WebCore6Widget25convertToContainingWindowERKNS_8IntPointE
+__ZN7WebCore14DragController24delegateDragSourceActionERKNS_8IntPointE
+__ZNK7WebCore12RenderObject13draggableNodeEbbiiRb
+__ZNK7WebCore12EventHandler18shouldDragAutoNodeEPNS_4NodeERKNS_8IntPointE
+__ZN7WebCore12EventHandler16handleAutoscrollEPNS_12RenderObjectE
+__ZN7WebCore12EventHandler21setAutoscrollRendererEPNS_12RenderObjectE
+__ZN7WebCore12EventHandler20startAutoscrollTimerEv
+__ZN7WebCore12EventHandler27updateSelectionForMouseDragEPNS_4NodeERKNS_8IntPointE
+__ZN7WebCore12EventHandler24canMouseDragExtendSelectEPNS_4NodeE
+__ZN7WebCore16VisibleSelection9setExtentERKNS_15VisiblePositionE
+__ZNK7WebCore5Frame20selectionGranularityEv
+__ZN7WebCore5TimerINS_12EventHandlerEE5firedEv
+__ZN7WebCore12EventHandler20autoscrollTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore9RenderBox10autoscrollEv
+__ZN7WebCore11RenderLayer10autoscrollEv
+__ZN7WebCore12EventHandler27updateSelectionForMouseDragEv
+__ZNK7WebCore12EventHandler20currentMousePositionEv
__ZN7WebCore12EventHandler7mouseUpEP7NSEvent
__ZN7WebCore12EventHandler23handleMouseReleaseEventERKNS_18PlatformMouseEventE
-__ZN7WebCore19JSHTMLIFrameElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore19JSHTMLIFrameElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore19JSHTMLIFrameElement6setSrcEPN3KJS9ExecStateEPNS1_7JSValueE
-__ZN7WebCore20HTMLFrameElementBase6setSrcERKNS_6StringE
-__ZN7WebCore11FrameLoader15userGestureHintEv
-__ZNK7WebCore8KJSProxy21processingUserGestureEv
-__ZN3KJS6Window12currentEventEv
-__ZN7WebCore11FrameLoader22scheduleLocationChangeERKNS_6StringES3_bb
-__ZN7WebCore11FrameLoader19scheduleRedirectionEPNS_20ScheduledRedirectionE
-__ZN7WebCore11FrameLoader21startRedirectionTimerEv
-__ZN7WebCore11FrameLoader16clientRedirectedERKNS_4KURLEddbb
+__ZNK7WebCore7UIEvent9isUIEventEv
__ZN7WebCore12EventHandler23handleMouseReleaseEventERKNS_28MouseEventWithHitTestResultsE
__ZN7WebCore12EventHandler19stopAutoscrollTimerEb
-__ZN7WebCore12EventHandler21setAutoscrollRendererEPNS_12RenderObjectE
+__ZN7WebCore9RenderBox14stopAutoscrollEv
__ZN7WebCore12EventHandler13handleMouseUpERKNS_28MouseEventWithHitTestResultsE
__ZN7WebCore12EventHandler22eventLoopHandleMouseUpERKNS_28MouseEventWithHitTestResultsE
-__ZN7WebCore12EventHandler24mouseDownViewIfStillGoodEv
__ZNK7WebCore12EventHandler18eventActivatedViewERKNS_18PlatformMouseEventE
__ZN7WebCore12EventHandler15invalidateClickEv
+__ZN7WebCore16HTMLMediaElement26playbackProgressTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore16HTMLMediaElement23scheduleTimeupdateEventEb
+__ZN7WebCore5TimerINS_26AnimationControllerPrivateEE5firedEv
+__ZN7WebCore26AnimationControllerPrivate19animationTimerFiredEPNS_5TimerIS0_EE
+__ZNK7WebCore13AnimationListeqERKS0_
+__ZNK7WebCore9Animation15animationsMatchEPKS0_b
+__ZN7WebCore26AnimationControllerPrivate27addToStyleAvailableWaitListEPNS_13AnimationBaseE
+__ZN7WebCore26AnimationControllerPrivate23addNodeChangeToDispatchEN3WTF10PassRefPtrINS_4NodeEEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EE15reserveCapacityEm
+__ZN7WebCore26AnimationControllerPrivate34startUpdateStyleIfNeededDispatcherEv
+__ZNK7WebCore17KeyframeAnimation28getKeyframeAnimationIntervalERPKNS_11RenderStyleES4_Rd
+__ZNK7WebCore13AnimationBase14getElapsedTimeEv
+__ZNK7WebCore13AnimationBase8progressEddPKNS_14TimingFunctionE
+__ZN7WebCore13AnimationBase15blendPropertiesEPKS0_iPNS_11RenderStyleEPKS3_S6_d
+__ZN7WebCoreL17ensurePropertyMapEv
+__ZN3WTF6VectorIPN7WebCore19PropertyWrapperBaseELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore19PropertyWrapperBaseELm0EE15reserveCapacityEm
+__ZN7WebCoreL22addShorthandPropertiesEv
+__ZN7WebCoreL18wrapperForPropertyEi
+__ZN3WTF6VectorIPN7WebCore19PropertyWrapperBaseELm0EE14expandCapacityEmPKS3_
+__ZN7WebCoreL18addPropertyWrapperEiPNS_19PropertyWrapperBaseE
+__ZNK7WebCore15PropertyWrapperIRKNS_19TransformOperationsEE5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS8_SB_d
+__ZNK7WebCore11RenderStyle9transformEv
+__ZN7WebCore23ScaleTransformOperation5blendEPKNS_18TransformOperationEdb
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EE14expandCapacityEmPKS4_
+__ZN7WebCore11RenderStyle12setTransformERKNS_19TransformOperationsE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9AnimationEEELm0EEC1ERKS5_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9AnimationEEELm0EEC2ERKS5_
+__ZNK7WebCore15PropertyWrapperIfE5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS5_S8_d
+__ZNK7WebCore11RenderStyle7opacityEv
+__ZN7WebCore11RenderStyle10setOpacityEf
+__ZN7WebCore11RenderLayer27repaintIncludingDescendantsEv
+__ZN7WebCore20TransformationMatrix5blendERKS0_d
+__ZNK7WebCore20TransformationMatrix9decomposeERNS0_14DecomposedTypeE
+__ZN7WebCoreL8v3LengthEPd
+__ZN7WebCoreL7v3ScaleEPdd
+__ZN7WebCoreL5v3DotEPKdS1_
+__ZN7WebCoreL9v3CombineEPKdS1_Pddd
+__ZN7WebCore20TransformationMatrix9recomposeERKNS0_14DecomposedTypeE
+__ZN7WebCore17KeyframeAnimation18overrideAnimationsEv
+__ZN7WebCore18CompositeAnimation26overrideImplicitAnimationsEi
+__ZN7WebCore17KeyframeAnimation16onAnimationStartEd
+__ZN7WebCore17KeyframeAnimation18sendAnimationEventERKNS_12AtomicStringEd
+__ZNK7WebCore17KeyframeAnimation26shouldSendEventForListenerENS_8Document12ListenerTypeE
+__ZN7WebCore26AnimationControllerPrivate18addEventToDispatchEN3WTF10PassRefPtrINS_7ElementEEERKNS_12AtomicStringERKNS_6StringEd
+__ZN3WTF6VectorIN7WebCore26AnimationControllerPrivate15EventToDispatchELm0EE4growEm
+__ZN3WTF6VectorIN7WebCore26AnimationControllerPrivate15EventToDispatchELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore26AnimationControllerPrivate15EventToDispatchELm0EE15reserveCapacityEm
+__ZNK7WebCore13AnimationBase10overriddenEv
+__ZN7WebCore17KeyframeAnimation14startAnimationEd
+__ZN7WebCore26AnimationControllerPrivate30addToStartTimeResponseWaitListEPNS_13AnimationBaseEb
+__ZN7WebCore13AnimationBase26goIntoEndingOrLoopingStateEv
+__ZNK7WebCore13AnimationBase18getTimeToNextEventERdRb
+__ZN7WebCore9FrameView11forceLayoutEb
+__ZNK7WebCore26Matrix3DTransformOperation16getOperationTypeEv
+__ZNK7WebCore26Matrix3DTransformOperation5applyERNS_20TransformationMatrixERKNS_7IntSizeE
+__ZN7WebCore26AnimationControllerPrivate34updateStyleIfNeededDispatcherFiredEPNS_5TimerIS0_EE
+__ZN7WebCore4Node28dispatchWebKitAnimationEventERKNS_12AtomicStringERKNS_6StringEd
+__ZN7WebCore20WebKitAnimationEventC1ERKNS_12AtomicStringERKNS_6StringEd
+__ZN7WebCore20WebKitAnimationEventC2ERKNS_12AtomicStringERKNS_6StringEd
+__ZNK7WebCore20WebKitAnimationEvent22isWebKitAnimationEventEv
+__ZN7WebCore22JSWebKitAnimationEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSWebKitAnimationEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_20WebKitAnimationEventEEE
+__ZN7WebCore22JSWebKitAnimationEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_20WebKitAnimationEventEEE
+__ZN7WebCore22JSWebKitAnimationEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore35jsWebKitAnimationEventAnimationNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20WebKitAnimationEvent13animationNameEv
+__ZN3WTF6VectorIN7WebCore26AnimationControllerPrivate15EventToDispatchELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN7WebCore26AnimationControllerPrivate15EventToDispatchELm0EE6shrinkEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EE6shrinkEm
+__ZNK7WebCore26Matrix3DTransformOperationeqERKNS_18TransformOperationE
+__ZNK7WebCore26Matrix3DTransformOperation10isSameTypeERKNS_18TransformOperationE
+__ZN7WebCore26Matrix3DTransformOperationD0Ev
+__ZNK7WebCore16StyleCachedImage5imageEPNS_12RenderObjectERKNS_7IntSizeE
+__ZN7WebCore15GraphicsContext14drawTiledImageEPNS_5ImageERKNS_7IntRectERKNS_8IntPointERKNS_7IntSizeENS_17CompositeOperatorE
+__ZN7WebCore5Image9drawTiledEPNS_15GraphicsContextERKNS_9FloatRectERKNS_10FloatPointERKNS_9FloatSizeENS_17CompositeOperatorE
+__ZN7WebCore20TransformationMatrix15scaleNonUniformEdd
+__ZNK7WebCore9FloatRect8containsERKS0_
+__ZNK7WebCore11HistoryItem5titleEv
+__ZN7WebCore24StringWrapperCFAllocatorL22deallocateOnMainThreadEPv
+__ZNK7WebCore24RotateTransformOperation5applyERNS_20TransformationMatrixERKNS_7IntSizeE
+__ZN7WebCore20TransformationMatrix8rotate3dEdddd
+__ZNK7WebCore13ResourceErrorcvP7NSErrorEv
+__ZN7WebCore13InlineTextBox10deleteLineEPNS_11RenderArenaE
+__ZN7WebCore10RenderText13removeTextBoxEPNS_13InlineTextBoxE
+__ZN7WebCore5TimerINS_12IconDatabaseEE5firedEv
+__ZN7WebCore12IconDatabase14syncTimerFiredEPNS_5TimerIS0_EE
+__ZN3WTF6VectorIN7WebCore12IconSnapshotELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore12IconSnapshotELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore12IconSnapshotELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIN7WebCore15PageURLSnapshotELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore15PageURLSnapshotELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore15PageURLSnapshotELm0EE15reserveCapacityEm
+__ZN7WebCore12IconDatabase30writeIconSnapshotToSQLDatabaseERKNS_12IconSnapshotE
+__ZN7WebCore12IconDatabase34getIconIDForIconURLFromSQLDatabaseERKNS_6StringE
+__ZN7WebCore15SQLiteStatement9bindInt64Eix
+__ZN7WebCore14SQLiteDatabase15lastInsertRowIDEv
+__ZN7WebCore15SQLiteStatement8bindBlobEiPKvi
+__ZN7WebCore12IconDatabase33setIconURLForPageURLInSQLDatabaseERKNS_6StringES3_
+__ZN7WebCore15SQLiteStatement9isExpiredEv
+__ZN7WebCore15SQLiteStatement14getColumnInt64Ei
+__ZN7WebCore12IconDatabase32setIconIDForPageURLInSQLDatabaseExRKNS_6StringE
+__ZN7WebCore12IconDatabase24checkForDanglingPageURLsEb
+__ZN7WebCore15SQLiteStatement23returnsAtLeastOneResultEv
+__ZN3WTF6VectorIN7WebCore15PageURLSnapshotELm0EE6shrinkEm
+__ZN3WTF6VectorIN7WebCore12IconSnapshotELm0EE6shrinkEm
+__ZN7WebCore12IconDatabase20pruneUnretainedIconsEv
+__ZNK3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS1_13PageURLRecordEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHa
+__ZN7WebCore17KeyframeAnimation14onAnimationEndEd
+__ZN7WebCore17KeyframeAnimation12endAnimationEb
+__ZN7WebCore13AnimationBase19setNeedsStyleRecalcEPNS_4NodeE
+__ZN7WebCore17KeyframeAnimation26resumeOverriddenAnimationsEv
+__ZN7WebCore18CompositeAnimation34resumeOverriddenImplicitAnimationsEi
+__ZN7WebCore17KeyframeAnimationD0Ev
+__ZN7WebCore12KeyframeListD1Ev
+__ZN7WebCore12KeyframeListD2Ev
+__ZN7WebCore13AnimationBaseD2Ev
+__ZN7WebCore26AnimationControllerPrivate32removeFromStyleAvailableWaitListEPNS_13AnimationBaseE
+__ZN7WebCore26AnimationControllerPrivate35removeFromStartTimeResponseWaitListEPNS_13AnimationBaseE
+__ZN3WTF6VectorIPN7WebCore16AtomicStringImplELm0EE6shrinkEm
+__ZN7WebCore24RotateTransformOperationD0Ev
+__ZN3WTF6VectorIPN7WebCore11RenderLayerELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIPN7WebCore11RenderLayerELm0EE6shrinkEm
+__ZN7WebCore11RenderVideo13paintReplacedERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore11MediaPlayer5paintEPNS_15GraphicsContextERKNS_7IntRectE
+__ZN7WebCore18MediaPlayerPrivate5paintEPNS_15GraphicsContextERKNS_7IntRectE
+__ZN7WebCore15GraphicsContext5scaleERKNS_9FloatSizeE
+__ZN7WebCore15GraphicsContext28setImageInterpolationQualityENS_20InterpolationQualityE
+__ZN7WebCore11RenderLayer19removeOnlyThisLayerEv
+__ZN7WebCore11RenderLayer11removeChildEPS0_
+__ZN7WebCore11RenderLayer28dirtyVisibleDescendantStatusEv
+__ZSt21__inplace_stable_sortIPPN7WebCore11RenderLayerEPFbS2_S2_EEvT_S6_T0_
+__ZN7WebCore12RenderObject19updateHitTestResultERNS_13HitTestResultERKNS_8IntPointE
+__ZN7WebCore11RenderImage8imageMapEv
+__ZNK7WebCore16HTMLImageElement6useMapEv
+__ZNK7WebCore8Document11getImageMapERKNS_6StringE
+-[DOMNode(DOMNodeExtensions) boundingBox]
+__ZN7WebCore12RenderObject23absoluteBoundingBoxRectEb
+__ZN7WebCore9RenderBox13absoluteRectsERN3WTF6VectorINS_7IntRectELm0EEEii
+-[DOMNode parentNode]
+__ZN7WebCore11RenderBlock13absoluteRectsERN3WTF6VectorINS_7IntRectELm0EEEii
+__Z4coreP11DOMDocument
+__ZN7WebCore25HistoryPropertyListWriterC2Ev
+__ZN7WebCore24BinaryPropertyListWriter17writePropertyListEv
+__ZN7WebCore28BinaryPropertyListSerializerC1ERNS_24BinaryPropertyListWriterE
+__ZN7WebCore28BinaryPropertyListSerializerC2ERNS_24BinaryPropertyListWriterE
+__ZN7WebCore22BinaryPropertyListPlanC1ERNS_24BinaryPropertyListWriterE
+__ZN7WebCore22BinaryPropertyListPlanC2ERNS_24BinaryPropertyListWriterE
+__ZN7WebCore25HistoryPropertyListWriter12writeObjectsERNS_30BinaryPropertyListObjectStreamE
+__ZN7WebCore22BinaryPropertyListPlan20writeDictionaryStartEv
+__ZN7WebCore22BinaryPropertyListPlan11writeStringERKNS_6StringE
+__ZN3WTF7HashMapIN7WebCore6StringEmNS1_10StringHashENS_10HashTraitsIS2_EENS4_ImEEE3addERKS2_RKm
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_mENS_18PairFirstExtractorIS4_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTra
+__ZN7WebCore22BinaryPropertyListPlan17writeStringObjectERKNS_6StringE
+__ZN7WebCoreL25markerPlusLengthByteCountEm
+__ZN7WebCore22BinaryPropertyListPlan12writeIntegerEi
+__ZN3WTF7HashMapIimNS_7IntHashIjEENS_10HashTraitsIiEENS3_ImEEE3addERKiRKm
+__ZN3WTF9HashTableIiSt4pairIimENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIiEENS8_ImEEEES9_
+__ZN7WebCore22BinaryPropertyListPlan15writeArrayStartEv
+__ZN7WebCore25HistoryPropertyListWriter16writeHistoryItemERNS_30BinaryPropertyListObjectStreamEPNS_11HistoryItemE
+__ZNK7WebCore11HistoryItem14alternateTitleEv
+__ZNK7WebCore11HistoryItem12redirectURLsEv
+__ZN7WebCore22BinaryPropertyListPlan17writeUniqueStringERKNS_6StringE
+__ZN7WebCore22BinaryPropertyListPlan17writeUniqueStringEPKc
+__ZN7WebCore22BinaryPropertyListPlan17writeStringObjectEPKc
+__ZN7WebCore22BinaryPropertyListPlan17writeIntegerArrayEPKim
+__ZN3WTF7HashMapIN7WebCore12IntegerArrayEmNS1_16IntegerArrayHashENS1_22IntegerArrayHashTraitsENS_10HashTraitsImEEE3addERKS2_RKm
+__ZN3WTF9HashTableIN7WebCore12IntegerArrayESt4pairIS2_mENS_18PairFirstExtractorIS4_EENS1_16IntegerArrayHashENS_14PairHashTraits
+__ZN7WebCore16IntegerArrayHash4hashERKNS_12IntegerArrayE
+__ZN7WebCore22BinaryPropertyListPlan16writeArrayObjectEm
+__ZN7WebCore22BinaryPropertyListPlan18writeDictionaryEndEm
+__ZN7WebCore22BinaryPropertyListPlan21writeDictionaryObjectEm
+__ZN7WebCore16IntegerArrayHash5equalERKNS_12IntegerArrayES3_
+__ZN7WebCore22BinaryPropertyListPlan16writeBooleanTrueEv
+__ZN7WebCore22BinaryPropertyListPlan13writeArrayEndEm
+__ZN7WebCoreL11bytesNeededEm
+__ZN7WebCore25HistoryPropertyListWriter6bufferEm
+__ZN7WebCore28BinaryPropertyListSerializer20writeDictionaryStartEv
+__ZN7WebCore28BinaryPropertyListSerializer11writeStringERKNS_6StringE
+__ZNK7WebCore22BinaryPropertyListPlan21stringObjectReferenceERKNS_6StringE
+__ZNK3WTF7HashMapIN7WebCore6StringEmNS1_10StringHashENS_10HashTraitsIS2_EENS4_ImEEE3getERKS2_
+__ZN7WebCore28BinaryPropertyListSerializer18appendStringObjectERKNS_6StringE
+__ZN7WebCore28BinaryPropertyListSerializer11startObjectEv
+__ZN7WebCore28BinaryPropertyListSerializer13appendIntegerEm
+__ZN7WebCore28BinaryPropertyListSerializer27addAggregateObjectReferenceEm
+__ZN7WebCore28BinaryPropertyListSerializer12writeIntegerEi
+__ZNK7WebCore22BinaryPropertyListPlan22integerObjectReferenceEi
+__ZNK3WTF7HashMapIimNS_7IntHashIjEENS_10HashTraitsIiEENS3_ImEEE3getERKi
+__ZN7WebCore28BinaryPropertyListSerializer19appendIntegerObjectEi
+__ZN7WebCore28BinaryPropertyListSerializer15writeArrayStartEv
+__ZN7WebCore28BinaryPropertyListSerializer17writeUniqueStringERKNS_6StringE
+__ZN7WebCore28BinaryPropertyListSerializer17writeUniqueStringEPKc
+__ZN7WebCore28BinaryPropertyListSerializer18appendStringObjectEPKc
+__ZN7WebCore28BinaryPropertyListSerializer17writeIntegerArrayEPKim
+__ZNK7WebCore22BinaryPropertyListPlan27integerArrayObjectReferenceEPKim
+__ZNK3WTF7HashMapIN7WebCore12IntegerArrayEmNS1_16IntegerArrayHashENS1_22IntegerArrayHashTraitsENS_10HashTraitsImEEE3getERKS2_
+__ZN7WebCore28BinaryPropertyListSerializer24appendIntegerArrayObjectEPKim
+__ZN7WebCore28BinaryPropertyListSerializer21appendObjectReferenceEm
+__ZN7WebCore28BinaryPropertyListSerializer18writeDictionaryEndEm
+__ZN7WebCoreL19moveAndReverseBytesEPhPKhm
+__ZN7WebCore28BinaryPropertyListSerializer16writeBooleanTrueEv
+__ZNK7WebCore22BinaryPropertyListPlan26booleanTrueObjectReferenceEv
+__ZN7WebCore28BinaryPropertyListSerializer13writeArrayEndEm
+__ZN7WebCore25HistoryPropertyListWriter11releaseDataEv
+__ZN7WebCore13InlineTextBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
+__ZN7WebCore12RenderInline19updateHitTestResultERNS_13HitTestResultERKNS_8IntPointE
+__ZN7WebCore13HitTestResult13setURLElementEPNS_7ElementE
+__ZNK7WebCore12RenderObject19mapLocalToContainerEPNS_20RenderBoxModelObjectEbbRNS_14TransformStateE
+__ZN7WebCore12RenderInline13absoluteRectsERN3WTF6VectorINS_7IntRectELm0EEEii
+-[WebCoreMovieObserver didEnd:]
+__ZN7WebCore18MediaPlayerPrivate6didEndEv
+__ZNK7WebCore16HTMLMediaElement4loopEv
+__ZN7WebCore10TimeRanges3addEff
+__ZN3WTF6VectorIN7WebCore10TimeRanges5RangeELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIN7WebCore10TimeRanges5RangeELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore10TimeRanges5RangeELm0EE15reserveCapacityEm
+-[DOMHTMLElement idName]
+__ZNK7WebCore11HTMLElement2idEv
+-[DOMHTMLElement className]
+__ZNK7WebCore11HTMLElement9classNameEv
+-[DOMElement tagName]
+__ZNK7WebCore11HTMLElement8nodeNameEv
+__ZNK7WebCore6String5upperEv
+__ZN7WebCore10StringImpl5upperEv
+-[DOMNode firstChild]
+-[DOMNode nextSibling]
+-[DOMNode previousSibling]
+__ZN7WebCore14JSHTMLDocument3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore10JSDocument3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore21setJSDocumentLocationEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10JSDocument11setLocationEPN3JSC9ExecStateENS1_7JSValueE
+__ZNK7WebCore16ScriptController21processingUserGestureEv
+__ZNK7WebCore16ScriptController26processingUserGestureEventEv
+__ZNK7WebCore16ScriptController28isJavaScriptAnchorNavigationEv
+__ZNK7WebCore16ScriptController30anyPageIsProcessingUserGestureEv
+__ZN7WebCore11FrameLoader22scheduleLocationChangeERKNS_6StringES3_bbb
+__ZN7WebCore11FrameLoader19scheduleRedirectionEPNS_20ScheduledRedirectionE
+__ZN7WebCore11FrameLoader21startRedirectionTimerEv
+__ZNK7WebCore9TimerBase16nextFireIntervalEv
+__ZN7WebCore11FrameLoader16clientRedirectedERKNS_4KURLEddb
__ZN7WebCore5TimerINS_11FrameLoaderEE5firedEv
__ZN7WebCore11FrameLoader21redirectionTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore11FrameLoader14changeLocationERKNS_6StringES3_bb
-__ZN7WebCore11FrameLoader14changeLocationERKNS_4KURLERKNS_6StringEbb
+__ZN7WebCore11FrameLoader14changeLocationERKNS_4KURLERKNS_6StringEbbbb
__ZN7WebCore11FrameLoader22executeIfJavaScriptURLERKNS_4KURLEbb
-__ZN7WebCore11FrameLoader11urlSelectedERKNS_15ResourceRequestERKNS_6StringEPNS_5EventEbb
-__ZN7WebCore11FrameLoader11urlSelectedERKNS_16FrameLoadRequestEPNS_5EventEbb
-__ZN7WebCore14DocumentLoader19setIsClientRedirectEb
-__ZN7WebCore11HistoryItem6setURLERKNS_4KURLE
-__ZN7WebCore9PageCache6removeEPNS_11HistoryItemE
-__ZN7WebCore11HistoryItem12setURLStringERKNS_6StringE
-__ZN7WebCore11HistoryItem18clearDocumentStateEv
+__ZN7WebCore11FrameLoader11urlSelectedERKNS_15ResourceRequestERKNS_6StringEN3WTF10PassRefPtrINS_5EventEEEbbb
+__ZN7WebCore11FrameLoader16loadFrameRequestERKNS_16FrameLoadRequestEbbN3WTF10PassRefPtrINS_5EventEEENS5_INS_9FormStateEEE
+__ZN7WebCore11FrameLoader7loadURLERKNS_4KURLERKNS_6StringES6_bNS_13FrameLoadTypeEN3WTF10PassRefPtrINS_5EventEEENS9_INS_9FormSta
+__ZN7WebCore14SecurityOrigin16createFromStringERKNS_6StringE
+__ZN7WebCore11FrameLoader22findFrameForNavigationERKNS_12AtomicStringE
+__ZNK7WebCore9FrameTree4findERKNS_12AtomicStringE
+__ZNK7WebCore11FrameLoader21shouldAllowNavigationEPNS_5FrameE
+__ZN7WebCore16NavigationActionC1ERKNS_4KURLENS_13FrameLoadTypeEbN3WTF10PassRefPtrINS_5EventEEE
+__ZN7WebCore16NavigationActionC2ERKNS_4KURLENS_13FrameLoadTypeEbN3WTF10PassRefPtrINS_5EventEEE
+__ZNK7WebCore11HistoryItem3urlEv
+__ZNK7WebCore11HistoryItem11originalURLEv
+__ZN7WebCore11FrameLoader24loadWithNavigationActionERKNS_15ResourceRequestERKNS_16NavigationActionEbNS_13FrameLoadTypeEN3WTF10P
+__ZN7WebCore9DOMWindow25dispatchBeforeUnloadEventEPN3WTF6VectorINS1_6RefPtrINS_23RegisteredEventListenerEEELm0EEE
+__ZN7WebCore17BeforeUnloadEventC1Ev
+__ZN7WebCore17BeforeUnloadEventC2Ev
+__ZN7WebCore17BeforeUnloadEventD0Ev
+__ZN7WebCore18MainResourceLoader15handleEmptyLoadERKNS_4KURLEb
+__ZN7WebCore11FrameLoader29generatedMIMETypeForURLSchemeERKNS_6StringE
+__ZNK7WebCore8Document17formElementsStateEv
+__ZN7WebCore11HistoryItem16setDocumentStateERKN3WTF6VectorINS_6StringELm0EEE
+__ZN3WTF6VectorIN7WebCore12AtomicStringELm8EE6shrinkEm
+__ZN7WebCore15JSEventListenerD0Ev
+__ZN7WebCore4Node31removeAllEventListenersSlowCaseEv
+__ZN7WebCore11FrameLoader36saveScrollPositionAndViewStateToItemEPNS_11HistoryItemE
+__ZN7WebCore11HistoryItem14setScrollPointERKNS_8IntPointE
+__ZN7WebCore11HistoryItem14addRedirectURLERKNS_6StringE
+__ZN7WebCore13AXObjectCacheD1Ev
+__ZN7WebCore13AXObjectCacheD2Ev
+__ZN3WTF9HashTableIjjNS_17IdentityExtractorIjEENS_7IntHashIjEENS_10HashTraitsIjEES6_E15deallocateTableEPji
+__ZN7WebCore16HTMLMediaElement26documentWillBecomeInactiveEv
+__ZN7WebCore16HTMLMediaElement17userCancelledLoadEv
+__ZN7WebCore16HTMLMediaElement17setPausedInternalEb
+__ZL62QTVideoRendererWebKitOnlyNewImageAvailableNotificationFunctionv
+__ZN7WebCore10RenderText7destroyEv
+__ZN7WebCore12RenderObject15virtualChildrenEv
+__ZN7WebCore26AnimationControllerPrivate5clearEPNS_12RenderObjectE
+__ZN7WebCore16StyleCachedImage12removeClientEPNS_12RenderObjectE
+__ZN7WebCore10RenderTextD0Ev
+__ZN7WebCore19StyleGeneratedImage12removeClientEPNS_12RenderObjectE
+__ZNK3WTF9HashTableIN7WebCore7IntSizeESt4pairIS2_jENS_18PairFirstExtractorIS4_EENS_7IntHashIS2_EENS_14PairHashTraitsINS_10HashT
+__ZN3WTF9HashTableIN7WebCore7IntSizeESt4pairIS2_NS_6RefPtrINS1_5ImageEEEENS_18PairFirstExtractorIS7_EENS_7IntHashIS2_EENS_14Pai
+__ZN7WebCore14GeneratedImageD0Ev
+__ZN7WebCore8GradientD0Ev
+__ZN3WTF6VectorIN7WebCore8Gradient9ColorStopELm0EE6shrinkEm
+__ZN7WebCore5ImageD2Ev
+__ZN7WebCore13RenderReplicaD0Ev
+__ZN7WebCore18CompositeAnimation13clearRendererEv
+__ZN7WebCore18CompositeAnimationD1Ev
+__ZN7WebCore18CompositeAnimationD2Ev
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_NS_6RefPtrINS1_17KeyframeAnimationEEEENS_18PairFirstExtractorIS8_EEN
+__ZN7WebCore9RenderBox45removeFloatingOrPositionedChildFromBlockListsEv
+__ZN3WTF11ListHashSetIPN7WebCore9RenderBoxENS_7PtrHashIS3_EEE14deleteAllNodesEv
+__ZN7WebCore16HTMLVideoElement6detachEv
+__ZN7WebCore11RenderMedia7destroyEv
+__ZN7WebCore11RenderMedia15virtualChildrenEv
+__ZN7WebCore11RenderVideoD0Ev
+__ZN7WebCore11RenderMediaD2Ev
+__ZN7WebCore14RenderReplacedD2Ev
+__ZN7WebCore11RenderImageD0Ev
+__ZN7WebCore9FrameView18unscheduleRelayoutEv
+__ZN7WebCore9FrameViewD0Ev
+__ZN7WebCore9FrameView15resetScrollbarsEv
+__ZN7WebCore10ScrollView25setHasHorizontalScrollbarEb
+__ZN7WebCore10ScrollView23setHasVerticalScrollbarEb
+__ZN7WebCore10ScrollViewD2Ev
+__ZN3WTF9HashTableIPN7WebCore6WidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTable
+__ZN7WebCore6WidgetD2Ev
__ZN7WebCore11FrameLoader33clientRedirectCancelledOrFinishedEb
-__ZN7WebCore8Document19hoveredNodeDetachedEPNS_4NodeE
-__ZN7WebCore12EventHandler24scheduleHoverStateUpdateEv
-__ZN7WebCore5TimerINS_12EventHandlerEE5firedEv
-__ZN7WebCore12EventHandler15hoverTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore22centerTruncateToBufferERKNS_6StringEjjPt
-__ZN7WebCore11isTextBreakEPNS_17TextBreakIteratorEi
-__ZN7WebCore17buttonConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLButtonElementC2EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore17HTMLButtonElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore13HTMLBRElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore13HTMLBRElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore10HTMLParser28tableSectionCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore23tableSectionConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore19textareaConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore19HTMLTextAreaElementC2EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore19HTMLTextAreaElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore41jsElementPrototypeFunctionRemoveAttributeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Element15removeAttributeERKNS_6StringERi
-__ZN7WebCore12NamedAttrMap15removeNamedItemERKNS_6StringERi
-__ZN7WebCore18JSHTMLTableElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore25JSHTMLTableSectionElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore21JSHTMLTableRowElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore15createBRWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore24JSHTMLBRElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSHTMLBRElementC1EPN3KJS8JSObjectEPNS_13HTMLBRElementE
-__ZN7WebCore15JSHTMLBRElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore15JSHTMLBRElement9classInfoEv
-__ZN7WebCore15JSHTMLBRElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore32jsNodePrototypeFunctionCloneNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore11HTMLElement9cloneNodeEb
-__ZN7WebCore12NamedAttrMapaSERKS0_
-__ZNK7WebCore15MappedAttribute5cloneEb
-__ZN7WebCore13StyledElement26copyNonAttributePropertiesEPKNS_7ElementE
-__ZN7WebCore13ContainerNode15cloneChildNodesEPS0_
-__ZN7WebCore26CSSMutableStyleDeclarationaSERKS0_
-__ZN7WebCore4Text9cloneNodeEb
-__ZN7WebCore12NamedAttrMap15removeNamedItemERKNS_13QualifiedNameERi
-__ZN7WebCore12NamedAttrMap15removeAttributeERKNS_13QualifiedNameE
-__ZN7WebCore7Element24dispatchAttrRemovalEventEPNS_9AttributeE
-__ZN7WebCore35jsNodePrototypeFunctionInsertBeforeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore6JSNode12insertBeforeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore19DeprecatedValueListINS_11CSSPropertyEE8copyNodeEPNS_27DeprecatedValueListImplNodeE
-__ZN7WebCore12RenderInline9splitFlowEPNS_12RenderObjectEPNS_11RenderBlockES2_PNS_10RenderFlowE
-__ZN7WebCore11RenderBlock17setChildrenInlineEb
-__ZN7WebCore12RenderInline12splitInlinesEPNS_11RenderBlockES2_S2_PNS_12RenderObjectEPNS_10RenderFlowE
-__ZN7WebCore12RenderInline11cloneInlineEPNS_10RenderFlowE
-__ZN7WebCore14mapConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16createMapWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore25JSHTMLMapElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSHTMLMapElementC1EPN3KJS8JSObjectEPNS_14HTMLMapElementE
-__ZNK7WebCore16JSHTMLMapElement9classInfoEv
-__ZN7WebCore16JSHTMLMapElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS16JSXMLHttpRequest4markEv
-__ZNK7WebCore14XMLHttpRequest26onReadyStateChangeListenerEv
-__ZNK7WebCore14XMLHttpRequest14onLoadListenerEv
-__ZN7WebCore26JSUnprotectedEventListener4markEv
-__ZN7WebCore14CachedResource11setEncodingERKNS_6StringE
-__ZN7WebCore11BitmapImageD1Ev
-__ZN7WebCore11ImageSourceD2Ev
-__ZN7WebCore11ImageSource5clearEv
-__ZN7WebCore11JSDOMParser14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore20JSDOMParserPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore22JSDOMParserConstructor19implementsConstructEv
-__ZN7WebCore22JSDOMParserConstructor9constructEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_9DOMParserE
-__ZN7WebCore11JSDOMParserC1EPN3KJS8JSObjectEPNS_9DOMParserE
-__ZN7WebCore11JSDOMParser18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore20JSDOMParserPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore43jsDOMParserPrototypeFunctionParseFromStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore11JSDOMParser9classInfoEv
-__ZN7WebCore9DOMParser15parseFromStringERKNS_6StringES3_
-__ZN7WebCore5Image12supportsTypeERKNS_6StringE
-__ZN7WebCore16MIMETypeRegistry32isSupportedImageResourceMIMETypeERKNS_6StringE
-__ZN7WebCore15PluginInfoStore16supportsMIMETypeERKNS_6StringE
-__ZN7WebCore17DOMImplementation14isTextMIMETypeERKNS_6StringE
-__ZNK7WebCore7Element8nodeNameEv
-__ZN3KJS17staticValueGetterIN7WebCore12JSMouseEventEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore12JSMouseEvent16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore7Element10scrollLeftEv
-__ZNK7WebCore12RenderObject10scrollLeftEv
-__ZN7WebCore7Element9scrollTopEv
-__ZNK7WebCore12RenderObject9scrollTopEv
-__ZN7WebCore6CursorC2EPNS_5ImageERKNS_8IntPointE
-__ZN7WebCore18createCustomCursorEPNS_5ImageERKNS_8IntPointE
-__ZNK7WebCore8IntPointcv8_NSPointEv
-__ZNK7WebCore4Node11isFocusableEv
-__ZNK7WebCore4Node16isMouseFocusableEv
-__ZN7WebCore21JSMouseEventPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore18JSUIEventPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore39jsEventPrototypeFunctionStopPropagationEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore12JSMouseEvent9classInfoEv
-__ZN7WebCore9FrameData5clearEv
-__ZN7WebCore14RenderThemeMac13paintCheckboxEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZNK7WebCore14XMLHttpRequest16getRequestHeaderERKNS_6StringE
-__ZN7WebCore8FormDataC2ERKNS_7CStringE
-__ZN7WebCore19ResourceRequestBase11setHTTPBodyEN3WTF10PassRefPtrINS_8FormDataEEE
-__ZN7WebCore11setHTTPBodyEP19NSMutableURLRequestN3WTF10PassRefPtrINS_8FormDataEEE
-__ZN7WebCore8FormDataC2EPKvm
-__ZN7WebCore14HTMLMapElement13mapMouseEventEiiRKNS_7IntSizeERNS_13HitTestResultE
-__ZN7WebCore15HTMLAreaElement13mapMouseEventEiiRKNS_7IntSizeERNS_13HitTestResultE
-__ZNK7WebCore15HTMLAreaElement9getRegionERKNS_7IntSizeE
-__ZN7WebCore4Path6moveToERKNS_10FloatPointE
-__ZN7WebCore4Path9addLineToERKNS_10FloatPointE
-__ZN7WebCore4Path12closeSubpathEv
-__ZN7WebCore4PathC2ERKS0_
-__ZN7WebCore4PathaSERKS0_
-__ZNK7WebCore4Path8containsERKNS_10FloatPointENS_8WindRuleE
-__ZNK7WebCore4Path12boundingRectEv
-__ZN7WebCore34copyClosingSubpathsApplierFunctionEPvPK13CGPathElement
-__ZNK7WebCore10FloatPointcv7CGPointEv
-__ZN7WebCore7Element14createRareDataEv
-__ZN7WebCore11rareDataMapEv
-__ZN3WTF7HashMapIPKN7WebCore7ElementEPNS1_15ElementRareDataENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3setERKS4_RKS6_
-__ZN3KJS17staticValueGetterIN7WebCore17JSHTMLBodyElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSHTMLBodyElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore15HTMLBodyElement10scrollLeftEv
-__ZNK7WebCore15HTMLBodyElement9scrollTopEv
-__ZNK7WebCore15HTMLAreaElement6targetEv
-__ZNK7WebCore12RenderInline10offsetLeftEv
-__ZNK7WebCore12RenderInline9offsetTopEv
-__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EEC2ERKS4_
-__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EE6shrinkEm
-__ZN7WebCore39jsHTMLInputElementPrototypeFunctionBlurEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Element4blurEv
-__ZNK7WebCore16HTMLImageElement17canStartSelectionEv
-__ZN7WebCore38jsEventPrototypeFunctionPreventDefaultEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12EventHandler12mouseDraggedEP7NSEvent
-__ZN7WebCore12EventHandler27eventLoopHandleMouseDraggedERKNS_28MouseEventWithHitTestResultsE
-__ZNK7WebCore16HTMLImageElement5widthEb
-__ZNK7WebCore16HTMLImageElement6heightEb
-__ZN3WTF6VectorIN7WebCore9FrameDataELm0EE6shrinkEm
-__ZN7WebCore15rareDataFromMapEPKNS_7ElementE
-__ZN7WebCore15ElementRareData18resetComputedStyleEPNS_7ElementE
-__ZSt21__inplace_stable_sortIPPN7WebCore11RenderLayerEPFbS2_S2_EEvT_S6_T0_
-__ZN3KJS9MimeTypes18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS17staticValueGetterINS_9MimeTypesEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS9MimeTypes16getValuePropertyEPNS_9ExecStateEi
-__ZNK7WebCore9RenderBox15availableHeightEv
-__ZNK7WebCore9RenderBox20availableHeightUsingERKNS_6LengthE
-__ZN7WebCore9RenderBox20calcPercentageHeightERKNS_6LengthE
-__ZN7WebCore18createEmbedWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore27JSHTMLEmbedElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLEmbedElementC1EPN3KJS8JSObjectEPNS_16HTMLEmbedElementE
-__ZN7WebCore18JSHTMLEmbedElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore18JSHTMLEmbedElement18canGetItemsForNameEPN3KJS9ExecStateEPNS_16HTMLEmbedElementERKNS1_10IdentifierE
-__ZN7WebCore18JSHTMLEmbedElement24customGetOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore37runtimeObjectCustomGetOwnPropertySlotEPN3KJS9ExecStateERKNS0_10IdentifierERNS0_12PropertySlotEPNS_13JSHTMLElementEPNS_11HTMLElementE
-__ZN7WebCore16getRuntimeObjectEPN3KJS9ExecStateEPNS_4NodeE
-__ZNK7WebCore16HTMLEmbedElement11getInstanceEv
-__ZN7WebCore5Frame29createScriptInstanceForWidgetEPNS_6WidgetE
-__Z16createRootObjectPv
-__ZN7WebCore5Frame16createRootObjectEPvPN3KJS14JSGlobalObjectE
-__ZN3WTF7HashMapIPvNS_6RefPtrIN3KJS8Bindings10RootObjectEEENS_7PtrHashIS1_EENS_10HashTraitsIS1_EENS9_IS6_EEE3setERKS1_RKS6_
-__ZN7WebCore27JSHTMLEmbedElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore18JSHTMLEmbedElement9classInfoEv
-__ZN7WebCore12EventHandler27handleMouseDoubleClickEventERKNS_18PlatformMouseEventE
-__ZN7WebCore27runtimeObjectPropertyGetterEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_10IdentifierERKNS0_12PropertySlotE
-__ZN7WebCore18JSHTMLEmbedElement10nameGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore19runtimeObjectGetterEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_10IdentifierERKNS0_12PropertySlotE
-__ZN7WebCore17HTMLPlugInElement19defaultEventHandlerEPNS_5EventE
-__ZN7WebCore6Widget11handleEventEPNS_5EventE
-__ZN7WebCore12EventHandler10wheelEventEP7NSEvent
-__ZN7WebCore18PlatformWheelEventC2EP7NSEvent
-__ZN7WebCore12EventHandler16handleWheelEventERNS_18PlatformWheelEventE
-__ZN7WebCore12EventHandler22passWheelEventToWidgetERNS_18PlatformWheelEventEPNS_6WidgetE
-__ZN7WebCore15EventTargetNode18dispatchWheelEventERNS_18PlatformWheelEventE
-__ZN7WebCore10WheelEventC2EffPNS_9DOMWindowEiiiibbbb
-__ZNK7WebCore10WheelEvent12isWheelEventEv
-__ZN7WebCore21JSWheelEventPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore12JSWheelEventC1EPN3KJS8JSObjectEPNS_10WheelEventE
-__ZN7WebCore12JSWheelEvent18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore12JSWheelEvent9classInfoEv
-__ZN7WebCore12RenderObject6scrollENS_15ScrollDirectionENS_17ScrollGranularityEf
-__ZN7WebCore11RenderLayer6scrollENS_15ScrollDirectionENS_17ScrollGranularityEf
-__ZN7WebCore10ScrollView10wheelEventERNS_18PlatformWheelEventE
-__ZN7WebCore24JSKeyboardEventPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore15JSKeyboardEvent9classInfoEv
-__ZN7WebCore12EventHandler26passMouseDownEventToWidgetEPNS_6WidgetE
-__ZN7WebCore18lastEventIsMouseUpEv
-__ZN7WebCore18findViewInSubviewsEP6NSViewS1_
-__ZN7WebCore21HTMLFrameOwnerElement10willRemoveEv
-__ZN7WebCore16HTMLEmbedElement19removedFromDocumentEv
-__ZNK7WebCore11RenderTheme13supportsHoverEPKNS_11RenderStyleE
-__ZN7WebCore17RenderTextControl11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZNK7WebCore19HTMLTextAreaElement9saveStateERNS_6StringE
-__ZNK7WebCore19HTMLTextAreaElement5valueEv
-__ZNK7WebCore19HTMLTextAreaElement11updateValueEv
-__ZNK7WebCore19HTMLTextAreaElement4typeEv
-__ZN7WebCore11JSDOMWindow14deletePropertyEPN3KJS9ExecStateERKNS1_10IdentifierE
-__ZN7WebCore11FrameLoader16detachFromParentEv
-__ZN7WebCore19InspectorController23frameDetachedFromParentEPNS_5FrameE
-__ZN7WebCore9FrameTree11removeChildEPNS_5FrameE
-__ZN7WebCore5Frame13pageDestroyedEv
-__ZN3KJS6Window15disconnectFrameEv
-__ZN7WebCore11FrameLoader22scheduleCheckCompletedEv
--[WebCoreFrameBridge close]
--[WebCoreFrameBridge clearFrame]
--[WebCoreFrameBridge dealloc]
-__ZN7WebCore11FrameLoader14cancelAndClearEv
-__ZN7WebCore5Frame22disconnectOwnerElementEv
-__ZN7WebCore9DOMWindow15disconnectFrameEv
-__ZN7WebCore12FramePrivateD2Ev
-__ZN7WebCore8KJSProxyD2Ev
-__ZN3KJS12ProtectedPtrIN7WebCore11JSDOMWindowEED1Ev
-__ZN7WebCore11FrameLoaderD2Ev
-__ZN7WebCore11FrameLoader9setOpenerEPNS_5FrameE
--[DOMAbstractView dealloc]
-__ZN7WebCore15removeJSWrapperEPN3KJS8JSObjectE
-__ZN7WebCore19AnimationControllerD1Ev
-__ZN7WebCore26AnimationControllerPrivateD1Ev
-__ZN3WTF20deleteAllPairSecondsIPN7WebCore26CompositeImplicitAnimationEKNS_7HashMapIPNS1_12RenderObjectES3_NS_7PtrHashIS6_EENS_10HashTraitsIS6_EENS9_IS3_EEEEEEvRT0_
-__ZN7WebCore12EventHandlerD2Ev
-__ZN7WebCore6EditorD2Ev
-__ZN7WebCore9FrameTreeD2Ev
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11EditCommandEEELm0EE6shrinkEm
-__ZN7WebCore11EditCommandD0Ev
-__ZN7WebCore8Document10setIconURLERKNS_6StringES3_
-__ZN7WebCore31JSHTMLTableCellElementPrototypeD0Ev
-__ZN7WebCore25JSHTMLMapElementPrototypeD0Ev
-__ZN3KJS25JSXMLHttpRequestPrototypeD0Ev
-__ZN7WebCore21JSWheelEventPrototypeD0Ev
-__ZN7WebCore27JSHTMLStyleElementPrototypeD0Ev
-__ZN7WebCore26JSHTMLHtmlElementPrototypeD0Ev
-__ZN7WebCore24JSHTMLBRElementPrototypeD0Ev
-__ZN7WebCore17HTMLIFrameElementD1Ev
-__ZN7WebCore17HTMLSelectElementD1Ev
-__ZN3WTF6VectorIPN7WebCore16HTMLImageElementELm0EE6shrinkEm
-__ZN3WTF6VectorIPN7WebCore11HTMLElementELm0EE6shrinkEm
-__ZN7WebCore17HTMLOptionElementD1Ev
-__ZN7WebCore5Cache18pruneDeadResourcesEv
-__ZNK7WebCore5Cache12deadCapacityEv
-__ZN7WebCore5Cache18pruneLiveResourcesEv
-__ZNK7WebCore5Cache12liveCapacityEv
-__ZN7WebCore16CSSStyleSelector23mapBackgroundAttachmentEPNS_15BackgroundLayerEPNS_8CSSValueE
-__ZN7WebCore8Document25registerForCacheCallbacksEPNS_7ElementE
-__ZN3WTF7HashSetIPN7WebCore7ElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZNK7WebCore4KURL3refEv
-__ZN3KJS17staticValueGetterIN7WebCore14JSHTMLDocumentEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore14JSHTMLDocument16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore14JSHTMLDocument3allEPN3KJS9ExecStateE
-__ZN7WebCore8Document3allEv
-__ZNK7WebCore19JSHTMLAllCollection9toBooleanEPN3KJS9ExecStateE
-__ZN7WebCore15GraphicsContext8drawLineERKNS_8IntPointES3_
-__ZNK7WebCore26NetscapePlugInStreamLoader6isDoneEv
-__ZN7WebCore26NetscapePlugInStreamLoader9didCancelERKNS_13ResourceErrorE
-__ZN7WebCore9FrameView14setMarginWidthEi
-__ZN7WebCore9FrameView15setMarginHeightEi
--[WebCoreFrameBridge stringByEvaluatingJavaScriptFromString:forceUserGesture:]
-__ZN7WebCore11RenderLayer19transparentAncestorEv
-__ZN7WebCore9FrameView18setUseSlowRepaintsEv
-__ZN7WebCore11FrameLoader13frameDetachedEv
-__ZN7WebCore17HTMLIFrameElement19removedFromDocumentEv
-__ZN7WebCore20HTMLFrameElementBase19removedFromDocumentEv
-__ZN7WebCore11FrameLoader24checkCompletedTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore11ImageSource22frameIsCompleteAtIndexEm
-__ZN7WebCore11BitmapImage20frameDurationAtIndexEm
-__ZNK7WebCore6Screen10colorDepthEv
-__ZN7WebCore15defaultLanguageEv
-__ZN7WebCore11RenderTable11splitColumnEii
-__ZN7WebCore18RenderTableSection11splitColumnEii
-__ZN7WebCore5TimerINS_11BitmapImageEE5firedEv
-__ZN7WebCore11BitmapImage16advanceAnimationEPNS_5TimerIS0_EE
-__ZThn256_N7WebCore11CachedImage20shouldPauseAnimationEPKNS_5ImageE
-__ZN7WebCore11CachedImage20shouldPauseAnimationEPKNS_5ImageE
-__ZN7WebCore20CachedResourceClient15willRenderImageEPNS_11CachedImageE
-__ZN7WebCore12RenderObject15willRenderImageEPNS_11CachedImageE
-__ZNK7WebCore10ScrollView8inWindowEv
-__ZThn256_N7WebCore11CachedImage17animationAdvancedEPKNS_5ImageE
-__ZN7WebCore11CachedImage17animationAdvancedEPKNS_5ImageE
-__ZNK7WebCore16HTMLImageElement14isURLAttributeEPNS_9AttributeE
-__ZN7WebCore27RenderTextControlInnerBlock11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
--[WebCoreFrameBridge sendScrollEvent]
-__ZN7WebCore5Frame15sendScrollEventEv
-__ZN7WebCore9FrameView20setWasScrolledByUserEb
-__ZN7WebCore14ResourceLoader15willSendRequestEPNS_14ResourceHandleERNS_15ResourceRequestERKNS_16ResourceResponseE
-__ZN7WebCore23SubresourceLoaderClient15willSendRequestEPNS_17SubresourceLoaderERNS_15ResourceRequestERKNS_16ResourceResponseE
-__ZN7WebCore14RenderMenuList11removeChildEPNS_12RenderObjectE
-__ZN3WTF6VectorIPN7WebCore15RenderTableCellELm4EE6shrinkEm
-__ZN7WebCore11FrameLoader23haveToldClientAboutLoadERKNS_6StringE
-__ZN7WebCore16HTMLTitleElement19removedFromDocumentEv
-__ZN7WebCore8Document11removeTitleEPNS_7ElementE
-__ZN3WTF6VectorIN7WebCore5Cache7LRUListELm32EE6resizeEm
-__ZN7WebCore8Document27unregisterForCacheCallbacksEPNS_7ElementE
-__ZN7WebCore11hashForFontERKNS_6StringEbb
-__ZN3WTF7HashMapIN7WebCore6StringENS_6RefPtrINS1_20CSSSegmentedFontFaceEEENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3setERKS2_RKS5_
-__ZN3WTF6VectorIPKN7WebCore8FontDataELm1EE14expandCapacityEmPKS4_
-__ZN3WTF6VectorIPKN7WebCore8FontDataELm1EE14expandCapacityEm
-__ZN3WTF6VectorIPKN7WebCore8FontDataELm1EE15reserveCapacityEm
-__ZN7WebCore9FontCache26getSimilarFontPlatformDataERKNS_4FontE
-__ZNK7WebCore8Document12lastModifiedEv
-__ZNK7WebCore15HTMLBodyElement12scrollHeightEv
-__ZNK7WebCore6Screen11availHeightEv
-__ZNK7WebCore9DOMWindow4nameEv
-__ZN7WebCore18MainResourceLoader9didCancelERKNS_13ResourceErrorE
-__ZN7WebCore11FrameLoader25receivedMainResourceErrorERKNS_13ResourceErrorEb
-__ZN7WebCore11FrameLoader4stopEv
-__ZN7WebCore17ResourceErrorBase8lazyInitEv
-__ZN7WebCore11FrameLoader13didNotOpenURLERKNS_4KURLE
-__ZN7WebCore11FrameLoader31invalidateCurrentItemCachedPageEv
-__ZN7WebCore14DocumentLoader17mainReceivedErrorERKNS_13ResourceErrorEb
-__ZN7WebCore11FrameLoader25mainReceivedCompleteErrorEPNS_14DocumentLoaderERKNS_13ResourceErrorE
-__ZN7WebCore11FrameLoader20clearProvisionalLoadEv
-__ZN7WebCore16FixedTableLayoutC2EPNS_11RenderTableE
+__ZN3WTF6VectorIN7WebCore16ResourceResponseELm0EE6shrinkEm
+__ZNK7WebCore12RenderObject13hoverAncestorEv
+__ZN7WebCore17HTMLAnchorElement9setActiveEbb
+__ZN7WebCore12RenderInline29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
+__ZNK7WebCore12RenderInline16linesBoundingBoxEv
+__ZN7WebCore10handCursorEv
+__ZN7WebCoreL15leakNamedCursorEPKcii
+__ZNK7WebCore12RenderObject23mapAbsoluteToLocalPointEbbRNS_14TransformStateE
+__ZN7WebCore17HTMLAnchorElement19defaultEventHandlerEPNS_5EventE
+__ZNK7WebCore13HitTestResult11targetFrameEv
+__ZNK7WebCore17HTMLAnchorElement6targetEv
+__ZNK7WebCore13RootInlineBox11ellipsisBoxEv
+__ZN7WebCore15GraphicsContext18setStrokeThicknessEf
+__ZN7WebCore15GraphicsContext26setPlatformStrokeThicknessEf
+__ZN7WebCore15GraphicsContext14setStrokeColorERKNS_5ColorE
+__ZN7WebCore15GraphicsContext15drawLineForTextERKNS_8IntPointEib
+__ZNK7WebCore15GraphicsContext15strokeThicknessEv
+__ZN7WebCore15GraphicsContext19roundToDevicePixelsERKNS_9FloatRectE
+__ZNK7WebCore15GraphicsContext15shouldAntialiasEv
+__ZN7WebCoreL32fontCacheATSNotificationCallbackEP27ATSFontNotificationInfoRef_Pv
+__ZN7WebCore9FontCache10invalidateEv
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore16FontPlatformDataEKNS_7HashMapINS1_24FontPlatformDataCacheKeyES3_NS1_28FontPlatformDa
+__ZN7WebCore15CSSFontSelector20fontCacheInvalidatedEv
+__ZN7WebCore9FontCache21purgeInactiveFontDataEi
+__ZN7WebCore14SimpleFontDataD0Ev
+__ZN7WebCore14SimpleFontData15platformDestroyEv
+__ZN7WebCore17GlyphPageTreeNode17pruneTreeFontDataEPKNS_14SimpleFontDataE
+__ZN7WebCore17GlyphPageTreeNode13pruneFontDataEPKNS_14SimpleFontDataEj
+__ZN7WebCore17GlyphPageTreeNodeD1Ev
+__ZN7WebCore17GlyphPageTreeNodeD2Ev
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore17GlyphPageTreeNodeEKNS_7HashMapIPKNS1_8FontDataES3_NS_7PtrHashIS7_EENS_10HashTraitsIS
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore13GlyphWidthMap14GlyphWidthPageEKNS_7HashMapIiS4_NS_7IntHashIjEENS_10HashTraitsIiEENS8
+__ZN7WebCore8FontDataD2Ev
+__ZN3WTF11ListHashSetIPKN7WebCore14SimpleFontDataENS_7PtrHashIS4_EEE14deleteAllNodesEv
+__ZNK3WTF9HashTableIN7WebCore16FontPlatformDataESt4pairIS2_S3_IPNS1_14SimpleFontDataEjEENS_18PairFirstExtractorIS7_EENS1_20Font
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore12FontSelectorEEELm0EE6shrinkEm
+__ZN7WebCore21DeprecatedPtrListImpl5clearEb
+__ZN7WebCore17DeprecatedPtrListINS_11RenderBlock14FloatingObjectEE10deleteFuncEPv
+__ZN7WebCore21DeprecatedPtrListImpl4takeEv
+__ZN7WebCore21DeprecatedPtrListImpl6removeEb
+__ZN3WTF7HashMapIPN7WebCore12RenderObjectEPNS1_11RenderBlock14FloatingObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3
+__ZN3WTF9HashTableIPN7WebCore12RenderObjectESt4pairIS3_PNS1_11RenderBlock14FloatingObjectEENS_18PairFirstExtractorIS8_EENS_7Ptr
+__ZN7WebCore13InlineFlowBoxD0Ev
+__ZN7WebCore11RenderTheme17adjustRepaintRectEPKNS_12RenderObjectERNS_7IntRectE
+__ZNK7WebCore8ThemeMac23inflateControlPaintRectENS_11ControlPartEjRNS_7IntRectEf
+__ZN7WebCore9RenderBox26repaintDuringLayoutIfMovedERKNS_7IntRectE
+__ZN7WebCore11HistoryItemD1Ev
+__ZN7WebCore11HistoryItemD2Ev
+__ZN7WebCore12IconDatabase21releaseIconForPageURLERKNS_6StringE
+__ZN3WTF6VectorIiLm0EE6shrinkEm
+__ZNK7WebCore14RenderThemeMac20supportsControlTintsEv
+__ZN7WebCore15GraphicsContext23setUpdatingControlTintsEb
+__ZNK7WebCore14RenderThemeMac20controlSupportsTintsEPKNS_12RenderObjectE
+__ZN7WebCore9PageCache27releaseAutoreleasedPagesNowEv
+__ZN7WebCore22ScriptExecutionContext26canSuspendActiveDOMObjectsEv
+__ZN7WebCore5Frame14clearDOMWindowEv
+__ZN3WTF7HashSetIPN7WebCore9DOMWindowENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore9DOMWindowES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore9DOMWindowES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore9DOMWindowES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTabl
+__ZN3WTF9HashTableIPN7WebCore9DOMWindowES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTa
+__ZN7WebCore9DOMWindow5clearEv
+__ZN7WebCore9Navigator15disconnectFrameEv
+__ZN7WebCore16ScriptController16clearWindowShellEv
+__ZN7WebCore15JSDOMWindowBase5clearEv
+__ZN7WebCore15JSDOMWindowBase27clearHelperObjectPropertiesEv
+__ZN7WebCore12gcControllerEv
+__ZN7WebCore12GCControllerC1Ev
+__ZN7WebCore12GCControllerC2Ev
+__ZN7WebCore12GCController18garbageCollectSoonEv
+__ZN7WebCore16ScriptController18clearScriptObjectsEv
+__ZN3JSC8Bindings10RootObject10invalidateEv
+__ZN3WTF9HashTableIPN3JSC16RuntimeObjectImpES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E5clearEv
+__ZN3WTF9HashTableIPN3JSC16RuntimeObjectImpES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15dealloca
+__ZN3WTF9HashTableIPN3JSC8Bindings10RootObjectES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E4findIS
+__ZN3WTF9HashTableIPN3JSC8Bindings10RootObjectES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E47remov
+__ZN3WTF9HashTableIPN3JSC8Bindings10RootObjectES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6remove
+-[WebScriptObject _setOriginRootObject:andRootObject:]
+__ZN3JSC8Bindings10RootObjectD1Ev
+__ZN3JSC8Bindings10RootObjectD2Ev
+__ZN7WebCore5Frame25setUseSecureKeyboardEntryEb
+__ZN7WebCore12SharedBuffer6appendEPKci
+__ZN7WebCore12SharedBuffer25maybeTransferPlatformDataEv
+__ZN7WebCore9CSSParser11parseShadowEib
+__ZN7WebCore18ShadowParseContext11commitValueEv
+__ZN7WebCore11ShadowValueC1EN3WTF10PassRefPtrINS_17CSSPrimitiveValueEEES4_S4_S4_
+__ZN7WebCore11ShadowValueC2EN3WTF10PassRefPtrINS_17CSSPrimitiveValueEEES4_S4_S4_
+__ZN7WebCore9CSSParser14createRuleListEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSRuleListEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSRuleListEEELm0EE15reserveCapacityEm
+__ZN7WebCore9CSSParser15createMediaRuleEPNS_9MediaListEPNS_11CSSRuleListE
+__ZN7WebCore12CSSMediaRuleC1EPNS_13CSSStyleSheetEN3WTF10PassRefPtrINS_9MediaListEEENS4_INS_11CSSRuleListEEE
+__ZN7WebCore12CSSMediaRuleC2EPNS_13CSSStyleSheetEN3WTF10PassRefPtrINS_9MediaListEEENS4_INS_11CSSRuleListEEE
+__ZN7WebCore9CSSParser27createFloatingMediaQueryExpERKNS_12AtomicStringEPNS_18CSSParserValueListE
+__ZN7WebCore13MediaQueryExpC1ERKNS_12AtomicStringEPNS_18CSSParserValueListE
+__ZN7WebCore13MediaQueryExpC2ERKNS_12AtomicStringEPNS_18CSSParserValueListE
+__ZN7WebCore9CSSParser25sinkFloatingMediaQueryExpEPNS_13MediaQueryExpE
+__ZN3WTF6VectorIPN7WebCore13MediaQueryExpELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore13MediaQueryExpELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore13MediaQueryExpELm0EE15reserveCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSRuleListEEELm0EE6shrinkEm
+__ZN7WebCore12CSSMediaRule11isMediaRuleEv
+__ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPFbPNS1_8CSSValueEPNS1_11RenderStyleEPNS1_5FrameENS1_18MediaFeaturePrefixEENS_7Pt
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PFbPNS1_8CSSValueEPNS1_11RenderStyleEPNS1_5FrameENS1_18MediaFeatureP
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPFbPNS1_8CSSValueEPNS1_11RenderStyleEPNS1_5FrameENS1_18MediaFeaturePrefixEENS_7P
+__ZN7WebCoreL32max_device_widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL28device_widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore10screenRectEPNS_6WidgetE
+__ZN7WebCore11toUserSpaceERK6CGRectP8NSWindow
+__ZN7WebCore9FloatRectC1ERK6CGRect
+__ZN7WebCore9FloatRectC2ERK6CGRect
+__ZN7WebCore10FloatPointC1ERK7CGPoint
+__ZN7WebCore10FloatPointC2ERK7CGPoint
+__ZN7WebCore9FloatSizeC1ERK6CGSize
+__ZN7WebCore9FloatSizeC2ERK6CGSize
+__ZN7WebCore9FloatRect5scaleEf
+__ZN7WebCore17CSSPrimitiveValue16computeLengthIntEPNS_11RenderStyleE
+__ZN7WebCore12compareValueIiEEbT_S1_NS_18MediaFeaturePrefixE
+__ZN7WebCore17jsDOMWindowOnloadEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow6onloadEv
+__ZNK7WebCore9DOMWindow25getAttributeEventListenerERKNS_12AtomicStringE
+__ZN7WebCore16JSDOMWindowShell3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore11JSDOMWindow3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore20setJSDOMWindowOnloadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17JSDOMGlobalObject30createJSAttributeEventListenerEN3JSC7JSValueE
+__ZN7WebCore9DOMWindow9setOnloadEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore9DOMWindow25setAttributeEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore9DOMWindow27clearAttributeEventListenerERKNS_12AtomicStringE
+__ZN7WebCore20StringSourceProviderD0Ev
+__ZN7WebCoreL16ulistConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLUListElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLUListElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore16HTMLUListElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore16HTMLUListElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore16HTMLUListElement17endTagRequirementEv
+__ZNK7WebCore16HTMLUListElement11tagPriorityEv
+__ZN7WebCore10HTMLParser29nestedPCloserCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCoreL13liConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore13HTMLLIElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore13HTMLLIElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore13HTMLLIElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore13HTMLLIElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore13HTMLLIElement17endTagRequirementEv
+__ZNK7WebCore13HTMLLIElement11tagPriorityEv
+__ZN7WebCore13HTMLLIElement6attachEv
+__ZN7WebCore15FormDataBuilder15parseMethodTypeERKNS_6StringE
+__ZN7WebCore12RenderInline9splitFlowEPNS_12RenderObjectEPNS_11RenderBlockES2_PNS_20RenderBoxModelObjectE
+__ZN7WebCore12RenderInline12splitInlinesEPNS_11RenderBlockES2_S2_PNS_12RenderObjectEPNS_20RenderBoxModelObjectE
+__ZN7WebCore12RenderInline11cloneInlineEPS0_
+__ZNK7WebCore14RenderThemeMac22adjustSearchFieldStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZNK7WebCore14RenderThemeMac18setSearchFieldSizeEPNS_11RenderStyleE
+__ZNK7WebCore14RenderThemeMac16searchFieldSizesEv
+__ZN7WebCore12RenderInline22addChildToContinuationEPNS_12RenderObjectES2_
+__ZN7WebCore12RenderInline18continuationBeforeEPNS_12RenderObjectE
+__ZN7WebCoreL16nextContinuationEPNS_12RenderObjectE
+__ZN7WebCore23TextControlInnerElementC1EPNS_8DocumentEPNS_4NodeE
+__ZNK7WebCore27RenderTextControlSingleLine21createInnerBlockStyleEPKNS_11RenderStyleE
+__ZN7WebCore31SearchFieldResultsButtonElementC1EPNS_8DocumentE
+__ZN7WebCore31SearchFieldResultsButtonElementC2EPNS_8DocumentE
+__ZNK7WebCore27RenderTextControlSingleLine24createResultsButtonStyleEPKNS_11RenderStyleE
+__ZN7WebCore11RenderStyle20getCachedPseudoStyleENS_8PseudoIdE
+__ZNK7WebCore14RenderThemeMac32adjustSearchFieldDecorationStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZNK7WebCore14RenderThemeMac18resultsButtonSizesEv
+__ZN7WebCore11RenderStyle20addCachedPseudoStyleEN3WTF10PassRefPtrIS0_EE
+__ZN7WebCore30SearchFieldCancelButtonElementC1EPNS_8DocumentE
+__ZN7WebCore30SearchFieldCancelButtonElementC2EPNS_8DocumentE
+__ZNK7WebCore27RenderTextControlSingleLine23createCancelButtonStyleEPKNS_11RenderStyleE
+__ZNK7WebCore14RenderThemeMac34adjustSearchFieldCancelButtonStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZNK7WebCore14RenderThemeMac17cancelButtonSizesEv
+__ZNK7WebCore27RenderTextControlSingleLine25visibilityForCancelButtonEv
+__ZNK7WebCore27RenderTextControlSingleLine28updateCancelButtonVisibilityEv
+__ZN7WebCore11RenderStyle17setHasPseudoStyleENS_8PseudoIdE
+__ZNK7WebCore8CSSValue21isImageGeneratorValueEv
+__ZN7WebCore11RenderStyle10setContentEN3WTF10PassRefPtrINS_10StringImplEEEb
+__ZN7WebCore11ContentData13deleteContentEv
+__ZN7WebCoreL17iframeConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLIFrameElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17HTMLIFrameElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore20HTMLFrameElementBaseC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore21HTMLFrameOwnerElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore17HTMLIFrameElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore17HTMLIFrameElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore20HTMLFrameElementBase20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore20HTMLFrameElementBase11setLocationERKNS_6StringE
+__ZNK7WebCore17HTMLIFrameElement17endTagRequirementEv
+__ZNK7WebCore17HTMLIFrameElement11tagPriorityEv
+__ZN7WebCore17HTMLIFrameElement20insertedIntoDocumentEv
+__ZN7WebCore20HTMLFrameElementBase20insertedIntoDocumentEv
+__ZN7WebCore17HTMLIFrameElement6attachEv
+__ZN7WebCore20HTMLFrameElementBase6attachEv
+__ZN7WebCore13ContainerNode23queuePostAttachCallbackEPFvPNS_4NodeEES2_
+__ZN3WTF6VectorISt4pairIPFvPN7WebCore4NodeEENS_6RefPtrIS3_EEELm0EE14expandCapacityEmPKS9_
+__ZN3WTF6VectorISt4pairIPFvPN7WebCore4NodeEENS_6RefPtrIS3_EEELm0EE14expandCapacityEm
+__ZN3WTF6VectorISt4pairIPFvPN7WebCore4NodeEENS_6RefPtrIS3_EEELm0EE15reserveCapacityEm
+__ZN7WebCore17HTMLIFrameElement16rendererIsNeededEPNS_11RenderStyleE
+__ZNK7WebCore20HTMLFrameElementBase12isURLAllowedERKNS_12AtomicStringE
+__ZN7WebCore16equalIgnoringRefERKNS_4KURLES2_
+__ZN7WebCore17HTMLIFrameElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore16RenderPartObjectC1EPNS_7ElementE
+__ZN7WebCore16RenderPartObjectC2EPNS_7ElementE
+__ZN7WebCore10RenderPartC2EPNS_7ElementE
+__ZN7WebCore12RenderWidgetC2EPNS_4NodeE
+__ZN7WebCore10RenderView9addWidgetEPNS_12RenderWidgetE
+__ZN3WTF7HashSetIPN7WebCore12RenderWidgetENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore12RenderWidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore12RenderWidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore12RenderWidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocate
+__ZN7WebCore12RenderWidget14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore13ContainerNode27dispatchPostAttachCallbacksEv
+__ZN7WebCore20HTMLFrameElementBase25setNameAndOpenURLCallbackEPNS_4NodeE
+__ZN7WebCore20HTMLFrameElementBase17setNameAndOpenURLEv
+__ZNK7WebCore9FrameTree15uniqueChildNameERKNS_12AtomicStringE
+__ZN7WebCore20HTMLFrameElementBase7openURLEv
+__ZN7WebCore11FrameLoader12requestFrameEPNS_21HTMLFrameOwnerElementERKNS_6StringERKNS_12AtomicStringE
+__ZN7WebCore11FrameLoader11completeURLERKNS_6StringE
+__ZN7WebCore11FrameLoader12loadSubframeEPNS_21HTMLFrameOwnerElementERKNS_4KURLERKNS_6StringES8_
+__ZNK7WebCore20HTMLFrameElementBase13scrollingModeEv
+__ZN7WebCore9FrameTree11appendChildEN3WTF10PassRefPtrINS_5FrameEEE
+__ZNK7WebCore10RenderPart12isRenderPartEv
+__ZN7WebCore10RenderPart9setWidgetEPNS_6WidgetE
+__ZNK7WebCore9FrameView11isFrameViewEv
+__ZN7WebCore12RenderWidget9setWidgetEPNS_6WidgetE
+__ZN3WTF7HashMapIPKN7WebCore6WidgetEPNS1_12RenderWidgetENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3addERKS4_RKS6_
+__ZN3WTF9HashTableIPKN7WebCore6WidgetESt4pairIS4_PNS1_12RenderWidgetEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS4_EENS_14PairHa
+__ZN7WebCore10ScrollView8addChildEPNS_6WidgetE
+__ZN7WebCore10ScrollView9setParentEPS0_
+__ZN7WebCore6Widget9setParentEPNS_10ScrollViewE
+__ZN3WTF7HashSetIPN7WebCore6WidgetENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore6WidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore6WidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore6WidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTableEi
+__ZN7WebCore10ScrollView16platformAddChildEPNS_6WidgetE
+__ZN7WebCore16RenderPartObject11viewClearedEv
+__ZN7WebCore9FrameView20setCanHaveScrollbarsEb
+__ZN7WebCore10ScrollView20setCanHaveScrollbarsEb
+__ZNK7WebCore14SecurityOrigin9canAccessEPKS0_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm10EE6shrinkEm
+__ZN7WebCore11FrameLoader21loadURLIntoChildFrameERKNS_4KURLERKNS_6StringEPNS_5FrameE
+__ZN7WebCore11FrameLoader18currentHistoryItemEv
+__ZNK7WebCore11HistoryItem8childrenEv
+__ZN7WebCore14DocumentLoader21popArchiveForSubframeERKNS_6StringE
+__ZN7WebCore14ResourceHandle16setDefersLoadingEb
+__ZNK7WebCore12RenderWidget8isWidgetEv
+__ZN7WebCore5Frame19setInViewSourceModeEb
+__ZN3WTF6VectorISt4pairIPFvPN7WebCore4NodeEENS_6RefPtrIS3_EEELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorISt4pairIPFvPN7WebCore4NodeEENS_6RefPtrIS3_EEELm0EE6shrinkEm
+__ZN7WebCore16RenderPartObject12updateWidgetEb
+__ZN7WebCore14RenderListItemC1EPNS_4NodeE
+__ZN7WebCore14RenderListItemC2EPNS_4NodeE
+__ZN7WebCore14RenderListItem14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore14RenderListItem10isListItemEv
+__ZN7WebCore14RenderListItem18clearExplicitValueEv
+__ZN7WebCoreL20paragraphConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore20HTMLParagraphElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore20HTMLParagraphElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore20HTMLParagraphElement17endTagRequirementEv
+__ZNK7WebCore20HTMLParagraphElement11tagPriorityEv
+__ZN7WebCore20HTMLParagraphElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore11HTMLElement15inInlineTagListEPKNS_4NodeE
__ZN7WebCore14RenderListItem11updateValueEv
-__ZN7WebCore16FixedTableLayout14calcPrefWidthsERiS1_
-__ZN7WebCore16FixedTableLayout14calcWidthArrayEi
-__ZN3WTF6VectorIN7WebCore6LengthELm0EE6resizeEm
-__ZN3WTF6VectorIN7WebCore6LengthELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore6LengthELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIN7WebCore6LengthELm0EE4fillERKS2_m
-__ZSt4fillIPN7WebCore6LengthES1_EvT_S3_RKT0_
-__ZN7WebCore16FixedTableLayout6layoutEv
-__ZN7WebCore11RenderTable19getOverflowClipRectEii
-__ZN7WebCore11HistoryItem17setAlternateTitleERKNS_6StringE
-__ZN3WTF6VectorIN7WebCore6LengthELm0EE6shrinkEm
+__ZNK7WebCore20HTMLParagraphElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore20HTMLParagraphElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCoreleERNS_11CSSRuleDataES1_
+__ZN3WTF6VectorIPN7WebCore11CSSRuleDataELm0EE6shrinkEm
+__ZN7WebCore10StringImpl7replaceEPS0_S1_
+__ZN7WebCore22characterBreakIteratorEPKti
+__ZN7WebCoreL16olistConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLOListElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLOListElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore16HTMLOListElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore16HTMLOListElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore16HTMLOListElement17endTagRequirementEv
+__ZNK7WebCore16HTMLOListElement11tagPriorityEv
+__ZN7WebCore16RenderListMarkerC1EPNS_14RenderListItemE
+__ZN7WebCore16RenderListMarkerC2EPNS_14RenderListItemE
+__ZN7WebCore16RenderListMarker15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore16RenderListMarker14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore26CSSMutableStyleDeclaration21removePropertiesInSetEPKijb
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm4EEaSERKS3_
+__ZN7WebCoreL30createHTMLIFrameElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLIFrameElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLIFrameElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLIFrameElementEEE
+__ZN7WebCore19JSHTMLIFrameElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLIFrameElementEEE
+__ZN7WebCore19JSHTMLIFrameElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore9JSElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore6JSNode3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore15setJSNodeOnloadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node9setOnloadEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZNK3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PNS1_7ElementEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_EENS_14P
+__ZN7WebCore20JSNavigatorPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18jsDocumentLocationEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore10JSDocument8locationEPN3JSC9ExecStateE
+__ZNK7WebCore9DOMWindow8locationEv
+__ZN7WebCore8LocationC1EPNS_5FrameE
+__ZN7WebCore8LocationC2EPNS_5FrameE
+__ZN7WebCore10JSLocation15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSLocationC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8LocationEEE
+__ZN7WebCore10JSLocationC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8LocationEEE
+__ZN7WebCore10JSLocation18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore10JSLocation24customGetOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore21allowsAccessFromFrameEPN3JSC9ExecStateEPNS_5FrameERNS_6StringE
+__ZN7WebCore16jsLocationSearchEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Location6searchEv
+__ZNK7WebCore4KURL5queryEv
+__ZN7WebCore21jsNavigatorAppVersionEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9Navigator10appVersionEv
+__ZNK7WebCore13NavigatorBase10appVersionEv
+__ZN7WebCore15JSDOMWindowBase3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore11JSDOMWindow4markEv
+__ZN7WebCore17JSDOMGlobalObject4markEv
+__ZN7WebCore16JSDOMWindowShell4markEv
+__ZN7WebCore10JSDocument4markEv
+__ZN7WebCore6JSNode4markEv
+__ZN7WebCore23markDOMNodesForDocumentEPNS_8DocumentE
+__ZN7WebCore15JSEventListener14markJSFunctionEv
+__ZN7WebCore27markActiveObjectsForContextERN3JSC12JSGlobalDataEPNS_22ScriptExecutionContextE
+__ZN7WebCore20markDOMObjectWrapperERN3JSC12JSGlobalDataEPv
+__ZN7WebCore11JSNavigator4markEv
+__ZN7WebCore20JSDOMWindowPrototypeD1Ev
+__ZN7WebCore11JSDOMWindowD1Ev
+__ZN7WebCore11JSDOMWindowD2Ev
+__ZN7WebCore15JSDOMWindowBaseD2Ev
+__ZN7WebCore17JSDOMGlobalObjectD2Ev
+__ZN7WebCore15JSDOMWindowBase19JSDOMWindowBaseDataD0Ev
+__ZN7WebCore9DOMWindowD0Ev
+__ZN7WebCore5Frame20clearFormerDOMWindowEPNS_9DOMWindowE
+__ZN3WTF9HashTableIPN7WebCore9DOMWindowES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22
+__ZN3WTF9HashTableIPN7WebCore9DOMWindowES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInv
+__ZN3WTF9HashTableIPN7WebCore9DOMWindowES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN3JSC14JSGlobalObject18JSGlobalObjectDataD2Ev
+__ZN3WTF9HashTableIPN3JSC16ProgramCodeBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15dealloca
+__ZN7WebCore15JSNodePrototypeD1Ev
+__ZN7WebCore19JSDocumentPrototypeD1Ev
+__ZN7WebCore23JSHTMLDocumentPrototypeD1Ev
+__ZN7WebCore14JSHTMLDocumentD1Ev
+__ZN7WebCore10JSDocumentD2Ev
+__ZN7WebCore15forgetDOMObjectERN3JSC12JSGlobalDataEPv
+__ZN3WTF7HashMapIPvPN7WebCore9DOMObjectENS_7PtrHashIS1_EENS_10HashTraitsIS1_EENS7_IS4_EEE4takeERKS1_
+__ZN7WebCore6JSNodeD2Ev
+__ZN7WebCore13forgetDOMNodeEPNS_8DocumentEPNS_4NodeE
+__ZN3WTF7HashMapIPN7WebCore4NodeEPNS1_6JSNodeENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE4takeERKS3_
+__ZN3WTF9HashTableIPN7WebCore4NodeESt4pairIS3_PNS1_6JSNodeEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_EENS_14PairHashTraitsIN
+__ZN7WebCore16JSEventPrototypeD1Ev
+__ZN7WebCore7JSEventD1Ev
+__ZN7WebCore7JSEventD2Ev
+__ZN7WebCore20JSNavigatorPrototypeD1Ev
+__ZN7WebCore11JSNavigatorD1Ev
+__ZN7WebCore11JSNavigatorD2Ev
+__ZN7WebCore9NavigatorD0Ev
+__ZN7WebCore13NavigatorBaseD2Ev
+__ZN7WebCore18JSElementPrototypeD1Ev
+__ZN7WebCore22JSHTMLElementPrototypeD1Ev
+__ZN7WebCore27JSHTMLMediaElementPrototypeD1Ev
+__ZN7WebCore27JSHTMLAudioElementPrototypeD1Ev
+__ZN7WebCore18JSHTMLAudioElementD1Ev
+__ZN7WebCore27JSHTMLVideoElementPrototypeD1Ev
+__ZN7WebCore18JSHTMLVideoElementD1Ev
+__ZN7WebCore26CachedScriptSourceProviderD0Ev
+__ZN7WebCore5Cache27removeFromLiveResourcesSizeEPNS_14CachedResourceE
+__ZN7WebCore12CachedScript17allClientsRemovedEv
+__ZN7WebCore19JSNodeListPrototypeD1Ev
+__ZN7WebCore10JSNodeListD1Ev
+__ZN7WebCore10JSNodeListD2Ev
+__ZN7WebCore25JSStyleSheetListPrototypeD1Ev
+__ZN7WebCore16JSStyleSheetListD1Ev
+__ZN7WebCore16JSStyleSheetListD2Ev
+__ZN7WebCore21JSStyleSheetPrototypeD1Ev
+__ZN7WebCore24JSCSSStyleSheetPrototypeD1Ev
+__ZN7WebCore15JSCSSStyleSheetD1Ev
+__ZN7WebCore12JSStyleSheetD2Ev
+__ZN7WebCore22JSCSSRuleListPrototypeD1Ev
+__ZN7WebCore13JSCSSRuleListD1Ev
+__ZN7WebCore13JSCSSRuleListD2Ev
+__ZN7WebCore11CSSRuleListD1Ev
+__ZN7WebCore11CSSRuleListD2Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore7CSSRuleEEELm0EE6shrinkEm
+__ZN7WebCore18JSCSSRulePrototypeD1Ev
+__ZN7WebCore23JSCSSStyleRulePrototypeD1Ev
+__ZN7WebCore14JSCSSStyleRuleD1Ev
+__ZN7WebCore9JSCSSRuleD2Ev
+__ZN7WebCore18JSImageConstructorD1Ev
+__ZN7WebCore27JSHTMLImageElementPrototypeD1Ev
+__ZN7WebCore18JSHTMLImageElementD1Ev
+__ZN7WebCore33JSWebKitCSSKeyframesRulePrototypeD1Ev
+__ZN7WebCore24JSWebKitCSSKeyframesRuleD1Ev
+__ZThn8_N7WebCore16HTMLImageElementD0Ev
+__ZN7WebCore16HTMLImageElementD0Ev
+__ZN7WebCore15HTMLImageLoaderD1Ev
+__ZN7WebCore15HTMLImageLoaderD2Ev
+__ZN7WebCore11ImageLoaderD2Ev
+__ZN7WebCore20ImageLoadEventSender15cancelLoadEventEPNS_11ImageLoaderE
+__ZN7WebCore12NamedNodeMap17detachFromElementEv
+__ZN3WTF9HashTableIPKN7WebCore4NodeESt4pairIS4_PNS1_12NodeRareDataEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS4_EENS_14PairHash
+__ZN7WebCore24JSProgressEventPrototypeD1Ev
+__ZN7WebCore15JSProgressEventD1Ev
+__ZN7WebCore26JSHTMLBodyElementPrototypeD1Ev
+__ZN7WebCore17JSHTMLBodyElementD1Ev
+__ZN7WebCore31JSWebKitAnimationEventPrototypeD1Ev
+__ZN7WebCore22JSWebKitAnimationEventD1Ev
+__ZN7WebCore20WebKitAnimationEventD0Ev
+__ZN7WebCore12DocumentTypeD0Ev
+__ZN7WebCore15HTMLHeadElementD0Ev
+__ZN7WebCore15HTMLBodyElementD0Ev
+__ZN7WebCore15HTMLMetaElementD0Ev
+__ZN7WebCore16HTMLTitleElementD0Ev
+__ZN7WebCore17HTMLScriptElementD0Ev
+__ZN7WebCore17ScriptElementDataD1Ev
+__ZN7WebCore17ScriptElementDataD2Ev
+__ZN7WebCore17ScriptElementData15stopLoadRequestEv
+__ZN7WebCore15HTMLLinkElementD0Ev
+__ZN7WebCore19CachedCSSStyleSheet17allClientsRemovedEv
+__ZN7WebCore11HTMLElementD0Ev
+__ZN7WebCore16HTMLAudioElementD0Ev
+__ZN7WebCore16HTMLMediaElementD2Ev
+__ZN7WebCore8Document40unregisterForDocumentActivationCallbacksEPNS_7ElementE
+__ZN3WTF9HashTableIPN7WebCore7ElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22Id
+__ZN3WTF9HashTableIPN7WebCore7ElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInval
+__ZN3WTF9HashTableIPN7WebCore7ElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN7WebCore8Document33unregisterForMediaVolumeCallbacksEPNS_7ElementE
+__ZN3WTF6VectorIN7WebCore10TimeRanges5RangeELm0EE6shrinkEm
+__ZN7WebCore14HTMLDivElementD0Ev
+__ZN7WebCore11CachedImage17allClientsRemovedEv
+__ZN7WebCore11BitmapImage14resetAnimationEv
+__ZN7WebCore11BitmapImage13stopAnimationEv
+__ZN7WebCore11BitmapImage29destroyDecodedDataIfNecessaryEb
+__ZN7WebCore18HTMLHeadingElementD0Ev
+__ZN7WebCore16HTMLVideoElementD0Ev
+__ZN7WebCore29CSSMappedAttributeDeclarationD0Ev
+__ZN7WebCore13StyledElement25removeMappedAttributeDeclENS_20MappedAttributeEntryERKNS_13QualifiedNameERKNS_12AtomicStringE
+__ZN7WebCore14CachedResource16deleteIfPossibleEv
+__ZN7WebCore9FontValueD0Ev
+__ZN7WebCore15FontFamilyValueD0Ev
+__ZN7WebCore17CSSPrimitiveValueD2Ev
+__ZN7WebCore13CSSImageValueD0Ev
+__ZN7WebCore16StyleCachedImageD0Ev
+__ZN7WebCore15CSSReflectValueD0Ev
+__ZN7WebCore19CSSBorderImageValueD0Ev
+__ZN7WebCore16CSSGradientValueD0Ev
+__ZN3WTF6VectorIN7WebCore20CSSGradientColorStopELm0EE6shrinkEm
+__ZN7WebCore22CSSImageGeneratorValueD2Ev
+__ZN7WebCore19StyleGeneratedImageD0Ev
+__ZN7WebCore22WebKitCSSKeyframesRuleD0Ev
+__ZN7WebCore21WebKitCSSKeyframeRuleD0Ev
+__ZN7WebCore23WebKitCSSTransformValueD0Ev
+__ZN7WebCore12CSSValueListD2Ev
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore15DynamicNodeList6CachesEKNS_7HashMapINS1_6StringES4_NS1_10StringHashENS_10HashTraitsI
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore15DynamicNodeList6CachesEKNS_7HashMapINS1_13QualifiedNameES4_NS1_17QualifiedNameHashEN
+__ZN3WTF9HashTableIPN7WebCore15DynamicNodeListES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deall
+__ZN7WebCore19jsDOMWindowLocationEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow8locationEPN3JSC9ExecStateE
+__ZN7WebCore18jsLocationProtocolEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Location8protocolEv
+__ZN7WebCoreL28createHTMLHeadElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore17JSHTMLHeadElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSHTMLHeadElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLHeadElementEEE
+__ZN7WebCore17JSHTMLHeadElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLHeadElementEEE
+__ZN7WebCore18jsNavigatorAppNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13NavigatorBase7appNameEv
+__ZN7WebCore17JSHTMLBodyElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17JSHTMLBodyElement9classInfoEv
+__ZN7WebCore13jsDocumentURLEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore40jsDocumentPrototypeFunctionCreateElementEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12HTMLDocument13createElementERKNS_12AtomicStringERi
+__ZN7WebCore8Document11isValidNameERKNS_6StringE
__ZN7WebCore10StringImpl7isLowerEv
-__ZN7WebCore11RenderTable19paintBoxDecorationsERNS_12RenderObject9PaintInfoEii
-__ZNK7WebCore13HTMLTokenizer14processingDataEv
-__ZN7WebCore15RenderWordBreakC2EPNS_11HTMLElementE
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_16HTMLInputElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
-__ZNK7WebCore15RenderWordBreak11isWordBreakEv
-__ZThn8_N7WebCore17PlatformScrollbar5paintEPNS_15GraphicsContextERKNS_7IntRectE
-__ZN7WebCore17PlatformScrollbar5paintEPNS_15GraphicsContextERKNS_7IntRectE
-__ZThn8_NK7WebCore17PlatformScrollbar6heightEv
-__ZNK7WebCore17PlatformScrollbar6heightEv
-__ZN7WebCore16HTMLLabelElement9setActiveEbb
-__ZN7WebCore16HTMLLabelElement10setHoveredEb
-__ZN7WebCore16HTMLLabelElement20correspondingControlEv
-__ZN7WebCore16HTMLLabelElement19defaultEventHandlerEPNS_5EventE
--[WebCoreResourceHandleAsDelegate connection:willStopBufferingData:]
-__ZN7WebCore14ResourceLoader21willStopBufferingDataEPNS_14ResourceHandleEPKci
-__ZN7WebCore14ResourceLoader21willStopBufferingDataEPKci
-__ZN7WebCore4Page6goBackEv
-__ZN7WebCore4Page8goToItemEPNS_11HistoryItemENS_13FrameLoadTypeE
-__ZN7WebCore11FrameLoader8goToItemEPNS_11HistoryItemENS_13FrameLoadTypeE
-__ZN7WebCore15BackForwardList8goToItemEPNS_11HistoryItemE
-__ZN7WebCore11FrameLoader17recursiveGoToItemEPNS_11HistoryItemES2_NS_13FrameLoadTypeE
-__ZNK7WebCore11HistoryItem12isTargetItemEv
-__ZN7WebCore11FrameLoader8loadItemEPNS_11HistoryItemENS_13FrameLoadTypeE
-__ZN7WebCore11HistoryItem8formDataEv
-__ZN7WebCore16NavigationActionC1ERKNS_4KURLENS_13FrameLoadTypeEb
-__ZN7WebCore11FrameLoader33loadProvisionalItemFromCachedPageEv
-__ZN7WebCore11FrameLoader37updateHistoryForBackForwardNavigationEv
-__ZN7WebCore14FormElementKeyC2EPNS_16AtomicStringImplES2_
-__ZNK7WebCore14FormElementKey3refEv
-__ZN3WTF9HashTableIN7WebCore14FormElementKeyESt4pairIS2_NS_6VectorINS1_6StringELm0EEEENS_18PairFirstExtractorIS7_EENS1_18FormElementKeyHashENS_14PairHashTraitsINS1_24FormElementKeyHashTraitsENS_10HashTraitsIS6_EEEESC_E4findIS2_NS_22IdentityHashTranslatorIS2_S7_SA_EEEENS_17HashTableIteratorIS2_S7_S9_SA_SF_SC_EERKT_
-__ZN3WTF7HashMapIN7WebCore14FormElementKeyENS_6VectorINS1_6StringELm0EEENS1_18FormElementKeyHashENS1_24FormElementKeyHashTraitsENS_10HashTraitsIS5_EEE3setERKS2_RKS5_
-__ZN3WTF9HashTableIN7WebCore14FormElementKeyESt4pairIS2_NS_6VectorINS1_6StringELm0EEEENS_18PairFirstExtractorIS7_EENS1_18FormElementKeyHashENS_14PairHashTraitsINS1_24FormElementKeyHashTraitsENS_10HashTraitsIS6_EEEESC_E3addIS2_S6_NS_17HashMapTranslatorILb1ES7_NS_18PairBaseHashTraitsISC_SE_EESF_SA_EEEES3_INS_17HashTableIteratorIS2_S7_S9_SA_SF_SC_EEbERKT_RKT0_
-__ZN3WTF9HashTableIN7WebCore14FormElementKeyESt4pairIS2_NS_6VectorINS1_6StringELm0EEEENS_18PairFirstExtractorIS7_EENS1_18FormElementKeyHashENS_14PairHashTraitsINS1_24FormElementKeyHashTraitsENS_10HashTraitsIS6_EEEESC_E6expandEv
-__ZN7WebCore14FormElementKeyC2ERKS0_
-__ZN3WTF6VectorIN7WebCore6StringELm0EEC2ERKS3_
-__ZN7WebCore14FormElementKeyD2Ev
-__ZNK7WebCore14FormElementKey5derefEv
-__ZN7WebCore18FormElementKeyHash4hashERKNS_14FormElementKeyE
-__ZN7WebCore14FormElementKeyaSERKS0_
-__ZN7WebCore8Document23takeStateForFormElementEPNS_16AtomicStringImplES2_RNS_6StringE
-__ZN7WebCore24FormElementKeyHashTraits12deletedValueEv
-__ZN7WebCore16HTMLInputElement12restoreStateERKNS_6StringE
-__ZN7WebCore17HTMLSelectElement12restoreStateERKNS_6StringE
-__ZN7WebCore11FrameLoader33restoreScrollPositionAndViewStateEv
-__ZNK7WebCore9FrameView17wasScrolledByUserEv
-__ZNK7WebCore11HistoryItem11scrollPointEv
-__ZN7WebCore9FrameView14setContentsPosEii
-__ZN7WebCore10ScrollView14setContentsPosEii
-__ZN7WebCore7Element15willSaveToCacheEv
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HistoryItemEEELm0EE6shrinkEm
-__ZNK7WebCore18JSHTMLEmbedElement14implementsCallEv
-__ZN7WebCore27runtimeObjectImplementsCallEPNS_11HTMLElementE
-__ZN7WebCore9PageCache27releaseAutoreleasedPagesNowEv
-__ZN3WTF9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES6_E4swapERS7_
-__ZN3WTF23HashTableRefCounterBaseILb1ENS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEES7_EENS6_INS_6RefPtrIN7WebCore25InspectorDatabaseResourceEEEEEE8derefAllERS8_
-__ZN7WebCore10HTMLParser10createHeadEv
-__ZNK7WebCore16CSSStyleSelector14largerFontSizeEfb
-__ZN7WebCore10HTMLParser19moveOneBlockToStackERPNS_13HTMLStackElemE
-__ZN7WebCore15GraphicsContext11drawEllipseERKNS_7IntRectE
-__ZN7WebCore12EventHandler22defaultTabEventHandlerEPNS_13KeyboardEventE
-__ZN7WebCore15FocusController12advanceFocusENS_14FocusDirectionEPNS_13KeyboardEventEb
-__ZN7WebCore8Document17nextFocusableNodeEPNS_4NodeEPNS_13KeyboardEventE
-__ZN7WebCore25nextNodeWithExactTabIndexEPNS_4NodeEiPNS_13KeyboardEventE
-__ZNK7WebCore4Node19isKeyboardFocusableEPNS_13KeyboardEventE
-__ZNK7WebCore16HTMLInputElement19isKeyboardFocusableEPNS_13KeyboardEventE
-__ZN7WebCore17deepFocusableNodeENS_14FocusDirectionEPNS_4NodeEPNS_13KeyboardEventE
-__ZNK7WebCore4Node19isFrameOwnerElementEv
-__ZN7WebCore8Document35setUseSecureKeyboardEntryWhenActiveEb
-__ZN7WebCore5Frame33updateSecureKeyboardEntryIfActiveEv
-__ZN7WebCore21PlatformKeyboardEvent20currentCapsLockStateEv
-__ZN7WebCore10StringImpl6secureEt
-__ZN7WebCore11FrameLoader4postERKNS_4KURLERKNS_6StringES6_N3WTF10PassRefPtrINS_8FormDataEEES6_PNS_5EventEPNS_15HTMLFormElementERKNS7_7HashMapIS4_S4_NS_10StringHashENS7_10HashTraitsIS4_EESI_EE
-__ZN7WebCore11FrameLoader50didReceiveServerRedirectForProvisionalLoadForFrameEv
-__ZNK7WebCore6String8toDoubleEPb
-__ZN7WebCore10StringImpl8toDoubleEPb
-__ZN7WebCore11FrameLoader23scheduleHTTPRedirectionEdRKNS_6StringE
-__ZN7WebCore11FrameLoader16isLocationChangeERKNS_20ScheduledRedirectionE
-__ZN7WebCore15HTMLBodyElement14createLinkDeclEv
-__ZN7WebCore26jsLocationProtoFuncReplaceEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore13HTMLTokenizer11stopParsingEv
-__ZN7WebCore11FrameLoader22tokenizerProcessedDataEv
-__ZN7WebCore13PageURLRecordD2Ev
-__ZN7WebCore17disabledTextColorERKNS_5ColorES2_
-__ZNK7WebCore5Color5lightEv
-__ZNK7WebCore11RenderTheme16adjustRadioStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZNK7WebCore14RenderThemeMac12setRadioSizeEPNS_11RenderStyleE
-__ZNK7WebCore14RenderThemeMac10radioSizesEv
-__ZN7WebCore14RenderThemeMac10paintRadioEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore14RenderThemeMac17setRadioCellStateEPKNS_12RenderObjectERKNS_7IntRectE
-__ZNK7WebCore14RenderThemeMac5radioEv
-__ZNK7WebCore14RenderThemeMac12radioMarginsEv
-__ZNK7WebCore28MouseEventWithHitTestResults10localPointEv
-__ZN7WebCore11RenderBlock22positionForCoordinatesEii
-__ZN7WebCore11RenderLayer12scrollOffsetERiS1_
-__ZN7WebCore9SelectionC2ERKNS_15VisiblePositionE
-__ZN7WebCore12IconDatabase28removePageURLFromSQLDatabaseERKNS_6StringE
-_reparentChildPages
-_reparentPage
--[DOMHTMLFormElement method]
-__ZNK7WebCore15HTMLFormElement6methodEv
-__ZN7WebCore6Chrome19addMessageToConsoleENS_13MessageSourceENS_12MessageLevelERKNS_6StringEjS5_
-__ZN7WebCore19InspectorController19addMessageToConsoleENS_13MessageSourceENS_12MessageLevelERKNS_6StringEjS5_
-__ZN7WebCore17HTMLSelectElement19defaultEventHandlerEPNS_5EventE
-__ZN7WebCore17HTMLSelectElement27menuListDefaultEventHandlerEPNS_5EventE
-__ZN7WebCore17cdataBlockHandlerEPvPKhi
-__ZN7WebCore12XMLTokenizer10cdataBlockEPKhi
-__ZN7WebCore12CDATASectionC1EPNS_8DocumentERKNS_6StringE
-__ZNK7WebCore12CDATASection8nodeTypeEv
-__ZN7WebCore23JSCDATASectionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore14JSCDATASectionC1EPN3KJS8JSObjectEPNS_12CDATASectionE
-__ZN7WebCore14JSCDATASection18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore12EventHandler14allowDHTMLDragERbS1_
-__ZNK7WebCore10ScrollView16contentsToWindowERKNS_8IntPointE
-__ZN7WebCore14DragController24delegateDragSourceActionERKNS_8IntPointE
-__ZNK7WebCore12RenderObject13draggableNodeEbbiiRb
-__ZNK7WebCore12EventHandler18shouldDragAutoNodeEPNS_4NodeERKNS_8IntPointE
-__ZN7WebCore14DragController27mayStartDragAtEventLocationEPKNS_5FrameERKNS_8IntPointE
-__ZNK7WebCore13HitTestResult5imageEv
-__ZN7WebCore12EventHandler16handleAutoscrollEPNS_12RenderObjectE
-__ZN7WebCore12EventHandler20startAutoscrollTimerEv
-__ZN7WebCore12EventHandler27updateSelectionForMouseDragEPNS_4NodeERKNS_8IntPointE
-__ZN7WebCore12EventHandler24canMouseDragExtendSelectEPNS_4NodeE
-__ZN7WebCore9Selection9setExtentERKNS_15VisiblePositionE
-__ZNK7WebCore5Frame20selectionGranularityEv
-__ZN7WebCore12RenderObject14stopAutoscrollEv
-__ZNK7WebCore17RegularExpression13matchedLengthEv
-__ZN7WebCore22DeleteSelectionCommand10removeNodeEPNS_4NodeE
-__ZN7WebCore20isTableStructureNodeEPKNS_4NodeE
-__ZN7WebCore28updatePositionForNodeRemovalEPNS_4NodeERNS_8PositionE
-__ZN7WebCore20CompositeEditCommand10removeNodeEPNS_4NodeE
-__ZN7WebCore17RemoveNodeCommandC2EPNS_4NodeE
-__ZN7WebCore17RemoveNodeCommand7doApplyEv
-__ZN7WebCore18createBreakElementEPNS_8DocumentE
-__ZN7WebCore8Document15createElementNSERKNS_6StringES3_Ri
-__ZNK7WebCore8RenderBR14caretMinOffsetEv
-__ZNK7WebCore16PositionIterator11atEndOfNodeEv
-__ZN7WebCore20CompositeEditCommand16insertNodeBeforeEPNS_4NodeES2_
-__ZN7WebCore23InsertNodeBeforeCommandC2EN3WTF10PassRefPtrINS_4NodeEEEPS3_
-__ZN7WebCore23InsertNodeBeforeCommand7doApplyEv
-__ZNK7WebCore22HTMLGenericFormElement16isMouseFocusableEv
-__ZNK7WebCore16HTMLInputElement17canStartSelectionEv
-__ZNK7WebCore15HTMLFormElement19CheckedRadioButtons21checkedButtonForGroupERKNS_12AtomicStringE
-__ZN7WebCore17HTMLSelectElement18dispatchFocusEventEv
-__ZN7WebCore17HTMLSelectElement17saveLastSelectionEv
-__ZNK7WebCore4Node20shouldUseInputMethodEv
-__ZN7WebCore7Element21updateFocusAppearanceEb
-__ZNK7WebCore13ContainerNode7getRectEv
-__ZNK7WebCore13ContainerNode18getUpperLeftCornerERiS1_
-__ZNK7WebCore13ContainerNode19getLowerRightCornerERiS1_
-__ZN7WebCore14RenderMenuList9showPopupEv
-__ZN7WebCore9PopupMenuC2EPNS_15PopupMenuClientE
-__ZN7WebCore9PopupMenu4showERKNS_7IntRectEPNS_9FrameViewEi
-__ZN7WebCore9PopupMenu8populateEv
-__ZThn136_NK7WebCore14RenderMenuList13shouldPopOverEv
-__ZNK7WebCore14RenderMenuList13shouldPopOverEv
-__ZThn136_NK7WebCore14RenderMenuList8listSizeEv
-__ZNK7WebCore14RenderMenuList8listSizeEv
-__ZThn136_NK7WebCore14RenderMenuList15itemIsSeparatorEj
-__ZNK7WebCore14RenderMenuList15itemIsSeparatorEj
-__ZThn136_NK7WebCore14RenderMenuList9itemStyleEj
-__ZNK7WebCore14RenderMenuList9itemStyleEj
-__ZThn136_NK7WebCore14RenderMenuList8itemTextEj
-__ZNK7WebCore14RenderMenuList8itemTextEj
-__ZThn136_NK7WebCore14RenderMenuList13itemIsEnabledEj
-__ZNK7WebCore14RenderMenuList13itemIsEnabledEj
-__ZThn136_NK7WebCore14RenderMenuList11clientStyleEv
-__ZNK7WebCore14RenderMenuList11clientStyleEv
-__ZN7WebCore12EventHandler14currentNSEventEv
-__ZN7WebCore5Frame13willPopupMenuEP6NSMenu
--[WebCoreFrameBridge accessibilityTree]
-__ZN7WebCore13AXObjectCache3getEPNS_12RenderObjectE
-__ZN3WTF7HashMapIPN7WebCore12RenderObjectEP15WebCoreAXObjectNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setERKS3_RKS5_
-+[WebCoreAXObject initialize]
--[WebCoreAXObject initWithRenderer:]
--[WebCoreAXObject _accessibilityParentForSubview:]
--[WebCoreAXObject rendererForView:]
-__ZN7WebCore13AXObjectCache25postNotificationToElementEPNS_12RenderObjectERKNS_6StringE
-__ZThn136_N7WebCore14RenderMenuList9hidePopupEv
-__ZN7WebCore14RenderMenuList9hidePopupEv
-__ZN7WebCore9PopupMenu4hideEv
-__ZThn136_N7WebCore14RenderMenuList12valueChangedEjb
-__ZN7WebCore14RenderMenuList12valueChangedEjb
-__ZNK7WebCore17HTMLSelectElement17listToOptionIndexEi
-__ZN7WebCore17HTMLSelectElement16setSelectedIndexEibb
-__ZN7WebCore17HTMLSelectElement29setActiveSelectionAnchorIndexEi
-__ZN3WTF6VectorIbLm0EE14expandCapacityEmPKb
-__ZN3WTF6VectorIbLm0EE14expandCapacityEm
-__ZN3WTF6VectorIbLm0EE15reserveCapacityEm
-__ZN7WebCore17HTMLSelectElement13deselectItemsEPNS_17HTMLOptionElementE
-__ZN7WebCore17HTMLSelectElement16menuListOnChangeEv
-__ZN7WebCore12EventHandler33sendFakeEventsAfterWidgetTrackingEP7NSEvent
-__ZN7WebCore17HTMLSelectElement17dispatchBlurEventEv
-__ZN7WebCore13AXObjectCache29handleFocusedUIElementChangedEv
-__ZNK7WebCore16HTMLLabelElement11isFocusableEv
-__ZN7WebCore10RenderText22positionForCoordinatesEii
-__ZNK7WebCore13InlineTextBox17offsetForPositionEib
-__ZNK7WebCore4Font17offsetForPositionERKNS_7TextRunEib
-__ZNK7WebCore4Font30offsetForPositionForSimpleTextERKNS_7TextRunEib
-__ZN7WebCore13WidthIterator19advanceOneCharacterERfPNS_11GlyphBufferE
-__ZN7WebCore17positionAfterNodeEPKNS_4NodeE
-__ZN7WebCore13AXObjectCache16postNotificationEPNS_12RenderObjectERKNS_6StringE
--[WebCoreAXObject observableObject]
-__ZN7WebCore18createLabelWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore27JSHTMLLabelElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLLabelElementC1EPN3KJS8JSObjectEPNS_16HTMLLabelElementE
-__ZN7WebCore18JSHTMLLabelElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore22createParagraphWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore31JSHTMLParagraphElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore22JSHTMLParagraphElementC1EPN3KJS8JSObjectEPNS_20HTMLParagraphElementE
-__ZN7WebCore22JSHTMLParagraphElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore17HTMLSelectElement14appendFormDataERNS_12FormDataListEb
-__ZNK7WebCore17HTMLOptionElement5valueEv
-__ZN7WebCore22HTMLGenericFormElement14appendFormDataERNS_12FormDataListEb
-__ZN7WebCore13AXObjectCache15childrenChangedEPNS_12RenderObjectE
--[WebCoreAXObject childrenChanged]
--[WebCoreAXObject clearChildren]
--[WebCoreAXObject accessibilityIsIgnored]
--[WebCoreAXObject isAttachment]
--[WebCoreAXObject isWebArea]
--[WebCoreAXObject detach]
--[WebCoreAXObject removeAXObjectID]
--[WebCoreAXObject dealloc]
-__ZN7WebCore20JSHTMLHeadingElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore23JSCDATASectionPrototypeD0Ev
-__ZN3WTF6VectorIPN7WebCore5FrameELm16EE6shrinkEm
-__ZNK7WebCore12RenderObject15canHaveChildrenEv
-__ZN7WebCore17objectConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLObjectElementC1EPNS_8DocumentEb
+__ZN7WebCoreL17objectConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLObjectElementC1ERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore17HTMLObjectElementC2ERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore22HTMLPlugInImageElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17HTMLPlugInElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16toJSNewlyCreatedEPN3JSC9ExecStateEPNS_7ElementE
+__ZN7WebCoreL30createHTMLObjectElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLObjectElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLObjectElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLObjectElementEEE
+__ZN7WebCore19JSHTMLObjectElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLObjectElementEEE
+__ZN7WebCore19JSHTMLObjectElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19JSHTMLObjectElement18canGetItemsForNameEPN3JSC9ExecStateEPNS_17HTMLObjectElementERKNS1_10IdentifierE
+__ZN7WebCore19JSHTMLObjectElement24customGetOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore37runtimeObjectCustomGetOwnPropertySlotEPN3JSC9ExecStateERKNS0_10IdentifierERNS0_12PropertySlotEPNS_13JSHTMLElement
+__ZN7WebCoreL16getRuntimeObjectEPN3JSC9ExecStateEPNS_4NodeE
+__ZN7WebCoreL14pluginInstanceEPNS_4NodeE
+__ZNK7WebCore17HTMLPlugInElement11getInstanceEv
+__ZNK7WebCore17HTMLObjectElement25renderWidgetForJSBindingsEv
+__ZN7WebCore28JSHTMLObjectElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore38jsElementPrototypeFunctionSetAttributeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore19JSHTMLObjectElement9classInfoEv
+__ZN7WebCore9JSElement12setAttributeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore7Element12setAttributeERKNS_12AtomicStringES3_Ri
+__ZNK7WebCore17HTMLPlugInElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
__ZN7WebCore17HTMLObjectElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore17HTMLPlugInElement17endTagRequirementEv
-__ZNK7WebCore17HTMLObjectElement11tagPriorityEv
+__ZN7WebCore17HTMLPlugInElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore19JSHTMLObjectElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore19JSHTMLObjectElement9customPutEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore22runtimeObjectCustomPutEPN3JSC9ExecStateERKNS0_10IdentifierENS0_7JSValueEPNS_11HTMLElementERNS0_15PutPropertySlotE
+__ZN7WebCore18setJSHTMLElementIdEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11HTMLElement5setIdERKNS_6StringE
+__ZN7WebCore17JSHTMLHeadElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore34jsNodePrototypeFunctionAppendChildEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore17JSHTMLHeadElement9classInfoEv
+__ZN7WebCore6JSNode11appendChildEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore6toNodeEN3JSC7JSValueE
+__ZN7WebCore13ContainerNode11appendChildEN3WTF10PassRefPtrINS_4NodeEEERib
+__ZN7WebCore4Node13checkAddChildEPS0_Ri
+__ZN7WebCore8Document19nodeChildrenChangedEPNS_13ContainerNodeE
+__ZN7WebCoreL20disableRangeMutationEPNS_4PageE
+__ZN7WebCore4Node30notifyNodeListsChildrenChangedEv
+__ZN7WebCore4Node35notifyLocalNodeListsChildrenChangedEv
+__ZN7WebCore17NodeListsNodeData16invalidateCachesEv
+__ZN7WebCore15DynamicNodeList6Caches5resetEv
+__ZN7WebCoreL28dispatchChildInsertionEventsEPNS_4NodeERi
__ZN7WebCore17HTMLObjectElement20insertedIntoDocumentEv
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEiNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IiEEE3setERKS3_RKi
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_iENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsI
+__ZN7WebCore4Node10lazyAttachEv
+__ZN7WebCore17HTMLObjectElement13canLazyAttachEv
+__ZN7WebCore17HTMLObjectElement6detachEv
+__ZN7WebCore17HTMLPlugInElement6detachEv
__ZN7WebCore17HTMLObjectElement6attachEv
-__ZN7WebCore17HTMLObjectElement11isImageTypeEv
-__ZN7WebCore17HTMLObjectElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore17HTMLObjectElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore22HTMLPlugInImageElement11isImageTypeEv
+__ZN7WebCore17HTMLPlugInElement20updateWidgetCallbackEPNS_4NodeE
__ZN7WebCore17HTMLObjectElement12updateWidgetEv
-__ZN7WebCore16paramConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLParamElementC2EPNS_8DocumentE
-__ZN7WebCore16HTMLParamElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore16HTMLParamElement17endTagRequirementEv
-__ZNK7WebCore16HTMLParamElement11tagPriorityEv
-__ZN7WebCore17HTMLPlugInElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore17HTMLObjectElement15childrenChangedEb
-__ZN7WebCore17HTMLObjectElement18updateDocNamedItemEv
-__ZN7WebCore17HTMLObjectElement21finishParsingChildrenEv
-__ZN7WebCore17HTMLObjectElement11recalcStyleENS_4Node11StyleChangeE
-__ZN7WebCore17HTMLObjectElement6detachEv
-__ZNK7WebCore17HTMLPlugInElement4nameEv
-__ZN3WTF6VectorIcLm256EE14expandCapacityEm
-__ZN3WTF6VectorIcLm256EE15reserveCapacityEm
-__ZNK3KJS6Window17printErrorMessageERKN7WebCore6StringE
-__ZN7WebCore17HTMLObjectElementD1Ev
-__ZN7WebCore9PageCache11autoreleaseEN3WTF10PassRefPtrINS_10CachedPageEEE
-__ZN3WTF7HashSetINS_6RefPtrIN7WebCore10CachedPageEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
-__ZN7WebCore9PageCache17removeFromLRUListEPNS_11HistoryItemE
-__ZNK7WebCore14RenderThemeMac19adjustTextAreaStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZN7WebCore19HTMLTextAreaElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore16scrollCornerRectEPNS_12RenderObjectERKNS_7IntRectE
-__ZN7WebCore5TimerINS_9PageCacheEE5firedEv
-__ZN7WebCore9PageCache39releaseAutoreleasedPagesNowOrRescheduleEPNS_5TimerIS0_EE
-__ZN7WebCore11FrameLoader23timeOfLastCompletedLoadEv
-__ZN7WebCore12userIdleTimeEv
-__ZN7WebCore10CachedPage5clearEv
-__ZN7WebCore9FrameView10clearFrameEv
-__ZN7WebCore15HTMLImageLoaderD1Ev
-__ZN3KJS21SavedBuiltinsInternalD2Ev
-__ZN3KJS12ProtectedPtrINS_20NativeErrorPrototypeEED1Ev
-__ZN3KJS12ProtectedPtrINS_14ErrorPrototypeEED1Ev
-__ZN3KJS12ProtectedPtrINS_15RegExpPrototypeEED1Ev
-__ZN3KJS12ProtectedPtrINS_13DatePrototypeEED1Ev
-__ZN3KJS12ProtectedPtrINS_15NumberPrototypeEED1Ev
-__ZN3KJS12ProtectedPtrINS_15StringPrototypeEED1Ev
-__ZN3KJS12ProtectedPtrINS_16BooleanPrototypeEED1Ev
-__ZN3KJS12ProtectedPtrINS_14ArrayPrototypeEED1Ev
-__ZN3KJS12ProtectedPtrINS_17FunctionPrototypeEED1Ev
-__ZN3KJS12ProtectedPtrINS_15ObjectPrototypeEED1Ev
-__ZN3KJS12ProtectedPtrINS_14NativeErrorImpEED1Ev
-__ZN3KJS12ProtectedPtrINS_14ErrorObjectImpEED1Ev
-__ZN3KJS12ProtectedPtrINS_15RegExpObjectImpEED1Ev
-__ZN3KJS12ProtectedPtrINS_13DateObjectImpEED1Ev
-__ZN3KJS12ProtectedPtrINS_15NumberObjectImpEED1Ev
-__ZN3KJS12ProtectedPtrINS_15StringObjectImpEED1Ev
-__ZN3KJS12ProtectedPtrINS_16BooleanObjectImpEED1Ev
-__ZN3KJS12ProtectedPtrINS_14ArrayObjectImpEED1Ev
-__ZN3KJS12ProtectedPtrINS_17FunctionObjectImpEED1Ev
-__ZN3KJS12ProtectedPtrINS_15ObjectObjectImpEED1Ev
-__ZN7WebCore10CachedPageD2Ev
-__ZN7WebCore19HTMLTextAreaElement23rendererWillBeDestroyedEv
-__ZN7WebCore13WidthIterator21normalizeVoicingMarksEi
-__ZN7WebCore12BidiResolverINS_12BidiIteratorENS_7BidiRunEE5embedEN3WTF7Unicode9DirectionE
-__ZNK7WebCore4Font24floatWidthForComplexTextERKNS_7TextRunE
-__ZN7WebCore20ATSULayoutParameters10initializeEPKNS_4FontEPKNS_15GraphicsContextE
-__ZN7WebCore19initializeATSUStyleEPKNS_14SimpleFontDataE
-__ZNK7WebCore4Font21fontDataForCharactersEPKti
-__ZNK7WebCore16FontFallbackList21fontDataForCharactersEPKNS_4FontEPKti
-__ZNK7WebCore14SimpleFontData17checkShapesArabicEv
-__ZN7WebCore23overrideLayoutOperationEmP14ATSGlyphVectormPvPm
-__ZN7WebCore27disposeATSULayoutParametersEPNS_20ATSULayoutParametersE
-__ZNK7WebCore11BidiContext5derefEv
-__ZN7WebCore12BidiResolverINS_12BidiIteratorENS_7BidiRunEE11reverseRunsEii
-__ZNK7WebCore9InlineBox16prevOnLineExistsEv
-__ZNK7WebCore4Font15drawComplexTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
-__ZN7WebCore14RenderFieldset19paintBoxDecorationsERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore8Position19uncheckedNextOffsetEPKNS_4NodeEi
-__ZN7WebCore12RenderObject9inlineBoxEiNS_9EAffinityE
-__ZNK7WebCore14RenderReplaced14caretMinOffsetEv
-__ZN3WTF6VectorIPN7WebCore13InlineTextBoxELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore13InlineTextBoxELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore13InlineTextBoxELm0EE15reserveCapacityEm
-__ZSt16__introsort_loopIPPN7WebCore13InlineTextBoxEiPFbPKS1_S5_EEvT_S8_T0_T1_
-__ZSt22__final_insertion_sortIPPN7WebCore13InlineTextBoxEPFbPKS1_S5_EEvT_S8_T0_
-__ZSt16__insertion_sortIPPN7WebCore13InlineTextBoxEPFbPKS1_S5_EEvT_S8_T0_
-__ZN3WTF6VectorIPN7WebCore13InlineTextBoxELm0EE6shrinkEm
-__ZNK7WebCore12RenderObject10isMenuListEv
--[WebCoreAXObject mouseButtonListener]
--[WebCoreAXObject parentObject]
-__ZNK7WebCore11FrameLoader14initialRequestEv
-__ZN7WebCore27JSHTMLLabelElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore18JSHTMLLabelElement9classInfoEv
-__ZN7WebCore11HTMLElement8setTitleERKNS_6StringE
-__ZN7WebCore19CachedCSSStyleSheet11setEncodingERKNS_6StringE
-__ZN3WTF6VectorIN7WebCore5ValueELm16EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore5ValueELm16EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore5ValueELm16EE15reserveCapacityEm
-__ZN7WebCore17StyleMultiColDataC2ERKS0_
-__ZNK7WebCore12RenderObject11overflowTopEb
-__ZNK7WebCore11RenderBlock9columnGapEv
-__ZN3WTF7HashMapIPKN7WebCore9RenderBoxEPNS1_10ColumnInfoENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE4takeERKS4_
-__ZN7WebCore10RenderView18setBestTruncatedAtEiPNS_12RenderObjectEb
-__ZNK7WebCore11RenderBlock11columnRectsEv
-__ZNK7WebCore11RenderBlock20adjustRectForColumnsERNS_7IntRectE
-__ZN7WebCore16RenderListMarker12imageChangedEPNS_11CachedImageE
-__ZN7WebCore13InlineFlowBox11extractLineEv
-__ZN7WebCore10RenderFlow14extractLineBoxEPNS_13InlineFlowBoxE
-__ZN7WebCore13InlineTextBox11extractLineEv
-__ZN7WebCore10RenderText14extractTextBoxEPNS_13InlineTextBoxE
-__ZZN7WebCore11RenderBlock14matchedEndLineERKNS_12BidiIteratorERKNS_10BidiStatusES3_S6_RPNS_13RootInlineBoxERiSA_SA_E8numLines
-__ZN7WebCoreeqERKNS_11BidiContextES2_
-__ZN7WebCore13InlineFlowBox10attachLineEv
-__ZN7WebCore10RenderFlow13attachLineBoxEPNS_13InlineFlowBoxE
-__ZN7WebCore13InlineTextBox10attachLineEv
-__ZN7WebCore10RenderText13attachTextBoxEPNS_13InlineTextBoxE
-__ZN7WebCore15compareBoxStartEPKNS_13InlineTextBoxES2_
-__ZSt25__unguarded_linear_insertIPPN7WebCore13InlineTextBoxES2_PFbPKS1_S5_EEvT_T0_T1_
-__ZN7WebCore16equalIgnoringRefERKNS_4KURLES2_
-__ZN7WebCore11FrameLoader47callContinueFragmentScrollAfterNavigationPolicyEPvRKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEEb
-__ZN7WebCore11FrameLoader43continueFragmentScrollAfterNavigationPolicyERKNS_15ResourceRequestEb
-__ZN7WebCore14DocumentLoader32replaceRequestURLForAnchorScrollERKNS_4KURLE
-__ZN7WebCore11FrameLoader31addHistoryItemForFragmentScrollEv
-__ZN7WebCore11FrameLoader14scrollToAnchorERKNS_4KURLE
-__ZN7WebCore11FrameLoader10gotoAnchorERKNS_6StringE
-__ZN7WebCore8Document12setCSSTargetEPNS_4NodeE
-__ZNK7WebCore10RenderText7minXPosEv
-__ZNK7WebCore10RenderText5widthEv
-__ZNK7WebCore10RenderText4yPosEv
-__ZN7WebCore14PausedTimeoutsD1Ev
-__ZN7WebCore4Page23clearUndoRedoOperationsEv
-__ZN7WebCore14DragController9dragEndedEv
-__ZN7WebCore4PageD1Ev
-__ZN7WebCore15BackForwardList5closeEv
-__ZN7WebCore15ProgressTrackerD2Ev
-__ZN7WebCore19InspectorControllerD2Ev
-__ZN3WTF20deleteAllPairSecondsIPNS_7HashMapIxNS_6RefPtrIN7WebCore17InspectorResourceEEENS_7IntHashIyEENS_10HashTraitsIxEENS8_IS5_EEEEKNS1_INS2_INS3_5FrameEEESC_NS_7PtrHashISE_EENS8_ISE_EENS8_ISC_EEEEEEvRT0_
-__ZN3WTF15deleteAllValuesIPN7WebCore14ConsoleMessageELm0EEEvRKNS_6VectorIT_XT0_EEE
-__ZN3WTF23HashTableRefCounterBaseILb1ENS_9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS3_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEESA_EESA_EENS_18PairBaseHashTraitsINS9_INS_6RefPtrIN7WebCore17SubresourceLoaderEEEEENS9_IPNSF_7RequestEEEEEE8derefAllERSC_
-__ZN3WTF23HashTableRefCounterBaseILb1ENS_9HashTableIxSt4pairIxiENS_18PairFirstExtractorIS3_EENS_7IntHashIyEENS_14PairHashTraitsINS_10HashTraitsIxEENS9_IiEEEESA_EENS_18PairBaseHashTraitsISA_NS9_INS_6RefPtrIN7WebCore17InspectorResourceEEEEEEEE6refAllERSD_
-__ZN3WTF9HashTableIxSt4pairIxiENS_18PairFirstExtractorIS2_EENS_7IntHashIyEENS_14PairHashTraitsINS_10HashTraitsIxEENS8_IiEEEES9_EC1ERKSC_
-__ZN7WebCore21ContextMenuControllerD2Ev
-__ZN7WebCore14DragControllerD2Ev
-__ZN7WebCore6ChromeD2Ev
-__ZN7WebCore15BackForwardListD1Ev
-__ZN3WTF15deleteAllValuesIPN7WebCore10PluginInfoELm0EEEvRKNS_6VectorIT_XT0_EEE
-__ZN3WTF6VectorIPN7WebCore13MimeClassInfoELm0EE6shrinkEm
-__ZN3WTF6VectorIPN7WebCore10PluginInfoELm0EE6shrinkEm
-__ZN3WTF15deleteAllValuesIPN7WebCore13MimeClassInfoELm0EEEvRKNS_6VectorIT_XT0_EEE
-__ZN7WebCore13CSSImportRuleD1Ev
-_sqlite3BtreeDelete
--[DOMHTMLInputElement(FormAutoFillTransition) _selectedRange]
--[DOMHTMLInputElement(WebCoreInternal) _HTMLInputElement]
-__ZNK7WebCore16HTMLInputElement14selectionStartEv
-__ZNK7WebCore16HTMLInputElement12selectionEndEv
--[DOMHTMLInputElement(FormAutoFillTransition) _replaceCharactersInRange:withString:selectingFromIndex:]
-__ZN7WebCore10StringImpl7replaceEjjPS0_
-__ZN7WebCore13InlineTextBox14paintSelectionEPNS_15GraphicsContextEiiPNS_11RenderStyleEPKNS_4FontE
-__ZN7WebCore13InlineTextBox17selectionStartEndERiS1_
-__ZNK7WebCore12RenderObject24selectionBackgroundColorEv
-__ZNK7WebCore11RenderTheme30activeSelectionBackgroundColorEv
-__ZNK7WebCore14RenderThemeMac38platformActiveSelectionBackgroundColorEv
-__ZNK7WebCore5Color14blendWithWhiteEv
-__ZN7WebCore14blendComponentEii
-__ZN7WebCore15GraphicsContext20drawHighlightForTextERKNS_7TextRunERKNS_8IntPointEiRKNS_5ColorEii
-__ZN7WebCore15GraphicsContext8fillRectERKNS_9FloatRectERKNS_5ColorE
-__ZNK7WebCore12RenderObject24selectionForegroundColorEv
-__ZNK7WebCore11RenderTheme38platformActiveSelectionForegroundColorEv
-__ZN7WebCore20CompositeEditCommand15deleteSelectionEbbbb
-__ZN7WebCore22DeleteSelectionCommandC2EPNS_8DocumentEbbbb
-__ZN7WebCore11RenderBlock21fillRightSelectionGapEPNS_12RenderObjectEiiiPS0_iiiiPKNS1_9PaintInfoE
-__ZN7WebCore21blockquoteConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore21HTMLBlockquoteElementC2EPNS_8DocumentE
-__ZNK7WebCore21HTMLBlockquoteElement17endTagRequirementEv
-__ZNK7WebCore21HTMLBlockquoteElement11tagPriorityEv
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLTableElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLTableElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore16HTMLTableElement4rowsEv
-__ZN7WebCore23HTMLTableRowsCollectionC1EN3WTF10PassRefPtrINS_16HTMLTableElementEEE
-__ZN3KJS17staticValueGetterIN7WebCore15JSCharacterDataEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSCharacterData16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore23HTMLTableRowsCollection9itemAfterEPNS_7ElementE
-__ZN7WebCore23HTMLTableRowsCollection8rowAfterEPNS_16HTMLTableElementEPNS_19HTMLTableRowElementE
-__ZN7WebCore8isInHeadEPNS_7ElementE
-__ZN7WebCore15JSCharacterData3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore15JSCharacterData16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZNK7WebCore11RenderTable14recalcSectionsEv
-__ZN7WebCore18RenderTableSection11recalcCellsEv
-__ZNK7WebCore18RenderTableSection10numColumnsEv
-__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE6resizeEm
-__ZN7WebCore23HTMLTableRowsCollectionD1Ev
-__ZN7WebCore8Document9setDomainERKNS_6StringE
-__ZN7WebCore14SecurityOrigin16setDomainFromDOMERKNS_6StringE
-__ZN7WebCore19inputElementAltTextEv
-__ZN7WebCore18MainResourceLoader15handleEmptyLoadERKNS_4KURLEb
-__ZNK7WebCore17HTMLSelectElement6lengthEv
-__ZN7WebCore17HTMLSelectElement7optionsEv
-__ZN7WebCore21HTMLOptionsCollectionC1EN3WTF10PassRefPtrINS_17HTMLSelectElementEEE
-__ZN7WebCore32JSHTMLOptionsCollectionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore23JSHTMLOptionsCollectionC1EPN3KJS8JSObjectEPNS_21HTMLOptionsCollectionE
-__ZN7WebCore23JSHTMLOptionsCollection18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore32JSHTMLOptionsCollectionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore19createOptionWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore28JSHTMLOptionElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLOptionElementC1EPN3KJS8JSObjectEPNS_17HTMLOptionElementE
-__ZN7WebCore19JSHTMLOptionElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore19JSHTMLOptionElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSHTMLOptionElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore19JSHTMLOptionElement4implEv
-__ZN7WebCore19JSHTMLOptionElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore19JSHTMLOptionElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore17HTMLOptionElement11setSelectedEb
-__ZNK7WebCore17HTMLOptionElement5indexEv
-__ZN7WebCore22JSNamedNodesCollectionC1EPN3KJS8JSObjectERKN3WTF6VectorINS4_6RefPtrINS_4NodeEEELm0EEE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EEC2ERKS5_
-__ZN7WebCore22JSNamedNodesCollection18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore22JSNamedNodesCollection11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore30JSHTMLOptionElementConstructorC2EPN3KJS9ExecStateEPNS_8DocumentE
-__ZNK7WebCore30JSHTMLOptionElementConstructor19implementsConstructEv
-__ZN7WebCore30JSHTMLOptionElementConstructor9constructEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore17HTMLOptionElement8setValueERKNS_6StringE
-__ZN7WebCore23JSHTMLOptionsCollection3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore23JSHTMLOptionsCollection11indexSetterEPN3KJS9ExecStateEjPNS1_7JSValueEi
-__ZNK7WebCore23JSHTMLOptionsCollection4implEv
-__ZN7WebCore17selectIndexSetterEPNS_17HTMLSelectElementEPN3KJS9ExecStateEjPNS2_7JSValueE
-__ZN7WebCore19toHTMLOptionElementEPN3KJS7JSValueE
-__ZNK7WebCore19JSHTMLOptionElement9classInfoEv
-__ZN7WebCore17HTMLSelectElement9setOptionEjPNS_17HTMLOptionElementERi
-__ZN7WebCore17HTMLSelectElement3addEPNS_11HTMLElementES2_Ri
-__ZN7WebCore17HTMLSelectElement12insertBeforeEN3WTF10PassRefPtrINS_4NodeEEEPS3_Ri
-__ZN7WebCore17HTMLSelectElement11appendChildEN3WTF10PassRefPtrINS_4NodeEEERi
-__ZN7WebCore9DOMWindow7setNameERKNS_6StringE
-__ZN3KJS9MimeTypes10nameGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS8MimeType18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS17staticValueGetterINS_8MimeTypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK3KJS8MimeType16getValuePropertyEPNS_9ExecStateEi
-__ZNK7WebCore10CachedPage9timeStampEv
-__ZN7WebCore10CachedPage14documentLoaderEv
-__ZN7WebCore14DocumentLoader18loadFromCachedPageEN3WTF10PassRefPtrINS_10CachedPageEEE
-__ZN7WebCore14DocumentLoader12setCommittedEb
-__ZN7WebCore10CachedPage22cachedPagePlatformDataEv
-__ZN7WebCore11FrameLoader4openERNS_10CachedPageE
-__ZN7WebCore10CachedPage7restoreEPNS_4PageE
-__ZN3KJS6Window14resumeTimeoutsEPN7WebCore14PausedTimeoutsE
-__ZN7WebCore19AnimationController16resumeAnimationsEv
-__ZN7WebCore12EventHandler17setMousePressNodeEN3WTF10PassRefPtrINS_4NodeEEE
-__ZN7WebCore8Document19didRestoreFromCacheEv
--[WebCoreFrameBridge reapplyStylesForDeviceType:]
-__ZN7WebCore9FrameView12setMediaTypeERKNS_6StringE
-__ZNK7WebCore17StyleMultiColDataeqERKS0_
-__ZNK7WebCore14DocumentLoader9responsesEv
-__ZN7WebCore11FrameLoader19requestFromDelegateERNS_15ResourceRequestERmRNS_13ResourceErrorE
-__ZN7WebCore4KURLaSERKS0_
-__ZN7WebCore19ResourceRequestBaseD2Ev
-__ZN7WebCore11FrameLoader29sendRemainingDelegateMessagesEmRKNS_16ResourceResponseEiRKNS_13ResourceErrorE
-__ZN7WebCore28JSHTMLOptionElementPrototypeD0Ev
-__ZN3WTF6VectorIbLm0EE6shrinkEm
-__ZNK7WebCore10HTMLParser8isInlineEPNS_4NodeE
-__ZN7WebCore9PopupMenuD2Ev
-__ZN7WebCore10IconLoaderD1Ev
-__ZN7WebCore31JSHTMLParagraphElementPrototypeD0Ev
-__ZN7WebCore19alternateFamilyNameERKNS_12AtomicStringE
-__ZN7WebCore15HTMLFormElement12parseEnctypeERKNS_6StringE
-__ZN7WebCore19HTMLTextAreaElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore19HTMLTextAreaElement15childrenChangedEb
-__ZNK7WebCore19HTMLTextAreaElement12defaultValueEv
-__ZN7WebCore19HTMLTextAreaElement8setValueERKNS_6StringE
-__ZN7WebCore16DeprecatedString7replaceERKS0_S2_
-__ZN7WebCore21createTextAreaWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore21JSHTMLTextAreaElementC1EPN3KJS8JSObjectEPNS_19HTMLTextAreaElementE
-__ZNK7WebCore19HTMLTextAreaElement14isEnumeratableEv
-__ZN7WebCore21JSHTMLTextAreaElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore21JSHTMLTextAreaElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSHTMLTextAreaElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore19HTMLTextAreaElement14selectionStartEv
-__ZN7WebCore14RenderThemeMac13paintTextAreaEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore19HTMLTextAreaElement19defaultEventHandlerEPNS_5EventE
-__ZNK7WebCore19HTMLTextAreaElement16isMouseFocusableEv
-__ZNK7WebCore19HTMLTextAreaElement20shouldUseInputMethodEv
-__ZN7WebCore13RootInlineBox23closestLeafChildForXPosEib
-__ZN3WTF6VectorItLm1024EE14expandCapacityEmPKt
-__ZN3WTF6VectorItLm1024EE14expandCapacityEm
-__ZN3WTF6VectorItLm1024EE15reserveCapacityEm
-__ZN7WebCore5Frame23textDidChangeInTextAreaEPNS_7ElementE
-+[DOMHTMLTextAreaElement(WebCoreInternal) _wrapHTMLTextAreaElement:]
--[DOMHTMLTextAreaElement form]
--[DOMHTMLTextAreaElement(FormPromptAdditions) _isEdited]
-__ZN7WebCore8RenderBR9inlineBoxEiNS_9EAffinityE
-__ZN7WebCore11RenderBlock26fillHorizontalSelectionGapEPNS_12RenderObjectEiiiiPKNS1_9PaintInfoE
-__ZN7WebCore8RenderBR13selectionRectEb
-__ZNK7WebCore8Position19isRenderedCharacterEv
-__ZN7WebCore14preConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore14HTMLPreElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore14HTMLPreElement17endTagRequirementEv
-__ZNK7WebCore14HTMLPreElement11tagPriorityEv
-__ZNK7WebCore4Font10spaceWidthEv
-__ZNK7WebCore4Node11textContentEb
-__ZN7WebCore6JSNode16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore4Node14setTextContentERKNS_6StringERi
-__ZN3KJS17staticValueGetterIN7WebCore19JSHTMLScriptElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSHTMLScriptElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore17HTMLScriptElement3srcEv
-__ZN7WebCore20HTMLFrameElementBase7setNameERKNS_6StringE
-__ZN7WebCore17HTMLIFrameElement8setWidthERKNS_6StringE
-__ZN7WebCore17HTMLIFrameElement9setHeightERKNS_6StringE
-__ZN7WebCore20HTMLFrameElementBase14setMarginWidthERKNS_6StringE
-__ZN7WebCore20HTMLFrameElementBase15setMarginHeightERKNS_6StringE
-__ZN7WebCore20HTMLFrameElementBase14setFrameBorderERKNS_6StringE
-__ZN7WebCore20HTMLFrameElementBase12setScrollingERKNS_6StringE
+__ZN7WebCoreL10isHTTPOnlyEP12NSHTTPCookie
+__ZN7WebCore33jsDOMWindowHTMLElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13JSHTMLElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore23getCachedDOMConstructorEPN3JSC9ExecStateEPKNS0_9ClassInfoE
+__ZN7WebCore19cacheDOMConstructorEPN3JSC9ExecStateEPKNS0_9ClassInfoEPNS0_8JSObjectE
+__ZN7WebCoreL27createHTMLDivElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore16JSHTMLDivElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSHTMLDivElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14HTMLDivElementEEE
+__ZN7WebCore16JSHTMLDivElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14HTMLDivElementEEE
+__ZN7WebCore16JSHTMLDivElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL15formConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCoreL28createHTMLFormElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore17JSHTMLFormElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSHTMLFormElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLFormElementEEE
+__ZN7WebCore17JSHTMLFormElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLFormElementEEE
+__ZN7WebCore17JSHTMLFormElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore17JSHTMLFormElement18canGetItemsForNameEPN3JSC9ExecStateEPNS_15HTMLFormElementERKNS1_10IdentifierE
+__ZN7WebCore15HTMLFormElement16getNamedElementsERKNS_12AtomicStringERN3WTF6VectorINS4_6RefPtrINS_4NodeEEELm0EEE
+__ZNK7WebCore14HTMLCollection10namedItemsERKNS_12AtomicStringERN3WTF6VectorINS4_6RefPtrINS_4NodeEEELm0EEE
+__ZNK7WebCore18HTMLFormCollection15updateNameCacheEv
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS_6VectorIPNS1_7ElementELm0EEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSB_IS8_EE
+__ZN7WebCore15HTMLFormElement15elementForAliasERKNS_12AtomicStringE
+__ZN7WebCore41jsDocumentPrototypeFunctionCreateTextNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16toJSNewlyCreatedEPN3JSC9ExecStateEPNS_4TextE
+__ZN7WebCore6JSText15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSCharacterDataPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSCharacterData15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore6JSTextC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_4TextEEE
+__ZN7WebCore6JSTextC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_4TextEEE
+__ZN7WebCore15JSCharacterDataC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13CharacterDataEEE
+__ZNK7WebCore16JSHTMLDivElement9classInfoEv
+__ZNK7WebCore6JSText9classInfoEv
+__ZN7WebCore4Node16insertedIntoTreeEb
+__ZN7WebCore16JSHTMLDivElementD1Ev
+__ZThn8_N7WebCore14HTMLDivElementD0Ev
+__ZN7WebCore17JSHTMLFormElementD1Ev
+__ZThn8_N7WebCore15HTMLFormElementD0Ev
+__ZN7WebCore15HTMLFormElementD0Ev
+__ZN7WebCore15FormDataBuilderD1Ev
+__ZN7WebCore15FormDataBuilderD2Ev
+__ZNK7WebCore26CachedScriptSourceProvider8getRangeEii
+__ZN7WebCore26jsDOMWindowNodeConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore6JSNode14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore17JSNodeConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18jsNodeELEMENT_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsDOMWindowElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9JSElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore32setJSDOMWindowElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN3JSC8JSObject9putDirectERKNS_10IdentifierENS_7JSValueEj
+__ZNK7WebCore20JSElementConstructor9classInfoEv
+__ZN7WebCore20JSElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27jsDOMWindowEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore7JSEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore18JSEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24JSHTMLElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore39jsDOMWindowPrototypeFunctionSetIntervalEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11JSDOMWindow11setIntervalEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore15ScheduledAction6createEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore15ScheduledActionC1EN3JSC7JSValueERKNS1_7ArgListE
+__ZN7WebCore15ScheduledActionC2EN3JSC7JSValueERKNS1_7ArgListE
+__ZN7WebCore9DOMWindow11setIntervalEPNS_15ScheduledActionEi
+__ZNK7WebCore9DOMWindow22scriptExecutionContextEv
+__ZN7WebCore8DOMTimer7installEPNS_22ScriptExecutionContextEPNS_15ScheduledActionEib
+__ZN7WebCore8DOMTimerC1EPNS_22ScriptExecutionContextEPNS_15ScheduledActionEib
+__ZN7WebCore8DOMTimerC2EPNS_22ScriptExecutionContextEPNS_15ScheduledActionEib
+__ZN7WebCore15ActiveDOMObjectC2EPNS_22ScriptExecutionContextEPv
+__ZN7WebCore22ScriptExecutionContext22createdActiveDOMObjectEPNS_15ActiveDOMObjectEPv
+__ZN3WTF7HashMapIPN7WebCore15ActiveDOMObjectEPvNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS7_IS4_EEE3addERKS3_RKS4_
+__ZN3WTF9HashTableIPN7WebCore15ActiveDOMObjectESt4pairIS3_PvENS_18PairFirstExtractorIS6_EENS_7PtrHashIS3_EENS_14PairHashTraitsI
+__ZN7WebCore22ScriptExecutionContext10addTimeoutEiPNS_8DOMTimerE
+__ZN3WTF7HashMapIiPN7WebCore8DOMTimerENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3setERKiRKS3_
+__ZN3WTF9HashTableIiSt4pairIiPN7WebCore8DOMTimerEENS_18PairFirstExtractorIS5_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTrai
+__ZN7WebCore37jsDOMWindowHTMLFormElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLFormElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLFormElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSHTMLFormElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore38jsDOMWindowHTMLInputElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLInputElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLInputElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSHTMLInputElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore39jsDOMWindowHTMLSelectElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLSelectElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSHTMLSelectElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore30JSHTMLSelectElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore41jsDOMWindowHTMLTextAreaElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSHTMLTextAreaElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore30JSHTMLTextAreaElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSHTMLTextAreaElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore32JSHTMLTextAreaElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore21jsDocumentDefaultViewEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_9DOMWindowE
+__ZN7WebCore18jsLocationHostnameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Location8hostnameEv
+__ZN7WebCore19setJSDocumentCookieEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore8Document9setCookieERKNS_6StringE
+__ZN7WebCore10setCookiesEPNS_8DocumentERKNS_4KURLERKNS_6StringE
+__ZThn32_NK7WebCore8DOMTimer18hasPendingActivityEv
+__ZNK7WebCore8DOMTimer18hasPendingActivityEv
+__ZN7WebCore14jsLocationHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Location4hrefEv
+__ZNK7WebCore4KURL7hasPathEv
+__ZNK7WebCore4KURL9prettyURLEv
+__ZN7WebCore16jsDocumentImagesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8Document6imagesEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14HTMLCollectionE
+__ZN7WebCore16JSHTMLCollection15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSHTMLCollectionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14HTMLCollectionEEE
+__ZN7WebCore16JSHTMLCollectionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14HTMLCollectionEEE
+__ZN7WebCore16JSHTMLCollection18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSHTMLCollectionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22jsHTMLCollectionLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSHTMLCollection18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore16JSHTMLCollection11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore21jsHTMLImageElementSrcEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement3srcEv
+__ZN7WebCoreL28createHTMLLinkElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore17JSHTMLLinkElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSHTMLLinkElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLLinkElementEEE
+__ZN7WebCore17JSHTMLLinkElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLLinkElementEEE
+__ZN7WebCore17JSHTMLLinkElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore21jsHTMLLinkElementHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLLinkElement4hrefEv
+__ZNK7WebCore17JSHTMLLinkElement9classInfoEv
+__ZN7WebCore19JSHTMLIFrameElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22jsHTMLIFrameElementSrcEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLFrameElementBase3srcEv
+__ZN7WebCore28JSHTMLIFrameElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore19JSHTMLIFrameElement9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore23JSHTMLOptionsCollectionEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore23JSHTMLOptionsCollection16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore23JSHTMLOptionsCollection6lengthEPN3KJS9ExecStateE
-__ZN7WebCore28JSHTMLIFrameElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm10EE14expandCapacityEmPKS4_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm10EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm10EE15reserveCapacityEm
-__ZNK7WebCore16DeprecatedString8toUShortEPbi
-__ZNK7WebCore16DeprecatedString6toUIntEPbi
-__ZSt13binary_searchIPKttEbT_S2_RKT0_
-__ZSt11lower_boundIPKttET_S2_S2_RKT0_
-__ZN7WebCore10HTMLParser23noembedCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore5Frame15sendResizeEventEv
-__ZN7WebCore17HTMLAnchorElement9setTargetERKNS_6StringE
-__ZN7WebCore18JSHTMLUListElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore15RenderContainer28removeLeftoverAnonymousBlockEPNS_11RenderBlockE
-__ZNK7WebCore17HTMLAnchorElement4typeEv
-__ZNK7WebCore17HTMLAnchorElement8protocolEv
-__ZN7WebCore17HTMLObjectElement19removedFromDocumentEv
-__ZN7WebCore17JSHTMLLinkElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore17JSHTMLLinkElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore15HTMLLinkElement11setDisabledEb
-__ZN7WebCore15HTMLLinkElement16setDisabledStateEb
-__ZN7WebCore19JSHTMLAnchorElement14getConstructorEPN3KJS9ExecStateE
-__ZN3KJS17staticValueGetterIN7WebCore16JSHTMLDivElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSHTMLDivElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore16JSHTMLDivElement14getConstructorEPN3KJS9ExecStateE
-__ZN3KJS17staticValueGetterIN7WebCore15JSHTMLLIElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSHTMLLIElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore15JSHTMLLIElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore19tableColConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore19HTMLTableColElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore19HTMLTableColElement17endTagRequirementEv
-__ZNK7WebCore19HTMLTableColElement11tagPriorityEv
-__ZNK7WebCore19HTMLTableColElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore19HTMLTableColElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore19HTMLTableColElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore13JSXPathResult14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore22JSXPathResultPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore24JSXPathResultConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore24JSXPathResultConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore24JSXPathResultConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore35jsDocumentPrototypeFunctionEvaluateEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore17toXPathNSResolverEPN3KJS7JSValueE
-__ZN7WebCore23JSCustomXPathNSResolver6createEPN3KJS9ExecStateEPNS1_7JSValueE
-__ZN7WebCore13toXPathResultEPN3KJS7JSValueE
+__ZN7WebCore10JSNodeList18canGetItemsForNameEPN3JSC9ExecStateEPNS_8NodeListERKNS1_10IdentifierE
+__ZNK7WebCore15DynamicNodeList12itemWithNameERKNS_12AtomicStringE
+__ZN7WebCore19JSNodeListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore14jsLocationHostEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Location4hostEv
+__ZN7WebCore22jsHTMLElementClassNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSHTMLDivElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore36jsDOMWindowXMLHttpRequestConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow14xmlHttpRequestEPN3JSC9ExecStateE
+__ZN7WebCore27JSXMLHttpRequestConstructorC1EPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectE
+__ZN7WebCore27JSXMLHttpRequestConstructorC2EPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectE
+__ZN7WebCore25JSXMLHttpRequestPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSXMLHttpRequest15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSXMLHttpRequestConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCoreL23constructXMLHttpRequestEPN3JSC9ExecStateEPNS0_8JSObjectERKNS0_7ArgListE
+__ZNK7WebCore27JSXMLHttpRequestConstructor22scriptExecutionContextEv
+__ZN7WebCore14XMLHttpRequestC1EPNS_22ScriptExecutionContextE
+__ZN7WebCore14XMLHttpRequestC2EPNS_22ScriptExecutionContextE
+__ZN7WebCoreL34initializeXMLHttpRequestStaticDataEv
+__ZN7WebCore24XMLHttpRequestStaticDataC1Ev
+__ZN7WebCore24XMLHttpRequestStaticDataC2Ev
+__ZN7WebCore16JSXMLHttpRequestC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14XMLHttpRequestEEE
+__ZN7WebCore16JSXMLHttpRequestC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14XMLHttpRequestEEE
+__ZN7WebCore16JSXMLHttpRequest18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL24getJSXMLHttpRequestTableEPN3JSC9ExecStateE
+__ZN7WebCore25getHashTableForGlobalDataERN3JSC12JSGlobalDataEPKNS0_9HashTableE
+__ZN7WebCore21DOMObjectHashTableMap6mapForERN3JSC12JSGlobalDataE
+__ZN3WTF9HashTableIPKN3JSC9HashTableESt4pairIS4_S2_ENS_18PairFirstExtractorIS6_EENS_7PtrHashIS4_EENS_14PairHashTraitsINS_10Hash
+__ZN3WTF7HashMapIPKN3JSC9HashTableES2_NS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS7_IS2_EEE3setERKS4_RS3_
+__ZN7WebCore26jsXMLHttpRequestReadyStateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14XMLHttpRequest10readyStateEv
+__ZN7WebCore25JSXMLHttpRequestPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL33getJSXMLHttpRequestPrototypeTableEPN3JSC9ExecStateE
+__ZN7WebCore37jsXMLHttpRequestPrototypeFunctionOpenEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16JSXMLHttpRequest9classInfoEv
+__ZN7WebCore16JSXMLHttpRequest4openEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore14XMLHttpRequest22scriptExecutionContextEv
+__ZThn88_NK7WebCore8Document18virtualCompleteURLERKNS_6StringE
+__ZNK7WebCore8Document18virtualCompleteURLERKNS_6StringE
+__ZN7WebCore14XMLHttpRequest4openERKNS_6StringERKNS_4KURLEbRi
+__ZN7WebCore14XMLHttpRequest13internalAbortEv
+__ZN7WebCore14XMLHttpRequest13clearResponseEv
+__ZN7WebCore14XMLHttpRequest12clearRequestEv
+__ZN7WebCoreL12isValidTokenERKNS_6StringE
+__ZN7WebCore14XMLHttpRequest11changeStateENS0_5StateE
+__ZN7WebCore14XMLHttpRequest28callReadyStateChangeListenerEv
+__ZN7WebCore14XMLHttpRequest29dispatchReadyStateChangeEventEv
+__ZN7WebCore14XMLHttpRequest13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERi
+__ZNK3WTF7HashMapIN7WebCore12AtomicStringENS_6VectorINS_6RefPtrINS1_13EventListenerEEELm0EEENS1_16AtomicStringHashENS_10HashTra
+__ZN7WebCore38jsDOMWindowPrototypeFunctionSetTimeoutEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11JSDOMWindow10setTimeoutEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore9DOMWindow10setTimeoutEPNS_15ScheduledActionEi
+__ZN7WebCore16JSXMLHttpRequest3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore37setJSXMLHttpRequestOnreadystatechangeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore49jsXMLHttpRequestPrototypeFunctionSetRequestHeaderEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSXMLHttpRequest16setRequestHeaderEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore14XMLHttpRequest16setRequestHeaderERKNS_12AtomicStringERKNS_6StringERi
+__ZNK7WebCore14XMLHttpRequest19isSafeRequestHeaderERKNS_6StringE
+__ZN7WebCore14XMLHttpRequest24setRequestHeaderInternalERKNS_12AtomicStringERKNS_6StringE
+__ZN3WTF7HashMapIN7WebCore12AtomicStringENS1_6StringENS1_15CaseFoldingHashENS_10HashTraitsIS2_EENS5_IS3_EEE3addERKS2_RKS3_
+__ZN7WebCore37jsXMLHttpRequestPrototypeFunctionSendEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSXMLHttpRequest4sendEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore14XMLHttpRequest4sendERi
+__ZN7WebCore14XMLHttpRequest4sendERKNS_6StringERi
+__ZN7WebCore14XMLHttpRequest8initSendERi
+__ZN7WebCore14XMLHttpRequest13createRequestERi
+__ZN7WebCore14XMLHttpRequest22dispatchLoadStartEventEv
+__ZN7WebCore14XMLHttpRequest35dispatchXMLHttpRequestProgressEventEPNS_13EventListenerERKNS_12AtomicStringEbjj
+__ZN7WebCore27XMLHttpRequestProgressEventD0Ev
+__ZNK7WebCore14SecurityOrigin10canRequestERKNS_4KURLE
+__ZNK7WebCore14SecurityOrigin20isSameSchemeHostPortEPKS0_
+__ZN7WebCore14XMLHttpRequest21makeSameOriginRequestERi
+__ZN7WebCore19ResourceRequestBase13setHTTPMethodERKNS_6StringE
+__ZN7WebCore19ResourceRequestBase19addHTTPHeaderFieldsERKNS_13HTTPHeaderMapE
+__ZN7WebCore19ResourceRequestBase18addHTTPHeaderFieldERKNS_12AtomicStringERKNS_6StringE
+__ZN7WebCore14XMLHttpRequest25loadRequestAsynchronouslyERNS_15ResourceRequestE
+__ZN7WebCore16ThreadableLoader6createEPNS_22ScriptExecutionContextEPNS_22ThreadableLoaderClientERKNS_15ResourceRequestENS_13Loa
+__ZNK7WebCore22ScriptExecutionContext15isWorkerContextEv
+__ZN7WebCore24DocumentThreadableLoader6createEPNS_8DocumentEPNS_22ThreadableLoaderClientERKNS_15ResourceRequestENS_13LoadCallba
+__ZN7WebCore24DocumentThreadableLoaderC1EPNS_8DocumentEPNS_22ThreadableLoaderClientERKNS_15ResourceRequestENS_13LoadCallbacksEN
+__ZN7WebCore24DocumentThreadableLoaderC2EPNS_8DocumentEPNS_22ThreadableLoaderClientERKNS_15ResourceRequestENS_13LoadCallbacksEN
+__ZNK7WebCore11ContentData14dataEquivalentERKS0_
+__ZN7WebCoreL21findBeforeAfterParentEPNS_12RenderObjectE
+__ZN7WebCore11ContentData5clearEv
+__ZN7WebCore41jsDOMWindowPrototypeFunctionClearIntervalEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow13clearIntervalEi
+__ZN7WebCore8DOMTimer10removeByIdEPNS_22ScriptExecutionContextEi
+__ZN7WebCore22ScriptExecutionContext11findTimeoutEi
+__ZNK3WTF7HashMapIiPN7WebCore8DOMTimerENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3getERKi
+__ZN7WebCore8DOMTimerD0Ev
+__ZN7WebCore22ScriptExecutionContext13removeTimeoutEi
+__ZN7WebCore15ActiveDOMObjectD2Ev
+__ZN7WebCore22ScriptExecutionContext24destroyedActiveDOMObjectEPNS_15ActiveDOMObjectE
+__ZN7WebCore16jsNodeParentNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL29createHTMLLabelElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLLabelElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLLabelElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLLabelElementEEE
+__ZN7WebCore18JSHTMLLabelElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLLabelElementEEE
+__ZN7WebCore18JSHTMLLabelElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16jsElementTagNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore48jsElementPrototypeFunctionGetElementsByClassNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore18JSHTMLLabelElement9classInfoEv
+__ZN7WebCore4Node22getElementsByClassNameERKNS_6StringE
+__ZN3WTF7HashMapIN7WebCore6StringEPNS1_15DynamicNodeList6CachesENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3addERKS2_RKS5
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS1_15DynamicNodeList6CachesEENS_18PairFirstExtractorIS7_EENS1_10StringHashENS_
+__ZN7WebCore13ClassNodeListC1EN3WTF10PassRefPtrINS_4NodeEEERKNS_6StringEPNS_15DynamicNodeList6CachesE
+__ZN7WebCore13ClassNodeListC2EN3WTF10PassRefPtrINS_4NodeEEERKNS_6StringEPNS_15DynamicNodeList6CachesE
+__ZNK7WebCore13ClassNodeList11nodeMatchesEPNS_7ElementE
+__ZN7WebCore14ClassNamesData11containsAllERS0_
+__ZN7WebCore16jsNodeFirstChildEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore6JSText18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore15JSCharacterData18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore15jsNodeNodeValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSCharacterData3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore18setJSNodeNodeValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore13CharacterData12setNodeValueERKNS_6StringERi
+__ZN7WebCore13CharacterData7setDataERKNS_6StringERi
+__ZN7WebCore13CharacterData21dispatchModifiedEventEPNS_10StringImplE
+__ZN7WebCore8Document11textRemovedEPNS_4NodeEjj
+__ZN7WebCore8Document13removeMarkersEPNS_4NodeEjiNS_14DocumentMarker10MarkerTypeE
+__ZN7WebCore8Document12shiftMarkersEPNS_4NodeEjiNS_14DocumentMarker10MarkerTypeE
+__ZN7WebCore12RenderObject12removeLayersEPNS_11RenderLayerE
+__ZN7WebCore27RenderTextControlInnerBlockD0Ev
+__ZN7WebCore27RenderTextControlSingleLineD0Ev
+__ZN7WebCore17RenderTextControlD2Ev
+__ZThn8_N7WebCore27TextControlInnerTextElementD0Ev
+__ZN7WebCore27TextControlInnerTextElementD0Ev
+__ZN7WebCore14HTMLDivElementD2Ev
+__ZN3WTF10RefCountedIN7WebCore16SharedFontFamilyEE5derefEv
+__ZN7WebCore38jsElementPrototypeFunctionGetAttributeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore7Element12getAttributeERKNS_6StringE
+__ZThn8_N7WebCore23TextControlInnerElementD0Ev
+__ZN7WebCore23TextControlInnerElementD0Ev
+__ZN7WebCore7Element19removedFromDocumentEv
+__ZN7WebCore13ContainerNode19removedFromDocumentEv
+__ZN7WebCore4Node19removedFromDocumentEv
+__ZN7WebCore13ContainerNode15removedFromTreeEb
+__ZN7WebCore31SearchFieldResultsButtonElementD0Ev
+__ZN7WebCore30SearchFieldCancelButtonElementD0Ev
+__ZNK7WebCore14RenderThemeMac39adjustSearchFieldResultsDecorationStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZN7WebCore27RenderTextControlSingleLine27updatePlaceholderVisibilityEv
+__ZN7WebCoreL23replaceChildrenWithTextEPNS_11HTMLElementERKNS_6StringERi
+__ZN7WebCoreL30createHTMLAnchorElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLAnchorElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLAnchorElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLAnchorElementEEE
+__ZN7WebCore19JSHTMLAnchorElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLAnchorElementEEE
+__ZN7WebCore19JSHTMLAnchorElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore26setJSHTMLAnchorElementHrefEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement7setHrefERKNS_12AtomicStringE
+__ZN7WebCore19JSHTMLAnchorElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28JSHTMLAnchorElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore19JSHTMLAnchorElement9classInfoEv
+__ZN7WebCore25setJSHTMLElementInnerHTMLEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11HTMLElement12setInnerHTMLERKNS_6StringERi
+__ZN7WebCore11HTMLElement24createContextualFragmentERKNS_6StringE
+__ZN7WebCore16DocumentFragmentC1EPNS_8DocumentE
+__ZN7WebCore16DocumentFragmentC2EPNS_8DocumentE
+__ZN7WebCore25parseHTMLDocumentFragmentERKNS_6StringEPNS_16DocumentFragmentE
+__ZN7WebCore13HTMLTokenizerC1EPNS_16DocumentFragmentE
+__ZN7WebCore13HTMLTokenizerC2EPNS_16DocumentFragmentE
+__ZN7WebCore10HTMLParserC1EPNS_16DocumentFragmentE
+__ZN7WebCore10HTMLParserC2EPNS_16DocumentFragmentE
+__ZN7WebCore13HTMLTokenizer19setForceSynchronousEb
+__ZN7WebCore16DocumentFragment16childTypeAllowedENS_4Node8NodeTypeE
+__ZN7WebCore13HTMLTokenizerD1Ev
+__ZN7WebCore13HTMLTokenizerD2Ev
+__ZN7WebCoreL27replaceChildrenWithFragmentEPNS_11HTMLElementEN3WTF10PassRefPtrINS_16DocumentFragmentEEERi
+__ZNK7WebCore16DocumentFragment8nodeTypeEv
+__ZN7WebCore13ContainerNode11removeChildEPNS_4NodeERi
+__ZN7WebCoreL15willRemoveChildEPNS_4NodeE
+__ZN7WebCore8Document17nodeWillBeRemovedEPNS_4NodeE
+__ZN7WebCore19SelectionController17nodeWillBeRemovedEPNS_4NodeE
+__ZThn8_N7WebCore16DocumentFragmentD0Ev
+__ZN7WebCore16DocumentFragmentD0Ev
+__ZN7WebCore13ContainerNode12replaceChildEN3WTF10PassRefPtrINS_4NodeEEEPS3_Rib
+__ZN7WebCore4Node17checkReplaceChildEPS0_S1_Ri
+__ZN7WebCore4Node15canReplaceChildEPS0_S1_
+__ZN7WebCoreL11appendASCIIERKNS_6StringEPKcmRN3WTF6VectorIcLm512EEE
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm4EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm4EE14expandCapacityEm
+__ZN7WebCore16jsNodeChildNodesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4Node10childNodesEv
+__ZN7WebCore13ChildNodeListC1EN3WTF10PassRefPtrINS_4NodeEEEPNS_15DynamicNodeList6CachesE
+__ZN7WebCore13ChildNodeListC2EN3WTF10PassRefPtrINS_4NodeEEEPNS_15DynamicNodeList6CachesE
+__ZNK7WebCore13ChildNodeList6lengthEv
+__ZN7WebCore14jsLocationHashEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Location4hashEv
+__ZNK7WebCore4KURL3refEv
+__ZN7WebCore49jsDocumentPrototypeFunctionGetElementsByClassNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4Node13canLazyAttachEv
+__ZN7WebCore18jsLocationPathnameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Location8pathnameEv
+__ZN7WebCore33jsDOMWindowXPathResultConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13JSXPathResult14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore24JSXPathResultConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore22JSXPathResultPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore13JSXPathResult15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSXPathResultConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore39jsXPathResultORDERED_NODE_SNAPSHOT_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsDocumentPrototypeFunctionEvaluateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore17toXPathNSResolverEN3JSC7JSValueE
+__ZN7WebCore23JSCustomXPathNSResolver6createEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore13toXPathResultEN3JSC7JSValueE
__ZN7WebCore8Document8evaluateERKNS_6StringEPNS_4NodeEPNS_15XPathNSResolverEtPNS_11XPathResultERi
__ZN7WebCore14XPathEvaluator8evaluateERKNS_6StringEPNS_4NodeEPNS_15XPathNSResolverEtPNS_11XPathResultERi
__ZN7WebCore5XPath18isValidContextNodeEPNS_4NodeE
__ZN7WebCore14XPathEvaluator16createExpressionERKNS_6StringEPNS_15XPathNSResolverERi
__ZN7WebCore15XPathExpression16createExpressionERKNS_6StringEPNS_15XPathNSResolverERi
+__ZN7WebCore5XPath6ParserC1Ev
__ZN7WebCore5XPath6ParserC2Ev
__ZN7WebCore5XPath6Parser5resetERKNS_6StringE
__ZN7WebCore5XPath6Parser14parseStatementERKNS_6StringEN3WTF10PassRefPtrINS_15XPathNSResolverEEERi
__Z12xpathyyparsePv
-__Z10xpathyylexP7YYSTYPE
__ZN7WebCore5XPath6Parser3lexEPv
__ZN7WebCore5XPath6Parser9nextTokenEv
__ZN7WebCore5XPath6Parser17nextTokenInternalEv
@@ -5843,10 +6397,17 @@ __ZN7WebCore5XPath6Parser6skipWSEv
__ZN7WebCore5XPath6Parser13peekCurHelperEv
__ZN7WebCore5XPath6Parser15peekAheadHelperEv
__ZN7WebCore5XPath6Parser19makeTokenAndAdvanceEii
+__ZN7WebCore5XPath4StepC1ENS1_4AxisERKNS1_8NodeTestERKN3WTF6VectorIPNS0_9PredicateELm0EEE
__ZN7WebCore5XPath4StepC2ENS1_4AxisERKNS1_8NodeTestERKN3WTF6VectorIPNS0_9PredicateELm0EEE
+__ZN3WTF6VectorIPN7WebCore5XPath9PredicateELm0EEC1ERKS5_
__ZN3WTF6VectorIPN7WebCore5XPath9PredicateELm0EEC2ERKS5_
__ZN7WebCore5XPath6Parser17registerParseNodeEPNS0_9ParseNodeE
__ZN3WTF7HashSetIPN7WebCore5XPath9ParseNodeENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN3WTF9HashTableIPN7WebCore5XPath9ParseNodeES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6expandE
+__ZN3WTF9HashTableIPN7WebCore5XPath9ParseNodeES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6rehashE
+__ZN3WTF9HashTableIPN7WebCore5XPath9ParseNodeES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E13alloca
+__ZN3WTF9HashTableIPN7WebCore5XPath9ParseNodeES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E15deallo
+__ZN7WebCore5XPath12LocationPathC1Ev
__ZN7WebCore5XPath12LocationPathC2Ev
__ZN7WebCore5XPath10ExpressionC2Ev
__ZN7WebCore5XPath12LocationPath10appendStepEPNS0_4StepE
@@ -5854,15 +6415,26 @@ __ZN3WTF6VectorIPN7WebCore5XPath4StepELm0EE14expandCapacityEmPKS4_
__ZN3WTF6VectorIPN7WebCore5XPath4StepELm0EE14expandCapacityEm
__ZN3WTF6VectorIPN7WebCore5XPath4StepELm0EE15reserveCapacityEm
__ZN7WebCore5XPath6Parser19unregisterParseNodeEPNS0_9ParseNodeE
+__ZN3WTF9HashTableIPN7WebCore5XPath9ParseNodeES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E4findIS4
+__ZN3WTF9HashTableIPN7WebCore5XPath9ParseNodeES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E47remove
+__ZN3WTF9HashTableIPN7WebCore5XPath9ParseNodeES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6removeE
__ZNK7WebCore5XPath6Parser17isOperatorContextEv
__ZN7WebCore5XPath6Parser14registerStringEPNS_6StringE
__ZN3WTF7HashSetIPN7WebCore6StringENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore6StringES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore6StringES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore6StringES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTableEi
+__ZN3WTF9HashTableIPN7WebCore6StringES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTable
__ZN7WebCore5XPath6Parser9lexNCNameERNS_6StringE
-__ZN7WebCore5XPath7charCatEt
-__ZN7WebCore5XPath14isNodeTypeNameERKNS_6StringE
+__ZN7WebCore5XPathL7charCatEt
+__ZN7WebCore5XPathL14isNodeTypeNameERKNS_6StringE
__ZN7WebCore5XPath6Parser9lexStringEv
+__ZN7WebCore5XPath16StringExpressionC1ERKNS_6StringE
__ZN7WebCore5XPath16StringExpressionC2ERKNS_6StringE
__ZN7WebCore5XPath6Parser12deleteStringEPNS_6StringE
+__ZN3WTF9HashTableIPN7WebCore6StringES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22Ide
+__ZN3WTF9HashTableIPN7WebCore6StringES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInvali
+__ZN3WTF9HashTableIPN7WebCore6StringES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
__ZN3WTF6VectorIPN7WebCore5XPath10ExpressionELm0EE14expandCapacityEmPKS4_
__ZN3WTF6VectorIPN7WebCore5XPath10ExpressionELm0EE14expandCapacityEm
__ZN3WTF6VectorIPN7WebCore5XPath10ExpressionELm0EE15reserveCapacityEm
@@ -5870,16 +6442,15 @@ __ZN7WebCore5XPath6Parser24registerExpressionVectorEPN3WTF6VectorIPNS0_10Express
__ZN3WTF7HashSetIPNS_6VectorIPN7WebCore5XPath10ExpressionELm0EEENS_7PtrHashIS7_EENS_10HashTraitsIS7_EEE3addERKS7_
__ZN7WebCore5XPath6Parser11expandQNameERKNS_6StringERS2_S5_
__ZN7WebCore5XPath14createFunctionERKNS_6StringERKN3WTF6VectorIPNS0_10ExpressionELm0EEE
-__ZN7WebCore5XPath17createFunctionMapEv
+__ZN7WebCore5XPathL17createFunctionMapEv
__ZN3WTF7HashMapIN7WebCore6StringENS1_5XPath11FunctionRecENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3setERKS2_RKS4_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_5XPath11FunctionRecEENS_18PairFirstExtractorIS7_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSC_IS6_EEEESD_E3addINS1_6StringES6_NS_17HashMapTranslatorILb0ES4_ISI_S6_ENS_18PairBaseHashTraitsINSC_ISI_EESE_EESF_SA_EEEES4_INS_17HashTableIteratorIS3_S7_S9_SA_SF_SD_EEbERKT_RKT0_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_5XPath11FunctionRecEENS_18PairFirstExtractorIS7_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSC_IS6_EEEESD_E6expandEv
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_5XPath11FunctionRecEENS_18PairFirstExtractorIS7_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSC_IS6_EEEESD_E4findIS3_NS_22IdentityHashTranslatorIS3_S7_SA_EEEENS_17HashTableIteratorIS3_S7_S9_SA_SF_SD_EERKT_
-__ZN7WebCore5XPath15createFunConcatEv
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS1_5XPath11FunctionRecEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14Pair
+__ZN7WebCore5XPathL15createFunConcatEv
__ZN7WebCore5XPath8Function12setArgumentsERKN3WTF6VectorIPNS0_10ExpressionELm0EEE
__ZN7WebCore5XPath6Parser22deleteExpressionVectorEPN3WTF6VectorIPNS0_10ExpressionELm0EEE
__ZN3WTF6VectorIPN7WebCore5XPath10ExpressionELm0EE6shrinkEm
-__ZN7WebCore5XPath17createFunContainsEv
+__ZN7WebCore5XPathL17createFunContainsEv
+__ZN7WebCore5XPath9PredicateC1EPNS0_10ExpressionE
__ZN7WebCore5XPath9PredicateC2EPNS0_10ExpressionE
__ZN3WTF6VectorIPN7WebCore5XPath9PredicateELm0EE14expandCapacityEmPKS4_
__ZN3WTF6VectorIPN7WebCore5XPath9PredicateELm0EE14expandCapacityEm
@@ -5889,6 +6460,8 @@ __ZN3WTF7HashSetIPNS_6VectorIPN7WebCore5XPath9PredicateELm0EEENS_7PtrHashIS7_EEN
__ZN7WebCore5XPath6Parser21deletePredicateVectorEPN3WTF6VectorIPNS0_9PredicateELm0EEE
__ZN3WTF6VectorIPN7WebCore5XPath9PredicateELm0EE6shrinkEm
__ZN7WebCore5XPath12LocationPath16optimizeStepPairEj
+__ZN3WTF9HashTableIPN7WebCore5XPath9ParseNodeES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E5clearEv
+__ZN3WTF9HashTableIPN7WebCore5XPath4Step8NodeTestES5_NS_17IdentityExtractorIS5_EENS_7PtrHashIS5_EENS_10HashTraitsIS5_EESB_E15de
__ZN7WebCore15XPathExpression8evaluateEPNS_4NodeEtPNS_11XPathResultERi
__ZN7WebCore5XPath10Expression17evaluationContextEv
__ZNK7WebCore5XPath12LocationPath8evaluateEv
@@ -5902,3361 +6475,6529 @@ __ZNK7WebCore5XPath11FunContains8evaluateEv
__ZNK7WebCore5XPath9FunConcat8evaluateEv
__ZNK7WebCore5XPath16StringExpression8evaluateEv
__ZNK7WebCore5XPath5Value8toStringEv
+__ZN3WTF6VectorItLm1024EE6appendItEEvPKT_m
__ZN7WebCore7Element18getAttributeNodeNSERKNS_6StringES3_
-__ZNK7WebCore12NamedAttrMap12getNamedItemERKNS_13QualifiedNameE
+__ZNK7WebCore12NamedNodeMap12getNamedItemERKNS_13QualifiedNameE
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_S2_ENS_18PairFirstExtractorIS4_EENS1_10StringHashENS_14PairHashTraitsINS_10HashT
__ZNK7WebCore5XPath5Value9toBooleanEv
+__ZNK7WebCore4Attr19virtualNamespaceURIEv
__ZNK7WebCore4Attr12namespaceURIEv
__ZNK7WebCore5XPath7NodeSet9firstNodeEv
__ZNK7WebCore5XPath7NodeSet4sortEv
__ZN7WebCore5XPath11stringValueEPNS_4NodeE
-__ZN7WebCore11XPathResultC2EPNS_15EventTargetNodeERKNS_5XPath5ValueE
+__ZN7WebCore11XPathResultC1EPNS_4NodeERKNS_5XPath5ValueE
+__ZN7WebCore11XPathResultC2EPNS_4NodeERKNS_5XPath5ValueE
__ZNK7WebCore5XPath5Value9toNodeSetEv
__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EEaSERKS5_
__ZN7WebCore11XPathResult9convertToEtRi
__ZN3WTF6VectorIPN7WebCore4NodeELm0EE14expandCapacityEmPKS3_
__ZN3WTF6VectorIPN7WebCore4NodeELm0EE14expandCapacityEm
__ZN3WTF6VectorIPN7WebCore4NodeELm0EE15reserveCapacityEm
-__ZN7WebCore5XPath9sortBlockEjjRN3WTF6VectorINS2_IPNS_4NodeELm0EEELm0EEEb
+__ZN7WebCore5XPathL9sortBlockEjjRN3WTF6VectorINS2_IPNS_4NodeELm0EEELm0EEEb
+__ZNK3WTF9HashTableIPN7WebCore4NodeES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E8containsIS3_NS_22
__ZN3WTF6VectorINS0_IPN7WebCore4NodeELm0EEELm0EE6shrinkEm
__ZN3WTF6VectorIPN7WebCore4NodeELm0EE6shrinkEm
+__ZN7WebCore15XPathExpressionD1Ev
__ZN7WebCore15XPathExpressionD2Ev
-__ZN7WebCore5XPath12LocationPathD1Ev
+__ZN7WebCore5XPath12LocationPathD0Ev
__ZN3WTF15deleteAllValuesIPN7WebCore5XPath4StepELm0EEEvRKNS_6VectorIT_XT0_EEE
-__ZN7WebCore5XPath4StepD1Ev
+__ZN7WebCore5XPath4StepD0Ev
__ZN3WTF15deleteAllValuesIPN7WebCore5XPath9PredicateELm0EEEvRKNS_6VectorIT_XT0_EEE
+__ZN7WebCore5XPath9PredicateD1Ev
__ZN7WebCore5XPath9PredicateD2Ev
-__ZN7WebCore5XPath8FunctionD0Ev
+__ZN7WebCore5XPath11FunContainsD0Ev
+__ZN7WebCore5XPath10ExpressionD2Ev
__ZN3WTF15deleteAllValuesIPN7WebCore5XPath10ExpressionELm0EEEvRKNS_6VectorIT_XT0_EEE
-__ZN7WebCore5XPath16StringExpressionD1Ev
+__ZN7WebCore5XPath9FunConcatD0Ev
+__ZN7WebCore5XPath16StringExpressionD0Ev
__ZN3WTF6VectorIPN7WebCore5XPath4StepELm0EE6shrinkEm
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_11XPathResultE
-__ZN7WebCore13JSXPathResultC1EPN3KJS8JSObjectEPNS_11XPathResultE
-__ZN7WebCore13JSXPathResult18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore13JSXPathResultEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore13JSXPathResult16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_11XPathResultE
+__ZN7WebCore13JSXPathResultC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11XPathResultEEE
+__ZN7WebCore13JSXPathResultC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11XPathResultEEE
+__ZN7WebCore13JSXPathResult18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27jsXPathResultSnapshotLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore11XPathResult14snapshotLengthERi
__ZNK7WebCore11XPathResult10resultTypeEv
-__ZN7WebCore22JSXPathResultPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore42jsXPathResultPrototypeFunctionSnapshotItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore22JSXPathResultPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore42jsXPathResultPrototypeFunctionSnapshotItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZNK7WebCore13JSXPathResult9classInfoEv
__ZN7WebCore11XPathResult12snapshotItemEmRi
-__ZNK7WebCore19HTMLTableColElement36canHaveAdditionalAttributeStyleDeclsEv
-__ZN7WebCore19HTMLTableColElement29additionalAttributeStyleDeclsERN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
-__ZN7WebCore14RenderTableColC2EPNS_4NodeE
-__ZN7WebCore14RenderTableCol17updateFromElementEv
-__ZN7WebCore14RenderTableCol13requiresLayerEv
-__ZNK7WebCore14RenderTableCol10isTableColEv
-__ZNK7WebCore14RenderTableCol15canHaveChildrenEv
-__ZNK7WebCore14RenderTableCol14isChildAllowedEPNS_12RenderObjectEPNS_11RenderStyleE
-__ZN7WebCore13MutationEventC2ERKNS_12AtomicStringEbbPNS_4NodeERKNS_6StringES8_S8_t
+__ZN7WebCore49jsXMLHttpRequestPrototypeFunctionOverrideMimeTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSXMLHttpRequest16overrideMimeTypeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore14XMLHttpRequest16overrideMimeTypeERKNS_6StringE
+__ZN7WebCore5XPathL18createFunLocalNameEv
+__ZN7WebCore5XPath6Parser19makeTokenAndAdvanceEiNS0_8EqTestOp6OpcodeEi
+__ZN7WebCore5XPath8EqTestOpC1ENS1_6OpcodeEPNS0_10ExpressionES4_
+__ZN7WebCore5XPath8EqTestOpC2ENS1_6OpcodeEPNS0_10ExpressionES4_
+__ZN7WebCore5XPath9LogicalOpC1ENS1_6OpcodeEPNS0_10ExpressionES4_
+__ZN7WebCore5XPath9LogicalOpC2ENS1_6OpcodeEPNS0_10ExpressionES4_
+__ZNK7WebCore5XPath9LogicalOp8evaluateEv
+__ZNK7WebCore5XPath8EqTestOp8evaluateEv
+__ZNK7WebCore5XPath12FunLocalName8evaluateEv
+__ZNK7WebCore5XPath8EqTestOp7compareERKNS0_5ValueES4_
+__ZNK7WebCore5XPath9LogicalOp14shortCircuitOnEv
+__ZN7WebCore5XPath9LogicalOpD0Ev
+__ZN7WebCore5XPath8EqTestOpD0Ev
+__ZN7WebCore5XPath12FunLocalNameD0Ev
+__ZN7WebCoreL26createHTMLLIElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore15JSHTMLLIElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSHTMLLIElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13HTMLLIElementEEE
+__ZN7WebCore15JSHTMLLIElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13HTMLLIElementEEE
+__ZN7WebCore15JSHTMLLIElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore14jsNodeNodeTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL29createHTMLUListElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLUListElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLUListElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLUListElementEEE
+__ZN7WebCore18JSHTMLUListElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLUListElementEEE
+__ZN7WebCore18JSHTMLUListElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL28createHTMLHtmlElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore17JSHTMLHtmlElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSHTMLHtmlElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLHtmlElementEEE
+__ZN7WebCore17JSHTMLHtmlElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLHtmlElementEEE
+__ZN7WebCore17JSHTMLHtmlElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18JSHTMLUListElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore14jsElementStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13StyledElement5styleEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19CSSStyleDeclarationE
+__ZN7WebCore21JSCSSStyleDeclaration15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSCSSStyleDeclarationC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19CSSStyleDeclarationEEE
+__ZN7WebCore21JSCSSStyleDeclarationC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19CSSStyleDeclarationEEE
+__ZN7WebCore21JSCSSStyleDeclaration3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore21JSCSSStyleDeclaration9customPutEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCoreL17isCSSPropertyNameERKN3JSC10IdentifierE
+__ZN7WebCoreL15cssPropertyNameERKN3JSC10IdentifierEPb
+__ZN7WebCoreL24hasCSSPropertyNamePrefixERKN3JSC10IdentifierEPKc
+__ZN7WebCore19CSSStyleDeclaration14isPropertyNameERKNS_6StringE
+__ZN7WebCore19CSSStyleDeclaration11setPropertyERKNS_6StringES3_Ri
+__ZN7WebCore10StringImpl4findEPKcib
+__ZN7WebCore19CSSStyleDeclaration11setPropertyERKNS_6StringES3_S3_Ri
+__ZN7WebCore26CSSMutableStyleDeclaration11setPropertyEiRKNS_6StringEbRi
+__ZN7WebCore34jsNodePrototypeFunctionRemoveChildEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore6JSNode11removeChildEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore12RenderInline7destroyEv
+__ZN7WebCore12RenderInlineD0Ev
+__ZN7WebCore8RenderBRD0Ev
+__ZN7WebCore14RenderListItem7destroyEv
+__ZN7WebCore16RenderListMarkerD0Ev
+__ZN7WebCore14RenderListItemD0Ev
+__ZN7WebCore11RenderBlock20removeFloatingObjectEPNS_9RenderBoxE
+__ZN7WebCore11RenderBlock22removePositionedObjectEPNS_9RenderBoxE
+__ZN7WebCore4Node21dispatchMutationEventERKNS_12AtomicStringEbN3WTF10PassRefPtrIS0_EERKNS_6StringES9_Ri
+__ZN7WebCore13MutationEventC1ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_4NodeEEERKNS_6StringESA_SA_t
+__ZN7WebCore13MutationEventC2ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_4NodeEEERKNS_6StringESA_SA_t
__ZN7WebCore25InvalidatingEventListener11handleEventEPNS_5EventEb
__ZN7WebCore11XPathResult23invalidateIteratorStateEv
+__ZN7WebCore13MutationEventD0Ev
+__ZN7WebCore8Document17removeElementByIdERKNS_12AtomicStringEPNS_7ElementE
+__ZN7WebCore16HTMLImageElement19removedFromDocumentEv
+__ZN7WebCore12HTMLDocument15removeNamedItemERKNS_12AtomicStringE
+__ZN7WebCoreL17removeItemFromMapERN3WTF7HashMapIPNS_16AtomicStringImplEiNS0_7PtrHashIS3_EENS0_10HashTraitsIS3_EENS6_IiEEEERKNS_
+__ZN7WebCore12HTMLDocument20removeExtraNamedItemERKNS_12AtomicStringE
+__ZN7WebCore23jsHTMLAnchorElementHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement4hrefEv
+__ZN7WebCore15jsHTMLElementIdEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13StyledElement20updateStyleAttributeEv
+__ZN7WebCore38jsDocumentPrototypeFunctionCreateEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document11createEventERKNS_6StringERi
+__ZN7WebCore5EventC1Ev
+__ZN7WebCore5EventC2Ev
+__ZN7WebCore7JSEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL15getJSEventTableEPN3JSC9ExecStateE
+__ZN7WebCore16JSEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL24getJSEventPrototypeTableEPN3JSC9ExecStateE
+__ZN7WebCore33jsEventPrototypeFunctionInitEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore7JSEvent9classInfoEv
+__ZN7WebCore5Event9initEventERKNS_12AtomicStringEbb
+__ZN7WebCore7JSEvent3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore36jsNodePrototypeFunctionDispatchEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7toEventEN3JSC7JSValueE
+__ZNK7WebCore13ChildNodeList4itemEj
+__ZN7WebCore15JSHTMLLIElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore32jsNodePrototypeFunctionCloneNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore18JSHTMLUListElement9classInfoEv
+__ZN7WebCore7Element9cloneNodeEb
+__ZN7WebCore7Element27cloneElementWithoutChildrenEv
+__ZN7WebCore8Document13createElementERKNS_13QualifiedNameEb
+__ZN7WebCore13StyledElement26copyNonAttributePropertiesEPKNS_7ElementE
+__ZN7WebCoreL29createHTMLOListElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLOListElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLOListElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLOListElementEEE
+__ZN7WebCore18JSHTMLOListElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLOListElementEEE
+__ZN7WebCore4Node15removedFromTreeEb
+__ZNK7WebCore15ActiveDOMObject18hasPendingActivityEv
+__ZN7WebCore16JSXMLHttpRequest4markEv
+__ZN7WebCore27JSXMLHttpRequestConstructor4markEv
+__ZN7WebCore16JSHTMLCollectionD1Ev
+__ZN7WebCore16JSHTMLCollectionD2Ev
+__ZN7WebCore18JSHTMLInputElementD1Ev
+__ZN7WebCore19JSHTMLAnchorElementD1Ev
+__ZN7WebCore13ClassNodeListD0Ev
+__ZN7WebCore13ChildNodeListD0Ev
+__ZN7WebCore6JSTextD1Ev
+__ZN7WebCore18JSHTMLLabelElementD1Ev
+__ZN7WebCore13JSXPathResultD1Ev
+__ZN7WebCore13JSXPathResultD2Ev
+__ZN7WebCore11XPathResultD1Ev
__ZN7WebCore11XPathResultD2Ev
-__ZN7WebCore27getExceptionCodeDescriptionEiRNS_24ExceptionCodeDescriptionE
-__ZN7WebCore13ExceptionBaseC2ERKNS_24ExceptionCodeDescriptionE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_16DOMCoreExceptionE
-__ZN7WebCore27JSDOMCoreExceptionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSDOMCoreExceptionC1EPN3KJS8JSObjectEPNS_16DOMCoreExceptionE
-__ZN7WebCore18JSDOMCoreException18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore27JSDOMCoreExceptionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore10RenderText22containsOnlyWhitespaceEjj
-__ZN7WebCore10JSLocation3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore31jsNodeListPrototypeFunctionItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore18JSCommentPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore9JSCommentC1EPN3KJS8JSObjectEPNS_7CommentE
-__ZN7WebCore9JSComment18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore19JSHTMLScriptElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore17HTMLScriptElement6setSrcERKNS_6StringE
-__ZN7WebCore36jsDOMWindowPrototypeFunctionScrollToEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9DOMWindow8scrollToEii
-__ZN7WebCore10MouseEventC1Ev
-__ZN7WebCore17MouseRelatedEventC2Ev
-__ZN7WebCore7UIEventC1Ev
-__ZN7WebCore8Document7anchorsEv
-__ZNK7WebCore14HTMLCollection9namedItemERKNS_6StringEb
-__ZNK7WebCore14HTMLCollection17checkForNameMatchEPNS_7ElementEbRKNS_6StringEb
-__ZN7WebCore11RenderLayer19removeOnlyThisLayerEv
-__ZN7WebCore38jsDocumentPrototypeFunctionCreateRangeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_5RangeE
-__ZN7WebCore16JSRangePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore7JSRangeC1EPN3KJS8JSObjectEPNS_5RangeE
-__ZN7WebCore7JSRange18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore16JSRangePrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore42jsRangePrototypeFunctionSelectNodeContentsEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore7JSRange9classInfoEv
-__ZN7WebCore32jsRangePrototypeFunctionCollapseEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore48jsRangePrototypeFunctionCreateContextualFragmentEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore5Range24createContextualFragmentERKNS_6StringERi
-__ZN7WebCore27JSDocumentFragmentPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSDocumentFragmentC1EPN3KJS8JSObjectEPNS_16DocumentFragmentE
-__ZNK7WebCore18JSDocumentFragment9classInfoEv
-__ZN3KJS6Window11indexGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore9FrameTree5childEj
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLEmbedElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLEmbedElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore16HTMLEmbedElement4typeEv
-__ZNK7WebCore16HTMLEmbedElement3srcEv
-__ZN7WebCore16HTMLImageElement7setNameERKNS_6StringE
-__ZN7WebCore16HTMLImageElement8setAlignERKNS_6StringE
-__ZN7WebCore16HTMLImageElement9setHspaceEi
-__ZN7WebCore16HTMLImageElement9setVspaceEi
-__ZN7WebCore30JSCSSStyleDeclarationPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore54jsCSSStyleDeclarationPrototypeFunctionGetPropertyValueEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore21JSCSSStyleDeclaration9classInfoEv
-__ZN7WebCore4Path7addRectERKNS_9FloatRectE
-__ZNK7WebCore11FrameLoader13urlsMatchItemEPNS_11HistoryItemE
-__ZNK7WebCore11HistoryItem6targetEv
-__ZN3KJS17staticValueGetterIN7WebCore17JSHTMLLinkElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSHTMLLinkElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore15HTMLLinkElement8disabledEv
-__ZNK7WebCore11HistoryItem17childItemWithNameERKNS_6StringE
-__ZN7WebCore11FrameLoader25setProvisionalHistoryItemEN3WTF10PassRefPtrINS_11HistoryItemEEE
-__ZN7WebCore18JSCommentPrototypeD0Ev
-__ZN7WebCore27JSDocumentFragmentPrototypeD0Ev
-__ZN7WebCore19HTMLTableColElementD1Ev
-__ZN7WebCore19HTMLTextAreaElement12restoreStateERKNS_6StringE
-__ZN7WebCore19HTMLTextAreaElement15setDefaultValueERKNS_6StringE
-__ZN7WebCore17HTMLOptionElement7setTextERKNS_6StringERi
-__ZN7WebCore17HTMLSelectElement8setValueERKNS_6StringE
-__ZN3KJS17staticValueGetterIN7WebCore17JSHTMLAreaElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSHTMLAreaElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore15HTMLAreaElement4hrefEv
-__ZN7WebCore12EventHandler28passMouseMoveEventToSubframeERNS_28MouseEventWithHitTestResultsEPNS_5FrameEPNS_13HitTestResultE
-__ZN7WebCore12EventHandler27passSubframeEventToSubframeERNS_28MouseEventWithHitTestResultsEPNS_5FrameEPNS_13HitTestResultE
-__ZN7WebCore11FrameLoader22updateHistoryForReloadEv
-__ZNK7WebCore13HTMLLIElement4typeEv
-__ZNK7WebCore13HTMLLIElement5valueEv
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLUListElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLUListElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore16HTMLUListElement4typeEv
-__ZNK7WebCore4Page14frameNamespaceEv
-__ZNK7WebCore8Document8nodeNameEv
-__ZN7WebCore14JSHTMLDocument14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore36jsNodePrototypeFunctionHasChildNodesEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore5Color4darkEv
-__ZN7WebCore16textBreakCurrentEPNS_17TextBreakIteratorE
-__ZN7WebCore14cookiesEnabledEPKNS_8DocumentE
-__ZN7WebCore18createTitleWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore27JSHTMLTitleElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLTitleElementC1EPN3KJS8JSObjectEPNS_16HTMLTitleElementE
-__ZN7WebCore17createMetaWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore26JSHTMLMetaElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLMetaElementC1EPN3KJS8JSObjectEPNS_15HTMLMetaElementE
-__ZN7WebCore18JSHTMLTitleElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore17JSHTMLMetaElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore16JSEventPrototype9classInfoEv
-__ZNK7WebCore7JSEvent13clipboardDataEPN3KJS9ExecStateE
-__ZNK7WebCore5Event16isClipboardEventEv
-__ZN3KJS17staticValueGetterIN7WebCore16JSEventPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSEventPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore16HTMLTableElement14isURLAttributeEPNS_9AttributeE
-__ZNK7WebCore20HTMLTableCellElement14isURLAttributeEPNS_9AttributeE
-__ZNK7WebCore7Comment8toStringEv
-__ZNK7WebCore17HTMLScriptElement14isURLAttributeEPNS_9AttributeE
-__ZNK7WebCore17HTMLIFrameElement14isURLAttributeEPNS_9AttributeE
-__ZNK7WebCore15HTMLFormElement14isURLAttributeEPNS_9AttributeE
-__ZNK7WebCore16HTMLInputElement14isURLAttributeEPNS_9AttributeE
-__ZNK7WebCore17HTMLPlugInElement5widthEv
-__ZNK7WebCore17HTMLPlugInElement6heightEv
+__ZN7WebCore25InvalidatingEventListenerD0Ev
+__ZN7WebCore17JSHTMLHtmlElementD1Ev
+__ZN7WebCore21JSCSSStyleDeclarationD1Ev
+__ZN7WebCore21JSCSSStyleDeclarationD2Ev
+__ZN7WebCore18JSHTMLUListElementD1Ev
+__ZThn8_N7WebCore16HTMLUListElementD0Ev
+__ZN7WebCore16HTMLUListElementD0Ev
+__ZN7WebCoreL31createHTMLHeadingElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore20JSHTMLHeadingElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSHTMLHeadingElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18HTMLHeadingElementEEE
+__ZN7WebCore20JSHTMLHeadingElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18HTMLHeadingElementEEE
+__ZN7WebCore20JSHTMLHeadingElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore18JSHTMLOListElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSHTMLOListElement9classInfoEv
+__ZNK7WebCore5XPath4Step15primaryNodeTypeENS1_4AxisE
+__ZN7WebCore13JSHTMLElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11HTMLElementEEE
+__ZN7WebCore22jsHTMLElementInnerHTMLEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11HTMLElement9innerHTMLEv
+__ZN7WebCore12createMarkupEPKNS_4NodeENS_13EChildrenOnlyEPN3WTF6VectorIPS0_Lm0EEE
+__ZN7WebCore17MarkupAccumulator12appendMarkupEPNS_4NodeENS_13EChildrenOnlyEPKN3WTF7HashMapIPNS_16AtomicStringImplES7_NS4_7PtrHa
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_S3_ENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTrait
+__ZN7WebCoreL17appendStartMarkupERN3WTF6VectorItLm0EEEPKNS_4NodeEPKNS_5RangeENS_23EAnnotateForInterchangeEbPNS0_7HashMapIPNS_16
+__ZN7WebCoreL20appendEscapedContentERN3WTF6VectorItLm0EEESt4pairIPKtmEb
+__ZN7WebCoreL15appendEndMarkupERN3WTF6VectorItLm0EEEPKNS_4NodeE
+__ZNK7WebCore13JSHTMLElement9classInfoEv
+__ZN7WebCore20jsElementOffsetWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11RenderBlock21adjustPositionedBlockEPNS_9RenderBoxERKNS0_10MarginInfoE
+__ZN7WebCoreL25inlineFlowRequiresLineBoxEPNS_12RenderInlineE
+__ZNK7WebCore9InlineBox4rootEv
+__ZN7WebCore14RenderListItem6layoutEv
+__ZN7WebCore14RenderListItem20updateMarkerLocationEv
+__ZN7WebCore14RenderListItem18positionListMarkerEv
+__ZN7WebCore11RenderBlock19adjustFloatingBlockERKNS0_10MarginInfoE
+__ZN7WebCore14RenderListItem14calcPrefWidthsEv
+__ZN3WTF6VectorIPN7WebCore9RenderBoxELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore9RenderBoxELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore9RenderBoxELm0EE15reserveCapacityEm
+__ZN7WebCoreL8bidiNextEPNS_11RenderBlockEPNS_12RenderObjectEPNS_12BidiResolverINS_14InlineIteratorENS_7BidiRunEEEbPb
+__ZN7WebCoreL23getParentOfFirstLineBoxEPNS_11RenderBlockEPNS_12RenderObjectE
+__ZN7WebCore11RenderBlock32generatesLineBoxesForInlineChildEPNS_12RenderObjectE
+__ZN7WebCore16RenderListMarker14calcPrefWidthsEv
+__ZNK7WebCore16RenderListMarker7isImageEv
+__ZNK7WebCore14RenderListItem14updateValueNowEv
+__ZN7WebCoreL13enclosingListEPNS_4NodeE
+__ZNK7WebCore4Node20traversePreviousNodeEPKS0_
+__ZN7WebCore14listMarkerTextENS_14EListStyleTypeEi
+__ZN7WebCore16RenderListMarker13updateMarginsEv
+__ZNK7WebCore16RenderListMarker8isInsideEv
+__ZN7WebCore16RenderListMarker6layoutEv
+__ZNK7WebCore16RenderListMarker12isListMarkerEv
+__ZN7WebCoreL36shouldSkipWhitespaceAfterStartObjectEPNS_11RenderBlockEPNS_12RenderObjectE
+__ZN7WebCore16RenderListMarker15createInlineBoxEv
+__ZNK7WebCore9RenderBox13intrinsicSizeEv
+__ZNK7WebCore16RenderListMarker10lineHeightEbb
+__ZNK7WebCore16RenderListMarker16baselinePositionEbb
+__ZN7WebCore9InlineBox14adjustPositionEii
+__ZN7WebCore16RenderPartObject6layoutEv
+__ZN7WebCore9RenderBox30calcAbsoluteHorizontalReplacedEv
+__ZN7WebCore9RenderBox28calcAbsoluteVerticalReplacedEv
+__ZN7WebCore12RenderWidget6layoutEv
+__ZN7WebCore11RenderBlock14fitBelowFloatsEibRi
+__ZNK7WebCore11RenderBlock20nextFloatBottomBelowEi
+__ZN7WebCore12RenderWidget20updateWidgetPositionEv
+__ZN7WebCore10ScrollView12setFrameRectERKNS_7IntRectE
+__ZN7WebCore6Widget12setFrameRectERKNS_7IntRectE
+__ZN7WebCore12RenderWidget5derefEPNS_11RenderArenaE
+__ZNK7WebCore12RenderInline11offsetWidthEv
+__ZN7WebCore9InlineBox6removeEv
+__ZN7WebCore13InlineFlowBox11removeChildEPNS_9InlineBoxE
+__ZN7WebCore13RootInlineBox12childRemovedEPNS_9InlineBoxE
+__ZN7WebCore10RenderText29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
+__ZN7WebCore21jsCharacterDataLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13RootInlineBox19lineBreakBidiStatusEv
+__ZN7WebCore13InlineFlowBox11extractLineEv
+__ZN7WebCore13RootInlineBox30extractLineBoxFromRenderObjectEv
+__ZN7WebCore17RenderLineBoxList14extractLineBoxEPNS_13InlineFlowBoxE
+__ZN7WebCore13InlineFlowBox30extractLineBoxFromRenderObjectEv
__ZN7WebCore9InlineBox11extractLineEv
+__ZN7WebCore13InlineFlowBox29removeLineBoxFromRenderObjectEv
+__ZN7WebCore13InlineFlowBox13lastLeafChildEv
+__ZN7WebCore9InlineBox13lastLeafChildEv
+__ZN7WebCore11RenderBlock14matchedEndLineERKNS_12BidiResolverINS_14InlineIteratorENS_7BidiRunEEERKS2_RKNS_10BidiStatusERPNS_13R
+__ZN7WebCoreeqERKNS_11BidiContextES2_
+__ZN7WebCore13InlineFlowBox10attachLineEv
+__ZN7WebCore13RootInlineBox27attachLineBoxToRenderObjectEv
+__ZN7WebCore17RenderLineBoxList13attachLineBoxEPNS_13InlineFlowBoxE
+__ZN7WebCore13InlineFlowBox27attachLineBoxToRenderObjectEv
__ZN7WebCore9InlineBox10attachLineEv
-__ZN7WebCore15SQLiteStatement8bindNullEi
-_sqlite3_bind_null
-__ZN7WebCore7JSEvent16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZNK7WebCore9DOMWindow7scrollXEv
-__ZNK7WebCore9DOMWindow7scrollYEv
-__ZN7WebCore26JSHTMLMetaElementPrototypeD0Ev
-__ZN7WebCore27JSHTMLTitleElementPrototypeD0Ev
-__ZNK7WebCore11RenderBlock14firstLineBlockEv
-__ZN7WebCore10RenderFlow24addChildWithContinuationEPNS_12RenderObjectES2_
-__ZN7WebCore10RenderFlow18continuationBeforeEPNS_12RenderObjectE
-__ZNK7WebCore12RenderObject19isBottomMarginQuirkEv
-__ZN7WebCore27compareBorderStylesForQSortEPKvS1_
-__ZN7WebCore10HTMLParser39handleResidualStyleCloseTagAcrossBlocksEPNS_13HTMLStackElemE
-__ZNK7WebCore12RenderObject24getBaselineOfLastLineBoxEv
-__ZN3KJS17staticValueGetterIN7WebCore17JSHTMLMetaElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSHTMLMetaElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore15HTMLMetaElement4nameEv
-__ZNK7WebCore15HTMLMetaElement7contentEv
-__ZN7WebCore17JSHTMLMetaElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore17JSHTMLMetaElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore15HTMLMetaElement7setNameERKNS_6StringE
-__ZN7WebCore15HTMLMetaElement10setContentERKNS_6StringE
+__ZN7WebCore13RootInlineBox14adjustPositionEii
+__ZN7WebCore13InlineFlowBox14adjustPositionEii
+__ZN7WebCore17RenderLineBoxList14dirtyLineBoxesEv
+__ZN7WebCore11RenderBlock24repaintOverhangingFloatsEb
+__ZN7WebCore15JSTextPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24JSCharacterDataPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore42jsCharacterDataPrototypeFunctionDeleteDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13CharacterData10deleteDataEjjRi
+__ZN7WebCore13CharacterData22checkCharDataOperationEjRi
+__ZN7WebCore6String6removeEji
+__ZN7WebCore10RenderText17setTextWithOffsetEN3WTF10PassRefPtrINS_10StringImplEEEjjb
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS_6VectorIPNS1_7ElementELm0EEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSB_IS8_EEE
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PNS_6VectorIPNS1_7ElementELm0EEEENS_18PairFirstExtractorISA_EENS_7Pt
+__ZN3WTF6VectorIPN7WebCore7ElementELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore7ElementELm0EE15reserveCapacityEm
+__ZN7WebCore26JSHTMLFormElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17JSHTMLFormElement9classInfoEv
+__ZN7WebCore17JSHTMLFormElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore12RenderWidget5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore14RenderListItem5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore13InlineFlowBox15paintFillLayersERKNS_12RenderObject9PaintInfoERKNS_5ColorEPKNS_9FillLayerEiiiiiiNS_17CompositeOper
+__ZN7WebCore13InlineFlowBox14paintFillLayerERKNS_12RenderObject9PaintInfoERKNS_5ColorEPKNS_9FillLayerEiiiiiiNS_17CompositeOpera
+__ZN7WebCoreL9nullImageEv
+__ZN7WebCore14RenderThemeMac16paintSearchFieldEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZNK7WebCore14RenderThemeMac6searchEv
+__ZN7WebCore14RenderThemeMac18setSearchCellStateEPNS_12RenderObjectERKNS_7IntRectE
+__ZNK7WebCore17RenderTextControl15controlClipRectEii
+__ZN7WebCore14RenderThemeMac33paintSearchFieldResultsDecorationEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZNK7WebCore14RenderThemeMac21convertToPaintingRectEPKNS_12RenderObjectES3_RKNS_9FloatRectERKNS_7IntRectE
+__ZN7WebCore14RenderThemeMac26paintSearchFieldDecorationEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore8DOMTimer5firedEv
+__ZN7WebCore15ScheduledAction7executeEPNS_22ScriptExecutionContextE
+__ZN7WebCore15ScheduledAction7executeEPNS_8DocumentE
+__ZN7WebCore15ScheduledAction24executeFunctionInContextEPN3JSC14JSGlobalObjectENS1_7JSValueE
+__ZN7WebCore20jsDocumentReadyStateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Document10readyStateEv
+__ZNK7WebCore11FrameLoader10isCompleteEv
+__ZN7WebCore19jsStringOrUndefinedEPN3JSC9ExecStateERKNS_6StringE
+__ZN7WebCore11FrameLoader13executeScriptERKNS_6StringEb
+__ZThn16_N7WebCore24DocumentThreadableLoader29getShouldUseCredentialStorageEPNS_17SubresourceLoaderERb
+__ZN7WebCore24DocumentThreadableLoader29getShouldUseCredentialStorageEPNS_17SubresourceLoaderERb
+__ZN7WebCore12RenderInline12imageChangedEPvPKNS_7IntRectE
+__ZThn16_N7WebCore24DocumentThreadableLoader18didReceiveResponseEPNS_17SubresourceLoaderERKNS_16ResourceResponseE
+__ZN7WebCore24DocumentThreadableLoader18didReceiveResponseEPNS_17SubresourceLoaderERKNS_16ResourceResponseE
+__ZThn16_N7WebCore14XMLHttpRequest18didReceiveResponseERKNS_16ResourceResponseE
+__ZN7WebCore14XMLHttpRequest18didReceiveResponseERKNS_16ResourceResponseE
+__ZN7WebCore27extractCharsetFromMediaTypeERKNS_6StringE
+__ZThn16_N7WebCore24DocumentThreadableLoader14didReceiveDataEPNS_17SubresourceLoaderEPKci
+__ZN7WebCore24DocumentThreadableLoader14didReceiveDataEPNS_17SubresourceLoaderEPKci
+__ZThn16_N7WebCore14XMLHttpRequest14didReceiveDataEPKci
+__ZN7WebCore14XMLHttpRequest14didReceiveDataEPKci
+__ZN7WebCore14XMLHttpRequest14refEventTargetEv
+__ZN7WebCore11EventTarget6toNodeEv
+__ZN7WebCore11EventTarget11toDOMWindowEv
+__ZN7WebCore14XMLHttpRequest16toXMLHttpRequestEv
+__ZN7WebCore14XMLHttpRequest27updateAndDispatchOnProgressEj
+__ZN7WebCore14XMLHttpRequest21dispatchProgressEventEx
+__ZN7WebCore22jsXMLHttpRequestStatusEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14XMLHttpRequest6statusERi
+__ZN7WebCore26jsXMLHttpRequestStatusTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14XMLHttpRequest10statusTextERi
+__ZNK7WebCore20ResourceResponseBase14httpStatusTextEv
+__ZN7WebCore28jsXMLHttpRequestResponseTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16JSXMLHttpRequest12responseTextEPN3JSC9ExecStateE
+__ZNK7WebCore14XMLHttpRequest12responseTextEv
+__ZN7WebCore19jsOwnedStringOrNullEPN3JSC9ExecStateERKNS0_7UStringE
+__ZN7WebCore50jsXMLHttpRequestPrototypeFunctionGetResponseHeaderEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSXMLHttpRequest17getResponseHeaderEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore14XMLHttpRequest17getResponseHeaderERKNS_12AtomicStringERi
+__ZN7WebCoreL17isSetCookieHeaderERKNS_12AtomicStringE
+__ZThn16_N7WebCore24DocumentThreadableLoader16didFinishLoadingEPNS_17SubresourceLoaderE
+__ZN7WebCore24DocumentThreadableLoader16didFinishLoadingEPNS_17SubresourceLoaderE
+__ZThn16_N7WebCore14XMLHttpRequest16didFinishLoadingEm
+__ZN7WebCore14XMLHttpRequest16didFinishLoadingEm
+__ZThn88_N7WebCore8Document33resourceRetrievedByXMLHttpRequestEmRKNS_12ScriptStringE
+__ZN7WebCore8Document33resourceRetrievedByXMLHttpRequestEmRKNS_12ScriptStringE
+__ZN7WebCore19InspectorController33resourceRetrievedByXMLHttpRequestEmRKNS_12ScriptStringE
+__ZN7WebCore11FrameLoader31didLoadResourceByXMLHttpRequestEmRKNS_12ScriptStringE
+__ZThn88_N7WebCore8Document10addMessageENS_18MessageDestinationENS_13MessageSourceENS_12MessageLevelERKNS_6StringEjS6_
+__ZN7WebCore8Document10addMessageENS_18MessageDestinationENS_13MessageSourceENS_12MessageLevelERKNS_6StringEjS6_
+__ZN7WebCore19InspectorController19addMessageToConsoleENS_13MessageSourceENS_12MessageLevelERKNS_6StringEjS5_
+__ZN7WebCore24DocumentThreadableLoader21derefThreadableLoaderEv
+__ZN7WebCore24DocumentThreadableLoaderD0Ev
+__ZN7WebCore27jsXMLHttpRequestResponseXMLEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14XMLHttpRequest11responseXMLEv
+__ZNK7WebCore14XMLHttpRequest13responseIsXMLEv
+__ZNK7WebCore14XMLHttpRequest16responseMIMETypeEv
+__ZN7WebCore16jsDocumentDomainEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Document6domainEv
+__ZN7WebCore14jsLocationPortEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Location4portEv
+__ZN7WebCore14XMLHttpRequest17dispatchLoadEventEv
+__ZN7WebCore14XMLHttpRequest14dropProtectionEv
+__ZNK7WebCore14XMLHttpRequest8documentEv
+__ZNK7WebCore8Document14implementationEv
+__ZN7WebCore17DOMImplementation14createDocumentEPNS_5FrameE
+__ZN7WebCore8DocumentC1EPNS_5FrameEb
+__ZN7WebCore14SecurityOrigin11createEmptyEv
+__ZN7WebCore8Document4openEPS0_
+__ZN7WebCore8Document15createTokenizerEv
+__ZN7WebCore12XMLTokenizerC1EPNS_8DocumentEPNS_9FrameViewE
+__ZN7WebCore12XMLTokenizerC2EPNS_8DocumentEPNS_9FrameViewE
+__ZN7WebCore8Document5writeERKNS_6StringEPS0_
+__ZN7WebCore8Document5writeERKNS_15SegmentedStringEPS0_
+__ZN7WebCore12XMLTokenizer5writeERKNS_15SegmentedStringEb
+__ZNK7WebCore15SegmentedString8toStringEv
+__ZN7WebCore12XMLTokenizer7doWriteERKNS_6StringE
+__ZN7WebCore12XMLTokenizer23initializeParserContextEPKc
+__ZN7WebCore17XMLTokenizerScopeC1EPNS_9DocLoaderE
+__ZN7WebCore17XMLTokenizerScopeC2EPNS_9DocLoaderE
+__ZN7WebCoreL18createStringParserEP14_xmlSAXHandlerPv
+__ZN7WebCore17XMLTokenizerScopeD1Ev
+__ZN7WebCore17XMLTokenizerScopeD2Ev
+__ZN7WebCoreL20startDocumentHandlerEPv
+__ZN7WebCore12XMLTokenizer13startDocumentEPKhS2_i
+__ZNK7WebCore12TextEncoding6decodeEPKcmbRb
+__ZN7WebCore8Document13setXMLVersionERKNS_6StringERi
+__ZN7WebCore17DOMImplementation10hasFeatureERKNS_6StringES3_
+__ZN7WebCore8Document16setXMLStandaloneEbRi
+__ZN7WebCoreL18normalErrorHandlerEPvPKcz
+__ZN7WebCore12XMLTokenizer5errorENS0_9ErrorTypeEPKcP13__va_list_tag
+__ZNK7WebCore12XMLTokenizer12columnNumberEv
+__ZNK7WebCore12XMLTokenizer10lineNumberEv
+__ZN7WebCore12XMLTokenizer11handleErrorENS0_9ErrorTypeEPKcii
+__ZN7WebCoreL18endDocumentHandlerEPv
+__ZN7WebCore12XMLTokenizer11endDocumentEv
+__ZN7WebCore12XMLTokenizer8exitTextEv
+__ZN7WebCore12XMLTokenizer6finishEv
+__ZN7WebCore12XMLTokenizer3endEv
+__ZN7WebCore12XMLTokenizer5doEndEv
+__ZN7WebCore12XMLTokenizer23insertErrorMessageBlockEv
+__ZN7WebCore8Document16childTypeAllowedENS_4Node8NodeTypeE
+__ZN7WebCore13ContainerNode12insertBeforeEN3WTF10PassRefPtrINS_4NodeEEEPS3_Rib
+__ZN7WebCore12XMLTokenizer14setCurrentNodeEPNS_4NodeE
+__ZNK7WebCore12XMLTokenizer10wellFormedEv
+__ZN7WebCore12XMLTokenizerD0Ev
+__ZN3WTF15deleteAllValuesIPN7WebCore16PendingCallbacks15PendingCallbackEEEvRKNS_5DequeIT_EE
+__ZN7WebCore16jsDOMWindowEventEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow5eventEPN3JSC9ExecStateE
+__ZN7WebCore20jsEventCurrentTargetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8DocumentD0Ev
+__ZN7WebCore20JSHTMLHeadingElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore20JSHTMLHeadingElement9classInfoEv
+__ZN7WebCoreL33createHTMLParagraphElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore22JSHTMLParagraphElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSHTMLParagraphElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_20HTMLParagraphElementEEE
+__ZN7WebCore22JSHTMLParagraphElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_20HTMLParagraphElementEEE
+__ZN7WebCore22JSHTMLParagraphElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore22JSHTMLParagraphElement9classInfoEv
+__ZN7WebCore22JSHTMLParagraphElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore10JSNodeList11getCallDataERN3JSC8CallDataE
+__ZNK3JSC8JSObject11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
+__ZNK7WebCore10JSNodeList9classInfoEv
+__ZN7WebCore20JSHTMLHeadingElementD1Ev
+__ZN7WebCore13JSHTMLElementD1Ev
+__ZThn8_N7WebCore11HTMLElementD0Ev
+__ZN7WebCore16JSXMLHttpRequestD1Ev
+__ZN7WebCore16JSXMLHttpRequestD2Ev
+__ZN7WebCore18JSHTMLOListElementD1Ev
+__ZN7WebCore14XMLHttpRequest16derefEventTargetEv
+__ZN7WebCore14XMLHttpRequestD0Ev
+__ZN7WebCore41jsElementPrototypeFunctionRemoveAttributeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Element15removeAttributeERKNS_6StringERi
+__ZN7WebCore12NamedNodeMap15removeNamedItemERKNS_6StringERi
+__ZNK7WebCore4Node15isStyledElementEv
+__ZN7WebCoreL28createHTMLMetaElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore17JSHTMLMetaElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSHTMLMetaElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLMetaElementEEE
+__ZN7WebCore17JSHTMLMetaElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLMetaElementEEE
+__ZN7WebCore17JSHTMLMetaElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore17JSHTMLMetaElement9classInfoEv
-__ZN7WebCore10JSNodeList16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZNK7WebCore19JSNodeListPrototype9classInfoEv
-__ZNK7WebCore15HTMLMetaElement9httpEquivEv
-__ZN7WebCore17HTMLScriptElement7setTypeERKNS_6StringE
-__ZNK7WebCore10MouseEvent5whichEv
-__ZNK7WebCore17HTMLAnchorElement8hostnameEv
-__ZNK7WebCore17HTMLAnchorElement6searchEv
-__ZNK7WebCore17HTMLAnchorElement8pathnameEv
-__ZNK7WebCore17HTMLAnchorElement4textEv
-__ZNK7WebCore7Element9innerTextEv
-__ZN7WebCore15rangeOfContentsEPNS_4NodeE
-__ZN7WebCore12EventHandler32handleMousePressEventDoubleClickERKNS_28MouseEventWithHitTestResultsE
-__ZN7WebCore12EventHandler31selectClosestWordFromMouseEventERKNS_28MouseEventWithHitTestResultsE
-__ZNK7WebCore19JSHTMLAllCollection21masqueradeAsUndefinedEv
-__ZNK7WebCore4Text8nodeNameEv
-__ZN7WebCore38jsHTMLDocumentPrototypeFunctionWritelnEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore14JSHTMLDocument7writelnEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore15HTMLFormElement12setMalformedEb
-__ZN7WebCore21DeprecatedPtrListImpl4prevEv
-__ZNK7WebCore15RenderTableCell16baselinePositionEbb
-__ZN7WebCore12RenderInline22positionForCoordinatesEii
-__ZN7WebCore15RenderContainer22positionForCoordinatesEii
-__ZNK7WebCore10RenderText4xPosEv
-__ZN7WebCore11JSDOMWindow16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore11JSDOMWindow22customGetPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore17JSHTMLBaseElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore26JSHTMLBaseElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore21JSHTMLBaseFontElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore30JSHTMLBaseFontElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLIFrameElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSHTMLBlockquoteElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore32JSHTMLBlockquoteElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLAudioElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore27JSHTMLAudioElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore27JSHTMLMediaElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore24JSSVGPreserveAspectRatio14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore33JSSVGPreserveAspectRatioPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow7menubarEv
-__ZN7WebCore7BarInfoC2EPNS_5FrameENS0_4TypeE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_7BarInfoE
-__ZN7WebCore18JSBarInfoPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore9JSBarInfoC1EPN3KJS8JSObjectEPNS_7BarInfoE
-__ZN7WebCore10JSSVGAngle14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore19JSSVGAnglePrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow10scrollbarsEv
-__ZN7WebCore19JSCSSPrimitiveValue14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore28JSCSSPrimitiveValuePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSCSSValuePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore10JSSVGPaint14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore19JSSVGPaintPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSSVGColorPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow12frameElementEv
-__ZN7WebCore17checkNodeSecurityEPN3KJS9ExecStateEPNS_4NodeE
-__ZN7WebCore8JSEntity14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore17JSEntityPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLMenuElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore26JSHTMLMenuElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSHTMLModElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore25JSHTMLModElementPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow6openerEv
-__ZN7WebCore12JSMouseEvent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore11JSTextEvent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore20JSTextEventPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow10outerWidthEv
-__ZNK7WebCore6Chrome10windowRectEv
-__ZN7WebCore18JSHTMLQuoteElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore27JSHTMLQuoteElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLHeadElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore20JSHTMLIsIndexElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore29JSHTMLIsIndexElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLImageElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore14JSCDATASection14getConstructorEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow6closedEv
-__ZN7WebCore16JSCSSCharsetRule14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore25JSCSSCharsetRulePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSCSSRulePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLAppletElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore28JSHTMLAppletElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore10JSCSSValue14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore14JSCSSValueList14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSCSSValueListPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow9statusbarEv
-__ZN7WebCore25JSXMLHttpRequestException14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore34JSXMLHttpRequestExceptionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLStyleElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSProcessingInstruction14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore32JSProcessingInstructionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSDOMCoreException14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore21JSHTMLFrameSetElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore30JSHTMLFrameSetElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSRangeException14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore25JSRangeExceptionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSDOMImplementation14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore28JSDOMImplementationPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore12JSWheelEvent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLUListElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore15JSCharacterData14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLLegendElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore28JSHTMLLegendElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore6JSRect14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore15JSRectPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSHTMLPreElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore25JSHTMLPreElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore14JSMessageEvent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSMessageEventPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore9JSCounter14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore18JSCounterPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore14JSNamedNodeMap14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSNamedNodeMapPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore22JSHTMLTableCellElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore21JSHTMLOptGroupElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore30JSHTMLOptGroupElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore20JSHTMLHeadingElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore13JSCSSRuleList14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore22JSCSSRuleListPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow11outerHeightEv
-__ZN7WebCore22JSHTMLParagraphElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore21JSHTMLFieldSetElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore12JSStyleSheet14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore21JSStyleSheetPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow11personalbarEv
-__ZN7WebCore19JSHTMLButtonElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore28JSHTMLButtonElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSHTMLMapElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore15JSOverflowEvent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore24JSOverflowEventPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSXPathException14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore25JSXPathExceptionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore20JSSVGGradientElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore29JSSVGGradientElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore21JSSVGElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSProgressEvent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore24JSProgressEventPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow6statusEv
-__ZNK7WebCore5Frame15jsStatusBarTextEv
-__ZN7WebCore12JSMediaError14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore21JSMediaErrorPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore6JSAttr14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore15JSAttrPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSEntityReference14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore26JSEntityReferencePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore25JSHTMLTableCaptionElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore34JSHTMLTableCaptionElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLObjectElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore28JSHTMLObjectElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLFrameElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore27JSHTMLFrameElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore9JSCSSRule14getConstructorEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow16devicePixelRatioEv
-__ZN7WebCore6Chrome11scaleFactorEv
-__ZN7WebCore21JSCSSStyleDeclaration14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore15JSMutationEvent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore24JSMutationEventPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow7screenXEv
-__ZN7WebCore21JSHTMLTableRowElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore22JSHTMLDirectoryElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore31JSHTMLDirectoryElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLScriptElement14getConstructorEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow7screenYEv
-__ZNK7WebCore9DOMWindow7toolbarEv
-__ZN7WebCore23JSSVGTextContentElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore32JSSVGTextContentElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLAreaElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLOListElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLCanvasElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore28JSHTMLCanvasElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSCSSFontFaceRule14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore26JSCSSFontFaceRulePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore10JSDocument14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore15JSHTMLBRElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore14JSCSSStyleRule14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSCSSStyleRulePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLFontElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore26JSHTMLFontElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLTitleElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore25JSHTMLTableSectionElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore6JSText14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore14JSDocumentType14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSDocumentTypePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore9JSUIEvent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore16JSEventException14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore25JSEventExceptionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSStyleSheetList14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore25JSStyleSheetListPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow13defaultStatusEv
-__ZNK7WebCore5Frame22jsDefaultStatusBarTextEv
-__ZN7WebCore7JSRange14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore14JSCSSMediaRule14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSCSSMediaRulePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLEmbedElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore10JSNodeList14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore18JSSVGMarkerElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore27JSSVGMarkerElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSHTMLHRElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore24JSHTMLHRElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSCSSImportRule14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore24JSCSSImportRulePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore10JSSVGColor14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLParamElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore27JSHTMLParamElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSDocumentFragment14getConstructorEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow18offscreenBufferingEv
-__ZN7WebCore13JSCSSPageRule14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore22JSCSSPageRulePrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow11locationbarEv
-__ZN7WebCore11JSSVGLength14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore20JSSVGLengthPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSXPathEvaluator14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore25JSXPathEvaluatorPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSKeyboardEvent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore11JSMediaList14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore20JSMediaListPrototype4selfEPN3KJS9ExecStateE
-__ZNK7WebCore9DOMWindow7consoleEv
-__ZN7WebCore7ConsoleC1EPNS_5FrameE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_7ConsoleE
-__ZN7WebCore18JSConsolePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore9JSConsoleC1EPN3KJS8JSObjectEPNS_7ConsoleE
-__ZN7WebCore9JSComment14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore10JSNotation14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore19JSNotationPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLBodyElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLDListElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLHtmlElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLLabelElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLLinkElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore20JSHTMLMarqueeElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore29JSHTMLMarqueeElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLMetaElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore21JSHTMLTableColElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore30JSHTMLTableColElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLTableElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore12JSNodeFilter14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore21JSNodeFilterPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSXMLSerializer14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore24JSXMLSerializerPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLMediaElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLVideoElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore27JSHTMLVideoElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore14JSSVGException14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSSVGExceptionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore12JSSVGPathSeg14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore21JSSVGPathSegPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore20JSSVGRenderingIntent14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore29JSSVGRenderingIntentPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore20JSSVGTextPathElement14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore29JSSVGTextPathElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore14JSSVGTransform14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSSVGTransformPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore14JSSVGUnitTypes14getConstructorEPN3KJS9ExecStateE
-__ZN7WebCore23JSSVGUnitTypesPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore11MediaPlayer11isAvailableEv
-__ZN7WebCore18MediaPlayerPrivate11isAvailableEv
-__ZN7WebCore18JSAudioConstructorC1EPN3KJS9ExecStateEPNS_8DocumentE
-__ZNK7WebCore6Chrome11canRunModalEv
-__ZN3KJS27XSLTProcessorConstructorImpC2EPNS_9ExecStateE
-__ZN3KJS22XSLTProcessorPrototype4selfEPNS_9ExecStateE
-__ZN7WebCore7BarInfo15disconnectFrameEv
-__ZN7WebCore7Console15disconnectFrameEv
-__ZN7WebCore25JSSVGUnitTypesConstructorD0Ev
-__ZN7WebCore25JSSVGTransformConstructorD0Ev
-__ZN7WebCore31JSSVGTextPathElementConstructorD0Ev
-__ZN7WebCore31JSSVGRenderingIntentConstructorD0Ev
-__ZN7WebCore23JSSVGPathSegConstructorD0Ev
-__ZN7WebCore25JSSVGExceptionConstructorD0Ev
-__ZN7WebCore27JSHTMLVideoElementPrototypeD0Ev
-__ZN7WebCore29JSHTMLMediaElementConstructorD0Ev
-__ZN7WebCore30JSHTMLTableColElementPrototypeD0Ev
-__ZN7WebCore19JSNotationPrototypeD0Ev
-__ZN7WebCore9JSConsoleD0Ev
-__ZN7WebCore26JSKeyboardEventConstructorD0Ev
-__ZN7WebCore22JSSVGLengthConstructorD0Ev
-__ZN7WebCore22JSCSSPageRulePrototypeD0Ev
-__ZN7WebCore27JSHTMLParamElementPrototypeD0Ev
-__ZN7WebCore21JSSVGColorConstructorD0Ev
-__ZN7WebCore24JSCSSImportRulePrototypeD0Ev
-__ZN7WebCore24JSHTMLHRElementPrototypeD0Ev
-__ZN7WebCore29JSSVGMarkerElementConstructorD0Ev
-__ZN7WebCore27JSStyleSheetListConstructorD0Ev
-__ZN7WebCore27JSEventExceptionConstructorD0Ev
-__ZN7WebCore20JSUIEventConstructorD0Ev
-__ZN7WebCore23JSDocumentTypePrototypeD0Ev
-__ZN7WebCore26JSHTMLFontElementPrototypeD0Ev
-__ZN7WebCore23JSCSSStyleRulePrototypeD0Ev
-__ZN7WebCore26JSCSSFontFaceRulePrototypeD0Ev
-__ZN7WebCore34JSSVGTextContentElementConstructorD0Ev
-__ZN7WebCore31JSHTMLDirectoryElementPrototypeD0Ev
-__ZN7WebCore34JSHTMLTableCaptionElementPrototypeD0Ev
-__ZN7WebCore26JSEntityReferencePrototypeD0Ev
-__ZN7WebCore15JSAttrPrototypeD0Ev
-__ZN7WebCore23JSMediaErrorConstructorD0Ev
-__ZN7WebCore26JSProgressEventConstructorD0Ev
-__ZN7WebCore21JSSVGElementPrototypeD0Ev
-__ZN7WebCore31JSSVGGradientElementConstructorD0Ev
-__ZN7WebCore27JSXPathExceptionConstructorD0Ev
-__ZN7WebCore26JSOverflowEventConstructorD0Ev
-__ZN7WebCore21JSStyleSheetPrototypeD0Ev
-__ZN7WebCore30JSHTMLOptGroupElementPrototypeD0Ev
-__ZN7WebCore18JSCounterPrototypeD0Ev
-__ZN7WebCore25JSMessageEventConstructorD0Ev
-__ZN7WebCore25JSHTMLPreElementPrototypeD0Ev
-__ZN7WebCore15JSRectPrototypeD0Ev
-__ZN7WebCore30JSHTMLFrameSetElementPrototypeD0Ev
-__ZN7WebCore29JSDOMCoreExceptionConstructorD0Ev
-__ZN7WebCore32JSProcessingInstructionPrototypeD0Ev
-__ZN7WebCore36JSXMLHttpRequestExceptionConstructorD0Ev
-__ZN7WebCore28JSHTMLAppletElementPrototypeD0Ev
-__ZN7WebCore25JSCSSCharsetRulePrototypeD0Ev
-__ZN7WebCore29JSHTMLIsIndexElementPrototypeD0Ev
-__ZN7WebCore27JSHTMLQuoteElementPrototypeD0Ev
-__ZN7WebCore22JSTextEventConstructorD0Ev
-__ZN7WebCore23JSMouseEventConstructorD0Ev
-__ZN7WebCore25JSHTMLModElementPrototypeD0Ev
-__ZN7WebCore26JSHTMLMenuElementPrototypeD0Ev
-__ZN7WebCore17JSEntityPrototypeD0Ev
-__ZN7WebCore21JSSVGPaintConstructorD0Ev
-__ZN7WebCore21JSSVGAngleConstructorD0Ev
-__ZN7WebCore18JSBarInfoPrototypeD0Ev
-__ZN7WebCore35JSSVGPreserveAspectRatioConstructorD0Ev
-__ZN7WebCore27JSHTMLAudioElementPrototypeD0Ev
-__ZN7WebCore32JSHTMLBlockquoteElementPrototypeD0Ev
-__ZN7WebCore30JSHTMLBaseFontElementPrototypeD0Ev
-__ZN7WebCore26JSHTMLBaseElementPrototypeD0Ev
-__ZN3KJS22XSLTProcessorPrototypeD0Ev
-__ZN7WebCore28JSHTMLSelectElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore17HTMLSelectElement5valueEv
-__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_15CaseFoldingHashENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore16MIMETypeRegistry20isJavaAppletMIMETypeERKNS_6StringE
-__ZN7WebCore11RenderLayer23beginTransparencyLayersEPNS_15GraphicsContextEPKS0_
-__ZN7WebCore19transparencyClipBoxERKNS_15AffineTransformEPKNS_11RenderLayerES5_
-__ZN7WebCore15GraphicsContext22beginTransparencyLayerEf
-__ZN7WebCore15GraphicsContext20endTransparencyLayerEv
-__ZNK7WebCore14RenderThemeMac25adjustMenuListButtonStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZN7WebCore6Loader4Host14cancelRequestsEPNS_9DocLoaderE
+__ZN7WebCore6Loader4Host21cancelPendingRequestsERN3WTF5DequeIPNS_7RequestEEEPNS_9DocLoaderE
+__ZN7WebCore11FrameLoader49updateHistoryForRedirectWithLockedBackForwardListEv
+__ZN7WebCore11HistoryItem12setChildItemEN3WTF10PassRefPtrIS0_EE
+__ZNK7WebCore10RenderView8viewRectEv
+__ZNK7WebCore9RenderBox12maxTopMarginEb
+__ZNK7WebCore9RenderBox21isSelfCollapsingBlockEv
+__ZNK7WebCore9RenderBox15maxBottomMarginEb
+__ZN7WebCore5TimerINS_12GCControllerEE5firedEv
+__ZN7WebCore12GCController12gcTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore22JSHTMLParagraphElementD1Ev
+__ZN7WebCore17JSHTMLMetaElementD1Ev
+__ZN7WebCore16HTMLLabelElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore27TextControlInnerTextElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore18JSHTMLInputElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore15setJSNodeOnblurEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node9setOnblurEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN3WTF6VectorIPN7WebCore7ElementELm0EE6shrinkEm
+__ZN7WebCore22HTMLFormControlElement15removedFromTreeEb
+__ZN7WebCore15HTMLFormElement17removeFormElementEPNS_22HTMLFormControlElementE
+__ZN7WebCore26setJSHTMLImageElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement8setWidthEi
+__ZN7WebCore27setJSHTMLImageElementHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement9setHeightEi
+__ZN7WebCore27setJSHTMLImageElementBorderEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement9setBorderERKNS_6StringE
+__ZN7WebCore24setJSHTMLImageElementAltEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement6setAltERKNS_6StringE
+__ZN7WebCore17setJSNodeOnsubmitEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node11setOnsubmitEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore18setJSNodeOnkeydownEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node12setOnkeydownEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore16setJSNodeOnkeyupEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node10setOnkeyupEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore17jsDOMWindowParentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow6parentEv
+__ZNK7WebCore5Frame14isDisconnectedEv
+__ZN7WebCore17jsDOMWindowScreenEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow6screenEv
+__ZN7WebCore6ScreenC1EPNS_5FrameE
+__ZN7WebCore6ScreenC2EPNS_5FrameE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_6ScreenE
+__ZN7WebCore8JSScreen15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore8JSScreenC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_6ScreenEEE
+__ZN7WebCore8JSScreenC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_6ScreenEEE
+__ZN7WebCore8JSScreen18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore13jsScreenWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Screen5widthEv
+__ZN7WebCore14jsScreenHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Screen6heightEv
+__ZN7WebCore39jsNavigatorPrototypeFunctionJavaEnabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore11JSNavigator9classInfoEv
+__ZNK7WebCore9Navigator11javaEnabledEv
+__ZN7WebCore18jsScreenPixelDepthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Screen10pixelDepthEv
+__ZN7WebCore11screenDepthEPNS_6WidgetE
+__ZN7WebCore21jsDOMWindowInnerWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow10innerWidthEv
+__ZN7WebCore22jsDOMWindowInnerHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow11innerHeightEv
+__ZN7WebCore18jsNavigatorPluginsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9Navigator7pluginsEv
+__ZN7WebCore11PluginArrayC1EPNS_5FrameE
+__ZN7WebCore11PluginArrayC2EPNS_5FrameE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_11PluginArrayE
+__ZN7WebCore13JSPluginArray15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore13JSPluginArrayC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11PluginArrayEEE
+__ZN7WebCore13JSPluginArrayC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11PluginArrayEEE
+__ZN7WebCore13JSPluginArray18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19jsPluginArrayLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11PluginArray6lengthEv
+__ZNK7WebCore11PluginArray13getPluginDataEv
+__ZNK7WebCore4Page10pluginDataEv
+__ZN7WebCore10PluginDataC1EPKNS_4PageE
+__ZN7WebCore10PluginDataC2EPKNS_4PageE
+__ZN7WebCore10PluginData11initPluginsEv
+_stringEncodingForResource
+__ZN7WebCore16MIMETypeRegistry26getSupportedImageMIMETypesEv
+__ZN3WTF6VectorIPN7WebCore13MimeClassInfoELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore13MimeClassInfoELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore13MimeClassInfoELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIPN7WebCore10PluginInfoELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore10PluginInfoELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore10PluginInfoELm0EE15reserveCapacityEm
+__ZN7WebCore13JSPluginArray18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore13JSPluginArray11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore11PluginArray4itemEj
+__ZN7WebCore6PluginC1EPNS_10PluginDataEj
+__ZN7WebCore6PluginC2EPNS_10PluginDataEj
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_6PluginE
+__ZN7WebCore8JSPlugin15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore8JSPluginC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_6PluginEEE
+__ZN7WebCore8JSPluginC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_6PluginEEE
+__ZN7WebCore8JSPlugin18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore12jsPluginNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Plugin4nameEv
+__ZN7WebCore19jsNavigatorPlatformEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13NavigatorBase8platformEv
+__ZN7WebCore19JSLocationPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore35jsLocationPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore10JSLocation9classInfoEv
+__ZN7WebCore10JSLocation8toStringEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore21allowsAccessFromFrameEPN3JSC9ExecStateEPNS_5FrameE
+__ZNK7WebCore8Location8toStringEv
+__ZN7WebCore18jsDocumentReferrerEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Document8referrerEv
+__ZNK7WebCore11FrameLoader8referrerEv
+__ZN7WebCore20jsNavigatorMimeTypesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9Navigator9mimeTypesEv
+__ZN7WebCore13MimeTypeArrayC1EPNS_5FrameE
+__ZN7WebCore13MimeTypeArrayC2EPNS_5FrameE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_13MimeTypeArrayE
+__ZN7WebCore15JSMimeTypeArray15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSMimeTypeArrayC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13MimeTypeArrayEEE
+__ZN7WebCore15JSMimeTypeArrayC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13MimeTypeArrayEEE
+__ZN7WebCore13JSPluginArray18canGetItemsForNameEPN3JSC9ExecStateEPNS_11PluginArrayERKNS1_10IdentifierE
+__ZN7WebCore11PluginArray18canGetItemsForNameERKNS_12AtomicStringE
+__ZN7WebCore22JSPluginArrayPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore13JSPluginArray10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore11PluginArray9namedItemERKNS_12AtomicStringE
+__ZN7WebCore19jsPluginDescriptionEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Plugin11descriptionEv
+__ZN3WTF6VectorIcLm512EE14expandCapacityEm
+__ZN3WTF6VectorIcLm512EE15reserveCapacityEm
+__ZN7WebCore11FrameLoader15parentCompletedEv
+__ZN7WebCore14ResourceLoader48scheduleLoadFallbackResourceFromApplicationCacheEPNS_16ApplicationCacheE
+__ZN7WebCore14DocumentLoader48scheduleLoadFallbackResourceFromApplicationCacheEPNS_14ResourceLoaderERKNS_15ResourceRequestEPNS_
+__ZN7WebCore14DocumentLoader35getApplicationCacheFallbackResourceERKNS_15ResourceRequestERPNS_24ApplicationCacheResourceEPNS_16
+__ZN7WebCore15defaultMIMETypeEv
+__ZN7WebCore15GraphicsContext9setShadowERKNS_7IntSizeEiRKNS_5ColorE
+__ZN7WebCore15GraphicsContext17setPlatformShadowERKNS_7IntSizeEiRKNS_5ColorE
+__ZNK7WebCore7IntSizecv6CGSizeEv
+__ZN7WebCore15GraphicsContext11clearShadowEv
+__ZN7WebCore15GraphicsContext19clearPlatformShadowEv
__ZN7WebCore15GraphicsContext18addRoundedRectClipERKNS_7IntRectERKNS_7IntSizeES6_S6_S6_
__ZN7WebCore4Path22createRoundedRectangleERKNS_9FloatRectERKNS_9FloatSizeES6_S6_S6_
+__ZN7WebCore4PathC1Ev
+__ZN7WebCore4PathC2Ev
+__ZN7WebCore4Path6moveToERKNS_10FloatPointE
+__ZN7WebCore4Path9addLineToERKNS_10FloatPointE
__ZN7WebCore4Path16addBezierCurveToERKNS_10FloatPointES3_S3_
+__ZN7WebCore4Path12closeSubpathEv
+__ZN7WebCore4PathC1ERKS0_
+__ZN7WebCore4PathC2ERKS0_
+__ZN7WebCore4PathD1Ev
+__ZN7WebCore4PathD2Ev
__ZN7WebCore15GraphicsContext4clipERKNS_4PathE
-__ZN7WebCore14RenderThemeMac19paintMenuListButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore14RenderThemeMac28paintMenuListButtonGradientsEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore23MainGradientInterpolateEPvPKfPf
-__ZN7WebCore22TopGradientInterpolateEPvPKfPf
-__ZN7WebCore25BottomGradientInterpolateEPvPKfPf
-__ZN7WebCore15GraphicsContext23addInnerRoundedRectClipERKNS_7IntRectEi
-__ZN7WebCore12RenderObject13drawBorderArcEPNS_15GraphicsContextEiifNS_7IntSizeEiiNS0_10BorderSideENS_5ColorERKS5_NS_12EBorderStyleEb
-__ZN7WebCore15GraphicsContext9strokeArcERKNS_7IntRectEii
-__ZNK7WebCore15HTMLLinkElement3relEv
-__ZNK7WebCore15HTMLLinkElement4hrefEv
-__ZNK7WebCore15HTMLLinkElement4typeEv
-__ZN3KJS19windowProtoFuncOpenEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS37valueToStringWithUndefinedOrNullCheckEPNS_9ExecStateEPNS_7JSValueE
-__ZN3KJS10allowPopUpEPNS_9ExecStateE
-__ZN7WebCore14WindowFeaturesC1ERKNS_6StringE
-__ZN7WebCore11isSeparatorEt
-__ZN7WebCore14WindowFeatures16setWindowFeatureERKNS_6StringES3_
-__ZN7WebCore9DOMWindow16adjustWindowRectERKNS_9FloatRectERS1_S3_
-__ZN3KJS12createWindowEPNS_9ExecStateEPN7WebCore5FrameERKNS2_6StringES7_RKNS2_14WindowFeaturesEPNS_7JSValueE
-__ZN7WebCore11FrameLoader12createWindowERKNS_16FrameLoadRequestERKNS_14WindowFeaturesERb
-__ZNK7WebCore6Chrome12createWindowEPNS_5FrameERKNS_16FrameLoadRequestERKNS_14WindowFeaturesE
-__ZNK7WebCore19ResourceRequestBase7isEmptyEv
-__ZNK7WebCore6Chrome18setToolbarsVisibleEb
-__ZNK7WebCore6Chrome19setStatusbarVisibleEb
-__ZNK7WebCore6Chrome20setScrollbarsVisibleEb
-__ZN7WebCore9FrameView17setHScrollbarModeENS_13ScrollbarModeE
-__ZN7WebCore9FrameView17setVScrollbarModeENS_13ScrollbarModeE
-__ZNK7WebCore6Chrome17setMenubarVisibleEb
-__ZNK7WebCore6Chrome12setResizableEb
-__ZNK7WebCore6Chrome8pageRectEv
-__ZNK7WebCore6Chrome13setWindowRectERKNS_9FloatRectE
-__ZN7WebCore13toDeviceSpaceERKNS_9FloatRectEP8NSWindow
-__ZNK7WebCore6Chrome4showEv
-__ZN3WTF7HashSetIPN7WebCore5FrameENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore11FrameLoader14setOpenedByDOMEv
-__ZN7WebCore33jsDOMWindowPrototypeFunctionFocusEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9DOMWindow5focusEv
-__ZN7WebCore5Frame11focusWindowEv
-__ZN7WebCore20encodeRelativeStringERKNS_4KURLERKNS_16DeprecatedStringERKNS_12TextEncodingE
-__ZNK7WebCore16DeprecatedString4findEPKcib
-__ZN7WebCore5equalEPKNS_14DeprecatedCharEPKci
-__ZN7WebCore14encodeHostnameERKNS_16DeprecatedStringE
-__ZNK7WebCore16DeprecatedString4findERKNS_17RegularExpressionEi
-__ZNK7WebCore20JSHTMLHeadingElement9classInfoEv
-__ZNK7WebCore17HTMLAnchorElement4hostEv
-__ZN7WebCore11RenderBlock23deleteEllipsisLineBoxesEv
-__ZN7WebCore11RenderBlock25checkLinesForTextOverflowEv
-__ZNK7WebCore14SimpleFontData18containsCharactersEPKti
-__ZN7WebCore18MainResourceLoader26stopLoadingForPolicyChangeEv
-__ZNK7WebCore18MainResourceLoader32interruptionForPolicyChangeErrorEv
-__ZN7WebCore11FrameLoader32interruptionForPolicyChangeErrorERKNS_15ResourceRequestE
-__ZN7WebCore10IconLoader11stopLoadingEv
-__ZN7WebCore11FrameLoader21handleFallbackContentEv
--[WebScriptObject setValue:forKey:]
--[WebScriptObject _isSafeScript]
--[WebScriptObject _rootObject]
-__ZNK3KJS6Window16allowsAccessFromEPKNS_14JSGlobalObjectE
--[WebScriptObject _imp]
-__Z11_didExecuteP15WebScriptObject
-__Z26updateRenderingForBindingsPN3KJS9ExecStateEPNS_8JSObjectE
-+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]
-__ZN7WebCore12IconDatabase17iconURLForPageURLERKNS_6StringE
-__ZN7WebCore9FrameView20addSlowRepaintObjectEv
-__ZNK7WebCore14RenderThemeMac22adjustSliderTrackStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZN7WebCore12RenderSliderC2EPNS_16HTMLInputElementE
-__ZN7WebCore12RenderSlider8setStyleEPNS_11RenderStyleE
-__ZN7WebCore12RenderSlider17updateFromElementEv
-__ZN7WebCore22HTMLSliderThumbElementC2EPNS_8DocumentEPNS_4NodeE
-__ZN7WebCore12RenderSlider16createThumbStyleEPNS_11RenderStyleES2_
-__ZNK7WebCore14RenderThemeMac22adjustSliderThumbStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZN7WebCore12RenderSlider20setPositionFromValueEb
-__ZN7WebCore12RenderSlider6layoutEv
-__ZN7WebCore12RenderSlider14calcPrefWidthsEv
-__ZNK7WebCore14RenderThemeMac21adjustSliderThumbSizeEPNS_12RenderObjectE
-__ZN7WebCore12RenderSlider9trackSizeEv
-__ZN7WebCore12RenderSlider18setCurrentPositionEi
-__ZNK7WebCore22HTMLSliderThumbElement12isShadowNodeEv
-__ZN7WebCore22HTMLSliderThumbElement16shadowParentNodeEv
-__ZNK7WebCore12RenderSlider16baselinePositionEbb
-__ZN7WebCore17RenderFlexibleBoxC2EPNS_4NodeE
-__ZN7WebCore17RenderFlexibleBox17layoutVerticalBoxEb
-__ZN7WebCore11RenderBlock30markPositionedObjectsForLayoutEv
-__ZN7WebCore11RenderBlock15clearTruncationEv
-__ZN7WebCore16shouldCheckLinesEPNS_12RenderObjectE
-__ZN7WebCore13RootInlineBox22canAccommodateEllipsisEbiii
-__ZNK7WebCore11RenderBlock25getBaselineOfFirstLineBoxEv
-__ZN7WebCore11RenderBlock9lineCountEv
-__ZN7WebCore13InlineFlowBox22canAccommodateEllipsisEbii
-__ZN7WebCore9InlineBox22canAccommodateEllipsisEbii
-__ZN7WebCore13RootInlineBox13placeEllipsisERKNS_12AtomicStringEbiiPNS_9InlineBoxE
-__ZN7WebCore13RootInlineBox16placeEllipsisBoxEbiiRb
-__ZN7WebCore13InlineFlowBox16placeEllipsisBoxEbiiRb
-__ZN7WebCore13InlineTextBox16placeEllipsisBoxEbiiRb
-__ZN7WebCore14RenderThemeMac16paintSliderTrackEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore24TrackGradientInterpolateEPvPKfPf
-__ZNK7WebCore12RenderSlider8isSliderEv
-__ZN7WebCore14RenderThemeMac16paintSliderThumbEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZNK7WebCore14RenderThemeMac21sliderThumbHorizontalEv
-__ZNK7WebCore12RenderSlider10inDragModeEv
-__ZNK7WebCore12RenderObject14caretMaxOffsetEv
-__ZNK7WebCore11HistoryItem15rssFeedReferrerEv
-__ZN7WebCore11FrameLoader6reloadEv
-__ZN7WebCore17RenderFlexibleBoxD1Ev
-__ZN7WebCore11EllipsisBoxD1Ev
-_sqlite3Update
-_defragmentPage
-_getOverflowPage
-_freePage
-__ZNK7WebCore17HTMLSelectElement17canStartSelectionEv
-__ZN7WebCore9PopupMenu5clearEv
-__ZNK7WebCore12RenderObject14caretMinOffsetEv
-__ZN7WebCore11RenderBlock13selectionRectEb
-__ZNK7WebCore12EventHandler17eventMayStartDragERKNS_18PlatformMouseEventE
-__ZN7WebCore5Range11compareNodeEPNS_4NodeERi
-__ZN7WebCore5Range12comparePointEPNS_4NodeEiRi
-__ZNK7WebCore13HitTestResult10isLiveLinkEv
-__ZNK7WebCore17HTMLAnchorElement10isLiveLinkEv
-__ZNK7WebCore12EventHandler22dragHysteresisExceededERKNS_8IntPointE
-__ZN7WebCore39jsHTMLFormElementPrototypeFunctionResetEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore15HTMLFormElement5resetEv
-__ZN7WebCore16HTMLInputElement5resetEv
-__ZNK7WebCore12RenderObject12scrollHeightEv
-__ZN7WebCore18JSConsolePrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore38jsDocumentPrototypeFunctionExecCommandEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document11execCommandERKNS_6StringEbS3_
-__ZN7WebCore7commandEPNS_8DocumentERKNS_6StringEb
-__ZN7WebCore6Editor7CommandC1Ev
-__ZN7WebCore8Document11styleSheetsEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_14StyleSheetListE
-__ZN7WebCore16JSStyleSheetListC1EPN3KJS8JSObjectEPNS_14StyleSheetListE
-__ZN7WebCore16JSStyleSheetList18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore16JSStyleSheetListEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSStyleSheetList16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore14StyleSheetList6lengthEv
-__ZN7WebCore16JSStyleSheetList11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore14StyleSheetList4itemEj
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_10StyleSheetE
-__ZN7WebCore24JSCSSStyleSheetPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSCSSStyleSheetC1EPN3KJS8JSObjectEPNS_13CSSStyleSheetE
-__ZN7WebCore12JSStyleSheetC1EPN3KJS8JSObjectEPNS_10StyleSheetE
-__ZN7WebCore15JSCSSStyleSheet18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore12JSStyleSheet18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore12JSStyleSheetEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore12JSStyleSheet16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore15JSCSSStyleSheetEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSCSSStyleSheet16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore13CSSStyleSheet8cssRulesEb
-__ZN7WebCore11CSSRuleListC2EPNS_9StyleListEb
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_11CSSRuleListE
-__ZN7WebCore13JSCSSRuleListC1EPN3KJS8JSObjectEPNS_11CSSRuleListE
-__ZN7WebCore13JSCSSRuleList18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore13JSCSSRuleList11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_7CSSRuleE
-__ZNK7WebCore13CSSImportRule4typeEv
-__ZN7WebCore15JSCSSImportRuleC1EPN3KJS8JSObjectEPNS_13CSSImportRuleE
-__ZN7WebCore9JSCSSRuleC1EPN3KJS8JSObjectEPNS_7CSSRuleE
-__ZN7WebCore15JSCSSImportRule18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore9JSCSSRule18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore18JSCSSRulePrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore12CSSStyleRule4typeEv
-__ZN7WebCore14JSCSSStyleRuleC1EPN3KJS8JSObjectEPNS_12CSSStyleRuleE
-__ZN7WebCore14JSCSSStyleRule18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore14JSCSSStyleRuleEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore14JSCSSStyleRule16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore16HTMLInputElement3srcEv
-__ZNK7WebCore21HTMLFrameOwnerElement15contentDocumentEv
-__ZN7WebCore5XPath6Parser19makeTokenAndAdvanceEiNS0_8EqTestOp6OpcodeEi
-__ZN7WebCore5XPath8EqTestOpC2ENS1_6OpcodeEPNS0_10ExpressionES4_
-__ZNK7WebCore5XPath8EqTestOp8evaluateEv
-__ZNK7WebCore5XPath8EqTestOp7compareERKNS0_5ValueES4_
-__ZN7WebCore5XPath5ValueD2Ev
-__ZNK7WebCore10ShadowDataeqERKS0_
-__ZN7WebCore15GraphicsContext9setShadowERKNS_7IntSizeEiRKNS_5ColorE
-__ZN7WebCore15GraphicsContext11clearShadowEv
-__ZN7WebCore7Element12scrollHeightEv
-__ZN7WebCore7Element11scrollWidthEv
-__ZNK7WebCore12RenderObject11scrollWidthEv
-__ZNK7WebCore12RenderObject20isInlineContinuationEv
-__ZNK7WebCore18RenderTextFragment12originalTextEv
-__ZN7WebCore18RenderTextFragment15setTextInternalEN3WTF10PassRefPtrINS_10StringImplEEE
-__ZN7WebCore18JSHTMLDListElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore18JSHTMLDListElement9classInfoEv
-__ZN7WebCore18JSHTMLDListElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore22JSCSSRuleListPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore16JSHTMLCollection14implementsCallEv
-__ZNK7WebCore17HTMLAnchorElement3relEv
-__ZN7WebCore9CSSParser17createCharsetRuleERKNS_11ParseStringE
-__ZN7WebCore14CSSCharsetRuleC2EPNS_9StyleBaseERKNS_6StringE
-__ZN7WebCore9StyleBase11isMediaRuleEv
-__ZN7WebCore9StyleBase14isFontFaceRuleEv
-__ZN7WebCore13RootInlineBox14adjustPositionEii
-__ZN7WebCore13InlineFlowBox14adjustPositionEii
-__ZNK7WebCore14CSSCharsetRule4typeEv
-__ZN7WebCore16JSCSSCharsetRuleC1EPN3KJS8JSObjectEPNS_14CSSCharsetRuleE
-__ZN7WebCore16JSCSSCharsetRule18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore23JSCustomXPathNSResolverC1EPN3KJS8JSObjectEPNS_5FrameE
-__ZN7WebCore23JSCustomXPathNSResolverD1Ev
-__ZN7WebCore23JSCustomXPathNSResolver18lookupNamespaceURIERKNS_6StringE
-__ZN7WebCore22getPositionOffsetValueEPNS_11RenderStyleEi
-__ZNK7WebCore7Comment8nodeNameEv
-__ZN3KJS17staticValueGetterIN7WebCore9JSCommentEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore9JSComment16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore44jsHTMLAnchorElementPrototypeFunctionToStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore17HTMLAnchorElement8toStringEv
-__ZN7WebCore17JSHTMLHeadElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore9sizingBoxEPNS_12RenderObjectE
-__ZNK7WebCore13KeyboardEvent8charCodeEv
-__ZNK7WebCore6String19characterStartingAtEj
-__ZN7WebCore10StringImpl19characterStartingAtEj
-__ZN7WebCore40jsHTMLFormElementPrototypeFunctionSubmitEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore15HTMLFormElement6submitEv
-__ZN7WebCore14CSSCharsetRuleD1Ev
-__ZN7WebCore14RenderTableRow12imageChangedEPNS_11CachedImageE
-__ZN7WebCore12EventHandler29passMousePressEventToSubframeERNS_28MouseEventWithHitTestResultsEPNS_5FrameE
-__ZN7WebCore12EventHandler32passWidgetMouseDownEventToWidgetEPNS_12RenderWidgetE
-__ZN7WebCore12EventHandler31passMouseReleaseEventToSubframeERNS_28MouseEventWithHitTestResultsEPNS_5FrameE
-__ZNK7WebCore12RenderObject8viewRectEv
-__ZNK7WebCore12RenderObject12overflowLeftEb
-__ZN7WebCore32jsDOMWindowPrototypeFunctionBlurEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9DOMWindow4blurEv
-__ZN7WebCore5Frame13unfocusWindowEv
-__ZNK7WebCore6Chrome7unfocusEv
-__ZN7WebCore11FrameLoader15didExplicitOpenEv
-__ZN7WebCore33jsDOMWindowPrototypeFunctionCloseEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9DOMWindow5closeEv
-__ZNK7WebCore11FrameLoader11openedByDOMEv
-__ZN7WebCore5Frame13scheduleCloseEv
-__ZN7WebCore6Chrome15closeWindowSoonEv
-__ZNK3KJS7Plugins9classInfoEv
-__ZNK7WebCore16JSHTMLCollection9classInfoEv
-__ZNK7WebCore17HTMLAnchorElement4nameEv
-__ZNK7WebCore15HTMLFormElement4nameEv
-__ZN7WebCore11FrameLoader25loadResourceSynchronouslyERKNS_15ResourceRequestERNS_13ResourceErrorERNS_16ResourceResponseERN3WTF6VectorIcLm0EEE
-__ZN7WebCore19ResourceRequestBase18setTimeoutIntervalEd
-__ZN7WebCore14ResourceHandle25loadResourceSynchronouslyERKNS_15ResourceRequestERNS_13ResourceErrorERNS_16ResourceResponseERN3WTF6VectorIcLm0EEEPNS_5FrameE
-+[WebCoreSynchronousLoader loadRequest:returningResponse:error:]
--[WebCoreSynchronousLoader _isDone]
--[WebCoreSynchronousLoader connection:willSendRequest:redirectResponse:]
--[WebCoreSynchronousLoader connection:didReceiveResponse:]
--[WebCoreSynchronousLoader connection:didReceiveData:]
--[WebCoreSynchronousLoader connectionDidFinishLoading:]
--[WebCoreSynchronousLoader _data]
--[WebCoreSynchronousLoader _response]
--[WebCoreSynchronousLoader _error]
--[WebCoreSynchronousLoader dealloc]
-__ZN7WebCore20ResourceResponseBaseD2Ev
-__ZN7WebCore13ResourceErroraSERKS0_
-__ZN7WebCore14XMLHttpRequest22processSyncLoadResultsERKN3WTF6VectorIcLm0EEERKNS_16ResourceResponseE
-__ZN7WebCore19createObjectWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore19JSHTMLObjectElementC1EPN3KJS8JSObjectEPNS_17HTMLObjectElementE
-__ZN7WebCore19JSHTMLObjectElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore19JSHTMLObjectElement18canGetItemsForNameEPN3KJS9ExecStateEPNS_17HTMLObjectElementERKNS1_10IdentifierE
-__ZN7WebCore19JSHTMLObjectElement24customGetOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore17HTMLObjectElement11getInstanceEv
-__ZN7WebCore28JSHTMLObjectElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore11FrameLoader21fileDoesNotExistErrorERKNS_16ResourceResponseE
-__ZN7WebCore5XPath18createFunLocalNameEv
-__ZN7WebCore5XPath9LogicalOpC2ENS1_6OpcodeEPNS0_10ExpressionES4_
-__ZNK7WebCore5XPath9LogicalOp8evaluateEv
-__ZNK7WebCore5XPath12FunLocalName8evaluateEv
-__ZNK7WebCore5XPath9LogicalOp14shortCircuitOnEv
-__ZNK7WebCore12RenderButton14hasLineIfEmptyEv
-__ZN3KJS17staticValueGetterIN7WebCore16JSHTMLMapElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSHTMLMapElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore14HTMLMapElement4nameEv
-__ZNK7WebCore15HTMLAreaElement6coordsEv
-__ZN7WebCore26JSUnprotectedEventListener14clearWindowObjEv
-__ZN7WebCore12RenderObject6setPosEii
-__ZN7WebCore11FrameLoader20checkNewWindowPolicyERKNS_16NavigationActionERKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEERKNS_6StringE
-__ZN7WebCore11PolicyCheck3setERKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEERKNS_6StringEPFvPvS3_S7_SA_bESB_
-__ZN7WebCore11FrameLoader28continueAfterNewWindowPolicyENS_12PolicyActionE
-__ZN7WebCore11FrameLoader36callContinueLoadAfterNewWindowPolicyEPvRKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEERKNS_6StringEb
-__ZN7WebCore11FrameLoader32continueLoadAfterNewWindowPolicyERKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEERKNS_6StringEb
-__ZN3KJS22pluginsFunctionRefreshEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS10PluginBase7refreshEb
-__ZN7WebCore14refreshPluginsEb
-__ZNK7WebCore17HTMLIFrameElement6heightEv
-__ZNK7WebCore19JSHTMLObjectElement9classInfoEv
-__ZN7WebCore19JSHTMLObjectElement10nameGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore9Selection22expandUsingGranularityENS_15TextGranularityE
-__ZN7WebCore15isEndOfDocumentERKNS_15VisiblePositionE
-__ZN7WebCore11isEndOfLineERKNS_15VisiblePositionE
-__ZN7WebCore9endOfLineERKNS_15VisiblePositionE
-__ZN7WebCore18endPositionForLineERKNS_15VisiblePositionE
-__ZN7WebCore11RenderBlock24fillVerticalSelectionGapEiiiiPS0_iiPKNS_12RenderObject9PaintInfoE
-__ZN7WebCore18JSHTMLEmbedElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore18JSHTMLEmbedElement9customPutEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore22runtimeObjectCustomPutEPN3KJS9ExecStateERKNS0_10IdentifierEPNS0_7JSValueEiPNS_11HTMLElementE
-__ZN7WebCore18JSHTMLEmbedElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore17HTMLPlugInElement8setWidthERKNS_6StringE
-__ZN7WebCore17HTMLPlugInElement9setHeightERKNS_6StringE
-__ZN7WebCore9CSSParser10parseShapeEib
-__ZN7WebCore17CSSPrimitiveValue4initEN3WTF10PassRefPtrINS_4RectEEE
-__ZN7WebCore15convertToLengthEPNS_17CSSPrimitiveValueEPNS_11RenderStyleEPb
-__ZN7WebCore11RenderStyle7setClipENS_6LengthES1_S1_S1_
-__ZN7WebCore9RenderBox11getClipRectEii
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_15PageURLSnapshotEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IS5_EEEESC_E4findIS3_NS_22IdentityHashTranslatorIS3_S6_S9_EEEENS_17HashTableIteratorIS3_S6_S8_S9_SE_SC_EERKT_
-__ZNK7WebCore13HitTestResult16absoluteImageURLEv
-__ZNK7WebCore20HTMLFrameElementBase3srcEv
-_WebCoreDrawTextAtPoint
-__ZNK7WebCore17MouseRelatedEvent1xEv
-__ZNK7WebCore12RenderObject10nextOffsetEi
-__ZN7WebCore12EventHandler20autoscrollTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore12RenderObject10autoscrollEv
-__ZN7WebCore11RenderLayer10autoscrollEv
-__ZN7WebCore12EventHandler27updateSelectionForMouseDragEv
-__ZNK7WebCore12EventHandler20currentMousePositionEv
-__ZNK7WebCore13CharacterData19isCharacterDataNodeEv
-__ZN7WebCore31SimplifiedBackwardsTextIterator17handleNonTextNodeEv
-__ZNK7WebCore4Node19isCharacterDataNodeEv
-__ZN7WebCore18MainResourceLoader7didFailERKNS_13ResourceErrorE
-__ZN7WebCore18MainResourceLoader13receivedErrorERKNS_13ResourceErrorE
-__ZN7WebCore18MainResourceLoader18handleDataLoadSoonERNS_15ResourceRequestE
-__ZN7WebCore5TimerINS_18MainResourceLoaderEE5firedEv
-__ZN7WebCore18MainResourceLoader17handleDataLoadNowEPNS_5TimerIS0_EE
-__ZN3WTF7HashMapIPKN7WebCore13RootInlineBoxEPNS1_11EllipsisBoxENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE4takeERKS4_
-__ZN7WebCore11EllipsisBox5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore36jsHTMLDocumentPrototypeFunctionCloseEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12RenderInline13absoluteRectsERN3WTF6VectorINS_7IntRectELm0EEEiib
-__ZN7WebCore19JSHTMLSelectElement11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore17HTMLSelectElement4itemEj
-__ZN7WebCore17HTMLButtonElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore12RenderButton24updateBeforeAfterContentENS_11RenderStyle8PseudoIdE
-__ZN7WebCore12RenderButton28removeLeftoverAnonymousBlockEPNS_11RenderBlockE
-__ZN7WebCore44jsDocumentPrototypeFunctionGetElementsByNameEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4Node17getElementsByNameERKNS_6StringE
-__ZN3WTF7HashMapIN7WebCore6StringENS1_15DynamicNodeList6CachesENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3addERKS2_RKS4_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_15DynamicNodeList6CachesEENS_18PairFirstExtractorIS7_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSC_IS6_EEEESD_E3addINS1_6StringES6_NS_17HashMapTranslatorILb0ES4_ISI_S6_ENS_18PairBaseHashTraitsINSC_ISI_EESE_EESF_SA_EEEES4_INS_17HashTableIteratorIS3_S7_S9_SA_SF_SD_EEbERKT_RKT0_
-__ZN7WebCore12NameNodeListC1EN3WTF10PassRefPtrINS_4NodeEEERKNS_6StringEPNS_15DynamicNodeList6CachesE
-__ZNK7WebCore12NameNodeList11nodeMatchesEPNS_4NodeE
-__ZNK7WebCore17HTMLButtonElement14isEnumeratableEv
-__ZNK7WebCore13KeyboardEvent5whichEv
-__ZNK7WebCore17HTMLAnchorElement19isKeyboardFocusableEPNS_13KeyboardEventE
-__ZNK7WebCore12EventHandler11tabsToLinksEPNS_13KeyboardEventE
-__ZNK7WebCore12EventHandler24invertSenseOfTabsToLinksEPNS_13KeyboardEventE
-__ZNK7WebCore22HTMLGenericFormElement19isKeyboardFocusableEPNS_13KeyboardEventE
-__ZNK7WebCore12EventHandler17tabsToAllControlsEPNS_13KeyboardEventE
-__ZNK7WebCore17HTMLButtonElement17isActivatedSubmitEv
-__ZNK7WebCore17HTMLButtonElement24isSuccessfulSubmitButtonEv
-__ZN7WebCore17HTMLButtonElement18setActivatedSubmitEb
-__ZN7WebCore17HTMLButtonElement14appendFormDataERNS_12FormDataListEb
-__ZN7WebCore12EventHandler32handleMousePressEventTripleClickERKNS_28MouseEventWithHitTestResultsE
-__ZNK7WebCore12HTMLDocument10compatModeEv
-__ZN7WebCore36jsDOMWindowPrototypeFunctionResizeToEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9DOMWindow8resizeToEff
-__ZN7WebCore19JSHTMLObjectElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore19JSHTMLObjectElement9customPutEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN3KJS17staticValueGetterIN7WebCore19JSHTMLObjectElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSHTMLObjectElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore17HTMLObjectElement4typeEv
-__ZN7WebCore15HTMLFormElement16removeImgElementEPNS_16HTMLImageElementE
-__ZN7WebCore23JSHTMLOptionsCollection16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore21HTMLOptionsCollection16setSelectedIndexEi
-__ZNK7WebCore19JSHTMLSelectElement9classInfoEv
-__ZN7WebCore12HTMLDocument5widthEv
-__ZNK7WebCore8Document7doctypeEv
-__ZNK7WebCore12DocumentType8nodeTypeEv
-__ZN7WebCore14JSDocumentTypeC1EPN3KJS8JSObjectEPNS_12DocumentTypeE
-__ZN7WebCore12HTMLDocument6heightEv
-__ZN7WebCore17HTMLSelectElement6removeEi
-__ZN7WebCore17HTMLSelectElement11removeChildEPNS_4NodeERi
-__ZN7WebCore19createButtonWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore19JSHTMLButtonElementC1EPN3KJS8JSObjectEPNS_17HTMLButtonElementE
-__ZN7WebCore19JSHTMLButtonElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore19JSHTMLButtonElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSHTMLButtonElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore21JSCSSStyleDeclarationEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSCSSStyleDeclaration16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore9FontValue7cssTextEv
-__ZN7WebCore17createFontWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore17JSHTMLFontElementC1EPN3KJS8JSObjectEPNS_15HTMLFontElementE
-__ZN7WebCore17JSHTMLFontElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore17JSHTMLFontElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZNK7WebCore14HTMLPreElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore14HTMLPreElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore16executeMoveRightEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore19SelectionController24modifyMovingRightForwardENS_15TextGranularityE
-__ZN7WebCore19SelectionController6moveToERKNS_15VisiblePositionEb
-__ZNK7WebCore5Frame11revealCaretERKNS_11RenderLayer15ScrollAlignmentE
-__ZNK7WebCore15VisiblePosition9caretRectEv
-__ZN7WebCore10HTMLParser11isHeaderTagERKNS_12AtomicStringE
-__ZN7WebCore14RenderFieldset22paintBorderMinusLegendEPNS_15GraphicsContextEiiiiPKNS_11RenderStyleEiii
-__ZNK7WebCore16HTMLImageElement4nameEv
-__ZNK7WebCore10MouseEvent9toElementEv
-__ZN7WebCore10RenderText17previousCharacterEv
-__ZNK7WebCore12RenderObject18previousInPreOrderEv
-__ZN7WebCore10StringImpl10capitalizeEt
-__ZN7WebCore17wordBreakIteratorEPKti
-__ZN7WebCore14textBreakFirstEPNS_17TextBreakIteratorE
-__ZN7WebCore15createHRWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore15JSHTMLHRElementC1EPN3KJS8JSObjectEPNS_13HTMLHRElementE
-__ZN7WebCore15JSHTMLHRElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25jsLocationProtoFuncReloadEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore11FrameLoader15scheduleRefreshEb
-__ZN7WebCore17HTMLAnchorElement7setNameERKNS_6StringE
-__ZN7WebCore22JSHTMLParagraphElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZNK7WebCore16HTMLInputElement5alignEv
-__ZNK7WebCore16HTMLTableElement6borderEv
-__ZN7WebCore19HTMLTextAreaElement5resetEv
-__ZN7WebCore8Document17setSecurityOriginEPNS_14SecurityOriginE
-__ZN7WebCore11FrameLoader5writeERKNS_6StringE
-__ZN7WebCore17HTMLSelectElement5resetEv
-__ZN7WebCore22HTMLGenericFormElement5resetEv
-__ZN7WebCore40jsHTMLAnchorElementPrototypeFunctionBlurEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore17HTMLScriptElement10setCharsetERKNS_6StringE
-__ZN7WebCore17RenderTextControl6scrollENS_15ScrollDirectionENS_17ScrollGranularityEf
-__ZN7WebCore9supportedEPNS_5FrameENS_19EditorCommandSourceE
-__ZNK7WebCore6Editor7Command5stateEPNS_5EventE
-__ZN7WebCore9stateNoneEPNS_5FrameEPNS_5EventE
-__ZN7WebCore10enabledCutEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
-__ZN7WebCore6Editor11canDHTMLCutEv
-__ZN7WebCore6Editor16dispatchCPPEventERKNS_12AtomicStringENS_21ClipboardAccessPolicyE
-__ZN7WebCore6Editor19newGeneralClipboardENS_21ClipboardAccessPolicyE
-__ZN7WebCore12ClipboardMacC2EbP12NSPasteboardNS_21ClipboardAccessPolicyEPNS_5FrameE
-__ZN7WebCore9ClipboardC2ENS_21ClipboardAccessPolicyEb
-__ZN7WebCore14ClipboardEventC2ERKNS_12AtomicStringEbbPNS_9ClipboardE
-__ZN7WebCore9Clipboard15setAccessPolicyENS_21ClipboardAccessPolicyE
-__ZN7WebCore12ClipboardMacD1Ev
-__ZNK7WebCore6Editor6canCutEv
-__ZNK7WebCore6Editor7canCopyEv
-__ZN7WebCore29imageElementFromImageDocumentEPNS_8DocumentE
-__ZN7WebCore11enabledCopyEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
-__ZN7WebCore6Editor12canDHTMLCopyEv
-__ZN7WebCore6Editor13canDHTMLPasteEv
-__ZNK7WebCore6Editor8canPasteEv
-__ZN7WebCore13enabledDeleteEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
-__ZN7WebCore7enabledEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
--[WebCoreFrameBridge canProvideDocumentSource]
-__ZNK7WebCore11FrameLoader16responseMIMETypeEv
-__ZN7WebCore40jsHTMLSelectElementPrototypeFunctionBlurEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore16HTMLImageElement3altEv
-__ZN7WebCore14RenderReplaced22positionForCoordinatesEii
-__ZNK7WebCore9JSComment9classInfoEv
-__ZN7WebCore9FrameView20postLayoutTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_12NamedNodeMapE
-__ZN7WebCore14JSNamedNodeMapC1EPN3KJS8JSObjectEPNS_12NamedNodeMapE
-__ZN7WebCore14JSNamedNodeMap18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore23JSNamedNodeMapPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore14JSNamedNodeMapEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore14JSNamedNodeMap16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS49jsXMLHttpRequestPrototypeFunctionOverrideMIMETypeEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore14XMLHttpRequest16overrideMIMETypeERKNS_6StringE
-__ZN7WebCore29jsConsolePrototypeFunctionLogEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9JSConsole9classInfoEv
-__ZN7WebCore7Console3logERKNS_6StringE
-__ZN7WebCore9CSSParser27createFloatingMediaQueryExpERKNS_12AtomicStringEPNS_9ValueListE
-__ZN7WebCore13MediaQueryExpC2ERKNS_12AtomicStringEPNS_9ValueListE
-__ZN7WebCore9CSSParser25sinkFloatingMediaQueryExpEPNS_13MediaQueryExpE
-__ZN3WTF6VectorIPN7WebCore13MediaQueryExpELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore13MediaQueryExpELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore13MediaQueryExpELm0EE15reserveCapacityEm
-__ZNK7WebCore19MediaQueryEvaluator4evalEPKNS_13MediaQueryExpE
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPFbPNS1_8CSSValueEPNS1_11RenderStyleEPNS1_4PageENS1_18MediaFeaturePrefixEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSF_ISC_EEE3getERKS3_
-__ZN7WebCore25min_widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore21widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore12compareValueIiEEbT_S1_NS_18MediaFeaturePrefixE
-__ZN7WebCore27JSHTMLDivElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore27JSHTMLDivElementConstructor9classInfoEv
-__ZN7WebCore26JSHTMLLIElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore26JSHTMLLIElementConstructor9classInfoEv
-__ZN7WebCore9InlineBox14selectionStateEv
-__ZN7WebCore29JSHTMLImageElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLImageElementConstructor9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore22JSHTMLTableCellElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore22JSHTMLTableCellElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore33JSHTMLTableCellElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore33JSHTMLTableCellElementConstructor9classInfoEv
-__ZN7WebCore29JSHTMLTableElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLTableElementConstructor9classInfoEv
-__ZN7WebCore28JSHTMLBodyElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSHTMLBodyElementConstructor9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore21JSHTMLTableRowElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSHTMLTableRowElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore32JSHTMLTableRowElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore32JSHTMLTableRowElementConstructor9classInfoEv
-__ZN7WebCore30JSHTMLAnchorElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore30JSHTMLAnchorElementConstructor9classInfoEv
-__ZN7WebCore13MediaQueryExpD2Ev
-__ZN3WTF6VectorIPN7WebCore13MediaQueryExpELm0EE6shrinkEm
-__ZN7WebCore4Page9goForwardEv
-__ZN7WebCore10JSDocument11setLocationEPN3KJS9ExecStateEPNS1_7JSValueE
-__ZN7WebCore8Document23activeChainNodeDetachedEPNS_4NodeE
-__ZN3KJS9MimeTypes11indexGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN7WebCore49jsDocumentPrototypeFunctionCreateDocumentFragmentEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document22createDocumentFragmentEv
-__ZNK7WebCore24JSHTMLElementConstructor9classInfoEv
-__ZNK7WebCore11RenderBlock14positionForBoxEPNS_9InlineBoxEb
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLTitleElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLTitleElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore16HTMLTitleElement4textEv
-__ZNK7WebCore15HTMLBodyElement11scrollWidthEv
-__ZN7WebCore41jsHTMLInputElementPrototypeFunctionSelectEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19basefontConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore19HTMLBaseFontElementC2EPNS_8DocumentE
-__ZNK7WebCore19HTMLBaseFontElement17endTagRequirementEv
-__ZNK7WebCore19HTMLBaseFontElement11tagPriorityEv
-__ZN7WebCore43jsNamedNodeMapPrototypeFunctionGetNamedItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore14JSNamedNodeMap9classInfoEv
-__ZN7WebCore6JSAttrC1EPN3KJS8JSObjectEPNS_4AttrE
-__ZN7WebCore6JSAttr18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore6JSAttrEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore6JSAttr16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore16DeprecatedString7replaceEjjRKS0_
-__ZNK7WebCore11RenderTheme32inactiveSelectionBackgroundColorEv
-__ZNK7WebCore14RenderThemeMac40platformInactiveSelectionBackgroundColorEv
-__ZNK7WebCore11RenderTheme40platformInactiveSelectionForegroundColorEv
-__ZN7WebCore10IconRecordD2Ev
-__ZNK7WebCore18JSConsolePrototype9classInfoEv
-__ZN7WebCore19optgroupConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore19HTMLOptGroupElementC2EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore19HTMLOptGroupElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore19HTMLOptGroupElement19recalcSelectOptionsEv
-__ZN7WebCore19HTMLOptGroupElement6attachEv
-__ZN7WebCore19HTMLOptGroupElement14setRenderStyleEPNS_11RenderStyleE
-__ZN7WebCore19HTMLOptGroupElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore19HTMLOptGroupElement15childrenChangedEb
-__ZNK7WebCore19HTMLOptGroupElement11renderStyleEv
-__ZN7WebCore12IconDatabase25removeIconFromSQLDatabaseERKNS_6StringE
-__ZNK7WebCore17JSNodeConstructor21implementsHasInstanceEv
-__ZThn8_N7WebCore14XMLHttpRequest7didFailEPNS_17SubresourceLoaderERKNS_13ResourceErrorE
-__ZN7WebCore14XMLHttpRequest7didFailEPNS_17SubresourceLoaderERKNS_13ResourceErrorE
-__ZN7WebCore19HTMLOptGroupElement6detachEv
-__ZN7WebCore30JSHTMLTextAreaElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore21JSHTMLTextAreaElement9classInfoEv
-__ZN7WebCore21JSHTMLTextAreaElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore21JSHTMLTextAreaElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZNK7WebCore14RenderThemeMac35adjustSearchFieldResultsButtonStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZN7WebCore14RenderThemeMac29paintSearchFieldResultsButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZNK7WebCore14RenderThemeMac18searchMenuTemplateEv
-__ZN7WebCore12EventHandler13freeClipboardEv
-__ZNK7WebCore12EventHandler23createDraggingClipboardEv
-__ZN7WebCore12EventHandler20dispatchDragSrcEventERKNS_12AtomicStringERKNS_18PlatformMouseEventE
-__ZN7WebCore12EventHandler17dispatchDragEventERKNS_12AtomicStringEPNS_4NodeERKNS_18PlatformMouseEventEPNS_9ClipboardE
-__ZNK7WebCore9Clipboard15sourceOperationERNS_13DragOperationE
-__ZN7WebCore14DragController9startDragEPNS_5FrameEPNS_9ClipboardENS_13DragOperationERKNS_18PlatformMouseEventERKNS_8IntPointEb
-__ZN7WebCore8getImageEPNS_7ElementE
-__ZN7WebCore12ClipboardMac7hasDataEv
-__ZNK7WebCore13HitTestResult16altDisplayStringEv
-__ZN7WebCore13displayStringERKNS_6StringEPKNS_4NodeE
-__ZN7WebCore9SelectionC2EPKNS_5RangeENS_9EAffinityE
-__ZN7WebCore14RenderReplaced17setSelectionStateENS_12RenderObject14SelectionStateE
-__ZNK7WebCore14RenderReplaced18canBeSelectionLeafEv
-__ZN7WebCore14RenderReplaced13selectionRectEb
-__ZN7WebCore12ClipboardMac24declareAndWriteDragImageEPNS_7ElementERKNS_4KURLERKNS_6StringEPNS_5FrameE
--[WebCoreFrameBridge markupStringFromNode:nodes:]
--[WebCoreFrameBridge nodesFromList:]
--[WebCoreFrameBridge _stringWithDocumentTypeStringAndMarkupString:]
-__ZNK7WebCore5Frame18documentTypeStringEv
-__ZNK7WebCore12DocumentType8toStringEv
--[DOMHTMLImageElement useMap]
-__ZNK7WebCore16HTMLImageElement6useMapEv
--[DOMHTMLImageElement src]
--[WebCoreFrameBridge URLWithAttributeString:]
--[WebCoreFrameBridge getData:andResponse:forURL:]
-__ZN7WebCore12SharedBuffer12createNSDataEv
-__ZNK7WebCore13HitTestResult9imageRectEv
-__ZNK7WebCore12RenderObject18absoluteContentBoxEv
-__ZN7WebCore14DragController11doImageDragEPNS_7ElementERKNS_8IntPointERKNS_7IntRectEPNS_9ClipboardEPNS_5FrameERS3_
-__ZN7WebCore24createDragImageFromImageEPNS_5ImageE
-__ZNK7WebCore7IntSizecv7_NSSizeEv
-__ZN7WebCore14DragController16maxDragImageSizeEv
-__ZN7WebCore21fitDragImageToMaxSizeEN3WTF9RetainPtrI7NSImageEERKNS_7IntSizeES6_
-__ZN7WebCore13dragImageSizeEN3WTF9RetainPtrI7NSImageEE
-__ZN7WebCore27dissolveDragImageToFractionEN3WTF9RetainPtrI7NSImageEEf
-__ZN7WebCore14DragController12doSystemDragEN3WTF9RetainPtrI7NSImageEERKNS_8IntPointES7_PNS_9ClipboardEPNS_5FrameEb
-__ZN7WebCore8DragDataC1EP11objc_objectRKNS_8IntPointES5_NS_13DragOperationEPNS_16PasteboardHelperE
-__ZN7WebCore14DragController11dragEnteredEPNS_8DragDataE
-__ZN7WebCore14DragController20dragEnteredOrUpdatedEPNS_8DragDataE
-__ZN7WebCore5Frame15documentAtPointERKNS_8IntPointE
-__ZN7WebCore14DragController15tryDocumentDragEPNS_8DragDataENS_21DragDestinationActionE
-__ZN7WebCore14DragController12tryDHTMLDragEPNS_8DragDataE
-__ZNK7WebCore11FrameLoader7baseURLEv
-__ZNK7WebCore8DragData15createClipboardENS_21ClipboardAccessPolicyE
-__ZN7WebCore9Clipboard18setSourceOperationENS_13DragOperationE
-__ZN7WebCore14IEOpFromDragOpENS_13DragOperationE
-__ZN7WebCore16createMouseEventEPNS_8DragDataE
-__ZN7WebCore12EventHandler17updateDragAndDropERKNS_18PlatformMouseEventEPNS_9ClipboardE
-__ZN7WebCore14DragController14canProcessDragEPNS_8DragDataE
-__ZNK7WebCore8DragData25containsCompatibleContentEv
-__ZNK7WebCore8DragData13containsFilesEv
-__ZN7WebCore14DragController16operationForLoadEPNS_8DragDataE
-__ZN7WebCore14DragController11dragUpdatedEPNS_8DragDataE
--[WebCoreFrameBridge dragSourceMovedTo:]
-__ZN7WebCore12EventHandler17dragSourceMovedToERKNS_18PlatformMouseEventE
-__ZN7WebCore14DragController10dragExitedEPNS_8DragDataE
-__ZN7WebCore12EventHandler17cancelDragAndDropERKNS_18PlatformMouseEventEPNS_9ClipboardE
-__ZN7WebCore12EventHandler14clearDragStateEv
-__ZN7WebCore14DragController10cancelDragEv
--[WebCoreFrameBridge dragSourceEndedAt:operation:]
-__ZN7WebCore12EventHandler17dragSourceEndedAtERKNS_18PlatformMouseEventENS_13DragOperationE
-__ZN7WebCore9Clipboard23setDestinationOperationENS_13DragOperationE
-__ZN7WebCore15deleteDragImageEN3WTF9RetainPtrI7NSImageEE
-__ZN7WebCore34jsDOMWindowPrototypeFunctionScrollEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore14SimpleFontData17smallCapsFontDataERKNS_15FontDescriptionE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_17DOMImplementationE
-__ZN7WebCore19JSDOMImplementationC1EPN3KJS8JSObjectEPNS_17DOMImplementationE
-__ZN7WebCore19JSDOMImplementation18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore28JSDOMImplementationPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore13HTMLTokenizer26parseProcessingInstructionERNS_15SegmentedStringENS0_5StateE
-__ZN7WebCore5XPath12LocationPath15insertFirstStepEPNS0_4StepE
-__ZN7WebCore41jsXPathResultPrototypeFunctionIterateNextEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore11XPathResult11iterateNextERi
-__ZN7WebCore14JSNamedNodeMap11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZNK7WebCore12NamedAttrMap4itemEj
-__ZN7WebCore21JSCSSStyleDeclaration16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore26CSSMutableStyleDeclaration10setCssTextERKNS_6StringERi
-__ZN7WebCore9Scrollbar6scrollENS_15ScrollDirectionENS_17ScrollGranularityEf
-__ZThn8_N7WebCore17PlatformScrollbar19updateThumbPositionEv
-__ZN7WebCore17PlatformScrollbar19updateThumbPositionEv
-__ZN7WebCore11RenderLayer12valueChangedEPNS_9ScrollbarE
-__ZN7WebCore17HTMLButtonElement19defaultEventHandlerEPNS_5EventE
-__ZNK7WebCore17HTMLButtonElement17canStartSelectionEv
-__ZN7WebCore22JSNamedNodesCollection12lengthGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZNK7WebCore21HTMLFrameOwnerElement19isKeyboardFocusableEPNS_13KeyboardEventE
-__ZNK7WebCore17HTMLSelectElement19isKeyboardFocusableEPNS_13KeyboardEventE
-__ZNK7WebCore17HTMLOptionElement11isFocusableEv
-__ZN7WebCore12NameNodeList24rootNodeAttributeChangedEv
-__ZN7WebCore30jsElementPrototypeFunctionBlurEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore11RenderLayer23verticalScrollbarWidgetEv
-__ZN7WebCore13HitTestResult12setScrollbarEPNS_17PlatformScrollbarE
-__ZN7WebCore9Scrollbar20handleMouseMoveEventERKNS_18PlatformMouseEventE
-__ZN7WebCore9Scrollbar19handleMouseOutEventERKNS_18PlatformMouseEventE
-__ZN7WebCore12HTMLDocument7bgColorEv
-__ZNK7WebCore15HTMLBodyElement7bgColorEv
-__ZN7WebCore14JSDocumentType18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore14JSDocumentTypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore14JSDocumentType16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore14JSDocumentType4implEv
-__ZN7WebCore22HTMLGenericFormElement11setTabIndexEi
-__ZN7WebCore19JSHTMLButtonElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore19JSHTMLButtonElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZNK7WebCore17HTMLButtonElement4typeEv
-__ZNK7WebCore14RenderFieldset33expandsToEncloseOverhangingFloatsEv
-__ZNK7WebCore4Node9isEnabledEv
-__ZN7WebCore35jsHTMLDocumentPrototypeFunctionOpenEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore14JSHTMLDocument4openEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore34jsDOMWindowPrototypeFunctionMoveToEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9DOMWindow6moveToEff
-__ZNK7WebCore19HTMLFieldSetElement11isFocusableEv
-__ZN7WebCore28JSHTMLButtonElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore19JSHTMLButtonElement9classInfoEv
-__ZNK7WebCore7UIEvent7keyCodeEv
-__ZN7WebCore13ImageDocumentC2EPNS_17DOMImplementationEPNS_5FrameE
-__ZNK7WebCore13ImageDocument17shouldShrinkToFitEv
-__ZN7WebCore13ImageDocument15createTokenizerEv
-__ZNK7WebCore14ImageTokenizer12wantsRawDataEv
-__ZN7WebCore14ImageTokenizer12writeRawDataEPKci
-__ZN7WebCore13ImageDocument11cachedImageEv
-__ZN7WebCore13ImageDocument23createDocumentStructureEv
-__ZN7WebCore8Document16childTypeAllowedENS_4Node8NodeTypeE
-__ZNK7WebCore14DocumentLoader16mainResourceDataEv
-__ZN7WebCore13ImageDocument12imageChangedEv
-__ZN7WebCore14ImageTokenizer6finishEv
-__ZNK7WebCore14DocumentLoader25isLoadingMultipartContentEv
-__ZN7WebCore15finishImageLoadEPNS_8DocumentEPNS_11CachedImageE
-__ZNK7WebCore20ResourceResponseBase17suggestedFilenameEv
-__ZN7WebCore8Document4headEv
-__ZN7WebCore14ImageTokenizerD1Ev
-__ZN7WebCore10IconLoader7didFailEPNS_17SubresourceLoaderERKNS_13ResourceErrorE
-__ZN7WebCore49jsDocumentPrototypeFunctionGetElementsByClassNameEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4Node22getElementsByClassNameERKNS_6StringE
-__ZN7WebCore13ClassNodeListC1EN3WTF10PassRefPtrINS_4NodeEEERKNS_6StringEPNS_15DynamicNodeList6CachesE
-__ZNK7WebCore13ClassNodeList11nodeMatchesEPNS_4NodeE
-__ZN7WebCore18createParamWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore18JSHTMLParamElementC1EPN3KJS8JSObjectEPNS_16HTMLParamElementE
-__ZN7WebCore18JSHTMLParamElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore18JSHTMLParamElement9classInfoEv
-__ZN7WebCore48jsElementPrototypeFunctionGetElementsByClassNameEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore19JSHTMLObjectElement14implementsCallEv
-__ZN7WebCore13ClassNodeListD1Ev
-__ZN7WebCore46jsDOMImplementationPrototypeFunctionHasFeatureEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore19JSDOMImplementation9classInfoEv
-__ZN7WebCore14isSVG10FeatureERKNS_6StringE
-__ZN7WebCore10ShadowDataC2ERKS0_
-__ZN7WebCore35HTMLSearchFieldResultsButtonElement19defaultEventHandlerEPNS_5EventE
-__ZN7WebCore34HTMLSearchFieldCancelButtonElement19defaultEventHandlerEPNS_5EventE
-__ZN7WebCore18JSHTMLOListElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore16HTMLInputElement12setMaxLengthEi
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLLabelElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLLabelElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore16HTMLLabelElement7htmlForEv
-__ZNK7WebCore13MutationEvent15isMutationEventEv
-__ZN7WebCore15JSMutationEventC1EPN3KJS8JSObjectEPNS_13MutationEventE
-__ZN7WebCore10JSNodeList10nameGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore42jsElementPrototypeFunctionGetAttributeNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Element16getAttributeNodeERKNS_6StringE
-__ZN7WebCore12IconDatabase5closeEv
-__ZN3WTF6VectorIPN7WebCore17RegularExpressionELm0EE6shrinkEm
-___tcf_0
-___tcf_46
-___tcf_45
-___tcf_44
-___tcf_43
-___tcf_42
-___tcf_41
-___tcf_40
-___tcf_39
-___tcf_38
-___tcf_37
-___tcf_36
-___tcf_35
-___tcf_34
-___tcf_33
-___tcf_32
-___tcf_31
-___tcf_30
-___tcf_29
-___tcf_28
-___tcf_27
-___tcf_26
-___tcf_25
-___tcf_24
-___tcf_23
-___tcf_22
-___tcf_21
-___tcf_20
-___tcf_19
-___tcf_18
-___tcf_17
-___tcf_16
-___tcf_15
-___tcf_14
-___tcf_13
-___tcf_12
-___tcf_11
-___tcf_10
-___tcf_9
-___tcf_8
-___tcf_7
-___tcf_6
-___tcf_5
-___tcf_4
-___tcf_3
-___tcf_2
-__ZN7WebCore5MutexD1Ev
-__ZN7WebCore14SQLiteDatabaseD1Ev
-__ZN7WebCore20tableCellConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore5Image11drawPatternEPNS_15GraphicsContextERKNS_9FloatRectERKNS_20TransformationMatrixERKNS_10FloatPointENS_17Compos
+__ZN7WebCore11BitmapImage26nativeImageForCurrentFrameEv
+__ZN7WebCore16RenderListMarker5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore16RenderListMarker21getRelativeMarkerRectEv
+__ZNK7WebCore4Page34inLowQualityImageInterpolationModeEv
+__ZN3WTF7HashMapIPN7WebCore11RenderImageEPNS1_20RenderImageScaleDataENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setERKS3
+__ZNK3WTF7HashMapIPN7WebCore11RenderImageEPNS1_20RenderImageScaleDataENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS
+__ZN7WebCore12RenderWidget11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZNK7WebCore7Element20isEnabledFormControlEv
+__ZNK7WebCore4KURL11isLocalFileEv
+__ZN7WebCore14SecurityOrigin20grantUniversalAccessEv
+__ZN7WebCore13StyledElement11addCSSColorEPNS_15MappedAttributeEiRKNS_6StringE
+__ZN7WebCore10HTMLParser29pCloserStrictCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCoreL16tableConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLTableElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLTableElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore16HTMLTableElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore16HTMLTableElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore16HTMLTableElement11cellBordersEv
+__ZNK7WebCore16HTMLTableElement17endTagRequirementEv
+__ZNK7WebCore16HTMLTableElement11tagPriorityEv
+__ZN7WebCore16HTMLTableElement6attachEv
+__ZNK7WebCore16HTMLTableElement36canHaveAdditionalAttributeStyleDeclsEv
+__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm0EE14shrinkCapacityEm
+__ZN7WebCore16HTMLTableElement29additionalAttributeStyleDeclsERN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
+__ZN7WebCore11RenderTableC1EPNS_4NodeE
+__ZN7WebCore11RenderTableC2EPNS_4NodeE
+__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE4fillERKS3_m
+__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE15reserveCapacityEm
+__ZSt4fillIPN7WebCore11RenderTable12ColumnStructES2_EvT_S4_RKT0_
+__ZN7WebCore11RenderTable14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore11RenderTable17updateFirstLetterEv
+__ZN7WebCore15AutoTableLayoutC1EPNS_11RenderTableE
+__ZN7WebCore15AutoTableLayoutC2EPNS_11RenderTableE
+__ZN7WebCore16HTMLTableElement8addChildEN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore16HTMLTableElement8checkDTDEPKNS_4NodeE
+__ZNK7WebCore11RenderTable7isTableEv
+__ZN7WebCoreL19tablerowConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore19HTMLTableRowElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19HTMLTableRowElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore19HTMLTableRowElement17endTagRequirementEv
+__ZNK7WebCore19HTMLTableRowElement11tagPriorityEv
+__ZN7WebCoreL14isTableSectionEPKNS_4NodeE
+__ZN7WebCore23HTMLTableSectionElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore23HTMLTableSectionElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore23HTMLTableSectionElement11tagPriorityEv
+__ZNK7WebCore23HTMLTableSectionElement36canHaveAdditionalAttributeStyleDeclsEv
+__ZN7WebCore23HTMLTableSectionElement29additionalAttributeStyleDeclsERN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
+__ZN7WebCore16HTMLTableElement19addSharedGroupDeclsEbRN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
+__ZNK7WebCore17CSSInheritedValue12cssValueTypeEv
+__ZN7WebCore18RenderTableSectionC1EPNS_4NodeE
+__ZN7WebCore18RenderTableSectionC2EPNS_4NodeE
+__ZN7WebCore11RenderTable8addChildEPNS_12RenderObjectES2_
+__ZNK7WebCore18RenderTableSection14isTableSectionEv
+__ZNK7WebCore18RenderTableSection15virtualChildrenEv
+__ZN7WebCore23HTMLTableSectionElement8addChildEN3WTF10PassRefPtrINS_4NodeEEE
+__ZNK7WebCore23HTMLTableSectionElement17endTagRequirementEv
+__ZN7WebCore23HTMLTableSectionElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore14RenderTableRowC1EPNS_4NodeE
+__ZN7WebCore14RenderTableRowC2EPNS_4NodeE
+__ZN7WebCore14RenderTableRow15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore14RenderTableRow13requiresLayerEv
+__ZN7WebCore18RenderTableSection8addChildEPNS_12RenderObjectES2_
+__ZNK7WebCore14RenderTableRow10isTableRowEv
+__ZN7WebCore18RenderTableSection10ensureRowsEi
+__ZN3WTF6VectorIN7WebCore18RenderTableSection9RowStructELm0EE4growEm
+__ZN3WTF6VectorIN7WebCore18RenderTableSection9RowStructELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore18RenderTableSection9RowStructELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIN7WebCore18RenderTableSection10CellStructELm0EE4fillERKS3_m
+__ZSt4fillIPN7WebCore18RenderTableSection10CellStructES2_EvT_S4_RKT0_
+__ZN7WebCore18RenderTableSection15virtualChildrenEv
+__ZNK7WebCore14RenderTableRow15virtualChildrenEv
+__ZN7WebCore19HTMLTableRowElement8addChildEN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore19HTMLTableRowElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore10HTMLParser25tableCellCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCoreL20tablecellConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore20HTMLTableCellElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore20HTMLTableCellElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZNK7WebCore20HTMLTableCellElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
__ZN7WebCore20HTMLTableCellElement20parseMappedAttributeEPNS_15MappedAttributeE
__ZNK7WebCore20HTMLTablePartElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
__ZN7WebCore20HTMLTablePartElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore13StyledElement14addCSSPropertyEPNS_15MappedAttributeEiRKNS_6StringE
-__ZN7WebCore8parseURLERKNS_6StringE
-__ZN3WTF6VectorItLm2048EE6shrinkEm
-__ZN7WebCore8Document11completeURLERKNS_6StringE
-__ZN7WebCore8Document11completeURLERKNS_16DeprecatedStringE
-__ZN7WebCore4KURLC2ERKS0_RKNS_16DeprecatedStringERKNS_12TextEncodingE
-__ZN7WebCore4KURL4initERKS0_RKNS_16DeprecatedStringERKNS_12TextEncodingE
-__ZNK7WebCore16DeprecatedString8containsEc
-__ZNK7WebCore16DeprecatedString8containsENS_14DeprecatedCharEb
-__ZNK7WebCore4KURL14isHierarchicalEv
-__ZN7WebCore20copyPathRemovingDotsEPcPKcii
__ZN7WebCore13StyledElement19addCSSImagePropertyEPNS_15MappedAttributeEiRKNS_6StringE
__ZN7WebCore26CSSMutableStyleDeclaration16setImagePropertyEiRKNS_6StringEb
-__ZN7WebCore13CSSImageValueC2ERKNS_6StringEPNS_9StyleBaseE
__ZNK7WebCore20HTMLTableCellElement17endTagRequirementEv
__ZNK7WebCore20HTMLTableCellElement11tagPriorityEv
__ZNK7WebCore20HTMLTableCellElement36canHaveAdditionalAttributeStyleDeclsEv
__ZN7WebCore20HTMLTableCellElement29additionalAttributeStyleDeclsERN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
__ZN7WebCore16HTMLTableElement18addSharedCellDeclsERN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
__ZN7WebCore16HTMLTableElement24addSharedCellBordersDeclERN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
+__ZN7WebCore13StyledElement22getMappedAttributeDeclENS_20MappedAttributeEntryERKNS_13QualifiedNameERKNS_12AtomicStringE
+__ZN7WebCore13StyledElement22setMappedAttributeDeclENS_20MappedAttributeEntryERKNS_13QualifiedNameERKNS_12AtomicStringEPNS_29CS
+__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm0EE15reserveCapacityEm
__ZN7WebCore16HTMLTableElement24addSharedCellPaddingDeclERN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
-__ZN7WebCore9StyleBase11isValueListEv
-__ZN7WebCore16CSSStyleSelector18mapBackgroundImageEPNS_15BackgroundLayerEPNS_8CSSValueE
-__ZN7WebCore13CSSImageValue5imageEPNS_9DocLoaderE
-__ZNK7WebCore17CSSPrimitiveValue14getStringValueEv
-__ZN7WebCore9DocLoader12requestImageERKNS_6StringE
-__ZN7WebCore9DocLoader15requestResourceENS_14CachedResource4TypeERKNS_6StringEPS4_bb
-__ZNK7WebCore11FrameLoader11isReloadingEv
-__ZN7WebCore9DocLoader14checkForReloadERKNS_4KURLE
-__ZN7WebCore5Cache14resourceForURLERKNS_6StringE
-__ZN7WebCore5Cache15requestResourceEPNS_9DocLoaderENS_14CachedResource4TypeERKNS_4KURLEPKNS_6StringEbb
-__ZN7WebCore11FrameLoader21restrictAccessToLocalEv
-__ZN7WebCore11FrameLoader7canLoadERKNS_4KURLEPKNS_8DocumentE
-__ZN7WebCore11CachedImageC2EPNS_9DocLoaderERKNS_6StringEb
-__ZN7WebCore14CachedResourceC2ERKNS_6StringENS0_4TypeEbb
-__ZN7WebCore6Loader4loadEPNS_9DocLoaderEPNS_14CachedResourceEbbb
-__ZN7WebCore7RequestC2EPNS_9DocLoaderEPNS_14CachedResourceEbbb
-__ZN7WebCore14CachedResource10setRequestEPNS_7RequestE
-__ZN7WebCore9DocLoader21incrementRequestCountEv
-__ZN7WebCore6Loader20servePendingRequestsEv
-__ZN7WebCore21DeprecatedPtrListImpl4takeEj
-__ZN7WebCore21DeprecatedPtrListImpl2atEj
-__ZN7WebCore21DeprecatedPtrListImpl6removeEb
-__ZN7WebCore13InlineTextBox15paintDecorationEPNS_15GraphicsContextEiii
-__ZN7WebCore12RenderObject23getTextDecorationColorsEiRNS_5ColorES2_S2_b
-__ZN7WebCore15decorationColorEPNS_11RenderStyleE
-__ZN7WebCore15GraphicsContext18setStrokeThicknessEf
-__ZN7WebCore15GraphicsContext26setPlatformStrokeThicknessEf
-__ZN7WebCore15GraphicsContext15drawLineForTextERKNS_8IntPointEib
-__ZNK7WebCore15GraphicsContext15strokeThicknessEv
-__ZN7WebCore17RenderTextControl5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore11RenderTheme5paintEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZNK7WebCore15GraphicsContext20updatingControlTintsEv
-__ZN7WebCore11RenderTheme16paintDecorationsEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore11RenderTheme15paintBorderOnlyEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore14RenderThemeMac14paintTextFieldEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore27LocalCurrentGraphicsContextC2EPNS_15GraphicsContextE
-__ZNK7WebCore11RenderTheme9isEnabledEPKNS_12RenderObjectE
-__ZNK7WebCore11RenderTheme17isReadOnlyControlEPKNS_12RenderObjectE
-__ZN7WebCore27LocalCurrentGraphicsContextD2Ev
-__ZN7WebCore14RenderThemeMac13paintMenuListEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore14RenderThemeMac23setPopupButtonCellStateEPKNS_12RenderObjectERKNS_7IntRectE
-__ZNK7WebCore14RenderThemeMac11popupButtonEv
-__ZNK7WebCore14RenderThemeMac16popupButtonSizesEv
-__ZN7WebCore14RenderThemeMac14setControlSizeEP6NSCellPKNS_7IntSizeERS4_
-__ZN7WebCore14RenderThemeMac18updateCheckedStateEP6NSCellPKNS_12RenderObjectE
-__ZNK7WebCore11RenderTheme15isIndeterminateEPKNS_12RenderObjectE
-__ZNK7WebCore11RenderTheme9isCheckedEPKNS_12RenderObjectE
-__ZN7WebCore14RenderThemeMac18updateEnabledStateEP6NSCellPKNS_12RenderObjectE
-__ZN7WebCore14RenderThemeMac18updatePressedStateEP6NSCellPKNS_12RenderObjectE
-__ZN7WebCore14RenderThemeMac18updateFocusedStateEP6NSCellPKNS_12RenderObjectE
-__ZNK7WebCore11RenderTheme9isFocusedEPKNS_12RenderObjectE
-__ZNK7WebCore14RenderThemeMac18popupButtonMarginsEv
-__ZNK7WebCore14RenderThemeMac11inflateRectERKNS_7IntRectERKNS_7IntSizeEPKi
-__ZN7WebCore15GraphicsContext4clipERKNS_7IntRectE
-__ZNK7WebCore14RenderMenuList15controlClipRectEii
-__ZN7WebCore9RenderBox19getOverflowClipRectEii
-__ZNK7WebCore11RenderLayer22verticalScrollbarWidthEv
-__ZNK7WebCore11RenderLayer25horizontalScrollbarHeightEv
-__ZN7WebCore15GraphicsContextD2Ev
-__ZN7WebCore15GraphicsContext29destroyGraphicsContextPrivateEPNS_22GraphicsContextPrivateE
-__ZN7WebCore15BackForwardList8backItemEv
-__ZN7WebCore15BackForwardList11forwardItemEv
-__ZNK7WebCore12RenderObject8isWidgetEv
-__ZN7WebCore8IntPointC1ERK8_NSPoint
-__ZN7WebCore13HitTestResultC2ERKNS_8IntPointE
-__ZN7WebCore11RenderLayer7hitTestERKNS_14HitTestRequestERNS_13HitTestResultE
-__ZN7WebCore8Document12updateLayoutEv
-__ZN7WebCore16enclosingIntRectERKNS_9FloatRectE
-__ZN7WebCore11RenderLayer12hitTestLayerEPS0_RKNS_14HitTestRequestERNS_13HitTestResultERKNS_7IntRectERKNS_8IntPointE
-__ZN7WebCore12RenderObject7hitTestERKNS_14HitTestRequestERNS_13HitTestResultERKNS_8IntPointEiiNS_13HitTestFilterE
-__ZN7WebCore11RenderBlock11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore11RenderBlock24isPointInOverflowControlERNS_13HitTestResultEiiii
-__ZN7WebCore11RenderBlock15hitTestContentsERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore18RenderTableSection11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore14RenderTableRow11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore10RenderFlow12hitTestLinesERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore13RootInlineBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
-__ZN7WebCore13InlineFlowBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
-__ZN7WebCore9InlineBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
-__ZN7WebCore11RenderImage11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore9RenderBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZNK7WebCore12RenderObject9lastChildEv
-__ZN7WebCore12RenderObject19updateHitTestResultERNS_13HitTestResultERKNS_8IntPointE
-__ZNK7WebCore12RenderObject12continuationEv
-__ZN7WebCore13HitTestResult12setInnerNodeEPNS_4NodeE
-__ZN7WebCore13HitTestResult21setInnerNonSharedNodeEPNS_4NodeE
-__ZN7WebCore11RenderImage8imageMapEv
-__ZNK7WebCore8Document11getImageMapERKNS_6StringE
-__ZN7WebCore11RenderLayer22updateHoverActiveStateERKNS_14HitTestRequestERNS_13HitTestResultE
-__ZN7WebCore13HitTestResultC1ERKS0_
-__ZN7WebCore13HitTestResultD1Ev
-__ZN7WebCore13HitTestResult22setToNonShadowAncestorEv
-__ZN7WebCore4Node18shadowAncestorNodeEv
-__ZN7WebCore12EventHandler10mouseMovedEP7NSEvent
-__ZN7WebCore12currentEventEv
-__ZN7WebCore18PlatformMouseEventC1EP7NSEvent
-__ZN7WebCore13pointForEventEP7NSEvent
-__ZN7WebCore19globalPointForEventEP7NSEvent
-__ZN7WebCore11globalPointERK8_NSPointP8NSWindow
-__ZN7WebCore15screenForWindowEP8NSWindow
-__ZN7WebCore15flipScreenPointERK8_NSPointP8NSScreen
-__ZN7WebCore12EventHandler10mouseMovedERKNS_18PlatformMouseEventE
-__ZN7WebCore12EventHandler20handleMouseMoveEventERKNS_18PlatformMouseEventEPNS_13HitTestResultE
-__ZN7WebCore12EventHandler17prepareMouseEventERKNS_14HitTestRequestERKNS_18PlatformMouseEventE
-__ZNK7WebCore10ScrollView16windowToContentsERKNS_8IntPointE
-__ZN7WebCore8Document17prepareMouseEventERKNS_14HitTestRequestERKNS_8IntPointERKNS_18PlatformMouseEventE
-__ZN7WebCore8Document12setHoverNodeEN3WTF10PassRefPtrINS_4NodeEEE
-__ZN7WebCore13ContainerNode9setActiveEbb
-__ZN7WebCore13ContainerNode10setHoveredEb
-__ZNK7WebCore12RenderObject13hoverAncestorEv
-__ZN7WebCore28MouseEventWithHitTestResultsC2ERKNS_18PlatformMouseEventERKNS_13HitTestResultE
-__ZN7WebCore13HitTestResultaSERKS0_
-__ZN7WebCore10ScrollView19scrollbarUnderMouseERKNS_18PlatformMouseEventE
-__ZNK7WebCore28MouseEventWithHitTestResults9scrollbarEv
-__ZNK7WebCore28MouseEventWithHitTestResults10targetNodeEv
-__ZN7WebCore21subframeForTargetNodeEPNS_4NodeE
-__ZN7WebCore12EventHandler12selectCursorERKNS_28MouseEventWithHitTestResultsEPNS_17PlatformScrollbarE
-__ZNK7WebCore28MouseEventWithHitTestResults10isOverLinkEv
-__ZN7WebCore11RenderLayer22isPointInResizeControlERKNS_8IntPointE
-__ZN7WebCore13pointerCursorEv
-__ZN7WebCore6CursorC2EP8NSCursor
-__ZN7WebCore6CursorC2ERKS0_
-__ZN7WebCore6Widget9setCursorERKNS_6CursorE
-__ZN7WebCore6CursorD2Ev
-__ZN7WebCore12EventHandler18dispatchMouseEventERKNS_12AtomicStringEPNS_4NodeEbiRKNS_18PlatformMouseEventEb
-__ZN7WebCore12EventHandler26updateMouseEventTargetNodeEPNS_4NodeERKNS_18PlatformMouseEventEb
-__ZN7WebCore15EventTargetNode18dispatchMouseEventERKNS_18PlatformMouseEventERKNS_12AtomicStringEiPNS_4NodeE
-__ZN7WebCore15EventTargetNode18dispatchMouseEventERKNS_12AtomicStringEiiiiiibbbbbPNS_4NodeEN3WTF10PassRefPtrINS_5EventEEE
-__ZNK7WebCore8Document11defaultViewEv
-__ZNK7WebCore5Frame9domWindowEv
-__ZN7WebCore9DOMWindowC2EPNS_5FrameE
-__ZN7WebCore10MouseEventC1ERKNS_12AtomicStringEbbPNS_9DOMWindowEiiiiibbbbtPNS_15EventTargetNodeEPNS_9ClipboardEb
-__ZN7WebCore17MouseRelatedEventC2ERKNS_12AtomicStringEbbPNS_9DOMWindowEiiiiibbbbb
-__ZN7WebCore9contentsXEPNS_9DOMWindowE
-__ZNK7WebCore10ScrollView9contentsXEv
-__ZN7WebCore9contentsYEPNS_9DOMWindowE
-__ZNK7WebCore10ScrollView9contentsYEv
-__ZN7WebCore17MouseRelatedEvent15initCoordinatesEv
-__ZN7WebCore5Event18setUnderlyingEventEN3WTF10PassRefPtrIS0_EE
-__ZN7WebCore17MouseRelatedEvent14receivedTargetEv
-__ZN7WebCore12EventHandler23handleMouseDraggedEventERKNS_28MouseEventWithHitTestResultsE
-__ZN7WebCore12EventHandler10handleDragERKNS_28MouseEventWithHitTestResultsE
-__ZN7WebCore6Chrome23mouseDidMoveOverElementERKNS_13HitTestResultEj
-__ZNK7WebCore13HitTestResult15absoluteLinkURLEv
-__ZN7WebCore6Chrome10setToolTipERKNS_13HitTestResultE
-__ZNK7WebCore13HitTestResult15spellingToolTipEv
-__ZN7WebCore8Document21markerContainingPointERKNS_8IntPointENS_14DocumentMarker10MarkerTypeE
-__ZNK7WebCore13HitTestResult5titleEv
-__ZN7WebCore16HTMLInputElement6detachEv
-__ZN7WebCore21DeprecatedPtrListImpl9removeRefEPKvb
-__ZNK7WebCore11ImageSource11initializedEv
-__ZN7WebCore15GraphicsContext19roundToDevicePixelsERKNS_9FloatRectE
-__ZNK7WebCore11BitmapImage21mayFillWithSolidColorEv
-__ZNK7WebCore7IntSizecv6CGSizeEv
-__ZN7WebCore15GraphicsContext4saveEv
-__ZN3WTF6VectorIN7WebCore20GraphicsContextStateELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore20GraphicsContextStateELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore20GraphicsContextStateELm0EE15reserveCapacityEm
-__ZN7WebCore15GraphicsContext17savePlatformStateEv
-__ZN7WebCore15GraphicsContext21setCompositeOperationENS_17CompositeOperatorE
-__ZN7WebCore15GraphicsContext7restoreEv
-__ZN3WTF6VectorIN7WebCore20GraphicsContextStateELm0EE6shrinkEm
-__ZN7WebCore15GraphicsContext20restorePlatformStateEv
-__ZN7WebCore11BitmapImage14startAnimationEv
-__ZN7WebCore16DeprecatedString7replaceENS_14DeprecatedCharES1_
-__ZN7WebCore15GraphicsContext7setFontERKNS_4FontE
-__ZNK7WebCore13RootInlineBox16paintEllipsisBoxERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore13InlineTextBox5paintERNS_12RenderObject9PaintInfoEii
-__ZNK7WebCore13RootInlineBox5blockEv
-__ZN7WebCore15GraphicsContext8drawTextERKNS_7TextRunERKNS_8IntPointEii
-__ZNK7WebCore15GraphicsContext4fontEv
-__ZNK7WebCore4Font8drawTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
-__ZNK7WebCore4Font14drawSimpleTextEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
-__ZNK7WebCore4Font15drawGlyphBufferEPNS_15GraphicsContextERKNS_11GlyphBufferERKNS_7TextRunERKNS_10FloatPointE
-__ZNK7WebCore4Font10drawGlyphsEPNS_15GraphicsContextEPKNS_14SimpleFontDataERKNS_11GlyphBufferEiiRKNS_10FloatPointE
-_WebCoreShouldUseFontSmoothing
-__ZN3WTF6VectorI6CGSizeLm2048EE6shrinkEm
-__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm2048EE6shrinkEm
-__ZN7WebCore13InlineTextBox14selectionStateEv
-__ZN7WebCore13InlineTextBox20paintDocumentMarkersEPNS_15GraphicsContextEiiPNS_11RenderStyleEPKNS_4FontEb
-__ZN7WebCore8Document14markersForNodeEPNS_4NodeE
-__ZN3WTF7HashMapINS_6RefPtrIN7WebCore4NodeEEEPSt4pairINS_6VectorINS2_14DocumentMarkerELm0EEENS6_INS2_7IntRectELm0EEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENSF_ISC_EEE3setEPS3_RKSC_
-__ZN7WebCore21updateGraphicsContextEPNS_15GraphicsContextERKNS_5ColorES4_f
-__ZN7WebCore15GraphicsContext15textDrawingModeEv
-__ZNK7WebCore13InlineTextBox7textPosEv
-__ZN7WebCore10RenderText7destroyEv
-__ZN7WebCore10RenderText15deleteTextBoxesEv
-__ZN7WebCore10RenderText27absoluteClippedOverflowRectEv
-__ZNK7WebCore12RenderObject7isMediaEv
-__ZNK7WebCore12RenderObject14isSVGContainerEv
-__ZN7WebCore9RenderBox26computeAbsoluteRepaintRectERNS_7IntRectEb
-__ZNK7WebCore11RenderBlock11isBlockFlowEv
-__ZNK7WebCore10RenderFlow10hasColumnsEv
-__ZN7WebCore15RenderTableCell26computeAbsoluteRepaintRectERNS_7IntRectEb
-__ZNK7WebCore9RenderBox4yPosEv
-__ZNK7WebCore9RenderBox4xPosEv
-__ZNK7WebCore12RenderObject11isBlockFlowEv
-__ZN7WebCore12RenderObject20deleteLineBoxWrapperEv
-__ZNK7WebCore12RenderObject17isSelectionBorderEv
-__ZNK7WebCore10RenderText14selectionStateEv
-__ZN7WebCore8RenderBRD1Ev
-__ZN7WebCore9FrameView16restoreScrollbarEv
-__ZN7WebCore11FrameLoader10gotoAnchorEv
-__ZNK7WebCore4KURL6hasRefEv
-__ZN7WebCore14ResourceLoader12resourceDataEv
-__ZN7WebCore14ResourceHandle12bufferedDataEv
-__ZN7WebCore12SharedBuffer10wrapNSDataEP6NSData
-__ZN7WebCore12SharedBufferC2EP6NSData
-__ZN7WebCore14DocumentLoader13updateLoadingEv
-__ZNK7WebCore11FrameLoader9isLoadingEv
-__ZNK7WebCore14DocumentLoader21isLoadingSubresourcesEv
-__ZN7WebCore14ResourceLoader16didFinishLoadingEv
-__ZN7WebCore14ResourceLoader23didFinishLoadingOnePartEv
-__ZN7WebCore11FrameLoader13didFinishLoadEPNS_14ResourceLoaderE
-__ZN7WebCore15ProgressTracker16completeProgressEm
-__ZN3WTF9HashTableImSt4pairImiENS_18PairFirstExtractorIS2_EENS_7IntHashImEENS_14PairHashTraitsINS_10HashTraitsImEENS8_IiEEEES9_E4findImNS_22IdentityHashTranslatorImS2_S6_EEEENS_17HashTableIteratorImS2_S4_S6_SB_S9_EERKT_
-__ZN7WebCore11FrameLoader24dispatchDidFinishLoadingEPNS_14DocumentLoaderEm
-__ZN7WebCore19InspectorController16didFinishLoadingEPNS_14DocumentLoaderEm
-__ZN7WebCore14ResourceLoader16releaseResourcesEv
-__ZN7WebCore14ResourceHandle9setClientEPNS_20ResourceHandleClientE
-__ZN7WebCore14ResourceHandleD2Ev
-__ZN7WebCore14ResourceHandle15releaseDelegateEv
--[WebCoreResourceHandleAsDelegate detachHandle]
--[WebCoreResourceHandleAsDelegate dealloc]
-__ZN7WebCore22ResourceHandleInternalD2Ev
+__ZN7WebCore15RenderTableCellC1EPNS_4NodeE
+__ZN7WebCore15RenderTableCellC2EPNS_4NodeE
+__ZN7WebCore15RenderTableCell17updateFromElementEv
+__ZN7WebCore15RenderTableCell15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore15RenderTableCell14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore15RenderTableCell13requiresLayerEv
+__ZN7WebCore14RenderTableRow8addChildEPNS_12RenderObjectES2_
+__ZNK7WebCore15RenderTableCell11isTableCellEv
+__ZN7WebCore18RenderTableSection7addCellEPNS_15RenderTableCellEPNS_14RenderTableRowE
+__ZN7WebCore14RenderTableRow15virtualChildrenEv
+__ZN7WebCore11HTMLElement16addHTMLAlignmentEPNS_15MappedAttributeE
+__ZN7WebCore11HTMLElement31addHTMLAlignmentToStyledElementEPNS_13StyledElementEPNS_15MappedAttributeE
+__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm0EE6shrinkEm
+__ZN7WebCore11RenderTable12appendColumnEi
+__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE4growEm
+__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE14expandCapacityEm
+__ZN7WebCore18RenderTableSection12appendColumnEi
+__ZN3WTF6VectorIN7WebCore18RenderTableSection10CellStructELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore18RenderTableSection10CellStructELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIiLm0EE4growEm
+__ZNK7WebCore26CSSMutableStyleDeclaration19getPropertyCSSValueEi
+__ZN7WebCore10HTMLParser18isResidualStyleTagERKNS_12AtomicStringE
+__ZThn112_NK7WebCore17HTMLScriptElement22languageAttributeValueEv
+__ZNK7WebCore17HTMLScriptElement22languageAttributeValueEv
+__ZN7WebCoreL29isSupportedJavaScriptLanguageERKNS_6StringE
+__ZN7WebCore15jsDocumentTitleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15reportExceptionEPN3JSC9ExecStateENS0_7JSValueE
+__ZThn88_N7WebCore8Document15reportExceptionERKNS_6StringEiS3_
+__ZN7WebCore8Document15reportExceptionERKNS_6StringEiS3_
+__ZNK7WebCore9DOMWindow7consoleEv
+__ZN7WebCore7ConsoleC1EPNS_5FrameE
+__ZN7WebCore7ConsoleC2EPNS_5FrameE
+__ZN7WebCore7Console10addMessageENS_13MessageSourceENS_12MessageLevelERKNS_6StringEjS5_
+__ZN7WebCore7Console21shouldPrintExceptionsEv
+__ZN7WebCoreL15fontConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore15HTMLFontElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLFontElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore15HTMLFontElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore15HTMLFontElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore15HTMLFontElement26cssValueFromFontSizeNumberERKNS_6StringERi
+__ZN7WebCore15FontFamilyValue20appendSpaceSeparatedEPKtj
+__ZN7WebCore6String6appendEc
+__ZN7WebCore6String6appendEPKtj
+__ZNK7WebCore15HTMLFontElement17endTagRequirementEv
+__ZNK7WebCore15HTMLFontElement11tagPriorityEv
+__ZNK7WebCore6String8foldCaseEv
+__ZN7WebCore10StringImpl8foldCaseEv
+__ZN7WebCore10HTMLParser25checkIfHasPElementInScopeEv
+__ZN7WebCore6String6numberEt
+__ZNK7WebCore16HTMLInputElement7altTextEv
+__ZN7WebCore11RenderImage14resetAnimationEv
+__ZNK7WebCore15RenderTableCell10borderLeftEv
+__ZNK7WebCore15RenderTableCell11borderRightEv
+__ZN7WebCore15RenderTableCell21computeRectForRepaintEPNS_20RenderBoxModelObjectERNS_7IntRectEb
+__ZNK7WebCore15RenderTableCell9borderTopEv
+__ZNK7WebCore15RenderTableCell12borderBottomEv
-[WebCoreResourceHandleAsDelegate connection:didFailWithError:]
__ZN7WebCore14ResourceLoader7didFailEPNS_14ResourceHandleERKNS_13ResourceErrorE
__ZN7WebCore17SubresourceLoader7didFailERKNS_13ResourceErrorE
-__ZN7WebCore6Loader7didFailEPNS_17SubresourceLoaderERKNS_13ResourceErrorE
-__ZN7WebCore6Loader7didFailEPNS_17SubresourceLoaderEb
-__ZN7WebCore9DocLoader17setLoadInProgressEb
+__ZN7WebCore6Loader4Host7didFailEPNS_17SubresourceLoaderERKNS_13ResourceErrorE
+__ZN7WebCore6Loader4Host7didFailEPNS_17SubresourceLoaderEb
__ZN7WebCore11CachedImage5errorEv
__ZN7WebCore11CachedImage5clearEv
__ZN7WebCore11CachedImage18destroyDecodedDataEv
-__ZN7WebCore14CachedResource14setEncodedSizeEj
-__ZN7WebCore11CachedImage15notifyObserversEv
-__ZN7WebCore26CachedResourceClientWalkerC2ERKN3WTF14HashCountedSetIPNS_20CachedResourceClientENS1_7PtrHashIS4_EENS1_10HashTraitsIS4_EEEE
-__ZN7WebCore26CachedResourceClientWalker4nextEv
-__ZNK3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E8containsIiNS_22IdentityHashTranslatorIiS2_S6_EEEEbRKT_
-__ZN7WebCore20CachedResourceClient12imageChangedEPNS_11CachedImageE
-__ZN7WebCore11RenderImage12imageChangedEPNS_11CachedImageE
__ZN7WebCore11RenderImage22setImageSizeForAltTextEPNS_11CachedImageE
-__ZNK7WebCore11CachedImage5imageEv
-__ZN7WebCore11brokenImageEv
+__ZN7WebCoreL11brokenImageEv
__ZN7WebCore5Image20loadPlatformResourceEPKc
+__ZN7WebCore12SharedBuffer10wrapNSDataEP6NSData
+__ZN7WebCore12SharedBufferC1EPK8__CFData
+__ZN7WebCore12SharedBufferC2EPK8__CFData
__ZNK7WebCore12SharedBuffer16platformDataSizeEv
+__ZN7WebCore5Cache5evictEPNS_14CachedResourceE
+__ZN7WebCore14ResourceLoader7didFailERKNS_13ResourceErrorE
+__ZN7WebCore11FrameLoader13didFailToLoadEPNS_14ResourceLoaderERKNS_13ResourceErrorE
+__ZN7WebCore17ResourceErrorBaseD2Ev
+__ZNK7WebCore11RenderTable12avoidsFloatsEv
+__ZN7WebCore11RenderTable6layoutEv
+__ZN7WebCore11RenderTable9calcWidthEv
+__ZN7WebCore11RenderTable14calcPrefWidthsEv
+__ZN7WebCore11RenderTable23recalcHorizontalBordersEv
+__ZNK7WebCore11RenderTable14calcBorderLeftEv
+__ZNK7WebCore11RenderTable15calcBorderRightEv
+__ZN7WebCore15AutoTableLayout14calcPrefWidthsERiS1_
+__ZN7WebCore15AutoTableLayout10fullRecalcEv
+__ZN3WTF6VectorIN7WebCore15AutoTableLayout6LayoutELm4EE4fillERKS3_m
+__ZSt4fillIPN7WebCore15AutoTableLayout6LayoutES2_EvT_S4_RKT0_
+__ZN3WTF6VectorIPN7WebCore15RenderTableCellELm4EE4fillERKS3_m
+__ZSt4fillIPPN7WebCore15RenderTableCellES2_EvT_S4_RKT0_
+__ZN7WebCore15AutoTableLayout12recalcColumnEi
+__ZN7WebCore15RenderTableCell14calcPrefWidthsEv
+__ZNK7WebCore11RenderTable10borderLeftEv
+__ZNK7WebCore11RenderTable11borderRightEv
+__ZNK7WebCore15RenderTableCell15styleOrColWidthEv
+__ZN7WebCore15AutoTableLayout18calcEffectiveWidthEv
+__ZN7WebCore15AutoTableLayout6layoutEv
+__ZN7WebCore11RenderTable13setCellWidthsEv
+__ZN7WebCore18RenderTableSection13setCellWidthsEv
+__ZN7WebCore15RenderTableCell11updateWidthEi
+__ZN7WebCore18RenderTableSection6layoutEv
+__ZN7WebCore14RenderTableRow6layoutEv
+__ZN7WebCore15RenderTableCell6layoutEv
+__ZN7WebCore15RenderTableCell9calcWidthEv
+__ZNK7WebCore15RenderTableCell10paddingTopEb
+__ZNK7WebCore15RenderTableCell13paddingBottomEb
+__ZNK7WebCore15RenderTableCell16baselinePositionEbb
+__ZN7WebCore18RenderTableSection13calcRowHeightEv
+__ZNK7WebCore11RenderTable9borderTopEv
+__ZNK7WebCore11RenderTable12borderBottomEv
+__ZN7WebCore18RenderTableSection10layoutRowsEi
+__ZNK7WebCore11RenderBlock24percentHeightDescendantsEv
+__ZNK7WebCore18RenderTableSection12overflowLeftEb
+__ZNK7WebCore18RenderTableSection13overflowWidthEb
+__ZNK7WebCore18RenderTableSection11overflowTopEb
+__ZNK7WebCore18RenderTableSection14overflowHeightEb
+__ZNK7WebCore11RenderTable12sectionBelowEPKNS_18RenderTableSectionEb
+__ZNK7WebCore11RenderTable10colElementEiPbS1_
+__ZNK7WebCore27RenderTextControlSingleLine21preferredContentWidthEf
+__ZThn128_NK7WebCore16HTMLInputElement4sizeEv
+__ZNK7WebCore16HTMLInputElement4sizeEv
+__ZN7WebCore15AutoTableLayout14insertSpanCellEPNS_15RenderTableCellE
+__ZN3WTF6VectorIPN7WebCore15RenderTableCellELm4EE4growEm
+__ZN3WTF6VectorIPN7WebCore15RenderTableCellELm4EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore15RenderTableCellELm4EE15reserveCapacityEm
+__ZNK7WebCore18RenderTableSection17rightmostPositionEbb
+__ZNK7WebCore18RenderTableSection14lowestPositionEbb
+__ZNK7WebCore15RenderTableCell19mapLocalToContainerEPNS_20RenderBoxModelObjectEbbRNS_14TransformStateE
+__ZN7WebCore11RenderTable5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore11RenderTable11paintObjectERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore18RenderTableSection5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore18RenderTableSection11paintObjectERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore15RenderTableCell26paintBackgroundsBehindCellERNS_12RenderObject9PaintInfoEiiPS1_
+__ZN7WebCore15RenderTableCell5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore15RenderTableCell19paintBoxDecorationsERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore13InlineTextBox15paintDecorationEPNS_15GraphicsContextEiiiPNS_10ShadowDataE
+__ZN7WebCore12RenderObject23getTextDecorationColorsEiRNS_5ColorES2_S2_b
+__ZN7WebCoreL15decorationColorEPNS_11RenderStyleE
+__ZNK7WebCore11RenderTable10cellBeforeEPKNS_15RenderTableCellE
+__ZNK7WebCore11RenderTable9cellAboveEPKNS_15RenderTableCellE
+__ZNK7WebCore11RenderTable12sectionAboveEPKNS_18RenderTableSectionEb
+__ZN7WebCore11HistoryItem17setAlternateTitleERKNS_6StringE
+__ZN7WebCore11RenderTable11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZN7WebCore18RenderTableSection11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZN7WebCore14RenderTableRow11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZNK7WebCore15RenderTableCell23mapAbsoluteToLocalPointEbbRNS_14TransformStateE
+__ZN7WebCore15BackForwardList16forwardListCountEv
+__ZN7WebCore15BackForwardList13backListCountEv
+__ZN7WebCore15BackForwardList11itemAtIndexEi
+__ZN7WebCore9DOMWindow36dispatchAllPendingBeforeUnloadEventsEv
+__ZN7WebCore12IconDatabase5closeEv
+__ZN7WebCore12IconDatabase17cleanupSyncThreadEv
+__ZN7WebCore12IconDatabase27deleteAllPreparedStatementsEv
+__ZN7WebCore9DOMWindow30dispatchAllPendingUnloadEventsEv
+__ZN7WebCore4Page23clearUndoRedoOperationsEv
+__ZN7WebCore9PageGroup17closeLocalStorageEv
+__ZN7WebCore9PageGroup12localStorageEv
+__ZN7WebCore12LocalStorage5closeEv
+__ZN7WebCore18LocalStorageThread9terminateEv
+__ZN7WebCore16LocalStorageTaskC1ENS0_4TypeEN3WTF10PassRefPtrINS_18LocalStorageThreadEEE
+__ZN7WebCore16LocalStorageTaskC2ENS0_4TypeEN3WTF10PassRefPtrINS_18LocalStorageThreadEEE
+__ZN7WebCore18LocalStorageThread16performTerminateEv
+__ZN3WTF16ThreadSafeSharedIN7WebCore18LocalStorageThreadEE5derefEv
+__ZNK7WebCore10MouseEvent12isMouseEventEv
+__ZN7WebCore5Frame34setMarkedTextMatchesAreHighlightedEb
+__ZN7WebCore5Frame21markAllMatchesForTextERKNS_6StringEbj
+__ZN7WebCore15rangeOfContentsEPNS_4NodeE
+__ZN7WebCore5Range18selectNodeContentsEPNS_4NodeERi
+__ZN7WebCore13findPlainTextEPKNS_5RangeERKNS_6StringEbb
+__ZN7WebCore17CharacterIteratorC1EPKNS_5RangeEbb
+__ZN7WebCore17CharacterIteratorC2EPKNS_5RangeEbb
+__ZN7WebCoreL8searcherEv
+__ZN7WebCore17CharacterIterator7advanceEi
+__ZN7WebCoreL17characterSubrangeERNS_17CharacterIteratorEii
+__ZNK7WebCore17CharacterIterator5rangeEv
+__ZNK7WebCore12TextIterator5rangeEv
+__ZNK7WebCore5Range9collapsedERi
+__ZN7WebCore18endVisiblePositionEPKNS_5RangeENS_9EAffinityE
+__ZNK7WebCore5Range9endOffsetERi
+__ZNK7WebCore5Range12endContainerERi
+__ZNK7WebCore10RenderText10nextOffsetEi
+__ZN7WebCore20startVisiblePositionEPKNS_5RangeENS_9EAffinityE
+__ZNK7WebCore5Range11startOffsetERi
+__ZNK7WebCore6Editor17insideVisibleAreaEPNS_5RangeE
+__ZNK7WebCore5Frame21excludeFromTextSearchEv
+__ZNK7WebCore9FrameTree3topEb
+__ZN7WebCore8Document9addMarkerEPNS_5RangeENS_14DocumentMarker10MarkerTypeENS_6StringE
+__ZN7WebCore8Document9addMarkerEPNS_4NodeENS_14DocumentMarkerE
+__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EE15reserveCapacityEm
+__ZN7WebCoreL24placeholderRectForMarkerEv
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore4NodeEEEPSt4pairINS_6VectorINS2_14DocumentMarkerELm0EEENS6_INS2_7IntRectELm0EEEENS_7PtrHas
+__ZNK7WebCore5Range18shadowTreeRootNodeEv
+__ZN7WebCoreL19collapsedToBoundaryEPKNS_5RangeEb
+__ZN7WebCore4Node14isInShadowTreeEv
+__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EEC1ERKS3_
+__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EEC2ERKS3_
+__ZN7WebCore13InlineTextBox20paintTextMatchMarkerEPNS_15GraphicsContextEiiNS_14DocumentMarkerEPNS_11RenderStyleERKNS_4FontE
+__ZN7WebCore13InlineTextBox12selectionTopEv
+__ZN7WebCore13InlineTextBox15selectionHeightEv
+__ZNK7WebCore4Font20selectionRectForTextERKNS_7TextRunERKNS_8IntPointEiii
+__ZNK7WebCore4Font26selectionRectForSimpleTextERKNS_7TextRunERKNS_8IntPointEiii
+__ZN7WebCore8Document24setRenderedRectForMarkerEPNS_4NodeENS_14DocumentMarkerERKNS_7IntRectE
+__ZNK7WebCore5Frame31markedTextMatchesAreHighlightedEv
+__ZN3WTF6VectorIN7WebCore14DocumentMarkerELm0EE6shrinkEm
+__ZNK7WebCore9FrameTree20traverseNextWithWrapEb
+__ZNK7WebCore11FrameLoader14initialRequestEv
+__ZN7WebCore11FrameLoader50didReceiveServerRedirectForProvisionalLoadForFrameEv
+__ZN7WebCore11FrameLoader21checkNavigationPolicyERKNS_15ResourceRequestEPFvPvS3_N3WTF10PassRefPtrINS_9FormStateEEEbES4_
+__ZN7WebCore18MainResourceLoader33callContinueAfterNavigationPolicyEPvRKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEE
+__ZN7WebCore18MainResourceLoader29continueAfterNavigationPolicyERKNS_15ResourceRequestEb
+__ZN7WebCore15BackForwardList8capacityEv
+__ZN7WebCore10CachedPage6createEPNS_4PageE
+__ZN7WebCore10CachedPageC1EPNS_4PageE
+__ZN7WebCore10CachedPageC2EPNS_4PageE
+__ZN7WebCore11CachedFrameC1EPNS_5FrameE
+__ZN7WebCore11CachedFrameC2EPNS_5FrameE
+__ZN7WebCore22ScriptExecutionContext23suspendActiveDOMObjectsEv
+__ZN7WebCore21ScriptCachedFrameDataC1EPNS_5FrameE
+__ZN7WebCore21ScriptCachedFrameDataC2EPNS_5FrameE
+__ZN7WebCore5Frame11clearTimersEv
+__ZN7WebCore5Frame11clearTimersEPNS_9FrameViewEPNS_8DocumentE
+__ZN7WebCore19AnimationController17suspendAnimationsEPNS_8DocumentE
+__ZN7WebCore26AnimationControllerPrivate17suspendAnimationsEPNS_8DocumentE
+__ZN7WebCore8Document14setInPageCacheEb
+__ZN7WebCore11CachedFrame26setCachedFramePlatformDataEPNS_23CachedFramePlatformDataE
+__ZN7WebCore9PageCache3addEN3WTF10PassRefPtrINS_11HistoryItemEEENS2_INS_10CachedPageEEE
+__ZN7WebCore9PageCache12addToLRUListEPNS_11HistoryItemE
+__ZNK7WebCore16HTMLInputElement20saveFormControlStateERNS_6StringE
+__ZNK7WebCore16HTMLInputElement15formControlTypeEv
+__ZNK7WebCore17HTMLSelectElement20saveFormControlStateERNS_6StringE
+__ZN3WTF6VectorIcLm1024EE6shrinkEm
+__ZNK7WebCore17HTMLSelectElement15formControlTypeEv
+__ZN7WebCore7Console15disconnectFrameEv
+__ZThn112_NK7WebCore17HTMLScriptElement17forAttributeValueEv
+__ZNK7WebCore17HTMLScriptElement17forAttributeValueEv
+__ZN7WebCoreL19textareaConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore19HTMLTextAreaElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore19HTMLTextAreaElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZNK7WebCore11HTMLElement16findFormAncestorEv
+__ZN7WebCore19HTMLTextAreaElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore22HTMLFormControlElement11tagPriorityEv
+__ZNK7WebCore14RenderThemeMac19adjustTextAreaStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZN7WebCore11RenderBlock23removePositionedObjectsEPS0_
+__ZN7WebCore15HTMLFormElement18registerImgElementEPNS_16HTMLImageElementE
+__ZN3WTF6VectorIPN7WebCore16HTMLImageElementELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore16HTMLImageElementELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore16HTMLImageElementELm0EE15reserveCapacityEm
+__ZN7WebCore12InputElement23parseMaxLengthAttributeERNS_16InputElementDataEPNS_15MappedAttributeE
+__ZN7WebCore13textBreakNextEPNS_17TextBreakIteratorE
+__ZN7WebCore5TimerINS_8DocumentEE5firedEv
+__ZN7WebCore8Document21styleRecalcTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCoreL23tablecaptionConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore23HTMLTableCaptionElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore23HTMLTableCaptionElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore23HTMLTableCaptionElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore23HTMLTableCaptionElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore23HTMLTableCaptionElement17endTagRequirementEv
+__ZNK7WebCore23HTMLTableCaptionElement11tagPriorityEv
+__ZN7WebCoreL30createHTMLScriptElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLScriptElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLScriptElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLScriptElementEEE
+__ZN7WebCore19JSHTMLScriptElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLScriptElementEEE
+__ZN7WebCore19JSHTMLScriptElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore25setJSHTMLScriptElementSrcEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLScriptElement6setSrcERKNS_6StringE
+__ZNK7WebCore19JSHTMLScriptElement9classInfoEv
+__ZN7WebCore17ScriptElementData13requestScriptERKNS_6StringE
+__ZN7WebCore12CachedScript11setEncodingERKNS_6StringE
+__ZN7WebCore17ScriptElementData14notifyFinishedEPNS_14CachedResourceE
+__ZN7WebCore8Document17executeScriptSoonEPNS_17ScriptElementDataENS_20CachedResourceHandleINS_12CachedScriptEEE
+__ZN3WTF6VectorISt4pairIPN7WebCore17ScriptElementDataENS2_20CachedResourceHandleINS2_12CachedScriptEEEELm0EE14expandCapacityEmP
+__ZN3WTF6VectorISt4pairIPN7WebCore17ScriptElementDataENS2_20CachedResourceHandleINS2_12CachedScriptEEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorISt4pairIPN7WebCore17ScriptElementDataENS2_20CachedResourceHandleINS2_12CachedScriptEEEELm0EE15reserveCapacityEm
+__ZN7WebCore8Document27executeScriptSoonTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore17ScriptElementData7executeEPNS_12CachedScriptE
+__ZN7WebCore17ScriptElementData14evaluateScriptERKNS_16ScriptSourceCodeE
+__ZN7WebCore17jsHTMLDocumentAllEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14JSHTMLDocument3allEPN3JSC9ExecStateE
+__ZN7WebCore8Document3allEv
+__ZNK7WebCore19JSHTMLAllCollection9toBooleanEPN3JSC9ExecStateE
+__ZN7WebCoreL32createHTMLTextAreaElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore21JSHTMLTextAreaElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLTextAreaElementEEE
+__ZN7WebCore21JSHTMLTextAreaElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLTextAreaElementEEE
+__ZN7WebCoreL29createHTMLStyleElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLStyleElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLStyleElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLStyleElementEEE
+__ZN7WebCore18JSHTMLStyleElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLStyleElementEEE
+__ZNK7WebCore18JSHTMLStyleElement9classInfoEv
+__ZN7WebCore12StyleElement20insertedIntoDocumentEPNS_8DocumentEPNS_7ElementE
+__ZN7WebCore18JSHTMLStyleElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore23jsHTMLStyleElementSheetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn112_N7WebCore17HTMLScriptElement17dispatchLoadEventEv
+__ZN7WebCore17HTMLScriptElement17dispatchLoadEventEv
+__ZN3WTF6VectorISt4pairIPN7WebCore17ScriptElementDataENS2_20CachedResourceHandleINS2_12CachedScriptEEEELm0EE6shrinkEm
+__ZN7WebCore21JSHTMLTextAreaElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore26jsHTMLTextAreaElementValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTextAreaElement5valueEv
+__ZNK7WebCore19HTMLTextAreaElement11updateValueEv
+__ZN7WebCore21JSHTMLTextAreaElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore29setJSHTMLTextAreaElementValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19HTMLTextAreaElement8setValueERKNS_6StringE
+__ZN7WebCore16setJSNodeOnerrorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node10setOnerrorEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZNK7WebCore15RenderTableCell14borderHalfLeftEb
+__ZNK7WebCore15RenderTableCell19collapsedLeftBorderEb
+__ZN7WebCoreL14compareBordersERKNS_20CollapsedBorderValueES2_
+__ZNK7WebCore15RenderTableCell15borderHalfRightEb
+__ZNK7WebCore15RenderTableCell20collapsedRightBorderEb
+__ZNK7WebCore11RenderTable9cellAfterEPKNS_15RenderTableCellE
+__ZNK7WebCore15RenderTableCell13borderHalfTopEb
+__ZNK7WebCore15RenderTableCell18collapsedTopBorderEv
+__ZNK7WebCore15RenderTableCell16borderHalfBottomEb
+__ZNK7WebCore15RenderTableCell21collapsedBottomBorderEv
+__ZNK7WebCore11RenderTable9cellBelowEPKNS_15RenderTableCellE
+__ZN7WebCore18RenderTableSection17recalcOuterBorderEv
+__ZNK7WebCore18RenderTableSection18calcOuterBorderTopEv
+__ZNK7WebCore18RenderTableSection21calcOuterBorderBottomEv
+__ZNK7WebCore18RenderTableSection19calcOuterBorderLeftEb
+__ZNK7WebCore18RenderTableSection20calcOuterBorderRightEb
+__ZNK7WebCore11RenderTable16outerBorderRightEv
+__ZNK7WebCore11RenderTable15outerBorderLeftEv
+__ZNK7WebCore11RenderTable14outerBorderTopEv
+__ZNK7WebCore11RenderTable17outerBorderBottomEv
+__ZN3WTF6VectorISt4pairIPKN7WebCore8FontDataEbELm1EE14expandCapacityEmPKS6_
+__ZN3WTF6VectorISt4pairIPKN7WebCore8FontDataEbELm1EE14expandCapacityEm
+__ZN3WTF6VectorISt4pairIPKN7WebCore8FontDataEbELm1EE15reserveCapacityEm
+__ZN3WTF6VectorIN7WebCore15AutoTableLayout6LayoutELm4EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore15AutoTableLayout6LayoutELm4EE15reserveCapacityEm
+__ZNK7WebCore15RenderTableCell19collectBorderStylesERN3WTF6VectorINS_20CollapsedBorderValueELm100EEE
+__ZN7WebCoreL14addBorderStyleERN3WTF6VectorINS_20CollapsedBorderValueELm100EEES2_
+__ZN7WebCore15RenderTableCell16sortBorderStylesERN3WTF6VectorINS_20CollapsedBorderValueELm100EEE
+__ZN7WebCore15RenderTableCell20paintCollapsedBorderEPNS_15GraphicsContextEiiii
+__ZN7WebCoreL20collapsedBorderStyleENS_12EBorderStyleE
+__ZN3WTF6VectorIN7WebCore20CollapsedBorderValueELm100EE6shrinkEm
+__ZN7WebCore12JSStyleSheet4markEv
+__ZN7WebCore18JSImageConstructor4markEv
+__ZN7WebCore19JSHTMLScriptElementD1Ev
+__ZN7WebCore17JSHTMLHeadElementD1Ev
+__ZN7WebCore11BitmapImage18destroyDecodedDataEb
+__ZN7WebCore11ImageSource5clearEbmPNS_12SharedBufferEb
+__ZN7WebCore11BitmapImageD0Ev
+__ZN7WebCore11ImageSourceD1Ev
+__ZN7WebCore11ImageSourceD2Ev
+__ZN7WebCoreL27compareBorderStylesForQSortEPKvS1_
+__ZNK7WebCore19JSLazyEventListener10jsFunctionEv
+__ZNK7WebCore19JSLazyEventListener9parseCodeEv
+__ZThn88_NK7WebCore8Document10virtualURLEv
+__ZNK7WebCore8Document10virtualURLEv
+__ZNK7WebCore13JSHTMLElement21pushEventHandlerScopeEPN3JSC9ExecStateERNS1_10ScopeChainE
+__ZNK7WebCore11HTMLElement11virtualFormEv
+__ZNK7WebCore5Event15isKeyboardEventEv
+__ZNK7WebCore5Event11isTextEventEv
+__ZN7WebCore15getDOMStructureINS_12JSMouseEventEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore12JSMouseEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSUIEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore9JSUIEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore12JSMouseEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10MouseEventEEE
+__ZN7WebCore12JSMouseEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10MouseEventEEE
+__ZN7WebCore9JSUIEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7UIEventEEE
+__ZNK3JSC8JSObject16isVariableObjectEv
+__ZNK7WebCore5Event20storesResultAsStringEv
+__ZNK7WebCore17HTMLAnchorElement11isFocusableEv
+__ZNK7WebCore17HTMLAnchorElement16isMouseFocusableEv
+__ZNK7WebCore17HTMLAnchorElement17canStartSelectionEv
+__ZN7WebCore14CachedResource11setEncodingERKNS_6StringE
+__ZNK7WebCore19HTMLTextAreaElement20saveFormControlStateERNS_6StringE
+__ZNK7WebCore19HTMLTextAreaElement15formControlTypeEv
+__ZN7WebCore8Location15disconnectFrameEv
+__ZN7WebCoreL16dlistConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLDListElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLDListElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore16HTMLDListElement17endTagRequirementEv
+__ZNK7WebCore16HTMLDListElement11tagPriorityEv
+__ZN7WebCore10HTMLParser18dtCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCore10HTMLParser18ddCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN3WTF6VectorIPN7WebCore9RenderBoxELm0EE6shrinkEm
+__ZN7WebCore10JSLocationD1Ev
+__ZN7WebCore10JSLocationD2Ev
+__ZN7WebCore21JSHTMLTextAreaElementD1Ev
+__ZN7WebCore12JSMouseEventD1Ev
+__ZN7WebCore10RenderView19updateHitTestResultERNS_13HitTestResultERKNS_8IntPointE
+__ZN7WebCore28createAttributeEventListenerEPNS_5FrameEPNS_9AttributeE
+__ZN7WebCore8Document31setWindowAttributeEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore8Document4headEv
+__ZN7WebCore14RenderReplaced14calcPrefWidthsEv
+__ZN7WebCoreL21subframeForTargetNodeEPNS_4NodeE
+__ZN7WebCore12EventHandler28passMouseMoveEventToSubframeERNS_28MouseEventWithHitTestResultsEPNS_5FrameEPNS_13HitTestResultE
+__ZN7WebCore12EventHandler27passSubframeEventToSubframeERNS_28MouseEventWithHitTestResultsEPNS_5FrameEPNS_13HitTestResultE
+__ZN7WebCore10ScrollView5paintEPNS_15GraphicsContextERKNS_7IntRectE
+__ZN7WebCore6Widget5paintEPNS_15GraphicsContextERKNS_7IntRectE
+__ZNK7WebCore11RenderLayer20requiresSlowRepaintsEv
+__ZNK7WebCore9FrameTree14isDescendantOfEPKNS_5FrameE
+__ZN7WebCore25setJSHTMLIFrameElementSrcEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19JSHTMLIFrameElement6setSrcEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore20HTMLFrameElementBase6setSrcERKNS_6StringE
+__ZN7WebCore11FrameLoader15userGestureHintEv
+__ZN7WebCore11HistoryItem6setURLERKNS_4KURLE
+__ZN7WebCore9PageCache6removeEPNS_11HistoryItemE
+__ZN7WebCore11HistoryItem12setURLStringERKNS_6StringE
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_E47removeAndInvalid
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_10StringHashENS_10HashTraitsIS2_EES7_E6removeEPS2_
+__ZN7WebCore13PageURLRecordD1Ev
+__ZN7WebCore13PageURLRecordD2Ev
+__ZN7WebCore11HistoryItem18clearDocumentStateEv
+__ZN7WebCore6Widget16removeFromParentEv
+__ZN7WebCore10ScrollView11removeChildEPNS_6WidgetE
+__ZN3WTF9HashTableIPN7WebCore6WidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22Ide
+__ZN3WTF9HashTableIPN7WebCore6WidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInvali
+__ZN3WTF9HashTableIPN7WebCore6WidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN7WebCore10ScrollView19platformRemoveChildEPNS_6WidgetE
+__ZN7WebCore6Widget19removeFromSuperviewEv
+__ZN7WebCoreL23safeRemoveFromSuperviewEP6NSView
+__ZN7WebCore10RenderPart12deleteWidgetEv
+__ZNK7WebCore9RenderBox18absoluteContentBoxEv
+__ZN7WebCore12RenderWidget17setWidgetGeometryERKNS_7IntRectE
+__ZN3WTF7HashMapIPN7WebCore24OverlapTestRequestClientENS1_7IntRectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS7_IS4_EEE3setERKS3_R
+__ZThn120_N7WebCore12RenderWidget20setOverlapTestResultEb
+__ZN7WebCore12RenderWidget20setOverlapTestResultEb
+__ZN7WebCore9FrameView15setIsOverlappedEb
+__ZN7WebCore19JSHTMLIFrameElementD1Ev
+__ZN7WebCore7CommentD0Ev
+__ZN7WebCore25JSHTMLDivElementPrototypeD1Ev
+__ZN7WebCore18setJSDOMWindowNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow7setNameERKNS_6StringE
+__ZN7WebCore15jsDOMWindowNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow4nameEv
+__ZN7WebCore5TimerINS_11CachedImageEE5firedEv
+__ZN7WebCore11CachedImage29decodedDataDeletionTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore22setJSDOMWindowLocationEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11JSDOMWindow11setLocationEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore19JSLazyEventListenerD0Ev
+__ZN7WebCore15JSEventListenerD2Ev
+__ZN7WebCore11FrameLoader16detachFromParentEv
+__ZN7WebCore19InspectorController23frameDetachedFromParentEPNS_5FrameE
+__ZN7WebCore11FrameLoader19closeAndRemoveChildEPNS_5FrameE
+__ZN7WebCore5Frame13pageDestroyedEv
+__ZN7WebCore16JSDOMWindowShell15disconnectFrameEv
+__ZN7WebCore15JSDOMWindowBase15disconnectFrameEv
+__ZN7WebCore9FrameTree11removeChildEPNS_5FrameE
+__ZN7WebCore11FrameLoader22scheduleCheckCompletedEv
+__ZN7WebCore21DeprecatedPtrListImplD1Ev
+__ZN7WebCore21DeprecatedPtrListImplD2Ev
+__ZN7WebCore12RenderWidget7destroyEv
+__ZN7WebCore16RenderPartObjectD0Ev
+__ZN7WebCore9FrameView20removeWidgetToUpdateEPNS_16RenderPartObjectE
+__ZN7WebCore10RenderPartD2Ev
+__ZN7WebCore12RenderWidgetD2Ev
+__ZN7WebCore12RenderWidget12deleteWidgetEv
+__ZN7WebCoreL14preConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore14HTMLPreElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14HTMLPreElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore14HTMLPreElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore14HTMLPreElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore14HTMLPreElement17endTagRequirementEv
+__ZNK7WebCore14HTMLPreElement11tagPriorityEv
+__ZN7WebCore26setJSHTMLInputElementValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLInputElement8setValueERKNS_6StringE
+__ZN7WebCore5FrameD1Ev
+__ZN7WebCore5FrameD2Ev
+__ZN7WebCore11FrameLoader14cancelAndClearEv
+__ZN7WebCore5Frame22disconnectOwnerElementEv
+__ZN7WebCore9DOMWindow15disconnectFrameEv
+__ZN7WebCore19AnimationControllerD1Ev
+__ZN7WebCore19AnimationControllerD2Ev
+__ZN7WebCore26AnimationControllerPrivateD1Ev
+__ZN7WebCore26AnimationControllerPrivateD2Ev
+__ZN7WebCore12EventHandlerD1Ev
+__ZN7WebCore12EventHandlerD2Ev
+__ZN7WebCore6EditorD1Ev
+__ZN7WebCore6EditorD2Ev
+__ZN7WebCore16ScriptControllerD1Ev
+__ZN7WebCore16ScriptControllerD2Ev
+__ZN7WebCore16ScriptController31disconnectPlatformScriptObjectsEv
+-[DOMAbstractView(Frame) _disconnectFrame]
+-[DOMAbstractView dealloc]
+__ZN7WebCore15removeJSWrapperEPN3JSC8JSObjectE
+__ZN7WebCore11FrameLoaderD1Ev
+__ZN7WebCore11FrameLoaderD2Ev
+__ZN7WebCore11FrameLoader9setOpenerEPNS_5FrameE
+__ZN3WTF9HashTableIPN7WebCore5FrameES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTableE
+__ZN7WebCore9FrameTreeD1Ev
+__ZN7WebCore9FrameTreeD2Ev
+__ZN7WebCoreL27createHTMLPreElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore16JSHTMLPreElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSHTMLPreElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14HTMLPreElementEEE
+__ZN7WebCore16JSHTMLPreElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14HTMLPreElementEEE
+__ZN7WebCore16JSHTMLPreElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16JSHTMLPreElement9classInfoEv
+__ZN7WebCoreL26createHTMLBRElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore15JSHTMLBRElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSHTMLBRElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13HTMLBRElementEEE
+__ZN7WebCore15JSHTMLBRElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13HTMLBRElementEEE
+__ZNK7WebCore15JSHTMLBRElement9classInfoEv
+__ZN7WebCore17HTMLIFrameElementD0Ev
+__ZN7WebCore21HTMLFrameOwnerElementD2Ev
+__ZN7WebCore28JSHTMLIFrameElementPrototypeD1Ev
+__ZN7WebCore16JSDOMWindowShellD1Ev
+__ZN7WebCore16JSDOMWindowShellD2Ev
+__ZN7WebCore15JSHTMLBRElementD1Ev
+__ZN7WebCore16JSHTMLPreElementD1Ev
+__ZN7WebCore12IconDatabase28removePageURLFromSQLDatabaseERKNS_6StringE
+__ZN7WebCore27RenderTextControlSingleLine11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZN7WebCore27RenderTextControlInnerBlock11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZNK7WebCore27RenderTextControlSingleLine11isTextFieldEv
+__ZNK7WebCore11RenderTheme12stateChangedEPNS_12RenderObjectENS_12ControlStateE
+__ZNK7WebCore11RenderTheme13supportsHoverEPKNS_11RenderStyleE
+__ZN7WebCore17RenderTextControl19hitInnerTextElementERNS_13HitTestResultEiiii
+__ZN7WebCoreL22centerTruncateToBufferERKNS_6StringEjjPt
+__ZN7WebCore11isTextBreakEPNS_17TextBreakIteratorEi
+__ZSt13binary_searchIPKttEbT_S2_RKT0_
+__ZSt11lower_boundIPKttET_S2_S2_RKT0_
+__ZN7WebCoreL16findTextEncodingEPKci
+__ZN7WebCore12TextCodecICU29registerExtendedEncodingNamesEPFvPKcS2_E
+__ZN7WebCore12TextCodecICU22registerExtendedCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
+__ZN7WebCore12TextCodecMac21registerEncodingNamesEPFvPKcS2_E
+__ZN7WebCore12TextCodecMac14registerCodecsEPFvPKcPFSt8auto_ptrINS_9TextCodecEERKNS_12TextEncodingEPKvESA_E
+__ZN3WTF6VectorIcLm64EE6shrinkEm
+__ZNK7WebCore12TextEncoding26closestByteBasedEquivalentEv
+__ZN7WebCore22UTF32BigEndianEncodingEv
+__ZN7WebCore25UTF32LittleEndianEncodingEv
+__ZN7WebCoreL15addEncodingNameERN3WTF7HashSetIPKcNS0_7PtrHashIS3_EENS0_10HashTraitsIS3_EEEES3_
+__ZN3WTF7HashSetIPKcNS_7PtrHashIS2_EENS_10HashTraitsIS2_EEE3addERKS2_
+__ZN3WTF9HashTableIPKcS2_NS_17IdentityExtractorIS2_EENS_7PtrHashIS2_EENS_10HashTraitsIS2_EES8_E6expandEv
+__ZN3WTF9HashTableIPKcS2_NS_17IdentityExtractorIS2_EENS_7PtrHashIS2_EENS_10HashTraitsIS2_EES8_E6rehashEi
+__ZN3WTF9HashTableIPKcS2_NS_17IdentityExtractorIS2_EENS_7PtrHashIS2_EENS_10HashTraitsIS2_EES8_E13allocateTableEi
+__ZN3WTF9HashTableIPKcS2_NS_17IdentityExtractorIS2_EENS_7PtrHashIS2_EENS_10HashTraitsIS2_EES8_E15deallocateTableEPS2_i
+__ZNK3WTF9HashTableIPKcS2_NS_17IdentityExtractorIS2_EENS_7PtrHashIS2_EENS_10HashTraitsIS2_EES8_E8containsIS2_NS_22IdentityHashT
+__ZN3WTF6VectorItLm512EE14expandCapacityEmPKt
+__ZN3WTF6VectorItLm512EE14expandCapacityEm
+__ZN3WTF6VectorItLm512EE15reserveCapacityEm
+__ZN7WebCore4KURL7setPortEt
+__ZNK7WebCore9FrameView13isTransparentEv
+__ZN7WebCore15GraphicsContext11drawEllipseERKNS_7IntRectE
+__ZN7WebCore15GraphicsContext8drawPathEv
+__ZN7WebCoreL12UTF7EncodingEv
+__ZN7WebCore15HTMLBodyElement14createLinkDeclEv
+__ZN7WebCore8DragDataC1EP11objc_objectRKNS_8IntPointES5_NS_13DragOperationEPNS_16PasteboardHelperE
+__ZN7WebCore8DragDataC2EP11objc_objectRKNS_8IntPointES5_NS_13DragOperationEPNS_16PasteboardHelperE
+__ZN7WebCore14DragController11dragEnteredEPNS_8DragDataE
+__ZN7WebCore14DragController20dragEnteredOrUpdatedEPNS_8DragDataE
+__ZN7WebCore5Frame15documentAtPointERKNS_8IntPointE
+__ZN7WebCore14DragController15tryDocumentDragEPNS_8DragDataENS_21DragDestinationActionE
+__ZN7WebCore14DragController12tryDHTMLDragEPNS_8DragDataE
+__ZNK7WebCore11FrameLoader7baseURLEv
+__ZNK7WebCore8DragData15createClipboardENS_21ClipboardAccessPolicyE
+__ZN7WebCore12ClipboardMacC1EbP12NSPasteboardNS_21ClipboardAccessPolicyEPNS_5FrameE
+__ZN7WebCore12ClipboardMacC2EbP12NSPasteboardNS_21ClipboardAccessPolicyEPNS_5FrameE
+__ZN7WebCore9ClipboardC2ENS_21ClipboardAccessPolicyEb
+__ZN7WebCore9Clipboard18setSourceOperationENS_13DragOperationE
+__ZN7WebCoreL14IEOpFromDragOpENS_13DragOperationE
+__ZN7WebCoreL16createMouseEventEPNS_8DragDataE
+__ZN7WebCore12EventHandler17updateDragAndDropERKNS_18PlatformMouseEventEPNS_9ClipboardE
+__ZN7WebCore12EventHandler17dispatchDragEventERKNS_12AtomicStringEPNS_4NodeERKNS_18PlatformMouseEventEPNS_9ClipboardE
+__ZN7WebCore12ClipboardMacD0Ev
+__ZN7WebCore9ClipboardD2Ev
+__ZN7WebCore14DragController14canProcessDragEPNS_8DragDataE
+__ZNK7WebCore8DragData25containsCompatibleContentEv
+__ZNK7WebCore8DragData13containsFilesEv
+__ZN7WebCoreL11asFileInputEPNS_4NodeE
+__ZN7WebCore14DragController16operationForLoadEPNS_8DragDataE
+__ZN7WebCore14DragController13dragOperationEPNS_8DragDataE
+__ZNK7WebCore8DragData11containsURLEv
+__ZNK7WebCore8DragData5asURLEPNS_6StringE
+__ZN7WebCore14DragController11dragUpdatedEPNS_8DragDataE
+__ZN7WebCore14DragController11performDragEPNS_8DragDataE
+__ZN7WebCore14DragController16concludeEditDragEPNS_8DragDataE
+__ZNK7WebCore8Document16elementFromPointEii
+__ZNK7WebCore8DragData13containsColorEv
+__ZN7WebCore15SQLiteStatement8bindNullEi
+__ZN7WebCore12EventHandler10wheelEventEP7NSEvent
+__ZN7WebCore18PlatformWheelEventC1EP7NSEvent
+__ZN7WebCore18PlatformWheelEventC2EP7NSEvent
+__ZN7WebCore12EventHandler16handleWheelEventERNS_18PlatformWheelEventE
+__ZN7WebCore4Node18dispatchWheelEventERNS_18PlatformWheelEventE
+__ZN7WebCore10WheelEventC1EffN3WTF10PassRefPtrINS_9DOMWindowEEEiiiibbbb
+__ZN7WebCore10WheelEventC2EffN3WTF10PassRefPtrINS_9DOMWindowEEEiiiibbbb
+__ZN7WebCore10WheelEventD0Ev
+__ZNK7WebCore12RenderObject12enclosingBoxEv
+__ZN7WebCore9RenderBox6scrollENS_15ScrollDirectionENS_17ScrollGranularityEf
+__ZN7WebCore11RenderLayer6scrollENS_15ScrollDirectionENS_17ScrollGranularityEf
+__ZN7WebCore10ScrollView10wheelEventERNS_18PlatformWheelEventE
+__ZN7WebCore16LegacyWebArchive6createEPNS_4NodeE
+__ZN7WebCoreL18appendDocumentTypeERN3WTF6VectorItLm0EEEPKNS_12DocumentTypeE
+__ZNK7WebCore7Element22nodeNamePreservingCaseEv
+__ZNK7WebCore7Element14isURLAttributeEPNS_9AttributeE
+__ZN7WebCoreL20appendAttributeValueERN3WTF6VectorItLm0EEERKNS_6StringEb
+__ZNK7WebCore17HTMLAnchorElement14isURLAttributeEPNS_9AttributeE
+__ZN7WebCoreL29appendQuotedURLAttributeValueERN3WTF6VectorItLm0EEERKNS_6StringE
+__ZN7WebCore16LegacyWebArchive6createERKNS_6StringEPNS_5FrameERKN3WTF6VectorIPNS_4NodeELm0EEE
+__ZN7WebCore10utf8BufferERKNS_6StringE
+__ZN7WebCore12SharedBuffer11adoptVectorERN3WTF6VectorIcLm0EEE
+__ZN7WebCore12SharedBufferC1Ev
+__ZN7WebCore12SharedBufferC2Ev
+__ZN7WebCore15ArchiveResource6createEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_6StringESA_SA_
+__ZN7WebCore15ArchiveResourceC1EN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_6StringESA_SA_
+__ZN7WebCore15ArchiveResourceC2EN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_6StringESA_SA_
+__ZNK7WebCore4Node18getSubresourceURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZNK7WebCore4Node27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN3WTF11ListHashSetIN7WebCore4KURLENS1_8KURLHashEE14deleteAllNodesEv
+__ZNK7WebCore13StyledElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZNK7WebCore16HTMLStyleElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN7WebCore13CSSStyleSheet23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN3WTF5DequeIPN7WebCore13CSSStyleSheetEE14expandCapacityEv
+__ZN7WebCore12CSSStyleRule23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN7WebCore26CSSMutableStyleDeclaration23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN7WebCore17CSSPrimitiveValue23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEEPKNS_13CSSStyleSheetE
+__ZNK7WebCore15HTMLBodyElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZNK7WebCore15HTMLBodyElement10backgroundEv
+__ZN7WebCore12IconDatabase17iconURLForPageURLERKNS_6StringE
+__ZN7WebCore16LegacyWebArchive6createEN3WTF10PassRefPtrINS_15ArchiveResourceEEERNS1_6VectorIS4_Lm0EEERNS5_INS2_IS0_EELm0EEE
+__ZN7WebCore16LegacyWebArchive6createEv
+__ZN3WTF9HashTableIN7WebCore4KURLES2_NS_17IdentityExtractorIS2_EENS1_8KURLHashENS_10HashTraitsIS2_EES7_E15deallocateTableEPS2_i
+__ZN7WebCore16LegacyWebArchive21rawDataRepresentationEv
+__ZN7WebCore16LegacyWebArchive32createPropertyListRepresentationEPNS_7ArchiveE
+__ZN7WebCore16LegacyWebArchive32createPropertyListRepresentationEPNS_15ArchiveResourceENS0_18MainResourceStatusE
+__ZN7WebCore15ArchiveResourceD0Ev
+__ZN7WebCore5Cache11setDisabledEb
+__ZN7WebCore5Cache18pruneDeadResourcesEv
+__ZNK7WebCore5Cache12deadCapacityEv
+__ZN7WebCore5Cache18pruneLiveResourcesEv
+__ZNK7WebCore5Cache12liveCapacityEv
+__ZN7WebCore18MainResourceLoader18handleDataLoadSoonERNS_15ResourceRequestE
+__ZN7WebCore18MainResourceLoader18startDataLoadTimerEv
+__ZN7WebCore16RunLoopTimerBase5startEdd
+__ZN7WebCore16RunLoopTimerBase8scheduleERKN3WTF7HashSetINS1_6RefPtrINS_12SchedulePairEEENS_16SchedulePairHashENS1_10HashTraitsI
+__ZN7WebCore16RunLoopTimerBase8scheduleEPKNS_12SchedulePairE
+__ZN7WebCoreL10timerFiredEP16__CFRunLoopTimerPv
+__ZN7WebCore12RunLoopTimerINS_18MainResourceLoaderEE5firedEv
+__ZN7WebCore18MainResourceLoader17handleDataLoadNowEPNS_12RunLoopTimerIS0_EE
__ZNK7WebCore12SharedBuffer12platformDataEv
-__ZNK7WebCore5Image5widthEv
-__ZNK7WebCore11BitmapImage4sizeEv
-__ZNK7WebCore11ImageSource4sizeEv
-__ZNK7WebCore5Image6heightEv
-__ZNK7WebCore4Font5widthERKNS_7TextRunE
-__ZN7WebCore7Element8updateIdERKNS_12AtomicStringES3_
-__ZNK7WebCore7Element10attributesEb
-__ZNK7WebCore13StyledElement28updateStyleAttributeIfNeededEv
-__ZN7WebCore8Document14addElementByIdERKNS_12AtomicStringEPNS_7ElementE
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_7ElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
-__ZNK7WebCore7Element14getIDAttributeEv
-__ZN3WTF7HashMapIPN7WebCore10StringImplEiNS1_10StringHashENS_10HashTraitsIS3_EENS5_IiEEE3setERKS3_RKi
-__ZN7WebCore17CSSPrimitiveValue25computeLengthIntForLengthEPNS_11RenderStyleEd
-__ZN7WebCore10timerFiredEP16__CFRunLoopTimerPv
-__ZN7WebCore9TimerBase16sharedTimerFiredEv
-__ZN7WebCore9TimerBase19collectFiringTimersEdRN3WTF6VectorIPS0_Lm0EEE
-__ZN3WTF7HashSetIPKN7WebCore9TimerBaseENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
-__ZN7WebCore9TimerBase10fireTimersEdRKN3WTF6VectorIPS0_Lm0EEE
-__ZN7WebCore5TimerINS_12GCControllerEE5firedEv
-__ZN7WebCore12GCController12gcTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore11CachedImage4dataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
--[WebCoreSharedBufferData dealloc]
-__ZN7WebCore14CachedResource6finishEv
-__ZN7WebCore19MediaQueryEvaluatorC2Eb
-__ZNK7WebCore11FrameLoader8encodingEv
-__ZN7WebCore9DocLoader20requestCSSStyleSheetERKNS_6StringES3_b
-__ZN7WebCore19CachedCSSStyleSheetC2EPNS_9DocLoaderERKNS_6StringES5_bb
-__ZN7WebCore19CachedCSSStyleSheet3refEPNS_20CachedResourceClientE
-__ZN7WebCore15SegmentedString6appendERKS0_
-__ZN7WebCore15SegmentedString6appendERKNS_18SegmentedSubstringE
-__ZNK7WebCore23DeprecatedValueListImpl7Private8copyListEPNS_27DeprecatedValueListImplNodeERS3_S4_
-__ZN7WebCore17HTMLScriptElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore17HTMLScriptElement15childrenChangedEb
-__ZNK7WebCore17HTMLScriptElement4textEv
-__ZN7WebCore13ulConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLUListElementC2EPNS_8DocumentE
-__ZNK7WebCore16HTMLUListElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore16HTMLUListElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore16HTMLUListElement17endTagRequirementEv
-__ZNK7WebCore16HTMLUListElement11tagPriorityEv
-__ZN7WebCore13liConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore13HTMLLIElementC2EPNS_8DocumentE
-__ZNK7WebCore13HTMLLIElement17endTagRequirementEv
-__ZNK7WebCore13HTMLLIElement11tagPriorityEv
-__ZN7WebCore13HTMLLIElement6attachEv
-__ZNK7WebCore9DOMWindow6screenEv
-__ZN7WebCore6ScreenC2EPNS_5FrameE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_6ScreenE
-__ZN7WebCore17JSScreenPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore8JSScreenC1EPN3KJS8JSObjectEPNS_6ScreenE
-__ZN7WebCore8JSScreen18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore8JSScreenEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore8JSScreen16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore6Screen6heightEv
-__ZN7WebCore10screenRectEPNS_6WidgetE
-__ZN7WebCore11toUserSpaceERK7_NSRectP8NSWindow
-__ZN7WebCore9FloatRect5scaleEf
-__ZN7WebCore11writeHelperEPN3KJS9ExecStateERKNS0_4ListE
-__ZN7WebCore8Document5writeERKNS_6StringE
+__ZN7WebCore4Page9initGroupEv
+__ZN7WebCore9PageGroupC1EPNS_4PageE
+__ZN7WebCore9PageGroupC2EPNS_4PageE
+__ZNK7WebCore9FrameView26shouldUpdateWhileOffscreenEv
+-[DOMNode nodeName]
+__ZNK7WebCore8Document8nodeNameEv
+-[DOMNode nodeType]
+__ZNK7WebCore4Text8nodeNameEv
+-[DOMElement getAttribute:]
+__ZN7WebCore11FrameLoader17stopForUserCancelEb
+__ZN7WebCore15RenderTableCell7destroyEv
+__ZN7WebCore15RenderTableCellD0Ev
+__ZN7WebCore14RenderTableRow7destroyEv
+__ZN7WebCore18RenderTableSection11removeChildEPNS_12RenderObjectE
+__ZN7WebCore14RenderTableRowD0Ev
+__ZN7WebCore18RenderTableSection7destroyEv
+__ZN7WebCore11RenderTable11removeChildEPNS_12RenderObjectE
+__ZN7WebCore18RenderTableSectionD0Ev
+__ZN7WebCore18RenderTableSection9clearGridEv
+__ZN3WTF6VectorIN7WebCore18RenderTableSection10CellStructELm0EE6shrinkEm
+__ZN3WTF6VectorIN7WebCore18RenderTableSection9RowStructELm0EE6shrinkEm
+__ZN7WebCore11RenderTableD0Ev
+__ZN7WebCore15AutoTableLayoutD0Ev
+__ZN3WTF6VectorIN7WebCore15AutoTableLayout6LayoutELm4EE6shrinkEm
+__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE6shrinkEm
+__ZN7WebCore16HTMLStyleElementD0Ev
+__ZN7WebCore16HTMLTableElementD0Ev
+__ZN7WebCore23HTMLTableSectionElementD0Ev
+__ZN7WebCore19HTMLTableRowElementD0Ev
+__ZN7WebCore20HTMLTableCellElementD0Ev
+__ZN7WebCore11CachedImageD0Ev
+__ZN7WebCore14CachedResourceD2Ev
+__ZN7WebCore17HTMLAnchorElementD0Ev
+__ZN7WebCore13HTMLBRElementD0Ev
+__ZN7WebCore13HTMLLIElementD0Ev
+__ZN7WebCore12EventHandler15sendResizeEventEv
+__ZN7WebCore5Frame25setUserStyleSheetLocationERKNS_4KURLE
+__ZN7WebCore12base64DecodeERKN3WTF6VectorIcLm0EEERS2_
+__ZN7WebCore12base64DecodeEPKcjRN3WTF6VectorIcLm0EEE
+__ZN7WebCore6String8fromUTF8EPKc
+__ZNK7WebCore10StyleSheet11completeURLERKNS_6StringE
+__ZN7WebCore7DataRefINS_22StyleRareInheritedDataEE6accessEv
+__ZN7WebCore15RenderTableCell29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
+__ZN7WebCore5Frame23visiblePositionForPointERKNS_8IntPointE
+__ZN7WebCoreL43positionForPointRespectingEditingBoundariesEPNS_9RenderBoxES1_RKNS_8IntPointE
+__ZN7WebCore9RenderBox16positionForPointERKNS_8IntPointE
+__ZN7WebCore12RenderObject21createVisiblePositionERKNS_8PositionE
+__ZN7WebCore31firstDeepEditingPositionForNodeEPNS_4NodeE
+__ZN7WebCore17positionAfterNodeEPKNS_4NodeE
+-[DOMRange endOffset]
+-[DOMRange startOffset]
+-[DOMRange startContainer]
+-[DOMNode childNodes]
+-[DOMCharacterData data]
+-[DOMDocument createTextNode:]
+__Z3kitPN7WebCore4TextE
+-[DOMNode insertBefore:refChild:]
+-[DOMDocument createElement:]
+-[DOMHTMLAnchorElement setHref:]
+-[DOMNode appendChild:]
+-[DOMCharacterData setData:]
+-[DOMRange setStart:offset:]
+-[DOMRange setEnd:offset:]
+-[DOMRange(DOMRangeExtensions) lineBoxRects]
+-[DOMRange(DOMRangeExtensions) textRects]
+__ZN7WebCore13InlineTextBox11extractLineEv
+__ZN7WebCore10RenderText14extractTextBoxEPNS_13InlineTextBoxE
+__ZN7WebCore13InlineTextBox10attachLineEv
+__ZN7WebCore10RenderText13attachTextBoxEPNS_13InlineTextBoxE
+__ZN7WebCore5Range9textRectsERN3WTF6VectorINS_7IntRectELm0EEEb
+__ZN7WebCore10RenderText21absoluteRectsForRangeERN3WTF6VectorINS_7IntRectELm0EEEjjb
+__ZN7WebCore13InlineTextBox13selectionRectEiiii
+__ZN7WebCoreL3kitERKN3WTF6VectorINS_7IntRectELm0EEE
+__ZN7WebCore4Page17willMoveOffscreenEv
+__ZN7WebCore9FrameView17willMoveOffscreenEv
+__ZN7WebCore10RenderView17willMoveOffscreenEv
+__ZN3WTF7HashMapIPN7WebCore11RenderImageEPNS1_20RenderImageScaleDataENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE4takeERKS
+__ZN3WTF9HashTableIPN7WebCore11RenderImageESt4pairIS3_PNS1_20RenderImageScaleDataEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_
+__ZN7WebCore14DragController9dragEndedEv
+__ZN7WebCore4PageD1Ev
+__ZN7WebCore4PageD2Ev
+__ZN3WTF9HashTableIPN7WebCore4PageES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22Ident
+__ZN3WTF9HashTableIPN7WebCore4PageES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInvalida
+__ZN3WTF9HashTableIPN7WebCore4PageES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN7WebCore19InspectorController22inspectedPageDestroyedEv
+__ZN7WebCore19InspectorController5closeEv
+__ZN7WebCore15BackForwardList5closeEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HistoryItemEEELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN7WebCore9FrameDataELm0EE6shrinkEm
+__ZN7WebCore9FrameData5clearEb
+__ZN7WebCore15BackForwardListD1Ev
+__ZN7WebCore15BackForwardListD2Ev
+__ZN7WebCore15ProgressTrackerD1Ev
+__ZN7WebCore15ProgressTrackerD2Ev
+__ZN7WebCore19InspectorControllerD0Ev
+__ZN3WTF20deleteAllPairSecondsIPNS_7HashMapIxNS_6RefPtrIN7WebCore17InspectorResourceEEENS_7IntHashIyEENS_10HashTraitsIxEENS8_IS
+__ZN3WTF15deleteAllValuesIPN7WebCore14ConsoleMessageELm0EEEvRKNS_6VectorIT_XT0_EEE
+__ZN7WebCore21ContextMenuControllerD1Ev
+__ZN7WebCore21ContextMenuControllerD2Ev
+__ZN7WebCore14DragControllerD1Ev
+__ZN7WebCore14DragControllerD2Ev
+__ZN7WebCore6ChromeD0Ev
+__ZN7WebCore5Range19nodeChildrenChangedEPNS_13ContainerNodeE
+-[DOMRange endContainer]
+__ZN7WebCore5Range11textRemovedEPNS_4NodeEjj
+-[DOMRange setStartBefore:]
+-[DOMRange setEndAfter:]
+__ZN7WebCore16LegacyWebArchive6createEPNS_5RangeE
+__ZN7WebCore12createMarkupEPKNS_5RangeEPN3WTF6VectorIPNS_4NodeELm0EEENS_23EAnnotateForInterchangeEb
+__ZN7WebCore25avoidIntersectionWithNodeEPKNS_5RangeEPNS_4NodeE
+__ZN7WebCore22DeleteButtonController7disableEv
+__ZN7WebCore22DeleteButtonController4hideEv
+__ZNK7WebCore12RenderObject14previousOffsetEi
+__ZN7WebCoreL27needInterchangeNewlineAfterERKNS_15VisiblePositionE
+__ZNK7WebCore15VisiblePosition4nextEb
+__ZN7WebCore29nextVisuallyDistinctCandidateERKNS_8PositionE
+__ZNK7WebCore8Position11atEndOfTreeEv
+__ZNK7WebCore8Position4nextENS_16PositionMoveTypeE
+__ZN7WebCoreL14getStartMarkupEPKNS_4NodeEPKNS_5RangeENS_23EAnnotateForInterchangeEbPN3WTF7HashMapIPNS_16AtomicStringImplESA_NS7
+__ZNK7WebCore15HTMLBodyElement14isURLAttributeEPNS_9AttributeE
+__ZNK7WebCore26CSSMutableStyleDeclaration4copyEv
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm0EEC1ILm4EEERKNS0_IS2_XT_EEE
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm0EEC2ILm4EEERKNS0_IS2_XT_EEE
+__ZN7WebCore26CSSMutableStyleDeclarationC1EPNS_7CSSRuleERKN3WTF6VectorINS_11CSSPropertyELm0EEEj
+__ZN7WebCore26CSSMutableStyleDeclarationC2EPNS_7CSSRuleERKN3WTF6VectorINS_11CSSPropertyELm0EEEj
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm4EEC1ILm0EEERKNS0_IS2_XT_EEE
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm4EEC2ILm0EEERKNS0_IS2_XT_EEE
+__ZN7WebCoreL31styleFromMatchedRulesForElementEPNS_7ElementEb
+__ZN7WebCore16CSSStyleSelector20styleRulesForElementEPNS_7ElementEb
+__ZN7WebCore26CSSMutableStyleDeclaration5mergeEPS0_b
+__ZN7WebCore20enclosingNodeWithTagERKNS_8PositionERKNS_13QualifiedNameE
+__ZN3WTF6VectorIN7WebCore11CSSPropertyELm0EE6shrinkEm
+__ZNK7WebCore16HTMLTableElement14isURLAttributeEPNS_9AttributeE
+__ZNK7WebCore20HTMLTableCellElement14isURLAttributeEPNS_9AttributeE
+__ZN7WebCore34convertHTMLTextToInterchangeFormatERKNS_6StringEPKNS_4TextE
+__ZN7WebCoreL12getEndMarkupEPKNS_4NodeE
+__ZNK7WebCore16HTMLImageElement14isURLAttributeEPNS_9AttributeE
+__ZN7WebCore12_GLOBAL__N_120convertedSpaceStringEv
+__ZN7WebCore6String6appendEt
+__ZN7WebCore16isMailBlockquoteEPKNS_4NodeE
+__ZNK7WebCore27CSSComputedStyleDeclaration25copyInheritablePropertiesEv
+__ZNK7WebCore19CSSStyleDeclaration19copyPropertiesInSetEPKij
+__ZN7WebCoreL14valueForFamilyERKNS_12AtomicStringE
+__ZN7WebCoreL19identifierForFamilyERKNS_12AtomicStringE
+__ZN7WebCore17CSSPrimitiveValueC1ERKNS_6LengthE
+__ZN7WebCore17CSSPrimitiveValueC2ERKNS_6LengthE
+__ZN7WebCoreL24currentColorOrValidColorEPNS_11RenderStyleERKNS_5ColorE
+__ZN7WebCore26CSSMutableStyleDeclaration14removePropertyEiRi
+__ZNK7WebCore9StyleBase15isCSSStyleSheetEv
+__ZN7WebCoreL31cssIdentifierForFontSizeKeywordEi
+__ZN7WebCoreL28propertyMissingOrEqualToNoneEPNS_26CSSMutableStyleDeclarationEi
+__ZN7WebCore17isTabSpanTextNodeEPKNS_4NodeE
+__ZN7WebCore13isTabSpanNodeEPKNS_4NodeE
+__ZN7WebCore21nearestMailBlockquoteEPKNS_4NodeE
+__ZNK7WebCore19CSSStyleDeclaration4diffEPNS_26CSSMutableStyleDeclarationE
+__ZNK7WebCore10RenderText22caretMaxRenderedOffsetEv
+__ZNK7WebCore10RenderText14caretMaxOffsetEv
+__ZN7WebCore18isStartOfParagraphERKNS_15VisiblePositionE
+__ZN7WebCore22DeleteButtonController6enableEv
+__ZN7WebCore22DeleteButtonController4showEPNS_11HTMLElementE
+__ZNK7WebCore5Frame18documentTypeStringEv
+__ZNK7WebCore16HTMLTableElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZNK7WebCore20HTMLTableCellElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN7WebCore12CSSValueList23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEEPKNS_13CSSStyleSheetE
+__ZNK7WebCore16HTMLImageElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN3WTF11ListHashSetIN7WebCore4KURLENS1_8KURLHashEE3addERKS2_
+__ZN3WTF9HashTableIPNS_15ListHashSetNodeIN7WebCore4KURLEEES5_NS_17IdentityExtractorIS5_EENS_28ListHashSetNodeHashFunctionsIS3_N
+__ZN3WTF11ListHashSetIN7WebCore4KURLENS1_8KURLHashEE10appendNodeEPNS_15ListHashSetNodeIS2_EE
+__ZNK3WTF9HashTableIN7WebCore4KURLES2_NS_17IdentityExtractorIS2_EENS1_8KURLHashENS_10HashTraitsIS2_EES7_E8containsIS2_NS_22Iden
+__ZN3WTF7HashSetIN7WebCore4KURLENS1_8KURLHashENS_10HashTraitsIS2_EEE3addERKS2_
+__ZN3WTF9HashTableIN7WebCore4KURLES2_NS_17IdentityExtractorIS2_EENS1_8KURLHashENS_10HashTraitsIS2_EES7_E6expandEv
+__ZN3WTF9HashTableIN7WebCore4KURLES2_NS_17IdentityExtractorIS2_EENS1_8KURLHashENS_10HashTraitsIS2_EES7_E6rehashEi
+__ZN3WTF9HashTableIN7WebCore4KURLES2_NS_17IdentityExtractorIS2_EENS1_8KURLHashENS_10HashTraitsIS2_EES7_E13allocateTableEi
+__ZNK7WebCore14DocumentLoader11subresourceERKNS_4KURLE
+__ZN7WebCore15ArchiveResource6createEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_16ResourceResponseE
+__ZN7WebCore15ArchiveResourceC1EN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_16ResourceResponseE
+__ZN7WebCore15ArchiveResourceC2EN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_16ResourceResponseE
+__ZN3WTF6VectorINS_10PassRefPtrIN7WebCore15ArchiveResourceEEELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorINS_10PassRefPtrIN7WebCore15ArchiveResourceEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_10PassRefPtrIN7WebCore15ArchiveResourceEEELm0EE15reserveCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore15ArchiveResourceEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore15ArchiveResourceEEELm0EE15reserveCapacityEm
+__ZN3WTF6VectorINS_10PassRefPtrIN7WebCore15ArchiveResourceEEELm0EE6shrinkEm
+__ZN7WebCore12SharedBuffer12createNSDataEv
+-[DOMRange commonAncestorContainer]
+-[DOMRange collapsed]
+-[DOMRange intersectsNode:]
+__ZN7WebCore5Range14intersectsNodeEPNS_4NodeERi
+__ZN7WebCore5Range12comparePointEPNS_4NodeEiRi
+-[DOMNode isSameNode:]
+__ZN7WebCoreL15baseConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore15HTMLBaseElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLBaseElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLBaseElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore15HTMLBaseElement7processEv
+__ZNK7WebCore15HTMLBaseElement17endTagRequirementEv
+__ZNK7WebCore15HTMLBaseElement11tagPriorityEv
+__ZN7WebCore15HTMLBaseElement20insertedIntoDocumentEv
+__ZN7WebCore8Document17setBaseElementURLERKNS_4KURLE
+-[DOMDocument body]
+__Z3kitPN7WebCore11HTMLElementE
+-[DOMHTMLElement setClassName:]
+-[DOMHTMLDocument(DOMHTMLDocumentExtensions) createDocumentFragmentWithText:]
+__Z4coreP15DOMHTMLDocument
+__ZN7WebCore22createFragmentFromTextEPNS_5RangeERKNS_6StringE
+__ZN7WebCore8Document22createDocumentFragmentEv
+__ZNK7WebCore6String5splitEtbRN3WTF6VectorIS0_Lm0EEE
+__ZN7WebCore29createDefaultParagraphElementEPNS_8DocumentE
+__ZN7WebCoreL23fillContainerFromStringEPNS_13ContainerNodeERKNS_6StringE
+__ZN7WebCore30stringWithRebalancedWhitespaceERKNS_6StringEbb
+__ZN7WebCore18createBreakElementEPNS_8DocumentE
+__Z3kitPN7WebCore16DocumentFragmentE
+__ZN7WebCoreL21blockquoteConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore21HTMLBlockquoteElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore21HTMLBlockquoteElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+-[DOMElement setAttribute:value:]
+-[DOMHTMLDocument(DOMHTMLDocumentExtensions) createDocumentFragmentWithMarkupString:baseURL:]
+__ZN7WebCore24createFragmentFromMarkupEPNS_8DocumentERKNS_6StringES4_
+__ZN7WebCore10HTMLParser28tableSectionCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCoreL23tablesectionConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+-[DOMElement hasAttribute:]
+__ZNK7WebCore7Element12hasAttributeERKNS_6StringE
+-[DOMElement style]
+-[DOMCSSStyleDeclaration getPropertyCSSValue:]
+__ZN7WebCore19CSSStyleDeclaration19getPropertyCSSValueERKNS_6StringE
+__Z3kitPN7WebCore8CSSValueE
+__Z8kitClassPN7WebCore8CSSValueE
+-[DOMCSSValue cssValueType]
+-[DOMCSSPrimitiveValue primitiveType]
+-[DOMCSSPrimitiveValue getRGBColorValue]
+__ZNK7WebCore17CSSPrimitiveValue16getRGBColorValueERi
+__Z3kitj
++[DOMRGBColor initialize]
+__Z33createWrapperCacheWithIntegerKeysv
+-[DOMRGBColor red]
+__Z3kitPN7WebCore17CSSPrimitiveValueE
+-[DOMCSSPrimitiveValue getFloatValue:]
+__ZN7WebCore17CSSPrimitiveValue14getDoubleValueEtRi
+-[DOMRGBColor blue]
+-[DOMRGBColor green]
+-[DOMCSSStyleDeclaration removeProperty:]
+__ZN7WebCore19CSSStyleDeclaration14removePropertyERKNS_6StringERi
+__ZN7WebCore17CSSPrimitiveValue18computeLengthFloatEPNS_11RenderStyleEdb
+-[DOMHTMLImageElement src]
+-[DOMDocument getElementById:]
+-[DOMDocument createNodeIterator:whatToShow:filter:expandEntityReferences:]
+__ZN7WebCore8Document18createNodeIteratorEPNS_4NodeEjN3WTF10PassRefPtrINS_10NodeFilterEEEbRi
+__ZN7WebCore12NodeIteratorC1EN3WTF10PassRefPtrINS_4NodeEEEjNS2_INS_10NodeFilterEEEb
+__ZN7WebCore12NodeIteratorC2EN3WTF10PassRefPtrINS_4NodeEEEjNS2_INS_10NodeFilterEEEb
+__ZN7WebCore9TraversalC2EN3WTF10PassRefPtrINS_4NodeEEEjNS2_INS_10NodeFilterEEEb
+__ZN7WebCore12NodeIterator11NodePointerC1EN3WTF10PassRefPtrINS_4NodeEEEb
+__ZN7WebCore12NodeIterator11NodePointerC2EN3WTF10PassRefPtrINS_4NodeEEEb
+__ZN7WebCore12NodeIterator11NodePointerC1Ev
+__ZN7WebCore12NodeIterator11NodePointerC2Ev
+__ZN7WebCore8Document18attachNodeIteratorEPNS_12NodeIteratorE
+__ZN3WTF7HashSetIPN7WebCore12NodeIteratorENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore12NodeIteratorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore12NodeIteratorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore12NodeIteratorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocate
+__Z3kitPN7WebCore12NodeIteratorE
+-[DOMNodeIterator nextNode]
+__ZN7WebCore19scriptStateFromNodeEPNS_4NodeE
+__ZN7WebCore12NodeIterator8nextNodeEPN3JSC9ExecStateERi
+__ZN7WebCore12NodeIterator11NodePointer10moveToNextEPNS_4NodeE
+__ZNK7WebCore9Traversal10acceptNodeEPN3JSC9ExecStateEPNS_4NodeE
+__ZN7WebCore12NodeIterator11NodePointer5clearEv
+-[DOMElement removeAttribute:]
+__ZNK7WebCore5Frame30applyEditingStyleToBodyElementEv
+__ZNK7WebCore5Frame26applyEditingStyleToElementEPNS_7ElementE
+__ZN7WebCore16VisibleSelectionC1ERKNS_8PositionENS_9EAffinityE
+__ZN7WebCore16VisibleSelectionC2ERKNS_8PositionENS_9EAffinityE
+__ZNK7WebCore8RenderBR14caretMinOffsetEv
+__ZN7WebCore6Editor18shouldBeginEditingEPNS_5RangeE
+__ZN7WebCore6Editor15didBeginEditingEv
+__ZNK7WebCore4Node20shouldUseInputMethodEv
+__ZN7WebCore10RenderText14localCaretRectEPNS_9InlineBoxEiPi
+__ZNK7WebCore13InlineTextBox17positionForOffsetEi
+__ZNK7WebCore12RenderObject19offsetFromContainerEPS0_
+__ZN7WebCore31SimplifiedBackwardsTextIterator8exitNodeEv
+__ZN7WebCore14caretMaxOffsetEPKNS_4NodeE
+__ZN7WebCore31SimplifiedBackwardsTextIterator17handleNonTextNodeEv
+__ZN7WebCore31SimplifiedBackwardsTextIterator13emitCharacterEtPNS_4NodeEii
+__ZN3WTF6VectorItLm1024EE7prependItEEvPKT_m
+__ZN3WTF6VectorItLm1024EE6insertItEEvmPKT_m
+__ZN7WebCoreL17startWordBoundaryEPKtjjNS_33BoundarySearchContextAvailabilityERb
+__ZN7WebCoreL30startOfLastWordBoundaryContextEPKti
+__ZN7WebCore16findWordBoundaryEPKtiiPiS2_
+__ZN7WebCore26BackwardsCharacterIteratorC1EPKNS_5RangeE
+__ZN7WebCore26BackwardsCharacterIteratorC2EPKNS_5RangeE
+__ZN7WebCore26BackwardsCharacterIterator7advanceEi
+__ZNK7WebCore26BackwardsCharacterIterator5rangeEv
+-[DOMDocument styleSheets]
+__Z3kitPN7WebCore14StyleSheetListE
+-[DOMStyleSheetList length]
+-[DOMElement getAttributeNode:]
+__ZN7WebCore7Element16getAttributeNodeERKNS_6StringE
+__Z3kitPN7WebCore4AttrE
+-[DOMCSSStyleDeclaration length]
+-[DOMCSSStyleDeclaration item:]
+__ZNK7WebCore26CSSMutableStyleDeclaration4itemEj
+-[DOMNode hasChildNodes]
+-[DOMStyleSheetList dealloc]
+-[DOMNodeIterator dealloc]
+-[DOMNodeIterator detach]
+__ZN7WebCore12NodeIterator6detachEv
+__ZN7WebCore8Document18detachNodeIteratorEPNS_12NodeIteratorE
+__ZN3WTF9HashTableIPN7WebCore12NodeIteratorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_N
+__ZN3WTF9HashTableIPN7WebCore12NodeIteratorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAn
+__ZN3WTF9HashTableIPN7WebCore12NodeIteratorES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS
+__ZN7WebCore12NodeIteratorD1Ev
+__ZN7WebCore12NodeIteratorD2Ev
+-[DOMCSSValue dealloc]
+-[DOMRGBColor dealloc]
+__ZN7WebCore12EventHandler8keyEventEP7NSEvent
+__ZN7WebCore21PlatformKeyboardEventC1EP7NSEvent
+__ZN7WebCore21PlatformKeyboardEventC2EP7NSEvent
+__ZN7WebCoreL24keyIdentifierForKeyEventEP7NSEvent
+__ZN7WebCore12EventHandler8keyEventERKNS_21PlatformKeyboardEventE
+__ZN7WebCoreL26eventTargetNodeForDocumentEPNS_8DocumentE
+__ZN7WebCore12EventHandler15handleAccessKeyERKNS_21PlatformKeyboardEventE
+__ZN7WebCore12EventHandler18accessKeyModifiersEv
+__ZNK7WebCore12EventHandler38needsKeyboardEventDisambiguationQuirksEv
+__ZN7WebCore19applicationIsSafariEv
+__ZN7WebCore21PlatformKeyboardEvent24disambiguateKeyDownEventENS0_4TypeEb
+__ZN7WebCore13KeyboardEventC1ERKNS_21PlatformKeyboardEventEPNS_9DOMWindowE
+__ZN7WebCore13KeyboardEventC2ERKNS_21PlatformKeyboardEventEPNS_9DOMWindowE
+__ZN7WebCore6Editor24handleInputMethodKeydownEPNS_13KeyboardEventE
+__ZNK7WebCore13KeyboardEvent15isKeyboardEventEv
+__ZN7WebCore12EventHandler27defaultKeyboardEventHandlerEPNS_13KeyboardEventE
+__ZN7WebCore6Editor19handleKeyboardEventEPNS_13KeyboardEventE
+__ZN7WebCore6Editor7commandERKNS_6StringE
+__ZN7WebCore6Editor7commandERKNS_6StringENS_19EditorCommandSourceE
+__ZN7WebCoreL16createCommandMapEv
+__ZN3WTF7HashMapIN7WebCore6StringEPKNS1_21EditorInternalCommandENS1_15CaseFoldingHashENS_10HashTraitsIS2_EENS7_IS5_EEE3setERKS2
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PKNS1_21EditorInternalCommandEENS_18PairFirstExtractorIS7_EENS1_15CaseFoldingHas
+__ZNK3WTF7HashMapIN7WebCore6StringEPKNS1_21EditorInternalCommandENS1_15CaseFoldingHashENS_10HashTraitsIS2_EENS7_IS5_EEE3getERKS
+__ZN7WebCore6Editor7CommandC1EN3WTF10PassRefPtrINS_5FrameEEEPKNS_21EditorInternalCommandENS_19EditorCommandSourceE
+__ZN7WebCore6Editor7CommandC2EN3WTF10PassRefPtrINS_5FrameEEEPKNS_21EditorInternalCommandENS_19EditorCommandSourceE
+__ZNK7WebCore6Editor7Command15isTextInsertionEv
+__ZN3WTF6VectorIN7WebCore15KeypressCommandELm0EEaSERKS3_
+__ZN3WTF6VectorIN7WebCore15KeypressCommandELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN7WebCore15KeypressCommandELm0EE15reserveCapacityEm
+__ZN7WebCore6Editor10insertTextERKNS_6StringEPNS_5EventE
+__ZN7WebCore12EventHandler20handleTextInputEventERKNS_6StringEPNS_5EventEbb
+__ZN7WebCore9TextEventC1EN3WTF10PassRefPtrINS_9DOMWindowEEERKNS_6StringE
+__ZN7WebCore9TextEventC2EN3WTF10PassRefPtrINS_9DOMWindowEEERKNS_6StringE
+__ZNK7WebCore9TextEvent11isTextEventEv
+__ZN7WebCore12EventHandler28defaultTextInputEventHandlerEPNS_9TextEventE
+__ZN7WebCore6Editor33insertTextWithoutSendingTextEventERKNS_6StringEbPNS_5EventE
+__ZN7WebCore6Editor19selectionForCommandEPNS_5EventE
+__ZNK7WebCore6Editor16shouldInsertTextERKNS_6StringEPNS_5RangeENS_18EditorInsertActionE
+__ZNK7WebCore5Frame11typingStyleEv
+__ZN7WebCore13TypingCommand10insertTextEPNS_8DocumentERKNS_6StringERKNS_16VisibleSelectionEbb
+__ZN7WebCore23BeforeTextInsertedEventC1ERKNS_6StringE
+__ZN7WebCore23BeforeTextInsertedEventC2ERKNS_6StringE
+__ZN7WebCore23BeforeTextInsertedEventD0Ev
+__ZN7WebCore13TypingCommandC1EPNS_8DocumentENS0_14ETypingCommandERKNS_6StringEbNS_15TextGranularityEb
+__ZN7WebCore13TypingCommandC2EPNS_8DocumentENS0_14ETypingCommandERKNS_6StringEbNS_15TextGranularityEb
+__ZN7WebCore20CompositeEditCommandC2EPNS_8DocumentE
+__ZN7WebCore11EditCommandC2EPNS_8DocumentE
+__ZN7WebCore25avoidIntersectionWithNodeERKNS_16VisibleSelectionEPNS_4NodeE
+__ZN7WebCore11EditCommand20setStartingSelectionERKNS_16VisibleSelectionE
+__ZN7WebCore11EditCommand18setEndingSelectionERKNS_16VisibleSelectionE
+__ZN7WebCore12applyCommandEN3WTF10PassRefPtrINS_11EditCommandEEE
+__ZN7WebCore11EditCommand5applyEv
+__ZNK7WebCore16VisibleSelection23isContentRichlyEditableEv
+__ZN7WebCore24isRichlyEditablePositionERKNS_8PositionE
+__ZNK7WebCore11HTMLElement23isContentRichlyEditableEv
+__ZNK7WebCore11EditCommand12updateLayoutEv
+__ZN7WebCore13TypingCommand7doApplyEv
+__ZN7WebCore13TypingCommand10insertTextERKNS_6StringEb
+__ZN7WebCore13TypingCommand28insertTextRunWithoutNewlinesERKNS_6StringEb
+__ZN7WebCore17InsertTextCommandC1EPNS_8DocumentE
+__ZN7WebCore17InsertTextCommandC2EPNS_8DocumentE
+__ZN7WebCore20CompositeEditCommand23applyCommandToCompositeEN3WTF10PassRefPtrINS_11EditCommandEEE
+__ZN7WebCore11EditCommand9setParentEPNS_20CompositeEditCommandE
+__ZN7WebCore17InsertTextCommand7doApplyEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11EditCommandEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11EditCommandEEELm0EE15reserveCapacityEm
+__ZN7WebCore17InsertTextCommand5inputERKNS_6StringEb
+__ZN7WebCore25lineBreakExistsAtPositionERKNS_8PositionE
+__ZN7WebCore12isEndOfBlockERKNS_15VisiblePositionE
+__ZN7WebCore10endOfBlockERKNS_15VisiblePositionE
+__ZN7WebCore20CompositeEditCommand23deleteInsignificantTextERKNS_8PositionES3_
+__ZN7WebCore5Range21compareBoundaryPointsERKNS_8PositionES3_
+__ZN7WebCore20CompositeEditCommand38positionAvoidingSpecialElementBoundaryERKNS_8PositionE
+__ZN7WebCore22enclosingAnchorElementERKNS_8PositionE
+__ZN7WebCore17InsertTextCommand23prepareForTextInsertionERKNS_8PositionE
+__ZN7WebCore8Document21createEditingTextNodeERKNS_6StringE
+__ZN7WebCore11EditingTextC1EPNS_8DocumentERKNS_6StringE
+__ZN7WebCore11EditingTextC2EPNS_8DocumentERKNS_6StringE
+__ZN7WebCore20CompositeEditCommand12insertNodeAtEN3WTF10PassRefPtrINS_4NodeEEERKNS_8PositionE
+__ZN7WebCore20CompositeEditCommand16insertNodeBeforeEN3WTF10PassRefPtrINS_4NodeEEES4_
+__ZN7WebCore23InsertNodeBeforeCommandC1EN3WTF10PassRefPtrINS_4NodeEEES4_
+__ZN7WebCore23InsertNodeBeforeCommandC2EN3WTF10PassRefPtrINS_4NodeEEES4_
+__ZN7WebCore23InsertNodeBeforeCommand7doApplyEv
+__ZN7WebCore11EditingText16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore20CompositeEditCommand18insertTextIntoNodeEN3WTF10PassRefPtrINS_4TextEEEjRKNS_6StringE
+__ZN7WebCore25InsertIntoTextNodeCommandC1EN3WTF10PassRefPtrINS_4TextEEEjRKNS_6StringE
+__ZN7WebCore25InsertIntoTextNodeCommandC2EN3WTF10PassRefPtrINS_4TextEEEjRKNS_6StringE
+__ZN7WebCore25InsertIntoTextNodeCommand7doApplyEv
+__ZN7WebCore13CharacterData10insertDataEjRKNS_6StringERi
+__ZN7WebCore6String6insertERKS0_j
+__ZN7WebCore6String6insertEPKtjj
+__ZN7WebCore8Document12textInsertedEPNS_4NodeEjj
+__ZN7WebCore5Range12textInsertedEPNS_4NodeEjj
+__ZN7WebCore20CompositeEditCommand21rebalanceWhitespaceAtERKNS_8PositionE
+__ZN7WebCore16VisibleSelection20setWithoutValidationERKNS_8PositionES3_
+__ZNK7WebCore8Position13computedStyleEv
+__ZNK7WebCore8Position7elementEv
+__ZNK7WebCore12RenderObject14nextInPreOrderEPS0_
+__ZNK7WebCore12RenderObject27nextInPreOrderAfterChildrenEPS0_
+__ZN7WebCore9InlineBox13nextLeafChildEv
+__ZN7WebCore13TypingCommand24typingAddedToOpenCommandEv
+__ZN7WebCore6Editor14appliedEditingEN3WTF10PassRefPtrINS_11EditCommandEEE
+__ZN7WebCoreL36dispatchEditableContentChangedEventsERKNS_11EditCommandE
+__ZN7WebCore6Editor27changeSelectionAfterCommandERKNS_16VisibleSelectionEbbPNS_11EditCommandE
+__ZN7WebCore31SimplifiedBackwardsTextIterator14handleTextNodeEv
+__ZNK7WebCore13TypingCommand20preservesTypingStyleEv
+__ZN7WebCore5Frame14setTypingStyleEPNS_26CSSMutableStyleDeclarationE
+__ZNK7WebCore13TypingCommand13editingActionEv
+__ZN7WebCore6Editor24respondToChangedContentsERKNS_16VisibleSelectionE
+__ZN7WebCore13TypingCommand27markMisspellingsAfterTypingEv
+__ZNK7WebCore13TypingCommand15isTypingCommandEv
+__ZN7WebCore9TextEventD0Ev
+__ZN7WebCore13KeyboardEventD0Ev
+__ZN3WTF6VectorIN7WebCore15KeypressCommandELm0EE6shrinkEm
+__ZNK7WebCore17InsertTextCommand19isInsertTextCommandEv
+__ZN7WebCore20CompositeEditCommand23deleteInsignificantTextEN3WTF10PassRefPtrINS_4TextEEEjj
+__ZN7WebCore4Node16dispatchKeyEventERKNS_21PlatformKeyboardEventE
+__ZNK7WebCore4Node29traversePreviousNodePostOrderEPKS0_
+__ZN7WebCore10StringImpl7replaceEjjPS0_
+__ZN7WebCore6Editor37markMisspellingsAfterTypingToPositionERKNS_15VisiblePositionE
+__ZN7WebCore6Editor35isAutomaticQuoteSubstitutionEnabledEv
+__ZN7WebCore6Editor31isAutomaticLinkDetectionEnabledEv
+__ZN7WebCore6Editor34isAutomaticDashSubstitutionEnabledEv
+__ZN7WebCore6Editor33isAutomaticTextReplacementEnabledEv
+__ZN7WebCore6Editor36isAutomaticSpellingCorrectionEnabledEv
+__ZN7WebCoreL12nextBoundaryERKNS_15VisiblePositionEPFjPKtjjNS_33BoundarySearchContextAvailabilityERbE
+__ZN7WebCoreL15endWordBoundaryEPKtjjNS_33BoundarySearchContextAvailabilityERb
+__ZN7WebCoreL29endOfFirstWordBoundaryContextEPKti
+__ZNK7WebCore12RenderObject11isTextFieldEv
+__ZN7WebCore6Editor13didEndEditingEv
+__ZN7WebCore13TypingCommandD0Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11EditCommandEEELm0EE6shrinkEm
+__ZN7WebCore17InsertTextCommandD0Ev
+__ZN7WebCore23InsertNodeBeforeCommandD0Ev
+__ZN7WebCore11EditCommandD2Ev
+__ZN7WebCore25InsertIntoTextNodeCommandD0Ev
+__ZN7WebCore15HTMLBaseElementD0Ev
+__ZN7WebCore11EditingTextD0Ev
+__ZN7WebCore4TextD2Ev
+__ZN7WebCore21HTMLBlockquoteElementD0Ev
+__ZN7WebCore13RootInlineBox23closestLeafChildForXPosEib
+__ZN7WebCore10RenderText16positionForPointERKNS_8IntPointE
+__ZNK7WebCore13InlineTextBox17offsetForPositionEib
+__ZNK7WebCore4Font17offsetForPositionERKNS_7TextRunEib
+__ZNK7WebCore4Font30offsetForPositionForSimpleTextERKNS_7TextRunEib
+__ZN7WebCore13WidthIterator19advanceOneCharacterERfPNS_11GlyphBufferE
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm2048EE14shrinkCapacityEm
+__ZN3WTF6VectorItLm2048EE14shrinkCapacityEm
+__ZN3WTF6VectorI6CGSizeLm2048EE14shrinkCapacityEm
+__ZN7WebCore20UserStyleSheetLoaderC1EN3WTF10PassRefPtrINS_8DocumentEEERKNS_6StringE
+__ZN7WebCore20UserStyleSheetLoaderC2EN3WTF10PassRefPtrINS_8DocumentEEERKNS_6StringE
+__ZN7WebCore9DocLoader24requestUserCSSStyleSheetERKNS_6StringES3_
+__ZN7WebCore5Cache24requestUserCSSStyleSheetEPNS_9DocLoaderERKNS_6StringES5_
+-[WebScriptObject callWebScriptMethod:withArguments:]
+-[WebScriptObject _isSafeScript]
+-[WebScriptObject _rootObject]
+__ZNK3JSC8Bindings10RootObject12globalObjectEv
+__ZNK7WebCore15JSDOMWindowBase16allowsAccessFromEPKN3JSC14JSGlobalObjectE
+-[WebScriptObject _imp]
+__ZN3WTF6VectorIPN7WebCore17SubresourceLoaderELm256EE6shrinkEm
+__ZNK7WebCore11FrameLoader14cancelledErrorERKNS_15ResourceRequestE
+__ZN7WebCore14DocumentLoader20setMainDocumentErrorERKNS_13ResourceErrorE
+__ZN7WebCore11FrameLoader20setMainDocumentErrorEPNS_14DocumentLoaderERKNS_13ResourceErrorE
+__ZN7WebCore14ResourceLoader6cancelEv
+__ZN7WebCore14ResourceLoader6cancelERKNS_13ResourceErrorE
+__ZN7WebCore14ResourceLoader14cancelledErrorEv
+__ZN7WebCore17SubresourceLoader9didCancelERKNS_13ResourceErrorE
+__ZN7WebCore14ResourceLoader9didCancelERKNS_13ResourceErrorE
+__ZN7WebCore14ResourceHandle19clearAuthenticationEv
+__ZN7WebCore27AuthenticationChallengeBase7nullifyEv
+__ZN7WebCore14DocumentLoader27cancelPendingSubstituteLoadEPNS_14ResourceLoaderE
+__ZN7WebCore14ResourceHandle6cancelEv
+__ZN7WebCore20UserStyleSheetLoaderD0Ev
+__ZN7WebCore19CachedCSSStyleSheetD0Ev
+__ZN7WebCoreL30newStreamingTextDecoderUTF16BEERKNS_12TextEncodingEPKv
+__ZN7WebCore14TextCodecUTF166decodeEPKcmbbRb
+__ZN7WebCore14TextCodecUTF16D0Ev
+__ZN7WebCore20UserStyleSheetLoader16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
+__ZN7WebCore9CSSParser17createCharsetRuleERKNS_15CSSParserStringE
+__ZN7WebCore14CSSCharsetRuleC1EPNS_13CSSStyleSheetERKNS_6StringE
+__ZN7WebCore14CSSCharsetRuleC2EPNS_13CSSStyleSheetERKNS_6StringE
+__ZN7WebCore9StyleBase15isKeyframesRuleEv
+__ZN3WTF6VectorIPN7WebCore15RenderTableCellELm4EE6shrinkEm
+__ZN7WebCore14RenderMenuList11removeChildEPNS_12RenderObjectE
+__ZN7WebCore14RenderMenuListD0Ev
+__ZN7WebCore17RenderFlexibleBoxD2Ev
+__ZN7WebCore9PageGroup10removePageEPNS_4PageE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HistoryItemEEELm0EE6shrinkEm
+__ZN7WebCore15HTMLFontElementD0Ev
+__ZN3WTF6VectorIPN7WebCore22HTMLFormControlElementELm0EE6shrinkEm
+__ZN7WebCore16HTMLInputElementD0Ev
+__ZN7WebCore16HTMLInputElement23needsActivationCallbackEv
+__ZN7WebCore22HTMLFormControlElement14removeFromFormEv
+__ZN7WebCore16InputElementDataD1Ev
+__ZN7WebCore16InputElementDataD2Ev
+__ZN7WebCore31HTMLFormControlElementWithStateD2Ev
+__ZN3WTF11ListHashSetIPN7WebCore7ElementENS_7PtrHashIS3_EEE15unlinkAndDeleteEPNS_15ListHashSetNodeIS3_EE
+__ZN7WebCore22HTMLFormControlElementD2Ev
+__ZN7WebCore15HTMLImageLoaderD0Ev
+__ZN7WebCore28JSHTMLAnchorElementPrototypeD1Ev
+__ZThn8_N7WebCore17HTMLAnchorElementD0Ev
+__ZN7WebCore28JSHTMLSelectElementPrototypeD1Ev
+__ZN7WebCore19JSHTMLSelectElementD1Ev
+__ZThn8_N7WebCore17HTMLSelectElementD0Ev
+__ZN7WebCore17HTMLSelectElementD0Ev
+__ZN7WebCore17HTMLOptionElementD0Ev
+__ZN7WebCore17OptionElementDataD1Ev
+__ZN7WebCore17OptionElementDataD2Ev
+-[DOMNode hasAttributes]
+__ZNK7WebCore7Element13hasAttributesEv
+__ZN7WebCore20HTMLParagraphElementD0Ev
+__ZN7WebCore14CSSCharsetRuleD0Ev
+__ZN7WebCore8Document19hoveredNodeDetachedEPNS_4NodeE
+__ZN7WebCore11HTMLElement19isRecognizedTagNameERKNS_13QualifiedNameE
+__ZN7WebCore9HTMLNames11getHTMLTagsEPm
+__ZN7WebCore13RenderListBoxC1EPNS_17HTMLSelectElementE
+__ZN7WebCore13RenderListBoxC2EPNS_17HTMLSelectElementE
+__ZN7WebCore13RenderListBox14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore13RenderListBox17updateFromElementEv
+__ZNK7WebCore13RenderListBox8numItemsEv
+__ZN7WebCore13RenderListBox23setHasVerticalScrollbarEb
+__ZN7WebCore13RenderListBox15createScrollbarEv
+__ZN7WebCore14RenderThemeMac27scrollbarControlSizeForPartENS_11ControlPartE
+__ZN7WebCore9Scrollbar21createNativeScrollbarEPNS_15ScrollbarClientENS_20ScrollbarOrientationENS_20ScrollbarControlSizeE
+__ZN7WebCore9ScrollbarC1EPNS_15ScrollbarClientENS_20ScrollbarOrientationENS_20ScrollbarControlSizeEPNS_14ScrollbarThemeE
+__ZN7WebCore9ScrollbarC2EPNS_15ScrollbarClientENS_20ScrollbarOrientationENS_20ScrollbarControlSizeEPNS_14ScrollbarThemeE
+__ZN7WebCore14ScrollbarTheme11nativeThemeEv
+__ZN7WebCore17ScrollbarThemeMacC1Ev
+__ZN7WebCore17ScrollbarThemeMacC2Ev
++[ScrollbarPrefsObserver registerAsObserver]
+__ZN7WebCore17ScrollbarThemeMac18preferencesChangedEv
+__ZN7WebCore17ScrollbarThemeMac17registerScrollbarEPNS_9ScrollbarE
+__ZN3WTF7HashSetIPN7WebCore9ScrollbarENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore9ScrollbarES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore9ScrollbarES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore9ScrollbarES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTabl
+__ZN3WTF9HashTableIPN7WebCore9ScrollbarES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTa
+__ZN7WebCore17ScrollbarThemeMac18scrollbarThicknessENS_20ScrollbarControlSizeE
+__ZN7WebCore9Scrollbar9setParentEPNS_10ScrollViewE
+__ZN7WebCore6Widget16setParentVisibleEb
+__ZN7WebCore9Scrollbar12styleChangedEv
+__ZNK7WebCore13RenderListBox15canHaveChildrenEv
+__ZN7WebCore13RenderListBox16selectionChangedEv
+__ZN7WebCore16HTMLInputElement10setCheckedEbb
+__ZNK7WebCore5Theme14controlPaddingENS_11ControlPartERKNS_4FontERKNS_9LengthBoxEf
+__ZN7WebCoreL13checkboxSizesEv
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_16HTMLInputElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3addERKS
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PNS1_16HTMLInputElementEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3
+__ZN7WebCoreL10radioSizesEv
+__ZN7WebCore13RenderListBox14calcPrefWidthsEv
+__ZN7WebCore13RenderListBox6layoutEv
+__ZNK7WebCore13RenderListBox22verticalScrollbarWidthEv
+__ZN7WebCore13RenderListBox10calcHeightEv
+__ZNK7WebCore13RenderListBox10itemHeightEv
+__ZNK7WebCore13RenderListBox4sizeEv
+__ZNK7WebCore13RenderListBox15numVisibleItemsEv
+__ZN7WebCore9Scrollbar10setEnabledEb
+__ZN7WebCore9Scrollbar14invalidateRectERKNS_7IntRectE
+__ZThn200_N7WebCore13RenderListBox23invalidateScrollbarRectEPNS_9ScrollbarERKNS_7IntRectE
+__ZN7WebCore13RenderListBox23invalidateScrollbarRectEPNS_9ScrollbarERKNS_7IntRectE
+__ZN7WebCore9Scrollbar8setStepsEiii
+__ZN7WebCore9Scrollbar13setProportionEii
+__ZN7WebCore9Scrollbar21updateThumbProportionEv
+__ZN7WebCore23ScrollbarThemeComposite14invalidatePartEPNS_9ScrollbarENS_13ScrollbarPartE
+__ZN7WebCore17ScrollbarThemeMac9trackRectEPNS_9ScrollbarEb
+__ZN7WebCore17ScrollbarThemeMac10hasButtonsEPNS_9ScrollbarE
+__ZN7WebCore23ScrollbarThemeComposite10splitTrackEPNS_9ScrollbarERKNS_7IntRectERS3_S6_S6_
+__ZN7WebCore23ScrollbarThemeComposite31constrainTrackRectToTrackPiecesEPNS_9ScrollbarERKNS_7IntRectE
+__ZN7WebCore23ScrollbarThemeComposite13thumbPositionEPNS_9ScrollbarE
+__ZN7WebCore23ScrollbarThemeComposite11thumbLengthEPNS_9ScrollbarE
+__ZNK7WebCore13RenderListBox14hasControlClipEv
+__ZN7WebCore13RenderListBox23scrollToRevealSelectionEv
+__ZNK7WebCore17HTMLSelectElement29activeSelectionStartListIndexEv
+__ZNK7WebCore17HTMLSelectElement27activeSelectionEndListIndexEv
+__ZN7WebCore13RenderListBox18listIndexIsVisibleEi
+__ZNK7WebCore13RenderListBox16baselinePositionEbb
+__ZN7WebCore23ScrollbarThemeComposite11trackLengthEPNS_9ScrollbarE
+__ZN7WebCore17ScrollbarThemeMac18minimumThumbLengthEPNS_9ScrollbarE
+__ZNK7WebCore11RenderTheme16baselinePositionEPKNS_12RenderObjectE
+__ZNK7WebCore8ThemeMac26baselinePositionAdjustmentENS_11ControlPartE
+__ZN7WebCore11RenderTable19paintBoxDecorationsERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore15GraphicsContext17drawConvexPolygonEmPKNS_10FloatPointEb
+__ZNK7WebCore5Color4darkEv
+__ZN7WebCore13RenderListBox11paintObjectERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore14RenderThemeMac13paintTextAreaEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore13RenderListBox14paintScrollbarERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore9Scrollbar12setFrameRectERKNS_7IntRectE
+__ZNK7WebCore9FrameView17windowResizerRectEv
+__ZNK7WebCore6Chrome17windowResizerRectEv
+__ZNK7WebCore6Widget27convertFromContainingWindowERKNS_7IntRectE
+__ZN7WebCore9Scrollbar5paintEPNS_15GraphicsContextERKNS_7IntRectE
+__ZN7WebCore17ScrollbarThemeMac5paintEPNS_9ScrollbarEPNS_15GraphicsContextERKNS_7IntRectE
+__ZThn200_NK7WebCore13RenderListBox8isActiveEv
+__ZNK7WebCore13RenderListBox8isActiveEv
+__ZN7WebCore17ScrollbarThemeMac8hasThumbEPNS_9ScrollbarE
+__ZNK7WebCore13RenderListBox15controlClipRectEii
+__ZN7WebCore13RenderListBox19paintItemBackgroundERNS_12RenderObject9PaintInfoEiii
+__ZThn128_NK7WebCore17HTMLOptionElement8selectedEv
+__ZN7WebCore13RenderListBox19itemBoundingBoxRectEiii
+__ZNK7WebCore11RenderTheme39inactiveListBoxSelectionBackgroundColorEv
+__ZNK7WebCore14RenderThemeMac47platformInactiveListBoxSelectionBackgroundColorEv
+__ZNK7WebCore14RenderThemeMac40platformInactiveSelectionBackgroundColorEv
+__ZN7WebCore13RenderListBox19paintItemForegroundERNS_12RenderObject9PaintInfoEiii
+__ZN7WebCore15GraphicsContext12drawBidiTextERKNS_4FontERKNS_7TextRunERKNS_10FloatPointE
+__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE21createBidiRunsForLineERKS1_bb
+__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE9appendRunEv
+__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE10deleteRunsEv
+__ZNK7WebCore11RenderTheme39inactiveListBoxSelectionForegroundColorEv
+__ZNK7WebCore11RenderTheme40supportsListBoxSelectionForegroundColorsEv
+__ZNK7WebCore14RenderThemeMac47platformInactiveListBoxSelectionForegroundColorEv
+__ZN7WebCoreL8checkboxEjRKNS_7IntRectEf
+__ZN7WebCoreL15checkboxMarginsEm
+__ZN7WebCore36jsHTMLDocumentPrototypeFunctionWriteEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14JSHTMLDocument5writeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCoreL13documentWriteEPN3JSC9ExecStateERKNS0_7ArgListEPNS_12HTMLDocumentENS_18NewlineRequirementE
__ZN7WebCore15SegmentedString21setExcludeLineNumbersEv
-__ZNK7WebCore14HTMLDivElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore14HTMLDivElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore14HTMLDivElement11tagPriorityEv
-__ZN7WebCore15EventTargetNode16addEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
-__ZN7WebCore11EventTarget16addEventListenerEPNS_15EventTargetNodeERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
-__ZN7WebCore11EventTarget19removeEventListenerEPNS_15EventTargetNodeERKNS_12AtomicStringEPNS_13EventListenerEb
-__ZN7WebCore5TimerINS_5FrameEE5firedEv
-__ZN7WebCore5Frame21lifeSupportTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore19CachedCSSStyleSheet4dataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
-__ZN7WebCore19TextResourceDecoder18checkForCSSCharsetEPKcmRb
-__ZN7WebCore19CachedCSSStyleSheet11checkNotifyEv
-__ZThn68_N7WebCore15HTMLLinkElement16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
-__ZN7WebCore15HTMLLinkElement16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
-__ZNK7WebCore19CachedCSSStyleSheet11canUseSheetEb
-__ZN7WebCore15HTMLLinkElement11sheetLoadedEv
-__ZNK7WebCore15HTMLLinkElement9isLoadingEv
-__ZNK7WebCore15HTMLLinkElement5sheetEv
-__ZNK7WebCore16DeprecatedString7findRevEPKci
-__ZNK7WebCore16DeprecatedString7findRevERKS0_ib
-__ZN7WebCore16DeprecatedString6removeEjj
-__ZN7WebCore19DeprecatedValueListIN3WTF6RefPtrINS_23RegisteredEventListenerEEEE8copyNodeEPNS_27DeprecatedValueListImplNodeE
-__ZN7WebCore19DeprecatedValueListIN3WTF6RefPtrINS_23RegisteredEventListenerEEEE10deleteNodeEPNS_27DeprecatedValueListImplNodeE
-__ZNK7WebCore23JSAbstractEventListener19isHTMLEventListenerEv
-__ZN3KJS6Window20jsHTMLEventListenersEv
-__ZN3WTF6VectorIPN7WebCore7ElementELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore7ElementELm0EE15reserveCapacityEm
-__ZN7WebCore10JSDocument16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN3KJS26valueToStringWithNullCheckEPNS_9ExecStateEPNS_7JSValueE
-__ZN7WebCore8Document9setCookieERKNS_6StringE
-__ZN7WebCore10setCookiesEPNS_8DocumentERKNS_4KURLES4_RKNS_6StringE
-__ZN7WebCore8Document26setHTMLWindowEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEE
-__ZN7WebCore8Document29removeHTMLWindowEventListenerERKNS_12AtomicStringE
-__ZNK7WebCore12RenderObject10hasStaticYEv
-__ZN7WebCore9RenderBox32calculateBackgroundImageGeometryEPKNS_15BackgroundLayerEiiiiRNS_7IntRectERNS_8IntPointERNS_7IntSizeE
-__ZNK7WebCore9RenderBox23calculateBackgroundSizeEPKNS_15BackgroundLayerEii
-__ZN7WebCore11CachedImage21setImageContainerSizeERKNS_7IntSizeE
-__ZN7WebCore5Image16setContainerSizeERKNS_7IntSizeE
-__ZNK7WebCore9RenderBox30offsetForPositionedInContainerEPNS_12RenderObjectE
-__ZN3KJS14DOMWindowTimer5firedEv
-__ZN3KJS6Window10timerFiredEPNS_14DOMWindowTimerE
-__ZN7WebCore15ScheduledAction7executeEPN3KJS6WindowE
-__ZN7WebCore36jsHTMLDocumentPrototypeFunctionWriteEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore14JSHTMLDocument5writeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore14isTableRelatedEPNS_4NodeE
-__ZN7WebCore11isTablePartEPNS_4NodeE
-__ZN7WebCore12RenderObject12imageChangedEPNS_11CachedImageE
-__ZN3KJS17staticValueGetterIN7WebCore10JSDocumentEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore10JSDocument16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore8Document6cookieEv
-__ZN7WebCore7cookiesEPKNS_8DocumentERKNS_4KURLE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EE15reserveCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EE6shrinkEm
+__ZN7WebCore10HTMLParser11isHeaderTagERKNS_12AtomicStringE
+__ZNK7WebCore10HTMLParser8isInlineEPNS_4NodeE
+__ZThn8_N7WebCore20HTMLTableCellElementD0Ev
+__ZN7WebCore11RenderTable11splitColumnEii
+__ZN7WebCore18RenderTableSection11splitColumnEii
+__ZN7WebCore9FrameView14setMarginWidthEi
+__ZN7WebCore9FrameView15setMarginHeightEi
+__ZN7WebCore12RenderObject28addChildIgnoringContinuationEPS0_S1_
+__ZNK7WebCore11HistoryItem6targetEv
+__ZNK7WebCore13HTMLTokenizer14processingDataEv
+__ZN7WebCoreL19alternateFamilyNameERKNS_12AtomicStringE
+__ZN7WebCore11BitmapImage20frameDurationAtIndexEm
+__ZN7WebCore18RenderTextFragment7destroyEv
+__ZN7WebCore18RenderTextFragmentD0Ev
+__ZN7WebCore12RenderButton11removeChildEPNS_12RenderObjectE
+__ZN7WebCore12RenderButtonD0Ev
+__ZNK7WebCore6String8toDoubleEPb
+__ZN7WebCore10StringImpl8toDoubleEPb
+__ZN7WebCore11FrameLoader23scheduleHTTPRedirectionEdRKNS_6StringE
+__ZN7WebCore11FrameLoader16isLocationChangeERKNS_20ScheduledRedirectionE
+__ZN7WebCore19inputElementAltTextEv
+__ZNK7WebCore13HTMLHRElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore13HTMLHRElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore10HTMLParser19mapCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCore14HTMLMapElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14HTMLMapElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14HTMLMapElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore8Document14removeImageMapEPNS_14HTMLMapElementE
+__ZN7WebCore8Document11addImageMapEPNS_14HTMLMapElementE
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_14HTMLMapElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PNS1_14HTMLMapElementEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_E
+__ZNK7WebCore14HTMLMapElement17endTagRequirementEv
+__ZNK7WebCore14HTMLMapElement11tagPriorityEv
+__ZN7WebCore14HTMLMapElement8checkDTDEPKNS_4NodeE
+__ZN7WebCoreL15areaConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore15HTMLAreaElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLAreaElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLAreaElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore14newCoordsArrayERKNS_6StringERi
+__ZN7WebCoreL14countCharacterEPKtjt
+__ZN7WebCoreL11parseLengthEPKtj
+__ZN7WebCore21charactersToIntStrictEPKtmPbi
+__ZNK7WebCore15HTMLAreaElement17endTagRequirementEv
+__ZNK7WebCore15HTMLAreaElement11tagPriorityEv
+__ZNK7WebCore11BitmapImage10solidColorEv
+__ZN7WebCore5Image18fillWithSolidColorEPNS_15GraphicsContextERKNS_9FloatRectERKNS_5ColorENS_17CompositeOperatorE
+__ZN7WebCoreL5radioEjRKNS_7IntRectEf
+__ZN7WebCoreL12radioMarginsEm
+__ZN7WebCore5TimerINS_11BitmapImageEE5firedEv
+__ZN7WebCore11BitmapImage16advanceAnimationEPNS_5TimerIS0_EE
+__ZN7WebCore11BitmapImage24internalAdvanceAnimationEb
+__ZN7WebCore5TimerINS_11BitmapImageEED0Ev
+__ZThn392_N7WebCore11CachedImage20shouldPauseAnimationEPKNS_5ImageE
+__ZN7WebCore11CachedImage20shouldPauseAnimationEPKNS_5ImageE
+__ZN7WebCore20CachedResourceClient15willRenderImageEPNS_11CachedImageE
__ZN7WebCore10HTMLParser24framesetCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore19framesetConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore19HTMLFrameSetElementC2EPNS_8DocumentE
+__ZN7WebCoreL19framesetConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore19HTMLFrameSetElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19HTMLFrameSetElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZNK7WebCore19HTMLFrameSetElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
__ZN7WebCore19HTMLFrameSetElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore6String13toLengthArrayERi
-__ZN7WebCore10StringImpl13toLengthArrayERi
+__ZN7WebCore14newLengthArrayERKNS_6StringERi
__ZNK7WebCore19HTMLFrameSetElement17endTagRequirementEv
__ZNK7WebCore19HTMLFrameSetElement11tagPriorityEv
__ZN7WebCore19HTMLFrameSetElement6attachEv
__ZN7WebCore19HTMLFrameSetElement16rendererIsNeededEPNS_11RenderStyleE
__ZNK7WebCore11RenderStyle16isStyleAvailableEv
__ZN7WebCore19HTMLFrameSetElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore14RenderFrameSetC1EPNS_19HTMLFrameSetElementE
__ZN7WebCore14RenderFrameSetC2EPNS_19HTMLFrameSetElementE
+__ZN7WebCore14RenderFrameSet8GridAxisC1Ev
__ZN7WebCore14RenderFrameSet8GridAxisC2Ev
+__ZNK7WebCore14RenderFrameSet15virtualChildrenEv
__ZN7WebCore19HTMLFrameSetElement8checkDTDEPKNS_4NodeE
__ZNK7WebCore14RenderFrameSet10isFrameSetEv
-__ZN7WebCore16frameConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLFrameElementC2EPNS_8DocumentE
+__ZN7WebCoreL16frameConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLFrameElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLFrameElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore16HTMLFrameElement20parseMappedAttributeEPNS_15MappedAttributeE
__ZNK7WebCore16HTMLFrameElement17endTagRequirementEv
__ZNK7WebCore16HTMLFrameElement11tagPriorityEv
__ZN7WebCore16HTMLFrameElement6attachEv
__ZN7WebCore16HTMLFrameElement16rendererIsNeededEPNS_11RenderStyleE
__ZN7WebCore16HTMLFrameElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore11RenderFrameC1EPNS_16HTMLFrameElementE
__ZN7WebCore11RenderFrameC2EPNS_16HTMLFrameElementE
__ZNK7WebCore14RenderFrameSet14isChildAllowedEPNS_12RenderObjectEPNS_11RenderStyleE
__ZNK7WebCore11RenderFrame7isFrameEv
+__ZN7WebCore14RenderFrameSet15virtualChildrenEv
+__ZN3WTF6VectorIPN7WebCore5FrameELm16EE6shrinkEm
__ZN7WebCore11RenderFrame11viewClearedEv
-__ZN7WebCore10HTMLParser24noframesCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
__ZN7WebCore14RenderFrameSet6layoutEv
__ZN7WebCore14RenderFrameSet8GridAxis6resizeEi
-__ZN3WTF6VectorIbLm0EE6resizeEm
__ZN7WebCore14RenderFrameSet10layOutAxisERNS0_8GridAxisEPKNS_6LengthEi
__ZN7WebCore14RenderFrameSet14positionFramesEv
+__ZN7WebCore9RenderBox6layoutEv
__ZN7WebCore14RenderFrameSet15computeEdgeInfoEv
__ZN3WTF6VectorIbLm0EE4fillERKbm
__ZSt4fillIPbbEvT_S1_RKT0_
__ZNK7WebCore11RenderFrame8edgeInfoEv
__ZN3WTF6VectorIbLm0EEaSERKS1_
__ZN7WebCore14RenderFrameSet16fillFromEdgeInfoERKNS_13FrameEdgeInfoEii
+__ZNK7WebCore9RenderBox11overflowTopEb
+__ZNK7WebCore9RenderBox12overflowLeftEb
__ZN7WebCore14RenderFrameSet5paintERNS_12RenderObject9PaintInfoEii
+__ZNK7WebCore6Editor17insideVisibleAreaERKNS_8IntPointE
__ZN7WebCore14RenderFrameSet11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
__ZN7WebCore19HTMLFrameSetElement19defaultEventHandlerEPNS_5EventE
__ZN7WebCore14RenderFrameSet10userResizeEPNS_10MouseEventE
-__ZNK7WebCore9DOMWindow6parentEv
-__ZN7WebCore14JSHTMLDocument16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore11RenderFrameD0Ev
+__ZN3WTF6VectorIPN7WebCore16HTMLImageElementELm0EE6shrinkEm
+__ZN7WebCore14RenderFrameSetD0Ev
+__ZN7WebCore12RenderObject15willRenderImageEPNS_11CachedImageE
+__ZThn8_N7WebCore15HTMLHtmlElementD0Ev
+__ZThn8_N7WebCore15HTMLBodyElementD0Ev
+__ZN7WebCore10HTMLParser39handleResidualStyleCloseTagAcrossBlocksEPNS_13HTMLStackElemE
+__ZN7WebCore10HTMLParser19moveOneBlockToStackERPNS_13HTMLStackElemE
+__ZN7WebCore12NamedNodeMap13setAttributesERKS0_
+__ZN7WebCore18NamedMappedAttrMap15clearAttributesEv
+__ZN7WebCore12NamedNodeMap15clearAttributesEv
+__ZNK7WebCore15MappedAttribute5cloneEv
+__ZN7WebCore14JSHTMLDocument10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore6StringC1ERKN3JSC10IdentifierE
+__ZN7WebCore6StringC2ERKN3JSC10IdentifierE
+__ZN7WebCore8Document18documentNamedItemsERKNS_6StringE
+__ZN7WebCore18HTMLNameCollectionC1EN3WTF10PassRefPtrINS_8DocumentEEENS_14CollectionTypeERKNS_6StringE
+__ZN7WebCore18HTMLNameCollectionC2EN3WTF10PassRefPtrINS_8DocumentEEENS_14CollectionTypeERKNS_6StringE
+__ZN7WebCore8Document18nameCollectionInfoENS_14CollectionTypeERKNS_12AtomicStringE
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_15CollectionCacheENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3addERKS3
+__ZNK7WebCore18HTMLNameCollection9itemAfterEPNS_7ElementE
+__ZNK7WebCore14HTMLCollection9firstItemEv
+__ZN7WebCore18HTMLNameCollectionD0Ev
+__ZN7WebCore15HTMLFormElement15addElementAliasEPNS_22HTMLFormControlElementERKNS_12AtomicStringE
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore16AtomicStringImplEEENS1_INS2_22HTMLFormControlElementEEENS_7PtrHashIS4_EENS_10HashTraitsI
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore16AtomicStringImplEEESt4pairIS4_NS1_INS2_22HTMLFormControlElementEEEENS_18PairFirstExtra
+__ZN7WebCore17JSHTMLFormElement10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore16AtomicStringImplEEENS1_INS2_22HTMLFormControlElementEEENS_7PtrHashIS4_EENS_10HashTraits
+__ZN7WebCore15FormDataBuilder17parseEncodingTypeERKNS_6StringE
+__ZN7WebCore15HTMLFormElement19removedFromDocumentEv
+__ZN7WebCore15HTMLFormElement16removeImgElementEPNS_16HTMLImageElementE
+__ZN7WebCore26JSHTMLFormElementPrototypeD1Ev
+__ZN7WebCore19HTMLFrameSetElementD0Ev
+__ZN7WebCore16HTMLFrameElementD0Ev
+__ZN7WebCore15GraphicsContext9drawImageEPNS_5ImageERKNS_8IntPointENS_17CompositeOperatorE
+__ZN7WebCore15GraphicsContext9drawImageEPNS_5ImageERKNS_8IntPointERKNS_7IntRectENS_17CompositeOperatorE
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_14HTMLMapElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3
+__ZN7WebCore14HTMLMapElement13mapMouseEventEiiRKNS_7IntSizeERNS_13HitTestResultE
+__ZN7WebCore15HTMLAreaElement13mapMouseEventEiiRKNS_7IntSizeERNS_13HitTestResultE
+__ZNK7WebCore15HTMLAreaElement9getRegionERKNS_7IntSizeE
+__ZN7WebCore4Path10addEllipseERKNS_9FloatRectE
+__ZNK7WebCore4Path8containsERKNS_10FloatPointENS_8WindRuleE
+__ZNK7WebCore4Path12boundingRectEv
+__ZN7WebCoreL34copyClosingSubpathsApplierFunctionEPvPK13CGPathElement
+__ZN7WebCore9PageCache11autoreleaseEN3WTF10PassRefPtrINS_10CachedPageEEE
+__ZN3WTF7HashSetINS_6RefPtrIN7WebCore10CachedPageEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore10CachedPageEEES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E
+__ZN7WebCore9PageCache17removeFromLRUListEPNS_11HistoryItemE
+__ZN7WebCore16HTMLInputElement37registerForActivationCallbackIfNeededEv
+__ZNK7WebCore13HTMLTokenizer15isHTMLTokenizerEv
+__ZN7WebCore7Element26documentWillBecomeInactiveEv
+__ZN7WebCore21DeprecatedPtrListImpl4prevEv
+__ZN7WebCore21setJSDOMWindowOnerrorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow10setOnerrorEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZThn8_N7WebCore19HTMLTableRowElementD0Ev
+__ZN7WebCore14HTMLMapElementD0Ev
+__ZN7WebCore15HTMLAreaElementD0Ev
+__ZN7WebCore17HTMLAnchorElementD2Ev
+__ZThn32_NK7WebCore8DOMTimer10canSuspendEv
+__ZNK7WebCore8DOMTimer10canSuspendEv
+__ZThn32_N7WebCore8DOMTimer7suspendEv
+__ZN7WebCore8DOMTimer7suspendEv
+__ZN7WebCoreL19basefontConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore19HTMLBaseFontElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19HTMLBaseFontElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore19HTMLBaseFontElement17endTagRequirementEv
+__ZNK7WebCore19HTMLBaseFontElement11tagPriorityEv
+__ZNK7WebCore18RenderTextFragment12originalTextEv
+__ZN7WebCore18RenderTextFragment15setTextInternalEN3WTF10PassRefPtrINS_10StringImplEEE
+__ZN7WebCore18RenderTextFragment17previousCharacterEv
+__ZN7WebCore10RenderText17previousCharacterEv
+__ZNK7WebCore12RenderObject18previousInPreOrderEv
+__ZN7WebCore10StringImpl10capitalizeEt
+__ZN7WebCore17wordBreakIteratorEPKti
+__ZN7WebCore14textBreakFirstEPNS_17TextBreakIteratorE
+__ZNK7WebCore11RenderBlock20firstLineBoxBaselineEv
+__ZN7WebCore15RenderTableCell15setOverrideSizeEi
+__ZNK7WebCore6String11toIntStrictEPbi
+__ZN7WebCore10StringImpl11toIntStrictEPbi
+__ZN7WebCore4Node21setTabIndexExplicitlyEs
+__ZNK7WebCore12NamedNodeMap14mapsEquivalentEPKS0_
+__ZN7WebCore17HTMLScriptElement19removedFromDocumentEv
+__ZN7WebCore13ScriptElement19removedFromDocumentERNS_17ScriptElementDataE
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3addERKS3_RKj
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsI
+__ZN7WebCoreL28createHTMLAreaElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore17JSHTMLAreaElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSHTMLAreaElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLAreaElementEEE
+__ZN7WebCore17JSHTMLAreaElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLAreaElementEEE
+__ZN7WebCoreL14isTableRelatedEPKNS_4NodeE
+__ZN7WebCoreL11isTablePartEPKNS_4NodeE
+__ZN7WebCore16HTMLLabelElementD0Ev
+__ZN7WebCore15jsDOMWindowSelfEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow4selfEv
+__ZNK7WebCore14RenderThemeMac25adjustMenuListButtonStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZN7WebCore14RenderThemeMac19paintMenuListButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore14RenderThemeMac28paintMenuListButtonGradientsEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCoreL23MainGradientInterpolateEPvPKdPd
+__ZN7WebCoreL22TopGradientInterpolateEPvPKdPd
+__ZN7WebCoreL25BottomGradientInterpolateEPvPKdPd
+__ZN7WebCore15GraphicsContext8drawLineERKNS_8IntPointES3_
+__ZN7WebCore15GraphicsContext23addInnerRoundedRectClipERKNS_7IntRectEi
+__ZN7WebCore12RenderObject17drawArcForBoxSideEPNS_15GraphicsContextEiifNS_7IntSizeEiiNS_7BoxSideENS_5ColorERKS5_NS_12EBorderSty
+__ZN7WebCore15GraphicsContext9strokeArcERKNS_7IntRectEii
+__ZN7WebCore27JSHTMLInputElementPrototypeD1Ev
+__ZN7WebCore25JSHTMLCollectionPrototypeD1Ev
+__ZN7WebCore19JSHTMLAllCollectionD1Ev
+__ZN7WebCore5TimerINS_9PageCacheEE5firedEv
+__ZN7WebCore9PageCache39releaseAutoreleasedPagesNowOrRescheduleEPNS_5TimerIS0_EE
+__ZN7WebCore11FrameLoader23timeOfLastCompletedLoadEv
+__ZN7WebCore12userIdleTimeEv
+__ZN7WebCore38jsHTMLDocumentPrototypeFunctionWritelnEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14JSHTMLDocument7writelnEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore21HTMLBlockquoteElement17endTagRequirementEv
+__ZNK7WebCore21HTMLBlockquoteElement11tagPriorityEv
+__ZN7WebCore13HTMLHRElementD0Ev
+__ZN7WebCore13JSPluginArrayD1Ev
+__ZN7WebCore13JSPluginArrayD2Ev
+__ZN7WebCore8JSPluginD1Ev
+__ZN7WebCore8JSPluginD2Ev
+__ZN7WebCore6PluginD1Ev
+__ZN7WebCore6PluginD2Ev
+__ZN7WebCore6Screen15disconnectFrameEv
+__ZN7WebCore11PluginArrayD1Ev
+__ZN7WebCore16CSSStyleSelector17mapFillAttachmentEPNS_9FillLayerEPNS_8CSSValueE
+__ZN7WebCore9FrameView20addSlowRepaintObjectEv
+__ZNK7WebCore12RenderObject8viewRectEv
+__ZN7WebCore14RenderFrameSet17paintColumnBorderERKNS_12RenderObject9PaintInfoERKNS_7IntRectE
+__ZN7WebCore14RenderFrameSet14paintRowBorderERKNS_12RenderObject9PaintInfoERKNS_7IntRectE
+__ZN7WebCoreL15borderFillColorEv
+__ZN7WebCoreL20borderStartEdgeColorEv
+__ZN7WebCoreL18borderEndEdgeColorEv
+__ZN7WebCore13RenderListBoxD0Ev
+__ZN7WebCore13RenderListBox16destroyScrollbarEv
+__ZN7WebCore9ScrollbarD0Ev
+__ZN7WebCore9Scrollbar17stopTimerIfNeededEv
+__ZN7WebCore17ScrollbarThemeMac19unregisterScrollbarEPNS_9ScrollbarE
+__ZN3WTF9HashTableIPN7WebCore9ScrollbarES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22
+__ZN3WTF9HashTableIPN7WebCore9ScrollbarES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInv
+__ZN3WTF9HashTableIPN7WebCore9ScrollbarES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN7WebCore8JSScreenD1Ev
+__ZN7WebCore8JSScreenD2Ev
+__ZN7WebCore10CachedPage5clearEv
+__ZN7WebCore11CachedFrameD1Ev
+__ZN7WebCore11CachedFrameD2Ev
+__ZN7WebCore11CachedFrame5clearEv
+__ZN7WebCore9FrameView10clearFrameEv
+__ZN7WebCore21ScriptCachedFrameDataD1Ev
+__ZN7WebCore21ScriptCachedFrameDataD2Ev
+__ZN7WebCore21ScriptCachedFrameData5clearEv
+__ZThn32_N7WebCore8DOMTimer4stopEv
+__ZN7WebCore8DOMTimer4stopEv
+__ZN7WebCore10CachedPageD1Ev
+__ZN7WebCore10CachedPageD2Ev
+__ZN7WebCore10PluginDataD1Ev
+__ZN7WebCore10PluginDataD2Ev
+__ZN3WTF15deleteAllValuesIPN7WebCore10PluginInfoELm0EEEvRKNS_6VectorIT_XT0_EEE
+__ZN3WTF6VectorIPN7WebCore13MimeClassInfoELm0EE6shrinkEm
+__ZN3WTF15deleteAllValuesIPN7WebCore13MimeClassInfoELm0EEEvRKNS_6VectorIT_XT0_EEE
+__ZN3WTF6VectorIPN7WebCore10PluginInfoELm0EE6shrinkEm
+__ZN7WebCore14HTMLPreElementD0Ev
+__ZThn8_N7WebCore16HTMLInputElementD0Ev
+__ZThn32_N7WebCore8DOMTimer16contextDestroyedEv
+__ZN7WebCore8DOMTimer16contextDestroyedEv
+__ZN7WebCore15ActiveDOMObject16contextDestroyedEv
+__ZN7WebCore19HTMLBaseFontElementD0Ev
+__ZN7WebCore19JSLocationPrototypeD1Ev
+__ZN7WebCore16HTMLDListElementD0Ev
+__ZN7WebCore12CSSMediaRuleD0Ev
+__ZN7WebCore10MediaQueryD1Ev
+__ZN7WebCore10MediaQueryD2Ev
+__ZN3WTF15deleteAllValuesIPN7WebCore13MediaQueryExpELm0EEEvRKNS_6VectorIT_XT0_EEE
+__ZN7WebCore26JSHTMLAreaElementPrototypeD1Ev
+__ZN7WebCore17JSHTMLAreaElementD1Ev
+__ZThn8_N7WebCore15HTMLAreaElementD0Ev
+__ZN7WebCore22JSPluginArrayPrototypeD1Ev
+__ZN7WebCore17JSPluginPrototypeD1Ev
+__ZN7WebCore17JSScreenPrototypeD1Ev
+__ZN7WebCore15PurgeableBuffer6createEPKcm
+__ZN7WebCore15PurgeableBufferC1EPcm
+__ZN7WebCore15PurgeableBufferC2EPcm
+__ZN7WebCore15PurgeableBuffer13makePurgeableEb
+__ZN7WebCore12SharedBuffer20adoptPurgeableBufferEPNS_15PurgeableBufferE
+__ZNK7WebCore15PurgeableBuffer4dataEv
+__ZThn392_N7WebCore11CachedImage17animationAdvancedEPKNS_5ImageE
+__ZN7WebCore11CachedImage17animationAdvancedEPKNS_5ImageE
+__ZN7WebCore12SharedBuffer22releasePurgeableBufferEv
+__ZN7WebCore4Path7addRectERKNS_9FloatRectE
+__ZN7WebCore11BitmapImage22frameIsCompleteAtIndexEm
+__ZN7WebCore4Page18removeSchedulePairEN3WTF10PassRefPtrINS_12SchedulePairEEE
+__ZN7WebCore14DocumentLoader10unscheduleEPNS_12SchedulePairE
+__ZN7WebCoreL13unscheduleAllERKN3WTF7HashSetINS0_6RefPtrINS_14ResourceLoaderEEENS0_7PtrHashIS4_EENS0_10HashTraitsIS4_EEEEPNS_12
+-[DOMStyleSheetList item:]
+__Z3kitPN7WebCore10StyleSheetE
+__Z8kitClassPN7WebCore10StyleSheetE
+-[DOMCSSStyleSheet cssRules]
+__Z3kitPN7WebCore11CSSRuleListE
+-[DOMCSSRuleList length]
+-[DOMCSSStyleSheet insertRule:index:]
+__ZN7WebCore13CSSStyleSheet10insertRuleERKNS_6StringEjRi
+__ZN7WebCore9CSSParser9parseRuleEPNS_13CSSStyleSheetERKNS_6StringE
+__ZN7WebCore9StyleList6insertEjN3WTF10PassRefPtrINS_9StyleBaseEEE
+__ZN7WebCore13CSSStyleSheet17styleSheetChangedEv
+-[DOMCSSRuleList item:]
+__Z3kitPN7WebCore7CSSRuleE
+__Z8kitClassPN7WebCore7CSSRuleE
+-[DOMCSSStyleRule style]
+-[DOMCSSStyleDeclaration setCssText:]
+__ZN7WebCore26CSSMutableStyleDeclaration10setCssTextERKNS_6StringERi
+-[DOMElement clientHeight]
+__ZN7WebCore7Element12clientHeightEv
+-[DOMDocument createDocumentFragment]
+-[DOMNode lastChild]
+-[DOMElement getElementsByTagName:]
+-[DOMHTMLElement setInnerHTML:]
+-[DOMStyleSheet ownerNode]
+-[DOMNode setTextContent:]
+__ZN7WebCore4Node14setTextContentERKNS_6StringERi
+-[DOMCSSStyleRule selectorText]
+__ZNK7WebCore11RenderTable20firstLineBoxBaselineEv
+__ZNK7WebCore18RenderTableSection20firstLineBoxBaselineEv
+__ZN7WebCore16MIMETypeRegistry24isSupportedImageMIMETypeERKNS_6StringE
+-[DOMNode replaceChild:oldChild:]
+__ZN7WebCore17HTMLObjectElement16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore17HTMLObjectElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore16MIMETypeRegistry20isJavaAppletMIMETypeERKNS_6StringE
+__ZNK3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_15CaseFoldingHashENS_10HashTraitsIS3_EES8_E8conta
+__ZN7WebCoreL12isURLAllowedEPNS_8DocumentERKNS_6StringE
+__ZNK7WebCore17HTMLPlugInElement4nameEv
+__ZN7WebCore11FrameLoader13requestObjectEPNS_10RenderPartERKNS_6StringERKNS_12AtomicStringES5_RKN3WTF6VectorIS3_Lm0EEESD_
+__ZN7WebCore11FrameLoader15shouldUsePluginERKNS_4KURLERKNS_6StringEbRb
+__ZN7WebCore11FrameLoader10loadPluginEPNS_10RenderPartERKNS_4KURLERKNS_6StringERKN3WTF6VectorIS6_Lm0EEESD_b
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_15CaseFoldingHashENS_10HashTraitsIS3_EES8_E15deall
+__ZNK7WebCore14CachedResource9wasPurgedEv
+-[DOMCSSRuleList dealloc]
+-[DOMCSSRule dealloc]
+-[DOMStyleSheet dealloc]
+__ZN7WebCore4PairD0Ev
+__ZN7WebCore11ShadowValueD0Ev
+-[DOMHTMLElement innerHTML]
+__ZN7WebCore21HTMLFrameOwnerElement10willRemoveEv
+__ZN7WebCore10RenderView12removeWidgetEPNS_12RenderWidgetE
+__ZN3WTF9HashTableIPN7WebCore12RenderWidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_N
+__ZN3WTF9HashTableIPN7WebCore12RenderWidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAn
+__ZN3WTF9HashTableIPN7WebCore12RenderWidgetES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS
+__ZN7WebCore16ScriptController29cleanupScriptObjectsForPluginEPv
+__ZN3WTF9HashTableIPvSt4pairIS1_NS_6RefPtrIN3JSC8Bindings10RootObjectEEEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS1_EENS_14Pai
+__ZN7WebCore17HTMLObjectElement19removedFromDocumentEv
+-[DOMNode removeChild:]
+__ZN7WebCore14RenderTableRow29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
+__ZN7WebCore17HTMLObjectElementD0Ev
+__ZN7WebCore22HTMLPlugInImageElementD2Ev
+__ZN7WebCore17HTMLPlugInElementD2Ev
+__ZN7WebCore33setDefaultThreadViolationBehaviorENS_23ThreadViolationBehaviorENS_20ThreadViolationRoundE
+__ZN7WebCore11FrameLoader18setLocalLoadPolicyENS0_15LocalLoadPolicyE
+__ZN7WebCore18MainResourceLoader9didCancelERKNS_13ResourceErrorE
+__ZN7WebCore11FrameLoader25receivedMainResourceErrorERKNS_13ResourceErrorEb
+__ZN7WebCore11FrameLoader4stopEv
+__ZNK7WebCore17ResourceErrorBase8lazyInitEv
+__ZN7WebCore13ResourceError16platformLazyInitEv
+__ZN7WebCore11FrameLoader31invalidateCurrentItemCachedPageEv
+__ZN7WebCore14DocumentLoader17mainReceivedErrorERKNS_13ResourceErrorEb
+__ZN7WebCore11FrameLoader25mainReceivedCompleteErrorEPNS_14DocumentLoaderERKNS_13ResourceErrorE
+__ZN7WebCore11FrameLoader20clearProvisionalLoadEv
+-[DOMNode finalize]
+-[WebScriptObject finalize]
+__ZN7WebCore13HTMLTokenizer26parseProcessingInstructionERNS_15SegmentedStringENS0_5StateE
+__ZN7WebCore9CSSParser24parseTransitionShorthandEb
+__ZN7WebCore9CSSParser22parseAnimationPropertyEv
+__ZN7WebCore9CSSParser17addAnimationValueERN3WTF6RefPtrINS_8CSSValueEEENS1_10PassRefPtrIS3_EE
+__ZN7WebCore11FrameLoader10gotoAnchorERKNS_6StringE
+__ZN7WebCore8Document10findAnchorERKNS_6StringE
+__ZNK7WebCore17HTMLAnchorElement4nameEv
+__ZN7WebCore8Document12setCSSTargetEPNS_7ElementE
+__ZNK7WebCore13ContainerNode7getRectEv
+__ZNK7WebCore13ContainerNode18getUpperLeftCornerERNS_10FloatPointE
+__ZNK7WebCore13ContainerNode19getLowerRightCornerERNS_10FloatPointE
+__ZN7WebCore39jsElementPrototypeFunctionQuerySelectorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4Node13querySelectorERKNS_6StringERi
+__ZN7WebCore9CSSParser13parseSelectorERKNS_6StringEPNS_8DocumentERNS_15CSSSelectorListE
+__ZN7WebCoreL32selectorNeedsNamespaceResolutionERKNS_15CSSSelectorListE
+__ZN7WebCoreL18forEachTagSelectorINS_39SelectorNeedsNamespaceResolutionFunctorEEEbRT_PNS_11CSSSelectorE
+__ZN7WebCore43jsDocumentPrototypeFunctionQuerySelectorAllEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4Node16querySelectorAllERKNS_6StringERi
+__ZN7WebCore22createSelectorNodeListEPNS_4NodeERKNS_15CSSSelectorListE
+__ZNK7WebCore16CSSStyleSelector15SelectorChecker13checkSelectorEPNS_11CSSSelectorEPNS_7ElementE
+__ZNK7WebCore14StaticNodeList6lengthEv
+__ZNK7WebCore14StaticNodeList12itemWithNameERKNS_12AtomicStringE
+-[DOMHTMLElement innerText]
+__ZNK7WebCore7Element9innerTextEv
+-[DOMDocument createExpression:resolver:]
+__ZN7WebCore8Document16createExpressionERKNS_6StringEPNS_15XPathNSResolverERi
+__ZN7WebCore5XPath12LocationPath15insertFirstStepEPNS0_4StepE
+__Z3kitPN7WebCore15XPathExpressionE
+-[DOMXPathExpression evaluate:type:inResult:]
+__Z4coreP14DOMXPathResult
+__Z3kitPN7WebCore11XPathResultE
+-[DOMXPathResult iterateNext]
+__ZN7WebCore11XPathResult11iterateNextERi
+-[WebCoreSharedBufferData finalize]
+-[DOMXPathExpression finalize]
+-[DOMXPathResult finalize]
+-[DOMNodeList finalize]
+__ZNK7WebCore13HitTestResult16absoluteImageURLEv
+__ZNK7WebCore13HitTestResult17isContentEditableEv
+__ZNK7WebCore13HitTestResult5imageEv
+__ZNK7WebCore13HitTestResult18titleDisplayStringEv
+__ZN7WebCore13displayStringERKNS_6StringEPKNS_4NodeE
+__ZNK7WebCore13HitTestResult11textContentEv
+__ZNK7WebCore13HitTestResult9imageRectEv
+__ZNK7WebCore13HitTestResult16altDisplayStringEv
+__ZNK7WebCore13HitTestResult10isLiveLinkEv
+__ZNK7WebCore17HTMLAnchorElement10isLiveLinkEv
+__ZN7WebCore11FrameLoader19requestFromDelegateERNS_15ResourceRequestERmRNS_13ResourceErrorE
+__ZN7WebCore11FrameLoader29sendRemainingDelegateMessagesEmRKNS_16ResourceResponseEiRKNS_13ResourceErrorE
+__ZN7WebCore14StaticNodeListD0Ev
+__ZNK7WebCore16StyleCachedImage13errorOccurredEv
+__ZN7WebCore16RenderListMarker12imageChangedEPvPKNS_7IntRectE
+__ZNK7WebCore14StaticNodeList4itemEj
+__ZN7WebCore28setJSHTMLAnchorElementTargetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement9setTargetERKNS_12AtomicStringE
+__ZN7WebCore15GraphicsContext15fillRoundedRectERKNS_7IntRectERKNS_7IntSizeES6_S6_S6_RKNS_5ColorE
+__ZN7WebCore15GraphicsContext7addPathERKNS_4PathE
+__ZN7WebCore15GraphicsContext8fillPathEv
+__ZNK7WebCore15GraphicsContext8fillRuleEv
+__ZN7WebCore24JSHTMLElementConstructorD1Ev
+__ZN7WebCore24JSCharacterDataPrototypeD1Ev
+__ZN7WebCore15JSTextPrototypeD1Ev
+__ZN7WebCore17JSNodeConstructorD1Ev
+__ZN7WebCore20JSElementConstructorD1Ev
+__ZN7WebCore18JSEventConstructorD1Ev
+__ZN7WebCore28JSHTMLFormElementConstructorD1Ev
+__ZN7WebCore29JSHTMLInputElementConstructorD1Ev
+__ZN7WebCore30JSHTMLSelectElementConstructorD1Ev
+__ZN7WebCore32JSHTMLTextAreaElementConstructorD1Ev
+__ZN7WebCore30JSHTMLTextAreaElementPrototypeD1Ev
+__ZN7WebCore30JSCSSStyleDeclarationPrototypeD1Ev
+__ZN7WebCore15JSHTMLLIElementD1Ev
+__ZN7WebCore11FrameLoader20checkNewWindowPolicyERKNS_16NavigationActionERKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateE
+__ZN7WebCore11PolicyCheck3setERKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEERKNS_6StringEPFvPvS3_S7_SA_bESB_
+__ZN7WebCore11FrameLoader28continueAfterNewWindowPolicyENS_12PolicyActionE
+__ZN7WebCore11FrameLoader36callContinueLoadAfterNewWindowPolicyEPvRKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEERKNS
+__ZN7WebCore11FrameLoader32continueLoadAfterNewWindowPolicyERKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormStateEEERKNS_6Stri
+__ZN7WebCore11RenderStyle17accessTransitionsEv
+__ZN7WebCore16CSSStyleSelector20mapAnimationPropertyEPNS_9AnimationEPNS_8CSSValueE
+__ZN7WebCore24JSHTMLLIElementPrototypeD1Ev
+__ZN7WebCore29JSHTMLHeadingElementPrototypeD1Ev
+-[DOMRange finalize]
+__ZN7WebCore11FrameLoader47callContinueFragmentScrollAfterNavigationPolicyEPvRKNS_15ResourceRequestEN3WTF10PassRefPtrINS_9FormS
+__ZN7WebCore11FrameLoader43continueFragmentScrollAfterNavigationPolicyERKNS_15ResourceRequestEb
+__ZN7WebCore14DocumentLoader32replaceRequestURLForAnchorScrollERKNS_4KURLE
+__ZN7WebCore19ResourceRequestBase6setURLERKNS_4KURLE
+__ZN7WebCore11FrameLoader31addHistoryItemForFragmentScrollEv
+__ZN7WebCore11FrameLoader14scrollToAnchorERKNS_4KURLE
+__ZN7WebCore11FrameLoader28updateHistoryForAnchorScrollEv
+__ZNK7WebCore6Editor7Command11isSupportedEv
+__ZN7WebCoreL9supportedEPNS_5FrameENS_19EditorCommandSourceE
+__ZNK7WebCore6Editor7Command5stateEPNS_5EventE
+__ZN7WebCoreL9stateNoneEPNS_5FrameEPNS_5EventE
+__ZNK7WebCore6Editor7Command9isEnabledEPNS_5EventE
+__ZN7WebCoreL10enabledCutEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCore6Editor11canDHTMLCutEv
+__ZN7WebCore6Editor16dispatchCPPEventERKNS_12AtomicStringENS_21ClipboardAccessPolicyE
+__ZN7WebCore6Editor19newGeneralClipboardENS_21ClipboardAccessPolicyE
+__ZN7WebCore14ClipboardEventC1ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9ClipboardEEE
+__ZN7WebCore14ClipboardEventC2ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9ClipboardEEE
+__ZN7WebCore9Clipboard15setAccessPolicyENS_21ClipboardAccessPolicyE
+__ZN7WebCore14ClipboardEventD0Ev
+__ZNK7WebCore6Editor6canCutEv
+__ZNK7WebCore6Editor7canCopyEv
+__ZN7WebCoreL29imageElementFromImageDocumentEPNS_8DocumentE
+__ZN7WebCoreL11enabledCopyEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCore6Editor12canDHTMLCopyEv
+__ZN7WebCore6Editor13canDHTMLPasteEv
+__ZNK7WebCore6Editor8canPasteEv
+__ZN7WebCoreL13enabledDeleteEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCoreL7enabledEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCoreL14stateUnderlineEPNS_5FrameEPNS_5EventE
+__ZN7WebCoreL10stateStyleEPNS_5FrameEiPKc
+__ZNK7WebCore6Editor17selectionHasStyleEPNS_19CSSStyleDeclarationE
+__ZN7WebCore26CSSMutableStyleDeclaration11makeMutableEv
+__ZNK7WebCore5Frame22selectionComputedStyleERPNS_4NodeE
+__ZNK7WebCore5Range20editingStartPositionEv
+__ZN7WebCoreL11updateStateEPNS_26CSSMutableStyleDeclarationEPNS_27CSSComputedStyleDeclarationERbRNS_8TriStateE
+__ZNK7WebCore26CSSMutableStyleDeclaration16getPropertyValueEi
+__ZN7WebCoreL27enabledInRichlyEditableTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZNK7WebCore4Node23isContentRichlyEditableEv
+__ZN7WebCoreL29supportedFromMenuOrKeyBindingEPNS_5FrameENS_19EditorCommandSourceE
+__ZN7WebCoreL16stateSuperscriptEPNS_5FrameEPNS_5EventE
+__ZN7WebCoreL14stateSubscriptEPNS_5FrameEPNS_5EventE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9DOMWindowEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9DOMWindowEEELm0EE15reserveCapacityEm
+__ZNK3WTF7HashMapIPN7WebCore9DOMWindowEPNS_6VectorINS_6RefPtrINS1_23RegisteredEventListenerEEELm0EEENS_7PtrHashIS3_EENS_10HashT
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore9DOMWindowEEELm0EE6shrinkEm
+__ZN7WebCore16enclosingIntRectERK7_NSRect
+__ZN7WebCore7IntSizeC1ERK7_NSSize
+__ZN7WebCore7IntSizeC2ERK7_NSSize
+__ZThn4_N7WebCore8Document14removedLastRefEv
+__ZThn4_N7WebCore4TextD0Ev
+__ZThn56_NK7WebCore16HTMLStyleElement4typeEv
+__ZThn56_NK7WebCore16HTMLStyleElement5mediaEv
+__ZThn56_N7WebCore16HTMLStyleElement10setLoadingEb
+__ZThn56_NK7WebCore17HTMLScriptElement21charsetAttributeValueEv
+__ZThn56_NK7WebCore17HTMLScriptElement18typeAttributeValueEv
+__ZThn64_NK7WebCore16HTMLInputElement14constrainValueERKNS_6StringE
+__ZThn64_NK7WebCore16HTMLInputElement11isTextFieldEv
+__ZThn12_N7WebCore13CSSImportRule16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
+__ZThn64_NK7WebCore16HTMLInputElement12isAutofilledEv
+__ZN7WebCoreL12toFontWeightEi
+__ZThn64_NK7WebCore16HTMLInputElement13isSearchFieldEv
+__ZThn64_NK7WebCore16HTMLInputElement26placeholderShouldBeVisibleEv
+__ZL16acceptableChoicejj
+__ZThn64_NK7WebCore16HTMLInputElement5valueEv
+__ZN7WebCore7DataRefINS_20StyleFlexibleBoxDataEE6accessEv
+__ZNK7WebCore14RenderThemeMac22setFontFromControlSizeEPNS_16CSSStyleSelectorEPNS_11RenderStyleEj
+__ZThn64_NK7WebCore17HTMLOptionElement31textIndentedToRespectGroupLabelEv
+__ZNK7WebCore14RenderThemeMac18popupButtonPaddingEj
+__ZThn64_NK7WebCore16HTMLInputElement17isInputTypeHiddenEv
+__ZThn44_NK7WebCore8Document10isDocumentEv
+__ZL12betterChoicejijiji
+__ZNK7WebCore7IntRectcv7_NSRectEv
+__ZThn64_NK7WebCore16HTMLInputElement15isPasswordFieldEv
+__ZThn64_N7WebCore16HTMLInputElement6selectEv
+__ZThn64_N7WebCore16HTMLInputElement14cacheSelectionEii
+__ZThn4_N7WebCore4AttrD0Ev
+__ZSt22__get_temporary_bufferIPN7WebCore11RenderLayerEESt4pairIPT_iEiS5_
+__ZSt22__stable_sort_adaptiveIPPN7WebCore11RenderLayerES3_iPFbS2_S2_EEvT_S6_T0_T1_T2_
+__ZSt22__chunk_insertion_sortIPPN7WebCore11RenderLayerEiPFbS2_S2_EEvT_S6_T0_T1_
+__ZSt16__merge_adaptiveIPPN7WebCore11RenderLayerEiS3_PFbS2_S2_EEvT_S6_S6_T0_S7_T1_S7_T2_
+__ZSt17__merge_sort_loopIPPN7WebCore11RenderLayerES3_iPFbS2_S2_EEvT_S6_T0_T1_T2_
+__ZThn268_N7WebCore11CachedImage18decodedSizeChangedEPKNS_5ImageEi
+__ZThn268_N7WebCore11CachedImage7didDrawEPKNS_5ImageE
+__ZThn64_NK7WebCore16HTMLInputElement9isCheckedEv
+__ZThn64_NK7WebCore16HTMLInputElement15isIndeterminateEv
+__ZN7WebCoreL13buttonMarginsEj
+__ZN3WTF9HashTableIPN7WebCore24OverlapTestRequestClientESt4pairIS3_NS1_7IntRectEENS_18PairFirstExtractorIS6_EENS_7PtrHashIS3_EE
+__ZSt16__introsort_loopIPPN7WebCore13InlineTextBoxEiPFbPKS1_S5_EEvT_S8_T0_T1_
+__ZN7WebCore11RenderLayer25setHasHorizontalScrollbarEb
+__ZN7WebCore11RenderLayer23setHasVerticalScrollbarEb
+__ZN7WebCore11RenderLayer15createScrollbarENS_20ScrollbarOrientationE
+__ZN7WebCore11RenderLayer23invalidateScrollbarRectEPNS_9ScrollbarERKNS_7IntRectE
+__ZNK7WebCore11RenderLayer8isActiveEv
+__ZN7WebCore11RenderLayer23hitTestOverflowControlsERNS_13HitTestResultE
+__ZN7WebCore18jsElementOffsetTopEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore7Element9offsetTopEv
+__ZNK7WebCore20RenderBoxModelObject9offsetTopEv
+__ZNK7WebCore12RenderObject12offsetParentEv
+__ZN7WebCoreL18adjustForLocalZoomEiPNS_12RenderObjectE
+__ZN7WebCore36jsDOMWindowPrototypeFunctionScrollToEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore9DOMWindow8scrollToEii
+__ZN7WebCore9FrameView17setScrollPositionERKNS_8IntPointE
+__ZN7WebCore40jsHTMLFormElementPrototypeFunctionSubmitEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore17JSHTMLFormElement6submitEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore15HTMLFormElement6submitEPNS_5EventEbbb
+__ZN7WebCore9FormState6createEN3WTF10PassRefPtrINS_15HTMLFormElementEEERNS1_6VectorISt4pairINS_6StringES7_ELm0EEENS2_INS_5Frame
+__ZN7WebCore15HTMLFormElement14createFormDataERKNS_7CStringE
+__ZNK7WebCore15HTMLFormElement12dataEncodingEv
+__ZNK7WebCore15HTMLFormElement12isMailtoFormEv
+__ZNK7WebCore15FormDataBuilder12dataEncodingEPNS_8DocumentE
+__ZN7WebCore8FormData6createEv
+__ZN7WebCore12FormDataListC1ERKNS_12TextEncodingE
+__ZN7WebCore12FormDataListC2ERKNS_12TextEncodingE
+__ZN7WebCore16HTMLInputElement14appendFormDataERNS_12FormDataListEb
+__ZN7WebCore12FormDataList12appendStringERKNS_6StringE
+__ZN3WTF6VectorIN7WebCore12FormDataList4ItemELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore12FormDataList4ItemELm0EE15reserveCapacityEm
+__ZN7WebCore7CStringC1EPKc
+__ZN7WebCore7CStringC2EPKc
+__ZN7WebCoreeqERKNS_7CStringES2_
+__ZN7WebCore15FormDataBuilder25addKeyValuePairAsFormDataERN3WTF6VectorIcLm0EEERKNS_7CStringES7_
+__ZN7WebCore15FormDataBuilder22encodeStringAsFormDataERN3WTF6VectorIcLm0EEERKNS_7CStringE
+__ZN3WTF6VectorIN7WebCore12FormDataList4ItemELm0EE6shrinkEm
+__ZN7WebCore8FormData10appendDataEPKvm
+__ZN3WTF6VectorIN7WebCore15FormDataElementELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore15FormDataElementELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore15FormDataElementELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIcLm0EEC1ERKS1_
+__ZN3WTF6VectorIcLm0EEC2ERKS1_
+__ZN7WebCoreL26generateFormDataIdentifierEv
+__ZN7WebCore11FrameLoader10submitFormEPKcRKNS_6StringEN3WTF10PassRefPtrINS_8FormDataEEES5_S5_S5_bbNS7_INS_5EventEEENS7_INS_9For
+__ZN7WebCore8FormData13generateFilesEPNS_12ChromeClientE
+__ZN7WebCore19ResourceRequestBase11setHTTPBodyEN3WTF10PassRefPtrINS_8FormDataEEE
+__ZN7WebCore11FrameLoader22scheduleFormSubmissionERKNS_16FrameLoadRequestEbbN3WTF10PassRefPtrINS_5EventEEENS5_INS_9FormStateEEE
+__ZN7WebCore11FrameLoader15loadPostRequestERKNS_15ResourceRequestERKNS_6StringES6_bNS_13FrameLoadTypeEN3WTF10PassRefPtrINS_5Eve
+__ZN7WebCore11setHTTPBodyEP19NSMutableURLRequestN3WTF10PassRefPtrINS_8FormDataEEE
+__ZN7WebCore8FormData6createEPKvm
+__ZN3WTF10RefCountedIN7WebCore9FormStateEE5derefEv
+-[WebCoreResourceHandleAsDelegate connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:]
+__ZN7WebCore14ResourceLoader11didSendDataEPNS_14ResourceHandleEyy
+__ZN7WebCore14ResourceLoader11didSendDataEyy
+__ZN7WebCore8FormData28removeGeneratedFilesIfNeededEv
+__ZN7WebCore26setJSHTMLFormElementActionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLFormElement9setActionERKNS_6StringE
+__ZN7WebCore14PreloadScanner3endEv
+__ZN7WebCore9Scrollbar8setValueEi
+__ZN7WebCore9Scrollbar13setCurrentPosEf
+__ZNK7WebCore17ScrollbarThemeMac16buttonsPlacementEv
+__ZN7WebCore9Scrollbar19updateThumbPositionEv
+__ZN7WebCore11RenderLayer12valueChangedEPNS_9ScrollbarE
+__ZN7WebCore9FrameView13scheduleEventEN3WTF10PassRefPtrINS_5EventEEENS2_INS_4NodeEEE
+__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EEC1ERKS4_
+__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EEC2ERKS4_
+__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIPN7WebCore14ScheduledEventELm0EE6shrinkEm
+__ZN7WebCore10HTMLParser24noframesCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCore16HTMLInputElement13aboutToUnloadEv
+__ZN7WebCore12InputElement13aboutToUnloadERNS_16InputElementDataEPNS_8DocumentE
+__ZThn8_N7WebCore13HTMLTokenizer14notifyFinishedEPNS_14CachedResourceE
+__ZThn56_NK7WebCore17HTMLScriptElement22languageAttributeValueEv
+__ZThn56_NK7WebCore17HTMLScriptElement17forAttributeValueEv
+__ZThn56_N7WebCore15HTMLLinkElement16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
+__ZN7WebCore14jsNodeNodeNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLDocumentConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSHTMLDocument14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore23JSHTMLDocumentPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZNK7WebCore17HTMLPlugInElement17endTagRequirementEv
+__ZNK7WebCore17HTMLObjectElement11tagPriorityEv
+__ZN7WebCore17HTMLPlugInElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore17HTMLObjectElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore17HTMLObjectElement18updateDocNamedItemEv
+__ZN7WebCoreL16paramConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLParamElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLParamElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLParamElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore16HTMLParamElement17endTagRequirementEv
+__ZNK7WebCore16HTMLParamElement11tagPriorityEv
+__ZN7WebCoreL16embedConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLEmbedElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLEmbedElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLEmbedElement16attributeChangedEPNS_9AttributeEb
+__ZNK7WebCore16HTMLEmbedElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore16HTMLEmbedElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore17jsDOMWindowFramesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSDOMWindowBase11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZNK7WebCore9FrameTree5childEj
+__ZN7WebCoreL17canAccessAncestorEPKNS_14SecurityOriginEPNS_5FrameE
+__ZN7WebCore11HistoryItem12addChildItemEN3WTF10PassRefPtrIS0_EE
+__ZN7WebCoreL27isObjectAncestorContainerOfEPNS_12RenderObjectES1_
+__ZNK7WebCore16HTMLEmbedElement17endTagRequirementEv
+__ZNK7WebCore16HTMLEmbedElement11tagPriorityEv
+__ZN7WebCore16HTMLEmbedElement20insertedIntoDocumentEv
+__ZN7WebCore16HTMLEmbedElement6attachEv
+__ZN7WebCore16HTMLEmbedElement12updateWidgetEv
+__ZN7WebCore17HTMLObjectElement11recalcStyleENS_4Node11StyleChangeE
+__ZN7WebCore17HTMLObjectElement21finishParsingChildrenEv
+__ZN7WebCore9FrameView17addWidgetToUpdateEPNS_16RenderPartObjectE
+__ZN3WTF7HashSetIPN7WebCore16RenderPartObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore16RenderPartObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expan
+__ZN3WTF9HashTableIPN7WebCore16RenderPartObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehas
+__ZN3WTF9HashTableIPN7WebCore16RenderPartObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allo
+__ZN3WTF9HashTableIPN7WebCore16RenderPartObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deal
+__ZN3WTF6VectorIPN7WebCore16RenderPartObjectELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore16RenderPartObjectELm0EE15reserveCapacityEm
+__ZNK7WebCore9FrameView22windowClipRectForLayerEPKNS_11RenderLayerEb
+__ZNK7WebCore11RenderLayer16childrenClipRectEv
+__ZNK7WebCore10ScrollView16contentsToWindowERKNS_7IntRectE
+__ZNK7WebCore6Widget25convertToContainingWindowERKNS_7IntRectE
+__ZN7WebCore9FloatRectC1ERK7_NSRect
+__ZN7WebCore9FloatRectC2ERK7_NSRect
+__ZN7WebCore10FloatPointC1ERK8_NSPoint
+__ZN7WebCore10FloatPointC2ERK8_NSPoint
+__ZN7WebCore9FloatSizeC1ERK7_NSSize
+__ZN7WebCore9FloatSizeC2ERK7_NSSize
+__ZN7WebCore7IntRectC1ERKNS_9FloatRectE
+__ZN7WebCore7IntRectC2ERKNS_9FloatRectE
+__ZNK7WebCore9FrameView14windowClipRectEb
+__ZN7WebCore25PluginMainThreadScheduler9schedulerEv
+__ZN7WebCore25PluginMainThreadSchedulerC1Ev
+__ZN7WebCore25PluginMainThreadSchedulerC2Ev
+__ZN7WebCore25PluginMainThreadScheduler14registerPluginEP4_NPP
+__ZN3WTF7HashMapIP4_NPPNS_5DequeIN7WebCore25PluginMainThreadScheduler4CallEEENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENSA_IS7_EEE3
+__ZN7WebCore16ScriptController20windowScriptNPObjectEv
+__Z23_NPN_CreateScriptObjectP4_NPPPN3JSC8JSObjectEN3WTF10PassRefPtrINS1_8Bindings10RootObjectEEE
+__NPN_CreateObject
+__ZL10jsAllocateP4_NPPP7NPClass
+__NPN_RetainObject
+__NPN_Evaluate
+__ZN3JSC8Bindings22convertNPStringToUTF16EPK9_NPString
+__ZN7WebCore6String26fromUTF8WithLatin1FallbackEPKcm
+__ZN7WebCore6String8fromUTF8EPKcm
+__ZN3JSC8Bindings23convertValueToNPVariantEPNS_9ExecStateENS_7JSValueEP10_NPVariant
+__NPN_GetStringIdentifier
+__ZN7WebCore13IdentifierRep3getEPKc
+__ZN7WebCoreL19stringIdentifierMapEv
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEPN7WebCore13IdentifierRepENS_7StrHashIS5_EENS_10HashTraitsIS5_EENSB_IS8_EEE3add
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_PN7WebCore13IdentifierRepEENS_18PairFirstExtractorISA_EENS_7StrHas
+__ZN7WebCoreL13identifierSetEv
+__ZN3WTF7HashSetIPN7WebCore13IdentifierRepENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore13IdentifierRepES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore13IdentifierRepES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore13IdentifierRepES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocat
+__ZN3WTF9HashTableIPN7WebCore13IdentifierRepES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15dealloc
+__NPN_Invoke
+__ZN3JSC8Bindings26identifierFromNPIdentifierEPKc
+__ZL22getListFromVariantArgsPN3JSC9ExecStateEPK10_NPVariantjPNS_8Bindings10RootObjectERNS_20MarkedArgumentBufferE
+__ZN3JSC8Bindings14findRootObjectEPNS_14JSGlobalObjectE
+__NPN_ReleaseVariantValue
+__Z35NPN_InitializeVariantWithStringCopyP10_NPVariantPK9_NPString
+__NPN_ReleaseObject
+__NPN_DeallocateObject
+__ZL12jsDeallocateP8NPObject
+__ZN3JSC8Bindings10RootObject11gcUnprotectEPNS_8JSObjectE
+__ZNK3WTF7HashMapIPN3JSC8JSObjectEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3getERKS3_
+__ZN7WebCore14jsDOMWindowTopEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow3topEv
+__ZN7WebCore26NetscapePlugInStreamLoader6createEPNS_5FrameEPNS_32NetscapePlugInStreamLoaderClientE
+__ZN7WebCore26NetscapePlugInStreamLoaderC1EPNS_5FrameEPNS_32NetscapePlugInStreamLoaderClientE
+__ZN7WebCore26NetscapePlugInStreamLoaderC2EPNS_5FrameEPNS_32NetscapePlugInStreamLoaderClientE
+__ZN7WebCore14ResourceLoader19setShouldBufferDataEb
+__ZN7WebCore14DocumentLoader21addPlugInStreamLoaderEPNS_14ResourceLoaderE
+__ZNK3WTF9HashTableIPN7WebCore16RenderPartObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E8cont
+__ZN3WTF9HashTableIPN7WebCore16RenderPartObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findI
+__ZN3WTF9HashTableIPN7WebCore16RenderPartObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47remo
+__ZN3WTF9HashTableIPN7WebCore16RenderPartObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6remov
+__ZN3WTF6VectorIPN7WebCore16RenderPartObjectELm0EE6shrinkEm
+__ZThn28_NK7WebCore8DOMTimer18hasPendingActivityEv
+__ZN7WebCore5TimerINS_13HTMLTokenizerEE5firedEv
+__ZN7WebCore13HTMLTokenizer10timerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore26NetscapePlugInStreamLoader18didReceiveResponseERKNS_16ResourceResponseE
+__ZN7WebCore26NetscapePlugInStreamLoader14didReceiveDataEPKcixb
+__ZN7WebCore26NetscapePlugInStreamLoader16didFinishLoadingEv
+__ZN7WebCore14DocumentLoader24removePlugInStreamLoaderEPNS_14ResourceLoaderE
+__ZN7WebCore26NetscapePlugInStreamLoader16releaseResourcesEv
+__ZN7WebCore26NetscapePlugInStreamLoaderD0Ev
+__ZN7WebCore18jsDOMWindowHistoryEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow7historyEPN3JSC9ExecStateE
+__ZNK7WebCore9DOMWindow7historyEv
+__ZN7WebCore7HistoryC1EPNS_5FrameE
+__ZN7WebCore7HistoryC2EPNS_5FrameE
+__ZN7WebCore9JSHistory15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore9JSHistoryC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7HistoryEEE
+__ZN7WebCore9JSHistoryC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7HistoryEEE
+__ZN7WebCore9JSHistory18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore9JSHistory24customGetOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore7History5frameEv
+__ZN7WebCore15jsHistoryLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7History6lengthEv
+__ZN7WebCore11FrameLoader16getHistoryLengthEv
+__ZN7WebCore11toUserSpaceERK7_NSRectP8NSWindow
+__ZN7WebCore18jsScreenColorDepthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Screen10colorDepthEv
+__ZN7WebCore22jsDocumentCharacterSetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsNavigatorCookieEnabledEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9Navigator13cookieEnabledEv
+__ZN7WebCore14cookiesEnabledEPKNS_8DocumentE
+__ZN7WebCoreL29createHTMLTitleElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLTitleElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLTitleElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLTitleElementEEE
+__ZN7WebCore18JSHTMLTitleElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLTitleElementEEE
+__ZN7WebCoreL29createHTMLParamElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLParamElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLParamElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLParamElementEEE
+__ZN7WebCore18JSHTMLParamElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLParamElementEEE
+__ZN7WebCoreL29createHTMLEmbedElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLEmbedElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLEmbedElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLEmbedElementEEE
+__ZN7WebCore18JSHTMLEmbedElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLEmbedElementEEE
+__ZN7WebCore19JSHTMLScriptElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18JSHTMLTitleElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore15JSHTMLBRElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16ScriptController29createScriptInstanceForWidgetEPNS_6WidgetE
+__ZN7WebCore16ScriptController16createRootObjectEPv
+__ZN3WTF7HashMapIPvNS_6RefPtrIN3JSC8Bindings10RootObjectEEENS_7PtrHashIS1_EENS_10HashTraitsIS1_EENS9_IS6_EEE3setERKS1_RKS6_
+__ZN3JSC8Bindings9CInstanceC1EP8NPObjectN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZN3JSC8Bindings9CInstanceC2EP8NPObjectN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZN3JSC8Bindings8InstanceC2EN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZNK3JSC8Bindings8Instance10rootObjectEv
+__ZN3JSC8Bindings8Instance19createRuntimeObjectEPNS_9ExecStateE
+__ZN3JSC16RuntimeObjectImpC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_8Bindings8InstanceEEE
+__ZN3JSC16RuntimeObjectImpC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_8Bindings8InstanceEEE
+__ZN3JSC8Bindings10RootObject16addRuntimeObjectEPNS_16RuntimeObjectImpE
+__ZN3WTF7HashSetIPN3JSC16RuntimeObjectImpENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN3JSC16RuntimeObjectImpES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN3JSC16RuntimeObjectImpES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN3JSC16RuntimeObjectImpES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocate
+__ZN3JSC16RuntimeObjectImp18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC8Bindings8Instance5beginEv
+__ZN3JSC8Bindings8Instance12virtualBeginEv
+__ZNK3JSC8Bindings9CInstance8getClassEv
+__ZN3JSC8Bindings6CClass11classForIsAEP7NPClass
+__ZNK3WTF7HashMapIP7NPClassPN3JSC8Bindings6CClassENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS9_IS6_EEE3getERKS2_
+__ZN3JSC8Bindings6CClassC1EP7NPClass
+__ZN3JSC8Bindings6CClassC2EP7NPClass
+__ZN3WTF7HashMapIP7NPClassPN3JSC8Bindings6CClassENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS9_IS6_EEE3setERKS2_RKS6_
+__ZN3WTF9HashTableIP7NPClassSt4pairIS2_PN3JSC8Bindings6CClassEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS2_EENS_14PairHashTrait
+__ZNK3JSC8Bindings6CClass10fieldNamedERKNS_10IdentifierEPNS0_8InstanceE
+__ZNK3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEPNS2_8Bindings5FieldENS_7StrHashIS5_EENS_10HashTraitsIS5_EENSB_IS8_EEE3getEPS4
+__ZNK3JSC8Bindings6CClass12methodsNamedERKNS_10IdentifierEPNS0_8InstanceE
+__ZNK3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEPNS2_8Bindings6MethodENS_7StrHashIS5_EENS_10HashTraitsIS5_EENSB_IS8_EEE3getEPS
+__NPN_UTF8FromIdentifier
+__ZN3JSC8Bindings5Class14fallbackObjectEPNS_9ExecStateEPNS0_8InstanceERKNS_10IdentifierE
+__ZN3JSC8Bindings8Instance3endEv
+__ZN3JSC8Bindings8Instance10virtualEndEv
+__ZN3JSC8Bindings8Instance18getOwnPropertySlotEPNS_8JSObjectEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN7WebCore18JSHTMLParamElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18JSHTMLEmbedElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18JSHTMLEmbedElement18canGetItemsForNameEPN3JSC9ExecStateEPNS_16HTMLEmbedElementERKNS1_10IdentifierE
+__ZN7WebCore18JSHTMLEmbedElement24customGetOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16HTMLEmbedElement25renderWidgetForJSBindingsEv
+__ZN7WebCore13jsEventTargetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11jsEventTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12AtomicStringcvN3JSC7UStringEEv
+__ZN7WebCore8FormDataD1Ev
+__ZN7WebCore8FormDataD2Ev
+__ZN3WTF6VectorIN7WebCore15FormDataElementELm0EE6shrinkEm
+__ZN7WebCore21JSMouseEventPrototypeD1Ev
+__ZN7WebCore18JSUIEventPrototypeD1Ev
+__ZN7WebCore12CachedScriptD0Ev
+__ZN7WebCore17JSHTMLLinkElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore24setJSHTMLLinkElementHrefEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLLinkElement7setHrefERKNS_6StringE
+__ZThn4_N7WebCore7CommentD0Ev
+__ZN7WebCore10ScrollView4hideEv
+__ZN7WebCore6Widget4hideEv
+__ZThn4_N7WebCore16DocumentFragmentD0Ev
+__ZN7WebCore11RenderLayer20setHasVisibleContentEb
+__ZN7WebCore24setJSHTMLDocumentBgColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore12HTMLDocument10setBgColorERKNS_6StringE
__ZN7WebCore15HTMLBodyElement10setBgColorERKNS_6StringE
+__ZN7WebCore24setJSHTMLDocumentFgColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore12HTMLDocument10setFgColorERKNS_6StringE
__ZN7WebCore15HTMLBodyElement7setTextERKNS_6StringE
+__ZN7WebCore26setJSHTMLDocumentLinkColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore12HTMLDocument12setLinkColorERKNS_6StringE
__ZNK7WebCore15HTMLBodyElement4linkEv
__ZN7WebCore15HTMLBodyElement7setLinkERKNS_6StringE
+__ZN7WebCore27setJSHTMLDocumentVlinkColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore12HTMLDocument13setVlinkColorERKNS_6StringE
__ZNK7WebCore15HTMLBodyElement5vLinkEv
__ZN7WebCore15HTMLBodyElement8setVLinkERKNS_6StringE
-__ZN7WebCore16HTMLFrameElementD1Ev
-__ZN7WebCore8Document18determineParseModeERKNS_6StringE
-__ZN7WebCore28processingInstructionHandlerEPvPKhS2_
-__ZN7WebCore12XMLTokenizer21processingInstructionEPKhS2_
-__ZN7WebCore8Document27createProcessingInstructionERKNS_6StringES3_Ri
-__ZN7WebCore21ProcessingInstructionC2EPNS_8DocumentERKNS_6StringES5_
-__ZN7WebCore21ProcessingInstruction15checkStyleSheetEv
-__ZN7WebCore15parseAttributesERKNS_6StringERb
-__ZN7WebCore31attributesStartElementNsHandlerEPvPKhS2_S2_iPS2_iiS3_
-__ZNK3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_iENS_18PairFirstExtractorIS5_EENS1_15CaseFoldingHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSA_IiEEEESB_E4findIS3_NS_22IdentityHashTranslatorIS3_S5_S8_EEEENS_22HashTableConstIteratorIS3_S5_S7_S8_SD_SB_EERKT_
-__ZN7WebCore7Element14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZNK7WebCore8Document10readyStateEv
-__ZN3KJS19jsStringOrUndefinedERKN7WebCore6StringE
-__ZThn52_N7WebCore21ProcessingInstruction16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
-__ZN7WebCore21ProcessingInstruction16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
-__ZN7WebCore21ProcessingInstruction15parseStyleSheetERKNS_6StringE
-__ZN7WebCore21ProcessingInstruction11sheetLoadedEv
-__ZNK7WebCore21ProcessingInstruction9isLoadingEv
-__ZNK7WebCore21ProcessingInstruction8nodeTypeEv
-__ZN7WebCore9Tokenizer35executeScriptsWaitingForStylesheetsEv
-__ZN7WebCore21ProcessingInstructionD1Ev
-__ZN7WebCore7Element9setPrefixERKNS_12AtomicStringERi
-__ZN7WebCore4Node14checkSetPrefixERKNS_12AtomicStringERi
-__ZN7WebCore13QualifiedName9setPrefixERKNS_12AtomicStringE
-__ZNK7WebCore21ProcessingInstruction18offsetInCharactersEv
-__ZNK7WebCore21ProcessingInstruction18maxCharacterOffsetEv
-__ZN3WTF6VectorISt4pairIPtjELm0EE14expandCapacityEm
-__ZN3WTF6VectorISt4pairIPtjELm0EE15reserveCapacityEm
-__ZN3WTF6VectorISt4pairIPtjELm0EE6shrinkEm
-__ZNK7WebCore7Element5titleEv
-__ZN3WTFeqIN7WebCore15FormDataElementELm0EEEbRKNS_6VectorIT_XT0_EEES7_
-__ZN3WTFeqIcLm0EEEbRKNS_6VectorIT_XT0_EEES5_
-__ZN7WebCore11asFileInputEPNS_4NodeE
-__ZN7WebCore14DragController13dragOperationEPNS_8DragDataE
-__ZNK7WebCore8DragData11containsURLEv
-__ZNK7WebCore8DragData5asURLEPNS_6StringE
-__ZNK3KJS7JSValue8toStringEPNS_9ExecStateE
-__ZN7WebCore10JSLocation18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore4KURL5queryEv
-__ZNK7WebCore16DeprecatedStringcvN3KJS7UStringEEv
-__ZN3KJS17staticValueGetterIN7WebCore10JSLocationEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore10JSLocation16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore16createPreWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore16JSHTMLPreElementC1EPN3KJS8JSObjectEPNS_14HTMLPreElementE
-__ZN7WebCore16JSHTMLPreElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore16JSHTMLPreElement9classInfoEv
-__ZN7WebCore12IconDatabase14removeAllIconsEv
-__ZN7WebCore12IconDatabase22removeAllIconsOnThreadEv
-__ZN7WebCore12IconDatabase27deleteAllPreparedStatementsEv
-__ZN7WebCore14SQLiteDatabase14clearAllTablesEv
-__ZN7WebCore15SQLiteStatement17returnTextResultsEiRN3WTF6VectorINS_6StringELm0EEE
-__ZN7WebCore14SQLiteDatabase9lastErrorEv
-_sqlite3_errcode
-_sqlite3DropTable
-_sqlite3NestedParse
-_sqlite3BtreeDropTable
-_clearDatabasePage
-_sqliteResetColumnNames
-_balance_shallower
-__ZN7WebCore14SQLiteDatabase16runVacuumCommandEv
-_sqlite3RunVacuum
-_execSql
-_codeAttach
-_attachFunc
-_sqlite3UnixTempFileName
-_sqlite3FindDb
-_execExecSql
-_sqlite3VtabOverloadFunction
-_likeFunc
-_patternCompare
-_sqlite3PagerTruncate
-_unixTruncate
-_sqlite3SchemaFree
-_sqlite3ResetInternalSchema
-__ZN7WebCore20createDatabaseTablesERNS_14SQLiteDatabaseE
-_sqlite3OpenMasterTable
-_sqlite3RefillIndex
-__ZNK7WebCore12IconDatabase12databasePathEv
-__ZN7WebCore12IconDatabase11setImportedEb
-__ZN7WebCore9CSSParser31createFloatingMediaQueryExpListEv
-__ZN7WebCore9CSSParser29sinkFloatingMediaQueryExpListEPN3WTF6VectorIPNS_13MediaQueryExpELm0EEE
-__ZN7WebCore9CSSParser24createFloatingMediaQueryENS_10MediaQuery10RestrictorERKNS_6StringEPN3WTF6VectorIPNS_13MediaQueryExpELm0EEE
-__ZN7WebCore10MediaQueryC2ENS0_10RestrictorERKNS_6StringEPN3WTF6VectorIPNS_13MediaQueryExpELm0EEE
-__ZN7WebCore9CSSParser15createMediaListEv
-__ZN7WebCore9CSSParser22sinkFloatingMediaQueryEPNS_10MediaQueryE
-__ZN7WebCore9MediaList16appendMediaQueryEPNS_10MediaQueryE
-__ZN3WTF6VectorIPN7WebCore10MediaQueryELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore10MediaQueryELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore10MediaQueryELm0EE15reserveCapacityEm
-__ZN7WebCore9CSSParser16createImportRuleERKNS_11ParseStringEPNS_9MediaListE
-__ZN7WebCore13CSSImportRuleC2EPNS_9StyleBaseERKNS_6StringEPNS_9MediaListE
-__ZN7WebCore13CSSImportRule18insertedIntoParentEv
-__ZN7WebCore13CSSStyleSheet9docLoaderEv
-__ZNK7WebCore7CSSRule16parentStyleSheetEv
-__ZN7WebCore9StyleBase7baseURLEv
-__ZN7WebCore13CSSImportRule12isImportRuleEv
-__ZNK7WebCore13CSSImportRule9isLoadingEv
-__ZN7WebCore19CachedCSSStyleSheet5errorEv
-__ZThn16_N7WebCore13CSSImportRule16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
-__ZN7WebCore13CSSImportRule16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
-__ZN7WebCore13CSSStyleSheetC2EPNS_7CSSRuleERKNS_6StringES5_
-__ZN7WebCore10StyleSheetC2EPNS_9StyleBaseERKNS_6StringE
-__ZN7WebCore9StyleBase11checkLoadedEv
-__ZN7WebCore9StyleBase11isStyleRuleEv
-__ZNK7WebCore19MediaQueryEvaluator14mediaTypeMatchERKNS_6StringE
-__ZN7WebCore15applyRestrictorENS_10MediaQuery10RestrictorEb
-__ZN3WTF6VectorIPN7WebCore10MediaQueryELm0EE6shrinkEm
-__ZN7WebCore18createImageWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore27JSHTMLImageElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSHTMLImageElementC1EPN3KJS8JSObjectEPNS_16HTMLImageElementE
-__ZNK7WebCore13HTMLLIElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore13HTMLLIElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore4KURLC2ERKS0_RKNS_16DeprecatedStringE
-__ZN7WebCore16CSSStyleSelector19mapBackgroundRepeatEPNS_15BackgroundLayerEPNS_8CSSValueE
-__ZN7WebCore16CSSStyleSelector22mapBackgroundXPositionEPNS_15BackgroundLayerEPNS_8CSSValueE
-__ZN7WebCore16CSSStyleSelector22mapBackgroundYPositionEPNS_15BackgroundLayerEPNS_8CSSValueE
-__ZNK7WebCore10JSDocument8locationEPN3KJS9ExecStateE
-__ZNK7WebCore6Screen5widthEv
-__ZN7WebCore11screenDepthEPNS_6WidgetE
-__ZN3KJS29navigatorProtoFuncJavaEnabledEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS9Navigator9classInfoEv
-__ZN3KJS10PluginBaseC2EPNS_9ExecStateE
-__ZN3KJS10PluginBase26cachePluginDataIfNecessaryEv
-__ZNK7WebCore15PluginInfoStore11pluginCountEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_14HTMLCollectionE
-__ZN7WebCore25JSHTMLCollectionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSHTMLCollectionC1EPN3KJS8JSObjectEPNS_14HTMLCollectionE
-__ZN7WebCore17createBodyWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore26JSHTMLBodyElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSHTMLBodyElementC1EPN3KJS8JSObjectEPNS_15HTMLBodyElementE
-__ZN7WebCore17JSHTMLBodyElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore29jsEventTargetAddEventListenerEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore39retrieveEventTargetAndCorrespondingNodeEPN3KJS9ExecStateEPNS0_8JSObjectERPNS_4NodeERPNS_11EventTargetE
-__ZNK7WebCore17JSHTMLBodyElement9classInfoEv
-__ZNK3KJS7JSValue9toBooleanEPNS_9ExecStateE
-__ZThn36_N7WebCore15EventTargetNode16addEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
-__ZN7WebCoreeqERKNS_23RegisteredEventListenerES2_
-__ZN7WebCore8Document6imagesEv
-__ZN7WebCore16JSHTMLCollection18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25JSHTMLCollectionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore16JSHTMLCollection18canGetItemsForNameEPN3KJS9ExecStateEPNS_14HTMLCollectionERKNS1_10IdentifierE
-__ZN7WebCore13getNamedItemsEPN3KJS9ExecStateEPNS_14HTMLCollectionERKNS0_10IdentifierE
-__ZNK7WebCore14HTMLCollection15updateNameCacheEv
-__ZN7WebCore16JSHTMLCollection10nameGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZNK3KJS6Window11getListenerEPNS_9ExecStateERKN7WebCore12AtomicStringE
-__ZN7WebCore8Document26getHTMLWindowEventListenerERKNS_12AtomicStringE
-__ZN3KJS6Window11setListenerEPNS_9ExecStateERKN7WebCore12AtomicStringEPNS_7JSValueE
-__ZNK7WebCore6Screen10pixelDepthEv
-__ZNK7WebCore9DOMWindow10innerWidthEv
-__ZNK7WebCore9DOMWindow11innerHeightEv
-__ZNK7WebCore8Document21getElementByAccessKeyERKNS_6StringE
-__ZN3WTF7HashMapIPN7WebCore10StringImplEPNS1_7ElementENS1_15CaseFoldingHashENS_10HashTraitsIS3_EENS7_IS5_EEE3setERKS3_RKS5_
-_WebCoreTextFloatWidth
-__ZN7WebCore16labelConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLLabelElementC2EPNS_8DocumentE
-__ZNK7WebCore16HTMLLabelElement11tagPriorityEv
-__ZN7WebCore13RenderListBoxC2EPNS_17HTMLSelectElementE
-__ZN7WebCore13RenderListBox8setStyleEPNS_11RenderStyleE
-__ZNK7WebCore13RenderListBox15canHaveChildrenEv
-__ZN7WebCore13RenderListBox17updateFromElementEv
-__ZNK7WebCore13RenderListBox8numItemsEv
-__ZN7WebCore13RenderListBox14calcPrefWidthsEv
-__ZN7WebCore13RenderListBox6layoutEv
-__ZNK7WebCore13RenderListBox22verticalScrollbarWidthEv
-__ZN7WebCore13RenderListBox10calcHeightEv
-__ZNK7WebCore13RenderListBox10itemHeightEv
-__ZNK7WebCore13RenderListBox4sizeEv
-__ZNK7WebCore13RenderListBox15numVisibleItemsEv
-__ZNK7WebCore13RenderListBox14hasControlClipEv
-__ZNK7WebCore13RenderListBox16baselinePositionEbb
-__ZN7WebCore13RenderListBox11paintObjectERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore13RenderListBox14paintScrollbarERNS_12RenderObject9PaintInfoE
-__ZNK7WebCore13RenderListBox15controlClipRectEii
-__ZN7WebCore13RenderListBox19paintItemBackgroundERNS_12RenderObject9PaintInfoEiii
-__ZN7WebCore13RenderListBox19itemBoundingBoxRectEiii
-__ZN7WebCore13RenderListBox19paintItemForegroundERNS_12RenderObject9PaintInfoEiii
-__ZN7WebCore15GraphicsContext12drawBidiTextERKNS_7TextRunERKNS_8IntPointE
-__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE21createBidiRunsForLineERKS1_S5_bb
-__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE9appendRunEv
-__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE10deleteRunsEv
-__ZN7WebCore9CSSParser15parseMediaQueryEPNS_9MediaListERKNS_6StringE
-__ZN7WebCore30JSHTMLTextAreaElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore32JSHTMLTextAreaElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore20HTMLFrameElementBase4nameEv
-__ZN7WebCore17JSHTMLHtmlElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore43jsDocumentPrototypeFunctionQuerySelectorAllEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4Node16querySelectorAllERKNS_6StringERi
-__ZN7WebCore9CSSParser9parseRuleEPNS_13CSSStyleSheetERKNS_6StringE
-__ZN7WebCore16SelectorNodeListC1EN3WTF10PassRefPtrINS_4NodeEEEPNS_11CSSSelectorE
-__ZN7WebCore13CSSStyleSheetD0Ev
-__ZNK7WebCore14StaticNodeList6lengthEv
-__ZN7WebCore5XPath10isAxisNameERKNS_6StringERNS0_4Step4AxisE
-__ZN7WebCore5XPath17setUpAxisNamesMapERN3WTF7HashMapINS_6StringENS0_4Step4AxisENS_10StringHashENS1_10HashTraitsIS3_EENS7_IS5_EEEE
-__ZN3WTF7HashMapIN7WebCore6StringENS1_5XPath4Step4AxisENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3setERKS2_RKS5_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_5XPath4Step4AxisEENS_18PairFirstExtractorIS8_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSD_IS7_EEEESE_E3addINS1_6StringES7_NS_17HashMapTranslatorILb0ES4_ISJ_S7_ENS_18PairBaseHashTraitsINSD_ISJ_EESF_EESG_SB_EEEES4_INS_17HashTableIteratorIS3_S8_SA_SB_SG_SE_EEbERKT_RKT0_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_5XPath4Step4AxisEENS_18PairFirstExtractorIS8_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSD_IS7_EEEESE_E6expandEv
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_5XPath4Step4AxisEENS_18PairFirstExtractorIS8_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSD_IS7_EEEESE_E4findIS3_NS_22IdentityHashTranslatorIS3_S8_SB_EEEENS_17HashTableIteratorIS3_S8_SA_SB_SG_SE_EERKT_
-__ZN7WebCore5XPath12createFunNotEv
-__ZNK7WebCore5XPath6FunNot8evaluateEv
-__ZNK7WebCore5XPath4Step15primaryNodeTypeENS1_4AxisE
-__ZN7WebCore5XPath6FunNotD1Ev
-__ZN7WebCore5XPath14createFunCountEv
-__ZN7WebCore5XPath6Parser9lexNumberEv
-__ZN7WebCore5XPath6NumberC1Ed
-__ZN7WebCore5XPath9NumericOpC1ENS1_6OpcodeEPNS0_10ExpressionES4_
-__ZNK7WebCore5XPath9NumericOp8evaluateEv
-__ZNK7WebCore5XPath8FunCount8evaluateEv
-__ZNK7WebCore5XPath6Number8evaluateEv
-__ZNK7WebCore5XPath5Value8toNumberEv
-__ZN7WebCore5XPath8FunCountD1Ev
-__ZN7WebCore8parseNthERKNS_6StringERiS3_
-__ZN7WebCore8matchNthEiii
-__ZN7WebCore11HTMLElement8childrenEv
-__ZN7WebCore5XPath17createFunPositionEv
-__ZNK7WebCore5XPath11FunPosition8evaluateEv
-__ZN7WebCore5XPath11FunPositionD1Ev
-__ZN7WebCore5XPath19createFunStartsWithEv
-__ZNK7WebCore5XPath13FunStartsWith8evaluateEv
-__ZN7WebCore5XPath13FunStartsWithD1Ev
-__ZN7WebCore5XPath21createFunStringLengthEv
-__ZN7WebCore5XPath18createFunSubstringEv
-__ZNK7WebCore5XPath12FunSubstring8evaluateEv
-__ZNK7WebCore5XPath15FunStringLength8evaluateEv
-__ZN7WebCore5XPath8FunRound5roundEd
-__ZN7WebCore5XPath12FunSubstringD1Ev
-__ZN7WebCore5XPath15FunStringLengthD1Ev
-__ZN7WebCore11FrameLoader21setCurrentHistoryItemEN3WTF10PassRefPtrINS_11HistoryItemEEE
-__ZN7WebCore11RenderStyle14getPseudoStyleENS0_8PseudoIdE
-__ZN7WebCore16CSSStyleSelector21pseudoStyleForElementENS_11RenderStyle8PseudoIdEPNS_7ElementEPS1_
-__ZN7WebCore11RenderStyle14addPseudoStyleEPS0_
-__ZN3WTF23HashTableRefCounterBaseILb1ENS_9HashTableIPN7WebCore10StringImplESt4pairIS4_NS2_5XPath4Step4AxisEENS_18PairFirstExtractorIS9_EENS2_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS4_EENSE_IS8_EEEESF_EENS_18PairBaseHashTraitsINSE_INS2_6StringEEESG_EEE8derefAllERSI_
-__ZN7WebCore9CSSParser14createRuleListEv
-__ZN7WebCore11CSSRuleListC2Ev
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSRuleListEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSRuleListEEELm0EE15reserveCapacityEm
-__ZN7WebCore11CSSRuleList6appendEPNS_7CSSRuleE
-__ZN7WebCore11CSSRuleList10insertRuleEPNS_7CSSRuleEj
-__ZN7WebCore9CSSParser15createMediaRuleEPNS_9MediaListEPNS_11CSSRuleListE
-__ZN7WebCore12CSSMediaRuleC2EPNS_9StyleBaseEPNS_9MediaListEPNS_11CSSRuleListE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSRuleListEEELm0EE6shrinkEm
-__ZN7WebCore12CSSMediaRule11isMediaRuleEv
-__ZNK7WebCore14RenderThemeMac22adjustSearchFieldStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZNK7WebCore14RenderThemeMac18setSearchFieldSizeEPNS_11RenderStyleE
-__ZNK7WebCore14RenderThemeMac16searchFieldSizesEv
-__ZN7WebCore25HTMLTextFieldInnerElementC2EPNS_8DocumentEPNS_4NodeE
-__ZN7WebCore17RenderTextControl21createInnerBlockStyleEPNS_11RenderStyleE
-__ZN7WebCore35HTMLSearchFieldResultsButtonElementC2EPNS_8DocumentE
-__ZN7WebCore17RenderTextControl24createResultsButtonStyleEPNS_11RenderStyleE
-__ZNK7WebCore14RenderThemeMac32adjustSearchFieldDecorationStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZNK7WebCore14RenderThemeMac18resultsButtonSizesEv
-__ZN7WebCore34HTMLSearchFieldCancelButtonElementC2EPNS_8DocumentE
-__ZN7WebCore17RenderTextControl23createCancelButtonStyleEPNS_11RenderStyleE
-__ZNK7WebCore14RenderThemeMac34adjustSearchFieldCancelButtonStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZNK7WebCore14RenderThemeMac17cancelButtonSizesEv
-__ZN7WebCore11RenderStyleC2ERKS0_
-__ZN7WebCore17RenderTextControl28updateCancelButtonVisibilityEPNS_11RenderStyleE
-__ZN7WebCore21ContextMenuController16clearContextMenuEv
-__ZN7WebCore12EventHandler20sendContextMenuEventERKNS_18PlatformMouseEventE
-__ZN7WebCore21ContextMenuController22handleContextMenuEventEPNS_5EventE
-__ZN7WebCore11ContextMenuC2ERKNS_13HitTestResultE
-+[WebCoreMenuTarget sharedMenuTarget]
-__ZNK7WebCore11ContextMenu10controllerEv
--[WebCoreMenuTarget setMenuController:]
-__ZN7WebCore11ContextMenu8populateEv
-__ZN7WebCore26contextMenuItemTagOpenLinkEv
-__ZN7WebCore15ContextMenuItemC2ENS_19ContextMenuItemTypeENS_17ContextMenuActionERKNS_6StringEPNS_11ContextMenuE
-__ZN7WebCore37contextMenuItemTagOpenLinkInNewWindowEv
-__ZN7WebCore36contextMenuItemTagDownloadLinkToDiskEv
-__ZN7WebCore37contextMenuItemTagCopyLinkToClipboardEv
-__ZN7WebCore38contextMenuItemTagOpenImageInNewWindowEv
-__ZN7WebCore37contextMenuItemTagDownloadImageToDiskEv
-__ZN7WebCore38contextMenuItemTagCopyImageToClipboardEv
-__ZN7WebCore35contextMenuItemTagSearchInSpotlightEv
-__ZN7WebCore36contextMenuItemTagLookUpInDictionaryEv
-__ZN7WebCore27contextMenuItemTagSearchWebEv
-__ZN7WebCore22contextMenuItemTagCopyEv
-__ZN7WebCore24contextMenuItemTagGoBackEv
-__ZN7WebCore27contextMenuItemTagGoForwardEv
-__ZN7WebCore22contextMenuItemTagStopEv
-__ZN7WebCore24contextMenuItemTagReloadEv
-__ZN7WebCore38contextMenuItemTagOpenFrameInNewWindowEv
-__ZN7WebCore32contextMenuItemTagNoGuessesFoundEv
-__ZN7WebCore32contextMenuItemTagIgnoreSpellingEv
-__ZN7WebCore31contextMenuItemTagLearnSpellingEv
-__ZN7WebCore31contextMenuItemTagIgnoreGrammarEv
-__ZN7WebCore21contextMenuItemTagCutEv
-__ZN7WebCore23contextMenuItemTagPasteEv
-__ZNK7WebCore13HitTestResult17isContentEditableEv
-__ZN7WebCore11FrameLoader16canHandleRequestERKNS_15ResourceRequestE
-__ZN7WebCore11ContextMenu10appendItemERNS_15ContextMenuItemE
-__ZNK7WebCore11ContextMenu21checkOrEnableIfNeededERNS_15ContextMenuItemE
-__ZNK7WebCore15ContextMenuItem4typeEv
-__ZNK7WebCore15ContextMenuItem6actionEv
-__ZN7WebCore15ContextMenuItem10setCheckedEb
-__ZN7WebCore15ContextMenuItem10setEnabledEb
-__ZN7WebCore15ContextMenuItem26releasePlatformDescriptionEv
-__ZN7WebCore17setMenuItemTargetEP10NSMenuItem
-__ZN7WebCore13separatorItemEv
-__ZN7WebCore15ContextMenuItemD2Ev
-__ZNK7WebCore11ContextMenu19platformDescriptionEv
-__ZN7WebCore11ContextMenu22setPlatformDescriptionEP14NSMutableArray
--[WebCoreAXObject accessibilityAttributeNames]
--[WebCoreAXObject isPasswordField]
-__Z22isPasswordFieldElementPN7WebCore4NodeE
--[WebCoreAXObject accessibilityAttributeValue:]
--[WebCoreAXObject isTextControl]
--[WebCoreAXObject accessibilityShouldUseUniqueId]
--[WebCoreMenuTarget validateMenuItem:]
-__ZN7WebCore15ContextMenuItemC2EP10NSMenuItem
-__ZNK7WebCore15ContextMenuItem7enabledEv
-__ZN7WebCore11ContextMenuD2Ev
-__ZNK7WebCore13HitTestResult18titleDisplayStringEv
-__ZNK7WebCore13HitTestResult11textContentEv
-__ZN7WebCore11FrameLoader29generatedMIMETypeForURLSchemeERKNS_6StringE
--[WebCoreFrameBridge selectionGranularity]
-__ZN7WebCore15BackForwardList12containsItemEPNS_11HistoryItemE
-__ZN7WebCore15HTMLFormElement7setNameERKNS_6StringE
-__ZN7WebCore15HTMLFormElement9setMethodERKNS_6StringE
-__ZN7WebCore15HTMLFormElement9setTargetERKNS_6StringE
-__ZN7WebCore14JSNamedNodeMap18canGetItemsForNameEPN3KJS9ExecStateEPNS_12NamedNodeMapERKNS1_10IdentifierE
-__ZN7WebCore14JSNamedNodeMap10nameGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore11FrameLoader17stopForUserCancelEb
--[DOMElement(WebPrivate) isFocused]
-__ZN7WebCore14RenderThemeMac28paintSearchFieldCancelButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore16HTMLInputElement15addSearchResultEv
-__ZN7WebCore27RenderTextControlSingleLine15addSearchResultEv
-__ZN7WebCore16HTMLInputElement8onSearchEv
-__ZN7WebCore17RenderTextControl20stopSearchEventTimerEv
-__ZN7WebCore13CharacterData12setNodeValueERKNS_6StringERi
-__ZNK7WebCore9FrameTree20traverseNextWithWrapEb
-__ZN7WebCore14DragController11performDragEPNS_8DragDataE
-__ZN7WebCore14DragController12concludeDragEPNS_8DragDataENS_21DragDestinationActionE
-__ZNK7WebCore8Document16elementFromPointEii
-__ZNK7WebCore8DragData13containsColorEv
-__ZN7WebCore5Frame23visiblePositionForPointERKNS_8IntPointE
-__ZN7WebCore14DragController10dragIsMoveEPNS_19SelectionControllerEPNS_8DragDataE
-__ZNK7WebCore5Frame14paintDragCaretEPNS_15GraphicsContextERKNS_7IntRectE
-_filenameByFixingIllegalCharacters
-__ZN7WebCore13ImageDocument17windowSizeChangedEv
-__ZNK7WebCore13ImageDocument17imageFitsInWindowEv
-__ZN7WebCore13ImageDocument16resizeImageToFitEv
-__ZNK7WebCore13ImageDocument5scaleEv
-__ZNK7WebCore13ImageDocument15isImageDocumentEv
-__ZN7WebCore12zoomInCursorEv
-__ZN7WebCore18ImageEventListener11handleEventEPNS_5EventEb
+__ZN7WebCore22jsDocumentLastModifiedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Document12lastModifiedEv
+__ZThn84_N7WebCore12RenderWidget20setOverlapTestResultEb
+__ZN7WebCore11RenderLayer25dirtyVisibleContentStatusEv
+__ZN7WebCore23jsHTMLInputElementValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn8_N7WebCore13HTMLBRElementD0Ev
+__ZN7WebCore11FrameLoader22updateHistoryForReloadEv
+__ZN7WebCoreL29createHTMLTableElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLTableElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLTableElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLTableElementEEE
+__ZN7WebCore18JSHTMLTableElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLTableElementEEE
+__ZN7WebCoreL33createHTMLTableCellElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore22JSHTMLTableCellElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSHTMLTableCellElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_20HTMLTableCellElementEEE
+__ZN7WebCore22JSHTMLTableCellElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_20HTMLTableCellElementEEE
+__ZN7WebCore44jsDOMWindowPrototypeFunctionGetComputedStyleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9toElementEN3JSC7JSValueE
+__ZNK7WebCore22JSHTMLTableCellElement9classInfoEv
+__ZN7WebCore21JSCSSStyleDeclaration18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore21JSCSSStyleDeclaration18canGetItemsForNameEPN3JSC9ExecStateEPNS_19CSSStyleDeclarationERKNS1_10IdentifierE
+__ZN7WebCore30JSCSSStyleDeclarationPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore54jsCSSStyleDeclarationPrototypeFunctionGetPropertyValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
+__ZNK7WebCore21JSCSSStyleDeclaration9classInfoEv
+__ZN7WebCoreL9sizingBoxEPNS_12RenderObjectE
+__ZN7WebCore22JSHTMLTableCellElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18JSHistoryPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore9JSHistory3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore9JSHistory9customPutEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore46jsElementPrototypeFunctionGetElementsByTagNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore21setJSHTMLElementTitleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11HTMLElement8setTitleERKNS_6StringE
+__ZN7WebCore20setJSNodeOnmousedownEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node14setOnmousedownEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore16setJSNodeOnclickEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node10setOnclickEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZNK7WebCore15JSEventListener18virtualisAttributeEv
+__ZNK7WebCore11RenderTable14recalcSectionsEv
+__ZN7WebCore18RenderTableSection11recalcCellsEv
+__ZNK7WebCore18RenderTableSection10numColumnsEv
+__ZN7WebCore22JSHTMLTableCellElementD1Ev
+__ZN7WebCore18JSHTMLTableElementD1Ev
+__ZN7WebCore12JSMouseEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore9JSUIEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore13jsNodeOnclickEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node7onclickEv
+__ZNK7WebCore4Node25getAttributeEventListenerERKNS_12AtomicStringE
+__ZN7WebCore7History15disconnectFrameEv
+__ZNK7WebCore11JSDOMWindow9classInfoEv
+__ZNK7WebCore16JSDOMWindowShell9classNameEv
+__ZN7WebCore17jsDOMWindowLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow6lengthEv
+__ZN7WebCoreL26createHTMLHRElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore15JSHTMLHRElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSHTMLHRElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13HTMLHRElementEEE
+__ZN7WebCore15JSHTMLHRElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13HTMLHRElementEEE
+__ZN7WebCore15JSHTMLHRElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore17jsNodeNextSiblingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsNodePrototypeFunctionInsertBeforeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore6JSNode12insertBeforeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore15JSHTMLLIElement9classInfoEv
+__ZN7WebCore9JSHistoryD1Ev
+__ZN7WebCore9JSHistoryD2Ev
+__ZN7WebCore15JSHTMLHRElementD1Ev
+__ZN7WebCore18JSHTMLStyleElementD1Ev
+__ZN7WebCore17JSHTMLLinkElementD1Ev
+__ZN7WebCore18JSHTMLTitleElementD1Ev
+__ZN7WebCore19jsNodeOwnerDocumentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsHTMLElementTitleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsHTMLAnchorElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLAnchorElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSHTMLAnchorElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22setJSCharacterDataDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11FrameLoader6reloadEb
+__ZN7WebCore11FrameLoader33restoreScrollPositionAndViewStateEv
+__ZNK7WebCore9FrameView17wasScrolledByUserEv
+__ZNK7WebCore11HistoryItem11scrollPointEv
+__ZN7WebCore25JSHTMLPreElementPrototypeD1Ev
+__ZThn8_N7WebCore14HTMLPreElementD0Ev
+__ZN7WebCore17HTMLSelectElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore17HTMLSelectElement27menuListDefaultEventHandlerEPNS_5EventE
+__ZN7WebCore21JSCSSStyleDeclaration10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN3WTF11ListHashSetIPN7WebCore9RenderBoxENS_7PtrHashIS3_EEE15unlinkAndDeleteEPNS_15ListHashSetNodeIS3_EE
+__ZN7WebCore21DeprecatedPtrListImpl9removeRefEPKvb
+__ZN7WebCore12RenderObject24repaintOverhangingFloatsEb
+__ZNK7WebCore16JSEventPrototype9classInfoEv
+__ZN7WebCore18jsEventReturnValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16jsEventTimeStampEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN3WTF12bitwise_castIldEET_T0_
+__ZN7WebCore17jsEventEventPhaseEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17jsEventSrcElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsEventClipboardDataEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7JSEvent13clipboardDataEPN3JSC9ExecStateE
+__ZNK7WebCore5Event16isClipboardEventEv
+__ZN7WebCore17jsEventCancelableEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9DOMWindow11toDOMWindowEv
+__ZN7WebCore14jsEventBubblesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsEventCancelBubbleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15jsEventMOUSEOUTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12jsEventFOCUSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13jsEventCHANGEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16jsEventMOUSEMOVEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16jsEventAT_TARGETEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13jsEventSELECTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11jsEventBLUREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12jsEventKEYUPEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16jsEventMOUSEDOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16jsEventMOUSEDRAGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsEventBUBBLING_PHASEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14jsEventMOUSEUPEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsEventCAPTURING_PHASEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16jsEventMOUSEOVEREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12jsEventCLICKEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15jsEventDBLCLICKEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14jsEventKEYDOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15jsEventKEYPRESSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15jsEventDRAGDROPEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore47jsDOMWindowPrototypeFunctionRemoveEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11JSDOMWindow19removeEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCoreL26removePendingEventListenerERN3WTF7HashMapIPNS_9DOMWindowEPNS0_6VectorINS0_6RefPtrINS_23RegisteredEventListenerEE
+__ZNK3WTF6VectorINS_6RefPtrIN7WebCore23RegisteredEventListenerEEELm0EE4findIPS3_EEmRKT_
+__ZN7WebCore17JSHTMLHtmlElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore17JSHTMLHeadElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore17JSHTMLMetaElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore18JSHTMLTitleElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore15JSHTMLBRElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore22jsHTMLUListElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLUListElement4typeEv
+__ZN7WebCore27jsHTMLDivElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSHTMLDivElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSHTMLDivElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN7WebCore20HTMLFrameElementBase13canLazyAttachEv
+__ZN7WebCore27JSHTMLUListElementPrototypeD1Ev
+__ZN7WebCore24JSHTMLBRElementPrototypeD1Ev
+__ZN7WebCore28JSHTMLScriptElementPrototypeD1Ev
+__ZN7WebCore26JSHTMLLinkElementPrototypeD1Ev
+__ZN7WebCore27JSHTMLTitleElementPrototypeD1Ev
+__ZN7WebCore26JSHTMLMetaElementPrototypeD1Ev
+__ZN7WebCore26JSHTMLHeadElementPrototypeD1Ev
+__ZN7WebCore26JSHTMLHtmlElementPrototypeD1Ev
+__ZThn8_N7WebCore18HTMLHeadingElementD0Ev
+__ZN7WebCore25JSHTMLDocumentConstructorD1Ev
+__ZThn8_N7WebCore13HTMLLIElementD0Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm10EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm10EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm10EE15reserveCapacityEm
+__ZNK7WebCore16HTMLInputElement14isURLAttributeEPNS_9AttributeE
+__ZNK7WebCore20StringSourceProvider8getRangeEii
+__ZN7WebCore11CachedImage19httpStatusCodeErrorEv
+__ZNK7WebCore22HTMLFormControlElement16isMouseFocusableEv
+__ZNK7WebCore16HTMLInputElement17canStartSelectionEv
+__ZNK7WebCore12JSMouseEvent9classInfoEv
+__ZNK7WebCore21JSMouseEventPrototype9classInfoEv
+__ZNK7WebCore18JSUIEventPrototype9classInfoEv
+__ZN7WebCore20jsMouseEventShiftKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsMouseEventToElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore10MouseEvent9toElementEv
+__ZN7WebCore19jsMouseEventClientYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13jsMouseEventYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore17MouseRelatedEvent1yEv
-__ZN7WebCore13ImageDocument12imageClickedEii
-__ZN7WebCore13ImageDocument16restoreImageSizeEv
-__ZN7WebCore13zoomOutCursorEv
-__ZN7WebCore11HistoryItem12setViewStateEP11objc_object
-__ZNK7WebCore11HistoryItem9viewStateEv
-__ZNK7WebCore9FrameTree24traversePreviousWithWrapEb
-__ZNK7WebCore9FrameTree13deepLastChildEv
-__ZN7WebCore12CachedScript5errorEv
-__ZN7WebCore14scaleDragImageEN3WTF9RetainPtrI7NSImageEENS_9FloatSizeE
-__ZN7WebCore13HTMLTokenizer11parseEntityERNS_15SegmentedStringERPtNS0_5StateERjbb
-__ZN7WebCore15SegmentedString15advanceSlowCaseERi
-__ZN7WebCore15fontConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore15HTMLFontElementC2EPNS_8DocumentE
-__ZNK7WebCore15HTMLFontElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore15HTMLFontElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore15HTMLFontElement26cssValueFromFontSizeNumberERKNS_6StringERi
-__ZN7WebCore13StyledElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore18NamedMappedAttrMap19parseClassAttributeERKNS_6StringE
-__ZN7WebCore10ClassNames19parseClassAttributeERKNS_6StringEb
-__ZNK7WebCore6String8foldCaseEv
-__ZN7WebCore10StringImpl8foldCaseEv
-__ZNK7WebCore15HTMLFontElement17endTagRequirementEv
-__ZNK7WebCore15HTMLFontElement11tagPriorityEv
-__ZNK7WebCore13StyledElement13getClassNamesEv
-__ZN3WTF10RefCountedIN7WebCore10FontFamilyEE5derefEv
-__ZN7WebCore12RenderInlineC2EPNS_4NodeE
-__ZN7WebCore12RenderInline8setStyleEPNS_11RenderStyleE
-__ZN7WebCore12RenderInline13requiresLayerEv
-__ZNK7WebCore12RenderInline12isInlineFlowEv
-__ZN7WebCore4Text14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore10RenderTextC2EPNS_4NodeEN3WTF10PassRefPtrINS_10StringImplEEE
-__ZN7WebCore12RenderInline14addChildToFlowEPNS_12RenderObjectES2_
-__ZNK7WebCore12RenderInline14childrenInlineEv
-__ZN7WebCore10HTMLParser27nestedStyleCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore10HTMLParser23allowNestedRedundantTagERKNS_12AtomicStringE
-__ZN7WebCore17anchorConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLAnchorElementC2EPNS_8DocumentE
-__ZN7WebCore17HTMLAnchorElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore17HTMLAnchorElement17endTagRequirementEv
-__ZNK7WebCore17HTMLAnchorElement11tagPriorityEv
-__ZN7WebCore16checkPseudoStateEPNS_7ElementEb
-__ZN7WebCore16DeprecatedString7prependERKS0_
-__ZN7WebCore15historyContainsEPKtj
-+[WebCoreHistory historyProvider]
-__ZN7WebCore15StyleVisualDataC2ERKS0_
-__ZN7WebCore11RenderStyle15clearCursorListEv
-__ZN7WebCore10HTMLParser20formCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore15HTMLFormElementC2EPNS_8DocumentE
-__ZN7WebCore15HTMLFormElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore15HTMLFormElement17endTagRequirementEv
-__ZNK7WebCore15HTMLFormElement11tagPriorityEv
-__ZN7WebCore15HTMLFormElement20insertedIntoDocumentEv
-__ZN7WebCore15HTMLFormElement6attachEv
-__ZN7WebCore22CSSQuirkPrimitiveValue12isQuirkValueEv
-__ZN7WebCore16inputConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLInputElementC2EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore31HTMLFormControlElementWithStateC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore22HTMLGenericFormElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore15HTMLFormElement19registerFormElementEPNS_22HTMLGenericFormElementE
-__ZN7WebCore15HTMLFormElement19CheckedRadioButtons12removeButtonEPNS_22HTMLGenericFormElementE
-__ZNK7WebCore22HTMLGenericFormElement4nameEv
-__ZN7WebCore15HTMLFormElement19CheckedRadioButtons9addButtonEPNS_22HTMLGenericFormElementE
-__ZNK7WebCore22HTMLGenericFormElement13isRadioButtonEv
-__ZN7WebCore15HTMLFormElement16formElementIndexEPNS_22HTMLGenericFormElementE
-__ZN3WTF6VectorIPN7WebCore22HTMLGenericFormElementELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore22HTMLGenericFormElementELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore22HTMLGenericFormElementELm0EE15reserveCapacityEm
-__ZN3WTF11ListHashSetIPN7WebCore31HTMLFormControlElementWithStateENS_7PtrHashIS3_EEE3addERKS3_
-__ZN3WTF9HashTableIPNS_15ListHashSetNodeIPN7WebCore31HTMLFormControlElementWithStateEEES6_NS_17IdentityExtractorIS6_EENS_28ListHashSetNodeHashFunctionsIS4_NS_7PtrHashIS4_EEEENS_10HashTraitsIS6_EESE_E3addIS4_PNS_24ListHashSetNodeAllocatorIS4_EENS_21ListHashSetTranslatorIS4_SB_EEEESt4pairINS_17HashTableIteratorIS6_S6_S8_SC_SE_SE_EEbERKT_RKT0_
-__ZN3WTF11ListHashSetIPN7WebCore31HTMLFormControlElementWithStateENS_7PtrHashIS3_EEE10appendNodeEPNS_15ListHashSetNodeIS3_EE
-__ZN7WebCore16HTMLInputElement4initEv
-__ZNK7WebCore16HTMLInputElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore16HTMLInputElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore16HTMLInputElement4nameEv
-__ZNK7WebCore16HTMLInputElement13isRadioButtonEv
-__ZN7WebCore16HTMLInputElement12setInputTypeERKNS_6StringE
-__ZNK7WebCore16HTMLInputElement32storesValueSeparateFromAttributeEv
-__ZN7WebCore16HTMLInputElement12recheckValueEv
-__ZNK7WebCore16HTMLInputElement5valueEv
-__ZNK7WebCore16HTMLInputElement14constrainValueERKNS_6StringE
-__ZNK7WebCore16HTMLInputElement14constrainValueERKNS_6StringEi
-__ZNK7WebCore16HTMLInputElement17endTagRequirementEv
-__ZNK7WebCore16HTMLInputElement11tagPriorityEv
-__ZN7WebCore22HTMLGenericFormElement16insertedIntoTreeEb
-__ZN7WebCore16HTMLInputElement6attachEv
-__ZN7WebCore22HTMLGenericFormElement6attachEv
-__ZN7WebCoregtERNS_11CSSRuleDataES1_
-__ZN7WebCore11CSSSelector11specificityEv
-__ZN7WebCore5themeEv
-__ZN7WebCore14RenderThemeMacC2Ev
--[WebCoreRenderThemeNotificationObserver initWithTheme:]
-__ZNK7WebCore14RenderThemeMac10systemFontEiRNS_15FontDescriptionE
-__ZN7WebCore11RenderStyle13setTextShadowEPNS_10ShadowDataEb
-__ZN7WebCore22StyleRareInheritedDataC2ERKS0_
-__ZN7WebCore7DataRefINS_25StyleRareNonInheritedDataEE6accessEv
-__ZN7WebCore25StyleRareNonInheritedDataC2ERKS0_
-__ZNK7WebCore22HTMLGenericFormElement9isControlEv
-__ZN7WebCore16HTMLInputElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore22StyleRareInheritedDataD2Ev
-__ZN7WebCore25StyleRareNonInheritedDataD2Ev
-__ZN7WebCore31HTMLFormControlElementWithState21finishParsingChildrenEv
-__ZNK7WebCore8Document26hasStateForNewFormElementsEv
-__ZN7WebCore15BackgroundLayeraSERKS0_
-__ZN7WebCore11RenderTheme11adjustStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementEbRKNS_10BorderDataERKNS_15BackgroundLayerERKNS_5ColorE
-__ZNK7WebCore14RenderThemeMac15isControlStyledEPKNS_11RenderStyleERKNS_10BorderDataERKNS_15BackgroundLayerERKNS_5ColorE
-__ZNK7WebCore14RenderThemeMac20adjustTextFieldStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZN7WebCore16HTMLInputElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore17RenderTextControlC2EPNS_4NodeEb
-__ZN7WebCore17RenderTextControl8setStyleEPNS_11RenderStyleE
-__ZNK7WebCore17RenderTextControl15canHaveChildrenEv
-__ZN7WebCore17RenderTextControl17updateFromElementEv
-__ZN7WebCore17RenderTextControl21createSubtreeIfNeededEv
-__ZN7WebCore29HTMLTextFieldInnerTextElementC2EPNS_8DocumentEPNS_4NodeE
-__ZN7WebCore17RenderTextControl20createInnerTextStyleEPNS_11RenderStyleE
-__ZNK7WebCore22HTMLGenericFormElement17isReadOnlyControlEv
-__ZNK7WebCore22HTMLGenericFormElement8disabledEv
-__ZNK7WebCore4Font11lineSpacingEv
-__ZN7WebCore9FontCache11getFontDataERKNS_4FontERiPNS_12FontSelectorE
-__ZN7WebCore15CSSFontSelector11getFontDataERKNS_15FontDescriptionERKNS_12AtomicStringE
-__ZN7WebCore9FontCache25getCachedFontPlatformDataERKNS_15FontDescriptionERKNS_12AtomicStringEb
-__ZN7WebCore9FontCache12platformInitEv
-__ZN3WTF9HashTableIN7WebCore24FontPlatformDataCacheKeyESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_28FontPlatformDataCacheKeyHashENS_14PairHashTraitsINS1_30FontPlatformDataCacheKeyTraitsENS_10HashTraitsIiEEEES9_E4findIS2_NS_22IdentityHashTranslatorIS2_S4_S7_EEEENS_17HashTableIteratorIS2_S4_S6_S7_SC_S9_EERKT_
-__ZN7WebCore9FontCache22createFontPlatformDataERKNS_15FontDescriptionERKNS_12AtomicStringE
-+[WebFontCache fontWithFamily:traits:size:]
-+[WebFontCache internalFontWithFamily:traits:size:]
-__Z16acceptableChoicejiji
-__ZN7WebCore16FontPlatformData7setFontEP6NSFont
-__ZN3WTF7HashMapIN7WebCore24FontPlatformDataCacheKeyEPNS1_16FontPlatformDataENS1_28FontPlatformDataCacheKeyHashENS1_30FontPlatformDataCacheKeyTraitsENS_10HashTraitsIS4_EEE3setERKS2_RKS4_
-__ZN3WTF9HashTableIN7WebCore24FontPlatformDataCacheKeyESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_28FontPlatformDataCacheKeyHashENS_14PairHashTraitsINS1_30FontPlatformDataCacheKeyTraitsENS_10HashTraitsIiEEEES9_E3addIS2_PNS1_16FontPlatformDataENS_17HashMapTranslatorILb1ES3_IS2_SG_ENS_18PairBaseHashTraitsIS9_NSA_ISG_EEEESC_S7_EEEES3_INS_17HashTableIteratorIS2_S4_S6_S7_SC_S9_EEbERKT_RKT0_
-__ZN3WTF9HashTableIN7WebCore24FontPlatformDataCacheKeyESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_28FontPlatformDataCacheKeyHashENS_14PairHashTraitsINS1_30FontPlatformDataCacheKeyTraitsENS_10HashTraitsIiEEEES9_E6expandEv
-__ZNK7WebCore14SimpleFontData9isLoadingEv
-__ZNK7WebCore11RenderBlock10lineHeightEbb
-__ZNK7WebCore10RenderFlow10lineHeightEbb
-__ZNK7WebCore12RenderObject14firstLineStyleEv
-__ZNK7WebCore12RenderObject10lineHeightEbb
-__ZNK7WebCore22HTMLGenericFormElement9isEnabledEv
-__ZNK7WebCore11RenderLayer13isTransparentEv
-__ZN7WebCore11RenderLayer17dirtyOverflowListEv
-__ZNK7WebCore17RenderTextControl11isTextFieldEv
-__ZN7WebCore9FrameView25scheduleRelayoutOfSubtreeEPNS_12RenderObjectE
-__ZN7WebCore17RenderTextControl17updatePlaceholderEv
-__ZN7WebCore17RenderTextControl4textEv
-__ZNK7WebCore17RenderTextControl10finishTextERN3WTF6VectorItLm0EEE
-__ZN7WebCore11HTMLElement12setInnerTextERKNS_6StringERi
-__ZNK7WebCore14HTMLDivElement17endTagRequirementEv
-__ZN7WebCore13StyledElement25removeMappedAttributeDeclENS_20MappedAttributeEntryERKNS_13QualifiedNameERKNS_12AtomicStringE
-__ZN7WebCore19DeprecatedValueListINS_11CSSPropertyEE10deleteNodeEPNS_27DeprecatedValueListImplNodeE
-__ZN7WebCore17CSSPrimitiveValue7cleanupEv
-__ZN7WebCore22HTMLGenericFormElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore16HTMLInputElement7altTextEv
-__ZN7WebCore12RenderObject17updateFromElementEv
-__ZN7WebCore11RenderImage14resetAnimationEv
-__ZN7WebCore10HTMLParser22selectCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore17selectConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLSelectElementC2EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore17HTMLSelectElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore22HTMLGenericFormElement17endTagRequirementEv
-__ZNK7WebCore17HTMLSelectElement11tagPriorityEv
-__ZNK7WebCore7Element17isInputTypeHiddenEv
-__ZN7WebCore20StyleFlexibleBoxDataC2ERKS0_
-__ZN7WebCore17CSSPrimitiveValue16computeLengthIntEPNS_11RenderStyleE
-__ZNK7WebCore11RenderTheme15isControlStyledEPKNS_11RenderStyleERKNS_10BorderDataERKNS_15BackgroundLayerERKNS_5ColorE
-__ZNK7WebCore15BackgroundLayereqERKS0_
-__ZNK7WebCore14RenderThemeMac19adjustMenuListStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
-__ZNK7WebCore14RenderThemeMac18controlSizeForFontEPNS_11RenderStyleE
-__ZN7WebCore11RenderStyle11resetBorderEv
-__ZNK7WebCore14RenderThemeMac13setButtonSizeEPNS_11RenderStyleE
-__ZNK7WebCore14RenderThemeMac11buttonSizesEv
-__ZNK7WebCore14RenderThemeMac15setSizeFromFontEPNS_11RenderStyleEPKNS_7IntSizeE
-__ZNK7WebCore14RenderThemeMac11sizeForFontEPNS_11RenderStyleEPKNS_7IntSizeE
-__ZNK7WebCore14RenderThemeMac22setFontFromControlSizeEPNS_16CSSStyleSelectorEPNS_11RenderStyleEj
-__ZN7WebCore11RenderStyle12setBoxShadowEPNS_10ShadowDataEb
-__ZN7WebCore17HTMLSelectElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore14RenderMenuListC2EPNS_17HTMLSelectElementE
-__ZN7WebCore14RenderMenuList8setStyleEPNS_11RenderStyleE
-__ZNK7WebCore14RenderMenuList15canHaveChildrenEv
-__ZN7WebCore14RenderMenuList18updateOptionsWidthEv
-__ZN7WebCore14RenderMenuList17updateFromElementEv
-__ZNK7WebCore17HTMLSelectElement13selectedIndexEv
-__ZN7WebCore14RenderMenuList17setTextFromOptionEi
-__ZNK7WebCore17HTMLSelectElement17optionToListIndexEi
-__ZN7WebCore14RenderMenuList7setTextERKNS_6StringE
-__ZN7WebCore14RenderMenuList8addChildEPNS_12RenderObjectES2_
-__ZN7WebCore14RenderMenuList16createInnerBlockEv
-__ZN7WebCore14RenderMenuList16adjustInnerStyleEv
-__ZNK7WebCore14RenderThemeMac24popupInternalPaddingLeftEPNS_11RenderStyleE
-__ZNK7WebCore14RenderThemeMac18popupButtonPaddingEj
-__ZNK7WebCore14RenderThemeMac25popupInternalPaddingRightEPNS_11RenderStyleE
-__ZNK7WebCore14RenderThemeMac23popupInternalPaddingTopEPNS_11RenderStyleE
-__ZNK7WebCore14RenderThemeMac26popupInternalPaddingBottomEPNS_11RenderStyleE
-__ZN7WebCore9PopupMenu29itemWritingDirectionIsNaturalEv
-__ZN7WebCore10StringImpl23defaultWritingDirectionEv
-__ZN7WebCore17HTMLSelectElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore17HTMLSelectElement15childrenChangedEb
-__ZN7WebCore17HTMLSelectElement18setRecalcListItemsEv
-__ZN7WebCore17optionConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLOptionElementC2EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore17HTMLOptionElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore17HTMLOptionElement17endTagRequirementEv
-__ZNK7WebCore17HTMLOptionElement11tagPriorityEv
-__ZN7WebCore17HTMLOptionElement20insertedIntoDocumentEv
-__ZNK7WebCore17HTMLOptionElement9getSelectEv
-__ZN7WebCore17HTMLSelectElement17scrollToSelectionEv
-__ZN7WebCore17HTMLOptionElement6attachEv
-__ZNK7WebCore17HTMLOptionElement8disabledEv
-__ZN7WebCore17HTMLOptionElement14setRenderStyleEPNS_11RenderStyleE
-__ZN7WebCore17HTMLOptionElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore17HTMLOptionElement15childrenChangedEb
-__ZNK7WebCore17HTMLOptionElement11renderStyleEv
-__ZN7WebCore11FrameLoader14didReceiveDataEPNS_14ResourceLoaderEPKcii
-__ZN7WebCore15ProgressTracker17incrementProgressEmPKci
-__ZNK7WebCore11FrameLoader27numPendingOrLoadingRequestsEb
-__ZNK7WebCore11FrameLoader15firstLayoutDoneEv
-__ZN7WebCore11FrameLoader31dispatchDidReceiveContentLengthEPNS_14DocumentLoaderEmi
-__ZN7WebCore19InspectorController23didReceiveContentLengthEPNS_14DocumentLoaderEmi
--[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:]
-__ZN7WebCore14ResourceLoader16didFinishLoadingEPNS_14ResourceHandleE
-__ZN7WebCore18MainResourceLoader16didFinishLoadingEv
-__ZN7WebCore11FrameLoader15finishedLoadingEv
-__ZNK7WebCore4Node14isDocumentNodeEv
-__ZN7WebCore21DeprecatedPtrListImpl4takeEv
-__ZNK7WebCore21DeprecatedPtrListImpl7currentEv
-__ZNK7WebCore17StyleSurroundDataeqERKS0_
-__ZN7WebCore17HTMLSelectElement11recalcStyleENS_4Node11StyleChangeE
-__ZNK7WebCore17HTMLSelectElement15recalcListItemsEb
-__ZNK7WebCore4Node19traverseNextSiblingEPKS0_
-__ZN3WTF6VectorIPN7WebCore11HTMLElementELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore11HTMLElementELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore11HTMLElementELm0EE15reserveCapacityEm
-__ZN7WebCore17HTMLOptionElement16setSelectedStateEb
-__ZN7WebCore22HTMLGenericFormElement11recalcStyleENS_4Node11StyleChangeE
-__ZNK7WebCore19StyleBackgroundDataeqERKS0_
-__ZNK7WebCore25StyleRareNonInheritedDataeqERKS0_
-__ZN3WTFeqIN7WebCore20StyleDashboardRegionELm0EEEbRKNS_6VectorIT_XT0_EEES7_
-__ZNK7WebCore20StyleFlexibleBoxDataeqERKS0_
-__ZNK7WebCore25StyleRareNonInheritedData20shadowDataEquivalentERKS0_
-__ZNK7WebCore25StyleRareNonInheritedData24transitionDataEquivalentERKS0_
-__ZNK7WebCore22StyleRareInheritedDataeqERKS0_
-__ZNK7WebCore22StyleRareInheritedData20shadowDataEquivalentERKS0_
+__ZN7WebCore13jsMouseEventXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17MouseRelatedEvent1xEv
+__ZN7WebCore19jsMouseEventCtrlKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsMouseEventRelatedTargetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsMouseEventClientXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsMouseEventScreenYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsMouseEventMetaKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsMouseEventOffsetXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsMouseEventAltKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsMouseEventOffsetYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsMouseEventFromElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore10MouseEvent11fromElementEv
+__ZN7WebCore19jsMouseEventScreenXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsMouseEventDataTransferEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore10MouseEvent11isDragEventEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_9ClipboardE
+__ZN7WebCore18jsMouseEventButtonEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14jsUIEventPageYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15jsUIEventLayerYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17MouseRelatedEvent6layerYEv
+__ZN7WebCore14jsUIEventPageXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17jsUIEventCharCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7UIEvent8charCodeEv
+__ZN7WebCore13jsUIEventViewEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14jsUIEventWhichEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore10MouseEvent5whichEv
+__ZN7WebCore16jsUIEventKeyCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7UIEvent7keyCodeEv
+__ZN7WebCore15jsUIEventDetailEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15jsUIEventLayerXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17MouseRelatedEvent6layerXEv
+__ZN7WebCore21JSMouseEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18JSUIEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24jsHTMLElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsHTMLParagraphElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22JSHTMLParagraphElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore31JSHTMLParagraphElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29jsHTMLOListElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLOListElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLOListElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLOListElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore8IntPointC1ERK8_NSPoint
+__ZN7WebCore8IntPointC2ERK8_NSPoint
+__ZN7WebCore11globalPointERK8_NSPointP8NSWindow
+__ZN7WebCore15flipScreenPointERK8_NSPointP8NSScreen
+__ZNK7WebCore8IntPointcv8_NSPointEv
+__ZN7WebCore17HTMLPlugInElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore12EventHandler14currentNSEventEv
+__ZN7WebCore12EventHandler32passWidgetMouseDownEventToWidgetERKNS_28MouseEventWithHitTestResultsE
+__ZN7WebCore12EventHandler26passMouseDownEventToWidgetEPNS_6WidgetE
+__ZN7WebCoreL18lastEventIsMouseUpEv
+__ZN7WebCoreL18findViewInSubviewsEP6NSViewS1_
+__ZN7WebCore11FrameLoader13frameDetachedEv
+__ZN7WebCore17HTMLIFrameElement19removedFromDocumentEv
+__ZN7WebCore20HTMLFrameElementBase19removedFromDocumentEv
+__ZThn4_N7WebCore17HTMLIFrameElementD0Ev
+__ZN7WebCore10RenderView15pushLayoutStateEPNS_12RenderObjectE
+__ZN7WebCore11LayoutStateC1EPNS_12RenderObjectE
+__ZN7WebCore11LayoutStateC2EPNS_12RenderObjectE
+__ZN7WebCore11FrameLoader24checkCompletedTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore5Cache18revalidateResourceEPNS_14CachedResourceEPNS_9DocLoaderE
+__ZNK7WebCore14CachedResource20canUseCacheValidatorEv
+__ZNK7WebCore19CachedCSSStyleSheet8encodingEv
+__ZN7WebCore14CachedResource23setResourceToRevalidateEPS0_
+__ZN3WTF7HashSetIPN7WebCore24CachedResourceHandleBaseENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZNK7WebCore14CachedResource8encodingEv
+__ZN7WebCore5Cache21revalidationSucceededEPNS_14CachedResourceERKNS_16ResourceResponseE
+__ZN7WebCore14CachedResource34switchClientsToRevalidatedResourceEv
+__ZN3WTF9HashTableIPN7WebCore24CachedResourceHandleBaseES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9
+__ZN3WTF6VectorIPN7WebCore20CachedResourceClientELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore20CachedResourceClientELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore20CachedResourceClientELm0EE15reserveCapacityEm
+__ZN7WebCore14CachedResource25clearResourceToRevalidateEv
+__ZN7WebCore19JSHTMLObjectElementD1Ev
+__ZN7WebCore18JSHTMLParamElementD1Ev
+__ZN7WebCore18JSHTMLEmbedElementD1Ev
+__ZN3JSC16RuntimeObjectImpD1Ev
+__ZN3JSC16RuntimeObjectImpD2Ev
+__ZN3JSC8Bindings10RootObject19removeRuntimeObjectEPNS_16RuntimeObjectImpE
+__ZN3WTF9HashTableIPN3JSC16RuntimeObjectImpES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_N
+__ZN3WTF9HashTableIPN3JSC16RuntimeObjectImpES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAn
+__ZN3WTF9HashTableIPN3JSC16RuntimeObjectImpES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS
+__ZN3JSC8Bindings9CInstanceD0Ev
+__ZN3JSC8Bindings8InstanceD2Ev
+__ZThn4_N7WebCore16HTMLImageElementD0Ev
+__ZNK7WebCore13KeyboardEvent8charCodeEv
+__ZNK7WebCore6String19characterStartingAtEj
+__ZN7WebCore10StringImpl19characterStartingAtEj
+__ZN7WebCoreL5equalERKNS_15CSSParserStringEPKc
+__ZN7WebCore18CSSParserValueList13deleteValueAtEj
+__ZNK7WebCore14CSSParserValue10isVariableEv
+__ZN7WebCore19setJSDOMWindowEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore14PreloadScanner11emitCSSRuleEv
+__ZN3WTF6VectorItLm16EE6shrinkEm
+__ZN7WebCore24jsHTMLDocumentCompatModeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12HTMLDocument10compatModeEv
+__ZN7WebCore25jsDocumentDocumentElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn4_N7WebCore11HTMLElementD0Ev
+__ZThn64_NK7WebCore16HTMLInputElement4sizeEv
+__ZNK7WebCore15JSDOMWindowBase29crossDomainAccessErrorMessageEPKN3JSC14JSGlobalObjectE
+__ZN3WTF6VectorIcLm256EE14expandCapacityEm
+__ZN3WTF6VectorIcLm256EE15reserveCapacityEm
+__ZN7WebCore25printErrorMessageForFrameEPNS_5FrameERKNS_6StringE
+__ZNK7WebCore15JSDOMWindowBase17printErrorMessageERKNS_6StringE
+__ZN7WebCore26setJSHTMLScriptElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLScriptElement7setTypeERKNS_6StringE
+__ZN7WebCore21jsNavigatorProductSubEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13NavigatorBase10productSubEv
+__ZN7WebCore17jsNavigatorVendorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13NavigatorBase6vendorEv
+__ZN7WebCore18jsNavigatorProductEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13NavigatorBase7productEv
+__ZThn56_N7WebCore17HTMLScriptElement17dispatchLoadEventEv
+__ZNK7WebCore12RenderObject14isDescendantOfEPKS0_
+__ZN7WebCore7Element24cloneElementWithChildrenEv
+__ZN7WebCore13ContainerNode15cloneChildNodesEPS0_
+__ZN7WebCore4Text9cloneNodeEb
+__ZN7WebCore40jsDOMWindowPrototypeFunctionClearTimeoutEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow12clearTimeoutEi
+__ZN7WebCore16jsHTMLElementDirEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11HTMLElement3dirEv
+__ZN7WebCore17jsHTMLDocumentDirEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12HTMLDocument3dirEv
+__ZN7WebCore25PluginMainThreadScheduler16unregisterPluginEP4_NPP
+__ZN7WebCore16HTMLParamElementD0Ev
+__ZN7WebCore16HTMLEmbedElementD0Ev
+__ZNK7WebCore16RunLoopTimerBase8isActiveEv
+__ZN7WebCore4Page6goBackEv
+__ZN7WebCore4Page8goToItemEPNS_11HistoryItemENS_13FrameLoadTypeE
+__ZN7WebCore11FrameLoader8goToItemEPNS_11HistoryItemENS_13FrameLoadTypeE
+__ZN7WebCore15BackForwardList8goToItemEPNS_11HistoryItemE
+__ZN7WebCore11FrameLoader17recursiveGoToItemEPNS_11HistoryItemES2_NS_13FrameLoadTypeE
+__ZNK7WebCore11HistoryItem12isTargetItemEv
+__ZN7WebCore11FrameLoader8loadItemEPNS_11HistoryItemENS_13FrameLoadTypeE
+__ZN7WebCore11HistoryItem8formDataEv
+__ZNK7WebCore11FrameLoader13urlsMatchItemEPNS_11HistoryItemE
+__ZN7WebCore11FrameLoader33loadProvisionalItemFromCachedPageEv
+__ZN7WebCore14DocumentLoader18loadFromCachedPageEN3WTF10PassRefPtrINS_10CachedPageEEE
+__ZN7WebCore11FrameLoader37updateHistoryForBackForwardNavigationEv
+__ZN7WebCore11CachedFrame23cachedFramePlatformDataEv
+__ZN7WebCore11FrameLoader4openERNS_10CachedPageE
+__ZN7WebCore11FrameLoader4openERNS_11CachedFrameE
+__ZThn4_N7WebCore27TextControlInnerTextElementD0Ev
+__ZNK7WebCore21ScriptCachedFrameData9domWindowEv
+__ZN7WebCore5Frame12setDOMWindowEPNS_9DOMWindowE
+__ZN7WebCore11CachedFrame7restoreEv
+__ZN7WebCore21ScriptCachedFrameData7restoreEPNS_5FrameE
+__ZN7WebCore12EventHandler17setMousePressNodeEN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore22ScriptExecutionContext22resumeActiveDOMObjectsEv
+__ZN7WebCore8Document23documentDidBecomeActiveEv
+__ZN7WebCore9FrameView12setMediaTypeERKNS_6StringE
+__ZThn4_N7WebCore17HTMLAnchorElementD0Ev
+__ZThn4_N7WebCore20HTMLParagraphElementD0Ev
+__ZThn4_N7WebCore20HTMLTableCellElementD0Ev
+__ZThn4_N7WebCore14HTMLDivElementD0Ev
+__ZN7WebCore18jsDOMWindowConsoleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_7ConsoleE
+__ZN7WebCore9JSConsole15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore9JSConsoleC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7ConsoleEEE
+__ZN7WebCore9JSConsoleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7ConsoleEEE
+__ZN7WebCore9JSConsole18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18JSConsolePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16jsNodeAttributesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_12NamedNodeMapE
+__ZN7WebCore14JSNamedNodeMap15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSNamedNodeMapC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12NamedNodeMapEEE
+__ZN7WebCore14JSNamedNodeMapC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12NamedNodeMapEEE
+__ZN7WebCore14JSNamedNodeMap18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore23JSNamedNodeMapPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore14JSNamedNodeMap18canGetItemsForNameEPN3JSC9ExecStateEPNS_12NamedNodeMapERKNS1_10IdentifierE
+__ZN7WebCore17CSSInheritedValueD0Ev
+__ZThn4_N7WebCore15HTMLFormElementD0Ev
+__ZN7WebCore14JSNamedNodeMapD1Ev
+__ZN7WebCore14JSNamedNodeMapD2Ev
+__ZN7WebCore25jsDOMWindowOnbeforeunloadEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow14onbeforeunloadEv
+__ZN7WebCore28setJSDOMWindowOnbeforeunloadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow17setOnbeforeunloadEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCoreL34allowsPendingBeforeUnloadListenersEPNS_9DOMWindowE
+__ZN7WebCore15JSMimeTypeArray18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore21jsMimeTypeArrayLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13MimeTypeArray6lengthEv
+__ZNK7WebCore13MimeTypeArray13getPluginDataEv
+__ZN7WebCore19jsScreenAvailHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Screen11availHeightEv
+__ZN7WebCore19screenAvailableRectEPNS_6WidgetE
+__ZN7WebCore18jsScreenAvailWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Screen10availWidthEv
+__ZThn4_N7WebCore15HTMLBodyElementD0Ev
+__ZN7WebCoreL17buttonConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLButtonElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore17HTMLButtonElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore17HTMLButtonElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore17HTMLButtonElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore12RenderButton24updateBeforeAfterContentENS_8PseudoIdE
+__ZN7WebCore22jsHTMLInputElementFormEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLButtonElement14isEnumeratableEv
+__ZN7WebCore16HTMLEmbedElement16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore16HTMLEmbedElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_7ElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setERKS3_RKS5_
+__ZN7WebCore43jsNamedNodeMapPrototypeFunctionGetNamedItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14JSNamedNodeMap9classInfoEv
+__ZN7WebCore6JSAttr15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore6JSAttrC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_4AttrEEE
+__ZN7WebCore6JSAttrC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_4AttrEEE
+__ZNK7WebCore10RenderText22containsOnlyWhitespaceEjj
+__ZNK7WebCore12RenderObject23outlineBoundsForRepaintEPNS_20RenderBoxModelObjectE
+__ZN7WebCore17jsDOMWindowOpenerEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow6openerEv
+__ZN7WebCore15JSMimeTypeArrayD1Ev
+__ZN7WebCore15JSMimeTypeArrayD2Ev
+__ZN7WebCore15jsDocumentFormsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSHTMLCollection18canGetItemsForNameEPN3JSC9ExecStateEPNS_14HTMLCollectionERKNS1_10IdentifierE
+__ZN7WebCoreL13getNamedItemsEPN3JSC9ExecStateEPNS_14HTMLCollectionERKNS0_10IdentifierE
+__ZNK7WebCore14HTMLCollection15updateNameCacheEv
+__ZN7WebCore16JSHTMLCollection10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore16HTMLInputElement26copyNonAttributePropertiesEPKNS_7ElementE
+__ZN7WebCore16JSDOMWindowShell16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZN7WebCore11JSDOMWindow16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZN7WebCore11JSDOMWindow22customGetPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore20JSDOMWindowPrototype9classInfoEv
+__ZN7WebCore9DOMWindow18canShowModalDialogEPKNS_5FrameE
+__ZNK7WebCore6Chrome11canRunModalEv
+__ZN7WebCore22jsHTMLInputElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore18JSHTMLInputElement4typeEPN3JSC9ExecStateE
+__ZN3WTF10RefCountedIN7WebCore5XPath9ValueDataEE5derefEv
+__ZN7WebCoreL30createHTMLButtonElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLButtonElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLButtonElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLButtonElementEEE
+__ZN7WebCore19JSHTMLButtonElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLButtonElementEEE
+__ZN7WebCore19JSHTMLButtonElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28JSHTMLButtonElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19JSHTMLButtonElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZNK7WebCore19JSHTMLButtonElement9classInfoEv
+__ZN7WebCoreL29createHTMLDListElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLDListElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLDListElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLDListElementEEE
+__ZN7WebCore18JSHTMLDListElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLDListElementEEE
+__ZN7WebCore21jsElementOffsetHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsElementOffsetLeftEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore7Element10offsetLeftEv
+__ZNK7WebCore20RenderBoxModelObject10offsetLeftEv
+__ZN7WebCore21jsElementOffsetParentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore7Element12offsetParentEv
+__ZN7WebCore18JSHTMLDListElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSHTMLDListElement9classInfoEv
+__ZNK7WebCore15DynamicNodeList24itemBackwardsFromCurrentEPNS_4NodeEji
+__ZN7WebCore30jsDOMWindowDocumentConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10JSDocument14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore21JSDocumentConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore33setJSDOMWindowDocumentConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore30setJSDOMWindowEventConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore12RenderInline5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCoreL22getPositionOffsetValueEPNS_11RenderStyleEi
+__ZN7WebCore12RenderObject10moveLayersEPNS_11RenderLayerES2_
+__ZNK7WebCore8Document7baseURIEv
+__ZN7WebCore10JSLocation3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore10JSLocation9customPutEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore17setJSLocationHrefEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10JSLocation7setHrefEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCoreL17navigateIfAllowedEPN3JSC9ExecStateEPNS_5FrameERKNS_4KURLEbb
+__ZNK7WebCore17RenderFlexibleBox12avoidsFloatsEv
+__ZN7WebCore13HTMLTokenizer11stopParsingEv
+__ZN7WebCore11FrameLoader22tokenizerProcessedDataEv
+__ZN7WebCore18JSHTMLDListElementD1Ev
+__ZN7WebCore21jsNodePreviousSiblingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSStyleSheetList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22jsStyleSheetListLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSStyleSheet18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore17jsStyleSheetTitleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsCSSStyleSheetCssRulesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsCSSStyleRuleStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsConsolePrototypeFunctionLogEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore9JSConsole9classInfoEv
+__ZN7WebCore15ScriptCallStackC1EPN3JSC9ExecStateERKNS1_7ArgListEj
+__ZN7WebCore15ScriptCallStackC2EPN3JSC9ExecStateERKNS1_7ArgListEj
+__ZN7WebCore15ScriptCallFrameC1ERKN3JSC7UStringES4_iRKNS1_7ArgListEj
+__ZN7WebCore15ScriptCallFrameC2ERKN3JSC7UStringES4_iRKNS1_7ArgListEj
+__ZN3WTF6VectorIN7WebCore11ScriptValueELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore11ScriptValueELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore11ScriptValueELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIN7WebCore15ScriptCallFrameELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore15ScriptCallFrameELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore15ScriptCallFrameELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIN7WebCore11ScriptValueELm0EEC1ERKS3_
+__ZN3WTF6VectorIN7WebCore11ScriptValueELm0EEC2ERKS3_
+__ZN7WebCore15ScriptCallFrameD1Ev
+__ZN7WebCore15ScriptCallFrameD2Ev
+__ZN3WTF6VectorIN7WebCore11ScriptValueELm0EE6shrinkEm
+__ZN7WebCore11ScriptValueD1Ev
+__ZN7WebCore7Console3logEPNS_15ScriptCallStackE
+__ZN7WebCore7Console10addMessageENS_12MessageLevelEPNS_15ScriptCallStackEb
+__ZN7WebCore15ScriptCallStack2atEj
+__ZN7WebCoreL24getFirstArgumentAsStringEPN3JSC9ExecStateERKNS_15ScriptCallFrameERNS_6StringEb
+__ZNK7WebCore15ScriptCallFrame10argumentAtEj
+__ZN7WebCore19InspectorController19addMessageToConsoleENS_13MessageSourceENS_12MessageLevelEPNS_15ScriptCallStackE
+__ZN7WebCore15ScriptCallStackD1Ev
+__ZN7WebCore15ScriptCallStackD2Ev
+__ZN3WTF6VectorIN7WebCore15ScriptCallFrameELm0EE6shrinkEm
+__ZNK7WebCore26CSSMutableStyleDeclaration14getCommonValueEPKii
+__ZNK7WebCore26CSSMutableStyleDeclaration18isPropertyImplicitEi
+__ZN7WebCore24jsHTMLImageElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement6heightEb
+__ZN7WebCore19JSHTMLSelectElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL30createHTMLOptionElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLOptionElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLOptionElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLOptionElementEEE
+__ZN7WebCore19JSHTMLOptionElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLOptionElementEEE
+__ZN7WebCore19JSHTMLOptionElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25jsHTMLAnchorElementSearchEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement6searchEv
+__ZN7WebCore10JSLocation16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZN7WebCore10JSLocation22customGetPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore19JSLocationPrototype9classInfoEv
+__ZNK7WebCore21HTMLFrameOwnerElement15contentDocumentEv
+__ZN7WebCore17checkNodeSecurityEPN3JSC9ExecStateEPNS_4NodeE
+__ZN7WebCore33setJSHTMLIFrameElementFrameBorderEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLFrameElementBase14setFrameBorderERKNS_6StringE
+__ZN7WebCore18JSHTMLDListElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore22reportCurrentExceptionEPN3JSC9ExecStateE
+__ZThn44_N7WebCore8Document15reportExceptionERKNS_6StringEiS3_
+__ZThn4_N7WebCore17HTMLScriptElementD0Ev
+__ZN7WebCore19jsDOMWindowOnresizeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow8onresizeEv
+__ZN7WebCore22setJSDOMWindowOnresizeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow11setOnresizeEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore19JSHTMLOptionElementD1Ev
+__ZN7WebCore15jsDocumentLinksEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8Document5linksEv
+__ZN7WebCore23jsHTMLAnchorElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9RenderBox36tryLayoutDoingPositionedMovementOnlyEv
+__ZThn4_N7WebCore18HTMLHeadingElementD0Ev
+__ZThn4_N7WebCore13HTMLBRElementD0Ev
+__ZN7WebCore18jsDOMWindowOnerrorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7onerrorEv
+__ZN7WebCore22jsHTMLEmbedElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27JSHTMLEmbedElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore14DragController27mayStartDragAtEventLocationEPKNS_5FrameERKNS_8IntPointE
+__ZNK7WebCore12EventHandler22dragHysteresisExceededERKNS_8IntPointE
+__ZN7WebCore47jsElementPrototypeFunctionGetBoundingClientRectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore7Element21getBoundingClientRectEv
+__ZN7WebCore11RenderBlock13absoluteQuadsERN3WTF6VectorINS_9FloatQuadELm0EEE
+__ZN3WTF6VectorIN7WebCore9FloatQuadELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore9FloatQuadELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore9FloatQuadELm0EE15reserveCapacityEm
+__ZN7WebCore10ClientRectC1ERKNS_7IntRectE
+__ZN7WebCore10ClientRectC2ERKNS_7IntRectE
+__ZN3WTF6VectorIN7WebCore9FloatQuadELm0EE6shrinkEm
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_10ClientRectE
+__ZN7WebCore12JSClientRect15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore12JSClientRectC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10ClientRectEEE
+__ZN7WebCore12JSClientRectC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10ClientRectEEE
+__ZN7WebCore12JSClientRect18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16jsClientRectLeftEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsElementScrollLeftEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7Element10scrollLeftEv
+__ZNK7WebCore9RenderBox10scrollLeftEv
+__ZNK7WebCore15HTMLBodyElement10scrollLeftEv
+__ZN7WebCoreL13adjustForZoomEiPNS_9FrameViewE
+__ZNK7WebCore5Frame10zoomFactorEv
+__ZN7WebCore15jsClientRectTopEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsElementScrollTopEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7Element9scrollTopEv
+__ZNK7WebCore9RenderBox9scrollTopEv
+__ZNK7WebCore15HTMLBodyElement9scrollTopEv
+__ZN7WebCore19jsElementClientLeftEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore7Element10clientLeftEv
+__ZN7WebCore18jsElementClientTopEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore7Element9clientTopEv
+__ZNK7WebCore17JSHTMLHtmlElement9classInfoEv
+__ZN7WebCore40jsDocumentPrototypeFunctionCreateCommentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document13createCommentERKNS_6StringE
+__ZN7WebCore16toJSNewlyCreatedEPN3JSC9ExecStateEPNS_4NodeE
+__ZN7WebCore9JSComment15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore9JSCommentC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7CommentEEE
+__ZN7WebCore9JSCommentC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7CommentEEE
+__ZNK7WebCore9JSComment9classInfoEv
+__ZN7WebCore42jsElementPrototypeFunctionQuerySelectorAllEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15jsNodeLastChildEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSDOMWindowShell14deletePropertyEPN3JSC9ExecStateERKNS1_10IdentifierE
+__ZN7WebCore11JSDOMWindow14deletePropertyEPN3JSC9ExecStateERKNS1_10IdentifierE
+__ZN7WebCore19setJSDocumentDomainEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore8Document9setDomainERKNS_6StringE
+__ZN7WebCore14SecurityOrigin16setDomainFromDOMERKNS_6StringE
+__ZN7WebCore16ScriptController20updateSecurityOriginEv
+__ZN7WebCore12JSClientRectD1Ev
+__ZN7WebCore12JSClientRectD2Ev
+__ZN7WebCore9JSCommentD1Ev
+__ZN7WebCore19jsDOMWindowOnunloadEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow8onunloadEv
+__ZN7WebCore22setJSDOMWindowOnunloadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow11setOnunloadEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore38jsDocumentPrototypeFunctionExecCommandEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore37valueToStringWithUndefinedOrNullCheckEPN3JSC9ExecStateENS0_7JSValueE
+__ZN7WebCore8Document11execCommandERKNS_6StringEbS3_
+__ZN7WebCoreL7commandEPNS_8DocumentERKNS_6StringEb
+__ZN7WebCore6Editor7CommandC1Ev
+__ZN7WebCore6Editor7CommandC2Ev
+__ZNK7WebCore6Editor7Command7executeERKNS_6StringEPNS_5EventE
+__ZN7WebCore49jsDocumentPrototypeFunctionCreateDocumentFragmentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore18JSDocumentFragment15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSDocumentFragmentC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16DocumentFragmentEEE
+__ZN7WebCore18JSDocumentFragmentC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16DocumentFragmentEEE
+__ZN7WebCore18JSDocumentFragment18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27JSDocumentFragmentPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSDocumentFragment9classInfoEv
+__ZN7WebCore19setJSNodeOnkeypressEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node13setOnkeypressEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore18JSHTMLTableElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL36createHTMLTableSectionElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore25JSHTMLTableSectionElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSHTMLTableSectionElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23HTMLTableSectionElementEEE
+__ZN7WebCore25JSHTMLTableSectionElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23HTMLTableSectionElementEEE
+__ZN7WebCore25JSHTMLTableSectionElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL32createHTMLTableRowElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore21JSHTMLTableRowElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSHTMLTableRowElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLTableRowElementEEE
+__ZN7WebCore21JSHTMLTableRowElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLTableRowElementEEE
+__ZN7WebCore21JSHTMLTableRowElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore30JSHTMLTableRowElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore21JSHTMLTableRowElement9classInfoEv
+__ZN7WebCore46jsNodePrototypeFunctionCompareDocumentPositionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12RenderObject32handleDynamicFloatPositionChangeEv
+__ZN7WebCore11RenderBlock20childBecameNonInlineEPNS_12RenderObjectE
+__ZN3WTF6VectorIPN7WebCore4NodeELm16EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore4NodeELm16EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore4NodeELm16EE15reserveCapacityEm
+__ZN7WebCore22jsHTMLAnchorElementRelEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement3relEv
+__ZN7WebCore18JSDocumentFragmentD1Ev
+__ZN7WebCore21JSHTMLTableRowElementD1Ev
+__ZN7WebCore25JSHTMLTableSectionElementD1Ev
+__ZN3WTF6VectorIN7WebCore12AtomicStringELm8EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore12AtomicStringELm8EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore12AtomicStringELm8EE15reserveCapacityEm
+__ZNK7WebCore15FontDescription13lighterWeightEv
+__ZN7WebCore32jsDOMWindowPrototypeFunctionOpenEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11JSDOMWindow4openEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore9DOMWindow10allowPopUpEPNS_5FrameE
+__ZN7WebCore42jsNodePrototypeFunctionRemoveEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore6JSNode19removeEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore15JSMimeTypeArray18canGetItemsForNameEPN3JSC9ExecStateEPNS_13MimeTypeArrayERKNS1_10IdentifierE
+__ZN7WebCore13MimeTypeArray18canGetItemsForNameERKNS_12AtomicStringE
+__ZN7WebCore15JSMimeTypeArray10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore13MimeTypeArray9namedItemERKNS_12AtomicStringE
+__ZN7WebCore8MimeTypeC1EN3WTF10PassRefPtrINS_10PluginDataEEEj
+__ZN7WebCore8MimeTypeC2EN3WTF10PassRefPtrINS_10PluginDataEEEj
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_8MimeTypeE
+__ZN7WebCore10JSMimeType15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSMimeTypeC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8MimeTypeEEE
+__ZN7WebCore10JSMimeTypeC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8MimeTypeEEE
+__ZN7WebCore10JSMimeType18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore23jsMimeTypeEnabledPluginEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8MimeType13enabledPluginEv
+__ZNK7WebCore18JSHTMLParamElement9classInfoEv
+__ZN7WebCore35jsNodePrototypeFunctionReplaceChildEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore6JSNode12replaceChildEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN3WTF7HashSetIPN7WebCore10StringImplENS1_15CaseFoldingHashENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_15CaseFoldingHashENS_10HashTraitsIS3_EES8_E6expand
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_15CaseFoldingHashENS_10HashTraitsIS3_EES8_E6rehash
+__ZN3WTF9HashTableIPN7WebCore10StringImplES3_NS_17IdentityExtractorIS3_EENS1_15CaseFoldingHashENS_10HashTraitsIS3_EES8_E13alloc
+__ZN7WebCore20setJSNodeOnmouseoverEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node14setOnmouseoverEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore19setJSNodeOnmouseoutEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node13setOnmouseoutEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore21setJSNodeOnmousewheelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node15setOnmousewheelEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore18jsNodeOnmousewheelEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node12onmousewheelEv
+__ZN7WebCore20jsElementClientWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore7Element11clientWidthEv
+__ZN7WebCore21jsElementClientHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore7Comment9cloneNodeEb
+__ZN7WebCore10JSMimeTypeD1Ev
+__ZN7WebCore10JSMimeTypeD2Ev
+__ZN7WebCore8MimeTypeD1Ev
+__ZN7WebCore8MimeTypeD2Ev
+__ZN7WebCore22jsDOMWindowPageXOffsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7scrollXEv
+__ZN7WebCore22jsDOMWindowPageYOffsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7scrollYEv
+__ZN7WebCore21jsElementScrollHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLBodyElement12scrollHeightEv
+__ZNK7WebCore7Element12scrollHeightEv
+__ZNK7WebCore9RenderBox12scrollHeightEv
+__ZThn4_N7WebCore23TextControlInnerElementD0Ev
+__ZThn64_NK7WebCore16HTMLInputElement11placeholderEv
+__ZN7WebCore22JSHTMLTableCellElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore31jsNodeListPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCoreL21imgToimageConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZThn44_NK7WebCore8Document10virtualURLEv
+__ZN3WTF6VectorIPN7WebCore24OverlapTestRequestClientELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore24OverlapTestRequestClientELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore24OverlapTestRequestClientELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIPN7WebCore24OverlapTestRequestClientELm0EE6shrinkEm
+__ZN7WebCore32jsHTMLSelectElementSelectedIndexEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn44_NK7WebCore8Document18virtualCompleteURLERKNS_6StringE
+__ZN7WebCore19CSSCursorImageValueC1ERKNS_6StringERKNS_8IntPointE
+__ZN7WebCore19CSSCursorImageValueC2ERKNS_6StringERKNS_8IntPointE
+__ZN7WebCore19CSSCursorImageValue23updateIfSVGCursorIsUsedEPNS_7ElementE
+__ZN7WebCore19CSSCursorImageValue11cachedImageEPNS_9DocLoaderE
+__ZN7WebCore11RenderStyle9addCursorEPNS_11CachedImageERKNS_8IntPointE
+__ZN3WTF6VectorIN7WebCore10CursorDataELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore10CursorDataELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore10CursorDataELm0EE15reserveCapacityEm
+__ZThn8_N7WebCore24DocumentThreadableLoader29getShouldUseCredentialStorageEPNS_17SubresourceLoaderERb
+__ZThn8_N7WebCore24DocumentThreadableLoader18didReceiveResponseEPNS_17SubresourceLoaderERKNS_16ResourceResponseE
+__ZThn8_N7WebCore14XMLHttpRequest18didReceiveResponseERKNS_16ResourceResponseE
+__ZThn8_N7WebCore24DocumentThreadableLoader14didReceiveDataEPNS_17SubresourceLoaderEPKci
+__ZThn8_N7WebCore14XMLHttpRequest14didReceiveDataEPKci
+__ZThn8_N7WebCore24DocumentThreadableLoader16didFinishLoadingEPNS_17SubresourceLoaderE
+__ZThn8_N7WebCore14XMLHttpRequest16didFinishLoadingEm
+__ZThn44_N7WebCore8Document33resourceRetrievedByXMLHttpRequestEmRKNS_12ScriptStringE
+__ZThn44_N7WebCore8Document10addMessageENS_18MessageDestinationENS_13MessageSourceENS_12MessageLevelERKNS_6StringEjS6_
+__ZN7WebCoreL10cornerRectEPKNS_11RenderLayerERKNS_7IntRectE
+__ZN7WebCoreL14modConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore14HTMLModElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14HTMLModElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore14HTMLModElement17endTagRequirementEv
+__ZNK7WebCore14HTMLModElement11tagPriorityEv
+__ZN7WebCore24jsHTMLIFrameElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLIFrameElement5widthEv
+__ZN7WebCore25jsHTMLIFrameElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLIFrameElement6heightEv
+__ZN7WebCore32jsHTMLIFrameElementContentWindowEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore21HTMLFrameOwnerElement13contentWindowEv
+__ZN7WebCore39jsDOMWindowPrototypeFunctionPostMessageEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11JSDOMWindow11postMessageEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore9DOMWindow11postMessageERKNS_6StringEPNS_11MessagePortES3_PS0_Ri
+__ZN7WebCore12MessageEventC1ERKNS_6StringES3_S3_N3WTF10PassRefPtrINS_9DOMWindowEEENS5_INS_11MessagePortEEE
+__ZN7WebCore12MessageEventC2ERKNS_6StringES3_S3_N3WTF10PassRefPtrINS_9DOMWindowEEENS5_INS_11MessagePortEEE
+__ZN7WebCore26jsHTMLSelectElementOptionsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17HTMLSelectElement7optionsEv
+__ZN7WebCore21HTMLOptionsCollection6createEN3WTF10PassRefPtrINS_17HTMLSelectElementEEE
+__ZN7WebCore21HTMLOptionsCollectionC1EN3WTF10PassRefPtrINS_17HTMLSelectElementEEE
+__ZN7WebCore21HTMLOptionsCollectionC2EN3WTF10PassRefPtrINS_17HTMLSelectElementEEE
+__ZN7WebCore23JSHTMLOptionsCollection15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSHTMLCollectionPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSHTMLOptionsCollectionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21HTMLOptionsCollectionEEE
+__ZN7WebCore23JSHTMLOptionsCollectionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21HTMLOptionsCollectionEEE
+__ZN7WebCore23JSHTMLOptionsCollection3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore32setJSHTMLOptionsCollectionLengthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore23JSHTMLOptionsCollection9setLengthEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore21HTMLOptionsCollection9setLengthEjRi
+__ZN7WebCore17HTMLSelectElement9setLengthEjRi
+__ZNK7WebCore17HTMLSelectElement6lengthEv
+__ZThn4_N7WebCore17HTMLOptionElementD0Ev
+__ZN7WebCore25jsHTMLSelectElementLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsDOMWindowOptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow6optionEPN3JSC9ExecStateE
+__ZN7WebCore19JSOptionConstructorC1EPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectE
+__ZN7WebCore19JSOptionConstructorC2EPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectE
+__ZN7WebCore28JSHTMLOptionElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSOptionConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCoreL26constructHTMLOptionElementEPN3JSC9ExecStateEPNS0_8JSObjectERKNS0_7ArgListE
+__ZNK7WebCore19JSOptionConstructor8documentEv
+__ZN7WebCore17HTMLOptionElement8setValueERKNS_6StringE
+__ZN7WebCore17HTMLOptionElement18setDefaultSelectedEb
+__ZN7WebCore17HTMLOptionElement11setSelectedEb
+__ZN7WebCore23JSHTMLOptionsCollection3putEPN3JSC9ExecStateEjNS1_7JSValueE
+__ZN7WebCore23JSHTMLOptionsCollection11indexSetterEPN3JSC9ExecStateEjNS1_7JSValueE
+__ZN7WebCore17selectIndexSetterEPNS_17HTMLSelectElementEPN3JSC9ExecStateEjNS2_7JSValueE
+__ZN7WebCore19toHTMLOptionElementEN3JSC7JSValueE
+__ZNK7WebCore19JSHTMLOptionElement9classInfoEv
+__ZN7WebCore17HTMLSelectElement9setOptionEjPNS_17HTMLOptionElementERi
+__ZN7WebCore17HTMLSelectElement3addEPNS_11HTMLElementES2_Ri
+__ZN7WebCore19JSOptionConstructor4markEv
+__ZThn4_N7WebCore16HTMLInputElementD0Ev
+__ZN7WebCore23JSHTMLOptionsCollectionD1Ev
+__ZN7WebCore21HTMLOptionsCollectionD0Ev
+__ZN7WebCore19jsNodeOnselectstartEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node13onselectstartEv
+__ZN7WebCore22setJSNodeOnselectstartEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node16setOnselectstartEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore44jsHTMLDocumentPrototypeFunctionCaptureEventsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12HTMLDocument13captureEventsEv
+__ZN7WebCore41jsDOMWindowPrototypeFunctionCaptureEventsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow13captureEventsEv
+__ZN7WebCore20setJSNodeOnmousemoveEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node14setOnmousemoveEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore18setJSNodeOnmouseupEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node12setOnmouseupEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore21setJSDOMWindowScrollXEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN3WTFeqIN7WebCore10CursorDataELm0EEEbRKNS_6VectorIT_XT0_EEES7_
-__ZN7WebCore17HTMLOptionElement10optionTextEv
-__ZNK7WebCore17HTMLOptionElement4textEv
-__ZNK7WebCore8Document25backslashAsCurrencySymbolEv
-__ZNK7WebCore6String18simplifyWhiteSpaceEv
-__ZN7WebCore10StringImpl18simplifyWhiteSpaceEv
-__ZN7WebCore12TextDocumentC2EPNS_17DOMImplementationEPNS_5FrameE
-__ZN7WebCore12TextDocument15createTokenizerEv
-__ZN7WebCore13TextTokenizerC2EPNS_8DocumentE
-__ZN7WebCore13TextTokenizer5writeERKNS_15SegmentedStringEb
-__ZN7WebCore13TextTokenizer6finishEv
-__ZN7WebCore13TextTokenizerD1Ev
-__ZN7WebCore12EventHandler37selectClosestWordOrLinkFromMouseEventERKNS_28MouseEventWithHitTestResultsE
-__ZN7WebCore9Selection27selectionFromContentsOfNodeEPNS_4NodeE
-__ZN7WebCore11RenderBlock20fillLeftSelectionGapEPNS_12RenderObjectEiiiPS0_iiiiPKNS1_9PaintInfoE
--[WebCoreMenuTarget forwardContextMenuAction:]
-__ZN7WebCore21ContextMenuController23contextMenuItemSelectedEPNS_15ContextMenuItemE
-__ZN7WebCore14ResourceHandle12releaseProxyEv
-__ZNK7WebCore14ResourceHandle10connectionEv
-__ZN7WebCore15StringTruncator5widthERKNS_6StringERKNS_4FontEb
-__ZN7WebCore15BackForwardList11itemAtIndexEi
-__ZN7WebCore15BackForwardList16forwardListCountEv
+__ZN7WebCore16PostMessageTimer5firedEv
+__ZN7WebCore9DOMWindow21postMessageTimerFiredEPNS_16PostMessageTimerE
+__ZN7WebCore16PostMessageTimerD0Ev
+__ZN7WebCore12MessageEventD0Ev
+__ZN7WebCore22setJSElementScrollLeftEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore7Element13setScrollLeftEi
-__ZN7WebCore12RenderObject13setScrollLeftEi
-__ZN3KJS6Plugin11indexGetterEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZN3KJS54jsXMLHttpRequestPrototypeFunctionGetAllResponseHeadersEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK7WebCore14XMLHttpRequest21getAllResponseHeadersERi
-__ZNK7WebCore20ResourceResponseBase16httpHeaderFieldsEv
-__ZN7WebCore18normalErrorHandlerEPvPKcz
-__ZN7WebCore12XMLTokenizer5errorENS0_9ErrorTypeEPKcPc
-__ZNK7WebCore12XMLTokenizer12columnNumberEv
-__ZNK7WebCore12XMLTokenizer10lineNumberEv
-__ZN7WebCore12XMLTokenizer11handleErrorENS0_9ErrorTypeEPKcii
-__ZN7WebCore12XMLTokenizer23insertErrorMessageBlockEv
-__ZN7WebCore21createTableColWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore21JSHTMLTableColElementC1EPN3KJS8JSObjectEPNS_19HTMLTableColElementE
-__ZN7WebCore21JSHTMLTableColElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore21JSHTMLTableColElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZNK7WebCore16HTMLTableElement5tHeadEv
-__ZN3KJS17staticValueGetterIN7WebCore25JSHTMLTableSectionElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore25JSHTMLTableSectionElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore25JSHTMLTableSectionElement4implEv
-__ZN7WebCore23HTMLTableSectionElement4rowsEv
-__ZN7WebCore19HTMLTableRowElement5cellsEv
-__ZN7WebCore14RenderTableCol27absoluteClippedOverflowRectEv
-__ZN7WebCore14commentHandlerEPvPKh
-__ZN7WebCore12XMLTokenizer7commentEPKh
-__ZNK7WebCore22JSHTMLParagraphElement9classInfoEv
-__ZNK7WebCore17HTMLAnchorElement4hashEv
-__ZN7WebCoreplEcRKNS_16DeprecatedStringE
-__ZNK7WebCore17CSSInheritedValue7cssTextEv
-__ZN7WebCore17appletConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLAppletElementC2EPNS_8DocumentE
+__ZN7WebCore9RenderBox13setScrollLeftEi
+__ZN7WebCore18jsDOMWindowScrollYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25setJSXMLHttpRequestOnloadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore26setJSXMLHttpRequestOnerrorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZNK7WebCore9FloatRectcv7_NSRectEv
+__ZN7WebCore23jsDOMWindowFrameElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow12frameElementEv
+__ZN7WebCore22jsHTMLScriptElementSrcEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLScriptElement3srcEv
+__ZNK7WebCore27XMLHttpRequestProgressEvent29isXMLHttpRequestProgressEventEv
+__ZN7WebCore15getDOMStructureINS_29JSXMLHttpRequestProgressEventEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore29JSXMLHttpRequestProgressEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSProgressEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSXMLHttpRequestProgressEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_27XMLHttpRequestProgressEventEEE
+__ZN7WebCore29JSXMLHttpRequestProgressEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_27XMLHttpRequestProgressEventEEE
+__ZN7WebCore35setJSHTMLSelectElementSelectedIndexEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9JSComment18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27JSHTMLTableElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSHTMLTableElement9classInfoEv
+__ZN7WebCore34JSHTMLTableSectionElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSHTMLTableSectionElement9classInfoEv
+__ZN7WebCore28JSHTMLSelectElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore19JSHTMLSelectElement9classInfoEv
+__ZNK7WebCore18JSHTMLEmbedElement9classInfoEv
+__ZN7WebCore30nonCachingStaticFunctionGetterIXadL_ZNS_39jsDOMWindowPrototypeFunctionPostMessageEPN3JSC9ExecStateEPNS1_8JSObject
+__ZN7WebCore18JSHTMLStyleElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore25setJSHTMLStyleElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLStyleElement7setTypeERKNS_12AtomicStringE
+__ZN7WebCore25setJSHTMLElementInnerTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore31setJSCSSStyleDeclarationCssTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16jsNodeOnmouseoutEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node10onmouseoutEv
+__ZN7WebCore26setJSHTMLIFrameElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLFrameElementBase7setNameERKNS_6StringE
+__ZN7WebCore31setJSHTMLIFrameElementScrollingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLFrameElementBase12setScrollingERKNS_6StringE
+__ZNK7WebCore12RenderInline30relativePositionedInlineOffsetEPKNS_9RenderBoxE
+__ZNK7WebCore12RenderInline9offsetTopEv
+__ZNK7WebCore12RenderInline10offsetLeftEv
+__ZN7WebCore16FixedTableLayoutC1EPNS_11RenderTableE
+__ZN7WebCore16FixedTableLayoutC2EPNS_11RenderTableE
+__ZN7WebCore16FixedTableLayout14calcPrefWidthsERiS1_
+__ZN7WebCore16FixedTableLayout14calcWidthArrayEi
+__ZN3WTF6VectorIN7WebCore6LengthELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore6LengthELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIN7WebCore6LengthELm0EE4fillERKS2_m
+__ZSt4fillIPN7WebCore6LengthES1_EvT_S3_RKT0_
+__ZN7WebCore16FixedTableLayout6layoutEv
+__ZN7WebCore29JSXMLHttpRequestProgressEventD1Ev
+__ZThn268_N7WebCore11CachedImage20shouldPauseAnimationEPKNS_5ImageE
+__ZN7WebCore23jsHTMLImageElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement5widthEb
+__ZN7WebCore22jsHTMLParamElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLParamElementValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsDOMWindowDocumentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21ApplicationCacheGroup27fallbackCacheForMainRequestERKNS_15ResourceRequestEPNS_14DocumentLoaderE
+__ZN7WebCore23ApplicationCacheStorage24fallbackCacheGroupForURLERKNS_4KURLE
+__ZNK7WebCore11FrameLoader23isHostedByObjectElementEv
+__ZN7WebCore11FrameLoader21handleFallbackContentEv
+__ZN7WebCoreL12radioMarginsEj
+__ZN7WebCore5Image12supportsTypeERKNS_6StringE
+__ZN7WebCore16MIMETypeRegistry32isSupportedImageResourceMIMETypeERKNS_6StringE
+__ZN7WebCore13ImageDocumentC1EPNS_5FrameE
+__ZN7WebCore13ImageDocumentC2EPNS_5FrameE
+__ZNK7WebCore13ImageDocument17shouldShrinkToFitEv
+__ZN7WebCore13ImageDocument15createTokenizerEv
+__ZNK7WebCore14ImageTokenizer12wantsRawDataEv
+__ZN7WebCore14ImageTokenizer12writeRawDataEPKci
+__ZN7WebCore13ImageDocument11cachedImageEv
+__ZN7WebCore13ImageDocument23createDocumentStructureEv
+__ZNK7WebCore14DocumentLoader16mainResourceDataEv
+__ZN7WebCore13ImageDocument12imageChangedEv
+__ZN7WebCore14ImageTokenizer6finishEv
+__ZNK7WebCore14DocumentLoader25isLoadingMultipartContentEv
+__ZNK7WebCore4KURL17lastPathComponentEv
+__ZN7WebCore10imageTitleERKNS_6StringERKNS_7IntSizeE
+__ZN7WebCore14ImageTokenizerD0Ev
+__ZN7WebCore20jsNamedNodeMapLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSNamedNodeMap18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore14JSNamedNodeMap11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZNK7WebCore12NamedNodeMap4itemEj
+__ZN7WebCore6JSAttr18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore10jsAttrNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11jsAttrValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLAreaElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore17JSHTMLAreaElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore23jsHTMLIFrameElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLFrameElementBase4nameEv
+__ZN3WTF9HashTableIjSt4pairIjNS_6RefPtrIN7WebCore17CSSPrimitiveValueEEEENS_18PairFirstExtractorIS6_EENS_7IntHashIjEENS_14PairHa
+__ZN7WebCore17jsHTMLElementLangEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11HTMLElement4langEv
+__ZN7WebCore20jsHTMLLinkElementRelEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLLinkElement3relEv
+__ZN7WebCore11RenderTable16overflowClipRectEii
+__ZN7WebCore6JSAttrD1Ev
+__ZN7WebCore40jsDocumentPrototypeFunctionQuerySelectorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19jsCharacterDataDataEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsHTMLMetaElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLMetaElement4nameEv
+__ZN7WebCore21jsHTMLFormElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLFormElement4nameEv
+__ZN7WebCore16JSDOMWindowShell15unwrappedObjectEv
+__ZNK3JSC14JSGlobalObject14isGlobalObjectEv
+__ZN7WebCore16HTMLEmbedElement13canLazyAttachEv
+__ZN7WebCore18MainResourceLoader7didFailERKNS_13ResourceErrorE
+__ZN7WebCore18MainResourceLoader13receivedErrorERKNS_13ResourceErrorE
+__ZN7WebCore23setJSHTMLLinkElementRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLLinkElement6setRelERKNS_6StringE
+__ZN7WebCore24setJSHTMLLinkElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLLinkElement7setTypeERKNS_6StringE
+__ZN7WebCore25setJSHTMLLinkElementMediaEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLLinkElement8setMediaERKNS_6StringE
+__ZN7WebCore27setJSHTMLIFrameElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLIFrameElement8setWidthERKNS_6StringE
+__ZN7WebCore28setJSHTMLIFrameElementHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLIFrameElement9setHeightERKNS_6StringE
+__ZN7WebCore33setJSHTMLIFrameElementMarginWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLFrameElementBase14setMarginWidthERKNS_6StringE
+__ZN7WebCore34setJSHTMLIFrameElementMarginHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLFrameElementBase15setMarginHeightERKNS_6StringE
+__ZThn4_N7WebCore15HTMLHtmlElementD0Ev
+__ZN7WebCore11FrameLoader15didExplicitOpenEv
+__ZN7WebCore36jsHTMLDocumentPrototypeFunctionCloseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore26setJSHTMLObjectElementDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLObjectElement7setDataERKNS_6StringE
+__ZN7WebCore26setJSHTMLObjectElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLObjectElement7setTypeERKNS_6StringE
+__ZN7WebCore18JSHTMLParamElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore25setJSHTMLParamElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLParamElement7setNameERKNS_6StringE
+__ZN7WebCore26setJSHTMLParamElementValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLParamElement8setValueERKNS_6StringE
+__ZN7WebCore27RenderTextControlInnerBlock16positionForPointERKNS_8IntPointE
+__ZN7WebCore5Frame27doTextFieldCommandFromEventEPNS_7ElementEPNS_13KeyboardEventE
+__ZNK7WebCore23BeforeTextInsertedEvent25isBeforeTextInsertedEventEv
+__ZN7WebCore12InputElement29handleBeforeTextInsertedEventERNS_16InputElementDataEPNS_8DocumentEPNS_5EventE
+__ZN7WebCoreL19numGraphemeClustersEPNS_10StringImplE
+__ZN7WebCore20CompositeEditCommand10appendNodeEN3WTF10PassRefPtrINS_4NodeEEENS2_INS_7ElementEEE
+__ZN7WebCore17AppendNodeCommandC1EN3WTF10PassRefPtrINS_7ElementEEENS2_INS_4NodeEEE
+__ZN7WebCore17AppendNodeCommandC2EN3WTF10PassRefPtrINS_7ElementEEENS2_INS_4NodeEEE
+__ZN7WebCore17AppendNodeCommand7doApplyEv
+__ZN7WebCore27RenderTextControlSingleLine17subtreeHasChangedEv
+__ZN7WebCore17RenderTextControl17subtreeHasChangedEv
+__ZThn64_N7WebCore16HTMLInputElement20setValueFromRendererERKNS_6StringE
+__ZN7WebCore16HTMLInputElement20setValueFromRendererERKNS_6StringE
+__ZN7WebCore12InputElement20setValueFromRendererERNS_16InputElementDataEPNS_8DocumentERKNS_6StringE
+__ZThn64_NK7WebCore16HTMLInputElement30searchEventsShouldBeDispatchedEv
+__ZNK7WebCore16HTMLInputElement30searchEventsShouldBeDispatchedEv
+__ZN7WebCore5Frame24textFieldDidBeginEditingEPNS_7ElementE
+-[DOMHTMLInputElement value]
+__ZN7WebCore5Frame24textDidChangeInTextFieldEPNS_7ElementE
+-[DOMHTMLInputElement form]
+__Z3kitPN7WebCore15HTMLFormElementE
+-[DOMHTMLFormElement action]
+__ZNK7WebCore15HTMLFormElement6actionEv
+-[DOMHTMLInputElement(FormPromptAdditions) _isEdited]
+-[DOMHTMLInputElement disabled]
+__ZN7WebCore5Frame25matchLabelsAgainstElementEP7NSArrayPNS_7ElementE
+__ZN7WebCore7replaceERNS_6StringERKNS_17RegularExpressionERKS0_
+__ZN7WebCore17RegularExpressionD1Ev
+__ZN7WebCore17RegularExpressionD2Ev
+__ZN7WebCore17RegularExpression7PrivateD1Ev
+__ZN7WebCore17RegularExpression7PrivateD2Ev
+__ZN7WebCoreL15regExpForLabelsEP7NSArray
+__ZN3WTF6VectorIPN7WebCore17RegularExpressionELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore17RegularExpressionELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore17RegularExpressionELm0EE15reserveCapacityEm
+__ZN7WebCore5Frame28searchForLabelsBeforeElementEP7NSArrayPNS_7ElementE
+__ZNK7WebCore17RegularExpression9searchRevERKNS_6StringE
+__ZNK7WebCore17RegularExpression13matchedLengthEv
+__ZNK7WebCore6Editor7Command7executeEPNS_5EventE
+__ZN7WebCoreL21enabledInEditableTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCoreL20executeInsertNewlineEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL11targetFrameEPNS_5FrameEPNS_5EventE
+__ZNK7WebCore6Editor13canEditRichlyEv
+__ZN7WebCore22HTMLFormControlElement8onChangeEv
+__ZN7WebCore15HTMLFormElement11submitClickEPNS_5EventE
+__ZNK7WebCore16HTMLInputElement24isSuccessfulSubmitButtonEv
+__ZN7WebCore4Node22dispatchSimulatedClickEN3WTF10PassRefPtrINS_5EventEEEbb
+__ZN7WebCore4Node27dispatchSimulatedMouseEventERKNS_12AtomicStringEN3WTF10PassRefPtrINS_5EventEEE
+__ZN7WebCore15HTMLFormElement13prepareSubmitEPNS_5EventE
+__ZNK7WebCore16HTMLInputElement17isActivatedSubmitEv
+-[DOMDocument URL]
+__ZN7WebCore27runtimeObjectPropertyGetterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEPNS2_8Bindings6MethodENS_7StrHashIS5_EENS_10HashTraitsIS5_EENSB_IS8_EEE3setEPS4
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_PNS2_8Bindings6MethodEENS_18PairFirstExtractorISA_EENS_7StrHashIS5
+__ZN3WTF6VectorIPN3JSC8Bindings6MethodELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorIPN3JSC8Bindings6MethodELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN3JSC8Bindings6MethodELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIPN3JSC8Bindings6MethodELm0EE6shrinkEm
+__ZN3JSC16RuntimeObjectImp12methodGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN3JSC13RuntimeMethodC1EPNS_9ExecStateERKNS_10IdentifierERN3WTF6VectorIPNS_8Bindings6MethodELm0EEE
+__ZN3JSC13RuntimeMethodC2EPNS_9ExecStateERKNS_10IdentifierERN3WTF6VectorIPNS_8Bindings6MethodELm0EEE
+__ZN3WTF6VectorIPN3JSC8Bindings6MethodELm0EEC1ERKS5_
+__ZN3WTF6VectorIPN3JSC8Bindings6MethodELm0EEC2ERKS5_
+__ZN3JSC13RuntimeMethod11getCallDataERNS_8CallDataE
+__ZN3JSCL17callRuntimeMethodEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN7WebCore18JSHTMLEmbedElement10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore19runtimeObjectGetterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK3JSC16RuntimeObjectImp9classInfoEv
+__ZN3JSC8Bindings9CInstance12invokeMethodEPNS_9ExecStateERKN3WTF6VectorIPNS0_6MethodELm0EEERKNS_7ArgListE
+__ZN3JSC8Bindings9CInstance30moveGlobalExceptionToExecStateEPNS_9ExecStateE
+__ZN3JSC8BindingsL21globalExceptionStringEv
+__ZN3JSC8Bindings23convertNPVariantToValueEPNS_9ExecStateEPK10_NPVariantPNS0_10RootObjectE
+__ZN3WTF6VectorI10_NPVariantLm8EE6shrinkEm
+__ZN7WebCore18JSHTMLEmbedElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore18JSHTMLEmbedElement9customPutEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore18JSHTMLLabelElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore18JSHTMLTableElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore25JSHTMLTableSectionElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore21JSHTMLTableRowElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN3JSC16RuntimeObjectImp10invalidateEv
+__ZN7WebCore17AppendNodeCommandD0Ev
+__ZN7WebCore13MimeTypeArrayD1Ev
+__ZThn4_N7WebCore11EditingTextD0Ev
+__ZN3JSC13RuntimeMethodD1Ev
+__ZN7WebCore15HTMLLinkElement19removedFromDocumentEv
+__ZN7WebCore16HTMLEmbedElement19removedFromDocumentEv
+__ZThn4_N7WebCore15HTMLLinkElementD0Ev
+__ZN7WebCore21JSClientRectPrototypeD1Ev
+__ZN7WebCore24JSMimeTypeArrayPrototypeD1Ev
+__ZN7WebCore18JSHistoryPrototypeD1Ev
+__ZN7WebCore27JSHTMLStyleElementPrototypeD1Ev
+__ZThn4_N7WebCore16HTMLUListElementD0Ev
+__ZN7WebCore28JSHTMLObjectElementPrototypeD1Ev
+__ZN7WebCore27JSHTMLParamElementPrototypeD1Ev
+__ZN7WebCore27JSHTMLEmbedElementPrototypeD1Ev
+__ZN7WebCore31JSHTMLParagraphElementPrototypeD1Ev
+__ZN7WebCore27JSHTMLLabelElementPrototypeD1Ev
+__ZN7WebCore27JSHTMLTableElementPrototypeD1Ev
+__ZN7WebCore34JSHTMLTableSectionElementPrototypeD1Ev
+__ZN7WebCore30JSHTMLTableRowElementPrototypeD1Ev
+__ZN7WebCore31JSHTMLTableCellElementPrototypeD1Ev
+__ZN7WebCore16HTMLLabelElement9setActiveEbb
+__ZN7WebCore16HTMLLabelElement10setHoveredEb
+__ZN7WebCore16HTMLLabelElement20correspondingControlEv
+__ZN7WebCore26CSSMutableStyleDeclarationaSERKS0_
+__ZThn4_N7WebCore17HTMLObjectElementD0Ev
+__ZN7WebCore19JSHTMLOptionElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore15PurgeableBufferD1Ev
+__ZN7WebCore15PurgeableBufferD2Ev
+__ZN7WebCore30JSHTMLAnchorElementConstructorD1Ev
+__ZN7WebCore27JSHTMLDivElementConstructorD1Ev
+__ZN7WebCore27JSHTMLDListElementPrototypeD1Ev
+__ZN7WebCore28JSHTMLOptionElementPrototypeD1Ev
+__ZNK7WebCore16HTMLImageElement17canStartSelectionEv
+__ZN7WebCoreL17appletConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLAppletElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17HTMLAppletElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore17HTMLAppletElement20parseMappedAttributeEPNS_15MappedAttributeE
__ZNK7WebCore17HTMLAppletElement11tagPriorityEv
__ZN7WebCore17HTMLAppletElement20insertedIntoDocumentEv
-__ZN7WebCore17HTMLAppletElement21finishParsingChildrenEv
-__ZN7WebCore17HTMLAppletElement6detachEv
__ZN7WebCore17HTMLAppletElement16rendererIsNeededEPNS_11RenderStyleE
__ZN7WebCore17HTMLAppletElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN3WTF7HashMapIN7WebCore6StringES2_NS1_10StringHashENS_10HashTraitsIS2_EES5_E3setERKS2_S8_
__ZN7WebCore12RenderAppletC1EPNS_17HTMLAppletElementERKN3WTF7HashMapINS_6StringES5_NS_10StringHashENS3_10HashTraitsIS5_EES8_EE
+__ZN7WebCore12RenderAppletC2EPNS_17HTMLAppletElementERKN3WTF7HashMapINS_6StringES5_NS_10StringHashENS3_10HashTraitsIS5_EES8_EE
+__ZN7WebCore17HTMLAppletElement21finishParsingChildrenEv
__ZN7WebCore12RenderApplet6layoutEv
__ZN7WebCore12RenderApplet23createWidgetIfNecessaryEv
-__ZN7WebCore11FrameLoader22createJavaAppletWidgetERKNS_7IntSizeEPNS_7ElementERKN3WTF7HashMapINS_6StringES8_NS_10StringHashENS6_10HashTraitsIS8_EESB_EE
-__ZN7WebCore6WidgetC1Ev
-__ZN7WebCore12RenderWidget20updateWidgetPositionEv
-__ZN7WebCore12RenderAppletD1Ev
-__ZN7WebCore17HTMLAppletElementD1Ev
-__ZNK3KJS40StringInstanceThatMasqueradesAsUndefined21masqueradeAsUndefinedEv
-__ZN3KJS40StringInstanceThatMasqueradesAsUndefinedD0Ev
-__ZNK7WebCore21JSMouseEventPrototype9classInfoEv
-__ZNK7WebCore18JSUIEventPrototype9classInfoEv
-__ZNK7WebCore10MouseEvent11fromElementEv
-__ZNK7WebCore10MouseEvent11isDragEventEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_9ClipboardE
-__ZNK7WebCore17MouseRelatedEvent6layerYEv
-__ZNK7WebCore7UIEvent8charCodeEv
-__ZNK7WebCore17MouseRelatedEvent6layerXEv
-__ZN7WebCore24JSCSSStyleSheetPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore39jsCSSStyleSheetPrototypeFunctionAddRuleEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore11FrameLoader22createJavaAppletWidgetERKNS_7IntSizeEPNS_17HTMLAppletElementERKN3WTF7HashMapINS_6StringES8_NS_10Stri
+__ZN7WebCore17jsDocumentAppletsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8Document7appletsEv
+__ZN7WebCoreL30createHTMLAppletElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLAppletElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLAppletElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLAppletElementEEE
+__ZN7WebCore19JSHTMLAppletElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLAppletElementEEE
+__ZN7WebCore19JSHTMLAppletElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19JSHTMLAppletElement18canGetItemsForNameEPN3JSC9ExecStateEPNS_17HTMLAppletElementERKNS1_10IdentifierE
+__ZN7WebCore19JSHTMLAppletElement24customGetOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17HTMLAppletElement25renderWidgetForJSBindingsEv
+__ZN3JSC8Bindings12JavaInstanceC1EP8_jobjectN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZN3JSC8Bindings12JavaInstanceC2EP8_jobjectN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZN3JSC8Bindings14JObjectWrapperC1EP8_jobject
+__ZN3JSC8Bindings14JObjectWrapperC2EP8_jobject
+__ZN3JSC8Bindings9getJNIEnvEv
+__ZN3JSC8Bindings9getJavaVMEv
+__ZN3JSC8BindingsL21KJS_GetCreatedJavaVMsEPP7JavaVM_lPl
+__ZN3JSC8Bindings12JavaInstance12virtualBeginEv
+__ZNK3JSC8Bindings12JavaInstance8getClassEv
+__ZN3JSC8Bindings9JavaClassC1EP8_jobject
+__ZN3JSC8Bindings9JavaClassC2EP8_jobject
+__ZN3JSC8Bindings13callJNIMethodIP8_jobjectEET_S3_PKcS6_z
+__ZN3JSC8BindingsL14callJNIMethodVIP8_jobjectEET_S3_PKcS6_Pc
+__ZN3JSC8Bindings24getCharactersFromJStringEP8_jstring
+__ZN3JSC8Bindings29getCharactersFromJStringInEnvEP7JNIEnv_P8_jstring
+__ZN3JSC8Bindings27releaseCharactersForJStringEP8_jstringPKc
+__ZN3JSC8Bindings32releaseCharactersForJStringInEnvEP7JNIEnv_P8_jstringPKc
+__ZN3JSC8Bindings9JavaFieldC1EP7JNIEnv_P8_jobject
+__ZN3JSC8Bindings9JavaFieldC2EP7JNIEnv_P8_jobject
+__ZN3JSC8Bindings30getUCharactersFromJStringInEnvEP7JNIEnv_P8_jstring
+__ZN3JSC8Bindings33releaseUCharactersForJStringInEnvEP7JNIEnv_P8_jstringPKt
+__ZN3JSC8Bindings20JNITypeFromClassNameEPKc
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEPNS2_8Bindings5FieldENS_7StrHashIS5_EENS_10HashTraitsIS5_EENSB_IS8_EEE3setEPS4_
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_PNS2_8Bindings5FieldEENS_18PairFirstExtractorISA_EENS_7StrHashIS5_
+__ZN3JSC8Bindings10JavaMethodC1EP7JNIEnv_P8_jobject
+__ZN3JSC8Bindings10JavaMethodC2EP7JNIEnv_P8_jobject
+__ZN3JSC8Bindings13callJNIMethodIlEET_P8_jobjectPKcS6_z
+__ZN3JSC8BindingsL14callJNIMethodVIlEET_P8_jobjectPKcS6_Pc
+__ZN3JSC8Bindings19callJNIStaticMethodIhEET_P7_jclassPKcS6_z
+__ZN7JNIEnv_23CallStaticBooleanMethodEP7_jclassP10_jmethodIDz
+__ZNK3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEPNS_6VectorIPNS2_8Bindings6MethodELm0EEENS_7StrHashIS5_EENS_10HashTraitsIS5_EE
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC7UString3RepEEEPNS_6VectorIPNS2_8Bindings6MethodELm0EEENS_7StrHashIS5_EENS_10HashTraitsIS5_EEN
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC7UString3RepEEESt4pairIS5_PNS_6VectorIPNS2_8Bindings6MethodELm0EEEENS_18PairFirstExtractorIS
+__ZN3JSC8Bindings13JavaParameterC1EP7JNIEnv_P8_jstring
+__ZN3JSC8Bindings13JavaParameterC2EP7JNIEnv_P8_jstring
+__ZNK3JSC8Bindings9JavaClass10fieldNamedERKNS_10IdentifierEPNS0_8InstanceE
+__ZNK3JSC8Bindings9JavaClass12methodsNamedERKNS_10IdentifierEPNS0_8InstanceE
+__ZN3JSC8Bindings12JavaInstance10virtualEndEv
+__ZNK7WebCore19JSHTMLAppletElement9classInfoEv
+__ZN7WebCore19JSHTMLAppletElement10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN3JSC8Bindings12JavaInstance12invokeMethodEPNS_9ExecStateERKN3WTF6VectorIPNS0_6MethodELm0EEERKNS_7ArgListE
+__ZNK3JSC8Bindings10JavaMethod13numParametersEv
+__ZN3JSC8Bindings20convertValueToJValueEPNS_9ExecStateENS_7JSValueE7JNITypePKc
+__ZNK3JSC8Bindings10RootObject12nativeHandleEv
+__ZNK3JSC8Bindings10JavaMethod8methodIDEP8_jobject
+__ZNK3JSC8Bindings10JavaMethod9signatureEv
+__ZN3JSC8Bindings26signatureFromPrimitiveTypeE7JNIType
+__ZL15appendClassNameRN3JSC7UStringEPKc
+__ZN3JSC8Bindings11getMethodIDEP8_jobjectPKcS4_
+__ZNK3JSC8Bindings10JavaMethod13JNIReturnTypeEv
+__ZN3JSC8Bindings15dispatchJNICallEPNS_9ExecStateEPKvP8_jobjectb7JNITypeP10_jmethodIDP6jvalueRSA_PKcRNS_7JSValueE
+__ZN7WebCoreL27createHTMLModElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore16JSHTMLModElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSHTMLModElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14HTMLModElementEEE
+__ZN7WebCore16JSHTMLModElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14HTMLModElementEEE
+__ZN7WebCore16JSHTMLModElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore10ShadowDataeqERKS0_
+__ZN3WTF6VectorIN7WebCore10CursorDataELm0EE6shrinkEm
+__ZN7WebCoreL15checkboxMarginsEj
+__ZN7WebCore21jsHTMLEmbedElementSrcEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLEmbedElement3srcEv
+__ZN7WebCore19jsNodeParentElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11FrameLoader21fileDoesNotExistErrorERKNS_16ResourceResponseE
+__ZN7WebCore26NetscapePlugInStreamLoader9didCancelERKNS_13ResourceErrorE
+__ZN7WebCore10IconLoaderD0Ev
+__ZN7WebCore19JSHTMLAppletElementD1Ev
+__ZN7WebCore16JSHTMLModElementD1Ev
+__ZThn4_N7WebCore16HTMLEmbedElementD0Ev
+__ZN7WebCore16HTMLTitleElement19removedFromDocumentEv
+__ZN7WebCore8Document11removeTitleEPNS_7ElementE
+__ZN7WebCore16HTMLStyleElement19removedFromDocumentEv
+__ZN7WebCore12StyleElement19removedFromDocumentEPNS_8DocumentE
+__ZN7WebCore5XPathL10isAxisNameERKNS_6StringERNS0_4Step4AxisE
+__ZN7WebCore5XPathL17setUpAxisNamesMapERN3WTF7HashMapINS_6StringENS0_4Step4AxisENS_10StringHashENS1_10HashTraitsIS3_EENS7_IS5_E
+__ZN3WTF7HashMapIN7WebCore6StringENS1_5XPath4Step4AxisENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3setERKS2_RKS5_
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS1_5XPath4Step4AxisEENS_18PairFirstExtractorIS7_EENS1_10StringHashENS_14PairHas
+__ZN7WebCore5XPathL13createFunLastEv
+__ZN7WebCore5XPath6FilterC1EPNS0_10ExpressionERKN3WTF6VectorIPNS0_9PredicateELm0EEE
+__ZN7WebCore5XPath6FilterC2EPNS0_10ExpressionERKN3WTF6VectorIPNS0_9PredicateELm0EEE
+__ZNK7WebCore5XPath6Filter8evaluateEv
+__ZN7WebCore5XPath5Value17modifiableNodeSetEv
+__ZNK7WebCore5XPath7FunLast8evaluateEv
+__ZNK7WebCore5XPath5Value8toNumberEv
+__ZN7WebCore5XPath6NumberC1Ed
+__ZN7WebCore5XPath6NumberC2Ed
+__ZN7WebCore5XPathL17createFunPositionEv
+__ZNK7WebCore5XPath11FunPosition8evaluateEv
+__ZNK7WebCore5XPath6Number8evaluateEv
+__ZN7WebCore5XPath11FunPositionD0Ev
+__ZN7WebCore5XPath6NumberD0Ev
+__ZN7WebCore5XPath6FilterD0Ev
+__ZN7WebCore5XPath7FunLastD0Ev
+__ZN7WebCore23jsHTMLAnchorElementHostEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement4hostEv
+__ZN7WebCore5XPath6Parser9lexNumberEv
+__ZN7WebCore5XPath9NumericOpC1ENS1_6OpcodeEPNS0_10ExpressionES4_
+__ZN7WebCore5XPath9NumericOpC2ENS1_6OpcodeEPNS0_10ExpressionES4_
+__ZN7WebCore5XPath9NumericOpD0Ev
+__ZNK7WebCore5XPath9NumericOp8evaluateEv
+__ZN7WebCore11FrameLoader14setOpenedByDOMEv
+__ZN3WTF7HashSetIPN7WebCore5FrameENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore5FrameES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore5FrameES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore5FrameES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTableEi
+__ZN7WebCore13EventListener14markJSFunctionEv
+__ZN7WebCore12NamedNodeMap15removeAttributeERKNS_13QualifiedNameE
+__ZN7WebCore7Element24dispatchAttrRemovalEventEPNS_9AttributeE
+__ZN7WebCore12RenderInline11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZN3WTF9HashTableIPN7WebCore5FrameES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22Iden
+__ZN3WTF9HashTableIPN7WebCore5FrameES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInvalid
+__ZN3WTF9HashTableIPN7WebCore5FrameES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN7WebCore22JSXPathResultPrototypeD1Ev
+__ZN7WebCore24JSXPathResultConstructorD1Ev
+__ZN7WebCore16HTMLOListElementD0Ev
+__ZN7WebCore13MediaQueryExpD1Ev
+__ZN7WebCore13MediaQueryExpD2Ev
+__ZN3WTF6VectorIPN7WebCore13MediaQueryExpELm0EE6shrinkEm
+__ZN7WebCore13CSSImportRuleD0Ev
+__ZThn12_N7WebCore14XMLHttpRequest4stopEv
+__ZN7WebCore14XMLHttpRequest4stopEv
+__ZN7WebCore21JSDocumentConstructorD1Ev
+__ZN7WebCore25JSXMLHttpRequestPrototypeD1Ev
+__ZN7WebCore27JSXMLHttpRequestConstructorD1Ev
+__ZN7WebCore9JSConsoleD1Ev
+__ZN7WebCore9JSConsoleD2Ev
+__ZN7WebCore18JSConsolePrototypeD1Ev
+__ZThn4_N7WebCore13HTMLLIElementD0Ev
+__ZThn4_N7WebCore17HTMLSelectElementD0Ev
+__ZThn4_N7WebCore16HTMLDListElementD0Ev
+__ZN7WebCore23jsHTMLAnchorElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement4typeEv
+__ZNK7WebCore11RenderBlock14positionForBoxEPNS_9InlineBoxEb
+__ZN7WebCore20jsHTMLLIElementValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13HTMLLIElement5valueEv
+__ZN7WebCore26jsHTMLLIElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSHTMLLIElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore24JSHTMLLIElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19jsHTMLLIElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13HTMLLIElement4typeEv
+__ZNK7WebCore26CSSMutableStyleDeclaration24getLayeredShorthandValueEPKij
+__ZNK7WebCore8CSSValue22isImplicitInitialValueEv
+__ZN7WebCore29jsHTMLUListElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLUListElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLUListElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore38jsEventPrototypeFunctionPreventDefaultEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore21setJSEventReturnValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39jsEventPrototypeFunctionStopPropagationEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore22setJSEventCancelBubbleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore27jsHTMLAnchorElementProtocolEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement8protocolEv
+__ZN7WebCore25jsHTMLAnchorElementTargetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15jsAttrSpecifiedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsHTMLImageElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLImageElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLLIElementConstructorD1Ev
+__ZN7WebCore33JSHTMLParagraphElementConstructorD1Ev
+__ZN7WebCore29JSHTMLUListElementConstructorD1Ev
+__ZN7WebCore14WindowFeaturesC1ERKNS_6StringE
+__ZN7WebCore14WindowFeaturesC2ERKNS_6StringE
+__ZN7WebCore9DOMWindow16adjustWindowRectERKNS_9FloatRectERS1_S3_
+__ZN7WebCoreL12createWindowEPN3JSC9ExecStateEPNS_5FrameES4_RKNS_6StringES7_RKNS_14WindowFeaturesENS0_7JSValueE
+__ZN7WebCore11FrameLoader12createWindowEPS0_RKNS_16FrameLoadRequestERKNS_14WindowFeaturesERb
+__ZNK7WebCore6Chrome5focusEv
+__ZN7WebCore15JSDOMWindowBase16childFrameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore15JSDOMWindowBase15namedItemGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore8Document16windowNamedItemsERKNS_6StringE
+__ZN7WebCore18JSCommentPrototypeD1Ev
+__ZN7WebCore15JSAttrPrototypeD1Ev
+__ZN7WebCore23JSNamedNodeMapPrototypeD1Ev
+__ZN7WebCore29JSHTMLImageElementConstructorD1Ev
+__ZN7WebCore18setJSDocumentTitleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLTitleElement7setTextERKNS_6StringE
+__ZN7WebCore34jsDOMWindowPrototypeFunctionScrollEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12EventHandler29passMousePressEventToSubframeERNS_28MouseEventWithHitTestResultsEPNS_5FrameE
+__ZN7WebCore12EventHandler32passWidgetMouseDownEventToWidgetEPNS_12RenderWidgetE
+__ZNK7WebCore12MessageEvent14isMessageEventEv
+__ZN7WebCore15getDOMStructureINS_14JSMessageEventEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore14JSMessageEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSMessageEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12MessageEventEEE
+__ZN7WebCore14JSMessageEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12MessageEventEEE
+__ZN7WebCore14JSMessageEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL22getJSMessageEventTableEPN3JSC9ExecStateE
+__ZN7WebCore20jsMessageEventSourceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsMessageEventDataEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsElementScrollWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7Element11scrollWidthEv
+__ZNK7WebCore9RenderBox11scrollWidthEv
+__ZN3WTF9HashTableIPN7WebCore13IdentifierRepES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_
+__ZN7WebCore19JSHTMLObjectElement10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore14JSMessageEventD1Ev
+__ZN7WebCore20setJSDOMWindowStatusEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow9setStatusERKNS_6StringE
+__ZN7WebCoreL27createHTMLMapElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore16JSHTMLMapElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSHTMLMapElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14HTMLMapElementEEE
+__ZN7WebCore16JSHTMLMapElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14HTMLMapElementEEE
+__ZN7WebCore16JSHTMLMapElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16JSHTMLMapElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore16JSHTMLModElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore20ImageDocumentElementD0Ev
+__ZN7WebCore16HTMLImageElementD2Ev
+__ZN7WebCore13ImageDocumentD0Ev
+__ZN7WebCore12HTMLDocumentD2Ev
+__ZN7WebCore16FixedTableLayoutD0Ev
+__ZN3WTF6VectorIN7WebCore6LengthELm0EE6shrinkEm
+__ZThn28_N7WebCore8DOMTimer4stopEv
+__ZN7WebCore23JSMessageEventPrototypeD1Ev
+__ZN7WebCore38JSXMLHttpRequestProgressEventPrototypeD1Ev
+__ZN7WebCore19CSSCursorImageValueD0Ev
+__ZN3WTF9HashTableIPN7WebCore10SVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocate
+__ZN7WebCore13CSSImageValueD2Ev
+__ZN7WebCore32JSHTMLOptionsCollectionPrototypeD1Ev
+__ZN7WebCore19JSOptionConstructorD1Ev
+__ZN7WebCore12NamedNodeMap15removeNamedItemERKNS_13QualifiedNameERi
+__ZN7WebCore27JSHTMLOListElementPrototypeD1Ev
+__ZN7WebCore16JSHTMLMapElementD1Ev
+__ZN7WebCore25JSHTMLMapElementPrototypeD1Ev
+__ZN7WebCore25JSHTMLModElementPrototypeD1Ev
+__ZN7WebCore14HTMLModElementD0Ev
+__ZThn4_N7WebCore15HTMLAreaElementD0Ev
+__ZThn28_N7WebCore8DOMTimer16contextDestroyedEv
+__ZNK7WebCore20RenderBoxModelObject30containingBlockWidthForContentEv
+__ZN7WebCore28setJSHTMLInputElementCheckedEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore23JSHTMLOptionsCollection18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore29jsHTMLOptionsCollectionLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore23JSHTMLOptionsCollection6lengthEPN3JSC9ExecStateE
+__ZN7WebCore24jsHTMLOptionElementValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30setJSHTMLSelectElementDisabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore22HTMLFormControlElement11setDisabledEb
+__ZN7WebCore11RenderBlock26addPercentHeightDescendantEPNS_9RenderBoxE
+__ZNK3WTF7HashMapIPKN7WebCore11RenderBlockEPNS_7HashSetIPNS1_9RenderBoxENS_7PtrHashIS7_EENS_10HashTraitsIS7_EEEENS8_IS4_EENSA_I
+__ZN3WTF9HashTableIPKN7WebCore11RenderBlockESt4pairIS4_PNS_7HashSetIPNS1_9RenderBoxENS_7PtrHashIS8_EENS_10HashTraitsIS8_EEEEENS
+__ZN3WTF7HashSetIPN7WebCore9RenderBoxENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore9RenderBoxES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore9RenderBoxES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore9RenderBoxES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTabl
+__ZN3WTF9HashTableIPN7WebCore9RenderBoxES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTa
+__ZNK3WTF7HashMapIPKN7WebCore9RenderBoxEPNS_7HashSetIPNS1_11RenderBlockENS_7PtrHashIS7_EENS_10HashTraitsIS7_EEEENS8_IS4_EENSA_I
+__ZN3WTF9HashTableIPKN7WebCore9RenderBoxESt4pairIS4_PNS_7HashSetIPNS1_11RenderBlockENS_7PtrHashIS8_EENS_10HashTraitsIS8_EEEEENS
+__ZN3WTF7HashSetIPN7WebCore11RenderBlockENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore11RenderBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore11RenderBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore11RenderBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateT
+__ZN3WTF9HashTableIPN7WebCore11RenderBlockES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocat
+__ZN7WebCore25jsHTMLInputElementCheckedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsHTMLSelectElementValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17HTMLSelectElement5valueEv
+__ZN7WebCore19JSHTMLSelectElement18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore19JSHTMLSelectElement11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore17HTMLSelectElement4itemEj
+__ZN7WebCore27setJSHTMLOptionElementValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore26setJSHTMLOptionElementTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLOptionElement7setTextERKNS_6StringERi
+__ZN3WTF7HashMapIPKN7WebCore11RenderBlockEPNS_7HashSetIPNS1_9RenderBoxENS_7PtrHashIS7_EENS_10HashTraitsIS7_EEEENS8_IS4_EENSA_IS
+__ZN3WTF7HashMapIPKN7WebCore9RenderBoxEPNS_7HashSetIPNS1_11RenderBlockENS_7PtrHashIS7_EENS_10HashTraitsIS7_EEEENS8_IS4_EENSA_IS
+__ZN3WTF9HashTableIPN7WebCore9RenderBoxES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22
+__ZN3WTF9HashTableIPN7WebCore9RenderBoxES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInv
+__ZN3WTF9HashTableIPN7WebCore9RenderBoxES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZThn4_N7WebCore16HTMLTableElementD0Ev
+__ZN7WebCore30jsElementPrototypeFunctionBlurEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Element4blurEv
+__ZNK7WebCore15HTMLBodyElement11scrollWidthEv
+__ZN7WebCore23JSMessageEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL31getJSMessageEventPrototypeTableEPN3JSC9ExecStateE
+__ZN7WebCore13HitTestResult12setScrollbarEPNS_9ScrollbarE
+__ZN7WebCore9Scrollbar14transformEventERKNS_18PlatformMouseEventE
+__ZN7WebCore9Scrollbar10mouseMovedERKNS_18PlatformMouseEventE
+__ZN7WebCore23ScrollbarThemeComposite7hitTestEPNS_9ScrollbarERKNS_18PlatformMouseEventE
+__ZN7WebCore9Scrollbar14setHoveredPartENS_13ScrollbarPartE
+__ZN7WebCore14ScrollbarTheme26invalidateOnMouseEnterExitEv
+__ZN7WebCore9Scrollbar11mouseExitedEv
+__ZN7WebCoreL28createHTMLFontElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore17JSHTMLFontElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSHTMLFontElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLFontElementEEE
+__ZN7WebCore17JSHTMLFontElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLFontElementEEE
+__ZN7WebCore17JSHTMLFontElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore17JSHTMLFontElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore17JSHTMLFontElementD1Ev
+__ZN7WebCore26JSHTMLFontElementPrototypeD1Ev
+__ZThn4_N7WebCore19HTMLTableRowElementD0Ev
+__ZThn4_N7WebCore15HTMLFontElementD0Ev
+__ZN7WebCore44jsDocumentPrototypeFunctionGetElementsByNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4Node17getElementsByNameERKNS_6StringE
+__ZN7WebCore12NameNodeListC1EN3WTF10PassRefPtrINS_4NodeEEERKNS_6StringEPNS_15DynamicNodeList6CachesE
+__ZN7WebCore12NameNodeListC2EN3WTF10PassRefPtrINS_4NodeEEERKNS_6StringEPNS_15DynamicNodeList6CachesE
+__ZNK7WebCore12NameNodeList11nodeMatchesEPNS_7ElementE
+__ZN7WebCore12NameNodeListD0Ev
+__ZN7WebCore27JSDocumentFragmentPrototypeD1Ev
+__ZThn4_N7WebCore15HTMLHeadElementD0Ev
+__ZN7WebCore19JSMimeTypePrototypeD1Ev
+__ZN7WebCore19setJSNodeOndblclickEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node13setOndblclickEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore16setJSNodeOnfocusEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node10setOnfocusEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore22setJSNodeOncontextmenuEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node16setOncontextmenuEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore17setJSNodeOnchangeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node11setOnchangeEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore16setJSNodeOnresetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node10setOnresetEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore17setJSNodeOnselectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node11setOnselectEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZThn268_N7WebCore11CachedImage17animationAdvancedEPKNS_5ImageE
+__ZN7WebCore12EventHandler13freeClipboardEv
+__ZNK7WebCore12EventHandler23createDraggingClipboardEv
+__ZN7WebCore12EventHandler20dispatchDragSrcEventERKNS_12AtomicStringERKNS_18PlatformMouseEventE
+__ZNK7WebCore9Clipboard15sourceOperationERNS_13DragOperationE
+__ZN7WebCore14DragController9startDragEPNS_5FrameEPNS_9ClipboardENS_13DragOperationERKNS_18PlatformMouseEventERKNS_8IntPointEb
+__ZN7WebCoreL8getImageEPNS_7ElementE
+__ZN7WebCore12ClipboardMac7hasDataEv
+__ZNK7WebCore16HTMLImageElement3altEv
+__ZN7WebCore16VisibleSelectionC1EPKNS_5RangeENS_9EAffinityE
+__ZN7WebCore16VisibleSelectionC2EPKNS_5RangeENS_9EAffinityE
+__ZN7WebCore14RenderReplaced17setSelectionStateENS_12RenderObject14SelectionStateE
+__ZNK7WebCore12RenderObject17selectionStartEndERiS1_
+__ZNK7WebCore10RenderView17selectionStartEndERiS1_
+__ZN7WebCore13RootInlineBox22setHasSelectedChildrenEb
+__ZN7WebCore11RenderBlock17setSelectionStateENS_12RenderObject14SelectionStateE
+__ZNK7WebCore12RenderObject7childAtEj
+__ZNK7WebCore14RenderReplaced18canBeSelectionLeafEv
+__ZN7WebCore14RenderReplaced23selectionRectForRepaintEPNS_20RenderBoxModelObjectEb
+__ZN3WTF7HashMapIPN7WebCore12RenderObjectEPNS1_19RenderSelectionInfoENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setERKS3
+__ZNK3WTF7HashMapIPN7WebCore11RenderBlockEPNS1_24RenderBlockSelectionInfoENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3get
+__ZN7WebCore11RenderBlock27selectionGapRectsForRepaintEPNS_20RenderBoxModelObjectE
+__ZNK7WebCore11RenderBlock15isSelectionRootEv
+__ZN3WTF7HashMapIPN7WebCore11RenderBlockEPNS1_24RenderBlockSelectionInfoENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setE
+__ZN3WTF9HashTableIPN7WebCore11RenderBlockESt4pairIS3_PNS1_24RenderBlockSelectionInfoEENS_18PairFirstExtractorIS7_EENS_7PtrHash
+__ZN7WebCore11RenderBlock19leftSelectionOffsetEPS0_i
+__ZN7WebCore11RenderBlock20rightSelectionOffsetEPS0_i
+__ZN7WebCore11RenderBlock17fillSelectionGapsEPS0_iiiiRiS2_S2_PKNS_12RenderObject9PaintInfoE
+__ZN7WebCore11RenderBlock22fillBlockSelectionGapsEPS0_iiiiRiS2_S2_PKNS_12RenderObject9PaintInfoE
+__ZNK7WebCore12RenderObject18canBeSelectionLeafEv
+__ZN7WebCore11RenderBlock23fillInlineSelectionGapsEPS0_iiiiRiS2_S2_PKNS_12RenderObject9PaintInfoE
+__ZN7WebCore13RootInlineBox20fillLineSelectionGapEiiPNS_11RenderBlockEiiiiPKNS_12RenderObject9PaintInfoE
+__ZN7WebCore13RootInlineBox14selectionStateEv
+__ZN7WebCore9InlineBox14selectionStateEv
+__ZN7WebCore11RenderBlock29getHorizontalSelectionGapInfoENS_12RenderObject14SelectionStateERbS3_
+__ZN7WebCore13RootInlineBox16firstSelectedBoxEv
+__ZN7WebCore13RootInlineBox15lastSelectedBoxEv
+__ZNK7WebCore10RenderView14selectionStartEv
+__ZN7WebCore12ClipboardMac24declareAndWriteDragImageEPNS_7ElementERKNS_4KURLERKNS_6StringEPNS_5FrameE
+__ZNK7WebCore11BitmapImage17filenameExtensionEv
+__ZNK7WebCore11ImageSource17filenameExtensionEv
+__ZN7WebCore36preferredExtensionForImageSourceTypeERKNS_6StringE
+__ZN7WebCore16LegacyWebArchive32createPropertyListRepresentationERKNS_16ResourceResponseE
+__ZN7WebCore14DragController11doImageDragEPNS_7ElementERKNS_8IntPointERKNS_7IntRectEPNS_9ClipboardEPNS_5FrameERS3_
+__ZN7WebCore24createDragImageFromImageEPNS_5ImageE
+__ZNK7WebCore7IntSizecv7_NSSizeEv
+__ZN7WebCore14DragController16maxDragImageSizeEv
+__ZN7WebCore21fitDragImageToMaxSizeEN3WTF9RetainPtrI7NSImageEERKNS_7IntSizeES6_
+__ZN7WebCore13dragImageSizeEN3WTF9RetainPtrI7NSImageEE
+__ZN7WebCore27dissolveDragImageToFractionEN3WTF9RetainPtrI7NSImageEEf
+__ZN7WebCore14DragController12doSystemDragEN3WTF9RetainPtrI7NSImageEERKNS_8IntPointES7_PNS_9ClipboardEPNS_5FrameEb
+__ZN7WebCoreL24clipOutPositionedObjectsEPKNS_12RenderObject9PaintInfoEiiPN3WTF11ListHashSetIPNS_9RenderBoxENS4_7PtrHashIS7_EEEE
+__ZN7WebCore15GraphicsContext7clipOutERKNS_7IntRectE
+__ZNK7WebCore12RenderObject24selectionBackgroundColorEv
+__ZNK7WebCore11RenderTheme30activeSelectionBackgroundColorEv
+__ZNK7WebCore14RenderThemeMac38platformActiveSelectionBackgroundColorEv
+__ZNK7WebCore5Color14blendWithWhiteEv
+__ZN7WebCoreL14blendComponentEii
+__ZN7WebCore12EventHandler17dragSourceMovedToERKNS_18PlatformMouseEventE
+__ZN7WebCore14DragController10dragExitedEPNS_8DragDataE
+__ZN7WebCore12EventHandler17cancelDragAndDropERKNS_18PlatformMouseEventEPNS_9ClipboardE
+__ZN7WebCore12EventHandler14clearDragStateEv
+__ZN7WebCore14DragController10cancelDragEv
+__ZN7WebCore12EventHandler17dragSourceEndedAtERKNS_18PlatformMouseEventENS_13DragOperationE
+__ZN7WebCore9Clipboard23setDestinationOperationENS_13DragOperationE
+__ZN7WebCore14DragController22cleanupAfterSystemDragEv
+__ZN7WebCore15deleteDragImageEN3WTF9RetainPtrI7NSImageEE
+__ZN7WebCore15highestAncestorEPNS_4NodeE
+__ZN7WebCoreL27removingNodeRemovesPositionEPNS_4NodeERKNS_8PositionE
+__ZNK7WebCore4Node8containsEPKS0_
+__ZNK3WTF7HashMapIPN7WebCore12RenderObjectEPNS1_19RenderSelectionInfoENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS
+__ZN7WebCore15jsNodeTEXT_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn28_NK7WebCore8DOMTimer10canSuspendEv
+__ZThn28_N7WebCore8DOMTimer7suspendEv
+__ZN7WebCore30JSHTMLTextAreaElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore21JSHTMLTextAreaElement9classInfoEv
+__ZNK7WebCore19HTMLTextAreaElement14isEnumeratableEv
+__ZN7WebCore16JSStyleSheetList18canGetItemsForNameEPN3JSC9ExecStateEPNS_14StyleSheetListERKNS1_10IdentifierE
+__ZNK7WebCore14StyleSheetList12getNamedItemERKNS_6StringE
+__ZN7WebCore25JSStyleSheetListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22JSCSSRuleListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL11quoteStringERKNS_6StringE
+__ZN7WebCore21jsHTMLImageElementAltEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL21serviceTypeForClassIdERKNS_6StringEPKNS_10PluginDataE
+__ZN3WTF7HashMapIN7WebCore6StringES2_NS1_15CaseFoldingHashENS_10HashTraitsIS2_EES5_E3addERKS2_S8_
+__ZNK3WTF7HashMapIN7WebCore6StringES2_NS1_15CaseFoldingHashENS_10HashTraitsIS2_EES5_E3getERKS2_
+__ZN7WebCoreL11activeXTypeEv
+__ZNK7WebCore10PluginData16supportsMimeTypeERKNS_6StringE
+__NPN_GetProperty
+__ZThn8_N7WebCore16HTMLTableElementD0Ev
+__ZN7WebCore17HTMLPlugInElement11getNPObjectEv
+__ZN7WebCore16ScriptController34createScriptObjectForPluginElementEPNS_17HTMLPlugInElementE
+__ZN7WebCore16ScriptController24jsObjectForPluginElementEPNS_17HTMLPlugInElementE
+__NPN_GetStringIdentifiers
+__ZThn8_N7WebCore20HTMLParagraphElementD0Ev
+__ZThn8_N7WebCore16HTMLDListElementD0Ev
+__ZThn8_N7WebCore7CommentD0Ev
+__ZThn8_N7WebCore16HTMLOListElementD0Ev
+__ZN7WebCore4Path15createRectangleERKNS_9FloatRectE
+__ZN7WebCore5TimerINS_11RenderImageEE5firedEv
+__ZN7WebCore11RenderImage28highQualityRepaintTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore28jsCSSStyleDeclarationCssTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn28_N7WebCore8DOMTimer6resumeEv
+__ZN7WebCore8DOMTimer6resumeEv
+__ZN7WebCore19HTMLTextAreaElementD0Ev
+__ZN7WebCoreL11isSeparatorEt
+__ZN7WebCore14WindowFeatures16setWindowFeatureERKNS_6StringES3_
+__ZNK7WebCore6Chrome12createWindowEPNS_5FrameERKNS_16FrameLoadRequestERKNS_14WindowFeaturesE
+__ZNK7WebCore19ResourceRequestBase7isEmptyEv
+__ZN7WebCore4Page14sessionStorageEb
+__ZNK7WebCore6Chrome18setToolbarsVisibleEb
+__ZNK7WebCore6Chrome19setStatusbarVisibleEb
+__ZNK7WebCore6Chrome20setScrollbarsVisibleEb
+__ZNK7WebCore6Chrome17setMenubarVisibleEb
+__ZNK7WebCore6Chrome12setResizableEb
+__ZNK7WebCore6Chrome10windowRectEv
+__ZNK7WebCore6Chrome8pageRectEv
+__ZNK7WebCore6Chrome13setWindowRectERKNS_9FloatRectE
+__ZN7WebCore13toDeviceSpaceERKNS_9FloatRectEP8NSWindow
+__ZNK7WebCore6Chrome4showEv
+__ZNK7WebCore11ScriptValue9getStringERNS_6StringE
+__ZN7WebCore36jsDOMWindowPrototypeFunctionResizeToEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore9DOMWindow8resizeToEff
+__ZN7WebCore34jsDOMWindowPrototypeFunctionMoveToEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore9DOMWindow6moveToEff
+__ZN7WebCore16JSHTMLPreElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore38jsElementPrototypeFunctionHasAttributeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore12CachedScript8encodingEv
+__ZN7WebCore44jsHTMLAnchorElementPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore17HTMLAnchorElement8toStringEv
+__ZN7WebCore15JSHTMLHRElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+_KJS_JSCreateNativeJSObject
+__ZN3JSC8Bindings12JavaJSObject6invokeEPNS0_19JSObjectCallContextE
+__ZN3JSC8Bindings12JavaJSObject12createNativeEx
+__ZN3JSC8Bindings24findProtectingRootObjectEPNS_8JSObjectE
+__ZN3JSC8Bindings10RootObject13gcIsProtectedEPNS_8JSObjectE
+_KJS_JSObject_JSObjectCall
+__ZN3JSC8Bindings12JavaJSObjectC1Ex
+__ZN3JSC8Bindings12JavaJSObjectC2Ex
+__ZNK3JSC8Bindings12JavaJSObject4callEP8_jstringP13_jobjectArray
+__ZNK3JSC8Bindings12JavaJSObject10rootObjectEv
+__ZNK3JSC8Bindings12JavaJSObject17getListFromJArrayEPNS_9ExecStateEP13_jobjectArrayRNS_20MarkedArgumentBufferE
+__ZNK3JSC8Bindings12JavaJSObject21convertJObjectToValueEPNS_9ExecStateEP8_jobject
+__ZNK3JSC16RuntimeObjectImp12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
+__ZNK3JSC8Bindings12JavaInstance12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
+__ZNK3JSC8Bindings12JavaInstance11stringValueEPNS_9ExecStateE
+__ZNK3JSC8Bindings12JavaJSObject21convertValueToJObjectENS_7JSValueE
+__ZN7JNIEnv_9NewObjectEP7_jclassP10_jmethodIDz
+_KJS_JSObject_JSFinalize
+__ZNK3JSC8Bindings12JavaJSObject8finalizeEv
+__ZN7WebCore19JSHTMLAppletElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore19JSHTMLAppletElement9customPutEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore12RenderAppletD0Ev
+__ZN3JSC8Bindings12JavaInstanceD0Ev
+__ZN3JSC8Bindings14JObjectWrapperD1Ev
+__ZN3JSC8Bindings14JObjectWrapperD2Ev
+__ZN3JSC8Bindings9JavaClassD0Ev
+__ZN3WTF20deleteAllPairSecondsIPN3JSC8Bindings5FieldEKNS_7HashMapINS_6RefPtrINS1_7UString3RepEEES4_NS_7StrHashIS9_EENS_10HashTr
+__ZN3JSC8Bindings9JavaFieldD0Ev
+__ZN3WTF15deleteAllValuesIPN3JSC8Bindings6MethodELm0EEEvRKNS_6VectorIT_XT0_EEE
+__ZN3JSC8Bindings10JavaMethodD0Ev
+__ZN3JSC8Bindings13JavaParameterD1Ev
+__ZN7WebCore17HTMLAppletElementD0Ev
+__ZN7WebCore28JSHTMLAppletElementPrototypeD1Ev
+__ZThn4_N7WebCore19HTMLTextAreaElementD0Ev
+__ZN7WebCore12EventHandler31passMouseReleaseEventToSubframeERNS_28MouseEventWithHitTestResultsEPNS_5FrameE
+__ZN7WebCore17setJSLocationHashEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10JSLocation7setHashEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore12EventHandler22passWheelEventToWidgetERNS_18PlatformWheelEventEPNS_6WidgetE
+__ZN7WebCoreL42setNSScrollViewScrollWheelShouldRetainSelfEb
+__ZN7WebCoreL36selfRetainingNSScrollViewScrollWheelEP12NSScrollViewP13objc_selectorP7NSEvent
+__ZN7WebCore11RenderStyle10setContentEN3WTF10PassRefPtrINS_10StyleImageEEEb
+__ZN7WebCore27RenderImageGeneratedContentC1EPNS_4NodeE
+__ZN7WebCore27RenderImageGeneratedContentC2EPNS_4NodeE
+__ZN7WebCore27RenderImageGeneratedContent13setStyleImageEPNS_10StyleImageE
+__ZNK7WebCore16StyleCachedImage13isCachedImageEv
+__ZNK7WebCore27RenderImageGeneratedContent13errorOccurredEv
+__ZNK7WebCore27RenderImageGeneratedContent21imageHasRelativeWidthEv
+__ZNK7WebCore16StyleCachedImage21imageHasRelativeWidthEv
+__ZNK7WebCore27RenderImageGeneratedContent22usesImageContainerSizeEv
+__ZNK7WebCore16StyleCachedImage22usesImageContainerSizeEv
+__ZNK7WebCore27RenderImageGeneratedContent22imageHasRelativeHeightEv
+__ZNK7WebCore16StyleCachedImage22imageHasRelativeHeightEv
+__ZNK7WebCore27RenderImageGeneratedContent8imagePtrEv
+__ZNK7WebCore27RenderImageGeneratedContent9imageSizeEf
+__ZNK7WebCore27RenderImageGeneratedContent8hasImageEv
+__ZN7WebCore27RenderImageGeneratedContentD0Ev
+__ZN7WebCore11RenderImageD2Ev
+__ZN7WebCore27RenderImageGeneratedContent5imageEii
+__ZN7WebCore19JSHTMLButtonElementD1Ev
+__ZN7WebCore28JSHTMLButtonElementPrototypeD1Ev
+__ZN7WebCore17HTMLButtonElementD0Ev
+__ZN7WebCoreL17legendConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLLegendElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore17HTMLLegendElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore14RenderFieldset12layoutLegendEb
+__ZNK7WebCore14RenderFieldset10isFieldsetEv
+__ZN7WebCore10JSNodeList16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore19JSNodeListPrototype9classInfoEv
+__ZN7WebCore17jsNodeTextContentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16setJSNodeOnabortEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node10setOnabortEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore16StyleCachedImage8cssValueEv
+__ZNK7WebCore26NetscapePlugInStreamLoader6isDoneEv
+__ZN3WTF6VectorIPN7WebCore11CSSRuleDataELm32EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore11CSSRuleDataELm32EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore11CSSRuleDataELm32EE15reserveCapacityEm
+__ZN7WebCore14RenderFieldsetD0Ev
+__ZN7WebCoreL19tablecolConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore19HTMLTableColElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19HTMLTableColElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore19HTMLTableColElement17endTagRequirementEv
+__ZNK7WebCore19HTMLTableColElement11tagPriorityEv
+__ZNK7WebCore19HTMLTableColElement36canHaveAdditionalAttributeStyleDeclsEv
+__ZN7WebCore19HTMLTableColElement29additionalAttributeStyleDeclsERN3WTF6VectorIPNS_26CSSMutableStyleDeclarationELm0EEE
+__ZN7WebCore14RenderTableColC1EPNS_4NodeE
+__ZN7WebCore14RenderTableColC2EPNS_4NodeE
+__ZN7WebCore14RenderTableCol17updateFromElementEv
+__ZNK7WebCore14RenderTableCol13requiresLayerEv
+__ZNK7WebCore14RenderTableCol10isTableColEv
+__ZNK7WebCore14RenderTableCol15virtualChildrenEv
+__ZN7WebCore19HTMLTableColElement8checkDTDEPKNS_4NodeE
+__ZNK7WebCore14RenderTableCol15canHaveChildrenEv
+__ZNK7WebCore19HTMLTableColElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore19HTMLTableColElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore14RenderTableCol14isChildAllowedEPNS_12RenderObjectEPNS_11RenderStyleE
+__ZN7WebCore14RenderTableCol15virtualChildrenEv
+__ZN7WebCoreL32createHTMLTableColElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore21JSHTMLTableColElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSHTMLTableColElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLTableColElementEEE
+__ZN7WebCore21JSHTMLTableColElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLTableColElementEEE
+__ZN7WebCore21JSHTMLTableColElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore21JSHTMLTableColElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore19HTMLFieldSetElementD0Ev
+__ZN7WebCore17HTMLLegendElementD0Ev
+__ZN7WebCore23jsHTMLTableElementTHeadEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLTableElement5tHeadEv
+__ZN7WebCore29jsHTMLTableSectionElementRowsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23HTMLTableSectionElement4rowsEv
+__ZN7WebCore26jsHTMLTableRowElementCellsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19HTMLTableRowElement5cellsEv
+__ZN7WebCore14RenderTableCol29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
+__ZN7WebCore54jsXMLHttpRequestPrototypeFunctionGetAllResponseHeadersEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
+__ZNK7WebCore14XMLHttpRequest21getAllResponseHeadersERi
+__ZN7WebCoreL21startElementNsHandlerEPvPKhS2_S2_iPS2_iiS3_
+__ZN7WebCore12XMLTokenizer14startElementNsEPKhS2_S2_iPS2_iiS3_
+__ZN7WebCore7ElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL23handleElementAttributesEPNS_7ElementEPPKhiRi
+__ZN7WebCore7Element14setAttributeNSERKNS_12AtomicStringES3_S3_Ri
+__ZN7WebCore8Document18parseQualifiedNameERKNS_6StringERS1_S4_Ri
+__ZNK7WebCore7Element18createAttributeMapEv
+__ZN7WebCore7Element15createAttributeERKNS_13QualifiedNameERKNS_12AtomicStringE
+__ZN7WebCore15toScriptElementEPNS_7ElementE
+__ZNK7WebCore8Document14isHTMLDocumentEv
+__ZN7WebCoreL17charactersHandlerEPvPKhi
+__ZN7WebCore12XMLTokenizer10charactersEPKhi
+__ZN7WebCore12XMLTokenizer9enterTextEv
+__ZN3WTF6VectorIhLm0EE6appendIhEEvPKT_m
+__ZN3WTF6VectorIhLm0EE14expandCapacityEmPKh
+__ZN3WTF6VectorIhLm0EE14expandCapacityEm
+__ZN3WTF6VectorIhLm0EE15reserveCapacityEm
+__ZN7WebCore13CharacterData10appendDataERKNS_6StringERi
+__ZN3WTF6VectorIhLm0EE6shrinkEm
+__ZN7WebCoreL19endElementNsHandlerEPvPKhS2_S2_
+__ZN7WebCore12XMLTokenizer12endElementNsEv
+__ZN7WebCoreL14commentHandlerEPvPKh
+__ZN7WebCore12XMLTokenizer7commentEPKh
+__ZN7WebCore10JSDocumentC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8DocumentEEE
+__ZN7WebCore10JSDocument18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore10JSDocument9classInfoEv
+__ZN7WebCore9JSElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7ElementEEE
+__ZN7WebCore9JSElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore9JSElement9classInfoEv
+__ZN7WebCore36jsNodePrototypeFunctionHasChildNodesEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore21JSHTMLTableColElementD1Ev
+__ZN7WebCore9JSElementD1Ev
+__ZN7WebCore10JSDocumentD1Ev
+__ZN7WebCore7ElementD0Ev
+__ZN7WebCore12NamedNodeMapD0Ev
+__ZN7WebCore9AttributeD0Ev
+__ZN7WebCore17HTMLButtonElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCoreL21executeDeleteBackwardEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore6Editor19deleteWithDirectionENS_19SelectionController10EDirectionENS_15TextGranularityEbb
+__ZN7WebCore6Editor20canSmartCopyOrDeleteEv
+__ZN7WebCore13TypingCommand16deleteKeyPressedEPNS_8DocumentEbNS_15TextGranularityEb
+__ZN7WebCore13TypingCommand16deleteKeyPressedENS_15TextGranularityEb
+__ZN7WebCore20CompositeEditCommand39breakOutOfEmptyMailBlockquotedParagraphEv
+__ZN7WebCore26highestEnclosingNodeOfTypeERKNS_8PositionEPFbPKNS_4NodeEE
+__ZN7WebCore19SelectionController6modifyENS0_11EAlterationENS0_10EDirectionENS_15TextGranularityEb
+__ZN7WebCore19SelectionController14willBeModifiedENS0_11EAlterationENS0_10EDirectionE
+__ZN7WebCore16VisibleSelection7setBaseERKNS_8PositionE
+__ZN7WebCore16VisibleSelection9setExtentERKNS_8PositionE
+__ZN7WebCore19SelectionController23modifyExtendingBackwardENS_15TextGranularityE
+__ZNK7WebCore15VisiblePosition31honorEditableBoundaryAtOrBeforeERKS0_
+__ZN7WebCore19SelectionController30xPosForVerticalArrowNavigationENS0_13EPositionTypeE
+__ZNK7WebCore15VisiblePosition28xOffsetForVerticalNavigationEv
+__ZN7WebCore19SelectionController9setExtentERKNS_15VisiblePositionEb
+__ZN7WebCore16VisibleSelectionC1ERKNS_8PositionES3_NS_9EAffinityE
+__ZN7WebCore16VisibleSelectionC2ERKNS_8PositionES3_NS_9EAffinityE
+__ZN7WebCore25isFirstPositionAfterTableERKNS_15VisiblePositionE
+__ZNK7WebCore5Frame21shouldDeleteSelectionERKNS_16VisibleSelectionE
+__ZN7WebCore20CompositeEditCommand15deleteSelectionERKNS_16VisibleSelectionEbbbb
+__ZN7WebCore22DeleteSelectionCommandC1ERKNS_16VisibleSelectionEbbbb
+__ZN7WebCore22DeleteSelectionCommandC2ERKNS_16VisibleSelectionEbbbb
+__ZN7WebCore22DeleteSelectionCommand7doApplyEv
+__ZN7WebCore5Frame28textWillBeDeletedInTextFieldEPNS_7ElementE
+__ZN7WebCore22DeleteSelectionCommand22initializePositionDataEv
+__ZN7WebCore22DeleteSelectionCommand18initializeStartEndERNS_8PositionES2_
+__ZN7WebCore38positionBeforeContainingSpecialElementERKNS_8PositionEPPNS_4NodeE
+__ZN7WebCoreL21firstInSpecialElementERKNS_8PositionE
+__ZN7WebCore16isSpecialElementEPKNS_4NodeE
+__ZN7WebCore37positionAfterContainingSpecialElementERKNS_8PositionEPPNS_4NodeE
+__ZN7WebCoreL20lastInSpecialElementERKNS_8PositionE
+__ZN7WebCoreL10isTableRowEPKNS_4NodeE
+__ZN7WebCore27numEnclosingMailBlockquotesERKNS_8PositionE
+__ZNK7WebCore8Position25leadingWhitespacePositionENS_9EAffinityEb
+__ZNK7WebCore8Position25previousCharacterPositionENS_9EAffinityE
+__ZN7WebCore13isStartOfLineERKNS_15VisiblePositionE
+__ZNK7WebCore8Position26rendersInDifferentPositionERKS0_
+__ZNK7WebCore8Position14renderedOffsetEv
+__ZNK7WebCore4Node12nextEditableEv
+__ZNK7WebCore4Node12nextLeafNodeEv
+__ZNK7WebCore4Node30nextNodeConsideringAtomicNodesEv
+__ZNK7WebCore4Node16previousEditableEv
+__ZNK7WebCore4Node16previousLeafNodeEv
+__ZNK7WebCore4Node34previousNodeConsideringAtomicNodesEv
+__ZN7WebCore4Node32inSameContainingBlockFlowElementEPS0_
+__ZNK7WebCore8Position26trailingWhitespacePositionENS_9EAffinityEb
+__ZN7WebCore20CompositeEditCommand33deleteInsignificantTextDownstreamERKNS_8PositionE
+__ZN7WebCore22DeleteSelectionCommand20saveTypingStyleStateEv
+__ZN7WebCore22DeleteSelectionCommand25handleSpecialCaseBRDeleteEv
+__ZN7WebCore22DeleteSelectionCommand19handleGeneralDeleteEv
+__ZN7WebCore22DeleteSelectionCommand18deleteTextFromNodeEN3WTF10PassRefPtrINS_4TextEEEjj
+__ZN7WebCoreL28updatePositionForTextRemovalEPNS_4NodeEiiRNS_8PositionE
+__ZN7WebCore20CompositeEditCommand18deleteTextFromNodeEN3WTF10PassRefPtrINS_4TextEEEjj
+__ZN7WebCore25DeleteFromTextNodeCommandC1EN3WTF10PassRefPtrINS_4TextEEEjj
+__ZN7WebCore25DeleteFromTextNodeCommandC2EN3WTF10PassRefPtrINS_4TextEEEjj
+__ZN7WebCore25DeleteFromTextNodeCommand7doApplyEv
+__ZN7WebCore13CharacterData13substringDataEjjRi
+__ZN7WebCore22DeleteSelectionCommand15fixupWhitespaceEv
+__ZN7WebCore22DeleteSelectionCommand15mergeParagraphsEv
+__ZN7WebCore22DeleteSelectionCommand38removePreviouslySelectedEmptyTableRowsEv
+__ZN7WebCore22DeleteSelectionCommand31calculateTypingStyleAfterDeleteEv
+__ZN7WebCore22DeleteSelectionCommand19clearTransientStateEv
+__ZN7WebCore6Editor36revealSelectionAfterEditingOperationEv
+__ZNK7WebCore11EditCommand19isInsertTextCommandEv
+__ZNK7WebCore22HTMLFormControlElement17isActivatedSubmitEv
+__ZNK7WebCore22HTMLFormControlElement24isSuccessfulSubmitButtonEv
+__ZNK7WebCore17HTMLButtonElement17isActivatedSubmitEv
+__ZNK7WebCore17HTMLButtonElement24isSuccessfulSubmitButtonEv
+__ZN7WebCore17HTMLButtonElement18setActivatedSubmitEb
+__ZN7WebCore22HTMLFormControlElement14appendFormDataERNS_12FormDataListEb
+__ZN7WebCore17HTMLButtonElement14appendFormDataERNS_12FormDataListEb
+__ZNK7WebCore8FormData15flattenToStringEv
+__ZNK7WebCore8FormData7flattenERN3WTF6VectorIcLm0EEE
+__ZN7WebCore4KURL8setQueryERKNS_6StringE
+__ZN7WebCore14RenderTableColD0Ev
+__ZN7WebCore22DeleteSelectionCommandD0Ev
+__ZN7WebCore25DeleteFromTextNodeCommandD0Ev
+__ZN7WebCore15RenderWordBreakC1EPNS_11HTMLElementE
+__ZN7WebCore15RenderWordBreakC2EPNS_11HTMLElementE
+__ZN7WebCore15RenderWordBreakD0Ev
+__ZN7WebCore39jsHTMLFormElementPrototypeFunctionResetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15HTMLFormElement5resetEv
+__ZN7WebCore16HTMLInputElement5resetEv
+__ZNK7WebCore15RenderWordBreak11isWordBreakEv
+__ZN7WebCore22jsHTMLInputElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24setJSHTMLElementTabIndexEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11HTMLElement11setTabIndexEi
+__ZN7WebCore23jsHTMLFormElementLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30JSHTMLTableColElementPrototypeD1Ev
+__ZN7WebCore19HTMLTableColElementD0Ev
+__ZN7WebCore22jsNavigatorAppCodeNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13NavigatorBase11appCodeNameEv
+__ZN7WebCore25setJSHTMLInputElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLInputElement7setTypeERKNS_6StringE
+__ZN7WebCore25setJSHTMLInputElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore22HTMLFormControlElement7setNameERKNS_12AtomicStringE
+__ZN7WebCore26setJSHTMLAnchorElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement7setNameERKNS_12AtomicStringE
+__ZN7WebCore35jsHTMLDocumentPrototypeFunctionOpenEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14JSHTMLDocument4openEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCoreL23MainGradientInterpolateEPvPKfPf
+__ZN7WebCoreL22TopGradientInterpolateEPvPKfPf
+__ZN7WebCoreL25BottomGradientInterpolateEPvPKfPf
+__ZN7WebCore21jsHTMLDocumentScriptsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8Document7scriptsEv
+__ZN7WebCore16JSHTMLCollection11getCallDataERN3JSC8CallDataE
+__ZN7WebCore17jsDocumentCharsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24JSHTMLHRElementPrototypeD1Ev
+__ZN7WebCore27jsHTMLAnchorElementPathnameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement8pathnameEv
+__ZN7WebCore9FrameView18setUseSlowRepaintsEv
+__ZL15deallocCallbackPv
+__ZN7WebCore17jsDOMWindowClosedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow6closedEv
+__ZN7WebCore33jsDOMWindowPrototypeFunctionFocusEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow5focusEv
+__ZN7WebCore5Frame11focusWindowEv
+__ZN7WebCore28jsHTMLBodyElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLBodyElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLBodyElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17jsNodeOnmouseoverEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node11onmouseoverEv
+__ZN7WebCore13jsNodeOnfocusEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node7onfocusEv
+__ZN7WebCore29jsHTMLTableElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLTableElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLTableElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZNK7WebCore5Color5lightEv
+__ZN7WebCore17differenceSquaredERKNS_5ColorES2_
+__ZN7WebCore19HTMLTextAreaElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore26RenderTextControlMultiLineC1EPNS_4NodeE
+__ZN7WebCore26RenderTextControlMultiLineC2EPNS_4NodeE
+__ZN7WebCore26RenderTextControlMultiLine17updateFromElementEv
+__ZNK7WebCore26RenderTextControlMultiLine20createInnerTextStyleEPKNS_11RenderStyleE
+__ZNK7WebCore26RenderTextControlMultiLine10isTextAreaEv
+__ZN7WebCore26RenderTextControlMultiLine36adjustControlHeightBasedOnLineHeightEi
+__ZNK7WebCore17RenderTextControl14hasControlClipEv
+__ZNK7WebCore26RenderTextControlMultiLine16baselinePositionEbb
+__ZN7WebCoreL17resizerCornerRectEPKNS_11RenderLayerERKNS_7IntRectE
+__ZN7WebCore26RenderTextControlMultiLineD0Ev
+__ZN7WebCore19HTMLTextAreaElement23rendererWillBeDestroyedEv
+__ZN7WebCore28JSHTMLBodyElementConstructorD1Ev
+__ZN7WebCore29JSHTMLTableElementConstructorD1Ev
+__ZNK7WebCore15PurgeableBuffer9wasPurgedEv
+__ZN7WebCore16LegacyWebArchive6createEPNS_12SharedBufferE
+__ZN7WebCore16LegacyWebArchive7extractEPK14__CFDictionary
+__ZN7WebCore16LegacyWebArchive14createResourceEPK14__CFDictionary
+__ZN7WebCore15ArchiveResource6createEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_6StringESA_SA_RKNS_16ResourceRespons
+__ZN7WebCore15ArchiveResourceC1EN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_6StringESA_SA_RKNS_16ResourceResponseE
+__ZN7WebCore15ArchiveResourceC2EN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_6StringESA_SA_RKNS_16ResourceResponseE
+__ZN7WebCore16LegacyWebArchive42createResourceResponseFromPropertyListDataEPK8__CFDataPK10__CFString
+__ZN7WebCore16LegacyWebArchive41createResourceResponseFromMacArchivedDataEPK8__CFData
+__ZNK7WebCore20ResourceResponseBase17suggestedFilenameEv
+__ZN3WTF7HashMapIN7WebCore24FontPlatformDataCacheKeyEPNS1_16FontPlatformDataENS1_28FontPlatformDataCacheKeyHashENS1_30FontPlatf
+__ZN3WTF6VectorIN7WebCore24FontPlatformDataCacheKeyELm0EE6shrinkEm
+__ZN7WebCore29jsHTMLInputElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14XMLHttpRequest16getRequestHeaderERKNS_12AtomicStringE
+__ZN7WebCore8FormData6createERKNS_7CStringE
+__ZN7WebCore17SubresourceLoader11didSendDataEyy
+__ZThn16_N7WebCore24DocumentThreadableLoader11didSendDataEPNS_17SubresourceLoaderEyy
+__ZN7WebCore24DocumentThreadableLoader11didSendDataEPNS_17SubresourceLoaderEyy
+__ZThn16_N7WebCore14XMLHttpRequest11didSendDataEyy
+__ZN7WebCore14XMLHttpRequest11didSendDataEyy
+__ZThn24_N7WebCore14XMLHttpRequest4stopEv
+__ZN7WebCore27setJSHTMLImageElementUseMapEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement9setUseMapERKNS_6StringE
+__ZThn8_N7WebCore15HTMLLinkElementD0Ev
+__ZN7WebCore14jsNodeOnsubmitEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node8onsubmitEv
+__ZNK7WebCore17JSHTMLAreaElement9classInfoEv
+__ZN7WebCoreL32createHTMLFieldSetElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore21JSHTMLFieldSetElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSHTMLFieldSetElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLFieldSetElementEEE
+__ZN7WebCore21JSHTMLFieldSetElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLFieldSetElementEEE
+__ZN7WebCore21JSHTMLFieldSetElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore21JSHTMLFieldSetElement9classInfoEv
+__ZN7WebCore20jsDOMWindowStatusbarEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow9statusbarEv
+__ZN7WebCore7BarInfoC1EPNS_5FrameENS0_4TypeE
+__ZN7WebCore7BarInfoC2EPNS_5FrameENS0_4TypeE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_7BarInfoE
+__ZN7WebCore9JSBarInfo15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore9JSBarInfoC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7BarInfoEEE
+__ZN7WebCore9JSBarInfoC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7BarInfoEEE
+__ZN7WebCore9JSBarInfo18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16jsBarInfoVisibleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7BarInfo7visibleEv
+__ZNK7WebCore6Chrome16statusbarVisibleEv
+__ZNK7WebCore15HTMLFormElement14isURLAttributeEPNS_9AttributeE
+__ZN7WebCore21JSHTMLFieldSetElementD1Ev
+__ZN7WebCore30JSHTMLFieldSetElementPrototypeD1Ev
+__ZN7WebCore12InputElement20updateSelectionRangeERNS_16InputElementDataEii
+__ZN7WebCore21setJSElementScrollTopEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore7Element12setScrollTopEi
+__ZN7WebCore9RenderBox12setScrollTopEi
+__ZN7WebCore8Document29removeStyleSheetCandidateNodeEPNS_4NodeE
+__ZN3WTF11ListHashSetIPN7WebCore4NodeENS_7PtrHashIS3_EEE15unlinkAndDeleteEPNS_15ListHashSetNodeIS3_EE
+__ZThn8_N7WebCore16HTMLStyleElementD0Ev
+__ZN3WTF6VectorIPN7WebCore9RenderBoxELm16EE6shrinkEm
+__ZN7WebCore28setJSHTMLLabelElementHtmlForEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLLabelElement10setHtmlForERKNS_6StringE
+__ZN7WebCore7BarInfo15disconnectFrameEv
+__ZNK7WebCore12RenderButton14hasLineIfEmptyEv
+__ZNK7WebCore22HTMLFormControlElement11virtualFormEv
+__ZN7WebCore9JSBarInfoD1Ev
+__ZN7WebCore9JSBarInfoD2Ev
+__ZN7WebCore18JSBarInfoPrototypeD1Ev
+__ZThn8_N7WebCore17HTMLIFrameElementD0Ev
+__ZThn8_N7WebCore17HTMLScriptElementD0Ev
+__ZThn8_N7WebCore16HTMLLabelElementD0Ev
+__ZN7WebCore26setJSHTMLEmbedElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLPlugInElement8setWidthERKNS_6StringE
+__ZN7WebCore27setJSHTMLEmbedElementHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLPlugInElement9setHeightERKNS_6StringE
+__ZN7WebCore9CSSParser10parseShapeEib
+__ZN7WebCore17CSSPrimitiveValue4initEN3WTF10PassRefPtrINS_4RectEEE
+__ZN7WebCore11RenderStyle7setClipENS_6LengthES1_S1_S1_
+__ZN7WebCore9RenderBox8clipRectEii
+__ZN7WebCore9RenderBox13absoluteQuadsERN3WTF6VectorINS_9FloatQuadELm0EEE
+__ZN7WebCore23jsHTMLFormElementMethodEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLFormElement6methodEv
+__ZN7WebCore25jsHTMLFormElementElementsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsHTMLInputElementSelectionStartEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore18JSHTMLInputElement14selectionStartEPN3JSC9ExecStateE
+__ZNK7WebCore16HTMLInputElement16canHaveSelectionEv
+__ZNK7WebCore16HTMLInputElement14selectionStartEv
+__ZN7WebCore30jsHTMLInputElementSelectionEndEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore18JSHTMLInputElement12selectionEndEPN3JSC9ExecStateE
+__ZNK7WebCore16HTMLInputElement12selectionEndEv
+__ZN7WebCore32setJSHTMLTableElementCellPaddingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLTableElement14setCellPaddingERKNS_6StringE
+__ZN7WebCore32setJSHTMLTableElementCellSpacingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLTableElement14setCellSpacingERKNS_6StringE
+__ZN7WebCore11RenderBlock28removeLeftoverAnonymousBlockEPS0_
+__ZN7WebCore24JSCSSStyleSheetPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore42jsCSSStyleSheetPrototypeFunctionInsertRuleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZNK7WebCore15JSCSSStyleSheet9classInfoEv
-__ZN7WebCore13CSSStyleSheet7addRuleERKNS_6StringES3_Ri
-__ZN7WebCore13CSSStyleSheet7addRuleERKNS_6StringES3_iRi
-__ZN7WebCore13CSSStyleSheet10insertRuleERKNS_6StringEjRi
-__ZN7WebCore9StyleList6insertEjN3WTF10PassRefPtrINS_9StyleBaseEEE
-__ZN7WebCore13CSSStyleSheet17styleSheetChangedEv
-__ZN7WebCore42jsDocumentPrototypeFunctionCreateElementNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN3KJS17staticValueGetterIN7WebCore17JSHTMLHtmlElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSHTMLHtmlElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore15headConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN3KJS17staticValueGetterIN7WebCore17JSHTMLHeadElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSHTMLHeadElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore17createBaseWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore17JSHTMLBaseElementC1EPN3KJS8JSObjectEPNS_15HTMLBaseElementE
-__ZN7WebCore17JSHTMLBaseElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore17JSHTMLBaseElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSHTMLBaseElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore18isindexConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore18HTMLIsIndexElementC1EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore16HTMLInputElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore20createIsIndexWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore20JSHTMLIsIndexElementC1EPN3KJS8JSObjectEPNS_18HTMLIsIndexElementE
-__ZN7WebCore20JSHTMLIsIndexElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore20JSHTMLIsIndexElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore20JSHTMLIsIndexElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLStyleElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLStyleElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore21createOptGroupWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore21JSHTMLOptGroupElementC1EPN3KJS8JSObjectEPNS_19HTMLOptGroupElementE
-__ZN7WebCore21JSHTMLOptGroupElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore21JSHTMLOptGroupElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSHTMLOptGroupElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore21JSHTMLFieldSetElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSHTMLFieldSetElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore19createLegendWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore19JSHTMLLegendElementC1EPN3KJS8JSObjectEPNS_17HTMLLegendElementE
-__ZN7WebCore19JSHTMLLegendElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore19JSHTMLLegendElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSHTMLLegendElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLOListElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLOListElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLDListElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLDListElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore14dirConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore20HTMLDirectoryElementC1EPNS_8DocumentE
-__ZN7WebCore22createDirectoryWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore22JSHTMLDirectoryElementC1EPN3KJS8JSObjectEPNS_20HTMLDirectoryElementE
-__ZN7WebCore22JSHTMLDirectoryElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore22JSHTMLDirectoryElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore22JSHTMLDirectoryElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore15menuConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore15HTMLMenuElementC2EPNS_8DocumentE
-__ZN7WebCore17createMenuWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore17JSHTMLMenuElementC1EPN3KJS8JSObjectEPNS_15HTMLMenuElementE
-__ZN7WebCore17JSHTMLMenuElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore17JSHTMLMenuElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSHTMLMenuElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore22JSHTMLParagraphElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore22JSHTMLParagraphElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore20JSHTMLHeadingElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore20JSHTMLHeadingElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore16quoteConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLQuoteElementC1EPNS_8DocumentE
-__ZN7WebCore18createQuoteWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore18JSHTMLQuoteElementC1EPN3KJS8JSObjectEPNS_16HTMLQuoteElementE
-__ZN7WebCore18JSHTMLQuoteElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLQuoteElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLQuoteElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore16JSHTMLPreElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSHTMLPreElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore15JSHTMLBRElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSHTMLBRElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore21createBaseFontWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore21JSHTMLBaseFontElementC1EPN3KJS8JSObjectEPNS_19HTMLBaseFontElementE
-__ZN7WebCore21JSHTMLBaseFontElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore21JSHTMLBaseFontElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSHTMLBaseFontElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore17JSHTMLFontElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSHTMLFontElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore15JSHTMLHRElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSHTMLHRElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore14modConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore14HTMLModElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore16createModWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore16JSHTMLModElementC1EPN3KJS8JSObjectEPNS_14HTMLModElementE
-__ZN7WebCore16JSHTMLModElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore16JSHTMLModElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSHTMLModElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLParamElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLParamElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore19createAppletWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore19JSHTMLAppletElementC1EPN3KJS8JSObjectEPNS_17HTMLAppletElementE
-__ZN7WebCore19JSHTMLAppletElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore19JSHTMLAppletElement18canGetItemsForNameEPN3KJS9ExecStateEPNS_17HTMLAppletElementERKNS1_10IdentifierE
-__ZN7WebCore19JSHTMLAppletElement24customGetOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore17HTMLAppletElement11getInstanceEv
-__ZN3KJS17staticValueGetterIN7WebCore19JSHTMLAppletElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSHTMLAppletElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore23tableCaptionConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore23HTMLTableCaptionElementC1EPNS_8DocumentE
-__ZN7WebCore25createTableCaptionWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore25JSHTMLTableCaptionElementC1EPN3KJS8JSObjectEPNS_23HTMLTableCaptionElementE
-__ZN7WebCore25JSHTMLTableCaptionElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore25JSHTMLTableCaptionElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore25JSHTMLTableCaptionElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore21JSHTMLTableColElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSHTMLTableColElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore21createFrameSetWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore21JSHTMLFrameSetElementC1EPN3KJS8JSObjectEPNS_19HTMLFrameSetElementE
-__ZN7WebCore21JSHTMLFrameSetElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore21JSHTMLFrameSetElement18canGetItemsForNameEPN3KJS9ExecStateEPNS_19HTMLFrameSetElementERKNS1_10IdentifierE
-__ZN3KJS17staticValueGetterIN7WebCore21JSHTMLFrameSetElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSHTMLFrameSetElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore18createFrameWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore18JSHTMLFrameElementC1EPN3KJS8JSObjectEPNS_16HTMLFrameElementE
-__ZN7WebCore18JSHTMLFrameElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLFrameElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLFrameElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore28JSHTMLHtmlElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore6JSTextEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore6JSText16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore18HTMLIsIndexElementD1Ev
-__ZN7WebCore23HTMLTableCaptionElementD1Ev
-__ZN7WebCore18JSHTMLLabelElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore5Frame13setZoomFactorEi
--[WebCoreFrameBridge stringWithData:]
+__ZN7WebCore29setJSHTMLInputElementDisabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZNK7WebCore17ScrollbarThemeMac20supportsControlTintsEv
+__ZThn8_N7WebCore17HTMLButtonElementD0Ev
+__ZN7WebCore15jsNodeOnkeydownEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node9onkeydownEv
+__ZN7WebCore16jsNodeOnkeypressEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node10onkeypressEv
+__ZN7WebCore41jsHTMLInputElementPrototypeFunctionSelectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore25jsHTMLTableElementTBodiesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16HTMLTableElement7tBodiesEv
+__ZN7WebCore38jsXMLHttpRequestPrototypeFunctionAbortEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14XMLHttpRequest5abortEv
+__ZN7WebCore14XMLHttpRequest18dispatchAbortEventEv
+__ZN7WebCoreL17reportUnsafeUsageEPNS_22ScriptExecutionContextERKNS_6StringE
+__ZN7WebCore15getDOMStructureINS_15JSKeyboardEventEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore15JSKeyboardEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSKeyboardEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13KeyboardEventEEE
+__ZN7WebCore15JSKeyboardEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13KeyboardEventEEE
+__ZN7WebCore15JSKeyboardEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore13KeyboardEvent7keyCodeEv
+__ZN7WebCore23jsKeyboardEventShiftKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12jsNodeOnblurEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node6onblurEv
+__ZThn128_N7WebCore16HTMLInputElement20setValueFromRendererERKNS_6StringE
+__ZThn128_NK7WebCore16HTMLInputElement30searchEventsShouldBeDispatchedEv
+__ZN7WebCore17jsClientRectRightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsClientRectBottomEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn16_N7WebCore24DocumentThreadableLoader7didFailEPNS_17SubresourceLoaderERKNS_13ResourceErrorE
+__ZN7WebCore24DocumentThreadableLoader7didFailEPNS_17SubresourceLoaderERKNS_13ResourceErrorE
+__ZThn16_N7WebCore14XMLHttpRequest7didFailERKNS_13ResourceErrorE
+__ZN7WebCore14XMLHttpRequest7didFailERKNS_13ResourceErrorE
+__ZN7WebCore14XMLHttpRequest10abortErrorEv
+__ZN7WebCore14XMLHttpRequest12genericErrorEv
+__ZN7WebCore24DocumentThreadableLoader6cancelEv
+__ZThn8_N7WebCore11EditingTextD0Ev
+__ZN7WebCore15JSKeyboardEventD1Ev
+__ZN7WebCore27setJSHTMLTableElementBorderEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLTableElement9setBorderERKNS_6StringE
+__ZN7WebCore42jsElementPrototypeFunctionGetAttributeNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore21jsHTMLElementTabIndexEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11HTMLElement8tabIndexEv
+__ZNK7WebCore4Node13supportsFocusEv
+__ZNK7WebCore4Node8tabIndexEv
+__ZN7WebCore24JSKeyboardEventPrototypeD1Ev
+__ZN3WTF9HashTableIyyNS_17IdentityExtractorIyEEN7WebCore12LinkHashHashENS_10HashTraitsIyEES6_E5clearEv
+__ZN7WebCore4Page22allVisitedStateChangedEPNS_9PageGroupE
+__ZN7WebCore16CSSStyleSelector15SelectorChecker22allVisitedStateChangedEv
+__ZN7WebCore23ApplicationCacheStorage5emptyEv
+__ZN7WebCore31CrossOriginPreflightResultCache6sharedEv
+__ZN7WebCore31CrossOriginPreflightResultCache5emptyEv
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore35CrossOriginPreflightResultCacheItemEKNS_7HashMapISt4pairINS1_6StringENS1_4KURLEES3_N
+__ZN7WebCore12IconDatabase14removeAllIconsEv
+__ZN7WebCore10IconRecordD1Ev
+__ZN7WebCore10IconRecordD2Ev
+__ZN3WTF9HashTableIPN7WebCore10IconRecordES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E5clearEv
+__ZN7WebCore12IconDatabase22removeAllIconsOnThreadEv
+__ZN7WebCore14SQLiteDatabase16runVacuumCommandEv
+__ZN7WebCore4Page14setMediaVolumeEf
+__ZN7WebCore8Document20mediaVolumeDidChangeEv
__ZNK7WebCore12EventHandler20currentKeyboardEventEv
__ZN7WebCore15FocusController15setInitialFocusENS_14FocusDirectionEPNS_13KeyboardEventE
-__ZN7WebCore30newStreamingTextDecoderUTF16LEERKNS_12TextEncodingEPKv
-__ZN7WebCore14TextCodecUTF166decodeEPKcmb
-__ZN7WebCore15BackForwardList17backListWithLimitEiRN3WTF6VectorINS1_6RefPtrINS_11HistoryItemEEELm0EEE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HistoryItemEEELm0EE14expandCapacityEmPKS4_
--[WebCoreFrameBridge setMarkedTextMatchesAreHighlighted:]
-__ZN7WebCore5Frame34setMarkedTextMatchesAreHighlightedEb
--[WebCoreFrameBridge markAllMatchesForText:caseSensitive:limit:]
-__ZN7WebCore5Frame21markAllMatchesForTextERKNS_6StringEbj
-__ZN7WebCore13findPlainTextEPKNS_5RangeERKNS_6StringEbb
-__ZNK7WebCore5Range10cloneRangeERi
-__ZN7WebCore20CircularSearchBufferC2ERKNS_6StringEb
-__ZNK7WebCore20CircularSearchBuffer6lengthEv
-__ZN7WebCore18endVisiblePositionEPKNS_5RangeENS_9EAffinityE
-__ZN7WebCore20startVisiblePositionEPKNS_5RangeENS_9EAffinityE
-__ZN7WebCore8setStartEPNS_5RangeERKNS_15VisiblePositionE
-__ZN7WebCore24rangeCompliantEquivalentERKNS_15VisiblePositionE
-__ZN7WebCore13InlineTextBox20paintTextMatchMarkerEPNS_15GraphicsContextEiiNS_14DocumentMarkerEPNS_11RenderStyleEPKNS_4FontE
-__ZN7WebCore8Document24setRenderedRectForMarkerEPNS_4NodeENS_14DocumentMarkerERKNS_7IntRectE
-__ZNK7WebCore5Frame31markedTextMatchesAreHighlightedEv
--[WebCoreFrameBridge searchFor:direction:caseSensitive:wrap:startInSelection:]
-__ZN7WebCore5Frame10findStringERKNS_6StringEbbbb
--[WebCoreFrameBridge unmarkAllTextMatches]
--[WebCoreFrameBridge rectsForTextMatches]
-__ZN7WebCore8Document23renderedRectsForMarkersENS_14DocumentMarker10MarkerTypeE
-__ZNK7WebCore5Frame18selectionTextRectsERN3WTF6VectorINS_9FloatRectELm0EEEb
-__ZN7WebCore5Range15addLineBoxRectsERN3WTF6VectorINS_7IntRectELm0EEEb
-__ZN7WebCore10RenderText15addLineBoxRectsERN3WTF6VectorINS_7IntRectELm0EEEjjb
-__ZN3WTF6VectorIN7WebCore9FloatRectELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore9FloatRectELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore9FloatRectELm0EE15reserveCapacityEm
-__ZNK7WebCore5Frame14selectionImageEb
-__ZNK7WebCore5Frame13imageFromRectE7_NSRect
-__ZN7WebCoreeqERKNS_5RangeES2_
--[WebCoreFrameBridge selectedString]
-__ZNK7WebCore5Frame12selectedTextEv
-__ZNK7WebCore24JSKeyboardEventPrototype9classInfoEv
-__ZNK7WebCore7UIEvent5pageYEv
-__ZNK7WebCore7UIEvent6layerYEv
-__ZNK7WebCore7UIEvent5pageXEv
-__ZNK7WebCore7UIEvent6layerXEv
-__ZN7WebCore6setEndEPNS_5RangeERKNS_15VisiblePositionE
-__ZN7WebCore41jsHTMLAnchorElementPrototypeFunctionFocusEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore17HTMLAnchorElement13supportsFocusEv
-__ZN7WebCore12RenderObject32handleDynamicFloatPositionChangeEv
-__ZN7WebCore40jsDOMWindowPrototypeFunctionGetSelectionEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9DOMWindow12getSelectionEv
-__ZN7WebCore12DOMSelectionC2EPNS_5FrameE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_12DOMSelectionE
-__ZN7WebCore23JSDOMSelectionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore14JSDOMSelectionC1EPN3KJS8JSObjectEPNS_12DOMSelectionE
-__ZN7WebCore14JSDOMSelection18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore14JSDOMSelectionEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore14JSDOMSelection16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore12DOMSelection10anchorNodeEv
-__ZNK7WebCore12DOMSelection10rangeCountEv
-__ZN7WebCore12DOMSelection15disconnectFrameEv
-__ZN3KJS17staticValueGetterIN7WebCore18JSEventConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSEventConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS29windowProtoFuncNotImplementedEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore20CompositeEditCommand23breakOutOfEmptyListItemEv
-__ZN7WebCore22enclosingEmptyListItemERKNS_15VisiblePositionE
-__ZN7WebCore18enclosingListChildEPNS_4NodeE
-__ZN7WebCore13isListElementEPNS_4NodeE
-__ZN7WebCore44jsHTMLDocumentPrototypeFunctionCaptureEventsEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12HTMLDocument13captureEventsEv
-__ZN7WebCore12RenderObject33getAbsoluteRepaintRectWithOutlineEi
-__ZNK7WebCore12RenderInline20isInlineContinuationEv
-__ZN7WebCore13InlineFlowBox10flowObjectEv
-__ZN3WTF7HashSetIPN7WebCore10RenderFlowENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore10RenderFlow12paintOutlineEPNS_15GraphicsContextEii
-__ZN7WebCore12RenderObject17addFocusRingRectsEPNS_15GraphicsContextEii
+__ZN7WebCore15FocusController12advanceFocusENS_14FocusDirectionEPNS_13KeyboardEventEb
+__ZN7WebCore8Document17nextFocusableNodeEPNS_4NodeEPNS_13KeyboardEventE
+__ZNK7WebCore4Node19isKeyboardFocusableEPNS_13KeyboardEventE
+__ZN7WebCoreL25nextNodeWithExactTabIndexEPNS_4NodeEiPNS_13KeyboardEventE
+__ZN7WebCoreL17deepFocusableNodeENS_14FocusDirectionEPNS_4NodeEPNS_13KeyboardEventE
+__ZN7WebCore8Settings41setUsesDashboardBackwardCompatibilityModeEb
+__ZN7WebCore9FrameTree9clearNameEv
+__ZN7WebCore19InspectorController15disableProfilerEv
+__ZN7WebCore29setUsesTestModeFocusRingColorEb
+-[WebScriptObject JSObject]
+__ZN7WebCore16JSDOMWindowShell17putWithAttributesEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueEj
+-[WebScriptObject setValue:forKey:]
+__ZN3JSC8Bindings23convertObjcValueToValueEPNS_9ExecStateEPvNS0_13ObjcValueTypeEPNS0_10RootObjectE
+__ZN3JSC8Bindings17webUndefinedClassEv
+__ZN3JSC8Bindings20webScriptObjectClassEv
+__ZN3JSC8Bindings12ObjcInstanceC1EP11objc_objectN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZN3JSC8Bindings12ObjcInstanceC2EP11objc_objectN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZL11_didExecuteP15WebScriptObject
+__ZN3JSC8Bindings8Instance18didExecuteFunctionEv
+__ZN7WebCoreL30updateStyleIfNeededForBindingsEPN3JSC9ExecStateEPNS0_8JSObjectE
+__ZN7WebCore10RenderText17setSelectionStateENS_12RenderObject14SelectionStateE
+__ZNK7WebCore13InlineTextBox10isSelectedEii
+__ZNK7WebCore10RenderText18canBeSelectionLeafEv
+__ZN7WebCore10RenderText23selectionRectForRepaintEPNS_20RenderBoxModelObjectEb
+__ZN7WebCore12RenderObject21computeRectForRepaintEPNS_20RenderBoxModelObjectERNS_7IntRectEb
+__ZN7WebCore11RenderBlock23selectionRectForRepaintEPNS_20RenderBoxModelObjectEb
+__ZN7WebCore13AXObjectCache11getOrCreateEPNS_12RenderObjectE
+__ZN7WebCore13AXObjectCache3getEPNS_12RenderObjectE
+__ZNK3WTF7HashMapIPN7WebCore12RenderObjectEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3getERKS3_
+__ZNK7WebCore12RenderObject9isListBoxEv
+__ZN7WebCore13AXObjectCache14nodeIsAriaTypeEPNS_4NodeENS_6StringE
+__ZN7WebCore25AccessibilityRenderObject6createEPNS_12RenderObjectE
+__ZN7WebCore25AccessibilityRenderObjectC1EPNS_12RenderObjectE
+__ZN7WebCore25AccessibilityRenderObjectC2EPNS_12RenderObjectE
+__ZN7WebCore19AccessibilityObjectC2Ev
+__ZN7WebCore25AccessibilityRenderObject11setAriaRoleEv
+__ZNK7WebCore25AccessibilityRenderObject26determineAriaRoleAttributeEv
+__ZNK7WebCore25AccessibilityRenderObject12getAttributeERKNS_13QualifiedNameE
+__ZN7WebCore13AXObjectCache7getAXIDEPNS_19AccessibilityObjectE
+__ZNK7WebCore19AccessibilityObject10axObjectIDEv
+__ZNK3WTF9HashTableIjjNS_17IdentityExtractorIjEENS_7IntHashIjEENS_10HashTraitsIjEES6_E8containsIjNS_22IdentityHashTranslatorIjj
+__ZN3WTF7HashSetIjNS_7IntHashIjEENS_10HashTraitsIjEEE3addERKj
+__ZN3WTF9HashTableIjjNS_17IdentityExtractorIjEENS_7IntHashIjEENS_10HashTraitsIjEES6_E6expandEv
+__ZN3WTF9HashTableIjjNS_17IdentityExtractorIjEENS_7IntHashIjEENS_10HashTraitsIjEES6_E6rehashEi
+__ZN3WTF9HashTableIjjNS_17IdentityExtractorIjEENS_7IntHashIjEENS_10HashTraitsIjEES6_E13allocateTableEi
+__ZN7WebCore19AccessibilityObject13setAXObjectIDEj
+__ZN3WTF7HashMapIPN7WebCore12RenderObjectEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3setERKS3_RKj
+__ZN3WTF9HashTableIPN7WebCore12RenderObjectESt4pairIS3_jENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_1
+__ZN3WTF7HashMapIjNS_6RefPtrIN7WebCore19AccessibilityObjectEEENS_7IntHashIjEENS_10HashTraitsIjEENS7_IS4_EEE3setERKjRKS4_
+__ZN3WTF9HashTableIjSt4pairIjNS_6RefPtrIN7WebCore19AccessibilityObjectEEEENS_18PairFirstExtractorIS6_EENS_7IntHashIjEENS_14Pair
+__ZN7WebCore13AXObjectCache13attachWrapperEPNS_19AccessibilityObjectE
++[AccessibilityObjectWrapper initialize]
+-[AccessibilityObjectWrapper initWithAccessibilityObject:]
+-[AccessibilityObjectWrapper accessibilityFocusedUIElement]
+__ZN7WebCore25AccessibilityRenderObject18updateBackingStoreEv
+__ZNK7WebCore25AccessibilityRenderObject16focusedUIElementEv
+__ZNK7WebCore25AccessibilityRenderObject27shouldFocusActiveDescendantEv
+__ZNK7WebCore25AccessibilityRenderObject17ariaRoleAttributeEv
+__ZNK7WebCore25AccessibilityRenderObject22accessibilityIsIgnoredEv
+__ZNK7WebCore25AccessibilityRenderObject31isPresentationalChildOfAriaRoleEv
+__ZNK7WebCore25AccessibilityRenderObject12parentObjectEv
+__ZNK7WebCore25AccessibilityRenderObject33ariaRoleHasPresentationalChildrenEv
+__ZNK3WTF7HashMapIjNS_6RefPtrIN7WebCore19AccessibilityObjectEEENS_7IntHashIjEENS_10HashTraitsIjEENS7_IS4_EEE3getERKj
+__ZNK7WebCore12RenderObject10isMenuListEv
+__ZNK7WebCore25AccessibilityRenderObject21labelElementContainerEv
+__ZNK7WebCore25AccessibilityRenderObject9isControlEv
+__ZNK7WebCore25AccessibilityRenderObject9isHeadingEv
+__ZNK7WebCore25AccessibilityRenderObject9roleValueEv
+__ZNK7WebCore25AccessibilityRenderObject6isLinkEv
+-[AccessibilityObjectWrapper accessibilityAttributeValue:]
+__ZNK7WebCore25AccessibilityRenderObject9isWebAreaEv
+__ZNK7WebCore25AccessibilityRenderObject13isTextControlEv
+__ZNK7WebCore25AccessibilityRenderObject12isAttachmentEv
+__ZNK7WebCore25AccessibilityRenderObject5titleEv
+__ZNK7WebCore25AccessibilityRenderObject22ariaLabeledByAttributeEv
+__ZNK7WebCore25AccessibilityRenderObject20ariaAccessiblityNameERKNS_6StringE
+__ZN7WebCoreL21accessibleNameForNodeEPNS_4NodeE
+__ZN7WebCore13AXObjectCache15childrenChangedEPNS_12RenderObjectE
+__ZN7WebCore13AXObjectCache25postNotificationToElementEPNS_12RenderObjectERKNS_6StringE
+__ZNK7WebCore9DOMWindow27pendingUnloadEventListenersEv
+__ZN7WebCore13InlineTextBox14paintSelectionEPNS_15GraphicsContextEiiPNS_11RenderStyleERKNS_4FontE
+__ZN7WebCore13InlineTextBox17selectionStartEndERiS1_
+__ZN7WebCore15GraphicsContext20drawHighlightForTextERKNS_4FontERKNS_7TextRunERKNS_8IntPointEiRKNS_5ColorEii
+__ZNK7WebCore12RenderObject24selectionForegroundColorEv
+__ZNK7WebCore11RenderTheme30activeSelectionForegroundColorEv
+__ZNK7WebCore14RenderThemeMac33supportsSelectionForegroundColorsEv
+__ZNK7WebCore25AccessibilityRenderObject24accessibilityDescriptionEv
+__ZNK7WebCore25AccessibilityRenderObject24ariaDescribedByAttributeEv
+__ZNK7WebCore11HistoryItem8referrerEv
+__ZThn24_NK7WebCore14XMLHttpRequest10canSuspendEv
+__ZNK7WebCore14XMLHttpRequest10canSuspendEv
+__ZThn24_N7WebCore14XMLHttpRequest16contextDestroyedEv
+__ZN7WebCore14XMLHttpRequest16contextDestroyedEv
+__ZThn8_N7WebCore7ElementD0Ev
+__ZN7WebCore19HTMLTextAreaElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore19HTMLTextAreaElement15childrenChangedEbPNS_4NodeES2_i
+__ZNK7WebCore19HTMLTextAreaElement12defaultValueEv
+__ZN7WebCore27jsHTMLOptionElementDisabledEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore26RenderTextControlMultiLine21preferredContentWidthEf
+__ZNK7WebCore17RenderTextControl18scrollbarThicknessEv
+__ZN7WebCore11RenderBlock22skipTrailingWhitespaceERNS_14InlineIteratorE
+__ZThn8_N7WebCore19HTMLTextAreaElementD0Ev
+__ZNK7WebCore16HTMLLabelElement11isFocusableEv
+__ZN7WebCore12RenderInline16positionForPointERKNS_8IntPointE
+__ZN7WebCore10IconLoader11stopLoadingEv
+__ZNK7WebCore10WheelEvent12isWheelEventEv
+__ZN7WebCore15getDOMStructureINS_12JSWheelEventEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore12JSWheelEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore12JSWheelEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10WheelEventEEE
+__ZN7WebCore12JSWheelEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10WheelEventEEE
+__ZN7WebCore12JSWheelEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19jsWheelEventClientXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsWheelEventClientYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsWheelEventScreenXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsWheelEventScreenYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsWheelEventCtrlKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsWheelEventAltKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsWheelEventShiftKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsWheelEventMetaKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsWheelEventWheelDeltaEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsWheelEventWheelDeltaXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsElementPrototypeFunctionContainsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13AXObjectCache13detachWrapperEPNS_19AccessibilityObjectE
+-[AccessibilityObjectWrapper detach]
+-[AccessibilityObjectWrapper unregisterUniqueIdForUIElement]
+__ZN7WebCore25AccessibilityRenderObject6detachEv
+__ZN7WebCore19AccessibilityObject13clearChildrenEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore19AccessibilityObjectEEELm0EE14shrinkCapacityEm
+__ZN7WebCore19AccessibilityObject6detachEv
+__ZN7WebCore13AXObjectCache10removeAXIDEPNS_19AccessibilityObjectE
+__ZN3WTF9HashTableIjjNS_17IdentityExtractorIjEENS_7IntHashIjEENS_10HashTraitsIjEES6_E4findIjNS_22IdentityHashTranslatorIjjS4_EE
+__ZN3WTF9HashTableIjjNS_17IdentityExtractorIjEENS_7IntHashIjEENS_10HashTraitsIjEES6_E47removeAndInvalidateWithoutEntryConsisten
+__ZN3WTF9HashTableIjjNS_17IdentityExtractorIjEENS_7IntHashIjEENS_10HashTraitsIjEES6_E6removeEPj
+__ZN7WebCore25AccessibilityRenderObjectD0Ev
+__ZN7WebCore19AccessibilityObjectD2Ev
+__ZN7WebCore13AXObjectCache6removeEPNS_12RenderObjectE
+__ZN7WebCore13AXObjectCache6removeEj
+__ZN3JSC8Bindings12ObjcInstanceD0Ev
+__ZN7WebCore13AXObjectCache21handleAriaRoleChangedEPNS_12RenderObjectE
+__ZN7WebCore13AXObjectCache29handleFocusedUIElementChangedEv
+__ZN7WebCore7Element21updateFocusAppearanceEb
+__ZN7WebCoreL21ariaRoleToWebCoreRoleENS_6StringE
+__ZN3WTF7HashMapIN7WebCore6StringENS1_17AccessibilityRoleENS1_15CaseFoldingHashENS_10HashTraitsIS2_EENS5_IS3_EEE3setERKS2_RKS3_
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS1_17AccessibilityRoleEENS_18PairFirstExtractorIS5_EENS1_15CaseFoldingHashENS_1
+__ZNK3WTF7HashMapIN7WebCore6StringENS1_17AccessibilityRoleENS1_15CaseFoldingHashENS_10HashTraitsIS2_EENS5_IS3_EEE3getERKS2_
+__ZN7WebCore19AccessibilityObject13isARIAControlENS_17AccessibilityRoleE
+__ZN7WebCore19AccessibilityObject11isARIAInputENS_17AccessibilityRoleE
+-[AccessibilityObjectWrapper accessibilityActionNames]
+__ZNK7WebCore25AccessibilityRenderObject13actionElementEv
+__ZNK7WebCore25AccessibilityRenderObject18isFileUploadButtonEv
+__ZNK7WebCore25AccessibilityRenderObject13isImageButtonEv
+__ZNK7WebCore25AccessibilityRenderObject13isNativeImageEv
+__ZNK7WebCore25AccessibilityRenderObject13anchorElementEv
+__ZNK7WebCore25AccessibilityRenderObject13axObjectCacheEv
+__ZNK7WebCore25AccessibilityRenderObject8isAnchorEv
+__ZN7WebCore11RenderBlock17addFocusRingRectsEPNS_15GraphicsContextEii
__ZN7WebCore4Node13aboutToUnloadEv
-__ZNK7WebCore23HTMLTableCaptionElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore23HTMLTableCaptionElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore23HTMLTableCaptionElement17endTagRequirementEv
-__ZNK7WebCore23HTMLTableCaptionElement11tagPriorityEv
-__ZNK7WebCore14DocumentLoader19originalRequestCopyEv
-__ZN7WebCore9DocLoader21decrementRequestCountEv
-__ZNK7WebCore8Document6domainEv
-__ZN7WebCore17SubresourceLoader6createEPNS_5FrameEPNS_23SubresourceLoaderClientERKNS_15ResourceRequestEbbb
-__ZNK7WebCore11FrameLoader16outgoingReferrerEv
-__ZN7WebCore11FrameLoader18shouldHideReferrerERKNS_4KURLERKNS_6StringE
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_iENS_18PairFirstExtractorIS5_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSA_IaEEEESB_E4findIS3_NS_22IdentityHashTranslatorIS3_S5_S8_EEEENS_17HashTableIteratorIS3_S5_S7_S8_SD_SB_EERKT_
-__ZNK7WebCore19ResourceRequestBase13isConditionalEv
-__ZNK7WebCore11FrameLoader15originalRequestEv
-__ZN7WebCore19ResourceRequestBase14setCachePolicyENS_26ResourceRequestCachePolicyE
-__ZN7WebCore17SubresourceLoaderC2EPNS_5FrameEPNS_23SubresourceLoaderClientEbb
-__ZN7WebCore14DocumentLoader20addSubresourceLoaderEPNS_14ResourceLoaderE
-__ZN7WebCore17SubresourceLoader4loadERKNS_15ResourceRequestE
-__ZN7WebCore11FrameLoader22didTellClientAboutLoadERKNS_6StringE
-__ZN7WebCore14ResourceLoader4loadERKNS_15ResourceRequestE
-__ZN7WebCore17SubresourceLoader15willSendRequestERNS_15ResourceRequestERKNS_16ResourceResponseE
-__ZN7WebCore11FrameLoader32assignIdentifierToInitialRequestEmRKNS_15ResourceRequestE
-__ZNK7WebCore11FrameLoader14willUseArchiveEPNS_14ResourceLoaderERKNS_15ResourceRequestERKNS_4KURLE
-__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore17SubresourceLoaderEEEPNS2_7RequestENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3getEPS3_
-__ZNK3WTF7HashMapIN7WebCore6StringEPNS1_14CachedResourceENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3getERKS2_
-__ZN7WebCore5Cache16resourceAccessedEPNS_14CachedResourceE
-__ZN7WebCore5Cache17removeFromLRUListEPNS_14CachedResourceE
-__ZN7WebCore5Cache15insertInLRUListEPNS_14CachedResourceE
-__ZN7WebCore5Cache10lruListForEPNS_14CachedResourceE
-__ZN3WTF6VectorIN7WebCore5Cache7LRUListELm32EE4growEm
-__ZN7WebCore9DocLoader22checkCacheObjectStatusEPNS_14CachedResourceE
-__ZN7WebCore14CachedResource3refEPNS_20CachedResourceClientE
-__ZN7WebCore5Cache22addToLiveResourcesSizeEPNS_14CachedResourceE
-__ZN3WTF7HashMapIPN7WebCore20CachedResourceClientEjNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IjEEE3addERKS3_RKj
-__ZN7WebCore16imageConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLImageElementC2EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore15HTMLImageLoaderC2EPNS_7ElementE
-__ZNK7WebCore16HTMLImageElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore16HTMLImageElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore15HTMLImageLoader17updateFromElementEv
-__ZNK7WebCore7Element24imageSourceAttributeNameEv
-__ZN7WebCore15HTMLImageLoader15setLoadingImageEPNS_11CachedImageE
-__ZN7WebCore11CachedImage3refEPNS_20CachedResourceClientE
-__ZNK7WebCore11CachedImage9imageRectEv
-__ZNK7WebCore16HTMLImageElement17endTagRequirementEv
-__ZNK7WebCore16HTMLImageElement11tagPriorityEv
-__ZN7WebCore16HTMLImageElement20insertedIntoDocumentEv
-__ZN7WebCore12HTMLDocument12addNamedItemERKNS_6StringE
-__ZN7WebCore12addItemToMapERN3WTF7HashMapIPNS_10StringImplEiNS_10StringHashENS0_10HashTraitsIS3_EENS5_IiEEEERKNS_6StringE
-__ZN7WebCore12HTMLDocument20addDocExtraNamedItemERKNS_6StringE
-__ZN7WebCore16HTMLImageElement6attachEv
-__ZNK7WebCore8Document12getCSSTargetEv
-__ZNK7WebCore14CachedResource9isExpiredEv
-__ZNK7WebCore20ResourceResponseBase14expirationDateEv
-__ZN7WebCore11FrameLoader7canLoadERKNS_14CachedResourceEPKNS_8DocumentE
-__ZNK7WebCore12RenderObject15containingBlockEv
-__ZN7WebCore15RenderTableCellC2EPNS_4NodeE
-__ZN7WebCore15RenderTableCell17updateFromElementEv
-__ZN7WebCore15RenderTableCell8setStyleEPNS_11RenderStyleE
-__ZN7WebCore15RenderTableCell13requiresLayerEv
-__ZN7WebCore14RenderTableRow8addChildEPNS_12RenderObjectES2_
-__ZNK7WebCore15RenderTableCell11isTableCellEv
-__ZN7WebCore18RenderTableSection7addCellEPNS_15RenderTableCellEPNS_12RenderObjectE
-__ZN7WebCore11HTMLElement16addHTMLAlignmentEPNS_15MappedAttributeE
-__ZN7WebCore13StyledElement14addCSSPropertyEPNS_15MappedAttributeEii
-__ZN7WebCore26CSSMutableStyleDeclaration11setPropertyEiibb
-__ZN7WebCore36htmlAttributeHasCaseInsensitiveValueERKNS_13QualifiedNameE
-__ZN7WebCore17addLocalNameToSetEPN3WTF7HashSetIPNS_16AtomicStringImplENS0_7PtrHashIS3_EENS0_10HashTraitsIS3_EEEERKNS_13QualifiedNameE
-__ZNK7WebCore18NamedMappedAttrMap14mapsEquivalentEPKS0_
-__ZNK7WebCore18NamedMappedAttrMap9declCountEv
-__ZN7WebCore11RenderTable12appendColumnEi
-__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE4growEm
-__ZN3WTF6VectorIN7WebCore11RenderTable12ColumnStructELm0EE14expandCapacityEm
-__ZN7WebCore18RenderTableSection12appendColumnEi
-__ZN3WTF6VectorIN7WebCore18RenderTableSection10CellStructELm0EE6resizeEm
-__ZN3WTF6VectorIN7WebCore18RenderTableSection10CellStructELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore18RenderTableSection10CellStructELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIiLm0EE4growEm
-__ZN3WTF6VectorIiLm0EE14expandCapacityEm
-__ZNK7WebCore26CSSMutableStyleDeclaration19getPropertyCSSValueEi
-__ZNK7WebCore23DeprecatedValueListImpl8fromLastEv
-__ZN7WebCore17CSSPrimitiveValue14getDoubleValueEt
-__ZN7WebCore10HTMLParser18isResidualStyleTagERKNS_12AtomicStringE
-__ZNK7WebCore13ContainerNode16virtualLastChildEv
-__ZN3WTF9HashTableIN7WebCore18MappedAttributeKeyESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_19MappedAttributeHashENS_14PairHashTraitsINS1_24MappedAttributeKeyTraitsENS_10HashTraitsIiEEEES9_E4findIS2_NS_22IdentityHashTranslatorIS2_S4_S7_EEEENS_17HashTableIteratorIS2_S4_S6_S7_SC_S9_EERKT_
-__ZN7WebCore13brConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore13HTMLBRElementC2EPNS_8DocumentE
-__ZNK7WebCore13HTMLBRElement17endTagRequirementEv
-__ZNK7WebCore13HTMLBRElement11tagPriorityEv
-__ZN7WebCore13HTMLBRElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore8RenderBRC2EPNS_4NodeE
-__ZN7WebCore8RenderBR8setStyleEPNS_11RenderStyleE
-__ZN7WebCore12RenderObject20createAnonymousBlockEv
-__ZNK7WebCore8RenderBR4isBREv
--[WebCoreFrameBridge stringByEvaluatingJavaScriptFromString:]
-__ZN7WebCore16HTMLImageElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore11RenderImageC2EPNS_4NodeE
-__ZN7WebCore14RenderReplacedC2EPNS_4NodeERKNS_7IntSizeE
-__ZN7WebCore11RenderImage13updateAltTextEv
-__ZNK7WebCore16HTMLImageElement7altTextEv
-__ZNK7WebCore12RenderObject10firstChildEv
-__ZNK7WebCore11RenderImage7isImageEv
-__ZN7WebCore11RenderImage14setCachedImageEPNS_11CachedImageE
-__ZNK7WebCore12RenderObject4isBREv
-__ZNK7WebCore12RenderObject25backslashAsCurrencySymbolEv
-__ZN7WebCore10StringImpl7replaceEtt
-__ZN7WebCore10RenderText8setStyleEPNS_11RenderStyleE
-__ZNK7WebCore12RenderObject9isSVGTextEv
-__ZNK7WebCore4Node15isIndeterminateEv
-__ZNK7WebCore4Node9isCheckedEv
-__ZN7WebCore17equalIgnoringCaseEPNS_10StringImplES1_
-__ZN7WebCore6Editor9copyImageERKNS_13HitTestResultE
-__ZN7WebCore10Pasteboard17generalPasteboardEv
-__ZN7WebCore10PasteboardC2EP12NSPasteboard
-__ZN7WebCore10Pasteboard10writeImageEPNS_4NodeERKNS_4KURLERKNS_6StringE
-__ZN7WebCore21writableTypesForImageEv
-__ZN7WebCore19writableTypesForURLEv
-__ZN7WebCore10Pasteboard8writeURLEP12NSPasteboardP7NSArrayRKNS_4KURLERKNS_6StringEPNS_5FrameE
-_suggestedFilenameWithMIMEType
-__ZN7WebCore16MIMETypeRegistry24getExtensionsForMIMETypeERKNS_6StringE
-__ZN7WebCore10Pasteboard32writeFileWrapperAsRTFDAttachmentEP13NSFileWrapper
-__ZN7WebCore5Image19drawPatternCallbackEPvP9CGContext
-__ZN7WebCore18marqueeConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore18HTMLMarqueeElementC1EPNS_8DocumentE
-__ZNK7WebCore18HTMLMarqueeElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
-__ZN7WebCore18HTMLMarqueeElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore18HTMLMarqueeElement17endTagRequirementEv
-__ZNK7WebCore18HTMLMarqueeElement11tagPriorityEv
-__ZN7WebCore16StyleMarqueeDataC1ERKS0_
-__ZN7WebCore7MarqueeC1EPNS_11RenderLayerE
-__ZN7WebCore7Marquee18updateMarqueeStyleEv
-__ZNK7WebCore7Marquee12isHorizontalEv
-__ZNK7WebCore7Marquee9directionEv
-__ZNK7WebCore7Marquee12marqueeSpeedEv
-__ZN7WebCore7Marquee21updateMarqueePositionEv
-__ZN7WebCore7Marquee15computePositionENS_17EMarqueeDirectionEb
-__ZN7WebCore7Marquee5startEv
-__ZN7WebCore5TimerINS_7MarqueeEE5firedEv
-__ZN7WebCore7Marquee10timerFiredEPNS_5TimerIS0_EE
-__ZNK7WebCore11HistoryItem12formReferrerEv
-__ZNK7WebCore11HistoryItem15formContentTypeEv
-__ZN7WebCore14ResourceHandle17willLoadFromCacheERNS_15ResourceRequestE
-__ZNK7WebCore15HTMLLinkElement14isURLAttributeEPNS_9AttributeE
-__ZNK7WebCore15HTMLBodyElement14isURLAttributeEPNS_9AttributeE
--[DOMHTMLScriptElement src]
--[DOMHTMLLinkElement rel]
--[DOMHTMLLinkElement href]
--[DOMHTMLBodyElement background]
-__ZNK7WebCore15HTMLBodyElement10backgroundEv
--[DOMHTMLInputElement src]
-__ZN3WTF7HashMapINS_6RefPtrIN7WebCore5FrameEEEPNS0_IxNS1_INS2_17InspectorResourceEEENS_7IntHashIyEENS_10HashTraitsIxEENS9_IS6_EEEENS_7PtrHashIS4_EENS9_IS4_EENS9_ISD_EEE3setEPS3_RKSD_
-__ZN7WebCore21updateResourceRequestEPNS_17InspectorResourceERKNS_15ResourceRequestE
-__ZN7WebCore19InspectorController11addResourceEPNS_17InspectorResourceE
-__ZNK3WTF7HashMapIxNS_6RefPtrIN7WebCore17InspectorResourceEEENS_7IntHashIyEENS_10HashTraitsIxEENS7_IS4_EEE3getERKx
-__ZN3WTF9HashTableIxSt4pairIxiENS_18PairFirstExtractorIS2_EENS_7IntHashIyEENS_14PairHashTraitsINS_10HashTraitsIxEENS8_IiEEEES9_E3addIxS2_NS_22IdentityHashTranslatorIxS2_S6_EEEES1_INS_17HashTableIteratorIxS2_S4_S6_SB_S9_EEbERKT_RKT0_
-__ZN7WebCore22updateResourceResponseEPNS_17InspectorResourceERKNS_16ResourceResponseE
-__ZN7WebCore19InspectorController14pruneResourcesEPN3WTF7HashMapIxNS1_6RefPtrINS_17InspectorResourceEEENS1_7IntHashIyEENS1_10HashTraitsIxEENS8_IS5_EEEEPNS_14DocumentLoaderE
-__ZN7WebCore19InspectorController14removeResourceEPNS_17InspectorResourceE
-__ZN3WTF9HashTableIxSt4pairIxiENS_18PairFirstExtractorIS2_EENS_7IntHashIyEENS_14PairHashTraitsINS_10HashTraitsIxEENS8_IiEEEES9_E4findIxNS_22IdentityHashTranslatorIxS2_S6_EEEENS_17HashTableIteratorIxS2_S4_S6_SB_S9_EERKT_
-__ZN7WebCore19InspectorController4showEv
-__ZN7WebCore5Frame21setProhibitsScrollingEb
-__ZN7WebCore9CSSParser19parseBackgroundSizeEv
-__ZN7WebCore9CSSParser16parseBorderImageEib
-__ZN7WebCore23BorderImageParseContext17commitBorderImageEPNS_9CSSParserEib
-__ZN7WebCore19CSSBorderImageValueC2EN3WTF10PassRefPtrINS_13CSSImageValueEEENS2_INS_4RectEEEii
-__ZN7WebCore9CSSParser24parseTransitionShorthandEb
-__ZN7WebCore9CSSParser23parseTransitionPropertyEiRN3WTF6RefPtrINS_8CSSValueEEE
-__ZN7WebCore9CSSParser23parseTransitionPropertyEv
-__ZNK7WebCore6String4utf8Ev
-__ZN7WebCore9CSSParser18addTransitionValueERN3WTF6RefPtrINS_8CSSValueEEENS1_10PassRefPtrIS3_EE
-__ZN7WebCore9CSSParser23parseTransitionDurationEv
-__ZN7WebCore9CSSParser29parseTransitionTimingFunctionEv
-__ZN7WebCore19InspectorController27windowScriptObjectAvailableEv
-__ZN7WebCore32JSCSSStyleDeclarationConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore16CSSStyleSelector17mapBackgroundSizeEPNS_15BackgroundLayerEPNS_8CSSValueE
-__ZN7WebCore11RenderStyle10setContentEPNS_14CachedResourceEb
-__ZN7WebCore11RenderStyle17accessTransitionsEv
-__ZN7WebCore10TransitionC1Ev
-__ZN7WebCore16CSSStyleSelector21mapTransitionPropertyEPNS_10TransitionEPNS_8CSSValueE
-__ZN7WebCore16CSSStyleSelector21mapTransitionDurationEPNS_10TransitionEPNS_8CSSValueE
-__ZN7WebCore16CSSStyleSelector27mapTransitionTimingFunctionEPNS_10TransitionEPNS_8CSSValueE
-__ZN7WebCore10Transition19fillUnsetPropertiesEv
-__ZN7WebCore15BackgroundLayer15cullEmptyLayersEv
-__ZN7WebCore15BackgroundLayer19fillUnsetPropertiesEv
-__ZNK7WebCore15BackgroundLayer13hasFixedImageEv
-__ZN7WebCore16localizedStringsEPK15OpaqueJSContextP13OpaqueJSValueS4_mPKPKS3_PS6_
-__ZN7WebCore19InspectorController19localizedStringsURLEv
-__ZNK7WebCore10TransitioneqERKS0_
-__ZN7WebCore19AnimationController24updateImplicitAnimationsEPNS_12RenderObjectEPNS_11RenderStyleE
-__ZN7WebCore26AnimationControllerPrivate3getEPNS_12RenderObjectE
-__ZNK3WTF7HashMapIPN7WebCore12RenderObjectEPNS1_26CompositeImplicitAnimationENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
-__ZN7WebCore26CompositeImplicitAnimation7animateEPNS_12RenderObjectEPNS_11RenderStyleES4_
-__ZN7WebCore17ImplicitAnimationC1EPKNS_10TransitionE
-__ZN3WTF7HashMapIiPN7WebCore17ImplicitAnimationENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3setERKiRKS3_
-__ZN7WebCore17ImplicitAnimation7animateEPNS_26CompositeImplicitAnimationEPNS_12RenderObjectEPNS_11RenderStyleES6_RS6_
-__ZN7WebCore17ImplicitAnimation5resetEPNS_12RenderObjectEPNS_11RenderStyleES4_
-__ZN7WebCore26AnimationControllerPrivate11updateTimerEv
-__ZNK7WebCore26CompositeImplicitAnimation9animatingEv
-__ZN7WebCore26AnimationControllerPrivate5clearEPNS_12RenderObjectE
-__ZZN7WebCore8platformEPK15OpaqueJSContextP13OpaqueJSValueS4_mPKPKS3_PS6_E8platform
-__ZN7WebCore17canvasConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLCanvasElementC1EPNS_8DocumentE
-__ZN7WebCore19createCanvasWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore19JSHTMLCanvasElementC1EPN3KJS8JSObjectEPNS_17HTMLCanvasElementE
-__ZN7WebCore19JSHTMLCanvasElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore28JSHTMLCanvasElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore19JSHTMLCanvasElement9classInfoEv
+-[AccessibilityObjectWrapper role]
+__ZL19roleValueToNSStringN7WebCore17AccessibilityRoleE
+__ZL26createAccessibilityRoleMapv
+__ZN3WTF7HashMapIiP8NSStringNS_7IntHashIjEENS_10HashTraitsIiEENS5_IS2_EEE3setERKiRKS2_
+__ZN3WTF9HashTableIiSt4pairIiP8NSStringENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_
+__ZNK3WTF7HashMapIiP8NSStringNS_7IntHashIjEENS_10HashTraitsIiEENS5_IS2_EEE3getERKi
+__ZN7WebCore25AccessibilityRenderObject15childrenChangedEv
+__ZNK7WebCore25AccessibilityRenderObject27isAccessibilityRenderObjectEv
+__ZNK7WebCore17HTMLAnchorElement13supportsFocusEv
+__ZN7WebCore13AXObjectCache16postNotificationEPNS_12RenderObjectERKNS_6StringE
+__ZNK7WebCore25AccessibilityRenderObject16observableObjectEv
+__ZNK7WebCore25AccessibilityRenderObject4textEv
+__ZNK7WebCore25AccessibilityRenderObject15isPasswordFieldEv
+__ZNK7WebCore25AccessibilityRenderObject19isNativeTextControlEv
+__ZN7WebCore19HTMLTextAreaElement19defaultEventHandlerEPNS_5EventE
+__ZNK7WebCore19HTMLTextAreaElement20shouldUseInputMethodEv
+__ZN7WebCore19HTMLTextAreaElement21updateFocusAppearanceEb
+__ZN7WebCore19HTMLTextAreaElement17setSelectionRangeEii
+__ZNK7WebCore19HTMLTextAreaElement16isMouseFocusableEv
+__ZN7WebCore26RenderTextControlMultiLine14cacheSelectionEii
+__ZN7WebCore26RenderTextControlMultiLine12forwardEventEPNS_5EventE
+__ZNK7WebCore25AccessibilityRenderObject7isImageEv
+__ZN7WebCore25AccessibilityRenderObject12headingLevelEPNS_4NodeE
+__ZNK7WebCore19AccessibilityObject21parentObjectUnignoredEv
+-[AccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]
+__ZN7WebCore25AccessibilityRenderObject8childrenEv
+__ZN7WebCore25AccessibilityRenderObject11addChildrenEv
+__ZNK7WebCore25AccessibilityRenderObject15canHaveChildrenEv
+__ZNK7WebCore25AccessibilityRenderObject10firstChildEv
+__ZNK7WebCore19AccessibilityObject11hasChildrenEv
+__ZN7WebCore21AccessibilityARIAGrid6createEPNS_12RenderObjectE
+__ZN7WebCore21AccessibilityARIAGridC1EPNS_12RenderObjectE
+__ZN7WebCore21AccessibilityARIAGridC2EPNS_12RenderObjectE
+__ZN7WebCore18AccessibilityTableC2EPNS_12RenderObjectE
+__ZN7WebCore18AccessibilityTable36isTableExposableThroughAccessibilityEv
+__ZNK7WebCore18AccessibilityTable22accessibilityIsIgnoredEv
+__ZNK7WebCore18AccessibilityTable11isDataTableEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore19AccessibilityObjectEEELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore19AccessibilityObjectEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore19AccessibilityObjectEEELm0EE15reserveCapacityEm
+__ZNK7WebCore25AccessibilityRenderObject11nextSiblingEv
+__ZNK7WebCore25AccessibilityRenderObject19mouseButtonListenerEv
+__ZNK7WebCore12RenderObject13isRenderImageEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore19AccessibilityObjectEEELm0EEC1ERKS5_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore19AccessibilityObjectEEELm0EEC2ERKS5_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore19AccessibilityObjectEEELm0EE6shrinkEm
+-[AccessibilityObjectWrapper accessibilityAttributeNames]
+__ZNK7WebCore18AccessibilityTable9roleValueEv
+-[AccessibilityObjectWrapper subrole]
+__ZNK7WebCore19AccessibilityObject6isListEv
+-[AccessibilityObjectWrapper roleDescription]
+__ZN7WebCore18AccessibilityTable13clearChildrenEv
+__ZN7WebCore21AccessibilityARIAGrid11addChildrenEv
+__ZN7WebCore24AccessibilityARIAGridRow6createEPNS_12RenderObjectE
+__ZN7WebCore24AccessibilityARIAGridRowC1EPNS_12RenderObjectE
+__ZN7WebCore24AccessibilityARIAGridRowC2EPNS_12RenderObjectE
+__ZN7WebCore21AccessibilityTableRowC2EPNS_12RenderObjectE
+__ZNK7WebCore21AccessibilityTableRow22accessibilityIsIgnoredEv
+__ZNK7WebCore21AccessibilityTableRow10isTableRowEv
+__ZNK7WebCore24AccessibilityARIAGridRow11parentTableEv
+__ZN7WebCore21AccessibilityARIAGrid8addChildEPNS_19AccessibilityObjectERN3WTF7HashSetIS2_NS3_7PtrHashIS2_EENS3_10HashTraitsIS2_
+__ZNK3WTF9HashTableIPN7WebCore19AccessibilityObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E8c
+__ZNK7WebCore21AccessibilityTableRow9roleValueEv
+__ZN7WebCore25AccessibilityARIAGridCell6createEPNS_12RenderObjectE
+__ZN7WebCore25AccessibilityARIAGridCellC1EPNS_12RenderObjectE
+__ZN7WebCore25AccessibilityARIAGridCellC2EPNS_12RenderObjectE
+__ZN7WebCore22AccessibilityTableCellC2EPNS_12RenderObjectE
+__ZNK7WebCore22AccessibilityTableCell22accessibilityIsIgnoredEv
+__ZNK7WebCore22AccessibilityTableCell11isTableCellEv
+__ZNK7WebCore25AccessibilityARIAGridCell11parentTableEv
+__ZN3WTF7HashSetIPN7WebCore19AccessibilityObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore19AccessibilityObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6ex
+__ZN3WTF9HashTableIPN7WebCore19AccessibilityObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6re
+__ZN3WTF9HashTableIPN7WebCore19AccessibilityObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13a
+__ZN3WTF9HashTableIPN7WebCore19AccessibilityObjectES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15d
+__ZN7WebCore13AXObjectCache11getOrCreateENS_17AccessibilityRoleE
+__ZN7WebCore24AccessibilityTableColumn6createEv
+__ZN7WebCore24AccessibilityTableColumnC1Ev
+__ZN7WebCore24AccessibilityTableColumnC2Ev
+__ZN7WebCore24AccessibilityTableColumn14setParentTableEPNS_18AccessibilityTableE
+__ZN7WebCore18AccessibilityTable15headerContainerEv
+__ZN7WebCore33AccessibilityTableHeaderContainer6createEv
+__ZN7WebCore33AccessibilityTableHeaderContainerC1Ev
+__ZN7WebCore33AccessibilityTableHeaderContainerC2Ev
+__ZL16convertToNSArrayRKN3WTF6VectorINS_6RefPtrIN7WebCore19AccessibilityObjectEEELm0EEE
+__ZNK7WebCore19AccessibilityObject12isAttachmentEv
+__ZNK7WebCore25AccessibilityRenderObject8helpTextEv
+__ZNK7WebCore25AccessibilityRenderObject21frameViewIfRenderViewEv
+__ZNK7WebCore18AccessibilityTable5titleEv
+__ZNK7WebCore25AccessibilityRenderObject4sizeEv
+__ZNK7WebCore25AccessibilityRenderObject11elementRectEv
+__ZNK7WebCore25AccessibilityRenderObject17isCheckboxOrRadioEv
+__ZNK7WebCore25AccessibilityRenderObject15boundingBoxRectEv
+__ZNK7WebCore25AccessibilityRenderObject12isInputImageEv
+__ZNK7WebCore25AccessibilityRenderObject19isProgressIndicatorEv
+__ZNK7WebCore25AccessibilityRenderObject8isSliderEv
+__ZNK7WebCore25AccessibilityRenderObject11hasIntValueEv
+__ZNK7WebCore25AccessibilityRenderObject11stringValueEv
+__ZNK7WebCore25AccessibilityRenderObject9isFocusedEv
+__ZNK7WebCore25AccessibilityRenderObject9isEnabledEv
+__ZNK7WebCore25AccessibilityRenderObject17documentFrameViewEv
+__ZNK7WebCore19AccessibilityObject10isTableRowEv
+__ZNK7WebCore19AccessibilityObject13isTableColumnEv
+__ZNK7WebCore19AccessibilityObject11isTableCellEv
+__ZNK7WebCore19AccessibilityObject9isListBoxEv
+-[AccessibilityObjectWrapper textMarkerRangeForSelection]
+__ZNK7WebCore25AccessibilityRenderObject9selectionEv
+__ZN7WebCore15startOfDocumentEPKNS_4NodeE
+__ZL28textMarkerForVisiblePositionRKN7WebCore15VisiblePositionE
+__ZN7WebCore13endOfDocumentEPKNS_4NodeE
+__ZNK7WebCore25AccessibilityRenderObject9isVisitedEv
+__ZNK7WebCore25AccessibilityRenderObject16linkedUIElementsERN3WTF6VectorINS1_6RefPtrINS_19AccessibilityObjectEEELm0EEE
+__ZNK7WebCore25AccessibilityRenderObject10isSelectedEv
+__ZL15blockquoteLevelPN7WebCore12RenderObjectE
+__ZN7WebCore18AccessibilityTable4rowsEv
+__ZN7WebCore18AccessibilityTable7columnsEv
+__ZN7WebCore18AccessibilityTable5cellsERN3WTF6VectorINS1_6RefPtrINS_19AccessibilityObjectEEELm0EEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore19AccessibilityObjectEEELm0EE6appendIS4_EEvPKT_m
+__ZN7WebCore18AccessibilityTable13columnHeadersERN3WTF6VectorINS1_6RefPtrINS_19AccessibilityObjectEEELm0EEE
+__ZN7WebCore24AccessibilityTableColumn12headerObjectEv
+__ZNK7WebCore21AccessibilityARIAGrid11isAriaTableEv
+__ZN7WebCore24AccessibilityTableColumn8childrenEv
+__ZN7WebCore24AccessibilityTableColumn11addChildrenEv
+__ZN7WebCore18AccessibilityTable8rowCountEv
+__ZN7WebCore21AccessibilityARIAGrid19cellForColumnAndRowEjj
+__ZN7WebCore18AccessibilityTable11columnCountEv
+__ZNK7WebCore22AccessibilityTableCell9roleValueEv
+__ZN7WebCore18AccessibilityTable10rowHeadersERN3WTF6VectorINS1_6RefPtrINS_19AccessibilityObjectEEELm0EEE
+__ZN7WebCore24AccessibilityARIAGridRow12headerObjectEv
+__ZNK7WebCore16HTMLTableElement7captionEv
+-[AccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]
+__ZNK7WebCore19AccessibilityObject11isDataTableEv
+__ZN7WebCore25AccessibilityARIAGridCell13rowIndexRangeERSt4pairIiiE
+__ZN7WebCore25AccessibilityARIAGridCell16columnIndexRangeERSt4pairIiiE
+__ZN7WebCore19AccessibilityObject18updateBackingStoreEv
+__ZNK7WebCore19AccessibilityObject15isPasswordFieldEv
+__ZNK7WebCore19AccessibilityObject9isWebAreaEv
+__ZNK7WebCore19AccessibilityObject13isTextControlEv
+__ZNK7WebCore19AccessibilityObject8isAnchorEv
+__ZNK7WebCore19AccessibilityObject7isImageEv
+__ZNK7WebCore19AccessibilityObject6isLinkEv
+__ZNK7WebCore24AccessibilityTableColumn13isTableColumnEv
+__ZNK7WebCore24AccessibilityTableColumn9roleValueEv
+__ZNK7WebCore19AccessibilityObject8helpTextEv
+__ZNK7WebCore19AccessibilityObject27isAccessibilityRenderObjectEv
+__ZNK7WebCore24AccessibilityTableColumn12parentObjectEv
+__ZNK7WebCore19AccessibilityObject5titleEv
+__ZNK7WebCore24AccessibilityTableColumn4sizeEv
+__ZNK7WebCore24AccessibilityTableColumn11elementRectEv
+__ZNK7WebCore19AccessibilityObject24accessibilityDescriptionEv
+__ZNK7WebCore19AccessibilityObject19isProgressIndicatorEv
+__ZNK7WebCore19AccessibilityObject8isSliderEv
+__ZNK7WebCore19AccessibilityObject11hasIntValueEv
+__ZNK7WebCore19AccessibilityObject11stringValueEv
+__ZNK7WebCore19AccessibilityObject9isFocusedEv
+__ZNK7WebCore19AccessibilityObject9isEnabledEv
+__ZNK7WebCore19AccessibilityObject17documentFrameViewEv
+__ZNK7WebCore19AccessibilityObject9selectionEv
+__ZNK7WebCore19AccessibilityObject9isVisitedEv
+__ZNK7WebCore19AccessibilityObject16linkedUIElementsERN3WTF6VectorINS1_6RefPtrIS0_EELm0EEE
+__ZNK7WebCore19AccessibilityObject10isSelectedEv
+__ZNK7WebCore33AccessibilityTableHeaderContainer9roleValueEv
+__ZNK7WebCore19AccessibilityObject12isInputImageEv
+__ZNK7WebCore19AccessibilityObject9isControlEv
+__ZNK7WebCore19AccessibilityObject7isGroupEv
+__ZNK7WebCore19AccessibilityObject6isMenuEv
+__ZNK7WebCore19AccessibilityObject9isMenuBarEv
+__ZNK7WebCore19AccessibilityObject12isMenuButtonEv
+__ZNK7WebCore19AccessibilityObject10isMenuItemEv
+__ZN7WebCore33AccessibilityTableHeaderContainer8childrenEv
+__ZN7WebCore33AccessibilityTableHeaderContainer11addChildrenEv
+__ZNK7WebCore33AccessibilityTableHeaderContainer12parentObjectEv
+__ZNK7WebCore33AccessibilityTableHeaderContainer4sizeEv
+__ZNK7WebCore33AccessibilityTableHeaderContainer11elementRectEv
+__ZN7WebCore22jsHTMLElementInnerTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21AccessibilityARIAGridD0Ev
+__ZN7WebCore18AccessibilityTableD2Ev
+__ZN7WebCore25AccessibilityRenderObjectD2Ev
+__ZN7WebCore24AccessibilityARIAGridRowD0Ev
+__ZN7WebCore21AccessibilityTableRowD2Ev
+__ZN7WebCore24AccessibilityTableColumnD0Ev
+__ZN7WebCore25AccessibilityARIAGridCellD0Ev
+__ZN7WebCore22AccessibilityTableCellD2Ev
+__ZN7WebCore33AccessibilityTableHeaderContainerD0Ev
+__ZN7WebCoreL17canvasConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLCanvasElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17HTMLCanvasElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore17HTMLCanvasElement20parseMappedAttributeEPNS_15MappedAttributeE
__ZN7WebCore17HTMLCanvasElement5resetEv
-__ZN7WebCore19JSHTMLCanvasElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore46jsHTMLCanvasElementPrototypeFunctionGetContextEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZNK7WebCore17HTMLCanvasElement17endTagRequirementEv
+__ZNK7WebCore17HTMLCanvasElement11tagPriorityEv
+__ZN7WebCore17HTMLCanvasElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore16RenderHTMLCanvasC1EPNS_17HTMLCanvasElementE
+__ZN7WebCore16RenderHTMLCanvasC2EPNS_17HTMLCanvasElementE
+-[AccessibilityObjectWrapper renderWidgetChildren]
+__ZNK7WebCore25AccessibilityRenderObject6widgetEv
+__ZNK7WebCore25AccessibilityRenderObject3urlEv
+__ZNK7WebCore25AccessibilityRenderObject9accessKeyEv
+__ZN7WebCoreL30createHTMLCanvasElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLCanvasElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLCanvasElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLCanvasElementEEE
+__ZN7WebCore19JSHTMLCanvasElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLCanvasElementEEE
+__ZN7WebCore19JSHTMLCanvasElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28JSHTMLCanvasElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore46jsHTMLCanvasElementPrototypeFunctionGetContextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore19JSHTMLCanvasElement9classInfoEv
__ZN7WebCore17HTMLCanvasElement10getContextERKNS_6StringE
__ZN7WebCore24CanvasRenderingContext2DC1EPNS_17HTMLCanvasElementE
+__ZN7WebCore24CanvasRenderingContext2DC2EPNS_17HTMLCanvasElementE
__ZN7WebCore24CanvasRenderingContext2D5StateC1Ev
+__ZN7WebCore24CanvasRenderingContext2D5StateC2Ev
__ZN7WebCore11CanvasStyleC1ERKNS_6StringE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_24CanvasRenderingContext2DE
-__ZN7WebCore35JSCanvasRenderingContext2DPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore26JSCanvasRenderingContext2DC1EPN3KJS8JSObjectEPNS_24CanvasRenderingContext2DE
-__ZN7WebCore26JSCanvasRenderingContext2D18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore35JSCanvasRenderingContext2DPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionClearRectEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore26JSCanvasRenderingContext2D9classInfoEv
-__ZN7WebCore24CanvasRenderingContext2D9clearRectEffffRi
+__ZN7WebCore11CanvasStyleC2ERKNS_6StringE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_24CanvasRenderingContext2DE
+__ZN7WebCore26JSCanvasRenderingContext2D15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24CanvasRenderingContext2D3refEv
+__ZN7WebCore26JSCanvasRenderingContext2DC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_24CanvasRenderingContext2DEEE
+__ZN7WebCore26JSCanvasRenderingContext2DC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_24CanvasRenderingContext2DEEE
+__ZN7WebCore26JSCanvasRenderingContext2D3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore38setJSCanvasRenderingContext2DLineWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D12setLineWidthEf
__ZNK7WebCore24CanvasRenderingContext2D14drawingContextEv
__ZNK7WebCore17HTMLCanvasElement14drawingContextEv
-__ZNK7WebCore17HTMLCanvasElement20createDrawingContextEv
-__ZN7WebCore24CanvasRenderingContext2D8willDrawERKNS_9FloatRectE
-__ZNK7WebCore15GraphicsContext6getCTMEv
-__ZN7WebCore15AffineTransformC1E17CGAffineTransform
-__ZNK7WebCore15AffineTransform7mapRectERKNS_9FloatRectE
-__ZN7WebCore17HTMLCanvasElement8willDrawERKNS_9FloatRectE
-__ZN7WebCore15GraphicsContext9clearRectERKNS_9FloatRectE
-__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionBeginPathEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZNK7WebCore17HTMLCanvasElement6bufferEv
+__ZNK7WebCore17HTMLCanvasElement17createImageBufferEv
+__ZNK7WebCore17HTMLCanvasElement22convertLogicalToDeviceERKNS_9FloatSizeE
+__ZN7WebCore6Chrome11scaleFactorEv
+__ZN7WebCore11ImageBufferC1ERKNS_7IntSizeEbRb
+__ZN7WebCore11ImageBufferC2ERKNS_7IntSizeEbRb
+__ZN7WebCore15ImageBufferDataC1ERKNS_7IntSizeE
+__ZN7WebCore15ImageBufferDataC2ERKNS_7IntSizeE
+__ZNK7WebCore11ImageBuffer7contextEv
+__ZN7WebCore15GraphicsContext26setShadowsIgnoreTransformsEb
+__ZN7WebCore36setJSCanvasRenderingContext2DLineCapEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D10setLineCapERKNS_6StringE
+__ZN7WebCore12parseLineCapERKNS_6StringERNS_7LineCapE
+__ZN7WebCore15GraphicsContext10setLineCapENS_7LineCapE
+__ZN7WebCore26JSCanvasRenderingContext2D18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore35JSCanvasRenderingContext2DPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionBeginPathEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore26JSCanvasRenderingContext2D9classInfoEv
__ZN7WebCore24CanvasRenderingContext2D9beginPathEv
__ZN7WebCore4Path5clearEv
-__ZN7WebCore49jsCanvasRenderingContext2DPrototypeFunctionMoveToEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D6moveToEff
-__ZN7WebCore49jsCanvasRenderingContext2DPrototypeFunctionLineToEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D6lineToEff
-__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionClosePathEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D9closePathEv
-__ZN7WebCore47jsCanvasRenderingContext2DPrototypeFunctionSaveEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D4saveEv
-__ZN3WTF6VectorIN7WebCore24CanvasRenderingContext2D5StateELm1EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIN7WebCore24CanvasRenderingContext2D5StateELm1EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore24CanvasRenderingContext2D5StateELm1EE15reserveCapacityEm
-__ZN7WebCore26JSCanvasRenderingContext2D3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore26JSCanvasRenderingContext2D16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore24CanvasRenderingContext2D13setShadowBlurEf
-__ZN7WebCore24CanvasRenderingContext2D11applyShadowEv
-__ZN7WebCore9CSSParser10parseColorERjRKNS_6StringEb
-__ZNK7WebCore9FloatSizecv6CGSizeEv
-__ZN7WebCore24CanvasRenderingContext2D14setShadowColorERKNS_6StringE
-__ZN7WebCore9CSSParser10parseColorEPNS_26CSSMutableStyleDeclarationERKNS_6StringE
-__ZN7WebCore24CanvasRenderingContext2D16setShadowOffsetXEf
-__ZN7WebCore24CanvasRenderingContext2D16setShadowOffsetYEf
-__ZN7WebCore26JSCanvasRenderingContext2D14setStrokeStyleEPN3KJS9ExecStateEPNS1_7JSValueE
-__ZN7WebCore17toHTMLCanvasStyleEPN3KJS9ExecStateEPNS0_7JSValueE
+__ZN7WebCore53jsCanvasRenderingContext2DPrototypeFunctionStrokeRectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgList
+__ZN7WebCore26JSCanvasRenderingContext2D10strokeRectEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK3JSC7JSValue7toFloatEPNS_9ExecStateE
+__ZN7WebCore24CanvasRenderingContext2D10strokeRectEffff
+__ZN7WebCoreL21validateRectForCanvasERfS0_S0_S0_
+__ZN7WebCore24CanvasRenderingContext2D10strokeRectEfffff
+__ZN7WebCore24CanvasRenderingContext2D8willDrawERKNS_9FloatRectEj
+__ZN7WebCore9FloatRect5uniteERKS0_
+__ZN7WebCore17HTMLCanvasElement8willDrawERKNS_9FloatRectE
+__ZN7WebCore7mapRectERKNS_9FloatRectES2_S2_
+__ZN7WebCore9FloatRect9intersectERKS0_
+__ZN7WebCore15GraphicsContext10strokeRectERKNS_9FloatRectEf
+__ZN7WebCore40setJSCanvasRenderingContext2DStrokeStyleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore26JSCanvasRenderingContext2D14setStrokeStyleEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCoreL17toHTMLCanvasStyleEPN3JSC9ExecStateENS0_7JSValueE
__ZN7WebCore24CanvasRenderingContext2D14setStrokeStyleEN3WTF10PassRefPtrINS_11CanvasStyleEEE
__ZN7WebCore11CanvasStyle16applyStrokeColorEPNS_15GraphicsContextE
-__ZN7WebCore24CanvasRenderingContext2D12setLineWidthEf
-__ZN7WebCore49jsCanvasRenderingContext2DPrototypeFunctionStrokeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore5ColorC1ERKNS_6StringE
+__ZN7WebCore5ColorC2ERKNS_6StringE
+__ZN7WebCore49jsCanvasRenderingContext2DPrototypeFunctionMoveToEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D6moveToEff
+__ZN7WebCore49jsCanvasRenderingContext2DPrototypeFunctionLineToEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D6lineToEff
+__ZN7WebCore49jsCanvasRenderingContext2DPrototypeFunctionStrokeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZN7WebCore24CanvasRenderingContext2D6strokeEv
__ZNK7WebCore4Path7isEmptyEv
+__ZN7WebCore15GraphicsContext9beginPathEv
+__ZN7WebCore4Path18strokeBoundingRectEPNS_18StrokeStyleApplierE
+__ZN7WebCoreL20createScratchContextEv
+__ZN7WebCoreL15putBytesNowhereEPvPKvm
+__ZN7WebCore24CanvasStrokeStyleApplier11strokeStyleEPNS_15GraphicsContextE
+__ZNK7WebCore24CanvasRenderingContext2D9lineWidthEv
+__ZN7WebCore15GraphicsContext11setLineJoinENS_8LineJoinE
+__ZNK7WebCore24CanvasRenderingContext2D10miterLimitEv
+__ZN7WebCore15GraphicsContext13setMiterLimitEf
+__ZN7WebCore15GraphicsContext10strokePathEv
__ZN7WebCore24CanvasRenderingContext2D46clearPathForDashboardBackwardCompatibilityModeEv
-__ZN7WebCore50jsCanvasRenderingContext2DPrototypeFunctionRestoreEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D7restoreEv
+__ZN7WebCore16RenderHTMLCanvas13paintReplacedERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore17HTMLCanvasElement5paintEPNS_15GraphicsContextERKNS_7IntRectE
+__ZNK7WebCore11ImageBuffer5imageEv
+__ZN7WebCore11BitmapImageC1EP7CGImagePNS_13ImageObserverE
+__ZN7WebCore11BitmapImageC2EP7CGImagePNS_13ImageObserverE
+__ZN7WebCore26JSCanvasRenderingContext2DD1Ev
+__ZN7WebCore26JSCanvasRenderingContext2DD2Ev
+__ZN7WebCore24CanvasRenderingContext2D5derefEv
+__ZN7WebCore19JSHTMLCanvasElementD1Ev
+__ZN7WebCore16RenderHTMLCanvasD0Ev
+__ZNK7WebCore19AccessibilityObject29accessibilityIgnoreAttachmentEv
+-[AccessibilityObjectWrapper attachmentView]
+__ZNK7WebCore25AccessibilityRenderObject23widgetForAttachmentViewEv
+-[AccessibilityObjectWrapper accessibilityIsIgnored]
+-[AccessibilityObjectWrapper _accessibilityParentForSubview:]
+__ZNK7WebCore25AccessibilityRenderObject7isGroupEv
+__ZNK7WebCore25AccessibilityRenderObject14titleUIElementEv
+__ZNK7WebCore25AccessibilityRenderObject10isFieldsetEv
+__ZNK7WebCore25AccessibilityRenderObject21exposesTitleUIElementEv
+__ZN7WebCore13AXWebAreaTextEv
+__ZN7WebCore10RenderView13absoluteQuadsERN3WTF6VectorINS_9FloatQuadELm0EEE
+__ZN7WebCore25AccessibilityRenderObject16getDocumentLinksERN3WTF6VectorINS1_6RefPtrINS_19AccessibilityObjectEEELm0EEE
+__ZNK7WebCore25AccessibilityRenderObject8isLoadedEv
+__ZNK7WebCore25AccessibilityRenderObject11layoutCountEv
+__ZN7WebCore35JSCanvasRenderingContext2DPrototypeD1Ev
+__ZN7WebCore28JSHTMLCanvasElementPrototypeD1Ev
+__ZN7WebCore17HTMLCanvasElementD0Ev
+__ZN7WebCore11ImageBufferD1Ev
+__ZN7WebCore11ImageBufferD2Ev
__ZN3WTF6VectorIN7WebCore24CanvasRenderingContext2D5StateELm1EE6shrinkEm
-__ZN7WebCore24CanvasRenderingContext2D27setGlobalCompositeOperationERKNS_6StringE
-__ZN7WebCore22parseCompositeOperatorERKNS_6StringERNS_17CompositeOperatorE
-__ZN7WebCore59jsCanvasRenderingContext2DPrototypeFunctionQuadraticCurveToEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D16quadraticCurveToEffff
-__ZN7WebCore4Path14addQuadCurveToERKNS_10FloatPointES3_
-__ZN7WebCore47jsCanvasRenderingContext2DPrototypeFunctionClipEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D4clipEv
-__ZN7WebCore26JSCanvasRenderingContext2D12setFillStyleEPN3KJS9ExecStateEPNS1_7JSValueE
-__ZN7WebCore24CanvasRenderingContext2D12setFillStyleEN3WTF10PassRefPtrINS_11CanvasStyleEEE
-__ZN7WebCore11CanvasStyle14applyFillColorEPNS_15GraphicsContextE
-__ZN7WebCore51jsCanvasRenderingContext2DPrototypeFunctionFillRectEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D8fillRectEffffRi
-__ZN7WebCore63jsCanvasRenderingContext2DPrototypeFunctionCreateLinearGradientEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D20createLinearGradientEffff
-__ZN7WebCore14CanvasGradientC1ERKNS_10FloatPointES3_
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_14CanvasGradientE
-__ZN7WebCore25JSCanvasGradientPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSCanvasGradientC1EPN3KJS8JSObjectEPNS_14CanvasGradientE
-__ZN7WebCore25JSCanvasGradientPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore45jsCanvasGradientPrototypeFunctionAddColorStopEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore16JSCanvasGradient9classInfoEv
-__ZN7WebCore14CanvasGradient12addColorStopEfRKNS_6StringE
-__ZN3WTF6VectorIN7WebCore14CanvasGradient9ColorStopELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIN7WebCore14CanvasGradient9ColorStopELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore14CanvasGradient9ColorStopELm0EE15reserveCapacityEm
-__ZN7WebCore11CanvasStyleC1EN3WTF10PassRefPtrINS_14CanvasGradientEEE
-__ZN7WebCore14CanvasGradient15platformShadingEv
-__ZN7WebCore16gradientCallbackEPvPKfPf
-__ZN7WebCore14CanvasGradient8getColorEfPfS1_S1_S1_
-__ZNSt17_Temporary_bufferIPN7WebCore14CanvasGradient9ColorStopES2_EC1ES3_S3_
-__ZSt22__get_temporary_bufferIN7WebCore14CanvasGradient9ColorStopEESt4pairIPT_iEiS5_
-__ZSt26__uninitialized_fill_n_auxIPN7WebCore14CanvasGradient9ColorStopEiS2_EvT_T0_RKT1_12__false_type
-__ZSt22__stable_sort_adaptiveIPN7WebCore14CanvasGradient9ColorStopES3_iPFbRKS2_S5_EEvT_S8_T0_T1_T2_
-__ZSt24__merge_sort_with_bufferIPN7WebCore14CanvasGradient9ColorStopES3_PFbRKS2_S5_EEvT_S8_T0_T1_
-__ZSt22__chunk_insertion_sortIPN7WebCore14CanvasGradient9ColorStopEiPFbRKS2_S5_EEvT_S8_T0_T1_
-__ZSt16__insertion_sortIPN7WebCore14CanvasGradient9ColorStopEPFbRKS2_S5_EEvT_S8_T0_
-__ZN7WebCore12compareStopsERKNS_14CanvasGradient9ColorStopES3_
-__ZSt25__unguarded_linear_insertIPN7WebCore14CanvasGradient9ColorStopES2_PFbRKS2_S5_EEvT_T0_T1_
-__ZSt16__merge_adaptiveIPN7WebCore14CanvasGradient9ColorStopEiS3_PFbRKS2_S5_EEvT_S8_S8_T0_S9_T1_S9_T2_
-__ZSt16__merge_backwardIPN7WebCore14CanvasGradient9ColorStopES3_S3_PFbRKS2_S5_EET1_T_S9_T0_SA_S8_T2_
-__ZSt23return_temporary_bufferIN7WebCore14CanvasGradient9ColorStopEEvPT_
-__ZNK7WebCore14CanvasGradient8findStopEf
-__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionTranslateEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D9translateEff
-__ZN7WebCore15GraphicsContext9translateEff
-__ZN7WebCore15AffineTransform9translateEdd
-__ZN7WebCore4Path9transformERKNS_15AffineTransformE
-__ZNK7WebCore15AffineTransformcv17CGAffineTransformEv
-__ZN7WebCore48jsCanvasRenderingContext2DPrototypeFunctionScaleEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D5scaleEff
-__ZN7WebCore15GraphicsContext5scaleERKNS_9FloatSizeE
-__ZN7WebCore6loadedEPK15OpaqueJSContextP13OpaqueJSValueS4_mPKPKS3_PS6_
-__ZN7WebCore19InspectorController17scriptObjectReadyEv
-__ZN7WebCore19InspectorController16setWindowVisibleEb
-__ZN7WebCore19InspectorController23populateScriptResourcesEv
-__ZN7WebCore19InspectorController20clearScriptResourcesEv
-__ZN7WebCore18callSimpleFunctionEPK15OpaqueJSContextP13OpaqueJSValuePKc
-__ZN7WebCore19InspectorController26clearScriptConsoleMessagesEv
-__ZN7WebCore19InspectorController28clearDatabaseScriptResourcesEv
-__ZN7WebCore19InspectorController20clearNetworkTimelineEv
-__ZN7WebCore19InspectorController26addAndUpdateScriptResourceEPNS_17InspectorResourceE
-__ZN7WebCore19InspectorController17addScriptResourceEPNS_17InspectorResourceE
-__ZNK7WebCore4KURL17lastPathComponentEv
-__ZN7WebCore22scriptObjectForRequestEPK15OpaqueJSContextPKNS_17InspectorResourceE
-__ZN7WebCore10addHeadersEPK15OpaqueJSContextP13OpaqueJSValueRKN3WTF7HashMapINS_6StringES7_NS_15CaseFoldingHashENS5_10HashTraitsIS7_EESA_EE
-__ZNK7WebCore17HTMLCanvasElement17endTagRequirementEv
-__ZNK7WebCore17HTMLCanvasElement11tagPriorityEv
-__ZN7WebCore19InspectorController28updateScriptResourceResponseEPNS_17InspectorResourceE
-__ZN7WebCore19InspectorController20updateScriptResourceEPNS_17InspectorResourceEi
-__ZN7WebCore19InspectorController20updateScriptResourceEPNS_17InspectorResourceEddd
-__ZN7WebCore19InspectorController20updateScriptResourceEPNS_17InspectorResourceEbb
-__ZN7WebCore26JSCanvasRenderingContext2DD0Ev
-__ZN7WebCore16JSCanvasGradientD0Ev
-__ZN7WebCore14CanvasGradientD1Ev
-__ZN3WTF6VectorIN7WebCore14CanvasGradient9ColorStopELm0EE6shrinkEm
-__ZN7WebCore17HTMLCanvasElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore16RenderHTMLCanvasC1EPNS_17HTMLCanvasElementE
-__ZN7WebCore12RenderObject16paintBorderImageEPNS_15GraphicsContextEiiiiPKNS_11RenderStyleE
-__ZN7WebCore15GraphicsContext14drawTiledImageEPNS_5ImageERKNS_7IntRectES5_NS1_8TileRuleES6_NS_17CompositeOperatorE
-__ZN7WebCore10TransitionD1Ev
-__ZSt5mergeIPN7WebCore14CanvasGradient9ColorStopES3_S3_PFbRKS2_S5_EET1_T_S9_T0_SA_S8_T2_
-__ZN7WebCore53jsCanvasRenderingContext2DPrototypeFunctionStrokeRectEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore26JSCanvasRenderingContext2D10strokeRectEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore24CanvasRenderingContext2D10strokeRectEffffRi
-__ZN7WebCore24CanvasRenderingContext2D10strokeRectEfffffRi
-__ZN7WebCore15GraphicsContext10strokeRectERKNS_9FloatRectEf
-__ZN7WebCore19InspectorController11showConsoleEv
-__ZNK7WebCore19HTMLTextAreaElement19isKeyboardFocusableEPNS_13KeyboardEventE
-__ZN7WebCore18columnResizeCursorEv
-__ZN7WebCore23getResourceDocumentNodeEPK15OpaqueJSContextP13OpaqueJSValueS4_mPKPKS3_PS6_
-__ZN7WebCore36jsNodePrototypeFunctionHasAttributesEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore7Element13hasAttributesEv
-__ZN7WebCore8Document18focusedNodeRemovedEv
-__ZN7WebCore16addSourceToFrameEPK15OpaqueJSContextP13OpaqueJSValueS4_mPKPKS3_PS6_
-__ZNK7WebCore21HTMLFrameOwnerElement19isFrameOwnerElementEv
-__ZN7WebCore11FrameLoader19setResponseMIMETypeERKNS_6StringE
-__ZN7WebCore11FrameLoader5beginEv
-__ZN7WebCore22HTMLViewSourceDocumentC1EPNS_17DOMImplementationEPNS_5FrameERKNS_6StringE
-__ZN7WebCore22HTMLViewSourceDocument15createTokenizerEv
-__ZN7WebCore13HTMLTokenizerC1EPNS_22HTMLViewSourceDocumentE
-__ZN7WebCore22HTMLViewSourceDocument18addViewSourceTokenEPNS_5TokenE
-__ZN7WebCore22HTMLViewSourceDocument21createContainingTableEv
-__ZN7WebCore16applyCounterListEPNS_11RenderStyleEPNS_12CSSValueListEb
+__ZNK7WebCore11RenderImage13isRenderImageEv
+__ZN7WebCore25AccessibilityImageMapLink6createEv
+__ZN7WebCore25AccessibilityImageMapLinkC1Ev
+__ZN7WebCore25AccessibilityImageMapLinkC2Ev
+__ZNK7WebCore25AccessibilityImageMapLink6isLinkEv
+__ZNK7WebCore25AccessibilityImageMapLink9roleValueEv
+__ZN7WebCore10AXLinkTextEv
+__ZN7WebCore19AccessibilityObject8childrenEv
+__ZNK7WebCore19AccessibilityObject6widgetEv
+__ZNK7WebCore25AccessibilityImageMapLink12parentObjectEv
+__ZNK7WebCore25AccessibilityImageMapLink5titleEv
+__ZNK7WebCore25AccessibilityImageMapLink4sizeEv
+__ZNK7WebCore25AccessibilityImageMapLink11elementRectEv
+__ZNK7WebCore15HTMLAreaElement7getRectEPNS_12RenderObjectE
+__ZN7WebCore4Path9translateERKNS_9FloatSizeE
+__ZNK7WebCore25AccessibilityImageMapLink24accessibilityDescriptionEv
+__ZNK7WebCore25AccessibilityImageMapLink9isEnabledEv
+__ZNK7WebCore25AccessibilityImageMapLink3urlEv
+__ZNK7WebCore15HTMLAreaElement4hrefEv
+__ZNK7WebCore19AccessibilityObject9accessKeyEv
+__ZN3WTF7HashMapIjNS_6RefPtrIN7WebCore19AccessibilityObjectEEENS_7IntHashIjEENS_10HashTraitsIjEENS7_IS4_EEE4takeERKj
+__ZN7WebCore25AccessibilityImageMapLinkD0Ev
+__ZN7WebCoreL15labelForElementEPNS_7ElementE
+__ZNK7WebCore25AccessibilityRenderObject16textUnderElementEv
+__ZNK7WebCore16HTMLInputElement3srcEv
+__ZN7WebCore9RenderBox17addFocusRingRectsEPNS_15GraphicsContextEii
+__ZN7WebCore12RenderInline25rectWithOutlineForRepaintEPNS_20RenderBoxModelObjectEi
+__ZN7WebCore12RenderObject25rectWithOutlineForRepaintEPNS_20RenderBoxModelObjectEi
+__ZNK7WebCore25AccessibilityRenderObject19internalLinkElementEv
+__ZN7WebCore4KURL9removeRefEv
+__ZNK7WebCore25AccessibilityRenderObject6isMenuEv
+__ZNK7WebCore25AccessibilityRenderObject9isMenuBarEv
+__ZNK7WebCore25AccessibilityRenderObject12isMenuButtonEv
+__ZNK7WebCore25AccessibilityRenderObject10isMenuItemEv
+__ZN7WebCore13AXHeadingTextEv
+__ZNK7WebCore25AccessibilityRenderObject8intValueEv
+__ZN7WebCore10RenderText13absoluteQuadsERN3WTF6VectorINS_9FloatQuadELm0EEE
+__ZN7WebCore14RenderFieldset22paintBorderMinusLegendEPNS_15GraphicsContextEiiiiPKNS_11RenderStyleEiii
+__ZN7WebCore17AccessibilityList6createEPNS_12RenderObjectE
+__ZN7WebCore17AccessibilityListC1EPNS_12RenderObjectE
+__ZN7WebCore17AccessibilityListC2EPNS_12RenderObjectE
+__ZNK7WebCore17AccessibilityList22accessibilityIsIgnoredEv
+__ZNK7WebCore17AccessibilityList9roleValueEv
+__ZNK7WebCore17AccessibilityList6isListEv
+__ZNK7WebCore17AccessibilityList15isUnorderedListEv
+__ZNK7WebCore17AccessibilityList13isOrderedListEv
+__ZNK7WebCore17AccessibilityList16isDefinitionListEv
+__ZN7WebCore24AXDefinitionListTermTextEv
+__ZN7WebCore30AXDefinitionListDefinitionTextEv
+__ZN7WebCore17AccessibilityListD0Ev
+__ZN7WebCore8FileListC1Ev
+__ZN7WebCore8FileListC2Ev
+__ZN7WebCore23RenderFileUploadControlC1EPNS_16HTMLInputElementE
+__ZN7WebCore23RenderFileUploadControlC2EPNS_16HTMLInputElementE
+__ZN7WebCore11FileChooser6createEPNS_17FileChooserClientERKNS_6StringE
+__ZN7WebCore11FileChooser10chooseIconERKNS_6StringE
+__ZN7WebCore4Icon17createIconForFileERKNS_6StringE
+__ZN7WebCore23RenderFileUploadControl14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore23RenderFileUploadControl17updateFromElementEv
+__ZN7WebCore32HTMLFileUploadInnerButtonElementC1EPNS_8DocumentEPNS_4NodeE
+__ZN7WebCore32HTMLFileUploadInnerButtonElementC2EPNS_8DocumentEPNS_4NodeE
+__ZN7WebCore25fileButtonChooseFileLabelEv
+__ZNK7WebCore23RenderFileUploadControl17createButtonStyleEPKNS_11RenderStyleE
+__ZN7WebCore16HTMLInputElement5filesEv
+__ZN7WebCore11FileChooser5clearEv
+__ZN7WebCore23RenderFileUploadControl14calcPrefWidthsEv
+__ZN7WebCore23RenderFileUploadControl11paintObjectERNS_12RenderObject9PaintInfoEii
+__ZNK7WebCore23RenderFileUploadControl16maxFilenameWidthEv
+__ZNK7WebCore11FileChooser16basenameForWidthERKNS_4FontEi
+__ZN7WebCore29fileButtonNoFileSelectedLabelEv
+__ZN7WebCore23RenderFileUploadControlD0Ev
+__ZN7WebCore11FileChooserD1Ev
+__ZN7WebCore11FileChooserD2Ev
+__ZThn8_N7WebCore32HTMLFileUploadInnerButtonElementD0Ev
+__ZN7WebCore32HTMLFileUploadInnerButtonElementD0Ev
+__ZN7WebCore16HTMLInputElementD2Ev
+__ZN7WebCore17FileChooserClientD2Ev
+__ZL35textMarkerRangeFromVisiblePositionsN7WebCore15VisiblePositionES0_
+__ZNK7WebCore25AccessibilityRenderObject10textLengthEv
+__ZNK7WebCore25AccessibilityRenderObject12selectedTextEv
+__ZNK7WebCore25AccessibilityRenderObject17selectedTextRangeEv
+__ZNK7WebCore19AccessibilityObject12selectionEndEv
+__ZNK7WebCore19AccessibilityObject14selectionStartEv
+__ZNK7WebCore25AccessibilityRenderObject23visiblePositionForIndexEjb
+__ZNK7WebCore25AccessibilityRenderObject23visiblePositionForIndexEi
+__ZNK7WebCore19AccessibilityObject15lineForPositionERKNS_15VisiblePositionE
+__ZN7WebCore13IdentifierRep7isValidEPS0_
+__ZNK3WTF9HashTableIPN7WebCore13IdentifierRepES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E8contain
+__ZNK7WebCore25AccessibilityRenderObject19checkboxOrRadioRectEv
+__ZN7WebCore12RenderInline13absoluteQuadsERN3WTF6VectorINS_9FloatQuadELm0EEE
+__ZNK7WebCore25AccessibilityRenderObject26addRadioButtonGroupMembersERN3WTF6VectorINS1_6RefPtrINS_19AccessibilityObjectEEELm0EE
+__ZN7WebCore8Document35setUseSecureKeyboardEntryWhenActiveEb
+__ZN7WebCore5Frame33updateSecureKeyboardEntryIfActiveEv
+__ZN7WebCore21PlatformKeyboardEvent20currentCapsLockStateEv
+__ZN7WebCore18AccessibilityTable6createEPNS_12RenderObjectE
+__ZN7WebCore18AccessibilityTableC1EPNS_12RenderObjectE
+__ZNK7WebCore16HTMLTableElement7summaryEv
+__ZN7WebCore18AccessibilityTable11addChildrenEv
+__ZN7WebCore21AccessibilityTableRow6createEPNS_12RenderObjectE
+__ZN7WebCore21AccessibilityTableRowC1EPNS_12RenderObjectE
+__ZNK7WebCore21AccessibilityTableRow11parentTableEv
+__ZNK7WebCore18AccessibilityTable11isAriaTableEv
+__ZN7WebCore24AccessibilityTableColumn22headerObjectForSectionEPNS_18RenderTableSectionEb
+__ZN7WebCore22AccessibilityTableCell6createEPNS_12RenderObjectE
+__ZN7WebCore22AccessibilityTableCellC1EPNS_12RenderObjectE
+__ZNK7WebCore22AccessibilityTableCell11parentTableEv
+__ZN7WebCore22AccessibilityTableCell13rowIndexRangeERSt4pairIiiE
+__ZN7WebCore22AccessibilityTableCell16columnIndexRangeERSt4pairIiiE
+__ZN7WebCore21AccessibilityTableRow12headerObjectEv
+__ZN7WebCore18AccessibilityTable19cellForColumnAndRowEjj
+__ZN7WebCore22AccessibilityTableCellD0Ev
+__ZN7WebCore21AccessibilityTableRowD0Ev
+__ZN7WebCore18AccessibilityTableD0Ev
+__ZNK7WebCore16HTMLTableElement5tFootEv
+__ZNK7WebCore16HTMLTableElement5rulesEv
+__ZNK7WebCore20HTMLTableCellElement7headersEv
+__ZNK7WebCore20HTMLTableCellElement4abbrEv
+__ZNK7WebCore20HTMLTableCellElement4axisEv
+__ZNK7WebCore20HTMLTableCellElement5scopeEv
+__ZN7WebCore23HTMLTableCaptionElementD0Ev
+__ZNK7WebCore22AccessibilityTableCell14titleUIElementEv
+__ZNK7WebCore25AccessibilityRenderObject17menuButtonForMenuEv
+__ZNK7WebCore25AccessibilityRenderObject22menuItemElementForMenuEv
+__ZN7WebCoreL19siblingWithAriaRoleENS_6StringEPNS_4NodeE
+__ZN7WebCore38setJSHTMLTextAreaElementSelectionStartEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19HTMLTextAreaElement17setSelectionStartEi
+__ZN7WebCore17RenderTextControl17setSelectionStartEi
+__ZN7WebCore36setJSHTMLTextAreaElementSelectionEndEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19HTMLTextAreaElement15setSelectionEndEi
+__ZN7WebCore17RenderTextControl15setSelectionEndEi
+__ZN7WebCore20previousLinePositionERKNS_15VisiblePositionEi
+__ZN7WebCoreL34enclosingNodeWithNonInlineRendererEPNS_4NodeE
+__ZN7WebCoreL31previousLeafWithSameEditabilityEPNS_4NodeE
+__ZN7WebCore35jsHTMLTextAreaElementSelectionStartEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19HTMLTextAreaElement14selectionStartEv
+__ZN7WebCoreL14isEditableLeafEPNS_9InlineBoxE
+__ZN7WebCore19AccessibilityObject16doAXLineForIndexEj
+-[AccessibilityObjectWrapper accessibilitySetValue:forAttribute:]
+__ZN7WebCore25AccessibilityRenderObject20setSelectedTextRangeERKNS_14PlainTextRangeE
+__ZN7WebCore9CSSParser20parseTransformOriginEiRiS1_S1_RN3WTF6RefPtrINS_8CSSValueEEES6_S6_
+__ZN7WebCore9CSSParser29parseTransformOriginShorthandERN3WTF6RefPtrINS_8CSSValueEEES5_S5_
+__ZNK7WebCore24RotateTransformOperation16getOperationTypeEv
+__ZNK7WebCore14HTMLCollection8nextItemEv
+__ZNK7WebCore15PropertyWrapperINS_6LengthEE5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS6_S9_d
+__ZNK7WebCore11RenderStyle4leftEv
+__ZN7WebCore11RenderStyle7setLeftENS_6LengthE
+__ZN7WebCore18CompositeAnimation16resumeAnimationsEv
+__ZN7WebCore13AnimationBase16getNumPropertiesEv
+__ZNK7WebCore18CompositeAnimation23getAnimationForPropertyEi
+__ZNK7WebCore17KeyframeAnimation23hasAnimationForPropertyEi
+__ZNK3WTF7HashMapIiNS_6RefPtrIN7WebCore17ImplicitAnimationEEENS_7IntHashIjEENS_10HashTraitsIiEENS7_IS4_EEE3getERKi
+__ZN7WebCore13AnimationBase15propertiesEqualEiPKNS_11RenderStyleES3_
+__ZNK7WebCore21PropertyWrapperGetterINS_6LengthEE6equalsEPKNS_11RenderStyleES5_
+__ZNK7WebCore11RenderStyle3topEv
+__ZN7WebCore17ImplicitAnimationC1EPKNS_9AnimationEiPNS_12RenderObjectEPNS_18CompositeAnimationEPNS_11RenderStyleE
+__ZN7WebCore17ImplicitAnimationC2EPKNS_9AnimationEiPNS_12RenderObjectEPNS_18CompositeAnimationEPNS_11RenderStyleE
+__ZN3WTF7HashMapIiNS_6RefPtrIN7WebCore17ImplicitAnimationEEENS_7IntHashIjEENS_10HashTraitsIiEENS7_IS4_EEE3setERKiRKS4_
+__ZNK7WebCore11RenderStyle5widthEv
+__ZN7WebCore17ImplicitAnimation7animateEPNS_18CompositeAnimationEPNS_12RenderObjectEPKNS_11RenderStyleEPS5_RN3WTF6RefPtrIS5_EE
+__ZN7WebCore17ImplicitAnimation5resetEPNS_11RenderStyleE
+__ZN7WebCore17ImplicitAnimation12endAnimationEb
+__ZN7WebCore17ImplicitAnimation29validateTransformFunctionListEv
+__ZN7WebCore11RenderStyle8setWidthENS_6LengthE
+__ZN7WebCore11RenderStyle6setTopENS_6LengthE
+__ZN7WebCore17ImplicitAnimation17timeToNextServiceEv
+__ZN7WebCore13AnimationBase18overrideAnimationsEv
+__ZN7WebCore13AnimationBase16onAnimationStartEd
+__ZNK7WebCore17ImplicitAnimation10overriddenEv
+__ZN7WebCore17ImplicitAnimation14startAnimationEd
+__ZN7WebCore17ImplicitAnimation21isTargetPropertyEqualEiPKNS_11RenderStyleE
+__ZNK7WebCore19AnimationController24numberOfActiveAnimationsEv
+__ZNK7WebCore26AnimationControllerPrivate24numberOfActiveAnimationsEv
+__ZNK7WebCore18CompositeAnimation24numberOfActiveAnimationsEv
+__ZNK7WebCore11RenderStyle6heightEv
+__ZN7WebCore11RenderStyle9setHeightENS_6LengthE
+__ZN7WebCore17ImplicitAnimationD0Ev
+__ZN7WebCore29jsDOMWindowCSSRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9JSCSSRule14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore20JSCSSRuleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore30jsCSSRuleWEBKIT_KEYFRAMES_RULEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsCSSRuleWEBKIT_KEYFRAME_RULEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19AnimationController20pauseAnimationAtTimeEPNS_12RenderObjectERKNS_6StringEd
+__ZN7WebCore26AnimationControllerPrivate20pauseAnimationAtTimeEPNS_12RenderObjectERKNS_6StringEd
+__ZN7WebCore18CompositeAnimation20pauseAnimationAtTimeERKNS_12AtomicStringEd
+__ZNK7WebCore13AnimationBase8durationEv
+__ZN7WebCore13AnimationBase11pauseAtTimeEd
+__ZN7WebCore13AnimationBase15updatePlayStateEb
+__ZN7WebCore22externalRepresentationEPNS_12RenderObjectE
+__ZN7WebCore20writeRenderResourcesERNS_10TextStreamEPNS_4NodeE
+__ZN7WebCoreL11writeLayersERNS_10TextStreamEPKNS_11RenderLayerEPS2_RKNS_7IntRectEi
+__ZN7WebCoreL5writeERNS_10TextStreamERNS_11RenderLayerERKNS_7IntRectES6_S6_S6_ii
+__ZN7WebCoreL11writeIndentERNS_10TextStreamEi
+__ZN7WebCore10TextStreamlsEPKc
+__ZN7WebCorelsERNS_10TextStreamERKNS_7IntRectE
+__ZN7WebCore10TextStreamlsEi
+__ZNK7WebCore7IntRect8containsERKS0_
+__ZN7WebCore5writeERNS_10TextStreamERKNS_12RenderObjectEi
+__ZNK7WebCore12RenderObject12isRenderPathEv
+__ZNK7WebCore12RenderObject10isSVGImageEv
+__ZNK7WebCore10RenderView10renderNameEv
+__ZN7WebCoreL10getTagNameEPNS_4NodeE
+__ZNK7WebCore11RenderBlock10renderNameEv
+__ZN7WebCore10TextStreamlsERKNS_6StringE
+__ZNK7WebCore10RenderText10renderNameEv
+__ZNK7WebCore10RenderText9firstRunYEv
+__ZNK7WebCore10RenderText9firstRunXEv
+__ZN7WebCore27quoteAndEscapeNonPrintablesERKNS_6StringE
+__ZNK7WebCore5Color4nameEv
+__ZN7WebCore10TextStream7releaseEv
+__ZN7WebCore20JSCSSRuleConstructorD1Ev
+__ZN7WebCore27TranslateTransformOperation5blendEPKNS_18TransformOperationEdb
+__ZN7WebCore12GCController17garbageCollectNowEv
+__ZN7WebCore20WebKitAnimationEventC1Ev
+__ZN7WebCore20WebKitAnimationEventC2Ev
+__ZN7WebCore33jsWebKitAnimationEventElapsedTimeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20WebKitAnimationEvent11elapsedTimeEv
+__ZN7WebCore10MouseEventC1Ev
+__ZN7WebCore10MouseEventC2Ev
+__ZN7WebCore17MouseRelatedEventC2Ev
+__ZN7WebCore7UIEventC2Ev
+__ZN7WebCore43jsDocumentPrototypeFunctionElementFromPointEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore11RenderLayer25createLocalTransformStateEPS0_S1_RKNS_7IntRectERKNS_8IntPointEPKNS_24HitTestingTransformStateE
+__ZN7WebCore24HitTestingTransformState14applyTransformERKNS_20TransformationMatrixENS0_21TransformAccumulationE
+__ZNK7WebCore24HitTestingTransformState11mappedPointEv
+__ZNK7WebCore20TransformationMatrix12projectPointERKNS_10FloatPointE
+__ZNK7WebCore24HitTestingTransformState10mappedQuadEv
+__ZNK7WebCore20TransformationMatrix11projectQuadERKNS_9FloatQuadE
+__ZN7WebCore24HitTestingTransformState7flattenEv
+__ZN7WebCore24HitTestingTransformState20flattenWithTransformERKNS_20TransformationMatrixE
+__ZN7WebCore9CSSParser28parseAnimationIterationCountEv
+__ZN7WebCore16CSSStyleSelector26mapAnimationIterationCountEPNS_9AnimationEPNS_8CSSValueE
+__ZN7WebCore17KeyframeAnimation20onAnimationIterationEd
+__ZNK7WebCore24RotateTransformOperation10isSameTypeERKNS_18TransformOperationE
+__ZN7WebCore24RotateTransformOperation5blendEPKNS_18TransformOperationEdb
+__ZNK7WebCore24RotateTransformOperationeqERKNS_18TransformOperationE
+__ZN7WebCore13jsCSSRuleTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsWebKitCSSKeyframesRuleNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24JSWebKitCSSKeyframesRule3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore31setJSWebKitCSSKeyframesRuleNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore22WebKitCSSKeyframesRule7setNameERKNS_6StringE
+__ZN7WebCore57jsCSSStyleDeclarationPrototypeFunctionGetPropertyCSSValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Arg
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_8CSSValueE
+__ZNK7WebCore8CSSValue25isWebKitCSSTransformValueEv
+__ZNK7WebCore8CSSValue10isSVGPaintEv
+__ZNK7WebCore8CSSValue10isSVGColorEv
+__ZN7WebCore19JSCSSPrimitiveValue15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSCSSValuePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSCSSValue15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSCSSPrimitiveValueC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17CSSPrimitiveValueEEE
+__ZN7WebCore19JSCSSPrimitiveValueC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17CSSPrimitiveValueEEE
+__ZN7WebCore10JSCSSValueC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8CSSValueEEE
+__ZN7WebCore19JSCSSPrimitiveValue18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore10JSCSSValue18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28JSCSSPrimitiveValuePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore39jsDOMWindowCSSPrimitiveValueConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSCSSPrimitiveValue14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore30JSCSSPrimitiveValueConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore28JSCSSPrimitiveValuePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore30JSCSSPrimitiveValueConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore29jsCSSPrimitiveValueCSS_NUMBEREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore49jsCSSPrimitiveValuePrototypeFunctionGetFloatValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore19JSCSSPrimitiveValue9classInfoEv
+__ZN7WebCore19JSCSSPrimitiveValueD1Ev
+__ZN7WebCore10JSCSSValueD2Ev
+__ZN7WebCore19JSCSSValuePrototypeD1Ev
+__ZN7WebCore28JSCSSPrimitiveValuePrototypeD1Ev
+__ZN7WebCore30JSCSSPrimitiveValueConstructorD1Ev
+__ZN7WebCore33JSWebKitCSSKeyframesRulePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore51jsWebKitCSSKeyframesRulePrototypeFunctionDeleteRuleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore24JSWebKitCSSKeyframesRule9classInfoEv
+__ZN7WebCore22WebKitCSSKeyframesRule10deleteRuleERKNS_6StringE
+__ZNK7WebCore22WebKitCSSKeyframesRule13findRuleIndexERKNS_6StringE
+__ZN7WebCore11CSSRuleList10deleteRuleEj
+__ZN7WebCore51jsWebKitCSSKeyframesRulePrototypeFunctionInsertRuleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore22WebKitCSSKeyframesRule10insertRuleERKNS_6StringE
+__ZN7WebCore9CSSParser17parseKeyframeRuleEPNS_13CSSStyleSheetERKNS_6StringE
+__ZN7WebCore9CSSParser23parseAnimationDirectionEv
+__ZN7WebCore16CSSStyleSelector21mapAnimationDirectionEPNS_9AnimationEPNS_8CSSValueE
+__ZN7WebCore37jsDOMWindowWebKitCSSMatrixConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow15webKitCSSMatrixEPN3JSC9ExecStateE
+__ZN7WebCore28JSWebKitCSSMatrixConstructorC1EPN3JSC9ExecStateE
+__ZN7WebCore28JSWebKitCSSMatrixConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore26JSWebKitCSSMatrixPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSWebKitCSSMatrix15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSWebKitCSSMatrixConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCoreL24constructWebKitCSSMatrixEPN3JSC9ExecStateEPNS0_8JSObjectERKNS0_7ArgListE
+__ZN7WebCore15WebKitCSSMatrixC1ERKNS_6StringERi
+__ZN7WebCore15WebKitCSSMatrixC2ERKNS_6StringERi
+__ZN7WebCore15WebKitCSSMatrix14setMatrixValueERKNS_6StringERi
+__ZNK7WebCore24MatrixTransformOperation5applyERNS_20TransformationMatrixERKNS_7IntSizeE
+__ZN7WebCore24MatrixTransformOperationD0Ev
+__ZN7WebCore17JSWebKitCSSMatrixC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15WebKitCSSMatrixEEE
+__ZN7WebCore17JSWebKitCSSMatrixC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15WebKitCSSMatrixEEE
+__ZN7WebCore17JSWebKitCSSMatrix18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18jsWebKitCSSMatrixAEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsWebKitCSSMatrixBEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsWebKitCSSMatrixCEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsWebKitCSSMatrixDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsWebKitCSSMatrixEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsWebKitCSSMatrixFEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL16getDurationValueEPKNS_13AnimationListE
+__ZN7WebCoreL22getTimingFunctionValueEPKNS_13AnimationListE
+__ZNK7WebCore22CSSTimingFunctionValue7cssTextEv
+__ZN7WebCore22CSSTimingFunctionValueD0Ev
+__ZN7WebCore17JSWebKitCSSMatrixD1Ev
+__ZN7WebCore17JSWebKitCSSMatrixD2Ev
+__ZN7WebCore15WebKitCSSMatrixD0Ev
+__ZN7WebCore26JSWebKitCSSMatrixPrototypeD1Ev
+__ZN7WebCore28JSWebKitCSSMatrixConstructorD1Ev
+__ZN7WebCoreL13getDelayValueEPKNS_13AnimationListE
+__ZN7WebCore43jsDOMWindowWebKitCSSKeyframeRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23JSWebKitCSSKeyframeRule14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore32JSWebKitCSSKeyframeRulePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSWebKitCSSKeyframeRule15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore44jsDOMWindowWebKitCSSKeyframesRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24JSWebKitCSSKeyframesRule14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore33JSWebKitCSSKeyframesRulePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore37jsStyleSheetListPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16JSStyleSheetList9classInfoEv
+__ZN7WebCore34jsCSSRuleListPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore13JSCSSRuleList9classInfoEv
+__ZN7WebCore32jsWebKitCSSKeyframesRuleCssRulesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore21WebKitCSSKeyframeRule4typeEv
+__ZN7WebCore23JSWebKitCSSKeyframeRuleC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21WebKitCSSKeyframeRuleEEE
+__ZN7WebCore23JSWebKitCSSKeyframeRuleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21WebKitCSSKeyframeRuleEEE
+__ZN7WebCore23JSWebKitCSSKeyframeRule18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore30jsWebKitCSSKeyframeRuleKeyTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsWebKitCSSKeyframeRuleStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsDOMWindowCSSStyleDeclarationConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSCSSStyleDeclaration14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore30JSCSSStyleDeclarationPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27jsCSSStyleDeclarationLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore49jsWebKitCSSKeyframesRulePrototypeFunctionFindRuleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore22WebKitCSSKeyframesRule8findRuleERKNS_6StringE
+__ZN7WebCore22WebKitCSSKeyframesRule4itemEj
+__ZN7WebCore23JSWebKitCSSKeyframeRuleD1Ev
+__ZN7WebCore35JSWebKitCSSKeyframesRuleConstructorD1Ev
+__ZN7WebCore32JSWebKitCSSKeyframeRulePrototypeD1Ev
+__ZN7WebCore34JSWebKitCSSKeyframeRuleConstructorD1Ev
+__ZN7WebCore32JSCSSStyleDeclarationConstructorD1Ev
+__ZNK7WebCore11RenderStyle10lineHeightEv
+__ZN7WebCore11RenderStyle13setLineHeightENS_6LengthE
+__ZNK7WebCore24MatrixTransformOperation10isSameTypeERKNS_18TransformOperationE
+__ZNK7WebCore24MatrixTransformOperation16getOperationTypeEv
+__ZN7WebCore24MatrixTransformOperation5blendEPKNS_18TransformOperationEdb
+__ZNK7WebCore24MatrixTransformOperationeqERKNS_18TransformOperationE
+__ZNK7WebCore21PropertyWrapperGetterIRKNS_19TransformOperationsEE6equalsEPKNS_11RenderStyleES7_
+__ZN7WebCore17ImplicitAnimation13setOverriddenEb
+__ZN7WebCoreL16printBorderStyleERNS_10TextStreamENS_12EBorderStyleE
+__ZNK7WebCore14RenderListItem10renderNameEv
+__ZNK7WebCore16RenderListMarker10renderNameEv
+__ZNK7WebCore11RenderTable10renderNameEv
+__ZNK7WebCore18RenderTableSection10renderNameEv
+__ZNK7WebCore14RenderTableRow10renderNameEv
+__ZNK7WebCore15RenderTableCell10renderNameEv
+__ZNK7WebCore12RenderInline10renderNameEv
+__ZNK7WebCore11RenderImage10renderNameEv
+__ZNK7WebCore8RenderBR10renderNameEv
+__ZNK7WebCore12RenderObject16isBoxModelObjectEv
+__ZN7WebCoreL12toAlphabeticEiPKti
+__ZN7WebCoreL7toRomanEib
+__ZN7WebCore11CSSSelector11setArgumentERKNS_12AtomicStringE
+__ZNK7WebCore14SimpleFontData17smallCapsFontDataERKNS_15FontDescriptionE
+__ZN7WebCore16FontPlatformData7setFontEP6NSFont
+__ZN7WebCore18RenderTextFragmentC1EPNS_4NodeEPNS_10StringImplEii
+__ZN7WebCore18RenderTextFragmentC2EPNS_4NodeEPNS_10StringImplEii
+__ZNK7WebCore12RenderObject22firstLineStyleSlowCaseEv
+__ZNK7WebCore11RenderBlock14firstLineBlockEv
+__ZN7WebCore15RenderScrollbar24scrollbarForStyleResolveEv
+__ZNK7WebCore17HTMLObjectElement24imageSourceAttributeNameEv
+__ZN7WebCore9CSSParser12parseCounterEiib
+__ZN7WebCore9CSSParser19parseCounterContentEPNS_18CSSParserValueListEb
+__ZN7WebCore17CSSPrimitiveValue4initEN3WTF10PassRefPtrINS_7CounterEEE
+__ZN7WebCoreL16applyCounterListEPNS_11RenderStyleEPNS_12CSSValueListEb
__ZN7WebCore11RenderStyle23accessCounterDirectivesEv
-__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore16AtomicStringImplEEENS2_17CounterDirectivesENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS8_IS5_EEE3getEPS3_
-__ZN3WTF9HashTableIiSt4pairIiN7WebCore17CounterDirectivesEENS_18PairFirstExtractorIS4_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E3addINS_6RefPtrINS2_16AtomicStringImplEEES3_NS_17HashMapTranslatorILb0ES1_ISI_S3_ENS_18PairBaseHashTraitsINSA_ISI_EESC_EESD_NS_7PtrHashISI_EEEEEES1_INS_17HashTableIteratorIiS4_S6_S8_SD_SB_EEbERKT_RKT0_
-__ZN3WTF9HashTableIiSt4pairIiN7WebCore17CounterDirectivesEENS_18PairFirstExtractorIS4_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E6expandEv
-__ZN7WebCore22HTMLViewSourceDocument20addSpanWithClassNameERKNS_6StringE
-__ZN7WebCore22HTMLViewSourceDocument7addLineERKNS_6StringE
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore16AtomicStringImplEEENS2_17CounterDirectivesENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS8_IS5
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore16AtomicStringImplEEESt4pairIS4_NS2_17CounterDirectivesEENS_18PairFirstExtractorIS7_EENS
__ZN7WebCore11RenderStyle10setContentEPNS_14CounterContentEb
__ZN7WebCore13RenderCounterC1EPNS_8DocumentERKNS_14CounterContentE
-__ZN7WebCore22HTMLViewSourceDocument7addTextERKNS_6StringES3_
-__ZN7WebCore22HTMLViewSourceDocument7addLinkERKNS_6StringEb
-__ZN7WebCore17HTMLAnchorElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN3WTFeqINS_6RefPtrIN7WebCore16AtomicStringImplEEENS2_17CounterDirectivesENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS8_IS5_EEEEbRKNS_7HashMapIT_T0_T1_T2_T3_EESJ_
-__ZNK3WTF9HashTableIiSt4pairIiN7WebCore17CounterDirectivesEENS_18PairFirstExtractorIS4_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E4findIiNS_22IdentityHashTranslatorIiS4_S8_EEEENS_22HashTableConstIteratorIiS4_S6_S8_SD_SB_EERKT_
-__ZN7WebCoreeqERKNS_17CounterDirectivesES2_
-__ZN3WTF23HashTableRefCounterBaseILb1ENS_9HashTableIiSt4pairIiN7WebCore17CounterDirectivesEENS_18PairFirstExtractorIS5_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSB_IS4_EEEESC_EENS_18PairBaseHashTraitsINSB_INS_6RefPtrINS3_16AtomicStringImplEEEEESD_EEE8derefAllERSF_
+__ZN7WebCore13RenderCounterC2EPNS_8DocumentERKNS_14CounterContentE
+__ZNK7WebCore13RenderCounter9isCounterEv
__ZN7WebCore13RenderCounter14calcPrefWidthsEi
__ZNK7WebCore13RenderCounter12originalTextEv
-__ZN7WebCore7counterEPNS_12RenderObjectERKNS_12AtomicStringEb
+__ZN7WebCoreL7counterEPNS_12RenderObjectERKNS_12AtomicStringEb
__ZNK7WebCore11RenderStyle17counterDirectivesEv
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore16AtomicStringImplEEENS2_17CounterDirectivesENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS8_IS
__ZN7WebCore11CounterNodeC1EPNS_12RenderObjectEbi
-__ZN7WebCore11counterMapsEv
+__ZN7WebCore11CounterNodeC2EPNS_12RenderObjectEbi
+__ZN7WebCoreL11counterMapsEv
+__ZN3WTF7HashMapIPKN7WebCore12RenderObjectEPNS0_INS_6RefPtrINS1_16AtomicStringImplEEEPNS1_11CounterNodeENS_7PtrHashIS7_EENS_10H
+__ZN3WTF9HashTableIPKN7WebCore12RenderObjectESt4pairIS4_PNS_7HashMapINS_6RefPtrINS1_16AtomicStringImplEEEPNS1_11CounterNodeENS_
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore16AtomicStringImplEEEPNS2_11CounterNodeENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore16AtomicStringImplEEESt4pairIS4_PNS2_11CounterNodeEENS_18PairFirstExtractorIS8_EENS_7Ptr
__ZN7WebCore11CounterNode11insertAfterEPS0_S1_
__ZNK7WebCore11CounterNode20computeCountInParentEv
-__ZN3WTF7HashMapIPKN7WebCore12RenderObjectEPNS0_INS_6RefPtrINS1_16AtomicStringImplEEEPNS1_11CounterNodeENS_7PtrHashIS7_EENS_10HashTraitsIS7_EENSC_IS9_EEEENSA_IS4_EENSC_IS4_EENSC_ISG_EEE3setERKS4_RKSG_
-__ZN3WTF7HashMapINS_6RefPtrIN7WebCore16AtomicStringImplEEEPNS2_11CounterNodeENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3setEPS3_RKS6_
-__ZN7WebCore13RenderCounter14dirtyLineBoxesEbb
-__ZNK7WebCore19CachedCSSStyleSheet8encodingEv
-__ZN7WebCore13TextTokenizerC1EPNS_22HTMLViewSourceDocumentE
-__ZN7WebCore22HTMLViewSourceDocument17addViewSourceTextERKNS_6StringE
-__ZNK7WebCore14RenderReplaced21minimumReplacedHeightEv
-__ZN7WebCore13RootInlineBox15clearTruncationEv
-__ZN7WebCore13InlineFlowBox15clearTruncationEv
-__ZN7WebCore13InlineTextBox15clearTruncationEv
-__ZN7WebCore16RenderHTMLCanvas13paintReplacedERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore17HTMLCanvasElement5paintEPNS_15GraphicsContextERKNS_7IntRectE
-__ZNK7WebCore17HTMLCanvasElement19createPlatformImageEv
-__ZN7WebCore11EllipsisBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
-__ZNK7WebCore16HTMLImageElement12naturalWidthEv
-__ZNK3WTF7HashMapIPKN7WebCore14RenderReplacedENS1_7IntRectENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS8_IS5_EEE3getERKS4_
-__ZN3WTF9HashTableIiSt4pairIiN7WebCore7IntRectEENS_18PairFirstExtractorIS4_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E3addIPKNS2_14RenderReplacedES3_NS_17HashMapTranslatorILb1ES1_ISI_S3_ENS_18PairBaseHashTraitsINSA_ISI_EESC_EESD_NS_7PtrHashISI_EEEEEES1_INS_17HashTableIteratorIiS4_S6_S8_SD_SB_EEbERKT_RKT0_
-__ZN3WTF9HashTableIiSt4pairIiN7WebCore7IntRectEENS_18PairFirstExtractorIS4_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E47removeAndInvalidateWithoutEntryConsistencyCheckEPS4_
-__ZN3WTF9HashTableIiSt4pairIiN7WebCore7IntRectEENS_18PairFirstExtractorIS4_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSA_IS3_EEEESB_E4findIiNS_22IdentityHashTranslatorIiS4_S8_EEEENS_17HashTableIteratorIiS4_S6_S8_SD_SB_EERKT_
-__ZN7WebCore15GraphicsContext7clipOutERKNS_7IntRectE
-__ZN7WebCore17isStartOfDocumentERKNS_15VisiblePositionE
-__ZN7WebCore6attachEPK15OpaqueJSContextP13OpaqueJSValueS4_mPKPKS3_PS6_
-__ZN7WebCore19InspectorController12attachWindowEv
+__ZNK3WTF7HashMapIPKN7WebCore12RenderObjectEPNS0_INS_6RefPtrINS1_16AtomicStringImplEEEPNS1_11CounterNodeENS_7PtrHashIS7_EENS_10
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore16AtomicStringImplEEEPNS2_11CounterNodeENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE
+__ZNK7WebCore13RenderCounter10renderNameEv
+__ZN7WebCore13RenderCounterD0Ev
__ZN7WebCore13RenderCounter19destroyCounterNodesEPNS_12RenderObjectE
__ZN7WebCore11CounterNode11removeChildEPS0_
__ZN7WebCore11CounterNode7recountEv
-__ZNK7WebCore12RenderObject9isCounterEv
-__ZN7WebCore22HTMLViewSourceDocumentD1Ev
-__ZNK7WebCore15BackgroundLayer13containsImageEPNS_11CachedImageE
-__ZN7WebCore6detachEPK15OpaqueJSContextP13OpaqueJSValueS4_mPKPKS3_PS6_
-__ZN7WebCore19InspectorController12detachWindowEv
-__ZN7WebCore23JSDOMSelectionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore47jsDOMSelectionPrototypeFunctionSetBaseAndExtentEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore14JSDOMSelection9classInfoEv
-__ZN7WebCore12DOMSelection16setBaseAndExtentEPNS_4NodeEiS2_iRi
-__ZN7WebCore19SelectionController6moveToERKNS_15VisiblePositionES3_b
-__ZN7WebCore6Editor18shouldBeginEditingEPNS_5RangeE
-__ZN7WebCore6Editor15didBeginEditingEv
-__ZNK7WebCore6Editor25shouldShowDeleteInterfaceEPNS_11HTMLElementE
-__ZN7WebCore15rowResizeCursorEv
-__ZN7WebCore6Editor15insertLineBreakEv
-__ZN7WebCore13TypingCommand15insertLineBreakEPNS_8DocumentE
-__ZN7WebCore13TypingCommand15insertLineBreakEv
-__ZN7WebCore22InsertLineBreakCommandC2EPNS_8DocumentE
-__ZN7WebCore22InsertLineBreakCommand7doApplyEv
-__ZN7WebCore20CompositeEditCommand22positionOutsideTabSpanERKNS_8PositionE
-__ZN7WebCore22InsertLineBreakCommand21shouldUseBreakElementERKNS_8PositionE
-__ZN7WebCore14caretMinOffsetEPKNS_4NodeE
-__ZN7WebCore20CompositeEditCommand15insertNodeAfterEPNS_4NodeES2_
-__ZN7WebCore20CompositeEditCommand19rebalanceWhitespaceEv
-__ZNK7WebCore22InsertLineBreakCommand20preservesTypingStyleEv
-__ZN7WebCore6Editor16shouldEndEditingEPNS_5RangeE
-__ZN7WebCore6Editor13didEndEditingEv
-__ZN7WebCore20CompositeEditCommand23deleteInsignificantTextEPNS_4TextEii
-__ZN7WebCore12RenderObject27capsLockStateMayHaveChangedEv
-__ZN7WebCore15executeMoveLeftEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore19SelectionController24modifyMovingLeftBackwardENS_15TextGranularityE
-__ZN7WebCore19CSSBorderImageValueD1Ev
-__ZN7WebCore12RenderWidget17setSelectionStateENS_12RenderObject14SelectionStateE
-__ZN7WebCore6Widget13setIsSelectedEb
-__ZN7WebCore52jsCSSStyleDeclarationPrototypeFunctionRemovePropertyEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19CSSStyleDeclaration14removePropertyERKNS_6StringERi
-__ZNK7WebCore6Widget1xEv
-__ZNK7WebCore6Widget1yEv
-__ZN7WebCore11ContextMenu21addInspectElementItemEv
-__ZN7WebCore32contextMenuItemTagInspectElementEv
-__ZN7WebCore19InspectorController7inspectEPNS_4NodeE
-__ZN7WebCore19InspectorController9focusNodeEv
-__ZN7WebCore16highlightDOMNodeEPK15OpaqueJSContextP13OpaqueJSValueS4_mPKPKS3_PS6_
-__ZNK7WebCore15MappedAttribute5styleEv
-__ZN7WebCore46jsDOMWindowPrototypeFunctionGetMatchedCSSRulesEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9DOMWindow18getMatchedCSSRulesEPNS_7ElementERKNS_6StringEb
-__ZN7WebCore16CSSStyleSelector20styleRulesForElementEPNS_7ElementEb
-__ZN3KJS17staticValueGetterIN7WebCore13JSCSSRuleListEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore13JSCSSRuleList16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore21JSCSSStyleDeclaration11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZNK7WebCore26CSSMutableStyleDeclaration4itemEj
-__ZNK7WebCore23DeprecatedValueListImpl6nodeAtEj
-__ZN7WebCore57jsCSSStyleDeclarationPrototypeFunctionGetPropertyPriorityEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19CSSStyleDeclaration19getPropertyPriorityERKNS_6StringE
-__ZN7WebCore14JSCSSStyleRule3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore9JSCSSRule3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZNK7WebCore27CSSComputedStyleDeclaration6lengthEv
-__ZNK7WebCore27CSSComputedStyleDeclaration4itemEj
-__ZN7WebCore58jsCSSStyleDeclarationPrototypeFunctionGetPropertyShorthandEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19CSSStyleDeclaration20getPropertyShorthandERKNS_6StringE
-__ZNK7WebCore27CSSComputedStyleDeclaration20getPropertyShorthandEi
-__ZNK7WebCore27CSSComputedStyleDeclaration19getPropertyPriorityEi
-__ZN7WebCore56jsCSSStyleDeclarationPrototypeFunctionIsPropertyImplicitEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19CSSStyleDeclaration18isPropertyImplicitERKNS_6StringE
-__ZNK7WebCore27CSSComputedStyleDeclaration18isPropertyImplicitEi
-__ZN7WebCore26getBorderRadiusCornerValueENS_7IntSizeE
-__ZN7WebCore14valueForShadowEPKNS_10ShadowDataE
-__ZN7WebCore49jsCSSStyleDeclarationPrototypeFunctionSetPropertyEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN3WTF6VectorIN7WebCore20StyleDashboardRegionELm0EEC1ERKS3_
-__ZN7WebCore17CSSPrimitiveValue4initEN3WTF10PassRefPtrINS_15DashboardRegionEEE
-__ZNK7WebCore27CSSComputedStyleDeclaration22getSVGPropertyCSSValueEiNS_13EUpdateLayoutE
-__ZNK7WebCore8SVGPaint7cssTextEv
-__ZNK7WebCore8SVGColor7cssTextEv
-__ZNK7WebCore5Color4nameEv
-__ZN7WebCore35glyphOrientationToCSSPrimitiveValueENS_17EGlyphOrientationE
-__ZNK7WebCore26CSSMutableStyleDeclaration20getPropertyShorthandEi
-__ZNK7WebCore26CSSMutableStyleDeclaration18isPropertyImplicitEi
-__ZNK7WebCore26CSSMutableStyleDeclaration10get4ValuesEPKi
-__ZNK7WebCore14JSCSSStyleRule9classInfoEv
-__ZNK7WebCore12CSSStyleRule12selectorTextEv
-__ZNK7WebCore11CSSSelector12selectorTextEv
-__ZN3KJS17staticValueGetterIN7WebCore9JSCSSRuleEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore9JSCSSRule16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore26CSSMutableStyleDeclaration17getShorthandValueEPKii
-__ZN7WebCore19InspectorController9highlightEPNS_4NodeE
--[DOMNode(DOMNodeExtensions) boundingBox]
--[DOMElement scrollIntoViewIfNeeded:]
-__ZN7WebCore7Element22scrollIntoViewIfNeededEb
-__ZN7WebCore15GraphicsContext18clipOutRoundedRectERKNS_7IntRectERKNS_7IntSizeES6_S6_S6_
-__ZN7WebCore15GraphicsContext7clipOutERKNS_4PathE
-__ZN7WebCore15GraphicsContext15fillRoundedRectERKNS_7IntRectERKNS_7IntSizeES6_S6_S6_RKNS_5ColorE
-__ZN7WebCore15GraphicsContext7addPathERKNS_4PathE
-__ZNK7WebCore11RenderLayer16enclosingElementEv
-__ZNK7WebCore26CSSMutableStyleDeclaration24getLayeredShorthandValueEPKij
-__ZNK7WebCore8CSSValue22isImplicitInitialValueEv
-__ZNK7WebCore15CSSInitialValue22isImplicitInitialValueEv
-__ZN7WebCore9InlineBox16placeEllipsisBoxEbiiRb
-__ZN7WebCore31jsConsolePrototypeFunctionErrorEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Console5errorERKNS_6StringE
-__ZN3WTF6VectorIPN7WebCore14ConsoleMessageELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore14ConsoleMessageELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore14ConsoleMessageELm0EE15reserveCapacityEm
-__ZNK7WebCore29JSHTMLHeadingElementPrototype9classInfoEv
-__ZNK7WebCore22JSHTMLElementPrototype9classInfoEv
-__ZNK7WebCore18JSElementPrototype9classInfoEv
-__ZNK7WebCore22JSEventTargetPrototypeINS_15JSNodePrototypeENS_33JSEventTargetPrototypeInformationEE9classInfoEv
-__ZNK7WebCore15JSNodePrototype9classInfoEv
-__ZNK7WebCore18HTMLHeadingElement5alignEv
-__ZN7WebCore14JSNamedNodeMap16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZNK7WebCore23JSNamedNodeMapPrototype9classInfoEv
-__ZNK7WebCore7Element7baseURIEv
-__ZNK7WebCore8Document7baseURIEv
-__ZNK7WebCore8Document11documentURIEv
-__ZN3KJS17staticValueGetterIN7WebCore15JSNodePrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSNodePrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore4Node14lastDescendantEv
-__ZN7WebCore30stringWithRebalancedWhitespaceERKNS_6StringEbb
-__ZNK7WebCore27JSHTMLUListElementPrototype9classInfoEv
-__ZNK7WebCore25JSHTMLDivElementPrototype9classInfoEv
-__ZNK7WebCore27JSHTMLImageElementPrototype9classInfoEv
-__ZN7WebCore46jsCanvasRenderingContext2DPrototypeFunctionArcEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D3arcEfffffbRi
-__ZN7WebCore4Path6addArcERKNS_10FloatPointEfffb
-__ZN7WebCore47jsCanvasRenderingContext2DPrototypeFunctionFillEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D4fillEv
-__ZN7WebCore19InspectorController20removeScriptResourceEPNS_17InspectorResourceE
-__ZN7WebCore20hideDOMNodeHighlightEPK15OpaqueJSContextP13OpaqueJSValueS4_mPKPKS3_PS6_
-__ZN7WebCore19InspectorController13hideHighlightEv
-__ZN7WebCore10HTMLParser20reportErrorToConsoleENS_19HTMLParserErrorCodeEPKNS_12AtomicStringES4_b
-__ZNK7WebCore13HTMLTokenizer10lineNumberEv
-__ZN7WebCore30htmlParserErrorMessageTemplateENS_19HTMLParserErrorCodeE
-__ZN7WebCore10StringImpl7replaceEPS0_S1_
-__ZN7WebCore9isWarningENS_19HTMLParserErrorCodeE
-__ZN7WebCore19InspectorController23addScriptConsoleMessageEPKNS_14ConsoleMessageE
-__ZN7WebCore40jsElementPrototypeFunctionScrollIntoViewEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Element14scrollIntoViewEb
-__ZNK7WebCore11FrameLoader18canGoBackOrForwardEi
-__ZN7WebCore40lastEditablePositionBeforePositionInRootERKNS_8PositionEPNS_4NodeE
-__ZN7WebCore9unloadingEPK15OpaqueJSContextP13OpaqueJSValueS4_mPKPKS3_PS6_
-__ZN7WebCore19InspectorController5closeEv
-__ZN7WebCore26CompositeImplicitAnimation5resetEPNS_12RenderObjectE
-__ZN3WTF20deleteAllPairSecondsIPN7WebCore17ImplicitAnimationEKNS_7HashMapIiS3_NS_7IntHashIjEENS_10HashTraitsIiEENS7_IS3_EEEEEEvRT0_
-__ZN3WTF6VectorIPN7WebCore14ConsoleMessageELm0EE6shrinkEm
-__ZN7WebCore13RenderListBox16selectionChangedEv
-__ZN7WebCore13RenderListBox23scrollToRevealSelectionEv
-__ZNK7WebCore17HTMLSelectElement29activeSelectionStartListIndexEv
-__ZNK7WebCore17HTMLSelectElement27activeSelectionEndListIndexEv
-__ZNK7WebCore17HTMLSelectElement21lastSelectedListIndexEv
-__ZN7WebCore13RenderListBox18listIndexIsVisibleEi
-__ZNK7WebCore11RenderTheme39inactiveListBoxSelectionBackgroundColorEv
-__ZNK7WebCore11RenderTheme39inactiveListBoxSelectionForegroundColorEv
-__ZN7WebCore18RenderTextFragment17previousCharacterEv
-__ZN7WebCore14RenderFrameSet17paintColumnBorderERKNS_12RenderObject9PaintInfoERKNS_7IntRectE
-__ZN7WebCore14RenderFrameSet14paintRowBorderERKNS_12RenderObject9PaintInfoERKNS_7IntRectE
-__ZN7WebCore15borderFillColorEv
-__ZN7WebCore20borderStartEdgeColorEv
-__ZN7WebCore18borderEndEdgeColorEv
-__ZN7WebCore5Cache13getStatisticsEv
-__ZNK7WebCore23JSHTMLDocumentPrototype9classInfoEv
-__ZNK7WebCore17JSScreenPrototype9classInfoEv
-__ZNK7WebCore19JSDocumentPrototype9classInfoEv
-__ZN7WebCore12IconDatabase19pageURLMappingCountEv
-__ZN7WebCore12IconDatabase20retainedPageURLCountEv
-__ZN7WebCore12IconDatabase15iconRecordCountEv
-__ZN7WebCore12IconDatabase23iconRecordCountWithDataEv
-__ZN7WebCore12GCController17garbageCollectNowEv
--[WebCoreFrameBridge canSaveAsWebArchive]
-__ZN7WebCore29selectionContainsPossibleWordEPNS_5FrameE
-__ZNK7WebCore6Editor9canDeleteEv
--[WebCoreFrameBridge forceLayoutWithMinimumPageWidth:maximumPageWidth:adjustingViewSize:]
-__ZN7WebCore5Frame29forceLayoutWithPageWidthRangeEffb
--[WebCoreFrameBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]
-__ZN7WebCore5Frame16adjustPageHeightEPffff
-__ZN7WebCore18correctedTextColorENS_5ColorES0_
-__ZN7WebCore17differenceSquaredERKNS_5ColorES2_
-__ZN7WebCore15GraphicsContext21focusRingBoundingRectEv
-__ZN7WebCore12RenderObject13addPDFURLRectEPNS_15GraphicsContextENS_7IntRectE
-__ZN7WebCore15GraphicsContext13setURLForRectERKNS_4KURLERKNS_7IntRectE
-__ZN7WebCore38jsElementPrototypeFunctionHasAttributeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore7Element12hasAttributeERKNS_6StringE
-__ZNK7WebCore19HTMLOptGroupElement14groupLabelTextEv
-__ZNK7WebCore16DeprecatedString15stripWhiteSpaceEv
-__ZNK7WebCore16DeprecatedString18simplifyWhiteSpaceEv
-__ZN7WebCore22JSHTMLTableCellElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore20HTMLTableCellElement10setColSpanEi
-__ZN7WebCore44jsHTMLTableElementPrototypeFunctionInsertRowEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16HTMLTableElement9insertRowEiRi
-__ZNK7WebCore16HTMLTableElement8lastBodyEv
-__ZN7WebCore48jsHTMLTableRowElementPrototypeFunctionInsertCellEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19HTMLTableRowElement10insertCellEiRi
-__ZN7WebCore20HTMLTableCellElement8setAlignERKNS_6StringE
--[WebCoreResourceHandleAsDelegate connection:didReceiveAuthenticationChallenge:]
-__ZN7WebCore4coreEP28NSURLAuthenticationChallenge
-__ZN7WebCore23AuthenticationChallengeC1EP28NSURLAuthenticationChallenge
-__ZN7WebCore4coreEP20NSURLProtectionSpace
-__ZN7WebCore15ProtectionSpaceC1ERKNS_6StringEiNS_25ProtectionSpaceServerTypeES3_NS_35ProtectionSpaceAuthenticationSchemeE
-__ZN7WebCore4coreEP15NSURLCredential
-__ZN7WebCore10CredentialC1ERKNS_6StringES3_NS_21CredentialPersistenceE
-__ZN7WebCore14ResourceHandle33didReceiveAuthenticationChallengeERKNS_23AuthenticationChallengeE
-__ZN7WebCore14ResourceLoader33didReceiveAuthenticationChallengeEPNS_14ResourceHandleERKNS_23AuthenticationChallengeE
-__ZN7WebCore14ResourceLoader33didReceiveAuthenticationChallengeERKNS_23AuthenticationChallengeE
-__ZN7WebCore11FrameLoader33didReceiveAuthenticationChallengeEPNS_14ResourceLoaderERKNS_23AuthenticationChallengeE
-__ZN7WebCore3macERKNS_23AuthenticationChallengeE
--[WebCoreResourceHandleAsDelegate useCredential:forAuthenticationChallenge:]
-__ZN7WebCore14ResourceHandle18receivedCredentialERKNS_23AuthenticationChallengeERKNS_10CredentialE
-__ZN7WebCoreneERKNS_23AuthenticationChallengeES2_
-__ZN7WebCoreeqERKNS_23AuthenticationChallengeES2_
-__ZNK7WebCore23AuthenticationChallenge6isNullEv
-__ZNK7WebCore23AuthenticationChallenge15protectionSpaceEv
-__ZN7WebCoreeqERKNS_15ProtectionSpaceES2_
-__ZNK7WebCore15ProtectionSpace4hostEv
-__ZNK7WebCore15ProtectionSpace4portEv
-__ZNK7WebCore15ProtectionSpace10serverTypeEv
-__ZNK7WebCore15ProtectionSpace5realmEv
-__ZNK7WebCore15ProtectionSpace20authenticationSchemeEv
-__ZNK7WebCore23AuthenticationChallenge18proposedCredentialEv
-__ZN7WebCoreeqERKNS_10CredentialES2_
-__ZNK7WebCore10Credential4userEv
-__ZNK7WebCore10Credential8passwordEv
-__ZNK7WebCore10Credential11persistenceEv
-__ZNK7WebCore23AuthenticationChallenge20previousFailureCountEv
-__ZNK7WebCore23AuthenticationChallenge15failureResponseEv
-__ZN7WebCoreeqERKNS_16ResourceResponseES2_
-__ZNK7WebCore20ResourceResponseBase14httpStatusTextEv
-__ZN3WTFeqIN7WebCore6StringES2_NS1_15CaseFoldingHashENS_10HashTraitsIS2_EES5_EEbRKNS_7HashMapIT_T0_T1_T2_T3_EESE_
-__ZNK7WebCore23AuthenticationChallenge5errorEv
-__ZN7WebCore3macERKNS_10CredentialE
-__ZN7WebCore14PluginDocumentC1EPNS_17DOMImplementationEPNS_5FrameE
-__ZN7WebCore14PluginDocument15createTokenizerEv
-__ZNK7WebCore15PluginTokenizer12wantsRawDataEv
-__ZN7WebCore15PluginTokenizer12writeRawDataEPKci
-__ZN7WebCore15PluginTokenizer23createDocumentStructureEv
-__ZN7WebCore16HTMLEmbedElement6setSrcERKNS_6StringE
-__ZN7WebCore16HTMLEmbedElement7setTypeERKNS_6StringE
-__ZNK7WebCore14PluginDocument16isPluginDocumentEv
-__ZN7WebCore15PluginTokenizer6finishEv
-__ZN7WebCore15PluginTokenizerD1Ev
-__ZN7WebCore14DocumentLoader22cancelMainResourceLoadERKNS_13ResourceErrorE
-__ZN7WebCore14PluginDocumentD1Ev
-__ZNK7WebCore17HTMLIFrameElement5widthEv
-__ZNK7WebCore6Chrome12canTakeFocusENS_14FocusDirectionE
-__ZNK7WebCore6Chrome9takeFocusENS_14FocusDirectionE
-__ZN7WebCore18JSHTMLStyleElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore16HTMLStyleElement7setTypeERKNS_12AtomicStringE
-__ZNK7WebCore12RenderObject7isFrameEv
-__ZNK7WebCore14RenderFrameSet8edgeInfoEv
-__ZNK7WebCore14RenderFrameSet9canResizeERKNS_8IntPointE
-__ZNK7WebCore14RenderFrameSet12hitTestSplitERKNS0_8GridAxisEi
-__ZNK7WebCore17RenderTextControl12autosaveNameEv
-__ZN7WebCore15SearchPopupMenuC1EPNS_15PopupMenuClientE
-__ZN7WebCore15SearchPopupMenu18saveRecentSearchesERKNS_12AtomicStringERKN3WTF6VectorINS_6StringELm0EEE
-__ZN7WebCore11autosaveKeyERKNS_6StringE
-__ZN7WebCore8RenderBR22positionForCoordinatesEii
-__ZN7WebCore23JSHTMLOptionsCollection9setLengthEPN3KJS9ExecStateEPNS1_7JSValueE
-__ZN7WebCore21HTMLOptionsCollection9setLengthEjRi
-__ZN7WebCore17HTMLSelectElement9setLengthEjRi
-__ZN7WebCore17HTMLOptionElement18setDefaultSelectedEb
-__ZN7WebCore40jsHTMLInputElementPrototypeFunctionClickEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore11HTMLElement5clickEv
-__ZN7WebCore21JSDocumentConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore11HTMLElement3dirEv
-__ZNK7WebCore16HTMLInputElement3altEv
-__ZNK7WebCore12RenderObject24shouldPaintSelectionGapsEv
-__ZN7WebCore17HTMLScriptElement7setTextERKNS_6StringE
-__ZNK7WebCore28JSHTMLAnchorElementPrototype9classInfoEv
-__ZNK7WebCore17HTMLAnchorElement8hreflangEv
-__ZNK7WebCore17HTMLAnchorElement5shapeEv
-__ZNK7WebCore17HTMLAnchorElement3revEv
+__ZN7WebCoreL10toGeorgianEi
+__ZN3WTFeqINS_6RefPtrIN7WebCore16AtomicStringImplEEENS2_17CounterDirectivesENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS8_IS5_EEEEb
+__ZNK3WTF9HashTableINS_6RefPtrIN7WebCore16AtomicStringImplEEESt4pairIS4_NS2_17CounterDirectivesEENS_18PairFirstExtractorIS7_EEN
+__ZN7WebCoreeqERKNS_17CounterDirectivesES2_
+__ZN7WebCore21RenderObjectChildList18invalidateCountersEPNS_12RenderObjectE
+__ZN7WebCoreL29invalidateCountersInContainerEPNS_12RenderObjectE
+__ZN7WebCore13RenderCounter10invalidateEv
+__ZN7WebCore24jsHTMLMetaElementContentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLMetaElement7contentEv
+__ZN7WebCore9CSSParser13parseFillSizeEv
+__ZN7WebCore16CSSStyleSelector11mapFillSizeEPNS_9FillLayerEPNS_8CSSValueE
+__ZN7WebCore17jsDocumentDoctypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLTitleElement4textEv
+__ZN7WebCore24jsDocumentImplementationEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_17DOMImplementationE
+__ZN7WebCore19JSDOMImplementation15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSDOMImplementationC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17DOMImplementationEEE
+__ZN7WebCore19JSDOMImplementationC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17DOMImplementationEEE
+__ZN7WebCore19JSDOMImplementation18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28JSDOMImplementationPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore46jsDOMImplementationPrototypeFunctionHasFeatureEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore19JSDOMImplementation9classInfoEv
+__ZN7WebCore48jsDocumentPrototypeFunctionCreateEntityReferenceEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document21createEntityReferenceERKNS_6StringERi
+__ZN7WebCore27getExceptionCodeDescriptionEiRNS_24ExceptionCodeDescriptionE
+__ZN7WebCore13ExceptionBaseC2ERKNS_24ExceptionCodeDescriptionE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_16DOMCoreExceptionE
+__ZN7WebCore18JSDOMCoreException15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSDOMCoreExceptionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16DOMCoreExceptionEEE
+__ZN7WebCore18JSDOMCoreExceptionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16DOMCoreExceptionEEE
+__ZNK3JSC8JSObject22isNotAnObjectErrorStubEv
+__ZN7WebCore18JSDOMCoreException18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27JSDOMCoreExceptionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK3JSC8JSObject19isWatchdogExceptionEv
+__ZN7WebCore22jsDOMCoreExceptionCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12DocumentType19removedFromDocumentEv
+__ZThn8_N7WebCore12DocumentTypeD0Ev
+__ZN7WebCore18JSDOMCoreExceptionD1Ev
+__ZN7WebCore18JSDOMCoreExceptionD2Ev
+__ZN7WebCore19JSDOMImplementationD1Ev
+__ZN7WebCore19JSDOMImplementationD2Ev
+__ZThn8_N7WebCore16HTMLTitleElementD0Ev
+__ZN7WebCore27JSDOMCoreExceptionPrototypeD1Ev
+__ZN7WebCore28JSDOMImplementationPrototypeD1Ev
+__ZN7WebCore54jsDocumentPrototypeFunctionCreateProcessingInstructionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
+__ZN7WebCore8Document27createProcessingInstructionERKNS_6StringES3_Ri
+__ZNK7WebCore6JSAttr9classInfoEv
+__ZN7WebCore4Attr16childTypeAllowedENS_4Node8NodeTypeE
+__ZN7WebCore4Attr15childrenChangedEbPNS_4NodeES2_i
+__ZNK7WebCore4Node9nodeValueEv
+__ZN7WebCore45jsDocumentPrototypeFunctionCreateCDATASectionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document18createCDATASectionERKNS_6StringERi
+__ZN7WebCore16toJSNewlyCreatedEPN3JSC9ExecStateEPNS_12CDATASectionE
+__ZN7WebCore8Document9cloneNodeEb
+__ZN7WebCore18jsNodeNamespaceURIEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore50jsDOMImplementationPrototypeFunctionCreateDocumentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14toDocumentTypeEN3JSC7JSValueE
+__ZN7WebCore17DOMImplementation14createDocumentERKNS_6StringES3_PNS_12DocumentTypeERi
+__ZN7WebCore8Document15createElementNSERKNS_6StringES3_Ri
+__ZN7WebCore8Document26hasPrefixNamespaceMismatchERKNS_13QualifiedNameE
+__ZN7WebCore14JSDocumentType15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSDocumentTypeC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12DocumentTypeEEE
+__ZN7WebCore14JSDocumentTypeC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12DocumentTypeEEE
+__ZN7WebCore14JSDocumentType18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore8Document13createElementERKNS_12AtomicStringERi
+__ZN7WebCoreL15headConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore35jsNamedNodeMapPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore4Attr8nodeNameEv
+__ZNK7WebCore18JSHTMLTitleElement9classInfoEv
+__ZN7WebCore4Node26willMoveToNewOwnerDocumentEv
+__ZN7WebCore21updateDOMNodeDocumentEPNS_4NodeEPNS_8DocumentES3_
+__ZN7WebCore4Node25didMoveToNewOwnerDocumentEv
+__ZN7WebCore14JSDocumentTypeD1Ev
+__ZN7WebCore42jsDocumentPrototypeFunctionCreateAttributeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document15createAttributeERKNS_6StringERi
+__ZN7WebCore8Document17createAttributeNSERKNS_6StringES3_Rib
+__ZN7WebCore23JSDocumentTypePrototypeD1Ev
+__ZN7WebCore4Attr9cloneNodeEb
+__ZN7WebCore6JSAttr3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore4Attr12setNodeValueERKNS_6StringERi
+__ZN7WebCore4Attr8setValueERKNS_6StringERi
+__ZN7WebCore14setJSAttrValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore6JSAttr8setValueEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore32jsNodePrototypeFunctionNormalizeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4Node9normalizeEv
+__ZNK7WebCore4Node25traverseNextNodePostOrderEv
+__ZN7WebCore7Element19normalizeAttributesEv
+__ZN7WebCore8Document15textNodesMergedEPNS_4TextEj
+__ZN7WebCore4Node6removeERi
+__ZN7WebCore42jsCharacterDataPrototypeFunctionAppendDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore45jsCharacterDataPrototypeFunctionSubstringDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore43jsCharacterDataPrototypeFunctionReplaceDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore42jsCharacterDataPrototypeFunctionInsertDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13CharacterData11replaceDataEjjRKNS_6StringERi
+__ZNK7WebCore7Comment8nodeNameEv
+__ZNK7WebCore16DocumentFragment8nodeNameEv
+__ZN7WebCore18jsDocumentTypeNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore42jsElementPrototypeFunctionSetAttributeNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9JSElement16setAttributeNodeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore6toAttrEN3JSC7JSValueE
+__ZN7WebCore7Element16setAttributeNodeEPNS_4AttrERi
+__ZN7WebCore12NamedNodeMap12setNamedItemEPNS_4NodeERi
+__ZNK7WebCore4Attr15isAttributeNodeEv
+__ZN7WebCore45jsElementPrototypeFunctionRemoveAttributeNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Element19removeAttributeNodeEPNS_4AttrERi
+__ZN7WebCore43jsNamedNodeMapPrototypeFunctionSetNamedItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore46jsNamedNodeMapPrototypeFunctionRemoveNamedItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13StyledElement25didMoveToNewOwnerDocumentEv
+__ZNK7WebCore12DocumentType8nodeNameEv
+__ZN7WebCore4Node12setNodeValueERKNS_6StringERi
+__ZN7WebCore32jsTextPrototypeFunctionSplitTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4Text9splitTextEjRi
+__ZN7WebCore4Text9createNewEN3WTF10PassRefPtrINS_10StringImplEEE
+__ZN7WebCore8Document13textNodeSplitEPNS_4TextE
+__ZN7WebCore44jsDocumentPrototypeFunctionCreateAttributeNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore54jsDOMImplementationPrototypeFunctionCreateDocumentTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
+__ZN7WebCore17DOMImplementation18createDocumentTypeERKNS_6StringES3_S3_Ri
+__ZN7WebCore40jsElementPrototypeFunctionSetAttributeNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9JSElement14setAttributeNSEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13MutationEventC1Ev
+__ZN7WebCore13MutationEventC2Ev
+__ZNK7WebCore13MutationEvent15isMutationEventEv
+__ZN7WebCore15getDOMStructureINS_15JSMutationEventEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore15JSMutationEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSMutationEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13MutationEventEEE
+__ZN7WebCore15JSMutationEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13MutationEventEEE
+__ZN7WebCore15JSMutationEventD1Ev
+__ZN7WebCore7UIEventC1Ev
+__ZNK7WebCore5Event14isSVGZoomEventEv
+__ZN7WebCore15getDOMStructureINS_9JSUIEventEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore9JSUIEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7UIEventEEE
+__ZN7WebCore9JSUIEventD1Ev
+__ZN7WebCore24JSMutationEventPrototypeD1Ev
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14EventExceptionE
+__ZN7WebCore16JSEventException15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSEventExceptionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14EventExceptionEEE
+__ZN7WebCore16JSEventExceptionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14EventExceptionEEE
+__ZN7WebCore16JSEventException18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL24getJSEventExceptionTableEPN3JSC9ExecStateE
+__ZN7WebCore25JSEventExceptionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL33getJSEventExceptionPrototypeTableEPN3JSC9ExecStateE
+__ZN7WebCore16JSEventExceptionD1Ev
+__ZN7WebCore16JSEventExceptionD2Ev
+__ZN7WebCore20jsEventExceptionCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSEventExceptionPrototypeD1Ev
+__ZNK7WebCore15JSMutationEvent9classInfoEv
+__ZNK7WebCore9JSUIEvent9classInfoEv
+__ZN7WebCore15JSMutationEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24JSMutationEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement18containsJavaAppletEv
+__ZNK7WebCore17HTMLObjectElement4typeEv
+__ZN7WebCore17HTMLObjectElement21renderFallbackContentEv
+__ZN7WebCore28jsHTMLAnchorElementAccessKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement9accessKeyEv
+__ZN7WebCore26jsHTMLAnchorElementCharsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore17HTMLAnchorElement7charsetEv
+__ZN7WebCore25jsHTMLAnchorElementCoordsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore17HTMLAnchorElement6coordsEv
-__ZNK7WebCore17HTMLAnchorElement9accessKeyEv
-__ZNK7WebCore17HTMLAnchorElement4portEv
-__ZN7WebCore16DeprecatedString6numberEi
-__ZN7WebCore16DeprecatedString6setNumEi
-__ZN7WebCore16DeprecatedString6formatEPKcz
-__ZNK7WebCore11HTMLElement9outerHTMLEv
-__ZNK7WebCore11HTMLElement4langEv
-__ZNK7WebCore11HTMLElement15contentEditableEv
-__ZNK7WebCore7Element9outerTextEv
-__ZN7WebCore7Element9clientTopEv
-__ZN7WebCore7Element10clientLeftEv
-__ZNK7WebCore4Node9nodeValueEv
-__ZNK7WebCore7Element6prefixEv
-__ZN7WebCore11FrameLoader21reportLocalLoadFailedEPKNS_4PageERKNS_6StringE
-__ZNK7WebCore11FrameLoader23isHostedByObjectElementEv
-__ZN3KJS38jsXMLHttpRequestPrototypeFunctionAbortEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore18JSHTMLTableElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore16HTMLTableElement14setCellSpacingERKNS_6StringE
-__ZN7WebCore16HTMLTableElement14setCellPaddingERKNS_6StringE
-__ZN7WebCore20setTableCellsChangedEPNS_4NodeE
-__ZN7WebCore15HTMLFormElement16setAcceptCharsetERKNS_6StringE
-__ZN7WebCore37jsDocumentPrototypeFunctionImportNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document10importNodeEPNS_4NodeEbRi
-__ZN7WebCore16HTMLInputElement26copyNonAttributePropertiesEPKNS_7ElementE
-__ZN7WebCore37jsHTMLCollectionPrototypeFunctionItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16JSHTMLCollection4itemEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore17HTMLScriptElement8setDeferEb
-__ZN7WebCore34jsElementPrototypeFunctionContainsEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore27jsHTMLAnchorElementHreflangEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement8hreflangEv
+__ZN7WebCore22jsHTMLAnchorElementRevEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement3revEv
+__ZN7WebCore24jsHTMLAnchorElementShapeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement5shapeEv
+__ZNK7WebCore17HTMLAnchorElement8tabIndexEv
+__ZN7WebCore8Document18focusedNodeRemovedEv
+__ZN7WebCore24jsHTMLAppletElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLPlugInElement5alignEv
+__ZN7WebCore17HTMLAppletElement19removedFromDocumentEv
+__ZThn8_N7WebCore17HTMLAppletElementD0Ev
+__ZN7WebCore22jsHTMLAppletElementAltEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAppletElement3altEv
+__ZN7WebCore26jsHTMLAppletElementArchiveEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAppletElement7archiveEv
+__ZN7WebCore23jsHTMLAppletElementCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAppletElement4codeEv
+__ZN7WebCore27jsHTMLAppletElementCodeBaseEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAppletElement8codeBaseEv
+__ZN7WebCore25jsHTMLAppletElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLPlugInElement6heightEv
+__ZN7WebCore25jsHTMLAppletElementHspaceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAppletElement6hspaceEv
+__ZN7WebCore23jsHTMLAppletElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLAppletElementVspaceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAppletElement6vspaceEv
+__ZN7WebCore24jsHTMLAppletElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLPlugInElement5widthEv
+__ZN7WebCore25jsHTMLAppletElementObjectEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAppletElement6objectEv
+__ZN7WebCore26jsHTMLAreaElementAccessKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLAreaElement9accessKeyEv
+__ZN7WebCore20jsHTMLAreaElementAltEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLAreaElement3altEv
+__ZN7WebCore23jsHTMLAreaElementCoordsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLAreaElement6coordsEv
+__ZN7WebCore21jsHTMLAreaElementHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLAreaElementNoHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLAreaElement6noHrefEv
+__ZN7WebCore22jsHTMLAreaElementShapeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLAreaElement5shapeEv
+__ZN7WebCore23jsHTMLAreaElementTargetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLAreaElement6targetEv
+__ZN7WebCore20jsHTMLBRElementClearEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13HTMLBRElement5clearEv
+__ZN7WebCoreL28createHTMLBaseElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore17JSHTMLBaseElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSHTMLBaseElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLBaseElementEEE
+__ZN7WebCore17JSHTMLBaseElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLBaseElementEEE
+__ZN7WebCore17JSHTMLBaseElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore21jsHTMLBaseElementHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15HTMLBaseElement19removedFromDocumentEv
+__ZN7WebCore17JSHTMLBaseElementD1Ev
+__ZThn8_N7WebCore15HTMLBaseElementD0Ev
+__ZNK7WebCore12RenderObject7isFrameEv
+__ZN7WebCore23jsHTMLBaseElementTargetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLBaseElement6targetEv
+__ZN7WebCore19HTMLFrameSetElement11recalcStyleENS_4Node11StyleChangeE
+__ZN7WebCore26JSHTMLBaseElementPrototypeD1Ev
+__ZN7WebCoreL32createHTMLBaseFontElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore21JSHTMLBaseFontElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSHTMLBaseFontElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLBaseFontElementEEE
+__ZN7WebCore21JSHTMLBaseFontElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLBaseFontElementEEE
+__ZN7WebCore21JSHTMLBaseFontElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore26jsHTMLBaseFontElementColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLBaseFontElement5colorEv
+__ZN7WebCore21JSHTMLBaseFontElementD1Ev
+__ZThn8_N7WebCore19HTMLBaseFontElementD0Ev
+__ZN7WebCore25jsHTMLBaseFontElementFaceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLBaseFontElement4faceEv
+__ZN7WebCore30JSHTMLBaseFontElementPrototypeD1Ev
+__ZN7WebCore25jsHTMLBaseFontElementSizeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLBaseFontElement4sizeEv
+__ZN7WebCore22jsHTMLBodyElementALinkEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLBodyElement5aLinkEv
+__ZN7WebCore27jsHTMLBodyElementBackgroundEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsHTMLBodyElementBgColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLBodyElement7bgColorEv
+__ZN7WebCore21jsHTMLBodyElementLinkEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14CachedResource18destroyDecodedDataEv
+__ZN7WebCore24JSMimeTypeArrayPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZThn8_N7WebCore17HTMLObjectElementD0Ev
+__ZThn8_N7WebCore16HTMLParamElementD0Ev
+__ZN7WebCore24setJSHTMLMetaElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLMetaElement7setNameERKNS_6StringE
+__ZN7WebCore27setJSHTMLMetaElementContentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLMetaElement10setContentERKNS_6StringE
+__ZN7WebCore26jsHTMLMetaElementHttpEquivEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLMetaElement9httpEquivEv
+__ZN7WebCore12RenderButton28removeLeftoverAnonymousBlockEPNS_11RenderBlockE
+__ZN7WebCore9FrameView23removeSlowRepaintObjectEv
+__ZN7WebCore5XPathL12createFunNotEv
+__ZNK7WebCore5XPath6FunNot8evaluateEv
+__ZN7WebCore5XPath6FunNotD0Ev
+__ZN7WebCore5XPath8FunctionD2Ev
+__ZN7WebCore21jsHTMLBodyElementTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLBodyElement4textEv
+__ZN7WebCore22jsHTMLBodyElementVLinkEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsNodePrototypeFunctionIsSupportedEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4Node11isSupportedERKNS_6StringES3_
+__ZN3JSC8Bindings12ObjcInstance12virtualBeginEv
+__ZNK3JSC8Bindings12ObjcInstance8getClassEv
+__ZN3JSC8Bindings9ObjcClass11classForIsAEP10objc_class
+__ZN3JSC8Bindings9ObjcClassC1EP10objc_class
+__ZN3JSC8Bindings9ObjcClassC2EP10objc_class
+__ZNK3JSC8Bindings9ObjcClass10fieldNamedERKNS_10IdentifierEPNS0_8InstanceE
+__ZNK3JSC8Bindings9ObjcClass12methodsNamedERKNS_10IdentifierEPNS0_8InstanceE
+__ZN3JSC8Bindings25convertJSMethodNameToObjcEPKcPcm
+__ZN3JSC8Bindings10ObjcMethodC1EP10objc_classP13objc_selector
+__ZN3JSC8Bindings10ObjcMethodC2EP10objc_classP13objc_selector
+__ZN3JSC8Bindings12ObjcInstance10virtualEndEv
+__ZN3JSC8Bindings12ObjcInstance12invokeMethodEPNS_9ExecStateERKN3WTF6VectorIPNS0_6MethodELm0EEERKNS_7ArgListE
+__ZN3JSC8Bindings12ObjcInstance18setGlobalExceptionEP8NSStringPNS_14JSGlobalObjectE
+__ZNK3JSC8Bindings10ObjcMethod18getMethodSignatureEv
+__ZN3JSC8Bindings20objcValueTypeForTypeEPKc
+__ZN3JSC8Bindings23convertValueToObjcValueEPNS_9ExecStateENS_7JSValueENS0_13ObjcValueTypeE
++[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]
+__ZN3JSC8Bindings23convertNSStringToStringEPNS_9ExecStateEP8NSString
+__ZN3JSC8Bindings12ObjcInstance30moveGlobalExceptionToExecStateEPNS_9ExecStateE
+__ZNK7WebCore14RenderThemeMac22adjustSliderTrackStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZN7WebCore12RenderSliderC1EPNS_16HTMLInputElementE
+__ZN7WebCore12RenderSliderC2EPNS_16HTMLInputElementE
+__ZN7WebCore12RenderSlider14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore12RenderSlider17updateFromElementEv
+__ZN7WebCore11SliderRangeC1EPNS_16HTMLInputElementE
+__ZN7WebCore11SliderRangeC2EPNS_16HTMLInputElementE
+__ZN7WebCore11SliderRange16valueFromElementEPNS_16HTMLInputElementEPb
+__ZN7WebCore11SliderRange10clampValueEd
+__ZN7WebCore18SliderThumbElementC1EPNS_8DocumentEPNS_4NodeE
+__ZN7WebCore18SliderThumbElementC2EPNS_8DocumentEPNS_4NodeE
+__ZN7WebCore12RenderSlider16createThumbStyleEPKNS_11RenderStyleE
+__ZNK7WebCore14RenderThemeMac22adjustSliderThumbStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZN7WebCore17RenderFlexibleBoxC1EPNS_4NodeE
+__ZN7WebCore11RenderBlock23deleteEllipsisLineBoxesEv
+__ZN7WebCore11RenderBlock25checkLinesForTextOverflowEv
+__ZN7WebCore12RenderSlider6layoutEv
+__ZNK7WebCore14RenderThemeMac21adjustSliderThumbSizeEPNS_12RenderObjectE
+__ZN7WebCore12RenderSlider14calcPrefWidthsEv
+__ZNK7WebCore18SliderThumbElement12isShadowNodeEv
+__ZN7WebCore18SliderThumbElement16shadowParentNodeEv
+__ZNK7WebCore12RenderSlider16baselinePositionEbb
+__ZN7WebCore17RenderFlexibleBox17layoutVerticalBoxEb
+__ZN7WebCore11RenderBlock30markPositionedObjectsForLayoutEv
+__ZN7WebCore11RenderBlock15clearTruncationEv
+__ZN7WebCoreL16shouldCheckLinesEPNS_12RenderObjectE
+__ZN7WebCore13RootInlineBox22canAccommodateEllipsisEbiii
+__ZN7WebCore11RenderBlock9lineCountEv
+__ZN7WebCore13InlineFlowBox22canAccommodateEllipsisEbii
+__ZN7WebCore9InlineBox22canAccommodateEllipsisEbii
+__ZN7WebCore13RootInlineBox13placeEllipsisERKNS_12AtomicStringEbiiiPNS_9InlineBoxE
+__ZN3WTF7HashMapIPKN7WebCore13RootInlineBoxEPNS1_11EllipsisBoxENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3addERKS4_RKS6_
+__ZN3WTF9HashTableIPKN7WebCore13RootInlineBoxESt4pairIS4_PNS1_11EllipsisBoxEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS4_EENS_1
+__ZN7WebCore13RootInlineBox16placeEllipsisBoxEbiiiRb
+__ZN7WebCore13InlineFlowBox16placeEllipsisBoxEbiiiRb
+__ZN7WebCore13InlineTextBox16placeEllipsisBoxEbiiiRb
+__ZN3WTF7HashMapIPKN7WebCore13RootInlineBoxEPNS1_11EllipsisBoxENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE4takeERKS4_
+__ZN7WebCore11EllipsisBoxD0Ev
+__ZN7WebCore10ScrollView36adjustScrollbarsAvoidingResizerCountEi
+__ZN7WebCore9FrameView14invalidateRectERKNS_7IntRectE
+__ZN7WebCore6Chrome7repaintERKNS_7IntRectEbbb
+__ZN7WebCore14RenderThemeMac16paintSliderTrackEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCoreL24TrackGradientInterpolateEPvPKdPd
+__ZNK7WebCore12RenderSlider8isSliderEv
+__ZN7WebCore14RenderThemeMac16paintSliderThumbEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZNK7WebCore14RenderThemeMac21sliderThumbHorizontalEv
+__ZNK7WebCore12RenderSlider10inDragModeEv
+__ZN7WebCore15ActiveDOMObject7suspendEv
+__ZN7WebCore23jsHTMLButtonElementFormEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsHTMLButtonElementAccessKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLButtonElement9accessKeyEv
+__ZN7WebCore27jsHTMLButtonElementDisabledEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLButtonElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore22HTMLFormControlElement8tabIndexEv
+__ZN7WebCore23jsHTMLButtonElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLButtonElement15formControlTypeEv
+__ZN7WebCore24jsHTMLButtonElementValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLButtonElement5valueEv
+__ZN7WebCore22jsHTMLTableElementRowsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16HTMLTableElement4rowsEv
+__ZN7WebCore23HTMLTableRowsCollection6createEN3WTF10PassRefPtrINS_16HTMLTableElementEEE
+__ZN7WebCore23HTMLTableRowsCollectionC1EN3WTF10PassRefPtrINS_16HTMLTableElementEEE
+__ZN7WebCore23HTMLTableRowsCollectionC2EN3WTF10PassRefPtrINS_16HTMLTableElementEEE
+__ZN7WebCore37jsHTMLCollectionPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16JSHTMLCollection9classInfoEv
+__ZN7WebCore16JSHTMLCollection4itemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore23HTMLTableRowsCollection9itemAfterEPNS_7ElementE
+__ZN7WebCore23HTMLTableRowsCollection8rowAfterEPNS_16HTMLTableElementEPNS_19HTMLTableRowElementE
+__ZN7WebCore29jsHTMLTableRowElementRowIndexEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableRowElement8rowIndexEv
+__ZN7WebCore23HTMLTableRowsCollectionD0Ev
+__ZN7WebCore42jsHTMLCollectionPrototypeFunctionNamedItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSHTMLCollection9namedItemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCoreL8isInHeadEPNS_7ElementE
+__ZN7WebCore44jsHTMLTableElementPrototypeFunctionInsertRowEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16HTMLTableElement9insertRowEiRi
+__ZN7WebCore16textBreakCurrentEPNS_17TextBreakIteratorE
+__ZN7WebCore37jsPluginArrayPrototypeFunctionRefreshEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore13JSPluginArray9classInfoEv
+__ZN7WebCore11PluginArray7refreshEb
+__ZN7WebCore4Page14refreshPluginsEb
+__ZN7WebCore10PluginData7refreshEv
+__ZN7WebCore19CachedCSSStyleSheet11setEncodingERKNS_6StringE
+__ZN7WebCoreL38min_device_pixel_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL34device_pixel_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore12compareValueIfEEbT_S1_NS_18MediaFeaturePrefixE
+__ZN7WebCoreL20directoryConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore20HTMLDirectoryElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore20HTMLDirectoryElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZNK7WebCore20HTMLDirectoryElement17endTagRequirementEv
__ZNK7WebCore20HTMLDirectoryElement11tagPriorityEv
-__ZN7WebCore17JSHTMLBodyElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore15HTMLBodyElement12setScrollTopEi
-__ZN7WebCore43jsHTMLTextAreaElementPrototypeFunctionFocusEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19HTMLTextAreaElement17setSelectionStartEi
-__ZN7WebCore17RenderTextControl17setSelectionStartEi
-__ZN7WebCore19HTMLTextAreaElement15setSelectionEndEi
-__ZN7WebCore17RenderTextControl15setSelectionEndEi
-__ZN7WebCore19HTMLTextAreaElement21updateFocusAppearanceEb
-__ZN7WebCore19HTMLTextAreaElement17setSelectionRangeEii
-__ZN7WebCore23getUniqueBoundaryStringERN3WTF6VectorIcLm0EEE
-__ZN7WebCore12randomNumberEv
+__ZN7WebCoreL33createHTMLDirectoryElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore22JSHTMLDirectoryElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSHTMLDirectoryElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_20HTMLDirectoryElementEEE
+__ZN7WebCore22JSHTMLDirectoryElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_20HTMLDirectoryElementEEE
+__ZN7WebCore22JSHTMLDirectoryElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore29jsHTMLDirectoryElementCompactEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLDirectoryElement7compactEv
+__ZN7WebCore22JSHTMLDirectoryElementD1Ev
+__ZThn8_N7WebCore20HTMLDirectoryElementD0Ev
+__ZN7WebCore20HTMLDirectoryElementD0Ev
+__ZN7WebCore21jsHTMLDivElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14HTMLDivElement5alignEv
+__ZN7WebCore31JSHTMLDirectoryElementPrototypeD1Ev
+__ZN7WebCore25jsHTMLDListElementCompactEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLDListElement7compactEv
+__ZN7WebCore30jsHTMLIFrameElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLIFrameElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSHTMLIFrameElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23jsHTMLFormElementActionEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL30createHTMLLegendElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLLegendElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLLegendElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLLegendElementEEE
+__ZN7WebCore19JSHTMLLegendElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLLegendElementEEE
+__ZN7WebCore19JSHTMLLegendElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19JSHTMLLegendElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore30JSHTMLIFrameElementConstructorD1Ev
+__ZN7WebCore19JSHTMLLegendElementD1Ev
+__ZN7WebCore28JSHTMLLegendElementPrototypeD1Ev
+__ZN7WebCore17jsDocumentAnchorsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8Document7anchorsEv
+__ZNK7WebCore14RenderThemeMac35adjustSearchFieldResultsButtonStyleEPNS_16CSSStyleSelectorEPNS_11RenderStyleEPNS_7ElementE
+__ZN7WebCore23jsHTMLSelectElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30setJSHTMLButtonElementDisabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore26jsHTMLInputElementDisabledEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn8_N7WebCore14HTMLMapElementD0Ev
+__ZN7WebCore14RenderThemeMac29paintSearchFieldResultsButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZNK7WebCore14RenderThemeMac18searchMenuTemplateEv
+__ZNK7WebCore13HTMLTokenizer15executingScriptEv
+__ZN7WebCore22jsHTMLTitleElementTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsHTMLDocumentHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12HTMLDocument6heightEv
+__ZN7WebCore19jsHTMLDocumentWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12HTMLDocument5widthEv
+__ZN7WebCore20jsHTMLDocumentEmbedsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8Document6embedsEv
+__ZN7WebCore26jsHTMLImageElementCompleteEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement8completeEv
+__ZN7WebCore30jsHTMLImageElementNaturalWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement12naturalWidthEv
+__ZN7WebCore21jsHTMLDocumentPluginsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8Document7pluginsEv
+__ZN7WebCore20jsNavigatorVendorSubEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13NavigatorBase9vendorSubEv
+__ZN7WebCore17jsScreenAvailLeftEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Screen9availLeftEv
+__ZN7WebCore16jsScreenAvailTopEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Screen8availTopEv
+__ZN7WebCore14XMLHttpRequest24loadRequestSynchronouslyERNS_15ResourceRequestERi
+__ZN7WebCore16ThreadableLoader25loadResourceSynchronouslyEPNS_22ScriptExecutionContextERKNS_15ResourceRequestERNS_22ThreadableL
+__ZN7WebCore24DocumentThreadableLoader25loadResourceSynchronouslyEPNS_8DocumentERKNS_15ResourceRequestERNS_22ThreadableLoaderCl
+__ZN7WebCore11FrameLoader25loadResourceSynchronouslyERKNS_15ResourceRequestENS_17StoredCredentialsERNS_13ResourceErrorERNS_16Re
+__ZN7WebCore19ResourceRequestBase18setTimeoutIntervalEd
+__ZN7WebCore14ResourceHandle25loadResourceSynchronouslyERKNS_15ResourceRequestENS_17StoredCredentialsERNS_13ResourceErrorERNS_1
++[WebCoreSynchronousLoader loadRequest:allowStoredCredentials:returningResponse:error:]
+-[WebCoreSynchronousLoader _isDone]
+-[WebCoreSynchronousLoader connection:willSendRequest:redirectResponse:]
+-[WebCoreSynchronousLoader connectionShouldUseCredentialStorage:]
+-[WebCoreSynchronousLoader connection:didReceiveResponse:]
+-[WebCoreSynchronousLoader connection:didReceiveData:]
+-[WebCoreSynchronousLoader connectionDidFinishLoading:]
+-[WebCoreSynchronousLoader _data]
+-[WebCoreSynchronousLoader _response]
+-[WebCoreSynchronousLoader _error]
+-[WebCoreSynchronousLoader dealloc]
+__ZN3WTF6RefPtrIN7WebCore10StringImplEEaSERKS3_
+__ZN7WebCore16ResourceResponseD2Ev
+__ZN7WebCore29setJSDOMWindowTextConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20jsDOMWindowOnkeydownEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow9onkeydownEv
+__ZN7WebCore23setJSDOMWindowOnkeydownEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow12setOnkeydownEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore27jsHTMLInputElementMaxLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLInputElement9maxLengthEv
+__ZN7WebCore13jsNodeOnkeyupEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node7onkeyupEv
+__ZN7WebCoreL25min_widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL21widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore16CSSStyleSelector36addViewportDependentMediaQueryResultEPKNS_13MediaQueryExpEb
+__ZN3WTF6VectorIPN7WebCore16MediaQueryResultELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore16MediaQueryResultELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore16MediaQueryResultELm0EE15reserveCapacityEm
+__ZThn8_N7WebCore15HTMLHeadElementD0Ev
+__ZN7WebCore21jsHTMLLinkElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLLinkElement4typeEv
+__ZN7WebCore23jsHTMLScriptElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLScriptElement4typeEv
+__ZN7WebCore16DocumentFragment9cloneNodeEb
+__ZNK7WebCore26CSSMutableStyleDeclaration10get4ValuesEPKi
+__ZN7WebCore14RenderListItem16setExplicitValueEi
+__ZN7WebCore14RenderListItem20explicitValueChangedEv
+__ZN7WebCore10HTMLParser23noembedCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN3WTF6VectorIPN7WebCore16MediaQueryResultELm0EE6shrinkEm
+__ZN7WebCore5Cache18revalidationFailedEPNS_14CachedResourceE
+__ZN7WebCore9FrameView20postLayoutTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore14CachedResource19httpStatusCodeErrorEv
+__ZN7WebCore19CachedCSSStyleSheet5errorEv
+__ZN7WebCore31setJSHTMLAnchorElementAccessKeyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement12setAccessKeyERKNS_12AtomicStringE
+__ZN7WebCore21setJSDOMWindowConsoleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCoreL19optgroupConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore19HTMLOptGroupElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore19HTMLOptGroupElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore19HTMLOptGroupElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore19HTMLOptGroupElement19recalcSelectOptionsEv
+__ZN7WebCore19HTMLOptGroupElement6attachEv
+__ZN7WebCore19HTMLOptGroupElement14setRenderStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
+__ZN7WebCore19HTMLOptGroupElement8checkDTDEPKNS_4NodeE
+__ZN7WebCore19HTMLOptGroupElement15childrenChangedEbPNS_4NodeES2_i
+__ZNK7WebCore19HTMLOptGroupElement22nonRendererRenderStyleEv
+__ZN7WebCore25jsHTMLFieldSetElementFormEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn8_N7WebCore19HTMLFieldSetElementD0Ev
+__ZN7WebCore22jsHTMLFontElementColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLFontElement5colorEv
+__ZN7WebCore12CachedScript5errorEv
+__ZThn8_N7WebCore15HTMLFontElementD0Ev
+__ZN7WebCore21jsHTMLFontElementFaceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLFontElement4faceEv
+__ZN7WebCore21jsHTMLFontElementSizeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLFontElement4sizeEv
+__ZN7WebCore10StringImpl37createStrippingNullCharactersSlowCaseEPKtj
+__ZThn112_N7WebCore17HTMLScriptElement18dispatchErrorEventEv
+__ZN7WebCore17HTMLScriptElement18dispatchErrorEventEv
+__ZN7WebCore30jsHTMLFormElementAcceptCharsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsHTMLFormElementEnctypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20setJSNodeTextContentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore23jsHTMLFormElementTargetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLFormElement6targetEv
+__ZN7WebCoreL15compareBoxStartEPKNS_13InlineTextBoxES2_
+__ZSt25__unguarded_linear_insertIPPN7WebCore13InlineTextBoxES2_PFbPKS1_S5_EEvT_T0_T1_
+__ZN7WebCore19HTMLTextAreaElement5resetEv
__ZN7WebCore19HTMLTextAreaElement14appendFormDataERNS_12FormDataListEb
-__ZN7WebCore17DeprecatedCStringaSEPKc
-__ZN7WebCore9ArrayImpl9duplicateEPKvm
-__ZN7WebCore44jsHTMLTableElementPrototypeFunctionDeleteRowEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16HTMLTableElement9deleteRowEiRi
-__ZN7WebCore4Node6removeERi
-__ZNK7WebCore21JSHTMLTableColElement9classInfoEv
-__ZN7WebCore20HTMLTableCellElement9setVAlignERKNS_6StringE
-__ZN7WebCore16HTMLTableElement9setBorderERKNS_6StringE
-__ZN7WebCore21JSHTMLTableRowElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore19HTMLTableRowElement8setAlignERKNS_6StringE
-__ZN7WebCore16HTMLTableElement7tBodiesEv
-__ZN7WebCore19HTMLTableRowElement9setVAlignERKNS_6StringE
-__ZN7WebCore16HTMLTableElement8setWidthERKNS_6StringE
-__ZN7WebCore16HTMLTableElement8setAlignERKNS_6StringE
+__ZN7WebCoreL29createHTMLFrameElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLFrameElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLFrameElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLFrameElementEEE
+__ZN7WebCore18JSHTMLFrameElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLFrameElementEEE
+__ZN7WebCore18JSHTMLFrameElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore29jsHTMLFrameElementFrameBorderEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLFrameElementBase11frameBorderEv
+__ZN7WebCore18JSHTMLFrameElementD1Ev
+__ZThn8_N7WebCore16HTMLFrameElementD0Ev
+__ZN7WebCore26jsHTMLFrameElementLongDescEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLFrameElementBase8longDescEv
+__ZN7WebCore27JSHTMLFrameElementPrototypeD1Ev
+__ZN7WebCore30jsHTMLFrameElementMarginHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLFrameElementBase12marginHeightEv
+__ZN7WebCore29jsHTMLFrameElementMarginWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLFrameElementBase11marginWidthEv
+__ZN7WebCore22jsHTMLFrameElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsHTMLFrameElementNoResizeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsHTMLFrameElementScrollingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLFrameElementBase9scrollingEv
+__ZN7WebCore21jsHTMLFrameElementSrcEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsHTMLFrameElementContentDocumentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN3WTF6VectorIN7WebCore18CoreTextController11CoreTextRunELm16EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIN7WebCore18CoreTextController11CoreTextRunELm16EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore18CoreTextController11CoreTextRunELm16EE15reserveCapacityEm
+__ZN7WebCoreL32createHTMLFrameSetElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore21JSHTMLFrameSetElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSHTMLFrameSetElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLFrameSetElementEEE
+__ZN7WebCore21JSHTMLFrameSetElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLFrameSetElementEEE
+__ZN7WebCore21JSHTMLFrameSetElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore21JSHTMLFrameSetElement18canGetItemsForNameEPN3JSC9ExecStateEPNS_19HTMLFrameSetElementERKNS1_10IdentifierE
+__ZN7WebCore11HTMLElement8childrenEv
+__ZNK7WebCore14HTMLCollection9namedItemERKNS_12AtomicStringE
+__ZNK7WebCore14HTMLCollection17checkForNameMatchEPNS_7ElementEbRKNS_12AtomicStringE
+__ZN7WebCore25jsHTMLFrameSetElementColsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLFrameSetElement4colsEv
+__ZN7WebCore21JSHTMLFrameSetElementD1Ev
+__ZThn8_N7WebCore19HTMLFrameSetElementD0Ev
+__ZN7WebCore25jsHTMLFrameSetElementRowsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLFrameSetElement4rowsEv
+__ZN7WebCore30JSHTMLFrameSetElementPrototypeD1Ev
+__ZN7WebCore20jsHTMLHRElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13HTMLHRElement5alignEv
+__ZThn8_N7WebCore13HTMLHRElementD0Ev
+__ZN7WebCore22jsHTMLHRElementNoShadeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13HTMLHRElement7noShadeEv
+__ZNK7WebCore11RenderBlock16leftmostPositionEbb
+__ZNK7WebCore9RenderBox16leftmostPositionEbb
+__ZN7WebCore19jsHTMLHRElementSizeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13HTMLHRElement4sizeEv
+__ZSt21__unguarded_partitionIPPN7WebCore13InlineTextBoxES2_PFbPKS1_S5_EET_S8_S8_T0_T1_
+__ZN7WebCore20jsHTMLHRElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13HTMLHRElement5widthEv
+__ZN7WebCore24jsHTMLHeadElementProfileEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLHeadElement7profileEv
+__ZN7WebCore25jsHTMLHeadingElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore18HTMLHeadingElement5alignEv
+__ZN7WebCore24jsHTMLHtmlElementVersionEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLHtmlElement7versionEv
+__ZN7WebCore24jsHTMLIFrameElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLIFrameElement5alignEv
+__ZN3WTF6VectorISt4pairIPtjELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorISt4pairIPtjELm0EE14expandCapacityEm
+__ZN3WTF6VectorISt4pairIPtjELm0EE15reserveCapacityEm
+__ZN3WTF6VectorISt4pairIPtjELm0EE6shrinkEm
+__ZN7WebCore30jsHTMLIFrameElementFrameBorderEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsHTMLElementOuterHTMLEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11HTMLElement9outerHTMLEv
+__ZN7WebCore27jsHTMLIFrameElementLongDescEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsHTMLIFrameElementMarginWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsHTMLIFrameElementMarginHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsHTMLIFrameElementScrollingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsHTMLIFrameElementContentDocumentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsHTMLImageElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement4nameEv
+__ZN7WebCore23jsHTMLImageElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement5alignEv
+__ZN7WebCore24jsHTMLImageElementBorderEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement6borderEv
+__ZN7WebCore24jsHTMLImageElementHspaceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement6hspaceEv
+__ZN7WebCore23jsHTMLImageElementIsMapEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement5isMapEv
+__ZN7WebCore26jsHTMLImageElementLongDescEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement8longDescEv
+__ZN7WebCore24jsHTMLImageElementUseMapEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsHTMLImageElementVspaceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement6vspaceEv
+__ZN7WebCore10StringImpl6secureEt
+__ZN7WebCore30jsHTMLInputElementDefaultValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLInputElement12defaultValueEv
+__ZN7WebCore32jsHTMLInputElementDefaultCheckedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLInputElement14defaultCheckedEv
+__ZN7WebCore24jsHTMLInputElementAcceptEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLInputElement6acceptEv
+__ZN7WebCore27jsHTMLInputElementAccessKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLInputElement9accessKeyEv
+__ZN7WebCore23jsHTMLInputElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLInputElement5alignEv
+__ZN7WebCore21jsHTMLInputElementAltEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLInputElement3altEv
+__ZN7WebCore26jsHTMLInputElementReadOnlyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsHTMLInputElementSizeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsHTMLInputElementSrcEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsHTMLInputElementUseMapEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLInputElement6useMapEv
+__ZN7WebCore40jsHTMLInputElementPrototypeFunctionClickEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11HTMLElement5clickEv
+__ZNK7WebCore19CheckedRadioButtons21checkedButtonForGroupERKNS_12AtomicStringE
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPNS1_16HTMLInputElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERK
+__ZN7WebCore10HTMLParser23isindexCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
+__ZN7WebCore10HTMLParser13handleIsindexEPNS_5TokenE
+__ZN7WebCore18HTMLIsIndexElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore18HTMLIsIndexElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore16HTMLInputElement14setDefaultNameERKNS_12AtomicStringE
+__ZN7WebCore18HTMLIsIndexElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore27searchableIndexIntroductionEv
+__ZN7WebCoreL31createHTMLIsIndexElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore20JSHTMLIsIndexElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSHTMLIsIndexElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18HTMLIsIndexElementEEE
+__ZN7WebCore20JSHTMLIsIndexElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18HTMLIsIndexElementEEE
+__ZN7WebCore20JSHTMLIsIndexElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore26jsHTMLIsIndexElementPromptEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore18HTMLIsIndexElement6promptEv
+__ZN7WebCore24jsHTMLIsIndexElementFormEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18HTMLIsIndexElementD0Ev
+__ZN7WebCore20JSHTMLIsIndexElementD1Ev
+__ZThn8_N7WebCore18HTMLIsIndexElementD0Ev
+__ZN7WebCore29JSHTMLIsIndexElementPrototypeD1Ev
+__ZN7WebCore22jsHTMLLabelElementFormEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsHTMLLabelElementAccessKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLLabelElement9accessKeyEv
+__ZN7WebCore33jsDOMWindowPrototypeFunctionCloseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow5closeEv
+__ZNK7WebCore11FrameLoader11openedByDOMEv
+__ZN7WebCore5Frame13scheduleCloseEv
+__ZN7WebCore6Chrome15closeWindowSoonEv
+__ZN7WebCore25jsHTMLLabelElementHtmlForEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLLabelElement7htmlForEv
+__ZN7WebCore23jsHTMLLegendElementFormEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn8_N7WebCore17HTMLLegendElementD0Ev
+__ZN7WebCore28jsHTMLLegendElementAccessKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLLegendElement9accessKeyEv
+__ZN7WebCore24jsHTMLLegendElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLLegendElement5alignEv
+__ZN7WebCore25jsHTMLLinkElementDisabledEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLLinkElement8disabledEv
+__ZN7WebCore24jsHTMLLinkElementCharsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLLinkElement7charsetEv
+__ZN7WebCore19HTMLOptGroupElement6detachEv
+__ZN7WebCore25jsHTMLLinkElementHreflangEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLLinkElement8hreflangEv
+__ZN7WebCore19HTMLOptGroupElementD0Ev
+__ZN7WebCore22jsHTMLLinkElementMediaEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLLinkElement5mediaEv
+__ZN7WebCore20jsHTMLLinkElementRevEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLLinkElement3revEv
+__ZN7WebCore23jsHTMLLinkElementTargetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLLinkElement6targetEv
+__ZN7WebCore21jsHTMLMapElementAreasEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14HTMLMapElement5areasEv
+__ZN7WebCore20jsHTMLMapElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14HTMLMapElement4nameEv
+__ZN7WebCoreL15menuConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore15HTMLMenuElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15HTMLMenuElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore15HTMLMenuElement17endTagRequirementEv
+__ZNK7WebCore15HTMLMenuElement11tagPriorityEv
+__ZN7WebCoreL28createHTMLMenuElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore17JSHTMLMenuElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSHTMLMenuElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLMenuElementEEE
+__ZN7WebCore17JSHTMLMenuElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15HTMLMenuElementEEE
+__ZN7WebCore17JSHTMLMenuElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24jsHTMLMenuElementCompactEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLMenuElement7compactEv
+__ZN7WebCore17JSHTMLMenuElementD1Ev
+__ZThn8_N7WebCore15HTMLMenuElementD0Ev
+__ZN7WebCore15HTMLMenuElementD0Ev
+__ZThn8_N7WebCore15HTMLMetaElementD0Ev
+__ZN7WebCore26JSHTMLMenuElementPrototypeD1Ev
+__ZN7WebCore23jsHTMLMetaElementSchemeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15HTMLMetaElement6schemeEv
+__ZN7WebCore20jsHTMLModElementCiteEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14HTMLModElement4citeEv
+__ZThn8_N7WebCore14HTMLModElementD0Ev
+__ZN7WebCore24jsHTMLModElementDateTimeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14HTMLModElement8dateTimeEv
+__ZN7WebCore25jsHTMLOListElementCompactEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLOListElement7compactEv
+__ZN7WebCore23jsHTMLOListElementStartEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsHTMLOListElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLOListElement4typeEv
+__ZN7WebCore23jsHTMLObjectElementFormEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLObjectElementCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement4codeEv
+__ZN7WebCore24jsHTMLObjectElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsHTMLObjectElementArchiveEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement7archiveEv
+__ZN7WebCore25jsHTMLObjectElementBorderEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement6borderEv
+__ZN7WebCore27jsHTMLObjectElementCodeBaseEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement8codeBaseEv
+__ZN7WebCore27jsHTMLObjectElementCodeTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement8codeTypeEv
+__ZN7WebCore23jsHTMLObjectElementDataEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement4dataEv
+__ZN7WebCore26jsHTMLObjectElementDeclareEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement7declareEv
+__ZN7WebCore25jsHTMLObjectElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLObjectElementHspaceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement6hspaceEv
+__ZN7WebCore26jsHTMLObjectElementStandbyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement7standbyEv
+__ZN7WebCore23jsHTMLObjectElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLObjectElementUseMapEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement6useMapEv
+__ZN7WebCore25jsHTMLObjectElementVspaceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLObjectElement6vspaceEv
+__ZN7WebCore24jsHTMLObjectElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLObjectElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsHTMLObjectElementContentDocumentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL32createHTMLOptGroupElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore21JSHTMLOptGroupElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSHTMLOptGroupElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLOptGroupElementEEE
+__ZN7WebCore21JSHTMLOptGroupElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19HTMLOptGroupElementEEE
+__ZN7WebCore21JSHTMLOptGroupElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore29jsHTMLOptGroupElementDisabledEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSHTMLOptGroupElementD1Ev
+__ZThn8_N7WebCore19HTMLOptGroupElementD0Ev
+__ZN7WebCore26jsHTMLOptGroupElementLabelEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLOptGroupElement5labelEv
+__ZN7WebCore30JSHTMLOptGroupElementPrototypeD1Ev
+__ZN7WebCore23jsHTMLOptionElementFormEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn8_N7WebCore17HTMLOptionElementD0Ev
+__ZN7WebCore34jsHTMLOptionElementDefaultSelectedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLOptionElement15defaultSelectedEv
+__ZN7WebCore23jsHTMLOptionElementTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLOptionElement4textEv
+__ZN7WebCore24jsHTMLOptionElementIndexEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsHTMLOptionElementLabelEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLOptionElement5labelEv
+__ZN7WebCore32JSHTMLOptionsCollectionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore23JSHTMLOptionsCollection9classInfoEv
+__ZN7WebCore16HTMLInputElement39unregisterForActivationCallbackIfNeededEv
+__ZN7WebCore27jsHTMLParagraphElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLParagraphElement5alignEv
+__ZN7WebCore27jsHTMLParamElementValueTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLParamElement9valueTypeEv
+__ZN7WebCore22jsHTMLParamElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLParamElement4typeEv
+__ZN7WebCore21jsHTMLPreElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14HTMLPreElement5widthEv
+__ZN7WebCoreL16quoteConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore16HTMLQuoteElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16HTMLQuoteElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore16HTMLQuoteElement17endTagRequirementEv
+__ZNK7WebCore16HTMLQuoteElement11tagPriorityEv
+__ZN7WebCore16HTMLQuoteElement20insertedIntoDocumentEv
+__ZN7WebCoreL29createHTMLQuoteElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore18JSHTMLQuoteElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSHTMLQuoteElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLQuoteElementEEE
+__ZN7WebCore18JSHTMLQuoteElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16HTMLQuoteElementEEE
+__ZN7WebCore18JSHTMLQuoteElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22jsHTMLQuoteElementCiteEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLQuoteElement4citeEv
+__ZN7WebCore18JSHTMLQuoteElementD1Ev
+__ZThn8_N7WebCore16HTMLQuoteElementD0Ev
+__ZN7WebCore16HTMLQuoteElementD0Ev
+__ZN7WebCoreL34createHTMLBlockquoteElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore23JSHTMLBlockquoteElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSHTMLBlockquoteElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21HTMLBlockquoteElementEEE
+__ZN7WebCore23JSHTMLBlockquoteElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21HTMLBlockquoteElementEEE
+__ZN7WebCore23JSHTMLBlockquoteElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27jsHTMLBlockquoteElementCiteEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore21HTMLBlockquoteElement4citeEv
+__ZN7WebCore23JSHTMLBlockquoteElementD1Ev
+__ZThn8_N7WebCore21HTMLBlockquoteElementD0Ev
+__ZN7WebCore27JSHTMLQuoteElementPrototypeD1Ev
+__ZN7WebCore23jsHTMLScriptElementTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLScriptElement4textEv
+__ZN7WebCore32JSHTMLBlockquoteElementPrototypeD1Ev
+__ZN7WebCore26jsHTMLScriptElementCharsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLScriptElement7charsetEv
+__ZN7WebCore24jsHTMLScriptElementDeferEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLScriptElement5deferEv
+__ZN7WebCore26jsHTMLScriptElementHtmlForEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLScriptElement7htmlForEv
+__ZN7WebCore24jsHTMLScriptElementEventEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLScriptElement5eventEv
+__ZN7WebCore23jsHTMLSelectElementFormEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsHTMLSelectElementDisabledEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsHTMLSelectElementMultipleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLSelectElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLSelectElementSizeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17HTMLSelectElement18dispatchFocusEventEv
+__ZN7WebCore17HTMLSelectElement26listBoxDefaultEventHandlerEPNS_5EventE
+__ZN7WebCore17HTMLSelectElement17dispatchBlurEventEv
+__ZN7WebCore42jsHTMLSelectElementPrototypeFunctionRemoveEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19JSHTMLSelectElement6removeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13toHTMLElementEN3JSC7JSValueE
+__ZN7WebCore17HTMLSelectElement6removeEi
+__ZN7WebCore39jsHTMLSelectElementPrototypeFunctionAddEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore26jsHTMLStyleElementDisabledEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLStyleElement8disabledEv
+__ZN7WebCore23jsHTMLStyleElementMediaEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsHTMLStyleElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL36createHTMLTableCaptionElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore25JSHTMLTableCaptionElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSHTMLTableCaptionElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23HTMLTableCaptionElementEEE
+__ZN7WebCore25JSHTMLTableCaptionElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23HTMLTableCaptionElementEEE
+__ZN7WebCore25JSHTMLTableCaptionElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore30jsHTMLTableCaptionElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore23HTMLTableCaptionElement5alignEv
+__ZN7WebCore25JSHTMLTableCaptionElementD1Ev
+__ZThn8_N7WebCore23HTMLTableCaptionElementD0Ev
+__ZN7WebCore31jsHTMLTableCellElementCellIndexEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore20HTMLTableCellElement9cellIndexEv
+__ZN7WebCore34JSHTMLTableCaptionElementPrototypeD1Ev
+__ZN7WebCore26jsHTMLTableCellElementAbbrEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsHTMLTableCellElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLTableCellElement5alignEv
+__ZN7WebCore26jsHTMLTableCellElementAxisEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsHTMLTableCellElementBgColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLTableCellElement7bgColorEv
+__ZN7WebCore24jsHTMLTableCellElementChEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLTableCellElement2chEv
+__ZN7WebCore27jsHTMLTableCellElementChOffEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLTableCellElement5chOffEv
+__ZN7WebCore29jsHTMLTableCellElementColSpanEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsHTMLTableCellElementHeadersEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsHTMLTableCellElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLTableCellElement6heightEv
+__ZN7WebCore28jsHTMLTableCellElementNoWrapEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLTableCellElement6noWrapEv
+__ZN7WebCore29jsHTMLTableCellElementRowSpanEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsHTMLTableCellElementScopeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsHTMLTableCellElementVAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLTableCellElement6vAlignEv
+__ZN7WebCore27jsHTMLTableCellElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20HTMLTableCellElement5widthEv
+__ZN7WebCore26jsHTMLTableColElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableColElement5alignEv
+__ZThn8_N7WebCore19HTMLTableColElementD0Ev
+__ZN7WebCore23jsHTMLTableColElementChEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableColElement2chEv
+__ZN7WebCore26jsHTMLTableColElementChOffEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableColElement5chOffEv
+__ZN7WebCore25jsHTMLTableColElementSpanEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsHTMLTableColElementVAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableColElement6vAlignEv
+__ZN7WebCore26jsHTMLTableColElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableColElement5widthEv
+__ZN7WebCore25jsHTMLTableElementCaptionEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsHTMLTableSectionElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore23HTMLTableSectionElement5alignEv
+__ZN7WebCore23jsHTMLTableElementTFootEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLTableElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLTableElement5alignEv
+__ZN7WebCore25jsHTMLTableElementBgColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLTableElement7bgColorEv
+__ZN7WebCore24jsHTMLTableElementBorderEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLTableElement6borderEv
+__ZN7WebCore29jsHTMLTableElementCellPaddingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLTableElement11cellPaddingEv
+__ZN7WebCore29jsHTMLTableElementCellSpacingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLTableElement11cellSpacingEv
+__ZN7WebCore23jsHTMLTableElementFrameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLTableElement5frameEv
+__ZN7WebCore23jsHTMLTableElementRulesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLTableElementSummaryEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLTableElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLTableElement5widthEv
+__ZN7WebCore46jsHTMLTableElementPrototypeFunctionCreateTHeadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16HTMLTableElement11createTHeadEv
+__ZN7WebCore16HTMLTableElement8setTHeadEN3WTF10PassRefPtrINS_23HTMLTableSectionElementEEERi
+__ZN7WebCore16HTMLTableElement11deleteTHeadEv
+__ZN7WebCore46jsHTMLTableElementPrototypeFunctionDeleteTHeadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZThn8_N7WebCore23HTMLTableSectionElementD0Ev
+__ZN7WebCore46jsHTMLTableElementPrototypeFunctionCreateTFootEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16HTMLTableElement11createTFootEv
+__ZN7WebCore16HTMLTableElement8setTFootEN3WTF10PassRefPtrINS_23HTMLTableSectionElementEEERi
+__ZN7WebCore16HTMLTableElement11deleteTFootEv
+__ZN7WebCore46jsHTMLTableElementPrototypeFunctionDeleteTFootEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore48jsHTMLTableElementPrototypeFunctionCreateCaptionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16HTMLTableElement13createCaptionEv
+__ZN7WebCore16HTMLTableElement10setCaptionEN3WTF10PassRefPtrINS_23HTMLTableCaptionElementEEERi
+__ZN7WebCore16HTMLTableElement13deleteCaptionEv
+__ZN7WebCore48jsHTMLTableElementPrototypeFunctionDeleteCaptionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16HTMLTableElement8lastBodyEv
+__ZN7WebCore44jsHTMLTableElementPrototypeFunctionDeleteRowEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16HTMLTableElement9deleteRowEiRi
+__ZN7WebCore23HTMLTableRowsCollection7lastRowEPNS_16HTMLTableElementE
+__ZN7WebCore36jsHTMLTableRowElementSectionRowIndexEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableRowElement15sectionRowIndexEv
+__ZN7WebCore26jsHTMLTableRowElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableRowElement5alignEv
+__ZN7WebCore28jsHTMLTableRowElementBgColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableRowElement7bgColorEv
+__ZN7WebCore23jsHTMLTableRowElementChEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableRowElement2chEv
+__ZN7WebCore26jsHTMLTableRowElementChOffEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableRowElement5chOffEv
+__ZN7WebCore27jsHTMLTableRowElementVAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTableRowElement6vAlignEv
+__ZN7WebCore48jsHTMLTableRowElementPrototypeFunctionInsertCellEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19HTMLTableRowElement10insertCellEiRi
+__ZN7WebCore48jsHTMLTableRowElementPrototypeFunctionDeleteCellEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19HTMLTableRowElement10deleteCellEiRi
+__ZN7WebCore27jsHTMLTableSectionElementChEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore23HTMLTableSectionElement2chEv
+__ZN7WebCore30jsHTMLTableSectionElementChOffEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore23HTMLTableSectionElement5chOffEv
+__ZN7WebCore31jsHTMLTableSectionElementVAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore23HTMLTableSectionElement6vAlignEv
+__ZN7WebCore51jsHTMLTableSectionElementPrototypeFunctionInsertRowEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore23HTMLTableSectionElement9insertRowEiRi
+__ZN7WebCore51jsHTMLTableSectionElementPrototypeFunctionDeleteRowEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore23HTMLTableSectionElement9deleteRowEiRi
+__ZN7WebCore33jsHTMLTextAreaElementDefaultValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLTextAreaElementFormEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsHTMLTextAreaElementAccessKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLTextAreaElement9accessKeyEv
+__ZN7WebCore25jsHTMLTextAreaElementColsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsHTMLTextAreaElementDisabledEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLTextAreaElementNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsHTMLTextAreaElementReadOnlyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLTextAreaElementRowsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLTextAreaElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore44jsHTMLTextAreaElementPrototypeFunctionSelectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19HTMLTextAreaElement6selectEv
+__ZN7WebCore25jsHTMLUListElementCompactEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLUListElement7compactEv
+__ZN7WebCore11MediaPlayer12supportsTypeENS_11ContentTypeE
+__ZN7WebCoreL20mimeCommonTypesCacheEv
+__ZN7WebCore17DOMImplementation14isTextMIMETypeERKNS_6StringE
+__ZN7WebCore11SVGDocumentC1EPNS_5FrameE
+__ZN7WebCore11SVGDocumentC2EPNS_5FrameE
+__ZNK7WebCore11SVGDocument13isSVGDocumentEv
+__ZN7WebCore13JSSVGDocument15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore13JSSVGDocumentC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11SVGDocumentEEE
+__ZN7WebCore13JSSVGDocumentC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11SVGDocumentEEE
__ZN7WebCore17SVGElementFactory16createSVGElementERKNS_13QualifiedNameEPNS_8DocumentEb
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPFPNS1_10SVGElementEPNS1_8DocumentEbENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSC_IS9_EEE3getERKS3_
-__ZN7WebCore14svgConstructorEPNS_8DocumentEb
+__ZN7WebCoreL6addTagERKNS_13QualifiedNameEPFN3WTF10PassRefPtrINS_10SVGElementEEES2_PNS_8DocumentEbE
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPFNS_10PassRefPtrINS1_10SVGElementEEERKNS1_13QualifiedNameEPNS1_8DocumentEbENS_7P
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PFNS_10PassRefPtrINS1_10SVGElementEEERKNS1_13QualifiedNameEPNS1_8Doc
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPFNS_10PassRefPtrINS1_10SVGElementEEERKNS1_13QualifiedNameEPNS1_8DocumentEbENS_7
+__ZN7WebCoreL14svgConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
__ZN7WebCore13SVGSVGElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore12SVGLocatableC2Ev
__ZN7WebCore25SVGStyledLocatableElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore16SVGStyledElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore10SVGElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore10SVGElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore11SVGStylableC2Ev
__ZN7WebCore8SVGTestsC2Ev
__ZN7WebCore12SVGLangSpaceC2Ev
__ZN7WebCore28SVGExternalResourcesRequiredC2Ev
__ZN7WebCore15SVGFitToViewBoxC2Ev
__ZN7WebCore22SVGPreserveAspectRatioC1Ev
+__ZN7WebCore22SVGPreserveAspectRatioC2Ev
__ZN7WebCore13SVGZoomAndPanC2Ev
-__ZN7WebCore9SVGLengthC1EPKNS_16SVGStyledElementENS_13SVGLengthModeERKNS_6StringE
+__ZN7WebCore9SVGLengthC1ENS_13SVGLengthModeERKNS_6StringE
+__ZN7WebCore9SVGLengthC2ENS_13SVGLengthModeERKNS_6StringE
__ZN7WebCore9SVGLength16setValueAsStringERKNS_6StringE
-__ZN7WebCore13TimeSchedulerC1EPNS_8DocumentE
-__ZN7WebCore8SVGTimerC1EPNS_13TimeSchedulerEdb
+__ZN7WebCore19SVGAnimatedPropertyINS_13SVGSVGElementENS_9SVGLengthEXadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_15widthAttrStri
__ZN7WebCore11parseNumberERPKtS1_Rfb
__ZN7WebCore18stringToLengthTypeERKNS_6StringE
-__ZN7WebCore13SVGSVGElement17setWidthBaseValueENS_9SVGLengthE
-__ZN7WebCore8Document19accessSVGExtensionsEv
-__ZN7WebCore21SVGDocumentExtensionsC1EPNS_8DocumentE
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapINS_9SVGLengthEEEPN3WTF7HashMapIPKNS_10SVGElementEPNS4_IPNS_10StringImplET_NS_10StringHashENS3_10HashTraitsIS9_EENSC_ISA_EEEENS3_7PtrHashIS7_EENSC_IS7_EENSC_ISG_EEEEvE14s_baseValueMap
-__ZN7WebCore13SVGSVGElement8setWidthENS_9SVGLengthE
-__ZN7WebCore13SVGSVGElement18setHeightBaseValueENS_9SVGLengthE
-__ZN7WebCore13SVGSVGElement9setHeightENS_9SVGLengthE
-__ZNK7WebCore10SVGElement12isSVGElementEv
-__ZN7WebCore18createJSSVGWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPFPNS1_6JSNodeEPN3KJS9ExecStateENS_10PassRefPtrINS1_10SVGElementEEEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSG_ISD_EEE3getERKS3_
-__ZN7WebCore16createSVGWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore24JSSVGSVGElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSSVGSVGElementC1EPN3KJS8JSObjectEPNS_13SVGSVGElementE
-__ZN7WebCore12JSSVGElementC1EPN3KJS8JSObjectEPNS_10SVGElementE
-__ZN7WebCore15JSSVGSVGElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore12JSSVGElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore24JSSVGSVGElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore15JSSVGSVGElement9classInfoEv
+__ZN7WebCore17SMILTimeContainerC1EPNS_13SVGSVGElementE
+__ZN7WebCore17SMILTimeContainerC2EPNS_13SVGSVGElementE
__ZN7WebCore10SVGElement16attributeChangedEPNS_9AttributeEb
__ZNK7WebCore16SVGStyledElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
__ZN7WebCore16SVGStyledElement32cssPropertyIdForSVGAttributeNameERKNS_13QualifiedNameE
-__ZN7WebCore25mapAttributeToCSSPropertyEPN3WTF7HashMapIPNS_16AtomicStringImplEiNS0_7PtrHashIS3_EENS0_10HashTraitsIS3_EENS6_IiEEEERKNS_13QualifiedNameEPKc
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEiNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IiEEE3getERKS3_
__ZN7WebCore13SVGSVGElement20parseMappedAttributeEPNS_15MappedAttributeE
__ZNK7WebCore25SVGStyledLocatableElement22nearestViewportElementEv
-__ZN7WebCore12SVGLocatable22nearestViewportElementEPKNS_16SVGStyledElementE
+__ZN7WebCore12SVGLocatable22nearestViewportElementEPKNS_10SVGElementE
__ZN7WebCore8SVGTests20parseMappedAttributeEPNS_15MappedAttributeE
__ZN7WebCore12SVGLangSpace20parseMappedAttributeEPNS_15MappedAttributeE
__ZN7WebCore28SVGExternalResourcesRequired20parseMappedAttributeEPNS_15MappedAttributeE
@@ -9267,289 +13008,251 @@ __ZN7WebCore10SVGElement20parseMappedAttributeEPNS_15MappedAttributeE
__ZN7WebCore13SVGSVGElement19svgAttributeChangedERKNS_13QualifiedNameE
__ZN7WebCore16SVGStyledElement19svgAttributeChangedERKNS_13QualifiedNameE
__ZNK7WebCore16SVGStyledElement34invalidateResourcesInAncestorChainEv
-__ZNK7WebCore16SVGStyledElement21updateElementInstanceEPNS_21SVGDocumentExtensionsE
-__ZNK7WebCore21SVGDocumentExtensions19instancesForElementEPNS_10SVGElementE
-__ZN3WTF7HashMapIPN7WebCore10SVGElementEPNS_7HashSetIPNS1_18SVGElementInstanceENS_7PtrHashIS6_EENS_10HashTraitsIS6_EEEENS7_IS3_EENS9_IS3_EENS9_ISC_EEE3addERKS3_RKSC_
-__ZNK7WebCore13SVGSVGElement5widthEv
-__ZNK7WebCore9SVGLength5valueEv
-__ZNK7WebCore13SVGSVGElement6heightEv
+__ZN7WebCore18SVGElementInstance31invalidateAllInstancesOfElementEPNS_10SVGElementE
+__ZNK7WebCore10SVGElement19instancesForElementEv
+__ZN3WTF9HashTableIPN7WebCore18SVGElementInstanceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_EC1ER
+__ZN3WTF9HashTableIPN7WebCore18SVGElementInstanceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_EC2ER
+__ZN3WTF9HashTableIPN7WebCore18SVGElementInstanceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15de
+__ZNK7WebCore10SVGElement12isSVGElementEv
__ZN7WebCore13SVGSVGElement20insertedIntoDocumentEv
+__ZN7WebCore8Document19accessSVGExtensionsEv
+__ZN7WebCore21SVGDocumentExtensionsC1EPNS_8DocumentE
+__ZN7WebCore21SVGDocumentExtensionsC2EPNS_8DocumentE
__ZN7WebCore21SVGDocumentExtensions16addTimeContainerEPNS_13SVGSVGElementE
__ZN3WTF7HashSetIPN7WebCore13SVGSVGElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore13SVGSVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore13SVGSVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore13SVGSVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocat
+__ZN3WTF9HashTableIPN7WebCore13SVGSVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15dealloc
__ZN7WebCore10SVGElement20insertedIntoDocumentEv
__ZNK7WebCore10SVGElement2idEv
__ZN7WebCore15SVGURIReference9getTargetERKNS_6StringE
__ZNK7WebCore21SVGDocumentExtensions17isPendingResourceERKNS_12AtomicStringE
-__ZN7WebCore12parseUASheetIA359_cEEPNS_13CSSStyleSheetERKT_
__ZNK7WebCore10SVGElement12isShadowNodeEv
__ZN7WebCore13SVGSVGElement16rendererIsNeededEPNS_11RenderStyleE
__ZN7WebCore13SVGSVGElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
__ZNK7WebCore13SVGSVGElement14isOutermostSVGEv
__ZN7WebCore13RenderSVGRootC1EPNS_16SVGStyledElementE
-__ZN7WebCore15defsConstructorEPNS_8DocumentEb
-__ZN7WebCore14SVGDefsElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore13RenderSVGRootC2EPNS_16SVGStyledElementE
+__ZNK7WebCore13RenderSVGRoot15virtualChildrenEv
+__ZN7WebCoreL15rectConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore14SVGRectElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore29SVGStyledTransformableElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore16SVGTransformableC2Ev
__ZN7WebCore16SVGTransformListC1ERKNS_13QualifiedNameE
-__ZN7WebCore17createDefsWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore25JSSVGDefsElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSSVGDefsElementC1EPN3KJS8JSObjectEPNS_14SVGDefsElementE
-__ZN7WebCore16JSSVGDefsElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25JSSVGDefsElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore16JSSVGDefsElement9classInfoEv
-__ZN7WebCore29SVGStyledTransformableElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore16SVGTransformListC2ERKNS_13QualifiedNameE
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEiNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IiEEE3getERKS3_
+__ZN7WebCore14SVGRectElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore10SVGElement27accessDocumentSVGExtensionsEv
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplENS1_9SVGLengthENS1_10StringHashENS_10HashTraitsIS6_EENS9_IS7_
+__ZNK7WebCore10SVGElement28setSynchronizedSVGAttributesEb
+__ZN7WebCore14SVGRectElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZNK7WebCore10SVGElement26updateAnimatedSVGAttributeERKNS_6StringE
+__ZNK7WebCore9SVGLength5valueEPKNS_10SVGElementE
+__ZNK3WTF9HashTableIN7WebCore6StringESt4pairIS2_PKNS1_23SVGAnimatedPropertyBaseEENS_18PairFirstExtractorIS7_EENS1_10StringHashE
+__ZN7WebCore16SVGStyledElement15childrenChangedEbPNS_4NodeES2_i
__ZNK7WebCore10SVGElement25childShouldCreateRendererEPNS_4NodeE
-__ZNK7WebCore14SVGDefsElement7isValidEv
+__ZNK7WebCore14SVGRectElement7isValidEv
__ZNK7WebCore8SVGTests7isValidEv
__ZN7WebCore16SVGStyledElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore14SVGDefsElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore24RenderSVGHiddenContainerC1EPNS_16SVGStyledElementE
-__ZN7WebCore18RenderSVGContainerC1EPNS_16SVGStyledElementE
-__ZNK7WebCore18RenderSVGContainer10firstChildEv
+__ZN7WebCore29SVGStyledTransformableElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore10RenderPathC1EPNS_29SVGStyledTransformableElementE
+__ZN7WebCore10RenderPathC2EPNS_29SVGStyledTransformableElementE
+__ZN7WebCore20RenderSVGModelObjectC2EPNS_16SVGStyledElementE
+__ZN7WebCore13RenderSVGRoot15virtualChildrenEv
__ZNK7WebCore13RenderSVGRoot9isSVGRootEv
-__ZN7WebCore16SVGStyledElement15childrenChangedEb
-__ZN7WebCore15JSSVGSVGElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore12JSSVGElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore12gConstructorEPNS_8DocumentEb
-__ZN7WebCore11SVGGElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore14createGWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore22JSSVGGElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore13JSSVGGElementC1EPN3KJS8JSObjectEPNS_11SVGGElementE
-__ZN7WebCore15rectConstructorEPNS_8DocumentEb
-__ZN7WebCore14SVGRectElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore17createRectWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore25JSSVGRectElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSSVGRectElementC1EPN3KJS8JSObjectEPNS_14SVGRectElementE
-__ZN7WebCore16JSSVGRectElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25JSSVGRectElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore10SVGElement21finishParsingChildrenEv
+__ZN7WebCore10SVGElement26sendSVGLoadEventIfPossibleEb
+__ZN7WebCore10SVGElement27haveLoadedRequiredResourcesEv
+__ZThn112_NK7WebCore17HTMLScriptElement20sourceAttributeValueEv
+__ZThn112_NK7WebCore17HTMLScriptElement13scriptCharsetEv
+__ZN7WebCore12XMLTokenizer12pauseParsingEv
+__ZN3WTF5DequeIPN7WebCore16PendingCallbacks15PendingCallbackEE14expandCapacityEv
+__ZThn16_N7WebCore12XMLTokenizer14notifyFinishedEPNS_14CachedResourceE
+__ZN7WebCore12XMLTokenizer14notifyFinishedEPNS_14CachedResourceE
+__ZN7WebCore10SVGElement15eventParentNodeEv
+__ZN7WebCore12XMLTokenizer13resumeParsingEv
+__ZN7WebCore16PendingCallbacks25PendingCharactersCallback4callEPNS_12XMLTokenizerE
+__ZN7WebCore16PendingCallbacks25PendingCharactersCallbackD0Ev
+__ZN7WebCore16PendingCallbacks29PendingStartElementNSCallback4callEPNS_12XMLTokenizerE
+__ZN7WebCore16PendingCallbacks29PendingStartElementNSCallbackD0Ev
+__ZN7WebCore16PendingCallbacks27PendingEndElementNSCallback4callEPNS_12XMLTokenizerE
+__ZN7WebCore16PendingCallbacks27PendingEndElementNSCallbackD0Ev
+__ZN7WebCoreL28processingInstructionHandlerEPvPKhS2_
+__ZN7WebCore12XMLTokenizer21processingInstructionEPKhS2_
+__ZN7WebCore21ProcessingInstructionC1EPNS_8DocumentERKNS_6StringES5_
+__ZN7WebCore21ProcessingInstructionC2EPNS_8DocumentERKNS_6StringES5_
+__ZN7WebCore21ProcessingInstruction20insertedIntoDocumentEv
+__ZN7WebCore21ProcessingInstruction15checkStyleSheetEv
+__ZN7WebCore21ProcessingInstruction21finishParsingChildrenEv
+__ZN7WebCoreL21internalSubsetHandlerEPvPKhS2_S2_
+__ZN7WebCore12XMLTokenizer14internalSubsetEPKhS2_S2_
+__ZN7WebCore8Document18determineParseModeEv
+__ZN7WebCoreL16getEntityHandlerEPvPKh
+__ZN7WebCoreL21externalSubsetHandlerEPvPKhS2_S2_
+__ZN7WebCoreL17cdataBlockHandlerEPvPKhi
+__ZN7WebCore12XMLTokenizer10cdataBlockEPKhi
+__ZN7WebCore12CDATASectionC1EPNS_8DocumentERKNS_6StringE
+__ZN7WebCore12CDATASectionC2EPNS_8DocumentERKNS_6StringE
+__ZNK7WebCore21ProcessingInstruction8nodeTypeEv
+__ZN7WebCore43jsDocumentPrototypeFunctionCreateNSResolverEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document16createNSResolverEPNS_4NodeE
+__ZN7WebCore14XPathEvaluator16createNSResolverEPNS_4NodeE
+__ZN7WebCore21NativeXPathNSResolverC1EN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore21NativeXPathNSResolverC2EN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_15XPathNSResolverE
+__ZN7WebCore17JSXPathNSResolver15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSXPathNSResolverC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15XPathNSResolverEEE
+__ZN7WebCore17JSXPathNSResolverC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15XPathNSResolverEEE
+__ZNK7WebCore17JSXPathNSResolver9classInfoEv
+__ZNK7WebCore12CDATASection8nodeTypeEv
+__ZN7WebCore41jsXPathResultPrototypeFunctionIterateNextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore18jsAttrOwnerElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13JSSVGDocument18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22JSSVGDocumentPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore13JSSVGDocument9classInfoEv
+__ZN7WebCore18createJSSVGWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplEPFPNS1_6JSNodeEPN3JSC9ExecStateENS_10PassRefPtrINS1_10SVGElementEEEENS_7PtrHashIS
+__ZN3WTF9HashTableIPN7WebCore16AtomicStringImplESt4pairIS3_PFPNS1_6JSNodeEPN3JSC9ExecStateENS_10PassRefPtrINS1_10SVGElementEEEE
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplEPFPNS1_6JSNodeEPN3JSC9ExecStateENS_10PassRefPtrINS1_10SVGElementEEEENS_7PtrHashI
+__ZN7WebCoreL27createSVGRectElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore16JSSVGRectElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSSVGElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore12JSSVGElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGRectElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGRectElementEEE
+__ZN7WebCore16JSSVGRectElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGRectElementEEE
+__ZN7WebCore12JSSVGElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10SVGElementEEE
+__ZN7WebCore16JSSVGRectElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore12JSSVGElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSSVGRectElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore16JSSVGRectElement9classInfoEv
-__ZN7WebCore14SVGRectElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore14SVGRectElement13setXBaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGRectElement4setXENS_9SVGLengthE
-__ZN7WebCore14SVGRectElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore14SVGRectElement13setYBaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGRectElement4setYENS_9SVGLengthE
-__ZN7WebCore14SVGRectElement17setWidthBaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGRectElement8setWidthENS_9SVGLengthE
-__ZNK7WebCore14SVGRectElement5widthEv
-__ZN7WebCore14SVGRectElement18setHeightBaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGRectElement9setHeightENS_9SVGLengthE
-__ZNK7WebCore14SVGRectElement6heightEv
+__ZN7WebCore29SVGStyledTransformableElement20parseMappedAttributeEPNS_15MappedAttributeE
__ZN7WebCore9CSSParser13parseSVGPaintEv
-__ZN7WebCore13JSSVGGElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore22JSSVGGElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore13JSSVGGElement9classInfoEv
-__ZN7WebCore11SVGGElement15childrenChangedEb
-__ZN7WebCore13RenderSVGRoot6layoutEv
-__ZN7WebCore13RenderSVGRoot12calcViewportEv
-__ZNK7WebCore9SVGLength8unitTypeEv
-__ZN7WebCore13RenderSVGRoot14calcPrefWidthsEv
-__ZN7WebCore13RenderSVGRoot27absoluteClippedOverflowRectEv
-__ZN7WebCore24RenderSVGHiddenContainer27absoluteClippedOverflowRectEv
-__ZNK7WebCore13SVGSVGElement12currentScaleEv
-__ZN7WebCore24RenderSVGHiddenContainer6layoutEv
-__ZNK7WebCore13RenderSVGRoot10lineHeightEbb
-__ZNK7WebCore13RenderSVGRoot16baselinePositionEbb
-__ZN7WebCore15textConstructorEPNS_8DocumentEb
+__ZNK7WebCore16SVGStyledElement8isStyledEv
+__ZN7WebCore16SVGStyledElement14canvasResourceEv
+__ZN7WebCore8SVGTests16isKnownAttributeERKNS_13QualifiedNameE
+__ZN7WebCore12SVGLangSpace16isKnownAttributeERKNS_13QualifiedNameE
+__ZN7WebCore28SVGExternalResourcesRequired16isKnownAttributeERKNS_13QualifiedNameE
+__ZN7WebCore29SVGStyledTransformableElement16isKnownAttributeERKNS_13QualifiedNameE
+__ZN7WebCore16SVGTransformable16isKnownAttributeERKNS_13QualifiedNameE
+__ZN7WebCore16SVGStyledElement16isKnownAttributeERKNS_13QualifiedNameE
+__ZN7WebCore42jsDocumentPrototypeFunctionCreateElementNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCoreL15textConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
__ZN7WebCore14SVGTextElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore25SVGTextPositioningElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore21SVGTextContentElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore13SVGLengthListC1ERKNS_13QualifiedNameE
+__ZN7WebCore13SVGLengthListC2ERKNS_13QualifiedNameE
__ZN7WebCore13SVGNumberListC1ERKNS_13QualifiedNameE
-__ZN7WebCore17createTextWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore25JSSVGTextElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore36JSSVGTextPositioningElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSSVGTextElementC1EPN3KJS8JSObjectEPNS_14SVGTextElementE
-__ZN7WebCore27JSSVGTextPositioningElementC2EPN3KJS8JSObjectEPNS_25SVGTextPositioningElementE
-__ZN7WebCore23JSSVGTextContentElementC2EPN3KJS8JSObjectEPNS_21SVGTextContentElementE
-__ZN7WebCore16JSSVGTextElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore27JSSVGTextPositioningElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore23JSSVGTextContentElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25JSSVGTextElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore32JSSVGTextContentElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore13SVGNumberListC2ERKNS_13QualifiedNameE
+__ZN7WebCoreL27createSVGTextElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore16JSSVGTextElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore36JSSVGTextPositioningElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSSVGTextPositioningElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore32JSSVGTextContentElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSSVGTextContentElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGTextElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGTextElementEEE
+__ZN7WebCore16JSSVGTextElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGTextElementEEE
+__ZN7WebCore27JSSVGTextPositioningElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_25SVGTextPositioningElementEEE
+__ZN7WebCore23JSSVGTextContentElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21SVGTextContentElementEEE
+__ZN7WebCore16JSSVGTextElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27JSSVGTextPositioningElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore23JSSVGTextContentElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSSVGTextElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore32JSSVGTextContentElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore16JSSVGTextElement9classInfoEv
__ZN7WebCore14SVGTextElement20parseMappedAttributeEPNS_15MappedAttributeE
__ZN7WebCore25SVGTextPositioningElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore21SVGTextContentElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore25SVGTextPositioningElement10xBaseValueEv
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapIPNS_13SVGLengthListEEEPN3WTF7HashMapIPKNS_10SVGElementEPNS5_IPNS_10StringImplET_NS_10StringHashENS4_10HashTraitsISA_EENSD_ISB_EEEENS4_7PtrHashIS8_EENSD_IS8_EENSD_ISH_EEEEvE14s_baseValueMap
-__ZNK7WebCore25SVGTextPositioningElement1xEv
-__ZN7WebCore13SVGLengthList5parseERKNS_6StringEPKNS_16SVGStyledElementENS_13SVGLengthModeE
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplEPNS1_13SVGLengthListENS1_10StringHashENS_10HashTraitsIS6_EENS
+__ZN7WebCore13SVGLengthList5parseERKNS_6StringENS_13SVGLengthModeE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_9SVGLengthEEEEELm0EE14shrinkCapacityEm
__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_9SVGLengthEEEEELm0EE14expandCapacityEmPKS6_
__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_9SVGLengthEEEEELm0EE14expandCapacityEm
__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_9SVGLengthEEEEELm0EE15reserveCapacityEm
-__ZNK7WebCore25SVGTextPositioningElement10yBaseValueEv
-__ZNK7WebCore25SVGTextPositioningElement1yEv
-__ZNK7WebCore11SVGGElement7isValidEv
-__ZN7WebCore11SVGGElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore31RenderSVGTransformableContainerC1EPNS_29SVGStyledTransformableElementE
-__ZNK7WebCore18RenderSVGContainer15canHaveChildrenEv
-__ZNK7WebCore14SVGRectElement7isValidEv
+__ZN7WebCore14SVGTextElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZN7WebCoreL26createSVGSVGElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore15JSSVGSVGElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSSVGSVGElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13SVGSVGElementEEE
+__ZN7WebCore15JSSVGSVGElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13SVGSVGElementEEE
+__ZN7WebCore15JSSVGSVGElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24JSSVGSVGElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore15JSSVGSVGElement9classInfoEv
__ZN7WebCore16CSSStyleSelector16applySVGPropertyEiPNS_8CSSValueE
+__ZN7WebCore14SVGRenderStyleC1ERKS0_
__ZN7WebCore14SVGRenderStyleC2ERKS0_
+__ZNK7WebCore8SVGPaint10isSVGPaintEv
+__ZN7WebCore7DataRefINS_13StyleFillDataEE6accessEv
__ZN7WebCore13StyleFillDataC1ERKS0_
-__ZN7WebCore29SVGStyledTransformableElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore10RenderPathC1EPNS_11RenderStyleEPNS_29SVGStyledTransformableElementE
-__ZN7WebCore18RenderSVGContainer8addChildEPNS_12RenderObjectES2_
-__ZN7WebCore18RenderSVGContainer15insertChildNodeEPNS_12RenderObjectES2_b
-__ZN7WebCore18RenderSVGContainer15appendChildNodeEPNS_12RenderObjectEb
+__ZN7WebCore13StyleFillDataC2ERKS0_
+__ZN3WTF10RefCountedIN7WebCore8CSSValueEE5derefEv
+__ZNK7WebCore14SVGRenderStyleeqERKS0_
+__ZNK7WebCore13StyleFillDataeqERKS0_
+__ZNK7WebCore8SVGColor5colorEv
+__ZN7WebCore16SVGStyledElement6detachEv
+__ZN7WebCore11SVGResource12removeClientEPNS_16SVGStyledElementE
+__ZN7WebCoreL9clientMapEv
+__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementESt4pairIS3_PNS1_11ResourceSetEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_EENS
__ZNK7WebCore21SVGTextContentElement7isValidEv
__ZN7WebCore14SVGTextElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
__ZN7WebCore13RenderSVGTextC1EPNS_14SVGTextElementE
+__ZN7WebCore13RenderSVGTextC2EPNS_14SVGTextElementE
__ZN7WebCore14RenderSVGBlockC2EPNS_10SVGElementE
-__ZN7WebCore14RenderSVGBlock8setStyleEPNS_11RenderStyleE
-__ZN7WebCore13RenderSVGText13requiresLayerEv
+__ZN7WebCore14RenderSVGBlock8setStyleEN3WTF10PassRefPtrINS_11RenderStyleEEE
+__ZNK7WebCore13RenderSVGText13requiresLayerEv
__ZNK7WebCore14SVGTextElement25childShouldCreateRendererEPNS_4NodeE
__ZN7WebCore19RenderSVGInlineTextC1EPNS_4NodeEN3WTF10PassRefPtrINS_10StringImplEEE
+__ZN7WebCore19RenderSVGInlineTextC2EPNS_4NodeEN3WTF10PassRefPtrINS_10StringImplEEE
+__ZN7WebCore19RenderSVGInlineText14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
__ZNK7WebCore19RenderSVGInlineText9isSVGTextEv
-__ZN7WebCore16SVGStyledElement6detachEv
-__ZN7WebCore11SVGResource12removeClientEPNS_16SVGStyledElementE
-__ZN7WebCore9clientMapEv
-__ZN7WebCore18RenderSVGContainer7destroyEv
-__ZN7WebCore18RenderSVGContainer23destroyLeftoverChildrenEv
-__ZN7WebCore18RenderSVGContainerD0Ev
-__ZN7WebCore18RenderSVGContainer11removeChildEPNS_12RenderObjectE
-__ZN7WebCore18RenderSVGContainer15removeChildNodeEPNS_12RenderObjectEb
-__ZN7WebCore10RenderPath27absoluteClippedOverflowRectEv
-__ZNK7WebCore10RenderPath12relativeBBoxEb
-__ZNK7WebCore12RenderObject17absoluteTransformEv
-__ZNK7WebCore13RenderSVGRoot17absoluteTransformEv
-__ZNK7WebCore12RenderObject14localTransformEv
-__ZN7WebCore15AffineTransformC1Edddddd
-__ZN7WebCore15AffineTransformmlERKS0_
-__ZNK7WebCore13RenderSVGRoot14localTransformEv
-__ZN7WebCore15AffineTransform5scaleEd
-__ZNK7WebCore13SVGSVGElement16currentTranslateEv
-__ZNK7WebCore13RenderSVGRoot8viewportEv
-__ZNK7WebCore13SVGSVGElement22viewBoxToViewTransformEff
-__ZNK7WebCore13SVGSVGElement14useCurrentViewEv
-__ZNK7WebCore13SVGSVGElement7viewBoxEv
-__ZNK7WebCore15SVGFitToViewBox7viewBoxEv
-__ZNK7WebCore18RenderSVGContainer14localTransformEv
-__ZNK7WebCore10RenderPath14localTransformEv
-__ZN7WebCore9FloatRect5uniteERKS0_
-__ZN7WebCore14SVGRenderStyleD2Ev
-__ZN7WebCore13RenderSVGText27absoluteClippedOverflowRectEv
-__ZNK7WebCore13RenderSVGText12relativeBBoxEb
-__ZNK7WebCore13RenderSVGText14localTransformEv
-__ZN7WebCore19RenderSVGInlineTextD1Ev
-__ZN7WebCore13RenderSVGTextD1Ev
-__ZN7WebCore18RenderSVGContainer27absoluteClippedOverflowRectEv
-__ZN7WebCore13SVGSVGElement19removedFromDocumentEv
-__ZN7WebCore21SVGDocumentExtensions19removeTimeContainerEPNS_13SVGSVGElementE
-__ZNK7WebCore14SVGTextElement18transformBaseValueEv
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapIPNS_16SVGTransformListEEEPN3WTF7HashMapIPKNS_10SVGElementEPNS5_IPNS_10StringImplET_NS_10StringHashENS4_10HashTraitsISA_EENSD_ISB_EEEENS4_7PtrHashIS8_EENSD_IS8_EENSD_ISH_EEEEvE14s_baseValueMap
-__ZNK7WebCore14SVGTextElement9transformEv
-__ZN7WebCore16SVGTransformable23parseTransformAttributeEPNS_16SVGTransformListERKNS_12AtomicStringE
-__ZN7WebCore16SVGTransformable23parseTransformAttributeEPNS_16SVGTransformListERPKtS4_
-__ZN7WebCore12SVGTransformC1Ev
-__ZN7WebCore16SVGTransformable19parseTransformValueEjRPKtS2_RNS_12SVGTransformE
-__ZN7WebCore23parseTransformParamListERPKtS1_Pfii
-__ZN7WebCore12SVGTransform9setRotateEfff
-__ZN7WebCore15AffineTransform5resetEv
-__ZN7WebCore15AffineTransform6rotateEd
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_12SVGTransformEEEEELm0EE14expandCapacityEmPKS6_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_12SVGTransformEEEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_12SVGTransformEEEEELm0EE15reserveCapacityEm
-__ZN7WebCore14SVGTextElement21setTransformBaseValueEPNS_16SVGTransformListE
-__ZN7WebCore14SVGTextElement12setTransformEPNS_16SVGTransformListE
-__ZN7WebCore15pathConstructorEPNS_8DocumentEb
-__ZN7WebCore14SVGPathElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore19SVGAnimatedPathDataC2Ev
-__ZN7WebCore17createPathWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore25JSSVGPathElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSSVGPathElementC1EPN3KJS8JSObjectEPNS_14SVGPathElementE
-__ZN7WebCore16JSSVGPathElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25JSSVGPathElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore16JSSVGPathElement9classInfoEv
-__ZN7WebCore14SVGPathElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore14SVGPathElement11pathSegListEv
-__ZN7WebCore14SVGPathSegListC1ERKNS_13QualifiedNameE
-__ZN7WebCore22pathSegListFromSVGDataEPNS_14SVGPathSegListERKNS_6StringEb
-__ZN7WebCore13SVGPathParser8parseSVGERKNS_6StringEb
-__ZN7WebCore11parseNumberERPKtS1_Rdb
-__ZN7WebCore21SVGPathSegListBuilder9svgMoveToEddbb
-__ZN7WebCore14SVGPathElement25createSVGPathSegMovetoAbsEff
-__ZN7WebCore19SVGPathSegMovetoAbsC1Eff
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore10SVGPathSegEEELm0EE14expandCapacityEmPKS4_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore10SVGPathSegEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore10SVGPathSegEEELm0EE15reserveCapacityEm
-__ZN7WebCore21SVGPathSegListBuilder9svgLineToEddb
-__ZN7WebCore14SVGPathElement25createSVGPathSegLinetoAbsEff
-__ZN7WebCore19SVGPathSegLinetoAbsC1Eff
-__ZN7WebCore14SVGPathElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore21SVGPathSegListBuilder15svgCurveToCubicEddddddb
-__ZN7WebCore14SVGPathElement31createSVGPathSegCurvetoCubicAbsEffffff
-__ZN7WebCore25SVGPathSegCurvetoCubicAbsC1Effffff
-__ZN7WebCore10SVGElement19addSVGEventListenerERKNS_12AtomicStringEPKNS_9AttributeE
-__ZN7WebCore21SVGDocumentExtensions22createSVGEventListenerERKNS_6StringES3_PNS_4NodeE
-__ZN7WebCore8KJSProxy21createSVGEventHandlerERKNS_6StringES3_PNS_4NodeE
-__ZN7WebCore22JSSVGLazyEventListenerC1ERKNS_6StringES3_PN3KJS6WindowEPNS_4NodeEi
-__ZNK7WebCore16SVGStyledElement8isStyledEv
-__ZN7WebCore16SVGStyledElement14canvasResourceEv
-__ZN7WebCore15StyleStrokeDataC1ERKS0_
-__ZNK7WebCore14SVGPathElement7isValidEv
-__ZNK7WebCore13SVGSVGElement17hasRelativeValuesEv
-__ZNK7WebCore13SVGSVGElement1xEv
-__ZNK7WebCore13SVGSVGElement1yEv
-__ZN7WebCore18RenderSVGContainer6layoutEv
-__ZNK7WebCore18RenderSVGContainer13selfWillPaintEv
-__ZN7WebCore31RenderSVGTransformableContainer23calculateLocalTransformEv
+__ZN7WebCore13RenderSVGRoot6layoutEv
+__ZNK7WebCore13SVGSVGElement12currentScaleEv
+__ZN7WebCore13RenderSVGRoot12calcViewportEv
+__ZN7WebCore10RenderPath6layoutEv
__ZNK7WebCore29SVGStyledTransformableElement22animatedLocalTransformEv
-__ZNK7WebCore29SVGStyledTransformableElement9transformEv
__ZNK7WebCore16SVGTransformList11concatenateEv
+__ZN7WebCore12SVGTransformC1Ev
+__ZN7WebCore12SVGTransformC2Ev
__ZNK7WebCore12SVGTransform6matrixEv
-__ZNK7WebCore15AffineTransformeqERKS0_
-__ZN7WebCore10RenderPath6layoutEv
-__ZNK7WebCore12RenderObject9borderBoxEv
-__ZNK7WebCore12RenderObject6heightEv
-__ZNK7WebCore12RenderObject5widthEv
-__ZN7WebCore10RenderPath23calculateLocalTransformEv
+__ZN7WebCore12SVGTransformD1Ev
+__ZN7WebCore12SVGTransformD2Ev
__ZNK7WebCore14SVGRectElement10toPathDataEv
-__ZNK7WebCore14SVGRectElement1yEv
-__ZNK7WebCore14SVGRectElement1xEv
-__ZNK7WebCore7Element12hasAttributeERKNS_13QualifiedNameE
-__ZNK7WebCore7Element14hasAttributeNSERKNS_6StringES3_
-__ZN7WebCore4Path15createRectangleERKNS_9FloatRectE
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGRectElementENS_9SVGLengthEXadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_16heightAttr
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGRectElementENS_9SVGLengthEXadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_15widthAttrS
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGRectElementENS_9SVGLengthEXadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_11xAttrStrin
__ZN7WebCore10RenderPath7setPathERKNS_4PathE
-__ZNK7WebCore10RenderPath10strokeBBoxEv
-__ZNK7WebCore10RenderPath4pathEv
-__ZN7WebCore12RenderObject8setWidthEi
-__ZN7WebCore12RenderObject9setHeightEi
+__ZN7WebCore4PathaSERKS0_
__ZN7WebCore13RenderSVGText6layoutEv
-__ZN7WebCore13RenderSVGText23calculateLocalTransformEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_25SVGTextPositioningElementENS_13SVGLengthListEXadL_ZNS_35SVGTextPositioningElementIdenti
__ZNK7WebCore14SVGTextElement22animatedLocalTransformEv
-__ZNK7WebCore18RenderSVGContainer14isSVGContainerEv
-__ZN7WebCore19RenderSVGInlineText19createInlineTextBoxEv
+__ZN7WebCore19RenderSVGInlineText13createTextBoxEv
__ZN7WebCore16SVGInlineTextBoxC1EPNS_12RenderObjectE
-__ZN7WebCore13RenderSVGText15createInlineBoxEbbb
+__ZN7WebCore16SVGInlineTextBoxC2EPNS_12RenderObjectE
+__ZN7WebCore13RenderSVGText13createRootBoxEv
__ZN7WebCore16SVGRootInlineBox22placeBoxesHorizontallyEiRiS1_Rb
-__ZN7WebCore16SVGRootInlineBox20verticallyAlignBoxesERi
+__ZN7WebCore16SVGRootInlineBox20verticallyAlignBoxesEi
+__ZNK7WebCore16SVGRootInlineBox12svgBoxHeightEv
__ZN7WebCore16SVGRootInlineBox36computePerCharacterLayoutInformationEv
+__ZN3WTF6VectorIN7WebCore7SVGCharELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN7WebCore12SVGTextChunkELm0EE14shrinkCapacityEm
__ZN7WebCore22SVGCharacterLayoutInfoC1ERN3WTF6VectorINS_7SVGCharELm0EEE
+__ZN7WebCore22SVGCharacterLayoutInfoC2ERN3WTF6VectorINS_7SVGCharELm0EEE
__ZN7WebCore16SVGRootInlineBox22buildLayoutInformationEPNS_13InlineFlowBoxERNS_22SVGCharacterLayoutInfoE
__ZN7WebCore22SVGCharacterLayoutInfo20addLayoutInformationEPNS_25SVGTextPositioningElementE
-__ZN7WebCore22calculateBaselineShiftEPNS_12RenderObjectE
-__ZN7WebCore22SVGCharacterLayoutInfo15addStackContentENS0_9StackTypeEPNS_13SVGLengthListE
-__ZN3WTF6VectorIfLm0EE14expandCapacityEmPKf
-__ZN3WTF6VectorIfLm0EE14expandCapacityEm
-__ZN3WTF6VectorIfLm0EE15reserveCapacityEm
+__ZN7WebCoreL22calculateBaselineShiftEPNS_12RenderObjectE
+__ZN7WebCore22SVGCharacterLayoutInfo15addStackContentENS0_9StackTypeEPNS_13SVGLengthListEPKNS_10SVGElementE
__ZN7WebCore22SVGCharacterLayoutInfo15addStackContentENS0_9StackTypeERKNS_21PositionedFloatVectorE
__ZN3WTF6VectorIN7WebCore21PositionedFloatVectorELm0EE14expandCapacityEmPKS2_
__ZN3WTF6VectorIN7WebCore21PositionedFloatVectorELm0EE14expandCapacityEm
__ZN3WTF6VectorIN7WebCore21PositionedFloatVectorELm0EE15reserveCapacityEm
__ZN3WTF6VectorIfLm0EEC2ERKS1_
-__ZN3WTF6VectorIfLm0EE6shrinkEm
-__ZNK7WebCore25SVGTextPositioningElement2dxEv
-__ZNK7WebCore25SVGTextPositioningElement2dyEv
-__ZNK7WebCore25SVGTextPositioningElement6rotateEv
__ZN7WebCore22SVGCharacterLayoutInfo15addStackContentENS0_9StackTypeEPNS_13SVGNumberListE
__ZN7WebCore22SVGCharacterLayoutInfo15addStackContentENS0_9StackTypeEf
-__ZN7WebCore16SVGRootInlineBox32buildLayoutInformationForTextBoxERNS_22SVGCharacterLayoutInfoEPNS_13InlineTextBoxE
+__ZN7WebCore16SVGRootInlineBox32buildLayoutInformationForTextBoxERNS_22SVGCharacterLayoutInfoEPNS_13InlineTextBoxERNS_13LastGly
__ZNK7WebCore22SVGCharacterLayoutInfo12inPathLayoutEv
-__ZNK7WebCore16SVGInlineTextBox19calculateGlyphWidthEPNS_11RenderStyleEi
+__ZNK7WebCore16SVGInlineTextBox19calculateGlyphWidthEPNS_11RenderStyleEiiRiRNS_6StringE
__ZN7WebCore26svgTextRunForInlineTextBoxEPKtiPNS_11RenderStyleEPKNS_13InlineTextBoxEf
-__ZNK7WebCore16SVGInlineTextBox20calculateGlyphHeightEPNS_11RenderStyleEi
+__ZNK7WebCore4Font10floatWidthERKNS_7TextRunEiRiRNS_6StringE
+__ZNK7WebCore16SVGInlineTextBox20calculateGlyphHeightEPNS_11RenderStyleEii
__ZNK7WebCore22SVGCharacterLayoutInfo15xValueAvailableEv
__ZNK7WebCore22SVGCharacterLayoutInfo10xValueNextEv
__ZNK7WebCore22SVGCharacterLayoutInfo15yValueAvailableEv
@@ -9558,6 +13261,7 @@ __ZNK7WebCore22SVGCharacterLayoutInfo16dxValueAvailableEv
__ZNK7WebCore22SVGCharacterLayoutInfo16dyValueAvailableEv
__ZNK7WebCore22SVGCharacterLayoutInfo19angleValueAvailableEv
__ZNK7WebCore22SVGCharacterLayoutInfo27baselineShiftValueAvailableEv
+__ZNK7WebCore4Font9isSVGFontEv
__ZN3WTF6VectorIN7WebCore7SVGCharELm0EE14expandCapacityEmPKS2_
__ZN3WTF6VectorIN7WebCore7SVGCharELm0EE14expandCapacityEm
__ZN3WTF6VectorIN7WebCore7SVGCharELm0EE15reserveCapacityEm
@@ -9569,103 +13273,82 @@ __ZN7WebCore22SVGCharacterLayoutInfo11dxStackWalkEv
__ZN7WebCore22SVGCharacterLayoutInfo11dyStackWalkEv
__ZN7WebCore22SVGCharacterLayoutInfo14angleStackWalkEv
__ZN7WebCore22SVGCharacterLayoutInfo22baselineShiftStackWalkEv
-__ZN7WebCore16SVGRootInlineBox15buildTextChunksERN3WTF6VectorINS_7SVGCharELm0EEERNS2_INS_12SVGTextChunkELm0EEEPNS_13InlineFlowBoxE
-__ZN7WebCore16SVGRootInlineBox15buildTextChunksERN3WTF6VectorINS_7SVGCharELm0EEEPNS_13InlineFlowBoxERNS_22SVGTextChunkLayoutInfoE
+__ZN7WebCore16SVGRootInlineBox15buildTextChunksERN3WTF6VectorINS_7SVGCharELm0EEERNS2_INS_12SVGTextChunkELm0EEEPNS_13InlineFlowB
+__ZN7WebCore16SVGRootInlineBox15buildTextChunksERN3WTF6VectorINS_7SVGCharELm0EEEPNS_13InlineFlowBoxERNS_22SVGTextChunkLayoutInf
+__ZNK7WebCore21SVGTextContentElement13isTextContentEv
__ZN3WTF6VectorIN7WebCore26SVGInlineBoxCharacterRangeELm0EE14expandCapacityEmPKS2_
__ZN3WTF6VectorIN7WebCore26SVGInlineBoxCharacterRangeELm0EE14expandCapacityEm
__ZN3WTF6VectorIN7WebCore26SVGInlineBoxCharacterRangeELm0EE15reserveCapacityEm
-__ZNK7WebCore21SVGTextContentElement10textLengthEv
-__ZNK7WebCore21SVGTextContentElement12lengthAdjustEv
__ZN3WTF6VectorIN7WebCore12SVGTextChunkELm0EE14expandCapacityEmPKS2_
__ZN3WTF6VectorIN7WebCore12SVGTextChunkELm0EE14expandCapacityEm
__ZN3WTF6VectorIN7WebCore12SVGTextChunkELm0EE15reserveCapacityEm
__ZN3WTF6VectorIN7WebCore26SVGInlineBoxCharacterRangeELm0EEC1ERKS3_
+__ZN3WTF6VectorIN7WebCore26SVGInlineBoxCharacterRangeELm0EEC2ERKS3_
__ZN3WTF6VectorIN7WebCore26SVGInlineBoxCharacterRangeELm0EE6shrinkEm
__ZN7WebCore16SVGRootInlineBox16layoutTextChunksEv
-__ZN7WebCore41calculateTextLengthCorrectionForTextChunkERNS_12SVGTextChunkENS_21SVGTextContentElement19SVGLengthAdjustTypeERf
-__ZNK7WebCore15AffineTransform10isIdentityEv
-__ZN7WebCore36calculateTextAnchorShiftForTextChunkERNS_12SVGTextChunkENS_11ETextAnchorE
-__ZN7WebCore26cummulatedWidthOfTextChunkERNS_12SVGTextChunkE
-__ZN7WebCore34cummulatedWidthOrHeightOfTextChunkERNS_12SVGTextChunkEb
-__ZN7WebCore40cummulatedWidthOfInlineBoxCharacterRangeERNS_26SVGInlineBoxCharacterRangeE
+__ZN7WebCoreL41calculateTextLengthCorrectionForTextChunkERNS_12SVGTextChunkENS_21SVGTextContentElement19SVGLengthAdjustTypeERf
__ZN7WebCore31topLeftPositionOfCharacterRangeEPNS_7SVGCharES1_
__ZNK7WebCore7SVGChar8isHiddenEv
__ZN7WebCore16SVGRootInlineBox17layoutInlineBoxesEv
__ZN7WebCore16SVGRootInlineBox17layoutInlineBoxesEPNS_13InlineFlowBoxERPNS_7SVGCharERiS6_S6_S6_
__ZNK7WebCore16SVGInlineTextBox24calculateGlyphBoundariesEPNS_11RenderStyleEiRKNS_7SVGCharE
__ZNK7WebCore7SVGChar18characterTransformEv
-__ZN7WebCore12SVGTransformC1ERKNS_15AffineTransformE
-__ZN7WebCore17strokeBoundingBoxERKNS_4PathEPNS_11RenderStyleEPKNS_12RenderObjectE
-__ZN7WebCore14scratchContextEv
-__ZN7WebCore25applyStrokeStyleToContextEPNS_15GraphicsContextEPNS_11RenderStyleEPKNS_12RenderObjectE
-__ZN7WebCore14SVGRenderStyle20cssPrimitiveToLengthEPKNS_12RenderObjectEPNS_8CSSValueEf
-__ZN7WebCore15GraphicsContext10setLineCapENS_7LineCapE
-__ZN7WebCore15GraphicsContext11setLineJoinENS_8LineJoinE
-__ZN7WebCore15GraphicsContext13setMiterLimitEf
-__ZN7WebCore27dashArrayFromRenderingStyleEPKNS_11RenderStyleE
-__ZNK7WebCore14SVGPathElement10toPathDataEv
-__ZN7WebCore14SVGPathSegList10toPathDataEv
-__ZNK7WebCore19SVGPathSegMovetoAbs11pathSegTypeEv
-__ZNK7WebCore19SVGPathSegMovetoAbs1yEv
-__ZNK7WebCore19SVGPathSegMovetoAbs1xEv
-__ZNK7WebCore19SVGPathSegLinetoAbs11pathSegTypeEv
-__ZNK7WebCore19SVGPathSegLinetoAbs1yEv
-__ZNK7WebCore19SVGPathSegLinetoAbs1xEv
-__ZNK7WebCore25SVGPathSegCurvetoCubicAbs11pathSegTypeEv
-__ZNK7WebCore25SVGPathSegCurvetoCubicAbs1yEv
-__ZNK7WebCore25SVGPathSegCurvetoCubicAbs1xEv
-__ZNK7WebCore25SVGPathSegCurvetoCubicAbs2y2Ev
-__ZNK7WebCore25SVGPathSegCurvetoCubicAbs2x2Ev
-__ZNK7WebCore25SVGPathSegCurvetoCubicAbs2y1Ev
-__ZNK7WebCore25SVGPathSegCurvetoCubicAbs2x1Ev
-__ZN7WebCore18RenderSVGContainer10calcBoundsEv
-__ZNK7WebCore18RenderSVGContainer17calcReplacedWidthEv
-__ZNK7WebCore18RenderSVGContainer18calcReplacedHeightEv
-__ZN3KJS17staticValueGetterIN7WebCore12JSWheelEventEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore12JSWheelEvent16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore20TransformationMatrix8rotate3dEddd
+__ZN7WebCore16SVGRootInlineBox18isSVGRootInlineBoxEv
+__ZN7WebCore13RenderSVGRoot21computeRectForRepaintEPNS_20RenderBoxModelObjectERNS_7IntRectEb
+__ZNK7WebCore13RenderSVGRoot25localToBorderBoxTransformEv
+__ZNK7WebCore13RenderSVGRoot24borderOriginToContentBoxEv
+__ZN7WebCore20TransformationMatrix5scaleEd
+__ZNK7WebCore13SVGSVGElement16currentTranslateEv
+__ZNK7WebCore13SVGSVGElement22viewBoxToViewTransformEff
+__ZNK7WebCore13SVGSVGElement14useCurrentViewEv
+__ZNK7WebCore13RenderSVGRoot19mapLocalToContainerEPNS_20RenderBoxModelObjectEbbRNS_14TransformStateE
+__ZN7WebCore21SVGDocumentExtensions15startAnimationsEv
+__ZN7WebCore17SMILTimeContainer5beginEv
+__ZN7WebCore17SMILTimeContainer16updateAnimationsENS_8SMILTimeE
+__ZN7WebCore17SMILTimeContainer14sortByPriorityERN3WTF6VectorIPNS_14SVGSMILElementELm0EEENS_8SMILTimeE
+__ZN7WebCore17SMILTimeContainer10startTimerENS_8SMILTimeES1_
+__ZNK7WebCore17SMILTimeContainer8isPausedEv
__ZN7WebCore13RenderSVGRoot5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore13RenderSVGRoot22applyContentTransformsERNS_12RenderObject9PaintInfoEii
-__ZNK7WebCore15AffineTransform1fEv
-__ZNK7WebCore15AffineTransform1eEv
-__ZN7WebCore15GraphicsContext9concatCTMERKNS_15AffineTransformE
-__ZNK7WebCore13RenderSVGRoot12relativeBBoxEb
-__ZNK7WebCore24RenderSVGHiddenContainer12relativeBBoxEb
-__ZNK7WebCore24RenderSVGHiddenContainer14localTransformEv
-__ZNK7WebCore24RenderSVGHiddenContainer14isSVGContainerEv
-__ZNK7WebCore18RenderSVGContainer17viewportTransformEv
-__ZNK7WebCore18RenderSVGContainer12relativeBBoxEb
+__ZNK7WebCore13RenderSVGRoot12viewportSizeEv
+__ZNK7WebCore13RenderSVGRoot32localToRepaintContainerTransformERKNS_8IntPointE
+__ZNK7WebCore13RenderSVGRoot22localToParentTransformEv
+__ZNK7WebCore13RenderSVGRoot23parentOriginToBorderBoxEv
+__ZN7WebCore25applyTransformToPaintInfoERNS_12RenderObject9PaintInfoERKNS_20TransformationMatrixE
+__ZNK7WebCore13RenderSVGRoot29repaintRectInLocalCoordinatesEv
+__ZN7WebCore13SVGRenderBase27computeContainerBoundingBoxEPKNS_12RenderObjectEb
+__ZNK7WebCore10RenderPath29repaintRectInLocalCoordinatesEv
+__ZNK7WebCore10RenderPath17objectBoundingBoxEv
+__ZN7WebCore13SVGRenderBase28filterBoundingBoxForRendererEPKNS_12RenderObjectE
+__ZNK7WebCore10RenderPath22localToParentTransformEv
+__ZNK7WebCore13RenderSVGText29repaintRectInLocalCoordinatesEv
+__ZNK7WebCore13RenderSVGText17objectBoundingBoxEv
+__ZNK7WebCore16SVGInlineTextBox12svgBoxHeightEv
+__ZNK7WebCore13RenderSVGText22localToParentTransformEv
__ZN7WebCore9RenderBox5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore24RenderSVGHiddenContainer5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore18RenderSVGContainer5paintERNS_12RenderObject9PaintInfoEii
-__ZNK7WebCore18RenderSVGContainer13drawsContentsEv
-__ZN7WebCore18RenderSVGContainer22applyContentTransformsERNS_12RenderObject9PaintInfoE
-__ZN7WebCore18RenderSVGContainer25applyAdditionalTransformsERNS_12RenderObject9PaintInfoE
__ZN7WebCore10RenderPath5paintERNS_12RenderObject9PaintInfoEii
__ZN7WebCore13RenderSVGText5paintERNS_12RenderObject9PaintInfoEii
-__ZNK7WebCore15AffineTransform7inverseEv
-__ZNK7WebCore15AffineTransform7mapRectERKNS_7IntRectE
-__ZN7WebCore16enclosingIntRectERK6CGRect
-__ZN7WebCore25prepareToRenderSVGContentEPNS_12RenderObjectERNS0_9PaintInfoERKNS_9FloatRectERPNS_17SVGResourceFilterES8_
+__ZN7WebCore13SVGRenderBase25prepareToRenderSVGContentEPNS_12RenderObjectERNS1_9PaintInfoERKNS_9FloatRectERPNS_17SVGResourceFil
__ZN7WebCore14getClipperByIdEPNS_8DocumentERKNS_12AtomicStringE
__ZN7WebCore15getResourceByIdEPNS_8DocumentERKNS_12AtomicStringE
__ZN7WebCore13getMaskerByIdEPNS_8DocumentERKNS_12AtomicStringE
-__ZN7WebCore15GraphicsContext9beginPathEv
__ZN7WebCore14SVGPaintServer15fillPaintServerEPKNS_11RenderStyleEPKNS_12RenderObjectE
__ZN7WebCore14SVGPaintServer22sharedSolidPaintServerEv
__ZN7WebCore19SVGPaintServerSolidC1Ev
+__ZN7WebCore19SVGPaintServerSolidC2Ev
__ZN7WebCore14SVGPaintServerC2Ev
__ZN7WebCore11SVGResourceC2Ev
-__ZNK7WebCore8SVGColor5colorEv
__ZN7WebCore19SVGPaintServerSolid8setColorERKNS_5ColorE
__ZNK7WebCore19SVGPaintServerSolid5colorEv
__ZNK7WebCore14SVGPaintServer4drawERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeE
-__ZZNK7WebCore19SVGPaintServerSolid5setupERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeEbE19deviceRGBColorSpace
+__ZNK7WebCore19SVGPaintServerSolid5setupERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeEb
+__ZN7WebCore15GraphicsContext8setAlphaEf
+__ZN7WebCore15GraphicsContext11setFillRuleENS_8WindRuleE
__ZNK7WebCore14SVGPaintServer10renderPathERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeE
-__ZNK7WebCore14SVGPaintServer8fillPathEP9CGContextPKNS_12RenderObjectE
__ZNK7WebCore14SVGPaintServer8teardownERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeEb
__ZN7WebCore14SVGPaintServer17strokePaintServerEPKNS_11RenderStyleEPKNS_12RenderObjectE
__ZNK7WebCore16SVGStyledElement15supportsMarkersEv
-__ZN7WebCore22finishRenderSVGContentEPNS_12RenderObjectERNS0_9PaintInfoERKNS_9FloatRectERPNS_17SVGResourceFilterEPNS_15GraphicsContextE
+__ZN7WebCore13SVGRenderBase22finishRenderSVGContentEPNS_12RenderObjectERNS1_9PaintInfoERKNS_9FloatRectERPNS_17SVGResourceFilter
__ZN7WebCore16SVGRootInlineBox5paintERNS_12RenderObject9PaintInfoEii
__ZN7WebCore16SVGRootInlineBox14walkTextChunksEPNS_22SVGTextChunkWalkerBaseEPKNS_16SVGInlineTextBoxE
__ZN7WebCore18SVGTextChunkWalkerINS_27SVGRootInlineBoxPaintWalkerEE5startEPNS_9InlineBoxE
@@ -9674,238 +13357,769 @@ __ZN7WebCore18SVGTextChunkWalkerINS_27SVGRootInlineBoxPaintWalkerEE9setupFillEPN
__ZN7WebCore27SVGRootInlineBoxPaintWalker22chunkSetupFillCallbackEPNS_9InlineBoxE
__ZN7WebCore15GraphicsContext18setTextDrawingModeEi
__ZN7WebCore15GraphicsContext26setPlatformTextDrawingModeEi
-__ZN7WebCore18SVGTextChunkWalkerINS_27SVGRootInlineBoxPaintWalkerEEclEPNS_16SVGInlineTextBoxEiRKNS_15AffineTransformERKPNS_7SVGCharESB_
-__ZN7WebCore27SVGRootInlineBoxPaintWalker20chunkPortionCallbackEPNS_16SVGInlineTextBoxEiRKNS_15AffineTransformERKPNS_7SVGCharES9_
+__ZN7WebCore18SVGTextChunkWalkerINS_27SVGRootInlineBoxPaintWalkerEEclEPNS_16SVGInlineTextBoxEiRKNS_20TransformationMatrixERKPNS
+__ZN7WebCore27SVGRootInlineBoxPaintWalker20chunkPortionCallbackEPNS_16SVGInlineTextBoxEiRKNS_20TransformationMatrixERKPNS_7SVGC
__ZN7WebCore16SVGInlineTextBox15paintCharactersERNS_12RenderObject9PaintInfoEiiRKNS_7SVGCharEPKtiPNS_14SVGPaintServerE
__ZN7WebCore18SVGTextChunkWalkerINS_27SVGRootInlineBoxPaintWalkerEE11setupStrokeEPNS_9InlineBoxE
__ZN7WebCore27SVGRootInlineBoxPaintWalker24chunkSetupStrokeCallbackEPNS_9InlineBoxE
__ZN7WebCore18SVGTextChunkWalkerINS_27SVGRootInlineBoxPaintWalkerEE3endEPNS_9InlineBoxE
__ZN7WebCore27SVGRootInlineBoxPaintWalker16chunkEndCallbackEPNS_9InlineBoxE
-__ZNK7WebCore14SVGPaintServer10strokePathEP9CGContextPKNS_12RenderObjectE
-__ZNK7WebCore14SVGPathElement15supportsMarkersEv
-__ZNK7WebCore10RenderPath19drawMarkersIfNeededEPNS_15GraphicsContextERKNS_9FloatRectERKNS_4PathE
-__ZN7WebCore13getMarkerByIdEPNS_8DocumentERKNS_12AtomicStringE
-__ZNK7WebCore11RenderLayer25horizontalScrollbarWidgetEv
-__ZN7WebCore13RenderSVGRoot11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZNK7WebCore15AffineTransform3mapEddPdS1_
-__ZN7WebCore18RenderSVGContainer11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZNK7WebCore18RenderSVGContainer9lastChildEv
-__ZN7WebCore10RenderPath11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore21PointerEventsHitRulesC1ENS0_14ESVGHitTestingENS_14EPointerEventsE
-__ZNK7WebCore10RenderPath23mapAbsolutePointToLocalERKNS_10FloatPointE
-__ZN7WebCore10FloatPoint15narrowPrecisionEdd
-__ZNK7WebCore10RenderPath14strokeContainsERKNS_10FloatPointEb
-__ZN7WebCore13RenderSVGText11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore16SVGInlineTextBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
-__ZN7WebCore16SVGInlineTextBox13selectionRectEiiii
-__ZNK7WebCore16SVGInlineTextBox16svgRootInlineBoxEv
-__ZN7WebCore16SVGRootInlineBox18isSVGRootInlineBoxEv
-__ZN7WebCore18SVGTextChunkWalkerINS_35SVGInlineTextBoxSelectionRectWalkerEEclEPNS_16SVGInlineTextBoxEiRKNS_15AffineTransformERKPNS_7SVGCharESB_
-__ZN7WebCore35SVGInlineTextBoxSelectionRectWalker20chunkPortionCallbackEPNS_16SVGInlineTextBoxEiRKNS_15AffineTransformERKPNS_7SVGCharES9_
-__ZNK7WebCore10RenderPath12fillContainsERKNS_10FloatPointEb
-__ZN7WebCore10SVGElement15eventParentNodeEv
-__ZN7WebCore12EventHandler30passMousePressEventToScrollbarERNS_28MouseEventWithHitTestResultsEPNS_17PlatformScrollbarE
--[WebCoreScrollBar mouseDown:]
-__ZN7WebCore6Widget15beforeMouseDownEP6NSViewPS0_
--[WebCoreScrollBar scroll:]
-__ZN7WebCore17PlatformScrollbar12scrollbarHitEj
-__ZN7WebCore6Widget14afterMouseDownEP6NSViewPS0_
-__ZN7WebCore44jsHTMLTextAreaElementPrototypeFunctionSelectEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19HTMLTextAreaElement6selectEv
-__ZN7WebCore55jsHTMLTextAreaElementPrototypeFunctionSetSelectionRangeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19HTMLTextAreaElement12selectionEndEv
-__ZN7WebCore16SVGInlineTextBoxD1Ev
-__ZN7WebCore16SVGRootInlineBoxD1Ev
+-[DOMElement innerText]
+__ZN7WebCore16JSSVGTextElementD1Ev
+__ZN7WebCore15JSSVGSVGElementD1Ev
+__ZN7WebCore16JSSVGRectElementD1Ev
+__ZN7WebCore17JSXPathNSResolverD1Ev
+__ZN7WebCore17JSXPathNSResolverD2Ev
+__ZN7WebCore21NativeXPathNSResolverD0Ev
+__ZN7WebCore15XPathNSResolverD2Ev
+__ZN7WebCore13SVGSVGElement26documentWillBecomeInactiveEv
+__ZN7WebCore13SVGSVGElement15pauseAnimationsEv
+__ZN7WebCore17SMILTimeContainer5pauseEv
+__ZN7WebCore10RenderPathD0Ev
+__ZN7WebCore14SVGRenderStyleD1Ev
+__ZN7WebCore14SVGRenderStyleD2Ev
+__ZN7WebCore19RenderSVGInlineText7destroyEv
+__ZN7WebCore16SVGInlineTextBoxD0Ev
+__ZN7WebCore19RenderSVGInlineTextD0Ev
+__ZN7WebCore16SVGRootInlineBoxD0Ev
__ZN3WTF6VectorIN7WebCore12SVGTextChunkELm0EE6shrinkEm
__ZN3WTF6VectorIN7WebCore7SVGCharELm0EE6shrinkEm
-__ZN7WebCore11crossCursorEv
-__ZN7WebCore22JSSVGLazyEventListenerD1Ev
-__ZN7WebCore13TimeSchedulerD1Ev
-__ZN3WTF15deleteAllValuesIPN7WebCore8SVGTimerEKNS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEESA_EEEEvRT0_
-__ZN7WebCore15SVGFitToViewBoxD0Ev
-__ZN7WebCore22SVGPreserveAspectRatioD1Ev
-__ZN7WebCore28SVGExternalResourcesRequiredD0Ev
-__ZN7WebCore8SVGTestsD0Ev
-__ZN7WebCore25SVGStyledLocatableElementD0Ev
-__ZN7WebCore10SVGElementD0Ev
-__ZN7WebCore29SVGStyledTransformableElementD0Ev
-__ZN7WebCore16SVGTransformListD1Ev
-__ZN7WebCore16SVGTransformableD0Ev
-__ZN7WebCore25SVGTextPositioningElementD0Ev
-__ZN7WebCore13SVGNumberListD1Ev
-__ZN7WebCore13SVGLengthListD1Ev
+__ZN7WebCore13RenderSVGTextD0Ev
+__ZN7WebCore13RenderSVGRootD0Ev
+__ZN7WebCore36JSSVGTextPositioningElementPrototypeD1Ev
+__ZN7WebCore32JSSVGTextContentElementPrototypeD1Ev
+__ZN7WebCore24JSSVGSVGElementPrototypeD1Ev
+__ZN7WebCore25JSSVGTextElementPrototypeD1Ev
+__ZN7WebCore25JSSVGRectElementPrototypeD1Ev
+__ZN7WebCore21JSSVGElementPrototypeD1Ev
+__ZN7WebCore26JSXPathNSResolverPrototypeD1Ev
+__ZN7WebCore21ProcessingInstructionD0Ev
+__ZN7WebCore12CDATASectionD0Ev
+__ZN7WebCore13JSSVGDocumentD1Ev
+__ZN7WebCore13SVGSVGElementD0Ev
+__ZN7WebCore21SVGDocumentExtensions19removeTimeContainerEPNS_13SVGSVGElementE
+__ZN3WTF9HashTableIPN7WebCore13SVGSVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_
+__ZN3WTF9HashTableIPN7WebCore13SVGSVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeA
+__ZN3WTF9HashTableIPN7WebCore13SVGSVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEP
+__ZN3WTF9HashTableIPN7WebCore14SVGSMILElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallo
+__ZN7WebCore13SVGZoomAndPanD2Ev
+__ZN7WebCore15SVGFitToViewBoxD2Ev
+__ZN7WebCore22SVGPreserveAspectRatioD0Ev
+__ZN7WebCore28SVGExternalResourcesRequiredD2Ev
+__ZN7WebCore12SVGLangSpaceD2Ev
+__ZN7WebCore8SVGTestsD2Ev
+__ZN7WebCore25SVGStyledLocatableElementD2Ev
+__ZN7WebCore16SVGStyledElementD2Ev
+__ZN7WebCore11SVGStylableD2Ev
+__ZN7WebCore10SVGElementD2Ev
+__ZN7WebCore12SVGLocatableD2Ev
+__ZN7WebCore14SVGRectElementD0Ev
+__ZN7WebCore29SVGStyledTransformableElementD2Ev
+__ZN7WebCore16SVGTransformListD0Ev
+__ZN7WebCore16SVGTransformableD2Ev
+__ZN7WebCore8SVGPaintD0Ev
+__ZN7WebCore8SVGColorD2Ev
+__ZN7WebCore14SVGTextElementD0Ev
+__ZN7WebCore25SVGTextPositioningElementD2Ev
+__ZN7WebCore13SVGNumberListD0Ev
+__ZN7WebCore13SVGLengthListD0Ev
__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_9SVGLengthEEEEELm0EE6shrinkEm
-__ZN7WebCore21SVGTextContentElementD0Ev
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_12SVGTransformEEEEELm0EE6shrinkEm
-__ZN7WebCore14SVGPathSegListD1Ev
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore10SVGPathSegEEELm0EE6shrinkEm
-__ZN7WebCore36JSSVGTextPositioningElementPrototypeD0Ev
+__ZN7WebCore21SVGTextContentElementD2Ev
+__ZN7WebCore11SVGDocumentD0Ev
__ZN7WebCore21SVGDocumentExtensionsD1Ev
-__ZN3WTF20deleteAllPairSecondsIPNS_7HashSetIPN7WebCore16SVGStyledElementENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEEEKNS_7HashMapINS2_6StringESA_NS2_10StringHashENS7_ISC_EENS7_ISA_EEEEEEvRT0_
-__ZN3WTF20deleteAllPairSecondsIPNS_7HashSetIPN7WebCore18SVGElementInstanceENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEEEKNS_7HashMapIPNS2_10SVGElementESA_NS5_ISD_EENS7_ISD_EENS7_ISA_EEEEEEvRT0_
-__ZNK7WebCore14HTMLModElement17endTagRequirementEv
-__ZNK7WebCore14HTMLModElement11tagPriorityEv
-__ZN7WebCore16JSHTMLModElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZNK7WebCore16JSHTMLModElement9classInfoEv
-__ZN7WebCore23createBlockquoteWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore23JSHTMLBlockquoteElementC1EPN3KJS8JSObjectEPNS_21HTMLBlockquoteElementE
-__ZN7WebCore10moveCursorEv
-__ZN7WebCore49jsDocumentPrototypeFunctionGetElementsByTagNameNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore48jsElementPrototypeFunctionGetElementsByTagNameNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore40jsElementPrototypeFunctionGetAttributeNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore7Element14getAttributeNSERKNS_6StringES3_
-__ZNK7WebCore4Node10attributesEv
-__ZNK7WebCore4Attr8nodeNameEv
-__ZN7WebCore11HTMLElement18setContentEditableEPNS_15MappedAttributeE
-__ZNK7WebCore18JSHTMLTitleElement9classInfoEv
+__ZN7WebCore21SVGDocumentExtensionsD2Ev
+__ZN3WTF20deleteAllPairSecondsIPNS_7HashSetIPN7WebCore16SVGStyledElementENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEEEKNS_7HashMapIN
+__ZN7WebCore22JSSVGDocumentPrototypeD1Ev
+__ZN7WebCore5XPath6Parser16registerNodeTestEPNS0_4Step8NodeTestE
+__ZN3WTF7HashSetIPN7WebCore5XPath4Step8NodeTestENS_7PtrHashIS5_EENS_10HashTraitsIS5_EEE3addERKS5_
+__ZN3WTF9HashTableIPN7WebCore5XPath4Step8NodeTestES5_NS_17IdentityExtractorIS5_EENS_7PtrHashIS5_EENS_10HashTraitsIS5_EESB_E6exp
+__ZN3WTF9HashTableIPN7WebCore5XPath4Step8NodeTestES5_NS_17IdentityExtractorIS5_EENS_7PtrHashIS5_EENS_10HashTraitsIS5_EESB_E6reh
+__ZN3WTF9HashTableIPN7WebCore5XPath4Step8NodeTestES5_NS_17IdentityExtractorIS5_EENS_7PtrHashIS5_EENS_10HashTraitsIS5_EESB_E13al
+__ZN7WebCore5XPath6Parser14deleteNodeTestEPNS0_4Step8NodeTestE
+__ZN3WTF9HashTableIPN7WebCore5XPath4Step8NodeTestES5_NS_17IdentityExtractorIS5_EENS_7PtrHashIS5_EENS_10HashTraitsIS5_EESB_E4fin
+__ZN3WTF9HashTableIPN7WebCore5XPath4Step8NodeTestES5_NS_17IdentityExtractorIS5_EENS_7PtrHashIS5_EENS_10HashTraitsIS5_EESB_E47re
+__ZN3WTF9HashTableIPN7WebCore5XPath4Step8NodeTestES5_NS_17IdentityExtractorIS5_EENS_7PtrHashIS5_EENS_10HashTraitsIS5_EESB_E6rem
+__ZN7WebCore43jsDocumentPrototypeFunctionCreateExpressionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_15XPathExpressionE
+__ZN7WebCore17JSXPathExpression15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSXPathExpressionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15XPathExpressionEEE
+__ZN7WebCore17JSXPathExpressionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15XPathExpressionEEE
+__ZN7WebCore21NativeXPathNSResolver18lookupNamespaceURIERKNS_6StringE
+__ZNK7WebCore4Node18lookupNamespaceURIERKNS_6StringE
+__ZN7WebCore5XPathL14createFunCountEv
+__ZN7WebCore5XPath6Parser19makeTokenAndAdvanceEiNS0_9NumericOp6OpcodeEi
+__ZN7WebCore5XPathL11createFunIdEv
+__ZN7WebCore5XPathL21createFunNamespaceURIEv
+__ZN7WebCore5XPathL13createFunNameEv
+__ZN7WebCore5XPathL15createFunStringEv
+__ZN7WebCore5XPathL19createFunStartsWithEv
+__ZN7WebCore5XPathL24createFunSubstringBeforeEv
+__ZN7WebCore5XPathL23createFunSubstringAfterEv
+__ZN7WebCore5XPathL18createFunSubstringEv
+__ZN7WebCore5XPathL21createFunStringLengthEv
+__ZN7WebCore5XPathL23createFunNormalizeSpaceEv
+__ZN7WebCore5XPathL18createFunTranslateEv
+__ZN7WebCore5XPathL16createFunBooleanEv
+__ZN7WebCore5XPathL13createFunTrueEv
+__ZN7WebCore5XPathL14createFunFalseEv
+__ZN7WebCore5XPathL13createFunLangEv
+__ZN7WebCore5XPathL15createFunNumberEv
+__ZN7WebCore5XPathL14createFunFloorEv
+__ZN7WebCore5XPathL16createFunCeilingEv
+__ZN7WebCore5XPathL14createFunRoundEv
+__ZN7WebCore17JSXPathExpressionD1Ev
+__ZN7WebCore17JSXPathExpressionD2Ev
+__ZN7WebCore5XPath5UnionD0Ev
+__ZN7WebCore5XPath8FunCountD0Ev
+__ZN7WebCore5XPath8NegativeD0Ev
+__ZN7WebCore5XPath5FunIdD0Ev
+__ZN7WebCore5XPath15FunNamespaceURID0Ev
+__ZN7WebCore5XPath7FunNameD0Ev
+__ZN7WebCore5XPath9FunStringD0Ev
+__ZN7WebCore5XPath13FunStartsWithD0Ev
+__ZN7WebCore5XPath18FunSubstringBeforeD0Ev
+__ZN7WebCore5XPath17FunSubstringAfterD0Ev
+__ZN7WebCore5XPath12FunSubstringD0Ev
+__ZN7WebCore5XPath15FunStringLengthD0Ev
+__ZN7WebCore5XPath17FunNormalizeSpaceD0Ev
+__ZN7WebCore5XPath12FunTranslateD0Ev
+__ZN7WebCore5XPath10FunBooleanD0Ev
+__ZN7WebCore5XPath7FunTrueD0Ev
+__ZN7WebCore5XPath8FunFalseD0Ev
+__ZN7WebCore5XPath7FunLangD0Ev
+__ZN7WebCore5XPath9FunNumberD0Ev
+__ZN7WebCore5XPath8FunFloorD0Ev
+__ZN7WebCore5XPath10FunCeilingD0Ev
+__ZN7WebCore5XPath8FunRoundD0Ev
+__ZNK7WebCore5XPath5FunId8evaluateEv
+__ZN7WebCore26JSXPathExpressionPrototypeD1Ev
+__ZN7WebCore23JSProcessingInstruction15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSProcessingInstructionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21ProcessingInstructionEEE
+__ZN7WebCore23JSProcessingInstructionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21ProcessingInstructionEEE
+__ZN7WebCore23JSProcessingInstruction18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore23JSProcessingInstructionD1Ev
+__ZN7WebCore14JSCDATASection15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSTextPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSCDATASectionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12CDATASectionEEE
+__ZN7WebCore14JSCDATASectionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12CDATASectionEEE
+__ZN7WebCore14JSCDATASectionD1Ev
+__ZN7WebCore32JSProcessingInstructionPrototypeD1Ev
+__ZN7WebCore23JSCDATASectionPrototypeD1Ev
+__ZN3WTF15deleteAllValuesIPN7WebCore5XPath9ParseNodeEKNS_9HashTableIS4_S4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10Has
+__ZN3WTF9HashTableIPNS_6VectorIPN7WebCore5XPath9PredicateELm0EEES7_NS_17IdentityExtractorIS7_EENS_7PtrHashIS7_EENS_10HashTraits
+__ZN3WTF9HashTableIPNS_6VectorIPN7WebCore5XPath10ExpressionELm0EEES7_NS_17IdentityExtractorIS7_EENS_7PtrHashIS7_EENS_10HashTrai
+__ZN3WTF15deleteAllValuesIPN7WebCore6StringEKNS_9HashTableIS3_S3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS
+__ZN3WTF9HashTableIPN7WebCore6StringES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E5clearEv
+__ZN3WTF15deleteAllValuesIPN7WebCore5XPath4Step8NodeTestEKNS_9HashTableIS5_S5_NS_17IdentityExtractorIS5_EENS_7PtrHashIS5_EENS_1
+__ZN3WTF9HashTableIPN7WebCore5XPath4Step8NodeTestES5_NS_17IdentityExtractorIS5_EENS_7PtrHashIS5_EENS_10HashTraitsIS5_EESB_E5cle
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14XPathExceptionE
+__ZN7WebCore16JSXPathException15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSXPathExceptionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14XPathExceptionEEE
+__ZN7WebCore16JSXPathExceptionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14XPathExceptionEEE
+__ZN7WebCore16JSXPathException18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSXPathExceptionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20jsXPathExceptionCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSXPathExceptionD1Ev
+__ZN7WebCore16JSXPathExceptionD2Ev
+__ZN7WebCore25JSXPathExceptionPrototypeD1Ev
+__ZNK7WebCore4Node15ancestorElementEv
+__ZN7WebCore15EntityReferenceC1EPNS_8DocumentERKNS_6StringE
+__ZN7WebCore15EntityReferenceC2EPNS_8DocumentERKNS_6StringE
+__ZNK7WebCore15EntityReference8nodeTypeEv
+__ZN7WebCore17JSEntityReference15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSEntityReferenceC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15EntityReferenceEEE
+__ZN7WebCore17JSEntityReferenceC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15EntityReferenceEEE
+__ZNK7WebCore17JSEntityReference9classInfoEv
+__ZN7WebCore17JSEntityReferenceD1Ev
+__ZThn8_N7WebCore15EntityReferenceD0Ev
+__ZN7WebCore15EntityReferenceD0Ev
+__ZNK7WebCore5XPath9FunString8evaluateEv
+__ZN7WebCore5XPath13isRootDomNodeEPNS_4NodeE
+__ZN7WebCore26JSEntityReferencePrototypeD1Ev
+__ZN7WebCore17JSXPathExpression18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore26JSXPathExpressionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore42jsXPathExpressionPrototypeFunctionEvaluateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore17JSXPathExpression9classInfoEv
+__ZN7WebCore49jsDocumentPrototypeFunctionGetElementsByTagNameNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore48jsElementPrototypeFunctionGetElementsByTagNameNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore26JSXPathNSResolverPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore52jsXPathNSResolverPrototypeFunctionLookupNamespaceURIEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore12RenderObject10nextOffsetEi
+__ZN7WebCore12jsNodePrefixEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7Element13virtualPrefixEv
+__ZN7WebCore23jsXPathResultResultTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsXPathResultBooleanValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11XPathResult12booleanValueERi
+__ZN7WebCore24jsXPathResultNumberValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11XPathResult11numberValueERi
+__ZN7WebCore28jsXPathResultSingleNodeValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11XPathResult15singleNodeValueERi
+__ZN7WebCore24jsXPathResultStringValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11XPathResult11stringValueERi
+__ZN7WebCore33jsXPathResultInvalidIteratorStateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11XPathResult20invalidIteratorStateEv
+__ZNK7WebCore5XPath18FunSubstringBefore8evaluateEv
+__ZNK7WebCore5XPath7NodeSet7anyNodeEv
+__ZN7WebCore15jsNodeLocalNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn112_NK7WebCore17HTMLScriptElement13scriptContentEv
+__ZNK7WebCore17HTMLScriptElement13scriptContentEv
+__ZN7WebCore26setJSHTMLTableElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLTableElement8setWidthERKNS_6StringE
+__ZNK7WebCore14JSCDATASection9classInfoEv
+__ZThn8_N7WebCore12CDATASectionD0Ev
+__ZNK7WebCore7Element8nodeNameEv
+__ZN7WebCore29jsProcessingInstructionTargetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsProcessingInstructionDataEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore23JSProcessingInstruction9classInfoEv
+__ZN7WebCore22jsDocumentTypeEntitiesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore21ProcessingInstruction8nodeNameEv
+__ZN7WebCore17JSEntityReference18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore43jsDOMCoreExceptionPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore18JSDOMCoreException9classInfoEv
+__ZNK7WebCore13ExceptionBase8toStringEv
+__ZN7WebCore23jsDocumentTypeNotationsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL14mapConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZNK7WebCore21JSHTMLFrameSetElement9classInfoEv
+__ZNK7WebCore9Tokenizer14processingDataEv
+__ZN7WebCoreL18isindexConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZNK7WebCore11FrameLoader16responseMIMETypeEv
+__ZN7WebCore13ImageDocument17windowSizeChangedEv
+__ZNK7WebCore13ImageDocument17imageFitsInWindowEv
+__ZN7WebCore13ImageDocument16resizeImageToFitEv
+__ZNK7WebCore13ImageDocument5scaleEv
+__ZNK7WebCore13ImageDocument15isImageDocumentEv
+__ZN7WebCore18ImageEventListenerD0Ev
+__ZN7WebCore12IconDatabase25removeIconFromSQLDatabaseERKNS_6StringE
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm2048EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm2048EE14expandCapacityEm
+__ZN3WTF6VectorIPKN7WebCore14SimpleFontDataELm2048EE15reserveCapacityEm
+__ZN3WTF6VectorItLm2048EE14expandCapacityEmPKt
+__ZN3WTF6VectorItLm2048EE14expandCapacityEm
+__ZN3WTF6VectorItLm2048EE15reserveCapacityEm
+__ZN3WTF6VectorI6CGSizeLm2048EE14expandCapacityEmPKS1_
+__ZN3WTF6VectorI6CGSizeLm2048EE14expandCapacityEm
+__ZN3WTF6VectorI6CGSizeLm2048EE15reserveCapacityEm
+__ZN7WebCore13HTMLTokenizer11parseServerERNS_15SegmentedStringENS0_5StateE
+__ZN7WebCore31jsDOMWindowDOMParserConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11JSDOMParser14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore22JSDOMParserConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore20JSDOMParserPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore11JSDOMParser15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSDOMParserConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22JSDOMParserConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCore22JSDOMParserConstructor9constructEPN3JSC9ExecStateEPNS1_8JSObjectERKNS1_7ArgListE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_9DOMParserE
+__ZN7WebCore11JSDOMParserC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9DOMParserEEE
+__ZN7WebCore11JSDOMParserC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9DOMParserEEE
+__ZN7WebCore11JSDOMParser18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20JSDOMParserPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore43jsDOMParserPrototypeFunctionParseFromStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore11JSDOMParser9classInfoEv
+__ZN7WebCore9DOMParser15parseFromStringERKNS_6StringES3_
+__ZN7WebCore9Tokenizer35executeScriptsWaitingForStylesheetsEv
+__ZN7WebCore7Element26copyNonAttributePropertiesEPKS0_
+__ZNK7WebCore9Attribute5cloneEv
+__ZNK7WebCore4Attr13virtualPrefixEv
+__ZNK7WebCore4Attr6prefixEv
+__ZN7WebCore37jsDocumentPrototypeFunctionImportNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document10importNodeEPNS_4NodeEbRi
+__ZNK7WebCore4Attr16virtualLocalNameEv
+__ZNK7WebCore4Attr9localNameEv
+__ZN7WebCore11JSDOMParserD1Ev
+__ZN7WebCore11JSDOMParserD2Ev
+__ZN7WebCore20jsNodeATTRIBUTE_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsNodeCDATA_SECTION_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsNodeCOMMENT_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsNodeDOCUMENT_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsNodeDOCUMENT_FRAGMENT_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSDOMParserPrototypeD1Ev
+__ZN7WebCore22JSDOMParserConstructorD1Ev
+__ZNK7WebCore17HTMLScriptElement14isURLAttributeEPNS_9AttributeE
+__ZNK7WebCore17HTMLIFrameElement14isURLAttributeEPNS_9AttributeE
+__ZNK7WebCore17CSSInheritedValue7cssTextEv
__ZNK7WebCore17JSHTMLFontElement9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore22JSHTMLInputElementBaseEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore22JSHTMLInputElementBase16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore17RenderTextControl12scrollHeightEv
-__ZN7WebCore22JSHTMLInputElementBase16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore16HTMLInputElement17setSelectionStartEi
-__ZN7WebCore16HTMLInputElement15setSelectionEndEi
-__ZN7WebCore12HTMLDocument7fgColorEv
-__ZN7WebCore14RenderListItem16setExplicitValueEi
-__ZN7WebCore14RenderListItem20explicitValueChangedEv
-__ZNK7WebCore12RenderObject14nextInPreOrderEPS0_
-__ZNK7WebCore12RenderObject27nextInPreOrderAfterChildrenEPS0_
-__ZN7WebCore17HTMLButtonElement8setValueERKNS_6StringE
-__ZNK7WebCore17HTMLButtonElement5valueEv
-__ZN7WebCore17HTMLAnchorElement11setTabIndexEi
-__ZN7WebCore15JSHTMLLIElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore13HTMLLIElement8setValueEi
-__ZNK7WebCore17HTMLObjectElement14isURLAttributeEPNS_9AttributeE
-__ZNK7WebCore16HTMLParamElement14isURLAttributeEPNS_9AttributeE
-__ZNK7WebCore16HTMLEmbedElement14isURLAttributeEPNS_9AttributeE
-__ZN7WebCore25JSHTMLDocumentConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore29JSDocumentFragmentConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore14SVGRenderStyleeqERKS0_
-__ZN7WebCore18JSHTMLLabelElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore16HTMLLabelElement10setHtmlForERKNS_6StringE
-__ZN7WebCore16JSHTMLMapElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore16JSHTMLMapElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore14HTMLMapElement7setNameERKNS_6StringE
-__ZN7WebCore17JSHTMLAreaElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore15HTMLAreaElement8setShapeERKNS_6StringE
-__ZN7WebCore15HTMLAreaElement9setCoordsERKNS_6StringE
__ZNK7WebCore15JSHTMLHRElement9classInfoEv
-__ZN7WebCore16HTMLStyleElement8setMediaERKNS_12AtomicStringE
-__ZN7WebCore19HTMLFrameSetElement11recalcStyleENS_4Node11StyleChangeE
-__ZN7WebCore19HTMLTableRowElement10setBgColorERKNS_6StringE
-__ZN7WebCore12ClipboardMac8writeURLERKNS_4KURLERKNS_6StringEPNS_5FrameE
-__ZN7WebCore15HTMLLinkElement6setRelERKNS_6StringE
-__ZN7WebCore15HTMLLinkElement7setTypeERKNS_6StringE
-__ZN7WebCore15HTMLLinkElement7setHrefERKNS_6StringE
-__ZNK7WebCore11RenderBlock16leftmostPositionEbb
-__ZNK7WebCore10RenderFlow16leftmostPositionEbb
-__ZNK7WebCore9RenderBox16leftmostPositionEbb
-__ZNK7WebCore18RenderTableSection16leftmostPositionEbb
-__ZN7WebCore16HTMLInputElement19didRestoreFromCacheEv
-__ZN7WebCore11HTMLElement6setDirERKNS_6StringE
-__ZN7WebCore15HTMLBaseElement19removedFromDocumentEv
-__ZN7WebCore21gbkCallbackSubstituteEPKvP25UConverterFromUnicodeArgsPKtii24UConverterCallbackReasonP10UErrorCode
-__ZN7WebCore10gbkEscapesEv
-__ZN3WTF7HashMapIitNS_7IntHashIjEENS_10HashTraitsIiEENS3_ItEEE3addERKiRKt
-__ZN3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E3addIiPN3KJS14DOMWindowTimerENS_17HashMapTranslatorILb1ES1_IiSF_ENS_18PairBaseHashTraitsIS9_NS8_ISF_EEEESA_S6_EEEES1_INS_17HashTableIteratorIiS2_S4_S6_SA_S9_EEbERKT_RKT0_
-__ZNK3WTF9HashTableIiSt4pairIiiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIiEES9_EES9_E8containsIiNS_22IdentityHashTranslatorIiS2_S6_EEEEbRKT_
-__ZNK3WTF7HashMapIitNS_7IntHashIjEENS_10HashTraitsIiEENS3_ItEEE3getERKi
-__ZNK7WebCore13HTMLTokenizer15executingScriptEv
-__ZN7WebCore19JSHTMLObjectElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore42jsCSSStyleSheetPrototypeFunctionInsertRuleEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore11HTMLElement12setOuterHTMLERKNS_6StringERi
-__ZNK7WebCore15HTMLBodyElement4textEv
-__ZN7WebCore12HTMLDocument9linkColorEv
-__ZN7WebCore30jsConsolePrototypeFunctionInfoEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Console4infoERKNS_6StringE
-__ZNK7WebCore15HTMLMenuElement17endTagRequirementEv
-__ZNK7WebCore15HTMLMenuElement11tagPriorityEv
-__ZN7WebCore10RenderFlow19createAnonymousFlowEPNS_8DocumentEPNS_11RenderStyleE
-__ZN7WebCore18RenderTextFragmentC1EPNS_4NodeEPNS_10StringImplEii
-__ZN7WebCore18JSHTMLParamElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore20createMarqueeWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore20JSHTMLMarqueeElementC1EPN3KJS8JSObjectEPNS_18HTMLMarqueeElementE
-__ZN7WebCore20JSHTMLMarqueeElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore29JSHTMLMarqueeElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore7Marquee7suspendEv
-__ZN7WebCore38min_device_pixel_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore34device_pixel_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore12compareValueIfEEbT_S1_NS_18MediaFeaturePrefixE
-__ZN7WebCore15JSHTMLHRElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore12RenderObject37markAllDescendantsWithFloatsForLayoutEPS0_
-__ZN7WebCore28JSHTMLLegendElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore19JSHTMLLegendElement9classInfoEv
-__ZN7WebCore12RenderObject13containsFloatEPS0_
-__ZNK7WebCore16HTMLImageElement5alignEv
-__ZN7WebCore18JSHTMLTitleElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore19JSHTMLLegendElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore21JSHTMLOptGroupElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore23RenderFileUploadControlC2EPNS_16HTMLInputElementE
-__ZN7WebCore11FileChooser6createEPNS_17FileChooserClientERKNS_6StringE
-__ZN7WebCore11FileChooserC2EPNS_17FileChooserClientERKNS_6StringE
-__ZN7WebCore11FileChooser10chooseIconERKNS_6StringE
-__ZN7WebCore4Icon14newIconForFileERKNS_6StringE
--[WebCoreOpenPanelController initWithFileChooser:]
-__ZN7WebCore23RenderFileUploadControl8setStyleEPNS_11RenderStyleE
-__ZN7WebCore23RenderFileUploadControl17updateFromElementEv
-__ZN7WebCore32HTMLFileUploadInnerButtonElementC2EPNS_8DocumentEPNS_4NodeE
-__ZN7WebCore25fileButtonChooseFileLabelEv
-__ZNK7WebCore23RenderFileUploadControl17createButtonStyleEPNS_11RenderStyleE
-__ZN7WebCore23RenderFileUploadControl14calcPrefWidthsEv
-__ZN7WebCore23RenderFileUploadControl11paintObjectERNS_12RenderObject9PaintInfoEii
-__ZNK7WebCore23RenderFileUploadControl16maxFilenameWidthEv
-__ZNK7WebCore11FileChooser16basenameForWidthERKNS_4FontEi
-__ZN7WebCore29fileButtonNoFileSelectedLabelEv
-__ZN7WebCore11FileChooserD2Ev
--[WebCoreOpenPanelController disconnectFileChooser]
-__ZN7WebCore17JSTextConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore20JSCommentConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25JSCDATASectionConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore14XMLHttpRequest4openERKNS_6StringERKNS_4KURLEbS3_S3_Ri
-__ZN3KJS17staticValueGetterIN7WebCore26JSCanvasRenderingContext2DEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore26JSCanvasRenderingContext2D16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore24CanvasRenderingContext2D9lineWidthEv
+__ZN7WebCore26setJSHTMLFormElementMethodEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLFormElement9setMethodERKNS_6StringE
+__ZN7WebCore26setJSHTMLFormElementTargetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLFormElement9setTargetERKNS_6StringE
+__ZN7WebCore14jsNodeOnchangeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node8onchangeEv
+__ZN7WebCore21jsHTMLDocumentBgColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12HTMLDocument7bgColorEv
+__ZN7WebCore19JSHTMLCanvasElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore28setJSHTMLCanvasElementHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLCanvasElement9setHeightEi
+__ZN7WebCore27setJSHTMLCanvasElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLCanvasElement8setWidthEi
+__ZN7WebCore24jsHTMLCanvasElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLCanvasElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionClearRectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D9clearRectEffff
+__ZN7WebCore15GraphicsContext9clearRectERKNS_9FloatRectE
+__ZN7WebCore47jsCanvasRenderingContext2DPrototypeFunctionRectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D4rectEffff
+__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionClosePathEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D9closePathEv
+__ZN7WebCore63jsCanvasRenderingContext2DPrototypeFunctionCreateLinearGradientEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS
+__ZN7WebCore24CanvasRenderingContext2D20createLinearGradientEffffRi
+__ZN7WebCore14CanvasGradientC1ERKNS_10FloatPointES3_
+__ZN7WebCore14CanvasGradientC2ERKNS_10FloatPointES3_
+__ZNK7WebCore24CanvasRenderingContext2D27prepareGradientForDashboardEPNS_14CanvasGradientE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14CanvasGradientE
+__ZN7WebCore16JSCanvasGradient15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSCanvasGradientC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14CanvasGradientEEE
+__ZN7WebCore16JSCanvasGradientC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14CanvasGradientEEE
+__ZN7WebCore25JSCanvasGradientPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore45jsCanvasGradientPrototypeFunctionAddColorStopEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16JSCanvasGradient9classInfoEv
+__ZN7WebCore14CanvasGradient12addColorStopEfRKNS_6StringERi
+__ZN7WebCore9CSSParser10parseColorERjRKNS_6StringEb
+__ZN7WebCore9CSSParser10parseColorEPNS_26CSSMutableStyleDeclarationERKNS_6StringE
+__ZN3WTF12bitwise_castIdlEET_T0_
+__ZN7WebCore38setJSCanvasRenderingContext2DFillStyleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore26JSCanvasRenderingContext2D12setFillStyleEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore11CanvasStyleC1EN3WTF10PassRefPtrINS_14CanvasGradientEEE
+__ZN7WebCore11CanvasStyleC2EN3WTF10PassRefPtrINS_14CanvasGradientEEE
+__ZN7WebCore24CanvasRenderingContext2D12setFillStyleEN3WTF10PassRefPtrINS_11CanvasStyleEEE
+__ZN7WebCore11CanvasStyle14applyFillColorEPNS_15GraphicsContextE
+__ZN7WebCore15GraphicsContext15setFillGradientEN3WTF10PassRefPtrINS_8GradientEEE
+__ZN7WebCore47jsCanvasRenderingContext2DPrototypeFunctionFillEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D4fillEv
+__ZNSt17_Temporary_bufferIPN7WebCore8Gradient9ColorStopES2_EC1ES3_S3_
+__ZNSt17_Temporary_bufferIPN7WebCore8Gradient9ColorStopES2_EC2ES3_S3_
+__ZSt22__get_temporary_bufferIN7WebCore8Gradient9ColorStopEESt4pairIPT_lElS5_
+__ZSt26__uninitialized_fill_n_auxIPN7WebCore8Gradient9ColorStopElS2_EvT_T0_RKT1_St12__false_type
+__ZSt22__stable_sort_adaptiveIPN7WebCore8Gradient9ColorStopES3_lPFbRKS2_S5_EEvT_S8_T0_T1_T2_
+__ZSt24__merge_sort_with_bufferIPN7WebCore8Gradient9ColorStopES3_PFbRKS2_S5_EEvT_S8_T0_T1_
+__ZSt22__chunk_insertion_sortIPN7WebCore8Gradient9ColorStopElPFbRKS2_S5_EEvT_S8_T0_T1_
+__ZSt16__insertion_sortIPN7WebCore8Gradient9ColorStopEPFbRKS2_S5_EEvT_S8_T0_
+__ZN7WebCoreL12compareStopsERKNS_8Gradient9ColorStopES3_
+__ZSt25__unguarded_linear_insertIPN7WebCore8Gradient9ColorStopES2_PFbRKS2_S5_EEvT_T0_T1_
+__ZSt16__merge_adaptiveIPN7WebCore8Gradient9ColorStopElS3_PFbRKS2_S5_EEvT_S8_S8_T0_S9_T1_S9_T2_
+__ZSt16__merge_backwardIPN7WebCore8Gradient9ColorStopES3_S3_PFbRKS2_S5_EET1_T_S9_T0_SA_S8_T2_
+__ZSt23return_temporary_bufferIN7WebCore8Gradient9ColorStopEEvPT_
+__ZN7WebCore63jsCanvasRenderingContext2DPrototypeFunctionCreateRadialGradientEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS
+__ZN7WebCore24CanvasRenderingContext2D20createRadialGradientEffffffRi
+__ZN7WebCore14CanvasGradientC1ERKNS_10FloatPointEfS3_f
+__ZN7WebCore14CanvasGradientC2ERKNS_10FloatPointEfS3_f
+__ZN7WebCore8GradientC1ERKNS_10FloatPointEfS3_f
+__ZN7WebCore8GradientC2ERKNS_10FloatPointEfS3_f
+__ZN7WebCore47jsCanvasRenderingContext2DPrototypeFunctionSaveEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D4saveEv
+__ZN3WTF6VectorIN7WebCore24CanvasRenderingContext2D5StateELm1EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIN7WebCore24CanvasRenderingContext2D5StateELm1EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore24CanvasRenderingContext2D5StateELm1EE15reserveCapacityEm
+__ZN7WebCore59jsCanvasRenderingContext2DPrototypeFunctionQuadraticCurveToEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7A
+__ZN7WebCore24CanvasRenderingContext2D16quadraticCurveToEffff
+__ZN7WebCore4Path14addQuadCurveToERKNS_10FloatPointES3_
+__ZN7WebCore47jsCanvasRenderingContext2DPrototypeFunctionClipEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D4clipEv
+__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionDrawImageEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore26JSCanvasRenderingContext2D9drawImageEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_16HTMLImageElementEffffRi
+__ZN7WebCoreL4sizeEPNS_16HTMLImageElementE
+__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_16HTMLImageElementERKNS_9FloatRectES5_Ri
+__ZN7WebCore24CanvasRenderingContext2D11checkOriginERKNS_4KURLE
+__ZNK7WebCore11BitmapImage23hasSingleSecurityOriginEv
+__ZSt5mergeIPN7WebCore8Gradient9ColorStopES3_S3_PFbRKS2_S5_EET1_T_S9_T0_SA_S8_T2_
+__ZN7WebCore15GraphicsContext17setStrokeGradientEN3WTF10PassRefPtrINS_8GradientEEE
+__ZN7WebCore16JSCanvasGradientD1Ev
+__ZN7WebCore16JSCanvasGradientD2Ev
+__ZThn8_N7WebCore17HTMLCanvasElementD0Ev
+__ZN7WebCore25JSCanvasGradientPrototypeD1Ev
+__ZN7WebCore33jsDOMWindowXMLDocumentConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsDOMWindowXMLSerializerConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSXMLSerializer14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSXMLSerializerConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore24JSXMLSerializerPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSXMLSerializer15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSXMLSerializerPrototypeD1Ev
+__ZN7WebCore26JSXMLSerializerConstructorD1Ev
+__ZN7WebCore20jsMessageEventOriginEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL25max_widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore29setJSHTMLScriptElementCharsetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLScriptElement10setCharsetERKNS_6StringE
+__ZN7WebCore26setJSHTMLImageElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement8setAlignERKNS_6StringE
+__ZN7WebCore17jsNodeOnmousedownEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node11onmousedownEv
+__ZN7WebCore13jsNodeOnresetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node7onresetEv
+__ZNK7WebCore26CSSMutableStyleDeclaration17getShorthandValueEPKii
+__ZN7WebCore48jsHTMLElementPrototypeFunctionInsertAdjacentHTMLEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11HTMLElement18insertAdjacentHTMLERKNS_6StringES3_Ri
+__ZN7WebCore11HTMLElement14insertAdjacentERKNS_6StringEPNS_4NodeERi
+__ZN7WebCore14RenderTableRow12imageChangedEPvPKNS_7IntRectE
+__ZN7WebCore9StyleBase11checkLoadedEv
+__ZN7WebCore10ShadowDataC1ERKS0_
+__ZN7WebCore10ShadowDataC2ERKS0_
+__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm64EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm64EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore26CSSMutableStyleDeclarationELm64EE15reserveCapacityEm
+__ZN7WebCore28jsHTMLHtmlElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLHtmlElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLHtmlElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZNK7WebCore16JSHTMLModElement9classInfoEv
+__ZN7WebCore16PendingCallbacks25PendingCDATABlockCallback4callEPNS_12XMLTokenizerE
+__ZN7WebCore16PendingCallbacks25PendingCDATABlockCallbackD0Ev
+__ZN7WebCore16PendingCallbacks36PendingProcessingInstructionCallback4callEPNS_12XMLTokenizerE
+__ZN7WebCore16PendingCallbacks36PendingProcessingInstructionCallbackD0Ev
+__ZN7WebCore21ProcessingInstruction19removedFromDocumentEv
+__ZN7WebCore28JSHTMLHtmlElementConstructorD1Ev
+__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionTranslateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D9translateEff
+__ZN7WebCore4Path9transformERKNS_20TransformationMatrixE
+__ZN7WebCore50jsCanvasRenderingContext2DPrototypeFunctionRestoreEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D7restoreEv
+__ZN7WebCore37setJSCanvasRenderingContext2DLineJoinEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore24CanvasRenderingContext2D11setLineJoinERKNS_6StringE
__ZN7WebCore13parseLineJoinERKNS_6StringERNS_8LineJoinE
-__ZNK7WebCore21JSHTMLOptGroupElement9classInfoEv
-__ZNK7WebCore14RenderReplaced14caretMaxOffsetEv
-__ZN7WebCore42jsHTMLMarqueeElementPrototypeFunctionStartEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore20JSHTMLMarqueeElement9classInfoEv
-__ZN7WebCore18HTMLMarqueeElement5startEv
-__ZN7WebCore16JSHTMLCollection14callAsFunctionEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_4ListE
+__ZN7WebCore14JSCDATASection18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore12CDATASection8nodeNameEv
+__ZNK7WebCore12RenderInline12offsetHeightEv
+__ZN7WebCore23setJSDocumentXMLVersionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15parseAttributesERKNS_6StringERb
+__ZN7WebCoreL31attributesStartElementNsHandlerEPvPKhS2_S2_iPS2_iiS3_
+__ZNK3WTF9HashTableIN7WebCore6StringESt4pairIS2_S2_ENS_18PairFirstExtractorIS4_EENS1_10StringHashENS_14PairHashTraitsINS_10Hash
+__ZNK3WTF7HashMapIN7WebCore6StringES2_NS1_10StringHashENS_10HashTraitsIS2_EES5_E3getERKS2_
+__ZN7WebCore9DocLoader20requestXSLStyleSheetERKNS_6StringE
+__ZN7WebCore19CachedXSLStyleSheetC1ERKNS_6StringE
+__ZN7WebCore19CachedXSLStyleSheetC2ERKNS_6StringE
+__ZN7WebCore19CachedXSLStyleSheet9addClientEPNS_20CachedResourceClientE
+__ZN7WebCore12XMLTokenizer11stopParsingEv
+__ZN7WebCore18xmlDocPtrForStringEPNS_9DocLoaderERKNS_6StringES4_
+__ZN7WebCore17XMLTokenizerScopeC1EPNS_9DocLoaderEPFvPvPKczEPFvS3_P9_xmlErrorES3_
+__ZN7WebCore17XMLTokenizerScopeC2EPNS_9DocLoaderEPFvPvPKczEPFvS3_P9_xmlErrorES3_
+__ZN7WebCoreL9matchFuncEPKc
+__ZN7WebCoreL8openFuncEPKc
+__ZN7WebCoreL23shouldAllowExternalLoadERKNS_4KURLE
+__ZN7WebCoreL8readFuncEPvPci
+__ZN7WebCoreL9closeFuncEPv
+__ZN7WebCore8Document18setTransformSourceEPv
+__ZN7WebCore19CachedXSLStyleSheet5errorEv
+__ZN7WebCore19CachedXSLStyleSheet11checkNotifyEv
+__ZThn88_N7WebCore21ProcessingInstruction16setXSLStyleSheetERKNS_6StringES3_
+__ZN7WebCore21ProcessingInstruction16setXSLStyleSheetERKNS_6StringES3_
+__ZN7WebCore13XSLStyleSheetC1EPNS_4NodeERKNS_6StringEb
+__ZN7WebCore13XSLStyleSheetC2EPNS_4NodeERKNS_6StringEb
+__ZN7WebCore21ProcessingInstruction15parseStyleSheetERKNS_6StringE
+__ZN7WebCore13XSLStyleSheet11parseStringERKNS_6StringEb
+__ZN7WebCore13XSLStyleSheet9docLoaderEv
+__ZN7WebCore13XSLStyleSheet15loadChildSheetsEv
+__ZN7WebCore13XSLStyleSheet8documentEv
+__ZN7WebCore14CachedResource17allClientsRemovedEv
+__ZN7WebCore13XSLStyleSheet11checkLoadedEv
+__ZN7WebCore13XSLStyleSheet9isLoadingEv
+__ZN7WebCore21ProcessingInstruction11sheetLoadedEv
+__ZNK7WebCore21ProcessingInstruction9isLoadingEv
+__ZN7WebCore8Document17applyXSLTransformEPNS_21ProcessingInstructionE
+__ZN7WebCore13XSLTProcessor17transformToStringEPNS_4NodeERNS_6StringES4_S4_
+__ZL21initxsltSetLoaderFuncPFP7_xmlDocPKhP8_xmlDictiPv12xsltLoadTypeE
+__ZN7WebCore13XSLStyleSheetD0Ev
+__ZN7WebCore19CachedXSLStyleSheetD0Ev
+__ZN7WebCore7Element14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore21jsHTMLElementChildrenEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26setJSHTMLScriptElementTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLScriptElement7setTextERKNS_6StringE
+__ZN7WebCore16PendingCallbacks22PendingCommentCallback4callEPNS_12XMLTokenizerE
+__ZN7WebCore16PendingCallbacks22PendingCommentCallbackD0Ev
+__ZN7WebCore36jsDocumentPrototypeFunctionAdoptNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document9adoptNodeEN3WTF10PassRefPtrINS_4NodeEEERi
+__ZNK7WebCore15EntityReference8nodeNameEv
+__ZNK7WebCore14JSDocumentType9classInfoEv
+__ZNK7WebCore21ProcessingInstruction9nodeValueEv
+__ZNK7WebCore14RenderFrameSet8edgeInfoEv
+__ZN7WebCore17jsDOMWindowOnblurEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow6onblurEv
+__ZN7WebCore20setJSDOMWindowOnblurEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow9setOnblurEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore17jsTextConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore6JSText14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore17JSTextConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore27jsHTMLModElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSHTMLModElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSHTMLModElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZThn8_N7WebCore21ProcessingInstructionD0Ev
+__ZN7WebCore17JSTextConstructorD1Ev
+__ZN7WebCore27JSHTMLModElementConstructorD1Ev
+__ZN7WebCore8Document15canReplaceChildEPNS_4NodeES2_
+__ZN7WebCore22jsDocumentTypeSystemIdEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsDocumentDocumentURIEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsDocumentInputEncodingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsDocumentXMLEncodingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsDocumentXMLStandaloneEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsDocumentXMLVersionEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10IconLoader7didFailEPNS_17SubresourceLoaderERKNS_13ResourceErrorE
+__ZN7WebCore23JSHTMLBlockquoteElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore24setJSDocumentDocumentURIEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore8Document14setDocumentURIERKNS_6StringE
+__ZN7WebCore26setJSDocumentXMLStandaloneEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41jsXPathResultUNORDERED_NODE_SNAPSHOT_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23JSCustomXPathNSResolverC1EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore23JSCustomXPathNSResolverC2EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore23JSCustomXPathNSResolverD0Ev
+__ZN7WebCore40jsElementPrototypeFunctionScrollIntoViewEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Element14scrollIntoViewEb
+__ZN7WebCore17JSHTMLBaseElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+-[WebCoreSynchronousLoader connection:didFailWithError:]
+__ZN7WebCore20ResourceResponseBase17setHTTPStatusCodeEi
+__ZN7WebCore40jsElementPrototypeFunctionGetAttributeNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore7Element14getAttributeNSERKNS_6StringES3_
+__ZN7WebCore26setJSDOMWindowOnmousewheelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow15setOnmousewheelEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore44jsElementPrototypeFunctionSetAttributeNodeNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9JSElement18setAttributeNodeNSEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore7Element18setAttributeNodeNSEPNS_4AttrERi
+__ZN7WebCore9CSSParser16parseFontFaceSrcEv
+__ZN7WebCore9CSSParser18createFontFaceRuleEv
+__ZN7WebCore15CSSFontFaceRuleC1EPNS_13CSSStyleSheetE
+__ZN7WebCore15CSSFontFaceRuleC2EPNS_13CSSStyleSheetE
+__ZN7WebCore15CSSFontFaceRule14setDeclarationEN3WTF10PassRefPtrINS_26CSSMutableStyleDeclarationEEE
+__ZN7WebCore15CSSFontFaceRule14isFontFaceRuleEv
+__ZN7WebCore15CSSFontSelector15addFontFaceRuleEPKNS_15CSSFontFaceRuleE
+__ZNK7WebCore19CSSFontFaceSrcValue16isSVGFontFaceSrcEv
+__ZNK7WebCore19CSSFontFaceSrcValue17isSupportedFormatEv
+__ZN7WebCore9DocLoader11requestFontERKNS_6StringE
+__ZN7WebCore10CachedFontC1ERKNS_6StringE
+__ZN7WebCore10CachedFontC2ERKNS_6StringE
+__ZN7WebCore10CachedFont4loadEPNS_9DocLoaderE
+__ZN7WebCore17CSSFontFaceSourceC1ERKNS_6StringEPNS_10CachedFontE
+__ZN7WebCore17CSSFontFaceSourceC2ERKNS_6StringEPNS_10CachedFontE
+__ZN7WebCore10CachedFont9addClientEPNS_20CachedResourceClientE
+__ZN7WebCore11CSSFontFace9addSourceEPNS_17CSSFontFaceSourceE
+__ZN3WTF6VectorIPN7WebCore17CSSFontFaceSourceELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore17CSSFontFaceSourceELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore17CSSFontFaceSourceELm0EE15reserveCapacityEm
+__ZNK7WebCore11CSSFontFace7isValidEv
+__ZNK7WebCore17CSSFontFaceSource7isValidEv
+__ZNK3WTF7HashMapIN7WebCore6StringEPNS_6VectorINS_6RefPtrINS1_11CSSFontFaceEEELm0EEENS1_15CaseFoldingHashENS_10HashTraitsIS2_EE
+__ZN3WTF7HashMapIN7WebCore6StringEPNS_6VectorINS_6RefPtrINS1_11CSSFontFaceEEELm0EEENS1_15CaseFoldingHashENS_10HashTraitsIS2_EEN
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS_6VectorINS_6RefPtrINS1_11CSSFontFaceEEELm0EEEENS_18PairFirstExtractorISA_EEN
+__ZN7WebCore9FontCache17getTraitsInFamilyERKNS_12AtomicStringERN3WTF6VectorIjLm0EEE
++[WebFontCache getTraits:inFamily:]
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSFontFaceEEELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSFontFaceEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSFontFaceEEELm0EE15reserveCapacityEm
+__ZNK3WTF7HashMapIN7WebCore6StringEPNS0_IjNS_6RefPtrINS1_20CSSSegmentedFontFaceEEENS_7IntHashIjEENS_10HashTraitsIjEENS8_IS5_EEE
+__ZN3WTF7HashMapIN7WebCore6StringEPNS0_IjNS_6RefPtrINS1_20CSSSegmentedFontFaceEEENS_7IntHashIjEENS_10HashTraitsIjEENS8_IS5_EEEE
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS_7HashMapIjNS_6RefPtrINS1_20CSSSegmentedFontFaceEEENS_7IntHashIjEENS_10HashTr
+__ZNK7WebCore15FontDescription10traitsMaskEv
+__ZNK3WTF7HashMapIjNS_6RefPtrIN7WebCore20CSSSegmentedFontFaceEEENS_7IntHashIjEENS_10HashTraitsIjEENS7_IS4_EEE3getERKj
+__ZN7WebCore20CSSSegmentedFontFaceC1EPNS_15CSSFontSelectorE
+__ZN7WebCore20CSSSegmentedFontFaceC2EPNS_15CSSFontSelectorE
+__ZN3WTF7HashMapIjNS_6RefPtrIN7WebCore20CSSSegmentedFontFaceEEENS_7IntHashIjEENS_10HashTraitsIjEENS7_IS4_EEE3setERKjRKS4_
+__ZN3WTF9HashTableIjSt4pairIjNS_6RefPtrIN7WebCore20CSSSegmentedFontFaceEEEENS_18PairFirstExtractorIS6_EENS_7IntHashIjEENS_14Pai
+__ZNSt17_Temporary_bufferIPPN7WebCore11CSSFontFaceES2_EC1ES3_S3_
+__ZNSt17_Temporary_bufferIPPN7WebCore11CSSFontFaceES2_EC2ES3_S3_
+__ZSt22__get_temporary_bufferIPN7WebCore11CSSFontFaceEESt4pairIPT_lElS5_
+__ZSt22__stable_sort_adaptiveIPPN7WebCore11CSSFontFaceES3_lPFbS2_S2_EEvT_S6_T0_T1_T2_
+__ZSt24__merge_sort_with_bufferIPPN7WebCore11CSSFontFaceES3_PFbS2_S2_EEvT_S6_T0_T1_
+__ZSt22__chunk_insertion_sortIPPN7WebCore11CSSFontFaceElPFbS2_S2_EEvT_S6_T0_T1_
+__ZSt16__insertion_sortIPPN7WebCore11CSSFontFaceEPFbS2_S2_EEvT_S6_T0_
+__ZSt16__merge_adaptiveIPPN7WebCore11CSSFontFaceElS3_PFbS2_S2_EEvT_S6_S6_T0_S7_T1_S7_T2_
+__ZSt5mergeIPPN7WebCore11CSSFontFaceES3_S3_PFbS2_S2_EET1_T_S7_T0_S8_S6_T2_
+__ZN7WebCoreL16compareFontFacesEPNS_11CSSFontFaceES1_
+__ZSt23return_temporary_bufferIPN7WebCore11CSSFontFaceEEvPT_
+__ZN7WebCore20CSSSegmentedFontFace14appendFontFaceEN3WTF10PassRefPtrINS_11CSSFontFaceEEE
+__ZN7WebCore20CSSSegmentedFontFace10pruneTableEv
+__ZN7WebCore11CSSFontFace24addedToSegmentedFontFaceEPNS_20CSSSegmentedFontFaceE
+__ZN3WTF7HashSetIPN7WebCore20CSSSegmentedFontFaceENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore20CSSSegmentedFontFaceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6e
+__ZN3WTF9HashTableIPN7WebCore20CSSSegmentedFontFaceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6r
+__ZN3WTF9HashTableIPN7WebCore20CSSSegmentedFontFaceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13
+__ZN3WTF9HashTableIPN7WebCore20CSSSegmentedFontFaceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSFontFaceEEELm1EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSFontFaceEEELm1EE15reserveCapacityEm
+__ZN3WTF6VectorIPN7WebCore11CSSFontFaceELm32EE6shrinkEm
+__ZN7WebCore20CSSSegmentedFontFace11getFontDataERKNS_15FontDescriptionE
+__ZNK7WebCore20CSSSegmentedFontFace7isValidEv
+__ZNK3WTF7HashMapIjPN7WebCore17SegmentedFontDataENS_7IntHashIjEENS_10HashTraitsIjEENS6_IS3_EEE3getERKj
+__ZN7WebCore11CSSFontFace11getFontDataERKNS_15FontDescriptionEbb
+__ZN7WebCore17CSSFontFaceSource11getFontDataERKNS_15FontDescriptionEbbPNS_15CSSFontSelectorE
+__ZNK3WTF7HashMapIjPN7WebCore14SimpleFontDataENS_7IntHashIjEENS_10HashTraitsIjEENS6_IS3_EEE3getERKj
+__ZNK7WebCore17CSSFontFaceSource8isLoadedEv
+__ZNK7WebCore15CSSFontSelector9docLoaderEv
+__ZN7WebCore10CachedFont17beginLoadIfNeededEPNS_9DocLoaderE
+__ZN7WebCore9FontCache25getLastResortFallbackFontERKNS_15FontDescriptionE
+__ZN3WTF7HashMapIjPN7WebCore14SimpleFontDataENS_7IntHashIjEENS_10HashTraitsIjEENS6_IS3_EEE3setERKjRKS3_
+__ZN3WTF9HashTableIjSt4pairIjPN7WebCore14SimpleFontDataEENS_18PairFirstExtractorIS5_EENS_7IntHashIjEENS_14PairHashTraitsINS_10H
+__ZN3WTF6VectorIN7WebCore13FontDataRangeELm1EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore13FontDataRangeELm1EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore13FontDataRangeELm1EE15reserveCapacityEm
+__ZN3WTF7HashMapIjPN7WebCore17SegmentedFontDataENS_7IntHashIjEENS_10HashTraitsIjEENS6_IS3_EEE3setERKjRKS3_
+__ZN3WTF9HashTableIjSt4pairIjPN7WebCore17SegmentedFontDataEENS_18PairFirstExtractorIS5_EENS_7IntHashIjEENS_14PairHashTraitsINS_
+__ZNK7WebCore17SegmentedFontData12isCustomFontEv
+__ZNK7WebCore17SegmentedFontData9isLoadingEv
+__ZNK7WebCore17SegmentedFontData20fontDataForCharacterEi
+__ZNK7WebCore17SegmentedFontData11isSegmentedEv
+__ZN7WebCore10CachedFont4dataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
+__ZN7WebCore10CachedFont11checkNotifyEv
+__ZN7WebCore17CSSFontFaceSource10fontLoadedEPNS_10CachedFontE
+__ZN7WebCore17CSSFontFaceSource10pruneTableEv
+__ZN7WebCore17GlyphPageTreeNode23pruneTreeCustomFontDataEPKNS_8FontDataE
+__ZN7WebCore17GlyphPageTreeNode19pruneCustomFontDataEPKNS_8FontDataE
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore14SimpleFontDataEKNS_7HashMapIjS3_NS_7IntHashIjEENS_10HashTraitsIjEENS7_IS3_EEEEEEvRT0
+__ZN7WebCore11CSSFontFace10fontLoadedEPNS_17CSSFontFaceSourceE
+__ZN7WebCore20CSSSegmentedFontFace10fontLoadedEPNS_11CSSFontFaceE
+__ZN3WTF20deleteAllPairSecondsIPN7WebCore17SegmentedFontDataEKNS_7HashMapIjS3_NS_7IntHashIjEENS_10HashTraitsIjEENS7_IS3_EEEEEEv
+__ZN7WebCore17SegmentedFontDataD0Ev
+__ZN3WTF6VectorIN7WebCore13FontDataRangeELm1EE6shrinkEm
+__ZN7WebCore15CSSFontSelector10fontLoadedEv
+__ZN7WebCore10CachedFont20ensureCustomFontDataEv
+__ZN7WebCore28createFontCustomPlatformDataEPNS_12SharedBufferE
+__ZN7WebCore10CachedFont26platformDataFromCustomDataEfbbNS_17FontRenderingModeE
+__ZN7WebCore22FontCustomPlatformData16fontPlatformDataEibbNS_17FontRenderingModeE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSFontFaceEEELm0EE6shrinkEm
+__ZN7WebCore20CSSSegmentedFontFaceD1Ev
+__ZN7WebCore20CSSSegmentedFontFaceD2Ev
+__ZN7WebCore11CSSFontFace28removedFromSegmentedFontFaceEPNS_20CSSSegmentedFontFaceE
+__ZN3WTF9HashTableIPN7WebCore20CSSSegmentedFontFaceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4f
+__ZN3WTF9HashTableIPN7WebCore20CSSSegmentedFontFaceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11CSSFontFaceEEELm1EE6shrinkEm
+__ZN7WebCore11CSSFontFaceD1Ev
+__ZN7WebCore11CSSFontFaceD2Ev
+__ZN3WTF15deleteAllValuesIPN7WebCore17CSSFontFaceSourceELm0EEEvRKNS_6VectorIT_XT0_EEE
+__ZN7WebCore17CSSFontFaceSourceD0Ev
+__ZN7WebCore10CachedFont17allClientsRemovedEv
+__ZN7WebCore22FontCustomPlatformDataD1Ev
+__ZN7WebCore22FontCustomPlatformDataD2Ev
+__ZN3WTF6VectorIPN7WebCore17CSSFontFaceSourceELm0EE6shrinkEm
+__ZN7WebCore10CachedFontD0Ev
+__ZN7WebCore15CSSFontFaceRuleD0Ev
+__ZN7WebCore19CSSFontFaceSrcValueD0Ev
+__ZN7WebCore13jsNodeBaseURIEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14jsStringOrNullEPN3JSC9ExecStateERKNS_4KURLE
+__ZNK7WebCore12DocumentType7baseURIEv
+__ZNK7WebCore7Element7baseURIEv
+__ZN7WebCore27setJSHTMLScriptElementDeferEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLScriptElement8setDeferEb
+__ZN7WebCore22jsDocumentTypePublicIdEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore38jsDocumentPrototypeFunctionCreateRangeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_5RangeE
+__ZN7WebCore7JSRange15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore7JSRangeC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_5RangeEEE
+__ZN7WebCore7JSRangeC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_5RangeEEE
+__ZN7WebCore7JSRange18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16JSRangePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore32jsRangePrototypeFunctionSetStartEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore7JSRange9classInfoEv
+__ZN7WebCore34jsRangePrototypeFunctionInsertNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore5Range10insertNodeEN3WTF10PassRefPtrINS_4NodeEEERi
+__ZNK7WebCore5Range19containedByReadOnlyEv
+__ZN7WebCore5Range13textNodeSplitEPNS_4TextE
+__ZN7WebCore7JSRangeD1Ev
+__ZN7WebCore7JSRangeD2Ev
+__ZN7WebCore5Range17nodeWillBeRemovedEPNS_4NodeE
+__ZN7WebCore16JSRangePrototypeD1Ev
+__ZN7WebCore15jsNodeOnmouseupEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node9onmouseupEv
+__ZN7WebCore44jsElementPrototypeFunctionGetAttributeNodeNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore23jsHTMLAnchorElementHashEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement4hashEv
+__ZN7WebCore17jsDOMWindowStatusEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow6statusEv
+__ZNK7WebCore5Frame15jsStatusBarTextEv
+__ZN7WebCore4Node12insertBeforeEN3WTF10PassRefPtrIS0_EEPS0_Rib
+__ZN7WebCore41jsNodePrototypeFunctionIsDefaultNamespaceEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore4Node18isDefaultNamespaceERKNS_12AtomicStringE
+__ZN7WebCore34jsNodePrototypeFunctionIsEqualNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore4Node11isEqualNodeEPS0_
+__ZNK7WebCore4Node13virtualPrefixEv
+__ZN7WebCore33jsNodePrototypeFunctionIsSameNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14JSNamedNodeMap10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore41jsNodePrototypeFunctionLookupNamespaceURIEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore35jsNodePrototypeFunctionLookupPrefixEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore4Node12lookupPrefixERKNS_12AtomicStringE
+__ZNK7WebCore4Node21lookupNamespacePrefixERKNS_12AtomicStringEPKNS_7ElementE
+__ZN7WebCore4Node11removeChildEPS0_Ri
+__ZSt16__merge_backwardIPPN7WebCore11CSSFontFaceES3_S3_PFbS2_S2_EET1_T_S7_T0_S8_S6_T2_
+__ZN7WebCore24jsDocumentDefaultCharsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8Document14defaultCharsetEv
__ZN7WebCore19TextResourceDecoder22detectJapaneseEncodingEPKcm
__ZN7WebCore9KanjiCode5judgeEPKci
-__ZN7WebCore36jsDOMWindowPrototypeFunctionScrollByEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9DOMWindow8scrollByEii
-__ZN7WebCore10ScrollView8scrollByEii
-__ZN7WebCore9InlineBox15clearTruncationEv
-__ZNK7WebCore16HTMLInputElement12defaultValueEv
-__ZN7WebCore15newTextCodecMacERKNS_12TextEncodingEPKv
-__ZN7WebCore12TextCodecMacC1Em
-__ZN7WebCore12TextCodecMac6decodeEPKcmb
-__ZNK7WebCore12TextCodecMac18createTECConverterEv
-__ZN7WebCore12TextCodecMac6decodeEPKhiRiPviS3_
-__ZNK7WebCore12TextCodecMac19releaseTECConverterEv
-__ZN7WebCore24submitButtonDefaultLabelEv
-__ZN7WebCore10helpCursorEv
-__ZN7WebCore12HTMLDocument13setDesignModeERKNS_6StringE
-__ZN7WebCore8Document13setDesignModeENS0_13InheritedBoolE
-__ZN7WebCore17JSHTMLFormElement11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore15HTMLFormElement4itemEj
-__ZN7WebCore20CompositeEditCommand17replaceTextInNodeEPNS_4TextEiiRKNS_6StringE
-__ZN7WebCore41jsDOMSelectionPrototypeFunctionGetRangeAtEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12DOMSelection10getRangeAtEiRi
-__ZN7WebCore34jsRangePrototypeFunctionCloneRangeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN3KJS17staticValueGetterIN7WebCore7JSRangeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore7JSRange16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore15executeFontSizeEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore6Editor10applyStyleEPNS_19CSSStyleDeclarationENS_10EditActionE
-__ZN7WebCore5Frame24computeAndSetTypingStyleEPNS_19CSSStyleDeclarationENS_10EditActionE
-__ZN7WebCore26CSSMutableStyleDeclaration11makeMutableEv
-__ZNK7WebCore26CSSMutableStyleDeclaration19copyBlockPropertiesEv
+__ZN7WebCore23JSProcessingInstruction3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore21ProcessingInstruction12setNodeValueERKNS_6StringERi
+__ZN7WebCore21ProcessingInstruction7setDataERKNS_6StringERi
+__ZN7WebCore26jsCSSStyleRuleSelectorTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLEmbedElement14isURLAttributeEPNS_9AttributeE
+__ZNK7WebCore23JSHTMLBlockquoteElement9classInfoEv
+__ZN7WebCore39jsTextPrototypeFunctionReplaceWholeTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4Text16replaceWholeTextERKNS_6StringERi
+__ZN7WebCoreL33earliestLogicallyAdjacentTextNodeEPKNS_4TextE
+__ZN7WebCoreL31latestLogicallyAdjacentTextNodeEPKNS_4TextE
+__ZN7WebCore15jsTextWholeTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Text9wholeTextEv
+__ZN7WebCore21jsNodeListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10JSNodeList14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore21JSNodeListConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore19JSNodeListPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore34jsLocationPrototypeFunctionReplaceEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore10JSLocation7replaceEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore21JSNodeListConstructorD1Ev
+__ZN7WebCore14RenderThemeMac28paintSearchFieldCancelButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZNK7WebCore16JSHTMLMapElement9classInfoEv
+__ZN7WebCore24jsHTMLDocumentDesignModeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12HTMLDocument10designModeEv
+__ZN7WebCore31jsHTMLHeadingElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSHTMLHeadingElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore29JSHTMLHeadingElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore31JSHTMLHeadingElementConstructorD1Ev
+__ZN7WebCore11HTMLElement18setContentEditableEPNS_15MappedAttributeE
+__ZN7WebCore40jsDOMWindowPrototypeFunctionGetSelectionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow12getSelectionEv
+__ZN7WebCore12DOMSelectionC1EPNS_5FrameE
+__ZN7WebCore12DOMSelectionC2EPNS_5FrameE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_12DOMSelectionE
+__ZN7WebCore14JSDOMSelection15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSDOMSelectionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12DOMSelectionEEE
+__ZN7WebCore14JSDOMSelectionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12DOMSelectionEEE
+__ZN7WebCore14JSDOMSelection18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore23JSDOMSelectionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore42jsDOMSelectionPrototypeFunctionSetPositionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14JSDOMSelection9classInfoEv
+__ZN7WebCore12DOMSelection11setPositionEPNS_4NodeEiRi
+__ZN7WebCore19SelectionController6moveToERKNS_15VisiblePositionEb
+__ZN7WebCore31SimplifiedBackwardsTextIterator21handleReplacedElementEv
+__ZN7WebCoreL13executeDeleteEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore32lineBreakExistsAtVisiblePositionERKNS_15VisiblePositionE
+__ZN7WebCore21positionBeforeTabSpanERKNS_8PositionE
+__ZNK7WebCore4Node14lastDescendantEv
+__ZN7WebCore14caretMinOffsetEPKNS_4NodeE
+__ZN7WebCore20CompositeEditCommand21removeChildrenInRangeEN3WTF10PassRefPtrINS_4NodeEEEjj
+__ZNK7WebCore15VisiblePosition19absoluteCaretBoundsEv
+__ZN7WebCore20CompositeEditCommand13moveParagraphERKNS_15VisiblePositionES3_S3_bb
+__ZN7WebCore20CompositeEditCommand14moveParagraphsERKNS_15VisiblePositionES3_S3_bb
+__ZN7WebCore11EditCommand15styleAtPositionERKNS_8PositionE
+__ZN7WebCore26CSSMutableStyleDeclaration21removeBlockPropertiesEv
+__ZN7WebCore20CompositeEditCommand15deleteSelectionEbbbb
+__ZN7WebCore20CompositeEditCommand27removeNodeAndPruneAncestorsEN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore22DeleteSelectionCommand10removeNodeEN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore20isTableStructureNodeEPKNS_4NodeE
+__ZN7WebCoreL28updatePositionForNodeRemovalEPNS_4NodeERNS_8PositionE
+__ZN7WebCore20CompositeEditCommand10removeNodeEN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore17RemoveNodeCommandC1EN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore17RemoveNodeCommandC2EN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore17RemoveNodeCommand7doApplyEv
+__ZN7WebCore20CompositeEditCommand5pruneEN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore14isStartOfBlockERKNS_15VisiblePositionE
+__ZN7WebCore23ReplaceSelectionCommandC1EPNS_8DocumentEN3WTF10PassRefPtrINS_16DocumentFragmentEEEbbbbbNS_10EditActionE
+__ZN7WebCore23ReplaceSelectionCommandC2EPNS_8DocumentEN3WTF10PassRefPtrINS_16DocumentFragmentEEEbbbbbNS_10EditActionE
+__ZN7WebCore23ReplaceSelectionCommand7doApplyEv
+__ZN7WebCore19ReplacementFragmentC1EPNS_8DocumentEPNS_16DocumentFragmentEbRKNS_16VisibleSelectionE
+__ZN7WebCore19ReplacementFragmentC2EPNS_8DocumentEPNS_16DocumentFragmentEbRKNS_16VisibleSelectionE
+__ZN7WebCore23ReplaceSelectionCommand21performTrivialReplaceERKNS_19ReplacementFragmentE
+__ZNK7WebCore19ReplacementFragment10firstChildEv
+__ZN7WebCore20CompositeEditCommand35prepareWhitespaceAtPositionForSplitERNS_8PositionE
+__ZN7WebCore20CompositeEditCommand22positionOutsideTabSpanERKNS_8PositionE
+__ZN7WebCoreL26isMailPasteAsQuotationNodeEPKNS_4NodeE
+__ZN7WebCore11isStyleSpanEPKNS_4NodeE
+__ZNK7WebCore19ReplacementFragment7isEmptyEv
+__ZN7WebCore20CompositeEditCommand10applyStyleEPNS_19CSSStyleDeclarationENS_10EditActionE
+__ZN7WebCore17ApplyStyleCommandC1EPNS_8DocumentEPNS_19CSSStyleDeclarationENS_10EditActionENS0_14EPropertyLevelE
__ZN7WebCore17ApplyStyleCommandC2EPNS_8DocumentEPNS_19CSSStyleDeclarationENS_10EditActionENS0_14EPropertyLevelE
__ZN7WebCore17ApplyStyleCommand7doApplyEv
-__ZNK7WebCore26CSSMutableStyleDeclaration4copyEv
+__ZNK7WebCore26CSSMutableStyleDeclaration19copyBlockPropertiesEv
__ZN7WebCore17ApplyStyleCommand28applyRelativeFontStyleChangeEPNS_26CSSMutableStyleDeclarationE
__ZN7WebCore17ApplyStyleCommand16applyInlineStyleEPNS_26CSSMutableStyleDeclarationE
__ZN7WebCore17ApplyStyleCommand13startPositionEv
@@ -9913,4199 +14127,9872 @@ __ZN7WebCore17ApplyStyleCommand11endPositionEv
__ZN7WebCore17ApplyStyleCommand31splitTextElementAtStartIfNeededERKNS_8PositionES3_
__ZN7WebCore17ApplyStyleCommand29splitTextElementAtEndIfNeededERKNS_8PositionES3_
__ZN7WebCore17ApplyStyleCommand17removeInlineStyleEN3WTF10PassRefPtrINS_26CSSMutableStyleDeclarationEEERKNS_8PositionES7_
+__ZN7WebCore17ApplyStyleCommand39pushDownTextDecorationStyleAtBoundariesERKNS_8PositionES3_
+__ZN7WebCore17ApplyStyleCommand37pushDownTextDecorationStyleAroundNodeEPNS_4NodeEb
__ZNK7WebCore17ApplyStyleCommand17nodeFullySelectedEPNS_4NodeERKNS_8PositionES5_
+__ZN7WebCore17ApplyStyleCommand14updateStartEndERKNS_8PositionES3_
+__ZN7WebCore17ApplyStyleCommand23applyInlineStyleToRangeEPNS_26CSSMutableStyleDeclarationERKNS_8PositionES5_
+__ZN7WebCore17ApplyStyleCommand30cleanupUnstyledAppleStyleSpansEPNS_4NodeE
+__ZN7WebCore17RemoveNodeCommandD0Ev
+__ZN7WebCore23ReplaceSelectionCommandD0Ev
+__ZN7WebCore17ApplyStyleCommandD0Ev
+__ZN7WebCore12DOMSelection15disconnectFrameEv
+__ZN7WebCore14JSDOMSelectionD1Ev
+__ZN7WebCore14JSDOMSelectionD2Ev
+__ZN7WebCore23JSDOMSelectionPrototypeD1Ev
+__ZN7WebCore4Node13computedStyleEv
+__ZN7WebCore22DeleteSelectionCommandC1EPNS_8DocumentEbbbb
+__ZN7WebCore22DeleteSelectionCommandC2EPNS_8DocumentEbbbb
__ZN7WebCore17ApplyStyleCommand15isHTMLStyleNodeEPNS_26CSSMutableStyleDeclarationEPNS_11HTMLElementE
__ZN7WebCore17ApplyStyleCommand19removeHTMLFontStyleEPNS_26CSSMutableStyleDeclarationEPNS_11HTMLElementE
+__ZN7WebCore17ApplyStyleCommand28removeHTMLBidiEmbeddingStyleEPNS_26CSSMutableStyleDeclarationEPNS_11HTMLElementE
__ZN7WebCore17ApplyStyleCommand14removeCSSStyleEPNS_26CSSMutableStyleDeclarationEPNS_11HTMLElementE
-__ZN7WebCore19isUnstyledStyleSpanEPKNS_4NodeE
-__ZN7WebCore17ApplyStyleCommand14updateStartEndERKNS_8PositionES3_
-__ZN7WebCore5RangeC2EPNS_8DocumentERKNS_8PositionES5_
-__ZNK7WebCore4Node14childNodeCountEv
__ZN7WebCore17ApplyStyleCommand22addInlineStyleIfNeededEPNS_26CSSMutableStyleDeclarationEPNS_4NodeES4_
-__ZN7WebCore11StyleChange21styleModeForParseModeEb
-__ZN7WebCore11StyleChangeC2EPNS_19CSSStyleDeclarationERKNS_8PositionENS0_17ELegacyHTMLStylesE
+__ZN7WebCore11StyleChangeC1EPNS_19CSSStyleDeclarationERKNS_8PositionE
+__ZN7WebCore11StyleChangeC2EPNS_19CSSStyleDeclarationERKNS_8PositionE
__ZN7WebCore11StyleChange4initEN3WTF10PassRefPtrINS_19CSSStyleDeclarationEEERKNS_8PositionE
__ZN7WebCore11StyleChange17currentlyHasStyleERKNS_8PositionEPKNS_11CSSPropertyE
-__ZN7WebCore22createStyleSpanElementEPNS_8DocumentE
-__ZN7WebCore20styleSpanClassStringEv
-__ZN7WebCore17ApplyStyleCommand28surroundNodeRangeWithElementEPNS_4NodeES2_PNS_7ElementE
-__ZN7WebCore17ApplyStyleCommand30cleanupUnstyledAppleStyleSpansEPNS_4NodeE
-__ZNK7WebCore17ApplyStyleCommand13editingActionEv
-__ZNK7WebCore11EditCommand15isTypingCommandEv
-__ZN7WebCore27enabledInRichlyEditableTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
-__ZN7WebCore17executeToggleBoldEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore18executeToggleStyleEPNS_5FrameENS_19EditorCommandSourceENS_10EditActionEiPKcS5_
-__ZNK7WebCore6Editor22selectionStartHasStyleEPNS_19CSSStyleDeclarationE
-__ZNK7WebCore5Frame22selectionComputedStyleERPNS_4NodeE
-__ZN7WebCore20CompositeEditCommand17removeCSSPropertyEPNS_19CSSStyleDeclarationEi
-__ZN7WebCore24RemoveCSSPropertyCommandC2EPNS_8DocumentEPNS_19CSSStyleDeclarationEi
-__ZN7WebCore24RemoveCSSPropertyCommand7doApplyEv
-__ZN7WebCore20CompositeEditCommand28removeNodePreservingChildrenEPNS_4NodeE
-__ZN7WebCore35RemoveNodePreservingChildrenCommandC2EPNS_4NodeE
-__ZN7WebCore35RemoveNodePreservingChildrenCommand7doApplyEv
-__ZN7WebCore19executeToggleItalicEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore16executeForeColorEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore17executeApplyStyleEPNS_5FrameENS_19EditorCommandSourceENS_10EditActionEiRKNS_6StringE
-__ZNK7WebCore12DOMSelection11isCollapsedEv
-__ZN7WebCore34jsDOMWindowPrototypeFunctionPromptEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9DOMWindow6promptERKNS_6StringES3_
-__ZN7WebCore6Chrome19runJavaScriptPromptEPNS_5FrameERKNS_6StringES5_RS3_
-__ZN7WebCore21PageGroupLoadDeferrerC2EPNS_4PageEb
-__ZN7WebCore21PageGroupLoadDeferrerD2Ev
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm16EE6shrinkEm
-__ZN7WebCore17executeCreateLinkEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore17CreateLinkCommandC1EPNS_8DocumentERKNS_6StringE
-__ZN7WebCore17CreateLinkCommand7doApplyEv
-__ZN7WebCore20CompositeEditCommand39pushPartiallySelectedAnchorElementsDownEv
-__ZN7WebCore20CompositeEditCommand18applyStyledElementEPNS_7ElementE
-__ZN7WebCore17ApplyStyleCommandC1EPNS_7ElementEbNS_10EditActionE
-__ZNK7WebCore17CreateLinkCommand13editingActionEv
-__ZN7WebCore20executeJustifyCenterEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore26executeApplyParagraphStyleEPNS_5FrameENS_19EditorCommandSourceENS_10EditActionEiRKNS_6StringE
-__ZN7WebCore6Editor19applyParagraphStyleEPNS_19CSSStyleDeclarationENS_10EditActionE
-__ZN7WebCore17ApplyStyleCommand15applyBlockStyleEPNS_26CSSMutableStyleDeclarationE
-__ZN7WebCore20CompositeEditCommand42moveParagraphContentsToNewBlockIfNecessaryERKNS_8PositionE
-__ZN7WebCore17ApplyStyleCommand13addBlockStyleERKNS_11StyleChangeEPNS_11HTMLElementE
-__ZN7WebCore20CompositeEditCommand16setNodeAttributeEPNS_7ElementERKNS_13QualifiedNameERKNS_6StringE
-__ZN7WebCore23SetNodeAttributeCommandC2EPNS_7ElementERKNS_13QualifiedNameERKNS_6StringE
-__ZN7WebCore23SetNodeAttributeCommand7doApplyEv
-__ZN7WebCore12TextIterator26rangeFromLocationAndLengthEPNS_7ElementEiib
-__ZN7WebCore19executeJustifyRightEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore18executeJustifyFullEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore18executeJustifyLeftEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore24executeInsertOrderedListEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore17InsertListCommandC2EPNS_8DocumentENS0_4TypeERKNS_6StringE
-__ZN7WebCore17InsertListCommand7doApplyEv
-__ZN7WebCore17InsertListCommand11modifyRangeEv
-__ZN7WebCore30selectionForParagraphIterationERKNS_9SelectionE
-__ZN7WebCore21createListItemElementEPNS_8DocumentE
-__ZN7WebCore22outermostEnclosingListEPNS_4NodeE
-__ZN7WebCore13enclosingListEPNS_4NodeE
-__ZN7WebCore24createOrderedListElementEPNS_8DocumentE
-__ZN7WebCore20CompositeEditCommand13moveParagraphERKNS_15VisiblePositionES3_S3_bb
-__ZN7WebCore20CompositeEditCommand14moveParagraphsERKNS_15VisiblePositionES3_S3_bb
-__ZN7WebCore12createMarkupEPKNS_5RangeEPN3WTF6VectorIPNS_4NodeELm0EEENS_23EAnnotateForInterchangeEb
-__ZN7WebCore25avoidIntersectionWithNodeEPKNS_5RangeEPNS_4NodeE
-__ZN7WebCore14getStartMarkupEPKNS_4NodeEPKNS_5RangeENS_23EAnnotateForInterchangeEbPN3WTF7HashMapIPNS_16AtomicStringImplESA_NS7_7PtrHashISA_EENS7_10HashTraitsISA_EESE_EE
-__ZN7WebCore12getEndMarkupEPKNS_4NodeE
-__ZN7WebCore13computedStyleEPNS_4NodeE
-__ZN7WebCore28propertyMissingOrEqualToNoneEPNS_26CSSMutableStyleDeclarationEi
-__ZN7WebCore32elementHasTextDecorationPropertyEPKNS_4NodeE
-__ZN7WebCore34styleFromMatchedRulesAndInlineDeclEPKNS_4NodeE
-__ZN7WebCore31styleFromMatchedRulesForElementEPNS_7ElementEb
-__ZN7WebCore26CSSMutableStyleDeclaration5mergeEPS0_b
-__ZN7WebCore26CSSMutableStyleDeclaration21removeBlockPropertiesEv
-__ZN7WebCore11joinMarkupsEN3WTF6VectorINS_6StringELm0EEERKS3_
-__ZN7WebCore24createFragmentFromMarkupEPNS_8DocumentERKNS_6StringES4_
-__ZN7WebCore20CompositeEditCommand10applyStyleEPNS_19CSSStyleDeclarationENS_10EditActionE
-__ZN7WebCore17ApplyStyleCommand39pushDownTextDecorationStyleAtBoundariesERKNS_8PositionES3_
-__ZN7WebCore17ApplyStyleCommand37pushDownTextDecorationStyleAroundNodeEPNS_4NodeERKNS_8PositionES5_b
-__ZNK7WebCore8RenderBR14caretMaxOffsetEv
-__ZN7WebCore20CompositeEditCommand27removeNodeAndPruneAncestorsEPNS_4NodeE
-__ZN7WebCore20CompositeEditCommand5pruneEN3WTF10PassRefPtrINS_4NodeEEE
-__ZN7WebCore22hasARenderedDescendantEPNS_4NodeE
-__ZN7WebCore23ReplaceSelectionCommandC2EPNS_8DocumentEN3WTF10PassRefPtrINS_16DocumentFragmentEEEbbbbbNS_10EditActionE
-__ZN7WebCore23ReplaceSelectionCommand7doApplyEv
-__ZN7WebCore19ReplacementFragmentC2EPNS_8DocumentEPNS_16DocumentFragmentEbRKNS_9SelectionE
+__ZNK7WebCore27CSSComputedStyleDeclaration36getFontSizeCSSValuePreferringKeywordEv
__ZN7WebCore19ReplacementFragment22removeInterchangeNodesEPNS_4NodeE
-__ZN7WebCore24isInterchangeNewlineNodeEPKNS_4NodeE
-__ZN7WebCore31isInterchangeConvertedSpaceSpanEPKNS_4NodeE
-__ZN7WebCore20CompositeEditCommand35prepareWhitespaceAtPositionForSplitERNS_8PositionE
-__ZNK7WebCore19ReplacementFragment10firstChildEv
-__ZN7WebCore11isStyleSpanEPKNS_4NodeE
-__ZNK7WebCore19ReplacementFragment7isEmptyEv
+__ZN7WebCoreL24isInterchangeNewlineNodeEPKNS_4NodeE
+__ZN7WebCoreL31isInterchangeConvertedSpaceSpanEPKNS_4NodeE
+__ZNK7WebCore19ReplacementFragment9lastChildEv
+__ZN7WebCoreL20styleSpanClassStringEv
+__ZN7WebCore19ReplacementFragment28removeNodePreservingChildrenEPNS_4NodeE
__ZN7WebCore19ReplacementFragment10removeNodeEN3WTF10PassRefPtrINS_4NodeEEE
-__ZN7WebCore23ReplaceSelectionCommand34insertNodeAtAndUpdateNodesInsertedEPNS_4NodeERKNS_8PositionE
+__ZN7WebCore19ReplacementFragment16insertNodeBeforeEN3WTF10PassRefPtrINS_4NodeEEEPS3_
+__ZN7WebCore23ReplaceSelectionCommand34insertNodeAtAndUpdateNodesInsertedEN3WTF10PassRefPtrINS_4NodeEEERKNS_8PositionE
__ZN7WebCore23ReplaceSelectionCommand19updateNodesInsertedEPNS_4NodeE
__ZN7WebCore23ReplaceSelectionCommand31removeUnrenderedTextNodesAtEndsEv
__ZN7WebCore23ReplaceSelectionCommand36negateStyleRulesThatAffectAppearanceEv
-__ZN7WebCore23ReplaceSelectionCommand21removeRedundantStylesEPNS_4NodeE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HTMLElementEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HTMLElementEEELm0EE15reserveCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore26CSSMutableStyleDeclarationEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore26CSSMutableStyleDeclarationEEELm0EE15reserveCapacityEm
-__ZN7WebCore27CSSComputedStyleDeclaration39removeComputedInheritablePropertiesFromEPNS_26CSSMutableStyleDeclarationE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HTMLElementEEELm0EE6shrinkEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore26CSSMutableStyleDeclarationEEELm0EE6shrinkEm
__ZN7WebCore23ReplaceSelectionCommand30positionAtEndOfInsertedContentEv
__ZN7WebCore23ReplaceSelectionCommand32positionAtStartOfInsertedContentEv
__ZN7WebCore23ReplaceSelectionCommand17shouldRemoveEndBREPNS_4NodeERKNS_15VisiblePositionE
-__ZN7WebCore23ReplaceSelectionCommand16shouldMergeStartEbb
__ZN7WebCore23ReplaceSelectionCommand14shouldMergeEndEb
+__ZN7WebCore23ReplaceSelectionCommand16shouldMergeStartEbbb
+__ZN7WebCore23ReplaceSelectionCommand16mergeEndIfNeededEv
__ZN7WebCore23ReplaceSelectionCommand26handlePasteAsQuotationNodeEv
-__ZN7WebCore26isMailPasteAsQuotationNodeEPKNS_4NodeE
__ZN7WebCore23ReplaceSelectionCommand23completeHTMLReplacementERKNS_8PositionE
-__ZNK7WebCore17InsertListCommand13editingActionEv
-__ZN7WebCore20CompositeEditCommand21removeChildrenInRangeEPNS_4NodeEii
-__ZN7WebCore6Editor24insertParagraphSeparatorEv
-__ZN7WebCore13TypingCommand24insertParagraphSeparatorEPNS_8DocumentE
-__ZN7WebCore13TypingCommand24insertParagraphSeparatorEv
-__ZN7WebCore31InsertParagraphSeparatorCommandC2EPNS_8DocumentEb
-__ZN7WebCore31InsertParagraphSeparatorCommand7doApplyEv
-__ZN7WebCore31InsertParagraphSeparatorCommand29calculateStyleBeforeInsertionERKNS_8PositionE
-__ZN7WebCore11EditCommand15styleAtPositionERKNS_8PositionE
-__ZN7WebCore14isStartOfBlockERKNS_15VisiblePositionE
-__ZN7WebCore12startOfBlockERKNS_15VisiblePositionE
-__ZN7WebCore20CompositeEditCommand22appendBlockPlaceholderEPNS_4NodeE
-__ZN7WebCore29createBlockPlaceholderElementEPNS_8DocumentE
-__ZN7WebCore31InsertParagraphSeparatorCommand24applyStyleAfterInsertionEv
-__ZNK7WebCore31InsertParagraphSeparatorCommand20preservesTypingStyleEv
-__ZN7WebCore29createDefaultParagraphElementEPNS_8DocumentE
-__ZN7WebCore22nonBreakingSpaceStringEv
-__ZN7WebCore26executeInsertUnorderedListEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore23ReplaceSelectionCommand28removeNodePreservingChildrenEPNS_4NodeE
-__ZN7WebCore26createUnorderedListElementEPNS_8DocumentE
-__ZN7WebCore37jsRangePrototypeFunctionCloneContentsEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore5Range13cloneContentsERi
-__ZN7WebCore5Range15processContentsENS0_10ActionTypeERi
-__ZN7WebCore23JSHTMLBlockquoteElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore23JSHTMLBlockquoteElement9classInfoEv
-__ZN7WebCore4Node11setDocumentEPNS_8DocumentE
-__ZN7WebCore4Node26willMoveToNewOwnerDocumentEv
-__ZN3KJS17ScriptInterpreter21updateDOMNodeDocumentEPN7WebCore4NodeEPNS1_8DocumentES5_
-__ZN7WebCore4Node25didMoveToNewOwnerDocumentEv
-__ZN7WebCore46jsDOMSelectionPrototypeFunctionRemoveAllRangesEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12DOMSelection15removeAllRangesEv
-__ZN7WebCore38jsRangePrototypeFunctionDeleteContentsEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore5Range14deleteContentsERi
-__ZN7WebCore5Range18checkDeleteExtractERi
-__ZNK7WebCore5Range19containedByReadOnlyEv
-__ZN7WebCore30jsRangePrototypeFunctionSetEndEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore16RenderListMarker18canBeSelectionLeafEv
-__ZN7WebCore16RenderListMarker17setSelectionStateENS_12RenderObject14SelectionStateE
-__ZN7WebCore16RenderListMarker13selectionRectEb
-__ZN7WebCore24RemoveCSSPropertyCommandD1Ev
-__ZN7WebCore17CreateLinkCommandD1Ev
-__ZN7WebCore18JSDocumentFragment18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore43jsDOMCoreExceptionPrototypeFunctionToStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore18JSDOMCoreException9classInfoEv
-__ZNK7WebCore13ExceptionBase8toStringEv
-__ZN7WebCore33jsDOMWindowPrototypeFunctionAlertEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9DOMWindow5alertERKNS_6StringE
-__ZN7WebCore6Chrome18runJavaScriptAlertEPNS_5FrameERKNS_6StringE
-__ZNK7WebCore17BeforeUnloadEvent20storesResultAsStringEv
-__ZN7WebCore17BeforeUnloadEvent11storeResultERKNS_6StringE
-__ZN7WebCore6Chrome27runBeforeUnloadConfirmPanelERKNS_6StringEPNS_5FrameE
-__ZN7WebCore6Editor21isSelectionMisspelledEv
-__ZN7WebCore6Editor29guessesForMisspelledSelectionEv
-__ZN7WebCore30contextMenuItemTagSpellingMenuEv
-__ZN7WebCore35contextMenuItemTagShowSpellingPanelEb
-__ZN7WebCore31contextMenuItemTagCheckSpellingEv
-__ZN7WebCore42contextMenuItemTagCheckSpellingWhileTypingEv
-__ZN7WebCore42contextMenuItemTagCheckGrammarWithSpellingEv
-__ZN7WebCore6Editor22spellingPanelIsShowingEv
-__ZN7WebCore15ContextMenuItem8setTitleERKNS_6StringE
-__ZN7WebCore15ContextMenuItem10setSubMenuEPNS_11ContextMenuE
-__ZN7WebCore26contextMenuItemTagFontMenuEv
-__ZN7WebCore27contextMenuItemTagShowFontsEv
-__ZN7WebCore22contextMenuItemTagBoldEv
-__ZN7WebCore24contextMenuItemTagItalicEv
-__ZN7WebCore27contextMenuItemTagUnderlineEv
-__ZN7WebCore25contextMenuItemTagOutlineEv
-__ZN7WebCore24contextMenuItemTagStylesEv
-__ZN7WebCore28contextMenuItemTagShowColorsEv
-__ZN7WebCore8Document25createCSSStyleDeclarationEv
-__ZNK7WebCore6Editor17selectionHasStyleEPNS_19CSSStyleDeclarationE
-__ZN7WebCore11updateStateEPNS_26CSSMutableStyleDeclarationEPNS_27CSSComputedStyleDeclarationERbRNS_8TriStateE
-__ZN7WebCore28contextMenuItemTagSpeechMenuEv
-__ZN7WebCore31contextMenuItemTagStartSpeakingEv
-__ZN7WebCore30contextMenuItemTagStopSpeakingEv
-__ZN7WebCore38contextMenuItemTagWritingDirectionMenuEv
-__ZN7WebCore34contextMenuItemTagDefaultDirectionEv
-__ZN7WebCore29contextMenuItemTagLeftToRightEv
-__ZN7WebCore29contextMenuItemTagRightToLeftEv
-__ZN7WebCore6Editor21toggleGrammarCheckingEv
-__ZN7WebCore13endOfSentenceERKNS_15VisiblePositionE
-__ZN7WebCore19endSentenceBoundaryEPKtj
-__ZN7WebCore21sentenceBreakIteratorEPKti
-__ZN7WebCore15startOfSentenceERKNS_15VisiblePositionE
-__ZN7WebCore21startSentenceBoundaryEPKtj
-__ZN7WebCore6Editor14markBadGrammarERKNS_9SelectionE
-__ZN7WebCore26findFirstBadGrammarInRangeEPNS_12EditorClientEPNS_5RangeERNS_13GrammarDetailERib
-__ZN3WTF6VectorIN7WebCore13GrammarDetailELm0EE6shrinkEm
-__ZN7WebCore16executeSelectAllEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore19SelectionController9selectAllEv
-__ZNK7WebCore4Node12canSelectAllEv
-__ZN7WebCore6Editor24isSelectionUngrammaticalEv
-__ZN7WebCore20isRangeUngrammaticalEPNS_12EditorClientEPNS_5RangeERN3WTF6VectorINS_6StringELm0EEE
-__ZN7WebCore6Editor24advanceToNextMisspellingEb
-__ZNK7WebCore17RenderTextControl9scrollTopEv
-__ZN7WebCore17RenderTextControl12setScrollTopEi
--[WebCoreFrameBridge replaceSelectionWithText:selectReplacement:smartReplace:]
--[WebCoreFrameBridge documentFragmentWithText:inContext:]
-__ZN7WebCore22createFragmentFromTextEPNS_5RangeERKNS_6StringE
-__ZNK7WebCore16DeprecatedString8endsWithERKS0_
-+[DOMDocumentFragment(WebCoreInternal) _wrapDocumentFragment:]
--[WebCoreFrameBridge replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]
--[DOMDocumentFragment(WebCoreInternal) _documentFragment]
-__ZNK7WebCore23ReplaceSelectionCommand13editingActionEv
-__ZN7WebCore19ReplacementFragment30insertFragmentForTestRenderingEPNS_4NodeE
-__ZN7WebCore19ReplacementFragment35restoreTestRenderingNodesToFragmentEPNS_4NodeE
-__ZN7WebCore19ReplacementFragment21removeUnrenderedNodesEPNS_4NodeE
-__ZN7WebCore14isNodeRenderedEPKNS_4NodeE
-__ZN7WebCore20CompositeEditCommand13splitTextNodeEPNS_4TextEi
-__ZN7WebCore20SplitTextNodeCommandC2EPNS_4TextEi
-__ZN7WebCore20SplitTextNodeCommand7doApplyEv
-__ZN7WebCore8Document11copyMarkersEPNS_4NodeEjiS2_iNS_14DocumentMarker10MarkerTypeE
-__ZN7WebCore20CompositeEditCommand10applyStyleEPNS_19CSSStyleDeclarationERKNS_8PositionES5_NS_10EditActionE
-__ZN7WebCore17ApplyStyleCommandC2EPNS_8DocumentEPNS_19CSSStyleDeclarationERKNS_8PositionES7_NS_10EditActionENS0_14EPropertyLevelE
--[WebScriptObject valueForKey:]
--[WebScriptObject _originRootObject]
--[DOMDocument body]
-__ZN7WebCore11FrameLoader23reloadAllowingStaleDataERKNS_6StringE
-__ZN7WebCore15DatabaseTracker7originsERN3WTF6VectorINS1_6RefPtrINS_14SecurityOriginEEELm0EEE
-__ZN7WebCore15DatabaseTracker15populateOriginsEv
-__ZN7WebCore18OriginQuotaManagerC1Ev
-__ZN7WebCore15DatabaseTracker19openTrackerDatabaseEb
-__ZNK7WebCore15DatabaseTracker19trackerDatabasePathEv
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SecurityOriginEEELm0EE6resizeEm
-___tcf_1
-__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_iENS_18PairFirstExtractorIS6_EENS2_18SecurityOriginHashENS_14PairHashTraitsINS2_20SecurityOriginTraitsENS_10HashTraitsIiEEEESB_E47removeAndInvalidateWithoutEntryConsistencyCheckEPS6_
-__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_xENS_18PairFirstExtractorIS6_EENS2_18SecurityOriginHashENS_14PairHashTraitsINS2_20SecurityOriginTraitsENS_10HashTraitsIxEEEESB_EC1ERKSF_
-__ZNK7WebCore32HTMLFileUploadInnerButtonElement12isShadowNodeEv
-__ZN7WebCore32HTMLFileUploadInnerButtonElement16shadowParentNodeEv
-__ZN7WebCore23RenderFileUploadControl5clickEv
-__ZN7WebCore11FileChooser15openFileChooserEPNS_8DocumentE
--[WebCoreOpenPanelController beginSheetWithFrame:]
--[WebCoreOpenPanelController chooseFilename:]
-__ZN7WebCore11FileChooser10chooseFileERKNS_6StringE
-__ZN7WebCore4IconC1EP7NSImage
-__ZThn132_N7WebCore23RenderFileUploadControl12valueChangedEv
-__ZN7WebCore23RenderFileUploadControl12valueChangedEv
-__ZN7WebCore4Icon5paintEPNS_15GraphicsContextERKNS_7IntRectE
-__ZN7WebCore12FormDataList10appendFileERKNS_6StringES3_
-__ZN7WebCore10StringImpl11reverseFindEti
-__ZN7WebCore16MIMETypeRegistry18getMIMETypeForPathERKNS_6StringE
-__ZN7WebCore16MIMETypeRegistry23getMIMETypeForExtensionERKNS_6StringE
-__ZN7WebCore8FormData10appendFileERKNS_6StringE
-__ZN7WebCore10formCreateEP14__CFReadStreamPv
-__ZN7WebCore18getStreamFormDatasEv
-__ZN7WebCore18httpBodyFromStreamEP13NSInputStream
-__ZN3WTF7HashMapIP14__CFReadStreamNS_6RefPtrIN7WebCore8FormDataEEENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS9_IS6_EEE3setERKS2_RKS6_
-__ZN7WebCore12formFinalizeEP14__CFReadStreamPv
-__ZN7WebCore18closeCurrentStreamEPNS_16FormStreamFieldsE
-__ZN7WebCore12formScheduleEP14__CFReadStreamP11__CFRunLoopPK10__CFStringPv
-__ZN7WebCore8pairHashEPKv
-__ZN7WebCore10pairRetainEPK13__CFAllocatorPKv
-__ZN7WebCore9pairEqualEPKvS1_
-__ZN7WebCore8formOpenEP14__CFReadStreamP13CFStreamErrorPhPv
-__ZN7WebCore14openNextStreamEPNS_16FormStreamFieldsE
-__ZN7WebCore20advanceCurrentStreamEPNS_16FormStreamFieldsE
-__ZN7WebCore16scheduleWithPairEPKvPv
-__ZN7WebCore17formEventCallbackEP14__CFReadStreammPv
-__ZN7WebCore8formReadEP14__CFReadStreamPhlP13CFStreamErrorS2_Pv
-__ZN7WebCore11formCanReadEP14__CFReadStreamPv
-__ZN7WebCore9formCloseEP14__CFReadStreamPv
-__ZN7WebCore4IconD1Ev
-__ZN7WebCore11pairReleaseEPK13__CFAllocatorPKv
-__ZN7WebCore11executeCopyEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore6Editor4copyEv
-__ZN7WebCore6Editor12tryDHTMLCopyEv
-__ZN7WebCore10Pasteboard5clearEv
-__ZN7WebCore6Editor20canSmartCopyOrDeleteEv
-__ZN7WebCore6Editor13selectedRangeEv
-__ZN7WebCore10Pasteboard14writeSelectionEPNS_5RangeEbPNS_5FrameE
-__ZN7WebCore10Pasteboard14writeSelectionEP12NSPasteboardPNS_5RangeEbPNS_5FrameE
--[DOMRange commonAncestorContainer]
--[DOMRange startContainer]
--[DOMNode nodeType]
--[DOMNode firstChild]
--[DOMNode nextSibling]
--[DOMRange endContainer]
--[DOMElement tagName]
--[DOMObject copyWithZone:]
--[DOMCSSStyleDeclaration getPropertyCSSValue:]
-+[DOMCSSValue(WebCoreInternal) _wrapCSSValue:]
--[DOMCSSValue(WebCoreInternal) _initWithCSSValue:]
--[DOMCSSValue cssValueType]
--[DOMCSSPrimitiveValue primitiveType]
--[DOMCSSPrimitiveValue getStringValue]
-__ZNK7WebCore17CSSPrimitiveValue14getStringValueERi
--[DOMHTMLTableElement cellSpacing]
-__ZNK7WebCore16HTMLTableElement11cellSpacingEv
--[DOMHTMLTableElement cellPadding]
-__ZNK7WebCore16HTMLTableElement11cellPaddingEv
--[DOMCSSPrimitiveValue getFloatValue:]
-__ZN7WebCore17CSSPrimitiveValue14getDoubleValueEtRi
--[DOMElement style]
--[DOMCSSPrimitiveValue getRGBColorValue]
-__ZNK7WebCore17CSSPrimitiveValue16getRGBColorValueERi
-+[DOMRGBColor initialize]
-+[DOMRGBColor(WebCoreInternal) _wrapRGBColor:]
-__ZN7WebCore16getWrapperForRGBEj
--[DOMRGBColor(WebCoreInternal) _initWithRGB:]
-__ZN7WebCore16setWrapperForRGBEP11objc_objectj
--[DOMRGBColor(WebPrivate) _color]
--[DOMRGBColor color]
--[DOMHTMLTableCellElement rowSpan]
--[DOMHTMLTableCellElement colSpan]
--[DOMHTMLTableCellElement width]
-__ZNK7WebCore20HTMLTableCellElement5widthEv
--[DOMHTMLTableCellElement height]
-__ZNK7WebCore20HTMLTableCellElement6heightEv
--[DOMRange startOffset]
--[DOMCharacterData data]
--[DOMElement(WebPrivate) _font]
--[DOMRange endOffset]
--[WebCoreFrameBridge markupStringFromRange:nodes:]
-__ZN7WebCore27needInterchangeNewlineAfterERKNS_15VisiblePositionE
-__ZN7WebCore34convertHTMLTextToInterchangeFormatERKNS_16DeprecatedStringEPKNS_4TextE
-__ZN7WebCore16DeprecatedString6appendENS_14DeprecatedCharE
-__ZN7WebCore16DeprecatedString6insertEjNS_14DeprecatedCharE
-__ZNK7WebCore5Range4textEv
-__ZN7WebCore6Editor29didWriteSelectionToPasteboardEv
--[DOMCSSValue dealloc]
--[DOMRGBColor dealloc]
-__ZN7WebCore19removeWrapperForRGBEj
-__ZN7WebCore8Document6embedsEv
-__ZNK7WebCore17HTMLScriptElement4typeEv
-__ZNK7WebCore16HTMLQuoteElement17endTagRequirementEv
-__ZNK7WebCore16HTMLQuoteElement11tagPriorityEv
-__ZN7WebCore4KURL7setPortEt
--[DOMHTMLElement idName]
--[DOMHTMLElement className]
--[DOMNode previousSibling]
-__ZN7WebCore17HTMLAnchorElement12setAccessKeyERKNS_6StringE
-__ZN3WTF6VectorIN7WebCore12AtomicStringELm8EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore12AtomicStringELm8EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore12AtomicStringELm8EE15reserveCapacityEm
-__ZN7WebCore9CSSParser16parseFontFaceSrcEv
-__ZN7WebCore9CSSParser18createFontFaceRuleEv
-__ZN7WebCore15CSSFontFaceRuleC1EPNS_9StyleBaseE
-__ZN7WebCore15CSSFontFaceRule14setDeclarationEN3WTF10PassRefPtrINS_26CSSMutableStyleDeclarationEEE
-__ZN7WebCore15CSSFontFaceRule14isFontFaceRuleEv
-__ZN7WebCore15CSSFontSelector15addFontFaceRuleEPKNS_15CSSFontFaceRuleE
-__ZNK7WebCore19CSSFontFaceSrcValue16isSVGFontFaceSrcEv
-__ZNK7WebCore19CSSFontFaceSrcValue17isSupportedFormatEv
-__ZNK7WebCore11CSSFontFace7isValidEv
-__ZN7WebCore11CSSFontFaceD1Ev
-__ZN3WTF15deleteAllValuesIPN7WebCore17CSSFontFaceSourceELm0EEEvRKNS_6VectorIT_XT0_EEE
-__ZN7WebCore15CSSFontFaceRuleD1Ev
-__ZN7WebCore19CSSFontFaceSrcValueD1Ev
-__ZN7WebCore32jsNodePrototypeFunctionNormalizeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4Node9normalizeEv
-__ZN7WebCore21JSNodeListConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore21JSNodeListConstructor9classInfoEv
-__ZN7WebCore47jsHTMLInputElementBaseFunctionSetSelectionRangeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore15HTMLLinkElement8setMediaERKNS_6StringE
-__ZNK7WebCore24JSHTMLElementConstructor21implementsHasInstanceEv
-__ZN3KJS17staticValueGetterIN7WebCore19JSHTMLCanvasElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSHTMLCanvasElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionDrawImageEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore26JSCanvasRenderingContext2D9drawImageEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_16HTMLImageElementEffffRi
-__ZN7WebCore4sizeEPNS_16HTMLImageElementE
-__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_16HTMLImageElementERKNS_9FloatRectES5_Ri
-__ZN7WebCore47jsCanvasRenderingContext2DPrototypeFunctionRectEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D4rectEffffRi
-__ZN7WebCore30newStreamingTextDecoderUTF16BEERKNS_12TextEncodingEPKv
-__ZN7WebCore38jsRangePrototypeFunctionSetStartBeforeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore37jsRangePrototypeFunctionSetStartAfterEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore5Range13setStartAfterEPNS_4NodeERi
-__ZNK3KJS6Plugin9classInfoEv
-__ZN7WebCore16HTMLInputElement6setSrcERKNS_6StringE
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_15DynamicNodeList6CachesEENS_18PairFirstExtractorIS7_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSC_IS6_EEEESD_E4findIS3_NS_22IdentityHashTranslatorIS3_S7_SA_EEEENS_17HashTableIteratorIS3_S7_S9_SA_SF_SD_EERKT_
-__ZN7WebCore23JSHTMLBlockquoteElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore32jsRangePrototypeFunctionSetStartEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore34jsRangePrototypeFunctionInsertNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore5Range10insertNodeEN3WTF10PassRefPtrINS_4NodeEEERi
-__ZN7WebCore4Text9splitTextEjRi
-__ZN7WebCore4Text9createNewEN3WTF10PassRefPtrINS_10StringImplEEE
-__ZN7WebCore11RenderStyle13setCursorListEN3WTF10PassRefPtrINS_10CursorListEEE
-__ZN7WebCore7toRomanEib
-__ZN7WebCore16HTMLInputElement7setSizeEj
-__ZN7WebCore6String6numberEj
-__ZN7WebCore23HTMLTableRowsCollection7lastRowEPNS_16HTMLTableElementE
-__ZN7WebCore42jsDocumentPrototypeFunctionCreateAttributeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document17createAttributeNSERKNS_6StringES3_Ri
-__ZN7WebCore6JSAttr3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore4Attr12setNodeValueERKNS_6StringERi
-__ZN7WebCore4Attr8setValueERKNS_6StringERi
-__ZN7WebCore4Attr16childTypeAllowedENS_4Node8NodeTypeE
-__ZN7WebCore4Attr15childrenChangedEb
-__ZN7WebCore42jsElementPrototypeFunctionSetAttributeNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9JSElement16setAttributeNodeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore6toAttrEPN3KJS7JSValueERb
-__ZNK7WebCore6JSAttr9classInfoEv
-__ZN7WebCore7Element16setAttributeNodeEPNS_4AttrERi
-__ZN7WebCore12NamedAttrMap12setNamedItemEPNS_4NodeERi
-__ZNK7WebCore4Attr15isAttributeNodeEv
-__ZN7WebCore16JSHTMLPreElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZNK7WebCore12HTMLDocument10designModeEv
-__ZN7WebCore42jsHTMLCollectionPrototypeFunctionNamedItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16JSHTMLCollection9namedItemEPN3KJS9ExecStateERKNS1_4ListE
-__ZNK7WebCore8Document14defaultCharsetEv
-__ZN7WebCore21webFallbackFontFamilyEv
-__ZN7WebCore4Node11appendChildEN3WTF10PassRefPtrIS0_EERi
-__ZNK7WebCore16HTMLTableElement5tFootEv
-__ZNK7WebCore19HTMLTableRowElement8rowIndexEv
-__ZN7WebCore16DocumentFragment9cloneNodeEb
-__ZN7WebCore7Element9cloneNodeEb
-__ZN7WebCore7Element26copyNonAttributePropertiesEPKS0_
-__ZNK7WebCore9Attribute5cloneEb
-__ZN7WebCore35jsNamedNodeMapPrototypeFunctionItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore4Attr6prefixEv
-__ZNK7WebCore4Attr9localNameEv
-__ZN7WebCore46jsNamedNodeMapPrototypeFunctionRemoveNamedItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore43jsNamedNodeMapPrototypeFunctionSetNamedItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore21HTMLOptionsCollection13selectedIndexEv
-__ZN7WebCore20HTMLTableCellElement8setWidthERKNS_6StringE
-__ZN7WebCore11HTMLElement7setLangERKNS_6StringE
-__ZN7WebCore13CSSStyleSheet18determineNamespaceERKNS_12AtomicStringE
-__ZN7WebCore12IconDatabase27checkIntegrityBeforeOpeningEv
-__ZN7WebCore12IconDatabase14checkIntegrityEv
-_sqlite3VdbeAddOpList
-_sqlite3OpenTempDatabase
-_sqlite3BtreeIntegrityCheck
-_checkList
-_checkTreePage
-__ZN7WebCore32max_device_widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore28device_widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZNK7WebCore12CDATASection8nodeNameEv
-__ZNK7WebCore11RenderTheme11systemColorEi
-__ZN7WebCore16JSHTMLDivElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore14HTMLDivElement8setAlignERKNS_6StringE
-__ZN7WebCore17HTMLAppletElement19removedFromDocumentEv
-__ZN7WebCore17HTMLObjectElement21renderFallbackContentEv
-__ZN7WebCore19JSHTMLCanvasElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore17HTMLCanvasElement8setWidthEi
-__ZN7WebCore17HTMLCanvasElement9setHeightEi
-__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_17HTMLCanvasElementERKNS_9FloatRectES5_Ri
-__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_17HTMLCanvasElementEffffRi
-__ZThn8_N7WebCore14XMLHttpRequest15willSendRequestEPNS_17SubresourceLoaderERNS_15ResourceRequestERKNS_16ResourceResponseE
-__ZN7WebCore14XMLHttpRequest15willSendRequestEPNS_17SubresourceLoaderERNS_15ResourceRequestERKNS_16ResourceResponseE
-__ZNK7WebCore16StyleMarqueeDataeqERKS0_
-__ZN7WebCore22HTMLGenericFormElement11setReadOnlyEb
-__ZN7WebCore12toAlphabeticEiPKti
-__ZNK7WebCore20HTMLFrameElementBase11frameBorderEv
-__ZN7WebCore20HTMLTableCellElement10setRowSpanEi
-__ZN7WebCore18JSHTMLOListElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore16HTMLOListElement8setStartEi
-__ZN7WebCore9FrameView23removeSlowRepaintObjectEv
-__ZNK7WebCore16HTMLStyleElement8disabledEv
-__ZN3WTF6VectorIxLm0EE14expandCapacityEmPKx
-__ZN3WTF6VectorIxLm0EE14expandCapacityEm
-__ZN3WTF6VectorIxLm0EE15reserveCapacityEm
-__ZN3WTF6VectorIxLm0EE6shrinkEm
-__ZN7WebCore41jsHTMLSelectElementPrototypeFunctionFocusEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore12DOMSelection8baseNodeEv
-__ZN7WebCore39jsDOMSelectionPrototypeFunctionToStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12DOMSelection8toStringEv
-__ZN7WebCore13HTMLTokenizer11parseServerERNS_15SegmentedStringENS0_5StateE
-__ZN7WebCore21internalSubsetHandlerEPvPKhS2_S2_
-__ZN7WebCore12XMLTokenizer14internalSubsetEPKhS2_S2_
-__ZN7WebCore21externalSubsetHandlerEPvPKhS2_S2_
-__ZN7WebCore23JSProcessingInstructionC1EPN3KJS8JSObjectEPNS_21ProcessingInstructionE
-__ZN7WebCore23JSProcessingInstruction18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore21ProcessingInstruction8nodeNameEv
-__ZNK7WebCore16HTMLInputElement9accessKeyEv
-__ZN7WebCore40jsDocumentPrototypeFunctionCreateCommentEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document13createCommentERKNS_6StringE
-__ZN7WebCore10HTMLParser15popInlineBlocksEv
-__ZN3WTF6VectorIPN7WebCore17SubresourceLoaderELm256EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore17SubresourceLoaderELm256EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore17SubresourceLoaderELm256EE15reserveCapacityEm
-__ZN7WebCore51jsHTMLTableSectionElementPrototypeFunctionInsertRowEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore23HTMLTableSectionElement9insertRowEiRi
-__ZN7WebCore7Comment9cloneNodeEb
-__ZN7WebCore17HTMLIFrameElement8setAlignERKNS_6StringE
-__ZN7WebCore17HTMLSelectElement14removeChildrenEv
-__ZNK3KJS27XSLTProcessorConstructorImp19implementsConstructEv
-__ZN3KJS27XSLTProcessorConstructorImp9constructEPNS_9ExecStateERKNS_4ListE
-__ZN3KJS15JSXSLTProcessorC1EPNS_8JSObjectE
-__ZN3KJS22XSLTProcessorPrototype18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
-__ZN3KJS48jsXSLTProcessorPrototypeFunctionImportStylesheetEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK3KJS15JSXSLTProcessor9classInfoEv
-__ZN3KJS44jsXSLTProcessorPrototypeFunctionSetParameterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore13XSLTProcessor12setParameterERKNS_6StringES3_S3_
-__ZN3KJS51jsXSLTProcessorPrototypeFunctionTransformToFragmentEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore13XSLTProcessor19transformToFragmentEPNS_4NodeEPNS_8DocumentE
-__ZN7WebCore13XSLTProcessor17transformToStringEPNS_4NodeERNS_6StringES4_S4_
-__Z21initxsltSetLoaderFuncPFP7_xmlDocPKhP8_xmlDictiPv12xsltLoadTypeE
-__ZN7WebCore13XSLStyleSheetC1EPNS_4NodeERKNS_6StringEb
-__ZZN7WebCore22shouldAddNamespaceAttrEPKNS_9AttributeERN3WTF7HashMapIPNS_16AtomicStringImplES6_NS3_7PtrHashIS6_EENS3_10HashTraitsIS6_EESA_EEE8xmlnsURI
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplES3_NS_7PtrHashIS3_EENS_10HashTraitsIS3_EES7_E3getERKS3_
-__ZZN7WebCore15appendNamespaceERN3WTF6VectorItLm0EEERKNS_12AtomicStringES6_RNS0_7HashMapIPNS_16AtomicStringImplES9_NS0_7PtrHashIS9_EENS0_10HashTraitsIS9_EESD_EEE5xmlns
-__ZN7WebCore13XSLStyleSheet11parseStringERKNS_6StringEb
-__ZN7WebCore13XSLStyleSheet9docLoaderEv
-__ZN7WebCore27setLoaderForLibXMLCallbacksEPNS_9DocLoaderE
-__ZN7WebCore13XSLStyleSheet15loadChildSheetsEv
-__ZN7WebCore13XSLStyleSheet8documentEv
-__ZN7WebCore13XSLStyleSheet17compileStyleSheetEv
-__Z26initxsltParseStylesheetDocP7_xmlDoc
-__Z14libxsltLibraryv
-__ZN7WebCore13XSLStyleSheet14clearDocumentsEv
-__ZN7WebCore18xmlDocPtrForStringEPNS_9DocLoaderERKNS_6StringERKNS_16DeprecatedStringE
-__Z27initxsltNewTransformContextP15_xsltStylesheetP7_xmlDoc
-__ZN7WebCore22registerXSLTExtensionsEP21_xsltTransformContext
-__Z27initxsltRegisterExtFunctionP21_xsltTransformContextPKhS2_PFvP22_xmlXPathParserContextiE
-__Z23initxsltSetCtxtSortFuncP21_xsltTransformContextPFvS0_PP8_xmlNodeiE
-__Z23initxsltQuoteUserParamsP21_xsltTransformContextPPKc
-__Z27initxsltApplyStylesheetUserP15_xsltStylesheetP7_xmlDocPPKcS4_P7__sFILEP21_xsltTransformContext
-__Z28initxsltFreeTransformContextP21_xsltTransformContext
-__Z20initxsltSaveResultToP16_xmlOutputBufferP7_xmlDocP15_xsltStylesheet
-__ZN7WebCore13writeToVectorEPvPKci
-__ZN7WebCore6String8fromUTF8EPKcm
-__Z22initxsltFreeStylesheetP15_xsltStylesheet
-__ZN3KJS37jsXSLTProcessorPrototypeFunctionResetEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore8Document18setVisuallyOrderedEv
-__ZN7WebCore20HTMLTableCellElement9setHeightERKNS_6StringE
-__ZNK7WebCore16HTMLInputElement14defaultCheckedEv
-__ZN7WebCore16HTMLInputElement17setDefaultCheckedEb
-__ZN7WebCore29JSHTMLUListElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLUListElementConstructor9classInfoEv
-__ZN7WebCore16HTMLStyleElement11setDisabledEb
-__ZN7WebCore20parseMediaDescriptorERKNS_6StringE
-__ZN7WebCore17decodeNamedEntityEPKc
-__ZN7WebCore19HTMLOptGroupElement11appendChildEN3WTF10PassRefPtrINS_4NodeEEERi
-__ZN3KJS17staticValueGetterIN7WebCore18JSDOMCoreExceptionEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSDOMCoreException16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore23resetButtonDefaultLabelEv
-__ZNK7WebCore11ShadowValue7cssTextEv
-__ZNK7WebCore17HTMLObjectElement6vspaceEv
-__ZNK7WebCore17HTMLObjectElement6hspaceEv
-__ZN7WebCore26NetscapePlugInStreamLoader7didFailERKNS_13ResourceErrorE
-__ZN7WebCore42jsHTMLSelectElementPrototypeFunctionRemoveEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19JSHTMLSelectElement6removeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore13toHTMLElementEPN3KJS7JSValueE
-__ZNK7WebCore16HTMLImageElement1xEv
-__ZNK7WebCore16HTMLImageElement1yEv
-__ZN7WebCore12XMLTokenizer11stopParsingEv
-__ZNK7WebCore9Tokenizer14processingDataEv
-__ZN7WebCore17JSHTMLMenuElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZNK7WebCore17JSHTMLMenuElement9classInfoEv
-__ZNK7WebCore9FrameTree3topEv
-__ZN7WebCore14JSHTMLDocument6setAllEPN3KJS9ExecStateEPNS1_7JSValueE
-__ZN7WebCore10RenderFlow19paintOutlineForLineEPNS_15GraphicsContextEiiRKNS_7IntRectES5_S5_
-__ZNK7WebCore19JSHTMLAppletElement9classInfoEv
-__ZN7WebCore9Tokenizer11stopParsingEv
-__ZN7WebCore15HTMLLinkElement10setCharsetERKNS_6StringE
-__ZN7WebCore12XMLTokenizer12pauseParsingEv
-__ZThn8_N7WebCore12XMLTokenizer14notifyFinishedEPNS_14CachedResourceE
-__ZN7WebCore12XMLTokenizer14notifyFinishedEPNS_14CachedResourceE
-__ZN7WebCore12XMLTokenizer13resumeParsingEv
-__ZN7WebCore16PendingCallbacks25PendingCharactersCallback4callEPNS_12XMLTokenizerE
-__ZN7WebCore17DeprecatedPtrListINS_16PendingCallbacks15PendingCallbackEE10deleteFuncEPv
-__ZN7WebCore16PendingCallbacks27PendingEndElementNSCallback4callEPNS_12XMLTokenizerE
-__ZN7WebCore16PendingCallbacks29PendingStartElementNSCallback4callEPNS_12XMLTokenizerE
-__ZN7WebCore8Document13createElementERKNS_6StringERi
-__ZN7WebCore16PendingCallbacks25PendingCDATABlockCallback4callEPNS_12XMLTokenizerE
-__ZN7WebCore24CanvasRenderingContext2D5resetEv
-__ZN3WTF6VectorIN7WebCore24CanvasRenderingContext2D5StateELm1EE6resizeEm
-__ZN7WebCore12HTMLDocument3dirEv
-__ZN7WebCore43jsMouseEventPrototypeFunctionInitMouseEventEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore11toDOMWindowEPN3KJS7JSValueE
-__ZN7WebCore17toEventTargetNodeEPN3KJS7JSValueE
-__ZN7WebCore10MouseEvent14initMouseEventERKNS_12AtomicStringEbbPNS_9DOMWindowEiiiiibbbbtPNS_15EventTargetNodeE
-__ZN7WebCore7UIEvent11initUIEventERKNS_12AtomicStringEbbPNS_9DOMWindowEi
-__ZN7WebCore17MouseRelatedEvent15initCoordinatesEii
-__ZN7WebCore43jsCharacterDataPrototypeFunctionReplaceDataEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore13CharacterData11replaceDataEjjRKNS_6StringERi
-__ZN7WebCore25max_widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore39jsHTMLSelectElementPrototypeFunctionAddEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore15HTMLBodyElement13setBackgroundERKNS_6StringE
-__ZN7WebCore16PendingCallbacks22PendingCommentCallback4callEPNS_12XMLTokenizerE
-__ZN7WebCore24parseXMLDocumentFragmentERKNS_6StringEPNS_16DocumentFragmentEPNS_7ElementE
-__ZN7WebCore12XMLTokenizerC1EPNS_16DocumentFragmentEPNS_7ElementE
-__ZN3WTF6VectorIPN7WebCore7ElementELm0EE14expandCapacityEmPKS3_
-__ZN7WebCore29balancedStartElementNsHandlerEPvPKhS2_S2_iPS2_iiS3_
-__ZN7WebCore25balancedCharactersHandlerEPvPKhi
-__ZN7WebCore27balancedEndElementNsHandlerEPvPKhS2_S2_
-__ZN7WebCore17HTMLAnchorElement6setRelERKNS_6StringE
-__ZN7WebCore7CSSRule6isRuleEv
-__ZN7WebCore9StyleBase13isCharsetRuleEv
-__ZNK7WebCore26JSXMLSerializerConstructor19implementsConstructEv
-__ZN7WebCore26JSXMLSerializerConstructor9constructEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_13XMLSerializerE
-__ZN7WebCore15JSXMLSerializerC1EPN3KJS8JSObjectEPNS_13XMLSerializerE
-__ZN7WebCore15JSXMLSerializer18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore24JSXMLSerializerPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore49jsXMLSerializerPrototypeFunctionSerializeToStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore15JSXMLSerializer9classInfoEv
-__ZN7WebCore13XMLSerializer17serializeToStringEPNS_4NodeERi
-__ZN7WebCore27JSHTMLFrameElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSHTMLObjectElementPrototype9classInfoEv
-__ZNK7WebCore17HTMLObjectElement4dataEv
-__ZNK7WebCore17HTMLObjectElement8codeBaseEv
-__ZNK7WebCore17HTMLObjectElement4codeEv
-__ZNK7WebCore17HTMLObjectElement7archiveEv
-__ZNK7WebCore17HTMLObjectElement8codeTypeEv
-__ZNK7WebCore17HTMLObjectElement7declareEv
-__ZNK7WebCore17HTMLObjectElement7standbyEv
-__ZNK7WebCore17HTMLObjectElement6borderEv
-__ZNK7WebCore17HTMLPlugInElement5alignEv
-__ZNK7WebCore17HTMLObjectElement6useMapEv
-__ZN7WebCore20HTMLTableCellElement9setNoWrapEb
-__ZN3KJS17staticValueGetterIN7WebCore23JSHTMLBlockquoteElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore23JSHTMLBlockquoteElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore16JSStyleSheetList18canGetItemsForNameEPN3KJS9ExecStateEPNS_14StyleSheetListERKNS1_10IdentifierE
-__ZNK7WebCore14StyleSheetList12getNamedItemERKNS_6StringE
-__ZN7WebCore16JSStyleSheetList10nameGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore37jsHTMLCollectionPrototypeFunctionTagsEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore14HTMLCollection4tagsERKNS_6StringE
-__ZN7WebCore42jsDOMSelectionPrototypeFunctionSetPositionEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12DOMSelection11setPositionEPNS_4NodeEiRi
-__ZN7WebCore13executeDeleteEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore37jsDOMSelectionPrototypeFunctionModifyEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12DOMSelection6modifyERKNS_6StringES3_S3_
-__ZN7WebCore19SelectionController27modifyExtendingRightForwardENS_15TextGranularityE
-__ZN7WebCore16nextLinePositionERKNS_15VisiblePositionEi
-__ZNK7WebCore4Node12nextEditableEi
-__ZN7WebCore14isEditableLeafEPNS_9InlineBoxE
-__ZN7WebCore15isTableRowEmptyEPNS_4NodeE
-__ZN7WebCore20CompositeEditCommand22insertBlockPlaceholderERKNS_8PositionE
-__ZN7WebCore23ReplaceSelectionCommand27removeNodeAndPruneAncestorsEPNS_4NodeE
-__ZN7WebCore17executeInsertTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore20setJSNodeOndragstartEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node14setOndragstartEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCoreL17executeInsertTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
__ZN7WebCore13TypingCommand10insertTextEPNS_8DocumentERKNS_6StringEbb
+__ZN7WebCore20CompositeEditCommand19removePlaceholderAtERKNS_8PositionE
+__ZN7WebCore20CompositeEditCommand23breakOutOfEmptyListItemEv
+__ZN7WebCore22enclosingEmptyListItemERKNS_15VisiblePositionE
+__ZN7WebCore18enclosingListChildEPNS_4NodeE
+__ZN7WebCore13isListElementEPNS_4NodeE
+__ZN7WebCore13TypingCommand21makeEditableRootEmptyEv
+__ZNK7WebCore7Element17firstElementChildEv
+__ZN7WebCore37jsDOMSelectionPrototypeFunctionModifyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection6modifyERKNS_6StringES3_S3_
+__ZN7WebCore19SelectionController19modifyMovingForwardENS_15TextGranularityE
+__ZN7WebCore19SelectionController22modifyExtendingForwardENS_15TextGranularityE
__ZN7WebCore16nextWordPositionERKNS_15VisiblePositionE
-__ZN7WebCore24nextWordPositionBoundaryEPKtj
+__ZN7WebCoreL24nextWordPositionBoundaryEPKtjjNS_33BoundarySearchContextAvailabilityERb
__ZN7WebCore21findNextWordFromIndexEPKtiib
-__ZN7WebCore11StyleChange29checkForLegacyHTMLStyleChangeEPKNS_11CSSPropertyE
-__ZN7WebCore9CSSParser25parseFontFaceUnicodeRangeEv
-__ZN7WebCore9FontCache10fontExistsERKNS_15FontDescriptionERKNS_12AtomicStringE
-__ZN7WebCore17CSSFontFaceSourceC1ERKNS_6StringEPNS_10CachedFontE
-__ZN7WebCore11CSSFontFace9addSourceEPNS_17CSSFontFaceSourceE
-__ZN3WTF6VectorIPN7WebCore17CSSFontFaceSourceELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore17CSSFontFaceSourceELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore17CSSFontFaceSourceELm0EE15reserveCapacityEm
-__ZNK7WebCore17CSSFontFaceSource7isValidEv
-__ZN7WebCore20CSSSegmentedFontFaceC1EPNS_15CSSFontSelectorE
-__ZN7WebCore20CSSSegmentedFontFace12overlayRangeEiiN3WTF10PassRefPtrINS_11CSSFontFaceEEE
-__ZN7WebCore20CSSSegmentedFontFace10pruneTableEv
-__ZN3WTF6VectorIN7WebCore13FontFaceRangeELm8EEC1ILm1EEERKNS0_IS2_XT_EEE
-__ZN3WTF6VectorIN7WebCore13FontFaceRangeELm1EE6shrinkEm
-__ZN3WTF6VectorIN7WebCore13FontFaceRangeELm1EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore13FontFaceRangeELm1EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore13FontFaceRangeELm1EE15reserveCapacityEm
-__ZN3WTF6VectorIN7WebCore13FontFaceRangeELm8EE6shrinkEm
-__ZN7WebCore20CSSSegmentedFontFace11getFontDataERKNS_15FontDescriptionEbb
-__ZNK7WebCore20CSSSegmentedFontFace7isValidEv
-__ZN3WTF7HashMapIjPN7WebCore17SegmentedFontDataENS_7IntHashIjEENS_10HashTraitsIjEENS6_IS3_EEE3setERKjRKS3_
-__ZN7WebCore11CSSFontFace11getFontDataERKNS_15FontDescriptionEbb
-__ZN7WebCore17CSSFontFaceSource11getFontDataERKNS_15FontDescriptionEbbPNS_15CSSFontSelectorE
-__ZN3WTF6VectorIN7WebCore13FontDataRangeELm1EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore13FontDataRangeELm1EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore13FontDataRangeELm1EE15reserveCapacityEm
-__ZNK7WebCore17SegmentedFontData9isLoadingEv
-__ZNK7WebCore17SegmentedFontData11isSegmentedEv
-__ZNK7WebCore17SegmentedFontData20fontDataForCharacterEi
-__ZNK7WebCore17SegmentedFontData12isCustomFontEv
-__ZN7WebCore40firstEditablePositionAfterPositionInRootERKNS_8PositionEPNS_4NodeE
-__ZN7WebCore39jsDOMSelectionPrototypeFunctionAddRangeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7toRangeEPN3KJS7JSValueE
-__ZN7WebCore12DOMSelection8addRangeEPNS_5RangeE
+__ZN7WebCore11RenderBlock26fillHorizontalSelectionGapEPNS_12RenderObjectEiiiiPKNS1_9PaintInfoE
+__ZN7WebCoreL12nodePositionEPNS_4NodeE
+__ZN7WebCore6String6numberEj
+__ZN7WebCore4Node16shadowParentNodeEv
+__ZN7WebCore47jsDOMSelectionPrototypeFunctionSetBaseAndExtentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection16setBaseAndExtentEPNS_4NodeEiS2_iRi
+__ZN7WebCore19SelectionController6moveToERKNS_15VisiblePositionES3_b
+__ZNK7WebCore6Editor25shouldShowDeleteInterfaceEPNS_11HTMLElementE
__ZN7WebCore21nextParagraphPositionERKNS_15VisiblePositionEi
+__ZN7WebCore16nextLinePositionERKNS_15VisiblePositionEi
+__ZN7WebCoreL27nextLeafWithSameEditabilityEPNS_4NodeE
+__ZN7WebCore20CompositeEditCommand15insertNodeAfterEN3WTF10PassRefPtrINS_4NodeEEES4_
+__ZN7WebCore11RenderBlock21fillRightSelectionGapEPNS_12RenderObjectEiiiPS0_iiiiPKNS1_9PaintInfoE
+__ZN7WebCore11RenderBlock24fillVerticalSelectionGapEiiiiPS0_iiPKNS_12RenderObject9PaintInfoE
+__ZN7WebCore11RenderBlock20fillLeftSelectionGapEPNS_12RenderObjectEiiiPS0_iiiiPKNS1_9PaintInfoE
+__ZN7WebCore20setJSDOMWindowParentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore25previousParagraphPositionERKNS_15VisiblePositionEi
-__ZN7WebCore20previousLinePositionERKNS_15VisiblePositionEi
__ZN7WebCore15inSameParagraphERKNS_15VisiblePositionES2_
-__ZN7WebCore11enabledUndoEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCore8RenderBR23selectionRectForRepaintEPNS_20RenderBoxModelObjectEb
+__ZN7WebCore11StyleChange29checkForLegacyHTMLStyleChangeEPKNS_11CSSPropertyE
+__ZN7WebCore22createStyleSpanElementEPNS_8DocumentE
+__ZN7WebCore17createHTMLElementEPNS_8DocumentERKNS_13QualifiedNameE
+__ZN7WebCore17ApplyStyleCommand28surroundNodeRangeWithElementEPNS_4NodeES2_N3WTF10PassRefPtrINS_7ElementEEE
+__ZN7WebCore23ReplaceSelectionCommand27removeNodeAndPruneAncestorsEPNS_4NodeE
+__ZN7WebCore16VisibleSelection27selectionFromContentsOfNodeEPNS_4NodeE
+__ZN7WebCoreL16executeSelectAllEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore19SelectionController9selectAllEv
+__ZNK7WebCore4Node12canSelectAllEv
+__ZNK7WebCore8Position19isRenderedCharacterEv
+__ZN7WebCore22nonBreakingSpaceStringEv
+__ZN7WebCore20CompositeEditCommand17replaceTextInNodeEN3WTF10PassRefPtrINS_4TextEEEjjRKNS_6StringE
+__ZN7WebCore23ReplaceSelectionCommand16handleStyleSpansEv
+__ZN7WebCore20CompositeEditCommand16setNodeAttributeEN3WTF10PassRefPtrINS_7ElementEEERKNS_13QualifiedNameERKNS_12AtomicStringE
+__ZN7WebCore23SetNodeAttributeCommandC1EN3WTF10PassRefPtrINS_7ElementEEERKNS_13QualifiedNameERKNS_12AtomicStringE
+__ZN7WebCore23SetNodeAttributeCommandC2EN3WTF10PassRefPtrINS_7ElementEEERKNS_13QualifiedNameERKNS_12AtomicStringE
+__ZN7WebCore23SetNodeAttributeCommand7doApplyEv
+__ZN7WebCore40firstEditablePositionAfterPositionInRootERKNS_8PositionEPNS_4NodeE
+__ZN7WebCore23SetNodeAttributeCommandD0Ev
+__ZN7WebCore12startOfBlockERKNS_15VisiblePositionE
+__ZN7WebCore30jsRangePrototypeFunctionSetEndEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore39jsDOMSelectionPrototypeFunctionAddRangeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7toRangeEN3JSC7JSValueE
+__ZN7WebCore12DOMSelection8addRangeEPNS_5RangeE
+__ZN7WebCoreL32elementHasTextDecorationPropertyEPKNS_4NodeE
+__ZN7WebCoreL34styleFromMatchedRulesAndInlineDeclEPKNS_4NodeE
+__ZN3WTF11ListHashSetIPN7WebCore12RenderInlineENS_7PtrHashIS3_EEE3addERKS3_
+__ZN3WTF11ListHashSetIPN7WebCore12RenderInlineENS_7PtrHashIS3_EEE10appendNodeEPNS_15ListHashSetNodeIS3_EE
+__ZN7WebCore12RenderInline12paintOutlineEPNS_15GraphicsContextEii
+__ZN7WebCore12RenderInline17addFocusRingRectsEPNS_15GraphicsContextEii
+__ZN7WebCoreL15isTableRowEmptyEPNS_4NodeE
+__ZN7WebCore9CSSParser25parseFontFaceUnicodeRangeEv
+__ZN3WTF6VectorIN7WebCore11CSSFontFace12UnicodeRangeELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIN7WebCore11CSSFontFace12UnicodeRangeELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore11CSSFontFace12UnicodeRangeELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIjLm0EE14expandCapacityEm
+__ZN3WTF6VectorIjLm0EE15reserveCapacityEm
+__ZN3WTF6VectorIjLm0EE6shrinkEm
+__ZSt25__unguarded_linear_insertIPPN7WebCore11CSSFontFaceES2_PFbS2_S2_EEvT_T0_T1_
+__ZN7WebCore19SelectionController20modifyMovingBackwardENS_15TextGranularityE
+__ZN3WTF6VectorIN7WebCore11CSSFontFace12UnicodeRangeELm0EE6shrinkEm
+__ZN7WebCore20CSSUnicodeRangeValueD0Ev
+__ZN7WebCore27setJSHTMLDocumentDesignModeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore12HTMLDocument13setDesignModeERKNS_6StringE
+__ZN7WebCore8Document13setDesignModeENS0_13InheritedBoolE
+__ZN7WebCore52jsHTMLInputElementPrototypeFunctionSetSelectionRangeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore18JSHTMLInputElement17setSelectionRangeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore16HTMLInputElement17setSelectionRangeEii
+__ZN7WebCoreL17executeCreateLinkEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore17CreateLinkCommandC1EPNS_8DocumentERKNS_6StringE
+__ZN7WebCore17CreateLinkCommandC2EPNS_8DocumentERKNS_6StringE
+__ZN7WebCore17CreateLinkCommand7doApplyEv
+__ZN7WebCore17HTMLAnchorElementC1EPNS_8DocumentE
+__ZN7WebCore17HTMLAnchorElementC2EPNS_8DocumentE
+__ZNK7WebCore11EditCommand15isTypingCommandEv
+__ZNK7WebCore11EditCommand20preservesTypingStyleEv
+__ZNK7WebCore17CreateLinkCommand13editingActionEv
+__ZNK7WebCore17RenderTextControl10renderNameEv
+__ZN7WebCore17CreateLinkCommandD0Ev
+__ZN7WebCore20CompositeEditCommand22insertBlockPlaceholderERKNS_8PositionE
+__ZN7WebCore29createBlockPlaceholderElementEPNS_8DocumentE
+__ZN7WebCore6Editor16shouldEndEditingEPNS_5RangeE
+__ZN7WebCoreL25executeDeleteWordBackwardEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore20previousWordPositionERKNS_15VisiblePositionE
+__ZN7WebCoreL28previousWordPositionBoundaryEPKtjjNS_33BoundarySearchContextAvailabilityERb
+__ZN7WebCore6Editor13addToKillRingEPNS_5RangeEb
+__ZN7WebCore6Editor24startNewKillRingSequenceEv
+__ZN7WebCoreL26initializeKillRingIfNeededEv
+__ZN7WebCore6Editor16appendToKillRingERKNS_6StringE
+__ZN7WebCore22DeleteButtonController16createDeletionUIEv
+__ZN7WebCore12DeleteButtonC1EPNS_8DocumentE
+__ZN7WebCore12DeleteButtonC2EPNS_8DocumentE
+__ZN7WebCore11CachedImageC1EPNS_5ImageE
+__ZN7WebCore11CachedImageC2EPNS_5ImageE
+__ZN7WebCore11ImageLoader8setImageEPNS_11CachedImageE
+__ZN7WebCore33jsDOMWindowPrototypeFunctionAlertEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow5alertERKNS_6StringE
+__ZN7WebCore6Chrome18runJavaScriptAlertEPNS_5FrameERKNS_6StringE
+__ZN7WebCore21PageGroupLoadDeferrerC1EPNS_4PageEb
+__ZN7WebCore21PageGroupLoadDeferrerC2EPNS_4PageEb
+__ZN7WebCore21PageGroupLoadDeferrerD1Ev
+__ZN7WebCore21PageGroupLoadDeferrerD2Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm16EE6shrinkEm
+__ZN7WebCore12DeleteButton19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore22DeleteButtonController12deleteTargetEv
+__ZN7WebCore12EventHandler24scheduleHoverStateUpdateEv
+__ZNK7WebCore11EditCommand13editingActionEv
+__ZN7WebCore12RenderObject17setSelectionStateENS0_14SelectionStateE
+__ZN7WebCore12RenderObject23selectionRectForRepaintEPNS_20RenderBoxModelObjectEb
++[WebUndefined undefined]
++[WebUndefined allocWithZone:]
+-[WebScriptObject valueForKey:]
+-[WebScriptObject _originRootObject]
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore4FileEEELm0EE14shrinkCapacityEm
+__ZN7WebCore23ReplaceSelectionCommand28removeNodePreservingChildrenEPNS_4NodeE
+__ZN7WebCore20CompositeEditCommand28removeNodePreservingChildrenEN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore35RemoveNodePreservingChildrenCommandC1EN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore35RemoveNodePreservingChildrenCommandC2EN3WTF10PassRefPtrINS_4NodeEEE
+__ZN7WebCore35RemoveNodePreservingChildrenCommand7doApplyEv
+__ZN7WebCore35RemoveNodePreservingChildrenCommandD0Ev
+__ZN7WebCore12TextIterator8subrangeEPNS_5RangeEii
+__ZN3WTF6VectorIN7WebCore18TextCheckingResultELm0EE6shrinkEm
+__ZN7WebCoreeqERKNS_5RangeES2_
+__ZN7WebCore13InlineTextBox28paintSpellingOrGrammarMarkerEPNS_15GraphicsContextEiiNS_14DocumentMarkerEPNS_11RenderStyleERKNS_4F
+__ZN7WebCore15GraphicsContext34drawLineForMisspellingOrBadGrammarERKNS_8IntPointEib
+__ZN7WebCoreL18createPatternColorEP8NSStringP7NSColorRb
+__ZN7WebCoreL22executeInsertParagraphEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore13TypingCommand24insertParagraphSeparatorEPNS_8DocumentE
+__ZN7WebCore13TypingCommand24insertParagraphSeparatorEv
+__ZN7WebCore31InsertParagraphSeparatorCommandC1EPNS_8DocumentEb
+__ZN7WebCore31InsertParagraphSeparatorCommandC2EPNS_8DocumentEb
+__ZN7WebCore31InsertParagraphSeparatorCommand7doApplyEv
+__ZN7WebCore31InsertParagraphSeparatorCommand29calculateStyleBeforeInsertionERKNS_8PositionE
+__ZNK7WebCore31InsertParagraphSeparatorCommand32shouldUseDefaultParagraphElementEPNS_4NodeE
+__ZN7WebCore20CompositeEditCommand22appendBlockPlaceholderEN3WTF10PassRefPtrINS_7ElementEEE
+__ZN7WebCore31InsertParagraphSeparatorCommand24applyStyleAfterInsertionEPNS_4NodeE
+__ZN7WebCore31InsertParagraphSeparatorCommandD0Ev
+__ZN7WebCore30setJSHTMLOptionElementDisabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCoreL17createFontElementEPNS_8DocumentE
+__ZN7WebCoreL35executeInsertNewlineInQuotedContentEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore13TypingCommand39insertParagraphSeparatorInQuotedContentEPNS_8DocumentE
+__ZN7WebCore13TypingCommand39insertParagraphSeparatorInQuotedContentEv
+__ZN7WebCore22BreakBlockquoteCommandC1EPNS_8DocumentE
+__ZN7WebCore22BreakBlockquoteCommandC2EPNS_8DocumentE
+__ZN7WebCore22BreakBlockquoteCommand7doApplyEv
+__ZN7WebCore28isFirstVisiblePositionInNodeERKNS_15VisiblePositionEPKNS_4NodeE
+__ZN7WebCore27isLastVisiblePositionInNodeERKNS_15VisiblePositionEPKNS_4NodeE
+__ZN7WebCore20CompositeEditCommand19rebalanceWhitespaceEv
+__ZN7WebCore22BreakBlockquoteCommandD0Ev
+__ZN7WebCoreL11enabledUndoEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
__ZN7WebCore6Editor7canUndoEv
-__ZN7WebCore11executeUndoEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL11executeUndoEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
__ZN7WebCore6Editor4undoEv
__ZN7WebCore11EditCommand7unapplyEv
__ZN7WebCore20CompositeEditCommand9doUnapplyEv
-__ZN7WebCore17RemoveNodeCommand9doUnapplyEv
-__ZN7WebCore6Editor16unappliedEditingEN3WTF10PassRefPtrINS_11EditCommandEEE
-__ZN7WebCore23InsertNodeBeforeCommand9doUnapplyEv
-__ZN7WebCore17AppendNodeCommand9doUnapplyEv
__ZN7WebCore25DeleteFromTextNodeCommand9doUnapplyEv
+__ZN7WebCore6Editor16unappliedEditingEN3WTF10PassRefPtrINS_11EditCommandEEE
+__ZN7WebCore26setJSHTMLTableElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLTableElement8setAlignERKNS_6StringE
+__ZNK7WebCore9RenderBox19lastLineBoxBaselineEv
+__ZN7WebCore20CompositeEditCommand27addBlockPlaceholderIfNeededEPNS_7ElementE
+__ZN7WebCoreL20executeForwardDeleteEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore13TypingCommand23forwardDeleteKeyPressedEPNS_8DocumentEbNS_15TextGranularityEb
+__ZN7WebCore13TypingCommand23forwardDeleteKeyPressedENS_15TextGranularityEb
+__ZN7WebCore16VisibleSelectionD2Ev
+__ZN7WebCoreL28fontSizeChangesComputedStyleEPNS_11RenderStyleENS_11StyleChangeE
+__ZN7WebCore15createJSWrapperEPN3JSC8JSObjectEN3WTF10PassRefPtrINS0_8Bindings10RootObjectEEES7_
+__ZN7WebCore12getJSWrapperEPN3JSC8JSObjectE
+-[WebScriptObject _initWithJSObject:originRootObject:rootObject:]
+-[WebScriptObject webScriptValueAtIndex:]
__ZN7WebCore25InsertIntoTextNodeCommand9doUnapplyEv
-__ZN7WebCore23SetNodeAttributeCommand9doUnapplyEv
-__ZN7WebCore35executeInsertNewlineInQuotedContentEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore13TypingCommand39insertParagraphSeparatorInQuotedContentEPNS_8DocumentE
-__ZN7WebCore13TypingCommand39insertParagraphSeparatorInQuotedContentEv
-__ZN7WebCore22BreakBlockquoteCommandC2EPNS_8DocumentE
-__ZN7WebCore22BreakBlockquoteCommand7doApplyEv
-__ZN7WebCore27isLastVisiblePositionInNodeERKNS_15VisiblePositionEPKNS_4NodeE
-__ZN7WebCore20executeForwardDeleteEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore13TypingCommand23forwardDeleteKeyPressedEPNS_8DocumentEbNS_15TextGranularityE
-__ZN7WebCore13TypingCommand23forwardDeleteKeyPressedENS_15TextGranularityE
-__ZN7WebCore31SimplifiedBackwardsTextIterator21handleReplacedElementEv
+__ZN7WebCoreL18marqueeConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore18HTMLMarqueeElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore18HTMLMarqueeElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore18HTMLMarqueeElement10mapToEntryERKNS_13QualifiedNameERNS_20MappedAttributeEntryE
+__ZN7WebCore18HTMLMarqueeElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCoreL31createHTMLMarqueeElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore20JSHTMLMarqueeElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSHTMLMarqueeElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18HTMLMarqueeElementEEE
+__ZN7WebCore20JSHTMLMarqueeElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18HTMLMarqueeElementEEE
+__ZNK7WebCore18HTMLMarqueeElement17endTagRequirementEv
+__ZNK7WebCore18HTMLMarqueeElement11tagPriorityEv
+__ZN7WebCore16StyleMarqueeDataC1ERKS0_
+__ZN7WebCore16StyleMarqueeDataC2ERKS0_
+__ZN7WebCore13RenderMarqueeC1EPNS_11RenderLayerE
+__ZN7WebCore13RenderMarqueeC2EPNS_11RenderLayerE
+__ZN7WebCore13RenderMarquee18updateMarqueeStyleEv
+__ZNK7WebCore13RenderMarquee12isHorizontalEv
+__ZNK7WebCore13RenderMarquee9directionEv
+__ZNK7WebCore13RenderMarquee12marqueeSpeedEv
+__ZN7WebCore13RenderMarquee21updateMarqueePositionEv
+__ZN7WebCore13RenderMarquee15computePositionENS_17EMarqueeDirectionEb
+__ZN7WebCore13RenderMarquee5startEv
+__ZN7WebCore5TimerINS_13RenderMarqueeEE5firedEv
+__ZN7WebCore13RenderMarquee10timerFiredEPNS_5TimerIS0_EE
+__ZThn112_NK7WebCore18HTMLMarqueeElement10canSuspendEv
+__ZNK7WebCore18HTMLMarqueeElement10canSuspendEv
+__ZThn112_N7WebCore18HTMLMarqueeElement4stopEv
+__ZN7WebCore18HTMLMarqueeElement4stopEv
+__ZN7WebCore13RenderMarquee4stopEv
+__ZN7WebCore20JSHTMLMarqueeElementD1Ev
+__ZN7WebCore29JSHTMLMarqueeElementPrototypeD1Ev
+__ZN7WebCore18HTMLMarqueeElementD0Ev
+__ZNK7WebCore4Font27selectionRectForComplexTextERKNS_7TextRunERKNS_8IntPointEiii
+__ZN7WebCore26RenderTextControlMultiLine17subtreeHasChangedEv
+__ZN7WebCore5Frame23textDidChangeInTextAreaEPNS_7ElementE
+__Z3kitPN7WebCore19HTMLTextAreaElementE
+__ZN7WebCore8Position42uncheckedPreviousOffsetForBackwardDeletionEPKNS_4NodeEi
+__ZNK7WebCore10RenderText33previousOffsetForBackwardDeletionEi
+__ZN7WebCore40lastEditablePositionBeforePositionInRootERKNS_8PositionEPNS_4NodeE
+__ZNK7WebCore16RenderListMarker18canBeSelectionLeafEv
+__ZN7WebCore16RenderListMarker17setSelectionStateENS_12RenderObject14SelectionStateE
+__ZN7WebCore16RenderListMarker23selectionRectForRepaintEPNS_20RenderBoxModelObjectEb
__ZN7WebCore17InsertTextCommand9insertTabERKNS_8PositionE
__ZN7WebCore20createTabSpanElementEPNS_8DocumentE
__ZN7WebCore20createTabSpanElementEPNS_8DocumentEN3WTF10PassRefPtrINS_4NodeEEE
__ZN7WebCore11tabSpanNodeEPKNS_4NodeE
-__ZN7WebCore25enableCaretInEditableTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
-__ZN7WebCore16executeTransposeEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore20CompositeEditCommand13splitTextNodeEN3WTF10PassRefPtrINS_4TextEEEj
+__ZN7WebCore20SplitTextNodeCommandC1EN3WTF10PassRefPtrINS_4TextEEEi
+__ZN7WebCore20SplitTextNodeCommandC2EN3WTF10PassRefPtrINS_4TextEEEi
+__ZN7WebCore20SplitTextNodeCommand7doApplyEv
+__ZN7WebCore8Document11copyMarkersEPNS_4NodeEjiS2_iNS_14DocumentMarker10MarkerTypeE
+__ZN7WebCore20SplitTextNodeCommandD0Ev
+__ZN7WebCoreL22executeInsertLineBreakEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore13TypingCommand15insertLineBreakEPNS_8DocumentE
+__ZN7WebCore13TypingCommand15insertLineBreakEv
+__ZN7WebCore22InsertLineBreakCommandC1EPNS_8DocumentE
+__ZN7WebCore22InsertLineBreakCommandC2EPNS_8DocumentE
+__ZN7WebCore22InsertLineBreakCommand7doApplyEv
+__ZN7WebCore22InsertLineBreakCommand21shouldUseBreakElementERKNS_8PositionE
+__ZN7WebCore22InsertLineBreakCommandD0Ev
+__ZN7WebCoreL29executeDeleteToEndOfParagraphEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore21createListItemElementEPNS_8DocumentE
+__ZN7WebCore39jsDocumentPrototypeFunctionGetSelectionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore8Document12getSelectionEv
+__ZN7WebCore48jsDOMSelectionPrototypeFunctionSelectAllChildrenEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection17selectAllChildrenEPNS_4NodeERi
+__ZN7WebCore44jsDOMSelectionPrototypeFunctionCollapseToEndEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection13collapseToEndEv
+__ZN7WebCore38jsRangePrototypeFunctionSetStartBeforeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore35jsRangePrototypeFunctionSetEndAfterEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCoreL20executeDeleteForwardEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore36jsDOMWindowHTMLDivElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL25enableCaretInEditableTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCoreL16executeTransposeEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
__ZN7WebCore6Editor9transposeEv
-__ZN7WebCore20SplitTextNodeCommand9doUnapplyEv
-__ZN7WebCore22executeInsertLineBreakEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore22executeInsertParagraphEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore20CSSSegmentedFontFaceD1Ev
-__ZN7WebCore17CSSFontFaceSource10pruneTableEv
-__ZN3WTF6VectorIPN7WebCore17CSSFontFaceSourceELm0EE6shrinkEm
-__ZN7WebCore17GlyphPageTreeNode23pruneTreeCustomFontDataEPKNS_8FontDataE
-__ZN7WebCore17GlyphPageTreeNode19pruneCustomFontDataEPKNS_8FontDataE
-__ZN7WebCore17GlyphPageTreeNodeD1Ev
-__ZN3WTF20deleteAllPairSecondsIPN7WebCore17GlyphPageTreeNodeEKNS_7HashMapIPKNS1_8FontDataES3_NS_7PtrHashIS7_EENS_10HashTraitsIS7_EENSA_IS3_EEEEEEvRT0_
-__ZN3WTF20deleteAllPairSecondsIPN7WebCore17SegmentedFontDataEKNS_7HashMapIjS3_NS_7IntHashIjEENS_10HashTraitsIjEENS7_IS3_EEEEEEvRT0_
-__ZN7WebCore17SegmentedFontDataD1Ev
-__ZN3WTF6VectorIN7WebCore13FontDataRangeELm1EE6shrinkEm
-__ZN7WebCore20CSSUnicodeRangeValueD1Ev
-__ZN7WebCore20startOfNextParagraphERKNS_15VisiblePositionE
-__ZN7WebCore27executeInsertHorizontalRuleEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore17executeInsertNodeEPNS_5FrameEN3WTF10PassRefPtrINS_4NodeEEE
-__ZN7WebCore21executeInsertFragmentEPNS_5FrameEN3WTF10PassRefPtrINS_16DocumentFragmentEEE
-__ZNK7WebCore14ClipboardEvent16isClipboardEventEv
-__ZNK7WebCore14ClipboardEvent9clipboardEv
-__ZN7WebCore20JSClipboardPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore11JSClipboardC1EPN3KJS8JSObjectEPNS_9ClipboardE
-__ZN7WebCore11JSClipboard18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore20JSClipboardPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore35jsClipboardPrototypeFunctionSetDataEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore11JSClipboard9classInfoEv
-__ZN7WebCore12ClipboardMac7setDataERKNS_6StringES3_
-__ZN7WebCore21cocoaTypeFromMIMETypeERKNS_6StringE
-__ZN7WebCore14supportedPasteEPNS_5FrameENS_19EditorCommandSourceE
-__ZN7WebCore14executeOutdentEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore16logicalEndOfLineERKNS_15VisiblePositionE
+__ZN7WebCoreL26getLeafBoxesInLogicalOrderEPNS_13RootInlineBoxERN3WTF6VectorIPNS_9InlineBoxELm0EEE
+__ZN3WTF6VectorIPN7WebCore9InlineBoxELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore9InlineBoxELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore9InlineBoxELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIPN7WebCore9InlineBoxELm0EE6shrinkEm
+__ZN7WebCore17inSameLogicalLineERKNS_15VisiblePositionES2_
+__ZN7WebCore18logicalStartOfLineERKNS_15VisiblePositionE
+__ZN7WebCore32jsDOMWindowPrototypeFunctionFindEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore9DOMWindow4findERKNS_6StringEbbbbbb
+__ZN7WebCore5Frame10findStringERKNS_6StringEbbbb
+__ZNK7WebCore16VisibleSelection18shadowTreeRootNodeEv
+__ZN7WebCoreL20executeJustifyCenterEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL26executeApplyParagraphStyleEPNS_5FrameENS_19EditorCommandSourceENS_10EditActionEiRKNS_6StringE
+__ZN7WebCore6Editor19applyParagraphStyleEPNS_19CSSStyleDeclarationENS_10EditActionE
+__ZN7WebCore17ApplyStyleCommand15applyBlockStyleEPNS_26CSSMutableStyleDeclarationE
+__ZN7WebCore20CompositeEditCommand42moveParagraphContentsToNewBlockIfNecessaryERKNS_8PositionE
+__ZN7WebCore20CompositeEditCommand34insertNewDefaultParagraphElementAtERKNS_8PositionE
+__ZN7WebCore17ApplyStyleCommand13addBlockStyleERKNS_11StyleChangeEPNS_11HTMLElementE
+__ZN7WebCore12TextIterator26rangeFromLocationAndLengthEPNS_7ElementEiib
+__ZNK7WebCore17ApplyStyleCommand13editingActionEv
+__ZN7WebCoreL16executeBackColorEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL17executeApplyStyleEPNS_5FrameENS_19EditorCommandSourceENS_10EditActionEiRKNS_6StringE
+__ZN7WebCore6Editor10applyStyleEPNS_19CSSStyleDeclarationENS_10EditActionE
+__ZN7WebCore5Frame24computeAndSetTypingStyleEPNS_19CSSStyleDeclarationENS_10EditActionE
+__ZN7WebCoreL13executeIndentEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore20IndentOutdentCommandC1EPNS_8DocumentENS0_11EIndentTypeEi
__ZN7WebCore20IndentOutdentCommandC2EPNS_8DocumentENS0_11EIndentTypeEi
__ZN7WebCore20IndentOutdentCommand7doApplyEv
-__ZN7WebCore20IndentOutdentCommand13outdentRegionEv
-__ZN7WebCore20IndentOutdentCommand16outdentParagraphEv
-__ZN7WebCore24isListOrIndentBlockquoteEPKNS_4NodeE
-__ZN7WebCore18isIndentBlockquoteEPKNS_4NodeE
-__ZNK7WebCore20IndentOutdentCommand13editingActionEv
+__ZN7WebCore20IndentOutdentCommand12indentRegionEv
+__ZN7WebCore30selectionForParagraphIterationERKNS_16VisibleSelectionE
+__ZN7WebCore23indexForVisiblePositionERNS_15VisiblePositionE
+__ZN7WebCore13enclosingListEPNS_4NodeE
+__ZN7WebCoreL29createIndentBlockquoteElementEPNS_8DocumentE
+__ZN7WebCoreL22indentBlockquoteStringEv
__ZN7WebCore20CompositeEditCommand15splitTreeToNodeEPNS_4NodeES2_b
-__ZN7WebCore20CompositeEditCommand12splitElementEPNS_7ElementEPNS_4NodeE
-__ZN7WebCore19SplitElementCommandC2EPNS_7ElementEPNS_4NodeE
-__ZN7WebCore19SplitElementCommand7doApplyEv
-__ZN7WebCore17InsertListCommand20fixOrphanedListChildEPNS_4NodeE
-__ZN7WebCore22indentBlockquoteStringEv
+__ZN7WebCore20IndentOutdentCommand34prepareBlockquoteLevelForInsertionERNS_15VisiblePositionERN3WTF6RefPtrINS_7ElementEEE
+__ZN7WebCoreL18isIndentBlockquoteEPKNS_4NodeE
+__ZNK7WebCore20IndentOutdentCommand20preservesTypingStyleEv
+__ZNK7WebCore20IndentOutdentCommand13editingActionEv
+__ZN7WebCore20IndentOutdentCommandD0Ev
+__ZN7WebCoreL18executeFormatBlockEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore13validBlockTagERKNS_6StringE
+__ZN7WebCore18FormatBlockCommandC1EPNS_8DocumentERKNS_12AtomicStringE
+__ZN7WebCore18FormatBlockCommandC2EPNS_8DocumentERKNS_12AtomicStringE
+__ZN7WebCore18FormatBlockCommand7doApplyEv
+__ZN7WebCore18FormatBlockCommand11modifyRangeEv
__ZN7WebCore25enclosingBlockFlowElementERKNS_15VisiblePositionE
-__ZN7WebCore26enabledRangeInEditableTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
-__ZN7WebCore19executeRemoveFormatEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore17createHTMLElementEPNS_8DocumentERKNS_12AtomicStringE
+__ZN7WebCore20CompositeEditCommand10applyStyleEPNS_19CSSStyleDeclarationERKNS_8PositionES5_NS_10EditActionE
+__ZN7WebCore17ApplyStyleCommandC1EPNS_8DocumentEPNS_19CSSStyleDeclarationERKNS_8PositionES7_NS_10EditActionENS0_14EPropertyLeve
+__ZN7WebCore17ApplyStyleCommandC2EPNS_8DocumentEPNS_19CSSStyleDeclarationERKNS_8PositionES7_NS_10EditActionENS0_14EPropertyLeve
+__ZNK7WebCore18FormatBlockCommand13editingActionEv
+__ZN7WebCore18FormatBlockCommandD0Ev
+__ZN7WebCoreL26enabledRangeInEditableTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCoreL19executeRemoveFormatEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
__ZN7WebCore6Editor24removeFormattingAndStyleEv
__ZN7WebCore19RemoveFormatCommandC1EPNS_8DocumentE
+__ZN7WebCore19RemoveFormatCommandC2EPNS_8DocumentE
__ZN7WebCore19RemoveFormatCommand7doApplyEv
-__ZN7WebCore20CompositeEditCommand9inputTextERKNS_6StringEb
__ZNK7WebCore19RemoveFormatCommand13editingActionEv
-__ZN7WebCore39jsRangePrototypeFunctionExtractContentsEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore5Range15extractContentsERi
-__ZN7WebCore18executeFormatBlockEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore13validBlockTagERKNS_6StringE
-__ZN7WebCore18FormatBlockCommandC2EPNS_8DocumentERKNS_6StringE
-__ZN7WebCore18FormatBlockCommand7doApplyEv
-__ZN7WebCore13createElementEPNS_8DocumentERKNS_6StringE
-__ZNK7WebCore18FormatBlockCommand13editingActionEv
-__ZN7WebCore13executeIndentEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore20IndentOutdentCommand12indentRegionEv
-__ZN7WebCore23indexForVisiblePositionERNS_15VisiblePositionE
-__ZN7WebCore29createIndentBlockquoteElementEPNS_8DocumentE
-__ZN7WebCore20IndentOutdentCommand34prepareBlockquoteLevelForInsertionERNS_15VisiblePositionEPPNS_4NodeE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm16EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm16EE15reserveCapacityEm
-__ZN7WebCore17executeInsertHTMLEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore23ReplaceSelectionCommand37insertNodeAfterAndUpdateNodesInsertedEPNS_4NodeES2_
+__ZN7WebCore19RemoveFormatCommandD0Ev
+__ZN7WebCore20CompositeEditCommand39pushPartiallySelectedAnchorElementsDownEv
+__ZN7WebCore20CompositeEditCommand18applyStyledElementEN3WTF10PassRefPtrINS_7ElementEEE
+__ZN7WebCore17ApplyStyleCommandC1EN3WTF10PassRefPtrINS_7ElementEEEbNS_10EditActionE
+__ZN7WebCore17ApplyStyleCommandC2EN3WTF10PassRefPtrINS_7ElementEEEbNS_10EditActionE
+__ZN7WebCoreL26executeInsertUnorderedListEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore17InsertListCommandC1EPNS_8DocumentENS0_4TypeE
+__ZN7WebCore17InsertListCommandC2EPNS_8DocumentENS0_4TypeE
+__ZN7WebCore17InsertListCommand7doApplyEv
+__ZN7WebCore22outermostEnclosingListEPNS_4NodeE
+__ZN7WebCore18enclosingTableCellERKNS_8PositionE
+__ZN7WebCore26createUnorderedListElementEPNS_8DocumentE
+__ZNK7WebCore17InsertListCommand20preservesTypingStyleEv
+__ZNK7WebCore17InsertListCommand13editingActionEv
+__ZN7WebCoreL17executeToggleBoldEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL18executeToggleStyleEPNS_5FrameENS_19EditorCommandSourceENS_10EditActionEiPKcS5_
+__ZNK7WebCore6Editor22selectionStartHasStyleEPNS_19CSSStyleDeclarationE
+__ZN7WebCoreL14executeOutdentEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore20IndentOutdentCommand13outdentRegionEv
+__ZN7WebCore20IndentOutdentCommand16outdentParagraphEv
+__ZN7WebCoreL24isListOrIndentBlockquoteEPKNS_4NodeE
+__ZN7WebCore17InsertListCommandD0Ev
+__ZN7WebCore32jsDOMWindowPrototypeFunctionBlurEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow4blurEv
+__ZN7WebCore5Frame13unfocusWindowEv
+__ZNK7WebCore6Chrome7unfocusEv
+__ZN7WebCore11inSameBlockERKNS_15VisiblePositionES2_
+__ZN7WebCore8Position12moveToOffsetEi
+__ZN7WebCore20CompositeEditCommand30splitTextNodeContainingElementEN3WTF10PassRefPtrINS_4TextEEEj
+__ZN7WebCore37SplitTextNodeContainingElementCommandC1EN3WTF10PassRefPtrINS_4TextEEEi
+__ZN7WebCore37SplitTextNodeContainingElementCommandC2EN3WTF10PassRefPtrINS_4TextEEEi
+__ZN7WebCore37SplitTextNodeContainingElementCommand7doApplyEv
+__ZN7WebCore20CompositeEditCommand23wrapContentsInDummySpanEN3WTF10PassRefPtrINS_7ElementEEE
+__ZN7WebCore30WrapContentsInDummySpanCommandC1EN3WTF10PassRefPtrINS_7ElementEEE
+__ZN7WebCore30WrapContentsInDummySpanCommandC2EN3WTF10PassRefPtrINS_7ElementEEE
+__ZN7WebCore30WrapContentsInDummySpanCommand7doApplyEv
+__ZN7WebCore20CompositeEditCommand12splitElementEN3WTF10PassRefPtrINS_7ElementEEENS2_INS_4NodeEEE
+__ZN7WebCore19SplitElementCommandC1EN3WTF10PassRefPtrINS_7ElementEEENS2_INS_4NodeEEE
+__ZN7WebCore19SplitElementCommandC2EN3WTF10PassRefPtrINS_7ElementEEENS2_INS_4NodeEEE
+__ZN7WebCore19SplitElementCommand7doApplyEv
+__ZN7WebCoreL24dummySpanAncestorForNodeEPKNS_4NodeE
+__ZN7WebCore17ApplyStyleCommand27mergeEndWithNextIfIdenticalERKNS_8PositionES3_
+__ZN7WebCoreL20areIdenticalElementsEPNS_4NodeES1_
+__ZN7WebCore20CompositeEditCommand22mergeIdenticalElementsEN3WTF10PassRefPtrINS_7ElementEEES4_
+__ZN7WebCore29MergeIdenticalElementsCommandC1EN3WTF10PassRefPtrINS_7ElementEEES4_
+__ZN7WebCore29MergeIdenticalElementsCommandC2EN3WTF10PassRefPtrINS_7ElementEEES4_
+__ZN7WebCore29MergeIdenticalElementsCommand7doApplyEv
+__ZN7WebCoreL19isUnstyledStyleSpanEPKNS_4NodeE
+__ZN7WebCore37SplitTextNodeContainingElementCommandD0Ev
+__ZN7WebCore30WrapContentsInDummySpanCommandD0Ev
+__ZN7WebCore19SplitElementCommandD0Ev
+__ZN7WebCore29MergeIdenticalElementsCommandD0Ev
+__ZN7WebCoreL19executeJustifyRightEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL17executeInsertHTMLEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL21executeInsertFragmentEPNS_5FrameEN3WTF10PassRefPtrINS_16DocumentFragmentEEE
+__ZN7WebCore23ReplaceSelectionCommand37insertNodeAfterAndUpdateNodesInsertedEN3WTF10PassRefPtrINS_4NodeEEEPS3_
__ZN7WebCore23ReplaceSelectionCommand11shouldMergeERKNS_15VisiblePositionES3_
-__ZN7WebCore16executeUnderlineEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore17executeFindStringEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore20previousWordPositionERKNS_15VisiblePositionE
-__ZN7WebCore32enabledRangeInRichlyEditableTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
-__ZN7WebCore13executeUnlinkEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZNK7WebCore23ReplaceSelectionCommand13editingActionEv
+__ZN7WebCoreL11executeCopyEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore6Editor4copyEv
+__ZN7WebCore6Editor12tryDHTMLCopyEv
+__ZN7WebCore10Pasteboard17generalPasteboardEv
+__ZN7WebCore10PasteboardC1EP12NSPasteboard
+__ZN7WebCore10PasteboardC2EP12NSPasteboard
+__ZN7WebCore10Pasteboard5clearEv
+__ZN7WebCore6Editor13selectedRangeEv
+__ZN7WebCore10Pasteboard14writeSelectionEPNS_5RangeEbPNS_5FrameE
+__ZN7WebCore10Pasteboard14writeSelectionEP12NSPasteboardPNS_5RangeEbPNS_5FrameE
+-[DOMObject copyWithZone:]
+-[DOMCSSPrimitiveValue getStringValue]
+__ZNK7WebCore17CSSPrimitiveValue14getStringValueERi
+__ZN7WebCoreL14valueForShadowEPKNS_10ShadowDataE
+-[DOMElement(WebPrivate) _font]
+-[DOMRGBColor(WebPrivate) _color]
+-[DOMRGBColor color]
+__ZN7WebCore16LegacyWebArchive19createFromSelectionEPNS_5FrameE
+__ZNK7WebCore5Range4textEv
+__ZN7WebCore6Editor29didWriteSelectionToPasteboardEv
+__ZN7WebCoreL14supportedPasteEPNS_5FrameENS_19EditorCommandSourceE
+__ZN7WebCoreL12enabledPasteEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCoreL12executePasteEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore6Editor5pasteEv
+__ZN7WebCore6Editor13tryDHTMLPasteEv
+__ZN7WebCore14DocumentLoader22addAllArchiveResourcesEPNS_7ArchiveE
+__ZN7WebCore25ArchiveResourceCollectionC1Ev
+__ZN7WebCore25ArchiveResourceCollectionC2Ev
+__ZN7WebCore25ArchiveResourceCollection15addAllResourcesEPNS_7ArchiveE
+__Z4coreP19DOMDocumentFragment
+__ZN3WTF6VectorIPN7WebCore7ElementELm0EE14expandCapacityEmPKS3_
+__ZN7WebCore17InsertListCommand11modifyRangeEv
+__ZN7WebCore20CompositeEditCommand9inputTextERKNS_6StringEb
+__ZN7WebCore27jsHTMLOptionElementSelectedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsHTMLSelectElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17ApplyStyleCommand26extractTextDecorationStyleEPNS_4NodeE
+__ZN7WebCore20CompositeEditCommand17removeCSSPropertyEN3WTF10PassRefPtrINS_26CSSMutableStyleDeclarationEEE13CSSPropertyID
+__ZN7WebCore24RemoveCSSPropertyCommandC1EPNS_8DocumentEN3WTF10PassRefPtrINS_26CSSMutableStyleDeclarationEEE13CSSPropertyID
+__ZN7WebCore24RemoveCSSPropertyCommandC2EPNS_8DocumentEN3WTF10PassRefPtrINS_26CSSMutableStyleDeclarationEEE13CSSPropertyID
+__ZN7WebCore24RemoveCSSPropertyCommand7doApplyEv
+__ZN7WebCore20CompositeEditCommand19removeNodeAttributeEN3WTF10PassRefPtrINS_7ElementEEERKNS_13QualifiedNameE
+__ZN7WebCore24RemoveCSSPropertyCommandD0Ev
+__ZN7WebCoreL24executeInsertOrderedListEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore24createOrderedListElementEPNS_8DocumentE
+__ZN7WebCore20startOfNextParagraphERKNS_15VisiblePositionE
+__ZN7WebCore39jsRangePrototypeFunctionExtractContentsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore5Range15extractContentsERi
+__ZN7WebCore5Range18checkDeleteExtractERi
+__ZN7WebCore5Range15processContentsENS0_10ActionTypeERi
+__ZN7WebCore17ApplyStyleCommand19removeHTMLStyleNodeEPNS_11HTMLElementE
+__ZN7WebCore20CompositeEditCommand15insertLineBreakEv
+__ZN3WTF6VectorISt4pairIiiELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorISt4pairIiiELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorISt4pairIiiELm0EE14expandCapacityEm
+__ZN3WTF6VectorISt4pairIiiELm0EE15reserveCapacityEm
+__ZN3WTF6VectorISt4pairIiiELm0EE6shrinkEm
+__ZN7WebCore15isEndOfDocumentERKNS_15VisiblePositionE
+__ZN7WebCoreL32enabledRangeInRichlyEditableTextEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCoreL13executeUnlinkEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
__ZN7WebCore13UnlinkCommandC1EPNS_8DocumentE
+__ZN7WebCore13UnlinkCommandC2EPNS_8DocumentE
__ZN7WebCore13UnlinkCommand7doApplyEv
__ZN7WebCore20CompositeEditCommand21pushAnchorElementDownEPNS_4NodeE
-__ZN7WebCore20CompositeEditCommand19removeStyledElementEPNS_7ElementE
+__ZN7WebCore20CompositeEditCommand19removeStyledElementEN3WTF10PassRefPtrINS_7ElementEEE
__ZNK7WebCore13UnlinkCommand13editingActionEv
-__ZN7WebCore20CompositeEditCommand30splitTextNodeContainingElementEPNS_4TextEi
-__ZN7WebCore37SplitTextNodeContainingElementCommandC2EPNS_4TextEi
-__ZN7WebCore37SplitTextNodeContainingElementCommand7doApplyEv
-__ZN7WebCore24dummySpanAncestorForNodeEPKNS_4NodeE
+__ZN7WebCore13UnlinkCommandD0Ev
+__ZN7WebCoreL16executeUnderlineEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
__ZN7WebCore17ApplyStyleCommand33mergeStartWithPreviousIfIdenticalERKNS_8PositionES3_
-__ZN7WebCore17ApplyStyleCommand27mergeEndWithNextIfIdenticalERKNS_8PositionES3_
-__ZN7WebCore20areIdenticalElementsEPNS_4NodeES1_
-__ZN7WebCore20CompositeEditCommand22mergeIdenticalElementsEPNS_7ElementES2_
-__ZN7WebCore29MergeIdenticalElementsCommandC2EPNS_7ElementES2_
-__ZN7WebCore29MergeIdenticalElementsCommand7doApplyEv
-__ZN7WebCore20CompositeEditCommand15insertLineBreakEv
-__ZN7WebCore12executePrintEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore6Chrome5printEPNS_5FrameE
-__ZN7WebCore44jsDocumentPrototypeFunctionQueryCommandStateEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document17queryCommandStateERKNS_6StringE
-__ZN7WebCore18stateUnorderedListEPNS_5FrameEPNS_5EventE
-__ZNK7WebCore6Editor27selectionUnorderedListStateEv
-__ZN7WebCore16stateOrderedListEPNS_5FrameEPNS_5EventE
-__ZNK7WebCore6Editor25selectionOrderedListStateEv
-__ZN7WebCore20CompositeEditCommand27addBlockPlaceholderIfNeededEPNS_4NodeE
-__ZNK7WebCore14RenderListItem7isEmptyEv
-__ZN7WebCore28previousWordPositionBoundaryEPKtj
-__ZN7WebCore16executeBackColorEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore20CompositeEditCommand23wrapContentsInDummySpanEPNS_7ElementE
-__ZN7WebCore30WrapContentsInDummySpanCommandC2EPNS_7ElementE
-__ZN7WebCore30WrapContentsInDummySpanCommand7doApplyEv
-__ZN7WebCore11JSClipboardD0Ev
-__ZN7WebCore17ApplyStyleCommand26extractTextDecorationStyleEPNS_4NodeE
-__ZN7WebCore20CompositeEditCommand19removeNodeAttributeEPNS_7ElementERKNS_13QualifiedNameE
-__ZN7WebCore26RemoveNodeAttributeCommandC1EPNS_7ElementERKNS_13QualifiedNameE
-__ZN7WebCore26RemoveNodeAttributeCommand7doApplyEv
-__ZN7WebCore7Element15removeAttributeERKNS_13QualifiedNameERi
-__ZN7WebCore20executeStrikethroughEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore17ApplyStyleCommand24applyTextDecorationStyleEPNS_4NodeEPNS_26CSSMutableStyleDeclarationE
-__ZN7WebCore17ApplyStyleCommand19removeHTMLStyleNodeEPNS_11HTMLElementE
-__ZN7WebCore18FormatBlockCommand11modifyRangeEv
-__ZN7WebCore46jsDocumentPrototypeFunctionQueryCommandEnabledEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document19queryCommandEnabledERKNS_6StringE
-__ZN7WebCore18executeInsertImageEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
-__ZN7WebCore16HTMLImageElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore10executeCutEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore48jsDocumentPrototypeFunctionQueryCommandSupportedEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document21queryCommandSupportedERKNS_6StringE
+__ZN7WebCoreL19executeStyleWithCSSEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore46jsCanvasRenderingContext2DPrototypeFunctionArcEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D3arcEfffffbRi
+__ZN7WebCore4Path6addArcERKNS_10FloatPointEfffb
+__ZN7WebCore51jsCanvasRenderingContext2DPrototypeFunctionFillRectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D8fillRectEffff
+__ZN7WebCore15GraphicsContext8fillRectERKNS_9FloatRectE
+__ZN7WebCoreL10executeCutEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
__ZN7WebCore6Editor3cutEv
__ZN7WebCore6Editor11tryDHTMLCutEv
+__ZN7WebCoreL17executeFindStringEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL27executeInsertHorizontalRuleEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL17executeInsertNodeEPNS_5FrameEN3WTF10PassRefPtrINS_4NodeEEE
+__ZNK7WebCore14ClipboardEvent16isClipboardEventEv
+__ZNK7WebCore14ClipboardEvent9clipboardEv
+__ZN7WebCore11JSClipboard15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore11JSClipboardC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9ClipboardEEE
+__ZN7WebCore11JSClipboardC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9ClipboardEEE
+__ZN7WebCore11JSClipboard18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20JSClipboardPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore35jsClipboardPrototypeFunctionSetDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore11JSClipboard9classInfoEv
+__ZN7WebCore11JSClipboard7setDataEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore12ClipboardMac7setDataERKNS_6StringES3_
+__ZN7WebCoreL21cocoaTypeFromMIMETypeERKNS_6StringE
+__ZN7WebCore35jsClipboardPrototypeFunctionGetDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11JSClipboard7getDataEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore12ClipboardMac7getDataERKNS_6StringERb
+__ZN7WebCore11JSClipboardD1Ev
+__ZN7WebCore11JSClipboardD2Ev
+__ZN7WebCore20JSClipboardPrototypeD1Ev
+__ZN7WebCore31setJSHTMLElementContentEditableEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11HTMLElement18setContentEditableERKNS_6StringE
+__ZN7WebCore46jsDOMSelectionPrototypeFunctionRemoveAllRangesEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection15removeAllRangesEv
+__ZNK7WebCore6Editor9canDeleteEv
+__ZN7WebCoreL23enabledVisibleSelectionEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCore46jsDocumentPrototypeFunctionQueryCommandEnabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document19queryCommandEnabledERKNS_6StringE
+__ZN7WebCore17isStartOfDocumentERKNS_15VisiblePositionE
+__ZNK7WebCore16RenderPartObject10renderNameEv
+__ZN7WebCore24setJSHTMLAreaElementHrefEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLAreaElement7setHrefERKNS_12AtomicStringE
+__ZN7WebCore26setJSHTMLAreaElementCoordsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLAreaElement9setCoordsERKNS_12AtomicStringE
+__ZN7WebCore12EventHandler32handleMousePressEventDoubleClickERKNS_28MouseEventWithHitTestResultsE
+__ZN7WebCore12EventHandler31selectClosestWordFromMouseEventERKNS_28MouseEventWithHitTestResultsE
+__ZN7WebCore16VisibleSelection22expandUsingGranularityENS_15TextGranularityE
+__ZN7WebCore11isEndOfLineERKNS_15VisiblePositionE
+__ZN7WebCore9endOfLineERKNS_15VisiblePositionE
+__ZN7WebCoreL18endPositionForLineERKNS_15VisiblePositionE
+__ZN7WebCore6Editor33isSelectTrailingWhitespaceEnabledEv
+__ZN7WebCore12EventHandler27handleMouseDoubleClickEventERKNS_18PlatformMouseEventE
+__ZN7WebCore11RenderBlock26addContinuationWithOutlineEPNS_12RenderInlineE
+__ZNK3WTF7HashMapIPN7WebCore11RenderBlockEPNS_11ListHashSetIPNS1_12RenderInlineENS_7PtrHashIS6_EEEENS7_IS3_EENS_10HashTraitsIS3
+__ZN3WTF7HashMapIPN7WebCore11RenderBlockEPNS_11ListHashSetIPNS1_12RenderInlineENS_7PtrHashIS6_EEEENS7_IS3_EENS_10HashTraitsIS3_
+__ZN3WTF9HashTableIPN7WebCore11RenderBlockESt4pairIS3_PNS_11ListHashSetIPNS1_12RenderInlineENS_7PtrHashIS7_EEEEENS_18PairFirstE
+__ZN7WebCore19jsDOMWindowOnscrollEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow8onscrollEv
+__ZN7WebCore22setJSDOMWindowOnscrollEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow11setOnscrollEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore17jsNodeOnmousemoveEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node11onmousemoveEv
+__ZN7WebCoreL18executeInsertImageEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL19executeToggleItalicEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL16executeForeColorEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
__ZNK7WebCore6Editor17shouldDeleteRangeEPNS_5RangeE
__ZNK7WebCore6Editor14canDeleteRangeEPNS_5RangeE
__ZN7WebCore6Editor30deleteSelectionWithSmartDeleteEb
+__ZNK7WebCore22DeleteSelectionCommand20preservesTypingStyleEv
__ZNK7WebCore22DeleteSelectionCommand13editingActionEv
-__ZN7WebCore32jsDOMWindowPrototypeFunctionFindEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9DOMWindow4findERKNS_6StringEbbbbbb
-__ZN7WebCore19RemoveFormatCommandD1Ev
-__ZN7WebCore26RemoveNodeAttributeCommandD1Ev
-__ZN7WebCore13UnlinkCommandD1Ev
-__ZN7WebCore11inSameBlockERKNS_15VisiblePositionES2_
-__ZN7WebCore22caretMaxRenderedOffsetEPKNS_4NodeE
-__ZN7WebCore20CompositeEditCommand27insertNodeAtTabSpanPositionEPNS_4NodeERKNS_8PositionE
-__ZN7WebCore11HTMLElement18setContentEditableERKNS_6StringE
-__ZN7WebCore19SplitElementCommand9doUnapplyEv
-__ZN7WebCore11enabledRedoEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCore29isCharacterSmartReplaceExemptEib
+__ZN7WebCoreL11getSmartSetEb
+__ZN7WebCoreL12executePrintEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore6Chrome5printEPNS_5FrameE
+__ZN7WebCore44jsDocumentPrototypeFunctionQueryCommandStateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document17queryCommandStateERKNS_6StringE
+__ZN7WebCoreL18stateUnorderedListEPNS_5FrameEPNS_5EventE
+__ZNK7WebCore6Editor27selectionUnorderedListStateEv
+__ZN7WebCoreL16stateOrderedListEPNS_5FrameEPNS_5EventE
+__ZNK7WebCore6Editor25selectionOrderedListStateEv
+__ZN7WebCore17InsertListCommand20fixOrphanedListChildEPNS_4NodeE
+__ZN7WebCoreL20executeStrikethroughEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore17ApplyStyleCommand24applyTextDecorationStyleEPNS_4NodeEPNS_26CSSMutableStyleDeclarationE
+__ZN7WebCore49jsCSSStyleDeclarationPrototypeFunctionSetPropertyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCoreL16executeSubscriptEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL18executeSuperscriptEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore17ApplyStyleCommand35extractAndNegateTextDecorationStyleEPNS_4NodeE
+__ZN7WebCore6Editor24insertParagraphSeparatorEv
+__ZN7WebCoreL19executeMoveBackwardEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore55jsHTMLTextAreaElementPrototypeFunctionSetSelectionRangeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZN7WebCore17InsertTextCommand21performTrivialReplaceERKNS_6StringEb
+__ZN7WebCore25setJSHTMLAnchorElementRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement6setRelERKNS_12AtomicStringE
+__ZN7WebCore20CompositeEditCommand27insertNodeAtTabSpanPositionEN3WTF10PassRefPtrINS_4NodeEEERKNS_8PositionE
+__ZNK7WebCore11RenderTheme11systemColorEi
+__ZN7WebCore10JSNodeList10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore35jsDOMWindowXSLTProcessorConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow13xsltProcessorEPN3JSC9ExecStateE
+__ZN7WebCore26JSXSLTProcessorConstructorC1EPN3JSC9ExecStateE
+__ZN7WebCore26JSXSLTProcessorConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore24JSXSLTProcessorPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSXSLTProcessor15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSXSLTProcessorConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCoreL22constructXSLTProcessorEPN3JSC9ExecStateEPNS0_8JSObjectERKNS0_7ArgListE
+__ZN7WebCore15JSXSLTProcessorC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13XSLTProcessorEEE
+__ZN7WebCore15JSXSLTProcessorC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13XSLTProcessorEEE
+__ZN7WebCore22HTMLFormControlElement5resetEv
+__ZN7WebCore15JSXSLTProcessorD1Ev
+__ZN7WebCore15JSXSLTProcessorD2Ev
+__ZN7WebCore24JSXSLTProcessorPrototypeD1Ev
+__ZN7WebCore26JSXSLTProcessorConstructorD1Ev
+__ZN7WebCore17AppendNodeCommand9doUnapplyEv
+__ZN7WebCoreL11enabledRedoEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
__ZN7WebCore6Editor7canRedoEv
-__ZN7WebCore11executeRedoEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL11executeRedoEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
__ZN7WebCore6Editor4redoEv
__ZN7WebCore11EditCommand7reapplyEv
__ZN7WebCore20CompositeEditCommand9doReapplyEv
__ZN7WebCore11EditCommand9doReapplyEv
__ZN7WebCore6Editor16reappliedEditingEN3WTF10PassRefPtrINS_11EditCommandEEE
+__ZN7WebCore12EventHandler22defaultTabEventHandlerEPNS_13KeyboardEventE
+__ZN7WebCoreL16executeInsertTabEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore19ReplacementFragment30insertFragmentForTestRenderingEPNS_4NodeE
+__ZN7WebCore19ReplacementFragment35restoreTestRenderingNodesToFragmentEPNS_4NodeE
+__ZN7WebCore19ReplacementFragment21removeUnrenderedNodesEPNS_4NodeE
+__ZN7WebCore14isNodeRenderedEPKNS_4NodeE
__ZN7WebCore20CompositeEditCommand24insertParagraphSeparatorEb
-__ZN7WebCore105_GLOBAL__N__Volumes_QuickPerf_source_TOT_OpenSource_WebCore_editing_HTMLInterchange.cpp_00000000_A5DBA54420convertedSpaceStringEv
-__ZN7WebCore23fillContainerFromStringEPNS_13ContainerNodeERKNS_16DeprecatedStringE
-__ZN7WebCore20DeprecatedStringList5splitERKNS_14DeprecatedCharERKNS_16DeprecatedStringEb
-__ZN7WebCore20DeprecatedStringList5splitERKNS_16DeprecatedStringES3_b
-__ZN7WebCore20DeprecatedStringList9pop_frontEv
-__ZN7WebCore19DeprecatedValueListINS_16DeprecatedStringEE10deleteNodeEPNS_27DeprecatedValueListImplNodeE
-__ZN7WebCore25stripAttachmentCharactersEP18NSAttributedString
-__ZN7WebCore34jsRangePrototypeFunctionSelectNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore32jsRangePrototypeFunctionToStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore5Range8toStringERi
-__ZN7WebCore49jsDOMSelectionPrototypeFunctionDeleteFromDocumentEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12DOMSelection18deleteFromDocumentEv
+__ZN7WebCoreL25executePasteAndMatchStyleEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore6Editor16pasteAsPlainTextEv
+__ZN7WebCore6Editor30pasteAsPlainTextWithPasteboardEPNS_10PasteboardE
+__ZN7WebCore10Pasteboard9plainTextEPNS_5FrameE
+__ZN7WebCore6Editor29canSmartReplaceWithPasteboardEPNS_10PasteboardE
+__ZN7WebCore10Pasteboard15canSmartReplaceEv
+__ZN7WebCore6Editor24replaceSelectionWithTextERKNS_6StringEbb
+__ZN7WebCore6Editor28replaceSelectionWithFragmentEN3WTF10PassRefPtrINS_16DocumentFragmentEEEbbb
+__ZN7WebCoreL19stringValueForRangeEPKNS_4NodeEPKNS_5RangeE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore15ArchiveResourceEEELm0EE6shrinkEm
+__ZN7WebCoreL25stripAttachmentCharactersEP18NSAttributedString
+__ZN3WTF7HashMapIN7WebCore6StringENS_6RefPtrINS1_15ArchiveResourceEEENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3setERKS2
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS_6RefPtrINS1_15ArchiveResourceEEEENS_18PairFirstExtractorIS7_EENS1_10StringHas
+__ZNK7WebCore14RenderMenuList10renderNameEv
+__ZN7WebCore5Range11compareNodeEPNS_4NodeERi
+__ZN7WebCore12ClipboardMac10writeRangeEPNS_5RangeEPNS_5FrameE
+__ZN7WebCore6Editor24smartInsertDeleteEnabledEv
+__ZN7WebCore27createDragImageForSelectionEPNS_5FrameE
+__ZN7WebCore5Frame21dragImageForSelectionEv
+__ZNK7WebCore5Frame14selectionImageEb
+__ZN7WebCore9FrameView19setPaintRestrictionENS_16PaintRestrictionE
+__ZNK7WebCore5Frame13imageFromRectE6CGRect
+__ZN7WebCore14DragController10dragIsMoveEPNS_19SelectionControllerE
+__ZN7WebCore14DragController13isCopyKeyDownEv
+__ZNK7WebCore8DragData10asFragmentEPNS_8DocumentE
+__ZN7WebCore6Editor20shouldInsertFragmentEN3WTF10PassRefPtrINS_16DocumentFragmentEEENS2_INS_5RangeEEENS_18EditorInsertActionE
+__ZNK7WebCore4Node19isCharacterDataNodeEv
+__ZNK7WebCore8DragData15canSmartReplaceEv
+__ZN7WebCore20MoveSelectionCommandC1EN3WTF10PassRefPtrINS_16DocumentFragmentEEERKNS_8PositionEb
+__ZN7WebCore20MoveSelectionCommandC2EN3WTF10PassRefPtrINS_16DocumentFragmentEEERKNS_8PositionEb
+__ZN7WebCore20MoveSelectionCommand7doApplyEv
+__ZNK7WebCore20MoveSelectionCommand13editingActionEv
+__ZN7WebCore20MoveSelectionCommandD0Ev
+__ZN7WebCore42jsRangePrototypeFunctionSelectNodeContentsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore26setJSHTMLOListElementStartEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLOListElement8setStartEi
+__ZN7WebCore26CSSMutableStyleDeclaration17addParsedPropertyERKNS_11CSSPropertyE
+__ZN7WebCore10systemBeepEv
+__ZN7WebCore10Pasteboard10writeImageEPNS_4NodeERKNS_4KURLERKNS_6StringE
+__ZN7WebCoreL21writableTypesForImageEv
+__ZN7WebCoreL19writableTypesForURLEv
+__ZN7WebCore10Pasteboard8writeURLEP12NSPasteboardP7NSArrayRKNS_4KURLERKNS_6StringEPNS_5FrameE
+_suggestedFilenameWithMIMEType
+_filenameByFixingIllegalCharacters
+__ZN7WebCore16MIMETypeRegistry24getExtensionsForMIMETypeERKNS_6StringE
+__ZN7WebCore10Pasteboard32writeFileWrapperAsRTFDAttachmentEP13NSFileWrapper
+__ZN7WebCore14DocumentLoader18addArchiveResourceEN3WTF10PassRefPtrINS_15ArchiveResourceEEE
+__ZN7WebCore25ArchiveResourceCollection11addResourceEN3WTF10PassRefPtrINS_15ArchiveResourceEEE
+__ZN7WebCore25ArchiveResourceCollection21archiveResourceForURLERKNS_4KURLE
+__ZNK3WTF7HashMapIN7WebCore6StringENS_6RefPtrINS1_15ArchiveResourceEEENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3getERKS
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore14ResourceLoaderEEENS1_INS2_18SubstituteResourceEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEN
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14ResourceLoaderEEESt4pairIS4_NS1_INS2_18SubstituteResourceEEEENS_18PairFirstExtractorIS
+__ZN7WebCore5TimerINS_14DocumentLoaderEE5firedEv
+__ZN7WebCore14DocumentLoader36substituteResourceDeliveryTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore7Element5styleEv
+__ZNK7WebCore8Document10isFrameSetEv
+__ZN7WebCoreL23setSelectionToDragCaretEPNS_5FrameERNS_16VisibleSelectionERN3WTF6RefPtrINS_5RangeEEERKNS_8IntPointE
+__ZN7WebCoreL22caretMaxRenderedOffsetEPKNS_4NodeE
+__ZN7WebCore8Document23activeChainNodeDetachedEPNS_4NodeE
+__ZN7WebCore12EventHandler15hoverTimerFiredEPNS_5TimerIS0_EE
+__ZNK7WebCore11RenderTheme32inactiveSelectionBackgroundColorEv
+__ZN7WebCore14RenderReplaced16positionForPointERKNS_8IntPointE
+__ZN7WebCore12ClipboardMac8writeURLERKNS_4KURLERKNS_6StringEPNS_5FrameE
+__ZNK7WebCore12RenderButton10renderNameEv
+__ZNK7WebCore8DragData11asPlainTextEv
+__ZN7WebCoreL11executeYankEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore6Editor16yankFromKillRingEv
+__ZN7WebCore6Editor24setKillRingToYankedStateEv
+__ZN7WebCoreL33executeMoveToBeginningOfParagraphEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZNK7WebCore9Clipboard20destinationOperationERNS_13DragOperationE
+__ZN7WebCore12EventHandler18performDragAndDropERKNS_18PlatformMouseEventEPNS_9ClipboardE
+-[DOMHTMLInputElement type]
+__ZNK7WebCore16HTMLInputElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZNK3JSC8JSObject14isGlobalObjectEv
+__ZN3JSC16RuntimeObjectImp11getCallDataERNS_8CallDataE
+__ZNK3JSC8Bindings12ObjcInstance27supportsInvokeDefaultMethodEv
+__ZN3JSCL17callRuntimeObjectEPNS_9ExecStateEPNS_8JSObjectENS_7JSValueERKNS_7ArgListE
+__ZN3JSC8Bindings12ObjcInstance19invokeDefaultMethodEPNS_9ExecStateERKNS_7ArgListE
+__ZN7WebCore27jsHTMLAnchorElementHostnameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement8hostnameEv
+-[DOMHTMLOListElement start]
+-[DOMHTMLTableElement cellSpacing]
+-[DOMHTMLTableElement cellPadding]
+-[DOMHTMLTableCellElement rowSpan]
+-[DOMHTMLTableCellElement colSpan]
+-[DOMHTMLTableCellElement width]
+-[DOMHTMLTableCellElement height]
+__ZNK7WebCore14CSSCharsetRule4typeEv
+__ZN7WebCore16JSCSSCharsetRule15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSCSSCharsetRuleC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14CSSCharsetRuleEEE
+__ZN7WebCore16JSCSSCharsetRuleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14CSSCharsetRuleEEE
+__ZN7WebCore16JSCSSCharsetRule18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18JSCSSRulePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16JSCSSCharsetRuleD1Ev
+__ZN7WebCore25JSCSSCharsetRulePrototypeD1Ev
+__ZN7WebCore30jsHTMLButtonElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLButtonElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSHTMLButtonElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore30JSHTMLButtonElementConstructorD1Ev
+__ZN7WebCore24parseXMLDocumentFragmentERKNS_6StringEPNS_16DocumentFragmentEPNS_7ElementE
+__ZN7WebCore12XMLTokenizerC1EPNS_16DocumentFragmentEPNS_7ElementE
+__ZN7WebCore12XMLTokenizerC2EPNS_16DocumentFragmentEPNS_7ElementE
+__ZN7WebCore12XMLTokenizerD1Ev
+__ZN7WebCore12XMLTokenizerD2Ev
+__ZN7WebCore20createTabSpanElementEPNS_8DocumentERKNS_6StringE
+__ZN7WebCore17RemoveNodeCommand9doUnapplyEv
+__ZN7WebCore23InsertNodeBeforeCommand9doUnapplyEv
+__ZN7WebCore8RenderBR16positionForPointERKNS_8IntPointE
+__ZN7WebCore20nextSentencePositionERKNS_15VisiblePositionE
+__ZN7WebCoreL28nextSentencePositionBoundaryEPKtjjNS_33BoundarySearchContextAvailabilityERb
+__ZN7WebCore21sentenceBreakIteratorEPKti
__ZN7WebCore24previousSentencePositionERKNS_15VisiblePositionE
-__ZN7WebCore32previousSentencePositionBoundaryEPKtj
+__ZN7WebCoreL32previousSentencePositionBoundaryEPKtjjNS_33BoundarySearchContextAvailabilityERb
+__ZN7WebCoreL46executeMoveToBeginningOfLineAndModifySelectionEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL40executeMoveToEndOfLineAndModifySelectionEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL51executeMoveToBeginningOfParagraphAndModifySelectionEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL45executeMoveToEndOfParagraphAndModifySelectionEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZNK7WebCore11ShadowValue7cssTextEv
+__ZN3WTF7HashMapIPKN7WebCore14RenderReplacedENS1_7IntRectENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS8_IS5_EEE3setERKS4_RKS5_
+__ZN3WTF9HashTableIPKN7WebCore14RenderReplacedESt4pairIS4_NS1_7IntRectEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS4_EENS_14Pair
+__ZNK3WTF7HashMapIPKN7WebCore14RenderReplacedENS1_7IntRectENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS8_IS5_EEE3getERKS4_
+__ZN7WebCore12EventHandler32handleMousePressEventTripleClickERKNS_28MouseEventWithHitTestResultsE
__ZN7WebCore20endOfEditableContentERKNS_15VisiblePositionE
-__ZN7WebCore39jsDOMSelectionPrototypeFunctionCollapseEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12DOMSelection8collapseEPNS_4NodeEiRi
-__ZN7WebCore29JSDOMCoreExceptionConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore29JSDOMCoreExceptionConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore29JSDOMCoreExceptionConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore43jsDOMSelectionPrototypeFunctionContainsNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore12DOMSelection12containsNodeEPKNS_4NodeEb
-__ZN7WebCore54jsDOMImplementationPrototypeFunctionCreateDocumentTypeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore17DOMImplementation18createDocumentTypeERKNS_6StringES3_S3_Ri
-__ZN7WebCore24qualifiedNameIsMalformedERKNS_6StringE
-__ZN7WebCore12DocumentTypeC1EPNS_17DOMImplementationEPNS_8DocumentERKNS_6StringES7_S7_
-__ZNK7WebCore14JSDocumentType9classInfoEv
+__ZN7WebCore21ContextMenuController16clearContextMenuEv
+__ZN7WebCore12EventHandler20sendContextMenuEventERKNS_18PlatformMouseEventE
+__ZN7WebCore12EventHandler37selectClosestWordOrLinkFromMouseEventERKNS_28MouseEventWithHitTestResultsE
+__ZN7WebCore21ContextMenuController22handleContextMenuEventEPNS_5EventE
+__ZN7WebCore11ContextMenuC1ERKNS_13HitTestResultE
+__ZN7WebCore11ContextMenuC2ERKNS_13HitTestResultE
++[WebCoreMenuTarget sharedMenuTarget]
+__ZNK7WebCore11ContextMenu10controllerEv
+-[WebCoreMenuTarget setMenuController:]
+__ZN7WebCore11ContextMenu8populateEv
+__ZN7WebCore26contextMenuItemTagOpenLinkEv
+__ZN7WebCore15ContextMenuItemC1ENS_19ContextMenuItemTypeENS_17ContextMenuActionERKNS_6StringEPNS_11ContextMenuE
+__ZN7WebCore15ContextMenuItemC2ENS_19ContextMenuItemTypeENS_17ContextMenuActionERKNS_6StringEPNS_11ContextMenuE
+__ZN7WebCore37contextMenuItemTagOpenLinkInNewWindowEv
+__ZN7WebCore36contextMenuItemTagDownloadLinkToDiskEv
+__ZN7WebCore37contextMenuItemTagCopyLinkToClipboardEv
+__ZN7WebCore38contextMenuItemTagOpenImageInNewWindowEv
+__ZN7WebCore37contextMenuItemTagDownloadImageToDiskEv
+__ZN7WebCore38contextMenuItemTagCopyImageToClipboardEv
+__ZN7WebCore35contextMenuItemTagSearchInSpotlightEv
+__ZN7WebCore36contextMenuItemTagLookUpInDictionaryEv
+__ZN7WebCore27contextMenuItemTagSearchWebEv
+__ZN7WebCore22contextMenuItemTagCopyEv
+__ZN7WebCore24contextMenuItemTagGoBackEv
+__ZN7WebCore27contextMenuItemTagGoForwardEv
+__ZN7WebCore22contextMenuItemTagStopEv
+__ZN7WebCore24contextMenuItemTagReloadEv
+__ZN7WebCore38contextMenuItemTagOpenFrameInNewWindowEv
+__ZN7WebCore32contextMenuItemTagNoGuessesFoundEv
+__ZN7WebCore32contextMenuItemTagIgnoreSpellingEv
+__ZN7WebCore31contextMenuItemTagLearnSpellingEv
+__ZN7WebCore31contextMenuItemTagIgnoreGrammarEv
+__ZN7WebCore21contextMenuItemTagCutEv
+__ZN7WebCore23contextMenuItemTagPasteEv
+__ZN7WebCoreL29selectionContainsPossibleWordEPNS_5FrameE
+__ZN7WebCore11ContextMenu10appendItemERNS_15ContextMenuItemE
+__ZNK7WebCore11ContextMenu21checkOrEnableIfNeededERNS_15ContextMenuItemE
+__ZNK7WebCore15ContextMenuItem4typeEv
+__ZNK7WebCore15ContextMenuItem6actionEv
+__ZN7WebCore15ContextMenuItem10setCheckedEb
+__ZN7WebCore15ContextMenuItem10setEnabledEb
+__ZN7WebCore15ContextMenuItem26releasePlatformDescriptionEv
+__ZN7WebCoreL17setMenuItemTargetEP10NSMenuItem
+__ZN7WebCoreL13separatorItemEv
+__ZN7WebCore15ContextMenuItemD1Ev
+__ZN7WebCore15ContextMenuItemD2Ev
+__ZNK7WebCore11ContextMenu19platformDescriptionEv
+__ZN7WebCore11ContextMenu22setPlatformDescriptionEP14NSMutableArray
+__ZSt5mergeIPN7WebCore20CSSGradientColorStopES2_S2_PFbRKS1_S4_EET1_T_S8_T0_S9_S7_T2_
+__ZN7WebCore5Image21mayFillWithSolidColorEv
+__ZNK7WebCore14GeneratedImage4sizeEv
+__ZNK7WebCore14GeneratedImage16hasRelativeWidthEv
+__ZNK7WebCore14GeneratedImage17hasRelativeHeightEv
+__ZN7WebCoreL36executeMoveForwardAndModifySelectionEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore26jsDOMSelectionExtentOffsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12DOMSelection12extentOffsetEv
+__ZNK7WebCore12DOMSelection16visibleSelectionEv
+__ZN7WebCoreL14extentPositionERKNS_16VisibleSelectionE
+__ZN7WebCore24jsDOMSelectionBaseOffsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore12DOMSelection10baseOffsetEv
-__ZN7WebCore36jsDOMSelectionPrototypeFunctionEmptyEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12DOMSelection5emptyEv
-__ZN7WebCore37jsDOMSelectionPrototypeFunctionExtendEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12DOMSelection6extendEPNS_4NodeEiRi
-__ZN7WebCore19SelectionController22expandUsingGranularityENS_15TextGranularityE
-__ZN7WebCore48jsDOMSelectionPrototypeFunctionSelectAllChildrenEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12DOMSelection17selectAllChildrenEPNS_4NodeERi
+__ZN7WebCoreL12basePositionERKNS_16VisibleSelectionE
+__ZN7WebCoreL37executeMoveBackwardAndModifySelectionEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore18jsDOMSelectionTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12DOMSelection4typeEv
+__ZN3JSC16RuntimeObjectImp3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
+__ZN3JSC8Bindings9ObjcFieldC1EP9objc_ivar
+__ZN3JSC8Bindings9ObjcFieldC2EP9objc_ivar
+__ZNK3JSC8Bindings9ObjcField18setValueToInstanceEPNS_9ExecStateEPKNS0_8InstanceENS_7JSValueE
+__ZN7WebCore13endOfSentenceERKNS_15VisiblePositionE
+__ZN7WebCoreL19endSentenceBoundaryEPKtjjNS_33BoundarySearchContextAvailabilityERb
+__ZN7WebCore15startOfSentenceERKNS_15VisiblePositionE
+__ZN7WebCoreL21startSentenceBoundaryEPKtjjNS_33BoundarySearchContextAvailabilityERb
+__ZN7WebCore24jsDOMSelectionExtentNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12DOMSelection10extentNodeEv
+__ZN7WebCore11ContextMenuD1Ev
+__ZN7WebCore11ContextMenuD2Ev
+__ZN7WebCore6Editor44guessesForMisspelledOrUngrammaticalSelectionERbS1_
+__ZNK7WebCore13HitTestResult14replacedStringEv
+__ZN7WebCore30contextMenuItemTagSpellingMenuEv
+__ZN7WebCore35contextMenuItemTagShowSpellingPanelEb
+__ZN7WebCore31contextMenuItemTagCheckSpellingEv
+__ZN7WebCore42contextMenuItemTagCheckSpellingWhileTypingEv
+__ZN7WebCore42contextMenuItemTagCheckGrammarWithSpellingEv
+__ZN7WebCore46contextMenuItemTagCorrectSpellingAutomaticallyEv
+__ZN7WebCore6Editor22spellingPanelIsShowingEv
+__ZN7WebCore15ContextMenuItem8setTitleERKNS_6StringE
+__ZN7WebCore15ContextMenuItem10setSubMenuEPNS_11ContextMenuE
+__ZN7WebCore35contextMenuItemTagSubstitutionsMenuEv
+__ZN7WebCore35contextMenuItemTagShowSubstitutionsEb
+__ZN7WebCore32contextMenuItemTagSmartCopyPasteEv
+__ZN7WebCore29contextMenuItemTagSmartQuotesEv
+__ZN7WebCore29contextMenuItemTagSmartDashesEv
+__ZN7WebCore28contextMenuItemTagSmartLinksEv
+__ZN7WebCore33contextMenuItemTagTextReplacementEv
+__ZN7WebCore6Editor27substitutionsPanelIsShowingEv
+__ZN7WebCore37contextMenuItemTagTransformationsMenuEv
+__ZN7WebCore31contextMenuItemTagMakeUpperCaseEv
+__ZN7WebCore31contextMenuItemTagMakeLowerCaseEv
+__ZN7WebCore28contextMenuItemTagCapitalizeEv
+__ZN7WebCore26contextMenuItemTagFontMenuEv
+__ZN7WebCore27contextMenuItemTagShowFontsEv
+__ZN7WebCore22contextMenuItemTagBoldEv
+__ZN7WebCore24contextMenuItemTagItalicEv
+__ZN7WebCore27contextMenuItemTagUnderlineEv
+__ZN7WebCore25contextMenuItemTagOutlineEv
+__ZN7WebCore24contextMenuItemTagStylesEv
+__ZN7WebCore28contextMenuItemTagShowColorsEv
+__ZN7WebCore8Document25createCSSStyleDeclarationEv
+__ZN7WebCore28contextMenuItemTagSpeechMenuEv
+__ZN7WebCore31contextMenuItemTagStartSpeakingEv
+__ZN7WebCore30contextMenuItemTagStopSpeakingEv
+__ZN7WebCore38contextMenuItemTagWritingDirectionMenuEv
+__ZN7WebCore34contextMenuItemTagDefaultDirectionEv
+__ZN7WebCore29contextMenuItemTagLeftToRightEv
+__ZN7WebCore29contextMenuItemTagRightToLeftEv
+__ZNK7WebCore6Editor16hasBidiSelectionEv
+__ZNK7WebCore11FrameLoader18canGoBackOrForwardEi
+__ZN7WebCore22jsDOMSelectionBaseNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12DOMSelection8baseNodeEv
+__ZN7WebCore19SelectionController16modifyMovingLeftENS_15TextGranularityE
+__ZNK7WebCore15VisiblePosition4leftEb
+__ZNK7WebCore15VisiblePosition29leftVisuallyDistinctCandidateEv
+__ZN7WebCore24jsDOMSelectionAnchorNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12DOMSelection10anchorNodeEv
+__ZN7WebCoreL14anchorPositionERKNS_16VisibleSelectionE
+__ZN7WebCore26jsDOMSelectionAnchorOffsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore12DOMSelection12anchorOffsetEv
+__ZN7WebCore19SelectionController17modifyMovingRightENS_15TextGranularityE
+__ZNK7WebCore15VisiblePosition5rightEb
+__ZNK7WebCore15VisiblePosition30rightVisuallyDistinctCandidateEv
+__ZNK7WebCore5Range21compareBoundaryPointsENS0_10CompareHowEPKS0_Ri
+__ZN7WebCore23jsDOMSelectionFocusNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore12DOMSelection9focusNodeEv
+__ZN7WebCoreL13focusPositionERKNS_16VisibleSelectionE
+__ZN7WebCore25jsDOMSelectionFocusOffsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore12DOMSelection11focusOffsetEv
-__ZNK7WebCore12DOMSelection10extentNodeEv
-__ZNK7WebCore12DOMSelection12extentOffsetEv
-__ZNK7WebCore5Range21compareBoundaryPointsENS0_10CompareHowEPKS0_Ri
-__ZNK7WebCore12DOMSelection4typeEv
-__ZN7WebCore20nextSentencePositionERKNS_15VisiblePositionE
-__ZN7WebCore28nextSentencePositionBoundaryEPKtj
+__ZN7WebCore36jsDOMSelectionPrototypeFunctionEmptyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection5emptyEv
__ZNK7WebCore20HTMLFrameElementBase11isFocusableEv
__ZN7WebCore20HTMLFrameElementBase8setFocusEb
-__ZN7WebCore17ApplyStyleCommand35extractAndNegateTextDecorationStyleEPNS_4NodeE
-__ZN7WebCore20executeFontSizeDeltaEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore24jsDOMSelectionRangeCountEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12DOMSelection10rangeCountEv
+__ZN7WebCore41jsDOMSelectionPrototypeFunctionGetRangeAtEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection10getRangeAtEiRi
+__ZNK7WebCore16VisibleSelection10firstRangeEv
+__ZN7WebCore21jsRangeStartContainerEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsRangeEndContainerEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsRangeStartOffsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16jsRangeEndOffsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17setJSDOMWindowTopEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore12RenderObject22positionForCoordinatesEii
+__ZN7WebCore25jsDOMSelectionIsCollapsedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12DOMSelection11isCollapsedEv
+__ZN7WebCore43jsDOMSelectionPrototypeFunctionContainsNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore12DOMSelection12containsNodeEPKNS_4NodeEb
+__ZN7WebCore49jsDOMSelectionPrototypeFunctionDeleteFromDocumentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection18deleteFromDocumentEv
+__ZN7WebCore5Range14deleteContentsERi
+__ZN7WebCore33setJSHTMLFormElementAcceptCharsetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLFormElement16setAcceptCharsetERKNS_6StringE
+__ZN7WebCore25setJSHTMLInputElementSizeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLInputElement7setSizeEj
+__ZN7WebCore16VisibleSelection24appendTrailingWhitespaceEv
+__ZN7WebCore32jsRangePrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore5Range8toStringERi
+__ZN7WebCore19SelectionController20modifyExtendingRightENS_15TextGranularityE
+__ZN7WebCore19SelectionController25directionOfEnclosingBlockEv
+__ZN7WebCore26jsDOMWindowTextConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSTextConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19SelectionController19modifyExtendingLeftENS_15TextGranularityE
+__ZSt9__reverseIPPN7WebCore9InlineBoxEEvT_S4_St26random_access_iterator_tag
+__ZN7WebCore37jsDOMSelectionPrototypeFunctionExtendEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection6extendEPNS_4NodeEiRi
+__ZN7WebCore19SelectionController22expandUsingGranularityENS_15TextGranularityE
+__ZN7WebCore39jsDOMSelectionPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection8toStringEv
+__ZN7WebCore5Range13setStartAfterEPNS_4NodeERi
+__ZNK7WebCore11RenderTheme32inactiveSelectionForegroundColorEv
+__ZN7WebCore12RenderWidget17setSelectionStateENS_12RenderObject14SelectionStateE
+__ZN3WTF6VectorItLm32EE14expandCapacityEmPKt
+__ZN3WTF6VectorItLm32EE14expandCapacityEm
+__ZN3WTF6VectorItLm32EE15reserveCapacityEm
+__ZN7WebCoreL15executeMoveLeftEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL27executeMoveToRightEndOfLineEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL26executeMoveToLeftEndOfLineEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL45executeMoveToRightEndOfLineAndModifySelectionEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL16executeMoveRightEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL44executeMoveToLeftEndOfLineAndModifySelectionEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN3JSC8Bindings9ObjcArrayC1EP11objc_objectN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZN3JSC8Bindings9ObjcArrayC2EP11objc_objectN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZN3JSC8Bindings5ArrayC2EN3WTF10PassRefPtrINS0_10RootObjectEEE
+__ZN3JSC12RuntimeArrayC1EPNS_9ExecStateEPNS_8Bindings5ArrayE
+__ZN3JSC12RuntimeArrayC2EPNS_9ExecStateEPNS_8Bindings5ArrayE
+__ZN3JSC12RuntimeArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
+__ZNK3JSC8Bindings9ObjcArray9getLengthEv
+__ZN3JSC12RuntimeArray11indexGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZNK3JSC8Bindings9ObjcArray7valueAtEPNS_9ExecStateEj
+__ZNK7WebCore5Frame17firstRectForRangeEPNS_5RangeE
+__ZN3JSC12RuntimeArrayD1Ev
+__ZN3JSC8Bindings9ObjcArrayD0Ev
+__ZN3JSC8Bindings5ArrayD2Ev
+__ZN7WebCore29setJSHTMLInputElementReadOnlyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore22HTMLFormControlElement11setReadOnlyEb
+__ZN7WebCoreL17executeSelectLineEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL28expandSelectionToGranularityEPNS_5FrameENS_15TextGranularityE
+__ZN7WebCore34jsRangePrototypeFunctionSelectNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore39jsDOMSelectionPrototypeFunctionCollapseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12DOMSelection8collapseEPNS_4NodeEiRi
+__ZN7WebCore34jsDOMWindowDOMExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSDOMCoreException14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore29JSDOMCoreExceptionConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore27JSDOMCoreExceptionPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSDOMCoreExceptionConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore32jsDOMCoreExceptionINDEX_SIZE_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29JSDOMCoreExceptionConstructorD1Ev
+__ZN7WebCore26setJSHTMLButtonElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore31setJSHTMLTableCellElementNoWrapEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLTableCellElement9setNoWrapEb
+__ZN7WebCore17HTMLSelectElement5resetEv
+__ZN7WebCoreL30newStreamingTextDecoderUTF16LEERKNS_12TextEncodingEPKv
+__ZN7WebCore13RootInlineBox15clearTruncationEv
+__ZN7WebCore13InlineFlowBox15clearTruncationEv
+__ZN7WebCore13InlineTextBox15clearTruncationEv
+__ZNK3WTF7HashMapIPKN7WebCore13RootInlineBoxEPNS1_11EllipsisBoxENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3getERKS4_
+__ZN7WebCore11EllipsisBox5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCoreL18executeJustifyLeftEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCoreL15executeFontSizeEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore13RootInlineBox20addHighlightOverflowEv
+__ZN7WebCore13InlineTextBox20paintCustomHighlightEiiRKNS_12AtomicStringE
+__ZN7WebCore13RootInlineBox20paintCustomHighlightERNS_12RenderObject9PaintInfoEiiRKNS_12AtomicStringE
+__ZNK7WebCore9FloatRect10intersectsERKS0_
+__ZN7WebCore42jsCSSStyleSheetPrototypeFunctionDeleteRuleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13CSSStyleSheet10deleteRuleEjRi
+__ZN7WebCore9StyleList6removeEj
+__ZN7WebCoreL20executeFontSizeDeltaEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
__ZN7WebCore17ApplyStyleCommand18joinChildTextNodesEPNS_4NodeERKNS_8PositionES5_
__ZN7WebCore17ApplyStyleCommand24splitTextAtStartIfNeededERKNS_8PositionES3_
__ZN7WebCore17ApplyStyleCommand22splitTextAtEndIfNeededERKNS_8PositionES3_
__ZN7WebCore17ApplyStyleCommand16computedFontSizeEPKNS_4NodeE
__ZN3WTF7HashMapIPN7WebCore4NodeEfNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IfEEE3setERKS3_RKf
-__ZN3WTF9HashTableIiSt4pairIifENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENS8_IfEEEES9_E3addIPN7WebCore4NodeEfNS_17HashMapTranslatorILb1ES1_ISG_fENS_18PairBaseHashTraitsINS8_ISG_EESA_EESB_NS_7PtrHashISG_EEEEEES1_INS_17HashTableIteratorIiS2_S4_S6_SB_S9_EEbERKT_RKT0_
-__ZN3WTF9HashTableIiSt4pairIifENS_18PairFirstExtractorIS2_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENS8_IfEEEES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore4NodeESt4pairIS3_fENS_18PairFirstExtractorIS5_EENS_7PtrHashIS3_EENS_14PairHashTraitsINS_10HashTrai
__ZNK3WTF7HashMapIPN7WebCore4NodeEfNS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS6_IfEEE3getERKS3_
-__ZN7WebCore42jsCSSStyleSheetPrototypeFunctionDeleteRuleEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore13CSSStyleSheet10deleteRuleEjRi
-__ZN7WebCore9StyleList6removeEj
-__ZN7WebCore13RootInlineBox20addHighlightOverflowEv
-__ZN7WebCore5Frame23customHighlightLineRectERKNS_12AtomicStringERKNS_9FloatRectEPNS_4NodeE
-__ZN7WebCore13InlineTextBox20paintCustomHighlightEiiRKNS_12AtomicStringE
-__ZN7WebCore5Frame20paintCustomHighlightERKNS_12AtomicStringERKNS_9FloatRectES6_bbPNS_4NodeE
-__ZN7WebCore13RootInlineBox20paintCustomHighlightERNS_12RenderObject9PaintInfoEiiRKNS_12AtomicStringE
-__ZNK7WebCore9FloatRect10intersectsERKS0_
-__ZN7WebCore42jsHTMLTextAreaElementPrototypeFunctionBlurEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4Node16shadowParentNodeEv
-__ZNK7WebCore5XPath5Union8evaluateEv
-__ZN7WebCore5XPath5Value17modifiableNodeSetEv
-__ZN7WebCore5XPath5UnionD1Ev
-__ZN7WebCore5XPath13isRootDomNodeEPNS_4NodeE
-__ZN3WTF15deleteAllValuesIPN7WebCore5XPath9ParseNodeEKNS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEESB_EEEEvRT0_
-__ZN3WTF15deleteAllValuesIPN7WebCore6StringEKNS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEESA_EEEEvRT0_
-__ZN3WTF15deleteAllValuesIPN7WebCore5XPath4Step8NodeTestEKNS_9HashTableIiiNS_17IdentityExtractorIiEENS_7IntHashIiEENS_10HashTraitsIiEESC_EEEEvRT0_
-__ZN7WebCore5XPath6Parser16registerNodeTestEPNS0_4Step8NodeTestE
-__ZN3WTF7HashSetIPN7WebCore5XPath4Step8NodeTestENS_7PtrHashIS5_EENS_10HashTraitsIS5_EEE3addERKS5_
-__ZN7WebCore5XPath6Parser14deleteNodeTestEPNS0_4Step8NodeTestE
-__ZN7WebCore11SVGGElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore11SVGGElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore10SVGElement21finishParsingChildrenEv
-__ZN7WebCore10SVGElement26sendSVGLoadEventIfPossibleEb
-__ZN7WebCore10SVGElement27haveLoadedRequiredResourcesEv
-__ZN7WebCore21SVGDocumentExtensions15startAnimationsEv
-__ZN7WebCore43jsDocumentPrototypeFunctionCreateExpressionEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document16createExpressionERKNS_6StringEPNS_15XPathNSResolverERi
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_15XPathExpressionE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_14XPathExceptionE
-__ZN7WebCore16JSXPathExceptionC1EPN3KJS8JSObjectEPNS_14XPathExceptionE
-__ZN7WebCore16JSXPathException18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25JSXPathExceptionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore41jsXPathExceptionPrototypeFunctionToStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore16JSXPathException9classInfoEv
-__ZN7WebCore5XPath11createFunIdEv
-__ZNK7WebCore5XPath5FunId8evaluateEv
-__ZN7WebCore5XPath5FunIdD1Ev
-__ZN7WebCore5XPath4PathC1EPNS0_6FilterEPNS0_12LocationPathE
-__ZNK7WebCore5XPath4Path8evaluateEv
-__ZN7WebCore5XPath6FilterC1EPNS0_10ExpressionERKN3WTF6VectorIPNS0_9PredicateELm0EEE
-__ZNK7WebCore5XPath6Filter8evaluateEv
-__ZN7WebCore5XPath6FilterD1Ev
-__ZN7WebCore5XPath23createFunSubstringAfterEv
-__ZNK7WebCore5XPath17FunSubstringAfter8evaluateEv
-__ZN7WebCore5XPath17FunSubstringAfterD1Ev
-__ZNK7WebCore11XPathResult11stringValueERi
-__ZN7WebCore5XPath6Parser19makeTokenAndAdvanceEiNS0_9NumericOp6OpcodeEi
-__ZN7WebCore5XPath13createFunLastEv
-__ZNK7WebCore5XPath7FunLast8evaluateEv
-__ZN7WebCore5XPath7FunLastD1Ev
-__ZN7WebCore5XPath13createFunNameEv
-__ZNK7WebCore5XPath7FunName8evaluateEv
-__ZN7WebCore5XPath7FunNameD1Ev
-__ZN7WebCore5XPath15createFunStringEv
-__ZNK7WebCore5XPath9FunString8evaluateEv
-__ZN7WebCore5XPath9FunStringD1Ev
-__ZN7WebCore5XPath24createFunSubstringBeforeEv
-__ZNK7WebCore5XPath18FunSubstringBefore8evaluateEv
-__ZN7WebCore5XPath18FunSubstringBeforeD1Ev
-__ZN7WebCore5XPath23createFunNormalizeSpaceEv
-__ZN7WebCore5XPath18createFunTranslateEv
-__ZNK7WebCore5XPath12FunTranslate8evaluateEv
-__ZNK7WebCore5XPath17FunNormalizeSpace8evaluateEv
-__ZN7WebCore5XPath12FunTranslateD1Ev
-__ZN7WebCore5XPath17FunNormalizeSpaceD1Ev
-__ZN7WebCore5XPath16createFunBooleanEv
-__ZN7WebCore5XPath14createFunFalseEv
-__ZNK7WebCore5XPath10FunBoolean8evaluateEv
-__ZNK7WebCore5XPath8FunFalse8evaluateEv
-__ZN7WebCore5XPath10FunBooleanD1Ev
-__ZN7WebCore5XPath8FunFalseD1Ev
-__ZN7WebCore5XPath13createFunTrueEv
-__ZNK7WebCore5XPath7FunTrue8evaluateEv
-__ZN7WebCore5XPath7FunTrueD1Ev
-__ZN7WebCore5XPath13createFunLangEv
-__ZNK7WebCore5XPath7FunLang8evaluateEv
-__ZNK7WebCore12NamedAttrMap14getNamedItemNSERKNS_6StringES3_
-__ZN7WebCore5XPath7FunLangD1Ev
-__ZN7WebCore5XPath15createFunNumberEv
-__ZNK7WebCore5XPath9FunNumber8evaluateEv
-__ZN7WebCore5XPath9FunNumberD1Ev
-__ZN7WebCore5XPath12createFunSumEv
-__ZNK7WebCore5XPath6FunSum8evaluateEv
-__ZN7WebCore5XPath6FunSumD1Ev
-__ZN7WebCore5XPath14createFunFloorEv
-__ZNK7WebCore5XPath8FunFloor8evaluateEv
-__ZN7WebCore5XPath8FunFloorD1Ev
-__ZN7WebCore5XPath16createFunCeilingEv
-__ZNK7WebCore5XPath10FunCeiling8evaluateEv
-__ZN7WebCore5XPath10FunCeilingD1Ev
-__ZN7WebCore5XPath14createFunRoundEv
-__ZNK7WebCore5XPath8FunRound8evaluateEv
-__ZN7WebCore5XPath8FunRoundD1Ev
-__ZNK7WebCore27JSXPathEvaluatorConstructor19implementsConstructEv
-__ZN7WebCore27JSXPathEvaluatorConstructor9constructEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_14XPathEvaluatorE
-__ZN7WebCore16JSXPathEvaluatorC1EPN3KJS8JSObjectEPNS_14XPathEvaluatorE
-__ZN7WebCore16JSXPathEvaluator18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25JSXPathEvaluatorPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore41jsXPathEvaluatorPrototypeFunctionEvaluateEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore16JSXPathEvaluator9classInfoEv
-__ZN7WebCore26JSXPathExpressionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSXPathExpressionC1EPN3KJS8JSObjectEPNS_15XPathExpressionE
-__ZN7WebCore26JSXPathExpressionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore42jsXPathExpressionPrototypeFunctionEvaluateEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore17JSXPathExpression9classInfoEv
-__ZNK7WebCore11XPathResult11numberValueERi
-__ZNK7WebCore23JSProcessingInstruction9classInfoEv
-__ZNK7WebCore21ProcessingInstruction9nodeValueEv
-__ZNK7WebCore14JSCDATASection9classInfoEv
-__ZN7WebCore40jsElementPrototypeFunctionSetAttributeNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9JSElement14setAttributeNSEPN3KJS9ExecStateERKNS1_4ListE
-__ZNK7WebCore11XPathResult15singleNodeValueERi
-__ZNK7WebCore5XPath7NodeSet7anyNodeEv
-__ZN7WebCore43jsDocumentPrototypeFunctionCreateNSResolverEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document16createNSResolverEPNS_4NodeE
-__ZN7WebCore14XPathEvaluator16createNSResolverEPNS_4NodeE
-__ZN7WebCore21NativeXPathNSResolverC1EN3WTF10PassRefPtrINS_4NodeEEE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_15XPathNSResolverE
-__ZN7WebCore26JSXPathNSResolverPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSXPathNSResolverC1EPN3KJS8JSObjectEPNS_15XPathNSResolverE
-__ZNK7WebCore17JSXPathNSResolver9classInfoEv
-__ZN7WebCore21NativeXPathNSResolver18lookupNamespaceURIERKNS_6StringE
-__ZNK7WebCore4Node18lookupNamespaceURIERKNS_6StringE
-__ZN7WebCore14warningHandlerEPvPKcz
-__ZN7WebCore17JSXPathExpressionD0Ev
-__ZN7WebCore17JSXPathNSResolverD0Ev
-__ZN7WebCore21NativeXPathNSResolverD1Ev
-__ZN3KJS51jsXSLTProcessorPrototypeFunctionTransformToDocumentEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore13XSLTProcessor19transformToDocumentEPNS_4NodeE
-__Z17initxsltGetNsPropP8_xmlNodePKhS2_
-__ZN7WebCore16DeprecatedString8fromUtf8EPKc
-__ZN7WebCore13XSLStyleSheet14loadChildSheetERKNS_16DeprecatedStringE
-__ZN7WebCore13XSLImportRuleC1EPNS_9StyleBaseERKNS_6StringE
-__ZN7WebCore13XSLImportRule9loadSheetEv
-__ZNK7WebCore13XSLStyleSheet15isXSLStyleSheetEv
-__ZNK7WebCore13XSLImportRule16parentStyleSheetEv
-__ZN7WebCore9DocLoader20requestXSLStyleSheetERKNS_6StringE
-__ZN7WebCore19CachedXSLStyleSheetC1EPNS_9DocLoaderERKNS_6StringE
-__ZN7WebCore19CachedXSLStyleSheet5errorEv
-__ZN7WebCore19CachedXSLStyleSheet11checkNotifyEv
-__ZN7WebCore19CachedXSLStyleSheet3refEPNS_20CachedResourceClientE
-__ZN7WebCore13docLoaderFuncEPKhP8_xmlDictiPv12xsltLoadType
-__ZN7WebCore13XSLStyleSheet27locateStylesheetSubResourceEP7_xmlDocPKh
-__ZThn4_N7WebCore13XSLImportRule12isImportRuleEv
-__ZN7WebCore13XSLImportRule12isImportRuleEv
-__ZN7WebCore50jsDOMImplementationPrototypeFunctionCreateDocumentEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore14toDocumentTypeEPN3KJS7JSValueE
-__ZN7WebCore17DOMImplementation14createDocumentERKNS_6StringES3_PNS_12DocumentTypeERi
-__ZNK7WebCore21ProcessingInstruction8toStringEv
-__ZN7WebCore13XSLTProcessor24createDocumentFromSourceERKNS_6StringES3_S3_PNS_4NodeEPNS_5FrameE
-__ZN3KJS44jsXSLTProcessorPrototypeFunctionGetParameterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZNK7WebCore13XSLTProcessor12getParameterERKNS_6StringES3_
-__ZN3KJS47jsXSLTProcessorPrototypeFunctionRemoveParameterEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore13XSLTProcessor15removeParameterERKNS_6StringES3_
-__ZN3KJS47jsXSLTProcessorPrototypeFunctionClearParametersEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore7Element5styleEv
-__ZN7WebCore8Document18setTransformSourceEPv
-__ZN7WebCore19CachedXSLStyleSheet4dataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
-__ZThn52_N7WebCore21ProcessingInstruction16setXSLStyleSheetERKNS_6StringES3_
-__ZN7WebCore21ProcessingInstruction16setXSLStyleSheetERKNS_6StringES3_
-__ZN7WebCore13XSLStyleSheet11checkLoadedEv
-__ZN7WebCore13XSLStyleSheet9isLoadingEv
-__ZN7WebCore8Document17applyXSLTransformEPNS_21ProcessingInstructionE
-__ZN7WebCore9matchFuncEPKc
-__ZN7WebCore8openFuncEPKc
-__ZN7WebCore8readFuncEPvPci
-__ZN7WebCore9closeFuncEPv
-__ZN7WebCore9errorFuncEPvPKcz
-__ZN7WebCore13XSLTProcessor14parseErrorFuncEPvP9_xmlError
-__Z24initxsltLoadStylesheetPIP7_xmlDoc
-__Z18initxsltNextImportP15_xsltStylesheet
-__ZN7WebCore20exsltNodeSetFunctionEP22_xmlXPathParserContexti
-__Z23initxsltFunctionNodeSetP22_xmlXPathParserContexti
-__ZN7WebCore13XSLImportRule9isLoadingEv
-__ZN7WebCore23xsltUnicodeSortFunctionEP21_xsltTransformContextPP8_xmlNodei
-__Z25initxsltComputeSortResultP21_xsltTransformContextP8_xmlNode
-__ZN7WebCore13XSLImportRule16setXSLStyleSheetERKNS_6StringES3_
-__ZN7WebCore13XSLStyleSheetC1EPNS_13XSLImportRuleERKNS_6StringE
-__ZN7WebCore13XSLStyleSheet15markAsProcessedEv
-__ZN7WebCore17raiseDOMExceptionEi
-__ZN7WebCore16videoConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLVideoElementC1EPNS_8DocumentE
-__ZN7WebCore16HTMLMediaElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore16HTMLVideoElement11tagPriorityEv
-__ZN7WebCore16HTMLMediaElement20insertedIntoDocumentEv
-__ZNK7WebCore16HTMLMediaElement3srcEv
-__ZN7WebCore16HTMLVideoElement6attachEv
-__ZN7WebCore16HTMLMediaElement6attachEv
-__ZN7WebCore16HTMLVideoElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore16HTMLVideoElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore11RenderVideoC1EPNS_16HTMLMediaElementE
-__ZN7WebCore11RenderMediaC2EPNS_16HTMLMediaElementERKNS_7IntSizeE
-__ZNK7WebCore11RenderMedia10firstChildEv
-__ZN7WebCore11RenderVideo17updateFromElementEv
-__ZN7WebCore11RenderMedia17updateFromElementEv
-__ZN7WebCore11RenderMedia14updateControlsEv
-__ZNK7WebCore11RenderMedia12mediaElementEv
-__ZNK7WebCore16HTMLMediaElement8controlsEv
-__ZN7WebCore11RenderVideo12updatePlayerEv
-__ZNK7WebCore11RenderMedia6playerEv
-__ZN7WebCore18createVideoWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore18JSHTMLVideoElementC1EPN3KJS8JSObjectEPNS_16HTMLVideoElementE
-__ZN7WebCore18JSHTMLMediaElementC2EPN3KJS8JSObjectEPNS_16HTMLMediaElementE
-__ZN7WebCore18JSHTMLVideoElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore18JSHTMLMediaElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore27JSHTMLMediaElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore18JSHTMLVideoElement9classInfoEv
-__ZN7WebCore18JSHTMLVideoElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore18JSHTMLMediaElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore18JSHTMLMediaElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore16HTMLMediaElement6setSrcERKNS_6StringE
-__ZN7WebCore16HTMLMediaElement16attributeChangedEPNS_9AttributeEb
-__ZN7WebCore16HTMLVideoElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore16HTMLMediaElement12scheduleLoadEv
-__ZN7WebCore11RenderVideo6layoutEv
-__ZN7WebCore11RenderMedia6layoutEv
-__ZNK7WebCore11RenderVideo17calcReplacedWidthEv
-__ZNK7WebCore11RenderVideo16isWidthSpecifiedEv
-__ZNK7WebCore11RenderVideo20calcAspectRatioWidthEv
-__ZN7WebCore11RenderVideo14calcPrefWidthsEv
-__ZNK7WebCore11RenderVideo18calcReplacedHeightEv
-__ZNK7WebCore11RenderVideo17isHeightSpecifiedEv
-__ZNK7WebCore11RenderVideo21calcAspectRatioHeightEv
-__ZN7WebCore11RenderVideo13paintReplacedERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore5TimerINS_16HTMLMediaElementEE5firedEv
-__ZN7WebCore16HTMLMediaElement14loadTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore16HTMLMediaElement4loadERi
-__ZNK7WebCore16HTMLMediaElement19defaultPlaybackRateEv
-__ZN7WebCore16HTMLMediaElement15setPlaybackRateEfRi
-__ZNK7WebCore16HTMLMediaElement12networkStateEv
-__ZN7WebCore16HTMLMediaElement9pickMediaEv
-__ZN7WebCore15EventTargetNode21dispatchProgressEventERKNS_12AtomicStringEbjj
-__ZN7WebCore13ProgressEventC1ERKNS_12AtomicStringEbjj
-__ZN7WebCore16HTMLMediaElement19defaultEventHandlerEPNS_5EventE
-__ZNK7WebCore11RenderMedia7isMediaEv
-__ZN7WebCore11RenderMedia12forwardEventEPNS_5EventE
-__ZN7WebCore13ProgressEventD1Ev
-__ZN7WebCore11MediaPlayerC1EPNS_17MediaPlayerClientE
-__ZN7WebCore18MediaPlayerPrivateC1EPNS_11MediaPlayerE
--[WebCoreMovieObserver initWithCallback:]
-__ZN7WebCore16HTMLMediaElement12updateVolumeEv
-__ZN7WebCore11MediaPlayer9setVolumeEf
-__ZNK7WebCore11RenderVideo8videoBoxEv
-__ZN7WebCore11MediaPlayer7setRectERKNS_7IntRectE
-__ZN7WebCore18MediaPlayerPrivate7setRectERKNS_7IntRectE
-__ZN7WebCore11MediaPlayer10setVisibleEb
-__ZN7WebCore18MediaPlayerPrivate10setVisibleEb
-__ZN7WebCore18MediaPlayerPrivate17createQTMovieViewEv
-__ZN7WebCore18MediaPlayerPrivate17detachQTMovieViewEv
-__ZN7WebCore11MediaPlayer4loadENS_6StringE
-__ZN7WebCore18MediaPlayerPrivate4loadERKNS_6StringE
-__ZN7WebCore11MediaPlayer19networkStateChangedEv
-__ZThn68_N7WebCore16HTMLMediaElement30mediaPlayerNetworkStateChangedEPNS_11MediaPlayerE
-__ZN7WebCore16HTMLMediaElement30mediaPlayerNetworkStateChangedEPNS_11MediaPlayerE
-__ZN7WebCore11MediaPlayer12networkStateEv
-__ZN7WebCore18MediaPlayerPrivate10cancelSeekEv
--[WebCoreMovieObserver setDelayCallbacks:]
-__ZN7WebCore18MediaPlayerPrivate13createQTMovieERKNS_6StringE
-__Z40initQTSecurityPolicyNoCrossSiteAttributev
-__Z12QTKitLibraryv
-__Z43initQTMoviePreventExternalURLLinksAttributev
-__Z23initQTMovieURLAttributev
-__Z11initQTMoviev
-__ZNK7WebCore11MediaPlayer7visibleEv
--[WebCoreMovieObserver loadStateChanged:]
-__ZN7WebCore39jsHTMLMediaElementPrototypeFunctionPlayEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16HTMLMediaElement4playERi
-__Z44QTSecurityPolicyNoCrossSiteAttributeFunctionv
-__Z47QTMoviePreventExternalURLLinksAttributeFunctionv
-__Z27QTMovieURLAttributeFunctionv
-__Z15QTMovieFunctionv
-__ZNK7WebCore11MediaPlayer6volumeEv
-__Z41initQTMovieLoadStateDidChangeNotificationv
-__Z36initQTMovieRateDidChangeNotificationv
-__Z36initQTMovieSizeDidChangeNotificationv
-__Z36initQTMovieTimeDidChangeNotificationv
-__Z29initQTMovieDidEndNotificationv
-__Z15initQTMovieViewv
--[WebCoreMovieObserver sizeChanged:]
-__ZNK7WebCore16HTMLMediaElement13endedPlaybackEv
-__ZNK7WebCore11MediaPlayer4rateEv
-__ZN7WebCore16HTMLMediaElement18dispatchEventAsyncERKNS_12AtomicStringE
-__ZN3WTF6VectorIN7WebCore12AtomicStringELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore12AtomicStringELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore12AtomicStringELm0EE15reserveCapacityEm
-__ZN7WebCore16HTMLMediaElement15updatePlayStateEv
-__ZNK7WebCore16HTMLMediaElement11currentLoopEv
-__ZNK7WebCore16HTMLMediaElement9playCountEv
-__ZNK7WebCore16HTMLMediaElement12effectiveEndEv
-__ZNK7WebCore11MediaPlayer8durationEv
-__ZNK7WebCore18MediaPlayerPrivate8durationEv
-__ZNK7WebCore16HTMLMediaElement9loopStartEv
-__ZNK7WebCore16HTMLMediaElement22getTimeOffsetAttributeERKNS_13QualifiedNameEf
-__ZN7WebCore15parseTimeOffsetENS_6StringEPb
-__ZNK7WebCore16HTMLMediaElement5startEv
-__ZNK7WebCore16HTMLMediaElement3endEv
-__ZN7WebCore11MediaPlayer10setEndTimeEf
-__ZN7WebCore18MediaPlayerPrivate10setEndTimeEf
-__ZN7WebCore18MediaPlayerPrivate26startEndPointTimerIfNeededEv
-__ZNK7WebCore16HTMLMediaElement15activelyPlayingEv
-__ZNK7WebCore16HTMLMediaElement6pausedEv
-__ZNK7WebCore16HTMLMediaElement10readyStateEv
-__ZNK7WebCore11MediaPlayer6pausedEv
-__ZNK7WebCore18MediaPlayerPrivate6pausedEv
-__ZN7WebCore18MediaPlayerPrivate16loadStateChangedEv
-__ZN7WebCore18MediaPlayerPrivate12updateStatesEv
-__ZNK7WebCore18MediaPlayerPrivate7seekingEv
-__ZN7WebCore16HTMLMediaElement28initAndDispatchProgressEventERKNS_12AtomicStringE
-__ZN7WebCore11MediaPlayer15totalBytesKnownEv
-__ZNK7WebCore18MediaPlayerPrivate15totalBytesKnownEv
-__ZNK7WebCore18MediaPlayerPrivate10totalBytesEv
-__ZN7WebCore11MediaPlayer11bytesLoadedEv
-__ZNK7WebCore18MediaPlayerPrivate11bytesLoadedEv
-__ZN7WebCore11MediaPlayer10totalBytesEv
-__ZNK7WebCore16HTMLVideoElement7isVideoEv
-__ZN7WebCore16HTMLVideoElement17updatePosterImageEv
-__ZNK7WebCore16HTMLVideoElement6posterEv
-__ZN7WebCore16HTMLMediaElement20asyncEventTimerFiredEPNS_5TimerIS0_EE
-__ZN3WTF6VectorIN7WebCore12AtomicStringELm0EE6shrinkEm
-__ZN7WebCore11MediaPlayer5paintEPNS_15GraphicsContextERKNS_7IntRectE
-__ZN7WebCore18MediaPlayerPrivate5paintEPNS_15GraphicsContextERKNS_7IntRectE
-__Z29initQTMovieLoadStateAttributev
-__Z28initQTMovieDataSizeAttributev
-__Z32QTMovieDataSizeAttributeFunctionv
-__Z33QTMovieLoadStateAttributeFunctionv
-__ZN7WebCore16HTMLVideoElement6detachEv
-__ZN7WebCore11RenderMediaD0Ev
-__ZN7WebCore16HTMLVideoElementD1Ev
-__ZN7WebCore11MediaPlayerD1Ev
-__ZN7WebCore18MediaPlayerPrivateD1Ev
--[WebCoreMovieObserver disconnect]
-__Z45QTMovieLoadStateDidChangeNotificationFunctionv
-__Z40QTMovieRateDidChangeNotificationFunctionv
-__Z40QTMovieSizeDidChangeNotificationFunctionv
-__Z40QTMovieTimeDidChangeNotificationFunctionv
-__Z33QTMovieDidEndNotificationFunctionv
-__Z19QTMovieViewFunctionv
-__ZNK7WebCore11RenderMedia9lastChildEv
-__ZN7WebCore39jsHTMLMediaElementPrototypeFunctionLoadEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16HTMLMediaElement19removedFromDocumentEv
-__ZN7WebCore16HTMLMediaElement5pauseERi
-__ZN7WebCore10HTMLParser23isindexCreateErrorCheckEPNS_5TokenERN3WTF6RefPtrINS_4NodeEEE
-__ZN7WebCore10HTMLParser13handleIsindexEPNS_5TokenE
-__ZN7WebCore18HTMLIsIndexElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore27searchableIndexIntroductionEv
-__ZN7WebCore20JSHTMLIsIndexElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore32jsDOMWindowPrototypeFunctionStopEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9DOMWindow4stopEv
-__ZN7WebCore11FrameLoader25scheduleCheckLoadCompleteEv
-__ZNK7WebCore17HTMLObjectElement24imageSourceAttributeNameEv
-__ZN7WebCore11FrameLoader27checkLoadCompleteTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore8Document10setCharsetERKNS_6StringE
-__ZN7WebCore4KURL14setHostAndPortERKNS_16DeprecatedStringE
-__ZN7WebCore25jsLocationProtoFuncAssignEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore18JSHistoryPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore9JSHistory9classInfoEv
-__ZN3KJS49jsXMLHttpRequestPrototypeFunctionAddEventListenerEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore14XMLHttpRequest16addEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
-__ZN3WTF9HashTableIiSt4pairIiNS_6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EEEENS_18PairFirstExtractorIS8_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSE_IS7_EEEESF_E4findIiNS_22IdentityHashTranslatorIiS8_SC_EEEENS_17HashTableIteratorIiS8_SA_SC_SH_SF_EERKT_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EE15reserveCapacityEm
-__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplENS_6VectorINS_6RefPtrINS1_13EventListenerEEELm0EEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSB_IS8_EEE3getERKS3_
-__ZN3WTF9HashTableIiSt4pairIiNS_6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EEEENS_18PairFirstExtractorIS8_EENS_7IntHashIiEENS_14PairHashTraitsINS_10HashTraitsIiEENSE_IS7_EEEESF_E3addIPNS4_16AtomicStringImplES7_NS_17HashMapTranslatorILb1ES1_ISL_S7_ENS_18PairBaseHashTraitsINSE_ISL_EESG_EESH_NS_7PtrHashISL_EEEEEES1_INS_17HashTableIteratorIiS8_SA_SC_SH_SF_EEbERKT_RKT0_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EEC1ERKS5_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EEaSERKS5_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EE6shrinkEm
-__ZN7WebCore34newStreamingTextDecoderUserDefinedERKNS_12TextEncodingEPKv
-__ZN7WebCore20TextCodecUserDefined6decodeEPKcmb
-__ZN7WebCore20TextCodecUserDefinedD1Ev
--[WebCoreSynchronousLoader connection:didFailWithError:]
-__ZN7WebCore20ResourceResponseBase17setHTTPStatusCodeEi
-__ZNK7WebCore8Document8toStringEv
-__ZNK7WebCore7Element8toStringEv
-__ZNK7WebCore7Element20openTagStartToStringEv
-__ZNK7WebCore4Text8toStringEv
-__ZN7WebCoreplERKNS_16DeprecatedStringEc
-__ZN3KJS46jsXMLHttpRequestPrototypeFunctionDispatchEventEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN3KJS52jsXMLHttpRequestPrototypeFunctionRemoveEventListenerEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore14XMLHttpRequest19removeEventListenerERKNS_12AtomicStringEPNS_13EventListenerEb
-__ZN7WebCore17circleConstructorEPNS_8DocumentEb
-__ZN7WebCore16SVGCircleElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore16SVGCircleElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore16SVGCircleElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore16SVGCircleElement14setCxBaseValueENS_9SVGLengthE
-__ZN7WebCore16SVGCircleElement5setCxENS_9SVGLengthE
-__ZN7WebCore16SVGCircleElement14setCyBaseValueENS_9SVGLengthE
-__ZN7WebCore16SVGCircleElement5setCyENS_9SVGLengthE
-__ZN7WebCore16SVGCircleElement13setRBaseValueENS_9SVGLengthE
-__ZN7WebCore16SVGCircleElement4setRENS_9SVGLengthE
-__ZNK7WebCore16SVGCircleElement1rEv
-__ZN7WebCore8Document7scriptsEv
-__ZN7WebCore11RenderMedia24createControlsShadowRootEv
-__ZN7WebCore29MediaControlShadowRootElementC1EPNS_8DocumentEPNS_16HTMLMediaElementE
-__ZN7WebCore11RenderMedia11createPanelEv
-__ZN7WebCore11RenderMedia16createMuteButtonEv
-__ZN7WebCore29MediaControlMuteButtonElementC1EPNS_8DocumentEPNS_16HTMLMediaElementE
-__ZN7WebCore24MediaControlInputElementC2EPNS_8DocumentENS_11RenderStyle8PseudoIdENS_6StringEPNS_16HTMLMediaElementE
-__ZN7WebCore24MediaControlInputElement14attachToParentEPNS_7ElementE
-__ZN7WebCore11RenderMedia16createPlayButtonEv
-__ZN7WebCore29MediaControlPlayButtonElementC1EPNS_8DocumentEPNS_16HTMLMediaElementE
-__ZN7WebCore11RenderMedia14createTimelineEv
-__ZN7WebCore27MediaControlTimelineElementC1EPNS_8DocumentEPNS_16HTMLMediaElementE
-__ZN7WebCore11RenderMedia20createSeekBackButtonEv
-__ZN7WebCore29MediaControlSeekButtonElementC1EPNS_8DocumentEPNS_16HTMLMediaElementEb
-__ZN7WebCore11RenderMedia23createSeekForwardButtonEv
-__ZN7WebCore11RenderMedia17createTimeDisplayEv
-__ZN7WebCore11RenderMedia22createFullscreenButtonEv
-__ZN7WebCore35MediaControlFullscreenButtonElementC1EPNS_8DocumentEPNS_16HTMLMediaElementE
-__ZN7WebCore24MediaControlInputElement6updateEv
-__ZN7WebCore27MediaControlTimelineElement6updateEb
-__ZNK7WebCore16HTMLMediaElement8durationEv
-__ZNK7WebCore16HTMLMediaElement11currentTimeEv
-__ZNK7WebCore29MediaControlShadowRootElement12isShadowNodeEv
-__ZN7WebCore29MediaControlShadowRootElement16shadowParentNodeEv
-__ZN7WebCore11RenderMedia17updateTimeDisplayEv
-__ZN7WebCore11RenderMedia10formatTimeEf
-__ZN7WebCore11RenderMedia23updateControlVisibilityEv
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLMediaElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLMediaElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore16HTMLMediaElement8autoplayEv
-__ZN7WebCore16HTMLMediaElement11setAutoplayEb
-__ZN7WebCore7Element19setBooleanAttributeERKNS_13QualifiedNameEb
-__ZN7WebCore29JSHTMLMediaElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore29JSHTMLMediaElementConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore29JSHTMLMediaElementConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore16HTMLMediaElement8setStartEf
-__ZN7WebCore16HTMLMediaElement22setTimeOffsetAttributeERKNS_13QualifiedNameEf
-__ZN7WebCore19serializeTimeOffsetEf
-__ZN7WebCore16HTMLMediaElement17checkIfSeekNeededEv
-__ZNK7WebCore11MediaPlayer11currentTimeEv
-__ZNK7WebCore18MediaPlayerPrivate11currentTimeEv
-__ZNK7WebCore16HTMLMediaElement5endedEv
-__ZN7WebCore40jsHTMLMediaElementPrototypeFunctionPauseEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16HTMLMediaElement8checkDTDEPKNS_4NodeE
-__ZN7WebCore17sourceConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLSourceElementC1EPNS_8DocumentE
-__ZNK7WebCore17HTMLSourceElement17endTagRequirementEv
-__ZNK7WebCore17HTMLSourceElement11tagPriorityEv
-__ZN7WebCore17HTMLSourceElement20insertedIntoDocumentEv
-__ZNK7WebCore18JSAudioConstructor19implementsConstructEv
-__ZN7WebCore18JSAudioConstructor9constructEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore16audioConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore16HTMLAudioElementC1EPNS_8DocumentE
-__ZN7WebCore18createAudioWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore18JSHTMLAudioElementC1EPN3KJS8JSObjectEPNS_16HTMLAudioElementE
-__ZNK7WebCore29JSHTMLAudioElementConstructor21implementsHasInstanceEv
-__ZN7WebCore29JSHTMLAudioElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore18JSHTMLAudioElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore18JSHTMLAudioElement9classInfoEv
-__ZNK7WebCore13ProgressEvent15isProgressEventEv
-__ZN7WebCore15JSProgressEventC1EPN3KJS8JSObjectEPNS_13ProgressEventE
-__ZNK7WebCore16HTMLMediaElement10currentSrcEv
-__ZNK7WebCore16HTMLMediaElement7isVideoEv
-__ZNK7WebCore16HTMLAudioElement11tagPriorityEv
-__ZN7WebCore16HTMLMediaElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore16HTMLMediaElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore11RenderMediaC1EPNS_16HTMLMediaElementE
-__ZNK7WebCore16HTMLMediaElement16effectiveLoopEndEv
-__ZNK7WebCore16HTMLMediaElement7loopEndEv
-__ZNK7WebCore16HTMLMediaElement8bufferedEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_10TimeRangesE
-__ZN7WebCore21JSTimeRangesPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore12JSTimeRangesC1EPN3KJS8JSObjectEPNS_10TimeRangesE
-__ZN7WebCore12JSTimeRanges18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore12JSTimeRangesEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore12JSTimeRanges16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore21JSTimeRangesPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore34jsTimeRangesPrototypeFunctionStartEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore12JSTimeRanges9classInfoEv
-__ZNK7WebCore10TimeRanges5startEjRi
-__ZN7WebCore32jsTimeRangesPrototypeFunctionEndEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore10TimeRanges3endEjRi
-__ZNK7WebCore16HTMLVideoElement24imageSourceAttributeNameEv
-__ZN3KJS17staticValueGetterIN7WebCore18JSHTMLVideoElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSHTMLVideoElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore16HTMLMediaElement6setEndEf
-__ZN7WebCore16HTMLMediaElement10setLoopEndEf
-__ZNK7WebCore16HTMLMediaElement5mutedEv
-__ZN7WebCore16HTMLMediaElement8setMutedEb
-__ZN7WebCore18MediaPlayerPrivate9setVolumeEf
-__ZN7WebCore19createSourceWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
-__ZN7WebCore28JSHTMLSourceElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSHTMLSourceElementC1EPN3KJS8JSObjectEPNS_17HTMLSourceElementE
-__ZN7WebCore19JSHTMLSourceElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore19JSHTMLSourceElement9classInfoEv
-__ZNK7WebCore16HTMLMediaElement5errorEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_10MediaErrorE
-__ZNK7WebCore16HTMLVideoElement10videoWidthEv
-__ZNK7WebCore16HTMLVideoElement11videoHeightEv
-__ZN7WebCore16HTMLMediaElement12setPlayCountEjRi
-__ZNK7WebCore29JSHTMLMediaElementConstructor21implementsHasInstanceEv
-__ZNK7WebCore29JSHTMLVideoElementConstructor21implementsHasInstanceEv
-__ZN7WebCore29JSHTMLVideoElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore12JSTimeRangesD0Ev
-__ZNK7WebCore16HTMLMediaElement8seekableEv
-__ZNK7WebCore16HTMLVideoElement5widthEv
-__ZNK7WebCore16HTMLVideoElement6heightEv
-__ZN7WebCore18JSHTMLVideoElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore16HTMLVideoElement8setWidthEi
-__ZN7WebCore16HTMLVideoElement9setHeightEi
-__ZNK7WebCore16HTMLMediaElement6volumeEv
-__ZN7WebCore16HTMLMediaElement9setVolumeEfRi
-__ZN7WebCore16HTMLMediaElement12setLoopStartEf
-__ZN7WebCore14RenderThemeMac20paintMediaMuteButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore14RenderThemeMac20paintMediaPlayButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZNK7WebCore16HTMLMediaElement7canPlayEv
-__ZN7WebCore14RenderThemeMac21paintMediaSliderTrackEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore14RenderThemeMac21paintMediaSliderThumbEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore14RenderThemeMac24paintMediaSeekBackButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore14RenderThemeMac27paintMediaSeekForwardButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
-__ZN7WebCore9CSSParser14parseTransformEv
-__ZN7WebCore23WebKitCSSTransformValueC1ENS0_22TransformOperationTypeE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EE14expandCapacityEmPKS4_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EE15reserveCapacityEm
-__ZNK7WebCore19TransformOperationseqERKS0_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EE6shrinkEm
-__ZN7WebCore18StyleTransformDataC1ERKS0_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore18TransformOperationEEELm0EEaSERKS5_
-__ZNK7WebCore18StyleTransformDataeqERKS0_
-__ZNK7WebCore24RotateTransformOperationeqERKNS_18TransformOperationE
-__ZNK7WebCore24RotateTransformOperation17isRotateOperationEv
-__ZNK7WebCore23ScaleTransformOperationeqERKNS_18TransformOperationE
-__ZNK7WebCore23ScaleTransformOperation16isScaleOperationEv
-__ZNK7WebCore22SkewTransformOperationeqERKNS_18TransformOperationE
-__ZNK7WebCore22SkewTransformOperation15isSkewOperationEv
-__ZNK7WebCore11RenderStyle14applyTransformERNS_15AffineTransformERKNS_7IntSizeE
-__ZNK7WebCore18TransformOperation20isTranslateOperationEv
-__ZN7WebCore24RotateTransformOperation5applyERNS_15AffineTransformERKNS_7IntSizeE
-__ZN7WebCore23ScaleTransformOperation5applyERNS_15AffineTransformERKNS_7IntSizeE
-__ZN7WebCore22SkewTransformOperation5applyERNS_15AffineTransformERKNS_7IntSizeE
-__ZN7WebCore15AffineTransform4skewEdd
-__ZN7WebCore15AffineTransform5shearEdd
-__ZN7WebCore16HTMLMediaElement23progressEventTimerFiredEPNS_5TimerIS0_EE
-__ZNK7WebCore18MediaPlayerPrivate13maxTimeLoadedEv
-__ZN7WebCore15JSProgressEvent18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore15JSProgressEventEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSProgressEvent16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore17HTMLSourceElement4typeEv
-__ZN7WebCore16MIMETypeRegistry24isSupportedMediaMIMETypeERKNS_6StringE
-__ZN7WebCore33initialiseSupportedMediaMIMETypesEv
-__ZN7WebCore11MediaPlayer17getSupportedTypesERN3WTF7HashSetINS_6StringENS_10StringHashENS1_10HashTraitsIS3_EEEE
-__ZN7WebCore18MediaPlayerPrivate17getSupportedTypesERN3WTF7HashSetINS_6StringENS_10StringHashENS1_10HashTraitsIS3_EEEE
-__ZNK7WebCore17HTMLSourceElement3srcEv
-__ZN7WebCore12JSMediaErrorC1EPN3KJS8JSObjectEPNS_10MediaErrorE
-__ZN7WebCore12JSMediaError18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore12JSMediaErrorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore12JSMediaError16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore23JSMediaErrorConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore23JSMediaErrorConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore23JSMediaErrorConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore17HTMLSourceElement5mediaEv
-__ZN7WebCore32min_device_widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore11MediaPlayer15maxTimeBufferedEv
-__ZNK7WebCore18MediaPlayerPrivate15maxTimeBufferedEv
-__ZN7WebCore18MediaPlayerPrivate24disableUnsupportedTracksERj
-__Z20initQTMediaTypeVideov
-__Z20initQTMediaTypeSoundv
-__Z19initQTMediaTypeTextv
-__Z19initQTMediaTypeBasev
-__Z24initQTMediaTypeAttributev
-__ZNK7WebCore16HTMLMediaElement14effectiveStartEv
-__ZN7WebCore11MediaPlayer4seekEf
-__ZN7WebCore18MediaPlayerPrivate4seekEf
-__ZN7WebCore18MediaPlayerPrivate6doSeekEv
-__ZNK7WebCore18MediaPlayerPrivate12createQTTimeEf
-__Z29initQTMovieTimeScaleAttributev
-__Z14initQTMakeTimexl
--[WebCoreMovieObserver rateChanged:]
--[WebCoreMovieObserver timeChanged:]
-__ZN7WebCore16HTMLMediaElement13setReadyStateENS0_10ReadyStateE
-__ZN7WebCore11RenderVideo16videoSizeChangedEv
-__ZN7WebCore11MediaPlayer11naturalSizeEv
-__ZNK7WebCore18MediaPlayerPrivate11naturalSizeEv
-__Z31initQTMovieNaturalSizeAttributev
-__ZN7WebCore11MediaPlayer17readyStateChangedEv
-__ZThn68_N7WebCore16HTMLMediaElement28mediaPlayerReadyStateChangedEPNS_11MediaPlayerE
-__ZN7WebCore16HTMLMediaElement28mediaPlayerReadyStateChangedEPNS_11MediaPlayerE
-__ZN7WebCore11MediaPlayer10readyStateEv
-__Z28QTMediaTypeAttributeFunctionv
-__Z33QTMovieTimeScaleAttributeFunctionv
-__Z35QTMovieNaturalSizeAttributeFunctionv
-__ZN7WebCore16HTMLMediaElement14setCurrentTimeEfRi
-__ZN7WebCore16HTMLMediaElement4seekEfRi
-__ZN7WebCore11MediaPlayer15maxTimeSeekableEv
-__ZNK7WebCore18MediaPlayerPrivate15maxTimeSeekableEv
-__ZN7WebCore10TimeRangesC1Eff
-__ZN7WebCore10TimeRanges3addEff
-__ZN3WTF6VectorIN7WebCore10TimeRanges5RangeELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIN7WebCore10TimeRanges5RangeELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore10TimeRanges5RangeELm0EE15reserveCapacityEm
-__ZNK7WebCore10TimeRanges7containEf
-__ZN3WTF6VectorIN7WebCore10TimeRanges5RangeELm0EE6shrinkEm
-__ZN7WebCore35MediaControlFullscreenButtonElementD1Ev
-__ZN7WebCore11MediaPlayer4playEv
-__ZN7WebCore18MediaPlayerPrivate4playEv
--[WebCoreMovieObserver didEnd:]
-__ZN7WebCore18MediaPlayerPrivate6didEndEv
-__ZN7WebCore11MediaPlayer11timeChangedEv
-__ZThn68_N7WebCore16HTMLMediaElement22mediaPlayerTimeChangedEPNS_11MediaPlayerE
-__ZN7WebCore16HTMLMediaElement22mediaPlayerTimeChangedEPNS_11MediaPlayerE
-__ZNK7WebCore16HTMLMediaElement18effectiveLoopStartEv
-__ZN7WebCore11RenderMedia11removeChildEPNS_12RenderObjectE
-__ZN7WebCore16HTMLMediaElement11setControlsEb
-__ZNK7WebCore16HTMLMediaElement7seekingEv
-__ZN7WebCore25mainThreadSetNeedsDisplayEP11objc_objectP13objc_selector
--[WebCoreMovieObserver repaint]
-__ZN7WebCore18MediaPlayerPrivate7repaintEv
-__ZN7WebCore11MediaPlayer7repaintEv
-__ZThn68_N7WebCore16HTMLMediaElement18mediaPlayerRepaintEPNS_11MediaPlayerE
-__ZN7WebCore16HTMLMediaElement18mediaPlayerRepaintEPNS_11MediaPlayerE
-__ZN7WebCore18MediaPlayerPrivate11rateChangedEv
-__ZN7WebCore18MediaPlayerPrivate11timeChangedEv
-__ZN7WebCore11MediaPlayer5pauseEv
-__ZN7WebCore18MediaPlayerPrivate5pauseEv
-__ZN7WebCore5TimerINS_18MediaPlayerPrivateEE5firedEv
-__ZN7WebCore18MediaPlayerPrivate18endPointTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore5TimerINS_11RenderMediaEE5firedEv
-__ZN7WebCore11RenderMedia26opacityAnimationTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore11RenderMedia13changeOpacityEPNS_11HTMLElementEf
-__ZN7WebCore11RenderMedia20timeUpdateTimerFiredEPNS_5TimerIS0_EE
-__ZN7WebCore23WebKitCSSTransformValueD1Ev
-__ZN7WebCore14RenderReplaced13paintReplacedERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore28JSHTMLSourceElementPrototypeD0Ev
-__ZN7WebCore14ResourceHandle22scheduleBlockedFailureEv
-__ZN7WebCore5TimerINS_14ResourceHandleEE5firedEv
-__ZN7WebCore14ResourceHandle18fireBlockedFailureEPNS_5TimerIS0_EE
-__ZN7WebCore14ResourceLoader10wasBlockedEPNS_14ResourceHandleE
-__ZN7WebCore14ResourceLoader10wasBlockedEv
-__ZN7WebCore14ResourceLoader12blockedErrorEv
-__ZNK7WebCore11FrameLoader12blockedErrorERKNS_15ResourceRequestE
-__ZN7WebCore5TimerINS_14ResourceHandleEED1Ev
-__ZN7WebCore40jsDOMWindowPrototypeFunctionOpenDatabaseEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9DOMWindow12openDatabaseERKNS_6StringES3_S3_mRi
-__ZN7WebCore8Database12openDatabaseEPNS_8DocumentERKNS_6StringES5_S5_mRi
-__ZN7WebCore15DatabaseTracker20canEstablishDatabaseEPNS_8DocumentERKNS_6StringES5_m
-__ZN7WebCore15DatabaseTracker14usageForOriginEPNS_14SecurityOriginE
-__ZN7WebCore15DatabaseTracker18originQuotaManagerEv
-__ZN7WebCore18OriginQuotaManager4lockEv
-__ZNK7WebCore18OriginQuotaManager12tracksOriginEPNS_14SecurityOriginE
-__ZNK3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_iENS_18PairFirstExtractorIS6_EENS2_18SecurityOriginHashENS_14PairHashTraitsINS2_20SecurityOriginTraitsENS_10HashTraitsIiEEEESB_E8containsIS4_NS_22IdentityHashTranslatorIS4_S6_S9_EEEEbRKT_
-__ZN7WebCore18OriginQuotaManager11trackOriginEN3WTF10PassRefPtrINS_14SecurityOriginEEE
-__ZN7WebCore17OriginUsageRecordC1Ev
-__ZN7WebCore17OriginUsageRecord16unknownDiskUsageEv
-__ZN7WebCore18SecurityOriginHash4hashEN3WTF6RefPtrINS_14SecurityOriginEEE
-__ZN7WebCore15DatabaseTracker22databaseNamesForOriginEPNS_14SecurityOriginERN3WTF6VectorINS_6StringELm0EEE
-__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_iENS_18PairFirstExtractorIS6_EENS2_18SecurityOriginHashENS_14PairHashTraitsINS2_20SecurityOriginTraitsENS_10HashTraitsIiEEEESB_E6lookupIS4_NS_22IdentityHashTranslatorIS4_S6_S9_EEEEPS6_RKT_
-__ZNK7WebCore18OriginQuotaManager9diskUsageEPNS_14SecurityOriginE
-__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEEPNS2_17OriginUsageRecordENS2_18SecurityOriginHashENS2_20SecurityOriginTraitsENS_10HashTraitsIS6_EEE3getERKS4_
-__ZN7WebCore17OriginUsageRecord9diskUsageEv
-__ZN7WebCore18OriginQuotaManager6unlockEv
-__ZN7WebCore15DatabaseTracker19hasEntryForDatabaseEPNS_14SecurityOriginERKNS_6StringE
-__ZN7WebCore15DatabaseTracker14quotaForOriginEPNS_14SecurityOriginE
-__ZN3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEEyNS2_18SecurityOriginHashENS2_20SecurityOriginTraitsENS_10HashTraitsIyEEE3setEPS3_RKy
-__ZN7WebCore15DatabaseTracker23detailsForNameAndOriginERKNS_6StringEPNS_14SecurityOriginE
-__ZN7WebCore15DatabaseTracker8setQuotaEPNS_14SecurityOriginEy
-__ZN7WebCore7CString11mutableDataEv
-__ZN7WebCore7CString18copyBufferIfNeededEv
-__ZNK3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_xENS_18PairFirstExtractorIS6_EENS2_18SecurityOriginHashENS_14PairHashTraitsINS2_20SecurityOriginTraitsENS_10HashTraitsIxEEEESB_E8containsIS4_NS_22IdentityHashTranslatorIS4_S6_S9_EEEEbRKT_
-__ZNK7WebCore14SecurityOrigin16stringIdentifierEv
-__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_xENS_18PairFirstExtractorIS6_EENS2_18SecurityOriginHashENS_14PairHashTraitsINS2_20SecurityOriginTraitsENS_10HashTraitsIxEEEESB_E3addIS4_S6_NS_22IdentityHashTranslatorIS4_S6_S9_EEEES5_INS_17HashTableIteratorIS4_S6_S8_S9_SE_SB_EEbERKT_RKT0_
-__ZN7WebCore8DatabaseC1EPNS_8DocumentERKNS_6StringES5_
-__ZNK7WebCore14SecurityOrigin8toStringEv
-__ZN7WebCore8Database20guidForOriginAndNameERKNS_6StringES3_
-__ZNK3WTF7HashMapIN7WebCore6StringEiNS1_10StringHashENS_10HashTraitsIS2_EENS4_IiEEE3getERKS2_
-__ZN3WTF7HashMapIN7WebCore6StringEiNS1_10StringHashENS_10HashTraitsIS2_EENS4_IiEEE3setERKS2_RKi
-__ZN7WebCore8Database9guidMutexEv
-__ZN7WebCore8Database17guidToDatabaseMapEv
-__ZN3WTF7HashMapIiPNS_7HashSetIPN7WebCore8DatabaseENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEEENS_7IntHashIjEENS7_IiEENS7_ISA_EEE3setERKiRKSA_
-__ZN3WTF7HashSetIPN7WebCore8DatabaseENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore8Document14databaseThreadEv
-__ZN7WebCore14DatabaseThreadC1EPNS_8DocumentE
-__ZN7WebCore14DatabaseThread5startEv
-__ZN7WebCore15DatabaseTracker19fullPathForDatabaseEPNS_14SecurityOriginERKNS_6StringEb
-__ZN7WebCore14DatabaseThread19databaseThreadStartEPv
-__ZNK7WebCore15DatabaseTracker10originPathEPNS_14SecurityOriginE
-__ZN7WebCore14DatabaseThread14databaseThreadEv
-__ZN7WebCore14DatabaseThread26dispatchNextTaskIdentifierEv
-__ZN7WebCore15DatabaseTracker11addDatabaseEPNS_14SecurityOriginERKNS_6StringES5_
-__ZN7WebCore18OriginQuotaManager11addDatabaseEPNS_14SecurityOriginERKNS_6StringES5_
-__ZN7WebCore17OriginUsageRecord11addDatabaseERKNS_6StringES3_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_17OriginUsageRecord13DatabaseEntryEENS_18PairFirstExtractorIS7_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSC_IS6_EEEESD_E3addINS1_6StringES6_NS_17HashMapTranslatorILb0ES4_ISI_S6_ENS_18PairBaseHashTraitsINSC_ISI_EESE_EESF_SA_EEEES4_INS_17HashTableIteratorIS3_S7_S9_SA_SF_SD_EEbERKT_RKT0_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_17OriginUsageRecord13DatabaseEntryEENS_18PairFirstExtractorIS7_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSC_IS6_EEEESD_E47removeAndInvalidateWithoutEntryConsistencyCheckEPS7_
-__ZN7WebCore15DatabaseTracker15addOpenDatabaseEPNS_8DatabaseE
-__ZNK7WebCore8Database18securityOriginCopyEv
-__ZN7WebCore14SecurityOrigin4copyEv
-__ZNK7WebCore8Database16stringIdentifierEv
-__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEEPNS0_INS2_6StringEPNS_7HashSetIPNS2_8DatabaseENS_7PtrHashIS8_EENS_10HashTraitsIS8_EEEENS2_10StringHashENSB_IS5_EENSB_ISE_EEEENS2_18SecurityOriginHashENS2_20SecurityOriginTraitsENSB_ISJ_EEE3getEPS3_
-__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_iENS_18PairFirstExtractorIS6_EENS2_18SecurityOriginHashENS_14PairHashTraitsINS2_20SecurityOriginTraitsENS_10HashTraitsIiEEEESB_E3addIS4_PNS2_17OriginUsageRecordENS_17HashMapTranslatorILb1ES5_IS4_SI_ENS_18PairBaseHashTraitsISB_NSC_ISI_EEEESE_S9_EEEES5_INS_17HashTableIteratorIS4_S6_S8_S9_SE_SB_EEbERKT_RKT0_
-__ZN3WTF7HashMapIN7WebCore6StringEPNS_7HashSetIPNS1_8DatabaseENS_7PtrHashIS5_EENS_10HashTraitsIS5_EEEENS1_10StringHashENS8_IS2_EENS8_ISB_EEE3setERKS2_RKSB_
-__ZN7WebCore8Database20openAndVerifyVersionERi
-__ZN7WebCore18DatabaseAuthorizerC1Ev
-__ZN7WebCore18DatabaseAuthorizer5resetEv
-__ZN7WebCore16DatabaseOpenTaskC1Ev
-__ZN7WebCore12DatabaseTaskC2Ev
-__ZN7WebCore12DatabaseTask28lockForSynchronousSchedulingEv
-__ZN7WebCore14DatabaseThread21scheduleImmediateTaskEPNS_8DatabaseEPNS_12DatabaseTaskE
-__ZN3WTF7HashSetINS_6RefPtrIN7WebCore8DatabaseEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
-__ZNK3WTF7HashMapIPN7WebCore8DatabaseEPNS_5DequeINS_6RefPtrINS1_12DatabaseTaskEEEEENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENSC_IS9_EEE3getERKS3_
-__ZN7WebCore14DatabaseThread14wakeWorkThreadEv
-__ZN7WebCore12DatabaseTask28waitForSynchronousCompletionEv
-__ZN7WebCore8Database15resetAuthorizerEv
-__ZN7WebCore12DatabaseTask11performTaskEPNS_8DatabaseE
-__ZN7WebCore16DatabaseOpenTask13doPerformTaskEPNS_8DatabaseE
-__ZN7WebCore8Database20performOpenAndVerifyERi
-__ZN7WebCore14SQLiteDatabase13setAuthorizerEN3WTF10PassRefPtrINS_16SQLiteAuthorizerEEE
-__ZN7WebCore14SQLiteDatabase16enableAuthorizerEb
-_sqlite3_set_authorizer
-__ZN7WebCore8Database21databaseInfoTableNameEv
-__ZN7WebCore14SQLiteDatabase18authorizerFunctionEPviPKcS3_S3_S3_
-__ZN7WebCore16SQLiteAuthorizer11allowSelectEv
-__ZN7WebCore18DatabaseAuthorizer9allowReadERKNS_6StringES3_
-__ZN7WebCore18DatabaseAuthorizer20denyBasedOnTableNameERKNS_6StringE
-__ZN7WebCore18DatabaseAuthorizer11allowInsertERKNS_6StringE
-__ZN7WebCore18DatabaseAuthorizer11createTableERKNS_6StringE
-__ZN7WebCore18DatabaseAuthorizer11createIndexERKNS_6StringES3_
-__ZN7WebCore18DatabaseAuthorizer11allowUpdateERKNS_6StringES3_
-__ZN7WebCore8Database16guidToVersionMapEv
-__ZNK3WTF7HashMapIiN7WebCore6StringENS_7IntHashIjEENS_10HashTraitsIiEENS5_IS2_EEE3getERKi
-__ZN7WebCore8Database22getVersionFromDatabaseERNS_6StringE
-__ZN7WebCore18databaseVersionKeyEv
-__ZN7WebCore18DatabaseAuthorizer7disableEv
-__ZN7WebCore18DatabaseAuthorizer6enableEv
-__ZN7WebCore8Database20setVersionInDatabaseERKNS_6StringE
-__ZN3WTF7HashMapIiN7WebCore6StringENS_7IntHashIjEENS_10HashTraitsIiEENS5_IS2_EEE3setERKiRKS2_
-__ZN7WebCore8Database19performPolicyChecksEv
-__ZN7WebCore16DatabaseOpenTaskD1Ev
-__ZN7WebCore12DatabaseTaskD0Ev
-__ZN7WebCore15ThreadConditionD1Ev
-__ZN7WebCore15DatabaseTracker18setDatabaseDetailsEPNS_14SecurityOriginERKNS_6StringES5_m
-__ZN7WebCore19InspectorController15didOpenDatabaseEPNS_8DatabaseERKNS_6StringES5_S5_
-__ZN3WTF7HashSetINS_6RefPtrIN7WebCore25InspectorDatabaseResourceEEENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_8DatabaseE
-__ZN7WebCore19JSDatabasePrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore10JSDatabaseC1EPN3KJS8JSObjectEPNS_8DatabaseE
-__ZN7WebCore10JSDatabase18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore19JSDatabasePrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore38jsDatabasePrototypeFunctionTransactionEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore10JSDatabase9classInfoEv
-__ZN7WebCore10JSDatabase11transactionEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore30JSCustomSQLTransactionCallbackC1EPN3KJS8JSObjectEPNS_5FrameE
-__ZN7WebCore8Database11transactionEN3WTF10PassRefPtrINS_22SQLTransactionCallbackEEENS2_INS_27SQLTransactionErrorCallbackEEENS2_INS_12VoidCallbackEEE
-__ZN7WebCore14SQLTransactionC1EPNS_8DatabaseEN3WTF10PassRefPtrINS_22SQLTransactionCallbackEEENS4_INS_27SQLTransactionErrorCallbackEEENS4_INS_21SQLTransactionWrapperEEE
-__ZN7WebCore8Database19scheduleTransactionEN3WTF10PassRefPtrINS_14SQLTransactionEEE
-__ZN7WebCore16ThreadSafeSharedINS_14SQLTransactionEE5derefEv
-__ZN7WebCore23DatabaseTransactionTaskC1Ev
-__ZN7WebCore14DatabaseThread12scheduleTaskEPNS_8DatabaseEPNS_12DatabaseTaskE
-__ZN7WebCore23DatabaseTransactionTask13doPerformTaskEPNS_8DatabaseE
-__ZN7WebCore8Database22performTransactionStepEv
-__ZN7WebCore8Database19globalCallbackMutexEv
-__ZN7WebCore14SQLTransaction15performNextStepEv
-__ZN7WebCore14SQLTransaction27openTransactionAndPreflightEv
-__ZNK7WebCore8Database11maximumSizeEv
-__ZN3WTF7HashMapIN7WebCore6StringENS1_17OriginUsageRecord13DatabaseEntryENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3setERKS2_RKS4_
-__ZN7WebCore11getFileSizeERKNS_6StringERx
-__ZNK7WebCore8Database12databaseSizeEv
-__ZN7WebCore14SQLiteDatabase14setMaximumSizeEx
-__ZN7WebCore14SQLiteDatabase8pageSizeEv
-_returnSingleInt
-__ZN7WebCore6String6numberEx
-__ZN7WebCore18DatabaseAuthorizer16allowTransactionEv
-__ZN7WebCore8Database27scheduleTransactionCallbackEPNS_14SQLTransactionE
-__ZN7WebCore8Database17globalCallbackSetEv
-__ZN7WebCore23DatabaseTransactionTaskD1Ev
-__ZN7WebCore8Database26deliverAllPendingCallbacksEPv
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore8DatabaseEEELm0EE6resizeEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore8DatabaseEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore8DatabaseEEELm0EE15reserveCapacityEm
-__ZN7WebCore8Database22deliverPendingCallbackEv
-__ZN7WebCore14SQLTransaction22performPendingCallbackEv
-__ZN7WebCore14SQLTransaction26deliverTransactionCallbackEv
-__ZN7WebCore30JSCustomSQLTransactionCallback11handleEventEPNS_14SQLTransactionERb
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_14SQLTransactionE
-__ZN7WebCore25JSSQLTransactionPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSSQLTransactionC1EPN3KJS8JSObjectEPNS_14SQLTransactionE
-__ZN7WebCore25JSSQLTransactionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore43jsSQLTransactionPrototypeFunctionExecuteSqlEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore16JSSQLTransaction9classInfoEv
-__ZN7WebCore16JSSQLTransaction10executeSqlEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore14SQLTransaction10executeSQLERKNS_6StringERKN3WTF6VectorINS_8SQLValueELm0EEENS4_10PassRefPtrINS_20SQLStatementCallbackEEENSA_INS_25SQLStatementErrorCallbackEEERi
-__ZN7WebCore12SQLStatementC1ERKNS_6StringERKN3WTF6VectorINS_8SQLValueELm0EEENS4_10PassRefPtrINS_20SQLStatementCallbackEEENSA_INS_25SQLStatementErrorCallbackEEE
-__ZN3WTF6VectorIN7WebCore8SQLValueELm0EEC1ERKS3_
-__ZNK7WebCore8Database22versionMatchesExpectedEv
-__ZN7WebCore14SQLTransaction16enqueueStatementEN3WTF10PassRefPtrINS_12SQLStatementEEE
-__ZN3WTF6VectorIN7WebCore8SQLValueELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore8SQLValueELm0EE15reserveCapacityEm
-__ZN7WebCore8SQLValueC1ERKS0_
-__ZN3WTF6VectorIN7WebCore8SQLValueELm0EE6shrinkEm
-__ZN7WebCore28JSCustomSQLStatementCallbackC1EPN3KJS8JSObjectEPNS_5FrameE
-__ZN7WebCore33JSCustomSQLStatementErrorCallbackC1EPN3KJS8JSObjectEPNS_5FrameE
-__ZN7WebCore14SQLTransaction23scheduleToRunStatementsEv
-__ZN7WebCore8Database23scheduleTransactionStepEv
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore8DatabaseEEELm0EE6shrinkEm
-__ZN7WebCore14SQLTransaction13runStatementsEv
-__ZN7WebCore14SQLTransaction16getNextStatementEv
-__ZN7WebCore14SQLTransaction19runCurrentStatementEv
-__ZN7WebCore12SQLStatement7executeEPNS_8DatabaseE
-__ZN7WebCore12SQLStatement22clearFailureDueToQuotaEv
-__ZNK7WebCore12SQLStatement29lastExecutionFailedDueToQuotaEv
-_sqlite3ErrorMsg
-__ZN7WebCore14SQLiteDatabase12lastErrorMsgEv
-_sqlite3_errmsg
-__ZN7WebCore14SQLTransaction27handleCurrentStatementErrorEv
-__ZN7WebCore14SQLTransaction22handleTransactionErrorEb
-__ZN7WebCore14SQLTransaction36cleanupAfterTransactionErrorCallbackEv
-__ZN7WebCore17SQLiteTransaction8rollbackEv
-_sqlite3RollbackTransaction
-_sqlite3RollbackAll
-__ZN7WebCore28JSCustomSQLStatementCallbackD1Ev
-__ZN7WebCore33JSCustomSQLStatementErrorCallbackD1Ev
-__ZN7WebCore30JSCustomSQLTransactionCallbackD1Ev
-__ZN7WebCore30JSCustomSQLTransactionCallback10deleteDataEPv
-__ZN7WebCore10JSDatabaseD0Ev
-__ZN7WebCore16JSSQLTransactionD0Ev
-__ZN7WebCore14DatabaseThread17documentGoingAwayEv
-__ZN7WebCore8Database23databaseThreadGoingAwayEv
-__ZN7WebCore8DatabaseD1Ev
-__ZN7WebCore15DatabaseTracker18removeOpenDatabaseEPNS_8DatabaseE
-_sqlite3_close
-__ZN7WebCore18DatabaseAuthorizerD1Ev
-__ZN7WebCore12detachThreadEj
-__ZN7WebCore26pthreadHandleForIdentifierEj
-__ZN7WebCore31clearPthreadHandleForIdentifierEj
-__ZN3WTF9HashTableIjSt4pairIjiENS_18PairFirstExtractorIS2_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsIjEENS8_IiEEEES9_E4findIjNS_22IdentityHashTranslatorIjS2_S6_EEEENS_17HashTableIteratorIjS2_S4_S6_SB_S9_EERKT_
-__ZN7WebCore14DatabaseThreadD1Ev
-__ZN7WebCore23JSNodeFilterConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore23JSNodeFilterConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore23JSNodeFilterConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore45jsDocumentPrototypeFunctionCreateNodeIteratorEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12toNodeFilterEPN3KJS7JSValueE
-__ZN7WebCore8Document18createNodeIteratorEPNS_4NodeEjN3WTF10PassRefPtrINS_10NodeFilterEEEbRi
-__ZN7WebCore12NodeIteratorC1EN3WTF10PassRefPtrINS_4NodeEEEjNS2_INS_10NodeFilterEEEb
-__ZN7WebCore9TraversalC2EN3WTF10PassRefPtrINS_4NodeEEEjNS2_INS_10NodeFilterEEEb
-__ZN7WebCore12NodeIterator11NodePointerC1EN3WTF10PassRefPtrINS_4NodeEEEb
-__ZN7WebCore12NodeIterator11NodePointerC1Ev
-__ZN7WebCore8Document18attachNodeIteratorEPNS_12NodeIteratorE
-__ZN3WTF7HashSetIPN7WebCore12NodeIteratorENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_12NodeIteratorE
-__ZN7WebCore23JSNodeIteratorPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore14JSNodeIteratorC1EPN3KJS8JSObjectEPNS_12NodeIteratorE
-__ZN7WebCore14JSNodeIterator18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore23JSNodeIteratorPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore39jsNodeIteratorPrototypeFunctionNextNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore14JSNodeIterator9classInfoEv
-__ZN7WebCore14JSNodeIterator8nextNodeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore12NodeIterator8nextNodeERiRPN3KJS7JSValueE
-__ZN7WebCore12NodeIterator11NodePointer10moveToNextEPNS_4NodeE
-__ZNK7WebCore9Traversal10acceptNodeEPNS_4NodeERPN3KJS7JSValueE
-__ZN7WebCore12NodeIterator11NodePointer5clearEv
-__ZN7WebCore43jsNodeIteratorPrototypeFunctionPreviousNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore14JSNodeIterator12previousNodeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore12NodeIterator12previousNodeERiRPN3KJS7JSValueE
-__ZN7WebCore12NodeIterator11NodePointer14moveToPreviousEPNS_4NodeE
-__ZN7WebCore43jsDocumentPrototypeFunctionCreateTreeWalkerEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document16createTreeWalkerEPNS_4NodeEjN3WTF10PassRefPtrINS_10NodeFilterEEEbRi
-__ZN7WebCore10TreeWalkerC1EN3WTF10PassRefPtrINS_4NodeEEEjNS2_INS_10NodeFilterEEEb
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_10TreeWalkerE
-__ZN7WebCore21JSTreeWalkerPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore12JSTreeWalkerC1EPN3KJS8JSObjectEPNS_10TreeWalkerE
-__ZN7WebCore12JSTreeWalker18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore21JSTreeWalkerPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore37jsTreeWalkerPrototypeFunctionNextNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore12JSTreeWalker9classInfoEv
-__ZN7WebCore12JSTreeWalker8nextNodeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore10TreeWalker8nextNodeERPN3KJS7JSValueE
-__ZN7WebCore41jsTreeWalkerPrototypeFunctionPreviousNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12JSTreeWalker12previousNodeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore10TreeWalker12previousNodeERPN3KJS7JSValueE
-__ZN7WebCore32jsTextPrototypeFunctionSplitTextEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore21JSNodeFilterConditionC1EPN3KJS8JSObjectE
-__ZN7WebCore39jsTreeWalkerPrototypeFunctionFirstChildEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12JSTreeWalker10firstChildEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore10TreeWalker10firstChildERPN3KJS7JSValueE
-__ZNK7WebCore10NodeFilter10acceptNodeEPNS_4NodeERPN3KJS7JSValueE
-__ZNK7WebCore21JSNodeFilterCondition10acceptNodeEPNS_4NodeERPN3KJS7JSValueE
-__ZN7WebCore12JSTreeWalker3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore12JSTreeWalker16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore10TreeWalker14setCurrentNodeEN3WTF10PassRefPtrINS_4NodeEEERi
-__ZN3KJS17staticValueGetterIN7WebCore12JSTreeWalkerEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore12JSTreeWalker16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore40jsTreeWalkerPrototypeFunctionNextSiblingEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12JSTreeWalker11nextSiblingEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore10TreeWalker11nextSiblingERPN3KJS7JSValueE
-__ZN7WebCore44jsTreeWalkerPrototypeFunctionPreviousSiblingEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12JSTreeWalker15previousSiblingEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore10TreeWalker15previousSiblingERPN3KJS7JSValueE
-__ZN7WebCore39jsTreeWalkerPrototypeFunctionParentNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12JSTreeWalker10parentNodeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore10TreeWalker10parentNodeERPN3KJS7JSValueE
-__ZN7WebCore13takeExceptionEPN3KJS9ExecStateE
-__ZN7WebCore12NodeIterator23notifyBeforeNodeRemovalEPNS_4NodeE
-__ZNK7WebCore12NodeIterator20updateForNodeRemovalEPNS_4NodeERNS0_11NodePointerE
-__ZN7WebCore38jsTreeWalkerPrototypeFunctionLastChildEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12JSTreeWalker9lastChildEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore10TreeWalker9lastChildERPN3KJS7JSValueE
-__ZN3KJS17staticValueGetterIN7WebCore14JSNodeIteratorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore14JSNodeIterator16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore14JSNodeIterator4markEv
-__ZN7WebCore21JSNodeFilterCondition4markEv
-__ZN7WebCore12JSTreeWalker4markEv
-__ZN7WebCore12JSTreeWalkerD0Ev
-__ZN7WebCore10TreeWalkerD1Ev
-__ZN7WebCore21JSNodeFilterConditionD1Ev
-__ZN7WebCore14JSNodeIteratorD0Ev
-__ZN7WebCore8Document18detachNodeIteratorEPNS_12NodeIteratorE
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS1_12IconSnapshotEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSB_IS5_EEEESC_E4findIS3_NS_22IdentityHashTranslatorIS3_S6_S9_EEEENS_17HashTableIteratorIS3_S6_S8_S9_SE_SC_EERKT_
-__ZN7WebCore10toGeorgianEi
-__ZN7WebCore11SVGDocumentC1EPNS_17DOMImplementationEPNS_5FrameE
-__ZN7WebCore9SVGLength20PercentageOfViewportEfPKNS_16SVGStyledElementENS_13SVGLengthModeE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HTMLElementEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HTMLElementEEELm0EE15reserveCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HTMLElementEEELm0EE6shrinkEm
+-[DOMRange text]
+__ZN7WebCore23SetNodeAttributeCommand9doUnapplyEv
+__ZN7WebCore8SVGImageC1EPNS_13ImageObserverE
+__ZN7WebCore8SVGImageC2EPNS_13ImageObserverE
+__ZN7WebCore8SVGImage11dataChangedEb
+__ZN7WebCore22EmptyFrameLoaderClient20createDocumentLoaderERKNS_15ResourceRequestERKNS_14SubstituteDataE
+__ZN7WebCore14DocumentLoaderC1ERKNS_15ResourceRequestERKNS_14SubstituteDataE
+__ZN7WebCore22EmptyFrameLoaderClient22provisionalLoadStartedEv
+__ZN7WebCore22EmptyFrameLoaderClient25setMainFrameDocumentReadyEb
+__ZN7WebCore22EmptyFrameLoaderClient17setCopiesOnScrollEv
+__ZN7WebCore22EmptyFrameLoaderClient31prepareForDataSourceReplacementEv
+__ZN7WebCore22EmptyFrameLoaderClient31transitionToCommittedForNewPageEv
+__ZN7WebCore17EmptyEditorClient23clearUndoRedoOperationsEv
+__ZN7WebCore22EmptyFrameLoaderClient15finishedLoadingEPNS_14DocumentLoaderE
+__ZNK7WebCore17FrameLoaderClient23shouldUsePluginDocumentERKNS_6StringE
+__ZNK7WebCore22EmptyFrameLoaderClient17overrideMediaTypeEv
+__ZN7WebCore17EmptyChromeClient22createHTMLParserQuirksEv
+__ZNK7WebCore17EmptyChromeClient19contentsSizeChangedEPNS_5FrameERKNS_7IntSizeE
+__ZN7WebCore22EmptyFrameLoaderClient24documentElementAvailableEv
+__ZN7WebCore22EmptyFrameLoaderClient18frameLoadCompletedEv
+__ZN7WebCore22EmptyFrameLoaderClient21forceLayoutForNonHTMLEv
+__ZN7WebCore22EmptyFrameLoaderClient9userAgentERKNS_4KURLE
+__ZN7WebCore22EmptyFrameLoaderClient17cancelPolicyCheckEv
+__ZN7WebCore16NavigationActionC1ERKNS_4KURLENS_14NavigationTypeE
+__ZN7WebCore16NavigationActionC2ERKNS_4KURLENS_14NavigationTypeE
+__ZN7WebCore17EmptyChromeClient30canRunBeforeUnloadConfirmPanelEv
+__ZN7WebCore22EmptyFrameLoaderClient27willChangeEstimatedProgressEv
+__ZN7WebCore22EmptyFrameLoaderClient31postProgressStartedNotificationEv
+__ZN7WebCore22EmptyFrameLoaderClient26didChangeEstimatedProgressEv
+__ZN7WebCore22EmptyFrameLoaderClient31dispatchDidStartProvisionalLoadEv
+__ZN7WebCore22EmptyFrameLoaderClient32assignIdentifierToInitialRequestEmPNS_14DocumentLoaderERKNS_15ResourceRequestE
+__ZN7WebCore22EmptyFrameLoaderClient23dispatchWillSendRequestEPNS_14DocumentLoaderEmRNS_15ResourceRequestERKNS_16ResourceRespon
+__ZN7WebCore22EmptyFrameLoaderClient31dispatchDecidePolicyForMIMETypeEMNS_11FrameLoaderEFvNS_12PolicyActionEERKNS_6StringERKNS_
+__ZN7WebCore11FrameLoader24cancelContentPolicyCheckEv
+__ZN7WebCore22EmptyFrameLoaderClient17dispatchWillCloseEv
+__ZN7WebCore22EmptyFrameLoaderClient18makeRepresentationEPNS_14DocumentLoaderE
+__ZN7WebCore14DocumentLoaderD0Ev
+__ZNK7WebCore17FrameLoaderClient11hasHTMLViewEv
+__ZN7WebCore17EmptyChromeClient16setStatusbarTextERKNS_6StringE
+__ZN7WebCore11FrameLoader19setResponseMIMETypeERKNS_6StringE
+__ZN7WebCore9SVGLength20PercentageOfViewportEfPKNS_10SVGElementENS_13SVGLengthModeE
__ZNK7WebCore10SVGElement15viewportElementEv
+__ZN7WebCoreL21updateCSSForAttributeEPNS_13SVGSVGElementERKNS_13QualifiedNameE13CSSPropertyIDRKNS_9SVGLengthE
+__ZNK7WebCore9SVGLength13valueAsStringEv
__ZN7WebCore15SVGFitToViewBox12parseViewBoxERPKtS2_RfS4_S4_S4_b
-__ZThn108_NK7WebCore13SVGSVGElement14contextElementEv
+__ZThn344_NK7WebCore13SVGSVGElement14contextElementEv
__ZNK7WebCore13SVGSVGElement14contextElementEv
-__ZN7WebCore15SVGFitToViewBox19setViewBoxBaseValueENS_9FloatRectE
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapINS_9FloatRectEEEPN3WTF7HashMapIPKNS_10SVGElementEPNS4_IPNS_10StringImplET_NS_10StringHashENS3_10HashTraitsIS9_EENSC_ISA_EEEENS3_7PtrHashIS7_EENSC_IS7_EENSC_ISG_EEEEvE14s_baseValueMap
-__ZN7WebCore15SVGFitToViewBox10setViewBoxENS_9FloatRectE
-__ZN7WebCore16titleConstructorEPNS_8DocumentEb
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplENS1_9FloatRectENS1_10StringHashENS_10HashTraitsIS6_EENS9_IS7_
+__ZNK3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS_7HashSetIPNS1_16SVGStyledElementENS_7PtrHashIS6_EENS_10HashTraitsIS6_EEEEEN
+__ZN7WebCoreL16titleConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
__ZN7WebCore15SVGTitleElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15SVGTitleElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore15SVGTitleElement20insertedIntoDocumentEv
__ZNK7WebCore10SVGElement7isValidEv
__ZN7WebCore15SVGTitleElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore15SVGTitleElement15childrenChangedEb
-__ZN7WebCore15descConstructorEPNS_8DocumentEb
+__ZN7WebCore15SVGTitleElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore22EmptyFrameLoaderClient15willChangeTitleEPNS_14DocumentLoaderE
+__ZN7WebCore22EmptyFrameLoaderClient14didChangeTitleEPNS_14DocumentLoaderE
+__ZN7WebCoreL15descConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
__ZN7WebCore14SVGDescElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14SVGDescElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore14SVGDescElement16rendererIsNeededEPNS_11RenderStyleE
-__ZNK7WebCore13StyleFillDataeqERKS0_
+__ZN7WebCoreL12gConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore11SVGGElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore11SVGGElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore11SVGGElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZNK7WebCore11SVGGElement7isValidEv
+__ZN7WebCore11SVGGElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore31RenderSVGTransformableContainerC1EPNS_29SVGStyledTransformableElementE
+__ZN7WebCore31RenderSVGTransformableContainerC2EPNS_29SVGStyledTransformableElementE
+__ZN7WebCore18RenderSVGContainerC2EPNS_16SVGStyledElementE
+__ZNK7WebCore18RenderSVGContainer15virtualChildrenEv
+__ZN7WebCore11SVGGElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore12SVGLangSpace11setXmlspaceERKNS_12AtomicStringE
+__ZN7WebCore15StyleStrokeDataC1ERKS0_
+__ZN7WebCore15StyleStrokeDataC2ERKS0_
+__ZN7WebCore18RenderSVGContainer15virtualChildrenEv
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplEPNS1_16SVGTransformListENS1_10StringHashENS_10HashTraitsIS6_E
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_12SVGTransformEEEEELm0EE14shrinkCapacityEm
+__ZN7WebCore16SVGTransformable23parseTransformAttributeEPNS_16SVGTransformListERKNS_12AtomicStringE
+__ZN7WebCore16SVGTransformable23parseTransformAttributeEPNS_16SVGTransformListERPKtS4_
+__ZN7WebCore16SVGTransformable19parseTransformValueEjRPKtS2_RNS_12SVGTransformE
+__ZN7WebCore12SVGTransform12setTranslateEff
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_12SVGTransformEEEEELm0EE14expandCapacityEmPKS6_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_12SVGTransformEEEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_12SVGTransformEEEEELm0EE15reserveCapacityEm
+__ZNK7WebCore15StyleStrokeDataeqERKS0_
__ZN7WebCore14SVGRenderStyle11inheritFromEPKS0_
-__ZN7WebCore15lineConstructorEPNS_8DocumentEb
+__ZN7WebCore21SVGTextContentElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCoreL15lineConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
__ZN7WebCore14SVGLineElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore14SVGLineElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore14SVGLineElement14setX1BaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGLineElement5setX1ENS_9SVGLengthE
__ZN7WebCore14SVGLineElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore14SVGLineElement14setY1BaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGLineElement5setY1ENS_9SVGLengthE
-__ZN7WebCore14SVGLineElement14setX2BaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGLineElement5setX2ENS_9SVGLengthE
-__ZN7WebCore14SVGLineElement14setY2BaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGLineElement5setY2ENS_9SVGLengthE
__ZNK7WebCore14SVGLineElement7isValidEv
-__ZNK7WebCore15StyleStrokeDataeqERKS0_
-__ZNK7WebCore29SVGStyledTransformableElement18transformBaseValueEv
-__ZN7WebCore12SVGTransform12setTranslateEff
-__ZN7WebCore29SVGStyledTransformableElement21setTransformBaseValueEPNS_16SVGTransformListE
-__ZN7WebCore29SVGStyledTransformableElement12setTransformEPNS_16SVGTransformListE
-__ZN7WebCore21SVGTextContentElement22setTextLengthBaseValueENS_9SVGLengthE
-__ZN7WebCore21SVGTextContentElement13setTextLengthENS_9SVGLengthE
-__ZN7WebCore21SVGTextContentElement24setLengthAdjustBaseValueEi
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapIiEEPN3WTF7HashMapIPKNS_10SVGElementEPNS3_IPNS_10StringImplET_NS_10StringHashENS2_10HashTraitsIS8_EENSB_IS9_EEEENS2_7PtrHashIS6_EENSB_IS6_EENSB_ISF_EEEEvE14s_baseValueMap
-__ZN7WebCore21SVGTextContentElement15setLengthAdjustEi
-__ZNK7WebCore13SVGSVGElement19preserveAspectRatioEv
-__ZNK7WebCore15SVGFitToViewBox19preserveAspectRatioEv
+__ZN7WebCore7DataRefINS_15StyleStrokeDataEE6accessEv
+__ZN7WebCoreL18animateConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore17SVGAnimateElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17SVGAnimateElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19SVGAnimationElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14SVGSMILElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19SVGAnimationElement16attributeChangedEPNS_9AttributeEb
+__ZN7WebCore14SVGSMILElement16attributeChangedEPNS_9AttributeEb
+__ZN7WebCore19SVGAnimationElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore14SVGSMILElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore10SVGElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZN7WebCoreL13parseKeyTimesERKNS_6StringERN3WTF6VectorIfLm0EEEb
+__ZN7WebCore14SVGSMILElement15parseBeginOrEndERKNS_6StringENS0_10BeginOrEndE
+__ZN7WebCore14SVGSMILElement15parseClockValueERKNS_6StringE
+__ZN7WebCore14SVGSMILElement16parseOffsetValueERKNS_6StringE
+__ZNK3WTF9HashTableIddNS_17IdentityExtractorIdEENS_9FloatHashIdEENS_10HashTraitsIdEES6_E8containsIdNS_22IdentityHashTranslatorI
+__ZN3WTF6VectorIN7WebCore8SMILTimeELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore8SMILTimeELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore8SMILTimeELm0EE15reserveCapacityEm
+__ZN7WebCoreL12sortTimeListERN3WTF6VectorINS_8SMILTimeELm0EEE
+__ZSt16__introsort_loopIPN7WebCore8SMILTimeElEvT_S3_T0_
+__ZSt22__final_insertion_sortIPN7WebCore8SMILTimeEEvT_S3_
+__ZSt16__insertion_sortIPN7WebCore8SMILTimeEEvT_S3_
+__ZN3WTF9HashTableIddNS_17IdentityExtractorIdEENS_9FloatHashIdEENS_10HashTraitsIdEES6_E15deallocateTableEPdi
+__ZN7WebCore14SVGSMILElement20insertedIntoDocumentEv
+__ZNK7WebCore10SVGElement15ownerSVGElementEv
+__ZN7WebCore14SVGSMILElement10rescheduleEv
+__ZN7WebCore17SMILTimeContainer8scheduleEPNS_14SVGSMILElementE
+__ZNK7WebCore14SVGSMILElement16nextProgressTimeEv
+__ZN3WTF7HashSetIPN7WebCore14SVGSMILElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore14SVGSMILElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandE
+__ZN3WTF9HashTableIPN7WebCore14SVGSMILElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashE
+__ZN3WTF9HashTableIPN7WebCore14SVGSMILElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13alloca
+__ZN7WebCore14SVGSMILElement21finishParsingChildrenEv
+__ZN7WebCore14SVGSMILElement20resolveFirstIntervalEv
+__ZNK7WebCore14SVGSMILElement15resolveIntervalEbRNS_8SMILTimeES2_
+__ZNK7WebCore14SVGSMILElement16findInstanceTimeENS0_10BeginOrEndENS_8SMILTimeEb
+__ZNK7WebCore14SVGSMILElement16resolveActiveEndENS_8SMILTimeES1_
+__ZNK7WebCore14SVGSMILElement3durEv
+__ZNK7WebCore14SVGSMILElement17repeatingDurationEv
+__ZNK7WebCore14SVGSMILElement11repeatCountEv
+__ZNK7WebCore14SVGSMILElement9repeatDurEv
+__ZNK7WebCore14SVGSMILElement14simpleDurationEv
+__ZNK7WebCore14SVGSMILElement8minValueEv
+__ZNK7WebCore14SVGSMILElement8maxValueEv
+__ZN7WebCoreplERKNS_8SMILTimeES2_
+__ZN7WebCore14SVGSMILElement31notifyDependentsIntervalChangedENS0_21NewOrExistingIntervalE
+__ZNK3WTF9HashTableIPN7WebCore14SVGSMILElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E8contai
+__ZN3WTF9HashTableIPN7WebCore14SVGSMILElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3
+__ZN3WTF9HashTableIPN7WebCore14SVGSMILElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47remove
+__ZN3WTF9HashTableIPN7WebCore14SVGSMILElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeE
+__ZN7WebCore22EmptyFrameLoaderClient29dispatchDidFinishDocumentLoadEv
+__ZN7WebCore22EmptyFrameLoaderClient29dispatchDidHandleOnloadEventsEv
+__ZN7WebCore10ScrollView16updateScrollbarsERKNS_7IntSizeE
+__ZN7WebCore10ScrollView34platformHandleHorizontalAdjustmentERKNS_7IntSizeE
+__ZN7WebCore10ScrollView32platformHandleVerticalAdjustmentERKNS_7IntSizeE
+__ZN7WebCore18RenderSVGContainer6layoutEv
+__ZN7WebCore18RenderSVGContainer12calcViewportEv
+__ZNK7WebCore18RenderSVGContainer13selfWillPaintEv
+__ZN7WebCore31RenderSVGTransformableContainer23calculateLocalTransformEv
+__ZN7WebCore12SVGTransformC1ERKNS_20TransformationMatrixE
+__ZN7WebCore12SVGTransformC2ERKNS_20TransformationMatrixE
+__ZNK7WebCore14SVGLineElement10toPathDataEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGLineElementENS_9SVGLengthEXadL_ZNS_8SVGNames13lineTagStringEEEXadL_ZNS3_12y2AttrStri
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGLineElementENS_9SVGLengthEXadL_ZNS_8SVGNames13lineTagStringEEEXadL_ZNS3_12y1AttrStri
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGLineElementENS_9SVGLengthEXadL_ZNS_8SVGNames13lineTagStringEEEXadL_ZNS3_12x1AttrStri
+__ZN7WebCore4Path10createLineERKNS_10FloatPointES3_
__ZN7WebCore22SVGPreserveAspectRatio6getCTMEdddddddd
__ZNK7WebCore22SVGPreserveAspectRatio5alignEv
+__ZN7WebCore22EmptyFrameLoaderClient22dispatchDidFirstLayoutEv
+__ZN7WebCore22EmptyFrameLoaderClient38dispatchDidFirstVisuallyNonEmptyLayoutEv
+__ZN3WTF6VectorIPN7WebCore14SVGSMILElementELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore14SVGSMILElementELm0EE15reserveCapacityEm
+__ZN7WebCore17SMILTimeContainer26updateDocumentOrderIndexesEv
+__ZN7WebCore14SVGSMILElement13isSMILElementEPNS_4NodeE
+__ZSt16__introsort_loopIPPN7WebCore14SVGSMILElementElNS0_15PriorityCompareEEvT_S5_T0_T1_
+__ZSt22__final_insertion_sortIPPN7WebCore14SVGSMILElementENS0_15PriorityCompareEEvT_S5_T0_
+__ZSt16__insertion_sortIPPN7WebCore14SVGSMILElementENS0_15PriorityCompareEEvT_S5_T0_
+__ZNK7WebCore14SVGSMILElement13targetElementEv
+__ZNK7WebCore14SVGSMILElement9xlinkHrefEv
+__ZNK7WebCore14SVGSMILElement13attributeNameEv
+__ZNK3WTF7HashMapISt4pairIPN7WebCore10SVGElementENS2_6StringEEPNS2_14SVGSMILElementENS_8PairHashIS4_S5_EENS_10HashTraitsIS6_EEN
+__ZN7WebCore17SMILTimeContainer12baseValueForESt4pairIPNS_10SVGElementENS_6StringEE
+__ZN7WebCore19SVGAnimationElement14attributeIsCSSERKNS_6StringE
+__ZN3WTF7HashMapISt4pairIPN7WebCore10SVGElementENS2_6StringEES5_NS_8PairHashIS4_S5_EENS_10HashTraitsIS6_EENS9_IS5_EEE3addERKS6_
+__ZN3WTF9HashTableISt4pairIPN7WebCore10SVGElementENS2_6StringEES1_IS6_S5_ENS_18PairFirstExtractorIS7_EENS_8PairHashIS4_S5_EENS_
+__ZN7WebCore17SVGAnimateElement16resetToBaseValueERKNS_6StringE
+__ZNK7WebCore17SVGAnimateElement21determinePropertyTypeERKNS_6StringE
+__ZN7WebCoreL23parseNumberValueAndUnitERKNS_6StringERdRS0_
+__ZN3WTF7HashMapISt4pairIPN7WebCore10SVGElementENS2_6StringEEPNS2_14SVGSMILElementENS_8PairHashIS4_S5_EENS_10HashTraitsIS6_EENS
+__ZN3WTF9HashTableISt4pairIPN7WebCore10SVGElementENS2_6StringEES1_IS6_PNS2_14SVGSMILElementEENS_18PairFirstExtractorIS9_EENS_8P
+__ZN7WebCore14SVGSMILElement8progressENS_8SMILTimeEPS0_
+__ZN7WebCore14SVGSMILElement17connectConditionsEv
+__ZN7WebCore19SVGAnimationElement21startedActiveIntervalEv
+__ZNK7WebCore19SVGAnimationElement14hasValidTargetEv
+__ZNK7WebCore19SVGAnimationElement13animationModeEv
+__ZNK7WebCore19SVGAnimationElement13animationPathEv
+__ZNK7WebCore19SVGAnimationElement8calcModeEv
+__ZNK7WebCore14SVGSMILElement34calculateAnimationPercentAndRepeatENS_8SMILTimeERj
+__ZN7WebCoremiERKNS_8SMILTimeES2_
+__ZN7WebCore14SVGSMILElement12checkRestartENS_8SMILTimeE
+__ZNK7WebCore14SVGSMILElement7restartEv
+__ZNK7WebCore14SVGSMILElement20determineActiveStateENS_8SMILTimeE
+__ZNK7WebCore14SVGSMILElement14isContributingENS_8SMILTimeE
+__ZNK7WebCore14SVGSMILElement4fillEv
+__ZN7WebCore19SVGAnimationElement15updateAnimationEfjPNS_14SVGSMILElementE
+__ZNK7WebCore19SVGAnimationElement31currentValuesForValuesAnimationEfRfRNS_6StringES3_
+__ZN7WebCore17SVGAnimateElement24calculateFromAndToValuesERKNS_6StringES3_
+__ZN7WebCore17SVGAnimateElement22calculateAnimatedValueEfjPNS_14SVGSMILElementE
+__ZNK7WebCore19SVGAnimationElement13isAccumulatedEv
+__ZNK7WebCore19SVGAnimationElement10isAdditiveEv
+__ZNK7WebCore14SVGSMILElement25calculateNextProgressTimeENS_8SMILTimeE
+__ZN3WTF6VectorIPN7WebCore14SVGSMILElementELm0EE14expandCapacityEmPKS3_
+__ZSt16__introsort_loopIPPN7WebCore14SVGSMILElementElPFbS2_S2_EEvT_S6_T0_T1_
+__ZSt22__final_insertion_sortIPPN7WebCore14SVGSMILElementEPFbS2_S2_EEvT_S6_T0_
+__ZSt16__insertion_sortIPPN7WebCore14SVGSMILElementEPFbS2_S2_EEvT_S6_T0_
+__ZN7WebCore17SVGAnimateElement20applyResultsToTargetEv
+__ZN7WebCore19SVGAnimationElement31setTargetAttributeAnimatedValueERKNS_6StringE
+__ZN7WebCore16SVGStyledElement25setInstanceUpdatesBlockedEb
+__ZN3WTF7HashSetIPKN7WebCore16SVGStyledElementENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN3WTF9HashTableIPKN7WebCore16SVGStyledElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6expa
+__ZN3WTF9HashTableIPKN7WebCore16SVGStyledElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6reha
+__ZN3WTF9HashTableIPKN7WebCore16SVGStyledElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E13all
+__ZN3WTF9HashTableIPKN7WebCore16SVGStyledElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E15dea
+__ZNK7WebCore19SVGAnimationElement20targetAttributeIsCSSEv
+__ZNK7WebCore19SVGAnimationElement13attributeTypeEv
+__ZN3WTF9HashTableIPKN7WebCore16SVGStyledElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E4find
+__ZN3WTF9HashTableIPKN7WebCore16SVGStyledElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E47rem
+__ZN3WTF9HashTableIPKN7WebCore16SVGStyledElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6remo
+__ZNK7WebCore17SMILTimeContainer7elapsedEv
+__ZN3WTF6VectorIPN7WebCore14SVGSMILElementELm0EE6shrinkEm
+__ZNK7WebCore8SVGImage4sizeEv
+__ZNK7WebCore11SVGDocument11rootElementEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_13SVGSVGElementENS_9SVGLengthEXadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_15widthAttrStr
+__ZNK7WebCore19SVGAnimatedPropertyINS_13SVGSVGElementENS_9SVGLengthEXadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_16heightAttrSt
+__ZNK7WebCore9SVGLength8unitTypeEv
+__ZNK7WebCore13SVGSVGElement18relativeWidthValueEv
+__ZNK7WebCore9SVGLength17valueAsPercentageEv
+__ZNK7WebCore9SVGLength21valueInSpecifiedUnitsEv
+__ZNK7WebCore13SVGSVGElement19relativeHeightValueEv
+__ZN7WebCore8SVGImage16setContainerSizeERKNS_7IntSizeE
+__ZNK7WebCore8SVGImage16hasRelativeWidthEv
+__ZNK7WebCore8SVGImage17hasRelativeHeightEv
+__ZN7WebCore8SVGImage4drawEPNS_15GraphicsContextERKNS_9FloatRectES5_NS_17CompositeOperatorE
+__ZN7WebCore9FrameView15contentsResizedEv
+__ZN7WebCore10ScrollView17frameRectsChangedEv
+__ZNK7WebCore13SVGSVGElement17hasRelativeValuesEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_13SVGSVGElementENS_9SVGLengthEXadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_11xAttrStringE
__ZNK7WebCore22SVGPreserveAspectRatio11meetOrSliceEv
-__ZNK7WebCore14SVGLineElement10toPathDataEv
-__ZNK7WebCore14SVGLineElement2y2Ev
-__ZNK7WebCore14SVGLineElement2x2Ev
-__ZNK7WebCore14SVGLineElement2y1Ev
-__ZNK7WebCore14SVGLineElement2x1Ev
-__ZN7WebCore4Path10createLineERKNS_10FloatPointES3_
-__ZN7WebCore27cummulatedHeightOfTextChunkERNS_12SVGTextChunkE
-__ZN7WebCore41cummulatedHeightOfInlineBoxCharacterRangeERNS_26SVGInlineBoxCharacterRangeE
-__ZNK7WebCore11SVGDocument13isSVGDocumentEv
-__ZN7WebCore21SVGPathSegListBuilder12svgClosePathEv
-__ZN7WebCore14SVGPathElement25createSVGPathSegClosePathEv
-__ZN7WebCore19SVGPathSegClosePathC1Ev
-__ZN7WebCore10SVGElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZNK7WebCore19SVGPathSegClosePath11pathSegTypeEv
-__ZN7WebCore15fontConstructorEPNS_8DocumentEb
-__ZN7WebCore14SVGFontElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore14SVGFontElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore20font_faceConstructorEPNS_8DocumentEb
-__ZN7WebCore18SVGFontFaceElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore8Document18mappedElementSheetEv
-__ZN7WebCore18SVGFontFaceElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore32cssPropertyIdForSVGAttributeNameERKNS_13QualifiedNameE
-__ZN7WebCore18SVGFontFaceElement15rebuildFontFaceEv
-__ZN7WebCore18SVGFontFaceElement20insertedIntoDocumentEv
-__ZNK7WebCore18SVGFontFaceElement10fontFamilyEv
-__ZN7WebCore16glyphConstructorEPNS_8DocumentEb
-__ZN7WebCore15SVGGlyphElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore15SVGGlyphElement20insertedIntoDocumentEv
-__ZN7WebCore14SVGFontElement15addGlyphToCacheEPNS_15SVGGlyphElementE
-__ZNK7WebCore15SVGGlyphElement20buildGlyphIdentifierEv
-__ZN7WebCore15SVGGlyphElement27buildGenericGlyphIdentifierEPKNS_10SVGElementE
-__ZN7WebCore15pathFromSVGDataERNS_4PathERKNS_6StringE
-__ZN7WebCore11PathBuilder9svgMoveToEddbb
-__ZN7WebCore11PathBuilder9svgLineToEddb
-__ZN7WebCore11PathBuilder12svgClosePathEv
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS_6VectorINS1_18SVGGlyphIdentifierELm0EEEENS_18PairFirstExtractorIS8_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSD_IS7_EEEESE_E4findIS3_NS_22IdentityHashTranslatorIS3_S8_SB_EEEENS_17HashTableIteratorIS3_S8_SA_SB_SG_SE_EERKT_
-__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EE15reserveCapacityEm
-__ZN3WTF7HashMapIN7WebCore6StringENS_6VectorINS1_18SVGGlyphIdentifierELm0EEENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3addERKS2_RKS5_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS_6VectorINS1_18SVGGlyphIdentifierELm0EEEENS_18PairFirstExtractorIS8_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSD_IS7_EEEESE_E3addINS1_6StringES7_NS_17HashMapTranslatorILb0ES4_ISJ_S7_ENS_18PairBaseHashTraitsINSD_ISJ_EESF_EESG_SB_EEEES4_INS_17HashTableIteratorIS3_S8_SA_SB_SG_SE_EEbERKT_RKT0_
-__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EEC1ERKS3_
-__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS_6VectorINS1_18SVGGlyphIdentifierELm0EEEENS_18PairFirstExtractorIS8_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSD_IS7_EEEESE_E47removeAndInvalidateWithoutEntryConsistencyCheckEPS8_
-__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EEaSERKS3_
-__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EE6shrinkEm
-__ZN3WTF7HashMapIiPN7WebCore14SimpleFontDataENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3setERKiRKS3_
-__ZNK7WebCore17CSSFontFaceSource8isLoadedEv
-__ZN7WebCore11SVGFontDataC1EPNS_18SVGFontFaceElementE
-__ZNK7WebCore18SVGFontFaceElement17horizontalOriginXEv
-__ZNK7WebCore18SVGFontFaceElement17horizontalOriginYEv
-__ZNK7WebCore18SVGFontFaceElement18horizontalAdvanceXEv
-__ZNK7WebCore6String7toFloatEPb
-__ZN7WebCore10StringImpl7toFloatEPb
-__ZNK7WebCore18SVGFontFaceElement15verticalOriginXEv
-__ZNK7WebCore18SVGFontFaceElement15verticalOriginYEv
-__ZNK7WebCore18SVGFontFaceElement6ascentEv
-__ZNK7WebCore18SVGFontFaceElement10unitsPerEmEv
-__ZNK7WebCore18SVGFontFaceElement16verticalAdvanceYEv
-__ZNK7WebCore18SVGFontFaceElement7descentEv
-__ZNK7WebCore18SVGFontFaceElement7xHeightEv
-__ZNK7WebCore4Font22floatWidthUsingSVGFontERKNS_7TextRunE
-__ZN7WebCore33floatWidthOfSubStringUsingSVGFontEPKNS_4FontERKNS_7TextRunEii
-__ZNK7WebCore18SVGFontFaceElement21associatedFontElementEv
-__ZN7WebCore16SVGTextRunWalkerINS_34SVGTextRunWalkerMeasuredLengthDataEE4walkERKNS_7TextRunEbRKNS_6StringEii
-__ZN7WebCore24charactersWithArabicFormERKNS_6StringEb
-__ZNK7WebCore14SVGFontElement25glyphIdentifiersForStringERKNS_6StringE
-__ZNK3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_NS_6VectorINS1_18SVGGlyphIdentifierELm0EEEENS_18PairFirstExtractorIS8_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTraitsIS3_EENSD_IS7_EEEESE_E4findIS3_NS_22IdentityHashTranslatorIS3_S8_SB_EEEENS_22HashTableConstIteratorIS3_S8_SA_SB_SG_SE_EERKT_
-__ZN7WebCore15SVGGlyphElement28inheritUnspecifiedAttributesERNS_18SVGGlyphIdentifierEPKNS_11SVGFontDataE
-__ZN7WebCore30floatWidthUsingSVGFontCallbackERKNS_18SVGGlyphIdentifierERNS_34SVGTextRunWalkerMeasuredLengthDataE
-__ZNK7WebCore14SVGFontElement24firstMissingGlyphElementEv
-__ZN7WebCore30floatWidthMissingGlyphCallbackERKNS_7TextRunERNS_34SVGTextRunWalkerMeasuredLengthDataE
-__ZNK7WebCore4Font12fontSelectorEv
-__ZN7WebCore18ellipseConstructorEPNS_8DocumentEb
-__ZN7WebCore17SVGEllipseElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore17SVGEllipseElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore17SVGEllipseElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore17SVGEllipseElement14setCxBaseValueENS_9SVGLengthE
-__ZN7WebCore17SVGEllipseElement5setCxENS_9SVGLengthE
-__ZN7WebCore17SVGEllipseElement14setCyBaseValueENS_9SVGLengthE
-__ZN7WebCore17SVGEllipseElement5setCyENS_9SVGLengthE
-__ZN7WebCore17SVGEllipseElement14setRxBaseValueENS_9SVGLengthE
-__ZN7WebCore17SVGEllipseElement5setRxENS_9SVGLengthE
-__ZNK7WebCore17SVGEllipseElement2rxEv
-__ZN7WebCore17SVGEllipseElement14setRyBaseValueENS_9SVGLengthE
-__ZN7WebCore17SVGEllipseElement5setRyENS_9SVGLengthE
-__ZNK7WebCore17SVGEllipseElement2ryEv
-__ZNK7WebCore17SVGEllipseElement7isValidEv
-__ZNK7WebCore17SVGEllipseElement10toPathDataEv
-__ZNK7WebCore17SVGEllipseElement2cyEv
-__ZNK7WebCore17SVGEllipseElement2cxEv
-__ZN7WebCore4Path13createEllipseERKNS_10FloatPointEff
-__ZN7WebCore12aConstructorEPNS_8DocumentEb
-__ZN7WebCore11SVGAElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore20SVGImageChromeClient7repaintERKNS_7IntRectEbbb
+__ZThn392_N7WebCore11CachedImage13changedInRectEPKNS_5ImageERKNS_7IntRectE
+__ZN7WebCore11CachedImage13changedInRectEPKNS_5ImageERKNS_7IntRectE
+__ZNK7WebCore18RenderSVGContainer29repaintRectInLocalCoordinatesEv
+__ZN7WebCore30BoundingRectStrokeStyleApplier11strokeStyleEPNS_15GraphicsContextE
+__ZN7WebCore25applyStrokeStyleToContextEPNS_15GraphicsContextEPNS_11RenderStyleEPKNS_12RenderObjectE
+__ZN7WebCore14SVGRenderStyle20cssPrimitiveToLengthEPKNS_12RenderObjectEPNS_8CSSValueEf
+__ZN7WebCore27dashArrayFromRenderingStyleEPKNS_11RenderStyleE
+__ZN7WebCore15GraphicsContext11setLineDashERKN3WTF6VectorIdLm0EEEf
+__ZNK7WebCore31RenderSVGTransformableContainer22localToParentTransformEv
+__ZN7WebCore18RenderSVGContainer5paintERNS_12RenderObject9PaintInfoEii
+__ZNK7WebCore18RenderSVGContainer13drawsContentsEv
+__ZN7WebCore18RenderSVGContainer17applyViewportClipERNS_12RenderObject9PaintInfoE
+__ZNK7WebCore14SVGLineElement15supportsMarkersEv
+__ZNK7WebCore10RenderPath19drawMarkersIfNeededEPNS_15GraphicsContextERKNS_9FloatRectERKNS_4PathE
+__ZN7WebCore13getMarkerByIdEPNS_8DocumentERKNS_12AtomicStringE
+__ZN7WebCore5TimerINS_17SMILTimeContainerEE5firedEv
+__ZN7WebCore17SMILTimeContainer10timerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore14SVGSMILElement19resolveNextIntervalEv
+__ZN7WebCore19SVGAnimationElement19endedActiveIntervalEv
+__ZN7WebCore20RenderSVGModelObject29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
+__ZN7WebCore13SVGRenderBase29clippedOverflowRectForRepaintEPNS_12RenderObjectEPNS_20RenderBoxModelObjectE
+__ZN7WebCore20RenderSVGModelObject21computeRectForRepaintEPNS_20RenderBoxModelObjectERNS_7IntRectEb
+__ZN7WebCore13SVGRenderBase21computeRectForRepaintEPNS_12RenderObjectEPNS_20RenderBoxModelObjectERNS_7IntRectEb
+__ZNK7WebCore20RenderSVGModelObject23outlineBoundsForRepaintEPNS_20RenderBoxModelObjectE
+__ZNK7WebCore20RenderSVGModelObject19mapLocalToContainerEPNS_20RenderBoxModelObjectEbbRNS_14TransformStateE
+__ZN7WebCore13SVGRenderBase19mapLocalToContainerEPKNS_12RenderObjectEPNS_20RenderBoxModelObjectEbbRNS_14TransformStateE
+__ZN7WebCore16CSSStyleSelector11mapFillClipEPNS_9FillLayerEPNS_8CSSValueE
+__ZN7WebCore15GraphicsContext17clipToImageBufferERKNS_9FloatRectEPKNS_11ImageBufferE
+__ZN7WebCore11BitmapImage13getCGImageRefEv
+__ZN7WebCore5Image14resetAnimationEv
+__ZN7WebCore16CSSStyleSelector16mapFillCompositeEPNS_9FillLayerEPNS_8CSSValueE
+__ZN7WebCore9FillLayer7setNextEPS0_
+__ZN7WebCore16CSSStyleSelector13mapFillOriginEPNS_9FillLayerEPNS_8CSSValueE
+__ZN7WebCore9FillLayer15cullEmptyLayersEv
+__ZN7WebCore9FillLayer19fillUnsetPropertiesEv
+__ZN7WebCore13SVGZoomAndPan15parseZoomAndPanERPKtS2_
+__ZN7WebCore13SVGZoomAndPan13setZoomAndPanEt
+__ZN7WebCoreL17scriptConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore16SVGScriptElementC1ERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore16SVGScriptElementC2ERKNS_13QualifiedNameEPNS_8DocumentEb
__ZN7WebCore15SVGURIReferenceC2Ev
-__ZN7WebCore11SVGAElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore15SVGURIReference20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore11SVGAElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZN7WebCore16SVGScriptElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore16SVGScriptElement7setTypeERKNS_6StringE
+__ZN7WebCore16SVGScriptElement19svgAttributeChangedERKNS_13QualifiedNameE
__ZN7WebCore15SVGURIReference16isKnownAttributeERKNS_13QualifiedNameE
-__ZN7WebCore15SVGURIReference16setHrefBaseValueENS_6StringE
-__ZNK7WebCore11SVGAElement14contextElementEv
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapINS_6StringEEEPN3WTF7HashMapIPKNS_10SVGElementEPNS4_IPNS_10StringImplET_NS_10StringHashENS3_10HashTraitsIS9_EENSC_ISA_EEEENS3_7PtrHashIS7_EENSC_IS7_EENSC_ISG_EEEEvE14s_baseValueMap
-__ZN7WebCore15SVGURIReference7setHrefENS_6StringE
-__ZNK7WebCore11SVGAElement4hrefEv
-__ZNK7WebCore15SVGURIReference4hrefEv
-__ZN7WebCore11SVGAElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZNK7WebCore21SVGTextContentElement13isTextContentEv
-__ZN7WebCore15RenderSVGInlineC1EPNS_4NodeE
-__ZN7WebCore15RenderSVGInline13requiresLayerEv
-__ZNK7WebCore11SVGAElement25childShouldCreateRendererEPNS_4NodeE
-__ZN7WebCore11SVGAElement19defaultEventHandlerEPNS_5EventE
-__ZN7WebCore15RenderSVGInline15createInlineBoxEbbb
-__ZN7WebCore22SVGCharacterLayoutInfo14processedChunkEff
-__ZN7WebCore16styleConstructorEPNS_8DocumentEb
-__ZN7WebCore15SVGStyleElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore15SVGStyleElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore15SVGStyleElement20insertedIntoDocumentEv
+__ZN7WebCore16SVGScriptElement20insertedIntoDocumentEv
+__ZNK7WebCore16SVGScriptElement20sourceAttributeValueEv
__ZN7WebCore10SVGElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore15SVGStyleElement15childrenChangedEb
-__ZThn72_NK7WebCore15SVGStyleElement4typeEv
-__ZNK7WebCore15SVGStyleElement4typeEv
-__ZThn72_NK7WebCore15SVGStyleElement5mediaEv
-__ZNK7WebCore15SVGStyleElement5mediaEv
-__ZN7WebCore12StyleElement10setLoadingEb
-__ZNK7WebCore15SVGStyleElement5titleEv
-__ZN7WebCore15SVGStyleElement11sheetLoadedEv
-__ZN7WebCore15SVGStyleElement5sheetEv
-__ZN7WebCore15SVGStyleElement21finishParsingChildrenEv
-__ZN7WebCore9CSSParser23parseSVGStrokeDasharrayEv
-__ZN7WebCore14SVGRectElement14setRxBaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGRectElement5setRxENS_9SVGLengthE
-__ZNK7WebCore14SVGRectElement2rxEv
+__ZN7WebCore16SVGScriptElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore16SVGScriptElement21finishParsingChildrenEv
+__ZN7WebCore16SVGScriptElement27haveLoadedRequiredResourcesEv
+__ZThn240_NK7WebCore16SVGScriptElement14contextElementEv
+__ZNK7WebCore16SVGScriptElement14contextElementEv
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplEbNS1_10StringHashENS_10HashTraitsIS6_EENS8_IbEEEENS_7PtrHashI
+__ZThn288_NK7WebCore16SVGScriptElement20sourceAttributeValueEv
+__ZThn288_NK7WebCore16SVGScriptElement13scriptContentEv
+__ZNK7WebCore16SVGScriptElement13scriptContentEv
+__ZN7WebCoreL17circleConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore16SVGCircleElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19SVGAnimatedPropertyINS_16SVGCircleElementENS_9SVGLengthEXadL_ZNS_8SVGNames15circleTagStringEEEXadL_ZNS3_11rAttrSt
+__ZN7WebCore16SVGCircleElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore16SVGCircleElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZNK7WebCore16SVGCircleElement7isValidEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGRectElementENS_9SVGLengthEXadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_12rxAttrStri
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGRectElementENS_9SVGLengthEXadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_12ryAttrStri
__ZN7WebCore4Path22createRoundedRectangleERKNS_9FloatRectERKNS_9FloatSizeE
-__ZN7WebCore25linearGradientConstructorEPNS_8DocumentEb
+__ZNK7WebCore16SVGCircleElement10toPathDataEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_16SVGCircleElementENS_9SVGLengthEXadL_ZNS_8SVGNames15circleTagStringEEEXadL_ZNS3_11rAttrS
+__ZNK7WebCore19SVGAnimatedPropertyINS_16SVGCircleElementENS_9SVGLengthEXadL_ZNS_8SVGNames15circleTagStringEEEXadL_ZNS3_12cyAttr
+__ZNK7WebCore19SVGAnimatedPropertyINS_16SVGCircleElementENS_9SVGLengthEXadL_ZNS_8SVGNames15circleTagStringEEEXadL_ZNS3_12cxAttr
+__ZN7WebCore4Path12createCircleERKNS_10FloatPointEf
+__ZN7WebCore4Path13createEllipseERKNS_10FloatPointEff
+__ZN7WebCoreL36calculateTextAnchorShiftForTextChunkERNS_12SVGTextChunkENS_11ETextAnchorE
+__ZN7WebCoreL26cummulatedWidthOfTextChunkERNS_12SVGTextChunkE
+__ZN7WebCoreL34cummulatedWidthOrHeightOfTextChunkERNS_12SVGTextChunkEb
+__ZN7WebCore40cummulatedWidthOfInlineBoxCharacterRangeERNS_26SVGInlineBoxCharacterRangeE
+__ZNK7WebCore19SVGAnimatedPropertyINS_13SVGSVGElementENS_9SVGLengthEXadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_11yAttrStringE
+__ZN7WebCore10SVGElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL15pathConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore14SVGPathElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19SVGAnimatedPathDataC2Ev
+__ZN7WebCore14SVGPathElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore14SVGPathElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZN7WebCoreL25lineargradientConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
__ZN7WebCore24SVGLinearGradientElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore24SVGLinearGradientElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
__ZN7WebCore18SVGGradientElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore24SVGLinearGradientElement14setX2BaseValueENS_9SVGLengthE
-__ZN7WebCore24SVGLinearGradientElement5setX2ENS_9SVGLengthE
+__ZN7WebCore19SVGAnimatedPropertyINS_24SVGLinearGradientElementENS_9SVGLengthEXadL_ZNS_8SVGNames23linearGradientTagStringEEEXad
__ZN7WebCore24SVGLinearGradientElement20parseMappedAttributeEPNS_15MappedAttributeE
__ZN7WebCore18SVGGradientElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore15SVGURIReference20parseMappedAttributeEPNS_15MappedAttributeE
__ZN7WebCore24SVGLinearGradientElement19svgAttributeChangedERKNS_13QualifiedNameE
__ZN7WebCore18SVGGradientElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore18SVGGradientElement25setGradientUnitsBaseValueEi
-__ZN7WebCore18SVGGradientElement16setGradientUnitsEi
-__ZN7WebCore24SVGLinearGradientElement14setX1BaseValueENS_9SVGLengthE
-__ZN7WebCore24SVGLinearGradientElement5setX1ENS_9SVGLengthE
-__ZN7WebCore24SVGLinearGradientElement14setY1BaseValueENS_9SVGLengthE
-__ZN7WebCore24SVGLinearGradientElement5setY1ENS_9SVGLengthE
-__ZN7WebCore24SVGLinearGradientElement14setY2BaseValueENS_9SVGLengthE
-__ZN7WebCore24SVGLinearGradientElement5setY2ENS_9SVGLengthE
-__ZN7WebCore18SVGGradientElement24setSpreadMethodBaseValueEi
-__ZN7WebCore18SVGGradientElement15setSpreadMethodEi
-__ZN7WebCore18SVGGradientElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore18SVGGradientElement15childrenChangedEb
-__ZN7WebCore15stopConstructorEPNS_8DocumentEb
+__ZN7WebCore18SVGGradientElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCoreL15stopConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
__ZN7WebCore14SVGStopElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14SVGStopElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19SVGAnimatedPropertyINS_14SVGStopElementEfXadL_ZNS_8SVGNames13stopTagStringEEEXadL_ZNS2_16offsetAttrStringEEEEC1If
+__ZN7WebCore19SVGAnimatedPropertyINS_14SVGStopElementEfXadL_ZNS_8SVGNames13stopTagStringEEEXadL_ZNS2_16offsetAttrStringEEEEC2If
__ZN7WebCore14SVGStopElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore8SVGColorC1ERKNS_6StringE
+__ZN7WebCore19SVGAnimatedPropertyINS_14SVGStopElementEfXadL_ZNS_8SVGNames13stopTagStringEEEXadL_ZNS2_16offsetAttrStringEEEE12se
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGStopElementEfXadL_ZNS_8SVGNames13stopTagStringEEEXadL_ZNS2_16offsetAttrStringEEEE12o
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplEfNS1_10StringHashENS_10HashTraitsIS6_EENS8_IfEEEENS_7PtrHashI
+__ZN7WebCore9CSSParser13parseSVGColorEv
+__ZN7WebCore8SVGColorC1ERKNS_5ColorE
+__ZN7WebCoreL25radialgradientConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore24SVGRadialGradientElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore24SVGRadialGradientElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19SVGAnimatedPropertyINS_24SVGRadialGradientElementENS_9SVGLengthEXadL_ZNS_8SVGNames23radialGradientTagStringEEEXad
+__ZN7WebCore24SVGRadialGradientElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore24SVGRadialGradientElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplEiNS1_10StringHashENS_10HashTraitsIS6_EENS8_IiEEEENS_7PtrHashI
+__ZN7WebCore8SVGPaintC1ENS0_12SVGPaintTypeERKNS_6StringES4_S4_
+__ZN7WebCore8SVGPaintC2ENS0_12SVGPaintTypeERKNS_6StringES4_S4_
+__ZN7WebCore8SVGColorC2ERKNS_6StringE
__ZN7WebCore8SVGColor11setRGBColorERKNS_6StringERi
__ZN7WebCore8SVGColor23colorFromRGBColorStringERKNS_6StringE
-__ZN7WebCore14SVGStopElement18setOffsetBaseValueEf
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapIfEEPN3WTF7HashMapIPKNS_10SVGElementEPNS3_IPNS_10StringImplET_NS_10StringHashENS2_10HashTraitsIS8_EENSB_IS9_EEEENS2_7PtrHashIS6_EENSB_IS6_EENSB_ISF_EEEEvE14s_baseValueMap
-__ZN7WebCore14SVGStopElement9setOffsetEf
-__ZNK7WebCore8SVGColor9colorTypeEv
-__ZN7WebCore13StyleStopDataC1ERKS0_
-__ZN7WebCore14SVGStopElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore21RenderSVGGradientStopC1EPNS_14SVGStopElementE
-__ZN7WebCore21RenderSVGGradientStop8setStyleEPNS_11RenderStyleE
-__ZNK7WebCore21RenderSVGGradientStop15gradientElementEv
-__ZN7WebCore18SVGGradientElement14canvasResourceEv
-__ZNK7WebCore24SVGLinearGradientElement12gradientTypeEv
-__ZN7WebCore28SVGPaintServerLinearGradientC1EPKNS_18SVGGradientElementE
-__ZN7WebCore22SVGPaintServerGradientC2EPKNS_18SVGGradientElementE
-__ZN7WebCore22SVGPaintServerGradient10invalidateEv
-__ZN7WebCore11SVGResource10invalidateEv
-__ZN7WebCore8SVGPaintC1ENS0_12SVGPaintTypeERKNS_6StringES4_S4_
__ZN7WebCore8SVGPaint6setUriERKNS_6StringE
-__ZNK7WebCore13StyleStopDataeqERKS0_
+__ZNK7WebCore14SVGPathElement11pathSegListEv
+__ZN7WebCore14SVGPathSegListC1ERKNS_13QualifiedNameE
+__ZN7WebCore14SVGPathSegListC2ERKNS_13QualifiedNameE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore10SVGPathSegEEELm0EE14shrinkCapacityEm
+__ZN7WebCore22pathSegListFromSVGDataEPNS_14SVGPathSegListERKNS_6StringEb
+__ZN7WebCore13SVGPathParser8parseSVGERKNS_6StringEb
+__ZN7WebCoreL11parseNumberERPKtS1_Rdb
+__ZN7WebCore21SVGPathSegListBuilder9svgMoveToEddbb
+__ZN7WebCore14SVGPathElement25createSVGPathSegMovetoAbsEff
+__ZN7WebCore19SVGPathSegMovetoAbsC1Eff
+__ZN7WebCore19SVGPathSegMovetoAbsC2Eff
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore10SVGPathSegEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore10SVGPathSegEEELm0EE15reserveCapacityEm
+__ZN7WebCore21SVGPathSegListBuilder9svgLineToEddb
+__ZN7WebCore14SVGPathElement25createSVGPathSegLinetoAbsEff
+__ZN7WebCore19SVGPathSegLinetoAbsC1Eff
+__ZN7WebCore19SVGPathSegLinetoAbsC2Eff
+__ZN7WebCore21SVGPathSegListBuilder12svgClosePathEv
+__ZN7WebCore14SVGPathElement25createSVGPathSegClosePathEv
+__ZN7WebCore19SVGPathSegClosePathC1Ev
+__ZN7WebCore19SVGPathSegClosePathC2Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore10SVGPathSegEEELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore10SVGPathSegEEELm0EE6shrinkEm
+__ZNK7WebCore14SVGPathElement7isValidEv
__ZNK7WebCore8SVGPaint3uriEv
-__ZN7WebCore21RenderSVGGradientStop6layoutEv
-__ZN7WebCore24missing_glyphConstructorEPNS_8DocumentEb
-__ZN7WebCore22SVGMissingGlyphElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore16SVGCircleElement7isValidEv
-__ZNK7WebCore16SVGCircleElement10toPathDataEv
-__ZNK7WebCore16SVGCircleElement2cyEv
-__ZNK7WebCore16SVGCircleElement2cxEv
-__ZN7WebCore4Path12createCircleERKNS_10FloatPointEf
-__ZN7WebCore11PathBuilder15svgCurveToCubicEddddddb
-__ZN7WebCore12SVGTransform8setScaleEff
-__ZN7WebCore16imageConstructorEPNS_8DocumentEb
-__ZN7WebCore15SVGImageElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore14SVGImageLoaderC1EPNS_15SVGImageElementE
-__ZN7WebCore15SVGImageElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore15SVGImageElement13setXBaseValueENS_9SVGLengthE
-__ZN7WebCore15SVGImageElement4setXENS_9SVGLengthE
-__ZN7WebCore15SVGImageElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore15SVGImageElement13setYBaseValueENS_9SVGLengthE
-__ZN7WebCore15SVGImageElement4setYENS_9SVGLengthE
-__ZN7WebCore15SVGImageElement17setWidthBaseValueENS_9SVGLengthE
-__ZN7WebCore15SVGImageElement8setWidthENS_9SVGLengthE
-__ZNK7WebCore15SVGImageElement5widthEv
-__ZN7WebCore15SVGImageElement18setHeightBaseValueENS_9SVGLengthE
-__ZN7WebCore15SVGImageElement9setHeightENS_9SVGLengthE
-__ZNK7WebCore15SVGImageElement6heightEv
-__ZThn116_NK7WebCore15SVGImageElement14contextElementEv
-__ZNK7WebCore15SVGImageElement14contextElementEv
-__ZN7WebCore15SVGImageElement6attachEv
-__ZNK7WebCore15SVGImageElement7isValidEv
-__ZN7WebCore15SVGImageElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore14RenderSVGImageC1EPNS_15SVGImageElementE
-__ZN7WebCore14RenderSVGImage13requiresLayerEv
-__ZN7WebCore14SVGImageLoader17updateFromElementEv
-__ZNK7WebCore15SVGImageElement4hrefEv
-__ZN7WebCore15SVGImageElement27haveLoadedRequiredResourcesEv
-__ZNK7WebCore15SVGImageElement34externalResourcesRequiredBaseValueEv
-__ZNK7WebCore28SVGExternalResourcesRequired34externalResourcesRequiredBaseValueEv
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapIbEEPN3WTF7HashMapIPKNS_10SVGElementEPNS3_IPNS_10StringImplET_NS_10StringHashENS2_10HashTraitsIS8_EENSB_IS9_EEEENS2_7PtrHashIS6_EENSB_IS6_EENSB_ISF_EEEEvE14s_baseValueMap
-__ZNK7WebCore28SVGExternalResourcesRequired25externalResourcesRequiredEv
-__ZN7WebCore14setConstructorEPNS_8DocumentEb
-__ZN7WebCore13SVGSetElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore19SVGAnimationElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore19SVGAnimationElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore19SVGAnimationElement20parseBeginOrEndValueERdRKNS_6StringE
-__ZN7WebCore13SVGStringListC1ERKNS_13QualifiedNameE
-__ZN7WebCore13SVGStringList5parseERKNS_6StringEt
-__ZN7WebCore19SVGAnimationElement15parseClockValueERKNS_6StringE
-__ZN7WebCore19SVGAnimationElement12isIndefiniteEd
-__ZN7WebCore13SVGStringListD1Ev
-__ZN7WebCore19SVGAnimationElement21finishParsingChildrenEv
-__ZNK7WebCore10SVGElement15ownerSVGElementEv
-__ZNK7WebCore19SVGAnimationElement12getStartTimeEv
-__ZN7WebCore13TimeScheduler8addTimerEPNS_19SVGAnimationElementEj
-__ZNK7WebCore24RenderSVGHiddenContainer17absoluteTransformEv
-__ZN7WebCore14useConstructorEPNS_8DocumentEb
-__ZN7WebCore13SVGUseElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore13SVGUseElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZThn116_NK7WebCore13SVGUseElement14contextElementEv
-__ZNK7WebCore13SVGUseElement14contextElementEv
-__ZN7WebCore13SVGUseElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore13SVGUseElement20insertedIntoDocumentEv
-__ZN7WebCore13SVGUseElement20buildPendingResourceEv
-__ZNK7WebCore13SVGUseElement4hrefEv
-__ZN7WebCore18SVGElementInstanceC1EPNS_13SVGUseElementEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore21SVGDocumentExtensions20mapInstanceToElementEPNS_18SVGElementInstanceEPNS_10SVGElementE
-__ZN3WTF7HashSetIPN7WebCore18SVGElementInstanceENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore18SVGElementInstance14refEventTargetEv
-__ZN7WebCore13SVGUseElement17buildInstanceTreeEPNS_10SVGElementEPNS_18SVGElementInstanceERb
-__ZNK7WebCore13SVGUseElement1xEv
-__ZNK7WebCore13SVGUseElement1yEv
-__ZN7WebCore13SVGUseElement15buildShadowTreeEPNS_10SVGElementEPNS_18SVGElementInstanceE
-__ZN7WebCore19isDisallowedElementEPNS_4NodeE
-__ZNK7WebCore18SVGElementInstance20correspondingElementEv
-__ZN7WebCore32subtreeContainsDisallowedElementEPNS_4NodeE
-__ZN7WebCore13SVGUseElement29expandUseElementsInShadowTreeEPNS_4NodeE
-__ZN7WebCore13SVGUseElement32expandSymbolElementsInShadowTreeEPNS_4NodeE
-__ZN7WebCore13SVGUseElement40associateInstancesWithShadowTreeElementsEPNS_4NodeEPNS_18SVGElementInstanceE
-__ZN7WebCore18SVGElementInstance20setShadowTreeElementEPNS_10SVGElementE
-__ZNK7WebCore18SVGElementInstance10firstChildEv
-__ZN7WebCore13SVGUseElement16attachShadowTreeEv
-__ZN7WebCore13SVGUseElement6attachEv
-__ZNK7WebCore13SVGUseElement7isValidEv
-__ZN7WebCore13SVGUseElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore10SVGElement16shadowParentNodeEv
-__ZN7WebCore13SVGUseElement13setYBaseValueENS_9SVGLengthE
-__ZN7WebCore13SVGUseElement4setYENS_9SVGLengthE
-__ZN7WebCore18polygonConstructorEPNS_8DocumentEb
-__ZN7WebCore17SVGPolygonElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore14SVGPolyElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore17SVGAnimatedPointsC2Ev
-__ZN7WebCore14SVGPolyElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore14SVGPolyElement6pointsEv
-__ZN7WebCore12SVGPointListC1ERKNS_13QualifiedNameE
-__ZN7WebCore21pointsListFromSVGDataEPNS_12SVGPointListERKNS_6StringE
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_10FloatPointEEEEELm0EE14expandCapacityEmPKS6_
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_10FloatPointEEEEELm0EE14expandCapacityEm
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_10FloatPointEEEEELm0EE15reserveCapacityEm
-__ZN7WebCore14SVGPolyElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZNK7WebCore14SVGPolyElement7isValidEv
-__ZN7WebCore14SVGPolyElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore19polylineConstructorEPNS_8DocumentEb
-__ZN7WebCore18SVGPolylineElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore13SVGUseElement11recalcStyleENS_4Node11StyleChangeE
-__ZNK7WebCore17SVGPolygonElement10toPathDataEv
-__ZNK7WebCore18SVGPolylineElement10toPathDataEv
-__ZN7WebCore20parseDelimitedStringERKNS_6StringEc
-__ZN7WebCore12SVGLangSpace10setXmllangERKNS_12AtomicStringE
-__ZN7WebCore13SVGUseElement13setXBaseValueENS_9SVGLengthE
-__ZN7WebCore13SVGUseElement4setXENS_9SVGLengthE
-__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifier10ArabicFormELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifier10ArabicFormELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifier10ArabicFormELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifier10ArabicFormELm0EE6shrinkEm
-__ZNK7WebCore11SVGAElement7isValidEv
-__ZNK7WebCore10SVGElement13isTextContentEv
-__ZN7WebCore17scriptConstructorEPNS_8DocumentEb
-__ZN7WebCore16SVGScriptElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore22JSSVGLazyEventListener18eventParameterNameEv
-__ZNK7WebCore17JSEventTargetNode21pushEventHandlerScopeEPN3KJS9ExecStateERNS1_10ScopeChainE
-__ZN7WebCore22JSSVGDocumentPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore13JSSVGDocumentC1EPN3KJS8JSObjectEPNS_11SVGDocumentE
-__ZN7WebCore13JSSVGDocument18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore22JSSVGDocumentPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore13JSSVGDocument9classInfoEv
-__ZN7WebCore55jsSVGTextContentElementPrototypeFunctionSelectSubStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore12JSSVGElement4implEv
-__ZNK7WebCore21SVGTextContentElement15selectSubStringEllRi
-__ZNK7WebCore21SVGTextContentElement16getNumberOfCharsEv
-__ZNK7WebCore13RenderSVGText9isSVGTextEv
-__ZNK7WebCore16SVGRootInlineBox13svgTextChunksEv
-__ZN7WebCore29findInlineTextBoxInTextChunksEPKNS_21SVGTextContentElementERKN3WTF6VectorINS_12SVGTextChunkELm0EEE
-__ZN3WTF6VectorIPN7WebCore16SVGInlineTextBoxELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore16SVGInlineTextBoxELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore16SVGInlineTextBoxELm0EE15reserveCapacityEm
-__ZN7WebCore18SVGTextChunkWalkerINS_27SVGInlineTextBoxQueryWalkerEEclEPNS_16SVGInlineTextBoxEiRKNS_15AffineTransformERKPNS_7SVGCharESB_
-__ZN7WebCore27SVGInlineTextBoxQueryWalker20chunkPortionCallbackEPNS_16SVGInlineTextBoxEiRKNS_15AffineTransformERKPNS_7SVGCharES9_
-__ZN3WTF6VectorIPN7WebCore16SVGInlineTextBoxELm0EE6shrinkEm
-__ZN7WebCore19RenderSVGInlineText13selectionRectEb
-__ZNK7WebCore12RenderObject20isSVGHiddenContainerEv
-__ZN7WebCore19RenderSVGInlineText27computeAbsoluteRectForRangeEii
-__ZN7WebCore17findSVGRootObjectEPNS_12RenderObjectE
-__ZN7WebCore16tspanConstructorEPNS_8DocumentEb
-__ZN7WebCore15SVGTSpanElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore15SVGTSpanElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore14RenderSVGTSpanC1EPNS_4NodeE
-__ZNK7WebCore15SVGTSpanElement25childShouldCreateRendererEPNS_4NodeE
-__ZN7WebCore25radialGradientConstructorEPNS_8DocumentEb
-__ZN7WebCore24SVGRadialGradientElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore24SVGRadialGradientElement14setCxBaseValueENS_9SVGLengthE
-__ZN7WebCore24SVGRadialGradientElement5setCxENS_9SVGLengthE
-__ZN7WebCore24SVGRadialGradientElement14setCyBaseValueENS_9SVGLengthE
-__ZN7WebCore24SVGRadialGradientElement5setCyENS_9SVGLengthE
-__ZN7WebCore24SVGRadialGradientElement13setRBaseValueENS_9SVGLengthE
-__ZN7WebCore24SVGRadialGradientElement4setRENS_9SVGLengthE
-__ZN7WebCore24SVGRadialGradientElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore24SVGRadialGradientElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore24SVGRadialGradientElement14setFxBaseValueENS_9SVGLengthE
-__ZN7WebCore24SVGRadialGradientElement5setFxENS_9SVGLengthE
-__ZN7WebCore24SVGRadialGradientElement14setFyBaseValueENS_9SVGLengthE
-__ZN7WebCore24SVGRadialGradientElement5setFyENS_9SVGLengthE
-__ZNK7WebCore24SVGRadialGradientElement1rEv
-__ZNK7WebCore24SVGRadialGradientElement12gradientTypeEv
-__ZN7WebCore28SVGPaintServerRadialGradientC1EPKNS_18SVGGradientElementE
-__ZN7WebCore9CSSParser13parseSVGColorEv
-__ZN7WebCore8SVGColorC2ERKNS_5ColorE
-__ZNK7WebCore24SVGRadialGradientElement14contextElementEv
-__ZNK7WebCore4Font10unitsPerEmEv
-__ZN7WebCore23angleToGlyphOrientationEf
-__ZN7WebCore8SVGColorC1Et
-__ZN7WebCore13StyleMiscDataC1ERKS0_
-__ZNK7WebCore13StyleMiscDataeqERKS0_
-__ZNK7WebCore16DeprecatedString8toDoubleEPb
-__ZN7WebCore12SVGLangSpace11setXmlspaceERKNS_12AtomicStringE
-__ZNK7WebCore19SVGAnimationElement7isValidEv
-__ZN7WebCore18SVGElementInstance11appendChildEN3WTF10PassRefPtrIS0_EE
-__ZN7WebCore18SVGElementInstance16derefEventTargetEv
-__ZNK7WebCore18SVGElementInstance11nextSiblingEv
-__ZN7WebCore13SVGUseElement15childrenChangedEb
-__ZN7WebCore21SVGDocumentExtensions21removeInstanceMappingEPNS_18SVGElementInstanceEPNS_10SVGElementE
-__ZN7WebCore12SVGPointListD1Ev
-__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_10FloatPointEEEEELm0EE6shrinkEm
-__ZN7WebCore14SVGImageLoaderD0Ev
-__ZN7WebCore15SVGURIReferenceD0Ev
-__ZN7WebCore14RenderSVGImage27absoluteClippedOverflowRectEv
-__ZNK7WebCore25SVGTextPositioningElement15rotateBaseValueEv
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapIPNS_13SVGNumberListEEEPN3WTF7HashMapIPKNS_10SVGElementEPNS5_IPNS_10StringImplET_NS_10StringHashENS4_10HashTraitsISA_EENSD_ISB_EEEENS4_7PtrHashIS8_EENSD_IS8_EENSD_ISH_EEEEvE14s_baseValueMap
-__ZN7WebCore13SVGNumberList5parseERKNS_6StringE
-__ZNK7WebCore22SVGCharacterLayoutInfo14angleValueNextEv
-__ZNK7WebCore15SVGImageElement28preserveAspectRatioBaseValueEv
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapIPNS_22SVGPreserveAspectRatioEEEPN3WTF7HashMapIPKNS_10SVGElementEPNS5_IPNS_10StringImplET_NS_10StringHashENS4_10HashTraitsISA_EENSD_ISB_EEEENS4_7PtrHashIS8_EENSD_IS8_EENSD_ISH_EEEEvE14s_baseValueMap
-__ZNK7WebCore15SVGImageElement19preserveAspectRatioEv
-__ZN7WebCore22SVGPreserveAspectRatio24parsePreserveAspectRatioERPKtS2_b
-__ZNK7WebCore15SVGFitToViewBox28preserveAspectRatioBaseValueEv
-__ZN7WebCore13SVGZoomAndPan15parseZoomAndPanERPKtS2_
-__ZN7WebCore13SVGZoomAndPan13setZoomAndPanEt
-__ZN7WebCore13SVGPathParser12calculateArcEbRdS1_dddddbb
-__ZN7WebCore18patternConstructorEPNS_8DocumentEb
-__ZN7WebCore17SVGPatternElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore17SVGPatternElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore17SVGPatternElement24setPatternUnitsBaseValueEi
-__ZN7WebCore17SVGPatternElement15setPatternUnitsEi
-__ZN7WebCore17SVGPatternElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore17SVGPatternElement13setXBaseValueENS_9SVGLengthE
-__ZN7WebCore17SVGPatternElement4setXENS_9SVGLengthE
-__ZN7WebCore17SVGPatternElement13setYBaseValueENS_9SVGLengthE
-__ZN7WebCore17SVGPatternElement4setYENS_9SVGLengthE
-__ZN7WebCore17SVGPatternElement17setWidthBaseValueENS_9SVGLengthE
-__ZN7WebCore17SVGPatternElement8setWidthENS_9SVGLengthE
-__ZNK7WebCore17SVGPatternElement5widthEv
-__ZN7WebCore17SVGPatternElement18setHeightBaseValueENS_9SVGLengthE
-__ZN7WebCore17SVGPatternElement9setHeightENS_9SVGLengthE
-__ZNK7WebCore17SVGPatternElement7isValidEv
-__ZN7WebCore17SVGPatternElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore18RenderSVGContainer16setDrawsContentsEb
-__ZN7WebCore17SVGPatternElement15childrenChangedEb
-__ZN7WebCore18RenderSVGContainer23calculateLocalTransformEv
-__ZNK7WebCore22SVGCharacterLayoutInfo22baselineShiftValueNextEv
-__ZN7WebCore16SVGScriptElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore16SVGScriptElement7setTypeERKNS_6StringE
-__ZN7WebCore13SVGSVGElement13setXBaseValueENS_9SVGLengthE
-__ZN7WebCore13SVGSVGElement4setXENS_9SVGLengthE
-__ZN7WebCore13SVGSVGElement13setYBaseValueENS_9SVGLengthE
-__ZN7WebCore13SVGSVGElement4setYENS_9SVGLengthE
-__ZNK7WebCore13SVGSVGElement7isValidEv
-__ZN7WebCore26RenderSVGViewportContainerC1EPNS_16SVGStyledElementE
-__ZN7WebCore19createCircleWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore27JSSVGCircleElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore18JSSVGCircleElementC1EPN3KJS8JSObjectEPNS_16SVGCircleElementE
-__ZN7WebCore45jsSVGTextElementPrototypeFunctionGetScreenCTMEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore14SVGTextElement12getScreenCTMEv
-__ZNK7WebCore16SVGTransformable12getScreenCTMEPKNS_10SVGElementE
-__ZN7WebCore12SVGLocatable12getScreenCTMEPKNS_10SVGElementE
-__ZNK7WebCore25SVGStyledLocatableElement17isStyledLocatableEv
-__ZNK7WebCore29SVGStyledTransformableElement12getScreenCTMEv
-__ZNK7WebCore13SVGSVGElement12getScreenCTMEv
-__ZNK7WebCore26RenderSVGViewportContainer17absoluteTransformEv
-__ZNK7WebCore26RenderSVGViewportContainer8viewportEv
-__ZNK7WebCore26RenderSVGViewportContainer17viewportTransformEv
-__ZN7WebCore26RenderSVGViewportContainer6layoutEv
-__ZN7WebCore26RenderSVGViewportContainer12calcViewportEv
-__ZNK7WebCore25SVGStyledLocatableElement12getScreenCTMEv
-__ZThn80_NK7WebCore29SVGStyledTransformableElement22animatedLocalTransformEv
-__ZThn152_NK7WebCore14SVGTextElement22animatedLocalTransformEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_19JSSVGPODTypeWrapperINS_15AffineTransformEEEPNS_10SVGElementE
-__ZN7WebCore20JSSVGMatrixPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore11JSSVGMatrixC1EPN3KJS8JSObjectEPNS_19JSSVGPODTypeWrapperINS_15AffineTransformEEEPNS_10SVGElementE
-__ZN7WebCore11JSSVGMatrix18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore11JSSVGMatrixEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore11JSSVGMatrix16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore34JSSVGPODTypeWrapperCreatorReadOnlyINS_15AffineTransformEEcvS1_Ev
-__ZNK7WebCore15AffineTransform1bEv
-__ZNK7WebCore15AffineTransform1cEv
-__ZN7WebCore39jsSVGTextElementPrototypeFunctionGetCTMEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore14SVGTextElement6getCTMEv
-__ZNK7WebCore16SVGTransformable6getCTMEPKNS_10SVGElementE
-__ZN7WebCore12SVGLocatable6getCTMEPKNS_10SVGElementE
-__ZNK7WebCore29SVGStyledTransformableElement6getCTMEv
-__ZNK7WebCore13SVGSVGElement6getCTMEv
-__ZN7WebCore54jsSVGTextElementPrototypeFunctionGetTransformToElementEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12toSVGElementEPN3KJS7JSValueE
-__ZNK7WebCore12SVGLocatable21getTransformToElementEPNS_10SVGElementERi
-__ZTv0_n28_NK7WebCore14SVGTextElement6getCTMEv
-__ZN7WebCore15AffineTransformmLERKS0_
-__ZN7WebCore18JSSVGCircleElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore27JSSVGCircleElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore42jsSVGCircleElementPrototypeFunctionGetBBoxEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore18JSSVGCircleElement9classInfoEv
-__ZNK7WebCore29SVGStyledTransformableElement7getBBoxEv
-__ZN7WebCore12SVGLocatable7getBBoxEPKNS_16SVGStyledElementE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_19JSSVGPODTypeWrapperINS_9FloatRectEEEPNS_10SVGElementE
-__ZN7WebCore18JSSVGRectPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore9JSSVGRectC1EPN3KJS8JSObjectEPNS_19JSSVGPODTypeWrapperINS_9FloatRectEEEPNS_10SVGElementE
-__ZN7WebCore9JSSVGRect18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore9JSSVGRectEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore9JSSVGRect16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore34JSSVGPODTypeWrapperCreatorReadOnlyINS_9FloatRectEEcvS1_Ev
-__ZN3KJS17staticValueGetterIN7WebCore18JSSVGCircleElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSSVGCircleElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore29SVGStyledTransformableElement23farthestViewportElementEv
-__ZN7WebCore12SVGLocatable23farthestViewportElementEPKNS_16SVGStyledElementE
-__ZNK7WebCore29SVGStyledTransformableElement22nearestViewportElementEv
-__ZNK7WebCore18RenderSVGContainer6heightEv
-__ZNK7WebCore18RenderSVGContainer5widthEv
-__ZN7WebCore9DocLoader11requestFontERKNS_6StringE
-__ZN7WebCore10CachedFontC1EPNS_9DocLoaderERKNS_6StringE
-__ZN7WebCore10CachedFont3refEPNS_20CachedResourceClientE
-__ZNK7WebCore15CSSFontSelector9docLoaderEv
-__ZN7WebCore10CachedFont17beginLoadIfNeededEPNS_9DocLoaderE
-__ZN7WebCore9FontCache25getLastResortFallbackFontERKNS_15FontDescriptionE
-__ZN7WebCore14SVGRectElement14setRyBaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGRectElement5setRyENS_9SVGLengthE
-__ZNK7WebCore14SVGRectElement2ryEv
-__ZN7WebCore12SVGTransform8setSkewXEf
-__ZN7WebCore15AffineTransform5skewXEd
-__ZN7WebCore17switchConstructorEPNS_8DocumentEb
-__ZN7WebCore16SVGSwitchElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore16SVGSwitchElement7isValidEv
-__ZN7WebCore16SVGSwitchElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZNK7WebCore16SVGSwitchElement25childShouldCreateRendererEPNS_4NodeE
-__ZNK7WebCore8SVGTests14systemLanguageEv
-__ZN7WebCore13SVGStringList5resetERKNS_6StringE
-__ZNK7WebCore26RenderSVGViewportContainer14isSVGContainerEv
-__ZNK7WebCore25SVGTextPositioningElement11dxBaseValueEv
-__ZNK7WebCore25SVGTextPositioningElement11dyBaseValueEv
-__ZNK7WebCore22SVGCharacterLayoutInfo11dxValueNextEv
-__ZNK7WebCore22SVGCharacterLayoutInfo11dyValueNextEv
__ZNK7WebCore13SVGSVGElement5isSVGEv
-__ZN7WebCore17cursorConstructorEPNS_8DocumentEb
-__ZN7WebCore16SVGCursorElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore16SVGCursorElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZThn88_NK7WebCore16SVGCursorElement14contextElementEv
-__ZNK7WebCore16SVGCursorElement14contextElementEv
-__ZNK7WebCore16SVGCursorElement4hrefEv
-__ZN7WebCore16SVGCursorElement13setXBaseValueENS_9SVGLengthE
-__ZN7WebCore16SVGCursorElement4setXENS_9SVGLengthE
-__ZN7WebCore16SVGCursorElement13setYBaseValueENS_9SVGLengthE
-__ZN7WebCore16SVGCursorElement4setYENS_9SVGLengthE
-__ZNK7WebCore16SVGCursorElement7isValidEv
-__ZN7WebCore11RenderStyle12addSVGCursorERKNS_6StringE
-__ZN7WebCore15maskConstructorEPNS_8DocumentEb
-__ZN7WebCore14SVGMaskElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore14SVGMaskElement13setXBaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGMaskElement4setXENS_9SVGLengthE
-__ZN7WebCore14SVGMaskElement13setYBaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGMaskElement4setYENS_9SVGLengthE
-__ZN7WebCore14SVGMaskElement17setWidthBaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGMaskElement8setWidthENS_9SVGLengthE
-__ZN7WebCore14SVGMaskElement18setHeightBaseValueENS_9SVGLengthE
-__ZN7WebCore14SVGMaskElement9setHeightENS_9SVGLengthE
-__ZN7WebCore14SVGMaskElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore14SVGMaskElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore14SVGMaskElement21setMaskUnitsBaseValueEi
-__ZN7WebCore14SVGMaskElement12setMaskUnitsEi
-__ZNK7WebCore14SVGMaskElement7isValidEv
-__ZN7WebCore14SVGMaskElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore14SVGMaskElement15childrenChangedEb
-__ZN7WebCore13StyleMaskDataC1ERKS0_
-__ZNK7WebCore13StyleMaskDataeqERKS0_
-__ZNK7WebCore8SVGTests18requiredExtensionsEv
-__ZN7WebCore19SVGPathSegClosePathD1Ev
-__ZN7WebCore13SVGUseElement24handleDeepUseReferencingEPNS_10SVGElementEPNS_18SVGElementInstanceERb
-__ZNK7WebCore18SVGElementInstance10parentNodeEv
-__ZNK7WebCore13SVGUseElement38transferUseAttributesToReplacedElementEPNS_10SVGElementES2_
-__ZN7WebCore13SVGUseElement19removedFromDocumentEv
-__ZN7WebCore14RenderSVGImage6layoutEv
-__ZN7WebCore14RenderSVGImage23calculateLocalTransformEv
-__ZNK7WebCore15SVGImageElement1yEv
-__ZNK7WebCore15SVGImageElement1xEv
-__ZN7WebCore14RenderSVGImage23calculateAbsoluteBoundsEv
-__ZNK7WebCore14RenderSVGImage12relativeBBoxEb
-__ZNK7WebCore14RenderSVGImage14localTransformEv
-__ZN7WebCore17symbolConstructorEPNS_8DocumentEb
-__ZN7WebCore16SVGSymbolElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore16SVGSymbolElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZThn92_NK7WebCore16SVGSymbolElement14contextElementEv
-__ZNK7WebCore16SVGSymbolElement14contextElementEv
-__ZN7WebCore16SVGSymbolElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore13SVGUseElement17setWidthBaseValueENS_9SVGLengthE
-__ZN7WebCore13SVGUseElement8setWidthENS_9SVGLengthE
-__ZNK7WebCore13SVGUseElement5widthEv
-__ZN7WebCore13SVGUseElement18setHeightBaseValueENS_9SVGLengthE
-__ZN7WebCore13SVGUseElement9setHeightENS_9SVGLengthE
-__ZNK7WebCore13SVGUseElement6heightEv
-__ZN7WebCore16mpathConstructorEPNS_8DocumentEb
-__ZN7WebCore15SVGMPathElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore15SVGMPathElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZNK7WebCore15SVGMPathElement14contextElementEv
-__ZN7WebCore21SVGDocumentExtensions18addPendingResourceERKNS_12AtomicStringEPNS_16SVGStyledElementE
-__ZN3WTF7HashSetIPN7WebCore16SVGStyledElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZN7WebCore17markerConstructorEPNS_8DocumentEb
-__ZN7WebCore16SVGMarkerElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore8SVGAngleC1Ev
-__ZN7WebCore16SVGMarkerElement23setMarkerWidthBaseValueENS_9SVGLengthE
-__ZN7WebCore16SVGMarkerElement14setMarkerWidthENS_9SVGLengthE
-__ZN7WebCore16SVGMarkerElement24setMarkerHeightBaseValueENS_9SVGLengthE
-__ZN7WebCore16SVGMarkerElement15setMarkerHeightENS_9SVGLengthE
-__ZN7WebCore16SVGMarkerElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore16SVGMarkerElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZThn92_NK7WebCore16SVGMarkerElement14contextElementEv
-__ZNK7WebCore16SVGMarkerElement14contextElementEv
-__ZN7WebCore16SVGMarkerElement16setRefXBaseValueENS_9SVGLengthE
-__ZN7WebCore16SVGMarkerElement7setRefXENS_9SVGLengthE
-__ZN7WebCore16SVGMarkerElement16setRefYBaseValueENS_9SVGLengthE
-__ZN7WebCore16SVGMarkerElement7setRefYENS_9SVGLengthE
-__ZN7WebCore16SVGMarkerElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore16SVGMarkerElement15childrenChangedEb
-__ZN7WebCore16SVGMarkerElement15setOrientToAutoEv
-__ZN7WebCore16SVGMarkerElement22setOrientTypeBaseValueEi
-__ZN7WebCore16SVGMarkerElement13setOrientTypeEi
-__ZN7WebCore15StyleMarkerDataC1ERKS0_
-__ZNK7WebCore15StyleMarkerDataeqERKS0_
-__ZNK7WebCore15SVGFitToViewBox22viewBoxToViewTransformEff
-__ZNK7WebCore16SVGMarkerElement11markerWidthEv
-__ZNK7WebCore16SVGMarkerElement12markerHeightEv
-__ZN7WebCore19clipPathConstructorEPNS_8DocumentEb
-__ZN7WebCore18SVGClipPathElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore18SVGClipPathElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore18SVGClipPathElement19svgAttributeChangedERKNS_13QualifiedNameE
-__ZN7WebCore18SVGClipPathElement25setClipPathUnitsBaseValueEi
-__ZN7WebCore18SVGClipPathElement16setClipPathUnitsEi
-__ZNK7WebCore18SVGClipPathElement7isValidEv
-__ZN7WebCore18SVGClipPathElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore18SVGClipPathElement15childrenChangedEb
-__ZN7WebCore13StyleClipDataC1ERKS0_
-__ZN7WebCore14SVGMaskElement28setMaskContentUnitsBaseValueEi
-__ZN7WebCore14SVGMaskElement19setMaskContentUnitsEi
-__ZNK7WebCore13StyleClipDataeqERKS0_
-__ZN7WebCore12SVGTransform8setSkewYEf
-__ZN7WebCore15AffineTransform5skewYEd
-__ZN7WebCore19textPathConstructorEPNS_8DocumentEb
-__ZN7WebCore18SVGTextPathElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore18SVGTextPathElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZThn108_NK7WebCore18SVGTextPathElement14contextElementEv
-__ZNK7WebCore18SVGTextPathElement14contextElementEv
-__ZN7WebCore18SVGTextPathElement20insertedIntoDocumentEv
-__ZNK7WebCore18SVGTextPathElement4hrefEv
-__ZN7WebCore18SVGTextPathElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore18SVGTextPathElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZN7WebCore17RenderSVGTextPathC1EPNS_4NodeE
-__ZNK7WebCore18SVGTextPathElement25childShouldCreateRendererEPNS_4NodeE
-__ZN7WebCore18SVGTextPathElement23setStartOffsetBaseValueENS_9SVGLengthE
-__ZN7WebCore18SVGTextPathElement14setStartOffsetENS_9SVGLengthE
-__ZN7WebCore22SVGCharacterLayoutInfo15setInPathLayoutEb
-__ZN7WebCore22SVGCharacterLayoutInfo20addLayoutInformationEPNS_13InlineFlowBoxEf
-__ZNK7WebCore17RenderSVGTextPath10layoutPathEv
-__ZN7WebCore4Path6lengthEv
-__ZN7WebCore18PathTraversalStateC1ENS0_19PathTraversalActionE
-__ZNK7WebCore4Path5applyEPvPFvS1_PKNS_11PathElementEE
-__ZN7WebCore26CGPathApplierToPathApplierEPvPK13CGPathElement
-__ZN7WebCore25pathLengthApplierFunctionEPvPKNS_11PathElementE
-__ZN7WebCore18PathTraversalState6moveToERKNS_10FloatPointE
-__ZN7WebCore18PathTraversalState13cubicBezierToERKNS_10FloatPointES3_S3_
-__ZN3WTF6VectorIN7WebCore11CubicBezierELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore11CubicBezierELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore11CubicBezierELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIN7WebCore11CubicBezierELm0EE6shrinkEm
-__ZNK7WebCore17RenderSVGTextPath11startOffsetEv
-__ZNK7WebCore18SVGTextPathElement11startOffsetEv
-__ZNK7WebCore9SVGLength17valueAsPercentageEv
-__ZNK7WebCore9SVGLength21valueInSpecifiedUnitsEv
-__ZN7WebCore22SVGCharacterLayoutInfo27nextPathLayoutPointAndAngleEfff
-__ZN7WebCore4Path13pointAtLengthEfRb
-__ZN7WebCore4Path19normalAngleAtLengthEfRb
-__ZN7WebCore18PathTraversalState6lineToERKNS_10FloatPointE
-__ZN7WebCore15trefConstructorEPNS_8DocumentEb
-__ZN7WebCore14SVGTRefElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore14SVGTRefElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZThn108_NK7WebCore14SVGTRefElement14contextElementEv
-__ZNK7WebCore14SVGTRefElement14contextElementEv
-__ZN7WebCore14SVGTRefElement20updateReferencedTextEv
-__ZNK7WebCore14SVGTRefElement4hrefEv
-__ZN7WebCore14SVGTRefElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
-__ZNK7WebCore14SVGTRefElement25childShouldCreateRendererEPNS_4NodeE
-__ZN7WebCore17SVGPatternElement31setPatternContentUnitsBaseValueEi
-__ZN7WebCore17SVGPatternElement22setPatternContentUnitsEi
-__ZN7WebCore11SVGAElement18setTargetBaseValueENS_6StringE
-__ZN7WebCore11SVGAElement9setTargetENS_6StringE
-__ZN7WebCore18SVGFontFaceElement15childrenChangedEb
-__ZN7WebCore24font_face_srcConstructorEPNS_8DocumentEb
-__ZN7WebCore21SVGFontFaceSrcElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore21SVGFontFaceSrcElement8srcValueEv
-__ZN7WebCore21SVGFontFaceSrcElement15childrenChangedEb
-__ZN7WebCore24font_face_uriConstructorEPNS_8DocumentEb
-__ZN7WebCore21SVGFontFaceUriElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore21SVGFontFaceUriElement8srcValueEv
-__ZN7WebCore19metadataConstructorEPNS_8DocumentEb
-__ZN7WebCore18SVGMetadataElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZNK7WebCore8SVGTests16requiredFeaturesEv
-__ZN7WebCore14isSVG11FeatureERKNS_6StringE
-__ZN7WebCore9addStringERN3WTF7HashSetINS_6StringENS_15CaseFoldingHashENS0_10HashTraitsIS2_EEEEPKc
-__ZN7WebCore8SVGTests16isKnownAttributeERKNS_13QualifiedNameE
-__ZN7WebCore12SVGLangSpace16isKnownAttributeERKNS_13QualifiedNameE
-__ZN7WebCore28SVGExternalResourcesRequired16isKnownAttributeERKNS_13QualifiedNameE
-__ZN7WebCore29SVGStyledTransformableElement16isKnownAttributeERKNS_13QualifiedNameE
-__ZN7WebCore16SVGTransformable16isKnownAttributeERKNS_13QualifiedNameE
-__ZN7WebCore16SVGStyledElement16isKnownAttributeERKNS_13QualifiedNameE
-__ZN7WebCore26ignorableWhitespaceHandlerEPvPKhi
-__ZNK7WebCore24SVGLinearGradientElement14contextElementEv
-__ZNK7WebCore17SVGPatternElement14contextElementEv
-__ZN3KJS17staticValueGetterIN7WebCore12JSSVGElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore12JSSVGElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore16JSSVGRectElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSSVGRectElement16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore14SVGRectElement9xAnimatedEv
-__ZN7WebCore21lookupOrCreateWrapperINS_14SVGRectElement20SVGAnimatedTemplateXES1_EEPT_PKT0_RKNS_13QualifiedNameERKNS_12AtomicStringE
-__ZN7WebCore14SVGRectElement20SVGAnimatedTemplateXC1EPKS0_RKNS_13QualifiedNameE
-__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateINS1_9SVGLengthEEENS1_29SVGAnimatedTypeWrapperKeyHashENS1_35SVGAnimatedTypeWrapperKeyHashTraitsENS_10HashTraitsIS6_EEE3getERKS2_
-__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_29SVGAnimatedTypeWrapperKeyHashENS_14PairHashTraitsINS1_35SVGAnimatedTypeWrapperKeyHashTraitsENS_10HashTraitsIiEEEES9_E6expandEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_19SVGAnimatedTemplateINS_9SVGLengthEEEPNS_10SVGElementE
-__ZN7WebCore28JSSVGAnimatedLengthPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore19JSSVGAnimatedLengthC1EPN3KJS8JSObjectEPNS_19SVGAnimatedTemplateINS_9SVGLengthEEEPNS_10SVGElementE
-__ZN7WebCore19JSSVGAnimatedLength18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore19JSSVGAnimatedLengthEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSSVGAnimatedLength16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK3WTF9HashTableIN7WebCore24PODTypeReadWriteHashInfoINS1_9SVGLengthENS1_19SVGAnimatedTemplateIS3_EEEESt4pairIS6_iENS_18PairFirstExtractorIS8_EENS1_28PODTypeReadWriteHashInfoHashIS3_S5_EENS_14PairHashTraitsINS1_30PODTypeReadWriteHashInfoTraitsIS3_S5_EENS_10HashTraitsIiEEEESF_E8containsIS6_NS_22IdentityHashTranslatorIS6_S8_SC_EEEEbRKT_
-__ZNK3WTF7HashMapIN7WebCore24PODTypeReadWriteHashInfoINS1_9SVGLengthENS1_19SVGAnimatedTemplateIS3_EEEEPNS1_35JSSVGPODTypeWrapperCreatorReadWriteIS3_S5_EENS1_28PODTypeReadWriteHashInfoHashIS3_S5_EENS1_30PODTypeReadWriteHashInfoTraitsIS3_S5_EENS_10HashTraitsIS9_EEE3getERKS6_
-__ZN3WTF9HashTableIN7WebCore24PODTypeReadWriteHashInfoINS1_9SVGLengthENS1_19SVGAnimatedTemplateIS3_EEEESt4pairIS6_iENS_18PairFirstExtractorIS8_EENS1_28PODTypeReadWriteHashInfoHashIS3_S5_EENS_14PairHashTraitsINS1_30PODTypeReadWriteHashInfoTraitsIS3_S5_EENS_10HashTraitsIiEEEESF_E3addIS6_PNS1_35JSSVGPODTypeWrapperCreatorReadWriteIS3_S5_EENS_17HashMapTranslatorILb1ES7_IS6_SN_ENS_18PairBaseHashTraitsISF_NSG_ISN_EEEESI_SC_EEEES7_INS_17HashTableIteratorIS6_S8_SA_SC_SI_SF_EEbERKT_RKT0_
-__ZN3WTF9HashTableIN7WebCore24PODTypeReadWriteHashInfoINS1_9SVGLengthENS1_19SVGAnimatedTemplateIS3_EEEESt4pairIS6_iENS_18PairFirstExtractorIS8_EENS1_28PODTypeReadWriteHashInfoHashIS3_S5_EENS_14PairHashTraitsINS1_30PODTypeReadWriteHashInfoTraitsIS3_S5_EENS_10HashTraitsIiEEEESF_E47removeAndInvalidateWithoutEntryConsistencyCheckEPS8_
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_19JSSVGPODTypeWrapperINS_9SVGLengthEEEPNS_10SVGElementE
-__ZN7WebCore11JSSVGLengthC1EPN3KJS8JSObjectEPNS_19JSSVGPODTypeWrapperINS_9SVGLengthEEEPNS_10SVGElementE
-__ZN7WebCore11JSSVGLength18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore11JSSVGLengthEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore11JSSVGLength16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore35JSSVGPODTypeWrapperCreatorReadWriteINS_9SVGLengthENS_19SVGAnimatedTemplateIS1_EEEcvS1_Ev
-__ZNK7WebCore14SVGRectElement20SVGAnimatedTemplateX7baseValEv
-__ZNK7WebCore14SVGRectElement10xBaseValueEv
-__ZNK7WebCore14SVGRectElement9yAnimatedEv
-__ZN7WebCore21lookupOrCreateWrapperINS_14SVGRectElement20SVGAnimatedTemplateYES1_EEPT_PKT0_RKNS_13QualifiedNameERKNS_12AtomicStringE
-__ZN7WebCore14SVGRectElement20SVGAnimatedTemplateYC1EPKS0_RKNS_13QualifiedNameE
-__ZNK7WebCore14SVGRectElement20SVGAnimatedTemplateY7baseValEv
-__ZNK7WebCore14SVGRectElement10yBaseValueEv
-__ZNK7WebCore14SVGRectElement13widthAnimatedEv
-__ZN7WebCore21lookupOrCreateWrapperINS_14SVGRectElement24SVGAnimatedTemplateWidthES1_EEPT_PKT0_RKNS_13QualifiedNameERKNS_12AtomicStringE
-__ZN7WebCore14SVGRectElement24SVGAnimatedTemplateWidthC1EPKS0_RKNS_13QualifiedNameE
-__ZNK7WebCore14SVGRectElement24SVGAnimatedTemplateWidth7baseValEv
-__ZNK7WebCore14SVGRectElement14widthBaseValueEv
-__ZNK7WebCore14SVGRectElement14heightAnimatedEv
-__ZN7WebCore21lookupOrCreateWrapperINS_14SVGRectElement25SVGAnimatedTemplateHeightES1_EEPT_PKT0_RKNS_13QualifiedNameERKNS_12AtomicStringE
-__ZN7WebCore14SVGRectElement25SVGAnimatedTemplateHeightC1EPKS0_RKNS_13QualifiedNameE
-__ZNK7WebCore14SVGRectElement25SVGAnimatedTemplateHeight7baseValEv
-__ZNK7WebCore14SVGRectElement15heightBaseValueEv
-__ZN7WebCore11JSSVGLength3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore11JSSVGLength16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore9SVGLength8setValueEf
-__ZN7WebCore35JSSVGPODTypeWrapperCreatorReadWriteINS_9SVGLengthENS_19SVGAnimatedTemplateIS1_EEE12commitChangeES1_PNS_10SVGElementE
-__ZN7WebCore14SVGRectElement20SVGAnimatedTemplateX10setBaseValENS_9SVGLengthE
-__ZN7WebCore14SVGRectElement20SVGAnimatedTemplateY10setBaseValENS_9SVGLengthE
-__ZN3WTF7HashMapIN7WebCore6StringEPNS_7HashSetIPNS1_16SVGStyledElementENS_7PtrHashIS5_EENS_10HashTraitsIS5_EEEENS1_10StringHashENS8_IS2_EENS8_ISB_EEE3addERKS2_RKSB_
-__ZN7WebCore21SVGDocumentExtensions21removePendingResourceERKNS_12AtomicStringE
-__ZN7WebCore11SVGResource17invalidateClientsEN3WTF7HashSetIPNS_16SVGStyledElementENS1_7PtrHashIS4_EENS1_10HashTraitsIS4_EEEE
-__ZNK7WebCore18SVGGradientElement26gradientTransformBaseValueEv
-__ZNK7WebCore18SVGGradientElement17gradientTransformEv
-__ZNK7WebCore17SVGPatternElement25patternTransformBaseValueEv
-__ZNK7WebCore17SVGPatternElement16patternTransformEv
-__ZN7WebCore13SVGUseElement24alterShadowTreeForSVGTagEPNS_10SVGElementE
-__ZN7WebCore15viewConstructorEPNS_8DocumentEb
-__ZN7WebCore14SVGViewElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
-__ZN7WebCore14SVGViewElement20parseMappedAttributeEPNS_15MappedAttributeE
-__ZN7WebCore14SVGViewElement16rendererIsNeededEPNS_11RenderStyleE
-__ZThn80_NK7WebCore14SVGViewElement14contextElementEv
-__ZNK7WebCore14SVGViewElement14contextElementEv
-__ZNK7WebCore14SVGViewElement10viewTargetEv
-__ZN7WebCore26RenderSVGViewportContainer5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore26RenderSVGViewportContainer22applyContentTransformsERNS_12RenderObject9PaintInfoE
-__ZN7WebCore26RenderSVGViewportContainer25applyAdditionalTransformsERNS_12RenderObject9PaintInfoE
-__ZN7WebCore26RenderSVGViewportContainer11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore14RenderSVGImage12imageChangedEPNS_11CachedImageE
-__ZN7WebCore14SVGImageLoader17dispatchLoadEventEv
-__ZN7WebCore8SVGImageC1EPNS_13ImageObserverE
-__ZN7WebCore8SVGImage11dataChangedEb
-__ZN7WebCore25SVGEmptyFrameLoaderClient20createDocumentLoaderERKNS_15ResourceRequestERKNS_14SubstituteDataE
-__ZN7WebCore25SVGEmptyFrameLoaderClient22provisionalLoadStartedEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient25setMainFrameDocumentReadyEb
-__ZN7WebCore25SVGEmptyFrameLoaderClient17setCopiesOnScrollEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient31prepareForDataSourceReplacementEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient31transitionToCommittedForNewPageEv
-__ZN7WebCore20SVGEmptyEditorClient23clearUndoRedoOperationsEv
-__ZN7WebCore20SVGEmptyChromeClient16setStatusbarTextERKNS_6StringE
-__ZN7WebCore25SVGEmptyFrameLoaderClient15finishedLoadingEPNS_14DocumentLoaderE
-__ZN7WebCore25SVGEmptyFrameLoaderClient18frameLoadCompletedEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient21forceLayoutForNonHTMLEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient9userAgentERKNS_4KURLE
-__ZN7WebCore25SVGEmptyFrameLoaderClient17cancelPolicyCheckEv
-__ZN7WebCore20SVGEmptyChromeClient30canRunBeforeUnloadConfirmPanelEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient22clearArchivedResourcesEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient27willChangeEstimatedProgressEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient31postProgressStartedNotificationEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient26didChangeEstimatedProgressEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient31dispatchDidStartProvisionalLoadEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient32assignIdentifierToInitialRequestEmPNS_14DocumentLoaderERKNS_15ResourceRequestE
-__ZN7WebCore25SVGEmptyFrameLoaderClient23dispatchWillSendRequestEPNS_14DocumentLoaderEmRNS_15ResourceRequestERKNS_16ResourceResponseE
-__ZN7WebCore25SVGEmptyFrameLoaderClient31dispatchDecidePolicyForMIMETypeEMNS_11FrameLoaderEFvNS_12PolicyActionEERKNS_6StringERKNS_15ResourceRequestE
-__ZN7WebCore11FrameLoader24cancelContentPolicyCheckEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient17dispatchWillCloseEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient18makeRepresentationEPNS_14DocumentLoaderE
-__ZN7WebCore14DocumentLoaderD2Ev
-__ZNK7WebCore17FrameLoaderClient11hasHTMLViewEv
-__ZNK7WebCore25SVGEmptyFrameLoaderClient17overrideMediaTypeEv
-__ZN7WebCore6Widget6resizeEii
-__ZN7WebCore25SVGEmptyFrameLoaderClient29dispatchDidHandleOnloadEventsEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient22dispatchDidFirstLayoutEv
-__ZN7WebCore25SVGEmptyFrameLoaderClient29dispatchDidFinishDocumentLoadEv
-__ZNK7WebCore8SVGImage4sizeEv
-__ZNK7WebCore11SVGDocument11rootElementEv
-__ZNK7WebCore8SVGImage16hasRelativeWidthEv
-__ZN7WebCore10CachedFont4dataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
-__ZN7WebCore10CachedFont11checkNotifyEv
-__ZN7WebCore17CSSFontFaceSource10fontLoadedEPNS_10CachedFontE
-__ZN7WebCore11CSSFontFace10fontLoadedEPNS_17CSSFontFaceSourceE
-__ZNK7WebCore11CSSFontFace8isLoadedEv
-__ZN7WebCore20CSSSegmentedFontFace10fontLoadedEPNS_11CSSFontFaceE
-__ZNK7WebCore20CSSSegmentedFontFace8isLoadedEv
-__ZN7WebCore15CSSFontSelector10fontLoadedEPNS_20CSSSegmentedFontFaceE
-__ZN3WTF20deleteAllPairSecondsIPN7WebCore14SimpleFontDataEKNS_7HashMapIiS3_NS_7IntHashIjEENS_10HashTraitsIiEENS7_IS3_EEEEEEvRT0_
-__ZN7WebCore14SimpleFontDataD1Ev
-__ZN7WebCore14SimpleFontData15platformDestroyEv
-__ZN3WTF20deleteAllPairSecondsIPN7WebCore13GlyphWidthMap14GlyphWidthPageEKNS_7HashMapIiS4_NS_7IntHashIjEENS_10HashTraitsIiEENS8_IS4_EEEEEEvRT0_
-__ZN7WebCore10SVGElement13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERib
-__ZN7WebCore10CachedFont17ensureSVGFontDataEv
-__ZNK7WebCore10CachedFont14getSVGFontByIdERKNS_6StringE
-__ZN7WebCore10CachedFont26platformDataFromCustomDataEfbb
-__ZN7WebCore15SVGTitleElement19removedFromDocumentEv
-__ZN7WebCore16SVGScriptElementD1Ev
-__ZN7WebCore24JSSVGPODTypeWrapperCacheINS_9FloatRectENS_19SVGAnimatedTemplateIS1_EEE13forgetWrapperEPNS_19JSSVGPODTypeWrapperIS1_EE
-__ZN7WebCore18JSSVGRectPrototypeD0Ev
-__ZN7WebCore11JSSVGMatrixD0Ev
-__ZN7WebCore24JSSVGPODTypeWrapperCacheINS_9SVGLengthENS_19SVGAnimatedTemplateIS1_EEE13forgetWrapperEPNS_19JSSVGPODTypeWrapperIS1_EE
-__ZN3WTF9HashTableIN7WebCore24PODTypeReadWriteHashInfoINS1_9SVGLengthENS1_19SVGAnimatedTemplateIS3_EEEESt4pairIS6_iENS_18PairFirstExtractorIS8_EENS1_28PODTypeReadWriteHashInfoHashIS3_S5_EENS_14PairHashTraitsINS1_30PODTypeReadWriteHashInfoTraitsIS3_S5_EENS_10HashTraitsIiEEEESF_E4findIS6_NS_22IdentityHashTranslatorIS6_S8_SC_EEEENS_17HashTableIteratorIS6_S8_SA_SC_SI_SF_EERKT_
-__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_29SVGAnimatedTypeWrapperKeyHashENS_14PairHashTraitsINS1_35SVGAnimatedTypeWrapperKeyHashTraitsENS_10HashTraitsIiEEEES9_E4findIS2_NS_22IdentityHashTranslatorIS2_S4_S7_EEEENS_17HashTableIteratorIS2_S4_S6_S7_SC_S9_EERKT_
-__ZN7WebCore16SVGInlineFlowBoxD1Ev
-__ZN7WebCore14RenderSVGTSpanD1Ev
-__ZN7WebCore16SVGInlineTextBox14paintSelectionEiRKNS_7SVGCharEPKtiPNS_15GraphicsContextEPNS_11RenderStyleEPKNS_4FontE
-__ZNK7WebCore14SVGLineElement15supportsMarkersEv
-__ZNK7WebCore4Font20drawTextUsingSVGFontEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
-__ZN7WebCore16SVGTextRunWalkerINS_28SVGTextRunWalkerDrawTextDataEE4walkERKNS_7TextRunEbRKNS_6StringEii
-__ZN7WebCore28drawTextUsingSVGFontCallbackERKNS_18SVGGlyphIdentifierERNS_28SVGTextRunWalkerDrawTextDataE
-__ZN7WebCore13SVGUseElement6detachEv
-__ZN7WebCore15SVGGlyphElement19removedFromDocumentEv
-__ZN7WebCore14SVGFontElement20removeGlyphFromCacheEPNS_15SVGGlyphElementE
-__ZN7WebCore16SVGRootInlineBox37retrievePaintServersForTextDecorationEPNS_12RenderObjectE
-__ZN3WTF6VectorIPN7WebCore12RenderObjectELm0EE14expandCapacityEmPKS3_
-__ZN3WTF6VectorIPN7WebCore12RenderObjectELm0EE14expandCapacityEm
-__ZN3WTF6VectorIPN7WebCore12RenderObjectELm0EE15reserveCapacityEm
-__ZN3WTF6VectorIPN7WebCore12RenderObjectELm0EE6shrinkEm
-__ZN7WebCore16SVGInlineTextBox15paintDecorationENS_15ETextDecorationEPNS_15GraphicsContextEiiiRKNS_7SVGCharERKNS_21SVGTextDecorationInfoE
-__ZN3WTF7HashMapIiPN7WebCore12RenderObjectENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3setERKiRKS3_
-__ZN7WebCore17RenderSVGTextPathD1Ev
+__ZNK7WebCore14SVGPathElement10toPathDataEv
+__ZN7WebCore14SVGPathSegList10toPathDataEv
+__ZNK7WebCore19SVGPathSegMovetoAbs11pathSegTypeEv
+__ZNK7WebCore19SVGPathSegLinetoAbs11pathSegTypeEv
+__ZNK7WebCore19SVGPathSegClosePath11pathSegTypeEv
__ZN7WebCore18getPaintServerByIdEPNS_8DocumentERKNS_12AtomicStringE
+__ZN7WebCore18SVGGradientElement14canvasResourceEv
+__ZNK7WebCore24SVGLinearGradientElement12gradientTypeEv
+__ZN7WebCore28SVGPaintServerLinearGradientC1EPKNS_18SVGGradientElementE
+__ZN7WebCore28SVGPaintServerLinearGradientC2EPKNS_18SVGGradientElementE
+__ZN7WebCore22SVGPaintServerGradientC2EPKNS_18SVGGradientElementE
__ZNK7WebCore14SVGPaintServer12resourceTypeEv
__ZNK7WebCore10RenderPath12isRenderPathEv
__ZN7WebCore11SVGResource9addClientEPNS_16SVGStyledElementE
-__ZN3WTF7HashMapIPN7WebCore16SVGStyledElementEPNS1_11ResourceSetENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setERKS3_RKS5_
+__ZNK3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E8cont
+__ZN3WTF7HashSetIPN7WebCore16SVGStyledElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expan
+__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehas
+__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allo
+__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deal
+__ZNK3WTF7HashMapIPN7WebCore16SVGStyledElementEPNS1_11ResourceSetENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
+__ZN3WTF7HashMapIPN7WebCore16SVGStyledElementEPNS1_11ResourceSetENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setERKS3_RKS
__ZNK7WebCore22SVGPaintServerGradient5setupERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeEb
-__ZNK7WebCore24SVGRadialGradientElement13buildGradientEv
-__ZNK7WebCore24SVGRadialGradientElement25collectGradientPropertiesEv
+__ZNK7WebCore24SVGLinearGradientElement13buildGradientEv
+__ZNK7WebCore24SVGLinearGradientElement25collectGradientPropertiesEv
__ZNK7WebCore18SVGGradientElement10buildStopsEv
__ZNK7WebCore14SVGStopElement14isGradientStopEv
-__ZNK7WebCore14SVGStopElement6offsetEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGStopElementEfXadL_ZNS_8SVGNames13stopTagStringEEEXadL_ZNS2_16offsetAttrStringEEEE5va
+__ZN7WebCore16SVGStyledElement12resolveStyleEPNS_11RenderStyleE
+__ZN7WebCoreL25colorFromSVGColorCSSValueEPNS_8CSSValueEPNS_11RenderStyleE
+__ZNK7WebCore8SVGColor9colorTypeEv
+__ZN7WebCore13StyleStopDataC1ERKS0_
+__ZN7WebCore13StyleStopDataC2ERKS0_
__ZN3WTF6VectorISt4pairIfN7WebCore5ColorEELm0EE14expandCapacityEmPKS4_
__ZN3WTF6VectorISt4pairIfN7WebCore5ColorEELm0EE14expandCapacityEm
__ZN3WTF6VectorISt4pairIfN7WebCore5ColorEELm0EE15reserveCapacityEm
__ZN3WTF6VectorISt4pairIfN7WebCore5ColorEELm0EEaSERKS5_
+__ZN3WTF6VectorISt4pairIfN7WebCore5ColorEELm0EE14shrinkCapacityEm
__ZN3WTF6VectorISt4pairIfN7WebCore5ColorEELm0EE6shrinkEm
+__ZNK7WebCore19SVGAnimatedPropertyINS_24SVGLinearGradientElementENS_9SVGLengthEXadL_ZNS_8SVGNames23linearGradientTagStringEEEXa
__ZN3WTF7HashSetIPKN7WebCore18SVGGradientElementENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
-__ZNK7WebCore18SVGGradientElement4hrefEv
+__ZN3WTF9HashTableIPKN7WebCore18SVGGradientElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6ex
+__ZN3WTF9HashTableIPKN7WebCore18SVGGradientElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6re
+__ZN3WTF9HashTableIPKN7WebCore18SVGGradientElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E13a
+__ZN3WTF9HashTableIPKN7WebCore18SVGGradientElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E15d
__ZN3WTF6VectorISt4pairIfN7WebCore5ColorEELm0EEC1ERKS5_
-__ZN7WebCore22SVGPaintServerGradient16setGradientStopsERKN3WTF6VectorISt4pairIfNS_5ColorEELm0EEE
+__ZN3WTF6VectorISt4pairIfN7WebCore5ColorEELm0EEC2ERKS5_
+__ZN7WebCore10FloatPoint15narrowPrecisionEdd
+__ZN7WebCore8Gradient15setSpreadMethodENS_20GradientSpreadMethodE
+__ZN7WebCore22SVGPaintServerGradient11setGradientEN3WTF10PassRefPtrINS_8GradientEEE
__ZN7WebCore22SVGPaintServerGradient18setBoundingBoxModeEb
-__ZN7WebCore22SVGPaintServerGradient23setGradientSpreadMethodERKNS_23SVGGradientSpreadMethodE
-__ZN7WebCore22SVGPaintServerGradient20setGradientTransformERKNS_15AffineTransformE
-__ZN7WebCore28SVGPaintServerRadialGradient17setGradientCenterERKNS_10FloatPointE
-__ZN7WebCore28SVGPaintServerRadialGradient16setGradientFocalERKNS_10FloatPointE
-__ZN7WebCore28SVGPaintServerRadialGradient17setGradientRadiusEf
-__ZN7WebCore22SVGPaintServerGradient25updateQuartzGradientCacheEPKS0_
-__ZNK7WebCore22SVGPaintServerGradient13gradientStopsEv
-__ZN7WebCore22SVGPaintServerGradient30updateQuartzGradientStopsCacheERKN3WTF6VectorISt4pairIfNS_5ColorEELm0EEE
-__ZN3WTF6VectorIN7WebCore22SVGPaintServerGradient18QuartzGradientStopELm0EE6resizeEm
-__ZN3WTF6VectorIN7WebCore22SVGPaintServerGradient18QuartzGradientStopELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore22SVGPaintServerGradient18QuartzGradientStopELm0EE15reserveCapacityEm
-__ZNK7WebCore28SVGPaintServerRadialGradient4typeEv
-__ZNK7WebCore28SVGPaintServerRadialGradient14gradientCenterEv
-__ZNK7WebCore28SVGPaintServerRadialGradient13gradientFocalEv
-__ZNK7WebCore28SVGPaintServerRadialGradient14gradientRadiusEv
-__ZNK7WebCore22SVGPaintServerGradient10renderPathERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeE
+__ZN7WebCore22SVGPaintServerGradient20setGradientTransformERKNS_20TransformationMatrixE
+__ZN7WebCore28SVGPaintServerLinearGradient16setGradientStartERKNS_10FloatPointE
+__ZN7WebCore28SVGPaintServerLinearGradient14setGradientEndERKNS_10FloatPointE
__ZNK7WebCore22SVGPaintServerGradient15boundingBoxModeEv
-__ZNK7WebCore14SVGPaintServer14clipToFillPathEP9CGContextPKNS_12RenderObjectE
-__ZNK7WebCore22SVGPaintServerGradient46handleBoundingBoxModeAndGradientTransformationEPNS_15GraphicsContextERKNS_9FloatRectE
-__ZN7WebCore36CGAffineTransformMakeMapBetweenRectsE6CGRectS0_
__ZNK7WebCore22SVGPaintServerGradient17gradientTransformEv
__ZNK7WebCore22SVGPaintServerGradient8teardownERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeEb
-__ZN7WebCore18cgGradientCallbackEPvPKfPf
-__ZN7WebCore18SVGGradientElementD0Ev
-__ZN7WebCore28SVGPaintServerRadialGradientD1Ev
-__ZN7WebCore22SVGPaintServerGradientD0Ev
-__ZN7WebCore18releaseCachedStopsEPv
-__ZN3WTF6VectorIN7WebCore22SVGPaintServerGradient18QuartzGradientStopELm0EE6shrinkEm
-__ZN7WebCore14SVGPaintServerD0Ev
-__ZN7WebCore11SVGResourceD0Ev
-__ZN7WebCore15SVGStyleElementD1Ev
-__ZN7WebCore11SVGAElementD1Ev
-__ZNK7WebCore14SVGPolyElement15supportsMarkersEv
-__ZN7WebCore28SVGPaintServerLinearGradientD1Ev
-__ZN7WebCore8SVGColorD1Ev
-__ZN7WebCore14RenderSVGImage5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore14RenderSVGImage25adjustRectsForAspectRatioERNS_9FloatRectES2_PNS_22SVGPreserveAspectRatioE
-__ZN7WebCore8SVGImage4drawEPNS_15GraphicsContextERKNS_9FloatRectES5_NS_17CompositeOperatorE
-__ZN7WebCore5Image14resetAnimationEv
-__ZN7WebCore28JSSVGAnimatedLengthPrototypeD0Ev
-__ZN7WebCore17SVGPatternElement14canvasResourceEv
-__ZN7WebCore21SVGPaintServerPatternC1EPKNS_17SVGPatternElementE
-__ZNK7WebCore21SVGPaintServerPattern5setupERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeEb
-__ZNK7WebCore17SVGPatternElement12buildPatternERKNS_9FloatRectE
-__ZNK7WebCore17SVGPatternElement24collectPatternPropertiesEv
-__ZNK7WebCore17SVGPatternElement1xEv
-__ZNK7WebCore17SVGPatternElement1yEv
-__ZNK7WebCore17SVGPatternElement6heightEv
-__ZN3WTF7HashSetIPKN7WebCore17SVGPatternElementENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
-__ZNK7WebCore17SVGPatternElement4hrefEv
-__ZN7WebCore30clampImageBufferSizeToViewportEPNS_12RenderObjectERNS_7IntSizeE
-__ZN7WebCore11ImageBuffer6createERKNS_7IntSizeEb
-__ZN7WebCore11ImageBufferC1EPvRKNS_7IntSizeESt8auto_ptrINS_15GraphicsContextEE
-__ZNK7WebCore11ImageBuffer7contextEv
-__ZN7WebCore20renderSubtreeToImageEPNS_11ImageBufferEPNS_12RenderObjectE
-__ZN7WebCore21SVGPaintServerPattern19setPatternTransformERKNS_15AffineTransformE
-__ZN7WebCore21SVGPaintServerPattern20setPatternBoundariesERKNS_9FloatRectE
-__ZN7WebCore21SVGPaintServerPattern7setTileESt8auto_ptrINS_11ImageBufferEE
-__ZNK7WebCore21SVGPaintServerPattern4tileEv
-__ZNK7WebCore21SVGPaintServerPattern16patternTransformEv
-__ZNK7WebCore21SVGPaintServerPattern17patternBoundariesEv
-__ZNK7WebCore11ImageBuffer7cgImageEv
-__ZNK7WebCore21SVGPaintServerPattern8teardownERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeEb
-__ZNK7WebCore12RenderObject12isRenderPathEv
-__ZN7WebCore13RenderSVGText13absoluteRectsERN3WTF6VectorINS_7IntRectELm0EEEiib
-__ZN7WebCore11ImageBufferD1Ev
-__ZNK7WebCore24SVGLinearGradientElement13buildGradientEv
-__ZNK7WebCore24SVGLinearGradientElement25collectGradientPropertiesEv
-__ZN7WebCore16SVGStyledElement12resolveStyleEPNS_11RenderStyleE
-__ZN7WebCore28SVGPaintServerLinearGradient16setGradientStartERKNS_10FloatPointE
-__ZN7WebCore28SVGPaintServerLinearGradient14setGradientEndERKNS_10FloatPointE
-__ZNK7WebCore28SVGPaintServerLinearGradient4typeEv
-__ZNK7WebCore28SVGPaintServerLinearGradient13gradientStartEv
-__ZNK7WebCore28SVGPaintServerLinearGradient11gradientEndEv
-__ZNK7WebCore14SVGPaintServer16clipToStrokePathEP9CGContextPKNS_12RenderObjectE
-__ZNK7WebCore24SVGLinearGradientElement2x1Ev
-__ZNK7WebCore24SVGLinearGradientElement2y1Ev
-__ZNK7WebCore24SVGLinearGradientElement2x2Ev
-__ZNK7WebCore24SVGLinearGradientElement2y2Ev
-__ZNK7WebCore18SVGGradientElement12spreadMethodEv
-__ZNK7WebCore24SVGRadialGradientElement2cxEv
-__ZNK7WebCore24SVGRadialGradientElement2cyEv
-__ZNK7WebCore24SVGRadialGradientElement2fxEv
-__ZNK7WebCore24SVGRadialGradientElement2fyEv
-__ZN7WebCore16SVGTransformList11consolidateEv
-__ZN7WebCore15GraphicsContext18setUseAntialiasingEb
-__ZN7WebCore18SVGClipPathElement14canvasResourceEv
-__ZN7WebCore18SVGResourceClipperC1Ev
-__ZNK7WebCore18SVGClipPathElement13clipPathUnitsEv
-__ZNK7WebCore29SVGStyledTransformableElement21isStyledTransformableEv
-__ZNK7WebCore29SVGStyledTransformableElement10toClipPathEv
-__ZN7WebCore18SVGResourceClipper11addClipDataERKNS_4PathENS_8WindRuleEb
-__ZN3WTF6VectorIN7WebCore8ClipDataELm0EE14expandCapacityEmPKS2_
-__ZN3WTF6VectorIN7WebCore8ClipDataELm0EE14expandCapacityEm
-__ZN3WTF6VectorIN7WebCore8ClipDataELm0EE15reserveCapacityEm
-__ZNK7WebCore18SVGResourceClipper8clipDataEv
-__ZNK7WebCore18SVGResourceClipper12resourceTypeEv
-__ZNK7WebCore18SVGResourceClipper9applyClipEPNS_15GraphicsContextERKNS_9FloatRectE
+__ZNK7WebCore14SVGPathElement15supportsMarkersEv
+__ZN7WebCore18SVGGradientElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore24RenderSVGHiddenContainerC1EPNS_16SVGStyledElementE
+__ZN7WebCore24RenderSVGHiddenContainerC2EPNS_16SVGStyledElementE
+__ZN7WebCore14SVGStopElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore21RenderSVGGradientStopC1EPNS_14SVGStopElementE
+__ZN7WebCore21RenderSVGGradientStopC2EPNS_14SVGStopElementE
+__ZN7WebCore21RenderSVGGradientStop14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore21RenderSVGGradientStop15gradientElementEv
+__ZNK7WebCore24SVGRadialGradientElement12gradientTypeEv
+__ZN7WebCore28SVGPaintServerRadialGradientC1EPKNS_18SVGGradientElementE
+__ZN7WebCore28SVGPaintServerRadialGradientC2EPKNS_18SVGGradientElementE
+__ZN7WebCore11SVGResource10invalidateEv
+__ZN7WebCore12SVGTransform8setScaleEff
+__ZN7WebCoreL18ellipseConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore17SVGEllipseElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17SVGEllipseElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore12SVGTransform9setRotateEfff
+__ZN7WebCore17SVGEllipseElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZNK7WebCore17SVGEllipseElement7isValidEv
+__ZNK7WebCore13StyleStopDataeqERKS0_
+__ZN7WebCore24RenderSVGHiddenContainer6layoutEv
+__ZN7WebCore21RenderSVGGradientStop6layoutEv
+__ZNK7WebCore17SVGEllipseElement10toPathDataEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_17SVGEllipseElementENS_9SVGLengthEXadL_ZNS_8SVGNames16ellipseTagStringEEEXadL_ZNS3_12rxAt
+__ZNK7WebCore19SVGAnimatedPropertyINS_17SVGEllipseElementENS_9SVGLengthEXadL_ZNS_8SVGNames16ellipseTagStringEEEXadL_ZNS3_12cyAt
+__ZNK7WebCore19SVGAnimatedPropertyINS_17SVGEllipseElementENS_9SVGLengthEXadL_ZNS_8SVGNames16ellipseTagStringEEEXadL_ZNS3_12cxAt
+__ZNK7WebCore24RenderSVGHiddenContainer29repaintRectInLocalCoordinatesEv
+__ZNK7WebCore12RenderObject22localToParentTransformEv
+__ZNK7WebCore12RenderObject14localTransformEv
+__ZN7WebCore24RenderSVGHiddenContainer5paintERNS_12RenderObject9PaintInfoEii
+__ZNK7WebCore24SVGRadialGradientElement13buildGradientEv
+__ZNK7WebCore24SVGRadialGradientElement25collectGradientPropertiesEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_24SVGRadialGradientElementENS_9SVGLengthEXadL_ZNS_8SVGNames23radialGradientTagStringEEEXa
+__ZN7WebCore28SVGPaintServerRadialGradient17setGradientCenterERKNS_10FloatPointE
+__ZN7WebCore28SVGPaintServerRadialGradient16setGradientFocalERKNS_10FloatPointE
+__ZN7WebCore28SVGPaintServerRadialGradient17setGradientRadiusEf
+__ZN7WebCore13SVGPathParser12calculateArcEbRdS1_dddddbb
+__ZN7WebCore21SVGPathSegListBuilder15svgCurveToCubicEddddddb
+__ZN7WebCore14SVGPathElement31createSVGPathSegCurvetoCubicAbsEffffff
+__ZN7WebCore25SVGPathSegCurvetoCubicAbsC1Effffff
+__ZN7WebCore25SVGPathSegCurvetoCubicAbsC2Effffff
+__ZNK7WebCore25SVGPathSegCurvetoCubicAbs11pathSegTypeEv
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplEPNS1_22SVGPreserveAspectRatioENS1_10StringHashENS_10HashTrait
+__ZN7WebCore22SVGPreserveAspectRatio24parsePreserveAspectRatioERPKtS2_b
+__ZN7WebCore19SVGAnimatedPropertyINS_15SVGURIReferenceENS_6StringEXadL_ZNS_25SVGURIReferenceIdentifierEEEXadL_ZNS_10XLinkNames1
+__ZThn184_NK7WebCore16SVGScriptElement14contextElementEv
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplENS1_6StringENS1_10StringHashENS_10HashTraitsIS6_EENS9_IS7_EEE
+__ZThn288_NK7WebCore16SVGScriptElement13scriptCharsetEv
+__ZNK7WebCore16SVGScriptElement13scriptCharsetEv
+__ZThn288_NK7WebCore16SVGScriptElement21charsetAttributeValueEv
+__ZNK7WebCore16SVGScriptElement21charsetAttributeValueEv
+__ZN7WebCore12SVGTransform9setMatrixENS_20TransformationMatrixE
+__ZN7WebCoreL16tspanConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore15SVGTSpanElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15SVGTSpanElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15SVGTSpanElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore14RenderSVGTSpanC1EPNS_4NodeE
+__ZN7WebCore14RenderSVGTSpanC2EPNS_4NodeE
+__ZN7WebCore15RenderSVGInlineC2EPNS_4NodeE
+__ZNK7WebCore15RenderSVGInline13requiresLayerEv
+__ZNK7WebCore15SVGTSpanElement25childShouldCreateRendererEPNS_4NodeE
+__ZN7WebCore15RenderSVGInline13createFlowBoxEv
+__ZN7WebCore22SVGCharacterLayoutInfo14processedChunkEff
+__ZN3WTF6VectorIN7WebCore26SVGInlineBoxCharacterRangeELm0EE14shrinkCapacityEm
+__ZN7WebCore9InlineBox18isSVGRootInlineBoxEv
+__ZNK7WebCore16SVGInlineFlowBox12svgBoxHeightEv
+__ZN7WebCore30jsHTMLScriptElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLScriptElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSHTMLScriptElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCoreL15defsConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore14SVGDefsElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore14SVGDefsElement7isValidEv
+__ZN7WebCore14SVGDefsElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore8SVGColorC1ERKNS_6StringE
+__ZN7WebCoreL15maskConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore14SVGMaskElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore19SVGAnimatedPropertyINS_14SVGMaskElementEiXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS2_19maskUnitsAttrStringEEEEC
+__ZN7WebCore14SVGMaskElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore14SVGMaskElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZNK7WebCore14SVGMaskElement7isValidEv
+__ZN7WebCore14SVGMaskElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore18RenderSVGContainerC1EPNS_16SVGStyledElementE
+__ZN7WebCore18RenderSVGContainer16setDrawsContentsEb
+__ZN7WebCore14SVGMaskElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore13StyleMaskDataC1ERKS0_
+__ZN7WebCore13StyleMaskDataC2ERKS0_
+__ZNK7WebCore13StyleMaskDataeqERKS0_
+__ZN7WebCore18RenderSVGContainer23calculateLocalTransformEv
__ZN7WebCore14SVGMaskElement14canvasResourceEv
__ZN7WebCore17SVGResourceMaskerC1EPKNS_14SVGMaskElementE
+__ZN7WebCore17SVGResourceMaskerC2EPKNS_14SVGMaskElementE
__ZNK7WebCore17SVGResourceMasker12resourceTypeEv
__ZN7WebCore17SVGResourceMasker9applyMaskEPNS_15GraphicsContextERKNS_9FloatRectE
__ZNK7WebCore14SVGMaskElement17drawMaskerContentERKNS_9FloatRectERS1_
-__ZNK7WebCore14SVGMaskElement9maskUnitsEv
-__ZNK7WebCore14SVGMaskElement1xEv
-__ZNK7WebCore14SVGMaskElement1yEv
-__ZNK7WebCore14SVGMaskElement5widthEv
-__ZNK7WebCore14SVGMaskElement6heightEv
-__ZNK7WebCore14SVGMaskElement16maskContentUnitsEv
-__ZN7WebCore33applyExpandAlphatoGrayscaleFilterEP7CIImage
-__ZN3WTF6VectorIN7WebCore8ClipDataELm0EE6shrinkEm
-__ZN7WebCore24RenderSVGHiddenContainer11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore16SVGMarkerElement14canvasResourceEv
-__ZN7WebCore17SVGResourceMarkerC1Ev
-__ZN7WebCore17SVGResourceMarker9setMarkerEPNS_26RenderSVGViewportContainerE
-__ZN7WebCore13SVGSVGElement14createSVGAngleEv
-__ZN7WebCore16SVGMarkerElement16setOrientToAngleEPNS_8SVGAngleE
-__ZN7WebCore16SVGMarkerElement23setOrientAngleBaseValueEPNS_8SVGAngleE
-__ZZNK7WebCore21SVGDocumentExtensions12baseValueMapIPNS_8SVGAngleEEEPN3WTF7HashMapIPKNS_10SVGElementEPNS5_IPNS_10StringImplET_NS_10StringHashENS4_10HashTraitsISA_EENSD_ISB_EEEENS4_7PtrHashIS8_EENSD_IS8_EENSD_ISH_EEEEvE14s_baseValueMap
-__ZN7WebCore16SVGMarkerElement14setOrientAngleEPNS_8SVGAngleE
-__ZNK7WebCore16SVGMarkerElement10orientTypeEv
-__ZNK7WebCore16SVGMarkerElement11orientAngleEv
-__ZNK7WebCore8SVGAngle5valueEv
-__ZNK7WebCore16SVGMarkerElement4refYEv
-__ZNK7WebCore16SVGMarkerElement4refXEv
-__ZN7WebCore17SVGResourceMarker6setRefEdd
-__ZNK7WebCore16SVGMarkerElement11markerUnitsEv
-__ZNK7WebCore17SVGResourceMarker12resourceTypeEv
-__ZN7WebCore15DrawMarkersDataC1EPNS_15GraphicsContextEPNS_17SVGResourceMarkerES4_d
-__ZN7WebCore22drawStartAndMidMarkersEPvPKNS_11PathElementE
-__ZN7WebCore18drawMarkerWithDataEPNS_15GraphicsContextERNS_10MarkerDataE
-__ZN7WebCore17SVGResourceMarker4drawEPNS_15GraphicsContextERKNS_9FloatRectEdddd
-__ZN3WTF7HashSetIPN7WebCore17SVGResourceMarkerENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
-__ZNK7WebCore17SVGResourceMarker12cachedBoundsEv
-__ZN7WebCore17SVGResourceMarkerD1Ev
-__ZN7WebCore18SVGResourceClipper13resetClipDataEv
-__ZNK7WebCore10SVGElement21isStyledTransformableEv
-__ZN7WebCore11SVGFontDataD1Ev
-__ZN7WebCore10CachedFont20allReferencesRemovedEv
-__ZN7WebCore16SVGCursorElementD1Ev
-__ZNK7WebCore4Path11debugStringEv
-__ZN7WebCore31CGPathToCFStringApplierFunctionEPvPK13CGPathElement
-__ZN3WTFeqIN7WebCore6StringELm0EEEbRKNS_6VectorIT_XT0_EEES7_
-__ZNK7WebCore11SVGDocument17zoomAndPanEnabledEv
-__ZNK7WebCore13SVGZoomAndPan10zoomAndPanEv
-__ZNK7WebCore12RenderObject4yPosEv
-__ZNK7WebCore12RenderObject4xPosEv
-__ZN7WebCore12RenderObject22positionForCoordinatesEii
-__ZN7WebCore21SVGDocumentExtensions15pauseAnimationsEv
-__ZN7WebCore13SVGSVGElement15pauseAnimationsEv
-__ZNK7WebCore13TimeScheduler16animationsPausedEv
-__ZN7WebCore9CSSParser18parseHSLParametersEPNS_5ValueEPdb
-__ZN7WebCore16makeRGBAFromHSLAEdddd
-__ZN7WebCore10CachedFont20ensureCustomFontDataEv
-__ZN7WebCore28createFontCustomPlatformDataEPNS_12SharedBufferE
-__ZN7WebCore22FontCustomPlatformData16fontPlatformDataEibb
-__ZN3KJS17staticValueGetterIN7WebCore16JSRangePrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSRangePrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore45jsRangePrototypeFunctionCompareBoundaryPointsEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore35jsRangePrototypeFunctionSetEndAfterEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore36jsRangePrototypeFunctionSetEndBeforeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore5Range12setEndBeforeEPNS_4NodeERi
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_14RangeExceptionE
-__ZN7WebCore16JSRangeExceptionC1EPN3KJS8JSObjectEPNS_14RangeExceptionE
-__ZN7WebCore16JSRangeException18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25JSRangeExceptionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore25JSRangeExceptionPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore25JSRangeExceptionPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore16JSRangeExceptionEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSRangeException16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore40jsRangePrototypeFunctionSurroundContentsEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore5Range16surroundContentsEN3WTF10PassRefPtrINS_4NodeEEERi
-__ZNK7WebCore5Range14maxStartOffsetEv
-__ZN7WebCore17HTMLObjectElement7setDataERKNS_6StringE
-__ZN3KJS17staticValueGetterIN7WebCore27JSDOMCoreExceptionPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore27JSDOMCoreExceptionPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore37jsUIEventPrototypeFunctionInitUIEventEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9JSUIEvent9classInfoEv
-__ZN7WebCore39jsTextPrototypeFunctionReplaceWholeTextEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4Text16replaceWholeTextERKNS_6StringERi
-__ZN7WebCore33earliestLogicallyAdjacentTextNodeEPKNS_4TextE
-__ZN7WebCore31latestLogicallyAdjacentTextNodeEPKNS_4TextE
-__ZN7WebCore25min_colorMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore21colorMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore23screenDepthPerComponentEPNS_6WidgetE
-__ZN7WebCore11numberValueEPNS_8CSSValueERf
-__ZN7WebCore30min_monochromeMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore26monochromeMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore18screenIsMonochromeEPNS_6WidgetE
-__ZN7WebCore26min_heightMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore22heightMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore26max_heightMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZNK7WebCore16HTMLTableElement7captionEv
-__ZN7WebCore48jsHTMLTableElementPrototypeFunctionCreateCaptionEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16HTMLTableElement13createCaptionEv
-__ZN7WebCore16HTMLTableElement10setCaptionEN3WTF10PassRefPtrINS_23HTMLTableCaptionElementEEERi
-__ZN7WebCore16HTMLTableElement13deleteCaptionEv
-__ZN7WebCore46jsHTMLTableElementPrototypeFunctionCreateTHeadEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16HTMLTableElement11createTHeadEv
-__ZN7WebCore16HTMLTableElement8setTHeadEN3WTF10PassRefPtrINS_23HTMLTableSectionElementEEERi
-__ZN7WebCore16HTMLTableElement11deleteTHeadEv
-__ZN7WebCore46jsHTMLTableElementPrototypeFunctionCreateTFootEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16HTMLTableElement11createTFootEv
-__ZN7WebCore16HTMLTableElement8setTFootEN3WTF10PassRefPtrINS_23HTMLTableSectionElementEEERi
-__ZN7WebCore16HTMLTableElement11deleteTFootEv
-__ZN7WebCore25toHTMLTableCaptionElementEPN3KJS7JSValueE
-__ZNK7WebCore25JSHTMLTableCaptionElement9classInfoEv
-__ZNK7WebCore25JSHTMLTableCaptionElement4implEv
-__ZN7WebCore25toHTMLTableSectionElementEPN3KJS7JSValueE
-__ZN7WebCore48jsHTMLTableElementPrototypeFunctionDeleteCaptionEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore46jsHTMLTableElementPrototypeFunctionDeleteTHeadEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore46jsHTMLTableElementPrototypeFunctionDeleteTFootEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore19HTMLTableRowElement15sectionRowIndexEv
-__ZN7WebCore6JSAttr16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore6JSAttr8setValueEPN3KJS9ExecStateEPNS1_7JSValueE
-__ZN7WebCore45jsElementPrototypeFunctionRemoveAttributeNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Element19removeAttributeNodeEPNS_4AttrERi
-__ZN7WebCore15HTMLMetaElement12setHttpEquivERKNS_6StringE
-__ZN7WebCore48jsNamedNodeMapPrototypeFunctionRemoveNamedItemNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12NamedAttrMap17removeNamedItemNSERKNS_6StringES3_Ri
-__ZN7WebCore21createFontFaceWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore29JSSVGFontFaceElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore20JSSVGFontFaceElementC1EPN3KJS8JSObjectEPNS_18SVGFontFaceElementE
-__ZNK7WebCore20JSSVGFontFaceElement9classInfoEv
-__ZN7WebCore25createMissingGlyphWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore33JSSVGMissingGlyphElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore24JSSVGMissingGlyphElementC1EPN3KJS8JSObjectEPNS_22SVGMissingGlyphElementE
-__ZNK7WebCore24JSSVGMissingGlyphElement9classInfoEv
-__ZN7WebCore18createGlyphWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore26JSSVGGlyphElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSSVGGlyphElementC1EPN3KJS8JSObjectEPNS_15SVGGlyphElementE
-__ZNK7WebCore17JSSVGGlyphElement9classInfoEv
-__ZNK7WebCore12JSSVGElement9classInfoEv
-__ZN7WebCore17createFontWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore25JSSVGFontElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore16JSSVGFontElementC1EPN3KJS8JSObjectEPNS_14SVGFontElementE
-__ZNK7WebCore16JSSVGFontElement9classInfoEv
-__ZN7WebCore18createTSpanWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore26JSSVGTSpanElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore17JSSVGTSpanElementC1EPN3KJS8JSObjectEPNS_15SVGTSpanElementE
-__ZNK7WebCore17JSSVGTSpanElement9classInfoEv
-__ZN7WebCore56jsSVGTextContentElementPrototypeFunctionGetNumberOfCharsEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore41jsHTMLButtonElementPrototypeFunctionClickEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore50jsHTMLIFrameElementPrototypeFunctionGetSVGDocumentEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore21HTMLFrameOwnerElement14getSVGDocumentERi
-__ZN7WebCore50jsHTMLObjectElementPrototypeFunctionGetSVGDocumentEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16createSetWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore24JSSVGSetElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore30JSSVGAnimationElementPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSSVGSetElementC1EPN3KJS8JSObjectEPNS_13SVGSetElementE
-__ZN7WebCore21JSSVGAnimationElementC2EPN3KJS8JSObjectEPNS_19SVGAnimationElementE
-__ZN7WebCore21JSSVGAnimationElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore30JSSVGAnimationElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore15JSSVGSetElement9classInfoEv
-__ZN7WebCore22JSSVGLengthConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore22JSSVGLengthConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore22JSSVGLengthConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore14SVGRectElement24SVGAnimatedTemplateWidth7animValEv
-__ZN7WebCore61jsSVGTextContentElementPrototypeFunctionGetComputedTextLengthEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore21SVGTextContentElement21getComputedTextLengthEv
-__ZN7WebCore21createTextPathWrapperEPN3KJS9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
-__ZN7WebCore20JSSVGTextPathElementC1EPN3KJS8JSObjectEPNS_18SVGTextPathElementE
-__ZN7WebCore20JSSVGTextPathElement18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore29JSSVGTextPathElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore20JSSVGTextPathElement9classInfoEv
-__ZN7WebCore57jsSVGTextContentElementPrototypeFunctionGetRotationOfCharEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore21SVGTextContentElement17getRotationOfCharElRi
-__ZN7WebCore16JSSVGFontElementD0Ev
-__ZN7WebCore17JSSVGGlyphElementD0Ev
-__ZN7WebCore24JSSVGMissingGlyphElementD0Ev
-__ZN7WebCore20JSSVGFontFaceElementD0Ev
-__ZN7WebCore15JSSVGSetElementD0Ev
-__ZN7WebCore17JSSVGTSpanElementD0Ev
-__ZN7WebCore25JSSVGFontElementPrototypeD0Ev
-__ZN7WebCore26JSSVGGlyphElementPrototypeD0Ev
-__ZN7WebCore33JSSVGMissingGlyphElementPrototypeD0Ev
-__ZN7WebCore29JSSVGFontFaceElementPrototypeD0Ev
-__ZN7WebCore24JSSVGSetElementPrototypeD0Ev
-__ZN7WebCore26JSSVGTSpanElementPrototypeD0Ev
-__ZN7WebCore58jsSVGTextContentElementPrototypeFunctionGetSubStringLengthEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore21SVGTextContentElement18getSubStringLengthElmRi
-__ZN3WTF9HashTableIN7WebCore24PODTypeReadWriteHashInfoINS1_9FloatRectENS1_19SVGAnimatedTemplateIS3_EEEESt4pairIS6_iENS_18PairFirstExtractorIS8_EENS1_28PODTypeReadWriteHashInfoHashIS3_S5_EENS_14PairHashTraitsINS1_30PODTypeReadWriteHashInfoTraitsIS3_S5_EENS_10HashTraitsIiEEEESF_E47removeAndInvalidateWithoutEntryConsistencyCheckEPS8_
-__ZN7WebCore10JSLocation16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore21allowsAccessFromFrameEPN3KJS9ExecStateEPNS_5FrameE
-__ZNK7WebCore23JSDOMSelectionPrototype9classInfoEv
-__ZN7WebCore9JSHistory3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore9JSHistory9customPutEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore46jsHTMLOptionsCollectionPrototypeFunctionRemoveEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore23JSHTMLOptionsCollection9classInfoEv
-__ZN7WebCore23JSHTMLOptionsCollection6removeEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore13MutationEventC1Ev
-__ZN7WebCore15JSMutationEvent18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore15JSMutationEventEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSMutationEvent16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore26JSMutationEventConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore24JSMutationEventPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore43jsHTMLOptionsCollectionPrototypeFunctionAddEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore23JSHTMLOptionsCollection3addEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore21HTMLOptionsCollection3addEN3WTF10PassRefPtrINS_17HTMLOptionElementEEERi
-__ZN7WebCore21HTMLOptionsCollection3addEN3WTF10PassRefPtrINS_17HTMLOptionElementEEEiRi
-__ZNK7WebCore15JSTextPrototype9classInfoEv
-__ZNK7WebCore24JSCharacterDataPrototype9classInfoEv
-__ZNK7WebCore17JSTextConstructor9classInfoEv
-__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionTransformEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGMaskElementENS_9SVGLengthEXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS3_11xAttrStrin
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGMaskElementENS_9SVGLengthEXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS3_11yAttrStrin
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGMaskElementENS_9SVGLengthEXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS3_16heightAttr
+__ZN7WebCore30clampImageBufferSizeToViewportEPNS_9FrameViewERNS_7IntSizeE
+__ZN7WebCore20renderSubtreeToImageEPNS_11ImageBufferEPNS_12RenderObjectE
+__ZNK7WebCore11ImageBuffer12getImageDataERKNS_7IntRectE
+__ZN7WebCore9ImageData6createEjj
+__ZN7WebCore9ImageDataC1Ejj
+__ZN7WebCore9ImageDataC2Ejj
+__ZN7WebCore16CanvasPixelArray6createEj
+__ZN7WebCore16CanvasPixelArrayC1Ej
+__ZN7WebCore16CanvasPixelArrayC2Ej
+__ZN7WebCore11ImageBuffer12putImageDataEPNS_9ImageDataERKNS_7IntRectERKNS_8IntPointE
+__ZN7WebCore30JSHTMLScriptElementConstructorD1Ev
+__ZNK7WebCore21HTMLFrameOwnerElement13scrollingModeEv
+__ZN7WebCore6Widget11handleEventEPNS_5EventE
+__ZNK7WebCore14RenderFieldset10renderNameEv
+__ZN7WebCore8Document17setSecurityOriginEPNS_14SecurityOriginE
+__ZN7WebCore11FrameLoader5writeERKNS_6StringE
+__ZNK7WebCore15CSSInitialValue22isImplicitInitialValueEv
+__ZN7WebCore10CachedFont5errorEv
+__ZNK7WebCore15HTMLLinkElement14isURLAttributeEPNS_9AttributeE
+__ZN7WebCore9TextCodec25getUnencodableReplacementEjNS_19UnencodableHandlingEPc
+__ZN7WebCore21setJSDOMWindowOnclickEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow10setOnclickEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZNK7WebCore17RenderFlexibleBox10renderNameEv
+__ZN7WebCore17RenderFlexibleBoxD0Ev
+__ZN7WebCore24setJSHTMLFormElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLFormElement7setNameERKNS_6StringE
+__ZNK7WebCore16StyleCachedImage8isLoadedEv
+__ZNK7WebCore11RenderBlock18adjustForBorderFitEiRiS1_
+__ZN7WebCore5Image9drawTiledEPNS_15GraphicsContextERKNS_9FloatRectES5_NS0_8TileRuleES6_NS_17CompositeOperatorE
+__ZN7WebCore13InlineFlowBox9paintMaskERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore8SVGImage26nativeImageForCurrentFrameEv
+__ZN7WebCore5Image14startAnimationEb
+__ZN7WebCore13InlineFlowBox14paintBoxShadowEPNS_15GraphicsContextEPNS_11RenderStyleEiiii
+__ZN7WebCore15GraphicsContext18clipOutRoundedRectERKNS_7IntRectERKNS_7IntSizeES6_S6_S6_
+__ZN7WebCore15GraphicsContext7clipOutERKNS_4PathE
+__ZN7WebCore55jsCanvasRenderingContext2DPrototypeFunctionGetImageDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZNK7WebCore24CanvasRenderingContext2D12getImageDataEffffRi
+__ZNK7WebCore17HTMLCanvasElement22convertLogicalToDeviceERKNS_9FloatRectE
+__ZNK7WebCore17HTMLCanvasElement22convertLogicalToDeviceERKNS_10FloatPointE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_9ImageDataE
+__ZN7WebCore11JSImageData15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore11JSImageDataC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9ImageDataEEE
+__ZN7WebCore11JSImageDataC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9ImageDataEEE
+__ZN7WebCore11JSImageData18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16jsImageDataWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17jsImageDataHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore55jsCanvasRenderingContext2DPrototypeFunctionPutImageDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZN7WebCore26JSCanvasRenderingContext2D12putImageDataEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore11toImageDataEN3JSC7JSValueE
+__ZNK7WebCore11JSImageData9classInfoEv
+__ZN7WebCore24CanvasRenderingContext2D12putImageDataEPNS_9ImageDataEffRi
+__ZN7WebCore24CanvasRenderingContext2D12putImageDataEPNS_9ImageDataEffffffRi
+__ZN7WebCore11JSImageDataD1Ev
+__ZN7WebCore11JSImageDataD2Ev
+__ZN7WebCore20JSImageDataPrototypeD1Ev
+__ZN7WebCore9CSSParser11parseCanvasERN3WTF6RefPtrINS_8CSSValueEEE
+__ZNK7WebCore14CSSCanvasValue11isFixedSizeEv
+__ZNK7WebCore10StyleImage13isCachedImageEv
+__ZN7WebCore46jsDocumentPrototypeFunctionGetCSSCanvasContextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document19getCSSCanvasContextERKNS_6StringES3_ii
+__ZN7WebCore8Document19getCSSCanvasElementERKNS_6StringE
+__ZNK3WTF7HashMapIN7WebCore6StringENS_6RefPtrINS1_17HTMLCanvasElementEEENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3getER
+__ZN3WTF7HashMapIN7WebCore6StringENS_6RefPtrINS1_17HTMLCanvasElementEEENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3setERK
+__ZNK7WebCore10StyleImage13errorOccurredEv
+__ZNK7WebCore19StyleGeneratedImage21imageHasRelativeWidthEv
+__ZN7WebCore14CSSCanvasValue5imageEPNS_12RenderObjectERKNS_7IntSizeE
+__ZN7WebCore14CSSCanvasValue7elementEPNS_8DocumentE
+__ZThn104_N7WebCore14CSSCanvasValue13canvasChangedEPNS_17HTMLCanvasElementERKNS_9FloatRectE
+__ZN7WebCore14CSSCanvasValue13canvasChangedEPNS_17HTMLCanvasElementERKNS_9FloatRectE
+__ZNK7WebCore19StyleGeneratedImage4dataEv
+__ZN7WebCore14CSSCanvasValue9fixedSizeEPKNS_12RenderObjectE
+__ZThn104_N7WebCore14CSSCanvasValue15canvasDestroyedEPNS_17HTMLCanvasElementE
+__ZN7WebCore14CSSCanvasValue15canvasDestroyedEPNS_17HTMLCanvasElementE
+__ZN7WebCore14CSSCanvasValueD0Ev
+__ZNK7WebCore16RenderHTMLCanvas10renderNameEv
+__ZN7WebCore53setJSCanvasRenderingContext2DGlobalCompositeOperationEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D27setGlobalCompositeOperationERKNS_6StringE
+__ZN7WebCore22parseCompositeOperatorERKNS_6StringERNS_17CompositeOperatorE
+__ZN7WebCore55jsCanvasRenderingContext2DPrototypeFunctionSetFillColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZN7WebCore26JSCanvasRenderingContext2D12setFillColorEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D12setFillColorEffff
+__ZN7WebCore11CanvasStyleC1Effff
+__ZN7WebCore11CanvasStyleC2Effff
+__ZN7WebCore20makeRGBA32FromFloatsEffff
+__ZN7WebCoreL20colorFloatToRGBAByteEf
+__ZN7WebCore55jsCanvasRenderingContext2DPrototypeFunctionSetTransformEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZN7WebCore24CanvasRenderingContext2D12setTransformEffffff
+__ZNK7WebCore15GraphicsContext6getCTMEv
+__ZNK7WebCore17HTMLCanvasElement13baseTransformEv
__ZN7WebCore24CanvasRenderingContext2D9transformEffffff
+__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionTransformEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZN7WebCore16RenderHTMLCanvas17canvasSizeChangedEv
-__ZN7WebCore63jsCanvasRenderingContext2DPrototypeFunctionCreateRadialGradientEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D20createRadialGradientEffffff
-__ZN7WebCore14CanvasGradientC1ERKNS_10FloatPointEfS3_f
-__ZN7WebCore48jsCanvasRenderingContext2DPrototypeFunctionArcToEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D5arcToEfffffRi
-__ZN7WebCore4Path8addArcToERKNS_10FloatPointES3_f
-__ZN7WebCore56jsCanvasRenderingContext2DPrototypeFunctionBezierCurveToEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore48jsCanvasRenderingContext2DPrototypeFunctionScaleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D5scaleEff
+__ZN7WebCore42setJSCanvasRenderingContext2DShadowOffsetXEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D16setShadowOffsetXEf
+__ZN7WebCore24CanvasRenderingContext2D11applyShadowEv
+__ZN7WebCore42setJSCanvasRenderingContext2DShadowOffsetYEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D16setShadowOffsetYEf
+__ZN7WebCore39setJSCanvasRenderingContext2DShadowBlurEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D13setShadowBlurEf
+__ZN7WebCore40setJSCanvasRenderingContext2DShadowColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D14setShadowColorERKNS_6StringE
+__ZN7WebCore56jsCanvasRenderingContext2DPrototypeFunctionBezierCurveToEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgL
__ZN7WebCore24CanvasRenderingContext2D13bezierCurveToEffffff
-__ZN7WebCore56jsCanvasRenderingContext2DPrototypeFunctionCreatePatternEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore26JSCanvasRenderingContext2D13createPatternEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore24CanvasRenderingContext2D13createPatternEPNS_17HTMLCanvasElementERKNS_6StringERi
-__ZN7WebCore13CanvasPattern19parseRepetitionTypeERKNS_6StringERbS4_Ri
-__ZN7WebCore13CanvasPatternC1EP7CGImagebb
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_13CanvasPatternE
-__ZN7WebCore24JSCanvasPatternPrototype4selfEPN3KJS9ExecStateE
-__ZN7WebCore15JSCanvasPatternC1EPN3KJS8JSObjectEPNS_13CanvasPatternE
-__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_16HTMLImageElementEff
-__ZN7WebCore49jsCanvasRenderingContext2DPrototypeFunctionRotateEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore49jsCanvasRenderingContext2DPrototypeFunctionRotateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZN7WebCore24CanvasRenderingContext2D6rotateEf
__ZN7WebCore15GraphicsContext6rotateEf
-__ZN7WebCore56jsCanvasRenderingContext2DPrototypeFunctionIsPointInPathEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24CanvasRenderingContext2D13isPointInPathEff
-__ZNK7WebCore15AffineTransform8mapPointERKNS_10FloatPointE
-__ZN7WebCore24CanvasRenderingContext2D13createPatternEPNS_16HTMLImageElementERKNS_6StringERi
-__ZN7WebCore13CanvasPatternC1EPNS_11CachedImageEbb
+__ZN7WebCore33setJSCanvasRenderingContext2DFontEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D7setFontERKNS_6StringE
+__ZN7WebCore16CSSStyleSelector20applyPropertyToStyleEiPNS_8CSSValueEPNS_11RenderStyleE
+__ZN7WebCore53jsCanvasRenderingContext2DPrototypeFunctionStrokeTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgList
+__ZN7WebCore26JSCanvasRenderingContext2D10strokeTextEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D10strokeTextERKNS_6StringEff
+__ZN7WebCore24CanvasRenderingContext2D16drawTextInternalERKNS_6StringEffbfb
+__ZN7WebCore24CanvasRenderingContext2D10accessFontEv
+__ZN7WebCore51jsCanvasRenderingContext2DPrototypeFunctionFillTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore26JSCanvasRenderingContext2D8fillTextEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D8fillTextERKNS_6StringEff
+__ZN7WebCore56jsCanvasRenderingContext2DPrototypeFunctionCreatePatternEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgL
+__ZN7WebCore26JSCanvasRenderingContext2D13createPatternEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D13createPatternEPNS_17HTMLCanvasElementERKNS_6StringERi
+__ZN7WebCore13CanvasPattern19parseRepetitionTypeERKNS_6StringERbS4_Ri
+__ZN7WebCore13CanvasPatternC1EPNS_5ImageEbbb
+__ZN7WebCore13CanvasPatternC2EPNS_5ImageEbbb
+__ZN7WebCore7PatternC1EPNS_5ImageEbb
+__ZN7WebCore7PatternC2EPNS_5ImageEbb
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_13CanvasPatternE
+__ZN7WebCore15JSCanvasPattern15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSCanvasPatternC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13CanvasPatternEEE
+__ZN7WebCore15JSCanvasPatternC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13CanvasPatternEEE
__ZNK7WebCore15JSCanvasPattern9classInfoEv
__ZN7WebCore11CanvasStyleC1EN3WTF10PassRefPtrINS_13CanvasPatternEEE
-__ZN7WebCore24CanvasRenderingContext2D16applyFillPatternEv
-__ZN7WebCore13CanvasPattern13createPatternERK17CGAffineTransform
-__ZN7WebCore15patternCallbackEPvP9CGContext
-__ZN7WebCore11BitmapImage13getCGImageRefEv
-__ZN7WebCore22patternReleaseCallbackEPv
-__ZN7WebCore60jsCanvasRenderingContext2DPrototypeFunctionDrawImageFromRectEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore26JSCanvasRenderingContext2D17drawImageFromRectEPN3KJS9ExecStateERKNS1_4ListE
+__ZN7WebCore11CanvasStyleC2EN3WTF10PassRefPtrINS_13CanvasPatternEEE
+__ZN7WebCore15GraphicsContext14setFillPatternEN3WTF10PassRefPtrINS_7PatternEEE
+__ZN7WebCore15GraphicsContext16applyFillPatternEv
+__ZNK7WebCore7Pattern21createPlatformPatternERKNS_20TransformationMatrixE
+__ZN7WebCoreL15patternCallbackEPvP9CGContext
+__ZN7WebCoreL22patternReleaseCallbackEPv
+__ZN7WebCore15JSCanvasPatternD1Ev
+__ZN7WebCore15JSCanvasPatternD2Ev
+__ZN7WebCore7PatternD0Ev
+__ZN7WebCore24JSCanvasPatternPrototypeD1Ev
+__ZN7WebCore58jsCanvasRenderingContext2DPrototypeFunctionCreateImageDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Ar
+__ZNK7WebCore24CanvasRenderingContext2D15createImageDataEff
+__ZN7WebCoreL20createEmptyImageDataERKNS_7IntSizeE
+__ZN7WebCore24CanvasRenderingContext2D5resetEv
+__ZN7WebCore35jsCanvasRenderingContext2DFillStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore26JSCanvasRenderingContext2D9fillStyleEPN3JSC9ExecStateE
+__ZNK7WebCore24CanvasRenderingContext2D9fillStyleEv
+__ZN7WebCoreL4toJSEPN3JSC9ExecStateEPNS_11CanvasStyleE
+__ZN7WebCore37jsCanvasRenderingContext2DStrokeStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore26JSCanvasRenderingContext2D11strokeStyleEPN3JSC9ExecStateE
+__ZNK7WebCore24CanvasRenderingContext2D11strokeStyleEv
+__ZN7WebCore38setJSCanvasRenderingContext2DTextAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D12setTextAlignERKNS_6StringE
+__ZN7WebCore14parseTextAlignERKNS_6StringERNS_9TextAlignE
+__ZN7WebCore54jsCanvasRenderingContext2DPrototypeFunctionMeasureTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
+__ZN7WebCore24CanvasRenderingContext2D11measureTextERKNS_6StringE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_11TextMetricsE
+__ZN7WebCore13JSTextMetrics15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore13JSTextMetricsC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11TextMetricsEEE
+__ZN7WebCore13JSTextMetricsC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11TextMetricsEEE
+__ZN7WebCore13JSTextMetrics18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18jsTextMetricsWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41setJSCanvasRenderingContext2DTextBaselineEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D15setTextBaselineERKNS_6StringE
+__ZN7WebCore17parseTextBaselineERKNS_6StringERNS_12TextBaselineE
+__ZN7WebCore13JSTextMetricsD1Ev
+__ZN7WebCore13JSTextMetricsD2Ev
+__ZN7WebCore22JSTextMetricsPrototypeD1Ev
+__ZN7WebCore48jsCanvasRenderingContext2DPrototypeFunctionArcToEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D5arcToEfffffRi
+__ZN7WebCore4Path8addArcToERKNS_10FloatPointES3_f
+__ZN7WebCore22jsHTMLEmbedElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLEmbedElement4typeEv
+__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_17HTMLCanvasElementERKNS_9FloatRectES5_Ri
+__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_16HTMLImageElementEff
+__ZN7WebCore60jsCanvasRenderingContext2DPrototypeFunctionDrawImageFromRectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7
+__ZN7WebCore26JSCanvasRenderingContext2D17drawImageFromRectEPN3JSC9ExecStateERKNS1_7ArgListE
__ZN7WebCore24CanvasRenderingContext2D17drawImageFromRectEPNS_16HTMLImageElementEffffffffRKNS_6StringE
-__ZN7WebCore13CanvasPatternD1Ev
-__ZN7WebCore24JSCanvasPatternPrototypeD0Ev
-__ZN7WebCore42jsCharacterDataPrototypeFunctionDeleteDataEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore48jsDocumentPrototypeFunctionCreateEntityReferenceEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document21createEntityReferenceERKNS_6StringERi
-__ZN7WebCore45jsDocumentPrototypeFunctionCreateCDATASectionEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document18createCDATASectionERKNS_6StringERi
-__ZNK7WebCore16DocumentFragment8nodeNameEv
-__ZN7WebCore8Document9cloneNodeEb
-__ZN7WebCore45jsCharacterDataPrototypeFunctionSubstringDataEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore42jsCharacterDataPrototypeFunctionInsertDataEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4Node12setNodeValueERKNS_6StringERi
-__ZN7WebCore42jsCharacterDataPrototypeFunctionAppendDataEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore54jsDocumentPrototypeFunctionCreateProcessingInstructionEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4Attr9cloneNodeEb
-__ZN7WebCore44jsDocumentPrototypeFunctionCreateAttributeNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore15JSMutationEvent9classInfoEv
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_14EventExceptionE
-__ZN7WebCore16JSEventExceptionC1EPN3KJS8JSObjectEPNS_14EventExceptionE
-__ZN7WebCore16JSEventException18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore25JSEventExceptionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore16JSEventExceptionEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSEventException16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore17HTMLObjectElement18containsJavaAppletEv
-__ZNK7WebCore15HTMLBaseElement6targetEv
-__ZNK7WebCore16HTMLTableElement7summaryEv
-__ZN7WebCore48jsHTMLTableRowElementPrototypeFunctionDeleteCellEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore19HTMLTableRowElement10deleteCellEiRi
-__ZNK7WebCore14HTMLModElement4citeEv
-__ZNK7WebCore15HTMLMenuElement7compactEv
-__ZNK7WebCore20HTMLTableCellElement7bgColorEv
-__ZNK7WebCore23HTMLTableSectionElement6vAlignEv
-__ZNK7WebCore15HTMLLinkElement8hreflangEv
-__ZNK7WebCore15HTMLAreaElement6noHrefEv
-__ZNK7WebCore20HTMLTableCellElement5alignEv
-__ZN7WebCore51jsHTMLTableSectionElementPrototypeFunctionDeleteRowEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore23HTMLTableSectionElement9deleteRowEiRi
-__ZN7WebCore34jsNodePrototypeFunctionIsSupportedEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4Node11isSupportedERKNS_6StringES3_
-__ZNK7WebCore16HTMLInputElement6useMapEv
-__ZNK7WebCore20HTMLParagraphElement5alignEv
-__ZNK7WebCore20HTMLTableCellElement5chOffEv
-__ZNK7WebCore19HTMLTableColElement5widthEv
-__ZNK7WebCore20HTMLTableCellElement5scopeEv
-__ZNK7WebCore16HTMLImageElement6borderEv
-__ZNK7WebCore16HTMLTableElement5frameEv
-__ZNK7WebCore16HTMLTableElement5alignEv
-__ZNK7WebCore17HTMLOptionElement15defaultSelectedEv
-__ZNK7WebCore23HTMLTableSectionElement5alignEv
-__ZNK7WebCore19HTMLTableColElement2chEv
-__ZNK7WebCore16HTMLTableElement5widthEv
-__ZNK7WebCore16HTMLOListElement7compactEv
-__ZNK7WebCore15HTMLLinkElement6targetEv
-__ZNK7WebCore15HTMLLinkElement7charsetEv
-__ZNK7WebCore23HTMLTableSectionElement5chOffEv
-__ZNK7WebCore20HTMLTableCellElement2chEv
-__ZNK7WebCore15HTMLLinkElement5mediaEv
-__ZNK7WebCore16HTMLDListElement7compactEv
-__ZNK7WebCore19HTMLTableRowElement5alignEv
-__ZNK7WebCore23HTMLTableCaptionElement5alignEv
-__ZNK7WebCore16HTMLTableElement7bgColorEv
-__ZNK7WebCore19HTMLOptGroupElement5labelEv
-__ZNK7WebCore17HTMLAppletElement6objectEv
-__ZNK7WebCore20HTMLFrameElementBase9scrollingEv
-__ZNK7WebCore17HTMLAppletElement4codeEv
-__ZNK7WebCore20HTMLTableCellElement6vAlignEv
-__ZNK7WebCore19HTMLTableColElement5alignEv
-__ZNK7WebCore20HTMLTableCellElement4abbrEv
-__ZNK7WebCore17HTMLAppletElement6vspaceEv
-__ZNK7WebCore15HTMLMetaElement6schemeEv
-__ZNK7WebCore13HTMLHRElement5alignEv
-__ZNK7WebCore19HTMLTableRowElement5chOffEv
-__ZNK7WebCore15HTMLFormElement13acceptCharsetEv
-__ZNK7WebCore19HTMLTableColElement5chOffEv
-__ZNK7WebCore19HTMLTableRowElement6vAlignEv
-__ZNK7WebCore15HTMLFontElement4sizeEv
-__ZNK7WebCore16HTMLTableElement5rulesEv
-__ZNK7WebCore20HTMLTableCellElement7headersEv
-__ZNK7WebCore20HTMLTableCellElement6noWrapEv
-__ZNK7WebCore13HTMLHRElement7noShadeEv
-__ZNK7WebCore13HTMLBRElement5clearEv
-__ZNK7WebCore16HTMLImageElement5isMapEv
-__ZNK7WebCore15HTMLAreaElement9accessKeyEv
-__ZNK7WebCore19HTMLBaseFontElement5colorEv
-__ZNK7WebCore15HTMLAreaElement3altEv
-__ZNK7WebCore14HTMLDivElement5alignEv
-__ZNK7WebCore17HTMLAppletElement7archiveEv
-__ZN7WebCore14HTMLMapElement5areasEv
-__ZNK7WebCore20HTMLDirectoryElement7compactEv
-__ZNK7WebCore15HTMLHeadElement7profileEv
-__ZNK7WebCore17HTMLAppletElement8codeBaseEv
-__ZNK7WebCore16HTMLImageElement8longDescEv
-__ZNK7WebCore23HTMLTableSectionElement2chEv
-__ZNK7WebCore18HTMLIsIndexElement6promptEv
-__ZNK7WebCore16HTMLQuoteElement4citeEv
-__ZNK7WebCore19HTMLTableRowElement2chEv
-__ZNK7WebCore16HTMLInputElement6acceptEv
-__ZNK7WebCore15HTMLFontElement4faceEv
-__ZNK7WebCore21HTMLBlockquoteElement4citeEv
-__ZNK7WebCore19HTMLTextAreaElement9accessKeyEv
-__ZNK7WebCore17HTMLButtonElement9accessKeyEv
-__ZNK7WebCore14HTMLModElement8dateTimeEv
-__ZNK7WebCore19HTMLTableColElement6vAlignEv
-__ZNK7WebCore19HTMLBaseFontElement4sizeEv
-__ZNK7WebCore15HTMLHtmlElement7versionEv
-__ZNK7WebCore19HTMLTableRowElement7bgColorEv
-__ZNK7WebCore17HTMLAppletElement6hspaceEv
-__ZNK7WebCore15HTMLAreaElement5shapeEv
-__ZNK7WebCore17HTMLLegendElement5alignEv
-__ZNK7WebCore16HTMLUListElement7compactEv
-__ZNK7WebCore15HTMLFormElement6targetEv
-__ZNK7WebCore16HTMLParamElement4typeEv
-__ZNK7WebCore20HTMLTableCellElement4axisEv
-__ZNK7WebCore16HTMLImageElement6vspaceEv
-__ZNK7WebCore16HTMLImageElement6hspaceEv
-__ZNK7WebCore14HTMLPreElement5widthEv
-__ZN7WebCore17HTMLSelectElement26listBoxDefaultEventHandlerEPNS_5EventE
-__ZNK7WebCore15HTMLBodyElement5aLinkEv
-__ZNK7WebCore19HTMLBaseFontElement4faceEv
-__ZNK7WebCore16HTMLOListElement4typeEv
-__ZNK7WebCore17HTMLAppletElement3altEv
-__ZNK7WebCore17HTMLOptionElement5labelEv
-__ZNK7WebCore13HTMLHRElement4sizeEv
-__ZNK7WebCore15HTMLFontElement5colorEv
-__ZNK7WebCore15HTMLLinkElement3revEv
-__ZNK7WebCore17HTMLLegendElement9accessKeyEv
-__ZNK7WebCore16HTMLLabelElement9accessKeyEv
-__ZNK7WebCore16HTMLParamElement9valueTypeEv
-__ZNK7WebCore13HTMLHRElement5widthEv
-__ZNK7WebCore17HTMLScriptElement7htmlForEv
-__ZNK7WebCore17HTMLScriptElement5deferEv
-__ZNK7WebCore17HTMLScriptElement5eventEv
-__ZNK7WebCore17HTMLScriptElement7charsetEv
-__ZNK7WebCore17HTMLIFrameElement5alignEv
-__ZNK7WebCore20HTMLFrameElementBase8longDescEv
-__ZNK7WebCore20HTMLFrameElementBase11marginWidthEv
-__ZNK7WebCore20HTMLFrameElementBase12marginHeightEv
-__ZNK7WebCore19HTMLFrameSetElement4rowsEv
-__ZNK7WebCore19HTMLFrameSetElement4colsEv
-__ZN3KJS17staticValueGetterIN7WebCore23JSProcessingInstructionEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore23JSProcessingInstruction16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore15EntityReferenceC1EPNS_8DocumentERKNS_6StringE
-__ZNK7WebCore15EntityReference8nodeTypeEv
-__ZN7WebCore17JSEntityReferenceC1EPN3KJS8JSObjectEPNS_15EntityReferenceE
-__ZNK7WebCore17JSEntityReference9classInfoEv
-__ZN7WebCore17JSEntityReference18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore15EntityReferenceD1Ev
-__ZNK7WebCore21JSHTMLFrameSetElement9classInfoEv
-__ZN7WebCore19CachedXSLStyleSheetD1Ev
-__ZN7WebCore34jsNodePrototypeFunctionIsEqualNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore4Node11isEqualNodeEPS0_
-__ZNK7WebCore4Node6prefixEv
-__ZN7WebCore16PendingCallbacks36PendingProcessingInstructionCallback4callEPNS_12XMLTokenizerE
-__ZN7WebCore41jsNodePrototypeFunctionIsDefaultNamespaceEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore4Node18isDefaultNamespaceERKNS_6StringE
-__ZNK7WebCore4Node15ancestorElementEv
-__ZN7WebCore44jsElementPrototypeFunctionSetAttributeNodeNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9JSElement18setAttributeNodeNSEPN3KJS9ExecStateERKNS1_4ListE
-__ZN7WebCore7Element18setAttributeNodeNSEPNS_4AttrERi
-__ZN7WebCore41jsNodePrototypeFunctionLookupNamespaceURIEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document15canReplaceChildEPNS_4NodeES2_
-__ZN7WebCore36jsDocumentPrototypeFunctionAdoptNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore8Document9adoptNodeEN3WTF10PassRefPtrINS_4NodeEEERi
-__ZNK7WebCore15EntityReference8nodeNameEv
-__ZN7WebCore4Node12insertBeforeEN3WTF10PassRefPtrIS0_EEPS0_Ri
-__ZNK7WebCore12NamedAttrMap14mapsEquivalentEPKS0_
-__ZN7WebCore35jsNodePrototypeFunctionLookupPrefixEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore4Node12lookupPrefixERKNS_6StringE
-__ZNK7WebCore4Node21lookupNamespacePrefixERKNS_6StringEPKNS_7ElementE
-__ZN7WebCore8Document14setDocumentURIERKNS_6StringE
-__ZN7WebCore4Node11removeChildEPS0_Ri
-__ZN7WebCore44jsElementPrototypeFunctionGetAttributeNodeNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore33jsNodePrototypeFunctionIsSameNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore12DocumentType7baseURIEv
-__ZNK7WebCore4Text9wholeTextEv
-__ZN7WebCore23JSProcessingInstruction3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore21ProcessingInstruction12setNodeValueERKNS_6StringERi
-__ZN7WebCore21ProcessingInstruction7setDataERKNS_6StringERi
-__ZNK7WebCore12DocumentType8nodeNameEv
-__ZNK7WebCore4Node17isEventTargetNodeEv
-__ZN7WebCore17JSHTMLFontElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore15HTMLFontElement7setSizeERKNS_6StringE
-__ZN7WebCore16HTMLTableElement10setSummaryERKNS_6StringE
-__ZN7WebCore21JSHTMLTableColElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore19HTMLTableColElement8setWidthERKNS_6StringE
-__ZN7WebCore14RenderTableCol12imageChangedEPNS_11CachedImageE
-__ZN7WebCore18RenderTableSection12imageChangedEPNS_11CachedImageE
-__ZN7WebCore14RenderTableRow5paintERNS_12RenderObject9PaintInfoEii
-__ZN7WebCore16CSSStyleSelector19mapBackgroundOriginEPNS_15BackgroundLayerEPNS_8CSSValueE
-__ZN7WebCore16CSSStyleSelector22mapBackgroundCompositeEPNS_15BackgroundLayerEPNS_8CSSValueE
-__ZN7WebCore9CSSParser20parseTransformOriginEiRiS1_RN3WTF6RefPtrINS_8CSSValueEEES6_
-__ZNK7WebCore27TranslateTransformOperation20isTranslateOperationEv
-__ZN7WebCore27TranslateTransformOperation5applyERNS_15AffineTransformERKNS_7IntSizeE
-__ZN7WebCore8SVGImage16setContainerSizeERKNS_7IntSizeE
-__ZN7WebCore25SVGEmptyFrameLoaderClient15willChangeTitleEPNS_14DocumentLoaderE
-__ZN7WebCore25SVGEmptyFrameLoaderClient14didChangeTitleEPNS_14DocumentLoaderE
-__ZNK7WebCore13SVGSVGElement18relativeWidthValueEv
-__ZNK7WebCore13SVGSVGElement19relativeHeightValueEv
-__ZNK7WebCore16SVGScriptElement14contextElementEv
-__ZN7WebCore12SVGTransform9setMatrixERKNS_15AffineTransformE
-__ZN7WebCore8SVGImage26nativeImageForCurrentFrameEv
-__ZNK7WebCore5Image21mayFillWithSolidColorEv
-__ZNK7WebCore8SVGImage17hasRelativeHeightEv
-__ZN7WebCore13InlineFlowBox14paintBoxShadowEPNS_15GraphicsContextEPNS_11RenderStyleEiiii
-__ZN7WebCore5Image9drawTiledEPNS_15GraphicsContextERKNS_9FloatRectES5_NS0_8TileRuleES6_NS_17CompositeOperatorE
-__ZN7WebCore5Image14startAnimationEv
-__ZNK7WebCore11RenderBlock18adjustForBorderFitEiRiS1_
-__ZN7WebCore7calcHueEddd
-__ZN7WebCore57jsCSSStyleDeclarationPrototypeFunctionGetPropertyCSSValueEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_8CSSValueE
-__ZN7WebCore14JSCSSValueListC1EPN3KJS8JSObjectEPNS_12CSSValueListE
-__ZN7WebCore10JSCSSValueC1EPN3KJS8JSObjectEPNS_8CSSValueE
-__ZN7WebCore14JSCSSValueList18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore10JSCSSValue18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore23JSCSSValueListPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore19JSCSSValuePrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore14JSCSSValueList9classInfoEv
-__ZNK7WebCore9StyleBase10isSVGPaintEv
-__ZNK7WebCore9StyleBase10isSVGColorEv
-__ZN7WebCore19JSCSSPrimitiveValueC1EPN3KJS8JSObjectEPNS_17CSSPrimitiveValueE
-__ZN7WebCore19JSCSSPrimitiveValue18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore28JSCSSPrimitiveValuePrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore19JSCSSPrimitiveValue9classInfoEv
-__ZN7WebCore9CSSParser24parseTimingFunctionValueERPNS_9ValueListERd
-__ZN7WebCore22CSSTimingFunctionValue31isTransitionTimingFunctionValueEv
-__ZN7WebCore30jsHistoryPrototypeFunctionBackEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7History4backEv
-__ZN7WebCore11FrameLoader25scheduleHistoryNavigationEi
-__ZN7WebCore11FrameLoader10historyURLEi
-__ZN7WebCore11FrameLoader15goBackOrForwardEi
-__ZN7WebCore43jsDocumentPrototypeFunctionElementFromPointEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore22CSSTimingFunctionValue7cssTextEv
-__ZN7WebCore22CSSTimingFunctionValueD1Ev
-__ZN7WebCore9CSSParser21parseDashboardRegionsEib
-__ZN7WebCore15DashboardRegionD1Ev
+__ZN7WebCore24CanvasRenderingContext2D13createPatternEPNS_16HTMLImageElementERKNS_6StringERi
+__ZN7WebCore56jsCanvasRenderingContext2DPrototypeFunctionIsPointInPathEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgL
+__ZN7WebCore24CanvasRenderingContext2D13isPointInPathEff
+__ZN7WebCore52jsCanvasRenderingContext2DPrototypeFunctionSetShadowEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore26JSCanvasRenderingContext2D9setShadowEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D9setShadowEfffRKNS_6StringE
+__ZN7WebCore24CanvasRenderingContext2D9setShadowEffff
+__ZN7WebCore24CanvasRenderingContext2D9setShadowEfffRKNS_6StringEf
+__ZN7WebCore22colorWithOverrideAlphaEjf
+__ZN7WebCore24CanvasRenderingContext2D9setShadowEfffffff
+__ZN7WebCore24CanvasRenderingContext2D9setShadowEfffff
+__ZN7WebCore24CanvasRenderingContext2D9setShadowEffffffff
+__ZN7WebCore45jsHTMLCanvasElementPrototypeFunctionToDataURLEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore17HTMLCanvasElement9toDataURLERKNS_6StringERi
+__ZN7WebCore16MIMETypeRegistry35isSupportedImageMIMETypeForEncodingERKNS_6StringE
+__ZN7WebCoreL44initializeSupportedImageMIMETypesForEncodingEv
+__ZNK7WebCore11ImageBuffer9toDataURLERKNS_6StringE
+__ZN7WebCore12base64EncodeERKN3WTF6VectorIcLm0EEERS2_b
+__ZNK7WebCore18JSHTMLQuoteElement9classInfoEv
+__ZNK7WebCore11RenderLayer16enclosingElementEv
+__ZN7WebCore11RenderStyle12clearContentEv
+__ZNK7WebCore15RenderWordBreak10renderNameEv
+__ZN7WebCore30jsCSSPrimitiveValueCSS_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsCSSPrimitiveValueCSS_STRINGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsCSSPrimitiveValuePrimitiveTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsCSSPrimitiveValueCSS_RECTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsCSSPrimitiveValueCSS_PXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore50jsCSSPrimitiveValuePrototypeFunctionGetStringValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore51jsCSSPrimitiveValuePrototypeFunctionGetCounterValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore17CSSPrimitiveValue15getCounterValueERi
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_7CounterE
+__ZN7WebCore52jsCSSPrimitiveValuePrototypeFunctionGetRGBColorValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13getJSRGBColorEPN3JSC9ExecStateEj
+__ZN7WebCore10JSRGBColorC1EPN3JSC9ExecStateEj
+__ZN7WebCore10JSRGBColorC2EPN3JSC9ExecStateEj
+__ZN7WebCore31jsCSSPrimitiveValueCSS_RGBCOLOREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore48jsCSSPrimitiveValuePrototypeFunctionGetRectValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore17CSSPrimitiveValue12getRectValueERi
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_4RectE
+__ZN7WebCore10JSRGBColorD1Ev
+__ZN7WebCore19mimeTypeFromDataURLERKNS_6StringE
+__ZNK7WebCore12RenderObject12isRenderPartEv
__ZN7WebCore11RenderBlock18heightForLineCountEi
-__ZN7WebCore21getHeightForLineCountEPNS_11RenderBlockEibRi
+__ZN7WebCoreL21getHeightForLineCountEPNS_11RenderBlockEibRi
__ZN7WebCore11RenderBlock11lineAtIndexEi
-__ZN7WebCore14getLineAtIndexEPNS_11RenderBlockEiRi
-__ZNK7WebCore17ImplicitAnimation8progressEv
-__ZNK7WebCore12CSSStyleRule7cssTextEv
-__ZN7WebCore26skipCommaInDashboardRegionEPNS_9ValueListE
-__ZN7WebCore6String6appendEc
-__ZN7WebCore5TimerINS_26AnimationControllerPrivateEE5firedEv
-__ZN7WebCore26AnimationControllerPrivate10timerFiredEPNS_5TimerIS0_EE
+__ZN7WebCoreL14getLineAtIndexEPNS_11RenderBlockEiRi
+__ZN7WebCore20jsCommentConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9JSComment14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore20JSCommentConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore18JSCommentPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSCommentConstructorD1Ev
+__ZN7WebCore11CSSSelector8parseNthEv
+__ZN7WebCore11CSSSelector8RareData8parseNthEv
+__ZN7WebCore11CSSSelector8matchNthEi
+__ZN7WebCore11CSSSelector8RareData8matchNthEi
+__ZN7WebCore52jsCSSStyleDeclarationPrototypeFunctionRemovePropertyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13CSSStyleSheet18determineNamespaceERKNS_12AtomicStringE
+__ZN7WebCore9CSSParser21parseDashboardRegionsEib
+__ZN3WTF10RefCountedIN7WebCore15DashboardRegionEE5derefEv
+__ZN7WebCoreL35device_aspect_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL16parseAspectRatioEPNS_8CSSValueERiS2_
+__ZN7WebCore46jsDOMWindowPrototypeFunctionGetMatchedCSSRulesEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore9DOMWindow18getMatchedCSSRulesEPNS_7ElementERKNS_6StringEb
+__ZNK7WebCore15CSSFontFaceRule4typeEv
+__ZN7WebCore17JSCSSFontFaceRule15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSCSSFontFaceRuleC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15CSSFontFaceRuleEEE
+__ZN7WebCore17JSCSSFontFaceRuleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15CSSFontFaceRuleEEE
+__ZN7WebCore17JSCSSFontFaceRule18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22jsCSSFontFaceRuleStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSCSSValueList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSCSSValueListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12CSSValueListEEE
+__ZN7WebCore14JSCSSValueListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12CSSValueListEEE
+__ZN7WebCore14JSCSSValueList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore17jsCSSValueCssTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSCSSValueListD1Ev
+__ZN7WebCore17JSCSSFontFaceRuleD1Ev
+__ZN7WebCore23JSCSSValueListPrototypeD1Ev
+__ZN7WebCore26JSCSSFontFaceRulePrototypeD1Ev
+__ZSt21__inplace_stable_sortIPPN7WebCore11CSSFontFaceEPFbS2_S2_EEvT_S6_T0_
+__ZN7WebCore21JSCSSStyleDeclaration18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore21JSCSSStyleDeclaration11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore57jsCSSStyleDeclarationPrototypeFunctionGetPropertyPriorityEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Arg
+__ZN7WebCore19CSSStyleDeclaration19getPropertyPriorityERKNS_6StringE
+__ZN7WebCoreL24scaleFactorForConversionEt
+__ZN7WebCore9CSSParser18parseHSLParametersEPNS_14CSSParserValueEPdb
+__ZN7WebCore16makeRGBAFromHSLAEdddd
+__ZN7WebCoreL7calcHueEddd
+__ZNK7WebCore9FrameView14didFirstLayoutEv
+__ZNK7WebCore13CSSImportRule4typeEv
+__ZN7WebCore15JSCSSImportRule15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSCSSImportRuleC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13CSSImportRuleEEE
+__ZN7WebCore15JSCSSImportRuleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13CSSImportRuleEEE
+__ZN7WebCore15JSCSSImportRule18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25jsCSSImportRuleStyleSheetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSCSSImportRuleD1Ev
+__ZN7WebCore24JSCSSImportRulePrototypeD1Ev
+__ZNK7WebCore15CSSFontFaceRule7cssTextEv
__ZNK7WebCore12CSSMediaRule4typeEv
-__ZN7WebCore14JSCSSMediaRuleC1EPN3KJS8JSObjectEPNS_12CSSMediaRuleE
-__ZN7WebCore14JSCSSMediaRule18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore23JSCSSMediaRulePrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore41jsCSSMediaRulePrototypeFunctionInsertRuleEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore14JSCSSMediaRule15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSCSSMediaRuleC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12CSSMediaRuleEEE
+__ZN7WebCore14JSCSSMediaRuleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12CSSMediaRuleEEE
+__ZN7WebCore14JSCSSMediaRule18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore12CSSMediaRule7cssTextEv
+__ZNK7WebCore9MediaList9mediaTextEv
+__ZNK7WebCore10MediaQuery7cssTextEv
+__ZN7WebCore14JSCSSMediaRuleD1Ev
+__ZN7WebCore23JSCSSMediaRulePrototypeD1Ev
+__ZN7WebCore18jsDOMWindowScrollXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL39max_device_aspect_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore23JSCSSMediaRulePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore41jsCSSMediaRulePrototypeFunctionInsertRuleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZNK7WebCore14JSCSSMediaRule9classInfoEv
__ZN7WebCore12CSSMediaRule10insertRuleERKNS_6StringEjRi
-__ZN3KJS17staticValueGetterIN7WebCore14JSCSSMediaRuleEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore14JSCSSMediaRule16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore41jsCSSMediaRulePrototypeFunctionDeleteRuleEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore11CSSRuleList10insertRuleEPNS_7CSSRuleEj
+__ZN7WebCore22jsCSSMediaRuleCssRulesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsCSSMediaRulePrototypeFunctionDeleteRuleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZN7WebCore12CSSMediaRule10deleteRuleEjRi
-__ZN7WebCore11CSSRuleList10deleteRuleEj
-__ZN7WebCore42jsCSSStyleDeclarationPrototypeFunctionItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore49jsCSSPrimitiveValuePrototypeFunctionGetFloatValueEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore24scaleFactorForConversionEt
-__ZN7WebCore11RenderStyle12clearContentEv
-__ZN3KJS17staticValueGetterIN7WebCore15JSCSSImportRuleEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSCSSImportRule16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore30JSCSSPrimitiveValueConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore30JSCSSPrimitiveValueConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore30JSCSSPrimitiveValueConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore19JSCSSPrimitiveValueEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSCSSPrimitiveValue16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore50jsCSSPrimitiveValuePrototypeFunctionGetStringValueEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore51jsCSSPrimitiveValuePrototypeFunctionGetCounterValueEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore17CSSPrimitiveValue15getCounterValueERi
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_7CounterE
-__ZN7WebCore52jsCSSPrimitiveValuePrototypeFunctionGetRGBColorValueEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore13getJSRGBColorEPN3KJS9ExecStateEj
-__ZN7WebCore10JSRGBColorC1EPN3KJS8JSObjectEj
-__ZN7WebCore48jsCSSPrimitiveValuePrototypeFunctionGetRectValueEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore17CSSPrimitiveValue12getRectValueERi
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_4RectE
-__ZN7WebCore39min_device_aspect_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore35device_aspect_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore39max_device_aspect_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore22FontCustomPlatformDataD1Ev
+__ZN7WebCoreL39min_device_aspect_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore14RenderTableRow5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore25jsCSSRuleParentStyleSheetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore58jsCSSStyleDeclarationPrototypeFunctionGetPropertyShorthandEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Ar
+__ZN7WebCore19CSSStyleDeclaration20getPropertyShorthandERKNS_6StringE
+__ZNK7WebCore26CSSMutableStyleDeclaration20getPropertyShorthandEi
+__ZN7WebCore9CSSParser24parseTimingFunctionValueERPNS_18CSSParserValueListERd
+__ZNK7WebCore22CSSTimingFunctionValue21isTimingFunctionValueEv
+__ZNK7WebCore16HTMLInputElement17isTextFormControlEv
+__ZNK7WebCore22HTMLFormControlElement17isTextFormControlEv
+__ZNK7WebCore19HTMLTextAreaElement17isTextFormControlEv
+__ZNK7WebCore11RenderLayer18absoluteToContentsERKNS_8IntPointE
+__ZNK7WebCore11RenderLayer22offsetFromResizeCornerERKNS_8IntPointE
+__ZN7WebCore11RenderLayer6resizeERKNS_18PlatformMouseEventERKNS_7IntSizeE
+__ZNK7WebCore7Element22minimumSizeForResizingEv
+__ZN7WebCore7Element25setMinimumSizeForResizingERKNS_7IntSizeE
+__ZN7WebCore26RenderTextControlMultiLine11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZNK7WebCore5Image13isBitmapImageEv
+__ZN7WebCore8SVGImage18destroyDecodedDataEb
+__ZN7WebCore8SVGImageD0Ev
+__ZN7WebCore22EmptyFrameLoaderClient14cancelledErrorERKNS_15ResourceRequestE
+__ZN7WebCore22EmptyFrameLoaderClient14shouldFallBackERKNS_13ResourceErrorE
+__ZN7WebCore22EmptyFrameLoaderClient20setMainDocumentErrorEPNS_14DocumentLoaderERKNS_13ResourceErrorE
+__ZN7WebCore22EmptyFrameLoaderClient27dispatchDidLoadMainResourceEPNS_14DocumentLoaderE
+__ZN7WebCore22EmptyFrameLoaderClient19dispatchDidFailLoadERKNS_13ResourceErrorE
+__ZN7WebCore22EmptyFrameLoaderClient39postProgressEstimateChangedNotificationEv
+__ZN7WebCore22EmptyFrameLoaderClient32postProgressFinishedNotificationEv
+__ZN7WebCore22EmptyFrameLoaderClient22dispatchDidFailLoadingEPNS_14DocumentLoaderEmRKNS_13ResourceErrorE
+__ZN7WebCore22EmptyFrameLoaderClient19detachedFromParent2Ev
+__ZN7WebCore22EmptyFrameLoaderClient19detachedFromParent3Ev
+__ZN7WebCore31RenderSVGTransformableContainerD0Ev
+__ZN7WebCore18RenderSVGContainerD2Ev
+__ZN7WebCore16SVGInlineFlowBoxD0Ev
+__ZN7WebCore14RenderSVGTSpanD0Ev
+__ZN7WebCore12RenderInlineD2Ev
+__ZN7WebCore17EmptyEditorClient13pageDestroyedEv
+__ZN7WebCore20EmptyInspectorClient18inspectorDestroyedEv
+__ZN7WebCore16SVGScriptElementD0Ev
+__ZN7WebCore15SVGURIReferenceD2Ev
+__ZN7WebCore11SVGGElementD0Ev
+__ZN7WebCore14SVGPathElementD0Ev
+__ZN7WebCore14SVGPathSegListD0Ev
+__ZN7WebCore19SVGPathSegMovetoAbsD0Ev
+__ZN7WebCore19SVGPathSegLinetoAbsD0Ev
+__ZN7WebCore19SVGPathSegClosePathD0Ev
+__ZN7WebCore19SVGAnimatedPathDataD2Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_12SVGTransformEEEEELm0EE6shrinkEm
+__ZN7WebCore25SVGPathSegCurvetoCubicAbsD0Ev
+__ZN7WebCore15SVGTSpanElementD0Ev
+__ZN7WebCore22EmptyFrameLoaderClient20frameLoaderDestroyedEv
+__ZN7WebCore22EmptyContextMenuClient20contextMenuDestroyedEv
+__ZN7WebCore15EmptyDragClient23dragControllerDestroyedEv
+__ZN7WebCore20SVGImageChromeClient15chromeDestroyedEv
+__ZN7WebCore20SVGImageChromeClientD0Ev
+__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findI
+__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47remo
+__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6remov
+__ZN7WebCore10SVGElementD0Ev
+__ZN7WebCore24SVGLinearGradientElementD0Ev
+__ZN7WebCore18SVGGradientElementD2Ev
+__ZN7WebCore24SVGRadialGradientElementD0Ev
+__ZN7WebCore28SVGPaintServerLinearGradientD0Ev
+__ZN7WebCore22SVGPaintServerGradientD2Ev
+__ZN7WebCore14SVGPaintServerD2Ev
+__ZN7WebCore11SVGResourceD2Ev
+__ZN7WebCore14SVGStopElementD0Ev
+__ZN7WebCore8SVGColorD0Ev
+__ZN7WebCore21RenderSVGGradientStopD0Ev
+__ZN7WebCore24RenderSVGHiddenContainerD0Ev
+__ZN7WebCore18RenderSVGContainerD0Ev
+__ZN7WebCore15SVGTitleElementD0Ev
+__ZN7WebCore14SVGDescElementD0Ev
+__ZN7WebCore16SVGCircleElementD0Ev
+__ZN7WebCore14SVGLineElementD0Ev
+__ZN7WebCore14SVGDefsElementD0Ev
+__ZN7WebCore28SVGPaintServerRadialGradientD0Ev
+__ZN7WebCore14SVGMaskElementD0Ev
+__ZN7WebCore17SVGResourceMaskerD0Ev
+__ZN7WebCore17SVGEllipseElementD0Ev
+__ZN7WebCore17SVGAnimateElementD0Ev
+__ZN7WebCore19SVGAnimationElementD2Ev
+__ZN7WebCore14SVGSMILElementD2Ev
+__ZN7WebCore14SVGSMILElement20disconnectConditionsEv
+__ZN7WebCore17SMILTimeContainer10unscheduleEPNS_14SVGSMILElementE
+__ZN3WTF6VectorIN7WebCore8SMILTimeELm0EE6shrinkEm
+__ZN7WebCore30setJSDOMWindowRangeConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore32setJSHTMLInputElementPlaceholderEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLInputElement14setPlaceholderERKNS_6StringE
+__ZN7WebCore29jsHTMLInputElementPlaceholderEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8Document18setVisuallyOrderedEv
+__ZN7WebCore10TextStreamlsEf
+__ZN7WebCore10ShadowDataD2Ev
+__ZN7WebCore30jsHistoryPrototypeFunctionBackEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore9JSHistory9classInfoEv
+__ZN7WebCore7History4backEv
+__ZN7WebCore11FrameLoader25scheduleHistoryNavigationEi
+__ZN7WebCore11FrameLoader15goBackOrForwardEi
+__ZN7WebCore9CSSParser23parseAnimationShorthandEb
+__ZNK7WebCore15PropertyWrapperIRKNS_5ColorEE5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS8_SB_d
+__ZNK7WebCore11RenderStyle15backgroundColorEv
+__ZN7WebCore11RenderStyle18setBackgroundColorERKNS_5ColorE
+__ZN7WebCore13AnimationBase18getPropertyAtIndexEiRb
+__ZNK7WebCore19PropertyWrapperBase18isShorthandWrapperEv
+__ZNK7WebCore11RenderStyle5rightEv
+__ZNK7WebCore11RenderStyle6bottomEv
+__ZNK7WebCore21PropertyWrapperGetterItE6equalsEPKNS_11RenderStyleES4_
+__ZNK7WebCore11RenderStyle15borderLeftWidthEv
+__ZNK7WebCore11RenderStyle16borderRightWidthEv
+__ZNK7WebCore11RenderStyle14borderTopWidthEv
+__ZNK7WebCore11RenderStyle17borderBottomWidthEv
+__ZNK7WebCore11RenderStyle10marginLeftEv
+__ZNK7WebCore11RenderStyle11marginRightEv
+__ZNK7WebCore11RenderStyle9marginTopEv
+__ZNK7WebCore11RenderStyle12marginBottomEv
+__ZNK7WebCore11RenderStyle11paddingLeftEv
+__ZNK7WebCore11RenderStyle12paddingRightEv
+__ZNK7WebCore11RenderStyle10paddingTopEv
+__ZNK7WebCore11RenderStyle13paddingBottomEv
+__ZNK7WebCore21PropertyWrapperGetterIRKNS_5ColorEE6equalsEPKNS_11RenderStyleES7_
+__ZNK7WebCore11RenderStyle5colorEv
+__ZNK7WebCore11RenderStyle19backgroundXPositionEv
+__ZNK7WebCore11RenderStyle19backgroundYPositionEv
+__ZNK7WebCore21PropertyWrapperGetterINS_10LengthSizeEE6equalsEPKNS_11RenderStyleES5_
+__ZNK7WebCore11RenderStyle14backgroundSizeEv
+__ZNK7WebCore11RenderStyle13maskXPositionEv
+__ZNK7WebCore11RenderStyle13maskYPositionEv
+__ZNK7WebCore11RenderStyle8maskSizeEv
+__ZNK7WebCore21PropertyWrapperGetterIiE6equalsEPKNS_11RenderStyleES4_
+__ZNK7WebCore11RenderStyle8fontSizeEv
+__ZNK7WebCore11RenderStyle15columnRuleWidthEv
+__ZNK7WebCore21PropertyWrapperGetterIfE6equalsEPKNS_11RenderStyleES4_
+__ZNK7WebCore11RenderStyle9columnGapEv
+__ZNK7WebCore11RenderStyle11columnCountEv
+__ZNK7WebCore11RenderStyle11columnWidthEv
+__ZNK7WebCore21PropertyWrapperGetterIsE6equalsEPKNS_11RenderStyleES4_
+__ZNK7WebCore11RenderStyle23horizontalBorderSpacingEv
+__ZNK7WebCore11RenderStyle21verticalBorderSpacingEv
+__ZNK7WebCore11RenderStyle6zIndexEv
+__ZNK7WebCore11RenderStyle13outlineOffsetEv
+__ZNK7WebCore11RenderStyle12outlineWidthEv
+__ZNK7WebCore11RenderStyle13letterSpacingEv
+__ZNK7WebCore11RenderStyle11wordSpacingEv
+__ZNK7WebCore11RenderStyle11perspectiveEv
+__ZNK7WebCore11RenderStyle18perspectiveOriginXEv
+__ZNK7WebCore11RenderStyle18perspectiveOriginYEv
+__ZNK7WebCore11RenderStyle16transformOriginXEv
+__ZNK7WebCore11RenderStyle16transformOriginYEv
+__ZNK7WebCore11RenderStyle16transformOriginZEv
+__ZNK7WebCore21PropertyWrapperGetterIRKNS_7IntSizeEE6equalsEPKNS_11RenderStyleES7_
+__ZNK7WebCore11RenderStyle19borderTopLeftRadiusEv
+__ZNK7WebCore11RenderStyle20borderTopRightRadiusEv
+__ZNK7WebCore11RenderStyle22borderBottomLeftRadiusEv
+__ZNK7WebCore11RenderStyle23borderBottomRightRadiusEv
+__ZNK7WebCore21PropertyWrapperGetterINS_11EVisibilityEE6equalsEPKNS_11RenderStyleES5_
+__ZNK7WebCore11RenderStyle10visibilityEv
+__ZNK7WebCore11RenderStyle4zoomEv
+__ZNK7WebCore32PropertyWrapperMaybeInvalidColor6equalsEPKNS_11RenderStyleES3_
+__ZNK7WebCore11RenderStyle15columnRuleColorEv
+__ZNK7WebCore11RenderStyle15textStrokeColorEv
+__ZNK7WebCore11RenderStyle13textFillColorEv
+__ZNK7WebCore11RenderStyle15borderLeftColorEv
+__ZNK7WebCore11RenderStyle16borderRightColorEv
+__ZNK7WebCore11RenderStyle14borderTopColorEv
+__ZNK7WebCore11RenderStyle17borderBottomColorEv
+__ZNK7WebCore11RenderStyle12outlineColorEv
+__ZNK7WebCore21PropertyWrapperShadow6equalsEPKNS_11RenderStyleES3_
+__ZNK7WebCore11RenderStyle9boxShadowEv
+__ZNK7WebCore11RenderStyle10textShadowEv
+__ZNK7WebCore11RenderStyle11fillOpacityEv
+__ZNK7WebCore11RenderStyle12floodOpacityEv
+__ZNK7WebCore11RenderStyle13strokeOpacityEv
+__ZNK7WebCore24ShorthandPropertyWrapper18isShorthandWrapperEv
+__ZNK7WebCore32PropertyWrapperMaybeInvalidColor5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS4_S7_d
+__ZN7WebCore11RenderStyle18setBorderLeftColorERKNS_5ColorE
+__ZN7WebCore11RenderStyle20setBorderBottomColorERKNS_5ColorE
+__ZN7WebCore11RenderStyle19setBorderRightColorERKNS_5ColorE
+__ZN7WebCore11RenderStyle17setBorderTopColorERKNS_5ColorE
+__ZN7WebCore17ImplicitAnimation14onAnimationEndEd
+__ZN7WebCore17ImplicitAnimation19sendTransitionEventERKNS_12AtomicStringEd
+__ZNK7WebCore17ImplicitAnimation26shouldSendEventForListenerENS_8Document12ListenerTypeE
+__ZN7WebCore13AnimationBase26resumeOverriddenAnimationsEv
+__ZN3WTF9HashTableIiSt4pairIiNS_6RefPtrIN7WebCore17ImplicitAnimationEEEENS_18PairFirstExtractorIS6_EENS_7IntHashIjEENS_14PairHa
+__ZN7WebCore23JSCSSValueListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore35jsCSSValueListPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14JSCSSValueList9classInfoEv
+__ZN7WebCore12CSSValueList4itemEj
+__ZN7WebCore20JSHTMLMarqueeElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZThn88_N7WebCore21ProcessingInstruction16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
+__ZN7WebCore21ProcessingInstruction16setCSSStyleSheetERKNS_6StringES3_PKNS_19CachedCSSStyleSheetE
+__ZN7WebCore28jsProcessingInstructionSheetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsStyleSheetDisabledEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15HTMLBodyElement13setScrollLeftEi
+__ZN7WebCore15HTMLBodyElement12setScrollTopEi
+__ZNK7WebCore27CSSComputedStyleDeclaration6lengthEv
+__ZN7WebCore42jsCSSStyleDeclarationPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore27CSSComputedStyleDeclaration4itemEj
+__ZN7WebCoreL26getBorderRadiusCornerValueENS_7IntSizeE
+__ZN7WebCoreL22valueForNinePieceImageERKNS_14NinePieceImageE
+__ZN3WTF6VectorIN7WebCore20StyleDashboardRegionELm0EEC1ERKS3_
+__ZN3WTF6VectorIN7WebCore20StyleDashboardRegionELm0EEC2ERKS3_
+__ZN7WebCore17CSSPrimitiveValue4initEN3WTF10PassRefPtrINS_15DashboardRegionEEE
+__ZNK7WebCore27CSSComputedStyleDeclaration22getSVGPropertyCSSValueEiNS_13EUpdateLayoutE
+__ZNK7WebCore8SVGPaint7cssTextEv
+__ZNK7WebCore8SVGColor7cssTextEv
+__ZN7WebCoreL35glyphOrientationToCSSPrimitiveValueENS_17EGlyphOrientationE
+__ZN7WebCore19JSCSSValuePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19StyleGeneratedImage8cssValueEv
+__ZN7WebCoreL18valueForRepeatRuleEi
+__ZN7WebCore10JSCSSValueC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8CSSValueEEE
+__ZNK7WebCore10JSCSSValue9classInfoEv
+__ZN7WebCore14GeneratedImage11drawPatternEPNS_15GraphicsContextERKNS_9FloatRectERKNS_20TransformationMatrixERKNS_10FloatPointEN
+__ZN7WebCore10JSCSSValueD1Ev
+__ZNK7WebCore22SkewTransformOperation16getOperationTypeEv
+__ZNK7WebCore22SkewTransformOperation5applyERNS_20TransformationMatrixERKNS_7IntSizeE
+__ZN7WebCore20TransformationMatrix4skewEdd
+__ZNK7WebCore22SkewTransformOperationeqERKNS_18TransformOperationE
+__ZNK7WebCore22SkewTransformOperation10isSameTypeERKNS_18TransformOperationE
+__ZN7WebCore22SkewTransformOperationD0Ev
+__ZN7WebCore25setJSHTMLElementOuterHTMLEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11HTMLElement12setOuterHTMLERKNS_6StringERi
__ZN7WebCore12CSSNamespace18namespaceForPrefixERKNS_12AtomicStringE
__ZN7WebCore12CSSNamespaceD2Ev
-__ZN7WebCore23JSProcessingInstruction16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore12JSSVGElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore9CSSParser21addUnresolvedPropertyEib
+__ZN7WebCore12CSSValueListC1EPNS_18CSSParserValueListE
+__ZN7WebCore12CSSValueListC2EPNS_18CSSParserValueListE
+__ZN7WebCore14CSSParserValue14createCSSValueEv
+__ZN7WebCore25CSSVariableDependentValueC1EN3WTF10PassRefPtrINS_12CSSValueListEEE
+__ZN7WebCore25CSSVariableDependentValueC2EN3WTF10PassRefPtrINS_12CSSValueListEEE
+__ZN7WebCore9CSSParser27addVariableDeclarationBlockERKNS_15CSSParserStringE
+__ZN7WebCore9CSSParser19createVariablesRuleEPNS_9MediaListEb
+__ZNK7WebCore25CSSVariableDependentValue24isVariableDependentValueEv
+__ZNK3WTF7HashMapIPN7WebCore26CSSMutableStyleDeclarationENS_6RefPtrIS2_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getE
+__ZNK7WebCore19CSSStyleDeclaration10parentRuleEv
+__ZN7WebCore26CSSMutableStyleDeclarationC1EPNS_7CSSRuleE
+__ZN3WTF7HashMapIPN7WebCore26CSSMutableStyleDeclarationENS_6RefPtrIS2_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setER
+__ZN3WTF9HashTableIPN7WebCore26CSSMutableStyleDeclarationESt4pairIS3_NS_6RefPtrIS2_EEENS_18PairFirstExtractorIS7_EENS_7PtrHashI
+__ZN7WebCore16CSSStyleSelector30resolveVariablesForDeclarationEPNS_26CSSMutableStyleDeclarationES2_RN3WTF7HashSetINS_6StringENS
+__ZNK3WTF7HashMapIN7WebCore6StringEPNS1_16CSSVariablesRuleENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3getERKS2_
+__ZNK7WebCore14XMLHttpRequest38usesDashboardBackwardCompatibilityModeEv
+__ZN7WebCore9CSSParser11addVariableERKNS_15CSSParserStringEPNS_18CSSParserValueListE
+__ZN7WebCore25CSSVariableDependentValueD0Ev
+__ZNK7WebCore17CSSPrimitiveValue11parserValueEv
+__ZN7WebCore9StyleBase6isRuleEv
+__ZN7WebCore26JSXMLSerializerConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore26JSXMLSerializerConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCore26JSXMLSerializerConstructor9constructEPN3JSC9ExecStateEPNS1_8JSObjectERKNS1_7ArgListE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_13XMLSerializerE
+__ZN7WebCore15JSXMLSerializerC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13XMLSerializerEEE
+__ZN7WebCore15JSXMLSerializerC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13XMLSerializerEEE
+__ZN7WebCore15JSXMLSerializer18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24JSXMLSerializerPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore49jsXMLSerializerPrototypeFunctionSerializeToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore15JSXMLSerializer9classInfoEv
+__ZN7WebCore13XMLSerializer17serializeToStringEPNS_4NodeERi
+__ZN7WebCore15JSXMLSerializerD1Ev
+__ZN7WebCore15JSXMLSerializerD2Ev
+__ZN7WebCoreL22shouldAddNamespaceElemEPKNS_7ElementE
+__ZN7WebCoreL15appendNamespaceERN3WTF6VectorItLm0EEERKNS_12AtomicStringES6_RNS0_7HashMapIPNS_16AtomicStringImplES9_NS0_7PtrHash
+__ZN7WebCoreL22shouldAddNamespaceAttrEPKNS_9AttributeERN3WTF7HashMapIPNS_16AtomicStringImplES6_NS3_7PtrHashIS6_EENS3_10HashTrai
+__ZN7WebCore23jsHTMLAnchorElementTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement4textEv
+__ZN7WebCore40jsHTMLSelectElementPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14jsSVGElementIdEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSSVGSVGElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore12JSSVGElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore17setJSSVGElementIdEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore10SVGElement5setIdERKNS_6StringERi
-__ZN7WebCore42jsCSSStyleSheetPrototypeFunctionRemoveRuleEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore12JSStyleSheet3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore12JSStyleSheet16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore54jsDOMImplementationPrototypeFunctionCreateHTMLDocumentEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCoreL17isViewportElementEPNS_4NodeE
+__ZN7WebCore13SVGSVGElement19removedFromDocumentEv
+__ZThn8_N7WebCore13SVGSVGElementD0Ev
+__ZN7WebCore9Attribute17isMappedAttributeEv
+__ZN7WebCore22JSNamedNodesCollectionC1EPN3JSC9ExecStateERKN3WTF6VectorINS4_6RefPtrINS_4NodeEEELm0EEE
+__ZN7WebCore22JSNamedNodesCollectionC2EPN3JSC9ExecStateERKN3WTF6VectorINS4_6RefPtrINS_4NodeEEELm0EEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EEC1ERKS5_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore4NodeEEELm0EEC2ERKS5_
+__ZN7WebCore22JSNamedNodesCollection18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22JSNamedNodesCollection11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore22JSNamedNodesCollectionD1Ev
+__ZN7WebCore50jsCanvasRenderingContext2DGlobalCompositeOperationEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore24CanvasRenderingContext2D24globalCompositeOperationEv
+__ZN7WebCore21compositeOperatorNameENS_17CompositeOperatorE
+__ZN7WebCore33jsCanvasRenderingContext2DLineCapEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore24CanvasRenderingContext2D7lineCapEv
+__ZN7WebCore11lineCapNameENS_7LineCapE
+__ZN7WebCore34jsCanvasRenderingContext2DLineJoinEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore24CanvasRenderingContext2D8lineJoinEv
+__ZN7WebCore12lineJoinNameENS_8LineJoinE
+__ZN7WebCore37jsCanvasRenderingContext2DShadowColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore24CanvasRenderingContext2D11shadowColorEv
+__ZNK7WebCore19JSHTMLLegendElement9classInfoEv
+__ZN7WebCore28setJSHTMLLinkElementDisabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLLinkElement11setDisabledEb
+__ZN7WebCore15HTMLLinkElement16setDisabledStateEb
+__ZN7WebCore37jsRangePrototypeFunctionCloneContentsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore5Range13cloneContentsERi
+__ZN7WebCoreL18callHTMLCollectionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore31jsCSSStyleDeclarationParentRuleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27CSSComputedStyleDeclaration11setPropertyEiRKNS_6StringEbRi
+__ZN7WebCore21jsCSSRuleUNKNOWN_RULEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsCSSRuleSTYLE_RULEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsCSSRuleCHARSET_RULEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsCSSRuleIMPORT_RULEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsCSSRuleMEDIA_RULEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsCSSRuleFONT_FACE_RULEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsCSSRulePAGE_RULEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsCSSValueCSS_INHERITEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsCSSValueCSS_PRIMITIVE_VALUEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsCSSValueCSS_VALUE_LISTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsCSSValueCSS_CUSTOMEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsDOMWindowCSSValueConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10JSCSSValue14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore21JSCSSValueConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore32jsDOMWindowNodeFilterConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSNodeFilter14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore23JSNodeFilterConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore21JSNodeFilterPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore12JSNodeFilter15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSNodeFilterConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24jsNodeFilterSHOW_ELEMENTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore45jsDocumentPrototypeFunctionCreateNodeIteratorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12toNodeFilterEN3JSC7JSValueE
+__ZN7WebCore21JSNodeFilterConditionC1EN3JSC7JSValueE
+__ZN7WebCore21JSNodeFilterConditionC2EN3JSC7JSValueE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_12NodeIteratorE
+__ZN7WebCore14JSNodeIterator15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSNodeIteratorC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12NodeIteratorEEE
+__ZN7WebCore14JSNodeIteratorC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12NodeIteratorEEE
+__ZN7WebCore14JSNodeIterator18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20jsNodeIteratorFilterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_10NodeFilterE
+__ZN7WebCore12JSNodeFilterC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10NodeFilterEEE
+__ZN7WebCore12JSNodeFilterC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10NodeFilterEEE
+__ZN7WebCore12JSNodeFilter18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore21JSNodeFilterPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25jsNodeFilterFILTER_ACCEPTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsNodeFilterFILTER_REJECTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsNodeFilterFILTER_SKIPEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsNodeFilterSHOW_ALLEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsNodeFilterSHOW_ATTRIBUTEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsNodeFilterSHOW_TEXTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsNodeFilterSHOW_CDATA_SECTIONEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsNodeFilterSHOW_ENTITY_REFERENCEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsNodeFilterSHOW_ENTITYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsNodeFilterSHOW_PROCESSING_INSTRUCTIONEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsNodeFilterSHOW_COMMENTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsNodeFilterSHOW_DOCUMENTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsNodeFilterSHOW_DOCUMENT_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsNodeFilterSHOW_DOCUMENT_FRAGMENTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsNodeFilterSHOW_NOTATIONEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSNodeFilter4markEv
+__ZN7WebCore21JSNodeFilterCondition4markEv
+__ZN7WebCore14JSNodeIterator4markEv
+__ZN7WebCore27jsDOMWindowAudioConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow5audioEPN3JSC9ExecStateE
+__ZN7WebCore18JSAudioConstructorC1EPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectE
+__ZN7WebCore18JSAudioConstructorC2EPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectE
+__ZN7WebCore27JSHTMLAudioElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSAudioConstructor4markEv
+__ZN7WebCore12JSNodeFilterD1Ev
+__ZN7WebCore12JSNodeFilterD2Ev
+__ZN7WebCore14JSNodeIteratorD1Ev
+__ZN7WebCore14JSNodeIteratorD2Ev
+__ZN7WebCore21JSNodeFilterConditionD0Ev
+__ZN7WebCore23JSNodeIteratorPrototypeD1Ev
+__ZN7WebCore21JSNodeFilterPrototypeD1Ev
+__ZN7WebCore23JSNodeFilterConstructorD1Ev
+__ZN7WebCore21JSCSSValueConstructorD1Ev
+__ZN7WebCore18JSAudioConstructorD1Ev
+__ZN7WebCore30setJSDOMWindowImageConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore31setJSDOMWindowOptionConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39setJSDOMWindowXMLHttpRequestConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowXMLSerializerConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore34setJSDOMWindowDOMParserConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowXSLTProcessorConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore30setJSProcessingInstructionDataEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10JSRGBColor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZL13jsRGBColorRedPN3JSC9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZL15jsRGBColorGreenPN3JSC9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZL14jsRGBColorBluePN3JSC9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN7WebCore19jsCSSImportRuleHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsCSSImportRuleMediaEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_9MediaListE
+__ZN7WebCore11JSMediaList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore11JSMediaListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9MediaListEEE
+__ZN7WebCore11JSMediaListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9MediaListEEE
+__ZN7WebCore11JSMediaList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20jsMediaListMediaTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsCSSMediaRuleMediaEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13CSSImportRule7cssTextEv
+__ZN7WebCore11JSMediaListD1Ev
+__ZN7WebCore11JSMediaListD2Ev
+__ZN7WebCore20JSMediaListPrototypeD1Ev
+__ZN7WebCore14JSCSSStyleRule3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore9JSCSSRule3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore19setJSCSSRuleCssTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore7CSSRule10setCssTextERKNS_6StringERi
+__ZN7WebCore29setJSCSSStyleRuleSelectorTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore12CSSStyleRule15setSelectorTextERKNS_6StringERi
+__ZN7WebCore10JSCSSValue3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore20setJSCSSValueCssTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11JSMediaList3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore23setJSMediaListMediaTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39jsCSSStyleSheetPrototypeFunctionAddRuleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13CSSStyleSheet7addRuleERKNS_6StringES3_Ri
+__ZN7WebCore13CSSStyleSheet7addRuleERKNS_6StringES3_iRi
+__ZN7WebCore42jsCSSStyleSheetPrototypeFunctionRemoveRuleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12JSStyleSheet3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore23setJSStyleSheetDisabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38jsRangePrototypeFunctionDeleteContentsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore54jsDOMImplementationPrototypeFunctionCreateHTMLDocumentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
__ZN7WebCore17DOMImplementation18createHTMLDocumentERKNS_6StringE
+__ZN7WebCore20setJSHTMLDocumentDirEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore12HTMLDocument6setDirERKNS_6StringE
+__ZN7WebCore17setJSDocumentBodyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore8Document7setBodyEN3WTF10PassRefPtrINS_11HTMLElementEEERi
+__ZN7WebCore20setJSDocumentCharsetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore8Document10setCharsetERKNS_6StringE
+__ZN7WebCore34setJSDocumentSelectedStylesheetSetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore8Document24setSelectedStylesheetSetERKNS_6StringE
+__ZN7WebCore31jsDocumentSelectedStylesheetSetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore8Document21selectedStylesheetSetEv
+__ZN7WebCore21jsHTMLDocumentFgColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12HTMLDocument7fgColorEv
+__ZN7WebCore27setJSHTMLDocumentAlinkColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore12HTMLDocument13setAlinkColorERKNS_6StringE
+__ZN7WebCore24jsHTMLDocumentAlinkColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZN7WebCore12HTMLDocument10alinkColorEv
+__ZN7WebCore23jsHTMLDocumentLinkColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12HTMLDocument9linkColorEv
+__ZN7WebCore24jsHTMLDocumentVlinkColorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZN7WebCore12HTMLDocument10vlinkColorEv
-__ZN7WebCore25JSStyleSheetListPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore37jsStyleSheetListPrototypeFunctionItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore16JSStyleSheetList9classInfoEv
-__ZN7WebCore34jsCSSRuleListPrototypeFunctionItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore13JSCSSRuleList9classInfoEv
-__ZN7WebCore20JSCSSRuleConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore20JSCSSRuleConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore20JSCSSRuleConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore15HTMLAreaElement11setTabIndexEi
-__ZNK7WebCore27JSHTMLEmbedElementPrototype9classInfoEv
-__ZNK7WebCore28JSHTMLAppletElementPrototype9classInfoEv
-__ZN7WebCore10JSCSSValue3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore26JSXPathNSResolverPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore26JSHTMLFormElementPrototype9classInfoEv
-__ZN7WebCore13KeyboardEventC1Ev
-__ZN7WebCore6JSRectC1EPN3KJS8JSObjectEPNS_4RectE
-__ZN7WebCore40jsHTMLSelectElementPrototypeFunctionItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_9MediaListE
-__ZN7WebCore11JSMediaListC1EPN3KJS8JSObjectEPNS_9MediaListE
-__ZN7WebCore9JSCSSRule16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore7CSSRule10setCssTextENS_6StringERi
-__ZN7WebCore14JSCSSStyleRule16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore12CSSStyleRule15setSelectorTextERKNS_6StringERi
-__ZN7WebCore10JSCSSValue16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN3KJS17staticValueGetterIN7WebCore10JSCSSValueEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore10JSCSSValue16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore11JSMediaList3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore11JSMediaList16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore11JSMediaList18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore11JSMediaListEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore11JSMediaList16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore9MediaList9mediaTextEv
-__ZN7WebCore33jsHistoryPrototypeFunctionForwardEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7History7forwardEv
-__ZN7WebCore13RenderListBox32scrollToRevealElementAtListIndexEi
-__ZN7WebCore18JSHTMLTitleElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore22JSDOMParserConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore26JSXMLSerializerConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore18JSRangeConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore21JSCSSValueConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore27JSXPathEvaluatorConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore4toJSEPN3KJS9ExecStateEPNS_10NodeFilterE
-__ZN7WebCore12JSNodeFilterC1EPN3KJS8JSObjectEPNS_10NodeFilterE
-__ZN7WebCore21JSNodeFilterPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore11HTMLElement6setDirERKNS_6StringE
+__ZNK7WebCore17HTMLObjectElement14isURLAttributeEPNS_9AttributeE
+__ZNK7WebCore16HTMLParamElement14isURLAttributeEPNS_9AttributeE
+__ZN7WebCore26jsDOMWindowAttrConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore6JSAttr14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore15JSAttrPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSAttrConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17JSAttrConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowCharacterDataConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSCharacterData14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSCharacterDataConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSCharacterDataConstructor9classInfoEv
+__ZN7WebCore34jsDOMWindowCDATASectionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSCDATASection14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSCDATASectionConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSCDATASectionPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSCDATASectionConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSCDATASectionConstructor9classInfoEv
+__ZN7WebCore29jsDOMWindowCommentConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSCommentConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore20JSCommentConstructor9classInfoEv
+__ZNK7WebCore21JSDocumentConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowDocumentFragmentConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSDocumentFragment14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore29JSDocumentFragmentConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore27JSDocumentFragmentPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSDocumentFragmentConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSDocumentFragmentConstructor9classInfoEv
+__ZN7WebCore34jsDOMWindowDocumentTypeConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSDocumentType14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSDocumentTypeConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSDocumentTypePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSDocumentTypeConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSDocumentTypeConstructor9classInfoEv
+__ZN7WebCore28jsDOMWindowEntityConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8JSEntity14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore19JSEntityConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore17JSEntityPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore8JSEntity15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSEntityConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore19JSEntityConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowEntityReferenceConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSEntityReference14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSEntityReferenceConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore26JSEntityReferencePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSEntityReferenceConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSEntityReferenceConstructor9classInfoEv
+__ZN7WebCore34jsDOMWindowHTMLDocumentConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSHTMLDocumentConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSHTMLDocumentConstructor9classInfoEv
__ZNK7WebCore17JSNodeConstructor9classInfoEv
-__ZNK7WebCore12CDATASection8toStringEv
-__ZNK3KJS40StringInstanceThatMasqueradesAsUndefined9toBooleanEPNS_9ExecStateE
-__ZNK7WebCore19CSSStyleDeclaration10parentRuleEv
-__ZN7WebCore27CSSComputedStyleDeclaration11setPropertyEiRKNS_6StringEbRi
-__ZNK7WebCore20JSElementConstructor21implementsHasInstanceEv
-__ZN7WebCore11HTMLElement12setOuterTextERKNS_6StringERi
-__ZNK7WebCore24CanvasRenderingContext2D24globalCompositeOperationEv
-__ZN7WebCore21compositeOperatorNameENS_17CompositeOperatorE
-__ZN7WebCore24CanvasRenderingContext2D10setLineCapERKNS_6StringE
-__ZN7WebCore12parseLineCapERKNS_6StringERNS_7LineCapE
-__ZNK7WebCore24CanvasRenderingContext2D7lineCapEv
-__ZN7WebCore11lineCapNameENS_7LineCapE
-__ZNK7WebCore24CanvasRenderingContext2D8lineJoinEv
-__ZN7WebCore12lineJoinNameENS_8LineJoinE
-__ZNK7WebCore24CanvasRenderingContext2D11shadowColorEv
-__ZN7WebCore12JSNodeFilter4markEv
-__ZN7WebCore17HTMLAnchorElement10setCharsetERKNS_6StringE
-__ZN7WebCore17HTMLAnchorElement9setCoordsERKNS_6StringE
-__ZN7WebCore17HTMLAnchorElement11setHreflangERKNS_6StringE
-__ZN7WebCore17HTMLAnchorElement6setRevERKNS_6StringE
-__ZN7WebCore17HTMLAnchorElement8setShapeERKNS_6StringE
-__ZN7WebCore17HTMLAnchorElement7setTypeERKNS_6StringE
-__ZN7WebCore19JSHTMLAppletElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore19JSHTMLAppletElement9customPutEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore19JSHTMLAppletElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore30jsDOMWindowNotationConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10JSNotation14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore21JSNotationConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore19JSNotationPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSNotation15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSNotationConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore21JSNotationConstructor9classInfoEv
+__ZN7WebCore43jsDOMWindowProcessingInstructionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23JSProcessingInstruction14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore32JSProcessingInstructionPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore34JSProcessingInstructionConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore34JSProcessingInstructionConstructor9classInfoEv
+__ZNK7WebCore17JSTextConstructor9classInfoEv
+__ZN7WebCore39jsDOMWindowHTMLAnchorElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30JSHTMLAnchorElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore30JSHTMLAnchorElementConstructor9classInfoEv
+__ZN7WebCore39jsDOMWindowHTMLAppletElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLAppletElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSHTMLAppletElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore30JSHTMLAppletElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore30JSHTMLAppletElementConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowHTMLAreaElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLAreaElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLAreaElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSHTMLAreaElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSHTMLAreaElementConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowHTMLBaseElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLBaseElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLBaseElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSHTMLBaseElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSHTMLBaseElementConstructor9classInfoEv
+__ZN7WebCore41jsDOMWindowHTMLBaseFontElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSHTMLBaseFontElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore30JSHTMLBaseFontElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore32JSHTMLBaseFontElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore32JSHTMLBaseFontElementConstructor9classInfoEv
+__ZN7WebCore43jsDOMWindowHTMLBlockquoteElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23JSHTMLBlockquoteElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore32JSHTMLBlockquoteElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore34JSHTMLBlockquoteElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore34JSHTMLBlockquoteElementConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowHTMLBodyElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28JSHTMLBodyElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSHTMLBodyElementConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowHTMLBRElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSHTMLBRElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore24JSHTMLBRElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSHTMLBRElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSHTMLBRElementConstructor9classInfoEv
+__ZN7WebCore39jsDOMWindowHTMLButtonElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30JSHTMLButtonElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore30JSHTMLButtonElementConstructor9classInfoEv
+__ZN7WebCore39jsDOMWindowHTMLCanvasElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLCanvasElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSHTMLCanvasElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore30JSHTMLCanvasElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore30JSHTMLCanvasElementConstructor9classInfoEv
+__ZN7WebCore42jsDOMWindowHTMLDirectoryElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22JSHTMLDirectoryElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore31JSHTMLDirectoryElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore33JSHTMLDirectoryElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore33JSHTMLDirectoryElementConstructor9classInfoEv
+__ZN7WebCore27JSHTMLDivElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27JSHTMLDivElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLDListElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLDListElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLDListElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSHTMLDListElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLDListElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLEmbedElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLEmbedElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLEmbedElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSHTMLEmbedElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLEmbedElementConstructor9classInfoEv
+__ZN7WebCore41jsDOMWindowHTMLFieldSetElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSHTMLFieldSetElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore32JSHTMLFieldSetElementConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore30JSHTMLFieldSetElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore32JSHTMLFieldSetElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore32JSHTMLFieldSetElementConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowHTMLFontElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLFontElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLFontElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSHTMLFontElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSHTMLFontElementConstructor9classInfoEv
+__ZNK7WebCore28JSHTMLFormElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLFrameElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLFrameElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLFrameElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSHTMLFrameElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLFrameElementConstructor9classInfoEv
+__ZN7WebCore41jsDOMWindowHTMLFrameSetElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSHTMLFrameSetElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore30JSHTMLFrameSetElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore32JSHTMLFrameSetElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore32JSHTMLFrameSetElementConstructor9classInfoEv
+__ZN7WebCore40jsDOMWindowHTMLHeadingElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31JSHTMLHeadingElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore31JSHTMLHeadingElementConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowHTMLHeadElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLHeadElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLHeadElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSHTMLHeadElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSHTMLHeadElementConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowHTMLHRElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSHTMLHRElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore24JSHTMLHRElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSHTMLHRElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSHTMLHRElementConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowHTMLHtmlElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28JSHTMLHtmlElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSHTMLHtmlElementConstructor9classInfoEv
+__ZN7WebCore39jsDOMWindowHTMLIFrameElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30JSHTMLIFrameElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore30JSHTMLIFrameElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLImageElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29JSHTMLImageElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLImageElementConstructor9classInfoEv
+__ZNK7WebCore29JSHTMLInputElementConstructor9classInfoEv
+__ZN7WebCore40jsDOMWindowHTMLIsIndexElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSHTMLIsIndexElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore29JSHTMLIsIndexElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore31JSHTMLIsIndexElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore31JSHTMLIsIndexElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLLabelElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLLabelElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLLabelElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSHTMLLabelElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLLabelElementConstructor9classInfoEv
+__ZN7WebCore39jsDOMWindowHTMLLegendElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLLegendElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSHTMLLegendElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore30JSHTMLLegendElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore30JSHTMLLegendElementConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowHTMLLIElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26JSHTMLLIElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSHTMLLIElementConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowHTMLLinkElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLLinkElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLLinkElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSHTMLLinkElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSHTMLLinkElementConstructor9classInfoEv
+__ZN7WebCore36jsDOMWindowHTMLMapElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSHTMLMapElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSHTMLMapElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSHTMLMapElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27JSHTMLMapElementConstructor9classInfoEv
+__ZN7WebCore40jsDOMWindowHTMLMarqueeElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSHTMLMarqueeElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore31JSHTMLMarqueeElementConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore29JSHTMLMarqueeElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore31JSHTMLMarqueeElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore31JSHTMLMarqueeElementConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowHTMLMenuElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLMenuElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLMenuElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSHTMLMenuElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSHTMLMenuElementConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowHTMLMetaElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSHTMLMetaElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSHTMLMetaElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSHTMLMetaElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSHTMLMetaElementConstructor9classInfoEv
+__ZN7WebCore36jsDOMWindowHTMLModElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27JSHTMLModElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27JSHTMLModElementConstructor9classInfoEv
+__ZN7WebCore39jsDOMWindowHTMLObjectElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLObjectElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSHTMLObjectElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore30JSHTMLObjectElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore30JSHTMLObjectElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLOListElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29JSHTMLOListElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLOListElementConstructor9classInfoEv
+__ZN7WebCore41jsDOMWindowHTMLOptGroupElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSHTMLOptGroupElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore30JSHTMLOptGroupElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore32JSHTMLOptGroupElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore32JSHTMLOptGroupElementConstructor9classInfoEv
+__ZN7WebCore39jsDOMWindowHTMLOptionElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLOptionElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore30JSHTMLOptionElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore30JSHTMLOptionElementConstructor9classInfoEv
+__ZN7WebCore42jsDOMWindowHTMLParagraphElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33JSHTMLParagraphElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore33JSHTMLParagraphElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLParamElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLParamElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLParamElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSHTMLParamElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLParamElementConstructor9classInfoEv
+__ZN7WebCore36jsDOMWindowHTMLPreElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSHTMLPreElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSHTMLPreElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSHTMLPreElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27JSHTMLPreElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLQuoteElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLQuoteElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLQuoteElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSHTMLQuoteElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLQuoteElementConstructor9classInfoEv
+__ZN7WebCore39jsDOMWindowHTMLScriptElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30JSHTMLScriptElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore30JSHTMLScriptElementConstructor9classInfoEv
+__ZNK7WebCore30JSHTMLSelectElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLStyleElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLStyleElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLStyleElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSHTMLStyleElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLStyleElementConstructor9classInfoEv
+__ZN7WebCore45jsDOMWindowHTMLTableCaptionElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSHTMLTableCaptionElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore34JSHTMLTableCaptionElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore36JSHTMLTableCaptionElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore36JSHTMLTableCaptionElementConstructor9classInfoEv
+__ZN7WebCore41jsDOMWindowHTMLTableColElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSHTMLTableColElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore30JSHTMLTableColElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore32JSHTMLTableColElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore32JSHTMLTableColElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLTableElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29JSHTMLTableElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLTableElementConstructor9classInfoEv
+__ZN7WebCore45jsDOMWindowHTMLTableSectionElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSHTMLTableSectionElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore34JSHTMLTableSectionElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore36JSHTMLTableSectionElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore36JSHTMLTableSectionElementConstructor9classInfoEv
+__ZN7WebCore42jsDOMWindowHTMLTableCellElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22JSHTMLTableCellElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore31JSHTMLTableCellElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore33JSHTMLTableCellElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore33JSHTMLTableCellElementConstructor9classInfoEv
+__ZN7WebCore41jsDOMWindowHTMLTableRowElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSHTMLTableRowElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore30JSHTMLTableRowElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore32JSHTMLTableRowElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore32JSHTMLTableRowElementConstructor9classInfoEv
+__ZNK7WebCore32JSHTMLTextAreaElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLTitleElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLTitleElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLTitleElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSHTMLTitleElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLTitleElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLUListElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29JSHTMLUListElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSHTMLUListElementConstructor9classInfoEv
+__ZNK7WebCore24JSHTMLElementConstructor9classInfoEv
+__ZN7WebCore46jsDOMWindowCanvasRenderingContext2DConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26JSCanvasRenderingContext2D14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore35JSCanvasRenderingContext2DPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore37JSCanvasRenderingContext2DConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlot
+__ZNK7WebCore37JSCanvasRenderingContext2DConstructor9classInfoEv
+__ZN7WebCore31jsDOMWindowClipboardConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11JSClipboard14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore20JSClipboardPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSClipboardConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore22JSClipboardConstructor9classInfoEv
+__ZN7WebCore29jsDOMWindowCounterConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9JSCounter14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore20JSCounterConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore18JSCounterPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore9JSCounter15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSCounterConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore20JSCounterConstructor9classInfoEv
+__ZN7WebCore36jsDOMWindowCSSCharsetRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSCSSCharsetRule14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSCSSCharsetRulePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSCSSCharsetRuleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27JSCSSCharsetRuleConstructor9classInfoEv
+__ZN7WebCore37jsDOMWindowCSSFontFaceRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSCSSFontFaceRule14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSCSSFontFaceRuleConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore26JSCSSFontFaceRulePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore28JSCSSFontFaceRuleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore28JSCSSFontFaceRuleConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowCSSImportRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSCSSImportRule14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSCSSImportRuleConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore24JSCSSImportRulePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSCSSImportRuleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSCSSImportRuleConstructor9classInfoEv
+__ZN7WebCore34jsDOMWindowCSSMediaRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSCSSMediaRule14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSCSSMediaRuleConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSCSSMediaRulePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSCSSMediaRuleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSCSSMediaRuleConstructor9classInfoEv
+__ZN7WebCore33jsDOMWindowCSSPageRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13JSCSSPageRule14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore22JSCSSPageRulePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore13JSCSSPageRule15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSCSSPageRuleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore24JSCSSPageRuleConstructor9classInfoEv
+__ZNK7WebCore30JSCSSPrimitiveValueConstructor9classInfoEv
+__ZNK7WebCore20JSCSSRuleConstructor9classInfoEv
+__ZN7WebCore33jsDOMWindowCSSRuleListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13JSCSSRuleList14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore24JSCSSRuleListConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore22JSCSSRuleListPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSCSSRuleListConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore24JSCSSRuleListConstructor9classInfoEv
+__ZN7WebCore32JSCSSStyleDeclarationConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore32JSCSSStyleDeclarationConstructor9classInfoEv
+__ZN7WebCore34jsDOMWindowCSSStyleRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSCSSStyleRule14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore23JSCSSStyleRulePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSCSSStyleRuleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSCSSStyleRuleConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowCSSStyleSheetConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSCSSStyleSheet14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSCSSStyleSheetConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore24JSCSSStyleSheetPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSCSSStyleSheetConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSCSSStyleSheetConstructor9classInfoEv
+__ZNK7WebCore21JSCSSValueConstructor9classInfoEv
+__ZN7WebCore34jsDOMWindowCSSValueListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSCSSValueList14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSCSSValueListConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSCSSValueListPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSCSSValueListConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSCSSValueListConstructor9classInfoEv
+__ZN7WebCore39jsDOMWindowDOMImplementationConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSDOMImplementation14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore30JSDOMImplementationConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore28JSDOMImplementationPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore30JSDOMImplementationConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore30JSDOMImplementationConstructor9classInfoEv
+__ZNK7WebCore18JSEventConstructor9classInfoEv
+__ZN7WebCore36jsDOMWindowHTMLCollectionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSHTMLCollection14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLCollectionConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLCollectionConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27JSHTMLCollectionConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowKeyboardEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSKeyboardEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSKeyboardEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore24JSKeyboardEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSKeyboardEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSKeyboardEventConstructor9classInfoEv
+__ZN7WebCore31jsDOMWindowMediaListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11JSMediaList14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore20JSMediaListPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSMediaListConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore22JSMediaListConstructor9classInfoEv
+__ZN7WebCore30jsDOMWindowMimeTypeConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10JSMimeType14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore21JSMimeTypeConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore19JSMimeTypePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSMimeTypeConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore21JSMimeTypeConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowMimeTypeArrayConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSMimeTypeArray14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSMimeTypeArrayConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore24JSMimeTypeArrayPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSMimeTypeArrayConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSMimeTypeArrayConstructor9classInfoEv
+__ZN7WebCore32jsDOMWindowMouseEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSMouseEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore23JSMouseEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore21JSMouseEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSMouseEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore23JSMouseEventConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowMutationEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSMutationEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSMutationEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore24JSMutationEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSMutationEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSMutationEventConstructor9classInfoEv
+__ZN7WebCore34jsDOMWindowNamedNodeMapConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSNamedNodeMap14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSNamedNodeMapConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSNamedNodeMapPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSNamedNodeMapConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSNamedNodeMapConstructor9classInfoEv
+__ZNK7WebCore23JSNodeFilterConstructor9classInfoEv
+__ZN7WebCore30jsDOMWindowNodeListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSNodeListConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore21JSNodeListConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowOverflowEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSOverflowEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSOverflowEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore24JSOverflowEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSOverflowEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSOverflowEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSOverflowEventConstructor9classInfoEv
+__ZN7WebCore28jsDOMWindowPluginConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore8JSPlugin14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore19JSPluginConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore17JSPluginPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSPluginConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore19JSPluginConstructor9classInfoEv
+__ZN7WebCore33jsDOMWindowPluginArrayConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13JSPluginArray14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore24JSPluginArrayConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore22JSPluginArrayPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSPluginArrayConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore24JSPluginArrayConstructor9classInfoEv
+__ZN7WebCore27jsDOMWindowRangeConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore7JSRange14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore18JSRangeConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore16JSRangePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSRangeConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSRangeConstructor9classInfoEv
+__ZN7WebCore26jsDOMWindowRectConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore6JSRect14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore17JSRectConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore15JSRectPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore6JSRect15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSRectConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17JSRectConstructor9classInfoEv
+__ZN7WebCore32jsDOMWindowStyleSheetConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSStyleSheet14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore23JSStyleSheetConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore23JSStyleSheetConstructor9classInfoEv
+__ZN7WebCore36jsDOMWindowStyleSheetListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSStyleSheetList14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSStyleSheetListConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore25JSStyleSheetListPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSStyleSheetListConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27JSStyleSheetListConstructor9classInfoEv
+__ZN7WebCore31jsDOMWindowTextEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11JSTextEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore22JSTextEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore20JSTextEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore11JSTextEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSTextEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore22JSTextEventConstructor9classInfoEv
+__ZN7WebCore29jsDOMWindowUIEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9JSUIEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore20JSUIEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore20JSUIEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore20JSUIEventConstructor9classInfoEv
+__ZN7WebCore32jsDOMWindowWheelEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSWheelEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore23JSWheelEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore21JSWheelEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSWheelEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore23JSWheelEventConstructor9classInfoEv
+__ZNK7WebCore24JSXPathResultConstructor9classInfoEv
+__ZN7WebCore28jsDOMWindowWorkerConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow6workerEPN3JSC9ExecStateE
+__ZN7WebCore19JSWorkerConstructorC1EPN3JSC9ExecStateE
+__ZN7WebCore19JSWorkerConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore17JSWorkerPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore8JSWorker15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSWorkerConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCoreL15constructWorkerEPN3JSC9ExecStateEPNS0_8JSObjectERKNS0_7ArgListE
+__ZN7WebCore36jsDOMWindowXPathEvaluatorConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSXPathEvaluator14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSXPathEvaluatorConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore25JSXPathEvaluatorPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSXPathEvaluator15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSXPathEvaluatorConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27JSXPathEvaluatorConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCore27JSXPathEvaluatorConstructor9constructEPN3JSC9ExecStateEPNS1_8JSObjectERKNS1_7ArgListE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14XPathEvaluatorE
+__ZN7WebCore16JSXPathEvaluatorC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14XPathEvaluatorEEE
+__ZN7WebCore16JSXPathEvaluatorC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14XPathEvaluatorEEE
+__ZN7WebCore16JSXPathEvaluator18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSXPathEvaluatorPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16JSXPathEvaluator9classInfoEv
+__ZN7WebCore24JSXSLTProcessorPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore15JSXSLTProcessor9classInfoEv
+__ZN7WebCore18JSAudioConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCoreL14constructAudioEPN3JSC9ExecStateEPNS0_8JSObjectERKNS0_7ArgListE
+__ZNK7WebCore18JSAudioConstructor8documentEv
+__ZN7WebCore16JSXPathEvaluatorD1Ev
+__ZN7WebCore16JSXPathEvaluatorD2Ev
+__ZThn8_N7WebCore16HTMLAudioElementD0Ev
+__ZN7WebCore28JSEntityReferenceConstructorD1Ev
+__ZN7WebCore17JSEntityPrototypeD1Ev
+__ZN7WebCore19JSEntityConstructorD1Ev
+__ZN7WebCore25JSDocumentTypeConstructorD1Ev
+__ZN7WebCore29JSDocumentFragmentConstructorD1Ev
+__ZN7WebCore25JSCDATASectionConstructorD1Ev
+__ZN7WebCore26JSCharacterDataConstructorD1Ev
+__ZN7WebCore17JSAttrConstructorD1Ev
+__ZN7WebCore26JSHTMLHRElementConstructorD1Ev
+__ZN7WebCore28JSHTMLHeadElementConstructorD1Ev
+__ZN7WebCore32JSHTMLFrameSetElementConstructorD1Ev
+__ZN7WebCore29JSHTMLFrameElementConstructorD1Ev
+__ZN7WebCore28JSHTMLFontElementConstructorD1Ev
+__ZN7WebCore32JSHTMLFieldSetElementConstructorD1Ev
+__ZN7WebCore29JSHTMLEmbedElementConstructorD1Ev
+__ZN7WebCore29JSHTMLDListElementConstructorD1Ev
+__ZN7WebCore30JSHTMLCanvasElementConstructorD1Ev
+__ZN7WebCore26JSHTMLBRElementConstructorD1Ev
+__ZN7WebCore34JSHTMLBlockquoteElementConstructorD1Ev
+__ZN7WebCore32JSHTMLBaseFontElementConstructorD1Ev
+__ZN7WebCore28JSHTMLBaseElementConstructorD1Ev
+__ZN7WebCore28JSHTMLAreaElementConstructorD1Ev
+__ZN7WebCore30JSHTMLAppletElementConstructorD1Ev
+__ZN7WebCore19JSNotationPrototypeD1Ev
+__ZN7WebCore33JSHTMLDirectoryElementConstructorD1Ev
+__ZN7WebCore21JSNotationConstructorD1Ev
+__ZN7WebCore34JSProcessingInstructionConstructorD1Ev
+__ZN7WebCore31JSHTMLIsIndexElementConstructorD1Ev
+__ZN7WebCore29JSHTMLLabelElementConstructorD1Ev
+__ZN7WebCore30JSHTMLLegendElementConstructorD1Ev
+__ZN7WebCore28JSHTMLLinkElementConstructorD1Ev
+__ZN7WebCore27JSHTMLMapElementConstructorD1Ev
+__ZN7WebCore31JSHTMLMarqueeElementConstructorD1Ev
+__ZN7WebCore28JSHTMLMenuElementConstructorD1Ev
+__ZN7WebCore28JSHTMLMetaElementConstructorD1Ev
+__ZN7WebCore30JSHTMLObjectElementConstructorD1Ev
+__ZN7WebCore29JSHTMLOListElementConstructorD1Ev
+__ZN7WebCore32JSHTMLOptGroupElementConstructorD1Ev
+__ZN7WebCore30JSHTMLOptionElementConstructorD1Ev
+__ZN7WebCore29JSHTMLParamElementConstructorD1Ev
+__ZN7WebCore27JSHTMLPreElementConstructorD1Ev
+__ZN7WebCore29JSHTMLQuoteElementConstructorD1Ev
+__ZN7WebCore29JSHTMLStyleElementConstructorD1Ev
+__ZN7WebCore36JSHTMLTableCaptionElementConstructorD1Ev
+__ZN7WebCore32JSHTMLTableColElementConstructorD1Ev
+__ZN7WebCore36JSHTMLTableSectionElementConstructorD1Ev
+__ZN7WebCore33JSHTMLTableCellElementConstructorD1Ev
+__ZN7WebCore32JSHTMLTableRowElementConstructorD1Ev
+__ZN7WebCore29JSHTMLTitleElementConstructorD1Ev
+__ZN7WebCore37JSCanvasRenderingContext2DConstructorD1Ev
+__ZN7WebCore22JSClipboardConstructorD1Ev
+__ZN7WebCore20JSCounterConstructorD1Ev
+__ZN7WebCore18JSCounterPrototypeD1Ev
+__ZN7WebCore27JSCSSCharsetRuleConstructorD1Ev
+__ZN7WebCore28JSCSSFontFaceRuleConstructorD1Ev
+__ZN7WebCore26JSCSSImportRuleConstructorD1Ev
+__ZN7WebCore25JSCSSMediaRuleConstructorD1Ev
+__ZN7WebCore24JSCSSPageRuleConstructorD1Ev
+__ZN7WebCore22JSCSSPageRulePrototypeD1Ev
+__ZN7WebCore24JSCSSRuleListConstructorD1Ev
+__ZN7WebCore25JSCSSStyleRuleConstructorD1Ev
+__ZN7WebCore26JSCSSStyleSheetConstructorD1Ev
+__ZN7WebCore25JSCSSValueListConstructorD1Ev
+__ZN7WebCore30JSDOMImplementationConstructorD1Ev
+__ZN7WebCore27JSHTMLCollectionConstructorD1Ev
+__ZN7WebCore26JSKeyboardEventConstructorD1Ev
+__ZN7WebCore22JSMediaListConstructorD1Ev
+__ZN7WebCore21JSMimeTypeConstructorD1Ev
+__ZN7WebCore26JSMimeTypeArrayConstructorD1Ev
+__ZN7WebCore23JSMouseEventConstructorD1Ev
+__ZN7WebCore26JSMutationEventConstructorD1Ev
+__ZN7WebCore25JSNamedNodeMapConstructorD1Ev
+__ZN7WebCore26JSOverflowEventConstructorD1Ev
+__ZN7WebCore24JSOverflowEventPrototypeD1Ev
+__ZN7WebCore19JSPluginConstructorD1Ev
+__ZN7WebCore24JSPluginArrayConstructorD1Ev
+__ZN7WebCore18JSRangeConstructorD1Ev
+__ZN7WebCore17JSRectConstructorD1Ev
+__ZN7WebCore15JSRectPrototypeD1Ev
+__ZN7WebCore23JSStyleSheetConstructorD1Ev
+__ZN7WebCore27JSStyleSheetListConstructorD1Ev
+__ZN7WebCore22JSTextEventConstructorD1Ev
+__ZN7WebCore20JSTextEventPrototypeD1Ev
+__ZN7WebCore20JSUIEventConstructorD1Ev
+__ZN7WebCore23JSWheelEventConstructorD1Ev
+__ZN7WebCore21JSWheelEventPrototypeD1Ev
+__ZN7WebCore19JSWorkerConstructorD1Ev
+__ZN7WebCore17JSWorkerPrototypeD1Ev
+__ZN7WebCore27JSXPathEvaluatorConstructorD1Ev
+__ZN7WebCore25JSXPathEvaluatorPrototypeD1Ev
+__ZN7WebCoreL14warningHandlerEPvPKcz
+__ZN3WTF7HashMapIPN7WebCore16AtomicStringImplES3_NS_7PtrHashIS3_EENS_10HashTraitsIS3_EES7_E3setERKS3_SA_
+__ZN7WebCore48jsRangePrototypeFunctionCreateContextualFragmentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore5Range24createContextualFragmentERKNS_6StringERi
+__ZN7WebCore16JSHTMLCollection16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore25JSHTMLCollectionPrototype9classInfoEv
+__ZN7WebCore14JSNamedNodeMap16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore23JSNamedNodeMapPrototype9classInfoEv
+__ZN7WebCore17JSHTMLFormElement16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore26JSHTMLFormElementPrototype9classInfoEv
+__ZNK7WebCore22JSHTMLElementPrototype9classInfoEv
+__ZNK7WebCore18JSElementPrototype9classInfoEv
+__ZNK7WebCore15JSNodePrototype9classInfoEv
+__ZN7WebCore17JSHTMLFormElement11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore15HTMLFormElement4itemEj
+__ZN7WebCore36jsNodeDOCUMENT_POSITION_CONTAINED_BYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsNodeDOCUMENT_POSITION_CONTAINSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsNodeDOCUMENT_POSITION_DISCONNECTEDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsNodeDOCUMENT_POSITION_FOLLOWINGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore47jsNodeDOCUMENT_POSITION_IMPLEMENTATION_SPECIFICEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsNodeDOCUMENT_POSITION_PRECEDINGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsNodeDOCUMENT_TYPE_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17jsNodeENTITY_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsNodeENTITY_REFERENCE_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsNodeNOTATION_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsNodePROCESSING_INSTRUCTION_NODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsElementChildElementCountEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7Element17childElementCountEv
+__ZN7WebCore28jsHTMLElementContentEditableEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11HTMLElement15contentEditableEv
+__ZN7WebCore25jsHTMLFormElementEncodingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsElementFirstElementChildEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsHTMLElementIsContentEditableEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsElementLastElementChildEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7Element16lastElementChildEv
+__ZN7WebCore27jsElementNextElementSiblingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7Element18nextElementSiblingEv
+__ZN7WebCore22jsHTMLElementOuterTextEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7Element9outerTextEv
+__ZN7WebCore31jsElementPreviousElementSiblingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7Element22previousElementSiblingEv
+__ZN7WebCore19JSHTMLSelectElement16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore28JSHTMLSelectElementPrototype9classInfoEv
+__ZN7WebCore28jsHTMLSelectElementAutofocusEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsHTMLSelectElementWillValidateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore22HTMLFormControlElement12willValidateEv
+__ZN7WebCore16JSStyleSheetList16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore25JSStyleSheetListPrototype9classInfoEv
+__ZN7WebCore13JSCSSRuleList16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore22JSCSSRuleListPrototype9classInfoEv
+__ZN7WebCore21JSCSSStyleDeclaration16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore30JSCSSStyleDeclarationPrototype9classInfoEv
+__ZN7WebCore14JSCSSValueList16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore23JSCSSValueListPrototype9classInfoEv
+__ZNK7WebCore19JSCSSValuePrototype9classInfoEv
+__ZN7WebCore14JSCSSValueList11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore22jsCSSValueCssValueTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsCSSValueListLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSMediaList9classInfoEv
+__ZN7WebCore11JSMediaList16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore20JSMediaListPrototype9classInfoEv
+__ZN7WebCore20JSMediaListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore11JSMediaList11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZNK7WebCore9MediaList4itemEj
+__ZN7WebCore17jsMediaListLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsMediaListPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15setJSNodePrefixEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore7Element9setPrefixERKNS_12AtomicStringERi
+__ZN7WebCore4Node14checkSetPrefixERKNS_12AtomicStringERi
+__ZN7WebCore20setJSHTMLElementLangEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11HTMLElement7setLangERKNS_6StringE
+__ZN7WebCore19setJSHTMLElementDirEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore29setJSHTMLAnchorElementCharsetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement10setCharsetERKNS_12AtomicStringE
+__ZN7WebCore28setJSHTMLAnchorElementCoordsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement9setCoordsERKNS_12AtomicStringE
+__ZN7WebCore30setJSHTMLAnchorElementHreflangEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement11setHreflangERKNS_12AtomicStringE
+__ZN7WebCore25setJSHTMLAnchorElementRevEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement6setRevERKNS_12AtomicStringE
+__ZN7WebCore27setJSHTMLAnchorElementShapeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement8setShapeERKNS_12AtomicStringE
+__ZN7WebCore26setJSHTMLAnchorElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLAnchorElement7setTypeERKNS_12AtomicStringE
+__ZN7WebCore27setJSHTMLAppletElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLPlugInElement8setAlignERKNS_6StringE
+__ZN7WebCore25setJSHTMLAppletElementAltEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLAppletElement6setAltERKNS_6StringE
+__ZN7WebCore29setJSHTMLAppletElementArchiveEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLAppletElement10setArchiveERKNS_6StringE
+__ZN7WebCore26setJSHTMLAppletElementCodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLAppletElement7setCodeERKNS_6StringE
+__ZN7WebCore30setJSHTMLAppletElementCodeBaseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLAppletElement11setCodeBaseERKNS_6StringE
+__ZN7WebCore28setJSHTMLAppletElementHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore28setJSHTMLAppletElementHspaceEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLAppletElement9setHspaceERKNS_6StringE
+__ZN7WebCore26setJSHTMLAppletElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLPlugInElement7setNameERKNS_6StringE
+__ZN7WebCore28setJSHTMLAppletElementObjectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLAppletElement9setObjectERKNS_6StringE
+__ZN7WebCore28setJSHTMLAppletElementVspaceEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLAppletElement9setVspaceERKNS_6StringE
-__ZN7WebCore15HTMLAreaElement12setAccessKeyERKNS_6StringE
-__ZN7WebCore15HTMLAreaElement6setAltERKNS_6StringE
-__ZN7WebCore15HTMLAreaElement7setHrefERKNS_6StringE
-__ZN7WebCore15HTMLAreaElement9setTargetERKNS_6StringE
-__ZN7WebCore17JSHTMLBaseElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore17JSHTMLBaseElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore27setJSHTMLAppletElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore29setJSHTMLAreaElementAccessKeyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLAreaElement12setAccessKeyERKNS_12AtomicStringE
+__ZN7WebCore23setJSHTMLAreaElementAltEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLAreaElement6setAltERKNS_12AtomicStringE
+__ZN7WebCore25setJSHTMLAreaElementShapeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLAreaElement8setShapeERKNS_12AtomicStringE
+__ZN7WebCore26setJSHTMLAreaElementTargetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLAreaElement9setTargetERKNS_12AtomicStringE
+__ZN7WebCore24setJSHTMLBaseElementHrefEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLBaseElement7setHrefERKNS_6StringE
+__ZN7WebCore26setJSHTMLBaseElementTargetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLBaseElement9setTargetERKNS_6StringE
-__ZN7WebCore21JSHTMLBaseFontElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore21JSHTMLBaseFontElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore21JSHTMLBaseFontElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore29setJSHTMLBaseFontElementColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLBaseFontElement8setColorERKNS_6StringE
+__ZN7WebCore28setJSHTMLBaseFontElementFaceEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLBaseFontElement7setFaceERKNS_6StringE
-__ZN7WebCore23JSHTMLBlockquoteElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore30setJSHTMLBlockquoteElementCiteEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore21HTMLBlockquoteElement7setCiteERKNS_6StringE
+__ZN7WebCore25setJSHTMLBodyElementALinkEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLBodyElement8setALinkERKNS_6StringE
-__ZN7WebCore15JSHTMLBRElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore30setJSHTMLBodyElementBackgroundEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLBodyElement13setBackgroundERKNS_6StringE
+__ZN7WebCore27setJSHTMLBodyElementBgColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24setJSHTMLBodyElementLinkEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24setJSHTMLBodyElementTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25setJSHTMLBodyElementVLinkEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore23setJSHTMLBRElementClearEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore13HTMLBRElement8setClearERKNS_6StringE
+__ZN7WebCore31setJSHTMLButtonElementAccessKeyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLButtonElement12setAccessKeyERKNS_6StringE
+__ZN7WebCore27setJSHTMLButtonElementValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLButtonElement8setValueERKNS_6StringE
+__ZN7WebCore24setJSHTMLDivElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore14HTMLDivElement8setAlignERKNS_6StringE
+__ZN7WebCore26setJSHTMLEmbedElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore23jsHTMLEmbedElementAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25setJSHTMLEmbedElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24setJSHTMLEmbedElementSrcEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLEmbedElement6setSrcERKNS_6StringE
+__ZN7WebCore25setJSHTMLEmbedElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLEmbedElement7setTypeERKNS_6StringE
+__ZN7WebCore25setJSHTMLFontElementColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLFontElement8setColorERKNS_6StringE
+__ZN7WebCore24setJSHTMLFontElementFaceEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLFontElement7setFaceERKNS_6StringE
+__ZN7WebCore24setJSHTMLFontElementSizeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLFontElement7setSizeERKNS_6StringE
+__ZN7WebCore28setJSHTMLFormElementEncodingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLFormElement10setEnctypeERKNS_6StringE
-__ZN7WebCore18JSHTMLFrameElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore18JSHTMLFrameElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore27setJSHTMLFormElementEnctypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore18JSHTMLFrameElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore32setJSHTMLFrameElementFrameBorderEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore29setJSHTMLFrameElementLongDescEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore20HTMLFrameElementBase11setLongDescERKNS_6StringE
-__ZN7WebCore18JSHTMLFrameElement6setSrcEPN3KJS9ExecStateEPNS1_7JSValueE
-__ZN7WebCore18JSHTMLFrameElement11setLocationEPN3KJS9ExecStateEPNS1_7JSValueE
+__ZN7WebCore33setJSHTMLFrameElementMarginHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore32setJSHTMLFrameElementMarginWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25setJSHTMLFrameElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore30setJSHTMLFrameElementScrollingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24setJSHTMLFrameElementSrcEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore18JSHTMLFrameElement6setSrcEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore29setJSHTMLFrameElementLocationEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore18JSHTMLFrameElement11setLocationEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore26jsHTMLFrameElementLocationEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore20HTMLFrameElementBase8locationEv
-__ZN7WebCore21JSHTMLFrameSetElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore21JSHTMLFrameSetElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore21JSHTMLFrameSetElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore28setJSHTMLFrameSetElementColsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLFrameSetElement7setColsERKNS_6StringE
+__ZN7WebCore28setJSHTMLFrameSetElementRowsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLFrameSetElement7setRowsERKNS_6StringE
-__ZN7WebCore17JSHTMLHeadElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore27setJSHTMLHeadElementProfileEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLHeadElement10setProfileERKNS_6StringE
-__ZN7WebCore20JSHTMLHeadingElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore28setJSHTMLHeadingElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore18HTMLHeadingElement8setAlignERKNS_6StringE
-__ZN7WebCore15JSHTMLHRElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore23setJSHTMLHRElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore13HTMLHRElement8setAlignERKNS_6StringE
+__ZN7WebCore22setJSHTMLHRElementSizeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore13HTMLHRElement7setSizeERKNS_6StringE
+__ZN7WebCore23setJSHTMLHRElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore13HTMLHRElement8setWidthERKNS_6StringE
-__ZN7WebCore17JSHTMLHtmlElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore27setJSHTMLHtmlElementVersionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLHtmlElement10setVersionERKNS_6StringE
+__ZN7WebCore27setJSHTMLIFrameElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLIFrameElement8setAlignERKNS_6StringE
+__ZN7WebCore30setJSHTMLIFrameElementLongDescEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25setJSHTMLImageElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement7setNameERKNS_6StringE
+__ZN7WebCore29setJSHTMLImageElementLongDescEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLImageElement11setLongDescERKNS_6StringE
+__ZN7WebCore27setJSHTMLImageElementLowsrcEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLImageElement9setLowsrcERKNS_6StringE
+__ZN7WebCore24jsHTMLImageElementLowsrcEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore16HTMLImageElement6lowsrcEv
+__ZN7WebCore27setJSHTMLInputElementAcceptEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLInputElement9setAcceptERKNS_6StringE
+__ZN7WebCore30setJSHTMLInputElementAccessKeyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLInputElement12setAccessKeyERKNS_6StringE
+__ZN7WebCore26setJSHTMLInputElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLInputElement8setAlignERKNS_6StringE
+__ZN7WebCore24setJSHTMLInputElementAltEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLInputElement6setAltERKNS_6StringE
+__ZN7WebCore33setJSHTMLInputElementDefaultValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLInputElement15setDefaultValueERKNS_6StringE
+__ZN7WebCore24setJSHTMLInputElementSrcEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLInputElement6setSrcERKNS_6StringE
+__ZN7WebCore7Element15removeAttributeERKNS_13QualifiedNameERi
+__ZN7WebCore27setJSHTMLInputElementUseMapEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLInputElement9setUseMapERKNS_6StringE
-__ZN7WebCore20JSHTMLIsIndexElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore20JSHTMLIsIndexElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore29setJSHTMLIsIndexElementPromptEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore18HTMLIsIndexElement9setPromptERKNS_6StringE
+__ZN7WebCore30setJSHTMLLabelElementAccessKeyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLLabelElement12setAccessKeyERKNS_6StringE
-__ZN7WebCore19JSHTMLLegendElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore31setJSHTMLLegendElementAccessKeyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLLegendElement12setAccessKeyERKNS_6StringE
+__ZN7WebCore27setJSHTMLLegendElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLLegendElement8setAlignERKNS_6StringE
+__ZN7WebCore22setJSHTMLLIElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore13HTMLLIElement7setTypeERKNS_6StringE
+__ZN7WebCore27setJSHTMLLinkElementCharsetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLLinkElement10setCharsetERKNS_6StringE
+__ZN7WebCore28setJSHTMLLinkElementHreflangEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLLinkElement11setHreflangERKNS_6StringE
+__ZN7WebCore23setJSHTMLLinkElementRevEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLLinkElement6setRevERKNS_6StringE
+__ZN7WebCore26setJSHTMLLinkElementTargetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLLinkElement9setTargetERKNS_6StringE
+__ZN7WebCore23setJSHTMLMapElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore14HTMLMapElement7setNameERKNS_6StringE
+__ZN7WebCore29setJSHTMLMetaElementHttpEquivEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore15HTMLMetaElement12setHttpEquivERKNS_6StringE
+__ZN7WebCore26setJSHTMLMetaElementSchemeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore15HTMLMetaElement9setSchemeERKNS_6StringE
-__ZN7WebCore16JSHTMLModElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore23setJSHTMLModElementCiteEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore14HTMLModElement7setCiteERKNS_6StringE
+__ZN7WebCore27setJSHTMLModElementDateTimeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore14HTMLModElement11setDateTimeERKNS_6StringE
+__ZN7WebCore26setJSHTMLObjectElementCodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLObjectElement7setCodeERKNS_6StringE
+__ZN7WebCore27setJSHTMLObjectElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore29setJSHTMLObjectElementArchiveEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLObjectElement10setArchiveERKNS_6StringE
+__ZN7WebCore28setJSHTMLObjectElementBorderEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLObjectElement9setBorderERKNS_6StringE
+__ZN7WebCore30setJSHTMLObjectElementCodeBaseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLObjectElement11setCodeBaseERKNS_6StringE
+__ZN7WebCore30setJSHTMLObjectElementCodeTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLObjectElement11setCodeTypeERKNS_6StringE
+__ZN7WebCore28setJSHTMLObjectElementHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore26setJSHTMLObjectElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore29setJSHTMLObjectElementStandbyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLObjectElement10setStandbyERKNS_6StringE
-__ZN7WebCore17HTMLObjectElement7setTypeERKNS_6StringE
+__ZN7WebCore28setJSHTMLObjectElementUseMapEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLObjectElement9setUseMapERKNS_6StringE
+__ZN7WebCore27setJSHTMLObjectElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25setJSHTMLOListElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLOListElement7setTypeERKNS_6StringE
-__ZN7WebCore21JSHTMLOptGroupElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore21JSHTMLOptGroupElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore29setJSHTMLOptGroupElementLabelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLOptGroupElement8setLabelERKNS_6StringE
+__ZN7WebCore27setJSHTMLOptionElementLabelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLOptionElement8setLabelERKNS_6StringE
-__ZN7WebCore22JSHTMLParagraphElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore30setJSHTMLParagraphElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore20HTMLParagraphElement8setAlignERKNS_6StringE
-__ZN7WebCore18JSHTMLParamElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
-__ZN7WebCore16HTMLParamElement7setNameERKNS_6StringE
+__ZN7WebCore25setJSHTMLParamElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLParamElement7setTypeERKNS_6StringE
-__ZN7WebCore16HTMLParamElement8setValueERKNS_6StringE
+__ZN7WebCore30setJSHTMLParamElementValueTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLParamElement12setValueTypeERKNS_6StringE
-__ZN7WebCore18JSHTMLQuoteElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore18JSHTMLQuoteElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore18JSHTMLQuoteElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore25setJSHTMLQuoteElementCiteEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLQuoteElement7setCiteERKNS_6StringE
+__ZN7WebCore29setJSHTMLScriptElementHtmlForEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLScriptElement10setHtmlForERKNS_6StringE
+__ZN7WebCore27setJSHTMLScriptElementEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore17HTMLScriptElement8setEventERKNS_6StringE
-__ZN7WebCore25JSHTMLTableCaptionElement3putEPN3KJS9ExecStateERKNS1_10IdentifierEPNS1_7JSValueEi
-__ZN7WebCore25JSHTMLTableCaptionElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore26setJSHTMLSelectElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore26setJSHTMLStyleElementMediaEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLStyleElement8setMediaERKNS_12AtomicStringE
+__ZN7WebCore25JSHTMLTableCaptionElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore33setJSHTMLTableCaptionElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore23HTMLTableCaptionElement8setAlignERKNS_6StringE
+__ZN7WebCore29setJSHTMLTableCellElementAbbrEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore20HTMLTableCellElement7setAbbrERKNS_6StringE
+__ZN7WebCore30setJSHTMLTableCellElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLTableCellElement8setAlignERKNS_6StringE
+__ZN7WebCore29setJSHTMLTableCellElementAxisEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore20HTMLTableCellElement7setAxisERKNS_6StringE
+__ZN7WebCore32setJSHTMLTableCellElementBgColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore20HTMLTableCellElement10setBgColorERKNS_6StringE
+__ZN7WebCore27setJSHTMLTableCellElementChEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore20HTMLTableCellElement5setChERKNS_6StringE
+__ZN7WebCore30setJSHTMLTableCellElementChOffEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore20HTMLTableCellElement8setChOffERKNS_6StringE
+__ZN7WebCore32setJSHTMLTableCellElementHeadersEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore20HTMLTableCellElement10setHeadersERKNS_6StringE
+__ZN7WebCore31setJSHTMLTableCellElementHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLTableCellElement9setHeightERKNS_6StringE
+__ZN7WebCore30setJSHTMLTableCellElementScopeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore20HTMLTableCellElement8setScopeERKNS_6StringE
+__ZN7WebCore31setJSHTMLTableCellElementVAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLTableCellElement9setVAlignERKNS_6StringE
+__ZN7WebCore30setJSHTMLTableCellElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLTableCellElement8setWidthERKNS_6StringE
+__ZN7WebCore29setJSHTMLTableColElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLTableColElement8setAlignERKNS_6StringE
+__ZN7WebCore26setJSHTMLTableColElementChEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLTableColElement5setChERKNS_6StringE
+__ZN7WebCore29setJSHTMLTableColElementChOffEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLTableColElement8setChOffERKNS_6StringE
+__ZN7WebCore30setJSHTMLTableColElementVAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLTableColElement9setVAlignERKNS_6StringE
+__ZN7WebCore29setJSHTMLTableColElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19HTMLTableColElement8setWidthERKNS_6StringE
+__ZN7WebCore28setJSHTMLTableElementBgColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLTableElement10setBgColorERKNS_6StringE
+__ZN7WebCore26setJSHTMLTableElementFrameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLTableElement8setFrameERKNS_6StringE
+__ZN7WebCore26setJSHTMLTableElementRulesEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLTableElement8setRulesERKNS_6StringE
+__ZN7WebCore28setJSHTMLTableElementSummaryEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLTableElement10setSummaryERKNS_6StringE
+__ZN7WebCore29setJSHTMLTableRowElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19HTMLTableRowElement8setAlignERKNS_6StringE
+__ZN7WebCore31setJSHTMLTableRowElementBgColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19HTMLTableRowElement10setBgColorERKNS_6StringE
+__ZN7WebCore26setJSHTMLTableRowElementChEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLTableRowElement5setChERKNS_6StringE
+__ZN7WebCore29setJSHTMLTableRowElementChOffEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLTableRowElement8setChOffERKNS_6StringE
-__ZN7WebCore25JSHTMLTableSectionElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore30setJSHTMLTableRowElementVAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19HTMLTableRowElement9setVAlignERKNS_6StringE
+__ZN7WebCore33setJSHTMLTableSectionElementAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore23HTMLTableSectionElement8setAlignERKNS_6StringE
+__ZN7WebCore30setJSHTMLTableSectionElementChEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore23HTMLTableSectionElement5setChERKNS_6StringE
+__ZN7WebCore33setJSHTMLTableSectionElementChOffEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore23HTMLTableSectionElement8setChOffERKNS_6StringE
+__ZN7WebCore34setJSHTMLTableSectionElementVAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore23HTMLTableSectionElement9setVAlignERKNS_6StringE
+__ZN7WebCore36setJSHTMLTextAreaElementDefaultValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19HTMLTextAreaElement15setDefaultValueERKNS_6StringE
+__ZN7WebCore33setJSHTMLTextAreaElementAccessKeyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLTextAreaElement12setAccessKeyERKNS_6StringE
-__ZN7WebCore18JSHTMLUListElement16putValuePropertyEPN3KJS9ExecStateEiPNS1_7JSValueEi
+__ZN7WebCore28setJSHTMLTextAreaElementNameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25setJSHTMLTitleElementTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25setJSHTMLUListElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore16HTMLUListElement7setTypeERKNS_6StringE
-__ZN7WebCore28JSHTMLBaseElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSHTMLBaseElementConstructor9classInfoEv
-__ZN7WebCore32JSHTMLBaseFontElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore32JSHTMLBaseFontElementConstructor9classInfoEv
-__ZN7WebCore30JSHTMLIFrameElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore30JSHTMLIFrameElementConstructor9classInfoEv
-__ZN7WebCore34JSHTMLBlockquoteElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore34JSHTMLBlockquoteElementConstructor9classInfoEv
+__ZThn8_N7WebCore16HTMLEmbedElementD0Ev
+__ZNK3JSC8Bindings12ObjcInstance12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
+__ZNK3JSC8Bindings12ObjcInstance7valueOfEPNS_9ExecStateE
+__ZNK3JSC8Bindings12ObjcInstance11stringValueEPNS_9ExecStateE
+__ZN7WebCore19jsDOMWindowOnsubmitEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow8onsubmitEv
+__ZN7WebCore38jsDOMWindowHTMLAudioElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLAudioElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore29JSHTMLAudioElementConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore29JSHTMLAudioElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore29JSHTMLAudioElementConstructor9classInfoEv
-__ZN7WebCore35JSSVGPreserveAspectRatioConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore44jsDOMWindowSVGPreserveAspectRatioConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24JSSVGPreserveAspectRatio14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore33JSSVGPreserveAspectRatioPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSSVGPreserveAspectRatio15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore35JSSVGPreserveAspectRatioConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore35JSSVGPreserveAspectRatioConstructor9classInfoEv
-__ZN7WebCore9JSBarInfo18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18jsDOMWindowMenubarEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7menubarEv
__ZNK7WebCore9JSBarInfo9classInfoEv
-__ZN7WebCore21JSSVGAngleConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore30jsDOMWindowSVGAngleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10JSSVGAngle14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore19JSSVGAnglePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSSVGAngle15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSSVGAngleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore21JSSVGAngleConstructor9classInfoEv
-__ZNK7WebCore30JSCSSPrimitiveValueConstructor9classInfoEv
-__ZN7WebCore21JSSVGPaintConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore21jsDOMWindowScrollbarsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow10scrollbarsEv
+__ZN7WebCore30jsDOMWindowSVGPaintConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10JSSVGPaint14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore21JSSVGPaintConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore19JSSVGPaintPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSSVGPaint15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSSVGColorPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSSVGColor15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSSVGPaintConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore21JSSVGPaintConstructor9classInfoEv
-__ZN7WebCore19JSEntityConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore19JSEntityConstructor9classInfoEv
-__ZN7WebCore28JSHTMLMenuElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSHTMLMenuElementConstructor9classInfoEv
-__ZN7WebCore27JSHTMLModElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore27JSHTMLModElementConstructor9classInfoEv
-__ZNK7WebCore28JSHTMLFormElementConstructor9classInfoEv
-__ZN7WebCore23JSMouseEventConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore23JSMouseEventConstructor9classInfoEv
-__ZN7WebCore22JSTextEventConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore22JSTextEventConstructor9classInfoEv
-__ZN7WebCore29JSHTMLQuoteElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLQuoteElementConstructor9classInfoEv
-__ZN7WebCore28JSHTMLHeadElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSHTMLHeadElementConstructor9classInfoEv
-__ZN7WebCore31JSHTMLIsIndexElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore31JSHTMLIsIndexElementConstructor9classInfoEv
-__ZNK7WebCore25JSCDATASectionConstructor9classInfoEv
-__ZN7WebCore27JSCSSCharsetRuleConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore27JSCSSCharsetRuleConstructor9classInfoEv
-__ZN7WebCore30JSHTMLAppletElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore30JSHTMLAppletElementConstructor9classInfoEv
-__ZNK7WebCore21JSCSSValueConstructor9classInfoEv
+__ZN7WebCore35jsDOMWindowDOMStringListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSDOMStringList14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSDOMStringListConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore24JSDOMStringListPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSDOMStringList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSDOMStringListConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSDOMStringListConstructor9classInfoEv
+__ZN7WebCore18jsDOMWindowOnfocusEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7onfocusEv
+__ZN7WebCore21jsDOMWindowOuterWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow10outerWidthEv
+__ZN7WebCore18jsDOMWindowOnresetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7onresetEv
+__ZN7WebCore37jsDOMWindowOnwebkitanimationiterationEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow26onwebkitanimationiterationEv
+__ZNK7WebCore28JSWebKitCSSMatrixConstructor9classInfoEv
+__ZN7WebCore33jsDOMWindowWebKitPointConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow11webKitPointEPN3JSC9ExecStateE
+__ZN7WebCore24JSWebKitPointConstructorC1EPN3JSC9ExecStateE
+__ZN7WebCore24JSWebKitPointConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore22JSWebKitPointPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore13JSWebKitPoint15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZNK7WebCore24JSWebKitPointConstructor9classInfoEv
+__ZN7WebCore42jsDOMWindowXMLHttpRequestUploadConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22JSXMLHttpRequestUpload14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore31JSXMLHttpRequestUploadPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSXMLHttpRequestUpload15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore33JSXMLHttpRequestUploadConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore33JSXMLHttpRequestUploadConstructor9classInfoEv
__ZNK7WebCore22JSDOMParserConstructor9classInfoEv
-__ZN7WebCore25JSCSSValueListConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore25JSCSSValueListConstructor9classInfoEv
__ZNK7WebCore8JSScreen9classInfoEv
-__ZN7WebCore36JSXMLHttpRequestExceptionConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore36JSXMLHttpRequestExceptionConstructor9classInfoEv
-__ZN7WebCore29JSHTMLStyleElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLStyleElementConstructor9classInfoEv
-__ZN7WebCore34JSProcessingInstructionConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore34JSProcessingInstructionConstructor9classInfoEv
+__ZN7WebCore25jsDOMWindowSessionStorageEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow14sessionStorageEv
+__ZN7WebCore14SessionStorage6createEPNS_4PageE
+__ZN7WebCore14SessionStorageC1EPNS_4PageE
+__ZN7WebCore14SessionStorageC2EPNS_4PageE
+__ZN7WebCore14SessionStorage11storageAreaEPNS_14SecurityOriginE
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEENS1_INS2_18SessionStorageAreaEEENS2_18SecurityOriginHashENS_10HashTrai
+__ZN7WebCore18SessionStorageAreaC1EPNS_14SecurityOriginEPNS_4PageE
+__ZN7WebCore18SessionStorageAreaC2EPNS_14SecurityOriginEPNS_4PageE
+__ZN7WebCore11StorageAreaC2EPNS_14SecurityOriginE
+__ZN7WebCore10StorageMap6createEv
+__ZN7WebCore10StorageMapC1Ev
+__ZN7WebCore10StorageMapC2Ev
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEENS1_INS2_18SessionStorageAreaEEENS2_18SecurityOriginHashENS_10HashTrait
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_NS1_INS2_18SessionStorageAreaEEEENS_18PairFirstExtractorIS
+__ZN7WebCore19InspectorController16didUseDOMStorageEPNS_11StorageAreaEbPNS_5FrameE
+__ZN7WebCore7Storage6createEPNS_5FrameEN3WTF10PassRefPtrINS_11StorageAreaEEE
+__ZN7WebCore7StorageC1EPNS_5FrameEN3WTF10PassRefPtrINS_11StorageAreaEEE
+__ZN7WebCore7StorageC2EPNS_5FrameEN3WTF10PassRefPtrINS_11StorageAreaEEE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_7StorageE
+__ZN7WebCore9JSStorage15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore9JSStorageC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7StorageEEE
+__ZN7WebCore9JSStorageC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7StorageEEE
+__ZN7WebCore9JSStorage18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore9JSStorage18canGetItemsForNameEPN3JSC9ExecStateEPNS_7StorageERKNS1_10IdentifierE
+__ZNK7WebCore7Storage8containsERKNS_6StringE
+__ZNK7WebCore11StorageArea8containsERKNS_6StringE
+__ZNK7WebCore11StorageArea16internalContainsERKNS_6StringE
+__ZNK7WebCore10StorageMap8containsERKNS_6StringE
+__ZN7WebCore18JSStoragePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore9JSStorage9classInfoEv
__ZNK7WebCore29JSDOMCoreExceptionConstructor9classInfoEv
-__ZN7WebCore32JSHTMLFrameSetElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore32JSHTMLFrameSetElementConstructor9classInfoEv
-__ZN7WebCore27JSRangeExceptionConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28jsDOMWindowClientInformationEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsDOMWindowRangeExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSRangeException14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSRangeExceptionConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore25JSRangeExceptionPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSRangeException15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSRangeExceptionConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore27JSRangeExceptionConstructor9classInfoEv
-__ZN7WebCore30JSDOMImplementationConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore30JSDOMImplementationConstructor9classInfoEv
-__ZN7WebCore23JSWheelEventConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore23JSWheelEventConstructor9classInfoEv
-__ZN7WebCore26JSCharacterDataConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore26JSCharacterDataConstructor9classInfoEv
-__ZN7WebCore30JSHTMLLegendElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore30JSHTMLLegendElementConstructor9classInfoEv
-__ZNK7WebCore24JSXPathResultConstructor9classInfoEv
-__ZN7WebCore17JSRectConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore17JSRectConstructor9classInfoEv
-__ZN7WebCore27JSHTMLPreElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore27JSHTMLPreElementConstructor9classInfoEv
-__ZN7WebCore25JSMessageEventConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore23jsDOMWindowLocalStorageEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow12localStorageEv
+__ZN7WebCore12LocalStorage11storageAreaEPNS_14SecurityOriginE
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEENS1_INS2_16LocalStorageAreaEEENS2_18SecurityOriginHashENS_10HashTraits
+__ZN7WebCore16LocalStorageAreaC1EPNS_14SecurityOriginEPNS_12LocalStorageE
+__ZN7WebCore16LocalStorageAreaC2EPNS_14SecurityOriginEPNS_12LocalStorageE
+__ZN7WebCore12LocalStorage14scheduleImportEN3WTF10PassRefPtrINS_16LocalStorageAreaEEE
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEENS1_INS2_16LocalStorageAreaEEENS2_18SecurityOriginHashENS_10HashTraitsI
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_NS1_INS2_16LocalStorageAreaEEEENS_18PairFirstExtractorIS8_
+__ZNK7WebCore16LocalStorageArea8containsERKNS_6StringE
+__ZN7WebCore29jsDOMWindowStorageConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9JSStorage14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore20JSStorageConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore18JSStoragePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSStorageConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore20JSStorageConstructor9classInfoEv
+__ZN7WebCore34jsDOMWindowMessageEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSMessageEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSMessageEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSMessageEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSMessageEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore25JSMessageEventConstructor9classInfoEv
-__ZN7WebCore20JSCounterConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore20JSCounterConstructor9classInfoEv
-__ZN7WebCore25JSNamedNodeMapConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore25JSNamedNodeMapConstructor9classInfoEv
-__ZN7WebCore32JSHTMLOptGroupElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore32JSHTMLOptGroupElementConstructor9classInfoEv
-__ZN7WebCore31JSHTMLHeadingElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore31JSHTMLHeadingElementConstructor9classInfoEv
-__ZN7WebCore24JSCSSRuleListConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore24JSCSSRuleListConstructor9classInfoEv
-__ZNK7WebCore25JSHTMLDocumentConstructor9classInfoEv
-__ZN7WebCore33JSHTMLParagraphElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore33JSHTMLParagraphElementConstructor9classInfoEv
-__ZN7WebCore32JSHTMLFieldSetElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore32JSHTMLFieldSetElementConstructor9classInfoEv
-__ZN7WebCore23JSStyleSheetConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore23JSStyleSheetConstructor9classInfoEv
-__ZN7WebCore30JSHTMLButtonElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore30JSHTMLButtonElementConstructor9classInfoEv
-__ZN7WebCore27JSHTMLMapElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore27JSHTMLMapElementConstructor9classInfoEv
-__ZN7WebCore26JSOverflowEventConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore26JSOverflowEventConstructor9classInfoEv
-__ZN7WebCore27JSXPathExceptionConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore27JSXPathExceptionConstructor9classInfoEv
-__ZN7WebCore31JSSVGGradientElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore34jsDOMWindowStorageEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSStorageEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSStorageEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSStorageEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSStorageEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSStorageEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSStorageEventConstructor9classInfoEv
+__ZN7WebCore33jsDOMWindowOnwebkitanimationstartEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow22onwebkitanimationstartEv
+__ZN7WebCore19jsDOMWindowOnsearchEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow8onsearchEv
+__ZN7WebCore21jsDOMWindowOndblclickEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow10ondblclickEv
+__ZNK7WebCore26JSXSLTProcessorConstructor9classInfoEv
+__ZNK7WebCore19JSWorkerConstructor9classInfoEv
+__ZN7WebCore22jsDOMWindowOnmousemoveEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow11onmousemoveEv
+__ZN7WebCore43jsDOMWindowWebKitTransitionEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23JSWebKitTransitionEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore34JSWebKitTransitionEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore32JSWebKitTransitionEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSWebKitTransitionEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore34JSWebKitTransitionEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore34JSWebKitTransitionEventConstructor9classInfoEv
+__ZN7WebCore22jsDOMWindowOuterHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow11outerHeightEv
+__ZN7WebCore45jsDOMWindowCSSVariablesDeclarationConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSCSSVariablesDeclaration14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore34JSCSSVariablesDeclarationPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSCSSVariablesDeclaration15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore36JSCSSVariablesDeclarationConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore36JSCSSVariablesDeclarationConstructor9classInfoEv
+__ZN7WebCore33jsDOMWindowTextMetricsConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13JSTextMetrics14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore24JSTextMetricsConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore22JSTextMetricsPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSTextMetricsConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore24JSTextMetricsConstructor9classInfoEv
+__ZN7WebCore22jsDOMWindowPersonalbarEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow11personalbarEv
+__ZN7WebCore36jsDOMWindowClientRectListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSClientRectList14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSClientRectListConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore25JSClientRectListPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSClientRectList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSClientRectListConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27JSClientRectListConstructor9classInfoEv
+__ZN7WebCore40jsDOMWindowSVGGradientElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSSVGGradientElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore31JSSVGGradientElementConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore29JSSVGGradientElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSSVGGradientElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore31JSSVGGradientElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore31JSSVGGradientElementConstructor9classInfoEv
-__ZN7WebCore26JSProgressEventConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore35jsDOMWindowProgressEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSProgressEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore26JSProgressEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore26JSProgressEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore26JSProgressEventConstructor9classInfoEv
+__ZN7WebCore19jsDOMWindowOnselectEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow8onselectEv
+__ZN7WebCore32jsDOMWindowMediaErrorConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSMediaError14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore23JSMediaErrorConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore21JSMediaErrorPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore12JSMediaError15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSMediaErrorConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore23JSMediaErrorConstructor9classInfoEv
-__ZN7WebCore17JSAttrConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore17JSAttrConstructor9classInfoEv
-__ZN7WebCore28JSEntityReferenceConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSEntityReferenceConstructor9classInfoEv
-__ZN7WebCore36JSHTMLTableCaptionElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore36JSHTMLTableCaptionElementConstructor9classInfoEv
-__ZN7WebCore30JSHTMLObjectElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore30JSHTMLObjectElementConstructor9classInfoEv
-__ZN7WebCore29JSHTMLFrameElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLFrameElementConstructor9classInfoEv
-__ZNK7WebCore20JSCSSRuleConstructor9classInfoEv
-__ZNK7WebCore32JSCSSStyleDeclarationConstructor9classInfoEv
-__ZNK7WebCore26JSMutationEventConstructor9classInfoEv
-__ZNK7WebCore29JSHTMLInputElementConstructor9classInfoEv
-__ZN7WebCore33JSHTMLDirectoryElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore33JSHTMLDirectoryElementConstructor9classInfoEv
-__ZN7WebCore30JSHTMLScriptElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore30JSHTMLScriptElementConstructor9classInfoEv
-__ZN7WebCore34JSSVGTextContentElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27jsDOMWindowDevicePixelRatioEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow16devicePixelRatioEv
+__ZN7WebCore21jsDOMWindowScreenLeftEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7screenXEv
+__ZN7WebCore18jsDOMWindowOnkeyupEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7onkeyupEv
+__ZNK7WebCore19JSOptionConstructor9classInfoEv
+__ZN7WebCore23jsDOMWindowOnmousewheelEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow12onmousewheelEv
+__ZN7WebCore35JSWebKitCSSKeyframesRuleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore35JSWebKitCSSKeyframesRuleConstructor9classInfoEv
+__ZN7WebCore32jsDOMWindowOnwebkittransitionendEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow21onwebkittransitionendEv
+__ZN7WebCore18jsDOMWindowScreenYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7screenYEv
+__ZN7WebCore21jsDOMWindowOnkeypressEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow10onkeypressEv
+__ZN7WebCore18jsDOMWindowToolbarEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7toolbarEv
+__ZN7WebCore43jsDOMWindowSVGTextContentElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23JSSVGTextContentElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore34JSSVGTextContentElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore34JSSVGTextContentElementConstructor9classInfoEv
-__ZN7WebCore28JSHTMLAreaElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSHTMLAreaElementConstructor9classInfoEv
-__ZNK7WebCore18JSEventConstructor9classInfoEv
-__ZN7WebCore29JSHTMLOListElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLOListElementConstructor9classInfoEv
-__ZN7WebCore30JSHTMLCanvasElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore30JSHTMLCanvasElementConstructor9classInfoEv
-__ZN7WebCore28JSCSSFontFaceRuleConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSCSSFontFaceRuleConstructor9classInfoEv
-__ZNK7WebCore21JSDocumentConstructor9classInfoEv
-__ZN7WebCore26JSHTMLBRElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore26JSHTMLBRElementConstructor9classInfoEv
-__ZN7WebCore25JSCSSStyleRuleConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore25JSCSSStyleRuleConstructor9classInfoEv
-__ZN7WebCore28JSHTMLFontElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSHTMLFontElementConstructor9classInfoEv
-__ZN7WebCore29JSHTMLTitleElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLTitleElementConstructor9classInfoEv
-__ZN7WebCore36JSHTMLTableSectionElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore36JSHTMLTableSectionElementConstructor9classInfoEv
-__ZN7WebCore25JSDocumentTypeConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore25JSDocumentTypeConstructor9classInfoEv
-__ZN7WebCore20JSUIEventConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore20JSUIEventConstructor9classInfoEv
-__ZN7WebCore27JSEventExceptionConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20jsDOMWindowScreenTopEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsDOMWindowOnclickEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7onclickEv
+__ZN7WebCore26jsDOMWindowFileConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore6JSFile14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore17JSFileConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore15JSFilePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore6JSFile15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSFileConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17JSFileConstructor9classInfoEv
+__ZNK7WebCore18JSAudioConstructor9classInfoEv
+__ZN7WebCore17jsDOMWindowCryptoEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSDOMWindow6cryptoEPN3JSC9ExecStateE
+__ZN7WebCore36jsDOMWindowEventExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSEventException14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSEventExceptionConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore25JSEventExceptionPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSEventExceptionConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore27JSEventExceptionConstructor9classInfoEv
-__ZN7WebCore27JSStyleSheetListConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore27JSStyleSheetListConstructor9classInfoEv
-__ZNK7WebCore18JSRangeConstructor9classInfoEv
-__ZN7WebCore25JSCSSMediaRuleConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore25JSCSSMediaRuleConstructor9classInfoEv
-__ZN7WebCore29JSHTMLEmbedElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLEmbedElementConstructor9classInfoEv
-__ZN7WebCore29JSSVGMarkerElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24jsDOMWindowDefaultStatusEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow13defaultStatusEv
+__ZNK7WebCore5Frame22jsDefaultStatusBarTextEv
+__ZN7WebCore31jsDOMWindowOnwebkitanimationendEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow20onwebkitanimationendEv
+__ZN7WebCore18jsDOMWindowScreenXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsDOMWindowOnmouseoverEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow11onmouseoverEv
+__ZN7WebCore38jsDOMWindowSVGMarkerElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSSVGMarkerElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSSVGMarkerElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSSVGMarkerElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSSVGMarkerElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore29JSSVGMarkerElementConstructor9classInfoEv
-__ZN7WebCore26JSHTMLHRElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore26JSHTMLHRElementConstructor9classInfoEv
-__ZN7WebCore26JSCSSImportRuleConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore26JSCSSImportRuleConstructor9classInfoEv
-__ZN7WebCore21JSSVGColorConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20jsDOMWindowOnmouseupEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow9onmouseupEv
+__ZN7WebCore24jsDOMWindowDefaultstatusEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore42jsDOMWindowWebKitAnimationEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22JSWebKitAnimationEvent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore33JSWebKitAnimationEventConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore31JSWebKitAnimationEventPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore33JSWebKitAnimationEventConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore33JSWebKitAnimationEventConstructor9classInfoEv
+__ZN7WebCore30jsDOMWindowSVGColorConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10JSSVGColor14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore21JSSVGColorConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore21JSSVGColorConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore21JSSVGColorConstructor9classInfoEv
-__ZN7WebCore29JSHTMLParamElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLParamElementConstructor9classInfoEv
-__ZNK7WebCore29JSDocumentFragmentConstructor9classInfoEv
-__ZNK7WebCore32JSHTMLTextAreaElementConstructor9classInfoEv
-__ZN7WebCore24JSCSSPageRuleConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore24JSCSSPageRuleConstructor9classInfoEv
+__ZN7WebCore29jsDOMWindowOffscreenBufferingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow18offscreenBufferingEv
+__ZN7WebCore27jsDOMWindowApplicationCacheEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow16applicationCacheEv
+__ZN7WebCore19DOMApplicationCacheC1EPNS_5FrameE
+__ZN7WebCore19DOMApplicationCacheC2EPNS_5FrameE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19DOMApplicationCacheE
+__ZN7WebCore21JSDOMApplicationCache15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSDOMApplicationCacheC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19DOMApplicationCacheEEE
+__ZN7WebCore21JSDOMApplicationCacheC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19DOMApplicationCacheEEE
+__ZN7WebCore21JSDOMApplicationCache18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore30JSDOMApplicationCachePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore21JSDOMApplicationCache9classInfoEv
+__ZN7WebCore32jsDOMWindowClientRectConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSClientRect14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore23JSClientRectConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore21JSClientRectPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSClientRectConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore23JSClientRectConstructor9classInfoEv
+__ZN7WebCore22jsDOMWindowLocationbarEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow11locationbarEv
+__ZN7WebCore31jsDOMWindowSVGLengthConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11JSSVGLength14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore20JSSVGLengthPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore11JSSVGLength15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore22JSSVGLengthConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore22JSSVGLengthConstructor9classInfoEv
__ZNK7WebCore27JSXPathEvaluatorConstructor9classInfoEv
-__ZN7WebCore26JSKeyboardEventConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore26JSKeyboardEventConstructor9classInfoEv
-__ZN7WebCore22JSMediaListConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore22JSMediaListConstructor9classInfoEv
-__ZNK7WebCore20JSCommentConstructor9classInfoEv
-__ZN7WebCore21JSNotationConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore21JSNotationConstructor9classInfoEv
-__ZN7WebCore29JSHTMLDListElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLDListElementConstructor9classInfoEv
-__ZNK7WebCore28JSHTMLHtmlElementConstructor9classInfoEv
-__ZN7WebCore29JSHTMLLabelElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore29JSHTMLLabelElementConstructor9classInfoEv
-__ZN7WebCore28JSHTMLLinkElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSHTMLLinkElementConstructor9classInfoEv
-__ZN7WebCore31JSHTMLMarqueeElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore31JSHTMLMarqueeElementConstructor9classInfoEv
-__ZN7WebCore28JSHTMLMetaElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore28JSHTMLMetaElementConstructor9classInfoEv
-__ZNK7WebCore30JSHTMLSelectElementConstructor9classInfoEv
-__ZN7WebCore32JSHTMLTableColElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK7WebCore32JSHTMLTableColElementConstructor9classInfoEv
-__ZNK7WebCore23JSNodeFilterConstructor9classInfoEv
+__ZN7WebCore19jsDOMWindowOnchangeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow8onchangeEv
+__ZN7WebCore18jsDOMWindowOnabortEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow7onabortEv
+__ZN7WebCore22jsDOMWindowOnmousedownEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow11onmousedownEv
+__ZN7WebCore21jsDOMWindowOnmouseoutEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9DOMWindow10onmouseoutEv
+__ZN7WebCore45jsDOMWindowWebKitCSSTransformValueConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSWebKitCSSTransformValue14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore36JSWebKitCSSTransformValueConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore34JSWebKitCSSTransformValuePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSWebKitCSSTransformValue15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore36JSWebKitCSSTransformValueConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore36JSWebKitCSSTransformValueConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowCSSVariablesRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSCSSVariablesRule14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore29JSCSSVariablesRuleConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore27JSCSSVariablesRulePrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSCSSVariablesRule15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSCSSVariablesRuleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29JSCSSVariablesRuleConstructor9classInfoEv
+__ZNK7WebCore18JSImageConstructor9classInfoEv
+__ZN7WebCore34JSWebKitCSSKeyframeRuleConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore34JSWebKitCSSKeyframeRuleConstructor9classInfoEv
+__ZN7WebCore30jsDOMWindowFileListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore10JSFileList14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore21JSFileListConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore19JSFileListPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSFileList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSFileListConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore21JSFileListConstructor9classInfoEv
__ZNK7WebCore26JSXMLSerializerConstructor9classInfoEv
+__ZNK7WebCore27JSXMLHttpRequestConstructor9classInfoEv
+__ZN7WebCore45jsDOMWindowXMLHttpRequestExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSXMLHttpRequestException14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore36JSXMLHttpRequestExceptionConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore34JSXMLHttpRequestExceptionPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSXMLHttpRequestException15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore36JSXMLHttpRequestExceptionConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore36JSXMLHttpRequestExceptionConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLMediaElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLMediaElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore29JSHTMLMediaElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore29JSHTMLMediaElementConstructor9classInfoEv
+__ZN7WebCore38jsDOMWindowHTMLVideoElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSHTMLVideoElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSHTMLVideoElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSHTMLVideoElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore29JSHTMLVideoElementConstructor9classInfoEv
-__ZN7WebCore25JSSVGExceptionConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore36jsDOMWindowXPathExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSXPathException14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSXPathExceptionConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore25JSXPathExceptionPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSXPathExceptionConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27JSXPathExceptionConstructor9classInfoEv
+__ZN7WebCore34jsDOMWindowSVGExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSSVGException14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSSVGExceptionConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSSVGExceptionPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSSVGException15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSSVGExceptionConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore25JSSVGExceptionConstructor9classInfoEv
-__ZN7WebCore23JSSVGPathSegConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore32jsDOMWindowSVGPathSegConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSSVGPathSeg14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore23JSSVGPathSegConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore21JSSVGPathSegPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore12JSSVGPathSeg15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSSVGPathSegConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore23JSSVGPathSegConstructor9classInfoEv
-__ZN7WebCore31JSSVGRenderingIntentConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore40jsDOMWindowSVGRenderingIntentConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSSVGRenderingIntent14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore31JSSVGRenderingIntentConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore29JSSVGRenderingIntentPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSSVGRenderingIntent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore31JSSVGRenderingIntentConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore31JSSVGRenderingIntentConstructor9classInfoEv
-__ZN7WebCore31JSSVGTextPathElementConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore40jsDOMWindowSVGTextPathElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSSVGTextPathElement14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore31JSSVGTextPathElementConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore29JSSVGTextPathElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSSVGTextPathElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore31JSSVGTextPathElementConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore31JSSVGTextPathElementConstructor9classInfoEv
-__ZN7WebCore25JSSVGTransformConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore34jsDOMWindowSVGTransformConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSSVGTransform14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSSVGTransformConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSSVGTransformPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSSVGTransform15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSSVGTransformConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore25JSSVGTransformConstructor9classInfoEv
-__ZN7WebCore25JSSVGUnitTypesConstructor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore34jsDOMWindowSVGUnitTypesConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSSVGUnitTypes14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSSVGUnitTypesConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSSVGUnitTypesPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSSVGUnitTypes15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSSVGUnitTypesConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore25JSSVGUnitTypesConstructor9classInfoEv
-__ZN7WebCore8Document7pluginsEv
+__ZNK7WebCore23JSHTMLDocumentPrototype9classInfoEv
+__ZNK7WebCore19JSDocumentPrototype9classInfoEv
+__ZN7WebCore27jsHTMLDocumentActiveElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12HTMLDocument13activeElementEv
+__ZN7WebCore32jsDocumentPreferredStylesheetSetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore8Document22preferredStylesheetSetEv
-__ZN7WebCore49jsCSSPrimitiveValuePrototypeFunctionSetFloatValueEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore21JSDOMApplicationCache4markEv
+__ZN7WebCore19DOMApplicationCache15disconnectFrameEv
+__ZN7WebCore24JSTextMetricsConstructorD1Ev
+__ZN7WebCore34JSCSSVariablesDeclarationPrototypeD1Ev
+__ZN7WebCore36JSCSSVariablesDeclarationConstructorD1Ev
+__ZN7WebCore32JSWebKitTransitionEventPrototypeD1Ev
+__ZN7WebCore34JSWebKitTransitionEventConstructorD1Ev
+__ZN7WebCore23JSStorageEventPrototypeD1Ev
+__ZN7WebCore25JSStorageEventConstructorD1Ev
+__ZN7WebCore25JSMessageEventConstructorD1Ev
+__ZN7WebCore20JSStorageConstructorD1Ev
+__ZN7WebCore9JSStorageD1Ev
+__ZN7WebCore9JSStorageD2Ev
+__ZN7WebCore25JSRangeExceptionPrototypeD1Ev
+__ZN7WebCore27JSRangeExceptionConstructorD1Ev
+__ZN7WebCore18JSStoragePrototypeD1Ev
+__ZN7WebCore31JSXMLHttpRequestUploadPrototypeD1Ev
+__ZN7WebCore33JSXMLHttpRequestUploadConstructorD1Ev
+__ZN7WebCore22JSWebKitPointPrototypeD1Ev
+__ZN7WebCore24JSWebKitPointConstructorD1Ev
+__ZN7WebCore24JSDOMStringListPrototypeD1Ev
+__ZN7WebCore26JSDOMStringListConstructorD1Ev
+__ZN7WebCore19JSSVGPaintPrototypeD1Ev
+__ZN7WebCore19JSSVGColorPrototypeD1Ev
+__ZN7WebCore21JSSVGPaintConstructorD1Ev
+__ZN7WebCore19JSSVGAnglePrototypeD1Ev
+__ZN7WebCore21JSSVGAngleConstructorD1Ev
+__ZN7WebCore33JSSVGPreserveAspectRatioPrototypeD1Ev
+__ZN7WebCore35JSSVGPreserveAspectRatioConstructorD1Ev
+__ZN7WebCore29JSHTMLAudioElementConstructorD1Ev
+__ZN7WebCore20JSSVGLengthPrototypeD1Ev
+__ZN7WebCore22JSSVGLengthConstructorD1Ev
+__ZN7WebCore23JSClientRectConstructorD1Ev
+__ZN7WebCore21JSDOMApplicationCacheD1Ev
+__ZN7WebCore21JSDOMApplicationCacheD2Ev
+__ZN7WebCore19DOMApplicationCacheD0Ev
+__ZN7WebCore30JSDOMApplicationCachePrototypeD1Ev
+__ZN7WebCore21JSSVGColorConstructorD1Ev
+__ZN7WebCore33JSWebKitAnimationEventConstructorD1Ev
+__ZN7WebCore27JSSVGMarkerElementPrototypeD1Ev
+__ZN7WebCore29JSSVGMarkerElementConstructorD1Ev
+__ZN7WebCore23JSSVGUnitTypesPrototypeD1Ev
+__ZN7WebCore25JSSVGUnitTypesConstructorD1Ev
+__ZN7WebCore23JSSVGTransformPrototypeD1Ev
+__ZN7WebCore27JSEventExceptionConstructorD1Ev
+__ZN7WebCore25JSSVGTransformConstructorD1Ev
+__ZN7WebCore29JSSVGTextPathElementPrototypeD1Ev
+__ZN7WebCore31JSSVGTextPathElementConstructorD1Ev
+__ZN7WebCore29JSSVGRenderingIntentPrototypeD1Ev
+__ZN7WebCore31JSSVGRenderingIntentConstructorD1Ev
+__ZN7WebCore21JSSVGPathSegPrototypeD1Ev
+__ZN7WebCore23JSSVGPathSegConstructorD1Ev
+__ZN7WebCore23JSSVGExceptionPrototypeD1Ev
+__ZN7WebCore25JSSVGExceptionConstructorD1Ev
+__ZN7WebCore27JSXPathExceptionConstructorD1Ev
+__ZN7WebCore29JSHTMLVideoElementConstructorD1Ev
+__ZN7WebCore29JSHTMLMediaElementConstructorD1Ev
+__ZN7WebCore34JSXMLHttpRequestExceptionPrototypeD1Ev
+__ZN7WebCore36JSXMLHttpRequestExceptionConstructorD1Ev
+__ZN7WebCore19JSFileListPrototypeD1Ev
+__ZN7WebCore21JSFileListConstructorD1Ev
+__ZN7WebCore15JSFilePrototypeD1Ev
+__ZN7WebCore17JSFileConstructorD1Ev
+__ZN7WebCore27JSCSSVariablesRulePrototypeD1Ev
+__ZN7WebCore29JSCSSVariablesRuleConstructorD1Ev
+__ZN7WebCore34JSWebKitCSSTransformValuePrototypeD1Ev
+__ZN7WebCore36JSWebKitCSSTransformValueConstructorD1Ev
+__ZN7WebCore34JSSVGTextContentElementConstructorD1Ev
+__ZN7WebCore21JSMediaErrorPrototypeD1Ev
+__ZN7WebCore23JSMediaErrorConstructorD1Ev
+__ZN7WebCore26JSProgressEventConstructorD1Ev
+__ZN7WebCore29JSSVGGradientElementPrototypeD1Ev
+__ZN7WebCore31JSSVGGradientElementConstructorD1Ev
+__ZN7WebCore25JSClientRectListPrototypeD1Ev
+__ZN7WebCore27JSClientRectListConstructorD1Ev
+__ZN7WebCore31jsHTMLFrameElementContentWindowEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore5Image9nullImageEv
+__ZN7WebCore41jsXPathEvaluatorPrototypeFunctionEvaluateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore33jsLocationPrototypeFunctionReloadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore10JSLocation6reloadEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore11FrameLoader15scheduleRefreshEb
+__ZN7WebCore40jsElementPrototypeFunctionGetClientRectsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore7Element14getClientRectsEv
+__ZN7WebCore14ClientRectListC1ERKN3WTF6VectorINS_9FloatQuadELm0EEE
+__ZN7WebCore14ClientRectListC2ERKN3WTF6VectorINS_9FloatQuadELm0EEE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14ClientRectListE
+__ZN7WebCore16JSClientRectListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14ClientRectListEEE
+__ZN7WebCore16JSClientRectListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14ClientRectListEEE
+__ZN7WebCore36jsDOMWindowPrototypeFunctionScrollByEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore9DOMWindow8scrollByEii
+__ZN7WebCore16JSClientRectList18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZNK7WebCore14ClientRectList6lengthEv
+__ZN7WebCore16JSClientRectList11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore14ClientRectList4itemEj
+__ZN7WebCore7DataRefINS_17StyleMultiColDataEE6accessEv
+__ZN7WebCore17StyleMultiColDataC1ERKS0_
+__ZN7WebCore17StyleMultiColDataC2ERKS0_
+__ZNK7WebCore11RenderBlock9columnGapEv
+__ZN3WTF7HashMapIPKN7WebCore9RenderBoxEPNS1_10ColumnInfoENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3addERKS4_RKS6_
+__ZN3WTF9HashTableIPKN7WebCore9RenderBoxESt4pairIS4_PNS1_10ColumnInfoEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS4_EENS_14PairH
+__ZNK3WTF7HashMapIPKN7WebCore9RenderBoxEPNS1_10ColumnInfoENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE3getERKS4_
+__ZN7WebCore10RenderView18setBestTruncatedAtEiPNS_20RenderBoxModelObjectEb
+__ZNK7WebCore11RenderBlock11columnRectsEv
+__ZN7WebCore17jsClientRectWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsClientRectHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN3WTF7HashMapIPKN7WebCore9RenderBoxEPNS1_10ColumnInfoENS_7PtrHashIS4_EENS_10HashTraitsIS4_EENS9_IS6_EEE4takeERKS4_
+__ZN7WebCore16JSClientRectListD1Ev
+__ZN7WebCore16JSClientRectListD2Ev
+__ZN7WebCore14ClientRectListD1Ev
+__ZN7WebCore14ClientRectListD2Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore10ClientRectEEELm0EE6shrinkEm
+__ZN7WebCore16JSClientRectList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22jsClientRectListLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSDOMWindowShell12defineGetterEPN3JSC9ExecStateERKNS1_10IdentifierEPNS1_8JSObjectE
+__ZN7WebCore11JSDOMWindow12defineGetterEPN3JSC9ExecStateERKNS1_10IdentifierEPNS1_8JSObjectE
+__ZN7WebCore16JSDOMWindowShell12lookupGetterEPN3JSC9ExecStateERKNS1_10IdentifierE
+__ZN7WebCore11JSDOMWindow12lookupGetterEPN3JSC9ExecStateERKNS1_10IdentifierE
+__ZN7WebCore16JSDOMWindowShell12defineSetterEPN3JSC9ExecStateERKNS1_10IdentifierEPNS1_8JSObjectE
+__ZN7WebCore11JSDOMWindow12defineSetterEPN3JSC9ExecStateERKNS1_10IdentifierEPNS1_8JSObjectE
+__ZN7WebCore29setJSDOMWindowNodeConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore13StringBuilder6appendEc
+__ZNK7WebCore21JSHTMLTableColElement9classInfoEv
+__ZN7WebCore33jsLocationPrototypeFunctionAssignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore10JSLocation6assignEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore33jsHistoryPrototypeFunctionForwardEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7History7forwardEv
+__ZN7WebCore14SessionStorage4copyEPNS_4PageE
+__ZN7WebCore18SessionStorageArea4copyEPNS_14SecurityOriginEPNS_4PageE
+__ZN7WebCore18SessionStorageAreaC1EPNS_14SecurityOriginEPNS_4PageEPS0_
+__ZN7WebCore18SessionStorageAreaC2EPNS_14SecurityOriginEPNS_4PageEPS0_
+__ZN7WebCore11StorageAreaC2EPNS_14SecurityOriginEPS0_
+__ZN7WebCore4Page17setSessionStorageEN3WTF10PassRefPtrINS_14SessionStorageEEE
+__ZN7WebCore21setJSLocationProtocolEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10JSLocation11setProtocolEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore17setJSLocationHostEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10JSLocation7setHostEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore4KURL14setHostAndPortERKNS_6StringE
+__ZN7WebCore21setJSLocationHostnameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10JSLocation11setHostnameEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore17setJSLocationPortEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10JSLocation7setPortEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore21setJSLocationPathnameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10JSLocation11setPathnameEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore19setJSLocationSearchEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10JSLocation9setSearchEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore18SessionStorageAreaD0Ev
+__ZN7WebCore11StorageAreaD2Ev
+__ZNK7WebCore20JSNavigatorPrototype9classInfoEv
+__ZN7WebCore17jsNavigatorOnLineEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13NavigatorBase6onLineEv
+__ZN7WebCore43jsDocumentPrototypeFunctionCreateTreeWalkerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8Document16createTreeWalkerEPNS_4NodeEjN3WTF10PassRefPtrINS_10NodeFilterEEEbRi
+__ZN7WebCore10TreeWalkerC1EN3WTF10PassRefPtrINS_4NodeEEEjNS2_INS_10NodeFilterEEEb
+__ZN7WebCore10TreeWalkerC2EN3WTF10PassRefPtrINS_4NodeEEEjNS2_INS_10NodeFilterEEEb
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_10TreeWalkerE
+__ZN7WebCore12JSTreeWalker15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore12JSTreeWalkerC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10TreeWalkerEEE
+__ZN7WebCore12JSTreeWalkerC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10TreeWalkerEEE
+__ZN7WebCore12JSTreeWalker4markEv
+__ZN7WebCore12JSTreeWalkerD1Ev
+__ZN7WebCore12JSTreeWalkerD2Ev
+__ZN7WebCore21JSTreeWalkerPrototypeD1Ev
+__ZN7WebCore39jsElementPrototypeFunctionScrollByLinesEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Element13scrollByLinesEi
+__ZN7WebCore7Element13scrollByUnitsEiNS_17ScrollGranularityE
+__ZN7WebCore39jsElementPrototypeFunctionScrollByPagesEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Element13scrollByPagesEi
+__ZN7WebCore43jsHTMLOptionsCollectionPrototypeFunctionAddEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore23JSHTMLOptionsCollection3addEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore21HTMLOptionsCollection3addEN3WTF10PassRefPtrINS_17HTMLOptionElementEEERi
+__ZN7WebCore21HTMLOptionsCollection3addEN3WTF10PassRefPtrINS_17HTMLOptionElementEEEiRi
+__ZN7WebCore46jsHTMLOptionsCollectionPrototypeFunctionRemoveEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore23JSHTMLOptionsCollection6removeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13KeyboardEventC1Ev
+__ZN7WebCore13KeyboardEventC2Ev
+__ZN7WebCore24JSKeyboardEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore49jsKeyboardEventPrototypeFunctionInitKeyboardEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore15JSKeyboardEvent9classInfoEv
+__ZN7WebCore11toDOMWindowEN3JSC7JSValueE
+__ZN7WebCore13KeyboardEvent17initKeyboardEventERKNS_12AtomicStringEbbPNS_9DOMWindowERKNS_6StringEjbbbbb
+__ZN7WebCore7UIEvent11initUIEventERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEEi
+__ZN7WebCore43jsMouseEventPrototypeFunctionInitMouseEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13toEventTargetEN3JSC7JSValueE
+__ZN7WebCore10MouseEvent14initMouseEventERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEEiiiiibbbbtNS5_INS_11EventTarge
+__ZN7WebCore17MouseRelatedEvent15initCoordinatesEii
+__ZN7WebCore12NodeIterator17nodeWillBeRemovedEPNS_4NodeE
+__ZNK7WebCore12NodeIterator20updateForNodeRemovalEPNS_4NodeERNS0_11NodePointerE
+__ZN7WebCore13ProgressEventC1Ev
+__ZN7WebCore13ProgressEventC2Ev
+__ZN7WebCore15JSProgressEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24JSProgressEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore49jsProgressEventPrototypeFunctionInitProgressEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore15JSProgressEvent9classInfoEv
+__ZN7WebCore13ProgressEvent17initProgressEventERKNS_12AtomicStringEbbbjj
+__ZN7WebCore36jsRangePrototypeFunctionComparePointEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore38jsRangePrototypeFunctionIsPointInRangeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore5Range14isPointInRangeEPNS_4NodeEiRi
+__ZN7WebCore37jsUIEventPrototypeFunctionInitUIEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore34jsDOMWindowPrototypeFunctionMoveByEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore9DOMWindow6moveByEff
+__ZN7WebCore36jsDOMWindowPrototypeFunctionResizeByEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore9DOMWindow8resizeByEff
+__ZN7WebCore30setJSHTMLOptionElementSelectedEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore36jsHTMLOptionsCollectionSelectedIndexEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore21HTMLOptionsCollection13selectedIndexEv
+__ZN7WebCore25setJSHTMLElementOuterTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore11HTMLElement12setOuterTextERKNS_6StringERi
+__ZNK7WebCore28JSHTMLObjectElementPrototype9classInfoEv
+__ZN7WebCore18JSHTMLEmbedElement11getCallDataERN3JSC8CallDataE
+__ZN7WebCore24runtimeObjectGetCallDataEPNS_11HTMLElementERN3JSC8CallDataE
+__ZNK7WebCore27JSHTMLEmbedElementPrototype9classInfoEv
+__ZN7WebCore24jsHTMLEmbedElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLEmbedElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSHTMLAppletElement11getCallDataERN3JSC8CallDataE
+__ZN7WebCore19JSHTMLObjectElement11getCallDataERN3JSC8CallDataE
+__ZNK7WebCore28JSHTMLAppletElementPrototype9classInfoEv
+__ZNK7WebCore25JSHTMLDivElementPrototype9classInfoEv
+__ZNK7WebCore24JSKeyboardEventPrototype9classInfoEv
+__ZN7WebCore6JSRectC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_4RectEEE
+__ZN7WebCore6JSRectC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_4RectEEE
+__ZN7WebCore6JSRectD1Ev
+__ZN7WebCore6JSRectD2Ev
+__ZN7WebCore18setJSDOMWindowSelfEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore28setJSHTMLSelectElementLengthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZNK3WTF7HashMapIPN7WebCore16AtomicStringImplES3_NS_7PtrHashIS3_EENS_10HashTraitsIS3_EES7_E3getERKS3_
+__ZN7WebCore49jsCSSPrimitiveValuePrototypeFunctionSetFloatValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZN7WebCore17CSSPrimitiveValue13setFloatValueEtdRi
-__ZN7WebCore50jsCSSPrimitiveValuePrototypeFunctionSetStringValueEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore50jsCSSPrimitiveValuePrototypeFunctionSetStringValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZN7WebCore17CSSPrimitiveValue14setStringValueEtRKNS_6StringERi
+__ZN7WebCore26setJSHTMLTableElementTHeadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25toHTMLTableSectionElementEN3JSC7JSValueE
+__ZN7WebCore20setJSHTMLDocumentAllEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore14JSHTMLDocument6setAllEPN3JSC9ExecStateENS1_7JSValueE
+__ZNK3JSC38StringObjectThatMasqueradesAsUndefined9toBooleanEPNS_9ExecStateE
+__ZN3JSC38StringObjectThatMasqueradesAsUndefinedD1Ev
__ZNK7WebCore15JSAttrPrototype9classInfoEv
+__ZN7WebCore17jsAttrConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore18JSCommentPrototype9classInfoEv
__ZNK7WebCore27JSDocumentFragmentPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore18JSDocumentFragmentEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSDocumentFragment16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore29jsDocumentFragmentConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore28JSDOMImplementationPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore19JSDOMImplementationEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSDOMImplementation16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore30jsDOMImplementationConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14JSNodeIterator9classInfoEv
__ZNK7WebCore23JSNodeIteratorPrototype9classInfoEv
+__ZN7WebCore25jsNodeIteratorConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14JSNodeIterator14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore25JSNodeIteratorConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore23JSNodeIteratorPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZNK7WebCore25JSNodeIteratorConstructor9classInfoEv
__ZNK7WebCore16JSRangePrototype9classInfoEv
+__ZN7WebCore18jsRangeConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15JSTextPrototype9classInfoEv
+__ZNK7WebCore12JSTreeWalker9classInfoEv
+__ZN7WebCore12JSTreeWalker18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore21JSTreeWalkerPrototype9classInfoEv
+__ZN7WebCore23jsTreeWalkerConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSTreeWalker14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore21JSTreeWalkerPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZNK7WebCore23JSTreeWalkerConstructor9classInfoEv
+__ZN7WebCore21jsDocumentConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore23JSCDATASectionPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore14JSCDATASectionEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore14JSCDATASection16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore25jsCDATASectionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore26JSEntityReferencePrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore17JSEntityReferenceEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore17JSEntityReference16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore28jsEntityReferenceConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore32JSProcessingInstructionPrototype9classInfoEv
+__ZN7WebCore34jsProcessingInstructionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsKeyboardEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsMouseEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore24JSMutationEventPrototype9classInfoEv
+__ZN7WebCore26jsMutationEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZN7WebCore13OverflowEventC1Ev
+__ZN7WebCore13OverflowEventC2Ev
__ZNK7WebCore13OverflowEvent15isOverflowEventEv
-__ZN7WebCore15JSOverflowEventC1EPN3KJS8JSObjectEPNS_13OverflowEventE
+__ZN7WebCore15getDOMStructureINS_15JSOverflowEventEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore15JSOverflowEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13OverflowEventEEE
+__ZN7WebCore15JSOverflowEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13OverflowEventEEE
__ZNK7WebCore15JSOverflowEvent9classInfoEv
-__ZN7WebCore15JSOverflowEvent18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore15JSOverflowEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore24JSOverflowEventPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore15JSOverflowEventEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore15JSOverflowEvent16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore26jsOverflowEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZN7WebCore9TextEventC1Ev
-__ZN7WebCore11JSTextEventC1EPN3KJS8JSObjectEPNS_9TextEventE
+__ZN7WebCore9TextEventC2Ev
+__ZN7WebCore15getDOMStructureINS_11JSTextEventEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore11JSTextEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9TextEventEEE
+__ZN7WebCore11JSTextEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_9TextEventEEE
__ZNK7WebCore11JSTextEvent9classInfoEv
-__ZN7WebCore11JSTextEvent18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore11JSTextEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore20JSTextEventPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore11JSTextEventEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore11JSTextEvent16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore22jsTextEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsUIEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZN7WebCore10WheelEventC1Ev
+__ZN7WebCore10WheelEventC2Ev
+__ZNK7WebCore12JSWheelEvent9classInfoEv
__ZNK7WebCore21JSWheelEventPrototype9classInfoEv
-__ZNK7WebCore25JSStyleSheetListPrototype9classInfoEv
+__ZN7WebCore23jsWheelEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsStyleSheetListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore24JSCSSStyleSheetPrototype9classInfoEv
-__ZNK7WebCore22JSCSSRuleListPrototype9classInfoEv
-__ZNK7WebCore18JSCSSRulePrototype9classInfoEv
-__ZNK7WebCore30JSCSSStyleDeclarationPrototype9classInfoEv
+__ZN7WebCore26jsCSSStyleSheetConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsCSSRuleListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14JSCSSStyleRule9classInfoEv
+__ZNK7WebCore23JSCSSStyleRulePrototype9classInfoEv
+__ZN7WebCore25jsCSSStyleRuleConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsCSSStyleDeclarationConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore28JSCSSPrimitiveValuePrototype9classInfoEv
+__ZN7WebCore30jsCSSPrimitiveValueConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore10JSRGBColor9classInfoEv
-__ZN7WebCore10JSRGBColor18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore6JSRect9classInfoEv
-__ZN7WebCore6JSRect18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore6JSRect18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore15JSRectPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore6JSRectEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore6JSRect16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore23JSCSSValueListPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore14JSCSSValueListEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore14JSCSSValueList16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore35jsCSSValueListPrototypeFunctionItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9JSCounterC1EPN3KJS8JSObjectEPNS_7CounterE
+__ZN7WebCore17jsRectConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsCSSValueListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9JSCounterC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7CounterEEE
+__ZN7WebCore9JSCounterC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_7CounterEEE
__ZNK7WebCore9JSCounter9classInfoEv
-__ZN7WebCore9JSCounter18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore9JSCounter18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore18JSCounterPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore9JSCounterEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore9JSCounter16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore11JSMediaList9classInfoEv
-__ZNK7WebCore20JSMediaListPrototype9classInfoEv
+__ZN7WebCore20jsCounterConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17jsStyleSheetMediaEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsMediaListConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore26JSXPathExpressionPrototype9classInfoEv
+__ZN7WebCore28jsXPathExpressionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17JSXPathExpression14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore28JSXPathExpressionConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore26JSXPathExpressionPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZNK7WebCore28JSXPathExpressionConstructor9classInfoEv
__ZNK7WebCore22JSXPathResultPrototype9classInfoEv
-__ZNK7WebCore25JSHTMLCollectionPrototype9classInfoEv
+__ZN7WebCore24jsXPathResultConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore28JSHTMLAnchorElementPrototype9classInfoEv
+__ZN7WebCore30jsHTMLAppletElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore26JSHTMLAreaElementPrototype9classInfoEv
+__ZN7WebCore28jsHTMLAreaElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore17JSHTMLBaseElement9classInfoEv
__ZNK7WebCore26JSHTMLBaseElementPrototype9classInfoEv
+__ZN7WebCore28jsHTMLBaseElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore21JSHTMLBaseFontElement9classInfoEv
__ZNK7WebCore30JSHTMLBaseFontElementPrototype9classInfoEv
+__ZN7WebCore32jsHTMLBaseFontElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore32JSHTMLBlockquoteElementPrototype9classInfoEv
+__ZN7WebCore34jsHTMLBlockquoteElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore26JSHTMLBodyElementPrototype9classInfoEv
__ZNK7WebCore24JSHTMLBRElementPrototype9classInfoEv
+__ZN7WebCore26jsHTMLBRElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore28JSHTMLButtonElementPrototype9classInfoEv
__ZNK7WebCore28JSHTMLCanvasElementPrototype9classInfoEv
+__ZN7WebCore30jsHTMLCanvasElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore25JSHTMLTableCaptionElement9classInfoEv
__ZNK7WebCore34JSHTMLTableCaptionElementPrototype9classInfoEv
+__ZN7WebCore36jsHTMLTableCaptionElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore30JSHTMLTableColElementPrototype9classInfoEv
+__ZN7WebCore32jsHTMLTableColElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore25JSHTMLModElementPrototype9classInfoEv
__ZNK7WebCore22JSHTMLDirectoryElement9classInfoEv
__ZNK7WebCore31JSHTMLDirectoryElementPrototype9classInfoEv
+__ZN7WebCore33jsHTMLDirectoryElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore27JSHTMLDListElementPrototype9classInfoEv
+__ZN7WebCore29jsHTMLDListElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsHTMLEmbedElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore30JSHTMLFieldSetElementPrototype9classInfoEv
+__ZN7WebCore32jsHTMLFieldSetElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9JSCounterD1Ev
+__ZN7WebCore9JSCounterD2Ev
+__ZN7WebCore12JSWheelEventD1Ev
+__ZN7WebCore11JSTextEventD1Ev
+__ZN7WebCore15JSOverflowEventD1Ev
+__ZN7WebCore13OverflowEventD0Ev
__ZNK7WebCore26JSHTMLFontElementPrototype9classInfoEv
+__ZN7WebCore28jsHTMLFontElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsHTMLFormElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore18JSHTMLFrameElement9classInfoEv
__ZNK7WebCore27JSHTMLFrameElementPrototype9classInfoEv
+__ZN7WebCore29jsHTMLFrameElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore30JSHTMLFrameSetElementPrototype9classInfoEv
+__ZN7WebCore32jsHTMLFrameSetElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore26JSHTMLHeadElementPrototype9classInfoEv
+__ZN7WebCore28jsHTMLHeadElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore29JSHTMLHeadingElementPrototype9classInfoEv
__ZNK7WebCore24JSHTMLHRElementPrototype9classInfoEv
+__ZN7WebCore26jsHTMLHRElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore26JSHTMLHtmlElementPrototype9classInfoEv
__ZNK7WebCore28JSHTMLIFrameElementPrototype9classInfoEv
+__ZNK7WebCore27JSHTMLImageElementPrototype9classInfoEv
__ZNK7WebCore27JSHTMLInputElementPrototype9classInfoEv
__ZNK7WebCore20JSHTMLIsIndexElement9classInfoEv
__ZNK7WebCore29JSHTMLIsIndexElementPrototype9classInfoEv
-__ZN7WebCore17keygenConstructorERKNS_12AtomicStringEPNS_8DocumentEPNS_15HTMLFormElementEb
-__ZN7WebCore17HTMLKeygenElementC1EPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore17HTMLSelectElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
-__ZN7WebCore17supportedKeySizesEv
-__ZNK7WebCore28JSHTMLSelectElementPrototype9classInfoEv
+__ZN7WebCore31jsHTMLIsIndexElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL17keygenConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLKeygenElementC1ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore17HTMLKeygenElementC2ERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementE
+__ZN7WebCore20getSupportedKeySizesERN3WTF6VectorINS_6StringELm0EEE
__ZNK7WebCore27JSHTMLLabelElementPrototype9classInfoEv
+__ZN7WebCore29jsHTMLLabelElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore28JSHTMLLegendElementPrototype9classInfoEv
+__ZN7WebCore30jsHTMLLegendElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore24JSHTMLLIElementPrototype9classInfoEv
__ZNK7WebCore26JSHTMLLinkElementPrototype9classInfoEv
+__ZN7WebCore28jsHTMLLinkElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore25JSHTMLPreElementPrototype9classInfoEv
+__ZN7WebCore27jsHTMLPreElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore25JSHTMLMapElementPrototype9classInfoEv
+__ZN7WebCore27jsHTMLMapElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore20JSHTMLMarqueeElement9classInfoEv
__ZNK7WebCore29JSHTMLMarqueeElementPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore20JSHTMLMarqueeElementEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore20JSHTMLMarqueeElement16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore31jsHTMLMarqueeElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17JSHTMLMenuElement9classInfoEv
__ZNK7WebCore26JSHTMLMenuElementPrototype9classInfoEv
+__ZN7WebCore28jsHTMLMenuElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore26JSHTMLMetaElementPrototype9classInfoEv
+__ZN7WebCore28jsHTMLMetaElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsHTMLObjectElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore27JSHTMLOListElementPrototype9classInfoEv
+__ZNK7WebCore21JSHTMLOptGroupElement9classInfoEv
__ZNK7WebCore30JSHTMLOptGroupElementPrototype9classInfoEv
+__ZN7WebCore32jsHTMLOptGroupElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore28JSHTMLOptionElementPrototype9classInfoEv
+__ZN7WebCore30jsHTMLOptionElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore31JSHTMLParagraphElementPrototype9classInfoEv
__ZNK7WebCore27JSHTMLParamElementPrototype9classInfoEv
-__ZNK7WebCore18JSHTMLQuoteElement9classInfoEv
+__ZN7WebCore29jsHTMLParamElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore27JSHTMLQuoteElementPrototype9classInfoEv
+__ZN7WebCore29jsHTMLQuoteElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore28JSHTMLScriptElementPrototype9classInfoEv
__ZNK7WebCore27JSHTMLStyleElementPrototype9classInfoEv
+__ZN7WebCore29jsHTMLStyleElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore27JSHTMLTableElementPrototype9classInfoEv
__ZNK7WebCore34JSHTMLTableSectionElementPrototype9classInfoEv
+__ZN7WebCore36jsHTMLTableSectionElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore31JSHTMLTableCellElementPrototype9classInfoEv
+__ZN7WebCore33jsHTMLTableCellElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore30JSHTMLTextAreaElementPrototype9classInfoEv
+__ZN7WebCore32jsHTMLTextAreaElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore27JSHTMLTitleElementPrototype9classInfoEv
+__ZN7WebCore29jsHTMLTitleElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore30JSHTMLTableRowElementPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore18JSCSSRulePrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSCSSRulePrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore19JSCSSValuePrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSCSSValuePrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore21JSCSSValueConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSCSSValueConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore12JSNodeFilter18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore21JSNodeFilterPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSNodeFilterPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore10MediaQuery7cssTextEv
-__ZNK7WebCore13CSSImportRule7cssTextEv
-__ZNK7WebCore12CSSMediaRule7cssTextEv
-__ZN7WebCore13OverflowEventD1Ev
-__ZN7WebCore17HTMLKeygenElementD1Ev
-__ZN7WebCore39jsElementPrototypeFunctionScrollByLinesEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Element13scrollByLinesEi
-__ZN7WebCore7Element13scrollByUnitsEiNS_17ScrollGranularityE
-__ZN7WebCore39jsElementPrototypeFunctionScrollByPagesEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Element13scrollByPagesEi
-__ZN7WebCore15HTMLBodyElement13setScrollLeftEi
-__ZN7WebCore49jsKeyboardEventPrototypeFunctionInitKeyboardEventEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore13KeyboardEvent17initKeyboardEventERKNS_12AtomicStringEbbPNS_9DOMWindowERKNS_6StringEjbbbbb
-__ZN7WebCore20JSMediaListPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore32jsMediaListPrototypeFunctionItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9MediaList4itemEj
-__ZN7WebCore13ProgressEventC1Ev
-__ZN7WebCore24JSProgressEventPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore49jsProgressEventPrototypeFunctionInitProgressEventEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore15JSProgressEvent9classInfoEv
-__ZN7WebCore13ProgressEvent17initProgressEventERKNS_12AtomicStringEbbbjj
-__ZN7WebCore36jsRangePrototypeFunctionComparePointEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore38jsRangePrototypeFunctionIsPointInRangeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore5Range14isPointInRangeEPNS_4NodeEiRi
-__ZN7WebCore34jsDOMWindowPrototypeFunctionMoveByEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9DOMWindow6moveByEff
-__ZN7WebCore36jsDOMWindowPrototypeFunctionResizeByEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore9DOMWindow8resizeByEff
-__ZN7WebCore16JSHTMLCollection16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore17JSHTMLFormElement16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore19JSHTMLSelectElement16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore16JSStyleSheetList16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore13JSCSSRuleList16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore21JSCSSStyleDeclaration16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore14JSCSSValueList16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZNK7WebCore19JSCSSValuePrototype9classInfoEv
-__ZN7WebCore14JSCSSValueList11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN7WebCore11JSMediaList16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore11JSMediaList11indexGetterEPN3KJS9ExecStateEPNS1_8JSObjectERKNS1_10IdentifierERKNS1_12PropertySlotE
-__ZN3KJS19windowProtoFuncAToBEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore12base64DecodeERKN3WTF6VectorIcLm0EEERS2_
-__ZN7WebCore12base64DecodeEPKcjRN3WTF6VectorIcLm0EEE
-__ZN3KJS19windowProtoFuncBToAEPNS_9ExecStateEPNS_8JSObjectERKNS_4ListE
-__ZN7WebCore12base64EncodeERKN3WTF6VectorIcLm0EEERS2_b
-__ZN7WebCore35jsDOMWindowPrototypeFunctionConfirmEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore32jsHTMLTableRowElementConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore27JSHTMLUListElementPrototype9classInfoEv
+__ZThn8_N7WebCore18HTMLMarqueeElementD0Ev
+__ZThn8_N7WebCore17HTMLKeygenElementD0Ev
+__ZN7WebCore17HTMLKeygenElementD0Ev
+__ZN7WebCore23JSTreeWalkerConstructorD1Ev
+__ZN7WebCore25JSNodeIteratorConstructorD1Ev
+__ZN7WebCore28JSXPathExpressionConstructorD1Ev
+__ZN7WebCore14XMLHttpRequest12networkErrorEv
+__ZN7WebCore14XMLHttpRequest18dispatchErrorEventEv
+__ZN7WebCore41jsEventExceptionPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16JSEventException9classInfoEv
+__ZNK7WebCore25JSEventExceptionPrototype9classInfoEv
+__ZN7WebCore27jsEventExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore42jsEventExceptionUNSPECIFIED_EVENT_TYPE_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsRangePrototypeFunctionSetStartAfterEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14RangeExceptionE
+__ZN7WebCore16JSRangeExceptionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14RangeExceptionEEE
+__ZN7WebCore16JSRangeExceptionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14RangeExceptionEEE
+__ZN7WebCore16JSRangeException18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSRangeExceptionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore41jsRangeExceptionPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16JSRangeException9classInfoEv
+__ZNK7WebCore25JSRangeExceptionPrototype9classInfoEv
+__ZN7WebCore27jsRangeExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsRangeExceptionINVALID_NODE_TYPE_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore38jsRangeExceptionBAD_BOUNDARYPOINTS_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore49jsXPathEvaluatorPrototypeFunctionCreateNSResolverEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore41jsXPathExceptionPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16JSXPathException9classInfoEv
+__ZNK7WebCore25JSXPathExceptionPrototype9classInfoEv
+__ZN7WebCore27jsXPathExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsXPathExceptionTYPE_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore38jsXPathExceptionINVALID_EXPRESSION_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSRangeExceptionD1Ev
+__ZN7WebCore16JSRangeExceptionD2Ev
+__ZNK7WebCore27JSDOMCoreExceptionPrototype9classInfoEv
+__ZN7WebCore29jsDOMCoreExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsDOMCoreExceptionHIERARCHY_REQUEST_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsDOMCoreExceptionINVALID_CHARACTER_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsDOMCoreExceptionNAMESPACE_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore40jsElementPrototypeFunctionHasAttributeNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore45jsNamedNodeMapPrototypeFunctionGetNamedItemNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore12NamedNodeMap14getNamedItemNSERKNS_6StringES3_
+__ZN7WebCore43jsElementPrototypeFunctionRemoveAttributeNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Element17removeAttributeNSERKNS_6StringES3_Ri
+__ZN7WebCore48jsNamedNodeMapPrototypeFunctionRemoveNamedItemNSEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12NamedNodeMap17removeNamedItemNSERKNS_6StringES3_Ri
+__ZN7WebCore4Node9setPrefixERKNS_12AtomicStringERi
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_5FrameE
+__ZNK7WebCore14RenderFrameSet10renderNameEv
+__ZNK7WebCore11RenderFrame10renderNameEv
+__ZN7WebCore39jsHTMLDocumentPrototypeFunctionHasFocusEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12HTMLDocument8hasFocusEv
+__ZN7WebCore33jsHTMLTextAreaElementSelectionEndEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19HTMLTextAreaElement12selectionEndEv
+__ZN7WebCore15HTMLFormElement26willMoveToNewOwnerDocumentEv
+__ZN7WebCore15HTMLFormElement25didMoveToNewOwnerDocumentEv
+__ZN7WebCore31jsHTMLImageElementNaturalHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLImageElement13naturalHeightEv
+__ZN7WebCore22JSNamedNodesCollection12lengthGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore23resetButtonDefaultLabelEv
+__ZN7WebCore41jsHTMLButtonElementPrototypeFunctionClickEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCoreL14isSVG10FeatureERKNS_6StringE
+__ZN7WebCore19jsNodeOncontextmenuEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node13oncontextmenuEv
+__ZNK7WebCore22JSNamedNodesCollection9classInfoEv
+__ZN7WebCore17HTMLSelectElement17saveLastSelectionEv
+__ZN7WebCore17HTMLSelectElement16menuListOnChangeEv
+__ZN7WebCore32setJSHTMLTableCellElementColSpanEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLTableCellElement10setColSpanEi
+__ZN7WebCore33setJSDOMWindowNodeListConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40jsRangePrototypeFunctionSurroundContentsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore5Range16surroundContentsEN3WTF10PassRefPtrINS_4NodeEEERi
+__ZNK7WebCore13CharacterData19isCharacterDataNodeEv
+__ZN7WebCore20jsRangeExceptionCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsDOMCoreExceptionWRONG_DOCUMENT_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsRangePrototypeFunctionDetachEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore5Range6detachERi
+__ZN7WebCore35jsDOMCoreExceptionINVALID_STATE_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsRangeSTART_TO_STARTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore45jsRangePrototypeFunctionCompareBoundaryPointsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19jsRangeSTART_TO_ENDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsRangeEND_TO_STARTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17jsRangeEND_TO_ENDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore5Range15textNodesMergedERNS_13NodeWithIndexEj
+__ZN7WebCore35jsRangePrototypeFunctionCompareNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore31jsDOMCoreExceptionNOT_FOUND_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore7Comment16childTypeAllowedENS_4Node8NodeTypeE
+__ZN7WebCore16jsRangeCollapsedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsRangeCommonAncestorContainerEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore38jsRangePrototypeFunctionIntersectsNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore21ProcessingInstruction18offsetInCharactersEv
+__ZN7WebCore21ProcessingInstruction9cloneNodeEb
+__ZN7WebCore51jsDocumentFragmentPrototypeFunctionQuerySelectorAllEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore48jsDocumentFragmentPrototypeFunctionQuerySelectorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore17decodeNamedEntityEPKc
+__ZN7WebCoreL17sharedXHTMLEntityEv
+__ZN7WebCore28jsDOMCoreExceptionSYNTAX_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL27createSVGDescElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore16JSSVGDescElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGDescElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGDescElementEEE
+__ZN7WebCore16JSSVGDescElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGDescElementEEE
+__ZN7WebCore16JSSVGDescElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL29createSVGCircleElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore18JSSVGCircleElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSSVGCircleElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGCircleElementEEE
+__ZN7WebCore18JSSVGCircleElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGCircleElementEEE
+__ZN7WebCore18JSSVGCircleElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25jsDOMCoreExceptionMessageEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18JSSVGCircleElementD1Ev
+__ZN7WebCore16JSSVGDescElementD1Ev
+__ZN7WebCore27JSSVGCircleElementPrototypeD1Ev
+__ZN7WebCore25JSSVGDescElementPrototypeD1Ev
+__ZN7WebCore22jsHTMLLinkElementSheetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsStyleSheetOwnerNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsTreeWalkerCurrentNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSTreeWalkerPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore39jsTreeWalkerPrototypeFunctionParentNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12JSTreeWalker10parentNodeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore10TreeWalker10parentNodeEPN3JSC9ExecStateE
+__ZN7WebCore12JSTreeWalker3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore26setJSTreeWalkerCurrentNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10TreeWalker14setCurrentNodeEN3WTF10PassRefPtrINS_4NodeEEERi
+__ZN7WebCore37jsTreeWalkerPrototypeFunctionNextNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12JSTreeWalker8nextNodeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore10TreeWalker8nextNodeEPN3JSC9ExecStateE
+__ZNK7WebCore10NodeFilter10acceptNodeEPN3JSC9ExecStateEPNS_4NodeE
+__ZNK7WebCore21JSNodeFilterCondition10acceptNodeEPN3JSC9ExecStateEPNS_4NodeE
+__ZN7WebCore41jsTreeWalkerPrototypeFunctionPreviousNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12JSTreeWalker12previousNodeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore10TreeWalker12previousNodeEPN3JSC9ExecStateE
+__ZN7WebCore39jsTreeWalkerPrototypeFunctionFirstChildEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12JSTreeWalker10firstChildEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore10TreeWalker10firstChildEPN3JSC9ExecStateE
+__ZN7WebCore38jsTreeWalkerPrototypeFunctionLastChildEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12JSTreeWalker9lastChildEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore10TreeWalker9lastChildEPN3JSC9ExecStateE
+__ZN7WebCore40jsTreeWalkerPrototypeFunctionNextSiblingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12JSTreeWalker11nextSiblingEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore10TreeWalker11nextSiblingEPN3JSC9ExecStateE
+__ZN7WebCore44jsTreeWalkerPrototypeFunctionPreviousSiblingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12JSTreeWalker15previousSiblingEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore10TreeWalker15previousSiblingEPN3JSC9ExecStateE
+__ZN7WebCore35jsDOMWindowPrototypeFunctionConfirmEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZN7WebCore9DOMWindow7confirmERKNS_6StringE
__ZN7WebCore6Chrome20runJavaScriptConfirmEPNS_5FrameERKNS_6StringE
-__ZNK7WebCore6Screen9availLeftEv
-__ZNK7WebCore6Screen8availTopEv
-__ZN7WebCore30jsConsolePrototypeFunctionWarnEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Console4warnERKNS_6StringE
-__ZNK7WebCore14StaticNodeList12itemWithNameERKNS_12AtomicStringE
-__ZNK7WebCore14StaticNodeList4itemEj
-__ZN7WebCore42jsElementPrototypeFunctionQuerySelectorAllEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore40jsDocumentPrototypeFunctionQuerySelectorEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore4Node13querySelectorERKNS_6StringERi
-__ZN7WebCore39jsElementPrototypeFunctionQuerySelectorEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZN7WebCore34jsDOMWindowPrototypeFunctionPromptEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow6promptERKNS_6StringES3_
+__ZN7WebCore6Chrome19runJavaScriptPromptEPNS_5FrameERKNS_6StringES5_RS3_
+__ZN7WebCore32jsDOMWindowPrototypeFunctionAtobEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11JSDOMWindow4atobEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore32jsDOMWindowPrototypeFunctionBtoaEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11JSDOMWindow4btoaEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore30jsConsolePrototypeFunctionInfoEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Console4infoEPNS_15ScriptCallStackE
+__ZN7WebCore30jsConsolePrototypeFunctionWarnEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Console4warnEPNS_15ScriptCallStackE
+__ZN7WebCore31jsConsolePrototypeFunctionErrorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Console5errorEPNS_15ScriptCallStackE
+__ZN7WebCore31jsConsolePrototypeFunctionTraceEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Console5traceEPNS_15ScriptCallStackE
+__ZN7WebCore24JSWebKitPointConstructor16getConstructDataERN3JSC13ConstructDataE
+__ZN7WebCoreL20constructWebKitPointEPN3JSC9ExecStateEPNS0_8JSObjectERKNS0_7ArgListE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_11WebKitPointE
+__ZN7WebCore13JSWebKitPointC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11WebKitPointEEE
+__ZN7WebCore13JSWebKitPointC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11WebKitPointEEE
+__ZNK7WebCore13JSWebKitPoint9classInfoEv
+__ZN7WebCore26JSWebKitCSSMatrixPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore42jsWebKitCSSMatrixPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore17JSWebKitCSSMatrix9classInfoEv
+__ZNK7WebCore15WebKitCSSMatrix8toStringEv
+__ZN7WebCore13JSWebKitPointD1Ev
+__ZN7WebCore13JSWebKitPointD2Ev
+__ZN7WebCore41jsDOMWindowPrototypeFunctionDispatchEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore29setJSDOMWindowAttrConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowCDATASectionConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowCSSPrimitiveValueConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore32setJSDOMWindowCSSRuleConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore44setJSDOMWindowCSSStyleDeclarationConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore33setJSDOMWindowCSSValueConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowCharacterDataConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore32setJSDOMWindowCommentConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowDOMExceptionConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowDOMImplementationConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowDocumentFragmentConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowDocumentTypeConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore31setJSDOMWindowEntityConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowEntityReferenceConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowHTMLAnchorElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowHTMLAppletElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowHTMLAreaElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowHTMLBRElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowHTMLBaseElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore44setJSDOMWindowHTMLBaseFontElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowHTMLBodyElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowHTMLButtonElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowHTMLCanvasElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLDListElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore45setJSDOMWindowHTMLDirectoryElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39setJSDOMWindowHTMLDivElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowHTMLDocumentConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore36setJSDOMWindowHTMLElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore44setJSDOMWindowHTMLFieldSetElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowHTMLFontElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowHTMLFormElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLFrameElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore44setJSDOMWindowHTMLFrameSetElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowHTMLHRElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowHTMLHeadElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore43setJSDOMWindowHTMLHeadingElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowHTMLHtmlElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowHTMLIFrameElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLImageElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLInputElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore43setJSDOMWindowHTMLIsIndexElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowHTMLLIElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLLabelElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowHTMLLegendElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowHTMLLinkElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39setJSDOMWindowHTMLMapElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore43setJSDOMWindowHTMLMarqueeElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowHTMLMenuElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowHTMLMetaElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39setJSDOMWindowHTMLModElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLOListElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore44setJSDOMWindowHTMLOptGroupElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowHTMLOptionElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore45setJSDOMWindowHTMLParagraphElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLParamElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39setJSDOMWindowHTMLPreElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLQuoteElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowHTMLScriptElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowHTMLSelectElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLStyleElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore48setJSDOMWindowHTMLTableCaptionElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore45setJSDOMWindowHTMLTableCellElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore44setJSDOMWindowHTMLTableColElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLTableElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore44setJSDOMWindowHTMLTableRowElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore48setJSDOMWindowHTMLTableSectionElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore44setJSDOMWindowHTMLTextAreaElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLTitleElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLUListElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowMutationEventConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore35setJSDOMWindowNodeFilterConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore33setJSDOMWindowNotationConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore46setJSDOMWindowProcessingInstructionConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39setJSDOMWindowRangeExceptionConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore36setJSDOMWindowXMLDocumentConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39setJSDOMWindowXPathEvaluatorConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore36setJSDOMWindowXPathResultConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore31setJSDOMWindowClientInformationEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore30setJSDOMWindowDevicePixelRatioEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20setJSDOMWindowFramesEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25setJSDOMWindowInnerHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24setJSDOMWindowInnerWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20setJSDOMWindowLengthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25setJSDOMWindowLocationbarEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore21setJSDOMWindowMenubarEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore23setJSDOMWindowNavigatorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore32setJSDOMWindowOffscreenBufferingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20setJSDOMWindowOpenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25setJSDOMWindowOuterHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24setJSDOMWindowOuterWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25setJSDOMWindowPersonalbarEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24setJSDOMWindowScreenLeftEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore23setJSDOMWindowScreenTopEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore21setJSDOMWindowScreenXEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore21setJSDOMWindowScreenYEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore21setJSDOMWindowScrollYEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24setJSDOMWindowScrollbarsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore23setJSDOMWindowStatusbarEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore21setJSDOMWindowToolbarEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore27setJSDOMWindowDefaultStatusEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow16setDefaultStatusERKNS_6StringE
+__ZN7WebCore27setJSDOMWindowDefaultstatusEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore21setJSDOMWindowOnabortEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow10setOnabortEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore22setJSDOMWindowOnchangeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow11setOnchangeEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore24setJSDOMWindowOndblclickEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow13setOndblclickEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore21setJSDOMWindowOnfocusEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow10setOnfocusEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore24setJSDOMWindowOnkeypressEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow13setOnkeypressEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore21setJSDOMWindowOnkeyupEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow10setOnkeyupEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore25setJSDOMWindowOnmousedownEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow14setOnmousedownEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore25setJSDOMWindowOnmousemoveEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow14setOnmousemoveEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore24setJSDOMWindowOnmouseoutEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow13setOnmouseoutEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore25setJSDOMWindowOnmouseoverEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow14setOnmouseoverEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore23setJSDOMWindowOnmouseupEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow12setOnmouseupEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore21setJSDOMWindowOnresetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow10setOnresetEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore22setJSDOMWindowOnsearchEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow11setOnsearchEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore22setJSDOMWindowOnselectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow11setOnselectEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore22setJSDOMWindowOnsubmitEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow11setOnsubmitEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZNK7WebCore6Chrome17scrollbarsVisibleEv
+__ZNK7WebCore6Chrome15toolbarsVisibleEv
+__ZNK7WebCore6Chrome14menubarVisibleEv
+__ZN7WebCore60jsDOMWindowPrototypeFunctionWebkitConvertPointFromNodeToPageEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7
+__ZN7WebCore13toWebKitPointEN3JSC7JSValueE
+__ZNK7WebCore9DOMWindow32webkitConvertPointFromNodeToPageEPNS_4NodeEPKNS_11WebKitPointE
+__ZNK7WebCore4Node13convertToPageERKNS_10FloatPointE
+__ZN7WebCore13JSWebKitPoint18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore14jsWebKitPointXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14jsWebKitPointYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore60jsDOMWindowPrototypeFunctionWebkitConvertPointFromPageToNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7
+__ZNK7WebCore9DOMWindow32webkitConvertPointFromPageToNodeEPNS_4NodeEPKNS_11WebKitPointE
+__ZNK7WebCore4Node15convertFromPageERKNS_10FloatPointE
+__ZN7WebCore9JSHistory16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZN7WebCore9JSHistory22customGetPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore18JSHistoryPrototype9classInfoEv
+__ZNK7WebCore18JSBarInfoPrototype9classInfoEv
+__ZNK7WebCore17JSScreenPrototype9classInfoEv
+__ZN7WebCoreL32min_device_widthMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore39setJSDOMWindowCSSCharsetRuleConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore40setJSDOMWindowCSSFontFaceRuleConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowCSSImportRuleConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowCSSMediaRuleConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore36setJSDOMWindowCSSPageRuleConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore36setJSDOMWindowCSSRuleListConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowCSSStyleRuleConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowCSSStyleSheetConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowCSSValueListConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore32setJSDOMWindowCounterConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39setJSDOMWindowEventExceptionConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore46setJSDOMWindowHTMLBlockquoteElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowHTMLEmbedElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42setJSDOMWindowHTMLObjectElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowKeyboardEventConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore34setJSDOMWindowMediaListConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore35setJSDOMWindowMouseEventConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowNamedNodeMapConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowOverflowEventConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore38setJSDOMWindowProgressEventConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore29setJSDOMWindowRectConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore33setJSDOMWindowSVGAngleConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore33setJSDOMWindowSVGColorConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowSVGExceptionConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore43setJSDOMWindowSVGGradientElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore34setJSDOMWindowSVGLengthConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore41setJSDOMWindowSVGMarkerElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore33setJSDOMWindowSVGPaintConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore35setJSDOMWindowSVGPathSegConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore47setJSDOMWindowSVGPreserveAspectRatioConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore43setJSDOMWindowSVGRenderingIntentConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore46setJSDOMWindowSVGTextContentElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore43setJSDOMWindowSVGTextPathElementConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowSVGTransformConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMWindowSVGUnitTypesConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore35setJSDOMWindowStyleSheetConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39setJSDOMWindowStyleSheetListConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore34setJSDOMWindowTextEventConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore32setJSDOMWindowUIEventConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore35setJSDOMWindowWheelEventConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore48setJSDOMWindowXMLHttpRequestExceptionConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore39setJSDOMWindowXPathExceptionConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore13toMessagePortEN3JSC7JSValueE
+__ZNK7WebCore27JSHTMLAudioElementPrototype9classInfoEv
+__ZNK7WebCore27JSHTMLMediaElementPrototype9classInfoEv
+__ZN7WebCore35jsHTMLMediaElementHAVE_CURRENT_DATAEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsHTMLMediaElementHAVE_ENOUGH_DATAEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsHTMLMediaElementHAVE_FUTURE_DATAEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsHTMLMediaElementHAVE_METADATAEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsHTMLMediaElementHAVE_NOTHINGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsHTMLMediaElementNETWORK_EMPTYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsHTMLMediaElementNETWORK_IDLEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsHTMLMediaElementNETWORK_LOADEDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsHTMLMediaElementNETWORK_LOADINGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsHTMLMediaElementNETWORK_NO_SOURCEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore24JSCharacterDataPrototype9classInfoEv
__ZNK7WebCore25JSCSSCharsetRulePrototype9classInfoEv
+__ZNK7WebCore18JSCSSRulePrototype9classInfoEv
+__ZN7WebCore23jsCSSRuleVARIABLES_RULEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore26JSCSSFontFaceRulePrototype9classInfoEv
__ZNK7WebCore24JSCSSImportRulePrototype9classInfoEv
__ZNK7WebCore23JSCSSMediaRulePrototype9classInfoEv
__ZNK7WebCore22JSCSSPageRulePrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore28JSCSSPrimitiveValuePrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore28JSCSSPrimitiveValuePrototype16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore27jsCSSPrimitiveValueCSS_ATTREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsCSSPrimitiveValueCSS_CMEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsCSSPrimitiveValueCSS_COUNTEREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsCSSPrimitiveValueCSS_DEGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsCSSPrimitiveValueCSS_DIMENSIONEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsCSSPrimitiveValueCSS_EMSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsCSSPrimitiveValueCSS_EXSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsCSSPrimitiveValueCSS_GRADEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsCSSPrimitiveValueCSS_HZEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsCSSPrimitiveValueCSS_IDENTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsCSSPrimitiveValueCSS_INEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsCSSPrimitiveValueCSS_KHZEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsCSSPrimitiveValueCSS_MMEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsCSSPrimitiveValueCSS_MSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsCSSPrimitiveValueCSS_PCEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsCSSPrimitiveValueCSS_PERCENTAGEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsCSSPrimitiveValueCSS_PTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsCSSPrimitiveValueCSS_RADEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsCSSPrimitiveValueCSS_SEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsCSSPrimitiveValueCSS_URIEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore21JSStyleSheetPrototype9classInfoEv
-__ZNK7WebCore27JSDOMCoreExceptionPrototype9classInfoEv
+__ZN7WebCore34JSCSSVariablesDeclarationPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore34JSCSSVariablesDeclarationPrototype9classInfoEv
+__ZNK7WebCore35JSCanvasRenderingContext2DPrototype9classInfoEv
+__ZNK7WebCore21JSClientRectPrototype9classInfoEv
+__ZN7WebCore25JSClientRectListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSClientRectListPrototype9classInfoEv
+__ZNK7WebCore20JSClipboardPrototype9classInfoEv
+__ZN7WebCore27jsDOMCoreExceptionABORT_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsDOMCoreExceptionDOMSTRING_SIZE_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsDOMCoreExceptionINUSE_ATTRIBUTE_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsDOMCoreExceptionINVALID_ACCESS_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore42jsDOMCoreExceptionINVALID_MODIFICATION_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsDOMCoreExceptionNETWORK_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsDOMCoreExceptionNOT_SUPPORTED_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsDOMCoreExceptionNO_DATA_ALLOWED_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore45jsDOMCoreExceptionNO_MODIFICATION_ALLOWED_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsDOMCoreExceptionQUOTA_EXCEEDED_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsDOMCoreExceptionSECURITY_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsDOMCoreExceptionTYPE_MISMATCH_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsDOMCoreExceptionURL_MISMATCH_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsDOMCoreExceptionVALIDATION_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore20JSDOMParserPrototype9classInfoEv
+__ZN7WebCore24JSDOMStringListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore24JSDOMStringListPrototype9classInfoEv
__ZNK7WebCore23JSDocumentTypePrototype9classInfoEv
__ZNK7WebCore17JSEntityPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore27JSEventExceptionConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore27JSEventExceptionConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore25JSEventExceptionPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore25JSEventExceptionPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore25JSEventExceptionPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore21JSMediaErrorPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore15JSFilePrototype9classInfoEv
+__ZN7WebCore19JSFileListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore19JSFileListPrototype9classInfoEv
+__ZN7WebCore27JSHTMLFrameElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore29JSHTMLMarqueeElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore29jsMediaErrorMEDIA_ERR_ABORTEDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsMediaErrorMEDIA_ERR_DECODEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsMediaErrorMEDIA_ERR_NETWORKEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsMediaErrorMEDIA_ERR_SRC_NOT_SUPPORTEDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSMediaErrorPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore21JSMediaErrorPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore21JSMediaErrorPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSMediaErrorPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore23JSMessageEventPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore26JSMutationEventConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore26JSMutationEventConstructor16getValuePropertyEPN3KJS9ExecStateEi
+__ZNK7WebCore19JSMimeTypePrototype9classInfoEv
+__ZNK7WebCore24JSMimeTypeArrayPrototype9classInfoEv
+__ZN7WebCore23jsMutationEventADDITIONEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsMutationEventMODIFICATIONEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsMutationEventREMOVALEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore21JSNodeFilterPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore26JSOverflowEventConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore26JSOverflowEventConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore24JSOverflowEventPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore18JSRangeConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore18JSRangeConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore27JSRangeExceptionConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore27JSRangeExceptionConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore25JSRangeExceptionPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore21JSSVGAngleConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSSVGAngleConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore19JSSVGAnglePrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19jsOverflowEventBOTHEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsOverflowEventHORIZONTALEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsOverflowEventVERTICALEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24JSOverflowEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore17JSPluginPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17JSPluginPrototype9classInfoEv
+__ZNK7WebCore22JSPluginArrayPrototype9classInfoEv
+__ZN7WebCore17jsRangeNODE_AFTEREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsRangeNODE_BEFOREEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsRangeNODE_BEFORE_AND_AFTEREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18jsRangeNODE_INSIDEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsSVGAngleSVG_ANGLETYPE_DEGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGAngleSVG_ANGLETYPE_GRADEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsSVGAngleSVG_ANGLETYPE_RADEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsSVGAngleSVG_ANGLETYPE_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsSVGAngleSVG_ANGLETYPE_UNSPECIFIEDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSSVGAnglePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore19JSSVGAnglePrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore19JSSVGAnglePrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore19JSSVGAnglePrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore21JSSVGColorConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSSVGColorConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore19JSSVGColorPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore25JSSVGExceptionConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore25JSSVGExceptionConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore23JSSVGExceptionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore36jsSVGColorSVG_COLORTYPE_CURRENTCOLOREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsSVGColorSVG_COLORTYPE_RGBCOLOREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsSVGColorSVG_COLORTYPE_RGBCOLOR_ICCCOLOREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsSVGColorSVG_COLORTYPE_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSSVGColorPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore35jsSVGExceptionSVG_INVALID_VALUE_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsSVGExceptionSVG_MATRIX_NOT_INVERTABLEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsSVGExceptionSVG_WRONG_TYPE_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23JSSVGExceptionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore23JSSVGExceptionPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore23JSSVGExceptionPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore23JSSVGExceptionPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore31JSSVGGradientElementConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore31JSSVGGradientElementConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore29JSSVGGradientElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN7WebCore20JSSVGLengthPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore40jsSVGGradientElementSVG_SPREADMETHOD_PADEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore44jsSVGGradientElementSVG_SPREADMETHOD_REFLECTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore43jsSVGGradientElementSVG_SPREADMETHOD_REPEATEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore44jsSVGGradientElementSVG_SPREADMETHOD_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29JSSVGGradientElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28jsSVGLengthSVG_LENGTHTYPE_CMEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGLengthSVG_LENGTHTYPE_EMSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGLengthSVG_LENGTHTYPE_EXSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGLengthSVG_LENGTHTYPE_INEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGLengthSVG_LENGTHTYPE_MMEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsSVGLengthSVG_LENGTHTYPE_NUMBEREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGLengthSVG_LENGTHTYPE_PCEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsSVGLengthSVG_LENGTHTYPE_PERCENTAGEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGLengthSVG_LENGTHTYPE_PTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGLengthSVG_LENGTHTYPE_PXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsSVGLengthSVG_LENGTHTYPE_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSSVGLengthPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore20JSSVGLengthPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore20JSSVGLengthPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore20JSSVGLengthPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore29JSSVGMarkerElementConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore29JSSVGMarkerElementConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore27JSSVGMarkerElementPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore21JSSVGPaintConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSSVGPaintConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore19JSSVGPaintPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZN3KJS17staticValueGetterIN7WebCore23JSSVGPathSegConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore23JSSVGPathSegConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore21JSSVGPathSegPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore45jsSVGMarkerElementSVG_MARKERUNITS_STROKEWIDTHEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsSVGMarkerElementSVG_MARKERUNITS_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore48jsSVGMarkerElementSVG_MARKERUNITS_USERSPACEONUSEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsSVGMarkerElementSVG_MARKER_ORIENT_ANGLEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore40jsSVGMarkerElementSVG_MARKER_ORIENT_AUTOEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore43jsSVGMarkerElementSVG_MARKER_ORIENT_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27JSSVGMarkerElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore36jsSVGPaintSVG_PAINTTYPE_CURRENTCOLOREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGPaintSVG_PAINTTYPE_NONEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsSVGPaintSVG_PAINTTYPE_RGBCOLOREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsSVGPaintSVG_PAINTTYPE_RGBCOLOR_ICCCOLOREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsSVGPaintSVG_PAINTTYPE_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsSVGPaintSVG_PAINTTYPE_URIEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore40jsSVGPaintSVG_PAINTTYPE_URI_CURRENTCOLOREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsSVGPaintSVG_PAINTTYPE_URI_NONEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsSVGPaintSVG_PAINTTYPE_URI_RGBCOLOREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore45jsSVGPaintSVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19JSSVGPaintPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27jsSVGPathSegPATHSEG_ARC_ABSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsSVGPathSegPATHSEG_ARC_RELEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGPathSegPATHSEG_CLOSEPATHEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsSVGPathSegPATHSEG_CURVETO_CUBIC_ABSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsSVGPathSegPATHSEG_CURVETO_CUBIC_RELEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore44jsSVGPathSegPATHSEG_CURVETO_CUBIC_SMOOTH_ABSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore44jsSVGPathSegPATHSEG_CURVETO_CUBIC_SMOOTH_RELEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsSVGPathSegPATHSEG_CURVETO_QUADRATIC_ABSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsSVGPathSegPATHSEG_CURVETO_QUADRATIC_RELEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore48jsSVGPathSegPATHSEG_CURVETO_QUADRATIC_SMOOTH_ABSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore48jsSVGPathSegPATHSEG_CURVETO_QUADRATIC_SMOOTH_RELEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsSVGPathSegPATHSEG_LINETO_ABSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsSVGPathSegPATHSEG_LINETO_HORIZONTAL_ABSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsSVGPathSegPATHSEG_LINETO_HORIZONTAL_RELEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsSVGPathSegPATHSEG_LINETO_RELEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsSVGPathSegPATHSEG_LINETO_VERTICAL_ABSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsSVGPathSegPATHSEG_LINETO_VERTICAL_RELEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsSVGPathSegPATHSEG_MOVETO_ABSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsSVGPathSegPATHSEG_MOVETO_RELEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsSVGPathSegPATHSEG_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSSVGPathSegPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore21JSSVGPathSegPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore21JSSVGPathSegPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore21JSSVGPathSegPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore35JSSVGPreserveAspectRatioConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore35JSSVGPreserveAspectRatioConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore33JSSVGPreserveAspectRatioPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore44jsSVGPreserveAspectRatioSVG_MEETORSLICE_MEETEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore45jsSVGPreserveAspectRatioSVG_MEETORSLICE_SLICEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore47jsSVGPreserveAspectRatioSVG_MEETORSLICE_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore52jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_NONEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore55jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore56jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_XMAXYMAXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlot
+__ZN7WebCore56jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_XMAXYMIDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlot
+__ZN7WebCore56jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_XMAXYMINEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlot
+__ZN7WebCore56jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_XMIDYMAXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlot
+__ZN7WebCore56jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_XMIDYMIDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlot
+__ZN7WebCore56jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_XMIDYMINEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlot
+__ZN7WebCore56jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_XMINYMAXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlot
+__ZN7WebCore56jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_XMINYMIDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlot
+__ZN7WebCore56jsSVGPreserveAspectRatioSVG_PRESERVEASPECTRATIO_XMINYMINEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlot
+__ZN7WebCore33JSSVGPreserveAspectRatioPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore33JSSVGPreserveAspectRatioPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore33JSSVGPreserveAspectRatioPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore33JSSVGPreserveAspectRatioPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore31JSSVGRenderingIntentConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore31JSSVGRenderingIntentConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore29JSSVGRenderingIntentPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore58jsSVGRenderingIntentRENDERING_INTENT_ABSOLUTE_COLORIMETRICEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySl
+__ZN7WebCore41jsSVGRenderingIntentRENDERING_INTENT_AUTOEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore47jsSVGRenderingIntentRENDERING_INTENT_PERCEPTUALEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore58jsSVGRenderingIntentRENDERING_INTENT_RELATIVE_COLORIMETRICEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySl
+__ZN7WebCore47jsSVGRenderingIntentRENDERING_INTENT_SATURATIONEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore44jsSVGRenderingIntentRENDERING_INTENT_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29JSSVGRenderingIntentPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore29JSSVGRenderingIntentPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore29JSSVGRenderingIntentPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore29JSSVGRenderingIntentPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore34JSSVGTextContentElementConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore34JSSVGTextContentElementConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore31JSSVGTextPathElementConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore31JSSVGTextPathElementConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore25JSSVGTransformConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore25JSSVGTransformConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore23JSSVGTransformPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore43jsSVGTextContentElementLENGTHADJUST_SPACINGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore52jsSVGTextContentElementLENGTHADJUST_SPACINGANDGLYPHSEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore43jsSVGTextContentElementLENGTHADJUST_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore45jsSVGTextPathElementTEXTPATH_METHODTYPE_ALIGNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore47jsSVGTextPathElementTEXTPATH_METHODTYPE_STRETCHEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore47jsSVGTextPathElementTEXTPATH_METHODTYPE_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore45jsSVGTextPathElementTEXTPATH_SPACINGTYPE_AUTOEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore46jsSVGTextPathElementTEXTPATH_SPACINGTYPE_EXACTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore48jsSVGTextPathElementTEXTPATH_SPACINGTYPE_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29JSSVGTextPathElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore34jsSVGTransformSVG_TRANSFORM_MATRIXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsSVGTransformSVG_TRANSFORM_ROTATEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsSVGTransformSVG_TRANSFORM_SCALEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsSVGTransformSVG_TRANSFORM_SKEWXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsSVGTransformSVG_TRANSFORM_SKEWYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsSVGTransformSVG_TRANSFORM_TRANSLATEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsSVGTransformSVG_TRANSFORM_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23JSSVGTransformPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore23JSSVGTransformPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore23JSSVGTransformPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore23JSSVGTransformPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore25JSSVGUnitTypesConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore25JSSVGUnitTypesConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore23JSSVGUnitTypesPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore45jsSVGUnitTypesSVG_UNIT_TYPE_OBJECTBOUNDINGBOXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsSVGUnitTypesSVG_UNIT_TYPE_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore42jsSVGUnitTypesSVG_UNIT_TYPE_USERSPACEONUSEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23JSSVGUnitTypesPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
__ZNK7WebCore23JSSVGUnitTypesPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore23JSSVGUnitTypesPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore23JSSVGUnitTypesPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore20JSTextEventPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
-__ZNK3KJS25JSXMLHttpRequestPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore36JSXMLHttpRequestExceptionConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore36JSXMLHttpRequestExceptionConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore34JSXMLHttpRequestExceptionPrototype18getOwnPropertySlotEPN3KJS9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSStoragePrototype9classInfoEv
+__ZN7WebCore23JSStorageEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20JSTextEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore22JSTextMetricsPrototype9classInfoEv
+__ZN7WebCore31JSWebKitAnimationEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSWebKitCSSMatrixPrototype9classInfoEv
+__ZN7WebCore35jsWebKitCSSTransformValueCSS_MATRIXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsWebKitCSSTransformValueCSS_MATRIX3DEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore40jsWebKitCSSTransformValueCSS_PERSPECTIVEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsWebKitCSSTransformValueCSS_ROTATEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsWebKitCSSTransformValueCSS_ROTATE3DEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsWebKitCSSTransformValueCSS_ROTATEXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsWebKitCSSTransformValueCSS_ROTATEYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsWebKitCSSTransformValueCSS_ROTATEZEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsWebKitCSSTransformValueCSS_SCALEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsWebKitCSSTransformValueCSS_SCALE3DEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsWebKitCSSTransformValueCSS_SCALEXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsWebKitCSSTransformValueCSS_SCALEYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsWebKitCSSTransformValueCSS_SCALEZEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsWebKitCSSTransformValueCSS_SKEWEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsWebKitCSSTransformValueCSS_SKEWXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsWebKitCSSTransformValueCSS_SKEWYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore38jsWebKitCSSTransformValueCSS_TRANSLATEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore40jsWebKitCSSTransformValueCSS_TRANSLATE3DEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsWebKitCSSTransformValueCSS_TRANSLATEXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsWebKitCSSTransformValueCSS_TRANSLATEYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsWebKitCSSTransformValueCSS_TRANSLATEZEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34JSWebKitCSSTransformValuePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore22JSWebKitPointPrototype9classInfoEv
+__ZN7WebCore32JSWebKitTransitionEventPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore17JSWorkerPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17JSWorkerPrototype9classInfoEv
+__ZNK7WebCore25JSXMLHttpRequestPrototype9classInfoEv
+__ZN7WebCore20jsXMLHttpRequestDONEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsXMLHttpRequestHEADERS_RECEIVEDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsXMLHttpRequestLOADINGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsXMLHttpRequestOPENEDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsXMLHttpRequestUNSENTEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsXMLHttpRequestExceptionABORT_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsXMLHttpRequestExceptionNETWORK_ERREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34JSXMLHttpRequestExceptionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL42getJSXMLHttpRequestExceptionPrototypeTableEPN3JSC9ExecStateE
__ZNK7WebCore34JSXMLHttpRequestExceptionPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore34JSXMLHttpRequestExceptionPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore34JSXMLHttpRequestExceptionPrototype16getValuePropertyEPN3KJS9ExecStateEi
+__ZN7WebCore31JSXMLHttpRequestUploadPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL39getJSXMLHttpRequestUploadPrototypeTableEPN3JSC9ExecStateE
+__ZNK7WebCore31JSXMLHttpRequestUploadPrototype9classInfoEv
__ZNK7WebCore24JSXMLSerializerPrototype9classInfoEv
__ZNK7WebCore25JSXPathEvaluatorPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore27JSXPathExceptionConstructorEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore27JSXPathExceptionConstructor16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore25JSXPathExceptionPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore25JSXPathExceptionPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore25JSXPathExceptionPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZN3KJS17staticValueGetterIN7WebCore22JSXPathResultPrototypeEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore22JSXPathResultPrototype16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK3KJS22XSLTProcessorPrototype9classInfoEv
-__ZNK3KJS9MimeTypes9classInfoEv
-__ZN7WebCore9JSHistory16getPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZN7WebCore9JSHistory22customGetPropertyNamesEPN3KJS9ExecStateERNS1_17PropertyNameArrayE
-__ZNK7WebCore18JSHistoryPrototype9classInfoEv
-__ZNK7WebCore18JSBarInfoPrototype9classInfoEv
-__ZN3KJS17staticValueGetterIN7WebCore9JSBarInfoEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore9JSBarInfo16getValuePropertyEPN3KJS9ExecStateEi
-__ZNK7WebCore7BarInfo7visibleEv
-__ZNK7WebCore6Chrome15toolbarsVisibleEv
-__ZNK7WebCore6Chrome14menubarVisibleEv
-__ZNK7WebCore6Chrome17scrollbarsVisibleEv
-__ZNK7WebCore6Chrome16statusbarVisibleEv
-__ZN7WebCore35jsRangePrototypeFunctionCompareNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore30jsRangePrototypeFunctionDetachEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore5Range6detachERi
-__ZN7WebCore21ProcessingInstruction9cloneNodeEb
-__ZN7WebCore41jsRangeExceptionPrototypeFunctionToStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore16JSRangeException9classInfoEv
-__ZN7WebCore7Comment16childTypeAllowedENS_4Node8NodeTypeE
-__ZN7WebCore38jsRangePrototypeFunctionIntersectsNodeEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore5Range14intersectsNodeEPNS_4NodeERi
-__ZNK7WebCore16HTMLImageElement13naturalHeightEv
-__ZN7WebCore16PendingCallbacks20PendingErrorCallback4callEPNS_12XMLTokenizerE
-__ZN7WebCore4Node9setPrefixERKNS_12AtomicStringERi
-__ZN7WebCore40jsElementPrototypeFunctionHasAttributeNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore45jsNamedNodeMapPrototypeFunctionGetNamedItemNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore43jsElementPrototypeFunctionRemoveAttributeNSEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Element17removeAttributeNSERKNS_6StringES3_Ri
-__ZN7WebCore49jsXPathEvaluatorPrototypeFunctionCreateNSResolverEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN3KJS17staticValueGetterIN7WebCore16JSXPathExceptionEEEPNS_7JSValueEPNS_9ExecStateEPNS_8JSObjectERKNS_10IdentifierERKNS_12PropertySlotE
-__ZNK7WebCore16JSXPathException16getValuePropertyEPN3KJS9ExecStateEi
-__ZN7WebCore41jsEventExceptionPrototypeFunctionToStringEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZNK7WebCore16JSEventException9classInfoEv
-__ZN7WebCore47jsElementPrototypeFunctionInsertAdjacentElementEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore7Element21insertAdjacentElementERKNS_6StringEPNS_4NodeERi
+__ZN7WebCore21jsXPathResultANY_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsXPathResultANY_UNORDERED_NODE_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsXPathResultBOOLEAN_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsXPathResultFIRST_ORDERED_NODE_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsXPathResultNUMBER_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsXPathResultORDERED_NODE_ITERATOR_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsXPathResultSTRING_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsXPathResultUNORDERED_NODE_ITERATOR_TYPEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore24JSXSLTProcessorPrototype9classInfoEv
+__ZN7WebCore21JSDOMApplicationCache3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZNK7WebCore30JSDOMApplicationCachePrototype9classInfoEv
+__ZN7WebCore29jsDOMApplicationCacheCHECKINGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsDOMApplicationCacheDOWNLOADINGEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsDOMApplicationCacheIDLEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsDOMApplicationCacheOBSOLETEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsDOMApplicationCacheUNCACHEDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsDOMApplicationCacheUPDATEREADYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsDOMApplicationCacheOncachedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsDOMApplicationCacheOncheckingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsDOMApplicationCacheOndownloadingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsDOMApplicationCacheOnerrorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsDOMApplicationCacheOnnoupdateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsDOMApplicationCacheOnobsoleteEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsDOMApplicationCacheOnprogressEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsDOMApplicationCacheOnupdatereadyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsDOMApplicationCacheStatusEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19DOMApplicationCache6statusEv
+__ZNK7WebCore19DOMApplicationCache15associatedCacheEv
+__ZNK7WebCore18JSConsolePrototype9classInfoEv
+__ZN7WebCore17jsConsoleProfilesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore9JSConsole8profilesEPN3JSC9ExecStateE
+__ZNK7WebCore14SecurityOrigin5equalEPKS0_
+__ZNK7WebCore23JSDOMSelectionPrototype9classInfoEv
+__ZN7WebCore19JSLocationPrototype12defineGetterEPN3JSC9ExecStateERKNS1_10IdentifierEPNS1_8JSObjectE
+__ZN7WebCore19JSLocationPrototype3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore19JSLocationPrototype9customPutEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore10JSLocation12defineGetterEPN3JSC9ExecStateERKNS1_10IdentifierEPNS1_8JSObjectE
+__ZN7WebCore12JSSVGElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10SVGElementEEE
+__ZN7WebCore12JSSVGElementD1Ev
+__ZN7WebCoreL20setTableCellsChangedEPNS_4NodeE
+__ZN7WebCore28setJSHTMLTextAreaElementRowsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore19HTMLTextAreaElement7setRowsEi
+__ZN7WebCore23JSCustomXPathNSResolver18lookupNamespaceURIERKNS_6StringE
+__ZN7WebCore51jsHTMLElementPrototypeFunctionInsertAdjacentElementEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11HTMLElement21insertAdjacentElementERKNS_6StringEPNS_7ElementERi
+__ZN7WebCore16HTMLMediaElement19removedFromDocumentEv
+__ZN7WebCoreL17sourceConstructorERKNS_13QualifiedNameEPNS_8DocumentEPNS_15HTMLFormElementEb
+__ZN7WebCore17HTMLSourceElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17HTMLSourceElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL30createHTMLSourceElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_11HTMLElementEEE
+__ZN7WebCore19JSHTMLSourceElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSHTMLSourceElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLSourceElementEEE
+__ZN7WebCore19JSHTMLSourceElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17HTMLSourceElementEEE
+__ZNK7WebCore19JSHTMLSourceElement9classInfoEv
+__ZN7WebCore17HTMLSourceElement20insertedIntoDocumentEv
+__ZN7WebCore19JSHTMLSourceElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZThn8_N7WebCore16HTMLVideoElementD0Ev
+__ZN7WebCore19JSHTMLSourceElementD1Ev
+__ZThn8_N7WebCore17HTMLSourceElementD0Ev
+__ZN7WebCore17HTMLSourceElementD0Ev
+__ZN7WebCore28JSHTMLSourceElementPrototypeD1Ev
+__ZN7WebCore48jsHTMLElementPrototypeFunctionInsertAdjacentTextEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11HTMLElement18insertAdjacentTextERKNS_6StringES3_Ri
__ZN7WebCore11RenderLayer20updateOverflowStatusEbb
__ZN7WebCore9FrameView20updateOverflowStatusEbb
__ZN7WebCore13OverflowEventC1Ebbbb
-__ZN7WebCore22UTF32BigEndianEncodingEv
-__ZN7WebCore25UTF32LittleEndianEncodingEv
+__ZN7WebCore13OverflowEventC2Ebbbb
+__ZNK7WebCore5XPath13FunStartsWith8evaluateEv
+__ZN7WebCoreL17gbkCallbackEscapeEPKvP25UConverterFromUnicodeArgsPKtii24UConverterCallbackReasonP10UErrorCode
+__ZN7WebCoreL12getGbkEscapeEi
+__ZNK7WebCore14CSSCharsetRule7cssTextEv
+__ZN7WebCore24jsCSSCharsetRuleEncodingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSCSSCharsetRule3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore27setJSCSSCharsetRuleEncodingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
__ZN7WebCore14CSSCharsetRule13isCharsetRuleEv
-__ZN7WebCore17gbkCallbackEscapeEPKvP25UConverterFromUnicodeArgsPKtii24UConverterCallbackReasonP10UErrorCode
-__ZN7WebCore40jsHTMLLabelElementPrototypeFunctionFocusEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore16HTMLLabelElement5focusEb
-__ZN7WebCore49jsMutationEventPrototypeFunctionInitMutationEventEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore13MutationEvent17initMutationEventERKNS_12AtomicStringEbbPNS_4NodeERKNS_6StringES8_S8_t
-__ZNK7WebCore18JSEventConstructor21implementsHasInstanceEv
-__ZNK7WebCore20JSUIEventConstructor21implementsHasInstanceEv
-__ZNK7WebCore26JSKeyboardEventConstructor21implementsHasInstanceEv
-__ZNK7WebCore23JSMouseEventConstructor21implementsHasInstanceEv
-__ZNK7WebCore23JSWheelEventConstructor21implementsHasInstanceEv
-__ZNK7WebCore26JSMutationEventConstructor21implementsHasInstanceEv
-__ZNK7WebCore26JSOverflowEventConstructor21implementsHasInstanceEv
-__ZNK7WebCore26JSProgressEventConstructor21implementsHasInstanceEv
-__ZNK7WebCore22JSTextEventConstructor21implementsHasInstanceEv
+__ZN7WebCore26setJSHTMLImageElementIsMapEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement8setIsMapEb
+__ZN7WebCoreL15newTextCodecMacERKNS_12TextEncodingEPKv
+__ZN7WebCore12TextCodecMacC1Ej
+__ZN7WebCore12TextCodecMacC2Ej
+__ZN7WebCore12TextCodecMac6decodeEPKcmbbRb
+__ZNK7WebCore12TextCodecMac18createTECConverterEv
+__ZN7WebCoreL18cachedConverterTECEv
+__ZN7WebCore12TextCodecMac6decodeEPKhiRiPviS3_
+__ZN7WebCore12TextCodecMacD0Ev
+__ZNK7WebCore12TextCodecMac19releaseTECConverterEv
+__ZN7WebCoreL26gbkUrlEscapedEntityCallackEPKvP25UConverterFromUnicodeArgsPKtii24UConverterCallbackReasonP10UErrorCode
+__ZNK7WebCore8Document21getElementByAccessKeyERKNS_6StringE
+__ZN3WTF7HashMapIPN7WebCore10StringImplEPNS1_7ElementENS1_15CaseFoldingHashENS_10HashTraitsIS3_EENS7_IS5_EEE3setERKS3_RKS5_
+__ZN3WTF9HashTableIPN7WebCore10StringImplESt4pairIS3_PNS1_7ElementEENS_18PairFirstExtractorIS7_EENS1_15CaseFoldingHashENS_14Pai
+__ZNK3WTF7HashMapIPN7WebCore10StringImplEPNS1_7ElementENS1_15CaseFoldingHashENS_10HashTraitsIS3_EENS7_IS5_EEE3getERKS3_
+__ZN7WebCore17HTMLAnchorElement15accessKeyActionEb
+__ZN7WebCore22jsKeyboardEventCtrlKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsKeyboardEventAltKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsKeyboardEventMetaKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsKeyboardEventKeyIdentifierEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsKeyboardEventKeyLocationEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12EventHandler14scrollOverflowENS_15ScrollDirectionENS_17ScrollGranularityE
+__ZNK7WebCore27RenderTextControlSingleLine10scrollLeftEv
+__ZN7WebCore35setJSHTMLInputElementSelectionStartEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore18JSHTMLInputElement17setSelectionStartEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore16HTMLInputElement17setSelectionStartEi
+__ZN7WebCore33setJSHTMLInputElementSelectionEndEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore18JSHTMLInputElement15setSelectionEndEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore16HTMLInputElement15setSelectionEndEi
+__ZNK7WebCore11RenderBlock24containsNonZeroBidiLevelEv
+__ZN7WebCore22jsXMLHttpRequestUploadEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14XMLHttpRequest6uploadEv
+__ZN7WebCore20XMLHttpRequestUploadC1EPNS_14XMLHttpRequestE
+__ZN7WebCore20XMLHttpRequestUploadC2EPNS_14XMLHttpRequestE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_20XMLHttpRequestUploadE
+__ZN7WebCore22JSXMLHttpRequestUploadC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_20XMLHttpRequestUploadEEE
+__ZN7WebCore22JSXMLHttpRequestUploadC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_20XMLHttpRequestUploadEEE
+__ZN7WebCore6WorkerC1ERKNS_6StringEPNS_22ScriptExecutionContextERi
+__ZN7WebCore6WorkerC2ERKNS_6StringEPNS_22ScriptExecutionContextERi
+__ZN7WebCore18WorkerContextProxy6createEPNS_6WorkerE
+__ZN7WebCore20WorkerMessagingProxyC1EPNS_6WorkerE
+__ZN7WebCore20WorkerMessagingProxyC2EPNS_6WorkerE
+__ZNK7WebCore6Worker22scriptExecutionContextEv
+__ZThn88_N7WebCore8Document25refScriptExecutionContextEv
+__ZN7WebCore8Document25refScriptExecutionContextEv
+__ZThn24_N7WebCore6Worker14notifyFinishedEPNS_14CachedResourceE
+__ZN7WebCore6Worker14notifyFinishedEPNS_14CachedResourceE
+__ZThn88_NK7WebCore8Document9userAgentERKNS_4KURLE
+__ZNK7WebCore8Document9userAgentERKNS_4KURLE
+__ZN7WebCore20WorkerMessagingProxy18startWorkerContextERKNS_4KURLERKNS_6StringES6_
+__ZN7WebCore12WorkerThread6createERKNS_4KURLERKNS_6StringES6_PNS_17WorkerObjectProxyE
+__ZN7WebCore12WorkerThreadC1ERKNS_4KURLERKNS_6StringES6_PNS_17WorkerObjectProxyE
+__ZN7WebCore12WorkerThreadC2ERKNS_4KURLERKNS_6StringES6_PNS_17WorkerObjectProxyE
+__ZN7WebCore13WorkerRunLoopC1Ev
+__ZN7WebCore13WorkerRunLoopC2Ev
+__ZN7WebCore23WorkerThreadStartupDataC1ERKNS_4KURLERKNS_6StringES6_
+__ZN7WebCore23WorkerThreadStartupDataC2ERKNS_4KURLERKNS_6StringES6_
+__ZNK7WebCore4KURL4copyEv
+__ZN7WebCore20WorkerMessagingProxy19workerThreadCreatedEN3WTF10PassRefPtrINS_12WorkerThreadEEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore22ScriptExecutionContext4TaskEEELm0EE14shrinkCapacityEm
+__ZN7WebCore12WorkerThread5startEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_6WorkerE
+__ZN7WebCore8JSWorkerC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_6WorkerEEE
+__ZN7WebCore8JSWorkerC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_6WorkerEEE
+__ZN7WebCore46jsXMLHttpRequestPrototypeFunctionDispatchEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore22JSXMLHttpRequestUpload18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL30getJSXMLHttpRequestUploadTableEPN3JSC9ExecStateE
+__ZN7WebCore52jsXMLHttpRequestUploadPrototypeFunctionDispatchEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore22JSXMLHttpRequestUpload9classInfoEv
+__ZN7WebCore20XMLHttpRequestUpload13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERi
+__ZN7WebCore51jsDOMApplicationCachePrototypeFunctionDispatchEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19DOMApplicationCache13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERi
+__ZN7WebCore8JSWorker18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore38jsWorkerPrototypeFunctionDispatchEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore8JSWorker9classInfoEv
+__ZN7WebCore6Worker13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERi
+__ZN7WebCore12WorkerThread17workerThreadStartEPv
+__ZN7WebCore12WorkerThread12workerThreadEv
+__ZN7WebCore13WorkerContextC1ERKNS_4KURLERKNS_6StringEPNS_12WorkerThreadE
+__ZN7WebCore13WorkerContextC2ERKNS_4KURLERKNS_6StringEPNS_12WorkerThreadE
+__ZN7WebCore22WorkerScriptControllerC1EPNS_13WorkerContextE
+__ZN7WebCore22WorkerScriptControllerC2EPNS_13WorkerContextE
+__ZN7WebCore22WorkerScriptController8evaluateERKNS_16ScriptSourceCodeE
+__ZN7WebCore22WorkerScriptController8evaluateERKNS_16ScriptSourceCodeEPNS_11ScriptValueE
+__ZN7WebCore22WorkerScriptController10initScriptEv
+__ZN7WebCore24JSWorkerContextPrototypenwEmPN3JSC12JSGlobalDataE
+__ZN7WebCore15JSWorkerContextC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13WorkerContextEEE
+__ZN7WebCore15JSWorkerContextC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13WorkerContextEEE
+__ZN7WebCore19JSWorkerContextBaseC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13WorkerContextEEE
+__ZN7WebCore17JSDOMGlobalObject21JSDOMGlobalObjectDataC1Ev
+__ZNK3JSC14JSGlobalObject17supportsProfilingEv
+__ZNK7WebCore13WorkerContext18hasPendingActivityEv
+__ZThn8_N7WebCore20WorkerMessagingProxy21reportPendingActivityEb
+__ZN7WebCore20WorkerMessagingProxy21reportPendingActivityEb
+__ZThn88_N7WebCore8Document8postTaskEN3WTF10PassRefPtrINS_22ScriptExecutionContext4TaskEEE
+__ZN7WebCore8Document8postTaskEN3WTF10PassRefPtrINS_22ScriptExecutionContext4TaskEEE
+__ZN7WebCore13WorkerRunLoop3runEPNS_13WorkerContextE
+__ZN7WebCore17WorkerSharedTimer16setFiredFunctionEPFvvE
+__ZN7WebCore17WorkerSharedTimer4stopEv
+__ZN7WebCore13WorkerRunLoop11defaultModeEv
+__ZN7WebCore13WorkerRunLoop9runInModeEPNS_13WorkerContextERKNS_13ModePredicateE
+__ZN7WebCoreL11performTaskEPv
+__ZN7WebCore30WorkerThreadActivityReportTask11performTaskEPNS_22ScriptExecutionContextE
+__ZN7WebCore20WorkerMessagingProxy29reportPendingActivityInternalEbb
+__ZN7WebCore30WorkerThreadActivityReportTaskD0Ev
+__ZN7WebCore22ScriptExecutionContext4TaskD2Ev
+__ZNK7WebCore6Worker18hasPendingActivityEv
+__ZNK7WebCore20WorkerMessagingProxy18hasPendingActivityEv
+__ZN7WebCore22JSXMLHttpRequestUpload4markEv
+__ZN7WebCore8JSWorker4markEv
+__ZNK7WebCore6Worker10canSuspendEv
+__ZN7WebCore6Worker4stopEv
+__ZN7WebCore6Worker9terminateEv
+__ZN7WebCore20WorkerMessagingProxy22terminateWorkerContextEv
+__ZN7WebCore12WorkerThread4stopEv
+__ZN7WebCore22WorkerScriptController15forbidExecutionEv
+__ZN7WebCore13WorkerRunLoop9terminateEv
+__ZN7WebCore22WorkerScriptControllerD1Ev
+__ZN7WebCore22WorkerScriptControllerD2Ev
+__ZN7WebCore24JSWorkerContextPrototypeD1Ev
+__ZN7WebCore15JSWorkerContextD1Ev
+__ZN7WebCore19JSWorkerContextBaseD2Ev
+__ZN7WebCore17JSDOMGlobalObject21JSDOMGlobalObjectDataD0Ev
+__ZN7WebCore13WorkerContextD0Ev
+__ZThn8_N7WebCore20WorkerMessagingProxy22workerContextDestroyedEv
+__ZN7WebCore20WorkerMessagingProxy22workerContextDestroyedEv
+__ZN3WTF14ThreadSpecificIN7WebCore16ThreadGlobalDataEE7destroyEPv
+__ZN7WebCore16ThreadGlobalDataD1Ev
+__ZN7WebCore16ThreadGlobalDataD2Ev
+__ZN7WebCore19ICUConverterWrapperD1Ev
+__ZN7WebCore19ICUConverterWrapperD2Ev
+__ZN7WebCore10EventNamesD2Ev
+__ZN7WebCore26WorkerContextDestroyedTask11performTaskEPNS_22ScriptExecutionContextE
+__ZN7WebCore20WorkerMessagingProxy30workerContextDestroyedInternalEv
+__ZN7WebCore12WorkerThreadD1Ev
+__ZN7WebCore12WorkerThreadD2Ev
+__ZN7WebCore13WorkerRunLoopD1Ev
+__ZN7WebCore13WorkerRunLoopD2Ev
+__ZN7WebCore17WorkerSharedTimerD0Ev
+__ZN7WebCore26WorkerContextDestroyedTaskD0Ev
+__ZN7WebCore8JSWorkerD1Ev
+__ZN7WebCore8JSWorkerD2Ev
+__ZN7WebCore6WorkerD0Ev
+__ZN7WebCore20WorkerMessagingProxy21workerObjectDestroyedEv
+__ZN7WebCore20WorkerMessagingProxyD0Ev
+__ZThn88_N7WebCore8Document27derefScriptExecutionContextEv
+__ZN7WebCore8Document27derefScriptExecutionContextEv
+__ZN7WebCore22JSXMLHttpRequestUploadD1Ev
+__ZN7WebCore22JSXMLHttpRequestUploadD2Ev
+__ZN7WebCore20XMLHttpRequestUploadD0Ev
+__ZN7WebCore49jsMutationEventPrototypeFunctionInitMutationEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13MutationEvent17initMutationEventERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_4NodeEEERKNS_6StringESA_SA_t
+__ZN7WebCoreL27createSVGPathElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore16JSSVGPathElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGPathElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGPathElementEEE
+__ZN7WebCore16JSSVGPathElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGPathElementEEE
+__ZN7WebCore16JSSVGPathElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSSVGPathElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16JSSVGPathElement9classInfoEv
+__ZNK7WebCore6JSNode21pushEventHandlerScopeEPN3JSC9ExecStateERNS1_10ScopeChainE
+__ZN7WebCore26jsProgressEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12MessageEventC1Ev
+__ZN7WebCore12MessageEventC2Ev
+__ZN7WebCore25jsMessageEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsWebKitAnimationEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21WebKitTransitionEventC1Ev
+__ZN7WebCore21WebKitTransitionEventC2Ev
+__ZNK7WebCore21WebKitTransitionEvent23isWebKitTransitionEventEv
+__ZN7WebCore23JSWebKitTransitionEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21WebKitTransitionEventEEE
+__ZN7WebCore23JSWebKitTransitionEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21WebKitTransitionEventEEE
+__ZN7WebCore23JSWebKitTransitionEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore34jsWebKitTransitionEventConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSSVGPathElementD1Ev
+__ZThn8_N7WebCore14SVGPathElementD0Ev
+__ZN7WebCore25JSSVGPathElementPrototypeD1Ev
+__ZN7WebCore23JSWebKitTransitionEventD1Ev
+__ZN7WebCore21WebKitTransitionEventD0Ev
+__ZNK7WebCore21HTMLFrameOwnerElement19isKeyboardFocusableEPNS_13KeyboardEventE
+__ZNK7WebCore21HTMLFrameOwnerElement19isFrameOwnerElementEv
+__ZNK7WebCore17HTMLAnchorElement19isKeyboardFocusableEPNS_13KeyboardEventE
+__ZNK7WebCore12EventHandler11tabsToLinksEPNS_13KeyboardEventE
+__ZNK7WebCore12EventHandler24invertSenseOfTabsToLinksEPNS_13KeyboardEventE
+__ZNK7WebCore12RenderInline17borderBoundingBoxEv
+__ZNK7WebCore4Node19isFrameOwnerElementEv
+__ZNK7WebCore16HTMLInputElement19isKeyboardFocusableEPNS_13KeyboardEventE
__ZN7WebCore8Document21previousFocusableNodeEPNS_4NodeEPNS_13KeyboardEventE
+__ZN7WebCore26jsKeyboardEventAltGraphKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7UIEvent6layerXEv
+__ZNK7WebCore7UIEvent6layerYEv
+__ZNK7WebCore7UIEvent5pageXEv
+__ZNK7WebCore7UIEvent5pageYEv
+__ZNK7WebCore13KeyboardEvent5whichEv
+__ZN7WebCore47jsMessageEventPrototypeFunctionInitMessageEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14JSMessageEvent9classInfoEv
+__ZN7WebCore12MessageEvent16initMessageEventERKNS_12AtomicStringEbbRKNS_6StringES6_S6_PNS_9DOMWindowEPNS_11MessagePortE
+__ZN7WebCore25jsMessageEventLastEventIdEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsMutationEventRelatedNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24jsMutationEventPrevValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsMutationEventNewValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsMutationEventAttrNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsMutationEventAttrChangeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore49jsOverflowEventPrototypeFunctionInitOverflowEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13OverflowEvent17initOverflowEventEtbb
+__ZN7WebCore21jsOverflowEventOrientEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsOverflowEventHorizontalOverflowEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsOverflowEventVerticalOverflowEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsProgressEventLengthComputableEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsProgressEventLoadedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsProgressEventTotalEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12StorageEvent14isStorageEventEv
+__ZN7WebCore14JSStorageEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12StorageEventEEE
+__ZN7WebCore14JSStorageEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12StorageEventEEE
+__ZN7WebCore14JSStorageEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore47jsStorageEventPrototypeFunctionInitStorageEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14JSStorageEvent9classInfoEv
+__ZN7WebCore12StorageEvent16initStorageEventERKNS_12AtomicStringEbbRKNS_6StringES6_S6_S6_N3WTF10PassRefPtrINS_9DOMWindowEEE
+__ZN7WebCore17jsStorageEventKeyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsStorageEventOldValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsStorageEventNewValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17jsStorageEventUriEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsStorageEventSourceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsTextEventPrototypeFunctionInitTextEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9TextEvent13initTextEventERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEERKNS_6StringE
+__ZN7WebCore15jsTextEventDataEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore7UIEvent5whichEv
+__ZN7WebCore63jsWebKitAnimationEventPrototypeFunctionInitWebKitAnimationEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS
+__ZNK7WebCore22JSWebKitAnimationEvent9classInfoEv
+__ZN7WebCore20WebKitAnimationEvent24initWebKitAnimationEventERKNS_12AtomicStringEbbRKNS_6StringEd
+__ZN7WebCore65jsWebKitTransitionEventPrototypeFunctionInitWebKitTransitionEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERK
+__ZNK7WebCore23JSWebKitTransitionEvent9classInfoEv
+__ZN7WebCore21WebKitTransitionEvent25initWebKitTransitionEventERKNS_12AtomicStringEbbRKNS_6StringEd
+__ZN7WebCore35jsWebKitTransitionEventPropertyNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore21WebKitTransitionEvent12propertyNameEv
+__ZN7WebCore34jsWebKitTransitionEventElapsedTimeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore21WebKitTransitionEvent11elapsedTimeEv
+__ZN7WebCore14JSStorageEventD1Ev
+__ZN7WebCore12StorageEventD0Ev
+__ZN7WebCore16HTMLLabelElement5focusEb
+__ZN7WebCore11RenderBlock16paintColumnRulesERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore11RenderBlock19paintColumnContentsERNS_12RenderObject9PaintInfoEiib
+__ZN7WebCore16HTMLInputElement15addSearchResultEv
+__ZN7WebCore27RenderTextControlSingleLine15addSearchResultEv
+__ZN7WebCore16HTMLInputElement8onSearchEv
+__ZN7WebCore27RenderTextControlSingleLine20stopSearchEventTimerEv
+__ZN7WebCore17HTMLSelectElement13typeAheadFindEPNS_13KeyboardEventE
+__ZNK7WebCore17HTMLSelectElement17listToOptionIndexEi
+__ZN7WebCore24submitButtonDefaultLabelEv
+__ZN7WebCore17setJSNodeOnunloadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node11setOnunloadEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZNK7WebCore6Chrome12canTakeFocusENS_14FocusDirectionE
+__ZNK7WebCore6Chrome9takeFocusENS_14FocusDirectionE
+__ZN7WebCore17setJSNodeOnscrollEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node11setOnscrollEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore9Scrollbar6scrollENS_15ScrollDirectionENS_17ScrollGranularityEf
+__ZN7WebCore12EventHandler30passMousePressEventToScrollbarERNS_28MouseEventWithHitTestResultsEPNS_9ScrollbarE
+__ZN7WebCore9Scrollbar9mouseDownERKNS_18PlatformMouseEventE
+__ZN7WebCore9Scrollbar14setPressedPartENS_13ScrollbarPartE
+__ZN7WebCore17ScrollbarThemeMac19shouldCenterOnThumbEPNS_9ScrollbarERKNS_18PlatformMouseEventE
+__ZN7WebCore17ScrollbarThemeMac27initialAutoscrollTimerDelayEv
+__ZN7WebCore9Scrollbar21autoscrollPressedPartEd
+__ZN7WebCoreL15thumbUnderMouseEPNS_9ScrollbarE
+__ZN7WebCore23ScrollbarThemeComposite13trackPositionEPNS_9ScrollbarE
+__ZN7WebCore9Scrollbar28pressedPartScrollGranularityEv
+__ZN7WebCore9Scrollbar26pressedPartScrollDirectionEv
+__ZN7WebCore9Scrollbar18startTimerIfNeededEd
+__ZN7WebCore17ScrollbarThemeMac20autoscrollTimerDelayEv
+__ZN7WebCore9Scrollbar7mouseUpEv
+__ZN3WTF6VectorIN7WebCore15AttributeChangeELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore15AttributeChangeELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore15AttributeChangeELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIN7WebCore15AttributeChangeELm0EE6shrinkEm
+__ZN7WebCore32jsDOMWindowPrototypeFunctionStopEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow4stopEv
+__ZN7WebCore11FrameLoader25scheduleCheckLoadCompleteEv
+__ZNK7WebCore15HTMLAreaElement11isFocusableEv
+__ZN7WebCore16HTMLMediaElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore11RenderMediaC1EPNS_16HTMLMediaElementE
+__ZN7WebCore11RenderMedia24createControlsShadowRootEv
+__ZN7WebCore29MediaControlShadowRootElementC1EPNS_8DocumentEPNS_16HTMLMediaElementE
+__ZN7WebCore29MediaControlShadowRootElementC2EPNS_8DocumentEPNS_16HTMLMediaElementE
+__ZNK7WebCore29MediaControlShadowRootElement12isShadowNodeEv
+__ZN7WebCore29MediaControlShadowRootElement16shadowParentNodeEv
+__ZN7WebCore11RenderMedia11createPanelEv
+__ZN7WebCore11RenderMedia16createMuteButtonEv
+__ZN7WebCore29MediaControlMuteButtonElementC1EPNS_8DocumentEPNS_16HTMLMediaElementE
+__ZN7WebCore29MediaControlMuteButtonElementC2EPNS_8DocumentEPNS_16HTMLMediaElementE
+__ZNK7WebCore16HTMLMediaElement5mutedEv
+__ZN7WebCore24MediaControlInputElementC2EPNS_8DocumentENS_8PseudoIdERKNS_6StringEPNS_16HTMLMediaElementENS_23MediaControlElemen
+__ZN7WebCore24MediaControlInputElement14attachToParentEPNS_7ElementE
+__ZN7WebCore11RenderMedia16createPlayButtonEv
+__ZN7WebCore29MediaControlPlayButtonElementC1EPNS_8DocumentEPNS_16HTMLMediaElementE
+__ZN7WebCore29MediaControlPlayButtonElementC2EPNS_8DocumentEPNS_16HTMLMediaElementE
+__ZNK7WebCore16HTMLMediaElement7canPlayEv
+__ZN7WebCore11RenderMedia23createTimelineContainerEv
+__ZN7WebCore11RenderMedia14createTimelineEv
+__ZN7WebCore27MediaControlTimelineElementC1EPNS_8DocumentEPNS_16HTMLMediaElementE
+__ZN7WebCore27MediaControlTimelineElementC2EPNS_8DocumentEPNS_16HTMLMediaElementE
+__ZN7WebCore11RenderMedia20createSeekBackButtonEv
+__ZN7WebCore29MediaControlSeekButtonElementC1EPNS_8DocumentEPNS_16HTMLMediaElementEb
+__ZN7WebCore29MediaControlSeekButtonElementC2EPNS_8DocumentEPNS_16HTMLMediaElementEb
+__ZN7WebCore11RenderMedia23createSeekForwardButtonEv
+__ZN7WebCore11RenderMedia24createCurrentTimeDisplayEv
+__ZN7WebCore23MediaTimeDisplayElementC1EPNS_8DocumentEPNS_16HTMLMediaElementEb
+__ZN7WebCore23MediaTimeDisplayElementC2EPNS_8DocumentEPNS_16HTMLMediaElementEb
+__ZN7WebCore23MediaTextDisplayElementC2EPNS_8DocumentENS_8PseudoIdEPNS_16HTMLMediaElementE
+__ZN7WebCore23MediaTextDisplayElement14attachToParentEPNS_7ElementE
+__ZN7WebCore11RenderMedia26createTimeRemainingDisplayEv
+__ZN7WebCore11RenderMedia22createFullscreenButtonEv
+__ZN7WebCore35MediaControlFullscreenButtonElementC1EPNS_8DocumentEPNS_16HTMLMediaElementE
+__ZN7WebCore35MediaControlFullscreenButtonElementC2EPNS_8DocumentEPNS_16HTMLMediaElementE
+__ZN7WebCore24MediaControlInputElement6updateEv
+__ZN7WebCore29MediaControlMuteButtonElement17updateDisplayTypeEv
+__ZN7WebCore24MediaControlInputElement14setDisplayTypeENS_23MediaControlElementTypeE
+__ZN7WebCore29MediaControlPlayButtonElement17updateDisplayTypeEv
+__ZN7WebCore27MediaControlTimelineElement6updateEb
+__ZN7WebCore24MediaControlInputElement17updateDisplayTypeEv
+__ZN7WebCore11RenderMedia17updateTimeDisplayEv
+__ZN7WebCore11RenderMedia23updateControlVisibilityEv
+__ZNK7WebCore16HTMLMediaElement8hasVideoEv
+__ZNK7WebCore16HTMLVideoElement8hasVideoEv
+__ZNK7WebCore17HTMLSourceElement17endTagRequirementEv
+__ZNK7WebCore17HTMLSourceElement11tagPriorityEv
+__ZNK7WebCore16HTMLMediaElement12networkStateEv
+__ZNK7WebCore22NullMediaPlayerPrivate11currentTimeEv
+__ZN7WebCore17HTMLSourceElement23cancelPendingErrorEventEv
+__ZN7WebCore16HTMLMediaElement24havePotentialSourceChildEv
+__ZN7WebCore16HTMLMediaElement21selectNextSourceChildEPNS_11ContentTypeENS0_19InvalidSourceActionE
+__ZNK7WebCore17HTMLSourceElement4typeEv
+__ZNK7WebCore17HTMLSourceElement3srcEv
+__ZN7WebCore16HTMLMediaElement19loadNextSourceChildEv
+__ZN7WebCore11MediaPlayer8hasVideoEv
+__ZNK7WebCore22NullMediaPlayerPrivate8hasVideoEv
+__ZNK7WebCore18MediaPlayerPrivate8hasVideoEv
+__ZNK7WebCore11RenderVideo20calcAspectRatioWidthEv
+__ZNK7WebCore11RenderVideo21calcAspectRatioHeightEv
+__ZN7WebCore24MediaControlInputElement11updateStyleEv
+__ZN7WebCore23MediaTextDisplayElement11updateStyleEv
+__ZNK7WebCore19HTMLFieldSetElement11isFocusableEv
+__ZN7WebCore17HTMLLegendElement5focusEb
+__ZNK7WebCore17HTMLLegendElement11isFocusableEv
+__ZN7WebCore17HTMLLegendElement11formElementEv
+__ZNK7WebCore19HTMLOptGroupElement11isFocusableEv
+__ZNK7WebCore17HTMLOptionElement11isFocusableEv
+__ZN7WebCore12RenderSliderD0Ev
+__ZThn8_N7WebCore18SliderThumbElementD0Ev
+__ZN7WebCore18SliderThumbElementD0Ev
+__ZN7WebCore28RenderMediaControlShadowRootD0Ev
+__ZThn8_N7WebCore29MediaControlShadowRootElementD0Ev
+__ZN7WebCore29MediaControlShadowRootElementD0Ev
+__ZN7WebCore29MediaControlMuteButtonElementD0Ev
+__ZN7WebCore29MediaControlPlayButtonElementD0Ev
+__ZN7WebCore29MediaControlSeekButtonElementD0Ev
+__ZN7WebCore35MediaControlFullscreenButtonElementD0Ev
+__ZN7WebCore27MediaControlTimelineElementD0Ev
+__ZN7WebCore23MediaTimeDisplayElementD0Ev
+__ZN7WebCore11RenderMediaD0Ev
+__ZN7WebCore11FrameLoader21reportLocalLoadFailedEPNS_5FrameERKNS_6StringE
+__ZN7WebCore16HTMLMediaElement13noneSupportedEv
+__ZN7WebCore16HTMLMediaElement5pauseEv
+__ZN7WebCore16HTMLMediaElement13pauseInternalEv
+__ZN7WebCore19CachedXSLStyleSheet4dataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
+__ZN7WebCore13XSLStyleSheet17compileStyleSheetEv
+__ZL26initxsltParseStylesheetDocP7_xmlDoc
+__ZL14libxsltLibraryv
+__ZN7WebCore13XSLStyleSheet14clearDocumentsEv
+__ZL27initxsltNewTransformContextP15_xsltStylesheetP7_xmlDoc
+__ZN7WebCore22registerXSLTExtensionsEP21_xsltTransformContext
+__ZL27initxsltRegisterExtFunctionP21_xsltTransformContextPKhS2_PFvP22_xmlXPathParserContextiE
+__ZL23initxsltSetCtxtSortFuncP21_xsltTransformContextPFvS0_PP8_xmlNodeiE
+__ZL23initxsltQuoteUserParamsP21_xsltTransformContextPPKc
+__ZL27initxsltApplyStylesheetUserP15_xsltStylesheetP7_xmlDocPPKcS4_P7__sFILEP21_xsltTransformContext
+__ZL28initxsltFreeTransformContextP21_xsltTransformContext
+__ZL20initxsltSaveResultToP16_xmlOutputBufferP7_xmlDocP15_xsltStylesheet
+__ZN7WebCoreL13writeToVectorEPvPKci
+__ZL22initxsltFreeStylesheetP15_xsltStylesheet
+__ZN7WebCore13XSLTProcessor24createDocumentFromSourceERKNS_6StringES3_S3_PNS_4NodeEPNS_5FrameE
__ZNK7WebCore9RenderBox14overrideHeightEv
__ZN7WebCore17RenderFlexibleBox22calcVerticalPrefWidthsEv
-__ZN7WebCore13RenderListBox17listIndexAtOffsetEii
-__ZN7WebCore16HTMLInputElement16setIndeterminateEb
-__ZNK7WebCore4Font27selectionRectForComplexTextERKNS_7TextRunERKNS_8IntPointEiii
-__ZN7WebCore45jsHTMLSelectElementPrototypeFunctionNamedItemEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore17HTMLSelectElement9namedItemERKNS_6StringEb
-__ZN7WebCore17RenderTextControl22textWithHardLineBreaksEv
-__ZN7WebCore16getNextSoftBreakERPNS_13RootInlineBoxERPNS_4NodeERj
-__ZN7WebCore17HTMLSelectElement7setSizeEi
-__ZN7WebCore19HTMLOptGroupElement11removeChildEPNS_4NodeERi
-__ZN7WebCore31HTMLFormControlElementWithState26willMoveToNewOwnerDocumentEv
-__ZN7WebCore31HTMLFormControlElementWithState25didMoveToNewOwnerDocumentEv
-__ZN7WebCore16HTMLInputElement26willMoveToNewOwnerDocumentEv
-__ZN7WebCore16HTMLInputElement25didMoveToNewOwnerDocumentEv
+__ZNK7WebCore13RenderListBox10renderNameEv
+__ZN7WebCore17HTMLButtonElement15accessKeyActionEb
+__ZN7WebCore16HTMLInputElement15accessKeyActionEb
+__ZN7WebCore17HTMLLegendElement15accessKeyActionEb
+__ZN7WebCore16HTMLLabelElement15accessKeyActionEb
+__ZN7WebCore27jsHTMLInputElementAutofocusEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30setJSHTMLInputElementAutofocusEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore22HTMLFormControlElement12setAutofocusEb
+__ZN7WebCore32setJSHTMLTextAreaElementDisabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore28setJSHTMLTextAreaElementColsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19HTMLTextAreaElement7setColsEi
+__ZNK7WebCore12RenderSlider10renderNameEv
+__ZNK7WebCore23RenderFileUploadControl10renderNameEv
__ZNK7WebCore12RenderButton23createsAnonymousWrapperEv
-__ZN3WTF6VectorItLm0EE4growEm
-__ZN7WebCore17HTMLSelectElement11setMultipleEb
-__ZN7WebCore17HTMLSelectElement22updateListBoxSelectionEb
-__ZThn132_N7WebCore13RenderListBox12valueChangedEPNS_9ScrollbarE
-__ZN7WebCore13RenderListBox12valueChangedEPNS_9ScrollbarE
-__ZN7WebCore19enabledAnySelectionEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceE
+__ZN7WebCore14FormElementKeyC1EPNS_16AtomicStringImplES2_
+__ZN7WebCore14FormElementKeyC2EPNS_16AtomicStringImplES2_
+__ZNK7WebCore14FormElementKey3refEv
+__ZN3WTF9HashTableIN7WebCore14FormElementKeyESt4pairIS2_NS_6VectorINS1_6StringELm0EEEENS_18PairFirstExtractorIS7_EENS1_18FormEl
+__ZN3WTF7HashMapIN7WebCore14FormElementKeyENS_6VectorINS1_6StringELm0EEENS1_18FormElementKeyHashENS1_24FormElementKeyHashTraits
+__ZN7WebCore14FormElementKeyC1ERKS0_
+__ZN7WebCore14FormElementKeyC2ERKS0_
+__ZN7WebCore14FormElementKeyD1Ev
+__ZN7WebCore14FormElementKeyD2Ev
+__ZNK7WebCore14FormElementKey5derefEv
+__ZN7WebCore18FormElementKeyHash4hashERKNS_14FormElementKeyE
+__ZN7WebCore14FormElementKeyaSERKS0_
+__ZN7WebCore8Document23takeStateForFormElementEPNS_16AtomicStringImplES2_RNS_6StringE
+__ZN7WebCore16HTMLInputElement23restoreFormControlStateERKNS_6StringE
+__ZN7WebCore14jsNodeOnselectEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node8onselectEv
+__ZNK7WebCore8DragData11asFilenamesERN3WTF6VectorINS_6StringELm0EEE
+__ZN7WebCore23RenderFileUploadControl19receiveDroppedFilesERKN3WTF6VectorINS_6StringELm0EEE
+__ZN7WebCore23RenderFileUploadControl19allowsMultipleFilesEv
+__ZN7WebCore11FileChooser10chooseFileERKNS_6StringE
+__ZThn200_N7WebCore23RenderFileUploadControl12valueChangedEv
+__ZN7WebCore23RenderFileUploadControl12valueChangedEv
+__ZN7WebCore16HTMLInputElement23setFileListFromRendererERKN3WTF6VectorINS_6StringELm0EEE
+__ZN7WebCore4FileC1ERKNS_6StringE
+__ZN7WebCore4FileC2ERKNS_6StringE
+__ZN7WebCore15pathGetFileNameERKNS_6StringE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore4FileEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore4FileEEELm0EE15reserveCapacityEm
+__ZNK7WebCore8FileList4itemEj
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore4FileEEELm0EE6shrinkEm
+__ZNK7WebCore22HTMLFormControlElement19isKeyboardFocusableEPNS_13KeyboardEventE
+__ZNK7WebCore12EventHandler17tabsToAllControlsEPNS_13KeyboardEventE
+__ZNK7WebCore19HTMLTextAreaElement19isKeyboardFocusableEPNS_13KeyboardEventE
+__ZN7WebCore19HTMLTextAreaElement15accessKeyActionEb
+__ZN7WebCore39setJSDOMWindowHTMLCollectionConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZNK7WebCore14RenderTableCol10renderNameEv
+__ZN7WebCore34setJSHTMLInputElementIndeterminateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLInputElement16setIndeterminateEb
+__ZThn128_N7WebCore16HTMLInputElement8setValueERKNS_6StringE
+__ZN7WebCore26jsHTMLInputElementMultipleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLInputElement8multipleEv
+__ZN7WebCore29setJSHTMLInputElementMultipleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLInputElement11setMultipleEb
+__ZNK7WebCore17RenderTextControl28canBeProgramaticallyScrolledEb
+__ZN7WebCore27RenderTextControlSingleLine10autoscrollEv
+__ZN7WebCore30setJSHTMLInputElementMaxLengthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLInputElement12setMaxLengthEi
__ZNK7WebCore17HTMLSelectElement12canSelectAllEv
__ZN7WebCore17HTMLSelectElement9selectAllEv
__ZN7WebCore17HTMLSelectElement23nextSelectableListIndexEi
__ZN7WebCore17HTMLSelectElement27previousSelectableListIndexEi
+__ZN7WebCore17HTMLSelectElement22updateListBoxSelectionEb
+__ZN7WebCore13RenderListBox32scrollToRevealElementAtListIndexEi
__ZN7WebCore17HTMLSelectElement15listBoxOnChangeEv
__ZN7WebCore13RenderListBox12setScrollTopEi
-__ZNK7WebCore31JSHTMLInputElementBasePrototype9classInfoEv
+__ZThn200_N7WebCore13RenderListBox12valueChangedEPNS_9ScrollbarE
+__ZN7WebCore13RenderListBox12valueChangedEPNS_9ScrollbarE
+__ZN7WebCore13RenderListBox17listIndexAtOffsetEii
+__ZNK7WebCore11RenderTheme37activeListBoxSelectionBackgroundColorEv
+__ZNK7WebCore14RenderThemeMac45platformActiveListBoxSelectionBackgroundColorEv
+__ZNK7WebCore11RenderTheme37activeListBoxSelectionForegroundColorEv
+__ZNK7WebCore14RenderThemeMac45platformActiveListBoxSelectionForegroundColorEv
+__ZNK7WebCore13RenderListBox9scrollTopEv
+__ZN7WebCore30setJSHTMLSelectElementMultipleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLSelectElement11setMultipleEb
+__ZN7WebCore26setJSHTMLSelectElementSizeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLSelectElement7setSizeEi
+__ZThn128_NK7WebCore19HTMLOptGroupElement14groupLabelTextEv
+__ZNK7WebCore19HTMLOptGroupElement14groupLabelTextEv
+__ZN7WebCore19HTMLOptGroupElement11appendChildEN3WTF10PassRefPtrINS_4NodeEEERib
+__ZN7WebCore19HTMLOptGroupElement11removeChildEPNS_4NodeERi
+__ZN7WebCore19HTMLOptGroupElement12replaceChildEN3WTF10PassRefPtrINS_4NodeEEEPS3_Rib
+__ZN7WebCore19HTMLOptGroupElement12insertBeforeEN3WTF10PassRefPtrINS_4NodeEEEPS3_Rib
__ZN7WebCore19HTMLOptGroupElement14removeChildrenEv
+__ZN7WebCore13RenderListBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZN7WebCore13RenderListBox24isPointInOverflowControlERNS_13HitTestResultEiiii
+__ZNK7WebCore17HTMLSelectElement16isMouseFocusableEv
+__ZNK7WebCore17HTMLSelectElement17canStartSelectionEv
+__ZNK7WebCore13RenderListBox28canBeProgramaticallyScrolledEb
+__ZN7WebCore31HTMLFormControlElementWithState26willMoveToNewOwnerDocumentEv
+__ZN7WebCore31HTMLFormControlElementWithState25didMoveToNewOwnerDocumentEv
+__ZN7WebCore16HTMLInputElement26willMoveToNewOwnerDocumentEv
+__ZN7WebCore16HTMLInputElement25didMoveToNewOwnerDocumentEv
+__ZN7WebCore30SearchFieldCancelButtonElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore12EventHandler27setCapturingMouseEventsNodeEN3WTF10PassRefPtrINS_4NodeEEE
+__ZThn8_N7WebCore30SearchFieldCancelButtonElementD0Ev
+__ZN7WebCore27RenderTextControlSingleLine21startSearchEventTimerEv
+__ZN7WebCore5TimerINS_27RenderTextControlSingleLineEE5firedEv
+__ZN7WebCore27RenderTextControlSingleLine21searchEventTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore24HitTestingTransformState9translateEiiNS0_21TransformAccumulationE
+__ZN7WebCore17HTMLSelectElement15accessKeyActionEb
+__ZNK7WebCore17HTMLSelectElement21lastSelectedListIndexEv
+__ZN7WebCore19JSHTMLSelectElement3putEPN3JSC9ExecStateEjNS1_7JSValueE
+__ZN7WebCore19JSHTMLSelectElement11indexSetterEPN3JSC9ExecStateEjNS1_7JSValueE
+__ZN7WebCore45jsHTMLSelectElementPrototypeFunctionNamedItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore17HTMLSelectElement9namedItemERKNS_12AtomicStringE
+__ZN7WebCore17HTMLSelectElement14appendFormDataERNS_12FormDataListEb
+__ZN7WebCore12RenderSlider12forwardEventEPNS_5EventE
+__ZN7WebCore18SliderThumbElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore12RenderSlider19mouseEventIsInThumbEPNS_10MouseEventE
+__ZN7WebCore12RenderSlider15currentPositionEv
+__ZN7WebCore12RenderSlider17positionForOffsetERKNS_8IntPointE
+__ZN7WebCore12RenderSlider9trackSizeEv
+__ZN7WebCore12RenderSlider19setValueForPositionEi
+__ZN7WebCore12TextDocumentC1EPNS_5FrameE
+__ZN7WebCore12TextDocumentC2EPNS_5FrameE
+__ZN7WebCore12TextDocument15createTokenizerEv
+__ZN7WebCore13TextTokenizerC1EPNS_8DocumentE
+__ZN7WebCore13TextTokenizerC2EPNS_8DocumentE
+__ZN7WebCore13TextTokenizer5writeERKNS_15SegmentedStringEb
+__ZN7WebCore13TextTokenizer6finishEv
+__ZN7WebCore13TextTokenizerD0Ev
+__ZN7WebCore12TextDocumentD0Ev
+__ZN7WebCore17RenderTextControl22textWithHardLineBreaksEv
+__ZN7WebCoreL16getNextSoftBreakERPNS_13RootInlineBoxERPNS_4NodeERj
+__ZN7WebCore15RenderScrollbar21createCustomScrollbarEPNS_15ScrollbarClientENS_20ScrollbarOrientationEPNS_9RenderBoxE
+__ZN7WebCore15RenderScrollbarC1EPNS_15ScrollbarClientENS_20ScrollbarOrientationEPNS_9RenderBoxE
+__ZN7WebCore15RenderScrollbarC2EPNS_15ScrollbarClientENS_20ScrollbarOrientationEPNS_9RenderBoxE
+__ZN7WebCore20RenderScrollbarTheme20renderScrollbarThemeEv
+__ZN7WebCore20RenderScrollbarTheme17registerScrollbarEPNS_9ScrollbarE
+__ZN7WebCore20RenderScrollbarTheme18scrollbarThicknessENS_20ScrollbarControlSizeE
+__ZN7WebCore15RenderScrollbar9setParentEPNS_10ScrollViewE
+__ZN7WebCore15RenderScrollbar12styleChangedEv
+__ZN7WebCore15RenderScrollbar20updateScrollbarPartsEb
+__ZN7WebCore15RenderScrollbar19updateScrollbarPartENS_13ScrollbarPartEb
+__ZN7WebCore15RenderScrollbar23getScrollbarPseudoStyleENS_13ScrollbarPartENS_8PseudoIdE
+__ZNK7WebCore20RenderScrollbarTheme16buttonsPlacementEv
+__ZNK3WTF7HashMapIjPN7WebCore19RenderScrollbarPartENS_7IntHashIjEENS_10HashTraitsIjEENS6_IS3_EEE3getERKj
+__ZN7WebCore19RenderScrollbarPartC1EPNS_4NodeEPNS_15RenderScrollbarENS_13ScrollbarPartE
+__ZN7WebCore19RenderScrollbarPartC2EPNS_4NodeEPNS_15RenderScrollbarENS_13ScrollbarPartE
+__ZN3WTF7HashMapIjPN7WebCore19RenderScrollbarPartENS_7IntHashIjEENS_10HashTraitsIjEENS6_IS3_EEE3setERKjRKS3_
+__ZN3WTF9HashTableIjSt4pairIjPN7WebCore19RenderScrollbarPartEENS_18PairFirstExtractorIS5_EENS_7IntHashIjEENS_14PairHashTraitsIN
+__ZN7WebCore19RenderScrollbarPart15styleWillChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZN7WebCore19RenderScrollbarPart14styleDidChangeENS_15StyleDifferenceEPKNS_11RenderStyleE
+__ZNK7WebCore19RenderScrollbarPart13requiresLayerEv
+__ZN7WebCore19RenderScrollbarPart6layoutEv
+__ZN7WebCore19RenderScrollbarPart18layoutVerticalPartEv
+__ZN7WebCore19RenderScrollbarPart21computeScrollbarWidthEv
+__ZN7WebCoreL27calcScrollbarThicknessUsingERKNS_6LengthEi
+__ZN7WebCore15RenderScrollbar10setEnabledEb
+__ZN7WebCore20RenderScrollbarTheme9trackRectEPNS_9ScrollbarEb
+__ZN7WebCore20RenderScrollbarTheme10hasButtonsEPNS_9ScrollbarE
+__ZN7WebCore20RenderScrollbarTheme25buttonSizesAlongTrackAxisEPNS_9ScrollbarERiS3_
+__ZN7WebCore20RenderScrollbarTheme14backButtonRectEPNS_9ScrollbarENS_13ScrollbarPartEb
+__ZN7WebCore15RenderScrollbar10buttonRectENS_13ScrollbarPartE
+__ZN7WebCore20RenderScrollbarTheme17forwardButtonRectEPNS_9ScrollbarENS_13ScrollbarPartEb
+__ZN7WebCore15RenderScrollbar9trackRectEii
+__ZN7WebCore20RenderScrollbarTheme31constrainTrackRectToTrackPiecesEPNS_9ScrollbarERKNS_7IntRectE
+__ZN7WebCore15RenderScrollbar25trackPieceRectWithMarginsENS_13ScrollbarPartERKNS_7IntRectE
+__ZN7WebCore20RenderScrollbarTheme18minimumThumbLengthEPNS_9ScrollbarE
+__ZN7WebCore15RenderScrollbar18minimumThumbLengthEv
+__ZN7WebCore19RenderScrollbarPartD0Ev
+__ZN7WebCore15RenderScrollbarD0Ev
+__ZN7WebCore9ScrollbarD2Ev
+__ZN7WebCore20RenderScrollbarTheme19unregisterScrollbarEPNS_9ScrollbarE
+__ZNK7WebCore12RenderObject8isSliderEv
+__ZN7WebCore30jsHTMLInputElementWillValidateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLInputElement12willValidateEv
+__ZN7WebCore33jsHTMLTextAreaElementWillValidateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsHTMLFieldSetElementWillValidateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19HTMLFieldSetElement12willValidateEv
+__ZN7WebCore31jsHTMLButtonElementWillValidateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLButtonElement12willValidateEv
+__ZN7WebCoreL31transferMailtoPostFormDataToURLERN3WTF6RefPtrINS_8FormDataEEERNS_4KURLERKNS_6StringE
+__ZN7WebCore14RenderFrameSet13startResizingERNS0_8GridAxisEi
+__ZNK7WebCore14RenderFrameSet12hitTestSplitERKNS0_8GridAxisEi
+__ZNK7WebCore14RenderFrameSet13splitPositionERKNS0_8GridAxisEi
+__ZN7WebCore14RenderFrameSet13setIsResizingEb
+__ZN7WebCore12EventHandler19setResizingFrameSetEPNS_19HTMLFrameSetElementE
+__ZN7WebCore14RenderFrameSet16continueResizingERNS0_8GridAxisEi
+__ZNK7WebCore14RenderFrameSet12canResizeRowERKNS_8IntPointE
+__ZNK7WebCore14RenderFrameSet15canResizeColumnERKNS_8IntPointE
+__ZN7WebCore18columnResizeCursorEv
+__ZN7WebCore15rowResizeCursorEv
+__ZN7WebCore23jsHTMLFrameElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore20HTMLFrameElementBase5widthEv
+__ZN7WebCore24jsHTMLFrameElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
__ZNK7WebCore20HTMLFrameElementBase6heightEv
-__ZNK7WebCore17RenderTextControl11scrollWidthEv
-__ZNK7WebCore12RenderObject8isSliderEv
-__ZN7WebCore19JSHTMLSelectElement11indexSetterEPN3KJS9ExecStateEjPNS1_7JSValueEi
-__ZNK7WebCore13RenderListBox9scrollTopEv
-__ZNK7WebCore14RenderThemeMac37activeListBoxSelectionBackgroundColorEv
-__ZNK7WebCore11RenderTheme37activeListBoxSelectionForegroundColorEv
-__ZN7WebCore41jsHTMLLegendElementPrototypeFunctionFocusEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore17HTMLLegendElement5focusEb
-__ZN7WebCore17HTMLLegendElement11formElementEv
-__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE11reverseRunsEii
-__ZN7WebCore16CSSStyleSelector17mapBackgroundClipEPNS_15BackgroundLayerEPNS_8CSSValueE
+__ZNK7WebCore11FrameLoader20childFramesMatchItemEPNS_11HistoryItemE
+__ZNK7WebCore11HistoryItem19childItemWithTargetERKNS_6StringE
+__ZN7WebCore26setJSXMLHttpRequestOnabortEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17HTMLOptionElement16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore22HTMLViewSourceDocumentC1EPNS_5FrameERKNS_6StringE
+__ZN7WebCore22HTMLViewSourceDocumentC2EPNS_5FrameERKNS_6StringE
+__ZN7WebCore22HTMLViewSourceDocument15createTokenizerEv
+__ZN7WebCore13HTMLTokenizerC1EPNS_22HTMLViewSourceDocumentE
+__ZN7WebCore13HTMLTokenizerC2EPNS_22HTMLViewSourceDocumentE
+__ZN7WebCore22HTMLViewSourceDocument18addViewSourceTokenEPNS_5TokenE
+__ZN7WebCore22HTMLViewSourceDocument21createContainingTableEv
+__ZN7WebCore22HTMLViewSourceDocument20addSpanWithClassNameERKNS_6StringE
+__ZN7WebCore22HTMLViewSourceDocument7addLineERKNS_6StringE
+__ZN7WebCore22HTMLViewSourceDocument7addTextERKNS_6StringES3_
+__ZN7WebCore22HTMLViewSourceDocumentD0Ev
+__ZN7WebCore22HTMLViewSourceDocument25addViewSourceDoctypeTokenEPNS_12DoctypeTokenE
+__ZN7WebCore16CSSGradientValue13resolveRadiusEPNS_17CSSPrimitiveValueEf
+__ZNK7WebCore27RenderImageGeneratedContent21setImageContainerSizeERKNS_7IntSizeE
+__ZNK7WebCore19StyleGeneratedImage22usesImageContainerSizeEv
+__ZN7WebCore28jsHistoryPrototypeFunctionGoEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7History2goEi
+__ZNK7WebCore17HTMLButtonElement17canStartSelectionEv
+__ZN7WebCore17HTMLKeygenElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore17HTMLKeygenElement11tagPriorityEv
+__ZNK7WebCore17HTMLKeygenElement15formControlTypeEv
+__ZN7WebCore7DataRefINS_16StyleMarqueeDataEE6accessEv
+__ZNK7WebCore11RenderImage21setImageContainerSizeERKNS_7IntSizeE
+__ZNK7WebCore16HTMLEmbedElement24imageSourceAttributeNameEv
__ZN7WebCore16PDFDocumentImageC1Ev
+__ZN7WebCore16PDFDocumentImageC2Ev
__ZN7WebCore16PDFDocumentImage11dataChangedEb
__ZN7WebCore16PDFDocumentImage14setCurrentPageEi
__ZNK7WebCore16PDFDocumentImage9pageCountEv
__ZNK7WebCore16PDFDocumentImage4sizeEv
-__ZNK7WebCore8SVGImage17usesContainerSizeEv
__ZN7WebCore16PDFDocumentImage4drawEPNS_15GraphicsContextERKNS_9FloatRectES5_NS_17CompositeOperatorE
__ZNK7WebCore16PDFDocumentImage9adjustCTMEPNS_15GraphicsContextE
__ZN7WebCore5Image26nativeImageForCurrentFrameEv
-__ZN7WebCore11RenderBlock26addContinuationWithOutlineEPNS_10RenderFlowE
-__ZNK3WTF7HashMapIPN7WebCore11RenderBlockEPNS_7HashSetIPNS1_10RenderFlowENS_7PtrHashIS6_EENS_10HashTraitsIS6_EEEENS7_IS3_EENS9_IS3_EENS9_ISC_EEE3getERKS3_
-__ZNK7WebCore17HTMLKeygenElement11tagPriorityEv
-__ZNK7WebCore17HTMLKeygenElement4typeEv
-__ZN7WebCore8toHebrewEi
-__ZN7WebCore17toHebrewUnder1000EiPt
-__ZN7WebCore11RenderBlock12paintColumnsERNS_12RenderObject9PaintInfoEiib
-__ZN7WebCore11RenderBlock14hitTestColumnsERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
-__ZN7WebCore40jsMediaListPrototypeFunctionAppendMediumEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
-__ZN7WebCore9MediaList12appendMediumERKNS_6StringERi
-__ZN7WebCore40jsMediaListPrototypeFunctionDeleteMediumEPN3KJS9ExecStateEPNS0_8JSObjectERKNS0_4ListE
+__ZNK7WebCore8SVGImage17usesContainerSizeEv
+__ZNK7WebCore13RenderSVGRoot13selfWillPaintEv
+__ZN7WebCore11RenderBlock25rectWithOutlineForRepaintEPNS_20RenderBoxModelObjectEi
+__ZN7WebCore12RenderInline19paintOutlineForLineEPNS_15GraphicsContextEiiRKNS_7IntRectES5_S5_
+__ZN7WebCore13RenderSVGRoot14calcPrefWidthsEv
+__ZNK7WebCore13RenderSVGRoot10lineHeightEbb
+__ZNK7WebCore13RenderSVGRoot16baselinePositionEbb
+__ZN7WebCore56jsCSSStyleDeclarationPrototypeFunctionIsPropertyImplicitEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgL
+__ZN7WebCore19CSSStyleDeclaration18isPropertyImplicitERKNS_6StringE
+__ZN7WebCore17setJSNodeOnresizeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node11setOnresizeEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore40jsDOMWindowPrototypeFunctionOpenDatabaseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9DOMWindow12openDatabaseERKNS_6StringES3_S3_mRi
+__ZN7WebCore8Database12openDatabaseEPNS_8DocumentERKNS_6StringES5_S5_mRi
+__ZN7WebCore15DatabaseTracker20canEstablishDatabaseEPNS_8DocumentERKNS_6StringES5_m
+__ZN7WebCore15DatabaseTracker15populateOriginsEv
+__ZN7WebCore18OriginQuotaManagerC1Ev
+__ZN7WebCore18OriginQuotaManagerC2Ev
+__ZN7WebCore15DatabaseTracker19openTrackerDatabaseEb
+__ZNK7WebCore15DatabaseTracker19trackerDatabasePathEv
+__ZN7WebCore15DatabaseTracker14usageForOriginEPNS_14SecurityOriginE
+__ZN7WebCore15DatabaseTracker18originQuotaManagerEv
+__ZN7WebCore18OriginQuotaManager4lockEv
+__ZNK7WebCore18OriginQuotaManager12tracksOriginEPNS_14SecurityOriginE
+__ZNK3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_PNS2_17OriginUsageRecordEENS_18PairFirstExtractorIS8_EENS
+__ZN7WebCore18OriginQuotaManager11trackOriginEN3WTF10PassRefPtrINS_14SecurityOriginEEE
+__ZN7WebCore17OriginUsageRecordC1Ev
+__ZN7WebCore17OriginUsageRecordC2Ev
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEEPNS2_17OriginUsageRecordENS2_18SecurityOriginHashENS_10HashTraitsIS4_EE
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_PNS2_17OriginUsageRecordEENS_18PairFirstExtractorIS8_EENS2
+__ZN7WebCore15DatabaseTracker22databaseNamesForOriginEPNS_14SecurityOriginERN3WTF6VectorINS_6StringELm0EEE
+__ZNK7WebCore18OriginQuotaManager9diskUsageEPNS_14SecurityOriginE
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEEPNS2_17OriginUsageRecordENS2_18SecurityOriginHashENS_10HashTraitsIS4_E
+__ZN7WebCore17OriginUsageRecord9diskUsageEv
+__ZN7WebCore18OriginQuotaManager6unlockEv
+__ZN7WebCore15DatabaseTracker19hasEntryForDatabaseEPNS_14SecurityOriginERKNS_6StringE
+__ZN7WebCore15DatabaseTracker14quotaForOriginEPNS_14SecurityOriginE
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEEyNS2_18SecurityOriginHashENS_10HashTraitsIS4_EENS6_IyEEE3getEPS3_
+__ZN7WebCore18SecurityOriginHash4hashEPNS_14SecurityOriginE
+__ZN7WebCore15DatabaseTracker8setQuotaEPNS_14SecurityOriginEy
+__ZN7WebCore7CString11mutableDataEv
+__ZN7WebCore7CString18copyBufferIfNeededEv
+__ZNK3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_yENS_18PairFirstExtractorIS6_EENS2_18SecurityOriginHashEN
+__ZNK7WebCore14SecurityOrigin18databaseIdentifierEv
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEEyNS2_18SecurityOriginHashENS_10HashTraitsIS4_EENS6_IyEEE3setEPS3_RKy
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_yENS_18PairFirstExtractorIS6_EENS2_18SecurityOriginHashENS
+__ZN7WebCore8DatabaseC1EPNS_8DocumentERKNS_6StringES5_
+__ZN7WebCore8DatabaseC2EPNS_8DocumentERKNS_6StringES5_
+__ZN7WebCoreL20guidForOriginAndNameERKNS_6StringES2_
+__ZNK3WTF7HashMapIN7WebCore6StringEiNS1_10StringHashENS_10HashTraitsIS2_EENS4_IiEEE3getERKS2_
+__ZN3WTF7HashMapIN7WebCore6StringEiNS1_10StringHashENS_10HashTraitsIS2_EENS4_IiEEE3setERKS2_RKi
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_iENS_18PairFirstExtractorIS4_EENS1_10StringHashENS_14PairHashTraitsINS_10HashTra
+__ZN7WebCoreL9guidMutexEv
+__ZN7WebCoreL17guidToDatabaseMapEv
+__ZNK3WTF7HashMapIiPNS_7HashSetIPN7WebCore8DatabaseENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEEENS_7IntHashIjEENS7_IiEENS7_ISA_EEE3
+__ZN3WTF7HashMapIiPNS_7HashSetIPN7WebCore8DatabaseENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEEENS_7IntHashIjEENS7_IiEENS7_ISA_EEE3s
+__ZN3WTF9HashTableIiSt4pairIiPNS_7HashSetIPN7WebCore8DatabaseENS_7PtrHashIS5_EENS_10HashTraitsIS5_EEEEENS_18PairFirstExtractorI
+__ZN3WTF7HashSetIPN7WebCore8DatabaseENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore8DatabaseES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore8DatabaseES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore8DatabaseES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTable
+__ZN3WTF9HashTableIPN7WebCore8DatabaseES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallocateTab
+__ZN7WebCore15DatabaseTracker19fullPathForDatabaseEPNS_14SecurityOriginERKNS_6StringEb
+__ZNK7WebCore15DatabaseTracker10originPathEPNS_14SecurityOriginE
+__ZN7WebCore15DatabaseTracker11addDatabaseEPNS_14SecurityOriginERKNS_6StringES5_
+__ZN7WebCore18OriginQuotaManager11addDatabaseEPNS_14SecurityOriginERKNS_6StringES5_
+__ZN7WebCore17OriginUsageRecord11addDatabaseERKNS_6StringES3_
+__ZN3WTF7HashMapIN7WebCore6StringENS1_17OriginUsageRecord13DatabaseEntryENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3setE
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS1_17OriginUsageRecord13DatabaseEntryEENS_18PairFirstExtractorIS6_EENS1_10Strin
+__ZN7WebCore15DatabaseTracker15addOpenDatabaseEPNS_8DatabaseE
+__ZNK7WebCore8Database18securityOriginCopyEv
+__ZN7WebCore14SecurityOrigin4copyEv
+__ZN7WebCore14SecurityOriginC1EPKS0_
+__ZN7WebCore14SecurityOriginC2EPKS0_
+__ZNK7WebCore8Database16stringIdentifierEv
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEEPNS0_INS2_6StringEPNS_7HashSetIPNS2_8DatabaseENS_7PtrHashIS8_EENS_10Ha
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore14SecurityOriginEEEPNS0_INS2_6StringEPNS_7HashSetIPNS2_8DatabaseENS_7PtrHashIS8_EENS_10Has
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore14SecurityOriginEEESt4pairIS4_PNS_7HashMapINS2_6StringEPNS_7HashSetIPNS2_8DatabaseENS_7P
+__ZNK3WTF7HashMapIN7WebCore6StringEPNS_7HashSetIPNS1_8DatabaseENS_7PtrHashIS5_EENS_10HashTraitsIS5_EEEENS1_10StringHashENS8_IS2
+__ZN3WTF7HashMapIN7WebCore6StringEPNS_7HashSetIPNS1_8DatabaseENS_7PtrHashIS5_EENS_10HashTraitsIS5_EEEENS1_10StringHashENS8_IS2_
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS_7HashSetIPNS1_8DatabaseENS_7PtrHashIS6_EENS_10HashTraitsIS6_EEEEENS_18PairFi
+__ZN7WebCore8Document15addOpenDatabaseEPNS_8DatabaseE
+__ZN7WebCore8Database20openAndVerifyVersionERi
+__ZN7WebCore8Document14databaseThreadEv
+__ZN7WebCore14DatabaseThreadC1Ev
+__ZN7WebCore14DatabaseThreadC2Ev
+__ZN7WebCore14DatabaseThread5startEv
+__ZN7WebCore18DatabaseAuthorizerC1Ev
+__ZN7WebCore18DatabaseAuthorizerC2Ev
+__ZN7WebCore18DatabaseAuthorizer5resetEv
+__ZN7WebCore16DatabaseOpenTaskC1EPNS_8DatabaseE
+__ZN7WebCore16DatabaseOpenTaskC2EPNS_8DatabaseE
+__ZN7WebCore12DatabaseTaskC2EPNS_8DatabaseE
+__ZN7WebCore12DatabaseTask28lockForSynchronousSchedulingEv
+__ZN7WebCore14DatabaseThread21scheduleImmediateTaskEN3WTF10PassRefPtrINS_12DatabaseTaskEEE
+__ZN3WTF5DequeINS_6RefPtrIN7WebCore12DatabaseTaskEEEE14expandCapacityEv
+__ZN7WebCore12DatabaseTask28waitForSynchronousCompletionEv
+__ZN7WebCore14DatabaseThread19databaseThreadStartEPv
+__ZN7WebCore14DatabaseThread14databaseThreadEv
+__ZN3WTF12MessageQueueINS_6RefPtrIN7WebCore12DatabaseTaskEEEE19alwaysTruePredicateERS4_
+__ZN7WebCore12DatabaseTask11performTaskEv
+__ZN7WebCore8Database15resetAuthorizerEv
+__ZN7WebCore16DatabaseOpenTask13doPerformTaskEv
+__ZN7WebCore8Database20performOpenAndVerifyERi
+__ZN7WebCore14SQLiteDatabase13setAuthorizerEN3WTF10PassRefPtrINS_18DatabaseAuthorizerEEE
+__ZN7WebCore14SQLiteDatabase16enableAuthorizerEb
+__ZN7WebCore8Database21databaseInfoTableNameEv
+__ZN7WebCore14SQLiteDatabase18authorizerFunctionEPviPKcS3_S3_S3_
+__ZN7WebCore18DatabaseAuthorizer9allowReadERKNS_6StringES3_
+__ZN7WebCore18DatabaseAuthorizer20denyBasedOnTableNameERKNS_6StringE
+__ZN7WebCore18DatabaseAuthorizer11allowInsertERKNS_6StringE
+__ZN7WebCore18DatabaseAuthorizer11createTableERKNS_6StringE
+__ZN7WebCore18DatabaseAuthorizer11createIndexERKNS_6StringES3_
+__ZN7WebCore18DatabaseAuthorizer11allowUpdateERKNS_6StringES3_
+__ZN7WebCoreL16guidToVersionMapEv
+__ZN7WebCore8Database22getVersionFromDatabaseERNS_6StringE
+__ZN7WebCoreL18databaseVersionKeyEv
+__ZN7WebCore18DatabaseAuthorizer7disableEv
+__ZN7WebCore18DatabaseAuthorizer6enableEv
+__ZN7WebCore8Database20setVersionInDatabaseERKNS_6StringE
+__ZN3WTF7HashMapIiN7WebCore6StringENS_7IntHashIjEENS_10HashTraitsIiEENS5_IS2_EEE3setERKiRKS2_
+__ZN3WTF9HashTableIiSt4pairIiN7WebCore6StringEENS_18PairFirstExtractorIS4_EENS_7IntHashIjEENS_14PairHashTraitsINS_10HashTraitsI
+__ZN7WebCore8Database19performPolicyChecksEv
+__ZN7WebCore16DatabaseOpenTaskD0Ev
+__ZN7WebCore12DatabaseTaskD2Ev
+__ZN7WebCore15DatabaseTracker18setDatabaseDetailsEPNS_14SecurityOriginERKNS_6StringES5_m
+__ZN7WebCore19InspectorController15didOpenDatabaseEPNS_8DatabaseERKNS_6StringES5_S5_
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_8DatabaseE
+__ZN7WebCore10JSDatabase15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSDatabaseC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8DatabaseEEE
+__ZN7WebCore10JSDatabaseC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8DatabaseEEE
+__ZN7WebCore10JSDatabase18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19JSDatabasePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore38jsDatabasePrototypeFunctionTransactionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore10JSDatabase9classInfoEv
+__ZN7WebCore10JSDatabase11transactionEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore30JSCustomSQLTransactionCallbackC1EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore30JSCustomSQLTransactionCallbackC2EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore8Database11transactionEN3WTF10PassRefPtrINS_22SQLTransactionCallbackEEENS2_INS_27SQLTransactionErrorCallbackEEENS2_
+__ZN7WebCore14SQLTransaction6createEPNS_8DatabaseEN3WTF10PassRefPtrINS_22SQLTransactionCallbackEEENS4_INS_27SQLTransactionError
+__ZN7WebCore14SQLTransactionC1EPNS_8DatabaseEN3WTF10PassRefPtrINS_22SQLTransactionCallbackEEENS4_INS_27SQLTransactionErrorCallb
+__ZN7WebCore14SQLTransactionC2EPNS_8DatabaseEN3WTF10PassRefPtrINS_22SQLTransactionCallbackEEENS4_INS_27SQLTransactionErrorCallb
+__ZN3WTF5DequeINS_6RefPtrIN7WebCore14SQLTransactionEEEE14expandCapacityEv
+__ZN7WebCore8Database19scheduleTransactionEv
+__ZN7WebCore23DatabaseTransactionTaskC1EN3WTF10PassRefPtrINS_14SQLTransactionEEE
+__ZN7WebCore23DatabaseTransactionTaskC2EN3WTF10PassRefPtrINS_14SQLTransactionEEE
+__ZN7WebCore14DatabaseThread12scheduleTaskEN3WTF10PassRefPtrINS_12DatabaseTaskEEE
+__ZN7WebCore23DatabaseTransactionTask13doPerformTaskEv
+__ZN7WebCore14SQLTransaction15performNextStepEv
+__ZN7WebCore14SQLTransaction28checkAndHandleClosedDatabaseEv
+__ZN7WebCore14SQLTransaction27openTransactionAndPreflightEv
+__ZNK7WebCore8Database11maximumSizeEv
+__ZNK3WTF7HashMapIN7WebCore6StringENS1_17OriginUsageRecord13DatabaseEntryENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3get
+__ZN7WebCore11getFileSizeERKNS_6StringERx
+__ZNK7WebCore8Database12databaseSizeEv
+__ZN7WebCore14SQLiteDatabase14setMaximumSizeEx
+__ZN7WebCore14SQLiteDatabase8pageSizeEv
+__ZN7WebCore6String6numberEx
+__ZN7WebCore18DatabaseAuthorizer16allowTransactionEv
+__ZN7WebCore8Database27scheduleTransactionCallbackEPNS_14SQLTransactionE
+__ZN7WebCore23DatabaseTransactionTaskD0Ev
+__ZN7WebCore8Database22deliverPendingCallbackEPv
+__ZN7WebCore14SQLTransaction22performPendingCallbackEv
+__ZN7WebCore14SQLTransaction26deliverTransactionCallbackEv
+__ZN7WebCore30JSCustomSQLTransactionCallback11handleEventEPNS_14SQLTransactionERb
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14SQLTransactionE
+__ZN7WebCore16JSSQLTransaction15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSQLTransactionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SQLTransactionEEE
+__ZN7WebCore16JSSQLTransactionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SQLTransactionEEE
+__ZN7WebCore14SQLTransaction31deliverTransactionErrorCallbackEv
+__ZN7WebCore8Database23scheduleTransactionStepEPNS_14SQLTransactionE
+__ZN7WebCore14SQLTransaction36cleanupAfterTransactionErrorCallbackEv
+__ZN7WebCore17SQLiteTransaction8rollbackEv
+__ZN7WebCore30JSCustomSQLTransactionCallbackD0Ev
+__ZN7WebCore30JSCustomSQLTransactionCallback10deleteDataEPv
+__ZN7WebCore25JSSQLTransactionPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore43jsSQLTransactionPrototypeFunctionExecuteSqlEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16JSSQLTransaction9classInfoEv
+__ZN7WebCore16JSSQLTransaction10executeSqlEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore28JSCustomSQLStatementCallbackC1EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore28JSCustomSQLStatementCallbackC2EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore33JSCustomSQLStatementErrorCallbackC1EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore33JSCustomSQLStatementErrorCallbackC2EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore14SQLTransaction10executeSQLERKNS_6StringERKN3WTF6VectorINS_8SQLValueELm0EEENS4_10PassRefPtrINS_20SQLStatementCallb
+__ZN7WebCore12SQLStatement6createERKNS_6StringERKN3WTF6VectorINS_8SQLValueELm0EEENS4_10PassRefPtrINS_20SQLStatementCallbackEEEN
+__ZN7WebCore12SQLStatementC1ERKNS_6StringERKN3WTF6VectorINS_8SQLValueELm0EEENS4_10PassRefPtrINS_20SQLStatementCallbackEEENSA_IN
+__ZN7WebCore12SQLStatementC2ERKNS_6StringERKN3WTF6VectorINS_8SQLValueELm0EEENS4_10PassRefPtrINS_20SQLStatementCallbackEEENSA_IN
+__ZN3WTF6VectorIN7WebCore8SQLValueELm0EEC1ERKS3_
+__ZN3WTF6VectorIN7WebCore8SQLValueELm0EEC2ERKS3_
+__ZNK7WebCore8Database22versionMatchesExpectedEv
+__ZNK3WTF7HashMapIiN7WebCore6StringENS_7IntHashIjEENS_10HashTraitsIiEENS5_IS2_EEE3getERKi
+__ZN7WebCore14SQLTransaction16enqueueStatementEN3WTF10PassRefPtrINS_12SQLStatementEEE
+__ZN3WTF5DequeINS_6RefPtrIN7WebCore12SQLStatementEEEE14expandCapacityEv
+__ZN3WTF16ThreadSafeSharedIN7WebCore12SQLStatementEE5derefEv
+__ZN7WebCore14SQLTransaction23scheduleToRunStatementsEv
+__ZN7WebCore14SQLTransaction13runStatementsEv
+__ZN7WebCore14SQLTransaction16getNextStatementEv
+__ZN7WebCore14SQLTransaction19runCurrentStatementEv
+__ZN7WebCore12SQLStatement7executeEPNS_8DatabaseE
+__ZN7WebCore12SQLStatement22clearFailureDueToQuotaEv
+__ZNK7WebCore12SQLStatement29lastExecutionFailedDueToQuotaEv
+__ZN7WebCore14SQLiteDatabase12lastErrorMsgEv
+__ZN7WebCore14SQLTransaction27handleCurrentStatementErrorEv
+__ZN7WebCore14SQLTransaction24deliverStatementCallbackEv
+__ZN7WebCore12SQLStatement15performCallbackEPNS_14SQLTransactionE
+__ZN7WebCore33JSCustomSQLStatementErrorCallback11handleEventEPNS_14SQLTransactionEPNS_8SQLErrorE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_8SQLErrorE
+__ZN7WebCore10JSSQLError15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSSQLErrorC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8SQLErrorEEE
+__ZN7WebCore10JSSQLErrorC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8SQLErrorEEE
+__ZN7WebCore28JSCustomSQLStatementCallbackD0Ev
+__ZN7WebCore33JSCustomSQLStatementErrorCallbackD0Ev
+__ZN7WebCore14SQLTransaction22handleTransactionErrorEb
+__ZN7WebCore10JSSQLErrorD1Ev
+__ZN7WebCore10JSSQLErrorD2Ev
+__ZN7WebCore16JSSQLTransactionD1Ev
+__ZN7WebCore16JSSQLTransactionD2Ev
+__ZN7WebCore14SQLTransactionD1Ev
+__ZN7WebCore14SQLTransactionD2Ev
+__ZN7WebCore8Database4stopEv
+__ZN7WebCore14DatabaseThread23unscheduleDatabaseTasksEPNS_8DatabaseE
+__ZN7WebCore14DatabaseThread18requestTerminationEv
+__ZN7WebCore19JSSQLErrorPrototypeD1Ev
+__ZN7WebCore25JSSQLTransactionPrototypeD1Ev
+__ZN7WebCore10JSDatabaseD1Ev
+__ZN7WebCore10JSDatabaseD2Ev
+__ZN7WebCore8DatabaseD1Ev
+__ZN7WebCore8DatabaseD2Ev
+__ZN3WTF9HashTableIPN7WebCore8DatabaseES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_22I
+__ZN3WTF9HashTableIPN7WebCore8DatabaseES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndInva
+__ZN3WTF9HashTableIPN7WebCore8DatabaseES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN7WebCore15DatabaseTracker18removeOpenDatabaseEPNS_8DatabaseE
+__ZN7WebCore8Document18removeOpenDatabaseEPNS_8DatabaseE
+__ZN7WebCore14SQLiteDatabaseD1Ev
+__ZN7WebCore14SQLiteDatabaseD2Ev
+__ZN7WebCore19JSDatabasePrototypeD1Ev
+__ZN7WebCore14DatabaseThreadD1Ev
+__ZN7WebCore14DatabaseThreadD2Ev
+__ZN7WebCore15JSMimeTypeArray18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore15JSMimeTypeArray11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore13MimeTypeArray4itemEj
+__ZN7WebCore14jsMimeTypeTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8MimeType4typeEv
+__ZNK7WebCore16JSDOMWindowShell21getPropertyAttributesEPN3JSC9ExecStateERKNS1_10IdentifierERj
+__ZNK7WebCore11JSDOMWindow21getPropertyAttributesEPN3JSC9ExecStateERKNS1_10IdentifierERj
+__ZNK7WebCore9RenderBox20firstLineBoxBaselineEv
+__ZN7WebCore10ClientRectC1Ev
+__ZN7WebCore10ClientRectC2Ev
+__ZN7WebCoreL14isSVG11FeatureERKNS_6StringE
+__ZN7WebCoreL9addStringERN3WTF7HashSetINS_6StringENS_15CaseFoldingHashENS0_10HashTraitsIS2_EEEEPKc
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_15CaseFoldingHashENS_10HashTraitsIS2_EES7_E4findIS2_NS_2
+__ZN7WebCore40setJSCanvasRenderingContext2DGlobalAlphaEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D14setGlobalAlphaEf
+__ZN7WebCore12RenderInline20childBecameNonInlineEPNS_12RenderObjectE
+__ZN7WebCore12EventHandler20resizeLayerDestroyedEv
+__ZN7WebCore14RenderThemeMac20paintMediaMuteButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore14RenderThemeMac20paintMediaPlayButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore14RenderThemeMac21paintMediaSliderTrackEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore14RenderThemeMac21paintMediaSliderThumbEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore14RenderThemeMac24paintMediaSeekBackButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZN7WebCore14RenderThemeMac27paintMediaSeekForwardButtonEPNS_12RenderObjectERKNS1_9PaintInfoERKNS_7IntRectE
+__ZNK7WebCore11RenderVideo10renderNameEv
+__ZN7WebCoreL19metadataConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore18SVGMetadataElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore18SVGMetadataElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZThn240_NK7WebCore18SVGGradientElement14contextElementEv
+__ZNK7WebCore18SVGGradientElement14contextElementEv
+__ZNK3WTF9HashTableIPKN7WebCore18SVGGradientElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E8c
+__ZN7WebCore18SVGMetadataElementD0Ev
+__ZN7WebCoreL8toHebrewEi
+__ZN7WebCoreL17toHebrewUnder1000EiPt
+__ZN7WebCore14ResourceHandle15scheduleFailureENS0_11FailureTypeE
+__ZN7WebCore11FrameLoader27checkLoadCompleteTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore9CSSParser24createFloatingMediaQueryEPN3WTF6VectorIPNS_13MediaQueryExpELm0EEE
+__ZN7WebCoreL21colorMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore23screenDepthPerComponentEPNS_6WidgetE
+__ZN7WebCoreL20parseMediaDescriptorERKNS_6StringE
+__ZN7WebCoreL30min_monochromeMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL26monochromeMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore18screenIsMonochromeEPNS_6WidgetE
+__ZN7WebCoreL11numberValueEPNS_8CSSValueERf
+__ZN7WebCoreL25animationMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL28aspect_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL32min_aspect_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL32max_aspect_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL20gridMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL26max_heightMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL22heightMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore40jsMediaListPrototypeFunctionDeleteMediumEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
__ZN7WebCore9MediaList12deleteMediumERKNS_6StringERi
+__ZN7WebCore40jsMediaListPrototypeFunctionAppendMediumEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9MediaList12appendMediumERKNS_6StringERi
__ZNK7WebCore10MediaQueryeqERKS0_
-__ZN7WebCore38max_device_pixel_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZN7WebCore20gridMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_4PageENS_18MediaFeaturePrefixE
-__ZNK7WebCore27TranslateTransformOperationeqERKNS_18TransformOperationE
-__ZNK7WebCore23WebKitCSSTransformValue7cssTextEv
-__ZNK7WebCore12RenderApplet13intrinsicSizeEv
-__ZN7WebCore12RenderInline6layoutEv
-__ZN7WebCore17HTMLOptionElement16rendererIsNeededEPNS_11RenderStyleE
-__ZN7WebCore17CSSPrimitiveValueD2Ev
-__ZN7WebCore22addDirectionalOverrideERKNS_7TextRunEb
+__ZN7WebCoreL38max_device_pixel_ratioMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL27orientationMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore32setJSHTMLTextAreaElementReadOnlyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCoreL26min_heightMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL28transform_2dMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL28transform_3dMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL26transitionMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore27MediaControlTimelineElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore16PDFDocumentImage18destroyDecodedDataEb
+__ZN7WebCore16PDFDocumentImageD0Ev
+__ZNK7WebCore17StyleMultiColDataeqERKS0_
+__ZN7WebCoreL26ignorableWhitespaceHandlerEPvPKhi
+__ZL18initxsltNextImportP15_xsltStylesheet
+__ZN3WTF6VectorIN3JSC16ProtectedJSValueELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN3JSC16ProtectedJSValueELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIN3JSC16ProtectedJSValueELm0EE6shrinkEm
+__ZN7WebCore13HTMLTokenizer9parseTextERNS_15SegmentedStringENS0_5StateE
+__ZN7WebCore19InspectorController14enableProfilerEb
+__ZN7WebCore21JavaScriptDebugServer27recompileAllJSFunctionsSoonEv
+__ZN7WebCore33jsConsolePrototypeFunctionProfileEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Console7profileERKN3JSC7UStringEPNS_15ScriptCallStackE
+__ZN7WebCore36jsConsolePrototypeFunctionProfileEndEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Console10profileEndERKN3JSC7UStringEPNS_15ScriptCallStackE
+__ZN3WTF6VectorINS_6RefPtrIN3JSC7ProfileEEELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorINS_6RefPtrIN3JSC7ProfileEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN3JSC7ProfileEEELm0EE15reserveCapacityEm
+__ZN7WebCore19InspectorController10addProfileEN3WTF10PassRefPtrIN3JSC7ProfileEEEjRKNS3_7UStringE
+__ZN7WebCore19InspectorController26addProfileMessageToConsoleEN3WTF10PassRefPtrIN3JSC7ProfileEEEjRKNS3_7UStringE
+__ZN7WebCore14ConsoleMessageC1ENS_13MessageSourceENS_12MessageLevelERKNS_6StringEjS5_j
+__ZN7WebCore14ConsoleMessageC2ENS_13MessageSourceENS_12MessageLevelERKNS_6StringEjS5_j
+__ZN7WebCore19InspectorController17addConsoleMessageEPN3JSC9ExecStateEPNS_14ConsoleMessageE
+__ZN3WTF6VectorIPN7WebCore14ConsoleMessageELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore14ConsoleMessageELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore14ConsoleMessageELm0EE15reserveCapacityEm
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS0_7ProfileE
+__ZN7WebCoreL12profileCacheEv
+__ZNK3WTF7HashMapIPN3JSC7ProfileEPNS1_8JSObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
+__ZN7WebCoreL12ProfileClassEv
+__ZN3WTF7HashMapIPN3JSC7ProfileEPNS1_8JSObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setERKS3_RKS5_
+__ZN3WTF9HashTableIPN3JSC7ProfileESt4pairIS3_PNS1_8JSObjectEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_EENS_14PairHashTraitsI
+__ZN7WebCoreL16getTitleCallbackEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCoreL15getHeadCallbackEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS0_11ProfileNodeE
+__ZN7WebCoreL16profileNodeCacheEv
+__ZNK3WTF7HashMapIPN3JSC11ProfileNodeEPNS1_8JSObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3getERKS3_
+__ZN7WebCore16ProfileNodeClassEv
+__ZN3WTF7HashMapIPN3JSC11ProfileNodeEPNS1_8JSObjectENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3setERKS3_RKS5_
+__ZN3WTF9HashTableIPN3JSC11ProfileNodeESt4pairIS3_PNS1_8JSObjectEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_EENS_14PairHashTr
+__ZN7WebCoreL15getFunctionNameEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCoreL10getVisibleEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCoreL6getURLEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCoreL13getLineNumberEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCoreL11getChildrenEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZNK3WTF7HashMapIxNS_6RefPtrIN7WebCore17InspectorResourceEEENS_7IntHashIyEENS_10HashTraitsIxEENS7_IS4_EEE3getERKx
+__ZN7WebCore5TimerINS_21JavaScriptDebugServerEE5firedEv
+__ZN7WebCore21JavaScriptDebugServer23recompileAllJSFunctionsEPNS_5TimerIS0_EE
+__ZNK3JSC21CollectorHeapIteratorILNS_8HeapTypeE0EEdeEv
+__ZN3JSC21CollectorHeapIteratorILNS_8HeapTypeE0EEppEv
+__ZN3WTF6VectorIN3JSC12ProtectedPtrINS1_10JSFunctionEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN3JSC12ProtectedPtrINS1_10JSFunctionEEELm0EE15reserveCapacityEm
+__ZN3WTF7HashMapINS_6RefPtrIN3JSC16FunctionBodyNodeEEES4_NS_7PtrHashIS4_EENS_10HashTraitsIS4_EES8_E3addEPS3_RKS4_
+__ZN3WTF9HashTableINS_6RefPtrIN3JSC16FunctionBodyNodeEEESt4pairIS4_S4_ENS_18PairFirstExtractorIS6_EENS_7PtrHashIS4_EENS_14PairH
+__ZN3JSC6Parser5parseINS_16FunctionBodyNodeEEEN3WTF10PassRefPtrIT_EEPNS_9ExecStateEPNS_8DebuggerERKNS_10SourceCodeEPiPNS_7UStri
+__ZN3WTF6VectorIN3JSC12ProtectedPtrINS1_10JSFunctionEEELm0EE6shrinkEm
+__ZN7WebCoreL8finalizeEP13OpaqueJSValue
+__ZNK7WebCore14ConsoleMessage7isEqualEPN3JSC9ExecStateEPS0_
+__ZN3WTF6VectorINS_6RefPtrIN3JSC7ProfileEEELm0EE6shrinkEm
+__ZN7WebCoreL12callNodeListEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore17InspectorResourceC1ExPNS_14DocumentLoaderE
+__ZN7WebCore17InspectorResourceC2ExPNS_14DocumentLoaderE
+__ZN7WebCore17InspectorResource13updateRequestERKNS_15ResourceRequestE
+__ZN7WebCore19InspectorController11addResourceEPNS_17InspectorResourceE
+__ZN3WTF7HashMapIxNS_6RefPtrIN7WebCore17InspectorResourceEEENS_7IntHashIyEENS_10HashTraitsIxEENS7_IS4_EEE3setERKxRKS4_
+__ZNK3WTF7HashMapINS_6RefPtrIN7WebCore5FrameEEEPNS0_IxNS1_INS2_17InspectorResourceEEENS_7IntHashIyEENS_10HashTraitsIxEENS9_IS6_
+__ZN3WTF7HashMapINS_6RefPtrIN7WebCore5FrameEEEPNS0_IxNS1_INS2_17InspectorResourceEEENS_7IntHashIyEENS_10HashTraitsIxEENS9_IS6_E
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore5FrameEEESt4pairIS4_PNS_7HashMapIxNS1_INS2_17InspectorResourceEEENS_7IntHashIyEENS_10Has
+__ZN7WebCore17InspectorResource11startTimingEv
+__ZN7WebCore17InspectorResource14updateResponseERKNS_16ResourceResponseE
+__ZN7WebCore17InspectorResource24markResponseReceivedTimeEv
+__ZN7WebCore19InspectorController14pruneResourcesEPN3WTF7HashMapIxNS1_6RefPtrINS_17InspectorResourceEEENS1_7IntHashIyEENS1_10Ha
+__ZN3WTF9HashTableIxSt4pairIxNS_6RefPtrIN7WebCore17InspectorResourceEEEENS_18PairFirstExtractorIS6_EENS_7IntHashIyEENS_14PairHa
+__ZN7WebCore17InspectorResource9addLengthEi
+__ZN7WebCore19InspectorController14removeResourceEPNS_17InspectorResourceE
+__ZN7WebCore17InspectorResource9endTimingEv
+__ZN7WebCore19InspectorController27startUserInitiatedProfilingEPNS_5TimerIS0_EE
+__ZN7WebCore19InspectorController18toggleRecordButtonEb
+__ZN7WebCore22CSSQuirkPrimitiveValueD0Ev
+__ZN7WebCore16jsStyleSheetHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore18RenderTableSection16leftmostPositionEbb
+__ZNK7WebCore4Font31offsetForPositionForComplexTextERKNS_7TextRunEib
+__ZN7WebCore18CoreTextController17offsetForPositionEib
+__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE11reverseRunsEjj
__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE5embedEN3WTF7Unicode9DirectionE
-__ZNK7WebCore24MatrixTransformOperationeqERKNS_18TransformOperationE
-__ZNK7WebCore24MatrixTransformOperation17isMatrixOperationEv
-__ZN7WebCore24MatrixTransformOperationD1Ev
-__ZN7WebCore24MatrixTransformOperation5applyERNS_15AffineTransformERKNS_7IntSizeE
-__ZNK7WebCore15AffineTransform8mapPointERKNS_8IntPointE
-__ZN7WebCore10ShadowDataD2Ev
-__ZN7WebCore19HTMLTextAreaElement7setColsEi
-__ZN7WebCore13RenderListBox24isPointInOverflowControlERNS_13HitTestResultEiiii
-__ZN7WebCore4Path10addEllipseERKNS_9FloatRectE
-__ZSt21__unguarded_partitionIPPN7WebCore13InlineTextBoxES2_PFbPKS1_S5_EET_S8_S8_T0_T1_
-__ZN7WebCore24CanvasRenderingContext2D14setGlobalAlphaEf
-__ZN7WebCore15GraphicsContext8setAlphaEf
-__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_17HTMLCanvasElementEff
-__ZN7WebCore16PDFDocumentImageD1Ev
-__ZNK7WebCore16DeprecatedString5rightEj
+__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE23commitExplicitEmbeddingEv
+__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE27raiseExplicitEmbeddingLevelEN3WTF7Unicode9DirectionES6
+__ZN7WebCore12BidiResolverINS_15TextRunIteratorENS_16BidiCharacterRunEE27lowerExplicitEmbeddingLevelEN3WTF7Unicode9DirectionE
+__ZN7WebCore36jsRangePrototypeFunctionSetEndBeforeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore5Range12setEndBeforeEPNS_4NodeERi
+__ZN3WTF6VectorI6CGSizeLm256EE14expandCapacityEmPKS1_
+__ZN3WTF6VectorI6CGSizeLm256EE14expandCapacityEm
+__ZN3WTF6VectorI6CGSizeLm256EE15reserveCapacityEm
+__ZN3WTF6VectorItLm256EE14expandCapacityEmPKt
+__ZN3WTF6VectorItLm256EE14expandCapacityEm
+__ZN3WTF6VectorItLm256EE15reserveCapacityEm
+__ZN7WebCore32setJSHTMLTableCellElementRowSpanEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20HTMLTableCellElement10setRowSpanEi
+__ZN7WebCore8JSWorker3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore20setJSWorkerOnmessageEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17jsWorkerOnmessageEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSWorkerContext18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore15JSWorkerContext24customGetOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL23getJSWorkerContextTableEPN3JSC9ExecStateE
+__ZN7WebCore24JSWorkerContextPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL32getJSWorkerContextPrototypeTableEPN3JSC9ExecStateE
+__ZNK7WebCore15JSWorkerContext9classInfoEv
+__ZN7WebCore15JSWorkerContext4markEv
+__ZNK7WebCore19JSWorkerContextBase22scriptExecutionContextEv
+__ZN7WebCore43jsWorkerContextPrototypeFunctionPostMessageEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13WorkerContext11postMessageERKNS_6StringE
+__ZThn8_N7WebCore20WorkerMessagingProxy25postMessageToWorkerObjectERKNS_6StringE
+__ZN7WebCore20WorkerMessagingProxy25postMessageToWorkerObjectERKNS_6StringE
+__ZN7WebCore17MessageWorkerTask11performTaskEPNS_22ScriptExecutionContextE
+__ZN7WebCore6Worker15dispatchMessageERKNS_6StringE
+__ZThn32_N7WebCore6Worker14refEventTargetEv
+__ZN7WebCore6Worker14refEventTargetEv
+__ZN7WebCore11EventTarget16toXMLHttpRequestEv
+__ZN7WebCore11EventTarget22toXMLHttpRequestUploadEv
+__ZN7WebCore11EventTarget21toDOMApplicationCacheEv
+__ZN7WebCore11EventTarget13toMessagePortEv
+__ZThn32_N7WebCore6Worker8toWorkerEv
+__ZN7WebCore6Worker8toWorkerEv
+__ZN7WebCore17MessageWorkerTaskD0Ev
+__ZNK3JSC14JSGlobalObject21shouldInterruptScriptEv
+__ZN7WebCore19WebCoreJSClientDataD0Ev
+__ZThn32_N7WebCore6Worker16derefEventTargetEv
+__ZN7WebCore6Worker16derefEventTargetEv
+__ZN7WebCore18setJSWorkerOnerrorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore6Worker18dispatchErrorEventEv
+__ZN7WebCore36jsWorkerPrototypeFunctionPostMessageEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore6Worker11postMessageERKNS_6StringE
+__ZN7WebCore20WorkerMessagingProxy26postMessageToWorkerContextERKNS_6StringE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore22ScriptExecutionContext4TaskEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore22ScriptExecutionContext4TaskEEELm0EE15reserveCapacityEm
+__ZN7WebCore13WorkerRunLoop8postTaskEN3WTF10PassRefPtrINS_22ScriptExecutionContext4TaskEEE
+__ZN7WebCore13WorkerRunLoop15postTaskForModeEN3WTF10PassRefPtrINS_22ScriptExecutionContext4TaskEEERKNS_6StringE
+__ZN3WTF5DequeINS_6RefPtrIN7WebCore13WorkerRunLoop4TaskEEEE14expandCapacityEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore22ScriptExecutionContext4TaskEEELm0EE6shrinkEm
+__ZN7WebCore15JSWorkerContext3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore27setJSWorkerContextOnmessageEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24MessageWorkerContextTask11performTaskEPNS_22ScriptExecutionContextE
+__ZN7WebCore13WorkerContext15dispatchMessageERKNS_6StringE
+__ZThn96_N7WebCore13WorkerContext14refEventTargetEv
+__ZN7WebCore13WorkerContext14refEventTargetEv
+__ZNK7WebCore22ScriptExecutionContext10isDocumentEv
+__ZN7WebCore11EventTarget8toWorkerEv
+__ZThn96_N7WebCore13WorkerContext15toWorkerContextEv
+__ZN7WebCore13WorkerContext15toWorkerContextEv
+__ZNK7WebCore13WorkerContext15isWorkerContextEv
+__ZN7WebCore24jsWorkerContextNavigatorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13WorkerContext9navigatorEv
+__ZN7WebCore15WorkerNavigatorC1ERKNS_6StringE
+__ZN7WebCore15WorkerNavigatorC2ERKNS_6StringE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_15WorkerNavigatorE
+__ZN7WebCore17JSWorkerNavigator15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSWorkerNavigatorC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15WorkerNavigatorEEE
+__ZN7WebCore17JSWorkerNavigatorC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15WorkerNavigatorEEE
+__ZN7WebCore17JSWorkerNavigator18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL25getJSWorkerNavigatorTableEPN3JSC9ExecStateE
+__ZN7WebCore13WorkerContext13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERi
+__ZThn8_N7WebCore20WorkerMessagingProxy30confirmMessageFromWorkerObjectEb
+__ZN7WebCore20WorkerMessagingProxy30confirmMessageFromWorkerObjectEb
+__ZN7WebCore24MessageWorkerContextTaskD0Ev
+__ZThn96_N7WebCore13WorkerContext16derefEventTargetEv
+__ZN7WebCore13WorkerContext16derefEventTargetEv
+__ZN7WebCore23jsWorkerContextLocationEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13WorkerContext8locationEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14WorkerLocationE
+__ZN7WebCore16JSWorkerLocation15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSWorkerLocationC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14WorkerLocationEEE
+__ZN7WebCore16JSWorkerLocationC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14WorkerLocationEEE
+__ZN7WebCore16JSWorkerLocation18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL24getJSWorkerLocationTableEPN3JSC9ExecStateE
+__ZN7WebCore17JSWorkerNavigatorD1Ev
+__ZN7WebCore17JSWorkerNavigatorD2Ev
+__ZN7WebCore26JSWorkerNavigatorPrototypeD1Ev
+__ZN7WebCore16JSWorkerLocationD1Ev
+__ZN7WebCore16JSWorkerLocationD2Ev
+__ZN7WebCore25JSWorkerLocationPrototypeD1Ev
+__ZN7WebCore15WorkerNavigatorD0Ev
+__ZN7WebCore48jsWorkerContextPrototypeFunctionAddEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSWorkerContext16addEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13WorkerContext16addEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EE15reserveCapacityEm
+__ZN3WTF7HashMapIN7WebCore12AtomicStringENS_6VectorINS_6RefPtrINS1_13EventListenerEEELm0EEENS1_16AtomicStringHashENS_10HashTrai
+__ZN3WTF9HashTableIN7WebCore12AtomicStringESt4pairIS2_NS_6VectorINS_6RefPtrINS1_13EventListenerEEELm0EEEENS_18PairFirstExtracto
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EEC1ERKS5_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EEC2ERKS5_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EEaSERKS5_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore13EventListenerEEELm0EE6shrinkEm
+__ZN7WebCore51jsWorkerContextPrototypeFunctionRemoveEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSWorkerContext19removeEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13WorkerContext19removeEventListenerERKNS_12AtomicStringEPNS_13EventListenerEb
+__ZN7WebCore45jsWorkerContextPrototypeFunctionDispatchEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore40jsWorkerContextWorkerLocationConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSWorkerLocation14getConstructorEPN3JSC9ExecStateE
+__ZN7WebCore27JSWorkerLocationConstructorC2EPN3JSC9ExecStateE
+__ZN7WebCore25JSWorkerLocationPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSWorkerLocationConstructor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27JSWorkerLocationConstructor9classInfoEv
+__ZN7WebCore25JSWorkerLocationPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL33getJSWorkerLocationPrototypeTableEPN3JSC9ExecStateE
+__ZN7WebCore41jsWorkerLocationPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16JSWorkerLocation9classInfoEv
+__ZNK7WebCore14WorkerLocation8toStringEv
+__ZN7WebCore20jsWorkerLocationHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14WorkerLocation4hrefEv
+__ZN7WebCore24jsWorkerLocationProtocolEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14WorkerLocation8protocolEv
+__ZN7WebCore20jsWorkerLocationHostEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14WorkerLocation4hostEv
+__ZN7WebCore24jsWorkerLocationHostnameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14WorkerLocation8hostnameEv
+__ZN7WebCore20jsWorkerLocationPortEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14WorkerLocation4portEv
+__ZN7WebCore24jsWorkerLocationPathnameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14WorkerLocation8pathnameEv
+__ZN7WebCore22jsWorkerLocationSearchEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14WorkerLocation6searchEv
+__ZN7WebCore20jsWorkerLocationHashEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore14WorkerLocation4hashEv
+__ZN7WebCore27JSWorkerLocationConstructorD1Ev
+__ZNK7WebCore17JSWorkerNavigator9classInfoEv
+__ZN7WebCore24jsWorkerNavigatorAppNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsWorkerNavigatorAppVersionEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15WorkerNavigator9userAgentEv
+__ZN7WebCore25jsWorkerNavigatorPlatformEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsWorkerNavigatorUserAgentEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsWorkerNavigatorOnLineEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsWorkerContextSelfEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_13WorkerContextE
+__ZN7WebCore41setJSWorkerContextMessageEventConstructorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore22setJSWorkerContextSelfEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore34jsWorkerPrototypeFunctionTerminateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore42jsWorkerContextPrototypeFunctionSetTimeoutEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSWorkerContext10setTimeoutEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13WorkerContext10setTimeoutEPNS_15ScheduledActionEi
+__ZNK7WebCore13WorkerContext22scriptExecutionContextEv
+__ZN7WebCore44jsWorkerContextPrototypeFunctionClearTimeoutEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13WorkerContext12clearTimeoutEi
+__ZN7WebCore43jsWorkerContextPrototypeFunctionSetIntervalEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSWorkerContext11setIntervalEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13WorkerContext11setIntervalEPNS_15ScheduledActionEi
+__ZN7WebCore17WorkerSharedTimer11setFireTimeEd
+__ZN7WebCore15ScheduledAction7executeEPNS_13WorkerContextE
+__ZN7WebCore45jsWorkerContextPrototypeFunctionClearIntervalEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13WorkerContext13clearIntervalEi
+__ZN7WebCore23jsXMLHttpRequestOnabortEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsXMLHttpRequestOnerrorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsXMLHttpRequestOnloadEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsXMLHttpRequestOnloadstartEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsXMLHttpRequestOnprogressEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsXMLHttpRequestOnreadystatechangeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsXMLHttpRequestUploadOnabortEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsXMLHttpRequestUploadOnerrorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsXMLHttpRequestUploadOnloadEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsXMLHttpRequestUploadOnloadstartEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsXMLHttpRequestUploadOnprogressEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore29JSXMLHttpRequestProgressEvent9classInfoEv
+__ZN7WebCoreL37getJSXMLHttpRequestProgressEventTableEPN3JSC9ExecStateE
+__ZNK7WebCore38JSXMLHttpRequestProgressEventPrototype9classInfoEv
+__ZN7WebCoreL46getJSXMLHttpRequestProgressEventPrototypeTableEPN3JSC9ExecStateE
+__ZNK7WebCore24JSProgressEventPrototype9classInfoEv
+__ZN7WebCore29JSXMLHttpRequestProgressEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore37jsXMLHttpRequestProgressEventPositionEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore38jsXMLHttpRequestProgressEventTotalSizeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsRangePrototypeFunctionCollapseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore5XPath5Union8evaluateEv
+__ZNK7WebCore5XPath12FunSubstring8evaluateEv
+__ZN7WebCore5XPath8FunRound5roundEd
+__ZN7WebCore5XPath4PathC1EPNS0_6FilterEPNS0_12LocationPathE
+__ZN7WebCore5XPath4PathC2EPNS0_6FilterEPNS0_12LocationPathE
+__ZNK7WebCore5XPath4Path8evaluateEv
+__ZN7WebCore5XPath4PathD0Ev
+__ZNK7WebCore5XPath9FunNumber8evaluateEv
+__ZNK7WebCore5XPath15FunStringLength8evaluateEv
+__ZNK7WebCore5XPath17FunNormalizeSpace8evaluateEv
+__ZNK7WebCore5XPath7FunName8evaluateEv
+__ZN7WebCoreL24createSVGGElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore13JSSVGGElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore13JSSVGGElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11SVGGElementEEE
+__ZN7WebCore13JSSVGGElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11SVGGElementEEE
+__ZN7WebCore13JSSVGGElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore13JSSVGGElement9classInfoEv
+__ZNK7WebCore5XPath17FunSubstringAfter8evaluateEv
+__ZNK7WebCore5XPath8FunFalse8evaluateEv
+__ZN7WebCore13JSSVGGElementD1Ev
+__ZN7WebCore22JSSVGGElementPrototypeD1Ev
+__ZThn8_N7WebCore11SVGGElementD0Ev
+__ZN3WTF6VectorItLm1024EE14expandCapacityEmPKt
+__ZN3WTF6VectorItLm1024EE14expandCapacityEm
+__ZN3WTF6VectorItLm1024EE15reserveCapacityEm
+__ZNK7WebCore5XPath12FunTranslate8evaluateEv
+__ZNK7WebCore5XPath10FunBoolean8evaluateEv
+__ZNK7WebCore5XPath7FunTrue8evaluateEv
+__ZNK7WebCore5XPath7FunLang8evaluateEv
+__ZN7WebCore5XPathL12createFunSumEv
+__ZNK7WebCore5XPath6FunSum8evaluateEv
+__ZN7WebCore5XPath6FunSumD0Ev
+__ZNK7WebCore5XPath8FunFloor8evaluateEv
+__ZNK7WebCore5XPath10FunCeiling8evaluateEv
+__ZNK7WebCore5XPath8FunRound8evaluateEv
+__ZNK7WebCore5XPath8Negative8evaluateEv
+__ZNK7WebCore5XPath8FunCount8evaluateEv
+__ZNK7WebCore5XPath15FunNamespaceURI8evaluateEv
+__ZN7WebCore48jsXSLTProcessorPrototypeFunctionImportStylesheetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSXSLTProcessor16importStylesheetEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore51jsXSLTProcessorPrototypeFunctionTransformToFragmentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSXSLTProcessor19transformToFragmentEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13XSLTProcessor19transformToFragmentEPNS_4NodeEPNS_8DocumentE
+__ZN7WebCoreL13docLoaderFuncEPKhP8_xmlDictiPv12xsltLoadType
+__ZN7WebCoreL20exsltNodeSetFunctionEP22_xmlXPathParserContexti
+__ZL23initxsltFunctionNodeSetP22_xmlXPathParserContexti
+__ZN7WebCore44jsXSLTProcessorPrototypeFunctionSetParameterEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSXSLTProcessor12setParameterEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13XSLTProcessor12setParameterERKNS_6StringES3_S3_
+__ZN7WebCore44jsXSLTProcessorPrototypeFunctionGetParameterEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSXSLTProcessor12getParameterEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore13XSLTProcessor12getParameterERKNS_6StringES3_
+__ZL17initxsltGetNsPropP8_xmlNodePKhS2_
+__ZN7WebCore13XSLStyleSheet14loadChildSheetERKNS_6StringE
+__ZN7WebCore13XSLImportRuleC1EPNS_13XSLStyleSheetERKNS_6StringE
+__ZN7WebCore13XSLImportRuleC2EPNS_13XSLStyleSheetERKNS_6StringE
+__ZN7WebCore13XSLImportRule9loadSheetEv
+__ZNK7WebCore13XSLStyleSheet15isXSLStyleSheetEv
+__ZNK7WebCore13XSLImportRule16parentStyleSheetEv
+__ZN7WebCore13XSLImportRule12isImportRuleEv
+__ZN7WebCore13XSLImportRule9isLoadingEv
+__ZThn24_N7WebCore13XSLImportRule16setXSLStyleSheetERKNS_6StringES3_
+__ZN7WebCore13XSLImportRule16setXSLStyleSheetERKNS_6StringES3_
+__ZN7WebCore13XSLStyleSheetC1EPNS_13XSLImportRuleERKNS_6StringE
+__ZN7WebCore13XSLStyleSheetC2EPNS_13XSLImportRuleERKNS_6StringE
+__ZN7WebCore13XSLStyleSheet19setParentStyleSheetEPS0_
+__ZN7WebCore13XSLStyleSheet27locateStylesheetSubResourceEP7_xmlDocPKh
+__ZN7WebCore13XSLStyleSheet15markAsProcessedEv
+__ZN7WebCore13XSLImportRuleD0Ev
+__ZN7WebCore51jsXSLTProcessorPrototypeFunctionTransformToDocumentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSXSLTProcessor19transformToDocumentEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13XSLTProcessor19transformToDocumentEPNS_4NodeE
+__ZN7WebCore23xsltUnicodeSortFunctionEP21_xsltTransformContextPP8_xmlNodei
+__ZL25initxsltComputeSortResultP21_xsltTransformContextP8_xmlNode
+__ZNK7WebCore9DocLoader24printAccessDeniedMessageERKNS_4KURLE
+__ZNK7WebCore9StyleBase15isXSLStyleSheetEv
+__ZN7WebCore13XSLTProcessor14parseErrorFuncEPvP9_xmlError
+__ZN7WebCore37jsXSLTProcessorPrototypeFunctionResetEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore47jsXSLTProcessorPrototypeFunctionRemoveParameterEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSXSLTProcessor15removeParameterEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13XSLTProcessor15removeParameterERKNS_6StringES3_
+__ZN7WebCore47jsXSLTProcessorPrototypeFunctionClearParametersEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZL24initxsltLoadStylesheetPIP7_xmlDoc
+__ZN7WebCore21ApplicationCacheGroup11selectCacheEPNS_5FrameERKNS_4KURLE
+__ZN7WebCore23ApplicationCacheStorage22findOrCreateCacheGroupERKNS_4KURLE
+__ZN3WTF7HashMapIN7WebCore6StringEPNS1_21ApplicationCacheGroupENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3addERKS2_RKS4_
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS1_21ApplicationCacheGroupEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_1
+__ZN7WebCore23ApplicationCacheStorage14loadCacheGroupERKNS_4KURLE
+__ZN7WebCore21ApplicationCacheGroupC1ERKNS_4KURLEb
+__ZN7WebCore21ApplicationCacheGroupC2ERKNS_4KURLEb
+__ZN3WTF7HashMapIjjN7WebCore13AlreadyHashedENS_10HashTraitsIjEES4_E3addERKjS7_
+__ZN3WTF9HashTableIjSt4pairIjjENS_18PairFirstExtractorIS2_EEN7WebCore13AlreadyHashedENS_14PairHashTraitsINS_10HashTraitsIjEES9_
+__ZN7WebCore14DocumentLoader33setCandidateApplicationCacheGroupEPNS_21ApplicationCacheGroupE
+__ZN3WTF7HashSetIPN7WebCore14DocumentLoaderENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore14DocumentLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandE
+__ZN3WTF9HashTableIPN7WebCore14DocumentLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashE
+__ZN3WTF9HashTableIPN7WebCore14DocumentLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13alloca
+__ZN3WTF9HashTableIPN7WebCore14DocumentLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deallo
+__ZN7WebCore21ApplicationCacheGroup6updateEPNS_5FrameENS_28ApplicationCacheUpdateOptionE
+__ZN7WebCore21ApplicationCacheGroup16postListenerTaskEMNS_19DOMApplicationCacheEFvvERKN3WTF7HashSetIPNS_14DocumentLoaderENS4_7P
+__ZN7WebCore21ApplicationCacheGroup16postListenerTaskEMNS_19DOMApplicationCacheEFvvEPNS_14DocumentLoaderE
+__ZN7WebCore21ApplicationCacheGroup20createResourceHandleERKNS_4KURLEPNS_24ApplicationCacheResourceE
+__ZN7WebCore54jsDOMApplicationCachePrototypeFunctionAddEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
+__ZN7WebCore21JSDOMApplicationCache16addEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore19DOMApplicationCache22scriptExecutionContextEv
+__ZN7WebCore19DOMApplicationCache16addEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
+__ZN7WebCore21ApplicationCacheGroup27finishedLoadingMainResourceEPNS_14DocumentLoaderE
+__ZN7WebCore20ResourceHandleClient26shouldUseCredentialStorageEPNS_14ResourceHandleE
+__ZN7WebCore31ScriptExecutionContextTaskTimer5firedEv
+__ZN7WebCore21CallCacheListenerTask11performTaskEPNS_22ScriptExecutionContextE
+__ZN7WebCore19DOMApplicationCache20callCheckingListenerEv
+__ZN7WebCore19DOMApplicationCache12callListenerERKNS_12AtomicStringEPNS_13EventListenerE
+__ZN7WebCore19DOMApplicationCache14refEventTargetEv
+__ZN7WebCore19DOMApplicationCache21toDOMApplicationCacheEv
+__ZN7WebCore31ScriptExecutionContextTaskTimerD0Ev
+__ZN7WebCore21CallCacheListenerTaskD0Ev
+__ZN7WebCore20ResourceHandleClient17willCacheResponseEPNS_14ResourceHandleEP19NSCachedURLResponse
+__ZN7WebCore20ResourceHandleClient17willCacheResponseEPNS_14ResourceHandleERNS_18CacheStoragePolicyE
+__ZN7WebCore21ApplicationCacheGroup18didReceiveResponseEPNS_14ResourceHandleERKNS_16ResourceResponseE
+__ZN7WebCore21ApplicationCacheGroup26didReceiveManifestResponseERKNS_16ResourceResponseE
+__ZN7WebCore21ApplicationCacheGroup16manifestNotFoundEv
+__ZN7WebCore21ApplicationCacheGroup12makeObsoleteEv
+__ZN7WebCore23ApplicationCacheStorage22cacheGroupMadeObsoleteEPNS_21ApplicationCacheGroupE
+__ZN7WebCore21ApplicationCacheGroup11stopLoadingEv
+__ZN3WTF9HashTableIPN7WebCore14DocumentLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47remove
+__ZN3WTF9HashTableIPN7WebCore14DocumentLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeE
+__ZN7WebCore21ApplicationCacheGroupD0Ev
+__ZN7WebCore23ApplicationCacheStorage19cacheGroupDestroyedEPNS_21ApplicationCacheGroupE
+__ZN3WTF9HashTableIPN7WebCore16ApplicationCacheES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15deal
+__ZN7WebCore19DOMApplicationCache17callErrorListenerEv
+__ZN7WebCore19DOMApplicationCache16derefEventTargetEv
+__ZN7WebCore24ApplicationCacheResourceC1ERKNS_4KURLERKNS_16ResourceResponseEjN3WTF10PassRefPtrINS_12SharedBufferEEE
+__ZN7WebCore24ApplicationCacheResourceC2ERKNS_4KURLERKNS_16ResourceResponseEjN3WTF10PassRefPtrINS_12SharedBufferEEE
+__ZN7WebCore21ApplicationCacheGroup14didReceiveDataEPNS_14ResourceHandleEPKcii
+__ZN7WebCore21ApplicationCacheGroup22didReceiveManifestDataEPKci
+__ZN7WebCore21ApplicationCacheGroup16didFinishLoadingEPNS_14ResourceHandleE
+__ZN7WebCore21ApplicationCacheGroup24didFinishLoadingManifestEv
+__ZN7WebCore13parseManifestERKNS_4KURLEPKciRNS_8ManifestE
+__ZN7WebCore16ApplicationCacheC1Ev
+__ZN7WebCore16ApplicationCacheC2Ev
+__ZN7WebCore16ApplicationCache8setGroupEPNS_21ApplicationCacheGroupE
+__ZN7WebCore21ApplicationCacheGroup32associateDocumentLoaderWithCacheEPNS_14DocumentLoaderEPNS_16ApplicationCacheE
+__ZN7WebCore14DocumentLoader19setApplicationCacheEN3WTF10PassRefPtrINS_16ApplicationCacheEEE
+__ZN7WebCore21ApplicationCacheGroup8addEntryERKNS_6StringEj
+__ZN7WebCore16ApplicationCache14resourceForURLERKNS_6StringE
+__ZNK3WTF7HashMapIN7WebCore6StringENS_6RefPtrINS1_24ApplicationCacheResourceEEENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EE
+__ZN3WTF7HashMapIN7WebCore6StringEjNS1_10StringHashENS_10HashTraitsIS2_EENS4_IjEEE3addERKS2_RKj
+__ZN7WebCore16ApplicationCache18setOnlineWhitelistERKN3WTF6VectorINS_4KURLELm0EEE
+__ZN3WTF6VectorIN7WebCore4KURLELm0EEaSERKS3_
+__ZN7WebCore16ApplicationCache15setFallbackURLsERKN3WTF6VectorISt4pairINS_4KURLES4_ELm0EEE
+__ZN3WTF6VectorISt4pairIN7WebCore4KURLES3_ELm0EEaSERKS5_
+__ZN7WebCore21ApplicationCacheGroup17startLoadingEntryEv
+__ZN7WebCore19DOMApplicationCache23callDownloadingListenerEv
+__ZN7WebCore19DOMApplicationCache20callProgressListenerEv
+__ZN7WebCore21ApplicationCacheGroup17cacheUpdateFailedEv
+__ZN7WebCore24ApplicationCacheResourceD0Ev
+__ZN7WebCore21ApplicationCacheGroup27deliverDelayedMainResourcesEv
+__ZN3WTF6VectorIPN7WebCore14DocumentLoaderELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore14DocumentLoaderELm0EE15reserveCapacityEm
+__ZN7WebCore16ApplicationCacheD1Ev
+__ZN7WebCore16ApplicationCacheD2Ev
+__ZN7WebCore21ApplicationCacheGroup14cacheDestroyedEPNS_16ApplicationCacheE
+__ZNK3WTF9HashTableIPN7WebCore16ApplicationCacheES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E8cont
+__ZN3WTF9HashTableIPN7WebCore14DocumentLoaderES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3
+__ZN7WebCore21ApplicationCacheGroup21checkIfLoadIsCompleteEv
+__ZN3WTF6VectorIPN7WebCore14DocumentLoaderELm0EE6shrinkEm
+__ZN7WebCore16ApplicationCache11addResourceEN3WTF10PassRefPtrINS_24ApplicationCacheResourceEEE
+__ZN3WTF7HashMapIN7WebCore6StringENS_6RefPtrINS1_24ApplicationCacheResourceEEENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS_6RefPtrINS1_24ApplicationCacheResourceEEEENS_18PairFirstExtractorIS7_EENS1_10
+__ZN7WebCore16ApplicationCache19setManifestResourceEN3WTF10PassRefPtrINS_24ApplicationCacheResourceEEE
+__ZN7WebCore21ApplicationCacheGroup14setNewestCacheEN3WTF10PassRefPtrINS_16ApplicationCacheEEE
+__ZN3WTF7HashSetIPN7WebCore16ApplicationCacheENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore16ApplicationCacheES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expan
+__ZN3WTF9HashTableIPN7WebCore16ApplicationCacheES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehas
+__ZN3WTF9HashTableIPN7WebCore16ApplicationCacheES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allo
+__ZN7WebCore23ApplicationCacheStorage16storeNewestCacheEPNS_21ApplicationCacheGroupE
+__ZN7WebCore23ApplicationCacheStorage19verifySchemaVersionEv
+__ZN7WebCore23ApplicationCacheStorage16executeStatementERNS_15SQLiteStatementE
+__ZN7WebCore23ApplicationCacheStorage17executeSQLCommandERKNS_6StringE
+__ZN7WebCore23ApplicationCacheStorage5storeEPNS_21ApplicationCacheGroupE
+__ZN7WebCore23ApplicationCacheStorage5storeEPNS_16ApplicationCacheE
+__ZN7WebCore23ApplicationCacheStorage5storeEPNS_24ApplicationCacheResourceEj
+__ZN7WebCore19DOMApplicationCache18callCachedListenerEv
+__ZNK7WebCore16ApplicationCache10isCompleteEv
+__ZN7WebCore16ApplicationCache27urlMatchesFallbackNamespaceERKNS_4KURLEPS1_
+__ZN7WebCore16ApplicationCache22isURLInOnlineWhitelistERKNS_4KURLE
+__ZNK7WebCore11FrameLoader18cannotShowURLErrorERKNS_15ResourceRequestE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_23XMLHttpRequestExceptionE
+__ZN7WebCore25JSXMLHttpRequestExceptionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23XMLHttpRequestExceptionEEE
+__ZN7WebCore25JSXMLHttpRequestExceptionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23XMLHttpRequestExceptionEEE
+__ZN7WebCore25JSXMLHttpRequestException18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL33getJSXMLHttpRequestExceptionTableEPN3JSC9ExecStateE
+__ZNK3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS1_21ApplicationCacheGroupEENS_18PairFirstExtractorIS6_EENS1_10StringHashENS_
+__ZN7WebCore25JSXMLHttpRequestExceptionD1Ev
+__ZN7WebCore25JSXMLHttpRequestExceptionD2Ev
+__ZN7WebCore21ApplicationCacheGroup26disassociateDocumentLoaderEPNS_14DocumentLoaderE
+__ZN3WTF9HashTableIPN7WebCore16ApplicationCacheES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findI
+__ZN3WTF9HashTableIPN7WebCore16ApplicationCacheES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47remo
+__ZN3WTF9HashTableIPN7WebCore16ApplicationCacheES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6remov
+__ZN7WebCore23ApplicationCacheStorage9loadCacheEj
+__ZN7WebCore20ResourceResponseBase18setHTTPHeaderFieldERKNS_12AtomicStringERKNS_6StringE
+__ZN7WebCore24ApplicationCacheResource7addTypeEj
+__ZN3WTF7HashMapIN7WebCore6StringEPNS1_21ApplicationCacheGroupENS1_10StringHashENS_10HashTraitsIS2_EENS6_IS4_EEE3setERKS2_RKS4_
+__ZN7WebCore16ApplicationCache18resourceForRequestERKNS_15ResourceRequestE
+__ZN7WebCore19DOMApplicationCache20callNoUpdateListenerEv
+__ZN7WebCore12jsNodeOnloadEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node6onloadEv
+__ZN7WebCore34setJSDOMApplicationCacheOnnoupdateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore32setJSDOMApplicationCacheOncachedEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMApplicationCacheOnupdatereadyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore31setJSDOMApplicationCacheOnerrorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN3WTF6VectorIN7WebCore4KURLELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore4KURLELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore4KURLELm0EE15reserveCapacityEm
+__ZN3WTF6VectorISt4pairIN7WebCore4KURLES3_ELm0EE14expandCapacityEmPKS4_
+__ZN3WTF6VectorISt4pairIN7WebCore4KURLES3_ELm0EE14expandCapacityEm
+__ZN3WTF6VectorISt4pairIN7WebCore4KURLES3_ELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIN7WebCore4KURLELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorISt4pairIN7WebCore4KURLES3_ELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorISt4pairIN7WebCore4KURLES3_ELm0EE6shrinkEm
+__ZN3WTF6VectorIN7WebCore4KURLELm0EE6shrinkEm
+__ZN7WebCore23ApplicationCacheStorage5storeEPNS_24ApplicationCacheResourceEPNS_16ApplicationCacheE
+__ZN7WebCore34setJSDOMApplicationCacheOncheckingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSDOMApplicationCacheOndownloadingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore34setJSDOMApplicationCacheOnprogressEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore34setJSDOMApplicationCacheOnobsoleteEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore44jsDOMApplicationCachePrototypeFunctionUpdateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19DOMApplicationCache6updateERi
+__ZN7WebCore20ResourceHandleClient15willSendRequestEPNS_14ResourceHandleERNS_15ResourceRequestERKNS_16ResourceResponseE
+__ZN7WebCore21ApplicationCacheGroup7didFailEPNS_14ResourceHandleERKNS_13ResourceErrorE
+__ZN7WebCore57jsDOMApplicationCachePrototypeFunctionRemoveEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Arg
+__ZN7WebCore21JSDOMApplicationCache19removeEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore19DOMApplicationCache19removeEventListenerERKNS_12AtomicStringEPNS_13EventListenerEb
+__ZN7WebCore29jsXMLHttpRequestExceptionCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23ApplicationCacheStorage6removeEPNS_16ApplicationCacheE
+__ZN7WebCore16ApplicationCache14clearStorageIDEv
+__ZN7WebCore21ApplicationCacheGroup14clearStorageIDEv
+__ZN7WebCore19DOMApplicationCache20callObsoleteListenerEv
+__ZN7WebCore19DOMApplicationCache23callUpdateReadyListenerEv
+__ZN7WebCore47jsDOMApplicationCachePrototypeFunctionSwapCacheEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19DOMApplicationCache9swapCacheERi
+__ZN7WebCore19DOMApplicationCache9swapCacheEv
+__ZN7WebCore23ApplicationCacheStorage16storeUpdatedTypeEPNS_24ApplicationCacheResourceEPNS_16ApplicationCacheE
+__ZNK7WebCore11HistoryItem15formContentTypeEv
+__ZN7WebCore14ResourceHandle17willLoadFromCacheERNS_15ResourceRequestE
+__ZN3WTF6VectorIcLm512EE14expandCapacityEmPKc
+__ZN7WebCore18MainResourceLoader26stopLoadingForPolicyChangeEv
+__ZNK7WebCore18MainResourceLoader32interruptionForPolicyChangeErrorEv
+__ZN7WebCore11FrameLoader32interruptionForPolicyChangeErrorERKNS_15ResourceRequestE
+__ZN7WebCore18JSHTMLVideoElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore18JSHTMLMediaElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore24setJSHTMLMediaElementSrcEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLMediaElement6setSrcERKNS_6StringE
+-[WebCoreMovieObserver sizeChanged:]
+__ZN7WebCore18MediaPlayerPrivate11sizeChangedEv
+__ZN7WebCore11MediaPlayer11sizeChangedEv
+__ZThn112_N7WebCore16HTMLMediaElement22mediaPlayerSizeChangedEPNS_11MediaPlayerE
+__ZN7WebCore16HTMLMediaElement22mediaPlayerSizeChangedEPNS_11MediaPlayerE
+__ZNK7WebCore16HTMLMediaElement5endedEv
+__ZL28initQTMovieHasVideoAttributev
+__ZL32QTMovieHasVideoAttributeFunctionv
+__ZN7WebCore5TimerINS_11RenderMediaEE5firedEv
+__ZN7WebCore11RenderMedia26opacityAnimationTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore11RenderMedia13changeOpacityEPNS_11HTMLElementEf
+__ZN7WebCore11RenderMedia20timeUpdateTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore28jsHTMLMediaElementReadyStateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLMediaElement10readyStateEv
+__ZN7WebCore32setJSHTMLMediaElementCurrentTimeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLMediaElement14setCurrentTimeEfRi
+__ZN7WebCore16HTMLMediaElement4seekEfRi
+__ZNK7WebCore16HTMLMediaElement8seekableEv
+__ZN7WebCore11MediaPlayer15maxTimeSeekableEv
+__ZNK7WebCore18MediaPlayerPrivate15maxTimeSeekableEv
+__ZN7WebCore10TimeRangesC1Eff
+__ZN7WebCore10TimeRangesC2Eff
+__ZNK7WebCore10TimeRanges7containEf
+__ZNK7WebCore10TimeRanges5startEjRi
+__ZNK7WebCore10TimeRanges3endEjRi
+__ZN7WebCore30jsHTMLMediaElementNetworkStateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsHTMLMediaElementSeekableEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_10TimeRangesE
+__ZN7WebCore12JSTimeRanges15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore12JSTimeRangesC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10TimeRangesEEE
+__ZN7WebCore12JSTimeRangesC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10TimeRangesEEE
+__ZN7WebCore12JSTimeRanges18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18jsTimeRangesLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSTimeRangesPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore34jsTimeRangesPrototypeFunctionStartEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore12JSTimeRanges9classInfoEv
+__ZN7WebCore32jsTimeRangesPrototypeFunctionEndEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore26jsHTMLMediaElementDurationEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12JSTimeRangesD1Ev
+__ZN7WebCore12JSTimeRangesD2Ev
+__ZN7WebCore21JSTimeRangesPrototypeD1Ev
+__ZN3WTF6VectorIPN7WebCore14ConsoleMessageELm0EE6shrinkEm
+__ZN7WebCore17InspectorResourceD1Ev
+__ZN7WebCore17InspectorResourceD2Ev
+__ZN7WebCoreL19fontfaceConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore18SVGFontFaceElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore18SVGFontFaceElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore8Document18mappedElementSheetEv
+__ZN7WebCore18SVGFontFaceElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCoreL32cssPropertyIdForSVGAttributeNameERKNS_13QualifiedNameE
+__ZN7WebCoreL25mapAttributeToCSSPropertyEPN3WTF7HashMapIPNS_16AtomicStringImplEiNS0_7PtrHashIS3_EENS0_10HashTraitsIS3_EENS6_IiE
+__ZN7WebCore18SVGFontFaceElement20insertedIntoDocumentEv
+__ZN7WebCore18SVGFontFaceElement15rebuildFontFaceEv
+__ZN7WebCore18SVGFontFaceElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCoreL22fontfacesrcConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore21SVGFontFaceSrcElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore21SVGFontFaceSrcElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore21SVGFontFaceSrcElement8srcValueEv
+__ZN7WebCore21SVGFontFaceSrcElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCoreL22fontfaceuriConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore21SVGFontFaceUriElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore21SVGFontFaceUriElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore21SVGFontFaceUriElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore21SVGFontFaceUriElement20insertedIntoDocumentEv
+__ZN7WebCore21SVGFontFaceUriElement8loadFontEv
+__ZNK7WebCore21SVGFontFaceUriElement8srcValueEv
+__ZN7WebCore18SVGFontFaceElementD0Ev
+__ZN7WebCore18SVGFontFaceElement28removeFromMappedElementSheetEv
+__ZN7WebCore21SVGFontFaceSrcElementD0Ev
+__ZN7WebCore21SVGFontFaceUriElementD0Ev
+__ZN7WebCore23JSNodeIteratorPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore39jsNodeIteratorPrototypeFunctionNextNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14JSNodeIterator8nextNodeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore43jsNodeIteratorPrototypeFunctionPreviousNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14JSNodeIterator12previousNodeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore12NodeIterator12previousNodeEPN3JSC9ExecStateERi
+__ZN7WebCore12NodeIterator11NodePointer14moveToPreviousEPNS_4NodeE
+__ZN7WebCore34jsRangePrototypeFunctionCloneRangeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCoreL25min_colorMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCoreL25max_colorMediaFeatureEvalEPNS_8CSSValueEPNS_11RenderStyleEPNS_5FrameENS_18MediaFeaturePrefixE
+__ZN7WebCore28setJSHTMLTableElementCaptionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25toHTMLTableCaptionElementEN3JSC7JSValueE
+__ZN7WebCore26setJSHTMLTableElementTFootEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore37setJSHTMLOptionElementDefaultSelectedEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20CachedResourceClient10fontLoadedEPNS_10CachedFontE
+__ZN7WebCore13RenderSVGText29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
+__ZN7WebCore13RenderSVGText21computeRectForRepaintEPNS_20RenderBoxModelObjectERNS_7IntRectEb
+__ZNK7WebCore13RenderSVGText19mapLocalToContainerEPNS_20RenderBoxModelObjectEbbRNS_14TransformStateE
+__ZN7WebCore10CachedFont17ensureSVGFontDataEv
+__ZN7WebCoreL15fontConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore14SVGFontElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14SVGFontElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore18SVGFontFaceElement10fontFamilyEv
+__ZN7WebCoreL23missingglyphConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore22SVGMissingGlyphElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore22SVGMissingGlyphElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL16glyphConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore15SVGGlyphElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15SVGGlyphElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15SVGGlyphElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore15SVGGlyphElement20insertedIntoDocumentEv
+__ZN7WebCore15SVGGlyphElement20invalidateGlyphCacheEv
+__ZN7WebCore14SVGFontElement20invalidateGlyphCacheEv
+__ZNK7WebCore10CachedFont14getSVGFontByIdERKNS_6StringE
+__ZN7WebCore11SVGFontDataC1EPNS_18SVGFontFaceElementE
+__ZN7WebCore11SVGFontDataC2EPNS_18SVGFontFaceElementE
+__ZNK7WebCore18SVGFontFaceElement17horizontalOriginXEv
+__ZNK7WebCore18SVGFontFaceElement17horizontalOriginYEv
+__ZNK7WebCore18SVGFontFaceElement18horizontalAdvanceXEv
+__ZNK7WebCore18SVGFontFaceElement15verticalOriginXEv
+__ZNK7WebCore18SVGFontFaceElement15verticalOriginYEv
+__ZNK7WebCore18SVGFontFaceElement6ascentEv
+__ZNK7WebCore18SVGFontFaceElement16verticalAdvanceYEv
+__ZNK7WebCore18SVGFontFaceElement10unitsPerEmEv
+__ZNK7WebCore18SVGFontFaceElement7descentEv
+__ZNK7WebCore18SVGFontFaceElement7xHeightEv
+__ZNK7WebCore14SVGFontElement28getGlyphIdentifiersForStringERKNS_6StringERN3WTF6VectorINS_18SVGGlyphIdentifierELm0EEE
+__ZNK7WebCore14SVGFontElement16ensureGlyphCacheEv
+__ZNK7WebCore15SVGGlyphElement20buildGlyphIdentifierEv
+__ZN7WebCore15SVGGlyphElement27buildGenericGlyphIdentifierEPKNS_10SVGElementE
+__ZN7WebCore15pathFromSVGDataERNS_4PathERKNS_6StringE
+__ZNK3WTF7HashMapItNS_6RefPtrIN7WebCore12GlyphMapNodeEEENS_7IntHashIjEENS_10HashTraitsItEENS7_IS4_EEE3getERKt
+__ZN3WTF7HashMapItNS_6RefPtrIN7WebCore12GlyphMapNodeEEENS_7IntHashIjEENS_10HashTraitsItEENS7_IS4_EEE3setERKtRKS4_
+__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EE15reserveCapacityEm
+__ZNK7WebCore4Font22floatWidthUsingSVGFontERKNS_7TextRunE
+__ZN7WebCoreL33floatWidthOfSubStringUsingSVGFontEPKNS_4FontERKNS_7TextRunEiiiRiRNS_6StringE
+__ZN7WebCore16SVGTextRunWalkerINS_34SVGTextRunWalkerMeasuredLengthDataEE4walkERKNS_7TextRunEbRKNS_6StringEii
+__ZN7WebCoreL24charactersWithArabicFormERKNS_6StringEb
+__ZNK7WebCore14SVGFontElement24firstMissingGlyphElementEv
+__ZN7WebCore11PathBuilder9svgMoveToEddbb
+__ZN7WebCore11PathBuilder9svgLineToEddb
+__ZN7WebCore15SVGGlyphElement28inheritUnspecifiedAttributesERNS_18SVGGlyphIdentifierEPKNS_11SVGFontDataE
+__ZN7WebCoreL30floatWidthUsingSVGFontCallbackERKNS_18SVGGlyphIdentifierERNS_34SVGTextRunWalkerMeasuredLengthDataE
+__ZNK7WebCore4Font22floatWidthUsingSVGFontERKNS_7TextRunEiRiRNS_6StringE
+__ZNK7WebCore4Font7svgFontEv
+__ZN7WebCore28jsDocumentTypeInternalSubsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore50jsHTMLIFrameElementPrototypeFunctionGetSVGDocumentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore21HTMLFrameOwnerElement14getSVGDocumentERi
+__ZN7WebCore50jsHTMLObjectElementPrototypeFunctionGetSVGDocumentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCoreL14setConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore13SVGSetElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore13SVGSetElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL26createSVGSetElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore15JSSVGSetElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore30JSSVGAnimationElementPrototype4selfEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSSVGAnimationElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSSVGSetElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13SVGSetElementEEE
+__ZN7WebCore15JSSVGSetElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13SVGSetElementEEE
+__ZN7WebCore21JSSVGAnimationElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimationElementEEE
+__ZN7WebCore21JSSVGAnimationElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore30JSSVGAnimationElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore15JSSVGSetElement9classInfoEv
+__ZN7WebCore21jsSVGRectElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGRectElementENS_9SVGLengthEXadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_15widthAttr
+__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateINS1_9SVGLengthEEENS1_29SVGAnimatedTypeWrapper
+__ZN3WTF7HashMapIN7WebCore6StringEPKNS1_23SVGAnimatedPropertyBaseENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3setERKS2_RK
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PKNS1_23SVGAnimatedPropertyBaseEENS_18PairFirstExtractorIS7_EENS1_10StringHashEN
+__ZN3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateINS1_9SVGLengthEEENS1_29SVGAnimatedTypeWrapperK
+__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_PNS1_19SVGAnimatedTemplateINS1_9SVGLengthEEEENS_18PairFirstE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SVGAnimatedTemplateINS_9SVGLengthEEEPNS_10SVGElementE
+__ZN7WebCore19JSSVGAnimatedLength15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSSVGAnimatedLengthC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateINS_9SVGLengthEEEEEPNS_10S
+__ZN7WebCore19JSSVGAnimatedLengthC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateINS_9SVGLengthEEEEEPNS_10S
+__ZN7WebCore19JSSVGAnimatedLength18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore26jsSVGAnimatedLengthBaseValEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK3WTF9HashTableIN7WebCore23PODTypeWrapperCacheInfoINS1_9SVGLengthENS1_19SVGAnimatedTemplateIS3_EEEESt4pairIS6_PNS1_26JSSVGD
+__ZN3WTF7HashMapIN7WebCore23PODTypeWrapperCacheInfoINS1_9SVGLengthENS1_19SVGAnimatedTemplateIS3_EEEEPNS1_26JSSVGDynamicPODTypeW
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19JSSVGPODTypeWrapperINS_9SVGLengthEEEPNS_10SVGElementE
+__ZN7WebCore11JSSVGLengthC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperINS_9SVGLengthEEEEEPNS_10SVGElemen
+__ZN7WebCore11JSSVGLengthC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperINS_9SVGLengthEEEEEPNS_10SVGElemen
+__ZN7WebCore26jsSVGAnimatedLengthAnimValEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK3WTF7HashMapIN7WebCore23PODTypeWrapperCacheInfoINS1_9SVGLengthENS1_19SVGAnimatedTemplateIS3_EEEEPNS1_26JSSVGDynamicPODType
+__ZN7WebCore11JSSVGLength18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore19jsSVGLengthUnitTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26JSSVGDynamicPODTypeWrapperINS_9SVGLengthENS_19SVGAnimatedTemplateIS1_EEEcvS1_Ev
+__ZN7WebCore32jsSVGLengthValueInSpecifiedUnitsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16jsSVGLengthValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore11JSSVGLength5valueEPN3JSC9ExecStateE
+__ZN7WebCore50jsSVGAnimationElementPrototypeFunctionBeginElementEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19SVGAnimationElement12beginElementERi
+__ZN7WebCore19SVGAnimationElement14beginElementAtEfRi
+__ZNK7WebCore14SVGSMILElement7elapsedEv
+__ZN7WebCore14SVGSMILElement12addBeginTimeENS_8SMILTimeE
+__ZN7WebCore14SVGSMILElement16beginListChangedEv
+__ZN7WebCore46jsSVGSVGElementPrototypeFunctionSetCurrentTimeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13SVGSVGElement14setCurrentTimeEf
+__ZNK7WebCore19SVGAnimationElement7toValueEv
+__ZN7WebCore19synchronizePropertyINS_14SVGRectElementENS_9SVGLengthEEEvPKT_RKNS_13QualifiedNameET0_
+__ZN7WebCore56jsSVGTextContentElementPrototypeFunctionGetNumberOfCharsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgL
+__ZNK7WebCore21SVGTextContentElement16getNumberOfCharsEv
+__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EE6appendIS2_EEvPKT_m
+__ZSt16__introsort_loopIPN7WebCore18SVGGlyphIdentifierElPFbRKS1_S4_EEvT_S7_T0_T1_
+__ZSt22__final_insertion_sortIPN7WebCore18SVGGlyphIdentifierEPFbRKS1_S4_EEvT_S7_T0_
+__ZSt16__insertion_sortIPN7WebCore18SVGGlyphIdentifierEPFbRKS1_S4_EEvT_S7_T0_
+__ZN3WTF6VectorIN7WebCore18SVGGlyphIdentifierELm0EE6shrinkEm
+__ZNK7WebCore14SVGFontElement43getHorizontalKerningPairForStringsAndGlyphsERKNS_6StringES3_S3_S3_RNS_24SVGHorizontalKerningPair
+__ZNK7WebCore13RenderSVGText9isSVGTextEv
+__ZNK7WebCore16SVGRootInlineBox13svgTextChunksEv
+__ZN7WebCoreL29findInlineTextBoxInTextChunksEPKNS_21SVGTextContentElementERKN3WTF6VectorINS_12SVGTextChunkELm0EEE
+__ZN3WTF6VectorIPN7WebCore16SVGInlineTextBoxELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore16SVGInlineTextBoxELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore16SVGInlineTextBoxELm0EE15reserveCapacityEm
+__ZN7WebCore18SVGTextChunkWalkerINS_27SVGInlineTextBoxQueryWalkerEEclEPNS_16SVGInlineTextBoxEiRKNS_20TransformationMatrixERKPNS
+__ZN7WebCore27SVGInlineTextBoxQueryWalker20chunkPortionCallbackEPNS_16SVGInlineTextBoxEiRKNS_20TransformationMatrixERKPNS_7SVGC
+__ZN3WTF6VectorIPN7WebCore16SVGInlineTextBoxELm0EE6shrinkEm
+__ZN7WebCore61jsSVGTextContentElementPrototypeFunctionGetComputedTextLengthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_
+__ZNK7WebCore21SVGTextContentElement21getComputedTextLengthEv
+__ZN7WebCore58jsSVGTextContentElementPrototypeFunctionGetSubStringLengthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Ar
+__ZNK7WebCore21SVGTextContentElement18getSubStringLengthEjjRi
+__ZN7WebCore62jsSVGTextContentElementPrototypeFunctionGetStartPositionOfCharEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0
+__ZNK7WebCore21SVGTextContentElement22getStartPositionOfCharEjRi
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19JSSVGPODTypeWrapperINS_10FloatPointEEEPNS_10SVGElementE
+__ZN7WebCore10JSSVGPoint15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore10JSSVGPointC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperINS_10FloatPointEEEEEPNS_10SVGEleme
+__ZN7WebCore10JSSVGPointC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperINS_10FloatPointEEEEEPNS_10SVGEleme
+__ZN7WebCore10JSSVGPoint18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore11jsSVGPointXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_10FloatPointEEcvS1_Ev
+__ZN7WebCore11jsSVGPointYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore60jsSVGTextContentElementPrototypeFunctionGetEndPositionOfCharEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7
+__ZNK7WebCore21SVGTextContentElement20getEndPositionOfCharEjRi
+__ZN7WebCoreL19textpathConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore18SVGTextPathElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore18SVGTextPathElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL31createSVGTextPathElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore20JSSVGTextPathElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGTextPathElementEEE
+__ZN7WebCore20JSSVGTextPathElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGTextPathElementEEE
+__ZN7WebCore20JSSVGTextPathElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore20JSSVGTextPathElement9classInfoEv
+__ZN7WebCore18SVGTextPathElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZThn432_NK7WebCore18SVGTextPathElement14contextElementEv
+__ZNK7WebCore18SVGTextPathElement14contextElementEv
+__ZN7WebCore18SVGTextPathElement20insertedIntoDocumentEv
+__ZN7WebCore57jsSVGTextContentElementPrototypeFunctionGetRotationOfCharEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Arg
+__ZNK7WebCore21SVGTextContentElement17getRotationOfCharEjRi
+__ZN7WebCore18SVGTextPathElement16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore18SVGTextPathElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore17RenderSVGTextPathC1EPNS_4NodeE
+__ZN7WebCore17RenderSVGTextPathC2EPNS_4NodeE
+__ZNK7WebCore18SVGTextPathElement25childShouldCreateRendererEPNS_4NodeE
+__ZN7WebCore22SVGCharacterLayoutInfo15setInPathLayoutEb
+__ZN7WebCore22SVGCharacterLayoutInfo20addLayoutInformationEPNS_13InlineFlowBoxEf
+__ZNK7WebCore17RenderSVGTextPath10layoutPathEv
+__ZN7WebCore4Path6lengthEv
+__ZN7WebCore18PathTraversalStateC1ENS0_19PathTraversalActionE
+__ZN7WebCore18PathTraversalStateC2ENS0_19PathTraversalActionE
+__ZNK7WebCore4Path5applyEPvPFvS1_PKNS_11PathElementEE
+__ZN7WebCoreL26CGPathApplierToPathApplierEPvPK13CGPathElement
+__ZN7WebCoreL25pathLengthApplierFunctionEPvPKNS_11PathElementE
+__ZN7WebCore18PathTraversalState6moveToERKNS_10FloatPointE
+__ZN7WebCore18PathTraversalState6lineToERKNS_10FloatPointE
+__ZNK7WebCore17RenderSVGTextPath11startOffsetEv
+__ZN7WebCore22SVGCharacterLayoutInfo27nextPathLayoutPointAndAngleEfff
+__ZN7WebCore4Path13pointAtLengthEfRb
+__ZN7WebCore4Path19normalAngleAtLengthEfRb
+__ZN7WebCore24RenderSVGHiddenContainer29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
+__ZN7WebCore18SVGFontFaceElement19removedFromDocumentEv
+__ZN7WebCore11SVGFontDataD0Ev
+__ZN7WebCoreL31createSVGFontFaceElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore20JSSVGFontFaceElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSSVGFontFaceElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGFontFaceElementEEE
+__ZN7WebCore20JSSVGFontFaceElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGFontFaceElementEEE
+__ZNK7WebCore20JSSVGFontFaceElement9classInfoEv
+__ZN7WebCoreL35createSVGMissingGlyphElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore24JSSVGMissingGlyphElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSSVGMissingGlyphElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_22SVGMissingGlyphElementEEE
+__ZN7WebCore24JSSVGMissingGlyphElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_22SVGMissingGlyphElementEEE
+__ZNK7WebCore24JSSVGMissingGlyphElement9classInfoEv
+__ZN7WebCoreL28createSVGGlyphElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore17JSSVGGlyphElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSSVGGlyphElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15SVGGlyphElementEEE
+__ZN7WebCore17JSSVGGlyphElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15SVGGlyphElementEEE
+__ZNK7WebCore17JSSVGGlyphElement9classInfoEv
+__ZN7WebCoreL16hkernConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore15SVGHKernElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15SVGHKernElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore12JSSVGElement9classInfoEv
+__ZN7WebCoreL27createSVGFontElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore16JSSVGFontElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGFontElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGFontElementEEE
+__ZN7WebCore16JSSVGFontElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGFontElementEEE
+__ZNK7WebCore16JSSVGFontElement9classInfoEv
+__ZN7WebCore14SVGFontElement16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore15SVGHKernElement20insertedIntoDocumentEv
+__ZN7WebCoreL28createSVGTSpanElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore17JSSVGTSpanElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSSVGTSpanElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15SVGTSpanElementEEE
+__ZN7WebCore17JSSVGTSpanElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15SVGTSpanElementEEE
+__ZNK7WebCore17JSSVGTSpanElement9classInfoEv
+__ZN7WebCore12SVGLangSpace10setXmllangERKNS_12AtomicStringE
+__ZN7WebCoreL19altglyphConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore18SVGAltGlyphElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore18SVGAltGlyphElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL31createSVGAltGlyphElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore20JSSVGAltGlyphElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSSVGAltGlyphElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGAltGlyphElementEEE
+__ZN7WebCore20JSSVGAltGlyphElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGAltGlyphElementEEE
+__ZN7WebCore20JSSVGAltGlyphElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore20JSSVGAltGlyphElement9classInfoEv
+__ZN7WebCore18SVGAltGlyphElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZNK7WebCore18SVGAltGlyphElement25childShouldCreateRendererEPNS_4NodeE
+__ZN7WebCore11PathBuilder12svgClosePathEv
+__ZN7WebCore20parseDelimitedStringERKNS_6StringEc
+__ZNK7WebCore15SVGHKernElement26buildHorizontalKerningPairEv
+__ZN3WTF6VectorIN7WebCore24SVGHorizontalKerningPairELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore24SVGHorizontalKerningPairELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore24SVGHorizontalKerningPairELm0EE15reserveCapacityEm
+__ZN7WebCore11SVGGlyphMap20compareGlyphPriorityERKNS_18SVGGlyphIdentifierES3_
+__ZSt25__unguarded_linear_insertIPN7WebCore18SVGGlyphIdentifierES1_PFbRKS1_S4_EEvT_T0_T1_
+__ZN7WebCoreL25stringMatchesUnicodeRangeERKNS_6StringES2_
+__ZN3WTF6VectorISt4pairIjjELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorISt4pairIjjELm0EE14expandCapacityEm
+__ZN3WTF6VectorISt4pairIjjELm0EE15reserveCapacityEm
+__ZN3WTF6VectorISt4pairIjjELm0EE6shrinkEm
+__ZN3WTF6VectorISt4pairIjjELm0EE14expandCapacityEmPKS2_
+__ZNK7WebCore18SVGAltGlyphElement12glyphElementEv
+__ZN7WebCore17RenderSVGTextPathD0Ev
+__ZN7WebCore17JSSVGTSpanElementD1Ev
+__ZN7WebCore16JSSVGFontElementD1Ev
+__ZN7WebCore17JSSVGGlyphElementD1Ev
+__ZN7WebCore24JSSVGMissingGlyphElementD1Ev
+__ZN7WebCore20JSSVGFontFaceElementD1Ev
+__ZN7WebCore20JSSVGTextPathElementD1Ev
+__ZN7WebCore10JSSVGPointD1Ev
+__ZN7WebCore10JSSVGPointD2Ev
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_10FloatPointEED0Ev
+__ZN7WebCore11JSSVGLengthD1Ev
+__ZN7WebCore11JSSVGLengthD2Ev
+__ZN3WTF9HashTableIN7WebCore23PODTypeWrapperCacheInfoINS1_9SVGLengthENS1_19SVGAnimatedTemplateIS3_EEEESt4pairIS6_PNS1_26JSSVGDy
+__ZN7WebCore26JSSVGDynamicPODTypeWrapperINS_9SVGLengthENS_19SVGAnimatedTemplateIS1_EEED0Ev
+__ZN7WebCore19JSSVGAnimatedLengthD1Ev
+__ZN7WebCore19JSSVGAnimatedLengthD2Ev
+__ZN7WebCore15JSSVGSetElementD1Ev
+__ZN7WebCore14SVGFontElementD0Ev
+__ZN3WTF6VectorIN7WebCore24SVGHorizontalKerningPairELm0EE6shrinkEm
+__ZN7WebCore22SVGMissingGlyphElementD0Ev
+__ZN7WebCore15SVGGlyphElementD0Ev
+__ZN7WebCore15SVGHKernElementD0Ev
+__ZN7WebCore13SVGSetElementD0Ev
+__ZN7WebCore17SVGAnimateElementD2Ev
+__ZN7WebCore18SVGTextPathElementD0Ev
+__ZN7WebCore20JSSVGAltGlyphElementD1Ev
+__ZThn8_N7WebCore14SVGTextElementD0Ev
+__ZN7WebCore18SVGAltGlyphElementD0Ev
+__ZN7WebCore26JSSVGTSpanElementPrototypeD1Ev
+__ZN7WebCore25JSSVGFontElementPrototypeD1Ev
+__ZN7WebCore26JSSVGGlyphElementPrototypeD1Ev
+__ZN7WebCore33JSSVGMissingGlyphElementPrototypeD1Ev
+__ZN7WebCore29JSSVGFontFaceElementPrototypeD1Ev
+__ZN7WebCore19JSSVGPointPrototypeD1Ev
+__ZN7WebCore28JSSVGAnimatedLengthPrototypeD1Ev
+__ZN7WebCore24JSSVGSetElementPrototypeD1Ev
+__ZN7WebCore30JSSVGAnimationElementPrototypeD1Ev
+__ZN7WebCore29JSSVGAltGlyphElementPrototypeD1Ev
+__ZN7WebCore8Document29parseDNSPrefetchControlHeaderERKNS_6StringE
+__ZN7WebCore15FormDataBuilder28generateUniqueBoundaryStringEv
+__ZN7WebCore15FormDataBuilder20beginMultiPartHeaderERN3WTF6VectorIcLm0EEERKNS_7CStringES7_
+__ZN7WebCore15FormDataBuilder28addBoundaryToMultiPartHeaderERN3WTF6VectorIcLm0EEERKNS_7CStringEb
+__ZN7WebCore15FormDataBuilder28addFilenameToMultiPartHeaderERN3WTF6VectorIcLm0EEERKNS_12TextEncodingERKNS_6StringE
+__ZN7WebCore15FormDataBuilder21finishMultiPartHeaderERN3WTF6VectorIcLm0EEE
+__ZN7WebCoreL37nonCachingStaticReplaceFunctionGetterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11FrameLoader27handleUnimplementablePolicyERKNS_13ResourceErrorE
+__ZN7WebCore11FrameLoader25setupForReplaceByMIMETypeERKNS_6StringE
+__ZN7WebCore14DocumentLoader25setupForReplaceByMIMETypeERKNS_6StringE
+__ZN7WebCore14ResourceLoader17clearResourceDataEv
+__ZN7WebCore11FrameLoader12setReplacingEv
+__ZN7WebCore12SharedBuffer5clearEv
+__ZN7WebCore12SharedBuffer17clearPlatformDataEv
+__ZNK7WebCore11CachedImage7isImageEv
+__ZN7WebCore14DocumentLoader39subresourceLoaderFinishedLoadingOnePartEPNS_14ResourceLoaderE
+__ZN7WebCore17HTMLSelectElement23restoreFormControlStateERKNS_6StringE
+__ZN7WebCore19HTMLTextAreaElement23restoreFormControlStateERKNS_6StringE
+__ZN7WebCore14jsNodeOnresizeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node8onresizeEv
+__ZN7WebCore24CanvasRenderingContext2D9drawImageEPNS_17HTMLCanvasElementEffffRi
+__ZN7WebCoreL16imageConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore15SVGImageElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14SVGImageLoaderC1EPNS_15SVGImageElementE
+__ZN7WebCore14SVGImageLoaderC2EPNS_15SVGImageElementE
+__ZN7WebCore15SVGImageElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZThn408_NK7WebCore15SVGImageElement14contextElementEv
+__ZNK7WebCore15SVGImageElement14contextElementEv
+__ZN7WebCore15SVGImageElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZN7WebCore15SVGImageElement20insertedIntoDocumentEv
+__ZNK7WebCore15SVGImageElement24imageSourceAttributeNameEv
+__ZNK7WebCore14SVGImageLoader9sourceURIERKNS_12AtomicStringE
+__ZN7WebCore22EmptyFrameLoaderClient38dispatchDidLoadResourceFromMemoryCacheEPNS_14DocumentLoaderERKNS_15ResourceRequestERKNS_1
+__ZN7WebCore22EmptyFrameLoaderClient26dispatchDidReceiveResponseEPNS_14DocumentLoaderEmRKNS_16ResourceResponseE
+__ZN7WebCore22EmptyFrameLoaderClient31dispatchDidReceiveContentLengthEPNS_14DocumentLoaderEmi
+__ZN7WebCore22EmptyFrameLoaderClient24dispatchDidFinishLoadingEPNS_14DocumentLoaderEm
+__ZN7WebCore15SVGImageElement6attachEv
+__ZNK7WebCore15SVGImageElement7isValidEv
+__ZN7WebCore15SVGImageElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore14RenderSVGImageC1EPNS_15SVGImageElementE
+__ZN7WebCore14RenderSVGImageC2EPNS_15SVGImageElementE
+__ZNK7WebCore14RenderSVGImage13requiresLayerEv
+__ZN7WebCore14RenderSVGImage12imageChangedEPvPKNS_7IntRectE
+__ZN7WebCore14RenderSVGImage29clippedOverflowRectForRepaintEPNS_20RenderBoxModelObjectE
+__ZNK7WebCore14RenderSVGImage29repaintRectInLocalCoordinatesEv
+__ZN7WebCore14RenderSVGImage21computeRectForRepaintEPNS_20RenderBoxModelObjectERNS_7IntRectEb
+__ZNK7WebCore14RenderSVGImage22localToParentTransformEv
+__ZN7WebCore15SVGImageElement27haveLoadedRequiredResourcesEv
+__ZThn360_NK7WebCore15SVGImageElement14contextElementEv
+__ZN7WebCore14SVGImageLoader17dispatchLoadEventEv
+__ZN7WebCore14RenderSVGImage6layoutEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_15SVGImageElementENS_9SVGLengthEXadL_ZNS_8SVGNames14imageTagStringEEEXadL_ZNS3_16heightAt
+__ZNK7WebCore19SVGAnimatedPropertyINS_15SVGImageElementENS_9SVGLengthEXadL_ZNS_8SVGNames14imageTagStringEEEXadL_ZNS3_11yAttrStr
+__ZNK7WebCore19SVGAnimatedPropertyINS_15SVGImageElementENS_9SVGLengthEXadL_ZNS_8SVGNames14imageTagStringEEEXadL_ZNS3_11xAttrStr
+__ZNK7WebCore5Image23hasSingleSecurityOriginEv
+__ZN7WebCore14RenderSVGImage5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore14RenderSVGImage25adjustRectsForAspectRatioERNS_9FloatRectES2_PNS_22SVGPreserveAspectRatioE
+-[WebCoreResourceHandleAsDelegate connection:didReceiveAuthenticationChallenge:]
+__ZN7WebCore4coreEP28NSURLAuthenticationChallenge
+__ZN7WebCore23AuthenticationChallengeC1EP28NSURLAuthenticationChallenge
+__ZN7WebCore23AuthenticationChallengeC2EP28NSURLAuthenticationChallenge
+__ZN7WebCore4coreEP15NSURLCredential
+__ZN7WebCore10CredentialC1ERKNS_6StringES3_NS_21CredentialPersistenceE
+__ZN7WebCore10CredentialC2ERKNS_6StringES3_NS_21CredentialPersistenceE
+__ZN7WebCore4coreEP20NSURLProtectionSpace
+__ZN7WebCore15ProtectionSpaceC1ERKNS_6StringEiNS_25ProtectionSpaceServerTypeES3_NS_35ProtectionSpaceAuthenticationSchemeE
+__ZN7WebCore15ProtectionSpaceC2ERKNS_6StringEiNS_25ProtectionSpaceServerTypeES3_NS_35ProtectionSpaceAuthenticationSchemeE
+__ZN7WebCore27AuthenticationChallengeBaseC2ERKNS_15ProtectionSpaceERKNS_10CredentialEjRKNS_16ResourceResponseERKNS_13ResourceEr
+__ZN7WebCore14ResourceHandle33didReceiveAuthenticationChallengeERKNS_23AuthenticationChallengeE
+__ZN7WebCore14ResourceHandle18receivedCredentialERKNS_23AuthenticationChallengeERKNS_10CredentialE
+__ZN7WebCore27AuthenticationChallengeBase7compareERKNS_23AuthenticationChallengeES3_
+__ZNK7WebCore27AuthenticationChallengeBase6isNullEv
+__ZNK7WebCore27AuthenticationChallengeBase15protectionSpaceEv
+__ZN7WebCoreeqERKNS_15ProtectionSpaceES2_
+__ZNK7WebCore15ProtectionSpace4hostEv
+__ZNK7WebCore15ProtectionSpace4portEv
+__ZNK7WebCore15ProtectionSpace10serverTypeEv
+__ZNK7WebCore15ProtectionSpace5realmEv
+__ZNK7WebCore15ProtectionSpace20authenticationSchemeEv
+__ZNK7WebCore27AuthenticationChallengeBase18proposedCredentialEv
+__ZN7WebCoreeqERKNS_10CredentialES2_
+__ZNK7WebCore10Credential4userEv
+__ZNK7WebCore10Credential8passwordEv
+__ZNK7WebCore10Credential11persistenceEv
+__ZNK7WebCore27AuthenticationChallengeBase20previousFailureCountEv
+__ZNK7WebCore27AuthenticationChallengeBase15failureResponseEv
+__ZN7WebCore20ResourceResponseBase7compareERKNS_16ResourceResponseES3_
+__ZN3WTFeqIN7WebCore12AtomicStringENS1_6StringENS1_15CaseFoldingHashENS_10HashTraitsIS2_EENS5_IS3_EEEEbRKNS_7HashMapIT_T0_T1_T2
+__ZN7WebCore16ResourceResponse15platformCompareERKS0_S2_
+__ZNK7WebCore27AuthenticationChallengeBase5errorEv
+__ZN7WebCore17ResourceErrorBase7compareERKNS_13ResourceErrorES3_
+__ZN7WebCore23AuthenticationChallenge15platformCompareERKS0_S2_
+__ZN7WebCore3macERKNS_10CredentialE
+__ZN7WebCore23AuthenticationChallengeD2Ev
+__ZN7WebCore33jsDOMWindowPrototypeFunctionPrintEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore28objectToStringFunctionGetterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore9JSHistory14deletePropertyEPN3JSC9ExecStateERKNS1_10IdentifierE
+__ZN7WebCore10JSLocation14deletePropertyEPN3JSC9ExecStateERKNS1_10IdentifierE
+__ZN7WebCore30nonCachingStaticFunctionGetterIXadL_ZNS_33jsDOMWindowPrototypeFunctionFocusEPN3JSC9ExecStateEPNS1_8JSObjectENS1_7
+__ZN7WebCore30nonCachingStaticFunctionGetterIXadL_ZNS_32jsDOMWindowPrototypeFunctionBlurEPN3JSC9ExecStateEPNS1_8JSObjectENS1_7J
+__ZN7WebCore30nonCachingStaticFunctionGetterIXadL_ZNS_33jsDOMWindowPrototypeFunctionCloseEPN3JSC9ExecStateEPNS1_8JSObjectENS1_7
+__ZN7WebCore17jsDOMWindowWindowEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16setJSNodeOnpasteEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node10setOnpasteEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore15setJSNodeOndropEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node9setOndropEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCoreL34nonCachingStaticBackFunctionGetterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL37nonCachingStaticForwardFunctionGetterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL32nonCachingStaticGoFunctionGetterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL36nonCachingStaticAssignFunctionGetterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCoreL36nonCachingStaticReloadFunctionGetterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSDOMWindowShell12lookupSetterEPN3JSC9ExecStateERKNS1_10IdentifierE
+__ZN7WebCore11JSDOMWindow12lookupSetterEPN3JSC9ExecStateERKNS1_10IdentifierE
+__ZN7WebCore27setJSHTMLVideoElementPosterEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLVideoElement9setPosterERKNS_6StringE
+__ZNK7WebCore16HTMLVideoElement24imageSourceAttributeNameEv
+__ZN7WebCore17HTMLSourceElement18scheduleErrorEventEv
+__ZN7WebCore5TimerINS_17HTMLSourceElementEE5firedEv
+__ZN7WebCore17HTMLSourceElement20errorEventTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore28jsHTMLMediaElementCurrentSrcEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLMediaElement10currentSrcEv
+__ZN7WebCore11FrameLoader35shouldInterruptLoadForXFrameOptionsERKNS_6StringERKNS_4KURLE
+__ZN7WebCore49jsXMLHttpRequestPrototypeFunctionAddEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSXMLHttpRequest16addEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore14XMLHttpRequest16addEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
+__ZNK7WebCore15HTMLLinkElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZNK7WebCore17HTMLScriptElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN7WebCore40jsWorkerContextXMLHttpRequestConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore15JSWorkerContext14xmlHttpRequestEPN3JSC9ExecStateE
+__ZNK7WebCore13WorkerContext18virtualCompleteURLERKNS_6StringE
+__ZNK7WebCore13WorkerContext11completeURLERKNS_6StringE
+__ZN7WebCore22WorkerThreadableLoader25loadResourceSynchronouslyEPNS_13WorkerContextERKNS_15ResourceRequestERNS_22ThreadableLoad
+__ZN7WebCore6String6numberEm
+__ZN7WebCore22WorkerThreadableLoaderC1EPNS_13WorkerContextEPNS_22ThreadableLoaderClientERKNS_6StringERKNS_15ResourceRequestENS_
+__ZN7WebCore22WorkerThreadableLoaderC2EPNS_13WorkerContextEPNS_22ThreadableLoaderClientERKNS_6StringERKNS_15ResourceRequestENS_
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridgeC1EN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEERNS_20WorkerMes
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridgeC2EN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEERNS_20WorkerMes
+__ZN7WebCore18createCallbackTaskIPNS_22WorkerThreadableLoader16MainThreadBridgeES3_NS_15ResourceRequestESt8auto_ptrINS_30CrossT
+__ZN7WebCore21CrossThreadCopierBaseILb0ENS_15ResourceRequestEE4copyERKS1_
+__ZNK7WebCore19ResourceRequestBase8copyDataEv
+__ZNK7WebCore13HTTPHeaderMap8copyDataEv
+__ZN7WebCore20WorkerMessagingProxy22postTaskToWorkerObjectEN3WTF10PassRefPtrINS_22ScriptExecutionContext4TaskEEE
+__ZN7WebCore13WorkerRunLoop9runInModeEPNS_13WorkerContextERKNS_6StringE
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridge22mainThreadCreateLoaderEPNS_22ScriptExecutionContextEPS1_St8auto_ptrINS_
+__ZN7WebCore19ResourceRequestBase5adoptESt8auto_ptrINS_30CrossThreadResourceRequestDataEE
+__ZN7WebCore13HTTPHeaderMap5adoptESt8auto_ptrIN3WTF6VectorISt4pairINS_6StringES5_ELm0EEEE
+__ZN7WebCore19ResourceRequestBase19setAllowHTTPCookiesEb
+__ZN7WebCore18GenericWorkerTask5IPNS_22WorkerThreadableLoader16MainThreadBridgeES3_St8auto_ptrINS_30CrossThreadResourceRequestD
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridge18didReceiveResponseERKNS_16ResourceResponseE
+__ZN7WebCore18createCallbackTaskIN3WTF6RefPtrINS1_16ThreadSafeSharedINS_29ThreadableLoaderClientWrapperEEEEENS2_IS4_EENS_16Reso
+__ZN7WebCore21CrossThreadCopierBaseILb0ENS_16ResourceResponseEE4copyERKS1_
+__ZNK7WebCore20ResourceResponseBase8copyDataEv
+__ZNK7WebCore20ResourceResponseBase16lastModifiedDateEv
+__ZN7WebCore20WorkerMessagingProxy30postTaskForModeToWorkerContextEN3WTF10PassRefPtrINS_22ScriptExecutionContext4TaskEEERKNS_6S
+__ZN7WebCore18GenericWorkerTask2IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EESt8auto_ptrINS_31Cross
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridge14didReceiveDataEPKci
+__ZN7WebCore18createCallbackTaskIN3WTF6RefPtrINS1_16ThreadSafeSharedINS_29ThreadableLoaderClientWrapperEEEEENS2_IS4_EESt8auto_p
+__ZN7WebCoreL31workerContextDidReceiveResponseEPNS_22ScriptExecutionContextEN3WTF6RefPtrINS_29ThreadableLoaderClientWrapperEEES
+__ZN7WebCore20ResourceResponseBase5adoptESt8auto_ptrINS_31CrossThreadResourceResponseDataEE
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridge16didFinishLoadingEm
+__ZN7WebCore20ResourceResponseBase6setURLERKNS_4KURLE
+__ZN7WebCore18createCallbackTaskIN3WTF6RefPtrINS1_16ThreadSafeSharedINS_29ThreadableLoaderClientWrapperEEEEENS2_IS4_EEmmEENS1_1
+__ZN7WebCore20ResourceResponseBase11setMimeTypeERKNS_6StringE
+__ZN7WebCore20ResourceResponseBase24setExpectedContentLengthEx
+__ZN7WebCore20ResourceResponseBase19setTextEncodingNameERKNS_6StringE
+__ZN7WebCore20ResourceResponseBase20setSuggestedFilenameERKNS_6StringE
+__ZN7WebCore20ResourceResponseBase17setHTTPStatusTextERKNS_6StringE
+__ZN7WebCore20ResourceResponseBase17setExpirationDateEl
+__ZN7WebCore20ResourceResponseBase19setLastModifiedDateEl
+__ZN7WebCoreL27workerContextDidReceiveDataEPNS_22ScriptExecutionContextEN3WTF6RefPtrINS_29ThreadableLoaderClientWrapperEEESt8au
+__ZN7WebCore18GenericWorkerTask2IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EESt8auto_ptrINS1_6Vecto
+__ZN7WebCore18GenericWorkerTask2IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EEmmE11performTaskEPNS_2
+__ZN7WebCoreL29workerContextDidFinishLoadingEPNS_22ScriptExecutionContextEN3WTF6RefPtrINS_29ThreadableLoaderClientWrapperEEEm
+__ZN7WebCore13WorkerContext33resourceRetrievedByXMLHttpRequestEmRKNS_12ScriptStringE
+__ZN7WebCore13WorkerContext10addMessageENS_18MessageDestinationENS_13MessageSourceENS_12MessageLevelERKNS_6StringEjS6_
+__ZThn8_N7WebCore20WorkerMessagingProxy32postConsoleMessageToWorkerObjectENS_18MessageDestinationENS_13MessageSourceENS_12Messa
+__ZN7WebCore20WorkerMessagingProxy32postConsoleMessageToWorkerObjectENS_18MessageDestinationENS_13MessageSourceENS_12MessageLev
+__ZN7WebCore18createCallbackTaskIPNS_20WorkerMessagingProxyES2_NS_18MessageDestinationES3_NS_13MessageSourceES4_NS_12MessageLev
+__ZN7WebCore21CrossThreadCopierBaseILb0ENS_6StringEE4copyERKS1_
+__ZN7WebCore18GenericWorkerTask2IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EEmmED0Ev
+__ZN7WebCore18GenericWorkerTask7IPNS_20WorkerMessagingProxyES2_NS_18MessageDestinationES3_NS_13MessageSourceES4_NS_12MessageLev
+__ZN7WebCoreL22postConsoleMessageTaskEPNS_22ScriptExecutionContextEPNS_20WorkerMessagingProxyENS_18MessageDestinationENS_13Mess
+__ZN7WebCore22WorkerThreadableLoaderD0Ev
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridge7destroyEv
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridge18clearClientWrapperEv
+__ZN7WebCore18createCallbackTaskIPNS_22WorkerThreadableLoader16MainThreadBridgeES3_EEN3WTF10PassRefPtrINS_22ScriptExecutionCont
+__ZN7WebCore18GenericWorkerTask1IPNS_22WorkerThreadableLoader16MainThreadBridgeES3_E11performTaskEPNS_22ScriptExecutionContextE
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridge17mainThreadDestroyEPNS_22ScriptExecutionContextEPS1_
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridgeD0Ev
+__ZN7WebCore18GenericWorkerTask1IPNS_22WorkerThreadableLoader16MainThreadBridgeES3_ED0Ev
+__ZN7WebCore45jsWorkerContextPrototypeFunctionImportScriptsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore15JSWorkerContext13importScriptsEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore13WorkerContext13importScriptsERKN3WTF6VectorINS_6StringELm0EEERKS3_iRi
+__ZN7WebCore25WorkerImportScriptsClient18didReceiveResponseERKNS_16ResourceResponseE
+__ZN7WebCore25WorkerImportScriptsClient14didReceiveDataEPKci
+__ZN7WebCore25WorkerImportScriptsClient16didFinishLoadingEm
+__ZN7WebCore13WorkerContext14scriptImportedEmRKNS_6StringE
+__ZN7WebCore50jsXMLHttpRequestExceptionPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore25JSXMLHttpRequestException9classInfoEv
+__ZN7WebCore22WorkerScriptController12setExceptionENS_11ScriptValueE
+__ZN7WebCore36jsXMLHttpRequestExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14XMLHttpRequest28makeCrossOriginAccessRequestERi
+__ZN7WebCore32isSimpleCrossOriginAccessRequestERKNS_6StringERKNS_13HTTPHeaderMapE
+__ZN7WebCore45isOnAccessControlSimpleRequestMethodWhitelistERKNS_6StringE
+__ZN7WebCore14XMLHttpRequest34makeSimpleCrossOriginAccessRequestERi
+__ZN7WebCore24passesAccessControlCheckERKNS_16ResourceResponseEbPNS_14SecurityOriginE
+__ZN7WebCore14XMLHttpRequest41makeCrossOriginAccessRequestWithPreflightERi
+__ZN7WebCore31CrossOriginPreflightResultCache16canSkipPreflightERKNS_6StringERKNS_4KURLEbS3_RKNS_13HTTPHeaderMapE
+__ZN7WebCore14XMLHttpRequest27didReceiveResponsePreflightERKNS_16ResourceResponseE
+__ZN7WebCore35CrossOriginPreflightResultCacheItem5parseERKNS_16ResourceResponseE
+__ZN7WebCoreL27addToAccessControlAllowListINS_10StringHashEEEvRKNS_6StringEjjRN3WTF7HashSetIS2_T_NS5_10HashTraitsIS2_EEEE
+__ZNK7WebCore6String13substringCopyEjj
+__ZN7WebCore10StringImpl13substringCopyEjj
+__ZN3WTF9HashTableIN7WebCore6StringES2_NS_17IdentityExtractorIS2_EENS1_15CaseFoldingHashENS_10HashTraitsIS2_EES7_E5clearEv
+__ZNK7WebCore6String12toUIntStrictEPbi
+__ZN7WebCore10StringImpl12toUIntStrictEPbi
+__ZN7WebCore22charactersToUIntStrictEPKtmPbi
+__ZNK7WebCore35CrossOriginPreflightResultCacheItem23allowsCrossOriginMethodERKNS_6StringE
+__ZNK7WebCore35CrossOriginPreflightResultCacheItem24allowsCrossOriginHeadersERKNS_13HTTPHeaderMapE
+__ZN7WebCore31CrossOriginPreflightResultCache11appendEntryERKNS_6StringERKNS_4KURLEPNS_35CrossOriginPreflightResultCacheItemE
+__ZN3WTF7HashMapISt4pairIN7WebCore6StringENS2_4KURLEEPNS2_35CrossOriginPreflightResultCacheItemENS_8PairHashIS3_S4_EENS_10HashT
+__ZN3WTF9HashTableISt4pairIN7WebCore6StringENS2_4KURLEES1_IS5_PNS2_35CrossOriginPreflightResultCacheItemEENS_18PairFirstExtract
+__ZN7WebCore14XMLHttpRequest25didFinishLoadingPreflightEv
+__ZN7WebCore14XMLHttpRequest33handleAsynchronousPreflightResultEv
+__ZNK7WebCore35CrossOriginPreflightResultCacheItem13allowsRequestEbRKNS_6StringERKNS_13HTTPHeaderMapE
+__ZN7WebCore45isOnAccessControlSimpleRequestHeaderWhitelistERKNS_6StringES2_
+__ZN7WebCoreL27addToAccessControlAllowListINS_15CaseFoldingHashEEEvRKNS_6StringEjjRN3WTF7HashSetIS2_T_NS5_10HashTraitsIS2_EEEE
+__ZN7WebCore32jsXMLHttpRequestExceptionMessageEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore40isOnAccessControlResponseHeaderWhitelistERKNS_6StringE
+__ZN7WebCore14XMLHttpRequest4openERKNS_6StringERKNS_4KURLEbS3_S3_Ri
+-[WebCoreSynchronousLoader connection:didReceiveAuthenticationChallenge:]
+__ZN7WebCoreL34newStreamingTextDecoderUserDefinedERKNS_12TextEncodingEPKv
+__ZN7WebCore20TextCodecUserDefined6decodeEPKcmbbRb
+__ZN7WebCore20TextCodecUserDefinedD0Ev
+__ZN7WebCore29jsXMLHttpRequestExceptionNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore52jsXMLHttpRequestPrototypeFunctionRemoveEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSXMLHttpRequest19removeEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore14XMLHttpRequest19removeEventListenerERKNS_12AtomicStringEPNS_13EventListenerEb
+__ZN7WebCore29setJSXMLHttpRequestOnprogressEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore30setJSXMLHttpRequestOnloadstartEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZThn16_N7WebCore24DocumentThreadableLoader15willSendRequestEPNS_17SubresourceLoaderERNS_15ResourceRequestERKNS_16ResourceResp
+__ZN7WebCore24DocumentThreadableLoader15willSendRequestEPNS_17SubresourceLoaderERNS_15ResourceRequestERKNS_16ResourceResponseE
+__ZThn16_N7WebCore14XMLHttpRequest20didFailRedirectCheckEv
+__ZN7WebCore14XMLHttpRequest20didFailRedirectCheckEv
+__ZN7WebCore22JSXMLHttpRequestUpload3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore32setJSXMLHttpRequestUploadOnabortEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZNK7WebCore20XMLHttpRequestUpload22scriptExecutionContextEv
+__ZN7WebCore32setJSXMLHttpRequestUploadOnerrorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore31setJSXMLHttpRequestUploadOnloadEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore36setJSXMLHttpRequestUploadOnloadstartEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore35setJSXMLHttpRequestUploadOnprogressEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCoreL10formCreateEP14__CFReadStreamPv
+__ZN7WebCoreL20getStreamFormDataMapEv
+__ZN3WTF7HashMapIP14__CFReadStreamNS_6RefPtrIN7WebCore8FormDataEEENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS9_IS6_EEE3setERKS2_RK
+__ZN3WTF9HashTableIP14__CFReadStreamSt4pairIS2_NS_6RefPtrIN7WebCore8FormDataEEEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS2_EEN
+__ZN7WebCore18httpBodyFromStreamEP13NSInputStream
+__ZNK3WTF7HashMapIP14__CFReadStreamNS_6RefPtrIN7WebCore8FormDataEEENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS9_IS6_EEE3getERKS2_
+__ZN7WebCoreL12formScheduleEP14__CFReadStreamP11__CFRunLoopPK10__CFStringPv
+__ZN7WebCore12SchedulePairC1EP11__CFRunLoopPK10__CFString
+__ZN7WebCore12SchedulePairC2EP11__CFRunLoopPK10__CFString
+__ZN7WebCoreL8formOpenEP14__CFReadStreamP13CFStreamErrorPhPv
+__ZN7WebCoreL14openNextStreamEPNS_16FormStreamFieldsE
+__ZN7WebCoreL20advanceCurrentStreamEPNS_16FormStreamFieldsE
+__ZN7WebCoreL18closeCurrentStreamEPNS_16FormStreamFieldsE
+__ZN7WebCoreL17formEventCallbackEP14__CFReadStreammPv
+__ZN7WebCoreL8formReadEP14__CFReadStreamPhlP13CFStreamErrorS2_Pv
+__ZN7WebCoreL11formCanReadEP14__CFReadStreamPv
+__ZN7WebCoreL9formCloseEP14__CFReadStreamPv
+__ZN7WebCore20XMLHttpRequestUpload18dispatchErrorEventEv
+__ZN7WebCore20XMLHttpRequestUpload35dispatchXMLHttpRequestProgressEventEPNS_13EventListenerERKNS_12AtomicStringEbjj
+__ZN7WebCore20XMLHttpRequestUpload14refEventTargetEv
+__ZN7WebCore20XMLHttpRequestUpload22toXMLHttpRequestUploadEv
+__ZN7WebCore20XMLHttpRequestUpload16derefEventTargetEv
+__ZNK7WebCore20XMLHttpRequestUpload12hasListenersEv
+__ZN7WebCore20XMLHttpRequestUpload22dispatchLoadStartEventEv
+__ZN7WebCoreL12formFinalizeEP14__CFReadStreamPv
+__ZN7WebCore20XMLHttpRequestUpload21dispatchProgressEventExx
+__ZN7WebCore20XMLHttpRequestUpload17dispatchLoadEventEv
+__ZN7WebCore10toDocumentEN3JSC7JSValueE
+__ZN7WebCore14XMLHttpRequest4sendEPNS_8DocumentERi
+__ZN3WTF6VectorIN7WebCore6StringELm16EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore6StringELm16EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore6StringELm16EE15reserveCapacityEm
+__ZN7WebCore5TimerINS_14ResourceHandleEE5firedEv
+__ZN7WebCore14ResourceHandle11fireFailureEPNS_5TimerIS0_EE
+__ZN7WebCore14ResourceLoader10wasBlockedEPNS_14ResourceHandleE
+__ZN7WebCore14ResourceLoader12blockedErrorEv
+__ZNK7WebCore11FrameLoader12blockedErrorERKNS_15ResourceRequestE
+__ZNK7WebCore18JSSVGCircleElement9classInfoEv
+__ZN7WebCoreL12aConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore11SVGAElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore11SVGAElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore11SVGAElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZN7WebCore11SVGAElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore15RenderSVGInlineC1EPNS_4NodeE
+__ZNK7WebCore11SVGAElement25childShouldCreateRendererEPNS_4NodeE
+__ZNK7WebCore10SVGElement13isTextContentEv
+__ZN7WebCore22JSSVGGElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCoreL28createSVGImageElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore17JSSVGImageElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSSVGImageElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15SVGImageElementEEE
+__ZN7WebCore17JSSVGImageElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15SVGImageElementEEE
+__ZN7WebCore17JSSVGImageElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore23jsSVGImageElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_15SVGImageElementENS_9SVGLengthEXadL_ZNS_8SVGNames14imageTagStringEEEXadL_ZNS3_16heightA
+__ZN7WebCore22jsSVGImageElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_15SVGImageElementENS_9SVGLengthEXadL_ZNS_8SVGNames14imageTagStringEEEXadL_ZNS3_15widthAt
+__ZNK7WebCore14RenderSVGImage19mapLocalToContainerEPNS_20RenderBoxModelObjectEbbRNS_14TransformStateE
+__ZN7WebCore15RenderSVGInlineD0Ev
+__ZN7WebCore14RenderSVGImageD0Ev
+__ZN7WebCore17JSSVGImageElementD1Ev
+__ZN7WebCore26JSSVGImageElementPrototypeD1Ev
+__ZN7WebCore11SVGAElementD0Ev
+__ZN7WebCore15SVGImageElementD0Ev
+__ZN7WebCore14SVGImageLoaderD1Ev
+__ZN7WebCore14SVGImageLoaderD2Ev
+__ZN7WebCore22WorkerThreadableLoader6cancelEv
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridge6cancelEv
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridge7didFailERKNS_13ResourceErrorE
+__ZN7WebCore18createCallbackTaskIN3WTF6RefPtrINS1_16ThreadSafeSharedINS_29ThreadableLoaderClientWrapperEEEEENS2_IS4_EENS_13Reso
+__ZN7WebCore21CrossThreadCopierBaseILb0ENS_13ResourceErrorEE4copyERKS1_
+__ZNK7WebCore17ResourceErrorBase4copyEv
+__ZN7WebCore22WorkerThreadableLoader16MainThreadBridge16mainThreadCancelEPNS_22ScriptExecutionContextEPS1_
+__ZN7WebCore22WorkerThreadableLoader21derefThreadableLoaderEv
+__ZNK7WebCore8FormData8deepCopyEv
+__ZN7WebCore18GenericWorkerTask2IN3WTF10PassRefPtrINS_29ThreadableLoaderClientWrapperEEENS1_6RefPtrIS3_EENS_13ResourceErrorERKS
+__ZN7WebCoreL20workerContextDidFailEPNS_22ScriptExecutionContextEN3WTF6RefPtrINS_29ThreadableLoaderClientWrapperEEERKNS_13Resou
+__ZN7WebCore13WorkerContext15reportExceptionERKNS_6StringEiS3_
+__ZThn8_N7WebCore20WorkerMessagingProxy27postExceptionToWorkerObjectERKNS_6StringEiS3_
+__ZN7WebCore20WorkerMessagingProxy27postExceptionToWorkerObjectERKNS_6StringEiS3_
+__ZN7WebCore19WorkerExceptionTask11performTaskEPNS_22ScriptExecutionContextE
+__ZN7WebCore19WorkerExceptionTaskD0Ev
+__ZN7WebCore14RenderReplaced13paintReplacedERNS_12RenderObject9PaintInfoEii
+__ZNK7WebCore11RenderMedia10renderNameEv
+__ZN7WebCore29jsHTMLMediaElementCurrentTimeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLMediaElementErrorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLMediaElement5errorEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_10MediaErrorE
+__ZN7WebCore12JSMediaErrorC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10MediaErrorEEE
+__ZN7WebCore12JSMediaErrorC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10MediaErrorEEE
+__ZN7WebCore12JSMediaError18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore12JSMediaError9classInfoEv
+__ZN7WebCore12JSMediaErrorD1Ev
+__ZN7WebCore12JSMediaErrorD2Ev
+__ZN7WebCore27jsHTMLMediaElementStartTimeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLMediaElement9startTimeEv
+__ZNK7WebCore11MediaPlayer9startTimeEv
+__ZNK7WebCore27MediaPlayerPrivateInterface9startTimeEv
+__ZN7WebCore24jsHTMLMediaElementPausedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16jsMediaErrorCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsHTMLMediaElementAutoplayEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsHTMLMediaElementBufferedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLMediaElement8bufferedEv
+__ZN7WebCore11MediaPlayer15maxTimeBufferedEv
+__ZNK7WebCore18MediaPlayerPrivate15maxTimeBufferedEv
+__ZN7WebCore46jsHTMLMediaElementPrototypeFunctionCanPlayTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16HTMLMediaElement11canPlayTypeERKNS_6StringE
+__ZN7WebCore13MediaDocumentC1EPNS_5FrameE
+__ZN7WebCore13MediaDocumentC2EPNS_5FrameE
+__ZN7WebCore13MediaDocument15createTokenizerEv
+__ZNK7WebCore14MediaTokenizer12wantsRawDataEv
+__ZN7WebCore14MediaTokenizer12writeRawDataEPKci
+__ZN7WebCore14MediaTokenizer23createDocumentStructureEv
+__ZNK7WebCore13MediaDocument15isMediaDocumentEv
+__ZN7WebCore14MediaTokenizer6finishEv
+__ZN7WebCore13MediaDocument19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore14MediaTokenizerD0Ev
+__ZN7WebCore14DocumentLoader22cancelMainResourceLoadERKNS_13ResourceErrorE
+__ZN7WebCore18MediaPlayerPrivate17createQTMovieViewEv
+__ZN7WebCore18MediaPlayerPrivate17detachQTMovieViewEv
+__ZL15initQTMovieViewv
+-[WebCoreMovieObserver setView:]
+__ZN7WebCore24MediaControlInputElement7hitTestERKNS_8IntPointE
+__ZN7WebCore14RenderThemeMac23hitTestMediaControlPartEPNS_12RenderObjectERKNS_8IntPointE
+__ZN7WebCore11RenderTheme23hitTestMediaControlPartEPNS_12RenderObjectERKNS_8IntPointE
+__ZN7WebCore13MediaDocumentD0Ev
+__ZN7WebCore26jsHTMLMediaElementControlsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29MediaControlPlayButtonElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore16HTMLMediaElement15togglePlayStateEv
+__ZThn8_N7WebCore29MediaControlPlayButtonElementD0Ev
+__ZN7WebCore11RenderVideo20intrinsicSizeChangedEv
+__ZN7WebCore29setJSHTMLMediaElementControlsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLMediaElement11setControlsEb
+__ZN7WebCore7Element19setBooleanAttributeERKNS_13QualifiedNameEb
+__ZN7WebCore40jsHTMLMediaElementPrototypeFunctionPauseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore28jsHTMLMediaElementAutobufferEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLMediaElement10autobufferEv
+__ZN7WebCore31setJSHTMLMediaElementAutobufferEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLMediaElement13setAutobufferEb
+__ZN7WebCore29setJSHTMLMediaElementAutoplayEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLMediaElement11setAutoplayEb
+__ZN7WebCore22jsHTMLMediaElementLoopEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25setJSHTMLMediaElementLoopEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLMediaElement7setLoopEb
+__ZN7WebCore23jsHTMLMediaElementEndedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLMediaElementMutedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26setJSHTMLMediaElementMutedEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLMediaElement8setMutedEb
+__ZN7WebCore18MediaPlayerPrivate9setVolumeEf
+__ZN7WebCore24jsHTMLMediaElementPlayedEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLMediaElement6playedEv
+__ZN7WebCore10TimeRanges4copyEv
+__ZN7WebCore24jsHTMLVideoElementPosterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsHTMLMediaElementSeekingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLMediaElement7seekingEv
+__ZN7WebCore28jsHTMLVideoElementVideoWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLVideoElement10videoWidthEv
+__ZN7WebCore29jsHTMLVideoElementVideoHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLVideoElement11videoHeightEv
+__ZNK7WebCore17HTMLSourceElement5mediaEv
+__ZN7WebCore22jsHTMLSourceElementSrcEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore22NullMediaPlayerPrivate8durationEv
+__ZN7WebCore24jsHTMLMediaElementVolumeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLMediaElement6volumeEv
+__ZN7WebCore27setJSHTMLMediaElementVolumeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLMediaElement9setVolumeEfRi
+__ZN7WebCore23jsHTMLVideoElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLVideoElement5widthEv
+__ZNK7WebCore6String6toUIntEPb
+__ZN7WebCore10StringImpl6toUIntEPb
+__ZN7WebCore16charactersToUIntEPKtmPb
+__ZN7WebCore24jsHTMLVideoElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16HTMLVideoElement6heightEv
+__ZN7WebCore26setJSHTMLVideoElementWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLVideoElement8setWidthEj
+__ZN7WebCore27setJSHTMLVideoElementHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLVideoElement9setHeightEj
+__ZNK7WebCore25AccessibilityRenderObject13valueForRangeEv
+__ZNK7WebCore25AccessibilityRenderObject16minValueForRangeEv
+__ZNK7WebCore25AccessibilityRenderObject16maxValueForRangeEv
+__ZNK7WebCore25AccessibilityRenderObject16activeDescendantEv
+-[AccessibilityObjectWrapper accessibilityParameterizedAttributeNames]
+__ZNK7WebCore25AccessibilityRenderObject13isMenuRelatedEv
+__ZNK7WebCore25AccessibilityRenderObject29boundsForVisiblePositionRangeERKNS_20VisiblePositionRangeE
+__ZNK7WebCore10ScrollView16contentsToScreenERKNS_7IntRectE
+__ZNK7WebCore10ScrollView24platformContentsToScreenERKNS_7IntRectE
+__ZN7WebCore9makeRangeERKNS_15VisiblePositionES2_
+__ZN7WebCore5Range11boundingBoxEv
+-[AccessibilityObjectWrapper accessibilityIsAttributeSettable:]
+__ZNK7WebCore25AccessibilityRenderObject20canSetValueAttributeEv
+__ZNK7WebCore25AccessibilityRenderObject10isReadOnlyEv
+__ZNK7WebCore25AccessibilityRenderObject30accessibilityParentForImageMapEPNS_14HTMLMapElementE
+-[AccessibilityObjectWrapper accessibilityHitTest:]
+__ZNK7WebCore25AccessibilityRenderObject22doAccessibilityHitTestERKNS_8IntPointE
+__ZNK7WebCore25AccessibilityRenderObject28accessibilityImageMapHitTestEPNS_15HTMLAreaElementERKNS_8IntPointE
+__ZNK7WebCore25AccessibilityImageMapLink22accessibilityIsIgnoredEv
+__ZN7WebCoreL16styleConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore15SVGStyleElementC1ERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore15SVGStyleElementC2ERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore15SVGStyleElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore15SVGStyleElement20insertedIntoDocumentEv
+__ZN7WebCore15SVGStyleElement15childrenChangedEbPNS_4NodeES2_i
+__ZThn184_NK7WebCore15SVGStyleElement4typeEv
+__ZNK7WebCore15SVGStyleElement4typeEv
+__ZThn184_NK7WebCore15SVGStyleElement5mediaEv
+__ZNK7WebCore15SVGStyleElement5mediaEv
+__ZN7WebCore12StyleElement10setLoadingEb
+__ZNK7WebCore15SVGStyleElement5titleEv
+__ZN7WebCore15SVGStyleElement11sheetLoadedEv
+__ZN7WebCore15SVGStyleElement5sheetEv
+__ZN7WebCore15SVGStyleElement21finishParsingChildrenEv
+__ZN7WebCore19SVGAnimatedPropertyINS_16SVGStyledElementENS_6StringEXadL_ZNS_26SVGStyledElementIdentifierEEEXadL_ZNS_9HTMLNames1
+__ZN7WebCore6Editor14setCompositionERKNS_6StringERKN3WTF6VectorINS_20CompositionUnderlineELm0EEEjj
+__ZN7WebCore6Editor35setIgnoreCompositionSelectionChangeEb
+__ZN7WebCore6Editor17selectCompositionEv
+__ZNK7WebCore6Editor16compositionRangeEv
+__ZN3WTF6VectorIN7WebCore20CompositionUnderlineELm0EEaSERKS3_
+__ZN3WTF6VectorIN7WebCore20CompositionUnderlineELm0EE15reserveCapacityEm
+__ZN7WebCore19SelectionController16setSelectedRangeEPNS_5RangeENS_9EAffinityEb
+__ZN7WebCore13TypingCommand15deleteSelectionEPNS_8DocumentEb
+__ZN7WebCore13TypingCommand15deleteSelectionEb
+__ZN3WTF6VectorIN7WebCore20CompositionUnderlineELm0EE6shrinkEm
+__ZN3JSC12RuntimeArray18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZNK3JSC12RuntimeArray9classInfoEv
+__ZN3JSC12RuntimeArray12lengthGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN7WebCore15SVGStyleElementD0Ev
+__ZN7WebCore13InlineTextBox26paintCompositionBackgroundEPNS_15GraphicsContextEiiPNS_11RenderStyleERKNS_4FontEii
+__ZNK7WebCore6Editor23getCompositionSelectionERjS1_
+__ZN7WebCore6Editor44confirmCompositionWithoutDisturbingSelectionEv
+__ZN7WebCore6Editor18confirmCompositionERKNS_6StringEb
+-[WebScriptObject evaluateWebScript:]
+__ZN7WebCore6Editor18confirmCompositionERKNS_6StringE
+__ZN7WebCore6Editor13performDeleteEv
+__ZN7WebCore6Editor18confirmCompositionEv
+__ZN7WebCoreL26skipCommaInDashboardRegionEPNS_18CSSParserValueListE
+__Z3kitPN7WebCore5EventE
+__Z8kitClassPN7WebCore5EventE
+-[DOMEvent dealloc]
+__ZN7WebCore19implementationFrontEPNS_19JSDOMImplementationE
+__Z3kitPN7WebCore22DOMImplementationFrontE
+__ZN7WebCore22DOMImplementationFront3refEv
+-[DOMImplementation dealloc]
+__ZN7WebCore22DOMImplementationFront5derefEv
+__Z3kitPN7WebCore10TreeWalkerE
+-[DOMTreeWalker dealloc]
+__Z3kitPN7WebCore4RectE
+-[DOMRect dealloc]
+__Z3kitPN7WebCore7CounterE
+-[DOMCounter dealloc]
+__Z3kitPN7WebCore9MediaListE
+-[DOMMediaList dealloc]
+-[DOMXPathExpression dealloc]
+-[DOMXPathResult dealloc]
+-[DOMHTMLOptionsCollection dealloc]
+-[WebScriptObject removeWebScriptKey:]
+-[WebScriptObject setWebScriptValueAtIndex:value:]
+-[WebScriptObject stringRepresentation]
+-[DOMNode addEventListener:listener:useCapture:]
+__ZN7WebCore17ObjCEventListener4wrapEP11objc_object
+__ZN7WebCore17ObjCEventListener4findEP11objc_object
+__ZN7WebCore17ObjCEventListenerC1EP11objc_object
+__ZN7WebCore17ObjCEventListenerC2EP11objc_object
+__ZN3WTF7HashMapIP11objc_objectPN7WebCore17ObjCEventListenerENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS8_IS5_EEE3setERKS2_RKS5_
+__ZNK3WTF7HashMapIP11objc_objectPN7WebCore17ObjCEventListenerENS_7PtrHashIS2_EENS_10HashTraitsIS2_EENS8_IS5_EEE3getERKS2_
+__ZN7WebCore17ObjCEventListener11handleEventEPNS_5EventEb
+-[DOMEvent target]
+__Z3kitPN7WebCore11EventTargetE
+-[DOMEvent type]
+-[DOMEvent eventPhase]
+-[DOMEvent bubbles]
+-[DOMEvent cancelable]
+-[DOMUIEvent detail]
+-[DOMUIEvent view]
+-[DOMAbstractView document]
+-[DOMMouseEvent button]
+-[DOMMouseEvent clientX]
+-[DOMMouseEvent clientY]
+-[DOMMouseEvent screenX]
+-[DOMMouseEvent screenY]
+-[DOMMouseEvent metaKey]
+-[DOMMouseEvent altKey]
+-[DOMMouseEvent shiftKey]
+-[DOMMouseEvent ctrlKey]
+-[DOMMouseEvent relatedTarget]
+-[DOMKeyboardEvent keyIdentifier]
+-[DOMKeyboardEvent keyLocation]
+-[DOMKeyboardEvent metaKey]
+-[DOMKeyboardEvent altKey]
+-[DOMKeyboardEvent shiftKey]
+-[DOMKeyboardEvent ctrlKey]
+-[DOMKeyboardEvent keyCode]
+-[DOMKeyboardEvent charCode]
+__ZN7WebCore17ObjCEventListenerD0Ev
+__ZN3WTF9HashTableIP11objc_objectSt4pairIS2_PN7WebCore17ObjCEventListenerEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS2_EENS_14P
+-[DOMDocument createEvent:]
+-[DOMDocument defaultView]
+-[DOMKeyboardEvent initKeyboardEvent:canBubble:cancelable:view:keyIdentifier:keyLocation:ctrlKey:altKey:shiftKey:metaKey:]
+__Z4coreP15DOMAbstractView
+-[DOMNode dispatchEvent:]
+__Z4coreP8DOMEvent
++[WebScriptObject throwException:]
+__ZN3JSC8Bindings10throwErrorEPNS_9ExecStateENS_9ErrorTypeEP8NSString
+__ZN7WebCoreL10callPluginEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN3JSC13RuntimeMethod18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
+__ZN3JSC16RuntimeObjectImp11fieldGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZN7WebCore13IdentifierRep3getEi
+__ZN7WebCoreL16intIdentifierMapEv
+__ZN3WTF7HashMapIiPN7WebCore13IdentifierRepENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3addERKiRKS3_
+__ZN3JSC16RuntimeObjectImp16getConstructDataERNS_13ConstructDataE
+__ZN3JSCL22callRuntimeConstructorEPNS_9ExecStateEPNS_8JSObjectERKNS_7ArgListE
+__ZN3JSC16RuntimeObjectImp23throwInvalidAccessErrorEPNS_9ExecStateE
+__ZN3JSC16RuntimeObjectImp16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayE
+__ZN7WebCore16jsPluginFilenameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Plugin8filenameEv
+__ZN7WebCore14jsPluginLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore6Plugin6lengthEv
+__ZN7WebCore8JSPlugin18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore8JSPlugin11indexGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore6Plugin4itemEj
+__ZN7WebCore21jsMimeTypeDescriptionEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8MimeType11descriptionEv
+__ZN7WebCore18jsMimeTypeSuffixesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8MimeType8suffixesEv
+__ZN7WebCore8JSPlugin18canGetItemsForNameEPN3JSC9ExecStateEPNS_6PluginERKNS1_10IdentifierE
+__ZN7WebCore6Plugin18canGetItemsForNameERKNS_12AtomicStringE
+__ZN7WebCore29jsPluginPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore8JSPlugin9classInfoEv
+__ZN7WebCore34jsPluginPrototypeFunctionNamedItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore6Plugin9namedItemERKNS_12AtomicStringE
+__ZN7WebCore34jsPluginArrayPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore39jsPluginArrayPrototypeFunctionNamedItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore36jsMimeTypeArrayPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore15JSMimeTypeArray9classInfoEv
+__ZN7WebCore41jsMimeTypeArrayPrototypeFunctionNamedItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14PluginDocumentC1EPNS_5FrameE
+__ZN7WebCore14PluginDocumentC2EPNS_5FrameE
+__ZN7WebCore14PluginDocument15createTokenizerEv
+__ZNK7WebCore15PluginTokenizer12wantsRawDataEv
+__ZN7WebCore15PluginTokenizer12writeRawDataEPKci
+__ZN7WebCore15PluginTokenizer23createDocumentStructureEv
+__ZNK7WebCore14PluginDocument16isPluginDocumentEv
+__ZN7WebCore15PluginTokenizer6finishEv
+__ZN7WebCore15PluginTokenizerD0Ev
+__ZN7WebCore14PluginDocumentD0Ev
+-[DOMNode(WebCoreInternal) _rootObject]
+-[WebScriptObject setException:]
+__ZN3JSC8Bindings9ObjcClass14fallbackObjectEPNS_9ExecStateEPNS0_8InstanceERKNS_10IdentifierE
+__ZN3JSC8Bindings21ObjcFallbackObjectImpC1EPNS_9ExecStateEPNS0_12ObjcInstanceERKNS_10IdentifierE
+__ZN3JSC8Bindings21ObjcFallbackObjectImpC2EPNS_9ExecStateEPNS0_12ObjcInstanceERKNS_10IdentifierE
+__ZN3JSC16RuntimeObjectImp20fallbackObjectGetterEPNS_9ExecStateERKNS_10IdentifierERKNS_12PropertySlotE
+__ZNK3JSC8Bindings21ObjcFallbackObjectImp9toBooleanEPNS_9ExecStateE
+__ZN3JSC8Bindings21ObjcFallbackObjectImpD1Ev
+__ZN7WebCore19RenderScrollbarPart22computeScrollbarHeightEv
+__ZN7WebCore15RenderScrollbar5paintEPNS_15GraphicsContextERKNS_7IntRectE
+__ZN7WebCore23ScrollbarThemeComposite5paintEPNS_9ScrollbarEPNS_15GraphicsContextERKNS_7IntRectE
+__ZN7WebCore20RenderScrollbarTheme8hasThumbEPNS_9ScrollbarE
+__ZN7WebCore20RenderScrollbarTheme24paintScrollbarBackgroundEPNS_15GraphicsContextEPNS_9ScrollbarE
+__ZN7WebCore15RenderScrollbar9paintPartEPNS_15GraphicsContextENS_13ScrollbarPartERKNS_7IntRectE
+__ZN7WebCore19RenderScrollbarPart13paintIntoRectEPNS_15GraphicsContextEiiRKNS_7IntRectE
+__ZN7WebCore20RenderScrollbarTheme11paintButtonEPNS_15GraphicsContextEPNS_9ScrollbarERKNS_7IntRectENS_13ScrollbarPartE
+__ZN7WebCore20RenderScrollbarTheme20paintTrackBackgroundEPNS_15GraphicsContextEPNS_9ScrollbarERKNS_7IntRectE
+__ZN7WebCore20RenderScrollbarTheme15paintTrackPieceEPNS_15GraphicsContextEPNS_9ScrollbarERKNS_7IntRectENS_13ScrollbarPartE
+__ZN7WebCore23ScrollbarThemeComposite14paintTickmarksEPNS_15GraphicsContextEPNS_9ScrollbarERKNS_7IntRectE
+__ZN7WebCore20RenderScrollbarTheme10paintThumbEPNS_15GraphicsContextEPNS_9ScrollbarERKNS_7IntRectE
+__ZNK7WebCore16CSSStyleSelector15SelectorChecker25checkScrollbarPseudoClassEPNS_11CSSSelectorERNS_8PseudoIdE
+__ZN7WebCore15RenderScrollbar19partForStyleResolveEv
+__ZN7WebCore19RenderScrollbarPart20layoutHorizontalPartEv
+__ZThn200_NK7WebCore13RenderListBox22scrollbarCornerPresentEv
+__ZNK7WebCore13RenderListBox22scrollbarCornerPresentEv
+__ZN7WebCore19RenderScrollbarPart12imageChangedEPvPKNS_7IntRectE
+__ZNK7WebCore11RenderLayer22scrollbarCornerPresentEv
+__ZNK7WebCore9FillLayer13hasFixedImageEv
+__ZN7WebCore33jsStoragePrototypeFunctionSetItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Storage7setItemERKNS_6StringES3_Ri
+__ZN7WebCore11StorageArea7setItemERKNS_6StringES3_RiPNS_5FrameE
+__ZN7WebCore11StorageArea15internalSetItemERKNS_6StringES3_RiPNS_5FrameE
+__ZN7WebCore10StorageMap7setItemERKNS_6StringES3_RS1_
+__ZN3WTF7HashMapIN7WebCore6StringES2_NS1_10StringHashENS_10HashTraitsIS2_EES5_E3addERKS2_S8_
+__ZN7WebCore10StorageMap18invalidateIteratorEv
+__ZN7WebCore18SessionStorageArea11itemChangedERKNS_6StringES3_S3_PNS_5FrameE
+__ZN7WebCore18SessionStorageArea20dispatchStorageEventERKNS_6StringES3_S3_PNS_5FrameE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm0EE15reserveCapacityEm
+__ZN7WebCore4Node20dispatchStorageEventERKNS_12AtomicStringERKNS_6StringES6_S6_PNS_5FrameE
+__ZN7WebCore12StorageEventC1ERKNS_12AtomicStringERKNS_6StringES6_S6_S6_N3WTF10PassRefPtrINS_9DOMWindowEEE
+__ZN7WebCore12StorageEventC2ERKNS_12AtomicStringERKNS_6StringES6_S6_S6_N3WTF10PassRefPtrINS_9DOMWindowEEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore5FrameEEELm0EE6shrinkEm
+__ZN7WebCore9JSStorage10nameGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZNK7WebCore7Storage7getItemERKNS_6StringE
+__ZNK7WebCore11StorageArea7getItemERKNS_6StringE
+__ZNK7WebCore11StorageArea15internalGetItemERKNS_6StringE
+__ZNK7WebCore10StorageMap7getItemERKNS_6StringE
+__ZN7WebCore36jsStoragePrototypeFunctionRemoveItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Storage10removeItemERKNS_6StringE
+__ZN7WebCore11StorageArea10removeItemERKNS_6StringEPNS_5FrameE
+__ZN7WebCore11StorageArea18internalRemoveItemERKNS_6StringEPNS_5FrameE
+__ZN7WebCore10StorageMap10removeItemERKNS_6StringERS1_
+__ZN3WTF7HashMapIN7WebCore6StringES2_NS1_10StringHashENS_10HashTraitsIS2_EES5_E4takeERKS2_
+__ZN7WebCore18SessionStorageArea11itemRemovedERKNS_6StringES3_PNS_5FrameE
+__ZN7WebCore14SecurityOrigin28createFromDatabaseIdentifierERKNS_6StringE
+__ZNK7WebCore15SQLiteStatement18bindParameterCountEv
+__ZN7WebCore12SQLResultSetC1Ev
+__ZN7WebCore12SQLResultSetC2Ev
+__ZN7WebCore12SQLResultSet11setInsertIdEx
+__ZN7WebCore14SQLiteDatabase11lastChangesEv
+__ZN7WebCore12SQLResultSet15setRowsAffectedEi
+__ZN7WebCore18OriginQuotaManager12markDatabaseEPNS_8DatabaseE
+__ZN7WebCore17OriginUsageRecord12markDatabaseERKNS_6StringE
+__ZN7WebCore28JSCustomSQLStatementCallback11handleEventEPNS_14SQLTransactionEPNS_12SQLResultSetERb
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_12SQLResultSetE
+__ZN7WebCore14JSSQLResultSet15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSSQLResultSetC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12SQLResultSetEEE
+__ZN7WebCore14JSSQLResultSetC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12SQLResultSetEEE
+__ZN3WTF6VectorIN7WebCore8SQLValueELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore8SQLValueELm0EE15reserveCapacityEm
+__ZN7WebCore8SQLValueC1ERKS0_
+__ZN7WebCore8SQLValueC2ERKS0_
+__ZN3WTF6VectorIN7WebCore8SQLValueELm0EE6shrinkEm
+__ZN7WebCore15SQLiteStatement9bindValueEiRKNS_8SQLValueE
+__ZNK7WebCore8SQLValue6numberEv
+__ZN7WebCore15SQLiteStatement10bindDoubleEid
+__ZNK7WebCore8SQLValue6stringEv
+__ZN7WebCore14SQLTransaction19postflightAndCommitEv
+__ZN7WebCore15DatabaseTracker29scheduleNotifyDatabaseChangedEPNS_14SecurityOriginERKNS_6StringE
+__ZN7WebCoreL17notificationMutexEv
+__ZN7WebCoreL17notificationQueueEv
+__ZN3WTF6VectorISt4pairIPN7WebCore14SecurityOriginENS2_6StringEELm0EE14expandCapacityEmPKS6_
+__ZN3WTF6VectorISt4pairIPN7WebCore14SecurityOriginENS2_6StringEELm0EE14expandCapacityEm
+__ZN3WTF6VectorISt4pairIPN7WebCore14SecurityOriginENS2_6StringEELm0EE15reserveCapacityEm
+__ZN7WebCore15DatabaseTracker23scheduleForNotificationEv
+__ZN7WebCore15DatabaseTracker22notifyDatabasesChangedEPv
+__ZN3WTF6VectorISt4pairIPN7WebCore14SecurityOriginENS2_6StringEELm0EE6shrinkEm
+__ZN7WebCore14SQLTransaction27cleanupAfterSuccessCallbackEv
+__ZNK7WebCore12SQLResultSet4rowsEv
+__ZN7WebCore15SQLiteStatement13getColumnNameEi
+__ZN7WebCore15SQLiteStatement14getColumnValueEi
+__ZN3WTF6VectorIN7WebCore8SQLValueELm0EE14expandCapacityEmPKS2_
+__ZN7WebCore17SQLiteTransaction4stopEv
+__ZN7WebCore14JSSQLResultSetD1Ev
+__ZN7WebCore14JSSQLResultSetD2Ev
+__ZN7WebCore23JSSQLResultSetPrototypeD1Ev
+__ZN7WebCore35JSCustomSQLTransactionErrorCallbackC1EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore35JSCustomSQLTransactionErrorCallbackC2EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore14toVoidCallbackEPN3JSC9ExecStateENS0_7JSValueE
+__ZN7WebCore20JSCustomVoidCallbackC1EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore20JSCustomVoidCallbackC2EPN3JSC8JSObjectEPNS_5FrameE
+__ZN7WebCore35JSCustomSQLTransactionErrorCallbackD0Ev
+__ZN7WebCore14SQLTransaction22deliverSuccessCallbackEv
+__ZN7WebCore20JSCustomVoidCallback11handleEventEv
+__ZN7WebCore20JSCustomVoidCallbackD0Ev
+__ZN7WebCore8Database21setAuthorizerReadOnlyEv
+__ZN7WebCore18DatabaseAuthorizer11setReadOnlyEv
+__ZN7WebCore10JSSQLError18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore17jsSQLErrorMessageEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18DatabaseAuthorizer11allowDeleteERKNS_6StringE
+__ZN7WebCore15DatabaseTracker18deleteAllDatabasesEv
+__ZN7WebCore15DatabaseTracker7originsERN3WTF6VectorINS1_6RefPtrINS_14SecurityOriginEEELm0EEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SecurityOriginEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SecurityOriginEEELm0EE15reserveCapacityEm
+__ZN7WebCore15DatabaseTracker12deleteOriginEPNS_14SecurityOriginE
+__ZN7WebCore15DatabaseTracker18deleteDatabaseFileEPNS_14SecurityOriginERKNS_6StringE
+__ZN7WebCore10deleteFileERKNS_6StringE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore8DatabaseEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore8DatabaseEEELm0EE15reserveCapacityEm
+__ZN7WebCore8Database21markAsDeletedAndCloseEv
+__ZNK7WebCore14DatabaseThread20terminationRequestedEv
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore8DatabaseEEELm0EE6shrinkEm
+__ZN7WebCore20deleteEmptyDirectoryERKNS_6StringE
+__ZN7WebCore18OriginQuotaManager12removeOriginEPNS_14SecurityOriginE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SecurityOriginEEELm0EE6shrinkEm
+__ZN7WebCore18DatabaseAuthorizer13allowFunctionERKNS_6StringE
+__ZN7WebCore12SQLStatement20setFailureDueToQuotaEv
+__ZN7WebCore14SQLTransaction28deliverQuotaIncreaseCallbackEv
+__ZN7WebCore14JSSQLResultSet18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore18jsSQLResultSetRowsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SQLResultSetRowListE
+__ZN7WebCore21JSSQLResultSetRowList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSSQLResultSetRowListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SQLResultSetRowListEEE
+__ZN7WebCore21JSSQLResultSetRowListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SQLResultSetRowListEEE
+__ZN7WebCore21JSSQLResultSetRowList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore30JSSQLResultSetRowListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore42jsSQLResultSetRowListPrototypeFunctionItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore21JSSQLResultSetRowList9classInfoEv
+__ZN7WebCore21JSSQLResultSetRowList4itemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore19SQLResultSetRowList6lengthEv
+__ZN7WebCore18DatabaseAuthorizer9dropTableERKNS_6StringE
+__ZN7WebCore21JSSQLResultSetRowListD1Ev
+__ZN7WebCore21JSSQLResultSetRowListD2Ev
+__ZN7WebCore30JSSQLResultSetRowListPrototypeD1Ev
+__ZN7WebCore9JSStorage16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZN7WebCore9JSStorage22customGetPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZNK7WebCore7Storage6lengthEv
+__ZNK7WebCore16LocalStorageArea6lengthEv
+__ZNK7WebCore11StorageArea14internalLengthEv
+__ZNK7WebCore10StorageMap6lengthEv
+__ZN7WebCore15jsStorageLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsStoragePrototypeFunctionClearEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Storage5clearEv
+__ZN7WebCore11StorageArea5clearEPNS_5FrameE
+__ZN7WebCore11StorageArea13internalClearEPNS_5FrameE
+__ZN7WebCore16LocalStorageArea11areaClearedEPNS_5FrameE
+__ZN7WebCore16LocalStorageArea13scheduleClearEv
+__ZN7WebCore16LocalStorageArea20dispatchStorageEventERKNS_6StringES3_S3_PNS_5FrameE
+__ZN7WebCore9JSStorage3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore9JSStorage9customPutEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore16LocalStorageArea7setItemERKNS_6StringES3_RiPNS_5FrameE
+__ZN7WebCore16LocalStorageArea11itemChangedERKNS_6StringES3_S3_PNS_5FrameE
+__ZN7WebCore16LocalStorageArea19scheduleItemForSyncERKNS_6StringES3_
+__ZNK7WebCore16LocalStorageArea7getItemERKNS_6StringE
+__ZN7WebCore9JSStorage14deletePropertyEPN3JSC9ExecStateERKNS1_10IdentifierE
+__ZN7WebCore16LocalStorageArea10removeItemERKNS_6StringEPNS_5FrameE
+__ZN7WebCore16LocalStorageArea11itemRemovedERKNS_6StringES3_PNS_5FrameE
+__ZN7WebCore5TimerINS_16LocalStorageAreaEE5firedEv
+__ZN7WebCore16LocalStorageArea14syncTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore12LocalStorage12scheduleSyncEN3WTF10PassRefPtrINS_16LocalStorageAreaEEE
+__ZNK7WebCore7Storage3keyEjRi
+__ZNK7WebCore16LocalStorageArea3keyEjRi
+__ZNK7WebCore11StorageArea11internalKeyEjRi
+__ZNK7WebCore10StorageMap3keyEjRNS_6StringE
+__ZNK7WebCore10StorageMap18setIteratorToIndexEj
+__ZN7WebCore33jsStoragePrototypeFunctionGetItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore29jsStoragePrototypeFunctionKeyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore11StorageArea6lengthEv
+__ZN7WebCore18SessionStorageArea11areaClearedEPNS_5FrameE
+__ZNK7WebCore11StorageArea3keyEjRi
+__ZN7WebCore10StorageMap4copyEv
+__ZN7WebCoremlERKNS_8SMILTimeES2_
+__ZNK7WebCore14SVGSMILElement8isFrozenEv
+__ZSt25__unguarded_linear_insertIPPN7WebCore14SVGSMILElementES2_NS0_15PriorityCompareEEvT_T0_T1_
+__ZNK7WebCore19SVGAnimationElement9fromValueEv
+__ZN7WebCoreL22applyOrderSortFunctionEPNS_14SVGSMILElementES1_
+__ZSt25__unguarded_linear_insertIPPN7WebCore14SVGSMILElementES2_PFbS2_S2_EEvT_T0_T1_
+__ZNK7WebCore10SVGElement8isStyledEv
+__ZN7WebCore5writeERNS_10TextStreamERKNS_13RenderSVGRootEi
+__ZN7WebCoreL19writeStandardPrefixERNS_10TextStreamERKNS_12RenderObjectEi
+__ZNK7WebCore13RenderSVGRoot10renderNameEv
+__ZN7WebCoreL21writePositionAndStyleERNS_10TextStreamERKNS_12RenderObjectE
+__ZNK7WebCore13RenderSVGRoot17absoluteTransformEv
+__ZNK7WebCore12RenderObject17absoluteTransformEv
+__ZNK7WebCore9RenderBox14localTransformEv
+__ZNK7WebCore13RenderSVGRoot14localTransformEv
+__ZN7WebCorelsERNS_10TextStreamERKNS_9FloatRectE
+__ZN7WebCoreL12hasFractionsEd
+__ZN7WebCoreL17writeIfNotDefaultIfEEvRNS_10TextStreamEPKcT_S5_
+__ZN7WebCoreL15writeIfNotEmptyERNS_10TextStreamEPKcRKNS_6StringE
+__ZN7WebCoreL13writeChildrenERNS_10TextStreamERKNS_12RenderObjectEi
+__ZNK7WebCore18RenderSVGContainer14isSVGContainerEv
+__ZN7WebCore5writeERNS_10TextStreamERKNS_18RenderSVGContainerEi
+__ZNK7WebCore18RenderSVGContainer10renderNameEv
+__ZNK7WebCore31RenderSVGTransformableContainer14localTransformEv
+__ZN7WebCore5writeERNS_10TextStreamERKNS_10RenderPathEi
+__ZNK7WebCore10RenderPath10renderNameEv
+__ZNK7WebCore10RenderPath14localTransformEv
+__ZN7WebCorelsERNS_10TextStreamERNS_19TextStreamSeparatorE
+__ZN7WebCorelsERNS_10TextStreamERKNS_14SVGPaintServerE
+__ZNK7WebCore19SVGPaintServerSolid22externalRepresentationERNS_10TextStreamE
+__ZN7WebCorelsERNS_10TextStreamERKNS_5ColorE
+__ZN7WebCoreL17writeIfNotDefaultIdEEvRNS_10TextStreamEPKcT_S5_
+__ZN7WebCore10TextStreamlsEd
+__ZNK7WebCore10RenderPath4pathEv
+__ZNK7WebCore4Path11debugStringEv
+__ZN7WebCoreL31CGPathToCFStringApplierFunctionEPvPK13CGPathElement
+__ZN7WebCoreL23writeNameAndQuotedValueINS_6StringEEEvRNS_10TextStreamEPKcT_
+__ZN7WebCore5writeERNS_10TextStreamERKNS_13RenderSVGTextEi
+__ZNK7WebCore13RenderSVGText10renderNameEv
+__ZN7WebCore10TextStreamlsEm
+__ZN7WebCore5writeERNS_10TextStreamERKNS_19RenderSVGInlineTextEi
+__ZNK7WebCore19RenderSVGInlineText10renderNameEv
+__ZNK7WebCore10RenderText14firstRunOriginEv
+__ZNK7WebCore16SVGInlineTextBox16svgRootInlineBoxEv
+__ZN7WebCore10TextStreamlsEj
+__ZN7WebCorelsERNS_10TextStreamERKNS_20TransformationMatrixE
+__ZN7WebCore11PathBuilder15svgCurveToCubicEddddddb
+__ZN7WebCore13ColorDistanceC1ERKNS_5ColorES3_
+__ZN7WebCore13ColorDistanceC2ERKNS_5ColorES3_
+__ZNK7WebCore13ColorDistance14scaledDistanceEf
+__ZN7WebCore13ColorDistanceC1Eiii
+__ZN7WebCore13ColorDistanceC2Eiii
+__ZNK7WebCore13ColorDistance18addToColorAndClampERKNS_5ColorE
+__ZN7WebCore16SVGStyledElement5styleEv
+__ZNK7WebCore4Font20drawTextUsingSVGFontEPNS_15GraphicsContextERKNS_7TextRunERKNS_10FloatPointEii
+__ZN7WebCore16SVGTextRunWalkerINS_28SVGTextRunWalkerDrawTextDataEE4walkERKNS_7TextRunEbRKNS_6StringEii
+__ZN7WebCoreL28drawTextUsingSVGFontCallbackERKNS_18SVGGlyphIdentifierERNS_28SVGTextRunWalkerDrawTextDataE
+__ZNK7WebCore24RenderSVGHiddenContainer14isSVGContainerEv
+__ZNK7WebCore24RenderSVGHiddenContainer10renderNameEv
+__ZNK7WebCore24RenderSVGHiddenContainer17absoluteTransformEv
+__ZN7WebCoreL24animatemotionConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore23SVGAnimateMotionElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore23SVGAnimateMotionElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore23SVGAnimateMotionElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore23SVGAnimateMotionElement16resetToBaseValueERKNS_6StringE
+__ZNK7WebCore23SVGAnimateMotionElement14hasValidTargetEv
+__ZNK7WebCore29SVGStyledTransformableElement21isStyledTransformableEv
+__ZN7WebCore29SVGStyledTransformableElement21supplementalTransformEv
+__ZNK7WebCore23SVGAnimateMotionElement13animationPathEv
+__ZN7WebCore23SVGAnimateMotionElement24calculateFromAndToValuesERKNS_6StringES3_
+__ZN7WebCoreL10parsePointERKNS_6StringERNS_10FloatPointE
+__ZN7WebCore23SVGAnimateMotionElement22calculateAnimatedValueEfjPNS_14SVGSMILElementE
+__ZN7WebCore23SVGAnimateMotionElement20applyResultsToTargetEv
+__ZN7WebCore23SVGAnimateMotionElementD0Ev
+__ZN7WebCore18PathTraversalState13cubicBezierToERKNS_10FloatPointES3_S3_
+__ZN3WTF6VectorIN7WebCore11CubicBezierELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore11CubicBezierELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore11CubicBezierELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIN7WebCore11CubicBezierELm0EE6shrinkEm
+__ZNK7WebCore23SVGAnimateMotionElement10rotateModeEv
+__ZN7WebCoreL16mpathConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore15SVGMPathElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15SVGMPathElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore15SVGMPathElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZThn184_NK7WebCore15SVGMPathElement14contextElementEv
+__ZNK7WebCore15SVGMPathElement14contextElementEv
+__ZN7WebCore15SVGMPathElement11pathElementEv
+__ZN7WebCore15SVGMPathElementD0Ev
+__ZN7WebCore19SVGAnimationElement33calculateKeyTimesForCalcModePacedEv
+__ZN7WebCore17SVGAnimateElement17calculateDistanceERKNS_6StringES3_
+__ZN7WebCore23SVGAnimateMotionElement17calculateDistanceERKNS_6StringES3_
+__ZN3WTF6VectorIN7WebCore10UnitBezierELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN7WebCore10UnitBezierELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore10UnitBezierELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore10UnitBezierELm0EE15reserveCapacityEm
+__ZNK7WebCore19SVGAnimationElement25calculatePercentForSplineEfj
+__ZN3WTF6VectorIN7WebCore10UnitBezierELm0EE6shrinkEm
+__ZThn304_NK7WebCore11SVGAElement14contextElementEv
+__ZNK7WebCore11SVGAElement14contextElementEv
+__ZNK7WebCore11SVGAElement7isValidEv
+__ZN7WebCore14SVGSMILElement14parseConditionERKNS_6StringENS0_10BeginOrEndE
+__ZN7WebCore14SVGSMILElement9ConditionC1ENS1_4TypeENS0_10BeginOrEndERKNS_6StringES6_NS_8SMILTimeEi
+__ZN7WebCore14SVGSMILElement9ConditionC2ENS1_4TypeENS0_10BeginOrEndERKNS_6StringES6_NS_8SMILTimeEi
+__ZN3WTF6VectorIN7WebCore14SVGSMILElement9ConditionELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIN7WebCore14SVGSMILElement9ConditionELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore14SVGSMILElement9ConditionELm0EE15reserveCapacityEm
+__ZN7WebCore14SVGSMILElement16addTimeDependentEPS0_
+__ZN7WebCore14SVGSMILElement19removedFromDocumentEv
+__ZN7WebCore14SVGSMILElement19removeTimeDependentEPS0_
+__ZN3WTF6VectorIN7WebCore14SVGSMILElement9ConditionELm0EE6shrinkEm
+__ZThn8_N7WebCore17SVGAnimateElementD0Ev
+__ZN7WebCoreL23animatecolorConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore22SVGAnimateColorElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore22SVGAnimateColorElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL27animatetransformConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore26SVGAnimateTransformElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore26SVGAnimateTransformElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore26SVGAnimateTransformElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore10SVGElement21isStyledTransformableEv
+__ZN7WebCore14SVGTextElement21supplementalTransformEv
+__ZN7WebCore26SVGAnimateTransformElement16resetToBaseValueERKNS_6StringE
+__ZNK7WebCore26SVGAnimateTransformElement14hasValidTargetEv
+__ZN7WebCore25SVGTextPositioningElement16isKnownAttributeERKNS_13QualifiedNameE
+__ZN7WebCore21SVGTextContentElement16isKnownAttributeERKNS_13QualifiedNameE
+__ZN7WebCore26SVGAnimateTransformElement20applyResultsToTargetEv
+__ZN7WebCoreL16transformListForEPNS_10SVGElementE
+__ZN7WebCore22SVGAnimateColorElementD0Ev
+__ZN7WebCore26SVGAnimateTransformElementD0Ev
+__ZN7WebCoreL19polylineConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore18SVGPolylineElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14SVGPolyElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17SVGAnimatedPointsC2Ev
+__ZN7WebCore14SVGPolyElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZN7WebCore14SVGPolyElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZNK7WebCore14SVGPolyElement6pointsEv
+__ZN7WebCore12SVGPointListC1ERKNS_13QualifiedNameE
+__ZN7WebCore12SVGPointListC2ERKNS_13QualifiedNameE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_10FloatPointEEEEELm0EE14shrinkCapacityEm
+__ZN7WebCore21pointsListFromSVGDataEPNS_12SVGPointListERKNS_6StringE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_10FloatPointEEEEELm0EE14expandCapacityEmPKS6_
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_10FloatPointEEEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_10FloatPointEEEEELm0EE15reserveCapacityEm
+__ZNK7WebCore14SVGPolyElement7isValidEv
+__ZN7WebCore14SVGPolyElement16rendererIsNeededEPNS_11RenderStyleE
+__ZNK7WebCore14SVGPolyElement26updateAnimatedSVGAttributeERKNS_6StringE
+__ZN7WebCoreL18polygonConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore17SVGPolygonElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL14useConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore13SVGUseElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore13SVGUseElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZThn408_NK7WebCore13SVGUseElement14contextElementEv
+__ZNK7WebCore13SVGUseElement14contextElementEv
+__ZN7WebCore13SVGUseElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZN7WebCore13SVGUseElement20insertedIntoDocumentEv
+__ZN7WebCore13SVGUseElement20buildPendingResourceEv
+__ZN7WebCore18SVGElementInstanceC1EPNS_13SVGUseElementEPNS_10SVGElementE
+__ZN7WebCore18SVGElementInstanceC2EPNS_13SVGUseElementEPNS_10SVGElementE
+__ZN7WebCore10SVGElement20mapInstanceToElementEPNS_18SVGElementInstanceE
+__ZN3WTF7HashSetIPN7WebCore18SVGElementInstanceENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore18SVGElementInstanceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6exp
+__ZN3WTF9HashTableIPN7WebCore18SVGElementInstanceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6reh
+__ZN3WTF9HashTableIPN7WebCore18SVGElementInstanceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13al
+__ZN7WebCore13SVGUseElement17buildInstanceTreeEPNS_10SVGElementEPNS_18SVGElementInstanceERb
+__ZN7WebCoreL19isDisallowedElementEPNS_4NodeE
+__ZNK7WebCore19SVGAnimatedPropertyINS_13SVGUseElementENS_9SVGLengthEXadL_ZNS_8SVGNames12useTagStringEEEXadL_ZNS3_11xAttrStringE
+__ZNK7WebCore19SVGAnimatedPropertyINS_13SVGUseElementENS_9SVGLengthEXadL_ZNS_8SVGNames12useTagStringEEEXadL_ZNS3_11yAttrStringE
+__ZN7WebCore13SVGUseElement15buildShadowTreeEPNS_10SVGElementEPNS_18SVGElementInstanceE
+__ZN7WebCoreL32subtreeContainsDisallowedElementEPNS_4NodeE
+__ZN7WebCore13SVGUseElement35removeDisallowedElementsFromSubtreeEPNS_4NodeE
+__ZN7WebCore13SVGUseElement29expandUseElementsInShadowTreeEPNS_4NodeE
+__ZN7WebCore13SVGUseElement32expandSymbolElementsInShadowTreeEPNS_4NodeE
+__ZN7WebCore13SVGUseElement40associateInstancesWithShadowTreeElementsEPNS_4NodeEPNS_18SVGElementInstanceE
+__ZN7WebCore18SVGElementInstance20setShadowTreeElementEPNS_10SVGElementE
+__ZN7WebCore13SVGUseElement34transferEventListenersToShadowTreeEPNS_18SVGElementInstanceE
+__ZN7WebCore13SVGUseElement16attachShadowTreeEv
+__ZN7WebCore13SVGUseElement6attachEv
+__ZNK7WebCore13SVGUseElement7isValidEv
+__ZN7WebCore13SVGUseElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore10SVGElement16shadowParentNodeEv
+__ZN7WebCore13SVGUseElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore18SVGElementInstance13forgetWrapperEv
+__ZN7WebCore10TreeSharedINS_18SVGElementInstanceEE14removedLastRefEv
+__ZN7WebCore18SVGElementInstanceD0Ev
+__ZN7WebCore10SVGElement21removeInstanceMappingEPNS_18SVGElementInstanceE
+__ZN3WTF9HashTableIPN7WebCore18SVGElementInstanceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4fin
+__ZN3WTF9HashTableIPN7WebCore18SVGElementInstanceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47re
+__ZN3WTF9HashTableIPN7WebCore18SVGElementInstanceES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rem
+__ZN7WebCore28removeAllChildrenInContainerINS_18SVGElementInstanceES1_EEvPT0_
+__ZN7WebCore7Private28addChildNodesToDeletionQueueINS_18SVGElementInstanceES2_EEvRPT_S5_PT0_
+__ZThn8_N7WebCore22SVGAnimateColorElementD0Ev
+__ZThn8_N7WebCore26SVGAnimateTransformElementD0Ev
+__ZThn8_N7WebCore23SVGAnimateMotionElementD0Ev
+__ZN7WebCore18SVGPolylineElementD0Ev
+__ZN7WebCore14SVGPolyElementD2Ev
+__ZN7WebCore12SVGPointListD0Ev
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore14SVGPODListItemINS2_10FloatPointEEEEELm0EE6shrinkEm
+__ZN7WebCore17SVGAnimatedPointsD2Ev
+__ZN7WebCore17SVGPolygonElementD0Ev
+__ZN7WebCore13SVGUseElement11recalcStyleENS_4Node11StyleChangeE
+__ZNK7WebCore18SVGPolylineElement10toPathDataEv
+__ZNK7WebCore17SVGPolygonElement10toPathDataEv
+__ZSt21__unguarded_partitionIPPN7WebCore14SVGSMILElementES2_NS0_15PriorityCompareEET_S5_S5_T0_T1_
+__ZN7WebCore26SVGAnimateTransformElement24calculateFromAndToValuesERKNS_6StringES3_
+__ZNK7WebCore26SVGAnimateTransformElement19parseTransformValueERKNS_6StringE
+__ZN7WebCore12SVGTransform7isValidEv
+__ZN7WebCore26SVGAnimateTransformElement22calculateAnimatedValueEfjPNS_14SVGSMILElementE
+__ZN7WebCore20SVGTransformDistanceC1ERKNS_12SVGTransformES3_
+__ZN7WebCore20SVGTransformDistanceC2ERKNS_12SVGTransformES3_
+__ZNK7WebCore12SVGTransform4typeEv
+__ZNK7WebCore12SVGTransform5scaleEv
+__ZN7WebCore9FloatSize15narrowPrecisionEdd
+__ZNK7WebCore20SVGTransformDistance14scaledDistanceEf
+__ZN7WebCore20SVGTransformDistanceC1ENS_12SVGTransform16SVGTransformTypeEfffRKNS_20TransformationMatrixE
+__ZN7WebCore20SVGTransformDistanceC2ENS_12SVGTransform16SVGTransformTypeEfffRKNS_20TransformationMatrixE
+__ZNK7WebCore20SVGTransformDistance17addToSVGTransformERKNS_12SVGTransformE
+__ZNK7WebCore12SVGTransform9translateEv
+__ZNK7WebCore12SVGTransform14rotationCenterEv
+__ZNK7WebCore12SVGTransform5angleEv
+__ZN7WebCore18SVGElementInstance14setNeedsUpdateEb
+__ZN7WebCoreL30shadowTreeContainsChangedNodesEPNS_18SVGElementInstanceE
+__ZN7WebCore19SVGAnimatedPropertyINS_29SVGStyledTransformableElementENS_16SVGTransformListEXadL_ZNS_39SVGStyledTransformableEle
+__ZNK7WebCore14SVGPolyElement15supportsMarkersEv
+__ZNK7WebCore14RenderSVGImage10isSVGImageEv
+__ZN7WebCore5writeERNS_10TextStreamERKNS_14RenderSVGImageEi
+__ZNK7WebCore14RenderSVGImage10renderNameEv
+__ZNK7WebCore14RenderSVGImage14localTransformEv
+__ZN7WebCore13SVGUseElement6detachEv
+__ZN7WebCore13SVGUseElementD0Ev
+__ZThn8_N7WebCore14SVGLineElementD0Ev
+__ZThn8_N7WebCore14SVGRectElementD0Ev
+__ZThn8_N7WebCore16SVGCircleElementD0Ev
+__ZThn8_N7WebCore18SVGPolylineElementD0Ev
+__ZThn8_N7WebCore17SVGPolygonElementD0Ev
+__ZThn8_N7WebCore15SVGImageElementD0Ev
+__ZN7WebCore9CSSParser23parseSVGStrokeDasharrayEv
+__ZNK7WebCore19SVGAnimationElement26currentValuesFromKeyPointsEfRfRNS_6StringES3_
+__ZNK7WebCore19SVGAnimationElement29calculatePercentFromKeyPointsEf
+__ZN3WTF6VectorIdLm0EE14expandCapacityEm
+__ZN3WTF6VectorIdLm0EE15reserveCapacityEm
+__ZN3WTF6VectorIdLm0EE6shrinkEm
+__ZN3WTF6VectorIdLm0EEC1ERKS1_
+__ZN3WTF6VectorIdLm0EEC2ERKS1_
+__ZN7WebCorelsERNS_10TextStreamENS_8WindRuleE
+__ZN7WebCore14SVGSMILElement31createInstanceTimesFromSyncbaseEPS0_NS0_21NewOrExistingIntervalE
+__ZSt25__unguarded_linear_insertIPN7WebCore8SMILTimeES1_EvT_T0_
+__ZThn8_N7WebCore13SVGSetElementD0Ev
+__ZN7WebCore18SVGElementInstance11appendChildEN3WTF10PassRefPtrIS0_EE
+__ZN7WebCore22appendChildToContainerINS_18SVGElementInstanceES1_EEvPT_PT0_
+__ZN7WebCore13SVGUseElement24handleDeepUseReferencingEPS0_PNS_18SVGElementInstanceERb
+__ZNK7WebCore13SVGUseElement38transferUseAttributesToReplacedElementEPNS_10SVGElementES2_
+__ZN7WebCore13SVGUseElement19removedFromDocumentEv
+__ZThn8_N7WebCore13SVGUseElementD0Ev
+__ZSt21__unguarded_partitionIPPN7WebCore14SVGSMILElementES2_PFbS2_S2_EET_S6_S6_T0_T1_
+__ZN7WebCore22ConditionEventListenerD0Ev
+__ZN7WebCore14SVGSMILElement10addEndTimeENS_8SMILTimeE
+__ZN7WebCore14SVGSMILElement14endListChangedEv
+__ZN7WebCore8SVGColorC1ENS0_12SVGColorTypeE
+__ZN7WebCore8SVGColorC2ENS0_12SVGColorTypeE
+__ZNK7WebCore28SVGPaintServerLinearGradient22externalRepresentationERNS_10TextStreamE
+__ZNK7WebCore22SVGPaintServerGradient22externalRepresentationERNS_10TextStreamE
+__ZNK7WebCore28SVGPaintServerLinearGradient11gradientEndEv
+__ZNK7WebCore28SVGPaintServerLinearGradient13gradientStartEv
+__ZN7WebCorelsERNS_10TextStreamERKNS_10FloatPointE
+__ZNK7WebCore21RenderSVGGradientStop10renderNameEv
+__ZN7WebCore12SVGTransform8setSkewXEf
+__ZN7WebCore12SVGTransform8setSkewYEf
+__ZN7WebCoreL18patternConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore17SVGPatternElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17SVGPatternElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore17SVGPatternElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore17SVGPatternElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZNK7WebCore17SVGPatternElement7isValidEv
+__ZN7WebCore17SVGPatternElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore17SVGPatternElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore17SVGPatternElement14canvasResourceEv
+__ZN7WebCore21SVGPaintServerPatternC1EPKNS_17SVGPatternElementE
+__ZN7WebCore21SVGPaintServerPatternC2EPKNS_17SVGPatternElementE
+__ZNK7WebCore21SVGPaintServerPattern5setupERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeEb
+__ZNK7WebCore17SVGPatternElement12buildPatternERKNS_9FloatRectE
+__ZNK7WebCore17SVGPatternElement24collectPatternPropertiesEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_17SVGPatternElementENS_9SVGLengthEXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS3_11xAtt
+__ZNK7WebCore19SVGAnimatedPropertyINS_17SVGPatternElementENS_9SVGLengthEXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS3_11yAtt
+__ZNK7WebCore19SVGAnimatedPropertyINS_17SVGPatternElementENS_9SVGLengthEXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS3_16heig
+__ZNK7WebCore19SVGAnimatedPropertyINS_17SVGPatternElementEiXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS2_29patternContentUni
+__ZN3WTF7HashSetIPKN7WebCore17SVGPatternElementENS_7PtrHashIS4_EENS_10HashTraitsIS4_EEE3addERKS4_
+__ZN3WTF9HashTableIPKN7WebCore17SVGPatternElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6exp
+__ZN3WTF9HashTableIPKN7WebCore17SVGPatternElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E6reh
+__ZN3WTF9HashTableIPKN7WebCore17SVGPatternElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E13al
+__ZN3WTF9HashTableIPKN7WebCore17SVGPatternElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E15de
+__ZNK7WebCore15SVGFitToViewBox22viewBoxToViewTransformEff
+__ZN7WebCore21SVGPaintServerPattern19setPatternTransformERKNS_20TransformationMatrixE
+__ZN7WebCore21SVGPaintServerPattern20setPatternBoundariesERKNS_9FloatRectE
+__ZN7WebCore21SVGPaintServerPattern7setTileESt8auto_ptrINS_11ImageBufferEE
+__ZNK7WebCore21SVGPaintServerPattern4tileEv
+__ZNK7WebCore21SVGPaintServerPattern17patternBoundariesEv
+__ZNK7WebCore21SVGPaintServerPattern16patternTransformEv
+__ZNK7WebCore21SVGPaintServerPattern8teardownERPNS_15GraphicsContextEPKNS_12RenderObjectENS_18SVGPaintTargetTypeEb
+__ZN7WebCore10TextStreamlsEb
+__ZNK7WebCore28SVGPaintServerRadialGradient22externalRepresentationERNS_10TextStreamE
+__ZNK7WebCore28SVGPaintServerRadialGradient14gradientRadiusEv
+__ZNK7WebCore28SVGPaintServerRadialGradient13gradientFocalEv
+__ZNK7WebCore28SVGPaintServerRadialGradient14gradientCenterEv
+__ZNK7WebCore21SVGPaintServerPattern22externalRepresentationERNS_10TextStreamE
+__ZN7WebCore17SVGPatternElementD0Ev
+__ZN7WebCore21SVGPaintServerPatternD0Ev
+__ZNK7WebCore13SVGSVGElement7isValidEv
+__ZN7WebCore26RenderSVGViewportContainerC1EPNS_16SVGStyledElementE
+__ZN7WebCore26RenderSVGViewportContainerC2EPNS_16SVGStyledElementE
+__ZN7WebCore26RenderSVGViewportContainer12calcViewportEv
+__ZNK7WebCore26RenderSVGViewportContainer22localToParentTransformEv
+__ZNK7WebCore26RenderSVGViewportContainer8viewportEv
+__ZNK7WebCore26RenderSVGViewportContainer17viewportTransformEv
+__ZN7WebCore26RenderSVGViewportContainer5paintERNS_12RenderObject9PaintInfoEii
+__ZN7WebCore26RenderSVGViewportContainer17applyViewportClipERNS_12RenderObject9PaintInfoE
+__ZNK7WebCore26RenderSVGViewportContainer14isSVGContainerEv
+__ZNK7WebCore26RenderSVGViewportContainer10renderNameEv
+__ZNK7WebCore26RenderSVGViewportContainer17absoluteTransformEv
+__ZN7WebCore26RenderSVGViewportContainerD0Ev
+__ZN7WebCore7DataRefINS_13StyleMiscDataEE6accessEv
+__ZN7WebCore13StyleMiscDataC1ERKS0_
+__ZN7WebCore13StyleMiscDataC2ERKS0_
+__ZNK7WebCore13StyleMiscDataeqERKS0_
+__ZN7WebCoreL18writeNameValuePairINS_6StringEEEvRNS_10TextStreamEPKcT_
+__ZN7WebCore15GraphicsContext18setShouldAntialiasEb
+__ZN7WebCore15GraphicsContext26setPlatformShouldAntialiasEb
+__ZNK7WebCore14RenderSVGTSpan10renderNameEv
+__ZN7WebCoreL30floatWidthMissingGlyphCallbackERKNS_7TextRunERNS_34SVGTextRunWalkerMeasuredLengthDataE
+__ZNK7WebCore4Font12fontSelectorEv
+__ZN7WebCoreL28drawTextMissingGlyphCallbackERKNS_7TextRunERNS_28SVGTextRunWalkerDrawTextDataE
+__ZN7WebCoreL17cursorConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore16SVGCursorElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16SVGCursorElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16SVGCursorElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore16SVGCursorElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZThn264_NK7WebCore16SVGCursorElement14contextElementEv
+__ZNK7WebCore16SVGCursorElement14contextElementEv
+__ZNK7WebCore16SVGCursorElement7isValidEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_16SVGCursorElementENS_9SVGLengthEXadL_ZNS_8SVGNames15cursorTagStringEEEXadL_ZNS3_11xAttrS
+__ZN7WebCore13CSSImageValue14cachedImageURLEv
+__ZN7WebCore13CSSImageValue16clearCachedImageEv
+__ZN3WTF7HashSetIPN7WebCore10SVGElementENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore10SVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expandEv
+__ZN3WTF9HashTableIPN7WebCore10SVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6rehashEi
+__ZN3WTF9HashTableIPN7WebCore10SVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13allocateTa
+__ZN7WebCore16SVGCursorElement9addClientEPNS_10SVGElementE
+__ZNK7WebCore15RenderSVGInline10renderNameEv
+__ZN7WebCore16SVGCursorElement12removeClientEPNS_10SVGElementE
+__ZN3WTF9HashTableIPN7WebCore10SVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4findIS3_NS_
+__ZN3WTF9HashTableIPN7WebCore10SVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47removeAndI
+__ZN3WTF9HashTableIPN7WebCore10SVGElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6removeEPS3_
+__ZN7WebCore19CSSCursorImageValue23removeReferencedElementEPNS_10SVGElementE
+__ZN7WebCore16SVGCursorElementD0Ev
+__ZN7WebCore19SVGAnimatedPropertyINS_11SVGAElementENS_6StringEXadL_ZNS_8SVGNames10aTagStringEEEXadL_ZNS3_16targetAttrStringEEEE
+__ZN7WebCoreL15viewConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore14SVGViewElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14SVGViewElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14SVGViewElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore14SVGViewElement16rendererIsNeededEPNS_11RenderStyleE
+__ZThn288_NK7WebCore14SVGViewElement14contextElementEv
+__ZNK7WebCore14SVGViewElement14contextElementEv
+__ZNK7WebCore14SVGViewElement10viewTargetEv
+__ZN7WebCore13SVGStringListC1ERKNS_13QualifiedNameE
+__ZN7WebCore13SVGStringListC2ERKNS_13QualifiedNameE
+__ZN7WebCore13SVGStringList5resetERKNS_6StringE
+__ZN7WebCore13SVGStringList5parseERKNS_6StringEt
+__ZN7WebCore14SVGViewElementD0Ev
+__ZN7WebCore13SVGStringListD0Ev
+__ZN7WebCoreL19clippathConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore18SVGClipPathElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore18SVGClipPathElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore18SVGClipPathElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZNK7WebCore18SVGClipPathElement7isValidEv
+__ZN7WebCore18SVGClipPathElement16rendererIsNeededEPNS_11RenderStyleE
+__ZN7WebCore18SVGClipPathElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore13StyleClipDataC1ERKS0_
+__ZN7WebCore13StyleClipDataC2ERKS0_
+__ZN7WebCore19SVGAnimatedPropertyINS_14SVGMaskElementEiXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS2_19maskUnitsAttrStringEEEE1
+__ZNK7WebCore13StyleClipDataeqERKS0_
+__ZN7WebCore18SVGClipPathElement14canvasResourceEv
+__ZN7WebCore18SVGResourceClipperC1Ev
+__ZN7WebCore18SVGResourceClipperC2Ev
+__ZNK7WebCore29SVGStyledTransformableElement10toClipPathEv
+__ZN7WebCore18SVGResourceClipper11addClipDataERKNS_4PathENS_8WindRuleEb
+__ZN3WTF6VectorIN7WebCore8ClipDataELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore8ClipDataELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore8ClipDataELm0EE15reserveCapacityEm
+__ZNK7WebCore18SVGResourceClipper8clipDataEv
+__ZNK7WebCore18SVGResourceClipper12resourceTypeEv
+__ZNK7WebCore18SVGResourceClipper9applyClipEPNS_15GraphicsContextERKNS_9FloatRectE
+__ZN7WebCore15GraphicsContext8clipPathENS_8WindRuleE
+__ZN7WebCore18SVGResourceClipper13resetClipDataEv
+__ZN3WTF6VectorIN7WebCore8ClipDataELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN7WebCore8ClipDataELm0EE6shrinkEm
+__ZN7WebCorelsERNS_10TextStreamERKNS_11SVGResourceE
+__ZNK7WebCore18SVGResourceClipper22externalRepresentationERNS_10TextStreamE
+__ZN7WebCorelsINS_8ClipDataEEERNS_10TextStreamES3_RKN3WTF6VectorIT_Lm0EEE
+__ZN7WebCorelsERNS_10TextStreamERKNS_8ClipDataE
+__ZNK7WebCore17SVGResourceMasker22externalRepresentationERNS_10TextStreamE
+__ZN7WebCore18SVGClipPathElementD0Ev
+__ZN7WebCore18SVGResourceClipperD0Ev
+__ZN7WebCoreL17markerConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore16SVGMarkerElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16SVGMarkerElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore8SVGAngleC1Ev
+__ZN7WebCore8SVGAngleC2Ev
+__ZN7WebCore16SVGMarkerElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore16SVGMarkerElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZThn312_NK7WebCore16SVGMarkerElement14contextElementEv
+__ZNK7WebCore16SVGMarkerElement14contextElementEv
+__ZN7WebCore16SVGMarkerElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore16SVGMarkerElement15childrenChangedEbPNS_4NodeES2_i
+__ZN7WebCore15StyleMarkerDataC1ERKS0_
+__ZN7WebCore15StyleMarkerDataC2ERKS0_
+__ZN7WebCore7DataRefINS_15StyleMarkerDataEE6accessEv
+__ZNK7WebCore15StyleMarkerDataeqERKS0_
+__ZNK7WebCore19SVGAnimatedPropertyINS_16SVGMarkerElementENS_9SVGLengthEXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS3_22marker
+__ZN7WebCore16SVGMarkerElement14canvasResourceEv
+__ZN7WebCore17SVGResourceMarkerC1Ev
+__ZN7WebCore17SVGResourceMarkerC2Ev
+__ZN7WebCore17SVGResourceMarker9setMarkerEPNS_26RenderSVGViewportContainerE
+__ZNK7WebCore8SVGAngle5valueEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_16SVGMarkerElementENS_9SVGLengthEXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS3_14refYAt
+__ZNK7WebCore19SVGAnimatedPropertyINS_16SVGMarkerElementENS_9SVGLengthEXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS3_14refXAt
+__ZN7WebCore17SVGResourceMarker6setRefEdd
+__ZNK7WebCore17SVGResourceMarker12resourceTypeEv
+__ZN7WebCore15DrawMarkersDataC1EPNS_15GraphicsContextEPNS_17SVGResourceMarkerES4_d
+__ZN7WebCore15DrawMarkersDataC2EPNS_15GraphicsContextEPNS_17SVGResourceMarkerES4_d
+__ZN7WebCoreL22drawStartAndMidMarkersEPvPKNS_11PathElementE
+__ZN7WebCoreL18drawMarkerWithDataEPNS_15GraphicsContextERNS_10MarkerDataE
+__ZN7WebCore17SVGResourceMarker4drawEPNS_15GraphicsContextERKNS_9FloatRectEdddd
+__ZNK3WTF9HashTableIPN7WebCore17SVGResourceMarkerES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E8con
+__ZN3WTF7HashSetIPN7WebCore17SVGResourceMarkerENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore17SVGResourceMarkerES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6expa
+__ZN3WTF9HashTableIPN7WebCore17SVGResourceMarkerES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6reha
+__ZN3WTF9HashTableIPN7WebCore17SVGResourceMarkerES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E13all
+__ZN3WTF9HashTableIPN7WebCore17SVGResourceMarkerES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E15dea
+__ZN3WTF9HashTableIPN7WebCore17SVGResourceMarkerES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E4find
+__ZN3WTF9HashTableIPN7WebCore17SVGResourceMarkerES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E47rem
+__ZN3WTF9HashTableIPN7WebCore17SVGResourceMarkerES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_E6remo
+__ZNK7WebCore17SVGResourceMarker12cachedBoundsEv
+__ZNK7WebCore17SVGResourceMarker22externalRepresentationERNS_10TextStreamE
+__ZN7WebCore16SVGMarkerElementD0Ev
+__ZN7WebCore17SVGResourceMarkerD0Ev
+__ZN7WebCore8SVGAngleD0Ev
+__ZThn240_NK7WebCore17SVGPatternElement14contextElementEv
+__ZNK7WebCore17SVGPatternElement14contextElementEv
+__ZNK3WTF9HashTableIPKN7WebCore17SVGPatternElementES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA_E8co
+__ZN7WebCore16SVGTransformList11consolidateEv
+__ZNK7WebCore13RenderSVGText14localTransformEv
+__ZN7WebCore15GraphicsContext16setStrokePatternEN3WTF10PassRefPtrINS_7PatternEEE
+__ZN7WebCore15GraphicsContext18applyStrokePatternEv
+__ZN7WebCoreL17switchConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore16SVGSwitchElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore16SVGSwitchElement7isValidEv
+__ZN7WebCore16SVGSwitchElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZNK7WebCore16SVGSwitchElement25childShouldCreateRendererEPNS_4NodeE
+__ZNK7WebCore8SVGTests18requiredExtensionsEv
+__ZNK7WebCore8SVGTests14systemLanguageEv
+__ZN7WebCore16SVGSwitchElementD0Ev
+__ZNK7WebCore8SVGTests16requiredFeaturesEv
+__ZN7WebCore27jsSVGElementOwnerSVGElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore17jsSVGRectElementXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGRectElementENS_9SVGLengthEXadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_11xAttrStri
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_14SVGRectElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_
+__ZN7WebCore17jsSVGRectElementYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGRectElementENS_9SVGLengthEXadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_11yAttrStri
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_14SVGRectElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3
+__ZN7WebCore22jsSVGRectElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGRectElementENS_9SVGLengthEXadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_16heightAtt
+__ZN7WebCore11JSSVGLength3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore19setJSSVGLengthValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9SVGLength8setValueEf
+__ZN7WebCore26JSSVGDynamicPODTypeWrapperINS_9SVGLengthENS_19SVGAnimatedTemplateIS1_EEE12commitChangeES1_PNS_10SVGElementE
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGRectElementENS_9SVGLengthEXadL_ZNS_8SVGNames13rectTagStringEEEXadL_ZNS3_11yAttrStrin
+__ZN7WebCore15SVGTitleElement19removedFromDocumentEv
+__ZN7WebCore16SVGScriptElement19removedFromDocumentEv
+__ZN7WebCore13SVGUseElement24alterShadowTreeForSVGTagEPNS_10SVGElementE
+__ZNK7WebCore19SVGAnimatedPropertyINS_13SVGUseElementENS_9SVGLengthEXadL_ZNS_8SVGNames12useTagStringEEEXadL_ZNS3_15widthAttrStr
+__ZN7WebCoreL17symbolConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore16SVGSymbolElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16SVGSymbolElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore16SVGSymbolElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZThn312_NK7WebCore16SVGSymbolElement14contextElementEv
+__ZNK7WebCore16SVGSymbolElement14contextElementEv
+__ZN7WebCore16SVGSymbolElement16rendererIsNeededEPNS_11RenderStyleE
+__ZThn8_N7WebCore16SVGSymbolElementD0Ev
+__ZN7WebCore16SVGSymbolElementD0Ev
+__ZThn8_N7WebCore17SVGEllipseElementD0Ev
+__ZN7WebCore21SVGDocumentExtensions18addPendingResourceERKNS_12AtomicStringEPNS_16SVGStyledElementE
+__ZN3WTF7HashMapIN7WebCore6StringEPNS_7HashSetIPNS1_16SVGStyledElementENS_7PtrHashIS5_EENS_10HashTraitsIS5_EEEENS1_10StringHash
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_PNS_7HashSetIPNS1_16SVGStyledElementENS_7PtrHashIS6_EENS_10HashTraitsIS6_EEEEENS
+__ZNK7WebCore22SVGCharacterLayoutInfo22baselineShiftValueNextEv
+__ZN7WebCoreL15trefConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore14SVGTRefElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14SVGTRefElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore14SVGTRefElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZThn672_NK7WebCore14SVGTRefElement14contextElementEv
+__ZNK7WebCore14SVGTRefElement14contextElementEv
+__ZN7WebCore14SVGTRefElement20updateReferencedTextEv
+__ZN7WebCore14SVGTRefElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZNK7WebCore14SVGTRefElement25childShouldCreateRendererEPNS_4NodeE
+__ZNK7WebCore17RenderSVGTextPath10renderNameEv
+__ZN7WebCoreL23angleToGlyphOrientationEf
+__ZN7WebCoreL27cummulatedHeightOfTextChunkERNS_12SVGTextChunkE
+__ZN7WebCore41cummulatedHeightOfInlineBoxCharacterRangeERNS_26SVGInlineBoxCharacterRangeE
+__ZN7WebCore14SVGTRefElementD0Ev
+__ZN7WebCore16SVGRootInlineBox37retrievePaintServersForTextDecorationEPNS_12RenderObjectE
+__ZN3WTF6VectorIPN7WebCore12RenderObjectELm0EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore12RenderObjectELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore12RenderObjectELm0EE15reserveCapacityEm
+__ZN3WTF7HashMapIiPN7WebCore12RenderObjectENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3setERKiRKS3_
+__ZN3WTF6VectorIPN7WebCore12RenderObjectELm0EE6shrinkEm
+__ZN3WTF9HashTableIiSt4pairIiPN7WebCore12RenderObjectEENS_18PairFirstExtractorIS5_EENS_7IntHashIjEENS_14PairHashTraitsINS_10Has
+__ZN7WebCore16SVGInlineTextBox15paintDecorationENS_15ETextDecorationEPNS_15GraphicsContextEiiiRKNS_7SVGCharERKNS_21SVGTextDecor
+__ZNK3WTF9HashTableIiSt4pairIiPN7WebCore12RenderObjectEENS_18PairFirstExtractorIS5_EENS_7IntHashIjEENS_14PairHashTraitsINS_10Ha
+__ZNK3WTF7HashMapIiPN7WebCore12RenderObjectENS_7IntHashIjEENS_10HashTraitsIiEENS6_IS3_EEE3getERKi
+__ZNK7WebCore22SVGCharacterLayoutInfo11dyValueNextEv
+__ZNK3WTF7HashMapIN7WebCore6StringEPNS_7HashSetIPNS1_16SVGStyledElementENS_7PtrHashIS5_EENS_10HashTraitsIS5_EEEENS1_10StringHas
+__ZN7WebCore21SVGDocumentExtensions21removePendingResourceERKNS_12AtomicStringE
+__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_EC1ERKS
+__ZN3WTF9HashTableIPN7WebCore16SVGStyledElementES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_EC2ERKS
+__ZN7WebCore11SVGResource17invalidateClientsEN3WTF7HashSetIPNS_16SVGStyledElementENS1_7PtrHashIS4_EENS1_10HashTraitsIS4_EEEE
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplEPNS1_13SVGNumberListENS1_10StringHashENS_10HashTraitsIS6_EENS
+__ZN7WebCore13SVGNumberList5parseERKNS_6StringE
+__ZNK7WebCore22SVGCharacterLayoutInfo14angleValueNextEv
+__ZN7WebCore55jsSVGTextContentElementPrototypeFunctionSelectSubStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZNK7WebCore21SVGTextContentElement15selectSubStringEjjRi
+__ZN7WebCore19RenderSVGInlineText23selectionRectForRepaintEPNS_20RenderBoxModelObjectEb
+__ZNK7WebCore12RenderObject20isSVGHiddenContainerEv
+__ZN7WebCore19RenderSVGInlineText26computeRepaintRectForRangeEPNS_20RenderBoxModelObjectEii
+__ZN7WebCore19RenderSVGInlineText26computeRepaintQuadForRangeEPNS_20RenderBoxModelObjectEii
+__ZN7WebCore17findSVGRootObjectEPNS_12RenderObjectE
+__ZN7WebCore16SVGInlineTextBox13selectionRectEiiii
+__ZN7WebCore18SVGTextChunkWalkerINS_35SVGInlineTextBoxSelectionRectWalkerEEclEPNS_16SVGInlineTextBoxEiRKNS_20TransformationMatr
+__ZN7WebCore35SVGInlineTextBoxSelectionRectWalker20chunkPortionCallbackEPNS_16SVGInlineTextBoxEiRKNS_20TransformationMatrixERKP
+__ZN7WebCore16SVGInlineTextBox14paintSelectionEiRKNS_7SVGCharEPKtiPNS_15GraphicsContextEPNS_11RenderStyleERKNS_4FontE
+__ZNK7WebCore22SVGCharacterLayoutInfo11dxValueNextEv
+__ZN7WebCore45jsSVGTextElementPrototypeFunctionGetScreenCTMEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14SVGTextElement12getScreenCTMEv
+__ZNK7WebCore16SVGTransformable12getScreenCTMEPKNS_10SVGElementE
+__ZN7WebCore12SVGLocatable12getScreenCTMEPKNS_10SVGElementE
+__ZNK7WebCore25SVGStyledLocatableElement17isStyledLocatableEv
+__ZNK7WebCore29SVGStyledTransformableElement12getScreenCTMEv
+__ZNK7WebCore13SVGSVGElement12getScreenCTMEv
+__ZNK7WebCore25SVGStyledLocatableElement12getScreenCTMEv
+__ZThn240_NK7WebCore29SVGStyledTransformableElement22animatedLocalTransformEv
+__ZThn672_NK7WebCore14SVGTextElement22animatedLocalTransformEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19JSSVGPODTypeWrapperINS_20TransformationMatrixEEEPNS_10SVGElementE
+__ZN7WebCore11JSSVGMatrix15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore11JSSVGMatrixC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperINS_20TransformationMatrixEEEEEPNS
+__ZN7WebCore11JSSVGMatrixC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperINS_20TransformationMatrixEEEEEPNS
+__ZN7WebCore11JSSVGMatrix18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore12jsSVGMatrixAEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_20TransformationMatrixEEcvS1_Ev
+__ZN7WebCore12jsSVGMatrixBEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12jsSVGMatrixCEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12jsSVGMatrixDEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12jsSVGMatrixEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore12jsSVGMatrixFEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39jsSVGTextElementPrototypeFunctionGetCTMEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14SVGTextElement6getCTMEv
+__ZNK7WebCore16SVGTransformable6getCTMEPKNS_10SVGElementE
+__ZN7WebCore12SVGLocatable6getCTMEPKNS_10SVGElementE
+__ZNK7WebCore29SVGStyledTransformableElement6getCTMEv
+__ZNK7WebCore13SVGSVGElement6getCTMEv
+__ZN7WebCore54jsSVGTextElementPrototypeFunctionGetTransformToElementEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
+__ZN7WebCore12toSVGElementEN3JSC7JSValueE
+__ZNK7WebCore12SVGLocatable21getTransformToElementEPNS_10SVGElementERi
+__ZTv0_n56_NK7WebCore14SVGTextElement6getCTMEv
+__ZN7WebCore27JSSVGCircleElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore42jsSVGCircleElementPrototypeFunctionGetBBoxEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore29SVGStyledTransformableElement7getBBoxEv
+__ZN7WebCore12SVGLocatable7getBBoxEPKNS_10SVGElementE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19JSSVGPODTypeWrapperINS_9FloatRectEEEPNS_10SVGElementE
+__ZN7WebCore9JSSVGRect15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore9JSSVGRectC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperINS_9FloatRectEEEEEPNS_10SVGElementE
+__ZN7WebCore9JSSVGRectC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperINS_9FloatRectEEEEEPNS_10SVGElementE
+__ZN7WebCore9JSSVGRect18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore10jsSVGRectXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_9FloatRectEEcvS1_Ev
+__ZN7WebCore10jsSVGRectYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14jsSVGRectWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15jsSVGRectHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsSVGCircleElementFarthestViewportElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore29SVGStyledTransformableElement23farthestViewportElementEv
+__ZN7WebCore12SVGLocatable23farthestViewportElementEPKNS_10SVGElementE
+__ZN7WebCore40jsSVGCircleElementNearestViewportElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore29SVGStyledTransformableElement22nearestViewportElementEv
+__ZN7WebCore9JSSVGRectD1Ev
+__ZN7WebCore9JSSVGRectD2Ev
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_9FloatRectEED0Ev
+__ZN7WebCore11JSSVGMatrixD1Ev
+__ZN7WebCore11JSSVGMatrixD2Ev
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_20TransformationMatrixEED0Ev
+__ZN7WebCore18JSSVGRectPrototypeD1Ev
+__ZN7WebCore20JSSVGMatrixPrototypeD1Ev
+__ZThn400_NK7WebCore17SVGPatternElement14contextElementEv
+__ZNK7WebCore14RenderSVGTSpan17objectBoundingBoxEv
+__ZN7WebCore13StyleTextDataC1ERKS0_
+__ZN7WebCore13StyleTextDataC2ERKS0_
+__ZNK7WebCore13StyleTextDataeqERKS0_
+__ZN7WebCore20findCharUnicodeRangeEi
+__ZThn288_N7WebCore16SVGScriptElement17dispatchLoadEventEv
+__ZN7WebCore16SVGScriptElement17dispatchLoadEventEv
+__ZN7WebCoreL26createSVGUseElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore15JSSVGUseElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSSVGUseElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13SVGUseElementEEE
+__ZN7WebCore15JSSVGUseElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13SVGUseElementEEE
+__ZN7WebCore15JSSVGUseElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore24JSSVGUseElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore15JSSVGUseElement9classInfoEv
+__ZN7WebCoreL30createSVGEllipseElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore19JSSVGEllipseElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSSVGEllipseElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17SVGEllipseElementEEE
+__ZN7WebCore19JSSVGEllipseElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17SVGEllipseElementEEE
+__ZN7WebCore19JSSVGEllipseElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28JSSVGEllipseElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore19JSSVGEllipseElement9classInfoEv
+__ZN7WebCoreL27createSVGDefsElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore16JSSVGDefsElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGDefsElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGDefsElementEEE
+__ZN7WebCore16JSSVGDefsElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGDefsElementEEE
+__ZN7WebCoreL37createSVGLinearGradientElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore26JSSVGLinearGradientElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSSVGLinearGradientElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_24SVGLinearGradientElementEEE
+__ZN7WebCore26JSSVGLinearGradientElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_24SVGLinearGradientElementEEE
+__ZN7WebCore20JSSVGGradientElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGGradientElementEEE
+__ZN7WebCore26JSSVGLinearGradientElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20JSSVGGradientElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSSVGLinearGradientElement9classInfoEv
+__ZN7WebCoreL27createSVGStopElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore16JSSVGStopElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGStopElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGStopElementEEE
+__ZN7WebCore16JSSVGStopElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGStopElementEEE
+__ZN7WebCore16JSSVGStopElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSSVGStopElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16JSSVGStopElement9classInfoEv
+__ZN7WebCore16JSSVGDefsElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSSVGDefsElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16JSSVGDefsElement9classInfoEv
+__ZN7WebCoreL27createSVGLineElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore16JSSVGLineElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGLineElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGLineElementEEE
+__ZN7WebCore16JSSVGLineElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGLineElementEEE
+__ZN7WebCore16JSSVGLineElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSSVGLineElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16JSSVGLineElement9classInfoEv
+__ZN7WebCore16JSSVGStopElementD1Ev
+__ZN7WebCore26JSSVGLinearGradientElementD1Ev
+__ZN7WebCore19JSSVGEllipseElementD1Ev
+__ZN7WebCore15JSSVGUseElementD1Ev
+__ZN7WebCore28JSSVGEllipseElementPrototypeD1Ev
+__ZN7WebCore24JSSVGUseElementPrototypeD1Ev
+__ZN7WebCore16JSSVGLineElementD1Ev
+__ZN7WebCore25JSSVGLineElementPrototypeD1Ev
+__ZN7WebCore25JSSVGStopElementPrototypeD1Ev
+__ZN7WebCore35JSSVGLinearGradientElementPrototypeD1Ev
+__ZN7WebCore16JSSVGDefsElementD1Ev
+__ZThn8_N7WebCore14SVGDefsElementD0Ev
+__ZN7WebCore25JSSVGDefsElementPrototypeD1Ev
+__ZN7WebCore21SVGDocumentExtensions11reportErrorERKNS_6StringE
+__ZThn8_N7WebCore15SVGTSpanElementD0Ev
+__ZN7WebCoreL29createSVGSymbolElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore18JSSVGSymbolElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSSVGSymbolElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGSymbolElementEEE
+__ZN7WebCore18JSSVGSymbolElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGSymbolElementEEE
+__ZN7WebCore18JSSVGSymbolElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27JSSVGSymbolElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSSVGSymbolElement9classInfoEv
+__ZN7WebCore18JSSVGSymbolElementD1Ev
+__ZN7WebCore27JSSVGSymbolElementPrototypeD1Ev
+__ZN7WebCore10JSSVGPaintC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8SVGPaintEEE
+__ZN7WebCore10JSSVGPaintC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8SVGPaintEEE
+__ZN7WebCore10JSSVGColorC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8SVGColorEEE
+__ZN7WebCore10JSSVGPaint18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore10JSSVGColor18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore10JSSVGPaint9classInfoEv
+__ZN7WebCore10JSSVGPaintD1Ev
+__ZN7WebCore47jsSVGSVGElementPrototypeFunctionCreateSVGMatrixEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13SVGSVGElement15createSVGMatrixEv
+__ZN7WebCore20JSSVGMatrixPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore44jsSVGMatrixPrototypeFunctionRotateFromVectorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore11JSSVGMatrix9classInfoEv
+__ZN7WebCore11JSSVGMatrix16rotateFromVectorEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore20TransformationMatrix16rotateFromVectorEdd
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_12SVGExceptionEPNS_10SVGElementE
+__ZN7WebCore14JSSVGExceptionC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12SVGExceptionEEEPNS_10SVGElementE
+__ZN7WebCore14JSSVGExceptionC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12SVGExceptionEEEPNS_10SVGElementE
+__ZN7WebCore14JSSVGException18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore39jsSVGExceptionPrototypeFunctionToStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14JSSVGException9classInfoEv
+__ZN7WebCore25jsSVGExceptionConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsSVGMatrixPrototypeFunctionTranslateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14JSSVGExceptionD1Ev
+__ZN7WebCore14JSSVGExceptionD2Ev
+__ZN7WebCore24jsSVGDocumentRootElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore47jsSVGSVGElementPrototypeFunctionCreateSVGNumberEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13SVGSVGElement15createSVGNumberEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19JSSVGPODTypeWrapperIfEEPNS_10SVGElementE
+__ZN7WebCore11JSSVGNumber15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore11JSSVGNumberC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperIfEEEEPNS_10SVGElementE
+__ZN7WebCore11JSSVGNumberC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperIfEEEEPNS_10SVGElementE
+__ZN7WebCore11JSSVGNumber18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore16jsSVGNumberValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSSVGStaticPODTypeWrapperIfEcvfEv
+__ZN7WebCore11JSSVGNumber3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore19setJSSVGNumberValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25JSSVGStaticPODTypeWrapperIfE12commitChangeEfPNS_10SVGElementE
+__ZN7WebCore11JSSVGNumberD1Ev
+__ZN7WebCore11JSSVGNumberD2Ev
+__ZN7WebCore25JSSVGStaticPODTypeWrapperIfED0Ev
+__ZN7WebCore46jsSVGSVGElementPrototypeFunctionCreateSVGPointEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13SVGSVGElement14createSVGPointEv
+__ZN7WebCore10JSSVGPoint3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore14setJSSVGPointXEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_10FloatPointEE12commitChangeES1_PNS_10SVGElementE
+__ZN7WebCore14setJSSVGPointYEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore20JSSVGNumberPrototypeD1Ev
+__ZN7WebCore19JSSVGPointPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore35jsSVGMatrixPrototypeFunctionInverseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore11JSSVGMatrix7inverseEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore42jsSVGPointPrototypeFunctionMatrixTransformEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore10JSSVGPoint9classInfoEv
+__ZN7WebCore11toSVGMatrixEN3JSC7JSValueE
+__ZNK7WebCore10FloatPoint15matrixTransformERKNS_20TransformationMatrixE
+__ZN7WebCore23JSSVGTextContentElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore45jsSVGSVGElementPrototypeFunctionCreateSVGRectEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13SVGSVGElement13createSVGRectEv
+__ZN7WebCore9JSSVGRect3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore13setJSSVGRectXEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_9FloatRectEE12commitChangeES1_PNS_10SVGElementE
+__ZN7WebCore13setJSSVGRectYEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore17setJSSVGRectWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore18setJSSVGRectHeightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCoreL23dominantBaselineToShiftEbPKNS_12RenderObjectERKNS_4FontE
+__ZNK7WebCore21SVGPathSegSingleCoord8toStringEv
+__ZNK7WebCore19SVGPathSegMovetoAbs19pathSegTypeAsLetterEv
+__ZN7WebCore14SVGPathSegList14createAnimatedEPKS0_S2_f
+__ZNK7WebCore19SVGPathSegLinetoAbs19pathSegTypeAsLetterEv
+__ZNK7WebCore22SVGPathSegCurvetoCubic8toStringEv
+__ZNK7WebCore25SVGPathSegCurvetoCubicAbs19pathSegTypeAsLetterEv
+__ZN7WebCoreL24foreignobjectConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore23SVGForeignObjectElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore23SVGForeignObjectElement7isValidEv
+__ZN7WebCore23SVGForeignObjectElement14createRendererEPNS_11RenderArenaEPNS_11RenderStyleE
+__ZN7WebCore19RenderForeignObjectC1EPNS_23SVGForeignObjectElementE
+__ZN7WebCore19RenderForeignObjectC2EPNS_23SVGForeignObjectElementE
+__ZNK7WebCore19RenderForeignObject13requiresLayerEv
+__ZNK7WebCore23SVGForeignObjectElement25childShouldCreateRendererEPNS_4NodeE
+__ZN7WebCore16jsSVGSVGElementXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_13SVGSVGElementENS_9SVGLengthEXadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_11xAttrString
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_13SVGSVGElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_11
+__ZN7WebCore19SVGAnimatedPropertyINS_13SVGSVGElementENS_9SVGLengthEXadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_11xAttrStringEE
+__ZN7WebCore19RenderForeignObject21computeRectForRepaintEPNS_20RenderBoxModelObjectERNS_7IntRectEb
+__ZNK7WebCore19RenderForeignObject22localToParentTransformEv
+__ZNK7WebCore19RenderForeignObject24translationForAttributesEv
+__ZNK7WebCore19RenderForeignObject14localTransformEv
+__ZN7WebCore19RenderForeignObject6layoutEv
+__ZNK7WebCore19RenderForeignObject29repaintRectInLocalCoordinatesEv
+__ZN7WebCore19RenderForeignObject5paintERNS_12RenderObject9PaintInfoEii
+__ZNK7WebCore19RenderForeignObject10renderNameEv
+__ZN7WebCore19RenderForeignObjectD0Ev
+__ZN7WebCore13RenderSVGRoot11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiiiNS_13HitTestActionE
+__ZN7WebCore10RenderPath16nodeAtFloatPointERKNS_14HitTestRequestERNS_13HitTestResultERKNS_10FloatPointENS_13HitTestActionE
+__ZN7WebCore21PointerEventsHitRulesC1ENS0_11EHitTestingENS_14EPointerEventsE
+__ZN7WebCore21PointerEventsHitRulesC2ENS0_11EHitTestingENS_14EPointerEventsE
+__ZNK7WebCore10RenderPath12fillContainsERKNS_10FloatPointEb
+__ZNK7WebCore11SVGDocument17zoomAndPanEnabledEv
+__ZN7WebCore23SVGForeignObjectElementD0Ev
+__ZN7WebCore25jsSVGRectElementClassNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGStyledElementENS_6StringEXadL_ZNS_26SVGStyledElementIdentifierEEEXadL_ZNS_9HTMLName
+__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateINS1_6StringEEENS1_29SVGAnimatedTypeWrapperKey
+__ZN3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateINS1_6StringEEENS1_29SVGAnimatedTypeWrapperKeyH
+__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_PNS1_19SVGAnimatedTemplateINS1_6StringEEEENS_18PairFirstExtr
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SVGAnimatedTemplateINS_6StringEEEPNS_10SVGElementE
+__ZN7WebCore19JSSVGAnimatedString15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSSVGAnimatedStringC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateINS_6StringEEEEEPNS_10SVGE
+__ZN7WebCore19JSSVGAnimatedStringC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateINS_6StringEEEEEPNS_10SVGE
+__ZN7WebCore19JSSVGAnimatedString3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore29setJSSVGAnimatedStringBaseValEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZNK7WebCore19SVGAnimatedPropertyINS_16SVGStyledElementENS_6StringEXadL_ZNS_26SVGStyledElementIdentifierEEEXadL_ZNS_9HTMLNames
+__ZN7WebCore19synchronizePropertyINS_16SVGStyledElementENS_6StringEEEvPKT_RKNS_13QualifiedNameET0_
+__ZN7WebCore19JSSVGAnimatedStringD1Ev
+__ZN7WebCore19JSSVGAnimatedStringD2Ev
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_16SVGStyledElementES1_NS_6StringES2_XadL_ZNS_26SVGStyledElementIdentifierEEEXadL_ZN
+__ZN7WebCore28JSSVGAnimatedStringPrototypeD1Ev
+__ZN7WebCore18RenderSVGContainer16nodeAtFloatPointERKNS_14HitTestRequestERNS_13HitTestResultERKNS_10FloatPointENS_13HitTestActi
+__ZN7WebCore18RenderSVGContainer25pointIsInsideViewportClipERKNS_10FloatPointE
+__ZNK7WebCore7Element5titleEv
+__ZNK7WebCore13SVGZoomAndPan10zoomAndPanEv
+__ZN7WebCore12RenderObject16positionForPointERKNS_8IntPointE
+__ZN7WebCoreL31createSVGClipPathElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore20JSSVGClipPathElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSSVGClipPathElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGClipPathElementEEE
+__ZN7WebCore20JSSVGClipPathElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGClipPathElementEEE
+__ZN7WebCore20JSSVGClipPathElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore20JSSVGClipPathElementD1Ev
+__ZN7WebCore29JSSVGClipPathElementPrototypeD1Ev
+__ZNK7WebCore13SVGUseElement10toClipPathEv
+__ZN7WebCore33jsSVGClipPathElementClipPathUnitsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_18SVGClipPathElementEiXadL_ZNS_8SVGNames17clipPathTagStringEEEXadL_ZNS2_23clipPathUnitsA
+__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIiEENS1_29SVGAnimatedTypeWrapperKeyHashENS1_35
+__ZN3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIiEENS1_29SVGAnimatedTypeWrapperKeyHashENS1_35S
+__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_PNS1_19SVGAnimatedTemplateIiEEENS_18PairFirstExtractorIS7_EE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SVGAnimatedTemplateIiEEPNS_10SVGElementE
+__ZN7WebCore24JSSVGAnimatedEnumeration15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSSVGAnimatedEnumerationC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIiEEEEPNS_10SVGElemen
+__ZN7WebCore24JSSVGAnimatedEnumerationC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIiEEEEPNS_10SVGElemen
+__ZN7WebCore24JSSVGAnimatedEnumeration3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore34setJSSVGAnimatedEnumerationBaseValEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24JSSVGAnimatedEnumerationD1Ev
+__ZN7WebCore24JSSVGAnimatedEnumerationD2Ev
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_18SVGClipPathElementES1_iiXadL_ZNS_8SVGNames17clipPathTagStringEEEXadL_ZNS2_23clipP
+__ZN7WebCore33JSSVGAnimatedEnumerationPrototypeD1Ev
+__ZN7WebCoreL31createSVGMetadataElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore20JSSVGMetadataElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSSVGMetadataElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGMetadataElementEEE
+__ZN7WebCore20JSSVGMetadataElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGMetadataElementEEE
+__ZNK7WebCore20JSSVGMetadataElement9classInfoEv
+__ZN7WebCore20JSSVGMetadataElementD1Ev
+__ZThn8_N7WebCore18SVGMetadataElementD0Ev
+__ZN7WebCore29JSSVGMetadataElementPrototypeD1Ev
+__ZN7WebCore26RenderSVGViewportContainer25pointIsInsideViewportClipERKNS_10FloatPointE
+__ZNK7WebCore10RenderPath14strokeContainsERKNS_10FloatPointEb
+__ZNK7WebCore4Path14strokeContainsEPNS_18StrokeStyleApplierERKNS_10FloatPointE
+__ZNK7WebCore13SVGUseElement28instanceForShadowTreeElementEPNS_4NodeE
+__ZNK7WebCore13SVGUseElement28instanceForShadowTreeElementEPNS_4NodeEPNS_18SVGElementInstanceE
+__ZThn24_N7WebCore18SVGElementInstance14refEventTargetEv
+__ZN7WebCore18SVGElementInstance14refEventTargetEv
+__ZThn24_N7WebCore18SVGElementInstance6toNodeEv
+__ZN7WebCore18SVGElementInstance6toNodeEv
+__ZThn24_N7WebCore18SVGElementInstance16derefEventTargetEv
+__ZN7WebCore18SVGElementInstance16derefEventTargetEv
+__ZN7WebCore22jsSVGStopElementOffsetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGStopElementEfXadL_ZNS_8SVGNames13stopTagStringEEEXadL_ZNS2_16offsetAttrStringEEEE15a
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGStopElementEfXadL_ZNS_8SVGNames13stopTagStringEEEXadL_ZNS2_16offsetAttrStringEEENS_
+__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIfEENS1_29SVGAnimatedTypeWrapperKeyHashENS1_35
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_14SVGStopElementES1_ffXadL_ZNS_8SVGNames13stopTagStringEEEXadL_ZNS2_16offsetAttrStr
+__ZN3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIfEENS1_29SVGAnimatedTypeWrapperKeyHashENS1_35S
+__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_PNS1_19SVGAnimatedTemplateIfEEENS_18PairFirstExtractorIS7_EE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SVGAnimatedTemplateIfEEPNS_10SVGElementE
+__ZN7WebCore19JSSVGAnimatedNumber15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSSVGAnimatedNumberC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIfEEEEPNS_10SVGElementE
+__ZN7WebCore19JSSVGAnimatedNumberC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIfEEEEPNS_10SVGElementE
+__ZN7WebCore19JSSVGAnimatedNumber18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore26jsSVGAnimatedNumberBaseValEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19SVGAnimatedPropertyINS_14SVGStopElementEfXadL_ZNS_8SVGNames13stopTagStringEEEXadL_ZNS2_16offsetAttrStringEEEE9ba
+__ZN7WebCore19JSSVGAnimatedNumber3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore29setJSSVGAnimatedNumberBaseValEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19JSSVGAnimatedNumberD1Ev
+__ZN7WebCore19JSSVGAnimatedNumberD2Ev
+__ZNK7WebCore24JSSVGSVGElementPrototype9classInfoEv
+__ZNK7WebCore21JSSVGElementPrototype9classInfoEv
+__ZN7WebCore29jsSVGSVGElementSystemLanguageEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_13SVGStringListEPNS_10SVGElementE
+__ZN7WebCore15JSSVGStringList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSSVGStringListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13SVGStringListEEEPNS_10SVGElementE
+__ZN7WebCore15JSSVGStringListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13SVGStringListEEEPNS_10SVGElementE
+__ZN7WebCore40jsSVGSVGElementExternalResourcesRequiredEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZThn296_NK7WebCore13SVGSVGElement14contextElementEv
+__ZN7WebCore21lookupOrCreateWrapperINS_28SVGExternalResourcesRequiredEbXadL_ZNS_38SVGExternalResourcesRequiredIdentifierEEEXadL
+__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIbEENS1_29SVGAnimatedTypeWrapperKeyHashENS1_35
+__ZN3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIbEENS1_29SVGAnimatedTypeWrapperKeyHashENS1_35S
+__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_PNS1_19SVGAnimatedTemplateIbEEENS_18PairFirstExtractorIS7_EE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SVGAnimatedTemplateIbEEPNS_10SVGElementE
+__ZN7WebCore20JSSVGAnimatedBoolean15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSSVGAnimatedBooleanC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIbEEEEPNS_10SVGElementE
+__ZN7WebCore20JSSVGAnimatedBooleanC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIbEEEEPNS_10SVGElementE
+__ZN7WebCore31jsSVGSVGElementCurrentTranslateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsSVGSVGElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_13SVGSVGElementENS_9SVGLengthEXadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_15widthAttrSt
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_13SVGSVGElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_15
+__ZN7WebCore22jsSVGSVGElementViewBoxEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_15SVGFitToViewBoxENS_9FloatRectEXadL_ZNS_25SVGFitToViewBoxIdentifierEEEXadL_ZNS_8SVGName
+__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateINS1_9FloatRectEEENS1_29SVGAnimatedTypeWrapper
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_15SVGFitToViewBoxENS_10SVGElementENS_9FloatRectES3_XadL_ZNS_25SVGFitToViewBoxIdenti
+__ZN3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateINS1_9FloatRectEEENS1_29SVGAnimatedTypeWrapperK
+__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_PNS1_19SVGAnimatedTemplateINS1_9FloatRectEEEENS_18PairFirstE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SVGAnimatedTemplateINS_9FloatRectEEEPNS_10SVGElementE
+__ZN7WebCore17JSSVGAnimatedRect15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSSVGAnimatedRectC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateINS_9FloatRectEEEEEPNS_10SVG
+__ZN7WebCore17JSSVGAnimatedRectC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateINS_9FloatRectEEEEEPNS_10SVG
+__ZN7WebCore37jsSVGSVGElementPixelUnitToMillimeterXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13SVGSVGElement22pixelUnitToMillimeterXEv
+__ZN7WebCore16jsSVGSVGElementYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_13SVGSVGElementENS_9SVGLengthEXadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_11yAttrString
+__ZN7WebCore39jsSVGSVGElementScreenPixelToMillimeterXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13SVGSVGElement24screenPixelToMillimeterXEv
+__ZN7WebCore27jsSVGSVGElementCurrentScaleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsSVGSVGElementViewportEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13SVGSVGElement8viewportEv
+__ZN7WebCore9FloatRect15narrowPrecisionEdddd
+__ZN7WebCore29jsSVGSVGElementUseCurrentViewEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsSVGSVGElementXmllangEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12SVGLangSpace7xmllangEv
+__ZN7WebCore37jsSVGSVGElementPixelUnitToMillimeterYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13SVGSVGElement22pixelUnitToMillimeterYEv
+__ZN7WebCore24jsSVGSVGElementClassNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore38jsSVGSVGElementFarthestViewportElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore25SVGStyledLocatableElement23farthestViewportElementEv
+__ZN7WebCore21jsSVGSVGElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_13SVGSVGElementENS_9SVGLengthEXadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_16heightAttrS
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_13SVGSVGElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_16
+__ZN7WebCore39jsSVGSVGElementScreenPixelToMillimeterYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13SVGSVGElement24screenPixelToMillimeterYEv
+__ZN7WebCore33jsSVGSVGElementRequiredExtensionsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsSVGSVGElementContentStyleTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13SVGSVGElement16contentStyleTypeEv
+__ZN7WebCore32jsSVGSVGElementContentScriptTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13SVGSVGElement17contentScriptTypeEv
+__ZN7WebCore31jsSVGSVGElementRequiredFeaturesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsSVGSVGElementXmlspaceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12SVGLangSpace8xmlspaceEv
+__ZN7WebCore20jsSVGSVGElementStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsSVGSVGElementNearestViewportElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsSVGSVGElementPreserveAspectRatioEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_15SVGFitToViewBoxENS_22SVGPreserveAspectRatioEXadL_ZNS_25SVGFitToViewBoxIdentifierEEEXad
+__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIPNS1_22SVGPreserveAspectRatioEEENS1_29SVGAnim
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_15SVGFitToViewBoxENS_10SVGElementENS_22SVGPreserveAspectRatioEPS3_XadL_ZNS_25SVGFit
+__ZN3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIPNS1_22SVGPreserveAspectRatioEEENS1_29SVGAnima
+__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_PNS1_19SVGAnimatedTemplateIPNS1_22SVGPreserveAspectRatioEEEE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SVGAnimatedTemplateIPNS_22SVGPreserveAspectRatioEEEPNS_10SVGElementE
+__ZN7WebCore32JSSVGAnimatedPreserveAspectRatio15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore32JSSVGAnimatedPreserveAspectRatioC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIPNS_22SVGPre
+__ZN7WebCore32JSSVGAnimatedPreserveAspectRatioC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIPNS_22SVGPre
+__ZN7WebCore25jsSVGSVGElementZoomAndPanEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsSVGElementXmlbaseEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore10SVGElement7xmlbaseEv
+__ZN7WebCore27jsSVGElementViewportElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsSVGSVGElementSVG_ZOOMANDPAN_UNKNOWNEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsSVGSVGElementSVG_ZOOMANDPAN_MAGNIFYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsSVGSVGElementSVG_ZOOMANDPAN_DISABLEEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32JSSVGAnimatedPreserveAspectRatioD1Ev
+__ZN7WebCore32JSSVGAnimatedPreserveAspectRatioD2Ev
+__ZN7WebCore15JSSVGStringListD1Ev
+__ZN7WebCore15JSSVGStringListD2Ev
+__ZN7WebCore17JSSVGAnimatedRectD1Ev
+__ZN7WebCore17JSSVGAnimatedRectD2Ev
+__ZN7WebCore35JSSVGStaticPODTypeWrapperWithParentINS_10FloatPointENS_13SVGSVGElementEED0Ev
+__ZN7WebCore20JSSVGAnimatedBooleanD1Ev
+__ZN7WebCore20JSSVGAnimatedBooleanD2Ev
+__ZN7WebCore28JSSVGAnimatedNumberPrototypeD1Ev
+__ZN7WebCore41JSSVGAnimatedPreserveAspectRatioPrototypeD1Ev
+__ZN7WebCore26JSSVGAnimatedRectPrototypeD1Ev
+__ZN7WebCore29JSSVGAnimatedBooleanPrototypeD1Ev
+__ZN7WebCore24JSSVGStringListPrototypeD1Ev
+__ZN7WebCore23SVGForeignObjectElement20parseMappedAttributeEPNS_15MappedAttributeE
+__ZN7WebCore23SVGForeignObjectElement19svgAttributeChangedERKNS_13QualifiedNameE
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_13SVGSVGElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames12svgTagStringEEEXadL_ZNS3_1
+__ZN7WebCore15SVGFitToViewBox16isKnownAttributeERKNS_13QualifiedNameE
+__ZN7WebCore57jsSVGRectElementPrototypeFunctionGetPresentationAttributeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Arg
+__ZN7WebCore16SVGStyledElement24getPresentationAttributeERKNS_6StringE
+__ZNK7WebCore15MappedAttribute5styleEv
+__ZN7WebCore38jsSVGColorPrototypeFunctionSetRGBColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore8SVGPaintC1ERKNS_6StringERKNS_5ColorE
+__ZN7WebCore8SVGPaintC2ERKNS_6StringERKNS_5ColorE
+__ZN7WebCore10RenderPath17addFocusRingRectsEPNS_15GraphicsContextEii
+__ZN7WebCore18RenderSVGContainer17addFocusRingRectsEPNS_15GraphicsContextEii
+__ZN7WebCore14RenderSVGImage17addFocusRingRectsEPNS_15GraphicsContextEii
+__ZN7WebCoreL23fontfacenameConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore22SVGFontFaceNameElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore22SVGFontFaceNameElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZNK7WebCore22SVGFontFaceNameElement8srcValueEv
+__ZN7WebCore15SVGGlyphElement19removedFromDocumentEv
+__ZN7WebCore22SVGFontFaceNameElementD0Ev
+__ZThn8_N7WebCore14SVGFontElementD0Ev
+__ZN7WebCoreL28createSVGStyleElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore17JSSVGStyleElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSSVGStyleElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15SVGStyleElementEEE
+__ZN7WebCore17JSSVGStyleElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15SVGStyleElementEEE
+__ZN7WebCore17JSSVGStyleElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17JSSVGStyleElement9classInfoEv
+__ZN7WebCore15SVGStyleElement19removedFromDocumentEv
+__ZN7WebCore17JSSVGStyleElementD1Ev
+__ZN7WebCore26JSSVGStyleElementPrototypeD1Ev
+__ZN7WebCore19RenderForeignObject16nodeAtFloatPointERKNS_14HitTestRequestERNS_13HitTestResultERKNS_10FloatPointENS_13HitTestAct
+__ZN7WebCore49jsHTMLFrameElementPrototypeFunctionGetSVGDocumentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore49jsHTMLEmbedElementPrototypeFunctionGetSVGDocumentEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore37jsSVGGElementPrototypeFunctionGetBBoxEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore18RenderSVGContainer17objectBoundingBoxEv
+__ZN7WebCore40jsSVGTextElementPrototypeFunctionGetBBoxEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14SVGTextElement7getBBoxEv
+__ZN7WebCore26JSSVGImageElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17JSSVGImageElement9classInfoEv
+__ZN7WebCore41jsSVGImageElementPrototypeFunctionGetBBoxEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14RenderSVGImage17objectBoundingBoxEv
+__ZN7WebCore40jsSVGRectElementPrototypeFunctionGetBBoxEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore28jsSVGTextContentElementStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore45jsSVGRectElementPrototypeFunctionGetScreenCTMEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore21jsSVGRectElementStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21jsSVGStopElementStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore13RenderSVGText16nodeAtFloatPointERKNS_14HitTestRequestERNS_13HitTestResultERKNS_10FloatPointENS_13HitTestActionE
+__ZN7WebCore11SVGAElement19defaultEventHandlerEPNS_5EventE
+__ZNK7WebCore11SVGAElement5titleEv
+__ZNK7WebCore11SVGAElement11isFocusableEv
+__ZNK7WebCore11SVGAElement16isMouseFocusableEv
+__ZN7WebCore19RenderSVGInlineText14localCaretRectEPNS_9InlineBoxEiPi
+__ZNK7WebCore11SVGAElement6targetEv
+__ZNK7WebCore19SVGAnimatedPropertyINS_11SVGAElementENS_6StringEXadL_ZNS_8SVGNames10aTagStringEEEXadL_ZNS3_16targetAttrStringEEE
+__ZN7WebCore21jsSVGPathElementStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14RenderSVGImage16nodeAtFloatPointERKNS_14HitTestRequestERNS_13HitTestResultERKNS_10FloatPointENS_13HitTestActionE
+__ZNK7WebCore16SVGScriptElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZNK7WebCore15SVGImageElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN7WebCore41jsSVGDocumentPrototypeFunctionCreateEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore12SVGZoomEventC1Ev
+__ZN7WebCore12SVGZoomEventC2Ev
+__ZNK7WebCore12SVGZoomEvent14isSVGZoomEventEv
+__ZN7WebCore15getDOMStructureINS_14JSSVGZoomEventEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore14JSSVGZoomEvent15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSSVGZoomEventC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12SVGZoomEventEEEPNS_10SVGElementE
+__ZN7WebCore14JSSVGZoomEventC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12SVGZoomEventEEEPNS_10SVGElementE
+__ZN7WebCore14JSSVGZoomEvent18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28jsSVGZoomEventZoomRectScreenEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12SVGZoomEvent14zoomRectScreenEv
+__ZN7WebCore27jsSVGZoomEventPreviousScaleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12SVGZoomEvent13previousScaleEv
+__ZN7WebCore31jsSVGZoomEventPreviousTranslateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12SVGZoomEvent17previousTranslateEv
+__ZN7WebCore22jsSVGZoomEventNewScaleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12SVGZoomEvent8newScaleEv
+__ZN7WebCore26jsSVGZoomEventNewTranslateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12SVGZoomEvent12newTranslateEv
+__ZN7WebCore14JSSVGZoomEventD1Ev
+__ZN7WebCore12SVGZoomEventD0Ev
+__ZN7WebCore23JSSVGZoomEventPrototypeD1Ev
+__ZN7WebCore8SVGPaintC1Ev
+__ZN7WebCore8SVGPaintC2Ev
+__ZN7WebCore28jsSVGTextPositioningElementXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIPNS1_13SVGLengthListEEENS1_29SVGAnimatedTypeW
+__ZN3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIPNS1_13SVGLengthListEEENS1_29SVGAnimatedTypeWr
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SVGAnimatedTemplateIPNS_13SVGLengthListEEEPNS_10SVGElementE
+__ZN7WebCore23JSSVGAnimatedLengthList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSSVGAnimatedLengthListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIPNS_13SVGLengthListEE
+__ZN7WebCore23JSSVGAnimatedLengthListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIPNS_13SVGLengthListEE
+__ZN7WebCore23JSSVGAnimatedLengthList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore30jsSVGAnimatedLengthListBaseValEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_13SVGLengthListEPNS_10SVGElementE
+__ZN7WebCore15JSSVGLengthList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore15JSSVGLengthListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13SVGLengthListEEEPNS_10SVGElementE
+__ZN7WebCore15JSSVGLengthListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_13SVGLengthListEEEPNS_10SVGElementE
+__ZN7WebCore15JSSVGLengthList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28jsSVGLengthListNumberOfItemsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15JSSVGLengthListD1Ev
+__ZN7WebCore15JSSVGLengthListD2Ev
+__ZN7WebCore23JSSVGAnimatedLengthListD1Ev
+__ZN7WebCore23JSSVGAnimatedLengthListD2Ev
+__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_PNS1_19SVGAnimatedTemplateIPNS1_13SVGLengthListEEEENS_18Pair
+__ZN7WebCore24JSSVGLengthListPrototypeD1Ev
+__ZN7WebCore32JSSVGAnimatedLengthListPrototypeD1Ev
+__ZN7WebCore29JSSVGClipPathElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore20JSSVGClipPathElement9classInfoEv
+__ZThn8_N7WebCore14SVGStopElementD0Ev
+__ZN7WebCoreL29createSVGMarkerElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore18JSSVGMarkerElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGMarkerElementEEE
+__ZN7WebCore18JSSVGMarkerElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGMarkerElementEEE
+__ZN7WebCore18JSSVGMarkerElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSSVGMarkerElement9classInfoEv
+__ZN7WebCore18JSSVGMarkerElementD1Ev
+__ZN7WebCoreL27createSVGMaskElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore16JSSVGMaskElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGMaskElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGMaskElementEEE
+__ZN7WebCore16JSSVGMaskElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGMaskElementEEE
+__ZN7WebCore16JSSVGMaskElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSSVGMaskElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16JSSVGMaskElement9classInfoEv
+__ZN7WebCore16JSSVGMaskElementD1Ev
+__ZN7WebCore25JSSVGMaskElementPrototypeD1Ev
+__ZN7WebCoreL30createSVGPatternElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore19JSSVGPatternElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSSVGPatternElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17SVGPatternElementEEE
+__ZN7WebCore19JSSVGPatternElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17SVGPatternElementEEE
+__ZN7WebCore19JSSVGPatternElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore28JSSVGPatternElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore19JSSVGPatternElement9classInfoEv
+__ZN7WebCore19JSSVGPatternElementD1Ev
+__ZN7WebCore28JSSVGPatternElementPrototypeD1Ev
+__ZN7WebCore28jsSVGLinearGradientElementX1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_24SVGLinearGradientElementENS_9SVGLengthEXadL_ZNS_8SVGNames23linearGradientTagStringEEEX
+__ZN7WebCore19synchronizePropertyINS_24SVGLinearGradientElementENS_9SVGLengthEEEvPKT_RKNS_13QualifiedNameET0_
+__ZN7WebCore27jsSVGPathElementPathSegListEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_14SVGPathSegListEPNS_10SVGElementE
+__ZN7WebCore16JSSVGPathSegList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGPathSegListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGPathSegListEEEPNS_10SVGElementE
+__ZN7WebCore16JSSVGPathSegListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGPathSegListEEEPNS_10SVGElementE
+__ZN7WebCore16JSSVGPathSegList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25JSSVGPathSegListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore40jsSVGPathSegListPrototypeFunctionGetItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore16JSSVGPathSegList9classInfoEv
+__ZN7WebCore16JSSVGPathSegList7getItemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_10SVGPathSegEPNS_10SVGElementE
+__ZN7WebCore15getDOMStructureINS_21JSSVGPathSegMovetoAbsEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore21JSSVGPathSegMovetoAbs15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSSVGPathSegMovetoAbsC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGPathSegMovetoAbsEEEPNS_10SVGElementE
+__ZN7WebCore21JSSVGPathSegMovetoAbsC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGPathSegMovetoAbsEEEPNS_10SVGElementE
+__ZN7WebCore12JSSVGPathSegC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_10SVGPathSegEEEPNS_10SVGElementE
+__ZN7WebCore21JSSVGPathSegMovetoAbs18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22jsSVGPathSegMovetoAbsXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21JSSVGPathSegMovetoAbs3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore25setJSSVGPathSegMovetoAbsXEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore21JSSVGPathSegMovetoAbsD1Ev
+__ZN7WebCore12JSSVGPathSegD2Ev
+__ZN7WebCore16JSSVGPathSegListD1Ev
+__ZN7WebCore16JSSVGPathSegListD2Ev
+__ZN7WebCore29jsSVGPathSegListNumberOfItemsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore43jsSVGPathSegListPrototypeFunctionRemoveItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSSVGPathSegList10removeItemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore15getDOMStructureINS_27JSSVGPathSegCurvetoCubicAbsEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore27JSSVGPathSegCurvetoCubicAbs15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSSVGPathSegCurvetoCubicAbsC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_25SVGPathSegCurvetoCubicAbsEEEPNS_10SVG
+__ZN7WebCore27JSSVGPathSegCurvetoCubicAbsC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_25SVGPathSegCurvetoCubicAbsEEEPNS_10SVG
+__ZN7WebCore30JSSVGPathSegMovetoAbsPrototypeD1Ev
+__ZN7WebCore25JSSVGPathSegListPrototypeD1Ev
+__ZN7WebCore27JSSVGPathSegCurvetoCubicAbsD1Ev
+__ZN7WebCore36JSSVGPathSegCurvetoCubicAbsPrototypeD1Ev
+__ZN7WebCore24jsSVGPatternElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGPatternElementENS_9SVGLengthEXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS3_15wid
+__ZNK7WebCore19SVGAnimatedPropertyINS_17SVGPatternElementENS_9SVGLengthEXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS3_15widt
+__ZN7WebCore19synchronizePropertyINS_17SVGPatternElementENS_9SVGLengthEEEvPKT_RKNS_13QualifiedNameET0_
+__ZN7WebCoreL30createSVGPolygonElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore19JSSVGPolygonElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore19JSSVGPolygonElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17SVGPolygonElementEEE
+__ZN7WebCore19JSSVGPolygonElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_17SVGPolygonElementEEE
+__ZN7WebCore19JSSVGPolygonElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25jsSVGPolygonElementPointsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_12SVGPointListEPNS_10SVGElementE
+__ZN7WebCore14JSSVGPointList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore14JSSVGPointListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12SVGPointListEEEPNS_10SVGElementE
+__ZN7WebCore14JSSVGPointListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_12SVGPointListEEEPNS_10SVGElementE
+__ZN7WebCore14JSSVGPointList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27jsSVGPointListNumberOfItemsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23JSSVGPointListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore38jsSVGPointListPrototypeFunctionGetItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14JSSVGPointList9classInfoEv
+__ZN7WebCore14JSSVGPointList7getItemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore33JSSVGPODTypeWrapperCreatorForListINS_10FloatPointEEcvS1_Ev
+__ZNK7WebCore14SVGPODListItemINS_10FloatPointEE5valueEv
+__ZN7WebCore33JSSVGPODTypeWrapperCreatorForListINS_10FloatPointEE12commitChangeES1_PNS_10SVGElementE
+__ZN7WebCore14SVGPODListItemINS_10FloatPointEE8setValueES1_
+__ZN7WebCore33JSSVGPODTypeWrapperCreatorForListINS_10FloatPointEED0Ev
+__ZN7WebCore14JSSVGPointListD1Ev
+__ZN7WebCore14JSSVGPointListD2Ev
+__ZN7WebCore41jsSVGPointListPrototypeFunctionRemoveItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14JSSVGPointList10removeItemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore23JSSVGPointListPrototypeD1Ev
+__ZN7WebCore19JSSVGPolygonElementD1Ev
+__ZN7WebCore28JSSVGPolygonElementPrototypeD1Ev
+__ZN7WebCore28jsSVGPolygonElementTransformEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_29SVGStyledTransformableElementENS_16SVGTransformListEXadL_ZNS_39SVGStyledTransformableE
+__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIPNS1_16SVGTransformListEEENS1_29SVGAnimatedTy
+__ZN3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIPNS1_16SVGTransformListEEENS1_29SVGAnimatedTyp
+__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_PNS1_19SVGAnimatedTemplateIPNS1_16SVGTransformListEEEENS_18P
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SVGAnimatedTemplateIPNS_16SVGTransformListEEEPNS_10SVGElementE
+__ZN7WebCore26JSSVGAnimatedTransformList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSSVGAnimatedTransformListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIPNS_16SVGTransform
+__ZN7WebCore26JSSVGAnimatedTransformListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIPNS_16SVGTransform
+__ZN7WebCore26JSSVGAnimatedTransformList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore33jsSVGAnimatedTransformListBaseValEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_16SVGTransformListEPNS_10SVGElementE
+__ZN7WebCore18JSSVGTransformList15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSSVGTransformListC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGTransformListEEEPNS_10SVGElementE
+__ZN7WebCore18JSSVGTransformListC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGTransformListEEEPNS_10SVGElementE
+__ZN7WebCore50jsSVGSVGElementPrototypeFunctionCreateSVGTransformEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13SVGSVGElement18createSVGTransformEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19JSSVGPODTypeWrapperINS_12SVGTransformEEEPNS_10SVGElementE
+__ZN7WebCore14JSSVGTransformC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperINS_12SVGTransformEEEEEPNS_10SV
+__ZN7WebCore14JSSVGTransformC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19JSSVGPODTypeWrapperINS_12SVGTransformEEEEEPNS_10SV
+__ZN7WebCore14JSSVGTransform18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore43jsSVGTransformPrototypeFunctionSetTranslateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore14JSSVGTransform9classInfoEv
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_12SVGTransformEEcvS1_Ev
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_12SVGTransformEE12commitChangeES1_PNS_10SVGElementE
+__ZN7WebCore18JSSVGTransformList18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27JSSVGTransformListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore45jsSVGTransformListPrototypeFunctionAppendItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore18JSSVGTransformList9classInfoEv
+__ZN7WebCore18JSSVGTransformList10appendItemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore14toSVGTransformEN3JSC7JSValueE
+__ZN7WebCoreL12finishSetterEPN3JSC9ExecStateERiPNS_10SVGElementEPNS_16SVGTransformListEN3WTF10PassRefPtrINS_14SVGPODListItemINS
+__ZN7WebCore14JSSVGTransformD1Ev
+__ZN7WebCore14JSSVGTransformD2Ev
+__ZN7WebCore33JSSVGPODTypeWrapperCreatorForListINS_12SVGTransformEED0Ev
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_12SVGTransformEED0Ev
+__ZN7WebCore18JSSVGTransformListD1Ev
+__ZN7WebCore18JSSVGTransformListD2Ev
+__ZN7WebCore26JSSVGAnimatedTransformListD1Ev
+__ZN7WebCore26JSSVGAnimatedTransformListD2Ev
+__ZN7WebCore42jsSVGTransformListPrototypeFunctionGetItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore18JSSVGTransformList7getItemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore33JSSVGPODTypeWrapperCreatorForListINS_12SVGTransformEEcvS1_Ev
+__ZNK7WebCore14SVGPODListItemINS_12SVGTransformEE5valueEv
+__ZN7WebCore33JSSVGPODTypeWrapperCreatorForListINS_12SVGTransformEE12commitChangeES1_PNS_10SVGElementE
+__ZN7WebCore14SVGPODListItemINS_12SVGTransformEE8setValueES1_
+__ZN7WebCore27JSSVGTransformListPrototypeD1Ev
+__ZN7WebCore35JSSVGAnimatedTransformListPrototypeD1Ev
+__ZNK7WebCore13SVGSVGElement11currentViewEv
+__ZN7WebCore11SVGViewSpecC1EPKNS_13SVGSVGElementE
+__ZN7WebCore11SVGViewSpecC2EPKNS_13SVGSVGElementE
+__ZN7WebCore11SVGViewSpec13parseViewSpecERKNS_6StringE
+__ZNK7WebCore11SVGViewSpec14contextElementEv
+__ZN7WebCore11SVGViewSpec19setViewTargetStringERKNS_6StringE
+__ZN7WebCore13SVGSVGElement17setUseCurrentViewEb
+__ZN7WebCore11SVGViewSpecD0Ev
+__ZNK3WTF7HashMapIPKN7WebCore10SVGElementEPNS0_IPNS1_10StringImplEPNS1_8SVGAngleENS1_10StringHashENS_10HashTraitsIS6_EENSA_IS8_
+__ZN7WebCore17SVGResourceMasker10invalidateEv
+__ZN7WebCoreL28createSVGTitleElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore17JSSVGTitleElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore17JSSVGTitleElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15SVGTitleElementEEE
+__ZN7WebCore17JSSVGTitleElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_15SVGTitleElementEEE
+__ZN7WebCore17JSSVGTitleElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore26JSSVGTitleElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore17JSSVGTitleElement9classInfoEv
+__ZN7WebCore17JSSVGTitleElementD1Ev
+__ZN7WebCore26JSSVGTitleElementPrototypeD1Ev
+__ZN7WebCore57jsSVGPathElementPrototypeFunctionGetPresentationAttributeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Arg
+__ZN7WebCore47jsSVGPathElementPrototypeFunctionGetTotalLengthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14SVGPathElement14getTotalLengthEv
+__ZN7WebCore18PathTraversalState12closeSubpathEv
+__ZN7WebCore49jsSVGPathElementPrototypeFunctionGetPointAtLengthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14SVGPathElement16getPointAtLengthEf
+__ZN7WebCore16SVGInlineTextBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
+__ZN7WebCore19RenderSVGInlineText16positionForPointERKNS_8IntPointE
+__ZNK7WebCore16SVGInlineTextBox24svgCharacterHitsPositionEiiRi
+__ZNK7WebCore16SVGInlineTextBox26closestCharacterToPositionEiiRi
+__ZN7WebCore18SVGTextChunkWalkerINS_48SVGInlineTextBoxClosestCharacterToPositionWalkerEEclEPNS_16SVGInlineTextBoxEiRKNS_20Trans
+__ZN7WebCore48SVGInlineTextBoxClosestCharacterToPositionWalker20chunkPortionCallbackEPNS_16SVGInlineTextBoxEiRKNS_20Transformat
+__ZN7WebCoreL31createSVGPolylineElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore20JSSVGPolylineElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSSVGPolylineElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGPolylineElementEEE
+__ZN7WebCore20JSSVGPolylineElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGPolylineElementEEE
+__ZN7WebCore20JSSVGPolylineElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore29JSSVGPolylineElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore20JSSVGPolylineElement9classInfoEv
+__ZN7WebCore28JSSVGPolygonElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore19JSSVGPolygonElement9classInfoEv
+__ZN7WebCore20JSSVGPolylineElementD1Ev
+__ZN7WebCore26jsSVGPolylineElementPointsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore41jsSVGPointListPrototypeFunctionAppendItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore14JSSVGPointList10appendItemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore10toSVGPointEN3JSC7JSValueE
+__ZN7WebCoreL12finishSetterEPN3JSC9ExecStateERiPNS_10SVGElementEPNS_12SVGPointListEN3WTF10PassRefPtrINS_14SVGPODListItemINS_10F
+__ZN7WebCore19synchronizePropertyINS_14SVGPolyElementEPNS_12SVGPointListEEEvPKT_RKNS_13QualifiedNameET0_
+__ZNK7WebCore12SVGPointList13valueAsStringEv
+__ZN7WebCore29JSSVGPolylineElementPrototypeD1Ev
+__ZN7WebCore18jsSVGExceptionCodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore21RenderSVGGradientStop29repaintRectInLocalCoordinatesEv
+__ZN7WebCore12RenderObject5paintERNS0_9PaintInfoEii
+__ZN7WebCore16jsNodeOndblclickEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node10ondblclickEv
+__ZN7WebCore35JSSVGStaticPODTypeWrapperWithParentINS_10FloatPointENS_13SVGSVGElementEEcvS1_Ev
+__ZN7WebCore35JSSVGStaticPODTypeWrapperWithParentINS_10FloatPointENS_13SVGSVGElementEE12commitChangeES1_PNS_10SVGElementE
+__ZN7WebCore13SVGSVGElement19setCurrentTranslateERKNS_10FloatPointE
+__ZNK3WTF7HashMapIN7WebCore6StringEPKNS1_23SVGAnimatedPropertyBaseENS1_10StringHashENS_10HashTraitsIS2_EENS7_IS5_EEE3getERKS2_
+__ZN7WebCore38jsSVGSVGElementPrototypeFunctionGetCTMEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore44jsSVGSVGElementPrototypeFunctionGetScreenCTMEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore36jsSVGGElementPrototypeFunctionGetCTMEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore42jsSVGGElementPrototypeFunctionGetScreenCTMEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore20jsSVGTransformMatrixEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11JSSVGMatrix3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore15setJSSVGMatrixAEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore42JSSVGStaticPODTypeWrapperWithPODTypeParentINS_20TransformationMatrixENS_12SVGTransformEE12commitChangeES1_PNS_10S
+__ZN7WebCore42JSSVGStaticPODTypeWrapperWithPODTypeParentINS_20TransformationMatrixENS_12SVGTransformEED0Ev
+__ZN7WebCore60jsSVGTextContentElementPrototypeFunctionGetCharNumAtPositionEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7
+__ZNK7WebCore21SVGTextContentElement20getCharNumAtPositionERKNS_10FloatPointE
+__ZN7WebCore55jsSVGTextContentElementPrototypeFunctionGetExtentOfCharEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZNK7WebCore21SVGTextContentElement15getExtentOfCharEjRi
+__ZN7WebCore33jsSVGTextContentElementTextLengthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_21SVGTextContentElementENS_9SVGLengthEXadL_ZNS_31SVGTextContentElementIdentifierEEEXadL_
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_21SVGTextContentElementES1_NS_9SVGLengthES2_XadL_ZNS_31SVGTextContentElementIdenti
+__ZN7WebCore35jsSVGTextContentElementLengthAdjustEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_21SVGTextContentElementEiXadL_ZNS_31SVGTextContentElementIdentifierEEEXadL_ZNS_8SVGNames
+__ZN7WebCore24JSSVGAnimatedEnumeration18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore31jsSVGAnimatedEnumerationBaseValEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsSVGAnimatedEnumerationAnimValEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_21SVGTextContentElementES1_iiXadL_ZNS_31SVGTextContentElementIdentifierEEEXadL_ZNS
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_21SVGTextContentElementES1_iiXadL_ZNS_31SVGTextContentElementIdentifierEEEXadL_ZNS_
+__ZN7WebCoreL27createSVGTRefElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore16JSSVGTRefElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore16JSSVGTRefElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGTRefElementEEE
+__ZN7WebCore16JSSVGTRefElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_14SVGTRefElementEEE
+__ZN7WebCore16JSSVGTRefElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16JSSVGTRefElement9classInfoEv
+__ZN7WebCore16JSSVGTRefElementD1Ev
+__ZN7WebCore24RenderSVGHiddenContainer16nodeAtFloatPointERKNS_14HitTestRequestERNS_13HitTestResultERKNS_10FloatPointENS_13HitTe
+__ZN7WebCore25JSSVGTRefElementPrototypeD1Ev
+__ZThn24_N7WebCore18SVGElementInstance20toSVGElementInstanceEv
+__ZN7WebCore18SVGElementInstance20toSVGElementInstanceEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_18SVGElementInstanceE
+__ZN7WebCore20JSSVGElementInstance15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore20JSSVGElementInstanceC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGElementInstanceEEE
+__ZN7WebCore20JSSVGElementInstanceC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_18SVGElementInstanceEEE
+__ZN7WebCore20JSSVGElementInstance18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore43jsSVGElementInstanceCorrespondingUseElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore40jsSVGElementInstanceCorrespondingElementEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSSVGElementInstanceD1Ev
+__ZN7WebCore20JSSVGElementInstanceD2Ev
+__ZN7WebCore30jsSVGElementInstanceParentNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsSVGElementInstanceNextSiblingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsSVGElementInstanceFirstChildEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGElementInstanceLastChildEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsSVGElementInstancePreviousSiblingEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29JSSVGElementInstancePrototypeD1Ev
+__ZNK7WebCore19JSLazyEventListener20wasCreatedFromMarkupEv
+__ZN7WebCore27jsSVGUseElementInstanceRootEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore13SVGUseElement12instanceRootEv
+__ZN7WebCore29JSSVGElementInstancePrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore20JSSVGElementInstance9classInfoEv
+__ZN7WebCore53jsSVGElementInstancePrototypeFunctionAddEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgList
+__ZN7WebCore20JSSVGElementInstance16addEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore18SVGElementInstance22scriptExecutionContextEv
+__ZN7WebCore18SVGElementInstance16addEventListenerERKNS_12AtomicStringEN3WTF10PassRefPtrINS_13EventListenerEEEb
+__ZNK7WebCore13EventListener20wasCreatedFromMarkupEv
+__ZN7WebCore56jsSVGElementInstancePrototypeFunctionRemoveEventListenerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgL
+__ZN7WebCore20JSSVGElementInstance19removeEventListenerEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore18SVGElementInstance19removeEventListenerERKNS_12AtomicStringEPNS_13EventListenerEb
+__ZN7WebCore20JSSVGElementInstance4markEv
+__ZN7WebCore50jsSVGElementInstancePrototypeFunctionDispatchEventEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore18SVGElementInstance13dispatchEventEN3WTF10PassRefPtrINS_5EventEEERi
+__ZN7WebCore13JSSVGGElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore16JSSVGRectElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore15JSSVGUseElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore19jsSVGUseElementHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_15SVGURIReferenceENS_6StringEXadL_ZNS_25SVGURIReferenceIdentifierEEEXadL_ZNS_10XLinkName
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_15SVGURIReferenceENS_10SVGElementENS_6StringES3_XadL_ZNS_25SVGURIReferenceIdentifie
+__ZNK7WebCore19SVGAnimatedPropertyINS_15SVGURIReferenceENS_6StringEXadL_ZNS_25SVGURIReferenceIdentifierEEEXadL_ZNS_10XLinkNames
+__ZN7WebCore19synchronizePropertyINS_10SVGElementENS_6StringEEEvPKT_RKNS_13QualifiedNameET0_
+__ZN7WebCore21SVGDocumentExtensions13reportWarningERKNS_6StringE
+__ZThn8_N7WebCore23SVGForeignObjectElementD0Ev
+__ZN7WebCore16jsSVGUseElementXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_13SVGUseElementENS_9SVGLengthEXadL_ZNS_8SVGNames12useTagStringEEEXadL_ZNS3_11xAttrString
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_13SVGUseElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames12useTagStringEEEXadL_ZNS3_11
+__ZN7WebCore16jsSVGUseElementYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_13SVGUseElementENS_9SVGLengthEXadL_ZNS_8SVGNames12useTagStringEEEXadL_ZNS3_11yAttrString
+__ZN7WebCore13SVGZoomAndPan16isKnownAttributeERKNS_13QualifiedNameE
+__ZN7WebCore19synchronizePropertyINS_13SVGSVGElementENS_9SVGLengthEEEvPKT_RKNS_13QualifiedNameET0_
+__ZN7WebCore26jsSVGAltGlyphElementFormatEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore18SVGAltGlyphElement6formatEv
+__ZN7WebCore20JSSVGAltGlyphElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore29setJSSVGAltGlyphElementFormatEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore18SVGAltGlyphElement9setFormatERKNS_12AtomicStringERi
+__ZNK7WebCore19JSSVGAnimatedLength9classInfoEv
+__ZNK7WebCore11JSSVGLength9classInfoEv
+__ZN7WebCoreL35createSVGFontFaceNameElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore24JSSVGFontFaceNameElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore24JSSVGFontFaceNameElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_22SVGFontFaceNameElementEEE
+__ZN7WebCore24JSSVGFontFaceNameElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_22SVGFontFaceNameElementEEE
+__ZNK7WebCore24JSSVGFontFaceNameElement9classInfoEv
+__ZN7WebCoreL25fontfaceformatConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore24SVGFontFaceFormatElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore24SVGFontFaceFormatElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL37createSVGFontFaceFormatElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore26JSSVGFontFaceFormatElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSSVGFontFaceFormatElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_24SVGFontFaceFormatElementEEE
+__ZN7WebCore26JSSVGFontFaceFormatElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_24SVGFontFaceFormatElementEEE
+__ZNK7WebCore26JSSVGFontFaceFormatElement9classInfoEv
+__ZN7WebCoreL34createSVGFontFaceSrcElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore23JSSVGFontFaceSrcElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSSVGFontFaceSrcElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21SVGFontFaceSrcElementEEE
+__ZN7WebCore23JSSVGFontFaceSrcElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21SVGFontFaceSrcElementEEE
+__ZNK7WebCore23JSSVGFontFaceSrcElement9classInfoEv
+__ZN7WebCoreL34createSVGFontFaceUriElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore23JSSVGFontFaceUriElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore23JSSVGFontFaceUriElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21SVGFontFaceUriElementEEE
+__ZN7WebCore23JSSVGFontFaceUriElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_21SVGFontFaceUriElementEEE
+__ZNK7WebCore23JSSVGFontFaceUriElement9classInfoEv
+__ZN7WebCoreL24definitionsrcConstructorERKNS_13QualifiedNameEPNS_8DocumentEb
+__ZN7WebCore23SVGDefinitionSrcElementC1ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCore23SVGDefinitionSrcElementC2ERKNS_13QualifiedNameEPNS_8DocumentE
+__ZN7WebCoreL36createSVGDefinitionSrcElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore25JSSVGDefinitionSrcElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSSVGDefinitionSrcElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23SVGDefinitionSrcElementEEE
+__ZN7WebCore25JSSVGDefinitionSrcElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23SVGDefinitionSrcElementEEE
+__ZNK7WebCore25JSSVGDefinitionSrcElement9classInfoEv
+__ZN7WebCore25JSSVGDefinitionSrcElementD1Ev
+__ZThn8_N7WebCore23SVGDefinitionSrcElementD0Ev
+__ZN7WebCore23SVGDefinitionSrcElementD0Ev
+__ZN7WebCore23JSSVGFontFaceUriElementD1Ev
+__ZThn8_N7WebCore21SVGFontFaceUriElementD0Ev
+__ZN7WebCore23JSSVGFontFaceSrcElementD1Ev
+__ZThn8_N7WebCore21SVGFontFaceSrcElementD0Ev
+__ZN7WebCore26JSSVGFontFaceFormatElementD1Ev
+__ZThn8_N7WebCore24SVGFontFaceFormatElementD0Ev
+__ZN7WebCore24SVGFontFaceFormatElementD0Ev
+__ZN7WebCore24JSSVGFontFaceNameElementD1Ev
+__ZThn8_N7WebCore22SVGFontFaceNameElementD0Ev
+__ZThn8_N7WebCore18SVGFontFaceElementD0Ev
+__ZNK7WebCore13HTMLTokenizer10lineNumberEv
+__ZN7WebCore12JSSVGPathSeg18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore31jsSVGPathSegPathSegTypeAsLetterEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27JSSVGPathSegCurvetoCubicAbs18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore15getDOMStructureINS_21JSSVGPathSegClosePathEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore21JSSVGPathSegClosePath15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSSVGPathSegClosePathC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGPathSegClosePathEEEPNS_10SVGElementE
+__ZN7WebCore21JSSVGPathSegClosePathC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGPathSegClosePathEEEPNS_10SVGElementE
+__ZNK7WebCore19SVGPathSegClosePath19pathSegTypeAsLetterEv
+__ZN7WebCore15getDOMStructureINS_21JSSVGPathSegLinetoAbsEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore21JSSVGPathSegLinetoAbs15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSSVGPathSegLinetoAbsC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGPathSegLinetoAbsEEEPNS_10SVGElementE
+__ZN7WebCore21JSSVGPathSegLinetoAbsC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGPathSegLinetoAbsEEEPNS_10SVGElementE
+__ZN7WebCore21JSSVGPathSegLinetoAbs18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore34JSSVGDefinitionSrcElementPrototypeD1Ev
+__ZN7WebCore32JSSVGFontFaceUriElementPrototypeD1Ev
+__ZN7WebCore32JSSVGFontFaceSrcElementPrototypeD1Ev
+__ZN7WebCore35JSSVGFontFaceFormatElementPrototypeD1Ev
+__ZN7WebCore33JSSVGFontFaceNameElementPrototypeD1Ev
+__ZN7WebCore21JSSVGPathSegClosePathD1Ev
+__ZN7WebCore21JSSVGPathSegLinetoAbsD1Ev
+__ZN7WebCore24JSSVGLengthListPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore39jsSVGLengthListPrototypeFunctionGetItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore15JSSVGLengthList9classInfoEv
+__ZN7WebCore24jsSVGLengthValueAsStringEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_9SVGLengthEEcvS1_Ev
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_9SVGLengthEED0Ev
+__ZN7WebCore30JSSVGPathSegClosePathPrototypeD1Ev
+__ZN7WebCore30JSSVGPathSegLinetoAbsPrototypeD1Ev
+__ZN7WebCore22jsSVGPathSegMovetoAbsYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsSVGPathSegLinetoAbsXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsSVGPathSegLinetoAbsYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGPathSegCurvetoCubicAbsX1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGPathSegCurvetoCubicAbsY1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGPathSegCurvetoCubicAbsX2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGPathSegCurvetoCubicAbsY2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGPathSegCurvetoCubicAbsXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGPathSegCurvetoCubicAbsYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore58jsSVGPathElementPrototypeFunctionCreateSVGPathSegClosePathEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Ar
+__ZN7WebCore23jsSVGPathSegPathSegTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore58jsSVGPathElementPrototypeFunctionCreateSVGPathSegMovetoAbsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Ar
+__ZN7WebCore58jsSVGPathElementPrototypeFunctionCreateSVGPathSegMovetoRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Ar
+__ZN7WebCore14SVGPathElement25createSVGPathSegMovetoRelEff
+__ZN7WebCore19SVGPathSegMovetoRelC1Eff
+__ZN7WebCore19SVGPathSegMovetoRelC2Eff
+__ZNK7WebCore19SVGPathSegMovetoRel11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_21JSSVGPathSegMovetoRelEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore21JSSVGPathSegMovetoRel15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSSVGPathSegMovetoRelC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGPathSegMovetoRelEEEPNS_10SVGElementE
+__ZN7WebCore21JSSVGPathSegMovetoRelC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGPathSegMovetoRelEEEPNS_10SVGElementE
+__ZN7WebCore21JSSVGPathSegMovetoRel18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore19SVGPathSegMovetoRel19pathSegTypeAsLetterEv
+__ZN7WebCore22jsSVGPathSegMovetoRelXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsSVGPathSegMovetoRelYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore58jsSVGPathElementPrototypeFunctionCreateSVGPathSegLinetoAbsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Ar
+__ZN7WebCore58jsSVGPathElementPrototypeFunctionCreateSVGPathSegLinetoRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Ar
+__ZN7WebCore14SVGPathElement25createSVGPathSegLinetoRelEff
+__ZN7WebCore19SVGPathSegLinetoRelC1Eff
+__ZN7WebCore19SVGPathSegLinetoRelC2Eff
+__ZNK7WebCore19SVGPathSegLinetoRel11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_21JSSVGPathSegLinetoRelEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore21JSSVGPathSegLinetoRel15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSSVGPathSegLinetoRelC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGPathSegLinetoRelEEEPNS_10SVGElementE
+__ZN7WebCore21JSSVGPathSegLinetoRelC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGPathSegLinetoRelEEEPNS_10SVGElementE
+__ZN7WebCore21JSSVGPathSegLinetoRel18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore19SVGPathSegLinetoRel19pathSegTypeAsLetterEv
+__ZN7WebCore22jsSVGPathSegLinetoRelXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsSVGPathSegLinetoRelYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore64jsSVGPathElementPrototypeFunctionCreateSVGPathSegCurvetoCubicAbsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKN
+__ZN7WebCore64jsSVGPathElementPrototypeFunctionCreateSVGPathSegCurvetoCubicRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKN
+__ZN7WebCore14SVGPathElement31createSVGPathSegCurvetoCubicRelEffffff
+__ZN7WebCore25SVGPathSegCurvetoCubicRelC1Effffff
+__ZN7WebCore25SVGPathSegCurvetoCubicRelC2Effffff
+__ZNK7WebCore25SVGPathSegCurvetoCubicRel11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_27JSSVGPathSegCurvetoCubicRelEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore27JSSVGPathSegCurvetoCubicRel15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore27JSSVGPathSegCurvetoCubicRelC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_25SVGPathSegCurvetoCubicRelEEEPNS_10SVG
+__ZN7WebCore27JSSVGPathSegCurvetoCubicRelC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_25SVGPathSegCurvetoCubicRelEEEPNS_10SVG
+__ZN7WebCore27JSSVGPathSegCurvetoCubicRel18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25SVGPathSegCurvetoCubicRel19pathSegTypeAsLetterEv
+__ZN7WebCore28jsSVGPathSegCurvetoCubicRelXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGPathSegCurvetoCubicRelYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGPathSegCurvetoCubicRelX1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGPathSegCurvetoCubicRelY1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGPathSegCurvetoCubicRelX2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGPathSegCurvetoCubicRelY2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore68jsSVGPathElementPrototypeFunctionCreateSVGPathSegCurvetoQuadraticAbsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValue
+__ZN7WebCore14SVGPathElement35createSVGPathSegCurvetoQuadraticAbsEffff
+__ZN7WebCore29SVGPathSegCurvetoQuadraticAbsC1Effff
+__ZN7WebCore29SVGPathSegCurvetoQuadraticAbsC2Effff
+__ZNK7WebCore29SVGPathSegCurvetoQuadraticAbs11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_31JSSVGPathSegCurvetoQuadraticAbsEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore31JSSVGPathSegCurvetoQuadraticAbs15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore31JSSVGPathSegCurvetoQuadraticAbsC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_29SVGPathSegCurvetoQuadraticAbsEEEP
+__ZN7WebCore31JSSVGPathSegCurvetoQuadraticAbsC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_29SVGPathSegCurvetoQuadraticAbsEEEP
+__ZN7WebCore31JSSVGPathSegCurvetoQuadraticAbs18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29SVGPathSegCurvetoQuadraticAbs19pathSegTypeAsLetterEv
+__ZN7WebCore32jsSVGPathSegCurvetoQuadraticAbsXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsSVGPathSegCurvetoQuadraticAbsYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsSVGPathSegCurvetoQuadraticAbsX1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsSVGPathSegCurvetoQuadraticAbsY1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore68jsSVGPathElementPrototypeFunctionCreateSVGPathSegCurvetoQuadraticRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValue
+__ZN7WebCore14SVGPathElement35createSVGPathSegCurvetoQuadraticRelEffff
+__ZN7WebCore29SVGPathSegCurvetoQuadraticRelC1Effff
+__ZN7WebCore29SVGPathSegCurvetoQuadraticRelC2Effff
+__ZNK7WebCore29SVGPathSegCurvetoQuadraticRel11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_31JSSVGPathSegCurvetoQuadraticRelEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore31JSSVGPathSegCurvetoQuadraticRel15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore31JSSVGPathSegCurvetoQuadraticRelC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_29SVGPathSegCurvetoQuadraticRelEEEP
+__ZN7WebCore31JSSVGPathSegCurvetoQuadraticRelC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_29SVGPathSegCurvetoQuadraticRelEEEP
+__ZN7WebCore31JSSVGPathSegCurvetoQuadraticRel18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29SVGPathSegCurvetoQuadraticRel19pathSegTypeAsLetterEv
+__ZN7WebCore32jsSVGPathSegCurvetoQuadraticRelXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore32jsSVGPathSegCurvetoQuadraticRelYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsSVGPathSegCurvetoQuadraticRelX1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33jsSVGPathSegCurvetoQuadraticRelY1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore55jsSVGPathElementPrototypeFunctionCreateSVGPathSegArcAbsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZN7WebCore14SVGPathElement22createSVGPathSegArcAbsEfffffbb
+__ZN7WebCore16SVGPathSegArcAbsC1Efffffbb
+__ZN7WebCore16SVGPathSegArcAbsC2Efffffbb
+__ZNK7WebCore16SVGPathSegArcAbs11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_18JSSVGPathSegArcAbsEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore18JSSVGPathSegArcAbs15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSSVGPathSegArcAbsC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGPathSegArcAbsEEEPNS_10SVGElementE
+__ZN7WebCore18JSSVGPathSegArcAbsC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGPathSegArcAbsEEEPNS_10SVGElementE
+__ZN7WebCore18JSSVGPathSegArcAbs18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16SVGPathSegArcAbs19pathSegTypeAsLetterEv
+__ZN7WebCore19jsSVGPathSegArcAbsXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsSVGPathSegArcAbsYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsSVGPathSegArcAbsR1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsSVGPathSegArcAbsR2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsSVGPathSegArcAbsAngleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsSVGPathSegArcAbsLargeArcFlagEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsSVGPathSegArcAbsSweepFlagEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore55jsSVGPathElementPrototypeFunctionCreateSVGPathSegArcRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZN7WebCore14SVGPathElement22createSVGPathSegArcRelEfffffbb
+__ZN7WebCore16SVGPathSegArcRelC1Efffffbb
+__ZN7WebCore16SVGPathSegArcRelC2Efffffbb
+__ZNK7WebCore16SVGPathSegArcRel11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_18JSSVGPathSegArcRelEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore18JSSVGPathSegArcRel15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSSVGPathSegArcRelC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGPathSegArcRelEEEPNS_10SVGElementE
+__ZN7WebCore18JSSVGPathSegArcRelC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGPathSegArcRelEEEPNS_10SVGElementE
+__ZN7WebCore18JSSVGPathSegArcRel18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore16SVGPathSegArcRel19pathSegTypeAsLetterEv
+__ZN7WebCore19jsSVGPathSegArcRelXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsSVGPathSegArcRelYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsSVGPathSegArcRelR1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20jsSVGPathSegArcRelR2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsSVGPathSegArcRelAngleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore30jsSVGPathSegArcRelLargeArcFlagEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsSVGPathSegArcRelSweepFlagEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore68jsSVGPathElementPrototypeFunctionCreateSVGPathSegLinetoHorizontalAbsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValue
+__ZN7WebCore14SVGPathElement35createSVGPathSegLinetoHorizontalAbsEf
+__ZN7WebCore29SVGPathSegLinetoHorizontalAbsC1Ef
+__ZN7WebCore29SVGPathSegLinetoHorizontalAbsC2Ef
+__ZNK7WebCore29SVGPathSegLinetoHorizontalAbs11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_31JSSVGPathSegLinetoHorizontalAbsEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore31JSSVGPathSegLinetoHorizontalAbs15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore31JSSVGPathSegLinetoHorizontalAbsC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_29SVGPathSegLinetoHorizontalAbsEEEP
+__ZN7WebCore31JSSVGPathSegLinetoHorizontalAbsC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_29SVGPathSegLinetoHorizontalAbsEEEP
+__ZN7WebCore31JSSVGPathSegLinetoHorizontalAbs18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29SVGPathSegLinetoHorizontalAbs19pathSegTypeAsLetterEv
+__ZN7WebCore32jsSVGPathSegLinetoHorizontalAbsXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore68jsSVGPathElementPrototypeFunctionCreateSVGPathSegLinetoHorizontalRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValue
+__ZN7WebCore14SVGPathElement35createSVGPathSegLinetoHorizontalRelEf
+__ZN7WebCore29SVGPathSegLinetoHorizontalRelC1Ef
+__ZN7WebCore29SVGPathSegLinetoHorizontalRelC2Ef
+__ZNK7WebCore29SVGPathSegLinetoHorizontalRel11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_31JSSVGPathSegLinetoHorizontalRelEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore31JSSVGPathSegLinetoHorizontalRel15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore31JSSVGPathSegLinetoHorizontalRelC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_29SVGPathSegLinetoHorizontalRelEEEP
+__ZN7WebCore31JSSVGPathSegLinetoHorizontalRelC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_29SVGPathSegLinetoHorizontalRelEEEP
+__ZN7WebCore31JSSVGPathSegLinetoHorizontalRel18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore29SVGPathSegLinetoHorizontalRel19pathSegTypeAsLetterEv
+__ZN7WebCore32jsSVGPathSegLinetoHorizontalRelXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore66jsSVGPathElementPrototypeFunctionCreateSVGPathSegLinetoVerticalAbsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueER
+__ZN7WebCore14SVGPathElement33createSVGPathSegLinetoVerticalAbsEf
+__ZN7WebCore27SVGPathSegLinetoVerticalAbsC1Ef
+__ZN7WebCore27SVGPathSegLinetoVerticalAbsC2Ef
+__ZNK7WebCore27SVGPathSegLinetoVerticalAbs11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_29JSSVGPathSegLinetoVerticalAbsEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore29JSSVGPathSegLinetoVerticalAbs15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSSVGPathSegLinetoVerticalAbsC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_27SVGPathSegLinetoVerticalAbsEEEPNS_1
+__ZN7WebCore29JSSVGPathSegLinetoVerticalAbsC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_27SVGPathSegLinetoVerticalAbsEEEPNS_1
+__ZN7WebCore29JSSVGPathSegLinetoVerticalAbs18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27SVGPathSegLinetoVerticalAbs19pathSegTypeAsLetterEv
+__ZN7WebCore30jsSVGPathSegLinetoVerticalAbsYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore66jsSVGPathElementPrototypeFunctionCreateSVGPathSegLinetoVerticalRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueER
+__ZN7WebCore14SVGPathElement33createSVGPathSegLinetoVerticalRelEf
+__ZN7WebCore27SVGPathSegLinetoVerticalRelC1Ef
+__ZN7WebCore27SVGPathSegLinetoVerticalRelC2Ef
+__ZNK7WebCore27SVGPathSegLinetoVerticalRel11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_29JSSVGPathSegLinetoVerticalRelEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore29JSSVGPathSegLinetoVerticalRel15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore29JSSVGPathSegLinetoVerticalRelC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_27SVGPathSegLinetoVerticalRelEEEPNS_1
+__ZN7WebCore29JSSVGPathSegLinetoVerticalRelC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_27SVGPathSegLinetoVerticalRelEEEPNS_1
+__ZN7WebCore29JSSVGPathSegLinetoVerticalRel18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore27SVGPathSegLinetoVerticalRel19pathSegTypeAsLetterEv
+__ZN7WebCore30jsSVGPathSegLinetoVerticalRelYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore70jsSVGPathElementPrototypeFunctionCreateSVGPathSegCurvetoCubicSmoothAbsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSVal
+__ZN7WebCore14SVGPathElement37createSVGPathSegCurvetoCubicSmoothAbsEffff
+__ZN7WebCore31SVGPathSegCurvetoCubicSmoothAbsC1Effff
+__ZN7WebCore31SVGPathSegCurvetoCubicSmoothAbsC2Effff
+__ZNK7WebCore31SVGPathSegCurvetoCubicSmoothAbs11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_33JSSVGPathSegCurvetoCubicSmoothAbsEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore33JSSVGPathSegCurvetoCubicSmoothAbs15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore33JSSVGPathSegCurvetoCubicSmoothAbsC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_31SVGPathSegCurvetoCubicSmoothAbs
+__ZN7WebCore33JSSVGPathSegCurvetoCubicSmoothAbsC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_31SVGPathSegCurvetoCubicSmoothAbs
+__ZN7WebCore33JSSVGPathSegCurvetoCubicSmoothAbs18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore31SVGPathSegCurvetoCubicSmoothAbs19pathSegTypeAsLetterEv
+__ZN7WebCore34jsSVGPathSegCurvetoCubicSmoothAbsXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsSVGPathSegCurvetoCubicSmoothAbsYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsSVGPathSegCurvetoCubicSmoothAbsX2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsSVGPathSegCurvetoCubicSmoothAbsY2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore70jsSVGPathElementPrototypeFunctionCreateSVGPathSegCurvetoCubicSmoothRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSVal
+__ZN7WebCore14SVGPathElement37createSVGPathSegCurvetoCubicSmoothRelEffff
+__ZN7WebCore31SVGPathSegCurvetoCubicSmoothRelC1Effff
+__ZN7WebCore31SVGPathSegCurvetoCubicSmoothRelC2Effff
+__ZNK7WebCore31SVGPathSegCurvetoCubicSmoothRel11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_33JSSVGPathSegCurvetoCubicSmoothRelEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore33JSSVGPathSegCurvetoCubicSmoothRel15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore33JSSVGPathSegCurvetoCubicSmoothRelC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_31SVGPathSegCurvetoCubicSmoothRel
+__ZN7WebCore33JSSVGPathSegCurvetoCubicSmoothRelC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_31SVGPathSegCurvetoCubicSmoothRel
+__ZN7WebCore33JSSVGPathSegCurvetoCubicSmoothRel18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore31SVGPathSegCurvetoCubicSmoothRel19pathSegTypeAsLetterEv
+__ZN7WebCore34jsSVGPathSegCurvetoCubicSmoothRelXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore34jsSVGPathSegCurvetoCubicSmoothRelYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsSVGPathSegCurvetoCubicSmoothRelX2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsSVGPathSegCurvetoCubicSmoothRelY2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore74jsSVGPathElementPrototypeFunctionCreateSVGPathSegCurvetoQuadraticSmoothAbsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7J
+__ZN7WebCore14SVGPathElement41createSVGPathSegCurvetoQuadraticSmoothAbsEff
+__ZN7WebCore35SVGPathSegCurvetoQuadraticSmoothAbsC1Eff
+__ZN7WebCore35SVGPathSegCurvetoQuadraticSmoothAbsC2Eff
+__ZNK7WebCore35SVGPathSegCurvetoQuadraticSmoothAbs11pathSegTypeEv
+__ZN7WebCore15getDOMStructureINS_37JSSVGPathSegCurvetoQuadraticSmoothAbsEEEPN3JSC9StructureEPNS2_9ExecStateE
+__ZN7WebCore37JSSVGPathSegCurvetoQuadraticSmoothAbs15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore37JSSVGPathSegCurvetoQuadraticSmoothAbsC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_35SVGPathSegCurvetoQuadraticS
+__ZN7WebCore37JSSVGPathSegCurvetoQuadraticSmoothAbsC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_35SVGPathSegCurvetoQuadraticS
+__ZN7WebCore37JSSVGPathSegCurvetoQuadraticSmoothAbs18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlot
+__ZNK7WebCore35SVGPathSegCurvetoQuadraticSmoothAbs19pathSegTypeAsLetterEv
+__ZN7WebCore38jsSVGPathSegCurvetoQuadraticSmoothAbsXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore38jsSVGPathSegCurvetoQuadraticSmoothAbsYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore74jsSVGPathElementPrototypeFunctionCreateSVGPathSegCurvetoQuadraticSmoothRelEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7J
+__ZN7WebCore14SVGPathElement41createSVGPathSegCurvetoQuadraticSmoothRelEff
+__ZN7WebCore35SVGPathSegCurvetoQuadraticSmoothRelC1Eff
+__ZN7WebCore35SVGPathSegCurvetoQuadraticSmoothRelC2Eff
+__ZNK7WebCore35SVGPathSegCurvetoQuadraticSmoothRel11pathSegTypeEv
+__ZN7WebCore37JSSVGPathSegCurvetoQuadraticSmoothRel15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore37JSSVGPathSegCurvetoQuadraticSmoothRelC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_35SVGPathSegCurvetoQuadraticS
+__ZN7WebCore37JSSVGPathSegCurvetoQuadraticSmoothRelC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_35SVGPathSegCurvetoQuadraticS
+__ZN7WebCore37JSSVGPathSegCurvetoQuadraticSmoothRel18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlot
+__ZNK7WebCore35SVGPathSegCurvetoQuadraticSmoothRel19pathSegTypeAsLetterEv
+__ZN7WebCore38jsSVGPathSegCurvetoQuadraticSmoothRelXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore38jsSVGPathSegCurvetoQuadraticSmoothRelYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore33JSSVGPathSegCurvetoCubicSmoothRelD1Ev
+__ZN7WebCore31SVGPathSegCurvetoCubicSmoothRelD0Ev
+__ZN7WebCore33JSSVGPathSegCurvetoCubicSmoothAbsD1Ev
+__ZN7WebCore31SVGPathSegCurvetoCubicSmoothAbsD0Ev
+__ZN7WebCore29JSSVGPathSegLinetoVerticalRelD1Ev
+__ZN7WebCore27SVGPathSegLinetoVerticalRelD0Ev
+__ZN7WebCore29JSSVGPathSegLinetoVerticalAbsD1Ev
+__ZN7WebCore27SVGPathSegLinetoVerticalAbsD0Ev
+__ZN7WebCore31JSSVGPathSegLinetoHorizontalRelD1Ev
+__ZN7WebCore29SVGPathSegLinetoHorizontalRelD0Ev
+__ZN7WebCore31JSSVGPathSegLinetoHorizontalAbsD1Ev
+__ZN7WebCore29SVGPathSegLinetoHorizontalAbsD0Ev
+__ZN7WebCore18JSSVGPathSegArcRelD1Ev
+__ZN7WebCore16SVGPathSegArcRelD0Ev
+__ZN7WebCore18JSSVGPathSegArcAbsD1Ev
+__ZN7WebCore16SVGPathSegArcAbsD0Ev
+__ZN7WebCore31JSSVGPathSegCurvetoQuadraticRelD1Ev
+__ZN7WebCore29SVGPathSegCurvetoQuadraticRelD0Ev
+__ZN7WebCore31JSSVGPathSegCurvetoQuadraticAbsD1Ev
+__ZN7WebCore29SVGPathSegCurvetoQuadraticAbsD0Ev
+__ZN7WebCore27JSSVGPathSegCurvetoCubicRelD1Ev
+__ZN7WebCore25SVGPathSegCurvetoCubicRelD0Ev
+__ZN7WebCore21JSSVGPathSegLinetoRelD1Ev
+__ZN7WebCore19SVGPathSegLinetoRelD0Ev
+__ZN7WebCore21JSSVGPathSegMovetoRelD1Ev
+__ZN7WebCore19SVGPathSegMovetoRelD0Ev
+__ZN7WebCore37JSSVGPathSegCurvetoQuadraticSmoothRelD1Ev
+__ZN7WebCore35SVGPathSegCurvetoQuadraticSmoothRelD0Ev
+__ZN7WebCore37JSSVGPathSegCurvetoQuadraticSmoothAbsD1Ev
+__ZN7WebCore35SVGPathSegCurvetoQuadraticSmoothAbsD0Ev
+__ZN7WebCore42JSSVGPathSegCurvetoCubicSmoothRelPrototypeD1Ev
+__ZN7WebCore42JSSVGPathSegCurvetoCubicSmoothAbsPrototypeD1Ev
+__ZN7WebCore38JSSVGPathSegLinetoVerticalRelPrototypeD1Ev
+__ZN7WebCore38JSSVGPathSegLinetoVerticalAbsPrototypeD1Ev
+__ZN7WebCore40JSSVGPathSegLinetoHorizontalRelPrototypeD1Ev
+__ZN7WebCore40JSSVGPathSegLinetoHorizontalAbsPrototypeD1Ev
+__ZN7WebCore27JSSVGPathSegArcRelPrototypeD1Ev
+__ZN7WebCore27JSSVGPathSegArcAbsPrototypeD1Ev
+__ZN7WebCore40JSSVGPathSegCurvetoQuadraticRelPrototypeD1Ev
+__ZN7WebCore40JSSVGPathSegCurvetoQuadraticAbsPrototypeD1Ev
+__ZN7WebCore36JSSVGPathSegCurvetoCubicRelPrototypeD1Ev
+__ZN7WebCore30JSSVGPathSegLinetoRelPrototypeD1Ev
+__ZN7WebCore30JSSVGPathSegMovetoRelPrototypeD1Ev
+__ZN7WebCore46JSSVGPathSegCurvetoQuadraticSmoothRelPrototypeD1Ev
+__ZN7WebCore46JSSVGPathSegCurvetoQuadraticSmoothAbsPrototypeD1Ev
+__ZN7WebCore36jsSVGImageElementPreserveAspectRatioEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_15SVGImageElementENS_22SVGPreserveAspectRatioEXadL_ZNS_8SVGNames14imageTagStringEEEXadL_
+__ZN7WebCore32JSSVGAnimatedPreserveAspectRatio18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore39jsSVGAnimatedPreserveAspectRatioBaseValEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_22SVGPreserveAspectRatioEPNS_10SVGElementE
+__ZN7WebCore24JSSVGPreserveAspectRatioC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_22SVGPreserveAspectRatioEEEPNS_10SVGElemen
+__ZN7WebCore24JSSVGPreserveAspectRatioC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_22SVGPreserveAspectRatioEEEPNS_10SVGElemen
+__ZN7WebCore24JSSVGPreserveAspectRatio18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore29jsSVGPreserveAspectRatioAlignEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore35jsSVGPreserveAspectRatioMeetOrSliceEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore24JSSVGPreserveAspectRatioD1Ev
+__ZN7WebCore24JSSVGPreserveAspectRatioD2Ev
+__ZNK7WebCore8SVGColor10isSVGColorEv
+__ZN7WebCore10JSSVGColorC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8SVGColorEEE
+__ZNK7WebCore10JSSVGColor9classInfoEv
+__ZN7WebCore10JSSVGColorD1Ev
+__ZN3WTF7HashSetIdNS_9FloatHashIdEENS_10HashTraitsIdEEE3addERKd
+__ZN3WTF9HashTableIddNS_17IdentityExtractorIdEENS_9FloatHashIdEENS_10HashTraitsIdEES6_E6expandEv
+__ZN3WTF9HashTableIddNS_17IdentityExtractorIdEENS_9FloatHashIdEENS_10HashTraitsIdEES6_E6rehashEi
+__ZN3WTF9HashTableIddNS_17IdentityExtractorIdEENS_9FloatHashIdEENS_10HashTraitsIdEES6_E13allocateTableEi
+__ZN3WTF6VectorIN7WebCore14SVGSMILElement9ConditionELm0EE14shrinkCapacityEm
+__ZSt21__unguarded_partitionIPN7WebCore8SMILTimeES1_ET_S3_S3_T0_
+__ZN3WTF9HashTableIddNS_17IdentityExtractorIdEENS_9FloatHashIdEENS_10HashTraitsIdEES6_E4findIdNS_22IdentityHashTranslatorIddS4_
+__ZSt13__heap_selectIPN7WebCore8SMILTimeEEvT_S3_S3_
+__ZSt9make_heapIPN7WebCore8SMILTimeEEvT_S3_
+__ZSt13__adjust_heapIPN7WebCore8SMILTimeElS1_EvT_T0_S4_T1_
+__ZSt11__push_heapIPN7WebCore8SMILTimeElS1_EvT_T0_S4_T1_
+__ZSt9sort_heapIPN7WebCore8SMILTimeEEvT_S3_
+__ZN7WebCore46jsSVGSVGElementPrototypeFunctionCreateSVGAngleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13SVGSVGElement14createSVGAngleEv
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_8SVGAngleEPNS_10SVGElementE
+__ZN7WebCore10JSSVGAngleC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8SVGAngleEEEPNS_10SVGElementE
+__ZN7WebCore10JSSVGAngleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_8SVGAngleEEEPNS_10SVGElementE
+__ZN7WebCore47jsSVGSVGElementPrototypeFunctionCreateSVGLengthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore13SVGSVGElement15createSVGLengthEv
+__ZN7WebCoreL29createSVGScriptElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore18JSSVGScriptElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSSVGScriptElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGScriptElementEEE
+__ZN7WebCore18JSSVGScriptElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGScriptElementEEE
+__ZN7WebCore22setJSSVGElementXmlbaseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore10SVGElement10setXmlbaseERKNS_6StringERi
+__ZN7WebCore10JSSVGAngle3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore26setJSSVGAngleValueAsStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore8SVGAngle16setValueAsStringERKNS_6StringE
+__ZN7WebCore8SVGAngle9calculateEv
+__ZN7WebCore10JSSVGAngle18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore23jsSVGAngleValueAsStringEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore8SVGAngle13valueAsStringEv
+__ZN7WebCore27setJSSVGLengthValueAsStringEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore25JSSVGStaticPODTypeWrapperINS_9SVGLengthEE12commitChangeES1_PNS_10SVGElementE
+__ZN7WebCore18JSSVGScriptElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore25setJSSVGScriptElementTypeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore18JSSVGScriptElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22jsSVGScriptElementTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore16SVGScriptElement4typeEv
+__ZN7WebCore18JSSVGScriptElementD1Ev
+__ZThn8_N7WebCore16SVGScriptElementD0Ev
+__ZN7WebCore10JSSVGAngleD1Ev
+__ZN7WebCore10JSSVGAngleD2Ev
+__ZN7WebCore49jsSVGPathSegListPrototypeFunctionInsertItemBeforeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSSVGPathSegList16insertItemBeforeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore12toSVGPathSegEN3JSC7JSValueE
+__ZN7WebCore44jsSVGPathSegListPrototypeFunctionReplaceItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSSVGPathSegList11replaceItemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore27JSSVGScriptElementPrototypeD1Ev
+__ZN7WebCore43jsSVGPathSegListPrototypeFunctionAppendItemEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16JSSVGPathSegList10appendItemEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore21JSSVGPathSegMovetoAbs9classInfoEv
+__ZN7WebCore22jsSVGGElementTransformEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore31jsSVGTransformListNumberOfItemsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore19SVGAnimatedPropertyINS_29SVGStyledTransformableElementENS_16SVGTransformListEXadL_ZNS_39SVGStyledTransformableEl
+__ZN7WebCore19synchronizePropertyINS_29SVGStyledTransformableElementEPNS_16SVGTransformListEEEvPKT_RKNS_13QualifiedNameET0_
+__ZNK7WebCore16SVGTransformList13valueAsStringEv
+__ZN7WebCore22jsSVGScriptElementHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore18JSSVGScriptElement9classInfoEv
+__ZN7WebCore43jsSVGScriptElementExternalResourcesRequiredEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore20JSSVGAnimatedBoolean3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore30setJSSVGAnimatedBooleanBaseValEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZThn288_NK7WebCore16SVGScriptElement18typeAttributeValueEv
+__ZNK7WebCore16SVGScriptElement18typeAttributeValueEv
+__ZThn288_NK7WebCore16SVGScriptElement22languageAttributeValueEv
+__ZNK7WebCore16SVGScriptElement22languageAttributeValueEv
+__ZThn288_NK7WebCore16SVGScriptElement17forAttributeValueEv
+__ZNK7WebCore16SVGScriptElement17forAttributeValueEv
+__ZThn288_N7WebCore16SVGScriptElement18dispatchErrorEventEv
+__ZN7WebCore16SVGScriptElement18dispatchErrorEventEv
+__ZN7WebCoreL24createSVGAElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore13JSSVGAElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore13JSSVGAElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11SVGAElementEEE
+__ZN7WebCore13JSSVGAElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_11SVGAElementEEE
+__ZN7WebCore13JSSVGAElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore22JSSVGAElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore13JSSVGAElement9classInfoEv
+__ZN7WebCore22JSSVGAElementPrototypeD1Ev
+__ZN7WebCore13JSSVGAElementD1Ev
+__ZN7WebCore17jsSVGAElementHrefEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsSVGAElementTargetEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_11SVGAElementENS_6StringEXadL_ZNS_8SVGNames10aTagStringEEEXadL_ZNS3_16targetAttrStringEE
+__ZN7WebCore20jsSVGCircleElementCxEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGCircleElementENS_9SVGLengthEXadL_ZNS_8SVGNames15circleTagStringEEEXadL_ZNS3_12cxAtt
+__ZN7WebCore20jsSVGCircleElementCyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGCircleElementENS_9SVGLengthEXadL_ZNS_8SVGNames15circleTagStringEEEXadL_ZNS3_12cyAtt
+__ZN7WebCore19jsSVGCircleElementREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGCircleElementENS_9SVGLengthEXadL_ZNS_8SVGNames15circleTagStringEEEXadL_ZNS3_11rAttr
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_16SVGCircleElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames15circleTagStringEEEXadL_Z
+__ZN7WebCoreL29createSVGCursorElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore18JSSVGCursorElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSSVGCursorElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGCursorElementEEE
+__ZN7WebCore18JSSVGCursorElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_16SVGCursorElementEEE
+__ZN7WebCore18JSSVGCursorElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore27JSSVGCursorElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore18JSSVGCursorElement9classInfoEv
+__ZN7WebCore6CursorC1EPNS_5ImageERKNS_8IntPointE
+__ZN7WebCore6CursorC2EPNS_5ImageERKNS_8IntPointE
+__ZN7WebCore18JSSVGCursorElementD1Ev
+__ZN7WebCore27JSSVGCursorElementPrototypeD1Ev
+__ZN7WebCore19jsSVGCursorElementXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGCursorElementENS_9SVGLengthEXadL_ZNS_8SVGNames15cursorTagStringEEEXadL_ZNS3_11xAttr
+__ZN7WebCore19jsSVGCursorElementYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGCursorElementENS_9SVGLengthEXadL_ZNS_8SVGNames15cursorTagStringEEEXadL_ZNS3_11yAttr
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_16SVGCursorElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames15cursorTagStringEEEXadL_Z
+__ZN7WebCore21jsSVGEllipseElementCxEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGEllipseElementENS_9SVGLengthEXadL_ZNS_8SVGNames16ellipseTagStringEEEXadL_ZNS3_12cxA
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_17SVGEllipseElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames16ellipseTagStringEEEXadL
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_17SVGEllipseElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames16ellipseTagStringEEEXad
+__ZN7WebCore21jsSVGEllipseElementCyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGEllipseElementENS_9SVGLengthEXadL_ZNS_8SVGNames16ellipseTagStringEEEXadL_ZNS3_12cyA
+__ZN7WebCore21jsSVGEllipseElementRxEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGEllipseElementENS_9SVGLengthEXadL_ZNS_8SVGNames16ellipseTagStringEEEXadL_ZNS3_12rxA
+__ZN7WebCore21jsSVGEllipseElementRyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGEllipseElementENS_9SVGLengthEXadL_ZNS_8SVGNames16ellipseTagStringEEEXadL_ZNS3_12ryA
+__ZN7WebCoreL36createSVGForeignObjectElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore25JSSVGForeignObjectElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore25JSSVGForeignObjectElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23SVGForeignObjectElementEEE
+__ZN7WebCore25JSSVGForeignObjectElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23SVGForeignObjectElementEEE
+__ZN7WebCore25JSSVGForeignObjectElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore34JSSVGForeignObjectElementPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore25JSSVGForeignObjectElement9classInfoEv
+__ZN7WebCore25JSSVGForeignObjectElementD1Ev
+__ZN7WebCore34JSSVGForeignObjectElementPrototypeD1Ev
+__ZN7WebCore31jsSVGForeignObjectElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19synchronizePropertyINS_23SVGForeignObjectElementENS_9SVGLengthEEEvPKT_RKNS_13QualifiedNameET0_
+__ZN7WebCore30jsSVGForeignObjectElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26jsSVGForeignObjectElementXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_23SVGForeignObjectElementENS_9SVGLengthEXadL_ZNS_8SVGNames22foreignObjectTagStringEEEXad
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_23SVGForeignObjectElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames22foreignObjectTagS
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_23SVGForeignObjectElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames22foreignObjectTag
+__ZNK7WebCore19SVGAnimatedPropertyINS_23SVGForeignObjectElementENS_9SVGLengthEXadL_ZNS_8SVGNames22foreignObjectTagStringEEEXadL
+__ZN7WebCore26jsSVGForeignObjectElementYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19synchronizePropertyINS_15SVGImageElementENS_9SVGLengthEEEvPKT_RKNS_13QualifiedNameET0_
+__ZNK7WebCore19SVGAnimatedPropertyINS_15SVGImageElementENS_22SVGPreserveAspectRatioEXadL_ZNS_8SVGNames14imageTagStringEEEXadL_Z
+__ZN7WebCore24JSSVGPreserveAspectRatio3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore32setJSSVGPreserveAspectRatioAlignEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore22SVGPreserveAspectRatio8setAlignEt
+__ZNK7WebCore19SVGAnimatedPropertyINS_15SVGImageElementENS_9SVGLengthEXadL_ZNS_8SVGNames14imageTagStringEEEXadL_ZNS3_15widthAtt
+__ZN7WebCore18jsSVGImageElementXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_15SVGImageElementENS_9SVGLengthEXadL_ZNS_8SVGNames14imageTagStringEEEXadL_ZNS3_11xAttrSt
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_15SVGImageElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames14imageTagStringEEEXadL_ZNS
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_15SVGImageElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames14imageTagStringEEEXadL_ZN
+__ZN7WebCore18jsSVGImageElementYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_15SVGImageElementENS_9SVGLengthEXadL_ZNS_8SVGNames14imageTagStringEEEXadL_ZNS3_11yAttrSt
+__ZN7WebCore18jsSVGLineElementX1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGLineElementENS_9SVGLengthEXadL_ZNS_8SVGNames13lineTagStringEEEXadL_ZNS3_12x1AttrStr
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_14SVGLineElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames13lineTagStringEEEXadL_ZNS3_
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_14SVGLineElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames13lineTagStringEEEXadL_ZNS3
+__ZN7WebCore18jsSVGLineElementX2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGLineElementENS_9SVGLengthEXadL_ZNS_8SVGNames13lineTagStringEEEXadL_ZNS3_12x2AttrStr
+__ZN7WebCore18jsSVGLineElementY1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGLineElementENS_9SVGLengthEXadL_ZNS_8SVGNames13lineTagStringEEEXadL_ZNS3_12y1AttrStr
+__ZN7WebCore18jsSVGLineElementY2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGLineElementENS_9SVGLengthEXadL_ZNS_8SVGNames13lineTagStringEEEXadL_ZNS3_12y2AttrStr
+__ZN7WebCore15setJSSVGMatrixEEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore18jsSVGTransformTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19jsSVGTransformAngleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore37jsSVGGradientElementGradientTransformEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_18SVGGradientElementENS_16SVGTransformListEXadL_ZNS_28SVGGradientElementIdentifierEEEXad
+__ZN7WebCore33jsSVGGradientElementGradientUnitsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_18SVGGradientElementEiXadL_ZNS_28SVGGradientElementIdentifierEEEXadL_ZNS_8SVGNames23grad
+__ZN7WebCore28jsSVGLinearGradientElementX2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGLinearGradientElementY1EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_24SVGLinearGradientElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames23linearGradientTa
+__ZN7WebCore28jsSVGLinearGradientElementY2EPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore19SVGAnimatedTemplateINS_9SVGLengthEED2Ev
+__ZN7WebCore30jsSVGMarkerElementMarkerHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGMarkerElementENS_9SVGLengthEXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS3_22marke
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_16SVGMarkerElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames15markerTagStringEEEXadL_
+__ZN7WebCore29jsSVGMarkerElementMarkerUnitsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGMarkerElementEiXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS2_21markerUnitsAttrStr
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_16SVGMarkerElementES1_iiXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS2_21markerUni
+__ZN7WebCore29jsSVGMarkerElementMarkerWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGMarkerElementENS_9SVGLengthEXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS3_21marke
+__ZN7WebCore28jsSVGMarkerElementOrientTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGMarkerElementEiXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS_27SVGOrientTypeAttrId
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_16SVGMarkerElementES1_iiXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS_27SVGOrientT
+__ZN7WebCore29jsSVGMarkerElementOrientAngleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGMarkerElementENS_8SVGAngleEXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS_28SVGOrie
+__ZNK3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIPNS1_8SVGAngleEEENS1_29SVGAnimatedTypeWrapper
+__ZN3WTF7HashMapIN7WebCore25SVGAnimatedTypeWrapperKeyEPNS1_19SVGAnimatedTemplateIPNS1_8SVGAngleEEENS1_29SVGAnimatedTypeWrapperK
+__ZN3WTF9HashTableIN7WebCore25SVGAnimatedTypeWrapperKeyESt4pairIS2_PNS1_19SVGAnimatedTemplateIPNS1_8SVGAngleEEEENS_18PairFirstE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19SVGAnimatedTemplateIPNS_8SVGAngleEEEPNS_10SVGElementE
+__ZN7WebCore18JSSVGAnimatedAngle15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore18JSSVGAnimatedAngleC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIPNS_8SVGAngleEEEEEPNS_10SV
+__ZN7WebCore18JSSVGAnimatedAngleC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19SVGAnimatedTemplateIPNS_8SVGAngleEEEEEPNS_10SV
+__ZN7WebCore18JSSVGAnimatedAngle18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25jsSVGAnimatedAngleBaseValEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15jsSVGAngleValueEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18setJSSVGAngleValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore8SVGAngle8setValueEf
+__ZN7WebCore18JSSVGAnimatedAngleD1Ev
+__ZN7WebCore18JSSVGAnimatedAngleD2Ev
+__ZN7WebCore27JSSVGAnimatedAnglePrototypeD1Ev
+__ZN7WebCore22jsSVGMarkerElementRefXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGMarkerElementENS_9SVGLengthEXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS3_14refXA
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_16SVGMarkerElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames15markerTagStringEEEXadL_Z
+__ZN7WebCore22jsSVGMarkerElementRefYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_16SVGMarkerElementENS_9SVGLengthEXadL_ZNS_8SVGNames15markerTagStringEEEXadL_ZNS3_14refYA
+__ZN7WebCore51jsSVGMarkerElementPrototypeFunctionSetOrientToAngleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore10toSVGAngleEN3JSC7JSValueE
+__ZNK7WebCore10JSSVGAngle9classInfoEv
+__ZN7WebCore16SVGMarkerElement16setOrientToAngleEN3WTF10PassRefPtrINS_8SVGAngleEEE
+__ZN7WebCore50jsSVGMarkerElementPrototypeFunctionSetOrientToAutoEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore16SVGMarkerElement15setOrientToAutoEv
+__ZN7WebCore22jsSVGMaskElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGMaskElementENS_9SVGLengthEXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS3_16heightAtt
+__ZN7WebCore32jsSVGMaskElementMaskContentUnitsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGMaskElementEiXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS2_26maskContentUnitsAttrSt
+__ZN7WebCore25jsSVGMaskElementMaskUnitsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGMaskElementEiXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS2_19maskUnitsAttrStringEEE
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_14SVGMaskElementES1_iiXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS2_19maskUnitsAttr
+__ZN7WebCore21jsSVGMaskElementWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGMaskElementENS_9SVGLengthEXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS3_15widthAttr
+__ZN7WebCore17jsSVGMaskElementXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGMaskElementENS_9SVGLengthEXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS3_11xAttrStri
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_14SVGMaskElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS3_
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_14SVGMaskElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS3
+__ZN7WebCore17jsSVGMaskElementYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_14SVGMaskElementENS_9SVGLengthEXadL_ZNS_8SVGNames13maskTagStringEEEXadL_ZNS3_11yAttrStri
+__ZN7WebCore25jsSVGPatternElementHeightEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGPatternElementENS_9SVGLengthEXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS3_16hei
+__ZNK7WebCore26SVGAnimatedPropertyTearOffINS_17SVGPatternElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames16patternTagStringEEEXad
+__ZN7WebCore38jsSVGPatternElementPatternContentUnitsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGPatternElementEiXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS2_29patternContentUn
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_17SVGPatternElementES1_iiXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS2_29pattern
+__ZN7WebCore35jsSVGPatternElementPatternTransformEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGPatternElementENS_16SVGTransformListEXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZN
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_17SVGPatternElementES1_NS_16SVGTransformListEPS2_XadL_ZNS_8SVGNames16patternTagStri
+__ZN7WebCore31jsSVGPatternElementPatternUnitsEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGPatternElementEiXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS2_22patternUnitsAttr
+__ZNK7WebCore19SVGAnimatedPropertyINS_17SVGPatternElementEiXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS2_22patternUnitsAttrS
+__ZN7WebCore20jsSVGPatternElementXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGPatternElementENS_9SVGLengthEXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS3_11xAt
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_17SVGPatternElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames16patternTagStringEEEXadL
+__ZN7WebCore20jsSVGPatternElementYEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_17SVGPatternElementENS_9SVGLengthEXadL_ZNS_8SVGNames16patternTagStringEEEXadL_ZNS3_11yAt
+__ZN7WebCoreL37createSVGRadialGradientElementWrapperEPN3JSC9ExecStateEN3WTF10PassRefPtrINS_10SVGElementEEE
+__ZN7WebCore26JSSVGRadialGradientElement15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore26JSSVGRadialGradientElementC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_24SVGRadialGradientElementEEE
+__ZN7WebCore26JSSVGRadialGradientElementC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_24SVGRadialGradientElementEEE
+__ZN7WebCore26JSSVGRadialGradientElement18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore26JSSVGRadialGradientElement9classInfoEv
+__ZN7WebCore26JSSVGRadialGradientElementD1Ev
+__ZN7WebCore35JSSVGRadialGradientElementPrototypeD1Ev
+__ZN7WebCore28jsSVGRadialGradientElementCxEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore21lookupOrCreateWrapperINS_24SVGRadialGradientElementENS_9SVGLengthEXadL_ZNS_8SVGNames23radialGradientTagStringEEEX
+__ZN7WebCore19synchronizePropertyINS_24SVGRadialGradientElementENS_9SVGLengthEEEvPKT_RKNS_13QualifiedNameET0_
+__ZN7WebCore28jsSVGRadialGradientElementCyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGRadialGradientElementFxEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore28jsSVGRadialGradientElementFyEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsSVGRadialGradientElementREPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore26SVGAnimatedPropertyTearOffINS_24SVGRadialGradientElementES1_NS_9SVGLengthES2_XadL_ZNS_8SVGNames23radialGradientTa
+__ZN7WebCore50jsSVGLengthPrototypeFunctionNewValueSpecifiedUnitsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore9SVGLength22newValueSpecifiedUnitsEtf
+__ZNK7WebCore24RenderSVGHiddenContainer20isSVGHiddenContainerEv
+__ZNK7WebCore4Font32selectionRectForTextUsingSVGFontERKNS_7TextRunERKNS_8IntPointEiii
+__ZNK7WebCore16SVGCursorElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZNK7WebCore16SVGScriptElement14isURLAttributeEPNS_9AttributeE
+__ZN7WebCore8CSSValue23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEEPKNS_13CSSStyleSheetE
+__ZN7WebCore25jsHTMLAreaElementHostnameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN3WTF6VectorIN7WebCore6LengthELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIlLm16EE14expandCapacityEm
+__ZN3WTF6VectorIlLm16EE15reserveCapacityEm
+__ZN3WTF6VectorIPN7WebCore17SubresourceLoaderELm256EE14expandCapacityEmPKS3_
+__ZN3WTF6VectorIPN7WebCore17SubresourceLoaderELm256EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore17SubresourceLoaderELm256EE15reserveCapacityEm
+__ZN7WebCore14RenderTableCol12imageChangedEPvPKNS_7IntRectE
+__ZN7WebCore18RenderTableSection12imageChangedEPvPKNS_7IntRectE
+__ZN7WebCore48jsWebKitCSSMatrixPrototypeFunctionSetMatrixValueEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore42jsWebKitCSSMatrixPrototypeFunctionMultiplyEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore17toWebKitCSSMatrixEN3JSC7JSValueE
+__ZNK7WebCore15WebKitCSSMatrix8multiplyEPS0_
+__ZN7WebCore15WebKitCSSMatrixC1ERKNS_20TransformationMatrixE
+__ZN7WebCore15WebKitCSSMatrixC2ERKNS_20TransformationMatrixE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_15WebKitCSSMatrixE
+__ZN7WebCore41jsWebKitCSSMatrixPrototypeFunctionInverseEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore15WebKitCSSMatrix7inverseERi
+__ZN7WebCore43jsWebKitCSSMatrixPrototypeFunctionTranslateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore15WebKitCSSMatrix9translateEddd
+__ZN7WebCore39jsWebKitCSSMatrixPrototypeFunctionScaleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore15WebKitCSSMatrix5scaleEddd
+__ZN7WebCore40jsWebKitCSSMatrixPrototypeFunctionRotateEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore15WebKitCSSMatrix6rotateEddd
+__ZN7WebCore14JSCSSValueList18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZNK7WebCore23WebKitCSSTransformValue25isWebKitCSSTransformValueEv
+__ZN7WebCore25JSWebKitCSSTransformValueC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23WebKitCSSTransformValueEEE
+__ZN7WebCore25JSWebKitCSSTransformValueC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_23WebKitCSSTransformValueEEE
+__ZNK7WebCore25JSWebKitCSSTransformValue9classInfoEv
+__ZN7WebCore25JSWebKitCSSTransformValue18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore34JSWebKitCSSTransformValuePrototype9classInfoEv
+__ZN7WebCore36jsWebKitCSSTransformValueConstructorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore38jsWebKitCSSTransformValueOperationTypeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25JSWebKitCSSTransformValueD1Ev
+__ZNK7WebCore24ShorthandPropertyWrapper6equalsEPKNS_11RenderStyleES3_
+__ZNK7WebCore24ShorthandPropertyWrapper5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS4_S7_d
+__ZN7WebCore11RenderStyle22setBackgroundXPositionENS_6LengthE
+__ZN7WebCore11RenderStyle22setBackgroundYPositionENS_6LengthE
+__ZNK7WebCore15PropertyWrapperINS_10LengthSizeEE5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS6_S9_d
+__ZN7WebCore11RenderStyle17setBackgroundSizeENS_10LengthSizeE
+__ZN7WebCore19AnimationController21pauseTransitionAtTimeEPNS_12RenderObjectERKNS_6StringEd
+__ZN7WebCore26AnimationControllerPrivate21pauseTransitionAtTimeEPNS_12RenderObjectERKNS_6StringEd
+__ZN7WebCore18CompositeAnimation21pauseTransitionAtTimeEid
+__ZN7WebCore4Node29dispatchWebKitTransitionEventERKNS_12AtomicStringERKNS_6StringEd
+__ZN7WebCore21WebKitTransitionEventC1ERKNS_12AtomicStringERKNS_6StringEd
+__ZN7WebCore21WebKitTransitionEventC2ERKNS_12AtomicStringERKNS_6StringEd
+__ZN7WebCore11RenderStyle16setMaskXPositionENS_6LengthE
+__ZN7WebCore11RenderStyle16setMaskYPositionENS_6LengthE
+__ZN7WebCore11RenderStyle11setMaskSizeENS_10LengthSizeE
+__ZNK7WebCore21PropertyWrapperShadow5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS4_S7_d
+__ZNK7WebCore15PropertyWrapperItE5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS5_S8_d
+__ZN7WebCore11RenderStyle17setBorderTopWidthEt
+__ZN7WebCore11RenderStyle19setBorderRightWidthEt
+__ZN7WebCore11RenderStyle20setBorderBottomWidthEt
+__ZN7WebCore11RenderStyle18setBorderLeftWidthEt
+__ZN7WebCore11RenderStyle19setTransformOriginXENS_6LengthE
+__ZN7WebCore11RenderStyle19setTransformOriginYENS_6LengthE
+__ZN7WebCore11RenderStyle12setMarginTopENS_6LengthE
+__ZN7WebCore11RenderStyle14setMarginRightENS_6LengthE
+__ZN7WebCore11RenderStyle15setMarginBottomENS_6LengthE
+__ZN7WebCore11RenderStyle13setMarginLeftENS_6LengthE
+__ZNK7WebCore15PropertyWrapperIRKNS_7IntSizeEE5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS8_SB_d
+__ZN7WebCore11RenderStyle23setBorderTopRightRadiusERKNS_7IntSizeE
+__ZN7WebCore11RenderStyle22setBorderTopLeftRadiusERKNS_7IntSizeE
+__ZN7WebCore11RenderStyle25setBorderBottomLeftRadiusERKNS_7IntSizeE
+__ZN7WebCore11RenderStyle26setBorderBottomRightRadiusERKNS_7IntSizeE
+__ZN7WebCore11RenderStyle15setOutlineColorERKNS_5ColorE
+__ZNK7WebCore15PropertyWrapperIiE5blendEPKNS_13AnimationBaseEPNS_11RenderStyleEPKS5_S8_d
+__ZN7WebCore11RenderStyle16setOutlineOffsetEi
+__ZN7WebCore11RenderStyle15setOutlineWidthEt
+__ZN7WebCore11RenderStyle13setPaddingTopENS_6LengthE
+__ZN7WebCore11RenderStyle15setPaddingRightENS_6LengthE
+__ZN7WebCore11RenderStyle16setPaddingBottomENS_6LengthE
+__ZN7WebCore11RenderStyle14setPaddingLeftENS_6LengthE
+__ZN7WebCore35setJSDOMWindowOnwebkittransitionendEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore9DOMWindow24setOnwebkittransitionendEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore27jsNodeIteratorReferenceNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore40jsNodeIteratorPointerBeforeReferenceNodeEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore15HTMLBodyElement25didMoveToNewOwnerDocumentEv
+__ZN3WTF6VectorINS_10PassRefPtrIN7WebCore16LegacyWebArchiveEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_10PassRefPtrIN7WebCore16LegacyWebArchiveEEELm0EE15reserveCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore7ArchiveEEELm0EE14expandCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore7ArchiveEEELm0EE15reserveCapacityEm
+__ZN3WTF6VectorINS_10PassRefPtrIN7WebCore16LegacyWebArchiveEEELm0EE6shrinkEm
+__ZN7WebCore16LegacyWebArchive6createEPNS_5FrameE
+__ZNK7WebCore14DocumentLoader15getSubresourcesERN3WTF6VectorINS1_10PassRefPtrINS_15ArchiveResourceEEELm0EEE
+__ZNK7WebCore14DocumentLoader12mainResourceEv
+__ZN3WTF6VectorINS_10PassRefPtrIN7WebCore16LegacyWebArchiveEEELm0EE14expandCapacityEmPKS4_
+__ZN7WebCore13CSSImportRule23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN7WebCore15CSSFontFaceRule23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN7WebCore19CSSFontFaceSrcValue23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEEPKNS_13CSSStyleSheetE
+__ZN7WebCore19CSSBorderImageValue23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEEPKNS_13CSSStyleSheetE
+__ZN7WebCore15CSSReflectValue23addSubresourceStyleURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEEPKNS_13CSSStyleSheetE
+__ZNK7WebCore20HTMLFrameElementBase14isURLAttributeEPNS_9AttributeE
+__ZNK7WebCore17HTMLObjectElement27addSubresourceAttributeURLsERN3WTF11ListHashSetINS_4KURLENS_8KURLHashEEE
+__ZN7WebCore14ArchiveFactory6createEPNS_12SharedBufferERKNS_6StringE
+__ZNK3WTF7HashMapIN7WebCore6StringEPFNS_10PassRefPtrINS1_7ArchiveEEEPNS1_12SharedBufferEENS1_15CaseFoldingHashENS_10HashTraitsI
+__ZN7WebCoreL20archiveFactoryCreateINS_16LegacyWebArchiveEEEN3WTF10PassRefPtrINS_7ArchiveEEEPNS_12SharedBufferE
+__ZN7WebCore14DocumentLoader20setParsedArchiveDataEN3WTF10PassRefPtrINS_12SharedBufferEEE
+-[DOMElement(WebPrivate) isFocused]
+__ZN7WebCore11RenderStyle13setCursorListEN3WTF10PassRefPtrINS_10CursorListEEE
+__ZNK7WebCore9Tokenizer15isHTMLTokenizerEv
+__ZN7WebCore11HistoryItem12setViewStateEP11objc_object
+__ZN7WebCore9InlineBox16placeEllipsisBoxEbiiiRb
+__ZN7WebCore9InlineBox15clearTruncationEv
+__ZN7WebCoreL9stateBoldEPNS_5FrameEPNS_5EventE
+__ZN7WebCoreL11stateItalicEPNS_5FrameEPNS_5EventE
+__ZN7WebCoreL18stateStrikethroughEPNS_5FrameEPNS_5EventE
+__ZNK7WebCore21ProcessingInstruction18maxCharacterOffsetEv
+__ZN7WebCore15setJSNodeOndragEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore4Node9setOndragEN3WTF10PassRefPtrINS_13EventListenerEEE
+__ZN7WebCore39setJSHTMLOptionsCollectionSelectedIndexEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore21HTMLOptionsCollection16setSelectedIndexEi
+__ZN7WebCore35jsCanvasRenderingContext2DLineWidthEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore36jsCanvasRenderingContext2DMiterLimitEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore39setJSCanvasRenderingContext2DMiterLimitEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore24CanvasRenderingContext2D13setMiterLimitEf
+__ZN7WebCore14jsNodeOnscrollEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node8onscrollEv
+__ZN7WebCore19JSSVGAnimatedString18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore25jsSVGDefsElementClassNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore29jsSVGGradientElementClassNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore25jsSVGStopElementClassNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore22jsSVGGElementClassNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore27jsSVGCircleElementClassNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore27RenderTextControlSingleLine9scrollTopEv
+__ZN7WebCore32jsCanvasRenderingContext2DCanvasEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore18LocalStorageThread14scheduleImportEN3WTF10PassRefPtrINS_16LocalStorageAreaEEE
+__ZN7WebCore16LocalStorageTaskC1ENS0_4TypeEN3WTF10PassRefPtrINS_16LocalStorageAreaEEE
+__ZN7WebCore16LocalStorageTaskC2ENS0_4TypeEN3WTF10PassRefPtrINS_16LocalStorageAreaEEE
+__ZN7WebCore16LocalStorageArea13performImportEv
+__ZN7WebCore12LocalStorage20fullDatabaseFilenameEPNS_14SecurityOriginE
+__ZN7WebCore10HTMLParser15popInlineBlocksEv
+__ZN7WebCore26NetscapePlugInStreamLoader7didFailERKNS_13ResourceErrorE
+__ZN7WebCore18LocalStorageThread12scheduleSyncEN3WTF10PassRefPtrINS_16LocalStorageAreaEEE
+__ZN7WebCore16LocalStorageArea11performSyncEv
+__ZN7WebCore16LocalStorageArea4syncEbRKN3WTF7HashMapINS_6StringES3_NS_10StringHashENS1_10HashTraitsIS3_EES6_EE
+__ZN7WebCore12IconDatabase27checkIntegrityBeforeOpeningEv
+__ZN7WebCore12IconDatabase14checkIntegrityEv
+__ZNK7WebCore32HTMLFileUploadInnerButtonElement12isShadowNodeEv
+__ZN7WebCore32HTMLFileUploadInnerButtonElement16shadowParentNodeEv
+__ZN7WebCore16JSSVGLineElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZN7WebCore21jsSVGLineElementStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14ResourceHandle12releaseProxyEv
+__ZNK7WebCore14ResourceHandle10connectionEv
+__ZN7WebCore31jsConsolePrototypeFunctionDebugEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Console5debugEPNS_15ScriptCallStackE
+__ZNK7WebCore11RenderBlock20adjustRectForColumnsERNS_7IntRectE
+__ZN7WebCore13jsNodeOnerrorEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node7onerrorEv
+__ZNK7WebCore13ChildNodeList11nodeMatchesEPNS_7ElementE
+__ZN7WebCore29setJSHTMLStyleElementDisabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLStyleElement11setDisabledEb
+__ZN7WebCore4Node11appendChildEN3WTF10PassRefPtrIS0_EERib
+__ZN7WebCore27setJSHTMLImageElementHspaceEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement9setHspaceEi
+__ZN7WebCore27setJSHTMLImageElementVspaceEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore16HTMLImageElement9setVspaceEi
+__ZN7WebCore14ResourceLoader13cannotShowURLEPNS_14ResourceHandleE
+__ZN7WebCore14ResourceLoader18cannotShowURLErrorEv
+__ZN3WTF6VectorItLm16EE14expandCapacityEmPKt
+__ZN3WTF6VectorItLm16EE14expandCapacityEm
+__ZN3WTF6VectorItLm16EE15reserveCapacityEm
+__ZN7WebCore31SearchFieldResultsButtonElement19defaultEventHandlerEPNS_5EventE
+__ZN7WebCore11RenderStyle8setColorERKNS_5ColorE
+__ZN7WebCore18jsSVGGElementStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore16JSSVGPathElement3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZNK7WebCore19JSSVGAnimatedString9classInfoEv
+__ZN7WebCore25jsSVGPathElementClassNameEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore11HistoryItem20setTransientPropertyERKNS_6StringEP11objc_object
+__ZN3WTF7HashMapIN7WebCore6StringENS_9RetainPtrIP11objc_objectEENS1_10StringHashENS_10HashTraitsIS2_EENS8_IS6_EEE3setERKS2_RKS6
+__ZN3WTF9HashTableIN7WebCore6StringESt4pairIS2_NS_9RetainPtrIP11objc_objectEEENS_18PairFirstExtractorIS8_EENS1_10StringHashENS_
+__ZNK3WTF7HashMapIN7WebCore6StringENS_9RetainPtrIP11objc_objectEENS1_10StringHashENS_10HashTraitsIS2_EENS8_IS6_EEE3getERKS2_
+__ZN7WebCore5TimerINS_12RenderButtonEE5firedEv
+__ZN7WebCore12RenderButton10timerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore5TimerINS_12RenderButtonEED0Ev
+__ZN7WebCore11RenderStyle9setBottomENS_6LengthE
+__ZN7WebCore23jsHTMLAnchorElementPortEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore17HTMLAnchorElement4portEv
+__ZN7WebCore16LocalStorageArea17scheduleFinalSyncEv
+__ZN7WebCore10moveCursorEv
+__ZN7WebCore19jsWheelEventOffsetXEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore12EventHandler17eventMayStartDragERKNS_18PlatformMouseEventE
+__ZN7WebCore12zoomInCursorEv
+__ZN7WebCore18ImageEventListener11handleEventEPNS_5EventEb
+__ZN7WebCore13ImageDocument12imageClickedEii
+__ZN7WebCore13ImageDocument16restoreImageSizeEv
+__ZN7WebCore13zoomOutCursorEv
+-[WebCoreMenuTarget validateMenuItem:]
+__ZN7WebCore15ContextMenuItemC1EP10NSMenuItem
+__ZN7WebCore15ContextMenuItemC2EP10NSMenuItem
+__ZNK7WebCore15ContextMenuItem7enabledEv
+__ZThn8_N7WebCore20ImageDocumentElementD0Ev
+__ZThn32_N7WebCore8DOMTimer6resumeEv
+__ZN7WebCore16HTMLInputElement23documentDidBecomeActiveEv
+__ZN7WebCore5Frame24searchForLabelsAboveCellEPNS_17RegularExpressionEPNS_20HTMLTableCellElementE
+__ZN7WebCore15BackForwardList17backListWithLimitEiRN3WTF6VectorINS1_6RefPtrINS_11HistoryItemEEELm0EEE
+__ZN3WTF6VectorINS_6RefPtrIN7WebCore11HistoryItemEEELm0EE14expandCapacityEmPKS4_
+__ZN7WebCore11HistoryItem10targetItemEv
+__ZN7WebCore11HistoryItem14findTargetItemEv
+__ZN7WebCore27RenderTextControlSingleLine6scrollENS_15ScrollDirectionENS_17ScrollGranularityEf
+__ZN7WebCore11EllipsisBox11nodeAtPointERKNS_14HitTestRequestERNS_13HitTestResultEiiii
+__ZN7WebCoreL15executeMoveDownEPNS_5FrameEPNS_5EventENS_19EditorCommandSourceERKNS_6StringE
+__ZN7WebCore25jsHTMLAreaElementProtocolEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore14RenderMenuList9showPopupEv
+__ZN7WebCore9PopupMenuC1EPNS_15PopupMenuClientE
+__ZN7WebCore9PopupMenuC2EPNS_15PopupMenuClientE
+__ZN7WebCore9PopupMenu4showERKNS_7IntRectEPNS_9FrameViewEi
+__ZN7WebCore9PopupMenu8populateEv
+__ZThn200_NK7WebCore14RenderMenuList13shouldPopOverEv
+__ZNK7WebCore14RenderMenuList13shouldPopOverEv
+__ZThn200_NK7WebCore14RenderMenuList8listSizeEv
+__ZNK7WebCore14RenderMenuList8listSizeEv
+__ZThn200_NK7WebCore14RenderMenuList15itemIsSeparatorEj
+__ZNK7WebCore14RenderMenuList15itemIsSeparatorEj
+__ZThn200_NK7WebCore14RenderMenuList9itemStyleEj
+__ZNK7WebCore14RenderMenuList9itemStyleEj
+__ZNK7WebCore14RenderMenuList19itemBackgroundColorEj
+__ZNK7WebCore5Color5blendERKS0_
+__ZThn200_NK7WebCore14RenderMenuList8itemTextEj
+__ZNK7WebCore14RenderMenuList8itemTextEj
+__ZThn200_NK7WebCore14RenderMenuList13itemIsEnabledEj
+__ZNK7WebCore14RenderMenuList13itemIsEnabledEj
+__ZThn200_NK7WebCore14RenderMenuList9menuStyleEv
+__ZNK7WebCore14RenderMenuList9menuStyleEv
+__ZThn200_N7WebCore14RenderMenuList9hidePopupEv
+__ZN7WebCore14RenderMenuList9hidePopupEv
+__ZN7WebCore9PopupMenu4hideEv
+__ZN7WebCore12EventHandler33sendFakeEventsAfterWidgetTrackingEP7NSEvent
+__ZN7WebCore9PopupMenuD1Ev
+__ZN7WebCore9PopupMenuD2Ev
+__ZN7WebCore10waitCursorEv
+__ZN7WebCore14ScrollbarTheme26shouldSnapBackToDragOriginEPNS_9ScrollbarERKNS_18PlatformMouseEventE
+__ZN7WebCore9Scrollbar9moveThumbEi
+__ZThn200_N7WebCore14RenderMenuList12valueChangedEjb
+__ZN7WebCore14RenderMenuList12valueChangedEjb
+__ZN7WebCore9PopupMenu5clearEv
+-[DOMHTMLInputElement(FormAutoFillTransition) _rectOnScreen]
+__ZN7WebCore11RenderImage20intrinsicSizeChangedEv
+__ZNK7WebCore27RenderTextControlSingleLine12scrollHeightEv
+__ZNK7WebCore17HTMLSelectElement19isKeyboardFocusableEPNS_13KeyboardEventE
+__ZN7WebCore31jsHTMLInputElementIndeterminateEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore23jsHTMLInputElementFilesEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_8FileListE
+__ZN7WebCore12jsNodeOndragEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node6ondragEv
+__ZN7WebCore16HTMLInputElement18setActivatedSubmitEb
+__ZN7WebCore23SubresourceLoaderClient11didSendDataEPNS_17SubresourceLoaderEyy
+-[DOMHTMLInputElement(FormAutoFillTransition) _selectedRange]
+-[DOMHTMLInputElement(FormAutoFillTransition) _replaceCharactersInRange:withString:selectingFromIndex:]
+__ZNK7WebCore16VisibleSelection5isAllENS_21StayInEditableContentE
+__ZNK7WebCore12RenderObject24shouldPaintSelectionGapsEv
+__ZN7WebCore11FrameLoader16canHandleRequestERKNS_15ResourceRequestE
+__ZN7WebCore14scaleDragImageEN3WTF9RetainPtrI7NSImageEENS_9FloatSizeE
+-[WebCoreMenuTarget forwardContextMenuAction:]
+__ZN7WebCore21ContextMenuController23contextMenuItemSelectedEPNS_15ContextMenuItemE
+__ZN7WebCore6Editor7copyURLERKNS_4KURLERKNS_6StringE
+__ZN7WebCore10Pasteboard8writeURLERKNS_4KURLERKNS_6StringEPNS_5FrameE
+__ZN7WebCore13JSPluginArray16getPropertyNamesEPN3JSC9ExecStateERNS1_17PropertyNameArrayE
+__ZN7WebCore5Cache13getStatisticsEv
+__ZN7WebCore5Cache13TypeStatistic11addResourceEPNS_14CachedResourceE
+__ZNK7WebCore14CachedResource11isPurgeableEv
+__ZN7WebCore12IconDatabase19pageURLMappingCountEv
+__ZN7WebCore12IconDatabase20retainedPageURLCountEv
+__ZN7WebCore12IconDatabase15iconRecordCountEv
+__ZN7WebCore12IconDatabase23iconRecordCountWithDataEv
+__ZN7WebCore9FontCache13fontDataCountEv
+__ZN7WebCore9FontCache21inactiveFontDataCountEv
+__ZN7WebCore17GlyphPageTreeNode18treeGlyphPageCountEv
+__ZNK7WebCore17GlyphPageTreeNode9pageCountEv
+__ZN7WebCore13jsNodeOnabortEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore4Node7onabortEv
+__ZN7WebCore34jsConsolePrototypeFunctionGroupEndEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Console8groupEndEv
+__ZN7WebCore19InspectorController8endGroupENS_13MessageSourceEjRKNS_6StringE
+__ZN7WebCore15StringTruncator13rightTruncateERKNS_6StringEfRKNS_4FontEb
+__ZN7WebCore17ScrollbarThemeMac14backButtonRectEPNS_9ScrollbarENS_13ScrollbarPartEb
+__ZN7WebCoreL17buttonRepaintRectERKNS_7IntRectENS_20ScrollbarOrientationENS_20ScrollbarControlSizeEb
+__ZN7WebCore9FrameView29forceLayoutWithPageWidthRangeEffb
+__ZN7WebCore9FrameView16adjustPageHeightEPffff
+__ZN7WebCore18correctedTextColorENS_5ColorES0_
+__ZN7WebCore15GraphicsContext21focusRingBoundingRectEv
+__ZN7WebCore12RenderObject13addPDFURLRectEPNS_15GraphicsContextERKNS_7IntRectE
+__ZN7WebCore15GraphicsContext13setURLForRectERKNS_4KURLERKNS_7IntRectE
+-[DOMHTMLInputElement readOnly]
+__ZN7WebCore8Document23renderedRectsForMarkersENS_14DocumentMarker10MarkerTypeE
+__ZNK7WebCore5Frame18selectionTextRectsERN3WTF6VectorINS_9FloatRectELm0EEEb
+__ZN3WTF6VectorIN7WebCore9FloatRectELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore9FloatRectELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore9FloatRectELm0EE15reserveCapacityEm
+__ZNK7WebCore9FrameTree24traversePreviousWithWrapEb
+__ZNK7WebCore9FrameTree13deepLastChildEv
+__ZNK7WebCore5Frame12selectedTextEv
+__ZN7WebCore14RenderReplaced20intrinsicSizeChangedEv
+__ZN7WebCore11FrameLoader26reloadWithOverrideEncodingERKNS_6StringE
+__ZN7WebCore15BackForwardList12containsItemEPNS_11HistoryItemE
+__ZNK3WTF9HashTableINS_6RefPtrIN7WebCore11HistoryItemEEES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashTraitsIS4_EESA
+_WebCoreSetAlwaysUsesComplexTextCodePath
+__ZN7WebCore4Font11setCodePathENS0_8CodePathE
+__ZN7WebCore20NetworkStateNotifier20dynamicStoreCallbackEPK16__SCDynamicStorePK9__CFArrayPv
+__ZN7WebCore5TimerINS_20NetworkStateNotifierEE5firedEv
+__ZN7WebCore20NetworkStateNotifier28networkStateChangeTimerFiredEPNS_5TimerIS0_EE
+__ZN7WebCore11FrameLoader26saveDocumentAndScrollStateEv
+__ZNK7WebCore11HistoryItem4copyEv
+__ZN3WTF6VectorIiLm0EEC1ERKS1_
+__ZN3WTF6VectorIiLm0EEC2ERKS1_
+__ZN7WebCore19InspectorController4showEv
+__ZN7WebCore19InspectorController20clearConsoleMessagesEv
+__ZN3WTF6VectorIPN7WebCore14ConsoleMessageELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorINS_6RefPtrIN3JSC7ProfileEEELm0EE14shrinkCapacityEm
+__ZN3WTF9HashTableINS_6RefPtrIN7WebCore25InspectorDatabaseResourceEEES4_NS_17IdentityExtractorIS4_EENS_7PtrHashIS4_EENS_10HashT
+__ZN7WebCore19InspectorController27windowScriptObjectAvailableEv
+__ZN7WebCore19scriptStateFromPageEPNS_4PageE
+__ZN7WebCore18ScriptGlobalObject3setEPN3JSC9ExecStateEPKcPNS_19InspectorControllerE
+__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_19InspectorControllerE
+__ZN7WebCore21JSInspectorController15createPrototypeEPN3JSC9ExecStateEPNS1_14JSGlobalObjectE
+__ZN7WebCore21JSInspectorControllerC1EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19InspectorControllerEEE
+__ZN7WebCore21JSInspectorControllerC2EN3WTF10PassRefPtrIN3JSC9StructureEEENS2_INS_19InspectorControllerEEE
+__ZN7WebCoreL15handleExceptionEPN3JSC9ExecStateE
+__ZN7WebCore21JSInspectorController18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore30JSInspectorControllerPrototype18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZN7WebCore57jsInspectorControllerPrototypeFunctionLocalizedStringsURLEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Arg
+__ZNK7WebCore21JSInspectorController9classInfoEv
+__ZN7WebCore19InspectorController19localizedStringsURLEv
+__ZN7WebCore46jsInspectorControllerPrototypeFunctionPlatformEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore19InspectorController8platformEv
+__ZN7WebCore50jsInspectorControllerPrototypeFunctionHiddenPanelsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19InspectorController12hiddenPanelsEv
+__ZN7WebCore50jsInspectorControllerPrototypeFunctionWrapCallbackEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore21JSInspectorController12wrapCallbackEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore26JSInspectorCallbackWrapper4wrapEPN3JSC9ExecStateENS1_7JSValueE
+__ZNK3WTF7HashMapIPN3JSC8JSObjectEPN7WebCore26JSInspectorCallbackWrapperENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3getE
+__ZN7WebCore26JSInspectorCallbackWrapperC1EPN3JSC9ExecStateEPNS1_8JSObjectEN3WTF10PassRefPtrINS1_9StructureEEE
+__ZN7WebCore26JSInspectorCallbackWrapperC2EPN3JSC9ExecStateEPNS1_8JSObjectEN3WTF10PassRefPtrINS1_9StructureEEE
+__ZN7WebCore26JSQuarantinedObjectWrapperC2EPN3JSC9ExecStateEPNS1_8JSObjectEN3WTF10PassRefPtrINS1_9StructureEEE
+__ZN3WTF7HashMapIPN3JSC8JSObjectEPN7WebCore26JSInspectorCallbackWrapperENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3setER
+__ZN3WTF9HashTableIPN3JSC8JSObjectESt4pairIS3_PN7WebCore26JSInspectorCallbackWrapperEENS_18PairFirstExtractorIS8_EENS_7PtrHashI
+__ZN7WebCore58jsInspectorControllerPrototypeFunctionHideDOMNodeHighlightEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Ar
+__ZN7WebCore19InspectorController13hideHighlightEv
+__ZN7WebCore54jsInspectorControllerPrototypeFunctionSearchingForNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
+__ZN7WebCore53jsInspectorControllerPrototypeFunctionInspectedWindowEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgList
+__ZN7WebCore21JSInspectorController15inspectedWindowEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore24JSInspectedObjectWrapper4wrapEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCoreL8wrappersEv
+__ZNK3WTF7HashMapIPN3JSC14JSGlobalObjectEPNS0_IPNS1_8JSObjectEPN7WebCore24JSInspectedObjectWrapperENS_7PtrHashIS5_EENS_10HashTr
+__ZN7WebCore24JSInspectedObjectWrapperC1EPN3JSC9ExecStateEPNS1_8JSObjectEN3WTF10PassRefPtrINS1_9StructureEEE
+__ZN7WebCore24JSInspectedObjectWrapperC2EPN3JSC9ExecStateEPNS1_8JSObjectEN3WTF10PassRefPtrINS1_9StructureEEE
+__ZN3WTF7HashMapIPN3JSC14JSGlobalObjectEPNS0_IPNS1_8JSObjectEPN7WebCore24JSInspectedObjectWrapperENS_7PtrHashIS5_EENS_10HashTra
+__ZN3WTF9HashTableIPN3JSC14JSGlobalObjectESt4pairIS3_PNS_7HashMapIPNS1_8JSObjectEPN7WebCore24JSInspectedObjectWrapperENS_7PtrHa
+__ZN3WTF7HashMapIPN3JSC8JSObjectEPN7WebCore24JSInspectedObjectWrapperENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3setERKS
+__ZN3WTF9HashTableIPN3JSC8JSObjectESt4pairIS3_PN7WebCore24JSInspectedObjectWrapperEENS_18PairFirstExtractorIS8_EENS_7PtrHashIS3
+__ZN7WebCore26JSQuarantinedObjectWrapper18getOwnPropertySlotEPN3JSC9ExecStateERKNS1_10IdentifierERNS1_12PropertySlotE
+__ZNK7WebCore24JSInspectedObjectWrapper17allowsGetPropertyEv
+__ZNK7WebCore26JSQuarantinedObjectWrapper18unwrappedExecStateEv
+__ZNK7WebCore24JSInspectedObjectWrapper17wrapOutgoingValueEPN3JSC9ExecStateENS1_7JSValueE
+__ZNK3WTF7HashMapIPN3JSC8JSObjectEPN7WebCore24JSInspectedObjectWrapperENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS9_IS6_EEE3getERK
+__ZNK7WebCore26JSQuarantinedObjectWrapper28transferExceptionToExecStateEPN3JSC9ExecStateE
+__ZN7WebCore26JSQuarantinedObjectWrapper17cachedValueGetterEPN3JSC9ExecStateERKNS1_10IdentifierERKNS1_12PropertySlotE
+__ZN7WebCore53jsInspectorControllerPrototypeFunctionIsWindowVisibleEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgList
+__ZN7WebCore53jsInspectorControllerPrototypeFunctionDebuggerEnabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgList
+__ZN7WebCore55jsInspectorControllerPrototypeFunctionPauseOnExceptionsEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZN7WebCore19InspectorController17pauseOnExceptionsEv
+__ZN7WebCore53jsInspectorControllerPrototypeFunctionProfilerEnabledEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgList
+__ZN7WebCore44jsInspectorControllerPrototypeFunctionLoadedEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19InspectorController17scriptObjectReadyEv
+__ZN7WebCore18ScriptGlobalObject3getEPN3JSC9ExecStateEPKcRNS_12ScriptObjectE
+__ZN7WebCore12ScriptObjectC1EPN3JSC8JSObjectE
+__ZN7WebCore12ScriptObjectC2EPN3JSC8JSObjectE
+__ZN7WebCore19InspectorController10showWindowEv
+__ZN7WebCore19InspectorController16setWindowVisibleEbb
+__ZN7WebCore19InspectorController17setAttachedWindowEb
+__ZN7WebCore18ScriptFunctionCallC1EPN3JSC9ExecStateERKNS_12ScriptObjectERKNS_6StringE
+__ZN7WebCore18ScriptFunctionCallC2EPN3JSC9ExecStateERKNS_12ScriptObjectERKNS_6StringE
+__ZN7WebCore18ScriptFunctionCall14appendArgumentEb
+__ZN7WebCore18ScriptFunctionCall4callEv
+__ZN7WebCore18ScriptFunctionCall4callERbb
+__ZN7WebCore44jsInspectorControllerPrototypeFunctionAttachEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19InspectorController12attachWindowEv
+__ZN7WebCore19InspectorController21populateScriptObjectsEv
+__ZN7WebCoreL18callSimpleFunctionEPN3JSC9ExecStateERKNS_12ScriptObjectEPKc
+__ZN7WebCore19InspectorController9showPanelENS0_13SpecialPanelsE
+__ZN7WebCore17InspectorResource18updateScriptObjectEPN3JSC9ExecStateE
+__ZN7WebCore19InspectorController18resetScriptObjectsEv
+__ZN7WebCore17InspectorResource19releaseScriptObjectEPN3JSC9ExecStateERKNS_12ScriptObjectEb
+__ZN7WebCore26JSQuarantinedObjectWrapper11getCallDataERN3JSC8CallDataE
+__ZNK7WebCore24JSInspectedObjectWrapper20allowsCallAsFunctionEv
+__ZN7WebCore26JSQuarantinedObjectWrapper4callEPN3JSC9ExecStateEPNS1_8JSObjectENS1_7JSValueERKNS1_7ArgListE
+__ZNK7WebCore24JSInspectedObjectWrapper20prepareIncomingValueEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore26JSQuarantinedObjectWrapper9asWrapperEN3JSC7JSValueE
+__ZNK7WebCore24JSInspectedObjectWrapper9classInfoEv
+__ZNK7WebCore26JSQuarantinedObjectWrapper25allowsUnwrappedAccessFromEPN3JSC9ExecStateE
+__ZN7WebCore26JSQuarantinedObjectWrapper15unwrappedObjectEv
+__ZNK7WebCore26JSInspectorCallbackWrapper9classInfoEv
+__ZN7WebCore17InspectorResource18createScriptObjectEPN3JSC9ExecStateERKNS_12ScriptObjectE
+__ZN7WebCoreL19createHeadersObjectEPN3JSC9ExecStateERKNS_13HTTPHeaderMapEb
+__ZN7WebCore12ScriptObject9createNewEPN3JSC9ExecStateE
+__ZN7WebCore12ScriptObject3setEPN3JSC9ExecStateERKNS_6StringES6_
+__ZN7WebCore18ScriptFunctionCall14appendArgumentERKNS_12ScriptObjectE
+__ZN7WebCore18ScriptFunctionCall14appendArgumentERKNS_6StringE
+__ZN7WebCore18ScriptFunctionCall14appendArgumentEx
+__ZN7WebCore18ScriptFunctionCall9constructERbb
+__ZN7WebCore12ScriptObject3setEPN3JSC9ExecStateEPKcRKNS_6StringE
+__ZN7WebCore12ScriptObject3setEPN3JSC9ExecStateEPKcx
+__ZN7WebCore12ScriptObject3setEPN3JSC9ExecStateEPKci
+__ZN7WebCore12ScriptObject3setEPN3JSC9ExecStateEPKcRKS0_
+__ZNK7WebCore17InspectorResource4typeEv
+__ZN7WebCore12ScriptObject3setEPN3JSC9ExecStateEPKcd
+__ZN7WebCore26getQuarantinedScriptObjectEPNS_9DOMWindowERNS_12ScriptObjectE
+__ZN7WebCore12ScriptObject3setEPN3JSC9ExecStateEPKcb
+__ZN7WebCore26JSQuarantinedObjectWrapper4markEv
+__ZN7WebCore24JSInspectedObjectWrapperD1Ev
+__ZN7WebCore24JSInspectedObjectWrapperD2Ev
+__ZN7WebCore26JSQuarantinedObjectWrapperD2Ev
+__ZNK7WebCore26JSQuarantinedObjectWrapper17allowsGetPropertyEv
+__ZNK7WebCore26JSInspectorCallbackWrapper20allowsCallAsFunctionEv
+__ZNK7WebCore26JSInspectorCallbackWrapper20prepareIncomingValueEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore26JSQuarantinedObjectWrapper3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE
+__ZNK7WebCore24JSInspectedObjectWrapper17allowsSetPropertyEv
+__ZN7WebCore36jsNodePrototypeFunctionHasAttributesEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore26JSQuarantinedObjectWrapper18getOwnPropertySlotEPN3JSC9ExecStateEjRNS1_12PropertySlotE
+__ZN7WebCore48jsElementPrototypeFunctionScrollIntoViewIfNeededEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Element22scrollIntoViewIfNeededEb
+__ZN7WebCore11jsAttrStyleEPN3JSC9ExecStateERKNS0_10IdentifierERKNS0_12PropertySlotE
+__ZNK7WebCore26JSInspectorCallbackWrapper17wrapOutgoingValueEPN3JSC9ExecStateENS1_7JSValueE
+__ZN7WebCore26JSInspectorCallbackWrapperD1Ev
+__ZN7WebCore26JSInspectorCallbackWrapperD2Ev
+__ZN7WebCore17InspectorResource12createCachedExPNS_14DocumentLoaderEPKNS_14CachedResourceE
+__ZN7WebCore14ConsoleMessage12addToConsoleEPN3JSC9ExecStateERKNS_12ScriptObjectE
+__ZN7WebCore18ScriptFunctionCall14appendArgumentEj
+__ZN7WebCore17InspectorResource22setXMLHttpResponseTextERKNS_12ScriptStringE
+__ZN7WebCore54jsInspectorControllerPrototypeFunctionHighlightDOMNodeEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
+__ZN7WebCore21JSInspectorController16highlightDOMNodeEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore19InspectorController9highlightEPNS_4NodeE
+__ZNK7WebCore19InspectorController17drawNodeHighlightERNS_15GraphicsContextE
+__ZN7WebCoreL19drawHighlightForBoxERNS_15GraphicsContextERKNS_9FloatQuadES4_S4_S4_
+__ZN7WebCoreL16drawOutlinedQuadERNS_15GraphicsContextERKNS_9FloatQuadERKNS_5ColorE
+__ZN7WebCoreL10quadToPathERKNS_9FloatQuadE
+__ZN7WebCore44jsInspectorControllerPrototypeFunctionDetachEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19InspectorController12detachWindowEv
+__ZN7WebCore56jsInspectorControllerPrototypeFunctionMoveByUnrestrictedEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgL
+__ZNK7WebCore19InspectorController12moveWindowByEff
+__ZN7WebCoreL24drawOutlinedQuadWithClipERNS_15GraphicsContextERKNS_9FloatQuadES4_RKNS_5ColorE
+__ZN7WebCore62jsInspectorControllerPrototypeFunctionAddResourceSourceToFrameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0
+__ZN7WebCore21JSInspectorController24addResourceSourceToFrameEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZNK7WebCore17InspectorResource12sourceStringEv
+__ZN7WebCore19InspectorController16addSourceToFrameERKNS_6StringES3_PNS_4NodeE
+__ZN7WebCore11FrameLoader5beginEv
+__ZN7WebCore22HTMLViewSourceDocument7addLinkERKNS_6StringEb
+__ZN7WebCore19createTextTokenizerEPNS_22HTMLViewSourceDocumentE
+__ZN7WebCore13TextTokenizerC1EPNS_22HTMLViewSourceDocumentE
+__ZN7WebCore13TextTokenizerC2EPNS_22HTMLViewSourceDocumentE
+__ZN7WebCore22HTMLViewSourceDocument17addViewSourceTextERKNS_6StringE
+__ZN7WebCore52jsInspectorControllerPrototypeFunctionEnableDebuggerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19InspectorController14enableDebuggerEv
+__ZN7WebCore21JavaScriptDebugServer11addListenerEPNS_23JavaScriptDebugListenerEPNS_4PageE
+__ZN3WTF7HashMapIPN7WebCore4PageEPNS_7HashSetIPNS1_23JavaScriptDebugListenerENS_7PtrHashIS6_EENS_10HashTraitsIS6_EEEENS7_IS3_EE
+__ZN3WTF7HashSetIPN7WebCore23JavaScriptDebugListenerENS_7PtrHashIS3_EENS_10HashTraitsIS3_EEE3addERKS3_
+__ZN3WTF9HashTableIPN7WebCore23JavaScriptDebugListenerES3_NS_17IdentityExtractorIS3_EENS_7PtrHashIS3_EENS_10HashTraitsIS3_EES9_
+__ZN7WebCore21JavaScriptDebugServer14didAddListenerEPNS_4PageE
+__ZN7WebCore4Page11setDebuggerEPN3JSC8DebuggerE
+__ZN7WebCore21JavaScriptDebugServer16clearBreakpointsEv
+__ZN3WTF20deleteAllPairSecondsIPNS_7HashSetIjNS_7IntHashIjEENS_10HashTraitsIjEEEEKNS_7HashMapIlS7_NS2_ImEENS4_IlEENS4_IS7_EEEEE
+__ZNK7WebCore25JSCanvasGradientPrototype9classInfoEv
+__ZNK7WebCore30JSInspectorControllerPrototype9classInfoEv
+__ZN3WTF7HashMapIPN3JSC14SourceProviderEPNS1_9ExecStateENS_7PtrHashIS3_EENS_10HashTraitsIS3_EENS8_IS5_EEE3addERKS3_RKS5_
+__ZN3WTF9HashTableIPN3JSC14SourceProviderESt4pairIS3_PNS1_9ExecStateEENS_18PairFirstExtractorIS7_EENS_7PtrHashIS3_EENS_14PairHa
+__ZN7WebCore21JavaScriptDebugServer12sourceParsedEPN3JSC9ExecStateERKNS1_10SourceCodeEiRKNS1_7UStringE
+__ZN7WebCoreL6toPageEPN3JSC14JSGlobalObjectE
+__ZNK3WTF7HashMapIPN7WebCore4PageEPNS_7HashSetIPNS1_23JavaScriptDebugListenerENS_7PtrHashIS6_EENS_10HashTraitsIS6_EEEENS7_IS3_E
+__ZN7WebCoreL22dispatchDidParseSourceERKN3WTF7HashSetIPNS_23JavaScriptDebugListenerENS0_7PtrHashIS3_EENS0_10HashTraitsIS3_EEEEP
+__ZN3WTF6VectorIPN7WebCore23JavaScriptDebugListenerELm0EE14expandCapacityEm
+__ZN3WTF6VectorIPN7WebCore23JavaScriptDebugListenerELm0EE15reserveCapacityEm
+__ZN7WebCore19InspectorController14didParseSourceEPN3JSC9ExecStateERKNS1_10SourceCodeE
+__ZN7WebCore18ScriptFunctionCall14appendArgumentERKN3JSC7UStringE
+__ZN7WebCore18ScriptFunctionCall14appendArgumentEi
+__ZN7WebCore54jsInspectorControllerPrototypeFunctionAddSourceToFrameEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLis
+__ZN7WebCore21JSInspectorController16addSourceToFrameEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore32jsConsolePrototypeFunctionAssertEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore7Console15assertConditionEbPNS_15ScriptCallStackE
+__ZN3WTF6VectorIPN7WebCore23JavaScriptDebugListenerELm0EE6shrinkEm
+__ZN7WebCore21JavaScriptDebugServer9callEventERKN3JSC17DebuggerCallFrameEli
+__ZN7WebCore19JavaScriptCallFrameC1ERKN3JSC17DebuggerCallFrameEN3WTF10PassRefPtrIS0_EEli
+__ZN7WebCore19JavaScriptCallFrameC2ERKN3JSC17DebuggerCallFrameEN3WTF10PassRefPtrIS0_EEli
+__ZN7WebCore21JavaScriptDebugServer13pauseIfNeededEPNS_4PageE
+__ZNK7WebCore21JavaScriptDebugServer13hasBreakpointElj
+__ZNK3WTF7HashMapIlPNS_7HashSetIjNS_7IntHashIjEENS_10HashTraitsIjEEEENS2_ImEENS4_IlEENS4_IS7_EEE3getERKl
+__ZN7WebCore21JavaScriptDebugServer11atStatementERKN3JSC17DebuggerCallFrameEli
+__ZN7WebCore21JavaScriptDebugServer11returnEventERKN3JSC17DebuggerCallFrameEli
+__ZN7WebCore19JavaScriptCallFrame6callerEv
+__ZN3WTF10RefCountedIN7WebCore19JavaScriptCallFrameEE5derefEv
+__ZN7WebCore21JavaScriptDebugServer18willExecuteProgramERKN3JSC17DebuggerCallFrameEli
+__ZN7WebCore21JavaScriptDebugServer17didExecuteProgramERKN3JSC17DebuggerCallFrameEli
+__ZN7WebCore46jsInspectorControllerPrototypeFunctionProfilesEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore21JSInspectorController8profilesEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore52jsInspectorControllerPrototypeFunctionEnableProfilerEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZNK7WebCore32JSHTMLOptionsCollectionPrototype9classInfoEv
+__ZN7WebCore21JavaScriptDebugServer15continueProgramEv
+__ZN7WebCore21JavaScriptDebugServer9exceptionERKN3JSC17DebuggerCallFrameEli
+__ZN7WebCore52jsInspectorControllerPrototypeFunctionStartProfilingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore51jsInspectorControllerPrototypeFunctionStopProfilingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgListE
+__ZN7WebCore19InspectorController26stopUserInitiatedProfilingEv
+__ZN7WebCore19InspectorController15disableDebuggerEv
+__ZN7WebCore21JavaScriptDebugServer14removeListenerEPNS_23JavaScriptDebugListenerEPNS_4PageE
+__ZN3WTF9HashTableIPN7WebCore4PageESt4pairIS3_PNS_7HashSetIPNS1_23JavaScriptDebugListenerENS_7PtrHashIS7_EENS_10HashTraitsIS7_E
+__ZN7WebCore21JavaScriptDebugServer17didRemoveListenerEPNS_4PageE
+__ZN7WebCore21JavaScriptDebugServer21didRemoveLastListenerEv
+__ZN7WebCore5Frame17setIsDisconnectedEb
+__ZN7WebCore19InspectorController11closeWindowEv
+__ZN7WebCoreL19getUniqueIdCallbackEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCore28setJSHTMLTableColElementSpanEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueE
+__ZN7WebCore19HTMLTableColElement7setSpanEi
+__ZN7WebCoreL12getTotalTimeEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCoreL7getHeadEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCoreL10getCallUIDEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCoreL9getParentEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCoreL11getSelfTimeEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCoreL16getNumberOfCallsEPK15OpaqueJSContextP13OpaqueJSValueP14OpaqueJSStringPPKS3_
+__ZN7WebCore53jsInspectorControllerPrototypeFunctionWindowUnloadingEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgList
+__ZN7WebCore11HistoryItem11setReferrerERKNS_6StringE
+-[DOMHTMLTextAreaElement form]
+-[DOMHTMLTextAreaElement(FormPromptAdditions) _isEdited]
+__Z4coreP22DOMHTMLTextAreaElement
+__ZN7WebCore4Page9goForwardEv
+__ZN7WebCoreL11scanForFormEPNS_4NodeE
+__ZN7WebCore3macERKNS_23AuthenticationChallengeE
+__ZN7WebCore14ResourceLoader33didReceiveAuthenticationChallengeEPNS_14ResourceHandleERKNS_23AuthenticationChallengeE
+__ZN7WebCore14ResourceLoader33didReceiveAuthenticationChallengeERKNS_23AuthenticationChallengeE
+__ZN7WebCore11FrameLoader33didReceiveAuthenticationChallengeEPNS_14ResourceLoaderERKNS_23AuthenticationChallengeE
+-[WebCoreResourceHandleAsDelegate useCredential:forAuthenticationChallenge:]
+__ZN3WTF6VectorIN7WebCore20StyleDashboardRegionELm0EE14shrinkCapacityEm
+__ZN3WTF6VectorIN7WebCore20StyleDashboardRegionELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore20StyleDashboardRegionELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore20StyleDashboardRegionELm0EE15reserveCapacityEm
+__ZN3WTF6VectorIN7WebCore20StyleDashboardRegionELm0EE6shrinkEm
+__ZNK3JSC8Bindings9ObjcField17valueFromInstanceEPNS_9ExecStateEPKNS0_8InstanceE
+__ZN7WebCore12RenderObject23collectDashboardRegionsERN3WTF6VectorINS_20DashboardRegionValueELm0EEE
+__ZN7WebCore12RenderObject19addDashboardRegionsERN3WTF6VectorINS_20DashboardRegionValueELm0EEE
+__ZN3WTF6VectorIN7WebCore20DashboardRegionValueELm0EE14expandCapacityEmPKS2_
+__ZN3WTF6VectorIN7WebCore20DashboardRegionValueELm0EE14expandCapacityEm
+__ZN3WTF6VectorIN7WebCore20DashboardRegionValueELm0EE15reserveCapacityEm
+__ZNK7WebCore8Document16dashboardRegionsEv
+__ZN3WTFeqIN7WebCore20DashboardRegionValueELm0EEEbRKNS_6VectorIT_XT0_EEES7_
+__ZN7WebCore8Document19setDashboardRegionsERKN3WTF6VectorINS_20DashboardRegionValueELm0EEE
+__ZN3WTF6VectorIN7WebCore20DashboardRegionValueELm0EEaSERKS3_
+__ZN3WTF6VectorIN7WebCore20DashboardRegionValueELm0EE14shrinkCapacityEm
+__ZN7WebCore5Frame26dashboardRegionsDictionaryEv
+-[WebDashboardRegion initWithRect:clip:type:]
+-[WebDashboardRegion dashboardRegionType]
+-[WebDashboardRegion dashboardRegionClip]
+-[WebDashboardRegion dashboardRegionRect]
+__ZN3WTF6VectorIN7WebCore20DashboardRegionValueELm0EE6shrinkEm
+__ZNK7WebCore16PDFDocumentImage23hasSingleSecurityOriginEv
+__ZN7WebCore11RenderStyle20noneDashboardRegionsEv
+__ZN3WTF6VectorIN7WebCore20StyleDashboardRegionELm0EEaSERKS3_
+__ZN7WebCore12RenderInline19addDashboardRegionsERN3WTF6VectorINS_20DashboardRegionValueELm0EEE
+__ZN3JSC8Bindings12ObjcInstance24setValueOfUndefinedFieldEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueE
+__ZN7WebCore10RenderView13absoluteRectsERN3WTF6VectorINS_7IntRectELm0EEEii
+__ZN7WebCoreL21printSourceURLAndLineERKNS_6StringEj
+__ZN7WebCoreL32printMessageSourceAndLevelPrefixENS_13MessageSourceENS_12MessageLevelE
+-[AccessibilityObjectWrapper position]
+__ZN7WebCore17SubresourceLoader33didReceiveAuthenticationChallengeERKNS_23AuthenticationChallengeE
+__ZThn16_N7WebCore24DocumentThreadableLoader33didReceiveAuthenticationChallengeEPNS_17SubresourceLoaderERKNS_23AuthenticationCh
+__ZN7WebCore24DocumentThreadableLoader33didReceiveAuthenticationChallengeEPNS_17SubresourceLoaderERKNS_23AuthenticationChalleng
+__ZN7WebCore57jsCanvasRenderingContext2DPrototypeFunctionSetStrokeColorEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7Arg
+__ZN7WebCore26JSCanvasRenderingContext2D14setStrokeColorEPN3JSC9ExecStateERKNS1_7ArgListE
+__ZN7WebCore24CanvasRenderingContext2D14setStrokeColorERKNS_6StringEf
+__ZN7WebCore11CanvasStyleC1ERKNS_6StringEf
+__ZN7WebCore11CanvasStyleC2ERKNS_6StringEf
+__ZN7WebCore55jsCanvasRenderingContext2DPrototypeFunctionSetLineWidthEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgLi
+__ZN7WebCore53jsCanvasRenderingContext2DPrototypeFunctionSetLineCapEPN3JSC9ExecStateEPNS0_8JSObjectENS0_7JSValueERKNS0_7ArgList
diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro
index 8559ebc..28ff4ae 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.pro
+++ b/src/3rdparty/webkit/WebCore/WebCore.pro
@@ -13,22 +13,35 @@ CONFIG(QTDIR_build) {
include($$QT_SOURCE_TREE/src/qbase.pri)
PRECOMPILED_HEADER = $$PWD/../WebKit/qt/WebKit_pch.h
DEFINES *= NDEBUG
+} else {
+ !static: DEFINES += QT_MAKEDLL
+
+ CONFIG(debug, debug|release) {
+ isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = generated$${QMAKE_DIR_SEP}debug
+ OBJECTS_DIR = obj/debug
+ } else { # Release
+ isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = generated$${QMAKE_DIR_SEP}release
+ OBJECTS_DIR = obj/release
+ }
+
+ DESTDIR = $$OUTPUT_DIR/lib
}
-isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = tmp
-GENERATED_SOURCES_DIR_SLASH = $$GENERATED_SOURCES_DIR/
-win32-*|wince*: GENERATED_SOURCES_DIR_SLASH ~= s|/|\|
-unix:QMAKE_PKGCONFIG_REQUIRES = QtCore QtDBus QtGui QtNetwork QtXml
+GENERATED_SOURCES_DIR_SLASH = $$GENERATED_SOURCES_DIR${QMAKE_DIR_SEP}
-!CONFIG(QTDIR_build) {
- OBJECTS_DIR = tmp
- DESTDIR = $$OUTPUT_DIR/lib
+unix {
+ QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtNetwork
+ lessThan(QT_MINOR_VERSION, 4): QMAKE_PKGCONFIG_REQUIRES += QtXml
}
include($$OUTPUT_DIR/config.pri)
CONFIG -= warn_on
*-g++*:QMAKE_CXXFLAGS += -Wreturn-type -fno-strict-aliasing
+
+unix:!mac:*-g++*:QMAKE_CXXFLAGS += -ffunction-sections -fdata-sections
+unix:!mac:*-g++*:QMAKE_LFLAGS += -Wl,--gc-sections
+
#QMAKE_CXXFLAGS += -Wall -Wno-undef -Wno-unused-parameter
CONFIG(release):!CONFIG(QTDIR_build) {
@@ -39,13 +52,6 @@ CONFIG(release):!CONFIG(QTDIR_build) {
linux-*: DEFINES += HAVE_STDINT_H
freebsd-*: DEFINES += HAVE_PTHREAD_NP_H
-# PRE-BUILD: make the required config.h file
-#config_h.target = config.h
-#config_h.commands = cp config.h.qmake config.h
-#config_h.depends = config.h.qmake
-#QMAKE_EXTRA_TARGETS += config_h
-#PRE_TARGETDEPS += config.h
-
DEFINES += BUILD_WEBKIT
win32-*: DEFINES += _HAS_TR1=0
@@ -78,58 +84,68 @@ CONFIG(QTDIR_build) {
# Optional components (look for defs in config.h and included files!)
-# turn off database support if we do not have sqlite3 support
-!CONFIG(QTDIR_build):win32-*:!exists( $${SQLITE3SRCDIR}/sqlite3.c ): DEFINES += ENABLE_DATABASE=0 ENABLE_ICONDATABASE=0 ENABLE_OFFLINE_WEB_APPLICATIONS=0 ENABLE_DOM_STORAGE=0
+contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
+ DEFINES+=ENABLE_DATABASE=0 ENABLE_DOM_STORAGE=0 ENABLE_ICONDATABASE=0 ENABLE_WORKERS=0
+}
+
+# turn off SQLITE support if we do not have sqlite3 available
+!CONFIG(QTDIR_build):win32-*:!exists( $${SQLITE3SRCDIR}/sqlite3.c ): DEFINES += ENABLE_SQLITE=0 ENABLE_DATABASE=0 ENABLE_ICONDATABASE=0 ENABLE_OFFLINE_WEB_APPLICATIONS=0 ENABLE_DOM_STORAGE=0
+!contains(DEFINES, ENABLE_JAVASCRIPT_DEBUGGER=.): DEFINES += ENABLE_JAVASCRIPT_DEBUGGER=1
+!contains(DEFINES, ENABLE_DATABASE=.): DEFINES += ENABLE_DATABASE=1
!contains(DEFINES, ENABLE_OFFLINE_WEB_APPLICATIONS=.): DEFINES += ENABLE_OFFLINE_WEB_APPLICATIONS=1
!contains(DEFINES, ENABLE_DOM_STORAGE=.): DEFINES += ENABLE_DOM_STORAGE=1
!contains(DEFINES, ENABLE_ICONDATABASE=.): DEFINES += ENABLE_ICONDATABASE=1
-# turn on database support if any of the dependent features are turned on
-!contains(DEFINES, ENABLE_DATABASE=1) {
- contains(DEFINES, ENABLE_ICONDATABASE=1)|contains(DEFINES, ENABLE_DOM_STORAGE=1)|contains(DEFINES, ENABLE_OFFLINE_WEB_APPLICATIONS=1) {
- DEFINES += ENABLE_DATABASE=1
+# turn on SQLITE support if any of the dependent features are turned on
+!contains(DEFINES, ENABLE_SQLITE=.) {
+ contains(DEFINES, ENABLE_DATABASE=1)|contains(DEFINES, ENABLE_ICONDATABASE=1)|contains(DEFINES, ENABLE_DOM_STORAGE=1)|contains(DEFINES, ENABLE_OFFLINE_WEB_APPLICATIONS=1) {
+ DEFINES += ENABLE_SQLITE=1
+ } else {
+ DEFINES += ENABLE_SQLITE=0
}
}
-# if database support is not on by now, turn it off
-!contains(DEFINES, ENABLE_DATABASE=.): DEFINES += ENABLE_DATABASE=0
-
!contains(DEFINES, ENABLE_DASHBOARD_SUPPORT=.): DEFINES += ENABLE_DASHBOARD_SUPPORT=0
+!contains(DEFINES, ENABLE_FILTERS=.): DEFINES += ENABLE_FILTERS=0
!contains(DEFINES, ENABLE_XPATH=.): DEFINES += ENABLE_XPATH=1
+!contains(DEFINES, ENABLE_XSLT=.): DEFINES += ENABLE_XSLT=0
#!contains(DEFINES, ENABLE_XBL=.): DEFINES += ENABLE_XBL=1
!contains(DEFINES, ENABLE_WML=.): DEFINES += ENABLE_WML=0
-!contains(DEFINES, ENABLE_SVG=.): DEFINES += ENABLE_SVG=1
-!contains(DEFINES, ENABLE_SVG_FONTS=.): DEFINES += ENABLE_SVG_FONTS=1
-!contains(DEFINES, ENABLE_SVG_FILTERS=.): DEFINES += ENABLE_SVG_FILTERS=1
-!contains(DEFINES, ENABLE_SVG_FOREIGN_OBJECT=.): DEFINES += ENABLE_SVG_FOREIGN_OBJECT=1
-!contains(DEFINES, ENABLE_SVG_ANIMATION=.): DEFINES += ENABLE_SVG_ANIMATION=1
-!contains(DEFINES, ENABLE_SVG_AS_IMAGE=.): DEFINES += ENABLE_SVG_AS_IMAGE=1
-!contains(DEFINES, ENABLE_SVG_USE=.): DEFINES += ENABLE_SVG_USE=1
+!contains(DEFINES, ENABLE_WORKERS=.): DEFINES += ENABLE_WORKERS=1
+!contains(DEFINES, ENABLE_XHTMLMP=.): DEFINES += ENABLE_XHTMLMP=0
+
+# SVG support
+!contains(DEFINES, ENABLE_SVG=0) {
+ !contains(DEFINES, ENABLE_SVG=.): DEFINES += ENABLE_SVG=1
+ !contains(DEFINES, ENABLE_SVG_FONTS=.): DEFINES += ENABLE_SVG_FONTS=1
+ !contains(DEFINES, ENABLE_SVG_FOREIGN_OBJECT=.): DEFINES += ENABLE_SVG_FOREIGN_OBJECT=1
+ !contains(DEFINES, ENABLE_SVG_ANIMATION=.): DEFINES += ENABLE_SVG_ANIMATION=1
+ !contains(DEFINES, ENABLE_SVG_AS_IMAGE=.): DEFINES += ENABLE_SVG_AS_IMAGE=1
+ !contains(DEFINES, ENABLE_SVG_USE=.): DEFINES += ENABLE_SVG_USE=1
+} else {
+ DEFINES += ENABLE_SVG_FONTS=0 ENABLE_SVG_FOREIGN_OBJECT=0 ENABLE_SVG_ANIMATION=0 ENABLE_SVG_AS_IMAGE=0 ENABLE_SVG_USE=0
+}
# HTML5 media support
-contains(QT_CONFIG, phonon):DEFINES += ENABLE_VIDEO=1
-else:DEFINES += ENABLE_VIDEO=0
+!contains(DEFINES, ENABLE_VIDEO=.) {
+ contains(QT_CONFIG, phonon):DEFINES += ENABLE_VIDEO=1
+ else:DEFINES += ENABLE_VIDEO=0
+}
# Nescape plugins support (NPAPI)
-unix|win32-*:!embedded:!wince*:!symbian {
- DEFINES += ENABLE_NETSCAPE_PLUGIN_API=1
-} else {
- DEFINES += ENABLE_NETSCAPE_PLUGIN_API=0
+!contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=.) {
+ unix|win32-*:!embedded:!wince*:!symbian {
+ DEFINES += ENABLE_NETSCAPE_PLUGIN_API=1
+ } else {
+ DEFINES += ENABLE_NETSCAPE_PLUGIN_API=0
+ }
}
DEFINES += WTF_USE_JAVASCRIPTCORE_BINDINGS=1 WTF_CHANGES=1
-INCLUDEPATH += $$PWD $$PWD/../JavaScriptCore $$PWD/../JavaScriptCore/ForwardingHeaders \
- $$PWD/../JavaScriptCore/interpreter \
- $$PWD/../JavaScriptCore/bytecode \
- $$PWD/../JavaScriptCore/debugger \
- $$PWD/../JavaScriptCore/parser \
- $$PWD/../JavaScriptCore/runtime \
- $$PWD/../JavaScriptCore/bindings \
- $$PWD/../JavaScriptCore/wrec \
- $$PWD/../JavaScriptCore/jit \
- $$PWD/../JavaScriptCore/wtf \
+# Ensure that we pick up WebCore's config.h over JavaScriptCore's
+INCLUDEPATH = $$PWD $$INCLUDEPATH
include($$PWD/../JavaScriptCore/JavaScriptCore.pri)
@@ -142,21 +158,16 @@ INCLUDEPATH += \
$$PWD/platform/graphics/filters \
$$PWD/platform/graphics/transforms \
$$PWD/platform/graphics/qt \
- $$PWD/svg/graphics/qt \
- $$PWD/loader \
$$PWD/page/qt \
$$PWD/../WebKit/qt/WebCoreSupport \
- $$PWD/../WebKit/qt/Api \
- $$PWD/bridge/qt
# Make sure storage/ appears before JavaScriptCore/. Both provide LocalStorage.h
# but the header from the former include path is included across directories while
# LocalStorage.h is included only from files within the same directory
INCLUDEPATH = $$PWD/storage $$INCLUDEPATH
-INCLUDEPATH += $$PWD \
+INCLUDEPATH += $$PWD/accessibility \
$$PWD/ForwardingHeaders \
- $$PWD/.. \
$$PWD/platform \
$$PWD/platform/animation \
$$PWD/platform/network \
@@ -174,7 +185,6 @@ INCLUDEPATH += $$PWD \
$$PWD/dom \
$$PWD/page \
$$PWD/page/animation \
- $$PWD/bridge \
$$PWD/editing \
$$PWD/rendering \
$$PWD/rendering/style \
@@ -183,14 +193,15 @@ INCLUDEPATH += $$PWD \
$$PWD/xml \
$$PWD/html \
$$PWD/wml \
+ $$PWD/workers \
$$PWD/bindings/js \
$$PWD/svg \
$$PWD/platform/image-decoders \
$$PWD/plugins \
$$PWD/bridge \
$$PWD/bridge/c \
- $$PWD/bridge/qt \
- $$GENERATED_SOURCES_DIR
+ $$PWD/bridge/qt
+INCLUDEPATH *= $$GENERATED_SOURCES_DIR
QT += network
lessThan(QT_MINOR_VERSION, 4): QT += xml
@@ -259,9 +270,12 @@ IDL_BINDINGS += \
css/StyleSheetList.idl \
css/WebKitCSSKeyframeRule.idl \
css/WebKitCSSKeyframesRule.idl \
+ css/WebKitCSSMatrix.idl \
css/WebKitCSSTransformValue.idl \
dom/Attr.idl \
dom/CharacterData.idl \
+ dom/ClientRect.idl \
+ dom/ClientRectList.idl \
dom/Clipboard.idl \
dom/CDATASection.idl \
dom/Comment.idl \
@@ -278,7 +292,6 @@ IDL_BINDINGS += \
dom/EventException.idl \
# dom/EventListener.idl \
# dom/EventTarget.idl \
- dom/EventTargetNode.idl \
dom/KeyboardEvent.idl \
dom/MouseEvent.idl \
dom/MessageChannel.idl \
@@ -303,14 +316,12 @@ IDL_BINDINGS += \
dom/WebKitAnimationEvent.idl \
dom/WebKitTransitionEvent.idl \
dom/WheelEvent.idl \
- dom/Worker.idl \
- dom/WorkerContext.idl \
- dom/WorkerLocation.idl \
html/CanvasGradient.idl \
html/CanvasPattern.idl \
html/CanvasRenderingContext2D.idl \
html/File.idl \
html/FileList.idl \
+ html/HTMLAudioElement.idl \
html/HTMLAnchorElement.idl \
html/HTMLAppletElement.idl \
html/HTMLAreaElement.idl \
@@ -347,6 +358,7 @@ IDL_BINDINGS += \
html/HTMLLinkElement.idl \
html/HTMLMapElement.idl \
html/HTMLMarqueeElement.idl \
+ html/HTMLMediaElement.idl \
html/HTMLMenuElement.idl \
html/HTMLMetaElement.idl \
html/HTMLModElement.idl \
@@ -361,6 +373,7 @@ IDL_BINDINGS += \
html/HTMLQuoteElement.idl \
html/HTMLScriptElement.idl \
html/HTMLSelectElement.idl \
+ html/HTMLSourceElement.idl \
html/HTMLStyleElement.idl \
html/HTMLTableCaptionElement.idl \
html/HTMLTableCellElement.idl \
@@ -371,11 +384,15 @@ IDL_BINDINGS += \
html/HTMLTextAreaElement.idl \
html/HTMLTitleElement.idl \
html/HTMLUListElement.idl \
+ html/HTMLVideoElement.idl \
html/ImageData.idl \
+ html/MediaError.idl \
html/TextMetrics.idl \
- inspector/JavaScriptCallFrame.idl \
+ html/VoidCallback.idl \
+ inspector/InspectorController.idl \
page/BarInfo.idl \
page/Console.idl \
+ page/Coordinates.idl \
page/DOMSelection.idl \
page/DOMWindow.idl \
page/Geolocation.idl \
@@ -385,7 +402,7 @@ IDL_BINDINGS += \
page/Navigator.idl \
page/PositionError.idl \
page/Screen.idl \
- page/WorkerNavigator.idl \
+ page/WebKitPoint.idl \
plugins/Plugin.idl \
plugins/MimeType.idl \
plugins/PluginArray.idl \
@@ -395,20 +412,35 @@ IDL_BINDINGS += \
xml/XMLHttpRequestException.idl \
xml/XMLHttpRequestProgressEvent.idl \
xml/XMLHttpRequestUpload.idl \
- xml/XMLSerializer.idl \
- xml/XSLTProcessor.idl
+ xml/XMLSerializer.idl
SOURCES += \
- bindings/js/DOMTimer.cpp \
+ accessibility/AccessibilityImageMapLink.cpp \
+ accessibility/AccessibilityObject.cpp \
+ accessibility/AccessibilityList.cpp \
+ accessibility/AccessibilityListBox.cpp \
+ accessibility/AccessibilityListBoxOption.cpp \
+ accessibility/AccessibilityRenderObject.cpp \
+ accessibility/AccessibilityARIAGrid.cpp \
+ accessibility/AccessibilityARIAGridCell.cpp \
+ accessibility/AccessibilityARIAGridRow.cpp \
+ accessibility/AccessibilityTable.cpp \
+ accessibility/AccessibilityTableCell.cpp \
+ accessibility/AccessibilityTableColumn.cpp \
+ accessibility/AccessibilityTableHeaderContainer.cpp \
+ accessibility/AccessibilityTableRow.cpp \
+ accessibility/AXObjectCache.cpp \
bindings/js/GCController.cpp \
bindings/js/JSAttrCustom.cpp \
+ bindings/js/JSCDATASectionCustom.cpp \
bindings/js/JSCanvasRenderingContext2DCustom.cpp \
bindings/js/JSClipboardCustom.cpp \
bindings/js/JSConsoleCustom.cpp \
bindings/js/JSCSSRuleCustom.cpp \
bindings/js/JSCSSStyleDeclarationCustom.cpp \
bindings/js/JSCSSValueCustom.cpp \
+ bindings/js/JSCoordinatesCustom.cpp \
bindings/js/JSCustomPositionCallback.cpp \
bindings/js/JSCustomPositionErrorCallback.cpp \
bindings/js/JSCustomVoidCallback.cpp \
@@ -423,11 +455,9 @@ SOURCES += \
bindings/js/JSElementCustom.cpp \
bindings/js/JSEventCustom.cpp \
bindings/js/JSEventTarget.cpp \
- bindings/js/JSEventTargetNodeCustom.cpp \
bindings/js/JSGeolocationCustom.cpp \
bindings/js/JSHTMLAllCollection.cpp \
bindings/js/JSHistoryCustom.cpp \
- bindings/js/JSJavaScriptCallFrameCustom.cpp \
bindings/js/JSHTMLAppletElementCustom.cpp \
bindings/js/JSHTMLCollectionCustom.cpp \
bindings/js/JSHTMLDocumentCustom.cpp \
@@ -445,6 +475,7 @@ SOURCES += \
bindings/js/JSImageDataCustom.cpp \
bindings/js/JSInspectedObjectWrapper.cpp \
bindings/js/JSInspectorCallbackWrapper.cpp \
+ bindings/js/JSInspectorControllerCustom.cpp \
bindings/js/JSLocationCustom.cpp \
bindings/js/JSNamedNodeMapCustom.cpp \
bindings/js/JSNamedNodesCollection.cpp \
@@ -459,12 +490,13 @@ SOURCES += \
bindings/js/JSRGBColor.cpp \
bindings/js/JSStyleSheetCustom.cpp \
bindings/js/JSStyleSheetListCustom.cpp \
+ bindings/js/JSTextCustom.cpp \
bindings/js/JSTreeWalkerCustom.cpp \
+ bindings/js/JSWebKitCSSMatrixConstructor.cpp \
+ bindings/js/JSWebKitPointConstructor.cpp \
bindings/js/JSXMLHttpRequestConstructor.cpp \
bindings/js/JSXMLHttpRequestCustom.cpp \
bindings/js/JSXMLHttpRequestUploadCustom.cpp \
- bindings/js/JSXSLTProcessorConstructor.cpp \
- bindings/js/JSXSLTProcessorCustom.cpp \
bindings/js/JSPluginCustom.cpp \
bindings/js/JSPluginArrayCustom.cpp \
bindings/js/JSMessageChannelConstructor.cpp \
@@ -473,13 +505,20 @@ SOURCES += \
bindings/js/JSMimeTypeArrayCustom.cpp \
bindings/js/JSDOMBinding.cpp \
bindings/js/JSEventListener.cpp \
+ bindings/js/JSLazyEventListener.cpp \
bindings/js/JSPluginElementFunctions.cpp \
- bindings/js/ScriptCachedPageData.cpp \
+ bindings/js/ScriptCachedFrameData.cpp \
bindings/js/ScriptCallFrame.cpp \
bindings/js/ScriptCallStack.cpp \
bindings/js/ScriptController.cpp \
+ bindings/js/ScriptEventListener.cpp \
+ bindings/js/ScriptFunctionCall.cpp \
+ bindings/js/ScriptObject.cpp \
+ bindings/js/ScriptObjectQuarantine.cpp \
+ bindings/js/ScriptState.cpp \
bindings/js/ScriptValue.cpp \
bindings/js/ScheduledAction.cpp \
+ bridge/IdentifierRep.cpp \
bridge/NP_jsobject.cpp \
bridge/npruntime.cpp \
bridge/runtime_array.cpp \
@@ -516,6 +555,7 @@ SOURCES += \
css/CSSParserValues.cpp \
css/CSSPrimitiveValue.cpp \
css/CSSProperty.cpp \
+ css/CSSPropertyLonghand.cpp \
css/CSSReflectValue.cpp \
css/CSSRule.cpp \
css/CSSRuleList.cpp \
@@ -546,6 +586,7 @@ SOURCES += \
css/StyleSheetList.cpp \
css/WebKitCSSKeyframeRule.cpp \
css/WebKitCSSKeyframesRule.cpp \
+ css/WebKitCSSMatrix.cpp \
css/WebKitCSSTransformValue.cpp \
dom/ActiveDOMObject.cpp \
dom/Attr.cpp \
@@ -554,9 +595,12 @@ SOURCES += \
dom/BeforeUnloadEvent.cpp \
dom/CDATASection.cpp \
dom/CharacterData.cpp \
+ dom/CheckedRadioButtons.cpp \
dom/ChildNodeList.cpp \
dom/ClassNames.cpp \
dom/ClassNodeList.cpp \
+ dom/ClientRect.cpp \
+ dom/ClientRectList.cpp \
dom/Clipboard.cpp \
dom/ClipboardEvent.cpp \
dom/Comment.cpp \
@@ -575,9 +619,9 @@ SOURCES += \
dom/Event.cpp \
dom/EventNames.cpp \
dom/EventTarget.cpp \
- dom/EventTargetNode.cpp \
dom/ExceptionBase.cpp \
dom/ExceptionCode.cpp \
+ dom/InputElement.cpp \
dom/KeyboardEvent.cpp \
dom/MappedAttribute.cpp \
dom/MessageChannel.cpp \
@@ -594,6 +638,8 @@ SOURCES += \
dom/NodeFilter.cpp \
dom/NodeIterator.cpp \
dom/Notation.cpp \
+ dom/OptionGroupElement.cpp \
+ dom/OptionElement.cpp \
dom/OverflowEvent.cpp \
dom/Position.cpp \
dom/PositionIterator.cpp \
@@ -604,6 +650,7 @@ SOURCES += \
dom/RegisteredEventListener.cpp \
dom/ScriptElement.cpp \
dom/ScriptExecutionContext.cpp \
+ dom/SelectElement.cpp \
dom/SelectorNodeList.cpp \
dom/StaticNodeList.cpp \
dom/StaticStringList.cpp \
@@ -621,6 +668,7 @@ SOURCES += \
dom/WheelEvent.cpp \
dom/XMLTokenizer.cpp \
dom/XMLTokenizerQt.cpp \
+ dom/XMLTokenizerScope.cpp \
editing/AppendNodeCommand.cpp \
editing/ApplyStyleCommand.cpp \
editing/BreakBlockquoteCommand.cpp \
@@ -650,12 +698,11 @@ SOURCES += \
editing/MoveSelectionCommand.cpp \
editing/RemoveCSSPropertyCommand.cpp \
editing/RemoveFormatCommand.cpp \
- editing/RemoveNodeAttributeCommand.cpp \
editing/RemoveNodeCommand.cpp \
editing/RemoveNodePreservingChildrenCommand.cpp \
+ editing/ReplaceNodeWithSpanCommand.cpp \
editing/ReplaceSelectionCommand.cpp \
editing/SelectionController.cpp \
- editing/Selection.cpp \
editing/SetNodeAttributeCommand.cpp \
editing/SmartReplace.cpp \
editing/SmartReplaceICU.cpp \
@@ -666,16 +713,20 @@ SOURCES += \
editing/TypingCommand.cpp \
editing/UnlinkCommand.cpp \
editing/VisiblePosition.cpp \
+ editing/VisibleSelection.cpp \
editing/visible_units.cpp \
editing/WrapContentsInDummySpanCommand.cpp \
history/BackForwardList.cpp \
+ history/CachedFrame.cpp \
history/CachedPage.cpp \
history/HistoryItem.cpp \
history/PageCache.cpp \
html/CanvasGradient.cpp \
html/CanvasPattern.cpp \
+ html/CanvasPixelArray.cpp \
html/CanvasRenderingContext2D.cpp \
html/CanvasStyle.cpp \
+ html/CollectionCache.cpp \
html/File.cpp \
html/FileList.cpp \
html/FormDataList.cpp \
@@ -695,7 +746,6 @@ SOURCES += \
html/HTMLDListElement.cpp \
html/HTMLDocument.cpp \
html/HTMLElement.cpp \
- html/HTMLElementFactory.cpp \
html/HTMLEmbedElement.cpp \
html/HTMLFieldSetElement.cpp \
html/HTMLFontElement.cpp \
@@ -740,6 +790,7 @@ SOURCES += \
html/HTMLPreElement.cpp \
html/HTMLQuoteElement.cpp \
html/HTMLScriptElement.cpp \
+ html/HTMLNoScriptElement.cpp \
html/HTMLSelectElement.cpp \
html/HTMLStyleElement.cpp \
html/HTMLTableCaptionElement.cpp \
@@ -757,11 +808,13 @@ SOURCES += \
html/HTMLViewSourceDocument.cpp \
html/ImageData.cpp \
html/PreloadScanner.cpp \
+ inspector/ConsoleMessage.cpp \
+ inspector/InspectorDatabaseResource.cpp \
+ inspector/InspectorDOMStorageResource.cpp \
inspector/InspectorController.cpp \
- inspector/JavaScriptCallFrame.cpp \
- inspector/JavaScriptDebugServer.cpp \
- inspector/JavaScriptProfile.cpp \
- inspector/JavaScriptProfileNode.cpp \
+ inspector/InspectorFrontend.cpp \
+ inspector/InspectorResource.cpp \
+ inspector/JSONObject.cpp \
loader/archive/ArchiveFactory.cpp \
loader/archive/ArchiveResource.cpp \
loader/archive/ArchiveResourceCollection.cpp \
@@ -775,11 +828,13 @@ SOURCES += \
loader/CachedResource.cpp \
loader/CachedScript.cpp \
loader/CachedXSLStyleSheet.cpp \
+ loader/CrossOriginAccessControl.cpp \
+ loader/CrossOriginPreflightResultCache.cpp \
loader/DocLoader.cpp \
loader/DocumentLoader.cpp \
+ loader/DocumentThreadableLoader.cpp \
loader/FormState.cpp \
loader/FrameLoader.cpp \
- loader/FrameLoaderClient.cpp \
loader/FTPDirectoryDocument.cpp \
loader/FTPDirectoryParser.cpp \
loader/icon/IconLoader.cpp \
@@ -797,28 +852,19 @@ SOURCES += \
loader/SubresourceLoader.cpp \
loader/TextDocument.cpp \
loader/TextResourceDecoder.cpp \
- page/AccessibilityImageMapLink.cpp \
- page/AccessibilityObject.cpp \
- page/AccessibilityList.cpp \
- page/AccessibilityListBox.cpp \
- page/AccessibilityListBoxOption.cpp \
- page/AccessibilityRenderObject.cpp \
- page/AccessibilityTable.cpp \
- page/AccessibilityTableCell.cpp \
- page/AccessibilityTableColumn.cpp \
- page/AccessibilityTableHeaderContainer.cpp \
- page/AccessibilityTableRow.cpp \
+ loader/ThreadableLoader.cpp \
page/animation/AnimationBase.cpp \
page/animation/AnimationController.cpp \
page/animation/CompositeAnimation.cpp \
page/animation/ImplicitAnimation.cpp \
page/animation/KeyframeAnimation.cpp \
- page/AXObjectCache.cpp \
page/BarInfo.cpp \
page/Chrome.cpp \
page/Console.cpp \
page/ContextMenuController.cpp \
+ page/Coordinates.cpp \
page/DOMSelection.cpp \
+ page/DOMTimer.cpp \
page/DOMWindow.cpp \
page/Navigator.cpp \
page/NavigatorBase.cpp \
@@ -835,6 +881,7 @@ SOURCES += \
page/MouseEventWithHitTestResults.cpp \
page/Page.cpp \
page/PageGroup.cpp \
+ page/PageGroupLoadDeferrer.cpp \
page/PrintContext.cpp \
page/SecurityOrigin.cpp \
page/Screen.cpp \
@@ -852,7 +899,9 @@ SOURCES += \
platform/text/AtomicString.cpp \
platform/text/Base64.cpp \
platform/text/BidiContext.cpp \
+ platform/ContentType.cpp \
platform/ContextMenu.cpp \
+ platform/CrossThreadCopier.cpp \
platform/text/CString.cpp \
platform/DeprecatedPtrListImpl.cpp \
platform/DragData.cpp \
@@ -884,6 +933,8 @@ SOURCES += \
platform/graphics/SimpleFontData.cpp \
platform/graphics/transforms/TransformationMatrix.cpp \
platform/graphics/transforms/MatrixTransformOperation.cpp \
+ platform/graphics/transforms/Matrix3DTransformOperation.cpp \
+ platform/graphics/transforms/PerspectiveTransformOperation.cpp \
platform/graphics/transforms/RotateTransformOperation.cpp \
platform/graphics/transforms/ScaleTransformOperation.cpp \
platform/graphics/transforms/SkewTransformOperation.cpp \
@@ -898,6 +949,7 @@ SOURCES += \
platform/network/Credential.cpp \
platform/network/FormData.cpp \
platform/network/FormDataBuilder.cpp \
+ platform/network/HTTPHeaderMap.cpp \
platform/network/HTTPParsers.cpp \
platform/network/NetworkStateNotifier.cpp \
platform/network/ProtectionSpace.cpp \
@@ -919,11 +971,12 @@ SOURCES += \
platform/text/TextCodecLatin1.cpp \
platform/text/TextCodecUserDefined.cpp \
platform/text/TextCodecUTF16.cpp \
- platform/text/TextDecoder.cpp \
platform/text/TextEncoding.cpp \
+ platform/text/TextEncodingDetectorNone.cpp \
platform/text/TextEncodingRegistry.cpp \
platform/text/TextStream.cpp \
platform/ThreadGlobalData.cpp \
+ platform/ThreadTimers.cpp \
platform/Timer.cpp \
platform/text/UnicodeRange.cpp \
platform/Widget.cpp \
@@ -943,19 +996,17 @@ SOURCES += \
rendering/InlineFlowBox.cpp \
rendering/InlineTextBox.cpp \
rendering/LayoutState.cpp \
- rendering/ListMarkerBox.cpp \
rendering/RenderApplet.cpp \
rendering/RenderArena.cpp \
rendering/RenderBlock.cpp \
rendering/RenderBox.cpp \
+ rendering/RenderBoxModelObject.cpp \
rendering/RenderBR.cpp \
rendering/RenderButton.cpp \
- rendering/RenderContainer.cpp \
rendering/RenderCounter.cpp \
rendering/RenderFieldset.cpp \
rendering/RenderFileUploadControl.cpp \
rendering/RenderFlexibleBox.cpp \
- rendering/RenderFlow.cpp \
rendering/RenderFrame.cpp \
rendering/RenderFrameSet.cpp \
rendering/RenderHTMLCanvas.cpp \
@@ -963,13 +1014,14 @@ SOURCES += \
rendering/RenderImageGeneratedContent.cpp \
rendering/RenderInline.cpp \
rendering/RenderLayer.cpp \
- rendering/RenderLegend.cpp \
+ rendering/RenderLineBoxList.cpp \
rendering/RenderListBox.cpp \
rendering/RenderListItem.cpp \
rendering/RenderListMarker.cpp \
rendering/RenderMarquee.cpp \
rendering/RenderMenuList.cpp \
rendering/RenderObject.cpp \
+ rendering/RenderObjectChildList.cpp \
rendering/RenderPart.cpp \
rendering/RenderPartObject.cpp \
rendering/RenderReplaced.cpp \
@@ -978,15 +1030,15 @@ SOURCES += \
rendering/RenderScrollbarPart.cpp \
rendering/RenderScrollbarTheme.cpp \
rendering/RenderSlider.cpp \
+ rendering/RenderTable.cpp \
rendering/RenderTableCell.cpp \
rendering/RenderTableCol.cpp \
- rendering/RenderTable.cpp \
rendering/RenderTableRow.cpp \
rendering/RenderTableSection.cpp \
+ rendering/RenderText.cpp \
rendering/RenderTextControl.cpp \
rendering/RenderTextControlMultiLine.cpp \
rendering/RenderTextControlSingleLine.cpp \
- rendering/RenderText.cpp \
rendering/RenderTextFragment.cpp \
rendering/RenderTheme.cpp \
rendering/RenderTreeAsText.cpp \
@@ -995,7 +1047,9 @@ SOURCES += \
rendering/RenderWordBreak.cpp \
rendering/RootInlineBox.cpp \
rendering/SVGRenderTreeAsText.cpp \
+ rendering/ScrollBehavior.cpp \
rendering/TextControlInnerElements.cpp \
+ rendering/TransformState.cpp \
rendering/style/BindingURI.cpp \
rendering/style/ContentData.cpp \
rendering/style/CounterDirectives.cpp \
@@ -1018,35 +1072,13 @@ SOURCES += \
rendering/style/StyleTransformData.cpp \
rendering/style/StyleVisualData.cpp \
xml/DOMParser.cpp \
- xml/NativeXPathNSResolver.cpp \
xml/XMLHttpRequest.cpp \
xml/XMLHttpRequestUpload.cpp \
- xml/XMLSerializer.cpp \
- xml/XPathEvaluator.cpp \
- xml/XPathExpression.cpp \
- xml/XPathExpressionNode.cpp \
- xml/XPathFunctions.cpp \
- xml/XPathNamespace.cpp \
- xml/XPathNodeSet.cpp \
- xml/XPathNSResolver.cpp \
- xml/XPathParser.cpp \
- xml/XPathPath.cpp \
- xml/XPathPredicate.cpp \
- xml/XPathResult.cpp \
- xml/XPathStep.cpp \
- xml/XPathUtil.cpp \
- xml/XPathValue.cpp \
- xml/XPathVariableReference.cpp \
- xml/XSLImportRule.cpp \
- xml/XSLStyleSheet.cpp \
- xml/XSLTExtensions.cpp \
- xml/XSLTUnicodeSort.cpp \
- xml/XSLTProcessor.cpp
+ xml/XMLSerializer.cpp
HEADERS += \
$$PWD/platform/graphics/qt/StillImageQt.h \
$$PWD/platform/qt/QWebPopup.h \
- $$PWD/platform/qt/MenuEventProxy.h \
$$PWD/../WebKit/qt/Api/qwebpluginfactory.h \
$$PWD/../WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h \
$$PWD/platform/network/qt/QNetworkReplyHandler.h \
@@ -1061,11 +1093,11 @@ HEADERS += \
SOURCES += \
+ accessibility/qt/AccessibilityObjectQt.cpp \
bindings/js/ScriptControllerQt.cpp \
bridge/qt/qt_class.cpp \
bridge/qt/qt_instance.cpp \
bridge/qt/qt_runtime.cpp \
- page/qt/AccessibilityObjectQt.cpp \
page/qt/DragControllerQt.cpp \
page/qt/EventHandlerQt.cpp \
page/qt/FrameQt.cpp \
@@ -1144,6 +1176,7 @@ SOURCES += \
../WebKit/qt/Api/qwebframe.cpp \
../WebKit/qt/Api/qwebpage.cpp \
../WebKit/qt/Api/qwebview.cpp \
+ ../WebKit/qt/Api/qwebelement.cpp \
../WebKit/qt/Api/qwebhistory.cpp \
../WebKit/qt/Api/qwebsettings.cpp \
../WebKit/qt/Api/qwebhistoryinterface.cpp \
@@ -1153,7 +1186,6 @@ SOURCES += \
win32-*|wince*: SOURCES += platform/win/SystemTimeWin.cpp
- else: SOURCES += platform/qt/SystemTimeQt.cpp
mac {
SOURCES += \
@@ -1187,6 +1219,8 @@ contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=1) {
SOURCES += plugins/npapi.cpp
unix {
+ DEFINES += ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH=1
+
mac {
SOURCES += \
plugins/mac/PluginPackageMac.cpp \
@@ -1199,8 +1233,11 @@ contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=1) {
} else {
!embedded: CONFIG += x11
SOURCES += \
+ plugins/qt/PluginContainerQt.cpp \
plugins/qt/PluginPackageQt.cpp \
plugins/qt/PluginViewQt.cpp
+ HEADERS += \
+ plugins/qt/PluginContainerQt.h
DEFINES += XP_UNIX
}
}
@@ -1223,15 +1260,17 @@ contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=1) {
-lversion
}
+} else {
+ SOURCES += \
+ plugins/PluginPackageNone.cpp \
+ plugins/PluginViewNone.cpp
}
contains(DEFINES, ENABLE_DASHBOARD_SUPPORT=0) {
DASHBOARDSUPPORTCSSPROPERTIES -= $$PWD/css/DashboardSupportCSSPropertyNames.in
}
-contains(DEFINES, ENABLE_DATABASE=1) {
- FEATURE_DEFINES_JAVASCRIPT += ENABLE_DATABASE=1
-
+contains(DEFINES, ENABLE_SQLITE=1) {
# somewhat copied from src/plugins/sqldrivers/sqlite/sqlite.pro
CONFIG(QTDIR_build):system-sqlite {
LIBS *= $$QT_LFLAGS_SQLITE
@@ -1241,6 +1280,9 @@ contains(DEFINES, ENABLE_DATABASE=1) {
# we have source - use it
CONFIG(release, debug|release):DEFINES *= NDEBUG
DEFINES += SQLITE_CORE SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_COMPLETE
+ contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
+ DEFINES+=SQLITE_THREADSAFE=0
+ }
INCLUDEPATH += $${SQLITE3SRCDIR}
SOURCES += $${SQLITE3SRCDIR}/sqlite3.c
} else {
@@ -1256,20 +1298,21 @@ contains(DEFINES, ENABLE_DATABASE=1) {
platform/sql/SQLiteStatement.cpp \
platform/sql/SQLiteTransaction.cpp \
platform/sql/SQLValue.cpp \
- storage/ChangeVersionWrapper.cpp \
- storage/DatabaseAuthorizer.cpp \
storage/Database.cpp \
+ storage/DatabaseAuthorizer.cpp
+}
+
+
+contains(DEFINES, ENABLE_DATABASE=1) {
+ FEATURE_DEFINES_JAVASCRIPT += ENABLE_DATABASE=1
+
+ SOURCES += \
+ storage/ChangeVersionWrapper.cpp \
storage/DatabaseTask.cpp \
storage/DatabaseThread.cpp \
storage/DatabaseTracker.cpp \
- storage/LocalStorage.cpp \
- storage/LocalStorageArea.cpp \
- storage/LocalStorageTask.cpp \
- storage/LocalStorageThread.cpp \
storage/OriginQuotaManager.cpp \
storage/OriginUsageRecord.cpp \
- storage/StorageArea.cpp \
- storage/StorageMap.cpp \
storage/SQLResultSet.cpp \
storage/SQLResultSetRowList.cpp \
storage/SQLStatement.cpp \
@@ -1300,7 +1343,13 @@ contains(DEFINES, ENABLE_DOM_STORAGE=1) {
storage/SessionStorageArea.h
SOURCES += \
+ storage/LocalStorage.cpp \
+ storage/LocalStorageArea.cpp \
+ storage/LocalStorageTask.cpp \
+ storage/LocalStorageThread.cpp \
storage/Storage.cpp \
+ storage/StorageArea.cpp \
+ storage/StorageMap.cpp \
storage/StorageEvent.cpp \
storage/SessionStorage.cpp \
storage/SessionStorageArea.cpp \
@@ -1321,17 +1370,37 @@ contains(DEFINES, ENABLE_ICONDATABASE=1) {
loader/icon/IconDatabaseNone.cpp
}
+contains(DEFINES, ENABLE_WORKERS=1) {
+ FEATURE_DEFINES_JAVASCRIPT += ENABLE_WORKERS=1
+
+ IDL_BINDINGS += \
+ page/WorkerNavigator.idl \
+ workers/Worker.idl \
+ workers/WorkerContext.idl \
+ workers/WorkerLocation.idl
+
+ SOURCES += \
+ bindings/js/JSWorkerConstructor.cpp \
+ bindings/js/JSWorkerContextBase.cpp \
+ bindings/js/JSWorkerContextCustom.cpp \
+ bindings/js/JSWorkerCustom.cpp \
+ bindings/js/WorkerScriptController.cpp \
+ loader/WorkerThreadableLoader.cpp \
+ page/WorkerNavigator.cpp \
+ workers/Worker.cpp \
+ workers/WorkerContext.cpp \
+ workers/WorkerLocation.cpp \
+ workers/WorkerMessagingProxy.cpp \
+ workers/WorkerRunLoop.cpp \
+ workers/WorkerThread.cpp \
+ workers/WorkerImportScriptsClient.cpp
+}
+
contains(DEFINES, ENABLE_VIDEO=1) {
FEATURE_DEFINES_JAVASCRIPT += ENABLE_VIDEO=1
IDL_BINDINGS += \
- html/HTMLAudioElement.idl \
- html/HTMLMediaElement.idl \
- html/HTMLSourceElement.idl \
- html/HTMLVideoElement.idl \
- html/MediaError.idl \
- html/TimeRanges.idl \
- html/VoidCallback.idl
+ html/TimeRanges.idl
SOURCES += \
html/HTMLAudioElement.cpp \
@@ -1375,6 +1444,24 @@ contains(DEFINES, ENABLE_XPATH=1) {
xml/XPathExpression.idl \
xml/XPathResult.idl \
xml/XPathEvaluator.idl
+
+ SOURCES += \
+ xml/NativeXPathNSResolver.cpp \
+ xml/XPathEvaluator.cpp \
+ xml/XPathExpression.cpp \
+ xml/XPathExpressionNode.cpp \
+ xml/XPathFunctions.cpp \
+ xml/XPathNamespace.cpp \
+ xml/XPathNodeSet.cpp \
+ xml/XPathNSResolver.cpp \
+ xml/XPathParser.cpp \
+ xml/XPathPath.cpp \
+ xml/XPathPredicate.cpp \
+ xml/XPathResult.cpp \
+ xml/XPathStep.cpp \
+ xml/XPathUtil.cpp \
+ xml/XPathValue.cpp \
+ xml/XPathVariableReference.cpp
}
unix:!mac:CONFIG += link_pkgconfig
@@ -1391,12 +1478,37 @@ contains(DEFINES, ENABLE_XSLT=1) {
win32-msvc* {
LIBS += -llibxml2 -llibxslt
}
+
+ IDL_BINDINGS += \
+ xml/XSLTProcessor.idl
+
+ SOURCES += \
+ bindings/js/JSXSLTProcessorConstructor.cpp \
+ bindings/js/JSXSLTProcessorCustom.cpp \
+ xml/XSLImportRule.cpp \
+ xml/XSLStyleSheet.cpp \
+ xml/XSLTExtensions.cpp \
+ xml/XSLTProcessor.cpp \
+ xml/XSLTUnicodeSort.cpp
}
contains(DEFINES, ENABLE_XBL=1) {
FEATURE_DEFINES_JAVASCRIPT += ENABLE_XBL=1
}
+contains(DEFINES, ENABLE_FILTERS=1) {
+ SOURCES += \
+ platform/graphics/filters/FEBlend.cpp \
+ platform/graphics/filters/FEColorMatrix.cpp \
+ platform/graphics/filters/FEComponentTransfer.cpp \
+ platform/graphics/filters/FEComposite.cpp \
+ platform/graphics/filters/FilterEffect.cpp \
+ platform/graphics/filters/SourceAlpha.cpp \
+ platform/graphics/filters/SourceGraphic.cpp
+
+ FEATURE_DEFINES_JAVASCRIPT += ENABLE_FILTERS=1
+}
+
contains(DEFINES, ENABLE_WML=1) {
SOURCES += \
wml/WMLAElement.cpp \
@@ -1409,10 +1521,12 @@ contains(DEFINES, ENABLE_WML=1) {
wml/WMLElement.cpp \
wml/WMLErrorHandling.cpp \
wml/WMLEventHandlingElement.cpp \
+ wml/WMLFormControlElement.cpp \
wml/WMLFieldSetElement.cpp \
wml/WMLGoElement.cpp \
wml/WMLImageElement.cpp \
wml/WMLImageLoader.cpp \
+ wml/WMLInputElement.cpp \
wml/WMLInsertedLegendElement.cpp \
wml/WMLIntrinsicEvent.cpp \
wml/WMLIntrinsicEventHandler.cpp \
@@ -1420,10 +1534,13 @@ contains(DEFINES, ENABLE_WML=1) {
wml/WMLNoopElement.cpp \
wml/WMLOnEventElement.cpp \
wml/WMLPElement.cpp \
+ wml/WMLOptGroupElement.cpp \
+ wml/WMLOptionElement.cpp \
wml/WMLPageState.cpp \
wml/WMLPostfieldElement.cpp \
wml/WMLPrevElement.cpp \
wml/WMLRefreshElement.cpp \
+ wml/WMLSelectElement.cpp \
wml/WMLSetvarElement.cpp \
wml/WMLTableElement.cpp \
wml/WMLTaskElement.cpp \
@@ -1435,22 +1552,26 @@ contains(DEFINES, ENABLE_WML=1) {
WML_NAMES = $$PWD/wml/WMLTagNames.in
- wmlnames_a.output = $$GENERATED_SOURCES_DIR/WMLNames.cpp
+ wmlnames_a.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}WMLNames.cpp
wmlnames_a.commands = perl -I$$PWD/bindings/scripts $$PWD/dom/make_names.pl --tags $$PWD/wml/WMLTagNames.in --attrs $$PWD/wml/WMLAttributeNames.in --extraDefines \"$${DEFINES}\" --preprocessor \"$${QMAKE_MOC} -E\" --factory --wrapperFactory --outputDir $$GENERATED_SOURCES_DIR
wmlnames_a.input = WML_NAMES
wmlnames_a.dependency_type = TYPE_C
wmlnames_a.CONFIG = target_predeps
wmlnames_a.variable_out = GENERATED_SOURCES
addExtraCompilerWithHeader(wmlnames_a)
- wmlnames_b.output = $$GENERATED_SOURCES_DIR/WMLElementFactory.cpp
+ wmlnames_b.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}WMLElementFactory.cpp
wmlnames_b.commands = @echo -n ''
wmlnames_b.input = SVG_NAMES
- wmlnames_b.depends = $$GENERATED_SOURCES_DIR/WMLNames.cpp
+ wmlnames_b.depends = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}WMLNames.cpp
wmlnames_b.CONFIG = target_predeps
wmlnames_b.variable_out = GENERATED_SOURCES
addExtraCompilerWithHeader(wmlnames_b)
}
+contains(DEFINES, ENABLE_XHTMLMP=1) {
+ FEATURE_DEFINES_JAVASCRIPT += ENABLE_XHTMLMP=1
+}
+
contains(DEFINES, ENABLE_SVG=1) {
FEATURE_DEFINES_JAVASCRIPT += ENABLE_SVG=1
@@ -1609,7 +1730,6 @@ contains(DEFINES, ENABLE_SVG=1) {
rendering/style/SVGRenderStyleDefs.cpp \
svg/SVGZoomEvent.cpp \
rendering/PointerEventsHitRules.cpp \
- svg/FilterEffect.cpp \
svg/SVGDocumentExtensions.cpp \
svg/SVGImageLoader.cpp \
svg/ColorDistance.cpp \
@@ -1743,10 +1863,6 @@ contains(DEFINES, ENABLE_SVG=1) {
svg/animation/SMILTime.cpp \
svg/animation/SMILTimeContainer.cpp \
svg/animation/SVGSMILElement.cpp \
- platform/graphics/filters/FEBlend.cpp \
- platform/graphics/filters/FEColorMatrix.cpp \
- platform/graphics/filters/FEComponentTransfer.cpp \
- platform/graphics/filters/FEComposite.cpp \
svg/graphics/filters/SVGFEConvolveMatrix.cpp \
svg/graphics/filters/SVGFEDiffuseLighting.cpp \
svg/graphics/filters/SVGFEDisplacementMap.cpp \
@@ -1759,7 +1875,8 @@ contains(DEFINES, ENABLE_SVG=1) {
svg/graphics/filters/SVGFESpecularLighting.cpp \
svg/graphics/filters/SVGFETile.cpp \
svg/graphics/filters/SVGFETurbulence.cpp \
- svg/graphics/filters/SVGFilterEffect.cpp \
+ svg/graphics/filters/SVGFilter.cpp \
+ svg/graphics/filters/SVGFilterBuilder.cpp \
svg/graphics/filters/SVGLightSource.cpp \
svg/graphics/SVGImage.cpp \
svg/graphics/SVGPaintServer.cpp \
@@ -1782,6 +1899,7 @@ contains(DEFINES, ENABLE_SVG=1) {
rendering/RenderSVGImage.cpp \
rendering/RenderSVGInline.cpp \
rendering/RenderSVGInlineText.cpp \
+ rendering/RenderSVGModelObject.cpp \
rendering/RenderSVGRoot.cpp \
rendering/RenderSVGText.cpp \
rendering/RenderSVGTextPath.cpp \
@@ -1794,46 +1912,39 @@ contains(DEFINES, ENABLE_SVG=1) {
rendering/SVGRenderSupport.cpp \
rendering/SVGRootInlineBox.cpp
-SOURCES += \
- svg/graphics/qt/RenderPathQt.cpp \
- svg/graphics/qt/SVGPaintServerPatternQt.cpp \
- svg/graphics/qt/SVGPaintServerQt.cpp \
- svg/graphics/qt/SVGResourceFilterQt.cpp \
- svg/graphics/qt/SVGResourceMaskerQt.cpp
-
# GENERATOR 5-C:
- svgnames_a.output = $$GENERATED_SOURCES_DIR/SVGNames.cpp
+ svgnames_a.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}SVGNames.cpp
svgnames_a.commands = perl -I$$PWD/bindings/scripts $$PWD/dom/make_names.pl --tags $$PWD/svg/svgtags.in --attrs $$PWD/svg/svgattrs.in --extraDefines \"$${DEFINES}\" --preprocessor \"$${QMAKE_MOC} -E\" --factory --wrapperFactory --outputDir $$GENERATED_SOURCES_DIR
svgnames_a.input = SVG_NAMES
svgnames_a.dependency_type = TYPE_C
svgnames_a.CONFIG = target_predeps
svgnames_a.variable_out = GENERATED_SOURCES
addExtraCompilerWithHeader(svgnames_a)
- svgnames_b.output = $$GENERATED_SOURCES_DIR/SVGElementFactory.cpp
+ svgnames_b.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}SVGElementFactory.cpp
svgnames_b.commands = @echo -n ''
svgnames_b.input = SVG_NAMES
- svgnames_b.depends = $$GENERATED_SOURCES_DIR/SVGNames.cpp
+ svgnames_b.depends = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}SVGNames.cpp
svgnames_b.CONFIG = target_predeps
svgnames_b.variable_out = GENERATED_SOURCES
addExtraCompilerWithHeader(svgnames_b)
- svgelementwrapper.output = $$GENERATED_SOURCES_DIR/JSSVGElementWrapperFactory.cpp
+ svgelementwrapper.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}JSSVGElementWrapperFactory.cpp
svgelementwrapper.commands = @echo -n ''
svgelementwrapper.input = SVG_NAMES
- svgelementwrapper.depends = $$GENERATED_SOURCES_DIR/SVGNames.cpp
+ svgelementwrapper.depends = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}SVGNames.cpp
svgelementwrapper.CONFIG = target_predeps
svgelementwrapper.variable_out = GENERATED_SOURCES
addExtraCompiler(svgelementwrapper)
- svgelementwrapper_header.output = $$GENERATED_SOURCES_DIR/JSSVGElementWrapperFactory.h
+ svgelementwrapper_header.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}JSSVGElementWrapperFactory.h
svgelementwrapper_header.commands = @echo -n ''
svgelementwrapper_header.input = SVG_NAMES
- svgelementwrapper_header.depends = $$GENERATED_SOURCES_DIR/SVGNames.cpp
+ svgelementwrapper_header.depends = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}SVGNames.cpp
svgelementwrapper_header.CONFIG = target_predeps
svgelementwrapper_header.variable_out = GENERATED_FILES
addExtraCompiler(svgelementwrapper_header)
# GENERATOR 5-D:
- xlinknames.output = $$GENERATED_SOURCES_DIR/XLinkNames.cpp
+ xlinknames.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}XLinkNames.cpp
xlinknames.commands = perl -I$$PWD/bindings/scripts $$PWD/dom/make_names.pl --attrs $$PWD/svg/xlinkattrs.in --preprocessor \"$${QMAKE_MOC} -E\" --outputDir $$GENERATED_SOURCES_DIR
xlinknames.input = XLINK_NAMES
xlinknames.dependency_type = TYPE_C
@@ -1842,38 +1953,52 @@ SOURCES += \
addExtraCompilerWithHeader(xlinknames)
# GENERATOR 6-A:
- cssprops.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.cpp
+ cssprops.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
cssprops.input = WALDOCSSPROPS
- cssprops.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$DASHBOARDSUPPORTCSSPROPERTIES $$SVGCSSPROPERTIES > $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
+ cssprops.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$DASHBOARDSUPPORTCSSPROPERTIES $$SVGCSSPROPERTIES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
cssprops.CONFIG = target_predeps no_link
cssprops.depend = ${QMAKE_FILE_NAME} DASHBOARDSUPPORTCSSPROPERTIES SVGCSSPROPERTIES
addExtraCompilerWithHeader(cssprops)
# GENERATOR 6-B:
- cssvalues.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.c
+ cssvalues.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.c
cssvalues.input = WALDOCSSVALUES
- cssvalues.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$SVGCSSVALUES > $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makevalues.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.gperf
+ cssvalues.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$SVGCSSVALUES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makevalues.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.gperf
cssvalues.CONFIG = target_predeps no_link
cssvalues.depend = ${QMAKE_FILE_NAME} SVGCSSVALUES
addExtraCompilerWithHeader(cssvalues)
} else {
# GENERATOR 6-A:
- cssprops.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.cpp
+ cssprops.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
cssprops.input = WALDOCSSPROPS
- cssprops.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$DASHBOARDSUPPORTCSSPROPERTIES > $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
+ cssprops.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$DASHBOARDSUPPORTCSSPROPERTIES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
cssprops.CONFIG = target_predeps no_link
cssprops.depend = ${QMAKE_FILE_NAME} DASHBOARDSUPPORTCSSPROPERTIES
addExtraCompilerWithHeader(cssprops)
# GENERATOR 6-B:
- cssvalues.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.c
+ cssvalues.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.c
cssvalues.input = WALDOCSSVALUES
- cssvalues.commands = $(COPY_FILE) ${QMAKE_FILE_NAME} $$GENERATED_SOURCES_DIR && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makevalues.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.gperf
+ cssvalues.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makevalues.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.gperf
cssvalues.CONFIG = target_predeps no_link
cssvalues.clean = ${QMAKE_FILE_OUT} ${QMAKE_VAR_GENERATED_SOURCES_DIR_SLASH}${QMAKE_FILE_BASE}.h
addExtraCompiler(cssvalues)
}
+contains(DEFINES, ENABLE_JAVASCRIPT_DEBUGGER=1) {
+ FEATURE_DEFINES_JAVASCRIPT += ENABLE_JAVASCRIPT_DEBUGGER=1
+
+ IDL_BINDINGS += \
+ inspector/JavaScriptCallFrame.idl
+
+ SOURCES += \
+ bindings/js/JSJavaScriptCallFrameCustom.cpp \
+ inspector/JavaScriptCallFrame.cpp \
+ inspector/JavaScriptDebugServer.cpp \
+ inspector/JavaScriptProfile.cpp \
+ inspector/JavaScriptProfileNode.cpp
+}
+
contains(DEFINES, ENABLE_OFFLINE_WEB_APPLICATIONS=1) {
FEATURE_DEFINES_JAVASCRIPT += ENABLE_OFFLINE_WEB_APPLICATIONS=1
@@ -1891,7 +2016,7 @@ SOURCES += \
}
# GENERATOR 1: IDL compiler
-idl.output = $$GENERATED_SOURCES_DIR/JS${QMAKE_FILE_BASE}.cpp
+idl.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}JS${QMAKE_FILE_BASE}.cpp
idl.variable_out = GENERATED_SOURCES
idl.input = IDL_BINDINGS
idl.commands = perl -I$$PWD/bindings/scripts $$PWD/bindings/scripts/generate-bindings.pl --defines \"$${FEATURE_DEFINES_JAVASCRIPT}\" --generator JS --include $$PWD/dom --include $$PWD/html --include $$PWD/xml --include $$PWD/svg --outputDir $$GENERATED_SOURCES_DIR --preprocessor \"$${QMAKE_MOC} -E\" ${QMAKE_FILE_NAME}
@@ -1899,7 +2024,7 @@ idl.CONFIG += target_predeps
addExtraCompilerWithHeader(idl)
# GENERATOR 2-A: LUT creator
-domlut.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.lut.h
+domlut.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.lut.h
domlut.commands = perl $$PWD/../JavaScriptCore/create_hash_table ${QMAKE_FILE_NAME} -n WebCore > ${QMAKE_FILE_OUT}
domlut.depend = ${QMAKE_FILE_NAME}
domlut.input = DOMLUT_FILES
@@ -1907,7 +2032,7 @@ domlut.CONFIG += no_link
addExtraCompiler(domlut)
# GENERATOR 3: tokenizer (flex)
-tokenizer.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.cpp
+tokenizer.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
tokenizer.commands = flex -t < ${QMAKE_FILE_NAME} | perl $$PWD/css/maketokenizer > ${QMAKE_FILE_OUT}
tokenizer.dependency_type = TYPE_C
tokenizer.input = TOKENIZER
@@ -1915,8 +2040,8 @@ tokenizer.CONFIG += target_predeps no_link
addExtraCompiler(tokenizer)
# GENERATOR 4: CSS grammar
-cssbison.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.cpp
-cssbison.commands = perl $$PWD/css/makegrammar.pl ${QMAKE_FILE_NAME} $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}
+cssbison.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
+cssbison.commands = perl $$PWD/css/makegrammar.pl ${QMAKE_FILE_NAME} $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}
cssbison.depend = ${QMAKE_FILE_NAME}
cssbison.input = CSSBISON
cssbison.CONFIG = target_predeps
@@ -1925,25 +2050,34 @@ cssbison.variable_out = GENERATED_SOURCES
addExtraCompilerWithHeader(cssbison)
# GENERATOR 5-A:
-htmlnames.output = $$GENERATED_SOURCES_DIR/HTMLNames.cpp
-htmlnames.commands = perl -I$$PWD/bindings/scripts $$PWD/dom/make_names.pl --tags $$PWD/html/HTMLTagNames.in --attrs $$PWD/html/HTMLAttributeNames.in --extraDefines \"$${DEFINES}\" --preprocessor \"$${QMAKE_MOC} -E\" --wrapperFactory --outputDir $$GENERATED_SOURCES_DIR
+htmlnames.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}HTMLNames.cpp
+htmlnames.commands = perl -I$$PWD/bindings/scripts $$PWD/dom/make_names.pl --tags $$PWD/html/HTMLTagNames.in --attrs $$PWD/html/HTMLAttributeNames.in --extraDefines \"$${DEFINES}\" --preprocessor \"$${QMAKE_MOC} -E\" --factory --wrapperFactory --outputDir $$GENERATED_SOURCES_DIR
htmlnames.input = HTML_NAMES
htmlnames.dependency_type = TYPE_C
htmlnames.CONFIG = target_predeps
htmlnames.variable_out = GENERATED_SOURCES
addExtraCompilerWithHeader(htmlnames)
-elementwrapperfactory.output = $$GENERATED_SOURCES_DIR/JSHTMLElementWrapperFactory.cpp
+htmlelementfactory.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}HTMLElementFactory.cpp
+htmlelementfactory.commands = @echo -n ''
+htmlelementfactory.input = HTML_NAMES
+htmlelementfactory.depends = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}HTMLNames.cpp
+htmlelementfactory.CONFIG = target_predeps
+htmlelementfactory.variable_out = GENERATED_SOURCES
+htmlelementfactory.clean += ${QMAKE_FILE_OUT}
+addExtraCompilerWithHeader(htmlelementfactory)
+
+elementwrapperfactory.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}JSHTMLElementWrapperFactory.cpp
elementwrapperfactory.commands = @echo -n ''
elementwrapperfactory.input = HTML_NAMES
-elementwrapperfactory.depends = $$GENERATED_SOURCES_DIR/HTMLNames.cpp
+elementwrapperfactory.depends = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}HTMLNames.cpp
elementwrapperfactory.CONFIG = target_predeps
elementwrapperfactory.variable_out = GENERATED_SOURCES
elementwrapperfactory.clean += ${QMAKE_FILE_OUT}
addExtraCompilerWithHeader(elementwrapperfactory)
# GENERATOR 5-B:
-xmlnames.output = $$GENERATED_SOURCES_DIR/XMLNames.cpp
+xmlnames.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}XMLNames.cpp
xmlnames.commands = perl -I$$PWD/bindings/scripts $$PWD/dom/make_names.pl --attrs $$PWD/xml/xmlattrs.in --preprocessor \"$${QMAKE_MOC} -E\" --outputDir $$GENERATED_SOURCES_DIR
xmlnames.input = XML_NAMES
xmlnames.dependency_type = TYPE_C
@@ -1952,8 +2086,8 @@ xmlnames.variable_out = GENERATED_SOURCES
addExtraCompilerWithHeader(xmlnames)
# GENERATOR 8-A:
-entities.output = $$GENERATED_SOURCES_DIR/HTMLEntityNames.c
-entities.commands = gperf -a -L ANSI-C -C -G -c -o -t --key-positions="*" -N findEntity -D -s 2 < $$PWD/html/HTMLEntityNames.gperf > $$GENERATED_SOURCES_DIR/HTMLEntityNames.c
+entities.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}HTMLEntityNames.c
+entities.commands = gperf -a -L ANSI-C -C -G -c -o -t --key-positions="*" -N findEntity -D -s 2 < $$PWD/html/HTMLEntityNames.gperf > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}HTMLEntityNames.c
entities.input = ENTITIES_GPERF
entities.dependency_type = TYPE_C
entities.CONFIG = target_predeps no_link
@@ -1961,7 +2095,7 @@ entities.clean = ${QMAKE_FILE_OUT}
addExtraCompiler(entities)
# GENERATOR 8-B:
-doctypestrings.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.cpp
+doctypestrings.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
doctypestrings.input = DOCTYPESTRINGS
doctypestrings.commands = perl -e \"print \'$${LITERAL_HASH}include <string.h>\';\" > ${QMAKE_FILE_OUT} && echo // bogus >> ${QMAKE_FILE_OUT} && gperf -CEot -L ANSI-C --key-positions="*" -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards < ${QMAKE_FILE_NAME} >> ${QMAKE_FILE_OUT}
doctypestrings.dependency_type = TYPE_C
@@ -1970,14 +2104,14 @@ doctypestrings.clean = ${QMAKE_FILE_OUT}
addExtraCompiler(doctypestrings)
# GENERATOR 8-C:
-colordata.output = $$GENERATED_SOURCES_DIR/ColorData.c
+colordata.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}ColorData.c
colordata.commands = perl -e \"print \'$${LITERAL_HASH}include <string.h>\';\" > ${QMAKE_FILE_OUT} && echo // bogus >> ${QMAKE_FILE_OUT} && gperf -CDEot -L ANSI-C --key-positions="*" -N findColor -D -s 2 < ${QMAKE_FILE_NAME} >> ${QMAKE_FILE_OUT}
colordata.input = COLORDAT_GPERF
colordata.CONFIG = target_predeps no_link
addExtraCompiler(colordata)
# GENERATOR 9:
-stylesheets.output = $$GENERATED_SOURCES_DIR/UserAgentStyleSheetsData.cpp
+stylesheets.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}UserAgentStyleSheetsData.cpp
stylesheets.commands = perl $$PWD/css/make-css-file-arrays.pl --preprocessor \"$${QMAKE_MOC} -E\" ${QMAKE_VAR_GENERATED_SOURCES_DIR_SLASH}UserAgentStyleSheets.h ${QMAKE_FILE_OUT} $$STYLESHEETS_EMBED
STYLESHEETS_EMBED_GENERATOR_SCRIPT = $$PWD/css/make-css-file-arrays.pl
stylesheets.input = STYLESHEETS_EMBED_GENERATOR_SCRIPT
@@ -1985,11 +2119,11 @@ stylesheets.depends = $$STYLESHEETS_EMBED
stylesheets.CONFIG = target_predeps
stylesheets.variable_out = GENERATED_SOURCES
stylesheets.clean = ${QMAKE_FILE_OUT} ${QMAKE_VAR_GENERATED_SOURCES_DIR_SLASH}UserAgentStyleSheets.h
-addExtraCompilerWithHeader(stylesheets, $$GENERATED_SOURCES_DIR/UserAgentStyleSheets.h)
+addExtraCompilerWithHeader(stylesheets, $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}UserAgentStyleSheets.h)
# GENERATOR 10: XPATH grammar
-xpathbison.output = $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.cpp
-xpathbison.commands = bison -d -p xpathyy ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_BASE}.tab.c && $(MOVE) ${QMAKE_FILE_BASE}.tab.c $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.cpp && $(MOVE) ${QMAKE_FILE_BASE}.tab.h $$GENERATED_SOURCES_DIR/${QMAKE_FILE_BASE}.h
+xpathbison.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
+xpathbison.commands = bison -d -p xpathyy ${QMAKE_FILE_NAME} -o $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c && $(MOVE) $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp && $(MOVE) $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.h $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.h
xpathbison.depend = ${QMAKE_FILE_NAME}
xpathbison.input = XPATHBISON
xpathbison.CONFIG = target_predeps
@@ -2028,6 +2162,23 @@ HEADERS += $$WEBKIT_API_HEADERS
lib_replace.replace = $$[QT_INSTALL_LIBS]
QMAKE_PKGCONFIG_INSTALL_REPLACE += lib_replace
}
+
+ mac:!static:contains(QT_CONFIG, qt_framework):!CONFIG(webkit_no_framework) {
+ !build_pass {
+ message("Building QtWebKit as a framework, as that's how Qt was built. You can")
+ message("override this by passing CONFIG+=webkit_no_framework to build-webkit.")
+ } else {
+ debug_and_release:CONFIG(debug, debug|release) {
+ TARGET = $$qtLibraryTarget($$TARGET)
+ }
+ }
+
+ CONFIG += lib_bundle qt_no_framework_direct_includes qt_framework
+ FRAMEWORK_HEADERS.version = Versions
+ FRAMEWORK_HEADERS.files = $$WEBKIT_API_HEADERS
+ FRAMEWORK_HEADERS.path = Headers
+ QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS
+ }
}
CONFIG(QTDIR_build):isEqual(QT_MAJOR_VERSION, 4):greaterThan(QT_MINOR_VERSION, 4) {
diff --git a/src/3rdparty/webkit/WebCore/WebCorePrefix.h b/src/3rdparty/webkit/WebCore/WebCorePrefix.h
index aaa6a0f..e857ecc 100644
--- a/src/3rdparty/webkit/WebCore/WebCorePrefix.h
+++ b/src/3rdparty/webkit/WebCore/WebCorePrefix.h
@@ -100,16 +100,6 @@
#include <CoreFoundation/CoreFoundation.h>
#include <CoreServices/CoreServices.h>
-#include <AvailabilityMacros.h>
-
-#if defined(__APPLE__)
-#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
-#define BUILDING_ON_TIGER 1
-#elif MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5
-#define BUILDING_ON_LEOPARD 1
-#endif
-#endif
-
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
diff --git a/src/3rdparty/webkit/WebCore/page/AXObjectCache.cpp b/src/3rdparty/webkit/WebCore/accessibility/AXObjectCache.cpp
index d9c4c9a..ec250ed 100644
--- a/src/3rdparty/webkit/WebCore/page/AXObjectCache.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AXObjectCache.cpp
@@ -29,6 +29,9 @@
#include "config.h"
#include "AXObjectCache.h"
+#include "AccessibilityARIAGrid.h"
+#include "AccessibilityARIAGridRow.h"
+#include "AccessibilityARIAGridCell.h"
#include "AccessibilityList.h"
#include "AccessibilityListBox.h"
#include "AccessibilityListBoxOption.h"
@@ -41,6 +44,7 @@
#include "AccessibilityTableRow.h"
#include "HTMLNames.h"
#include "RenderObject.h"
+#include "RenderView.h"
#include <wtf/PassRefPtr.h>
@@ -51,6 +55,11 @@ using namespace HTMLNames;
bool AXObjectCache::gAccessibilityEnabled = false;
bool AXObjectCache::gAccessibilityEnhancedUserInterfaceEnabled = false;
+AXObjectCache::AXObjectCache()
+ : m_notificationPostTimer(this, &AXObjectCache::notificationPostTimerFired)
+{
+}
+
AXObjectCache::~AXObjectCache()
{
HashMap<AXID, RefPtr<AccessibilityObject> >::iterator end = m_objects.end();
@@ -58,6 +67,7 @@ AXObjectCache::~AXObjectCache()
AccessibilityObject* obj = (*it).second.get();
detachWrapper(obj);
obj->detach();
+ removeAXID(obj);
}
}
@@ -66,39 +76,71 @@ AccessibilityObject* AXObjectCache::get(RenderObject* renderer)
if (!renderer)
return 0;
- RefPtr<AccessibilityObject> obj = 0;
+ AccessibilityObject* obj = 0;
AXID axID = m_renderObjectMapping.get(renderer);
ASSERT(!HashTraits<AXID>::isDeletedValue(axID));
if (axID)
obj = m_objects.get(axID).get();
+
+ return obj;
+}
+
+bool AXObjectCache::nodeIsAriaType(Node* node, String role)
+{
+ if (!node || !node->isElementNode())
+ return false;
+
+ return equalIgnoringCase(static_cast<Element*>(node)->getAttribute(roleAttr), role);
+}
+
+AccessibilityObject* AXObjectCache::getOrCreate(RenderObject* renderer)
+{
+ if (!renderer)
+ return 0;
+
+ AccessibilityObject* obj = get(renderer);
- Node* element = renderer->element();
if (!obj) {
+ Node* node = renderer->node();
+ RefPtr<AccessibilityObject> newObj = 0;
if (renderer->isListBox())
- obj = AccessibilityListBox::create(renderer);
- else if (element && (element->hasTagName(ulTag) || element->hasTagName(olTag) || element->hasTagName(dlTag)))
- obj = AccessibilityList::create(renderer);
+ newObj = AccessibilityListBox::create(renderer);
+ else if (node && (node->hasTagName(ulTag) || node->hasTagName(olTag) || node->hasTagName(dlTag)))
+ newObj = AccessibilityList::create(renderer);
+
+ // aria tables
+ else if (nodeIsAriaType(node, "grid"))
+ newObj = AccessibilityARIAGrid::create(renderer);
+ else if (nodeIsAriaType(node, "row"))
+ newObj = AccessibilityARIAGridRow::create(renderer);
+ else if (nodeIsAriaType(node, "gridcell") || nodeIsAriaType(node, "columnheader") || nodeIsAriaType(node, "rowheader"))
+ newObj = AccessibilityARIAGridCell::create(renderer);
+
+ // standard tables
else if (renderer->isTable())
- obj = AccessibilityTable::create(renderer);
+ newObj = AccessibilityTable::create(renderer);
else if (renderer->isTableRow())
- obj = AccessibilityTableRow::create(renderer);
+ newObj = AccessibilityTableRow::create(renderer);
else if (renderer->isTableCell())
- obj = AccessibilityTableCell::create(renderer);
+ newObj = AccessibilityTableCell::create(renderer);
+
else
- obj = AccessibilityRenderObject::create(renderer);
+ newObj = AccessibilityRenderObject::create(renderer);
- getAXID(obj.get());
+ obj = newObj.get();
- m_renderObjectMapping.set(renderer, obj.get()->axObjectID());
- m_objects.set(obj.get()->axObjectID(), obj);
- attachWrapper(obj.get());
+ getAXID(obj);
+
+ m_renderObjectMapping.set(renderer, obj->axObjectID());
+ m_objects.set(obj->axObjectID(), obj);
+ attachWrapper(obj);
}
- return obj.get();
+ return obj;
}
-AccessibilityObject* AXObjectCache::get(AccessibilityRole role)
+AccessibilityObject* AXObjectCache::getOrCreate(AccessibilityRole role)
{
RefPtr<AccessibilityObject> obj = 0;
@@ -186,6 +228,9 @@ AXID AXObjectCache::getAXID(AccessibilityObject* obj)
void AXObjectCache::removeAXID(AccessibilityObject* obj)
{
+ if (!obj)
+ return;
+
AXID objID = obj->axObjectID();
if (objID == 0)
return;
@@ -208,11 +253,68 @@ void AXObjectCache::childrenChanged(RenderObject* renderer)
if (obj)
obj->childrenChanged();
}
+
+void AXObjectCache::notificationPostTimerFired(Timer<AXObjectCache>*)
+{
+ m_notificationPostTimer.stop();
+ unsigned i = 0, count = m_notificationsToPost.size();
+ for (i = 0; i < count; ++i) {
+ AccessibilityObject* obj = m_notificationsToPost[i].first;
+#ifndef NDEBUG
+ // Make sure none of the render views are in the process of being layed out.
+ // Notifications should only be sent after the renderer has finished
+ if (obj->isAccessibilityRenderObject()) {
+ AccessibilityRenderObject* renderObj = static_cast<AccessibilityRenderObject*>(obj);
+ RenderObject* renderer = renderObj->renderer();
+ if (renderer && renderer->view())
+ ASSERT(!renderer->view()->layoutState());
+ }
+#endif
+
+ postPlatformNotification(obj, m_notificationsToPost[i].second);
+ }
+
+ m_notificationsToPost.clear();
+}
+
#if HAVE(ACCESSIBILITY)
+void AXObjectCache::postNotification(RenderObject* renderer, const String& message, bool postToElement)
+{
+ // Notifications for text input objects are sent to that object.
+ // All others are sent to the top WebArea.
+ if (!renderer)
+ return;
+
+ // Get an accessibility object that already exists. One should not be created here
+ // because a render update may be in progress and creating an AX object can re-trigger a layout
+ RefPtr<AccessibilityObject> obj = get(renderer);
+ while (!obj && renderer) {
+ renderer = renderer->parent();
+ obj = get(renderer);
+ }
+
+ if (!renderer)
+ return;
+
+ if (obj && !postToElement)
+ obj = obj->observableObject();
+
+ Document* document = renderer->document();
+ if (!obj && document)
+ obj = get(document->renderer());
+
+ if (!obj)
+ return;
+
+ m_notificationsToPost.append(make_pair(obj.get(), message));
+ if (!m_notificationPostTimer.isActive())
+ m_notificationPostTimer.startOneShot(0);
+}
+
void AXObjectCache::selectedChildrenChanged(RenderObject* renderer)
{
- postNotificationToElement(renderer, "AXSelectedChildrenChanged");
+ postNotification(renderer, "AXSelectedChildrenChanged", true);
}
#endif
@@ -221,7 +323,7 @@ void AXObjectCache::handleActiveDescendantChanged(RenderObject* renderer)
{
if (!renderer)
return;
- AccessibilityObject* obj = get(renderer);
+ AccessibilityObject* obj = getOrCreate(renderer);
if (obj)
obj->handleActiveDescendantChanged();
}
@@ -230,7 +332,7 @@ void AXObjectCache::handleAriaRoleChanged(RenderObject* renderer)
{
if (!renderer)
return;
- AccessibilityObject* obj = get(renderer);
+ AccessibilityObject* obj = getOrCreate(renderer);
if (obj && obj->isAccessibilityRenderObject())
static_cast<AccessibilityRenderObject*>(obj)->setAriaRole();
}
diff --git a/src/3rdparty/webkit/WebCore/page/AXObjectCache.h b/src/3rdparty/webkit/WebCore/accessibility/AXObjectCache.h
index 5e95f74..904283c 100644
--- a/src/3rdparty/webkit/WebCore/page/AXObjectCache.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AXObjectCache.h
@@ -27,6 +27,8 @@
#define AXObjectCache_h
#include "AccessibilityObject.h"
+#include "EventHandler.h"
+#include "Timer.h"
#include <limits.h>
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
@@ -57,26 +59,33 @@ namespace WebCore {
class AXObjectCache {
public:
+ AXObjectCache();
~AXObjectCache();
// to be used with render objects
- AccessibilityObject* get(RenderObject*);
+ AccessibilityObject* getOrCreate(RenderObject*);
// used for objects without backing elements
- AccessibilityObject* get(AccessibilityRole);
+ AccessibilityObject* getOrCreate(AccessibilityRole);
+
+ // will only return the AccessibilityObject if it already exists
+ AccessibilityObject* get(RenderObject*);
void remove(RenderObject*);
void remove(AXID);
void detachWrapper(AccessibilityObject*);
void attachWrapper(AccessibilityObject*);
- void postNotification(RenderObject*, const String&);
- void postNotificationToElement(RenderObject*, const String&);
+ void postNotification(RenderObject*, const String&, bool postToElement);
+ void postPlatformNotification(AccessibilityObject*, const String&);
void childrenChanged(RenderObject*);
void selectedChildrenChanged(RenderObject*);
void handleActiveDescendantChanged(RenderObject*);
void handleAriaRoleChanged(RenderObject*);
void handleFocusedUIElementChanged();
+#if PLATFORM(GTK)
+ void handleFocusedUIElementChangedWithRenderers(RenderObject*, RenderObject*);
+#endif
static void enableAccessibility() { gAccessibilityEnabled = true; }
static void enableEnhancedUserInterfaceAccessibility() { gAccessibilityEnhancedUserInterfaceEnabled = true; }
@@ -94,7 +103,12 @@ namespace WebCore {
HashSet<AXID> m_idsInUse;
+ Timer<AXObjectCache> m_notificationPostTimer;
+ Vector<pair<AccessibilityObject*, const String> > m_notificationsToPost;
+ void notificationPostTimerFired(Timer<AXObjectCache>*);
+
AXID getAXID(AccessibilityObject*);
+ bool nodeIsAriaType(Node* node, String role);
};
#if !HAVE(ACCESSIBILITY)
@@ -104,8 +118,11 @@ namespace WebCore {
inline void AXObjectCache::detachWrapper(AccessibilityObject*) { }
inline void AXObjectCache::attachWrapper(AccessibilityObject*) { }
inline void AXObjectCache::selectedChildrenChanged(RenderObject*) { }
- inline void AXObjectCache::postNotification(RenderObject*, const String&) { }
- inline void AXObjectCache::postNotificationToElement(RenderObject*, const String&) { }
+ inline void AXObjectCache::postNotification(RenderObject*, const String&, bool postToElement) { }
+ inline void AXObjectCache::postPlatformNotification(AccessibilityObject*, const String&) { }
+#if PLATFORM(GTK)
+ inline void AXObjectCache::handleFocusedUIElementChangedWithRenderers(RenderObject*, RenderObject*) { }
+#endif
#endif
}
diff --git a/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGrid.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGrid.cpp
new file mode 100644
index 0000000..69c4512
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGrid.cpp
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "AccessibilityARIAGrid.h"
+
+#include "AccessibilityTableCell.h"
+#include "AccessibilityTableColumn.h"
+#include "AccessibilityTableHeaderContainer.h"
+#include "AccessibilityTableRow.h"
+#include "AXObjectCache.h"
+#include "RenderObject.h"
+
+using namespace std;
+
+namespace WebCore {
+
+AccessibilityARIAGrid::AccessibilityARIAGrid(RenderObject* renderer)
+ : AccessibilityTable(renderer)
+{
+#if ACCESSIBILITY_TABLES
+ m_isAccessibilityTable = true;
+#else
+ m_isAccessibilityTable = false;
+#endif
+}
+
+AccessibilityARIAGrid::~AccessibilityARIAGrid()
+{
+}
+
+PassRefPtr<AccessibilityARIAGrid> AccessibilityARIAGrid::create(RenderObject* renderer)
+{
+ return adoptRef(new AccessibilityARIAGrid(renderer));
+}
+
+void AccessibilityARIAGrid::addChild(AccessibilityObject* child, HashSet<AccessibilityObject*>& appendedRows, unsigned& columnCount)
+{
+ if (!child || !child->isTableRow() || child->ariaRoleAttribute() != RowRole)
+ return;
+
+ AccessibilityTableRow* row = static_cast<AccessibilityTableRow*>(child);
+ if (appendedRows.contains(row))
+ return;
+
+ // store the maximum number of columns
+ unsigned rowCellCount = row->children().size();
+ if (rowCellCount > columnCount)
+ columnCount = rowCellCount;
+
+ row->setRowIndex((int)m_rows.size());
+ m_rows.append(row);
+ m_children.append(row);
+ appendedRows.add(row);
+}
+
+void AccessibilityARIAGrid::addChildren()
+{
+ ASSERT(!m_haveChildren);
+
+ if (!isDataTable()) {
+ AccessibilityRenderObject::addChildren();
+ return;
+ }
+
+ m_haveChildren = true;
+ if (!m_renderer)
+ return;
+
+ AXObjectCache* axCache = m_renderer->document()->axObjectCache();
+
+ // add only rows that are labeled as aria rows
+ HashSet<AccessibilityObject*> appendedRows;
+ unsigned columnCount = 0;
+ for (RefPtr<AccessibilityObject> child = firstChild(); child; child = child->nextSibling()) {
+
+ // in case the render tree doesn't match the expected ARIA hierarchy, look at the children
+ if (child->accessibilityIsIgnored()) {
+ if (!child->hasChildren())
+ child->addChildren();
+
+ AccessibilityChildrenVector children = child->children();
+ unsigned length = children.size();
+ for (unsigned i = 0; i < length; ++i)
+ addChild(children[i].get(), appendedRows, columnCount);
+ } else
+ addChild(child.get(), appendedRows, columnCount);
+ }
+
+ // make the columns based on the number of columns in the first body
+ for (unsigned i = 0; i < columnCount; ++i) {
+ AccessibilityTableColumn* column = static_cast<AccessibilityTableColumn*>(axCache->getOrCreate(ColumnRole));
+ column->setColumnIndex((int)i);
+ column->setParentTable(this);
+ m_columns.append(column);
+ m_children.append(column);
+ }
+
+ AccessibilityObject* headerContainerObject = headerContainer();
+ if (headerContainerObject)
+ m_children.append(headerContainerObject);
+}
+
+AccessibilityTableCell* AccessibilityARIAGrid::cellForColumnAndRow(unsigned column, unsigned row)
+{
+ if (!m_renderer)
+ return 0;
+
+ if (!hasChildren())
+ addChildren();
+
+ if (column >= columnCount() || row >= rowCount())
+ return 0;
+
+ AccessibilityObject *tableRow = m_rows[row].get();
+ if (!tableRow)
+ return 0;
+
+ AccessibilityChildrenVector children = tableRow->children();
+ // in case this row had fewer columns than other rows
+ AccessibilityObject* tableCell = 0;
+ if (column >= children.size())
+ return 0;
+
+ tableCell = children[column].get();
+ return static_cast<AccessibilityTableCell*>(tableCell);
+}
+
+} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGrid.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGrid.h
new file mode 100644
index 0000000..32c8ce9
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGrid.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AccessibilityARIAGrid_h
+#define AccessibilityARIAGrid_h
+
+#include "AccessibilityTable.h"
+
+namespace WebCore {
+
+class String;
+class AccessibilityTableCell;
+class AccessibilityTableHeaderContainer;
+
+class AccessibilityARIAGrid : public AccessibilityTable {
+
+private:
+ AccessibilityARIAGrid(RenderObject*);
+public:
+ static PassRefPtr<AccessibilityARIAGrid> create(RenderObject*);
+ virtual ~AccessibilityARIAGrid();
+
+ virtual bool isAriaTable() const { return true; }
+
+ virtual void addChildren();
+
+ virtual AccessibilityTableCell* cellForColumnAndRow(unsigned column, unsigned row);
+
+private:
+ void addChild(AccessibilityObject* object, HashSet<AccessibilityObject*>& appendedRows, unsigned& columnCount);
+};
+
+} // namespace WebCore
+
+#endif // AccessibilityARIAGrid_h
diff --git a/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridCell.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridCell.cpp
new file mode 100644
index 0000000..1771bb8
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridCell.cpp
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "AccessibilityARIAGridCell.h"
+
+#include "AccessibilityObject.h"
+#include "AccessibilityTableRow.h"
+
+using namespace std;
+
+namespace WebCore {
+
+AccessibilityARIAGridCell::AccessibilityARIAGridCell(RenderObject* renderer)
+ : AccessibilityTableCell(renderer)
+{
+}
+
+AccessibilityARIAGridCell::~AccessibilityARIAGridCell()
+{
+}
+
+PassRefPtr<AccessibilityARIAGridCell> AccessibilityARIAGridCell::create(RenderObject* renderer)
+{
+ return adoptRef(new AccessibilityARIAGridCell(renderer));
+}
+
+AccessibilityObject* AccessibilityARIAGridCell::parentTable() const
+{
+ AccessibilityObject* parent = parentObjectUnignored();
+ if (!parent || !parent->isTableRow())
+ return 0;
+
+ parent = parent->parentObjectUnignored();
+ if (!parent || !parent->isDataTable())
+ return 0;
+
+ return parent;
+}
+
+void AccessibilityARIAGridCell::rowIndexRange(pair<int, int>& rowRange)
+{
+ AccessibilityObject* parent = parentObjectUnignored();
+ if (!parent || !parent->isTableRow())
+ return;
+
+ // as far as I can tell, grid cells cannot span rows
+ rowRange.first = static_cast<AccessibilityTableRow*>(parent)->rowIndex();
+ rowRange.second = 1;
+}
+
+void AccessibilityARIAGridCell::columnIndexRange(pair<int, int>& columnRange)
+{
+ AccessibilityObject* parent = parentObjectUnignored();
+ if (!parent || !parent->isTableRow())
+ return;
+
+ AccessibilityChildrenVector siblings = parent->children();
+ unsigned childrenSize = siblings.size();
+ for (unsigned k = 0; k < childrenSize; ++k) {
+ if (siblings[k].get() == this) {
+ columnRange.first = k;
+ break;
+ }
+ }
+
+ // as far as I can tell, grid cells cannot span columns
+ columnRange.second = 1;
+}
+
+} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridCell.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridCell.h
new file mode 100644
index 0000000..2923de8
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridCell.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AccessibilityARIAGridCell_h
+#define AccessibilityARIAGridCell_h
+
+#include "AccessibilityTableCell.h"
+
+namespace WebCore {
+
+class AccessibilityARIAGridCell : public AccessibilityTableCell {
+
+private:
+ AccessibilityARIAGridCell(RenderObject*);
+public:
+ static PassRefPtr<AccessibilityARIAGridCell> create(RenderObject*);
+ virtual ~AccessibilityARIAGridCell();
+
+ // fills in the start location and row span of cell
+ virtual void rowIndexRange(pair<int, int>& rowRange);
+ // fills in the start location and column span of cell
+ virtual void columnIndexRange(pair<int, int>& columnRange);
+
+protected:
+ virtual AccessibilityObject* parentTable() const;
+};
+
+} // namespace WebCore
+
+#endif // AccessibilityARIAGridCell_h
diff --git a/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridRow.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridRow.cpp
new file mode 100644
index 0000000..6e1f1c8
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridRow.cpp
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "AccessibilityARIAGridRow.h"
+
+#include "AccessibilityObject.h"
+#include "RenderObject.h"
+
+using namespace std;
+
+namespace WebCore {
+
+AccessibilityARIAGridRow::AccessibilityARIAGridRow(RenderObject* renderer)
+ : AccessibilityTableRow(renderer)
+{
+}
+
+AccessibilityARIAGridRow::~AccessibilityARIAGridRow()
+{
+}
+
+PassRefPtr<AccessibilityARIAGridRow> AccessibilityARIAGridRow::create(RenderObject* renderer)
+{
+ return adoptRef(new AccessibilityARIAGridRow(renderer));
+}
+
+AccessibilityObject* AccessibilityARIAGridRow::parentTable() const
+{
+ AccessibilityObject* parent = parentObjectUnignored();
+ if (!parent->isDataTable())
+ return 0;
+
+ return parent;
+}
+
+AccessibilityObject* AccessibilityARIAGridRow::headerObject()
+{
+ AccessibilityChildrenVector rowChildren = children();
+ unsigned childrenCount = rowChildren.size();
+ for (unsigned i = 0; i < childrenCount; ++i) {
+ AccessibilityObject* cell = rowChildren[i].get();
+ if (cell->ariaRoleAttribute() == RowHeaderRole)
+ return cell;
+ }
+
+ return 0;
+}
+
+} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridRow.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridRow.h
new file mode 100644
index 0000000..c2ca8b8
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityARIAGridRow.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AccessibilityARIAGridRow_h
+#define AccessibilityARIAGridRow_h
+
+#include "AccessibilityTableRow.h"
+
+namespace WebCore {
+
+class AccessibilityARIAGridRow : public AccessibilityTableRow {
+
+private:
+ AccessibilityARIAGridRow(RenderObject*);
+public:
+ static PassRefPtr<AccessibilityARIAGridRow> create(RenderObject*);
+ virtual ~AccessibilityARIAGridRow();
+
+ virtual AccessibilityObject* headerObject();
+ virtual AccessibilityObject* parentTable() const;
+};
+
+} // namespace WebCore
+
+#endif // AccessibilityARIAGridRow_h
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityImageMapLink.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityImageMapLink.cpp
index 5557446..943122e 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityImageMapLink.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityImageMapLink.cpp
@@ -65,7 +65,7 @@ AccessibilityObject* AccessibilityImageMapLink::parentObject() const
if (!m_mapElement || !m_mapElement->renderer())
return 0;
- return m_mapElement->document()->axObjectCache()->get(m_mapElement->renderer());
+ return m_mapElement->document()->axObjectCache()->getOrCreate(m_mapElement->renderer());
}
Element* AccessibilityImageMapLink::actionElement() const
@@ -78,6 +78,14 @@ Element* AccessibilityImageMapLink::anchorElement() const
return m_areaElement;
}
+KURL AccessibilityImageMapLink::url() const
+{
+ if (!m_areaElement)
+ return KURL();
+
+ return m_areaElement->href();
+}
+
String AccessibilityImageMapLink::accessibilityDescription() const
{
if (!m_areaElement)
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityImageMapLink.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityImageMapLink.h
index 7fc8d3c..2c27e46 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityImageMapLink.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityImageMapLink.h
@@ -49,11 +49,12 @@ public:
virtual AccessibilityRole roleValue() const { return WebCoreLinkRole; }
virtual bool accessibilityIsIgnored() const { return false; }
+ virtual bool isEnabled() const { return true; }
virtual AccessibilityObject* parentObject() const;
virtual Element* anchorElement() const;
virtual Element* actionElement() const;
-
+ virtual KURL url() const;
virtual bool isLink() const { return true; }
virtual String title() const;
virtual String accessibilityDescription() const;
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityList.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityList.cpp
index ad71ff4..3b7c7a4 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityList.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityList.cpp
@@ -56,10 +56,10 @@ PassRefPtr<AccessibilityList> AccessibilityList::create(RenderObject* renderer)
bool AccessibilityList::accessibilityIsIgnored() const
{
// lists don't appear on tiger/leopard on the mac
-#if PLATFORM(MAC) && (defined(BUILDING_ON_TIGER) || defined(BUILDING_ON_LEOPARD))
- return true;
-#else
+#if ACCESSIBILITY_LISTS
return false;
+#else
+ return true;
#endif
}
@@ -68,8 +68,8 @@ bool AccessibilityList::isUnorderedList() const
if (!m_renderer)
return false;
- Node* element = m_renderer->element();
- return element && element->hasTagName(ulTag);
+ Node* node = m_renderer->node();
+ return node && node->hasTagName(ulTag);
}
bool AccessibilityList::isOrderedList() const
@@ -77,8 +77,8 @@ bool AccessibilityList::isOrderedList() const
if (!m_renderer)
return false;
- Node* element = m_renderer->element();
- return element && element->hasTagName(olTag);
+ Node* node = m_renderer->node();
+ return node && node->hasTagName(olTag);
}
bool AccessibilityList::isDefinitionList() const
@@ -86,8 +86,8 @@ bool AccessibilityList::isDefinitionList() const
if (!m_renderer)
return false;
- Node* element = m_renderer->element();
- return element && element->hasTagName(dlTag);
+ Node* node = m_renderer->node();
+ return node && node->hasTagName(dlTag);
}
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityList.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityList.h
index 315ccac..89befb2 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityList.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityList.h
@@ -29,6 +29,12 @@
#ifndef AccessibilityList_h
#define AccessibilityList_h
+#if PLATFORM(MAC) && (defined(BUILDING_ON_TIGER) || defined(BUILDING_ON_LEOPARD))
+#define ACCESSIBILITY_LISTS 0
+#else
+#define ACCESSIBILITY_LISTS 1
+#endif
+
#include "AccessibilityRenderObject.h"
namespace WebCore {
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityListBox.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBox.cpp
index b94ccef..e38aff5 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityListBox.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBox.cpp
@@ -74,10 +74,12 @@ void AccessibilityListBox::addChildren()
m_haveChildren = true;
- const Vector<HTMLElement*>& listItems = static_cast<HTMLSelectElement*>(selectNode)->listItems();
+ const Vector<Element*>& listItems = static_cast<HTMLSelectElement*>(selectNode)->listItems();
unsigned length = listItems.size();
for (unsigned i = 0; i < length; i++) {
- AccessibilityObject* listOption = listBoxOptionAccessibilityObject(listItems[i]);
+ // The cast to HTMLElement below is safe because the only other possible listItem type
+ // would be a WMLElement, but WML builds don't use accessbility features at all.
+ AccessibilityObject* listOption = listBoxOptionAccessibilityObject(static_cast<HTMLElement*>(listItems[i]));
if (listOption)
m_children.append(listOption);
}
@@ -144,7 +146,7 @@ AccessibilityObject* AccessibilityListBox::listBoxOptionAccessibilityObject(HTML
if (!element || element->hasTagName(hrTag))
return 0;
- AccessibilityObject* listBoxObject = m_renderer->document()->axObjectCache()->get(ListBoxOptionRole);
+ AccessibilityObject* listBoxObject = m_renderer->document()->axObjectCache()->getOrCreate(ListBoxOptionRole);
static_cast<AccessibilityListBoxOption*>(listBoxObject)->setHTMLElement(element);
return listBoxObject;
@@ -157,21 +159,23 @@ AccessibilityObject* AccessibilityListBox::doAccessibilityHitTest(const IntPoint
if (!m_renderer)
return 0;
- Node* element = m_renderer->element();
- if (!element)
+ Node* node = m_renderer->node();
+ if (!node)
return 0;
IntRect parentRect = boundingBoxRect();
- const Vector<HTMLElement*>& listItems = static_cast<HTMLSelectElement*>(element)->listItems();
+ const Vector<Element*>& listItems = static_cast<HTMLSelectElement*>(node)->listItems();
unsigned length = listItems.size();
for (unsigned i = 0; i < length; i++) {
IntRect rect = static_cast<RenderListBox*>(m_renderer)->itemBoundingBoxRect(parentRect.x(), parentRect.y(), i);
+ // The cast to HTMLElement below is safe because the only other possible listItem type
+ // would be a WMLElement, but WML builds don't use accessbility features at all.
if (rect.contains(point))
- return listBoxOptionAccessibilityObject(listItems[i]);
+ return listBoxOptionAccessibilityObject(static_cast<HTMLElement*>(listItems[i]));
}
- return axObjectCache()->get(m_renderer);
+ return axObjectCache()->getOrCreate(m_renderer);
}
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityListBox.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBox.h
index 3f3352d..3f3352d 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityListBox.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBox.h
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityListBoxOption.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBoxOption.cpp
index fedfe91..a5cd5da 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityListBoxOption.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBoxOption.cpp
@@ -97,7 +97,7 @@ IntRect AccessibilityListBoxOption::elementRect() const
if (!listBoxRenderer)
return rect;
- IntRect parentRect = listBoxRenderer->document()->axObjectCache()->get(listBoxRenderer)->boundingBoxRect();
+ IntRect parentRect = listBoxRenderer->document()->axObjectCache()->getOrCreate(listBoxRenderer)->boundingBoxRect();
int index = listBoxOptionIndex();
if (index != -1)
rect = static_cast<RenderListBox*>(listBoxRenderer)->itemBoundingBoxRect(parentRect.x(), parentRect.y(), index);
@@ -153,7 +153,7 @@ AccessibilityObject* AccessibilityListBoxOption::parentObject() const
if (!parentNode)
return 0;
- return m_optionElement->document()->axObjectCache()->get(parentNode->renderer());
+ return m_optionElement->document()->axObjectCache()->getOrCreate(parentNode->renderer());
}
void AccessibilityListBoxOption::setSelected(bool selected)
@@ -195,7 +195,7 @@ int AccessibilityListBoxOption::listBoxOptionIndex() const
if (!selectElement)
return -1;
- const Vector<HTMLElement*>& listItems = selectElement->listItems();
+ const Vector<Element*>& listItems = selectElement->listItems();
unsigned length = listItems.size();
for (unsigned i = 0; i < length; i++)
if (listItems[i] == m_optionElement)
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityListBoxOption.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBoxOption.h
index 1b588cd..1b588cd 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityListBoxOption.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBoxOption.h
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityObject.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityObject.cpp
index 0b072cf..dccff82 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityObject.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityObject.cpp
@@ -75,7 +75,6 @@ AccessibilityObject::~AccessibilityObject()
void AccessibilityObject::detach()
{
- removeAXObjectID();
#if HAVE(ACCESSIBILITY)
setWrapper(0);
#endif
@@ -114,6 +113,11 @@ AccessibilityObject* AccessibilityObject::parentObjectUnignored() const
return parent;
}
+AccessibilityObject* AccessibilityObject::parentObjectIfExists() const
+{
+ return 0;
+}
+
int AccessibilityObject::layoutCount() const
{
return 0;
@@ -231,9 +235,9 @@ const AtomicString& AccessibilityObject::accessKey() const
return nullAtom;
}
-Selection AccessibilityObject::selection() const
+VisibleSelection AccessibilityObject::selection() const
{
- return Selection();
+ return VisibleSelection();
}
PlainTextRange AccessibilityObject::selectedTextRange() const
@@ -357,7 +361,7 @@ VisiblePositionRange AccessibilityObject::visiblePositionRangeForUnorderedPositi
// use selection order to see if the positions are in order
else
- alreadyInOrder = Selection(visiblePos1, visiblePos2).isBaseFirst();
+ alreadyInOrder = VisibleSelection(visiblePos1, visiblePos2).isBaseFirst();
if (alreadyInOrder) {
startPos = visiblePos1;
@@ -400,7 +404,7 @@ static VisiblePosition updateAXLineStartForVisiblePosition(const VisiblePosition
if (!p.node())
break;
renderer = p.node()->renderer();
- if (!renderer || renderer->isRenderBlock() && !p.offset())
+ if (!renderer || (renderer->isRenderBlock() && !p.deprecatedEditingOffset()))
break;
InlineBox* box;
int ignoredCaretOffset;
@@ -514,7 +518,7 @@ static VisiblePosition startOfStyleRange(const VisiblePosition visiblePos)
return VisiblePosition(startRenderer->node(), 0, VP_DEFAULT_AFFINITY);
}
-static VisiblePosition endOfStyleRange(const VisiblePosition visiblePos)
+static VisiblePosition endOfStyleRange(const VisiblePosition& visiblePos)
{
RenderObject* renderer = visiblePos.deepEquivalent().node()->renderer();
RenderObject* endRenderer = renderer;
@@ -534,7 +538,7 @@ static VisiblePosition endOfStyleRange(const VisiblePosition visiblePos)
endRenderer = r;
}
- return VisiblePosition(endRenderer->node(), maxDeepOffset(endRenderer->node()), VP_DEFAULT_AFFINITY);
+ return lastDeepEditingPositionForNode(endRenderer->node());
}
VisiblePositionRange AccessibilityObject::styleRangeForPosition(const VisiblePosition& visiblePos) const
@@ -566,7 +570,7 @@ static bool replacedNodeNeedsCharacter(Node* replacedNode)
}
// create an AX object, but skip it if it is not supposed to be seen
- AccessibilityObject* object = replacedNode->renderer()->document()->axObjectCache()->get(replacedNode->renderer());
+ AccessibilityObject* object = replacedNode->renderer()->document()->axObjectCache()->getOrCreate(replacedNode->renderer());
if (object->accessibilityIsIgnored())
return false;
@@ -739,7 +743,8 @@ VisiblePosition AccessibilityObject::nextSentenceEndPosition(const VisiblePositi
// an empty line is considered a sentence. If it's skipped, then the sentence parser will not
// see this empty line. Instead, return the end position of the empty line.
VisiblePosition endPosition;
- String lineString = plainText(makeRange(startOfLine(visiblePos), endOfLine(visiblePos)).get());
+
+ String lineString = plainText(makeRange(startOfLine(nextVisiblePos), endOfLine(nextVisiblePos)).get());
if (lineString.isEmpty())
endPosition = nextVisiblePos;
else
@@ -762,6 +767,7 @@ VisiblePosition AccessibilityObject::previousSentenceStartPosition(const Visible
// treat empty line as a separate sentence.
VisiblePosition startPosition;
+
String lineString = plainText(makeRange(startOfLine(previousVisiblePos), endOfLine(previousVisiblePos)).get());
if (lineString.isEmpty())
startPosition = previousVisiblePos;
@@ -812,7 +818,7 @@ AccessibilityObject* AccessibilityObject::accessibilityObjectForPosition(const V
if (!obj)
return 0;
- return obj->document()->axObjectCache()->get(obj);
+ return obj->document()->axObjectCache()->getOrCreate(obj);
}
int AccessibilityObject::lineForPosition(const VisiblePosition& visiblePos) const
@@ -994,11 +1000,6 @@ void AccessibilityObject::setAXObjectID(unsigned axObjectID)
m_id = axObjectID;
}
-void AccessibilityObject::removeAXObjectID()
-{
- return;
-}
-
const String& AccessibilityObject::actionVerb() const
{
// FIXME: Need to add verbs for select elements.
@@ -1028,4 +1029,8 @@ const String& AccessibilityObject::actionVerb() const
}
}
+void AccessibilityObject::updateBackingStore()
+{
+}
+
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityObject.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityObject.h
index e177ee7..f71be99 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityObject.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityObject.h
@@ -83,7 +83,7 @@ class IntPoint;
class IntSize;
class Node;
class RenderObject;
-class Selection;
+class VisibleSelection;
class String;
class Widget;
@@ -136,6 +136,8 @@ enum AccessibilityRole {
DisclosureTriangleRole,
GridRole,
CellRole,
+ ColumnHeaderRole,
+ RowHeaderRole,
// AppKit includes SortButtonRole but it is misnamed and really a subrole of ButtonRole so we do not include it here.
// WebCore-specific roles
@@ -213,6 +215,7 @@ public:
virtual bool isMenuButton() const { return false; }
virtual bool isMenuItem() const { return false; }
virtual bool isFileUploadButton() const { return false; };
+ virtual bool isInputImage() const { return false; }
virtual bool isProgressIndicator() const { return false; };
virtual bool isSlider() const { return false; };
virtual bool isControl() const { return false; };
@@ -251,7 +254,7 @@ public:
virtual int intValue() const;
virtual float valueForRange() const { return 0.0f; }
virtual float maxValueForRange() const { return 0.0f; }
- virtual float minValueForRange() const {return 0.0f; }
+ virtual float minValueForRange() const { return 0.0f; }
virtual int layoutCount() const;
static bool isARIAControl(AccessibilityRole);
static bool isARIAInput(AccessibilityRole);
@@ -265,9 +268,11 @@ public:
virtual AccessibilityObject* nextSibling() const;
virtual AccessibilityObject* parentObject() const;
virtual AccessibilityObject* parentObjectUnignored() const;
+ virtual AccessibilityObject* parentObjectIfExists() const;
virtual AccessibilityObject* observableObject() const;
virtual void linkedUIElements(AccessibilityChildrenVector&) const;
virtual AccessibilityObject* titleUIElement() const;
+ virtual bool exposesTitleUIElement() const { return true; }
virtual AccessibilityRole ariaRoleAttribute() const;
virtual bool isPresentationalChildOfAriaRole() const;
virtual bool ariaRoleHasPresentationalChildren() const;
@@ -284,7 +289,7 @@ public:
virtual KURL url() const;
virtual PlainTextRange selectedTextRange() const;
- virtual Selection selection() const;
+ virtual VisibleSelection selection() const;
unsigned selectionStart() const;
unsigned selectionEnd() const;
virtual String stringValue() const;
@@ -399,13 +404,16 @@ public:
bool accessibilityIgnoreAttachment() const { return true; }
#endif
+ // allows for an AccessibilityObject to update its render tree or perform
+ // other operations update type operations
+ virtual void updateBackingStore();
+
protected:
unsigned m_id;
AccessibilityChildrenVector m_children;
mutable bool m_haveChildren;
virtual void clearChildren();
- virtual void removeAXObjectID();
virtual bool isDetached() const { return true; }
#if PLATFORM(MAC)
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityRenderObject.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityRenderObject.cpp
index dee7eea..8c522a1 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityRenderObject.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityRenderObject.cpp
@@ -39,6 +39,7 @@
#include "Frame.h"
#include "FrameLoader.h"
#include "HTMLAreaElement.h"
+#include "HTMLFormElement.h"
#include "HTMLFrameElementBase.h"
#include "HTMLImageElement.h"
#include "HTMLInputElement.h"
@@ -53,14 +54,16 @@
#include "HitTestResult.h"
#include "LocalizedStrings.h"
#include "NodeList.h"
-#include "NotImplemented.h"
#include "Page.h"
#include "RenderFieldset.h"
#include "RenderFileUploadControl.h"
+#include "RenderHTMLCanvas.h"
#include "RenderImage.h"
+#include "RenderInline.h"
#include "RenderListBox.h"
#include "RenderListMarker.h"
#include "RenderMenuList.h"
+#include "RenderText.h"
#include "RenderTextControl.h"
#include "RenderTheme.h"
#include "RenderView.h"
@@ -119,7 +122,7 @@ AccessibilityObject* AccessibilityRenderObject::firstChild() const
if (!firstChild)
return 0;
- return m_renderer->document()->axObjectCache()->get(firstChild);
+ return m_renderer->document()->axObjectCache()->getOrCreate(firstChild);
}
AccessibilityObject* AccessibilityRenderObject::lastChild() const
@@ -131,7 +134,7 @@ AccessibilityObject* AccessibilityRenderObject::lastChild() const
if (!lastChild)
return 0;
- return m_renderer->document()->axObjectCache()->get(lastChild);
+ return m_renderer->document()->axObjectCache()->getOrCreate(lastChild);
}
AccessibilityObject* AccessibilityRenderObject::previousSibling() const
@@ -143,7 +146,7 @@ AccessibilityObject* AccessibilityRenderObject::previousSibling() const
if (!previousSibling)
return 0;
- return m_renderer->document()->axObjectCache()->get(previousSibling);
+ return m_renderer->document()->axObjectCache()->getOrCreate(previousSibling);
}
AccessibilityObject* AccessibilityRenderObject::nextSibling() const
@@ -155,9 +158,21 @@ AccessibilityObject* AccessibilityRenderObject::nextSibling() const
if (!nextSibling)
return 0;
- return m_renderer->document()->axObjectCache()->get(nextSibling);
+ return m_renderer->document()->axObjectCache()->getOrCreate(nextSibling);
}
+AccessibilityObject* AccessibilityRenderObject::parentObjectIfExists() const
+{
+ if (!m_renderer)
+ return 0;
+
+ RenderObject *parent = m_renderer->parent();
+ if (!parent)
+ return 0;
+
+ return m_renderer->document()->axObjectCache()->get(parent);
+}
+
AccessibilityObject* AccessibilityRenderObject::parentObject() const
{
if (!m_renderer)
@@ -168,7 +183,7 @@ AccessibilityObject* AccessibilityRenderObject::parentObject() const
return 0;
if (ariaRoleAttribute() == MenuBarRole)
- return m_renderer->document()->axObjectCache()->get(parent);
+ return m_renderer->document()->axObjectCache()->getOrCreate(parent);
// menuButton and its corresponding menu are DOM siblings, but Accessibility needs them to be parent/child
if (ariaRoleAttribute() == MenuRole) {
@@ -177,7 +192,7 @@ AccessibilityObject* AccessibilityRenderObject::parentObject() const
return parent;
}
- return m_renderer->document()->axObjectCache()->get(parent);
+ return m_renderer->document()->axObjectCache()->getOrCreate(parent);
}
bool AccessibilityRenderObject::isWebArea() const
@@ -197,7 +212,7 @@ bool AccessibilityRenderObject::isAnchor() const
bool AccessibilityRenderObject::isNativeTextControl() const
{
- return m_renderer->isTextField() || m_renderer->isTextArea();
+ return m_renderer->isTextControl();
}
bool AccessibilityRenderObject::isTextControl() const
@@ -218,6 +233,9 @@ bool AccessibilityRenderObject::isImage() const
bool AccessibilityRenderObject::isAttachment() const
{
+ if (!m_renderer)
+ return false;
+
// Widgets are the replaced elements that we represent to AX as attachments
bool isWidget = m_renderer && m_renderer->isWidget();
ASSERT(!isWidget || (m_renderer->isReplaced() && !isImage()));
@@ -227,9 +245,16 @@ bool AccessibilityRenderObject::isAttachment() const
bool AccessibilityRenderObject::isPasswordField() const
{
ASSERT(m_renderer);
- if (!m_renderer->element() || !m_renderer->element()->isHTMLElement())
+ if (!m_renderer->node() || !m_renderer->node()->isHTMLElement())
+ return false;
+ if (ariaRoleAttribute() != UnknownRole)
+ return false;
+
+ InputElement* inputElement = toInputElement(static_cast<Element*>(m_renderer->node()));
+ if (!inputElement)
return false;
- return static_cast<HTMLElement*>(m_renderer->element())->isPasswordField() && ariaRoleAttribute() == UnknownRole;
+
+ return inputElement->isPasswordField();
}
bool AccessibilityRenderObject::isCheckboxOrRadio() const
@@ -240,13 +265,23 @@ bool AccessibilityRenderObject::isCheckboxOrRadio() const
bool AccessibilityRenderObject::isFileUploadButton() const
{
- if (m_renderer && m_renderer->element() && m_renderer->element()->hasTagName(inputTag)) {
- HTMLInputElement* input = static_cast<HTMLInputElement*>(m_renderer->element());
+ if (m_renderer && m_renderer->node() && m_renderer->node()->hasTagName(inputTag)) {
+ HTMLInputElement* input = static_cast<HTMLInputElement*>(m_renderer->node());
return input->inputType() == HTMLInputElement::FILE;
}
return false;
}
+
+bool AccessibilityRenderObject::isInputImage() const
+{
+ if (m_renderer && m_renderer->node() && m_renderer->node()->hasTagName(inputTag)) {
+ HTMLInputElement* input = static_cast<HTMLInputElement*>(m_renderer->node());
+ return input->inputType() == HTMLInputElement::IMAGE;
+ }
+
+ return false;
+}
bool AccessibilityRenderObject::isProgressIndicator() const
{
@@ -310,13 +345,27 @@ bool AccessibilityRenderObject::isPressed() const
bool AccessibilityRenderObject::isIndeterminate() const
{
ASSERT(m_renderer);
- return m_renderer->node() && m_renderer->node()->isIndeterminate();
+ if (!m_renderer->node() || !m_renderer->node()->isElementNode())
+ return false;
+
+ InputElement* inputElement = toInputElement(static_cast<Element*>(m_renderer->node()));
+ if (!inputElement)
+ return false;
+
+ return inputElement->isIndeterminate();
}
bool AccessibilityRenderObject::isChecked() const
{
ASSERT(m_renderer);
- return m_renderer->node() && m_renderer->node()->isChecked();
+ if (!m_renderer->node() || !m_renderer->node()->isElementNode())
+ return false;
+
+ InputElement* inputElement = toInputElement(static_cast<Element*>(m_renderer->node()));
+ if (!inputElement)
+ return false;
+
+ return inputElement->isChecked();
}
bool AccessibilityRenderObject::isHovered() const
@@ -330,7 +379,7 @@ bool AccessibilityRenderObject::isMultiSelect() const
ASSERT(m_renderer);
if (!m_renderer->isListBox())
return false;
- return m_renderer->element() && static_cast<HTMLSelectElement*>(m_renderer->element())->multiple();
+ return m_renderer->node() && static_cast<HTMLSelectElement*>(m_renderer->node())->multiple();
}
bool AccessibilityRenderObject::isReadOnly() const
@@ -373,7 +422,7 @@ int AccessibilityRenderObject::headingLevel(Node* node)
return 0;
if (RenderObject* renderer = node->renderer()) {
- AccessibilityObject* axObjectForNode = node->document()->axObjectCache()->get(renderer);
+ AccessibilityObject* axObjectForNode = node->document()->axObjectCache()->getOrCreate(renderer);
if (axObjectForNode->ariaRoleAttribute() == HeadingRole) {
if (!node->isElementNode())
return 0;
@@ -419,8 +468,9 @@ bool AccessibilityRenderObject::isControl() const
if (!m_renderer)
return false;
- Node* node = m_renderer->element();
- return node && (node->isControl() || AccessibilityObject::isARIAControl(ariaRoleAttribute()));
+ Node* node = m_renderer->node();
+ return node && ((node->isElementNode() && static_cast<Element*>(node)->isFormControlElement())
+ || AccessibilityObject::isARIAControl(ariaRoleAttribute()));
}
bool AccessibilityRenderObject::isFieldset() const
@@ -438,7 +488,7 @@ bool AccessibilityRenderObject::isGroup() const
const AtomicString& AccessibilityRenderObject::getAttribute(const QualifiedName& attribute) const
{
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
if (!node)
return nullAtom;
@@ -458,9 +508,12 @@ Element* AccessibilityRenderObject::anchorElement() const
RenderObject* currRenderer;
// Search up the render tree for a RenderObject with a DOM node. Defer to an earlier continuation, though.
- for (currRenderer = m_renderer; currRenderer && !currRenderer->element(); currRenderer = currRenderer->parent()) {
- if (currRenderer->continuation())
- return cache->get(currRenderer->continuation())->anchorElement();
+ for (currRenderer = m_renderer; currRenderer && !currRenderer->node(); currRenderer = currRenderer->parent()) {
+ if (currRenderer->isRenderBlock()) {
+ RenderInline* continuation = toRenderBlock(currRenderer)->inlineContinuation();
+ if (continuation)
+ return cache->getOrCreate(continuation)->anchorElement();
+ }
}
// bail if none found
@@ -471,7 +524,7 @@ Element* AccessibilityRenderObject::anchorElement() const
// NOTE: this assumes that any non-image with an anchor is an HTMLAnchorElement
Node* node = currRenderer->node();
for ( ; node; node = node->parentNode()) {
- if (node->hasTagName(aTag) || (node->renderer() && cache->get(node->renderer())->isAnchor()))
+ if (node->hasTagName(aTag) || (node->renderer() && cache->getOrCreate(node->renderer())->isAnchor()))
return static_cast<Element*>(node);
}
@@ -480,24 +533,31 @@ Element* AccessibilityRenderObject::anchorElement() const
Element* AccessibilityRenderObject::actionElement() const
{
- if (m_renderer->element() && m_renderer->element()->hasTagName(inputTag)) {
- HTMLInputElement* input = static_cast<HTMLInputElement*>(m_renderer->element());
- if (!input->disabled() && (isCheckboxOrRadio() || input->isTextButton()))
- return input;
+ if (!m_renderer)
+ return 0;
+
+ Node* node = m_renderer->node();
+ if (node) {
+ if (node->hasTagName(inputTag)) {
+ HTMLInputElement* input = static_cast<HTMLInputElement*>(node);
+ if (!input->disabled() && (isCheckboxOrRadio() || input->isTextButton()))
+ return input;
+ } else if (node->hasTagName(buttonTag))
+ return static_cast<Element*>(node);
}
if (isFileUploadButton())
- return static_cast<Element*>(m_renderer->element());
+ return static_cast<Element*>(m_renderer->node());
if (AccessibilityObject::isARIAInput(ariaRoleAttribute()))
- return static_cast<Element*>(m_renderer->element());
+ return static_cast<Element*>(m_renderer->node());
if (isImageButton())
- return static_cast<Element*>(m_renderer->element());
+ return static_cast<Element*>(m_renderer->node());
if (m_renderer->isMenuList())
- return static_cast<RenderMenuList*>(m_renderer)->selectElement();
-
+ return static_cast<Element*>(m_renderer->node());
+
Element* elt = anchorElement();
if (!elt)
elt = mouseButtonListener();
@@ -506,18 +566,23 @@ Element* AccessibilityRenderObject::actionElement() const
Element* AccessibilityRenderObject::mouseButtonListener() const
{
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
if (!node)
return 0;
- if (!node->isEventTargetNode())
- return 0;
+ // check if our parent is a mouse button listener
+ while (node && !node->isElementNode())
+ node = node->parent();
+
+ if (!node)
+ return 0;
+
// FIXME: Do the continuation search like anchorElement does
- for (EventTargetNode* elt = static_cast<EventTargetNode*>(node); elt; elt = static_cast<EventTargetNode*>(elt->parentNode())) {
- if (elt->inlineEventListenerForType(eventNames().clickEvent) || elt->inlineEventListenerForType(eventNames().mousedownEvent) || elt->inlineEventListenerForType(eventNames().mouseupEvent))
- return static_cast<Element*>(elt);
+ for (Element* element = static_cast<Element*>(node); element; element = element->parentElement()) {
+ if (element->getAttributeEventListener(eventNames().clickEvent) || element->getAttributeEventListener(eventNames().mousedownEvent) || element->getAttributeEventListener(eventNames().mouseupEvent))
+ return element;
}
-
+
return 0;
}
@@ -548,7 +613,7 @@ AccessibilityObject* AccessibilityRenderObject::menuForMenuButton() const
{
Element* menu = menuElementForMenuButton();
if (menu && menu->renderer())
- return m_renderer->document()->axObjectCache()->get(menu->renderer());
+ return m_renderer->document()->axObjectCache()->getOrCreate(menu->renderer());
return 0;
}
@@ -566,7 +631,7 @@ AccessibilityObject* AccessibilityRenderObject::menuButtonForMenu() const
if (menuItem && menuItem->renderer()) {
// ARIA just has generic menu items. AppKit needs to know if this is a top level items like MenuBarButton or MenuBarItem
- AccessibilityObject* menuItemAX = m_renderer->document()->axObjectCache()->get(menuItem->renderer());
+ AccessibilityObject* menuItemAX = m_renderer->document()->axObjectCache()->getOrCreate(menuItem->renderer());
if (menuItemAX->isMenuButton())
return menuItemAX;
}
@@ -579,11 +644,11 @@ String AccessibilityRenderObject::helpText() const
return String();
for (RenderObject* curr = m_renderer; curr; curr = curr->parent()) {
- if (curr->element() && curr->element()->isHTMLElement()) {
- const AtomicString& summary = static_cast<Element*>(curr->element())->getAttribute(summaryAttr);
+ if (curr->node() && curr->node()->isHTMLElement()) {
+ const AtomicString& summary = static_cast<Element*>(curr->node())->getAttribute(summaryAttr);
if (!summary.isEmpty())
return summary;
- const AtomicString& title = static_cast<Element*>(curr->element())->getAttribute(titleAttr);
+ const AtomicString& title = static_cast<Element*>(curr->node())->getAttribute(titleAttr);
if (!title.isEmpty())
return title;
}
@@ -602,7 +667,7 @@ String AccessibilityRenderObject::textUnderElement() const
return uploadControl->buttonValue();
}
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
if (node) {
if (Frame* frame = node->document()->frame()) {
// catch stale WebCoreAXObject (see <rdar://problem/3960196>)
@@ -622,7 +687,7 @@ bool AccessibilityRenderObject::hasIntValue() const
if (isHeading())
return true;
- if (m_renderer->element() && isCheckboxOrRadio())
+ if (m_renderer->node() && isCheckboxOrRadio())
return true;
return false;
@@ -634,9 +699,9 @@ int AccessibilityRenderObject::intValue() const
return 0;
if (isHeading())
- return headingLevel(m_renderer->element());
+ return headingLevel(m_renderer->node());
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
if (!node || !isCheckboxOrRadio())
return 0;
@@ -755,7 +820,7 @@ String AccessibilityRenderObject::ariaAccessiblityName(const String& s) const
if (idElement) {
String nameFragment = accessibleNameForNode(idElement);
ariaLabel.append(nameFragment.characters(), nameFragment.length());
- for (Node* n = idElement->firstChild(); n; n = n->traverseNextNode(idElement->nextSibling())) {
+ for (Node* n = idElement->firstChild(); n; n = n->traverseNextNode(idElement)) {
nameFragment = accessibleNameForNode(n);
ariaLabel.append(nameFragment.characters(), nameFragment.length());
}
@@ -811,7 +876,7 @@ HTMLLabelElement* AccessibilityRenderObject::labelElementContainer() const
return false;
// find if this has a parent that is a label
- for (Node* parentNode = m_renderer->element(); parentNode; parentNode = parentNode->parentNode()) {
+ for (Node* parentNode = m_renderer->node(); parentNode; parentNode = parentNode->parentNode()) {
if (parentNode->hasTagName(labelTag))
return static_cast<HTMLLabelElement*>(parentNode);
}
@@ -826,7 +891,7 @@ String AccessibilityRenderObject::title() const
if (!m_renderer)
return String();
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
if (!node)
return String();
@@ -847,8 +912,12 @@ String AccessibilityRenderObject::title() const
if (isInputTag || AccessibilityObject::isARIAInput(ariaRole) || isControl()) {
HTMLLabelElement* label = labelForElement(static_cast<Element*>(node));
- if (label)
+ if (label && !titleUIElement())
return label->innerText();
+
+ const AtomicString& placeholder = getAttribute(placeholderAttr);
+ if (!placeholder.isEmpty())
+ return placeholder;
}
if (roleValue() == ButtonRole
@@ -882,9 +951,10 @@ String AccessibilityRenderObject::accessibilityDescription() const
if (!ariaDescription.isEmpty())
return ariaDescription;
- if (isImage()) {
- if (m_renderer->element() && m_renderer->element()->isHTMLElement()) {
- const AtomicString& alt = static_cast<HTMLElement*>(m_renderer->element())->getAttribute(altAttr);
+ if (isImage() || isInputImage() || isNativeImage()) {
+ Node* node = m_renderer->node();
+ if (node && node->isHTMLElement()) {
+ const AtomicString& alt = static_cast<HTMLElement*>(node)->getAttribute(altAttr);
if (alt.isEmpty())
return String();
return alt;
@@ -919,29 +989,30 @@ String AccessibilityRenderObject::accessibilityDescription() const
IntRect AccessibilityRenderObject::boundingBoxRect() const
{
- IntRect rect;
RenderObject* obj = m_renderer;
if (!obj)
return IntRect();
- if (obj->isInlineContinuation())
- obj = obj->element()->renderer();
+ if (obj->node()) // If we are a continuation, we want to make sure to use the primary renderer.
+ obj = obj->node()->renderer();
- // FIXME: This doesn't work correctly with transforms.
- Vector<IntRect> rects;
- FloatPoint absPos = obj->localToAbsolute();
- obj->absoluteRects(rects, absPos.x(), absPos.y());
- const size_t n = rects.size();
+ Vector<FloatQuad> quads;
+ obj->absoluteQuads(quads);
+ const size_t n = quads.size();
+ if (!n)
+ return IntRect();
+
+ IntRect result;
for (size_t i = 0; i < n; ++i) {
- IntRect r = rects[i];
+ IntRect r = quads[i].enclosingBoundingBox();
if (!r.isEmpty()) {
if (obj->style()->hasAppearance())
theme()->adjustRepaintRect(obj, r);
- rect.unite(r);
+ result.unite(r);
}
}
- return rect;
+ return result;
}
IntRect AccessibilityRenderObject::checkboxOrRadioRect() const
@@ -949,11 +1020,11 @@ IntRect AccessibilityRenderObject::checkboxOrRadioRect() const
if (!m_renderer)
return IntRect();
- HTMLLabelElement* label = labelForElement(static_cast<Element*>(m_renderer->element()));
+ HTMLLabelElement* label = labelForElement(static_cast<Element*>(m_renderer->node()));
if (!label || !label->renderer())
return boundingBoxRect();
- IntRect labelRect = axObjectCache()->get(label->renderer())->elementRect();
+ IntRect labelRect = axObjectCache()->getOrCreate(label->renderer())->elementRect();
labelRect.unite(boundingBoxRect());
return labelRect;
}
@@ -999,7 +1070,7 @@ AccessibilityObject* AccessibilityRenderObject::internalLinkElement() const
return 0;
// the element we find may not be accessible, keep searching until we find a good one
- AccessibilityObject* linkedAXElement = m_renderer->document()->axObjectCache()->get(linkedNode->renderer());
+ AccessibilityObject* linkedAXElement = m_renderer->document()->axObjectCache()->getOrCreate(linkedNode->renderer());
while (linkedAXElement && linkedAXElement->accessibilityIsIgnored()) {
linkedNode = linkedNode->traverseNextNode();
@@ -1008,7 +1079,7 @@ AccessibilityObject* AccessibilityRenderObject::internalLinkElement() const
if (!linkedNode)
return 0;
- linkedAXElement = m_renderer->document()->axObjectCache()->get(linkedNode->renderer());
+ linkedAXElement = m_renderer->document()->axObjectCache()->getOrCreate(linkedNode->renderer());
}
return linkedAXElement;
@@ -1032,7 +1103,7 @@ void AccessibilityRenderObject::addRadioButtonGroupMembers(AccessibilityChildren
unsigned len = formElements.size();
for (unsigned i = 0; i < len; ++i) {
Node* associateElement = formElements[i].get();
- if (AccessibilityObject* object = m_renderer->document()->axObjectCache()->get(associateElement->renderer()))
+ if (AccessibilityObject* object = m_renderer->document()->axObjectCache()->getOrCreate(associateElement->renderer()))
linkedUIElements.append(object);
}
} else {
@@ -1042,7 +1113,7 @@ void AccessibilityRenderObject::addRadioButtonGroupMembers(AccessibilityChildren
if (list->item(i)->hasTagName(inputTag)) {
HTMLInputElement* associateElement = static_cast<HTMLInputElement*>(list->item(i));
if (associateElement->isRadioButton() && associateElement->name() == input->name()) {
- if (AccessibilityObject* object = m_renderer->document()->axObjectCache()->get(associateElement->renderer()))
+ if (AccessibilityObject* object = m_renderer->document()->axObjectCache()->getOrCreate(associateElement->renderer()))
linkedUIElements.append(object);
}
}
@@ -1064,6 +1135,18 @@ void AccessibilityRenderObject::linkedUIElements(AccessibilityChildrenVector& li
addRadioButtonGroupMembers(linkedUIElements);
}
+bool AccessibilityRenderObject::exposesTitleUIElement() const
+{
+ if (!isControl())
+ return false;
+
+ // checkbox or radio buttons don't expose the title ui element unless it has a title already
+ if (isCheckboxOrRadio() && getAttribute(titleAttr).isEmpty())
+ return false;
+
+ return true;
+}
+
AccessibilityObject* AccessibilityRenderObject::titleUIElement() const
{
if (!m_renderer)
@@ -1071,16 +1154,15 @@ AccessibilityObject* AccessibilityRenderObject::titleUIElement() const
// if isFieldset is true, the renderer is guaranteed to be a RenderFieldset
if (isFieldset())
- return axObjectCache()->get(static_cast<RenderFieldset*>(m_renderer)->findLegend());
+ return axObjectCache()->getOrCreate(static_cast<RenderFieldset*>(m_renderer)->findLegend());
- // checkbox and radio hide their labels. Only controls get titleUIElements for now
- if (isCheckboxOrRadio() || !isControl())
+ if (!exposesTitleUIElement())
return 0;
- Node* element = m_renderer->element();
+ Node* element = m_renderer->node();
HTMLLabelElement* label = labelForElement(static_cast<Element*>(element));
if (label && label->renderer())
- return axObjectCache()->get(label->renderer());
+ return axObjectCache()->getOrCreate(label->renderer());
return 0;
}
@@ -1106,8 +1188,8 @@ bool AccessibilityRenderObject::accessibilityIsIgnored() const
if (labelElement) {
HTMLElement* correspondingControl = labelElement->correspondingControl();
if (correspondingControl && correspondingControl->renderer()) {
- AccessibilityObject* controlObject = axObjectCache()->get(correspondingControl->renderer());
- if (controlObject->isCheckboxOrRadio())
+ AccessibilityObject* controlObject = axObjectCache()->getOrCreate(correspondingControl->renderer());
+ if (!controlObject->exposesTitleUIElement())
return true;
}
}
@@ -1124,7 +1206,12 @@ bool AccessibilityRenderObject::accessibilityIsIgnored() const
if (parentObjectUnignored()->ariaRoleAttribute() == MenuItemRole ||
parentObjectUnignored()->ariaRoleAttribute() == MenuButtonRole)
return true;
- return m_renderer->isBR() || !static_cast<RenderText*>(m_renderer)->firstTextBox();
+ RenderText* renderText = toRenderText(m_renderer);
+ if (m_renderer->isBR() || !renderText->firstTextBox())
+ return true;
+
+ // text elements that are just empty whitespace should not be returned
+ return renderText->text()->containsOnlyWhitespace();
}
if (isHeading())
@@ -1138,12 +1225,12 @@ bool AccessibilityRenderObject::accessibilityIsIgnored() const
return false;
// don't ignore labels, because they serve as TitleUIElements
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
if (node && node->hasTagName(labelTag))
return false;
if (m_renderer->isBlockFlow() && m_renderer->childrenInline())
- return !static_cast<RenderBlock*>(m_renderer)->firstLineBox() && !mouseButtonListener();
+ return !toRenderBlock(m_renderer)->firstLineBox() && !mouseButtonListener();
// ignore images seemingly used as spacers
if (isImage()) {
@@ -1158,13 +1245,20 @@ bool AccessibilityRenderObject::accessibilityIsIgnored() const
return true;
}
+ if (node && node->hasTagName(canvasTag)) {
+ RenderHTMLCanvas* canvas = static_cast<RenderHTMLCanvas*>(m_renderer);
+ if (canvas->height() <= 1 || canvas->width() <= 1)
+ return true;
+ return false;
+ }
+
// check for one-dimensional image
- if (m_renderer->height() <= 1 || m_renderer->width() <= 1)
+ RenderImage* image = toRenderImage(m_renderer);
+ if (image->height() <= 1 || image->width() <= 1)
return true;
// check whether rendered image was stretched from one-dimensional file image
if (isNativeImage()) {
- RenderImage* image = static_cast<RenderImage*>(m_renderer);
if (image->cachedImage()) {
IntSize imageSize = image->cachedImage()->imageSize(image->view()->zoomFactor());
return imageSize.height() <= 1 || imageSize.width() <= 1;
@@ -1192,7 +1286,7 @@ int AccessibilityRenderObject::layoutCount() const
{
if (!m_renderer->isRenderView())
return 0;
- return static_cast<RenderView*>(m_renderer)->frameView()->layoutCount();
+ return toRenderView(m_renderer)->frameView()->layoutCount();
}
String AccessibilityRenderObject::text() const
@@ -1201,9 +1295,9 @@ String AccessibilityRenderObject::text() const
return String();
if (isNativeTextControl())
- return static_cast<RenderTextControl*>(m_renderer)->text();
+ return toRenderTextControl(m_renderer)->text();
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
if (!node)
return String();
if (!node->isElementNode())
@@ -1224,11 +1318,11 @@ int AccessibilityRenderObject::textLength() const
PassRefPtr<Range> AccessibilityRenderObject::ariaSelectedTextDOMRange() const
{
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
if (!node)
return 0;
- RefPtr<Range> currentSelectionRange = selection().toRange();
+ RefPtr<Range> currentSelectionRange = selection().toNormalizedRange();
if (!currentSelectionRange)
return 0;
@@ -1261,7 +1355,7 @@ String AccessibilityRenderObject::selectedText() const
return String(); // need to return something distinct from empty string
if (isNativeTextControl()) {
- RenderTextControl* textControl = static_cast<RenderTextControl*>(m_renderer);
+ RenderTextControl* textControl = toRenderTextControl(m_renderer);
return textControl->text().substring(textControl->selectionStart(), textControl->selectionEnd() - textControl->selectionStart());
}
@@ -1276,7 +1370,7 @@ String AccessibilityRenderObject::selectedText() const
const AtomicString& AccessibilityRenderObject::accessKey() const
{
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
if (!node)
return nullAtom;
if (!node->isElementNode())
@@ -1284,7 +1378,7 @@ const AtomicString& AccessibilityRenderObject::accessKey() const
return static_cast<Element*>(node)->getAttribute(accesskeyAttr);
}
-Selection AccessibilityRenderObject::selection() const
+VisibleSelection AccessibilityRenderObject::selection() const
{
return m_renderer->document()->frame()->selection()->selection();
}
@@ -1298,7 +1392,7 @@ PlainTextRange AccessibilityRenderObject::selectedTextRange() const
AccessibilityRole ariaRole = ariaRoleAttribute();
if (isNativeTextControl() && ariaRole == UnknownRole) {
- RenderTextControl* textControl = static_cast<RenderTextControl*>(m_renderer);
+ RenderTextControl* textControl = toRenderTextControl(m_renderer);
return PlainTextRange(textControl->selectionStart(), textControl->selectionEnd() - textControl->selectionStart());
}
@@ -1314,7 +1408,7 @@ PlainTextRange AccessibilityRenderObject::selectedTextRange() const
void AccessibilityRenderObject::setSelectedTextRange(const PlainTextRange& range)
{
if (isNativeTextControl()) {
- RenderTextControl* textControl = static_cast<RenderTextControl*>(m_renderer);
+ RenderTextControl* textControl = toRenderTextControl(m_renderer);
textControl->setSelectionRange(range.start, range.start + range.length);
return;
}
@@ -1325,14 +1419,14 @@ void AccessibilityRenderObject::setSelectedTextRange(const PlainTextRange& range
Frame* frame = document->frame();
if (!frame)
return;
- Node* node = m_renderer->element();
- frame->selection()->setSelection(Selection(Position(node, range.start),
+ Node* node = m_renderer->node();
+ frame->selection()->setSelection(VisibleSelection(Position(node, range.start),
Position(node, range.start + range.length), DOWNSTREAM));
}
KURL AccessibilityRenderObject::url() const
{
- if (isAnchor() && m_renderer->element()->hasTagName(aTag)) {
+ if (isAnchor() && m_renderer->node()->hasTagName(aTag)) {
if (HTMLAnchorElement* anchor = static_cast<HTMLAnchorElement*>(anchorElement()))
return anchor->href();
}
@@ -1340,8 +1434,11 @@ KURL AccessibilityRenderObject::url() const
if (isWebArea())
return m_renderer->document()->url();
- if (isImage() && m_renderer->element() && m_renderer->element()->hasTagName(imgTag))
- return static_cast<HTMLImageElement*>(m_renderer->element())->src();
+ if (isImage() && m_renderer->node() && m_renderer->node()->hasTagName(imgTag))
+ return static_cast<HTMLImageElement*>(m_renderer->node())->src();
+
+ if (isInputImage())
+ return static_cast<HTMLInputElement*>(m_renderer->node())->src();
return KURL();
}
@@ -1378,7 +1475,7 @@ bool AccessibilityRenderObject::isFocused() const
// A web area is represented by the Document node in the DOM tree, which isn't focusable.
// Check instead if the frame's selection controller is focused
- if (focusedNode == m_renderer->element() ||
+ if (focusedNode == m_renderer->node() ||
(roleValue() == WebAreaRole && document->frame()->selection()->isFocusedAndActive()))
return true;
@@ -1393,10 +1490,10 @@ void AccessibilityRenderObject::setFocused(bool on)
if (!on)
m_renderer->document()->setFocusedNode(0);
else {
- if (m_renderer->element()->isElementNode())
- static_cast<Element*>(m_renderer->element())->focus();
+ if (m_renderer->node()->isElementNode())
+ static_cast<Element*>(m_renderer->node())->focus();
else
- m_renderer->document()->setFocusedNode(m_renderer->element());
+ m_renderer->document()->setFocusedNode(m_renderer->node());
}
}
@@ -1404,22 +1501,27 @@ void AccessibilityRenderObject::setValue(const String& string)
{
// FIXME: Do we want to do anything here for ARIA textboxes?
if (m_renderer->isTextField()) {
- HTMLInputElement* input = static_cast<HTMLInputElement*>(m_renderer->element());
+ HTMLInputElement* input = static_cast<HTMLInputElement*>(m_renderer->node());
input->setValue(string);
} else if (m_renderer->isTextArea()) {
- HTMLTextAreaElement* textArea = static_cast<HTMLTextAreaElement*>(m_renderer->element());
+ HTMLTextAreaElement* textArea = static_cast<HTMLTextAreaElement*>(m_renderer->node());
textArea->setValue(string);
}
}
bool AccessibilityRenderObject::isEnabled() const
{
- return m_renderer->element() ? m_renderer->element()->isEnabled() : true;
+ ASSERT(m_renderer);
+ Node* node = m_renderer->node();
+ if (!node || !node->isElementNode())
+ return true;
+
+ return static_cast<Element*>(node)->isEnabledFormControl();
}
-RenderObject* AccessibilityRenderObject::topRenderer() const
+RenderView* AccessibilityRenderObject::topRenderer() const
{
- return m_renderer->document()->topDocument()->renderer();
+ return m_renderer->document()->topDocument()->renderView();
}
Document* AccessibilityRenderObject::document() const
@@ -1451,6 +1553,7 @@ AccessibilityObject* AccessibilityRenderObject::accessibilityParentForImageMap(H
if (!m_renderer || !map)
return 0;
+ String mapName = map->getName().string().lower();
RefPtr<HTMLCollection> coll = m_renderer->document()->images();
for (Node* curr = coll->firstItem(); curr; curr = coll->nextItem()) {
RenderObject* obj = curr->renderer();
@@ -1459,8 +1562,9 @@ AccessibilityObject* AccessibilityRenderObject::accessibilityParentForImageMap(H
// The HTMLImageElement's useMap() value includes the '#' symbol at the beginning,
// which has to be stripped off
- if (static_cast<HTMLImageElement*>(curr)->useMap().substring(1) == map->getName())
- return axObjectCache()->get(obj);
+ String useMapName = static_cast<HTMLImageElement*>(curr)->useMap().substring(1).lower();
+ if (useMapName == mapName)
+ return axObjectCache()->getOrCreate(obj);
}
return 0;
@@ -1474,15 +1578,14 @@ void AccessibilityRenderObject::getDocumentLinks(AccessibilityChildrenVector& re
while (curr) {
RenderObject* obj = curr->renderer();
if (obj) {
- RefPtr<AccessibilityObject> axobj = document->axObjectCache()->get(obj);
+ RefPtr<AccessibilityObject> axobj = document->axObjectCache()->getOrCreate(obj);
ASSERT(axobj);
- ASSERT(axobj->roleValue() == WebCoreLinkRole);
- if (!axobj->accessibilityIsIgnored())
+ if (!axobj->accessibilityIsIgnored() && axobj->isLink())
result.append(axobj);
} else {
Node* parent = curr->parent();
if (parent && curr->hasTagName(areaTag) && parent->hasTagName(mapTag)) {
- AccessibilityImageMapLink* areaObject = static_cast<AccessibilityImageMapLink*>(axObjectCache()->get(ImageMapLinkRole));
+ AccessibilityImageMapLink* areaObject = static_cast<AccessibilityImageMapLink*>(axObjectCache()->getOrCreate(ImageMapLinkRole));
areaObject->setHTMLAreaElement(static_cast<HTMLAreaElement*>(curr));
areaObject->setHTMLMapElement(static_cast<HTMLMapElement*>(parent));
areaObject->setParent(accessibilityParentForImageMap(static_cast<HTMLMapElement*>(parent)));
@@ -1526,20 +1629,23 @@ VisiblePositionRange AccessibilityRenderObject::visiblePositionRange() const
return VisiblePositionRange();
// construct VisiblePositions for start and end
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
if (!node)
return VisiblePositionRange();
-
- VisiblePosition startPos = VisiblePosition(node, 0, VP_DEFAULT_AFFINITY);
- VisiblePosition endPos = VisiblePosition(node, maxDeepOffset(node), VP_DEFAULT_AFFINITY);
-
+
+ VisiblePosition startPos = firstDeepEditingPositionForNode(node);
+ VisiblePosition endPos = lastDeepEditingPositionForNode(node);
+
// the VisiblePositions are equal for nodes like buttons, so adjust for that
+ // FIXME: Really? [button, 0] and [button, 1] are distinct (before and after the button)
+ // I expect this code is only hit for things like empty divs? In which case I don't think
+ // the behavior is correct here -- eseidel
if (startPos == endPos) {
endPos = endPos.next();
if (endPos.isNull())
endPos = startPos;
}
-
+
return VisiblePositionRange(startPos, endPos);
}
@@ -1565,7 +1671,7 @@ VisiblePositionRange AccessibilityRenderObject::visiblePositionRangeForLine(unsi
// starting at an empty line. The resulting selection in that case
// will be a caret at visiblePos.
SelectionController selection;
- selection.setSelection(Selection(visiblePos));
+ selection.setSelection(VisibleSelection(visiblePos));
selection.modify(SelectionController::EXTEND, SelectionController::RIGHT, LineBoundary);
return VisiblePositionRange(selection.selection().visibleStart(), selection.selection().visibleEnd());
@@ -1577,7 +1683,7 @@ VisiblePosition AccessibilityRenderObject::visiblePositionForIndex(int index) co
return VisiblePosition();
if (isNativeTextControl())
- return static_cast<RenderTextControl*>(m_renderer)->visiblePositionForIndex(index);
+ return toRenderTextControl(m_renderer)->visiblePositionForIndex(index);
if (!isTextControl() && !m_renderer->isText())
return VisiblePosition();
@@ -1600,7 +1706,7 @@ VisiblePosition AccessibilityRenderObject::visiblePositionForIndex(int index) co
int AccessibilityRenderObject::indexForVisiblePosition(const VisiblePosition& pos) const
{
if (isNativeTextControl())
- return static_cast<RenderTextControl*>(m_renderer)->indexForVisiblePosition(pos);
+ return toRenderTextControl(m_renderer)->indexForVisiblePosition(pos);
if (!isTextControl())
return 0;
@@ -1616,7 +1722,7 @@ int AccessibilityRenderObject::indexForVisiblePosition(const VisiblePosition& po
ExceptionCode ec = 0;
RefPtr<Range> range = Range::create(m_renderer->document());
range->setStart(node, 0, ec);
- range->setEnd(indexPosition.node(), indexPosition.offset(), ec);
+ range->setEnd(indexPosition.node(), indexPosition.deprecatedEditingOffset(), ec);
return TextIterator::rangeLength(range.get());
}
@@ -1672,7 +1778,7 @@ void AccessibilityRenderObject::setSelectedVisiblePositionRange(const VisiblePos
m_renderer->document()->frame()->selection()->moveTo(range.start, true);
}
else {
- Selection newSelection = Selection(range.start, range.end);
+ VisibleSelection newSelection = VisibleSelection(range.start, range.end);
m_renderer->document()->frame()->selection()->setSelection(newSelection);
}
}
@@ -1681,7 +1787,7 @@ VisiblePosition AccessibilityRenderObject::visiblePositionForPoint(const IntPoin
{
// convert absolute point to view coordinates
FrameView* frameView = m_renderer->document()->topDocument()->renderer()->view()->frameView();
- RenderObject* renderer = topRenderer();
+ RenderView* renderView = topRenderer();
Node* innerNode = 0;
// locate the node containing the point
@@ -1693,9 +1799,10 @@ VisiblePosition AccessibilityRenderObject::visiblePositionForPoint(const IntPoin
#else
ourpoint = point;
#endif
- HitTestRequest request(true, true);
+ HitTestRequest request(HitTestRequest::ReadOnly |
+ HitTestRequest::Active);
HitTestResult result(ourpoint);
- renderer->layer()->hitTest(request, result);
+ renderView->layer()->hitTest(request, result);
innerNode = result.innerNode();
if (!innerNode || !innerNode->renderer())
return VisiblePosition();
@@ -1703,7 +1810,7 @@ VisiblePosition AccessibilityRenderObject::visiblePositionForPoint(const IntPoin
pointResult = result.localPoint();
// done if hit something other than a widget
- renderer = innerNode->renderer();
+ RenderObject* renderer = innerNode->renderer();
if (!renderer->isWidget())
break;
@@ -1714,10 +1821,7 @@ VisiblePosition AccessibilityRenderObject::visiblePositionForPoint(const IntPoin
Frame* frame = static_cast<FrameView*>(widget)->frame();
if (!frame)
break;
- Document* document = frame->document();
- if (!document)
- break;
- renderer = document->renderer();
+ renderView = frame->document()->renderView();
frameView = static_cast<FrameView*>(widget);
}
@@ -1750,7 +1854,7 @@ int AccessibilityRenderObject::index(const VisiblePosition& position) const
if (!node)
return -1;
- for (RenderObject* renderer = node->renderer(); renderer && renderer->element(); renderer = renderer->parent()) {
+ for (RenderObject* renderer = node->renderer(); renderer && renderer->node(); renderer = renderer->parent()) {
if (renderer == m_renderer)
return indexForVisiblePosition(position);
}
@@ -1780,7 +1884,7 @@ PlainTextRange AccessibilityRenderObject::doAXRangeForLine(unsigned lineNumber)
// starting at an empty line. The resulting selection in that case
// will be a caret at visiblePos.
SelectionController selection;
- selection.setSelection(Selection(visiblePos));
+ selection.setSelection(VisibleSelection(visiblePos));
selection.modify(SelectionController::EXTEND, SelectionController::LEFT, LineBoundary);
selection.modify(SelectionController::EXTEND, SelectionController::RIGHT, LineBoundary);
@@ -1846,26 +1950,50 @@ IntRect AccessibilityRenderObject::doAXBoundsForRange(const PlainTextRange& rang
return IntRect();
}
-AccessibilityObject* AccessibilityRenderObject::doAccessibilityHitTest(const IntPoint& point) const
+AccessibilityObject* AccessibilityRenderObject::accessibilityImageMapHitTest(HTMLAreaElement* area, const IntPoint& point) const
{
- if (!m_renderer)
+ if (!area)
return 0;
- RenderLayer* layer = m_renderer->layer();
- if (!layer)
+ HTMLMapElement *map = static_cast<HTMLMapElement*>(area->parent());
+ AccessibilityObject* parent = accessibilityParentForImageMap(map);
+ if (!parent)
return 0;
- HitTestRequest request(true, true);
+ AccessibilityObject::AccessibilityChildrenVector children = parent->children();
+
+ unsigned count = children.size();
+ for (unsigned k = 0; k < count; ++k) {
+ if (children[k]->elementRect().contains(point))
+ return children[k].get();
+ }
+
+ return 0;
+}
+
+AccessibilityObject* AccessibilityRenderObject::doAccessibilityHitTest(const IntPoint& point) const
+{
+ if (!m_renderer || !m_renderer->hasLayer())
+ return 0;
+
+ RenderLayer* layer = toRenderBox(m_renderer)->layer();
+
+ HitTestRequest request(HitTestRequest::ReadOnly |
+ HitTestRequest::Active);
HitTestResult hitTestResult = HitTestResult(point);
layer->hitTest(request, hitTestResult);
if (!hitTestResult.innerNode())
return 0;
Node* node = hitTestResult.innerNode()->shadowAncestorNode();
+
+ if (node->hasTagName(areaTag))
+ return accessibilityImageMapHitTest(static_cast<HTMLAreaElement*>(node), point);
+
RenderObject* obj = node->renderer();
if (!obj)
return 0;
- AccessibilityObject *result = obj->document()->axObjectCache()->get(obj);
+ AccessibilityObject *result = obj->document()->axObjectCache()->getOrCreate(obj);
if (obj->isListBox())
return static_cast<AccessibilityListBox*>(result)->doAccessibilityHitTest(point);
@@ -1892,7 +2020,7 @@ AccessibilityObject* AccessibilityRenderObject::focusedUIElement() const
if (!focusedNodeRenderer)
return 0;
- AccessibilityObject* obj = focusedNodeRenderer->document()->axObjectCache()->get(focusedNodeRenderer);
+ AccessibilityObject* obj = focusedNodeRenderer->document()->axObjectCache()->getOrCreate(focusedNodeRenderer);
if (obj->shouldFocusActiveDescendant()) {
if (AccessibilityObject* descendant = obj->activeDescendant())
@@ -1937,9 +2065,9 @@ bool AccessibilityRenderObject::shouldFocusActiveDescendant() const
AccessibilityObject* AccessibilityRenderObject::activeDescendant() const
{
- if (renderer()->element() && !renderer()->element()->isElementNode())
+ if (renderer()->node() && !renderer()->node()->isElementNode())
return 0;
- Element* element = static_cast<Element*>(renderer()->element());
+ Element* element = static_cast<Element*>(renderer()->node());
String activeDescendantAttrStr = element->getAttribute(aria_activedescendantAttr).string();
if (activeDescendantAttrStr.isNull() || activeDescendantAttrStr.isEmpty())
@@ -1949,7 +2077,7 @@ AccessibilityObject* AccessibilityRenderObject::activeDescendant() const
if (!target)
return 0;
- AccessibilityObject* obj = renderer()->document()->axObjectCache()->get(target->renderer());
+ AccessibilityObject* obj = renderer()->document()->axObjectCache()->getOrCreate(target->renderer());
if (obj->isAccessibilityRenderObject())
// an activedescendant is only useful if it has a renderer, because that's what's needed to post the notification
return obj;
@@ -1959,7 +2087,7 @@ AccessibilityObject* AccessibilityRenderObject::activeDescendant() const
void AccessibilityRenderObject::handleActiveDescendantChanged()
{
- Element* element = static_cast<Element*>(renderer()->element());
+ Element* element = static_cast<Element*>(renderer()->node());
if (!element)
return;
Document* doc = renderer()->document();
@@ -1968,15 +2096,15 @@ void AccessibilityRenderObject::handleActiveDescendantChanged()
AccessibilityRenderObject* activedescendant = static_cast<AccessibilityRenderObject*>(activeDescendant());
if (activedescendant && shouldFocusActiveDescendant())
- doc->axObjectCache()->postNotificationToElement(activedescendant->renderer(), "AXFocusedUIElementChanged");
+ doc->axObjectCache()->postNotification(activedescendant->renderer(), "AXFocusedUIElementChanged", true);
}
AccessibilityObject* AccessibilityRenderObject::observableObject() const
{
- for (RenderObject* renderer = m_renderer; renderer && renderer->element(); renderer = renderer->parent()) {
- if (renderer->isTextField() || renderer->isTextArea())
- return renderer->document()->axObjectCache()->get(renderer);
+ for (RenderObject* renderer = m_renderer; renderer && renderer->node(); renderer = renderer->parent()) {
+ if (renderer->isTextControl())
+ return renderer->document()->axObjectCache()->getOrCreate(renderer);
}
return 0;
@@ -1994,6 +2122,10 @@ static const ARIARoleMap& createARIARoleMap()
const RoleEntry roles[] = {
{ "button", ButtonRole },
{ "checkbox", CheckBoxRole },
+ { "grid", TableRole },
+ { "gridcell", CellRole },
+ { "columnheader", ColumnHeaderRole },
+ { "rowheader", RowHeaderRole },
{ "group", GroupRole },
{ "heading", HeadingRole },
{ "img", ImageRole },
@@ -2007,6 +2139,7 @@ static const ARIARoleMap& createARIARoleMap()
{ "menuitemradio", MenuItemRole },
{ "progressbar", ProgressIndicatorRole },
{ "radio", RadioButtonRole },
+ { "row", RowRole },
{ "range", SliderRole },
{ "slider", SliderRole },
{ "spinbutton", ProgressIndicatorRole },
@@ -2069,7 +2202,7 @@ AccessibilityRole AccessibilityRenderObject::roleValue() const
if (!m_renderer)
return UnknownRole;
- Node* node = m_renderer->element();
+ Node* node = m_renderer->node();
AccessibilityRole ariaRole = ariaRoleAttribute();
if (ariaRole != UnknownRole)
return ariaRole;
@@ -2090,6 +2223,9 @@ AccessibilityRole AccessibilityRenderObject::roleValue() const
return ButtonRole;
return ImageRole;
}
+ if (node && node->hasTagName(canvasTag))
+ return ImageRole;
+
if (m_renderer->isRenderView())
return WebAreaRole;
@@ -2118,7 +2254,7 @@ AccessibilityRole AccessibilityRenderObject::roleValue() const
if (m_renderer->isMenuList())
return PopUpButtonRole;
- if (headingLevel(m_renderer->element()) != 0)
+ if (headingLevel(m_renderer->node()) != 0)
return HeadingRole;
if (node && node->hasTagName(ddTag))
@@ -2158,12 +2294,18 @@ bool AccessibilityRenderObject::ariaRoleHasPresentationalChildren() const
bool AccessibilityRenderObject::canSetFocusAttribute() const
{
+ ASSERT(m_renderer);
+ Node* node = m_renderer->node();
+
// NOTE: It would be more accurate to ask the document whether setFocusedNode() would
// do anything. For example, it setFocusedNode() will do nothing if the current focused
// node will not relinquish the focus.
- if (!m_renderer->element() || !m_renderer->element()->isEnabled())
+ if (!node || !node->isElementNode())
return false;
-
+
+ if (!static_cast<Element*>(node)->isEnabledFormControl())
+ return false;
+
switch (roleValue()) {
case WebCoreLinkRole:
case ImageMapLinkRole:
@@ -2194,12 +2336,20 @@ bool AccessibilityRenderObject::canSetTextRangeAttributes() const
void AccessibilityRenderObject::childrenChanged()
{
- clearChildren();
+ // this method is meant as a quick way of marking dirty
+ // a portion of the accessibility tree
- if (accessibilityIsIgnored()) {
- AccessibilityObject* parent = parentObject();
- if (parent)
- parent->childrenChanged();
+ markChildrenDirty();
+
+ if (!m_renderer)
+ return;
+
+ // Go up the render parent chain, marking children as dirty.
+ // We can't rely on the accessibilityParent() because it may not exist and we must not create an AX object here either
+ for (RenderObject* renderParent = m_renderer->parent(); renderParent; renderParent = renderParent->parent()) {
+ AccessibilityObject* parent = m_renderer->document()->axObjectCache()->get(renderParent);
+ if (parent && parent->isAccessibilityRenderObject())
+ static_cast<AccessibilityRenderObject *>(parent)->markChildrenDirty();
}
}
@@ -2223,6 +2373,11 @@ bool AccessibilityRenderObject::canHaveChildren() const
const AccessibilityObject::AccessibilityChildrenVector& AccessibilityRenderObject::children()
{
+ if (m_childrenDirty) {
+ clearChildren();
+ m_childrenDirty = false;
+ }
+
if (!m_haveChildren)
addChildren();
return m_children;
@@ -2258,13 +2413,13 @@ void AccessibilityRenderObject::addChildren()
// for a RenderImage, add the <area> elements as individual accessibility objects
if (m_renderer->isRenderImage()) {
- HTMLMapElement* map = static_cast<RenderImage*>(m_renderer)->imageMap();
+ HTMLMapElement* map = toRenderImage(m_renderer)->imageMap();
if (map) {
for (Node* current = map->firstChild(); current; current = current->traverseNextNode(map)) {
// add an <area> element for this child if it has a link
if (current->isLink()) {
- AccessibilityImageMapLink* areaObject = static_cast<AccessibilityImageMapLink*>(m_renderer->document()->axObjectCache()->get(ImageMapLinkRole));
+ AccessibilityImageMapLink* areaObject = static_cast<AccessibilityImageMapLink*>(m_renderer->document()->axObjectCache()->getOrCreate(ImageMapLinkRole));
areaObject->setHTMLAreaElement(static_cast<HTMLAreaElement*>(current));
areaObject->setHTMLMapElement(map);
areaObject->setParent(this);
@@ -2281,7 +2436,7 @@ void AccessibilityRenderObject::ariaListboxSelectedChildren(AccessibilityChildre
AccessibilityObject* child = firstChild();
bool isMultiselectable = false;
- Element* element = static_cast<Element*>(renderer()->element());
+ Element* element = static_cast<Element*>(renderer()->node());
if (!element || !element->isElementNode()) // do this check to ensure safety of static_cast above
return;
@@ -2295,7 +2450,7 @@ void AccessibilityRenderObject::ariaListboxSelectedChildren(AccessibilityChildre
if (child->isAccessibilityRenderObject())
childRenderer = static_cast<AccessibilityRenderObject*>(child)->renderer();
if (childRenderer && ariaRole == ListBoxOptionRole) {
- Element* childElement = static_cast<Element*>(childRenderer->element());
+ Element* childElement = static_cast<Element*>(childRenderer->node());
if (childElement && childElement->isElementNode()) { // do this check to ensure safety of static_cast above
String selectedAttrString = childElement->getAttribute("aria-selected").string();
if (equalIgnoringCase(selectedAttrString, "true")) {
@@ -2345,15 +2500,6 @@ void AccessibilityRenderObject::visibleChildren(AccessibilityChildrenVector& res
return ariaListboxVisibleChildren(result);
}
-void AccessibilityRenderObject::removeAXObjectID()
-{
- if (!m_id)
- return;
-#if PLATFORM(MAC)
- m_renderer->document()->axObjectCache()->removeAXID(this);
-#endif
-}
-
const String& AccessibilityRenderObject::actionVerb() const
{
// FIXME: Need to add verbs for select elements.
@@ -2383,5 +2529,11 @@ const String& AccessibilityRenderObject::actionVerb() const
}
}
+void AccessibilityRenderObject::updateBackingStore()
+{
+ if (!m_renderer)
+ return;
+ m_renderer->view()->layoutIfNeeded();
+}
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityRenderObject.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityRenderObject.h
index 9d43ad8..3fa88a2 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityRenderObject.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityRenderObject.h
@@ -50,7 +50,8 @@ class Node;
class RenderObject;
class RenderListBox;
class RenderTextControl;
-class Selection;
+class RenderView;
+class VisibleSelection;
class String;
class Widget;
@@ -76,6 +77,7 @@ public:
virtual bool isWebArea() const;
virtual bool isCheckboxOrRadio() const;
virtual bool isFileUploadButton() const;
+ virtual bool isInputImage() const;
virtual bool isProgressIndicator() const;
virtual bool isSlider() const;
virtual bool isMenuRelated() const;
@@ -123,8 +125,10 @@ public:
virtual AccessibilityObject* previousSibling() const;
virtual AccessibilityObject* nextSibling() const;
virtual AccessibilityObject* parentObject() const;
+ virtual AccessibilityObject* parentObjectIfExists() const;
virtual AccessibilityObject* observableObject() const;
virtual void linkedUIElements(AccessibilityChildrenVector&) const;
+ virtual bool exposesTitleUIElement() const;
virtual AccessibilityObject* titleUIElement() const;
virtual AccessibilityRole ariaRoleAttribute() const;
virtual bool isPresentationalChildOfAriaRole() const;
@@ -146,7 +150,7 @@ public:
void setRenderer(RenderObject* renderer) { m_renderer = renderer; }
RenderObject* renderer() const { return m_renderer; }
- RenderObject* topRenderer() const;
+ RenderView* topRenderer() const;
RenderTextControl* textControl() const;
Document* document() const;
FrameView* topDocumentFrameView() const;
@@ -154,7 +158,7 @@ public:
virtual KURL url() const;
virtual PlainTextRange selectedTextRange() const;
- virtual Selection selection() const;
+ virtual VisibleSelection selection() const;
virtual String stringValue() const;
virtual String ariaAccessiblityName(const String&) const;
virtual String ariaLabeledByAttribute() const;
@@ -208,12 +212,14 @@ public:
virtual String doAXStringForRange(const PlainTextRange&) const;
virtual IntRect doAXBoundsForRange(const PlainTextRange&) const;
+ virtual void updateBackingStore();
+
protected:
RenderObject* m_renderer;
AccessibilityRole m_ariaRole;
+ mutable bool m_childrenDirty;
void setRenderObject(RenderObject* renderer) { m_renderer = renderer; }
- virtual void removeAXObjectID();
virtual bool isDetached() const { return !m_renderer; }
@@ -228,8 +234,10 @@ private:
IntRect checkboxOrRadioRect() const;
void addRadioButtonGroupMembers(AccessibilityChildrenVector& linkedUIElements) const;
AccessibilityObject* internalLinkElement() const;
+ AccessibilityObject* accessibilityImageMapHitTest(HTMLAreaElement*, const IntPoint&) const;
AccessibilityObject* accessibilityParentForImageMap(HTMLMapElement* map) const;
+ void markChildrenDirty() const { m_childrenDirty = true; }
};
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityTable.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTable.cpp
index ee54496..6d7dbe2 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityTable.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTable.cpp
@@ -53,13 +53,11 @@ AccessibilityTable::AccessibilityTable(RenderObject* renderer)
: AccessibilityRenderObject(renderer),
m_headerContainer(0)
{
- // FIXME: We need to disable Accessibility Tables entirely on the Mac until <rdar://problem/6372481> is resolved.
-#if PLATFORM(MAC)
- m_isAccessibilityTable = false;
-#else
+#if ACCESSIBILITY_TABLES
m_isAccessibilityTable = isTableExposableThroughAccessibility();
+#else
+ m_isAccessibilityTable = false;
#endif
-
}
AccessibilityTable::~AccessibilityTable()
@@ -83,8 +81,6 @@ bool AccessibilityTable::isTableExposableThroughAccessibility()
// if the developer assigned an aria role to this, then we shouldn't
// expose it as a table, unless, of course, the aria role is a table
AccessibilityRole ariaRole = ariaRoleAttribute();
- if (ariaRole == TableRole)
- return true;
if (ariaRole != UnknownRole)
return false;
@@ -95,7 +91,7 @@ bool AccessibilityTable::isTableExposableThroughAccessibility()
// Unfortunately, there is no good way to determine the difference
// between a "layout" table and a "data" table
- Node* tableNode = table->element();
+ Node* tableNode = table->node();
if (!tableNode || !tableNode->hasTagName(tableTag))
return false;
@@ -141,7 +137,7 @@ bool AccessibilityTable::isTableExposableThroughAccessibility()
RenderTableCell* cell = firstBody->cellAt(row, col).cell;
if (!cell)
continue;
- Node* cellNode = cell->element();
+ Node* cellNode = cell->node();
if (!cellNode)
continue;
@@ -213,7 +209,7 @@ void AccessibilityTable::addChildren()
ASSERT(!m_haveChildren);
m_haveChildren = true;
- if (!m_renderer)
+ if (!m_renderer || !m_renderer->isTable())
return;
RenderTable* table = static_cast<RenderTable*>(m_renderer);
@@ -243,7 +239,7 @@ void AccessibilityTable::addChildren()
if (!cell)
continue;
- AccessibilityObject* rowObject = axCache->get(cell->parent());
+ AccessibilityObject* rowObject = axCache->getOrCreate(cell->parent());
if (!rowObject->isTableRow())
continue;
@@ -266,7 +262,7 @@ void AccessibilityTable::addChildren()
// make the columns based on the number of columns in the first body
unsigned length = initialTableSection->numColumns();
for (unsigned i = 0; i < length; ++i) {
- AccessibilityTableColumn* column = static_cast<AccessibilityTableColumn*>(axCache->get(ColumnRole));
+ AccessibilityTableColumn* column = static_cast<AccessibilityTableColumn*>(axCache->getOrCreate(ColumnRole));
column->setColumnIndex((int)i);
column->setParentTable(this);
m_columns.append(column);
@@ -283,7 +279,7 @@ AccessibilityObject* AccessibilityTable::headerContainer()
if (m_headerContainer)
return m_headerContainer;
- m_headerContainer = static_cast<AccessibilityTableHeaderContainer*>(axObjectCache()->get(TableHeaderContainerRole));
+ m_headerContainer = static_cast<AccessibilityTableHeaderContainer*>(axObjectCache()->getOrCreate(TableHeaderContainerRole));
m_headerContainer->setParentTable(this);
return m_headerContainer;
@@ -354,7 +350,7 @@ void AccessibilityTable::cells(AccessibilityObject::AccessibilityChildrenVector&
}
}
-const unsigned AccessibilityTable::columnCount()
+unsigned AccessibilityTable::columnCount()
{
if (!hasChildren())
addChildren();
@@ -362,7 +358,7 @@ const unsigned AccessibilityTable::columnCount()
return m_columns.size();
}
-const unsigned AccessibilityTable::rowCount()
+unsigned AccessibilityTable::rowCount()
{
if (!hasChildren())
addChildren();
@@ -372,7 +368,7 @@ const unsigned AccessibilityTable::rowCount()
AccessibilityTableCell* AccessibilityTable::cellForColumnAndRow(unsigned column, unsigned row)
{
- if (!m_renderer)
+ if (!m_renderer || !m_renderer->isTable())
return 0;
if (!hasChildren())
@@ -388,11 +384,13 @@ AccessibilityTableCell* AccessibilityTable::cellForColumnAndRow(unsigned column,
unsigned rowOffset = 0;
while (tableSection) {
- rowCount += tableSection->numRows();
+ unsigned numRows = tableSection->numRows();
unsigned numCols = tableSection->numColumns();
- if (row < rowCount && column < numCols) {
- int sectionSpecificRow = row - rowOffset;
+ rowCount += numRows;
+
+ unsigned sectionSpecificRow = row - rowOffset;
+ if (row < rowCount && column < numCols && sectionSpecificRow < numRows) {
cell = tableSection->cellAt(sectionSpecificRow, column).cell;
// we didn't find the cell, which means there's spanning happening
@@ -424,9 +422,9 @@ AccessibilityTableCell* AccessibilityTable::cellForColumnAndRow(unsigned column,
if (cell)
break;
- rowOffset += rowCount;
+ rowOffset += numRows;
// we didn't find anything between the rows we should have
- if (row < rowOffset)
+ if (row < rowCount)
break;
tableSection = table->sectionBelow(tableSection, true);
}
@@ -434,7 +432,7 @@ AccessibilityTableCell* AccessibilityTable::cellForColumnAndRow(unsigned column,
if (!cell)
return 0;
- AccessibilityObject* cellObject = axObjectCache()->get(cell);
+ AccessibilityObject* cellObject = axObjectCache()->getOrCreate(cell);
ASSERT(cellObject->isTableCell());
return static_cast<AccessibilityTableCell*>(cellObject);
@@ -466,8 +464,8 @@ String AccessibilityTable::title() const
return title;
// see if there is a caption
- Node *tableElement = m_renderer->element();
- if (tableElement) {
+ Node* tableElement = m_renderer->node();
+ if (tableElement && tableElement->hasTagName(tableTag)) {
HTMLTableCaptionElement* caption = static_cast<HTMLTableElement*>(tableElement)->caption();
if (caption)
title = caption->innerText();
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityTable.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTable.h
index b98b6b7..b6aa3ca 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityTable.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTable.h
@@ -31,6 +31,12 @@
#include "AccessibilityRenderObject.h"
+#if PLATFORM(MAC) && (defined(BUILDING_ON_TIGER) || defined(BUILDING_ON_LEOPARD))
+#define ACCESSIBILITY_TABLES 0
+#else
+#define ACCESSIBILITY_TABLES 1
+#endif
+
namespace WebCore {
class String;
@@ -39,7 +45,7 @@ class AccessibilityTableHeaderContainer;
class AccessibilityTable : public AccessibilityRenderObject {
-private:
+protected:
AccessibilityTable(RenderObject*);
public:
static PassRefPtr<AccessibilityTable> create(RenderObject*);
@@ -47,6 +53,7 @@ public:
virtual bool isDataTable() const;
virtual AccessibilityRole roleValue() const;
+ virtual bool isAriaTable() const { return false; }
virtual bool accessibilityIsIgnored() const;
@@ -56,14 +63,14 @@ public:
AccessibilityChildrenVector& columns();
AccessibilityChildrenVector& rows();
- const unsigned columnCount();
- const unsigned rowCount();
+ unsigned columnCount();
+ unsigned rowCount();
virtual String title() const;
// all the cells in the table
void cells(AccessibilityChildrenVector&);
- AccessibilityTableCell* cellForColumnAndRow(unsigned column, unsigned row);
+ virtual AccessibilityTableCell* cellForColumnAndRow(unsigned column, unsigned row);
void columnHeaders(AccessibilityChildrenVector&);
void rowHeaders(AccessibilityChildrenVector&);
@@ -71,7 +78,7 @@ public:
// an object that contains, as children, all the objects that act as headers
AccessibilityObject* headerContainer();
-private:
+protected:
AccessibilityChildrenVector m_rows;
AccessibilityChildrenVector m_columns;
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityTableCell.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableCell.cpp
index ff82811..4d7cf5a 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityTableCell.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableCell.cpp
@@ -61,14 +61,19 @@ bool AccessibilityTableCell::accessibilityIsIgnored() const
return false;
}
-
-bool AccessibilityTableCell::isTableCell() const
+
+AccessibilityObject* AccessibilityTableCell::parentTable() const
{
- if (!m_renderer)
+ if (!m_renderer || !m_renderer->isTableCell())
return false;
- AccessibilityObject* renderTable = axObjectCache()->get(static_cast<RenderTableCell*>(m_renderer)->table());
- if (!renderTable->isDataTable())
+ return axObjectCache()->getOrCreate(static_cast<RenderTableCell*>(m_renderer)->table());
+}
+
+bool AccessibilityTableCell::isTableCell() const
+{
+ AccessibilityObject* table = parentTable();
+ if (!table || !table->isDataTable())
return false;
return true;
@@ -84,7 +89,7 @@ AccessibilityRole AccessibilityTableCell::roleValue() const
void AccessibilityTableCell::rowIndexRange(pair<int, int>& rowRange)
{
- if (!m_renderer)
+ if (!m_renderer || !m_renderer->isTableCell())
return;
RenderTableCell* renderCell = static_cast<RenderTableCell*>(m_renderer);
@@ -114,7 +119,7 @@ void AccessibilityTableCell::rowIndexRange(pair<int, int>& rowRange)
void AccessibilityTableCell::columnIndexRange(pair<int, int>& columnRange)
{
- if (!m_renderer)
+ if (!m_renderer || !m_renderer->isTableCell())
return;
RenderTableCell* renderCell = static_cast<RenderTableCell*>(m_renderer);
@@ -127,7 +132,7 @@ AccessibilityObject* AccessibilityTableCell::titleUIElement() const
// Try to find if the first cell in this row is a <th>. If it is,
// then it can act as the title ui element. (This is only in the
// case when the table is not appearing as an AXTable.)
- if (!m_renderer || isTableCell())
+ if (isTableCell() || !m_renderer || !m_renderer->isTableCell())
return 0;
RenderTableCell* renderCell = static_cast<RenderTableCell*>(m_renderer);
@@ -147,11 +152,11 @@ AccessibilityObject* AccessibilityTableCell::titleUIElement() const
if (!headerCell || headerCell == renderCell)
return 0;
- Node* cellElement = headerCell->element();
+ Node* cellElement = headerCell->node();
if (!cellElement || !cellElement->hasTagName(thTag))
return 0;
- return axObjectCache()->get(headerCell);
+ return axObjectCache()->getOrCreate(headerCell);
}
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityTableCell.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableCell.h
index 8f8dd77..dabbce2 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityTableCell.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableCell.h
@@ -35,7 +35,7 @@ namespace WebCore {
class AccessibilityTableCell : public AccessibilityRenderObject {
-private:
+protected:
AccessibilityTableCell(RenderObject*);
public:
static PassRefPtr<AccessibilityTableCell> create(RenderObject*);
@@ -47,17 +47,17 @@ public:
virtual bool accessibilityIsIgnored() const;
// fills in the start location and row span of cell
- void rowIndexRange(pair<int, int>& rowRange);
+ virtual void rowIndexRange(pair<int, int>& rowRange);
// fills in the start location and column span of cell
- void columnIndexRange(pair<int, int>& columnRange);
+ virtual void columnIndexRange(pair<int, int>& columnRange);
// if a table cell is not exposed as a table cell, a TH element can
// serve as its title ui element
AccessibilityObject* titleUIElement() const;
-private:
+protected:
+ virtual AccessibilityObject* parentTable() const;
int m_rowIndex;
-
};
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityTableColumn.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableColumn.cpp
index 6e03af9..ee79444 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityTableColumn.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableColumn.cpp
@@ -61,7 +61,6 @@ void AccessibilityTableColumn::setParentTable(AccessibilityTable* table)
m_parentTable = table;
clearChildren();
- addChildren();
}
IntRect AccessibilityTableColumn::elementRect() const
@@ -87,7 +86,26 @@ AccessibilityObject* AccessibilityTableColumn::headerObject()
if (!m_parentTable)
return 0;
- RenderTable* table = static_cast<RenderTable*>(m_parentTable->renderer());
+ RenderObject* renderer = m_parentTable->renderer();
+ if (!renderer)
+ return 0;
+
+ if (m_parentTable->isAriaTable()) {
+ AccessibilityChildrenVector rowChildren = children();
+ unsigned childrenCount = rowChildren.size();
+ for (unsigned i = 0; i < childrenCount; ++i) {
+ AccessibilityObject* cell = rowChildren[i].get();
+ if (cell->ariaRoleAttribute() == ColumnHeaderRole)
+ return cell;
+ }
+
+ return 0;
+ }
+
+ if (!renderer->isTable())
+ return 0;
+
+ RenderTable* table = static_cast<RenderTable*>(renderer);
AccessibilityObject* headerObject = 0;
@@ -124,7 +142,7 @@ AccessibilityObject* AccessibilityTableColumn::headerObjectForSection(RenderTabl
if ((testCell->col() + (testCell->colSpan()-1)) < m_columnIndex)
break;
- Node* node = testCell->element();
+ Node* node = testCell->node();
if (!node)
continue;
@@ -137,7 +155,7 @@ AccessibilityObject* AccessibilityTableColumn::headerObjectForSection(RenderTabl
if (!cell)
return 0;
- return m_parentTable->axObjectCache()->get(cell);
+ return m_parentTable->axObjectCache()->getOrCreate(cell);
}
void AccessibilityTableColumn::addChildren()
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityTableColumn.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableColumn.h
index 6270398..6270398 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityTableColumn.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableColumn.h
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityTableHeaderContainer.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp
index af9de39..af9de39 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityTableHeaderContainer.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityTableHeaderContainer.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableHeaderContainer.h
index 8a9448a..8a9448a 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityTableHeaderContainer.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableHeaderContainer.h
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityTableRow.cpp b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableRow.cpp
index caccff5..9f5f972 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityTableRow.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableRow.cpp
@@ -67,11 +67,8 @@ AccessibilityRole AccessibilityTableRow::roleValue() const
bool AccessibilityTableRow::isTableRow() const
{
- if (!m_renderer)
- return true;
-
- AccessibilityObject* renderTable = axObjectCache()->get(static_cast<RenderTableRow*>(m_renderer)->table());
- if (!renderTable->isDataTable())
+ AccessibilityObject* table = parentTable();
+ if (!table || !table->isDataTable())
return false;
return true;
@@ -85,8 +82,19 @@ bool AccessibilityTableRow::accessibilityIsIgnored() const
return false;
}
+AccessibilityObject* AccessibilityTableRow::parentTable() const
+{
+ if (!m_renderer || !m_renderer->isTableRow())
+ return 0;
+
+ return axObjectCache()->getOrCreate(static_cast<RenderTableRow*>(m_renderer)->table());
+}
+
AccessibilityObject* AccessibilityTableRow::headerObject()
{
+ if (!m_renderer || !m_renderer->isTableRow())
+ return 0;
+
AccessibilityChildrenVector rowChildren = children();
if (!rowChildren.size())
return 0;
@@ -100,7 +108,7 @@ AccessibilityObject* AccessibilityTableRow::headerObject()
if (!cellRenderer)
return 0;
- Node* cellNode = cellRenderer->element();
+ Node* cellNode = cellRenderer->node();
if (!cellNode || !cellNode->hasTagName(thTag))
return 0;
diff --git a/src/3rdparty/webkit/WebCore/page/AccessibilityTableRow.h b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableRow.h
index 0ec7f04..29ac935 100644
--- a/src/3rdparty/webkit/WebCore/page/AccessibilityTableRow.h
+++ b/src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableRow.h
@@ -35,7 +35,7 @@ namespace WebCore {
class AccessibilityTableRow : public AccessibilityRenderObject {
-private:
+protected:
AccessibilityTableRow(RenderObject*);
public:
static PassRefPtr<AccessibilityTableRow> create(RenderObject*);
@@ -43,11 +43,11 @@ public:
virtual bool isTableRow() const;
virtual AccessibilityRole roleValue() const;
+ virtual bool accessibilityIsIgnored() const;
// retrieves the "row" header (a th tag in the rightmost column)
- AccessibilityObject* headerObject();
-
- virtual bool accessibilityIsIgnored() const;
+ virtual AccessibilityObject* headerObject();
+ virtual AccessibilityObject* parentTable() const;
void setRowIndex(int rowIndex) { m_rowIndex = rowIndex; }
int rowIndex() const { return m_rowIndex; }
diff --git a/src/3rdparty/webkit/WebCore/page/qt/AccessibilityObjectQt.cpp b/src/3rdparty/webkit/WebCore/accessibility/qt/AccessibilityObjectQt.cpp
index 1710027..1710027 100644
--- a/src/3rdparty/webkit/WebCore/page/qt/AccessibilityObjectQt.cpp
+++ b/src/3rdparty/webkit/WebCore/accessibility/qt/AccessibilityObjectQt.cpp
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/GCController.cpp b/src/3rdparty/webkit/WebCore/bindings/js/GCController.cpp
index ceb7928..db295c2 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/GCController.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/GCController.cpp
@@ -65,7 +65,7 @@ GCController::GCController()
void GCController::garbageCollectSoon()
{
if (!m_GCTimer.isActive())
- m_GCTimer.startOneShot(0);
+ m_GCTimer.startOneShot(0.5);
}
void GCController::gcTimerFired(Timer<GCController>*)
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSAttrCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSAttrCustom.cpp
index a97d039..4f3c8ee 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSAttrCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSAttrCustom.cpp
@@ -40,14 +40,14 @@ namespace WebCore {
using namespace HTMLNames;
-void JSAttr::setValue(ExecState* exec, JSValuePtr value)
+void JSAttr::setValue(ExecState* exec, JSValue value)
{
Attr* imp = static_cast<Attr*>(impl());
String attrValue = valueToStringWithNullCheck(exec, value);
Element* ownerElement = imp->ownerElement();
if (ownerElement && (ownerElement->hasTagName(iframeTag) || ownerElement->hasTagName(frameTag))) {
- if (equalIgnoringCase(imp->name(), "src") && protocolIs(parseURL(attrValue), "javascript")) {
+ if (equalIgnoringCase(imp->name(), "src") && protocolIsJavaScript(parseURL(attrValue))) {
if (!checkNodeSecurity(exec, static_cast<HTMLFrameElementBase*>(ownerElement)->contentDocument()))
return;
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.cpp
index eed5b2e..74bcad5 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.cpp
@@ -41,22 +41,33 @@ namespace WebCore {
const ClassInfo JSAudioConstructor::s_info = { "AudioConstructor", 0, 0, 0 };
-JSAudioConstructor::JSAudioConstructor(ExecState* exec, ScriptExecutionContext* context)
+JSAudioConstructor::JSAudioConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
: DOMObject(JSAudioConstructor::createStructure(exec->lexicalGlobalObject()->objectPrototype()))
+ , m_globalObject(globalObject)
{
- ASSERT(context->isDocument());
- m_document = static_cast<JSDocument*>(asObject(toJS(exec, static_cast<Document*>(context))));
+ ASSERT(globalObject->scriptExecutionContext());
+ ASSERT(globalObject->scriptExecutionContext()->isDocument());
+ putDirect(exec->propertyNames().prototype, JSHTMLAudioElementPrototype::self(exec, exec->lexicalGlobalObject()), None);
putDirect(exec->propertyNames().length, jsNumber(exec, 1), ReadOnly|DontDelete|DontEnum);
}
+Document* JSAudioConstructor::document() const
+{
+ return static_cast<Document*>(m_globalObject->scriptExecutionContext());
+}
+
static JSObject* constructAudio(ExecState* exec, JSObject* constructor, const ArgList& args)
{
// FIXME: Why doesn't this need the call toJS on the document like JSImageConstructor?
- RefPtr<HTMLAudioElement> audio = new HTMLAudioElement(HTMLNames::audioTag, static_cast<JSAudioConstructor*>(constructor)->document());
+ Document* document = static_cast<JSAudioConstructor*>(constructor)->document();
+ if (!document)
+ return throwError(exec, ReferenceError, "Audio constructor associated document is unavailable");
+
+ RefPtr<HTMLAudioElement> audio = new HTMLAudioElement(HTMLNames::audioTag, document);
if (args.size() > 0) {
- audio->setSrc(args.at(exec, 0)->toString(exec));
+ audio->setSrc(args.at(0).toString(exec));
audio->scheduleLoad();
}
return asObject(toJS(exec, audio.release()));
@@ -71,8 +82,8 @@ ConstructType JSAudioConstructor::getConstructData(ConstructData& constructData)
void JSAudioConstructor::mark()
{
DOMObject::mark();
- if (!m_document->marked())
- m_document->mark();
+ if (!m_globalObject->marked())
+ m_globalObject->mark();
}
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.h b/src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.h
index cdff10f..0a3a7ea 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.h
@@ -36,9 +36,9 @@ namespace WebCore {
class JSAudioConstructor : public DOMObject {
public:
- JSAudioConstructor(JSC::ExecState*, ScriptExecutionContext*);
+ JSAudioConstructor(JSC::ExecState*, JSDOMGlobalObject*);
- Document* document() const { return m_document->impl(); }
+ Document* document() const;
static const JSC::ClassInfo s_info;
@@ -48,7 +48,7 @@ namespace WebCore {
virtual const JSC::ClassInfo* classInfo() const { return &s_info; }
- JSDocument* m_document;
+ JSDOMGlobalObject* m_globalObject;
};
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCDATASectionCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCDATASectionCustom.cpp
new file mode 100644
index 0000000..44a8957
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCDATASectionCustom.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2008, 2009 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSCDATASection.h"
+
+#include "CDATASection.h"
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue toJSNewlyCreated(ExecState* exec, CDATASection* section)
+{
+ if (!section)
+ return jsNull();
+
+ return CREATE_DOM_NODE_WRAPPER(exec, CDATASection, section);
+}
+
+} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCSSRuleCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCSSRuleCustom.cpp
index 32462fa..2c20431 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCSSRuleCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCSSRuleCustom.cpp
@@ -49,7 +49,7 @@ using namespace JSC;
namespace WebCore {
-JSValuePtr toJS(ExecState* exec, CSSRule* rule)
+JSValue toJS(ExecState* exec, CSSRule* rule)
{
if (!rule)
return jsNull();
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
index 6c46ae4..b07f201 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
@@ -77,7 +77,7 @@ static String cssPropertyName(const Identifier& propertyName, bool* hadPixelOrPo
return String();
Vector<UChar> name;
- name.reserveCapacity(length);
+ name.reserveInitialCapacity(length);
unsigned i = 0;
@@ -127,7 +127,7 @@ bool JSCSSStyleDeclaration::canGetItemsForName(ExecState*, CSSStyleDeclaration*,
// FIXME: You can get these properties, and set them (see customPut below),
// but you should also be able to enumerate them.
-JSValuePtr JSCSSStyleDeclaration::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSCSSStyleDeclaration::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
JSCSSStyleDeclaration* thisObj = static_cast<JSCSSStyleDeclaration*>(asObject(slot.slotBase()));
@@ -156,7 +156,7 @@ JSValuePtr JSCSSStyleDeclaration::nameGetter(ExecState* exec, const Identifier&
}
-bool JSCSSStyleDeclaration::customPut(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot&)
+bool JSCSSStyleDeclaration::customPut(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot&)
{
if (!isCSSPropertyName(propertyName))
return false;
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCSSValueCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCSSValueCustom.cpp
index 9e31304..ad0cee1 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCSSValueCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCSSValueCustom.cpp
@@ -44,7 +44,7 @@ using namespace JSC;
namespace WebCore {
-JSValuePtr toJS(ExecState* exec, CSSValue* value)
+JSValue toJS(ExecState* exec, CSSValue* value)
{
if (!value)
return jsNull();
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp
index 6eb4fc5..76db871 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp
@@ -40,7 +40,7 @@ using namespace JSC;
namespace WebCore {
-static JSValuePtr toJS(ExecState* exec, CanvasStyle* style)
+static JSValue toJS(ExecState* exec, CanvasStyle* style)
{
if (style->canvasGradient())
return toJS(exec, style->canvasGradient());
@@ -49,11 +49,11 @@ static JSValuePtr toJS(ExecState* exec, CanvasStyle* style)
return jsString(exec, style->color());
}
-static PassRefPtr<CanvasStyle> toHTMLCanvasStyle(ExecState*, JSValuePtr value)
+static PassRefPtr<CanvasStyle> toHTMLCanvasStyle(ExecState*, JSValue value)
{
- if (value->isString())
+ if (value.isString())
return CanvasStyle::create(asString(value)->value());
- if (!value->isObject())
+ if (!value.isObject())
return 0;
JSObject* object = asObject(value);
if (object->inherits(&JSCanvasGradient::s_info))
@@ -63,27 +63,27 @@ static PassRefPtr<CanvasStyle> toHTMLCanvasStyle(ExecState*, JSValuePtr value)
return 0;
}
-JSValuePtr JSCanvasRenderingContext2D::strokeStyle(ExecState* exec) const
+JSValue JSCanvasRenderingContext2D::strokeStyle(ExecState* exec) const
{
return toJS(exec, impl()->strokeStyle());
}
-void JSCanvasRenderingContext2D::setStrokeStyle(ExecState* exec, JSValuePtr value)
+void JSCanvasRenderingContext2D::setStrokeStyle(ExecState* exec, JSValue value)
{
impl()->setStrokeStyle(toHTMLCanvasStyle(exec, value));
}
-JSValuePtr JSCanvasRenderingContext2D::fillStyle(ExecState* exec) const
+JSValue JSCanvasRenderingContext2D::fillStyle(ExecState* exec) const
{
return toJS(exec, impl()->fillStyle());
}
-void JSCanvasRenderingContext2D::setFillStyle(ExecState* exec, JSValuePtr value)
+void JSCanvasRenderingContext2D::setFillStyle(ExecState* exec, JSValue value)
{
impl()->setFillStyle(toHTMLCanvasStyle(exec, value));
}
-JSValuePtr JSCanvasRenderingContext2D::setFillColor(ExecState* exec, const ArgList& args)
+JSValue JSCanvasRenderingContext2D::setFillColor(ExecState* exec, const ArgList& args)
{
CanvasRenderingContext2D* context = impl();
@@ -95,24 +95,24 @@ JSValuePtr JSCanvasRenderingContext2D::setFillColor(ExecState* exec, const ArgLi
// 5 args = c, m, y, k, a
switch (args.size()) {
case 1:
- if (args.at(exec, 0)->isString())
- context->setFillColor(asString(args.at(exec, 0))->value());
+ if (args.at(0).isString())
+ context->setFillColor(asString(args.at(0))->value());
else
- context->setFillColor(args.at(exec, 0)->toFloat(exec));
+ context->setFillColor(args.at(0).toFloat(exec));
break;
case 2:
- if (args.at(exec, 0)->isString())
- context->setFillColor(asString(args.at(exec, 0))->value(), args.at(exec, 1)->toFloat(exec));
+ if (args.at(0).isString())
+ context->setFillColor(asString(args.at(0))->value(), args.at(1).toFloat(exec));
else
- context->setFillColor(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec));
+ context->setFillColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec));
break;
case 4:
- context->setFillColor(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec));
+ context->setFillColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), args.at(3).toFloat(exec));
break;
case 5:
- context->setFillColor(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec), args.at(exec, 4)->toFloat(exec));
+ context->setFillColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), args.at(3).toFloat(exec), args.at(4).toFloat(exec));
break;
default:
return throwError(exec, SyntaxError);
@@ -120,7 +120,7 @@ JSValuePtr JSCanvasRenderingContext2D::setFillColor(ExecState* exec, const ArgLi
return jsUndefined();
}
-JSValuePtr JSCanvasRenderingContext2D::setStrokeColor(ExecState* exec, const ArgList& args)
+JSValue JSCanvasRenderingContext2D::setStrokeColor(ExecState* exec, const ArgList& args)
{
CanvasRenderingContext2D* context = impl();
@@ -132,24 +132,24 @@ JSValuePtr JSCanvasRenderingContext2D::setStrokeColor(ExecState* exec, const Arg
// 5 args = c, m, y, k, a
switch (args.size()) {
case 1:
- if (args.at(exec, 0)->isString())
- context->setStrokeColor(asString(args.at(exec, 0))->value());
+ if (args.at(0).isString())
+ context->setStrokeColor(asString(args.at(0))->value());
else
- context->setStrokeColor(args.at(exec, 0)->toFloat(exec));
+ context->setStrokeColor(args.at(0).toFloat(exec));
break;
case 2:
- if (args.at(exec, 0)->isString())
- context->setStrokeColor(asString(args.at(exec, 0))->value(), args.at(exec, 1)->toFloat(exec));
+ if (args.at(0).isString())
+ context->setStrokeColor(asString(args.at(0))->value(), args.at(1).toFloat(exec));
else
- context->setStrokeColor(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec));
+ context->setStrokeColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec));
break;
case 4:
- context->setStrokeColor(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec));
+ context->setStrokeColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), args.at(3).toFloat(exec));
break;
case 5:
- context->setStrokeColor(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec), args.at(exec, 4)->toFloat(exec));
+ context->setStrokeColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), args.at(3).toFloat(exec), args.at(4).toFloat(exec));
break;
default:
return throwError(exec, SyntaxError);
@@ -158,21 +158,21 @@ JSValuePtr JSCanvasRenderingContext2D::setStrokeColor(ExecState* exec, const Arg
return jsUndefined();
}
-JSValuePtr JSCanvasRenderingContext2D::strokeRect(ExecState* exec, const ArgList& args)
+JSValue JSCanvasRenderingContext2D::strokeRect(ExecState* exec, const ArgList& args)
{
CanvasRenderingContext2D* context = impl();
if (args.size() <= 4)
- context->strokeRect(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec));
+ context->strokeRect(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), args.at(3).toFloat(exec));
else
- context->strokeRect(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec), args.at(exec, 4)->toFloat(exec));
+ context->strokeRect(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), args.at(3).toFloat(exec), args.at(4).toFloat(exec));
return jsUndefined();
}
-JSValuePtr JSCanvasRenderingContext2D::drawImage(ExecState* exec, const ArgList& args)
+JSValue JSCanvasRenderingContext2D::drawImage(ExecState* exec, const ArgList& args)
{
CanvasRenderingContext2D* context = impl();
@@ -182,8 +182,8 @@ JSValuePtr JSCanvasRenderingContext2D::drawImage(ExecState* exec, const ArgList&
// drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh)
// Composite operation is specified with globalCompositeOperation.
// The img parameter can be a <img> or <canvas> element.
- JSValuePtr value = args.at(exec, 0);
- if (!value->isObject())
+ JSValue value = args.at(0);
+ if (!value.isObject())
return throwError(exec, TypeError);
JSObject* o = asObject(value);
@@ -192,18 +192,18 @@ JSValuePtr JSCanvasRenderingContext2D::drawImage(ExecState* exec, const ArgList&
HTMLImageElement* imgElt = static_cast<HTMLImageElement*>(static_cast<JSHTMLElement*>(o)->impl());
switch (args.size()) {
case 3:
- context->drawImage(imgElt, args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec));
+ context->drawImage(imgElt, args.at(1).toFloat(exec), args.at(2).toFloat(exec));
break;
case 5:
- context->drawImage(imgElt, args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec),
- args.at(exec, 3)->toFloat(exec), args.at(exec, 4)->toFloat(exec), ec);
+ context->drawImage(imgElt, args.at(1).toFloat(exec), args.at(2).toFloat(exec),
+ args.at(3).toFloat(exec), args.at(4).toFloat(exec), ec);
setDOMException(exec, ec);
break;
case 9:
- context->drawImage(imgElt, FloatRect(args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec),
- args.at(exec, 3)->toFloat(exec), args.at(exec, 4)->toFloat(exec)),
- FloatRect(args.at(exec, 5)->toFloat(exec), args.at(exec, 6)->toFloat(exec),
- args.at(exec, 7)->toFloat(exec), args.at(exec, 8)->toFloat(exec)), ec);
+ context->drawImage(imgElt, FloatRect(args.at(1).toFloat(exec), args.at(2).toFloat(exec),
+ args.at(3).toFloat(exec), args.at(4).toFloat(exec)),
+ FloatRect(args.at(5).toFloat(exec), args.at(6).toFloat(exec),
+ args.at(7).toFloat(exec), args.at(8).toFloat(exec)), ec);
setDOMException(exec, ec);
break;
default:
@@ -213,18 +213,18 @@ JSValuePtr JSCanvasRenderingContext2D::drawImage(ExecState* exec, const ArgList&
HTMLCanvasElement* canvas = static_cast<HTMLCanvasElement*>(static_cast<JSHTMLElement*>(o)->impl());
switch (args.size()) {
case 3:
- context->drawImage(canvas, args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec));
+ context->drawImage(canvas, args.at(1).toFloat(exec), args.at(2).toFloat(exec));
break;
case 5:
- context->drawImage(canvas, args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec),
- args.at(exec, 3)->toFloat(exec), args.at(exec, 4)->toFloat(exec), ec);
+ context->drawImage(canvas, args.at(1).toFloat(exec), args.at(2).toFloat(exec),
+ args.at(3).toFloat(exec), args.at(4).toFloat(exec), ec);
setDOMException(exec, ec);
break;
case 9:
- context->drawImage(canvas, FloatRect(args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec),
- args.at(exec, 3)->toFloat(exec), args.at(exec, 4)->toFloat(exec)),
- FloatRect(args.at(exec, 5)->toFloat(exec), args.at(exec, 6)->toFloat(exec),
- args.at(exec, 7)->toFloat(exec), args.at(exec, 8)->toFloat(exec)), ec);
+ context->drawImage(canvas, FloatRect(args.at(1).toFloat(exec), args.at(2).toFloat(exec),
+ args.at(3).toFloat(exec), args.at(4).toFloat(exec)),
+ FloatRect(args.at(5).toFloat(exec), args.at(6).toFloat(exec),
+ args.at(7).toFloat(exec), args.at(8).toFloat(exec)), ec);
setDOMException(exec, ec);
break;
default:
@@ -237,64 +237,64 @@ JSValuePtr JSCanvasRenderingContext2D::drawImage(ExecState* exec, const ArgList&
return jsUndefined();
}
-JSValuePtr JSCanvasRenderingContext2D::drawImageFromRect(ExecState* exec, const ArgList& args)
+JSValue JSCanvasRenderingContext2D::drawImageFromRect(ExecState* exec, const ArgList& args)
{
CanvasRenderingContext2D* context = impl();
- JSValuePtr value = args.at(exec, 0);
- if (!value->isObject())
+ JSValue value = args.at(0);
+ if (!value.isObject())
return throwError(exec, TypeError);
JSObject* o = asObject(value);
if (!o->inherits(&JSHTMLImageElement::s_info))
return throwError(exec, TypeError);
context->drawImageFromRect(static_cast<HTMLImageElement*>(static_cast<JSHTMLElement*>(o)->impl()),
- args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec),
- args.at(exec, 3)->toFloat(exec), args.at(exec, 4)->toFloat(exec),
- args.at(exec, 5)->toFloat(exec), args.at(exec, 6)->toFloat(exec),
- args.at(exec, 7)->toFloat(exec), args.at(exec, 8)->toFloat(exec),
- args.at(exec, 9)->toString(exec));
+ args.at(1).toFloat(exec), args.at(2).toFloat(exec),
+ args.at(3).toFloat(exec), args.at(4).toFloat(exec),
+ args.at(5).toFloat(exec), args.at(6).toFloat(exec),
+ args.at(7).toFloat(exec), args.at(8).toFloat(exec),
+ args.at(9).toString(exec));
return jsUndefined();
}
-JSValuePtr JSCanvasRenderingContext2D::setShadow(ExecState* exec, const ArgList& args)
+JSValue JSCanvasRenderingContext2D::setShadow(ExecState* exec, const ArgList& args)
{
CanvasRenderingContext2D* context = impl();
switch (args.size()) {
case 3:
- context->setShadow(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec));
+ context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec));
break;
case 4:
- if (args.at(exec, 3)->isString())
- context->setShadow(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), asString(args.at(exec, 3))->value());
+ if (args.at(3).isString())
+ context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), asString(args.at(3))->value());
else
- context->setShadow(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec));
+ context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), args.at(3).toFloat(exec));
break;
case 5:
- if (args.at(exec, 3)->isString())
- context->setShadow(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), asString(args.at(exec, 3))->value(),
- args.at(exec, 4)->toFloat(exec));
+ if (args.at(3).isString())
+ context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), asString(args.at(3))->value(),
+ args.at(4).toFloat(exec));
else
- context->setShadow(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec),
- args.at(exec, 4)->toFloat(exec));
+ context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), args.at(3).toFloat(exec),
+ args.at(4).toFloat(exec));
break;
case 7:
- context->setShadow(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec),
- args.at(exec, 4)->toFloat(exec), args.at(exec, 5)->toFloat(exec),
- args.at(exec, 6)->toFloat(exec));
+ context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), args.at(3).toFloat(exec),
+ args.at(4).toFloat(exec), args.at(5).toFloat(exec),
+ args.at(6).toFloat(exec));
break;
case 8:
- context->setShadow(args.at(exec, 0)->toFloat(exec), args.at(exec, 1)->toFloat(exec),
- args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec),
- args.at(exec, 4)->toFloat(exec), args.at(exec, 5)->toFloat(exec),
- args.at(exec, 6)->toFloat(exec), args.at(exec, 7)->toFloat(exec));
+ context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
+ args.at(2).toFloat(exec), args.at(3).toFloat(exec),
+ args.at(4).toFloat(exec), args.at(5).toFloat(exec),
+ args.at(6).toFloat(exec), args.at(7).toFloat(exec));
break;
default:
return throwError(exec, SyntaxError);
@@ -303,28 +303,28 @@ JSValuePtr JSCanvasRenderingContext2D::setShadow(ExecState* exec, const ArgList&
return jsUndefined();
}
-JSValuePtr JSCanvasRenderingContext2D::createPattern(ExecState* exec, const ArgList& args)
+JSValue JSCanvasRenderingContext2D::createPattern(ExecState* exec, const ArgList& args)
{
CanvasRenderingContext2D* context = impl();
- JSValuePtr value = args.at(exec, 0);
- if (!value->isObject())
+ JSValue value = args.at(0);
+ if (!value.isObject())
return throwError(exec, TypeError);
JSObject* o = asObject(value);
if (o->inherits(&JSHTMLImageElement::s_info)) {
ExceptionCode ec;
- JSValuePtr pattern = toJS(exec,
+ JSValue pattern = toJS(exec,
context->createPattern(static_cast<HTMLImageElement*>(static_cast<JSHTMLElement*>(o)->impl()),
- valueToStringWithNullCheck(exec, args.at(exec, 1)), ec).get());
+ valueToStringWithNullCheck(exec, args.at(1)), ec).get());
setDOMException(exec, ec);
return pattern;
}
if (o->inherits(&JSHTMLCanvasElement::s_info)) {
ExceptionCode ec;
- JSValuePtr pattern = toJS(exec,
+ JSValue pattern = toJS(exec,
context->createPattern(static_cast<HTMLCanvasElement*>(static_cast<JSHTMLElement*>(o)->impl()),
- valueToStringWithNullCheck(exec, args.at(exec, 1)), ec).get());
+ valueToStringWithNullCheck(exec, args.at(1)), ec).get());
setDOMException(exec, ec);
return pattern;
}
@@ -332,7 +332,7 @@ JSValuePtr JSCanvasRenderingContext2D::createPattern(ExecState* exec, const ArgL
return jsUndefined();
}
-JSValuePtr JSCanvasRenderingContext2D::putImageData(ExecState* exec, const ArgList& args)
+JSValue JSCanvasRenderingContext2D::putImageData(ExecState* exec, const ArgList& args)
{
// putImageData has two variants
// putImageData(ImageData, x, y)
@@ -341,16 +341,16 @@ JSValuePtr JSCanvasRenderingContext2D::putImageData(ExecState* exec, const ArgLi
ExceptionCode ec = 0;
if (args.size() >= 7)
- context->putImageData(toImageData(args.at(exec, 0)), args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec),
- args.at(exec, 3)->toFloat(exec), args.at(exec, 4)->toFloat(exec), args.at(exec, 5)->toFloat(exec), args.at(exec, 6)->toFloat(exec), ec);
+ context->putImageData(toImageData(args.at(0)), args.at(1).toFloat(exec), args.at(2).toFloat(exec),
+ args.at(3).toFloat(exec), args.at(4).toFloat(exec), args.at(5).toFloat(exec), args.at(6).toFloat(exec), ec);
else
- context->putImageData(toImageData(args.at(exec, 0)), args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec), ec);
+ context->putImageData(toImageData(args.at(0)), args.at(1).toFloat(exec), args.at(2).toFloat(exec), ec);
setDOMException(exec, ec);
return jsUndefined();
}
-JSValuePtr JSCanvasRenderingContext2D::fillText(ExecState* exec, const ArgList& args)
+JSValue JSCanvasRenderingContext2D::fillText(ExecState* exec, const ArgList& args)
{
CanvasRenderingContext2D* context = impl();
@@ -362,13 +362,13 @@ JSValuePtr JSCanvasRenderingContext2D::fillText(ExecState* exec, const ArgList&
return throwError(exec, SyntaxError);
if (args.size() == 4)
- context->fillText(args.at(exec, 0)->toString(exec), args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec));
+ context->fillText(args.at(0).toString(exec), args.at(1).toFloat(exec), args.at(2).toFloat(exec), args.at(3).toFloat(exec));
else
- context->fillText(args.at(exec, 0)->toString(exec), args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec));
+ context->fillText(args.at(0).toString(exec), args.at(1).toFloat(exec), args.at(2).toFloat(exec));
return jsUndefined();
}
-JSValuePtr JSCanvasRenderingContext2D::strokeText(ExecState* exec, const ArgList& args)
+JSValue JSCanvasRenderingContext2D::strokeText(ExecState* exec, const ArgList& args)
{
CanvasRenderingContext2D* context = impl();
@@ -380,9 +380,9 @@ JSValuePtr JSCanvasRenderingContext2D::strokeText(ExecState* exec, const ArgList
return throwError(exec, SyntaxError);
if (args.size() == 4)
- context->strokeText(args.at(exec, 0)->toString(exec), args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec), args.at(exec, 3)->toFloat(exec));
+ context->strokeText(args.at(0).toString(exec), args.at(1).toFloat(exec), args.at(2).toFloat(exec), args.at(3).toFloat(exec));
else
- context->strokeText(args.at(exec, 0)->toString(exec), args.at(exec, 1)->toFloat(exec), args.at(exec, 2)->toFloat(exec));
+ context->strokeText(args.at(0).toString(exec), args.at(1).toFloat(exec), args.at(2).toFloat(exec));
return jsUndefined();
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSClipboardCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSClipboardCustom.cpp
index 8ffb49e..78dca49 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSClipboardCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSClipboardCustom.cpp
@@ -48,7 +48,7 @@ namespace WebCore {
using namespace HTMLNames;
-JSValuePtr JSClipboard::types(ExecState* exec) const
+JSValue JSClipboard::types(ExecState* exec) const
{
Clipboard* clipboard = impl();
@@ -56,14 +56,14 @@ JSValuePtr JSClipboard::types(ExecState* exec) const
if (types.isEmpty())
return jsNull();
- ArgList list;
+ MarkedArgumentBuffer list;
HashSet<String>::const_iterator end = types.end();
for (HashSet<String>::const_iterator it = types.begin(); it != end; ++it)
list.append(jsString(exec, UString(*it)));
return constructArray(exec, list);
}
-JSValuePtr JSClipboard::clearData(ExecState* exec, const ArgList& args)
+JSValue JSClipboard::clearData(ExecState* exec, const ArgList& args)
{
Clipboard* clipboard = impl();
@@ -73,7 +73,7 @@ JSValuePtr JSClipboard::clearData(ExecState* exec, const ArgList& args)
}
if (args.size() == 1) {
- clipboard->clearData(args.at(exec, 0)->toString(exec));
+ clipboard->clearData(args.at(0).toString(exec));
return jsUndefined();
}
@@ -81,7 +81,7 @@ JSValuePtr JSClipboard::clearData(ExecState* exec, const ArgList& args)
return throwError(exec, SyntaxError, "clearData: Invalid number of arguments");
}
-JSValuePtr JSClipboard::getData(ExecState* exec, const ArgList& args)
+JSValue JSClipboard::getData(ExecState* exec, const ArgList& args)
{
// FIXME: It does not match the rest of the JS bindings to throw on invalid number of arguments.
if (args.size() != 1)
@@ -90,14 +90,14 @@ JSValuePtr JSClipboard::getData(ExecState* exec, const ArgList& args)
Clipboard* clipboard = impl();
bool success;
- String result = clipboard->getData(args.at(exec, 0)->toString(exec), success);
+ String result = clipboard->getData(args.at(0).toString(exec), success);
if (!success)
return jsUndefined();
return jsString(exec, result);
}
-JSValuePtr JSClipboard::setData(ExecState* exec, const ArgList& args)
+JSValue JSClipboard::setData(ExecState* exec, const ArgList& args)
{
Clipboard* clipboard = impl();
@@ -105,10 +105,10 @@ JSValuePtr JSClipboard::setData(ExecState* exec, const ArgList& args)
if (args.size() != 2)
return throwError(exec, SyntaxError, "setData: Invalid number of arguments");
- return jsBoolean(clipboard->setData(args.at(exec, 0)->toString(exec), args.at(exec, 1)->toString(exec)));
+ return jsBoolean(clipboard->setData(args.at(0).toString(exec), args.at(1).toString(exec)));
}
-JSValuePtr JSClipboard::setDragImage(ExecState* exec, const ArgList& args)
+JSValue JSClipboard::setDragImage(ExecState* exec, const ArgList& args)
{
Clipboard* clipboard = impl();
@@ -119,11 +119,11 @@ JSValuePtr JSClipboard::setDragImage(ExecState* exec, const ArgList& args)
if (args.size() != 3)
return throwError(exec, SyntaxError, "setDragImage: Invalid number of arguments");
- int x = args.at(exec, 1)->toInt32(exec);
- int y = args.at(exec, 2)->toInt32(exec);
+ int x = args.at(1).toInt32(exec);
+ int y = args.at(2).toInt32(exec);
// See if they passed us a node
- Node* node = toNode(args.at(exec, 0));
+ Node* node = toNode(args.at(0));
if (!node)
return throwError(exec, TypeError);
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSConsoleCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSConsoleCustom.cpp
index ddfe4f7..9c48467 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSConsoleCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSConsoleCustom.cpp
@@ -34,12 +34,14 @@ using namespace JSC;
namespace WebCore {
+#if ENABLE(JAVASCRIPT_DEBUGGER)
+
typedef Vector<RefPtr<JSC::Profile> > ProfilesArray;
-JSValuePtr JSConsole::profiles(ExecState* exec) const
+JSValue JSConsole::profiles(ExecState* exec) const
{
const ProfilesArray& profiles = impl()->profiles();
- ArgList list;
+ MarkedArgumentBuffer list;
ProfilesArray::const_iterator end = profiles.end();
for (ProfilesArray::const_iterator iter = profiles.begin(); iter != end; ++iter)
@@ -48,4 +50,6 @@ JSValuePtr JSConsole::profiles(ExecState* exec) const
return constructArray(exec, list);
}
+#endif
+
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCoordinatesCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCoordinatesCustom.cpp
new file mode 100644
index 0000000..720bb9b
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCoordinatesCustom.cpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSCoordinates.h"
+
+#include "Coordinates.h"
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue JSCoordinates::altitude(ExecState* exec) const
+{
+ Coordinates* imp = impl();
+ if (!imp->canProvideAltitude())
+ return jsNull();
+ return jsNumber(exec, imp->altitude());
+}
+
+JSValue JSCoordinates::altitudeAccuracy(ExecState* exec) const
+{
+ Coordinates* imp = impl();
+ if (!imp->canProvideAltitudeAccuracy())
+ return jsNull();
+ return jsNumber(exec, imp->altitudeAccuracy());
+}
+
+JSValue JSCoordinates::heading(ExecState* exec) const
+{
+ Coordinates* imp = impl();
+ if (!imp->canProvideHeading())
+ return jsNull();
+ return jsNumber(exec, imp->heading());
+}
+
+JSValue JSCoordinates::speed(ExecState* exec) const
+{
+ Coordinates* imp = impl();
+ if (!imp->canProvideSpeed())
+ return jsNull();
+ return jsNumber(exec, imp->speed());
+}
+
+} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp
index 836ffb9..6f9efd9 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp
@@ -26,10 +26,8 @@
#include "config.h"
#include "JSCustomPositionCallback.h"
-#include "CString.h"
#include "Frame.h"
#include "JSGeoposition.h"
-#include "Page.h"
#include "ScriptController.h"
#include <runtime/JSLock.h>
@@ -56,9 +54,9 @@ void JSCustomPositionCallback::handleEvent(Geoposition* geoposition, bool& raise
JSC::JSLock lock(false);
- JSValuePtr function = m_callback->get(exec, Identifier(exec, "handleEvent"));
+ JSValue function = m_callback->get(exec, Identifier(exec, "handleEvent"));
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone) {
callType = m_callback->getCallData(callData);
if (callType == CallTypeNone) {
@@ -70,17 +68,19 @@ void JSCustomPositionCallback::handleEvent(Geoposition* geoposition, bool& raise
RefPtr<JSCustomPositionCallback> protect(this);
- ArgList args;
+ MarkedArgumentBuffer args;
args.append(toJS(exec, geoposition));
- globalObject->startTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.start();
call(exec, function, callType, callData, m_callback, args);
- globalObject->stopTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.stop();
if (exec->hadException()) {
reportCurrentException(exec);
raisedException = true;
}
+
+ Document::updateStyleForAllDocuments();
}
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp
index b4e9535..cc6cd55 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp
@@ -26,10 +26,8 @@
#include "config.h"
#include "JSCustomPositionErrorCallback.h"
-#include "CString.h"
#include "Frame.h"
#include "JSPositionError.h"
-#include "Page.h"
#include "ScriptController.h"
#include <runtime/JSLock.h>
@@ -56,9 +54,9 @@ void JSCustomPositionErrorCallback::handleEvent(PositionError* positionError)
JSC::JSLock lock(false);
- JSValuePtr function = m_callback->get(exec, Identifier(exec, "handleEvent"));
+ JSValue function = m_callback->get(exec, Identifier(exec, "handleEvent"));
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone) {
callType = m_callback->getCallData(callData);
if (callType == CallTypeNone) {
@@ -70,15 +68,17 @@ void JSCustomPositionErrorCallback::handleEvent(PositionError* positionError)
RefPtr<JSCustomPositionErrorCallback> protect(this);
- ArgList args;
+ MarkedArgumentBuffer args;
args.append(toJS(exec, positionError));
- globalObject->startTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.start();
call(exec, function, callType, callData, m_callback, args);
- globalObject->stopTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.stop();
if (exec->hadException())
reportCurrentException(exec);
+
+ Document::updateStyleForAllDocuments();
}
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.cpp
index 2243564..107a491 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.cpp
@@ -28,9 +28,8 @@
#include "config.h"
#include "JSCustomSQLStatementCallback.h"
+#if ENABLE(DATABASE)
-#include "CString.h"
-#include "DOMWindow.h"
#include "Frame.h"
#include "ScriptController.h"
#include "JSSQLResultSet.h"
@@ -60,9 +59,9 @@ void JSCustomSQLStatementCallback::handleEvent(SQLTransaction* transaction, SQLR
JSC::JSLock lock(false);
- JSValuePtr function = m_callback->get(exec, Identifier(exec, "handleEvent"));
+ JSValue function = m_callback->get(exec, Identifier(exec, "handleEvent"));
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone) {
callType = m_callback->getCallData(callData);
if (callType == CallTypeNone) {
@@ -74,13 +73,13 @@ void JSCustomSQLStatementCallback::handleEvent(SQLTransaction* transaction, SQLR
RefPtr<JSCustomSQLStatementCallback> protect(this);
- ArgList args;
+ MarkedArgumentBuffer args;
args.append(toJS(exec, transaction));
args.append(toJS(exec, resultSet));
- globalObject->startTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.start();
call(exec, function, callType, callData, m_callback, args);
- globalObject->stopTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.stop();
if (exec->hadException()) {
reportCurrentException(exec);
@@ -88,7 +87,9 @@ void JSCustomSQLStatementCallback::handleEvent(SQLTransaction* transaction, SQLR
raisedException = true;
}
- Document::updateDocumentsRendering();
+ Document::updateStyleForAllDocuments();
}
}
+
+#endif // ENABLE(DATABASE)
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.h b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.h
index 3a3ae21..c380670 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.h
@@ -29,6 +29,8 @@
#ifndef JSCustomSQLStatementCallback_h
#define JSCustomSQLStatementCallback_h
+#if ENABLE(DATABASE)
+
#include "SQLStatementCallback.h"
#include <runtime/JSObject.h>
@@ -59,4 +61,6 @@ private:
}
+#endif // ENABLE(DATABASE)
+
#endif // JSCustomSQLStatementCallback_h
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp
index 14080ea..018dabd 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp
@@ -29,8 +29,8 @@
#include "config.h"
#include "JSCustomSQLStatementErrorCallback.h"
-#include "CString.h"
-#include "DOMWindow.h"
+#if ENABLE(DATABASE)
+
#include "Frame.h"
#include "ScriptController.h"
#include "JSSQLError.h"
@@ -60,9 +60,9 @@ bool JSCustomSQLStatementErrorCallback::handleEvent(SQLTransaction* transaction,
JSC::JSLock lock(false);
- JSValuePtr handleEventFunction = m_callback->get(exec, Identifier(exec, "handleEvent"));
+ JSValue handleEventFunction = m_callback->get(exec, Identifier(exec, "handleEvent"));
CallData handleEventCallData;
- CallType handleEventCallType = handleEventFunction->getCallData(handleEventCallData);
+ CallType handleEventCallType = handleEventFunction.getCallData(handleEventCallData);
CallData callbackCallData;
CallType callbackCallType = CallTypeNone;
@@ -76,17 +76,17 @@ bool JSCustomSQLStatementErrorCallback::handleEvent(SQLTransaction* transaction,
RefPtr<JSCustomSQLStatementErrorCallback> protect(this);
- ArgList args;
+ MarkedArgumentBuffer args;
args.append(toJS(exec, transaction));
args.append(toJS(exec, error));
- JSValuePtr result;
- globalObject->startTimeoutCheck();
+ JSValue result;
+ globalObject->globalData()->timeoutChecker.start();
if (handleEventCallType != CallTypeNone)
result = call(exec, handleEventFunction, handleEventCallType, handleEventCallData, m_callback, args);
else
result = call(exec, m_callback, callbackCallType, callbackCallData, m_callback, args);
- globalObject->stopTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.stop();
if (exec->hadException()) {
reportCurrentException(exec);
@@ -98,9 +98,11 @@ bool JSCustomSQLStatementErrorCallback::handleEvent(SQLTransaction* transaction,
return true;
}
- Document::updateDocumentsRendering();
+ Document::updateStyleForAllDocuments();
- return result->toBoolean(exec);
+ return result.toBoolean(exec);
}
}
+
+#endif // ENABLE(DATABASE)
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.h b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.h
index 2847114..e563393 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.h
@@ -29,6 +29,8 @@
#ifndef JSCustomSQLStatementErrorCallback_h
#define JSCustomSQLStatementErrorCallback_h
+#if ENABLE(DATABASE)
+
#include "SQLStatementErrorCallback.h"
#include <runtime/JSObject.h>
@@ -59,5 +61,7 @@ private:
}
+#endif // ENABLE(DATABASE)
+
#endif // JSCustomSQLStatementErrorCallback_h
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.cpp
index 7910a88..a41ac78 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.cpp
@@ -29,10 +29,9 @@
#include "config.h"
#include "JSCustomSQLTransactionCallback.h"
-#include "CString.h"
-#include "DOMWindow.h"
+#if ENABLE(DATABASE)
+
#include "Frame.h"
-#include "Logging.h"
#include "ScriptController.h"
#include "JSSQLTransaction.h"
#include "Page.h"
@@ -101,9 +100,9 @@ void JSCustomSQLTransactionCallback::handleEvent(SQLTransaction* transaction, bo
JSC::JSLock lock(false);
- JSValuePtr handleEventFunction = m_data->callback()->get(exec, Identifier(exec, "handleEvent"));
+ JSValue handleEventFunction = m_data->callback()->get(exec, Identifier(exec, "handleEvent"));
CallData handleEventCallData;
- CallType handleEventCallType = handleEventFunction->getCallData(handleEventCallData);
+ CallType handleEventCallType = handleEventFunction.getCallData(handleEventCallData);
CallData callbackCallData;
CallType callbackCallType = CallTypeNone;
@@ -117,15 +116,15 @@ void JSCustomSQLTransactionCallback::handleEvent(SQLTransaction* transaction, bo
RefPtr<JSCustomSQLTransactionCallback> protect(this);
- ArgList args;
+ MarkedArgumentBuffer args;
args.append(toJS(exec, transaction));
- globalObject->startTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.start();
if (handleEventCallType != CallTypeNone)
call(exec, handleEventFunction, handleEventCallType, handleEventCallData, m_data->callback(), args);
else
call(exec, m_data->callback(), callbackCallType, callbackCallData, m_data->callback(), args);
- globalObject->stopTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.stop();
if (exec->hadException()) {
reportCurrentException(exec);
@@ -133,7 +132,9 @@ void JSCustomSQLTransactionCallback::handleEvent(SQLTransaction* transaction, bo
raisedException = true;
}
- Document::updateDocumentsRendering();
+ Document::updateStyleForAllDocuments();
}
}
+
+#endif // ENABLE(DATABASE)
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.h b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.h
index 0a21c1a..22c367c 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.h
@@ -29,6 +29,8 @@
#ifndef JSCustomSQLTransactionCallback_h
#define JSCustomSQLTransactionCallback_h
+#if ENABLE(DATABASE)
+
#include "SQLTransactionCallback.h"
#include <wtf/PassRefPtr.h>
@@ -60,4 +62,6 @@ private:
}
+#endif // ENABLE(DATABASE)
+
#endif // JSCustomSQLTransactionCallback_h
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp
index 7f95d4c..324e2bb 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp
@@ -29,8 +29,8 @@
#include "config.h"
#include "JSCustomSQLTransactionErrorCallback.h"
-#include "CString.h"
-#include "DOMWindow.h"
+#if ENABLE(DATABASE)
+
#include "Frame.h"
#include "ScriptController.h"
#include "JSSQLError.h"
@@ -46,47 +46,46 @@ JSCustomSQLTransactionErrorCallback::JSCustomSQLTransactionErrorCallback(JSObjec
{
}
-bool JSCustomSQLTransactionErrorCallback::handleEvent(SQLError* error)
+void JSCustomSQLTransactionErrorCallback::handleEvent(SQLError* error)
{
ASSERT(m_callback);
ASSERT(m_frame);
-
+
if (!m_frame->script()->isEnabled())
- return true;
-
+ return;
+
JSGlobalObject* globalObject = m_frame->script()->globalObject();
ExecState* exec = globalObject->globalExec();
-
+
JSC::JSLock lock(false);
-
- JSValuePtr function = m_callback->get(exec, Identifier(exec, "handleEvent"));
+
+ JSValue function = m_callback->get(exec, Identifier(exec, "handleEvent"));
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone) {
callType = m_callback->getCallData(callData);
if (callType == CallTypeNone) {
// FIXME: Should an exception be thrown here?
- return true;
+ return;
}
function = m_callback;
}
RefPtr<JSCustomSQLTransactionErrorCallback> protect(this);
-
- ArgList args;
+
+ MarkedArgumentBuffer args;
args.append(toJS(exec, error));
- JSValuePtr result;
- globalObject->startTimeoutCheck();
- result = call(exec, function, callType, callData, m_callback, args);
- globalObject->stopTimeoutCheck();
-
+ globalObject->globalData()->timeoutChecker.start();
+ call(exec, function, callType, callData, m_callback, args);
+ globalObject->globalData()->timeoutChecker.stop();
+
if (exec->hadException())
reportCurrentException(exec);
-
- Document::updateDocumentsRendering();
-
- return result->toBoolean(exec);
+
+ Document::updateStyleForAllDocuments();
}
-
+
}
+
+#endif // ENABLE(DATABASE)
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.h b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.h
index 122224f..be3df29 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.h
@@ -29,6 +29,8 @@
#ifndef JSCustomSQLTransactionErrorCallback_h
#define JSCustomSQLTransactionErrorCallback_h
+#if ENABLE(DATABASE)
+
#include "SQLTransactionErrorCallback.h"
#include <runtime/JSObject.h>
@@ -48,7 +50,7 @@ class JSCustomSQLTransactionErrorCallback : public SQLTransactionErrorCallback {
public:
static PassRefPtr<JSCustomSQLTransactionErrorCallback> create(JSC::JSObject* callback, Frame* frame) { return adoptRef(new JSCustomSQLTransactionErrorCallback(callback, frame)); }
- virtual bool handleEvent(SQLError*);
+ virtual void handleEvent(SQLError*);
private:
JSCustomSQLTransactionErrorCallback(JSC::JSObject* callback, Frame*);
@@ -58,5 +60,6 @@ private:
};
}
+#endif // ENABLE(DATABASE)
#endif // JSCustomSQLTransactionErrorCallback_h
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp
index 527fa41..f3f76c4 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp
@@ -29,11 +29,8 @@
#include "config.h"
#include "JSCustomVoidCallback.h"
-#include "CString.h"
-#include "DOMWindow.h"
#include "Frame.h"
#include "JSDOMWindowCustom.h"
-#include "JSDOMBinding.h"
#include "ScriptController.h"
#include <runtime/JSLock.h>
@@ -60,9 +57,9 @@ void JSCustomVoidCallback::handleEvent()
JSC::JSLock lock(false);
- JSValuePtr function = m_callback->get(exec, Identifier(exec, "handleEvent"));
+ JSValue function = m_callback->get(exec, Identifier(exec, "handleEvent"));
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone) {
callType = m_callback->getCallData(callData);
if (callType == CallTypeNone) {
@@ -74,21 +71,21 @@ void JSCustomVoidCallback::handleEvent()
RefPtr<JSCustomVoidCallback> protect(this);
- ArgList args;
+ MarkedArgumentBuffer args;
- globalObject->startTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.start();
call(exec, function, callType, callData, m_callback, args);
- globalObject->stopTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.stop();
if (exec->hadException())
reportCurrentException(exec);
- Document::updateDocumentsRendering();
+ Document::updateStyleForAllDocuments();
}
-PassRefPtr<VoidCallback> toVoidCallback(ExecState* exec, JSValuePtr value)
+PassRefPtr<VoidCallback> toVoidCallback(ExecState* exec, JSValue value)
{
- JSObject* object = value->getObject();
+ JSObject* object = value.getObject();
if (!object)
return 0;
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.h b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.h
index f54ddb6..9cd7c34 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.h
@@ -55,7 +55,7 @@ namespace WebCore {
RefPtr<Frame> m_frame;
};
- PassRefPtr<VoidCallback> toVoidCallback(JSC::ExecState*, JSC::JSValuePtr);
+ PassRefPtr<VoidCallback> toVoidCallback(JSC::ExecState*, JSC::JSValue);
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp
index 8451dd0..6361e70 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp
@@ -28,14 +28,10 @@
#if ENABLE(XPATH)
-#include "CString.h"
-#include "Console.h"
-#include "DOMWindow.h"
#include "Document.h"
#include "ExceptionCode.h"
#include "Frame.h"
#include "JSDOMWindowCustom.h"
-#include "JSDOMBinding.h"
#include "ScriptController.h"
#include <runtime/JSLock.h>
@@ -43,12 +39,12 @@ namespace WebCore {
using namespace JSC;
-PassRefPtr<JSCustomXPathNSResolver> JSCustomXPathNSResolver::create(JSC::ExecState* exec, JSC::JSValuePtr value)
+PassRefPtr<JSCustomXPathNSResolver> JSCustomXPathNSResolver::create(JSC::ExecState* exec, JSC::JSValue value)
{
- if (value->isUndefinedOrNull())
+ if (value.isUndefinedOrNull())
return 0;
- JSObject* resolverObject = value->getObject();
+ JSObject* resolverObject = value.getObject();
if (!resolverObject) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return 0;
@@ -81,9 +77,9 @@ String JSCustomXPathNSResolver::lookupNamespaceURI(const String& prefix)
JSGlobalObject* globalObject = m_frame->script()->globalObject();
ExecState* exec = globalObject->globalExec();
- JSValuePtr function = m_customResolver->get(exec, Identifier(exec, "lookupNamespaceURI"));
+ JSValue function = m_customResolver->get(exec, Identifier(exec, "lookupNamespaceURI"));
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone) {
callType = m_customResolver->getCallData(callData);
if (callType == CallTypeNone) {
@@ -96,22 +92,22 @@ String JSCustomXPathNSResolver::lookupNamespaceURI(const String& prefix)
RefPtr<JSCustomXPathNSResolver> selfProtector(this);
- ArgList args;
+ MarkedArgumentBuffer args;
args.append(jsString(exec, prefix));
- globalObject->startTimeoutCheck();
- JSValuePtr retval = call(exec, function, callType, callData, m_customResolver, args);
- globalObject->stopTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.start();
+ JSValue retval = call(exec, function, callType, callData, m_customResolver, args);
+ globalObject->globalData()->timeoutChecker.stop();
String result;
if (exec->hadException())
reportCurrentException(exec);
else {
- if (!retval->isUndefinedOrNull())
- result = retval->toString(exec);
+ if (!retval.isUndefinedOrNull())
+ result = retval.toString(exec);
}
- Document::updateDocumentsRendering();
+ Document::updateStyleForAllDocuments();
return result;
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.h b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.h
index fecbb61..44c44f9 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.h
@@ -44,7 +44,7 @@ namespace WebCore {
class JSCustomXPathNSResolver : public XPathNSResolver {
public:
- static PassRefPtr<JSCustomXPathNSResolver> create(JSC::ExecState*, JSC::JSValuePtr);
+ static PassRefPtr<JSCustomXPathNSResolver> create(JSC::ExecState*, JSC::JSValue);
virtual ~JSCustomXPathNSResolver();
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMApplicationCacheCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMApplicationCacheCustom.cpp
index 5e867a1..7e8d9ce 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMApplicationCacheCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMApplicationCacheCustom.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2009 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -46,44 +46,32 @@ void JSDOMApplicationCache::mark()
{
DOMObject::mark();
- if (JSUnprotectedEventListener* listener = static_cast<JSUnprotectedEventListener*>(m_impl->onchecking()))
- listener->mark();
-
- if (JSUnprotectedEventListener* listener = static_cast<JSUnprotectedEventListener*>(m_impl->onerror()))
- listener->mark();
-
- if (JSUnprotectedEventListener* listener = static_cast<JSUnprotectedEventListener*>(m_impl->onnoupdate()))
- listener->mark();
-
- if (JSUnprotectedEventListener* listener = static_cast<JSUnprotectedEventListener*>(m_impl->ondownloading()))
- listener->mark();
-
- if (JSUnprotectedEventListener* listener = static_cast<JSUnprotectedEventListener*>(m_impl->onprogress()))
- listener->mark();
-
- if (JSUnprotectedEventListener* listener = static_cast<JSUnprotectedEventListener*>(m_impl->onupdateready()))
- listener->mark();
-
- if (JSUnprotectedEventListener* listener = static_cast<JSUnprotectedEventListener*>(m_impl->oncached()))
- listener->mark();
+ markIfNotNull(m_impl->onchecking());
+ markIfNotNull(m_impl->onerror());
+ markIfNotNull(m_impl->onnoupdate());
+ markIfNotNull(m_impl->ondownloading());
+ markIfNotNull(m_impl->onprogress());
+ markIfNotNull(m_impl->onupdateready());
+ markIfNotNull(m_impl->oncached());
+ markIfNotNull(m_impl->onobsolete());
typedef DOMApplicationCache::EventListenersMap EventListenersMap;
typedef DOMApplicationCache::ListenerVector ListenerVector;
EventListenersMap& eventListeners = m_impl->eventListeners();
for (EventListenersMap::iterator mapIter = eventListeners.begin(); mapIter != eventListeners.end(); ++mapIter) {
- for (ListenerVector::iterator vecIter = mapIter->second.begin(); vecIter != mapIter->second.end(); ++vecIter) {
- JSUnprotectedEventListener* listener = static_cast<JSUnprotectedEventListener*>(vecIter->get());
- listener->mark();
- }
+ for (ListenerVector::iterator vecIter = mapIter->second.begin(); vecIter != mapIter->second.end(); ++vecIter)
+ (*vecIter)->markJSFunction();
}
}
-JSValuePtr JSDOMApplicationCache::hasItem(ExecState* exec, const ArgList& args)
+#if ENABLE(APPLICATION_CACHE_DYNAMIC_ENTRIES)
+
+JSValue JSDOMApplicationCache::hasItem(ExecState* exec, const ArgList& args)
{
Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
if (!frame)
return jsUndefined();
- const KURL& url = frame->loader()->completeURL(args.at(exec, 0)->toString(exec));
+ const KURL& url = frame->loader()->completeURL(args.at(0).toString(exec));
ExceptionCode ec = 0;
bool result = impl()->hasItem(url, ec);
@@ -91,12 +79,12 @@ JSValuePtr JSDOMApplicationCache::hasItem(ExecState* exec, const ArgList& args)
return jsBoolean(result);
}
-JSValuePtr JSDOMApplicationCache::add(ExecState* exec, const ArgList& args)
+JSValue JSDOMApplicationCache::add(ExecState* exec, const ArgList& args)
{
Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
if (!frame)
return jsUndefined();
- const KURL& url = frame->loader()->completeURL(args.at(exec, 0)->toString(exec));
+ const KURL& url = frame->loader()->completeURL(args.at(0).toString(exec));
ExceptionCode ec = 0;
impl()->add(url, ec);
@@ -104,12 +92,12 @@ JSValuePtr JSDOMApplicationCache::add(ExecState* exec, const ArgList& args)
return jsUndefined();
}
-JSValuePtr JSDOMApplicationCache::remove(ExecState* exec, const ArgList& args)
+JSValue JSDOMApplicationCache::remove(ExecState* exec, const ArgList& args)
{
Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
if (!frame)
return jsUndefined();
- const KURL& url = frame->loader()->completeURL(args.at(exec, 0)->toString(exec));
+ const KURL& url = frame->loader()->completeURL(args.at(0).toString(exec));
ExceptionCode ec = 0;
impl()->remove(url, ec);
@@ -117,27 +105,29 @@ JSValuePtr JSDOMApplicationCache::remove(ExecState* exec, const ArgList& args)
return jsUndefined();
}
-JSValuePtr JSDOMApplicationCache::addEventListener(ExecState* exec, const ArgList& args)
+#endif // ENABLE(APPLICATION_CACHE_DYNAMIC_ENTRIES)
+
+JSValue JSDOMApplicationCache::addEventListener(ExecState* exec, const ArgList& args)
{
JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());
if (!globalObject)
return jsUndefined();
- RefPtr<JSUnprotectedEventListener> listener = globalObject->findOrCreateJSUnprotectedEventListener(exec, args.at(exec, 1));
+ RefPtr<JSEventListener> listener = globalObject->findOrCreateJSEventListener(args.at(1));
if (!listener)
return jsUndefined();
- impl()->addEventListener(args.at(exec, 0)->toString(exec), listener.release(), args.at(exec, 2)->toBoolean(exec));
+ impl()->addEventListener(args.at(0).toString(exec), listener.release(), args.at(2).toBoolean(exec));
return jsUndefined();
}
-JSValuePtr JSDOMApplicationCache::removeEventListener(ExecState* exec, const ArgList& args)
+JSValue JSDOMApplicationCache::removeEventListener(ExecState* exec, const ArgList& args)
{
JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());
if (!globalObject)
return jsUndefined();
- JSUnprotectedEventListener* listener = globalObject->findJSUnprotectedEventListener(exec, args.at(exec, 1));
+ JSEventListener* listener = globalObject->findJSEventListener(args.at(1));
if (!listener)
return jsUndefined();
- impl()->removeEventListener(args.at(exec, 0)->toString(exec), listener, args.at(exec, 2)->toBoolean(exec));
+ impl()->removeEventListener(args.at(0).toString(exec), listener, args.at(2).toBoolean(exec));
return jsUndefined();
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.cpp
index 4cf083a..4f58797 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.cpp
@@ -1,6 +1,6 @@
/*
* Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
* Copyright (C) 2007 Samuel Weinig <sam@webkit.org>
*
* This library is free software; you can redistribute it and/or
@@ -33,6 +33,7 @@
#include "ExceptionCode.h"
#include "Frame.h"
#include "HTMLImageElement.h"
+#include "HTMLScriptElement.h"
#include "HTMLNames.h"
#include "JSDOMCoreException.h"
#include "JSDOMWindowCustom.h"
@@ -259,32 +260,47 @@ void forgetAllDOMNodesForDocument(Document* document)
removeWrappers(document->wrapperCache());
}
+static inline bool isObservableThroughDOM(JSNode* jsNode)
+{
+ // Certain conditions implicitly make a JS DOM node wrapper observable
+ // through the DOM, even if no explicit reference to it remains.
+
+ Node* node = jsNode->impl();
+
+ if (node->inDocument()) {
+ // 1. If a node is in the document, and its wrapper has custom properties,
+ // the wrapper is observable because future access to the node through the
+ // DOM must reflect those properties.
+ if (jsNode->hasCustomProperties())
+ return true;
+
+ // 2. If a node is in the document, and has event listeners, its wrapper is
+ // observable because its wrapper is responsible for marking those event listeners.
+ if (node->eventListeners().size())
+ return true; // Technically, we may overzealously mark a wrapper for a node that has only non-JS event listeners. Oh well.
+ } else {
+ // 3. If a wrapper is the last reference to an image or script element
+ // that is loading but not in the document, the wrapper is observable
+ // because it is the only thing keeping the image element alive, and if
+ // the image element is destroyed, its load event will not fire.
+ // FIXME: The DOM should manage this issue without the help of JavaScript wrappers.
+ if (node->hasTagName(imgTag) && !static_cast<HTMLImageElement*>(node)->haveFiredLoadEvent())
+ return true;
+ if (node->hasTagName(scriptTag) && !static_cast<HTMLScriptElement*>(node)->haveFiredLoadEvent())
+ return true;
+ }
+
+ return false;
+}
+
void markDOMNodesForDocument(Document* doc)
{
- // If a node's JS wrapper holds custom properties, those properties must
- // persist every time the node is fetched from the DOM. So, we keep JS
- // wrappers like that from being garbage collected.
-
JSWrapperCache& nodeDict = doc->wrapperCache();
JSWrapperCache::iterator nodeEnd = nodeDict.end();
for (JSWrapperCache::iterator nodeIt = nodeDict.begin(); nodeIt != nodeEnd; ++nodeIt) {
JSNode* jsNode = nodeIt->second;
- Node* node = jsNode->impl();
-
- if (jsNode->marked())
- continue;
-
- // No need to preserve a wrapper that has no custom properties or is no
- // longer fetchable through the DOM.
- if (!jsNode->hasCustomProperties() || !node->inDocument()) {
- //... unless the wrapper wraps a loading image, since the "new Image"
- // syntax allows an orphan image wrapper to be the last reference
- // to a loading image, whose load event might have important side-effects.
- if (!node->hasTagName(imgTag) || static_cast<HTMLImageElement*>(node)->haveFiredLoadEvent())
- continue;
- }
-
- jsNode->mark();
+ if (!jsNode->marked() && isObservableThroughDOM(jsNode))
+ jsNode->mark();
}
}
@@ -340,84 +356,91 @@ void markDOMObjectWrapper(JSGlobalData& globalData, void* object)
wrapper->mark();
}
-JSValuePtr jsStringOrNull(ExecState* exec, const String& s)
+JSValue jsStringOrNull(ExecState* exec, const String& s)
{
if (s.isNull())
return jsNull();
return jsString(exec, s);
}
-JSValuePtr jsOwnedStringOrNull(ExecState* exec, const UString& s)
+JSValue jsOwnedStringOrNull(ExecState* exec, const UString& s)
{
if (s.isNull())
return jsNull();
return jsOwnedString(exec, s);
}
-JSValuePtr jsStringOrUndefined(ExecState* exec, const String& s)
+JSValue jsStringOrUndefined(ExecState* exec, const String& s)
{
if (s.isNull())
return jsUndefined();
return jsString(exec, s);
}
-JSValuePtr jsStringOrFalse(ExecState* exec, const String& s)
+JSValue jsStringOrFalse(ExecState* exec, const String& s)
{
if (s.isNull())
return jsBoolean(false);
return jsString(exec, s);
}
-JSValuePtr jsStringOrNull(ExecState* exec, const KURL& url)
+JSValue jsStringOrNull(ExecState* exec, const KURL& url)
{
if (url.isNull())
return jsNull();
return jsString(exec, url.string());
}
-JSValuePtr jsStringOrUndefined(ExecState* exec, const KURL& url)
+JSValue jsStringOrUndefined(ExecState* exec, const KURL& url)
{
if (url.isNull())
return jsUndefined();
return jsString(exec, url.string());
}
-JSValuePtr jsStringOrFalse(ExecState* exec, const KURL& url)
+JSValue jsStringOrFalse(ExecState* exec, const KURL& url)
{
if (url.isNull())
return jsBoolean(false);
return jsString(exec, url.string());
}
-UString valueToStringWithNullCheck(ExecState* exec, JSValuePtr value)
+UString valueToStringWithNullCheck(ExecState* exec, JSValue value)
{
- if (value->isNull())
+ if (value.isNull())
return UString();
- return value->toString(exec);
+ return value.toString(exec);
}
-UString valueToStringWithUndefinedOrNullCheck(ExecState* exec, JSValuePtr value)
+UString valueToStringWithUndefinedOrNullCheck(ExecState* exec, JSValue value)
{
- if (value->isUndefinedOrNull())
+ if (value.isUndefinedOrNull())
return UString();
- return value->toString(exec);
+ return value.toString(exec);
}
-void reportException(JSC::ExecState* exec, JSValuePtr exception)
+void reportException(ExecState* exec, JSValue exception)
{
- UString errorMessage = exception->toString(exec);
- JSObject* exceptionObject = exception->toObject(exec);
- int lineNumber = exceptionObject->get(exec, Identifier(exec, "line"))->toInt32(exec);
- UString exceptionSourceURL = exceptionObject->get(exec, Identifier(exec, "sourceURL"))->toString(exec);
+ UString errorMessage = exception.toString(exec);
+ JSObject* exceptionObject = exception.toObject(exec);
+ int lineNumber = exceptionObject->get(exec, Identifier(exec, "line")).toInt32(exec);
+ UString exceptionSourceURL = exceptionObject->get(exec, Identifier(exec, "sourceURL")).toString(exec);
exec->clearException();
ScriptExecutionContext* scriptExecutionContext = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
+ ASSERT(scriptExecutionContext);
+
+ // Crash data indicates null-dereference crashes at this point in the Safari 4 Public Beta.
+ // It's harmless to return here without reporting the exception to the log and the debugger in this case.
+ if (!scriptExecutionContext)
+ return;
+
scriptExecutionContext->reportException(errorMessage, lineNumber, exceptionSourceURL);
}
-void reportCurrentException(JSC::ExecState* exec)
+void reportCurrentException(ExecState* exec)
{
- JSValuePtr exception = exec->exception();
+ JSValue exception = exec->exception();
exec->clearException();
reportException(exec, exception);
}
@@ -430,7 +453,7 @@ void setDOMException(ExecState* exec, ExceptionCode ec)
ExceptionCodeDescription description;
getExceptionCodeDescription(ec, description);
- JSValuePtr errorObject = noValue();
+ JSValue errorObject;
switch (description.type) {
case DOMExceptionType:
errorObject = toJS(exec, DOMCoreException::create(description));
@@ -481,6 +504,12 @@ bool allowsAccessFromFrame(ExecState* exec, Frame* frame, String& message)
return window && window->allowsAccessFrom(exec, message);
}
+bool shouldAllowNavigation(ExecState* exec, Frame* frame)
+{
+ Frame* lexicalFrame = toLexicalFrame(exec);
+ return lexicalFrame && lexicalFrame->loader()->shouldAllowNavigation(frame);
+}
+
void printErrorMessageForFrame(Frame* frame, const String& message)
{
if (!frame)
@@ -489,39 +518,59 @@ void printErrorMessageForFrame(Frame* frame, const String& message)
window->printErrorMessage(message);
}
-JSValuePtr objectToStringFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
+Frame* toLexicalFrame(ExecState* exec)
{
- return new (exec) PrototypeFunction(exec, 0, propertyName, objectProtoFuncToString);
+ return asJSDOMWindow(exec->lexicalGlobalObject())->impl()->frame();
}
-ScriptState* scriptStateFromNode(Node* node)
+Frame* toDynamicFrame(ExecState* exec)
{
- if (!node)
- return 0;
- Document* document = node->document();
- if (!document)
- return 0;
- Frame* frame = document->frame();
+ return asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
+}
+
+bool processingUserGesture(ExecState* exec)
+{
+ Frame* frame = toDynamicFrame(exec);
+ return frame && frame->script()->processingUserGesture();
+}
+
+KURL completeURL(ExecState* exec, const String& relativeURL)
+{
+ // For histoical reasons, we need to complete the URL using the dynamic frame.
+ Frame* frame = toDynamicFrame(exec);
if (!frame)
- return 0;
- if (!frame->script()->isEnabled())
- return 0;
- return frame->script()->globalObject()->globalExec();
+ return KURL();
+ return frame->loader()->completeURL(relativeURL);
}
-Structure* getCachedDOMStructure(ExecState* exec, const ClassInfo* classInfo)
+JSValue objectToStringFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
{
- JSDOMStructureMap& structures = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->structures();
+ return new (exec) PrototypeFunction(exec, 0, propertyName, objectProtoFuncToString);
+}
+
+Structure* getCachedDOMStructure(JSDOMGlobalObject* globalObject, const ClassInfo* classInfo)
+{
+ JSDOMStructureMap& structures = globalObject->structures();
return structures.get(classInfo).get();
}
-Structure* cacheDOMStructure(ExecState* exec, PassRefPtr<Structure> structure, const ClassInfo* classInfo)
+Structure* cacheDOMStructure(JSDOMGlobalObject* globalObject, PassRefPtr<Structure> structure, const ClassInfo* classInfo)
{
- JSDOMStructureMap& structures = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->structures();
+ JSDOMStructureMap& structures = globalObject->structures();
ASSERT(!structures.contains(classInfo));
return structures.set(classInfo, structure).first->second.get();
}
+Structure* getCachedDOMStructure(ExecState* exec, const ClassInfo* classInfo)
+{
+ return getCachedDOMStructure(static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), classInfo);
+}
+
+Structure* cacheDOMStructure(ExecState* exec, PassRefPtr<Structure> structure, const ClassInfo* classInfo)
+{
+ return cacheDOMStructure(static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), structure, classInfo);
+}
+
JSObject* getCachedDOMConstructor(ExecState* exec, const ClassInfo* classInfo)
{
JSDOMConstructorMap& constructors = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->constructors();
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h
index 71da21b..1378c91 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h
@@ -25,7 +25,6 @@
#include <runtime/Completion.h>
#include <runtime/Lookup.h>
#include <runtime/JSFunction.h>
-#include "ScriptState.h"
#include <wtf/Noncopyable.h>
namespace JSC {
@@ -73,21 +72,27 @@ namespace WebCore {
void markActiveObjectsForContext(JSC::JSGlobalData&, ScriptExecutionContext*);
void markDOMObjectWrapper(JSC::JSGlobalData& globalData, void* object);
+ JSC::Structure* getCachedDOMStructure(JSDOMGlobalObject*, const JSC::ClassInfo*);
+ JSC::Structure* cacheDOMStructure(JSDOMGlobalObject*, PassRefPtr<JSC::Structure>, const JSC::ClassInfo*);
JSC::Structure* getCachedDOMStructure(JSC::ExecState*, const JSC::ClassInfo*);
JSC::Structure* cacheDOMStructure(JSC::ExecState*, PassRefPtr<JSC::Structure>, const JSC::ClassInfo*);
JSC::JSObject* getCachedDOMConstructor(JSC::ExecState*, const JSC::ClassInfo*);
void cacheDOMConstructor(JSC::ExecState*, const JSC::ClassInfo*, JSC::JSObject* constructor);
- template<class WrapperClass> inline JSC::Structure* getDOMStructure(JSC::ExecState* exec)
+ template<class WrapperClass> inline JSC::Structure* getDOMStructure(JSC::ExecState* exec, JSDOMGlobalObject* globalObject)
{
- if (JSC::Structure* structure = getCachedDOMStructure(exec, &WrapperClass::s_info))
+ if (JSC::Structure* structure = getCachedDOMStructure(globalObject, &WrapperClass::s_info))
return structure;
- return cacheDOMStructure(exec, WrapperClass::createStructure(WrapperClass::createPrototype(exec)), &WrapperClass::s_info);
+ return cacheDOMStructure(globalObject, WrapperClass::createStructure(WrapperClass::createPrototype(exec, globalObject)), &WrapperClass::s_info);
+ }
+ template<class WrapperClass> inline JSC::Structure* getDOMStructure(JSC::ExecState* exec)
+ {
+ return getDOMStructure<WrapperClass>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()));
}
- template<class WrapperClass> inline JSC::JSObject* getDOMPrototype(JSC::ExecState* exec)
+ template<class WrapperClass> inline JSC::JSObject* getDOMPrototype(JSC::ExecState* exec, JSC::JSGlobalObject* globalObject)
{
- return static_cast<JSC::JSObject*>(asObject(getDOMStructure<WrapperClass>(exec)->storedPrototype()));
+ return static_cast<JSC::JSObject*>(asObject(getDOMStructure<WrapperClass>(exec, static_cast<JSDOMGlobalObject*>(globalObject))->storedPrototype()));
}
#define CREATE_DOM_OBJECT_WRAPPER(exec, className, object) createDOMObjectWrapper<JS##className>(exec, static_cast<className*>(object))
template<class WrapperClass, class DOMClass> inline DOMObject* createDOMObjectWrapper(JSC::ExecState* exec, DOMClass* object)
@@ -98,7 +103,7 @@ namespace WebCore {
cacheDOMObjectWrapper(exec->globalData(), object, wrapper);
return wrapper;
}
- template<class WrapperClass, class DOMClass> inline JSC::JSValuePtr getDOMObjectWrapper(JSC::ExecState* exec, DOMClass* object)
+ template<class WrapperClass, class DOMClass> inline JSC::JSValue getDOMObjectWrapper(JSC::ExecState* exec, DOMClass* object)
{
if (!object)
return JSC::jsNull();
@@ -117,7 +122,7 @@ namespace WebCore {
cacheDOMObjectWrapper(exec->globalData(), object, wrapper);
return wrapper;
}
- template<class WrapperClass, class DOMClass> inline JSC::JSValuePtr getDOMObjectWrapper(JSC::ExecState* exec, DOMClass* object, SVGElement* context)
+ template<class WrapperClass, class DOMClass> inline JSC::JSValue getDOMObjectWrapper(JSC::ExecState* exec, DOMClass* object, SVGElement* context)
{
if (!object)
return JSC::jsNull();
@@ -136,7 +141,7 @@ namespace WebCore {
cacheDOMNodeWrapper(node->document(), node, wrapper);
return wrapper;
}
- template<class WrapperClass, class DOMClass> inline JSC::JSValuePtr getDOMNodeWrapper(JSC::ExecState* exec, DOMClass* node)
+ template<class WrapperClass, class DOMClass> inline JSC::JSValue getDOMNodeWrapper(JSC::ExecState* exec, DOMClass* node)
{
if (!node)
return JSC::jsNull();
@@ -147,29 +152,29 @@ namespace WebCore {
const JSC::HashTable* getHashTableForGlobalData(JSC::JSGlobalData&, const JSC::HashTable* staticTable);
- void reportException(JSC::ExecState*, JSC::JSValuePtr exception);
+ void reportException(JSC::ExecState*, JSC::JSValue exception);
void reportCurrentException(JSC::ExecState*);
// Convert a DOM implementation exception code into a JavaScript exception in the execution state.
void setDOMException(JSC::ExecState*, ExceptionCode);
- JSC::JSValuePtr jsStringOrNull(JSC::ExecState*, const String&); // null if the string is null
- JSC::JSValuePtr jsStringOrNull(JSC::ExecState*, const KURL&); // null if the URL is null
+ JSC::JSValue jsStringOrNull(JSC::ExecState*, const String&); // null if the string is null
+ JSC::JSValue jsStringOrNull(JSC::ExecState*, const KURL&); // null if the URL is null
- JSC::JSValuePtr jsStringOrUndefined(JSC::ExecState*, const String&); // undefined if the string is null
- JSC::JSValuePtr jsStringOrUndefined(JSC::ExecState*, const KURL&); // undefined if the URL is null
+ JSC::JSValue jsStringOrUndefined(JSC::ExecState*, const String&); // undefined if the string is null
+ JSC::JSValue jsStringOrUndefined(JSC::ExecState*, const KURL&); // undefined if the URL is null
- JSC::JSValuePtr jsStringOrFalse(JSC::ExecState*, const String&); // boolean false if the string is null
- JSC::JSValuePtr jsStringOrFalse(JSC::ExecState*, const KURL&); // boolean false if the URL is null
+ JSC::JSValue jsStringOrFalse(JSC::ExecState*, const String&); // boolean false if the string is null
+ JSC::JSValue jsStringOrFalse(JSC::ExecState*, const KURL&); // boolean false if the URL is null
// See JavaScriptCore for explanation: Should be used for any UString that is already owned by another
// object, to let the engine know that collecting the JSString wrapper is unlikely to save memory.
- JSC::JSValuePtr jsOwnedStringOrNull(JSC::ExecState*, const JSC::UString&);
+ JSC::JSValue jsOwnedStringOrNull(JSC::ExecState*, const JSC::UString&);
- JSC::UString valueToStringWithNullCheck(JSC::ExecState*, JSC::JSValuePtr); // null if the value is null
- JSC::UString valueToStringWithUndefinedOrNullCheck(JSC::ExecState*, JSC::JSValuePtr); // null if the value is null or undefined
+ JSC::UString valueToStringWithNullCheck(JSC::ExecState*, JSC::JSValue); // null if the value is null
+ JSC::UString valueToStringWithUndefinedOrNullCheck(JSC::ExecState*, JSC::JSValue); // null if the value is null or undefined
- template <typename T> inline JSC::JSValuePtr toJS(JSC::ExecState* exec, PassRefPtr<T> ptr) { return toJS(exec, ptr.get()); }
+ template <typename T> inline JSC::JSValue toJS(JSC::ExecState* exec, PassRefPtr<T> ptr) { return toJS(exec, ptr.get()); }
bool checkNodeSecurity(JSC::ExecState*, Node*);
@@ -178,10 +183,14 @@ namespace WebCore {
// because we do not want current property values involved at all.
bool allowsAccessFromFrame(JSC::ExecState*, Frame*);
bool allowsAccessFromFrame(JSC::ExecState*, Frame*, String& message);
+ bool shouldAllowNavigation(JSC::ExecState*, Frame*);
void printErrorMessageForFrame(Frame*, const String& message);
- JSC::JSValuePtr objectToStringFunctionGetter(JSC::ExecState*, const JSC::Identifier& propertyName, const JSC::PropertySlot&);
+ JSC::JSValue objectToStringFunctionGetter(JSC::ExecState*, const JSC::Identifier& propertyName, const JSC::PropertySlot&);
- ScriptState* scriptStateFromNode(Node*);
+ Frame* toLexicalFrame(JSC::ExecState*);
+ Frame* toDynamicFrame(JSC::ExecState*);
+ bool processingUserGesture(JSC::ExecState*);
+ KURL completeURL(JSC::ExecState*, const String& relativeURL);
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.cpp
index ae339ed..a7f7b21 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.cpp
@@ -30,8 +30,11 @@
#include "Document.h"
#include "JSDOMWindow.h"
#include "JSEventListener.h"
+
+#if ENABLE(WORKERS)
#include "JSWorkerContext.h"
#include "WorkerContext.h"
+#endif
using namespace JSC;
@@ -49,26 +52,10 @@ JSDOMGlobalObject::JSDOMGlobalObject(PassRefPtr<Structure> structure, JSDOMGloba
JSDOMGlobalObject::~JSDOMGlobalObject()
{
- // Clear any backpointers to the window
- ListenersMap::iterator i1 = d()->jsEventListeners.begin();
- ListenersMap::iterator e1 = d()->jsEventListeners.end();
- for (; i1 != e1; ++i1)
- i1->second->clearGlobalObject();
-
- i1 = d()->jsInlineEventListeners.begin();
- e1 = d()->jsInlineEventListeners.end();
- for (; i1 != e1; ++i1)
- i1->second->clearGlobalObject();
-
- UnprotectedListenersMap::iterator i2 = d()->jsUnprotectedEventListeners.begin();
- UnprotectedListenersMap::iterator e2 = d()->jsUnprotectedEventListeners.end();
- for (; i2 != e2; ++i2)
- i2->second->clearGlobalObject();
-
- i2 = d()->jsUnprotectedInlineEventListeners.begin();
- e2 = d()->jsUnprotectedInlineEventListeners.end();
- for (; i2 != e2; ++i2)
- i2->second->clearGlobalObject();
+ JSListenersMap::iterator it = d()->jsEventListeners.begin();
+ JSListenersMap::iterator end = d()->jsEventListeners.end();
+ for (; it != end; ++it)
+ it->second->clearGlobalObject();
}
void JSDOMGlobalObject::mark()
@@ -86,74 +73,45 @@ void JSDOMGlobalObject::mark()
}
}
-JSEventListener* JSDOMGlobalObject::findJSEventListener(JSValuePtr val, bool isInline)
+JSEventListener* JSDOMGlobalObject::findJSEventListener(JSValue val)
{
- if (!val->isObject())
+ if (!val.isObject())
return 0;
- JSObject* object = asObject(val);
- ListenersMap& listeners = isInline ? d()->jsInlineEventListeners : d()->jsEventListeners;
- return listeners.get(object);
+
+ return d()->jsEventListeners.get(asObject(val));
}
-PassRefPtr<JSEventListener> JSDOMGlobalObject::findOrCreateJSEventListener(ExecState*, JSValuePtr val, bool isInline)
+PassRefPtr<JSEventListener> JSDOMGlobalObject::findOrCreateJSEventListener(JSValue val)
{
- if (JSEventListener* listener = findJSEventListener(val, isInline))
+ if (JSEventListener* listener = findJSEventListener(val))
return listener;
- if (!val->isObject())
+ if (!val.isObject())
return 0;
// The JSEventListener constructor adds it to our jsEventListeners map.
- return JSEventListener::create(asObject(val), this, isInline).get();
-}
-
-JSUnprotectedEventListener* JSDOMGlobalObject::findJSUnprotectedEventListener(ExecState*, JSValuePtr val, bool isInline)
-{
- if (!val->isObject())
- return 0;
-
- UnprotectedListenersMap& listeners = isInline ? d()->jsUnprotectedInlineEventListeners : d()->jsUnprotectedEventListeners;
- return listeners.get(asObject(val));
+ return JSEventListener::create(asObject(val), this, false).get();
}
-PassRefPtr<JSUnprotectedEventListener> JSDOMGlobalObject::findOrCreateJSUnprotectedEventListener(ExecState* exec, JSValuePtr val, bool isInline)
+PassRefPtr<JSEventListener> JSDOMGlobalObject::createJSAttributeEventListener(JSValue val)
{
- if (JSUnprotectedEventListener* listener = findJSUnprotectedEventListener(exec, val, isInline))
- return listener;
-
- if (!val->isObject())
+ if (!val.isObject())
return 0;
- // The JSUnprotectedEventListener constructor adds it to our jsUnprotectedEventListeners map.
- return JSUnprotectedEventListener::create(asObject(val), this, isInline).get();
+ return JSEventListener::create(asObject(val), this, true).get();
}
-JSDOMGlobalObject::ListenersMap& JSDOMGlobalObject::jsEventListeners()
+JSDOMGlobalObject::JSListenersMap& JSDOMGlobalObject::jsEventListeners()
{
return d()->jsEventListeners;
}
-JSDOMGlobalObject::ListenersMap& JSDOMGlobalObject::jsInlineEventListeners()
-{
- return d()->jsInlineEventListeners;
-}
-
-JSDOMGlobalObject::UnprotectedListenersMap& JSDOMGlobalObject::jsUnprotectedEventListeners()
-{
- return d()->jsUnprotectedEventListeners;
-}
-
-JSDOMGlobalObject::UnprotectedListenersMap& JSDOMGlobalObject::jsUnprotectedInlineEventListeners()
-{
- return d()->jsUnprotectedInlineEventListeners;
-}
-
void JSDOMGlobalObject::setCurrentEvent(Event* evt)
{
d()->evt = evt;
}
-Event* JSDOMGlobalObject::currentEvent()
+Event* JSDOMGlobalObject::currentEvent() const
{
return d()->evt;
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.h b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.h
index fbb3eb9..8e4e820 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.h
@@ -32,8 +32,8 @@
namespace WebCore {
class Event;
+ class JSLazyEventListener;
class JSEventListener;
- class JSUnprotectedEventListener;
class ScriptExecutionContext;
typedef HashMap<const JSC::ClassInfo*, RefPtr<JSC::Structure> > JSDOMStructureMap;
@@ -53,28 +53,22 @@ namespace WebCore {
virtual ScriptExecutionContext* scriptExecutionContext() const = 0;
- // Finds a wrapper of a JS EventListener, returns 0 if no existing one.
- JSEventListener* findJSEventListener(JSC::JSValuePtr, bool isInline = false);
-
- // Finds or creates a wrapper of a JS EventListener. JS EventListener object is GC-protected.
- PassRefPtr<JSEventListener> findOrCreateJSEventListener(JSC::ExecState*, JSC::JSValuePtr, bool isInline = false);
-
// Finds a wrapper of a GC-unprotected JS EventListener, returns 0 if no existing one.
- JSUnprotectedEventListener* findJSUnprotectedEventListener(JSC::ExecState*, JSC::JSValuePtr, bool isInline = false);
+ JSEventListener* findJSEventListener(JSC::JSValue);
// Finds or creates a wrapper of a JS EventListener. JS EventListener object is *NOT* GC-protected.
- PassRefPtr<JSUnprotectedEventListener> findOrCreateJSUnprotectedEventListener(JSC::ExecState*, JSC::JSValuePtr, bool isInline = false);
+ PassRefPtr<JSEventListener> findOrCreateJSEventListener(JSC::JSValue);
+
+ // Creates a GC-protected JS EventListener for an "onXXX" event attribute.
+ // These listeners cannot be removed through the removeEventListener API.
+ PassRefPtr<JSEventListener> createJSAttributeEventListener(JSC::JSValue);
- typedef HashMap<JSC::JSObject*, JSEventListener*> ListenersMap;
- typedef HashMap<JSC::JSObject*, JSUnprotectedEventListener*> UnprotectedListenersMap;
+ typedef HashMap<JSC::JSObject*, JSEventListener*> JSListenersMap;
- ListenersMap& jsEventListeners();
- ListenersMap& jsInlineEventListeners();
- UnprotectedListenersMap& jsUnprotectedEventListeners();
- UnprotectedListenersMap& jsUnprotectedInlineEventListeners();
+ JSListenersMap& jsEventListeners();
void setCurrentEvent(Event*);
- Event* currentEvent();
+ Event* currentEvent() const;
virtual void mark();
@@ -85,10 +79,7 @@ namespace WebCore {
JSDOMStructureMap structures;
JSDOMConstructorMap constructors;
- JSDOMGlobalObject::ListenersMap jsEventListeners;
- JSDOMGlobalObject::ListenersMap jsInlineEventListeners;
- JSDOMGlobalObject::UnprotectedListenersMap jsUnprotectedEventListeners;
- JSDOMGlobalObject::UnprotectedListenersMap jsUnprotectedInlineEventListeners;
+ JSDOMGlobalObject::JSListenersMap jsEventListeners;
Event* evt;
};
@@ -108,11 +99,11 @@ namespace WebCore {
}
template<class ConstructorClass>
- inline JSC::JSObject* getDOMConstructor(JSC::ExecState* exec, JSDOMGlobalObject* globalObject)
+ inline JSC::JSObject* getDOMConstructor(JSC::ExecState* exec, const JSDOMGlobalObject* globalObject)
{
if (JSC::JSObject* constructor = globalObject->constructors().get(&ConstructorClass::s_info))
return constructor;
- JSC::JSObject* constructor = new (exec) ConstructorClass(exec, globalObject->scriptExecutionContext());
+ JSC::JSObject* constructor = new (exec) ConstructorClass(exec, const_cast<JSDOMGlobalObject*>(globalObject));
ASSERT(!globalObject->constructors().contains(&ConstructorClass::s_info));
globalObject->constructors().set(&ConstructorClass::s_info, constructor);
return constructor;
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMStringListCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMStringListCustom.cpp
index ccf0ce8..ac088af 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMStringListCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMStringListCustom.cpp
@@ -32,14 +32,14 @@ using namespace JSC;
namespace WebCore {
-JSValuePtr JSDOMStringList::getByIndex(ExecState* exec, unsigned index)
+JSValue JSDOMStringList::getByIndex(ExecState* exec, unsigned index)
{
return jsString(exec, impl()->item(index));
}
-JSValuePtr JSDOMStringList::item(ExecState* exec, const ArgList& args)
+JSValue JSDOMStringList::item(ExecState* exec, const ArgList& args)
{
- unsigned index = args.at(exec, 0)->toUInt32(exec);
+ unsigned index = args.at(0).toUInt32(exec);
if (index >= impl()->length())
return jsNull();
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp
index 10fc022..4fd1139 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp
@@ -1,7 +1,7 @@
/*
* Copyright (C) 2000 Harri Porten (porten@kde.org)
* Copyright (C) 2006 Jon Shier (jshier@iastate.edu)
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reseved.
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reseved.
* Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
*
* This library is free software; you can redistribute it and/or
@@ -25,107 +25,29 @@
#include "CString.h"
#include "Console.h"
-#include "DOMTimer.h"
#include "DOMWindow.h"
#include "Element.h"
-#include "EventListener.h"
-#include "ExceptionCode.h"
-#include "FloatRect.h"
#include "Frame.h"
-#include "FrameLoadRequest.h"
-#include "FrameLoader.h"
-#include "FrameTree.h"
-#include "GCController.h"
+#include "HTMLCollection.h"
#include "HTMLDocument.h"
#include "InspectorController.h"
-#include "JSAudioConstructor.h"
#include "JSDOMWindowCustom.h"
-#include "JSEvent.h"
-#include "JSEventListener.h"
#include "JSHTMLCollection.h"
-#include "JSImageConstructor.h"
-#include "JSMessageChannelConstructor.h"
#include "JSNode.h"
-#include "JSOptionConstructor.h"
-#include "JSWorkerConstructor.h"
-#include "JSXMLHttpRequestConstructor.h"
-#include "JSXSLTProcessorConstructor.h"
#include "Logging.h"
-#include "MediaPlayer.h"
#include "Page.h"
-#include "PlatformScreen.h"
-#include "PluginInfoStore.h"
-#include "RenderView.h"
-#include "ScheduledAction.h"
#include "ScriptController.h"
#include "SecurityOrigin.h"
#include "Settings.h"
-#include "WindowFeatures.h"
-#include "htmlediting.h"
-#include <runtime/Error.h>
-#include <runtime/JSLock.h>
-#include <wtf/AlwaysInline.h>
-#include <wtf/MathExtras.h>
using namespace JSC;
-static JSValuePtr windowProtoFuncOpen(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr windowProtoFuncShowModalDialog(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-static JSValuePtr windowProtoFuncNotImplemented(ExecState*, JSObject*, JSValuePtr, const ArgList&);
-
-static JSValuePtr jsDOMWindowBaseCrypto(ExecState*, const Identifier&, const PropertySlot&);
-static JSValuePtr jsDOMWindowBaseEvent(ExecState*, const Identifier&, const PropertySlot&);
-static void setJSDOMWindowBaseEvent(ExecState*, JSObject*, JSValuePtr);
-
-// Constructors
-static JSValuePtr jsDOMWindowBaseAudio(ExecState*, const Identifier&, const PropertySlot&);
-static void setJSDOMWindowBaseAudio(ExecState*, JSObject*, JSValuePtr);
-static JSValuePtr jsDOMWindowBaseImage(ExecState*, const Identifier&, const PropertySlot&);
-static void setJSDOMWindowBaseImage(ExecState*, JSObject*, JSValuePtr);
-static JSValuePtr jsDOMWindowBaseMessageChannel(ExecState*, const Identifier&, const PropertySlot&);
-static void setJSDOMWindowBaseMessageChannel(ExecState*, JSObject*, JSValuePtr);
-static JSValuePtr jsDOMWindowBaseWorker(ExecState*, const Identifier&, const PropertySlot&);
-static void setJSDOMWindowBaseWorker(ExecState*, JSObject*, JSValuePtr);
-static JSValuePtr jsDOMWindowBaseOption(ExecState*, const Identifier&, const PropertySlot&);
-static void setJSDOMWindowBaseOption(ExecState*, JSObject*, JSValuePtr);
-static JSValuePtr jsDOMWindowBaseXMLHttpRequest(ExecState*, const Identifier&, const PropertySlot&);
-static void setJSDOMWindowBaseXMLHttpRequest(ExecState*, JSObject*, JSValuePtr);
-static JSValuePtr jsDOMWindowBaseXSLTProcessor(ExecState*, const Identifier&, const PropertySlot&);
-static void setJSDOMWindowBaseXSLTProcessor(ExecState*, JSObject*, JSValuePtr);
-
-#include "JSDOMWindowBase.lut.h"
-
namespace WebCore {
-////////////////////// JSDOMWindowBase Object ////////////////////////
-
-const ClassInfo JSDOMWindowBase::s_info = { "Window", 0, &JSDOMWindowBaseTable, 0 };
-
-/*
-@begin JSDOMWindowBaseTable
-# -- Functions --
- open windowProtoFuncOpen DontDelete|Function 3
- showModalDialog windowProtoFuncShowModalDialog DontDelete|Function 1
-# Not implemented
- captureEvents windowProtoFuncNotImplemented DontDelete|Function 0
- releaseEvents windowProtoFuncNotImplemented DontDelete|Function 0
-# -- Attributes --
- crypto jsDOMWindowBaseCrypto DontDelete|ReadOnly
- event jsDOMWindowBaseEvent DontDelete
-# -- Constructors --
- Audio jsDOMWindowBaseAudio DontDelete
- Image jsDOMWindowBaseImage DontDelete
- MessageChannel jsDOMWindowBaseMessageChannel DontDelete
- Option jsDOMWindowBaseOption DontDelete
- Worker jsDOMWindowBaseWorker DontDelete
- XMLHttpRequest jsDOMWindowBaseXMLHttpRequest DontDelete
- XSLTProcessor jsDOMWindowBaseXSLTProcessor DontDelete
-@end
-*/
+const ClassInfo JSDOMWindowBase::s_info = { "Window", 0, 0, 0 };
JSDOMWindowBase::JSDOMWindowBaseData::JSDOMWindowBaseData(PassRefPtr<DOMWindow> window, JSDOMWindowShell* shell)
: impl(window)
- , returnValueSlot(0)
, shell(shell)
{
}
@@ -133,9 +55,6 @@ JSDOMWindowBase::JSDOMWindowBaseData::JSDOMWindowBaseData(PassRefPtr<DOMWindow>
JSDOMWindowBase::JSDOMWindowBase(PassRefPtr<Structure> structure, PassRefPtr<DOMWindow> window, JSDOMWindowShell* shell)
: JSDOMGlobalObject(structure, new JSDOMWindowBaseData(window, shell), shell)
{
- // Time in milliseconds before the script timeout handler kicks in.
- setTimeoutTime(10000);
-
GlobalPropertyInfo staticGlobals[] = {
GlobalPropertyInfo(Identifier(globalExec(), "document"), jsNull(), DontDelete | ReadOnly),
GlobalPropertyInfo(Identifier(globalExec(), "window"), d()->shell, DontDelete | ReadOnly)
@@ -151,368 +70,22 @@ void JSDOMWindowBase::updateDocument()
symbolTablePutWithAttributes(Identifier(exec, "document"), toJS(exec, d()->impl->document()), DontDelete | ReadOnly);
}
-JSDOMWindowBase::~JSDOMWindowBase()
-{
- if (d()->impl->frame())
- d()->impl->frame()->script()->clearFormerWindow(asJSDOMWindow(this));
-}
-
ScriptExecutionContext* JSDOMWindowBase::scriptExecutionContext() const
{
return d()->impl->document();
}
-static bool allowPopUp(ExecState* exec)
-{
- Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
-
- ASSERT(frame);
- if (frame->script()->processingUserGesture())
- return true;
- Settings* settings = frame->settings();
- return settings && settings->JavaScriptCanOpenWindowsAutomatically();
-}
-
-static HashMap<String, String> parseModalDialogFeatures(const String& featuresArg)
-{
- HashMap<String, String> map;
-
- Vector<String> features;
- featuresArg.split(';', features);
- Vector<String>::const_iterator end = features.end();
- for (Vector<String>::const_iterator it = features.begin(); it != end; ++it) {
- String s = *it;
- int pos = s.find('=');
- int colonPos = s.find(':');
- if (pos >= 0 && colonPos >= 0)
- continue; // ignore any strings that have both = and :
- if (pos < 0)
- pos = colonPos;
- if (pos < 0) {
- // null string for value means key without value
- map.set(s.stripWhiteSpace().lower(), String());
- } else {
- String key = s.left(pos).stripWhiteSpace().lower();
- String val = s.substring(pos + 1).stripWhiteSpace().lower();
- int spacePos = val.find(' ');
- if (spacePos != -1)
- val = val.left(spacePos);
- map.set(key, val);
- }
- }
-
- return map;
-}
-
-static Frame* createWindow(ExecState* exec, Frame* openerFrame, const String& url,
- const String& frameName, const WindowFeatures& windowFeatures, JSValuePtr dialogArgs)
-{
- Frame* activeFrame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
- ASSERT(activeFrame);
-
- ResourceRequest request;
-
- request.setHTTPReferrer(activeFrame->loader()->outgoingReferrer());
- FrameLoader::addHTTPOriginIfNeeded(request, activeFrame->loader()->outgoingOrigin());
- FrameLoadRequest frameRequest(request, frameName);
-
- // FIXME: It's much better for client API if a new window starts with a URL, here where we
- // know what URL we are going to open. Unfortunately, this code passes the empty string
- // for the URL, but there's a reason for that. Before loading we have to set up the opener,
- // openedByDOM, and dialogArguments values. Also, to decide whether to use the URL we currently
- // do an allowsAccessFrom call using the window we create, which can't be done before creating it.
- // We'd have to resolve all those issues to pass the URL instead of "".
-
- bool created;
- // We pass in the opener frame here so it can be used for looking up the frame name, in case the active frame
- // is different from the opener frame, and the name references a frame relative to the opener frame, for example
- // "_self" or "_parent".
- Frame* newFrame = activeFrame->loader()->createWindow(openerFrame->loader(), frameRequest, windowFeatures, created);
- if (!newFrame)
- return 0;
-
- newFrame->loader()->setOpener(openerFrame);
- newFrame->loader()->setOpenedByDOM();
-
- JSDOMWindow* newWindow = toJSDOMWindow(newFrame);
-
- if (dialogArgs)
- newWindow->putDirect(Identifier(exec, "dialogArguments"), dialogArgs);
-
- if (!protocolIs(url, "javascript") || newWindow->allowsAccessFrom(exec)) {
- KURL completedURL = url.isEmpty() ? KURL("") : activeFrame->document()->completeURL(url);
- bool userGesture = activeFrame->script()->processingUserGesture();
-
- if (created)
- newFrame->loader()->changeLocation(completedURL, activeFrame->loader()->outgoingReferrer(), false, userGesture);
- else if (!url.isEmpty())
- newFrame->loader()->scheduleLocationChange(completedURL.string(), activeFrame->loader()->outgoingReferrer(), false, userGesture);
- }
-
- return newFrame;
-}
-
-static bool canShowModalDialog(const Frame* frame)
-{
- if (!frame)
- return false;
-
- Page* page = frame->page();
- if (!page)
- return false;
-
- return page->chrome()->canRunModal();
-}
-
-static bool canShowModalDialogNow(const Frame* frame)
-{
- if (!frame)
- return false;
-
- Page* page = frame->page();
- if (!page)
- return false;
-
- return page->chrome()->canRunModalNow();
-}
-
-static JSValuePtr showModalDialog(ExecState* exec, Frame* frame, const String& url, JSValuePtr dialogArgs, const String& featureArgs)
-{
- if (!canShowModalDialogNow(frame) || !allowPopUp(exec))
- return jsUndefined();
-
- const HashMap<String, String> features = parseModalDialogFeatures(featureArgs);
-
- const bool trusted = false;
-
- // The following features from Microsoft's documentation are not implemented:
- // - default font settings
- // - width, height, left, and top specified in units other than "px"
- // - edge (sunken or raised, default is raised)
- // - dialogHide: trusted && boolFeature(features, "dialoghide"), makes dialog hide when you print
- // - help: boolFeature(features, "help", true), makes help icon appear in dialog (what does it do on Windows?)
- // - unadorned: trusted && boolFeature(features, "unadorned");
-
- if (!frame)
- return jsUndefined();
-
- FloatRect screenRect = screenAvailableRect(frame->view());
-
- WindowFeatures wargs;
- wargs.width = WindowFeatures::floatFeature(features, "dialogwidth", 100, screenRect.width(), 620); // default here came from frame size of dialog in MacIE
- wargs.widthSet = true;
- wargs.height = WindowFeatures::floatFeature(features, "dialogheight", 100, screenRect.height(), 450); // default here came from frame size of dialog in MacIE
- wargs.heightSet = true;
-
- wargs.x = WindowFeatures::floatFeature(features, "dialogleft", screenRect.x(), screenRect.right() - wargs.width, -1);
- wargs.xSet = wargs.x > 0;
- wargs.y = WindowFeatures::floatFeature(features, "dialogtop", screenRect.y(), screenRect.bottom() - wargs.height, -1);
- wargs.ySet = wargs.y > 0;
-
- if (WindowFeatures::boolFeature(features, "center", true)) {
- if (!wargs.xSet) {
- wargs.x = screenRect.x() + (screenRect.width() - wargs.width) / 2;
- wargs.xSet = true;
- }
- if (!wargs.ySet) {
- wargs.y = screenRect.y() + (screenRect.height() - wargs.height) / 2;
- wargs.ySet = true;
- }
- }
-
- wargs.dialog = true;
- wargs.resizable = WindowFeatures::boolFeature(features, "resizable");
- wargs.scrollbarsVisible = WindowFeatures::boolFeature(features, "scroll", true);
- wargs.statusBarVisible = WindowFeatures::boolFeature(features, "status", !trusted);
- wargs.menuBarVisible = false;
- wargs.toolBarVisible = false;
- wargs.locationBarVisible = false;
- wargs.fullscreen = false;
-
- Frame* dialogFrame = createWindow(exec, frame, url, "", wargs, dialogArgs);
- if (!dialogFrame)
- return jsUndefined();
-
- JSDOMWindow* dialogWindow = toJSDOMWindow(dialogFrame);
-
- // Get the return value either just before clearing the dialog window's
- // properties (in JSDOMWindowBase::clear), or when on return from runModal.
- JSValuePtr returnValue = noValue();
- dialogWindow->setReturnValueSlot(&returnValue);
- dialogFrame->page()->chrome()->runModal();
- dialogWindow->setReturnValueSlot(0);
-
- // If we don't have a return value, get it now.
- // Either JSDOMWindowBase::clear was not called yet, or there was no return value,
- // and in that case, there's no harm in trying again (no benefit either).
- if (!returnValue)
- returnValue = dialogWindow->getDirect(Identifier(exec, "returnValue"));
-
- return returnValue ? returnValue : jsUndefined();
-}
-
-} // namespace WebCore
-
-using namespace WebCore;
-
-JSValuePtr jsDOMWindowBaseCrypto(ExecState*, const Identifier&, const PropertySlot&)
-{
- return jsUndefined(); // FIXME: implement this
-}
-
-JSValuePtr jsDOMWindowBaseEvent(ExecState* exec, const Identifier&, const PropertySlot& slot)
-{
- if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))
- return jsUndefined();
- if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->currentEvent())
- return jsUndefined();
- return toJS(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->currentEvent());
-}
-
-JSValuePtr jsDOMWindowBaseImage(ExecState* exec, const Identifier&, const PropertySlot& slot)
-{
- if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))
- return jsUndefined();
- return getDOMConstructor<JSImageConstructor>(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())));
-}
-
-JSValuePtr jsDOMWindowBaseMessageChannel(ExecState* exec, const Identifier&, const PropertySlot& slot)
-{
-#if ENABLE(CHANNEL_MESSAGING)
- if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))
- return jsUndefined();
- return getDOMConstructor<JSMessageChannelConstructor>(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())));
-#else
- return jsUndefined();
-#endif
-}
-
-JSValuePtr jsDOMWindowBaseOption(ExecState* exec, const Identifier&, const PropertySlot& slot)
-{
- if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))
- return jsUndefined();
- return getDOMConstructor<JSOptionConstructor>(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())));
-}
-
-JSValuePtr jsDOMWindowBaseXMLHttpRequest(ExecState* exec, const Identifier&, const PropertySlot& slot)
-{
- if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))
- return jsUndefined();
- return getDOMConstructor<JSXMLHttpRequestConstructor>(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())));
-}
-
-JSValuePtr jsDOMWindowBaseAudio(ExecState* exec, const Identifier&, const PropertySlot& slot)
-{
-#if ENABLE(VIDEO)
- if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))
- return jsUndefined();
- if (!MediaPlayer::isAvailable())
- return jsUndefined();
- return getDOMConstructor<JSAudioConstructor>(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase())));
-#else
- return jsUndefined();
-#endif
-}
-
-JSValuePtr jsDOMWindowBaseWorker(ExecState* exec, const Identifier&, const PropertySlot& slot)
-{
-#if ENABLE(WORKERS)
- if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))
- return jsUndefined();
- return getDOMConstructor<JSWorkerConstructor>(exec);
-#else
- return jsUndefined();
-#endif
-}
-
-JSValuePtr jsDOMWindowBaseXSLTProcessor(ExecState* exec, const Identifier&, const PropertySlot& slot)
-{
-#if ENABLE(XSLT)
- if (!static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->allowsAccessFrom(exec))
- return jsUndefined();
- return getDOMConstructor<JSXSLTProcessorConstructor>(exec);
-#else
- return jsUndefined();
-#endif
-}
-
-void setJSDOMWindowBaseEvent(ExecState* exec, JSObject* thisObject, JSValuePtr value)
-{
- if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))
- return;
- // Shadowing a built-in constructor
- static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "Event"), value);
-}
-
-void setJSDOMWindowBaseAudio(ExecState* exec, JSObject* thisObject, JSValuePtr value)
-{
- if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))
- return;
- // Shadowing a built-in constructor
- static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "Audio"), value);
-}
-
-void setJSDOMWindowBaseImage(ExecState* exec, JSObject* thisObject, JSValuePtr value)
-{
- if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))
- return;
- // Shadowing a built-in constructor
- static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "Image"), value);
-}
-
-void setJSDOMWindowBaseMessageChannel(ExecState* exec, JSObject* thisObject, JSValuePtr value)
-{
- if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))
- return;
- // Shadowing a built-in constructor
- static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "MessageChannel"), value);
-}
-
-void setJSDOMWindowBaseOption(ExecState* exec, JSObject* thisObject, JSValuePtr value)
-{
- if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))
- return;
- // Shadowing a built-in constructor
- static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "Option"), value);
-}
-
-void setJSDOMWindowBaseWorker(ExecState* exec, JSObject* thisObject, JSValuePtr value)
-{
- if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))
- return;
- // Shadowing a built-in constructor
- static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "Worker"), value);
-}
-
-void setJSDOMWindowBaseXMLHttpRequest(ExecState* exec, JSObject* thisObject, JSValuePtr value)
-{
- if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))
- return;
- // Shadowing a built-in constructor
- static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "XMLHttpRequest"), value);
-}
-
-void setJSDOMWindowBaseXSLTProcessor(ExecState* exec, JSObject* thisObject, JSValuePtr value)
-{
- if (!static_cast<JSDOMWindowBase*>(thisObject)->allowsAccessFrom(exec))
- return;
- // Shadowing a built-in constructor
- static_cast<JSDOMWindowBase*>(thisObject)->putDirect(Identifier(exec, "XSLTProcessor"), value);
-}
-
-namespace WebCore {
-
-JSValuePtr JSDOMWindowBase::childFrameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSDOMWindowBase::childFrameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
return toJS(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->impl()->frame()->tree()->child(AtomicString(propertyName))->domWindow());
}
-JSValuePtr JSDOMWindowBase::indexGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
+JSValue JSDOMWindowBase::indexGetter(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
return toJS(exec, static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()))->impl()->frame()->tree()->child(slot.index())->domWindow());
}
-JSValuePtr JSDOMWindowBase::namedItemGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSDOMWindowBase::namedItemGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
JSDOMWindowBase* thisObj = static_cast<JSDOMWindowBase*>(asObject(slot.slotBase()));
Document* doc = thisObj->impl()->frame()->document();
@@ -538,26 +111,10 @@ bool JSDOMWindowBase::getOwnPropertySlot(ExecState* exec, const Identifier& prop
return true;
}
- const HashEntry* entry = JSDOMWindowBaseTable.entry(exec, propertyName);
- if (entry) {
- if (entry->attributes() & Function) {
- if (entry->function() == windowProtoFuncShowModalDialog) {
- if (!canShowModalDialog(impl()->frame()))
- return false;
- }
- if (allowsAccessFrom(exec))
- setUpStaticFunctionSlot(exec, entry, this, propertyName, slot);
- else
- slot.setUndefined();
- } else
- slot.setCustom(this, entry->propertyGetter());
- return true;
- }
-
// Do prototype lookup early so that functions and attributes in the prototype can have
// precedence over the index and name getters.
- JSValuePtr proto = prototype();
- if (proto->isObject()) {
+ JSValue proto = prototype();
+ if (proto.isObject()) {
if (asObject(proto)->getPropertySlot(exec, propertyName, slot)) {
if (!allowsAccessFrom(exec))
slot.setUndefined();
@@ -583,7 +140,7 @@ bool JSDOMWindowBase::getOwnPropertySlot(ExecState* exec, const Identifier& prop
// Allow shortcuts like 'Image1' instead of document.images.Image1
Document* document = impl()->frame()->document();
- if (document && document->isHTMLDocument()) {
+ if (document->isHTMLDocument()) {
AtomicStringImpl* atomicPropertyName = AtomicString::find(propertyName);
if (atomicPropertyName && (static_cast<HTMLDocument*>(document)->hasNamedItem(atomicPropertyName) || document->hasElementWithId(atomicPropertyName))) {
slot.setCustom(this, namedItemGetter);
@@ -594,19 +151,8 @@ bool JSDOMWindowBase::getOwnPropertySlot(ExecState* exec, const Identifier& prop
return Base::getOwnPropertySlot(exec, propertyName, slot);
}
-void JSDOMWindowBase::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void JSDOMWindowBase::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
- const HashEntry* entry = JSDOMWindowBaseTable.entry(exec, propertyName);
- if (entry) {
- if (entry->attributes() & Function) {
- if (allowsAccessFrom(exec))
- Base::put(exec, propertyName, value, slot);
- return;
- }
- if (entry->attributes() & ReadOnly)
- return;
- }
-
if (allowsAccessFrom(exec))
Base::put(exec, propertyName, value, slot);
}
@@ -653,6 +199,9 @@ ExecState* JSDOMWindowBase::globalExec()
bool JSDOMWindowBase::supportsProfiling() const
{
+#if !ENABLE(JAVASCRIPT_DEBUGGER)
+ return false;
+#else
Frame* frame = impl()->frame();
if (!frame)
return false;
@@ -662,6 +211,7 @@ bool JSDOMWindowBase::supportsProfiling() const
return false;
return page->inspectorController()->profilerEnabled();
+#endif
}
bool JSDOMWindowBase::shouldInterruptScript() const
@@ -682,21 +232,11 @@ bool JSDOMWindowBase::shouldInterruptScript() const
return page->chrome()->shouldInterruptJavaScript();
}
-void JSDOMWindowBase::clearHelperObjectProperties()
+void JSDOMWindowBase::willRemoveFromWindowShell()
{
setCurrentEvent(0);
}
-void JSDOMWindowBase::clear()
-{
- JSLock lock(false);
-
- if (d()->returnValueSlot && !*d()->returnValueSlot)
- *d()->returnValueSlot = getDirect(Identifier(globalExec(), "returnValue"));
-
- clearHelperObjectProperties();
-}
-
JSObject* JSDOMWindowBase::toThisObject(ExecState*) const
{
return shell();
@@ -709,141 +249,16 @@ JSDOMWindowShell* JSDOMWindowBase::shell() const
JSGlobalData* JSDOMWindowBase::commonJSGlobalData()
{
- static JSGlobalData* globalData = JSGlobalData::createLeaked().releaseRef();
- return globalData;
-}
-
-} // namespace WebCore
-
-using namespace WebCore;
-
-JSValuePtr windowProtoFuncOpen(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
-{
- JSDOMWindow* window = toJSDOMWindow(thisValue);
- if (!window)
- return throwError(exec, TypeError);
- if (!window->allowsAccessFrom(exec))
- return jsUndefined();
-
- Frame* frame = window->impl()->frame();
- if (!frame)
- return jsUndefined();
- Frame* activeFrame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
- if (!activeFrame)
- return jsUndefined();
-
- Page* page = frame->page();
-
- String urlString = valueToStringWithUndefinedOrNullCheck(exec, args.at(exec, 0));
- AtomicString frameName = args.at(exec, 1)->isUndefinedOrNull() ? "_blank" : AtomicString(args.at(exec, 1)->toString(exec));
-
- // Because FrameTree::find() returns true for empty strings, we must check for empty framenames.
- // Otherwise, illegitimate window.open() calls with no name will pass right through the popup blocker.
- if (!allowPopUp(exec) && (frameName.isEmpty() || !frame->tree()->find(frameName)))
- return jsUndefined();
-
- // Get the target frame for the special cases of _top and _parent. In those
- // cases, we can schedule a location change right now and return early.
- bool topOrParent = false;
- if (frameName == "_top") {
- frame = frame->tree()->top();
- topOrParent = true;
- } else if (frameName == "_parent") {
- if (Frame* parent = frame->tree()->parent())
- frame = parent;
- topOrParent = true;
+ static JSGlobalData* globalData;
+ if (!globalData) {
+ globalData = JSGlobalData::createLeaked().releaseRef();
+ globalData->timeoutChecker.setTimeoutInterval(10000); // 10 seconds
}
- if (topOrParent) {
- if (!activeFrame->loader()->shouldAllowNavigation(frame))
- return jsUndefined();
-
- String completedURL;
- if (!urlString.isEmpty())
- completedURL = activeFrame->document()->completeURL(urlString).string();
-
- const JSDOMWindow* targetedWindow = toJSDOMWindow(frame);
- if (!completedURL.isEmpty() && (!protocolIs(completedURL, "javascript") || (targetedWindow && targetedWindow->allowsAccessFrom(exec)))) {
- bool userGesture = activeFrame->script()->processingUserGesture();
- frame->loader()->scheduleLocationChange(completedURL, activeFrame->loader()->outgoingReferrer(), false, userGesture);
- }
- return toJS(exec, frame->domWindow());
- }
-
- // In the case of a named frame or a new window, we'll use the createWindow() helper
- WindowFeatures windowFeatures(valueToStringWithUndefinedOrNullCheck(exec, args.at(exec, 2)));
- FloatRect windowRect(windowFeatures.xSet ? windowFeatures.x : 0, windowFeatures.ySet ? windowFeatures.y : 0,
- windowFeatures.widthSet ? windowFeatures.width : 0, windowFeatures.heightSet ? windowFeatures.height : 0);
- DOMWindow::adjustWindowRect(screenAvailableRect(page ? page->mainFrame()->view() : 0), windowRect, windowRect);
-
- windowFeatures.x = windowRect.x();
- windowFeatures.y = windowRect.y();
- windowFeatures.height = windowRect.height();
- windowFeatures.width = windowRect.width();
-
- frame = createWindow(exec, frame, urlString, frameName, windowFeatures, noValue());
-
- if (!frame)
- return jsUndefined();
-
- return toJS(exec, frame->domWindow()); // global object
-}
-
-JSValuePtr windowProtoFuncShowModalDialog(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
-{
- JSDOMWindow* window = toJSDOMWindow(thisValue);
- if (!window)
- return throwError(exec, TypeError);
- if (!window->allowsAccessFrom(exec))
- return jsUndefined();
-
- Frame* frame = window->impl()->frame();
- if (!frame)
- return jsUndefined();
- return showModalDialog(exec, frame, valueToStringWithUndefinedOrNullCheck(exec, args.at(exec, 0)), args.at(exec, 1), valueToStringWithUndefinedOrNullCheck(exec, args.at(exec, 2)));
-}
-
-JSValuePtr windowProtoFuncNotImplemented(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList&)
-{
- if (!toJSDOMWindow(thisValue))
- return throwError(exec, TypeError);
- return jsUndefined();
-}
-
-namespace WebCore {
-
-void JSDOMWindowBase::setReturnValueSlot(JSValuePtr* slot)
-{
- d()->returnValueSlot = slot;
-}
-
-////////////////////// timeouts ////////////////////////
-
-int JSDOMWindowBase::installTimeout(ScheduledAction* a, int t, bool singleShot)
-{
- return DOMTimer::install(scriptExecutionContext(), a, t, singleShot);
-}
-
-int JSDOMWindowBase::installTimeout(const UString& handler, int t, bool singleShot)
-{
- return installTimeout(new ScheduledAction(handler), t, singleShot);
-}
-
-int JSDOMWindowBase::installTimeout(ExecState* exec, JSValuePtr func, const ArgList& args, int t, bool singleShot)
-{
- return installTimeout(new ScheduledAction(exec, func, args), t, singleShot);
-}
-
-void JSDOMWindowBase::removeTimeout(int timeoutId)
-{
- DOMTimer::removeById(scriptExecutionContext(), timeoutId);
-}
-
-void JSDOMWindowBase::disconnectFrame()
-{
+ return globalData;
}
-JSValuePtr toJS(ExecState*, DOMWindow* domWindow)
+JSValue toJS(ExecState*, DOMWindow* domWindow)
{
if (!domWindow)
return jsNull();
@@ -860,9 +275,9 @@ JSDOMWindow* toJSDOMWindow(Frame* frame)
return frame->script()->windowShell()->window();
}
-JSDOMWindow* toJSDOMWindow(JSValuePtr value)
+JSDOMWindow* toJSDOMWindow(JSValue value)
{
- if (!value->isObject())
+ if (!value.isObject())
return 0;
const ClassInfo* classInfo = asObject(value)->classInfo();
if (classInfo == &JSDOMWindow::s_info)
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.h b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.h
index 2398172..6d93196 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.h
@@ -34,10 +34,8 @@ namespace WebCore {
class Frame;
class JSDOMWindow;
class JSDOMWindowShell;
- class JSEventListener;
class JSLocation;
- class JSUnprotectedEventListener;
- class ScheduledAction;
+ class JSEventListener;
class SecurityOrigin;
class JSDOMWindowBasePrivate;
@@ -45,32 +43,20 @@ namespace WebCore {
// This is the only WebCore JS binding which does not inherit from DOMObject
class JSDOMWindowBase : public JSDOMGlobalObject {
typedef JSDOMGlobalObject Base;
-
- friend class ScheduledAction;
protected:
JSDOMWindowBase(PassRefPtr<JSC::Structure>, PassRefPtr<DOMWindow>, JSDOMWindowShell*);
public:
- virtual ~JSDOMWindowBase();
-
void updateDocument();
DOMWindow* impl() const { return d()->impl.get(); }
virtual ScriptExecutionContext* scriptExecutionContext() const;
- void disconnectFrame();
-
virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);
- virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValuePtr, JSC::PutPropertySlot&);
+ virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&);
- int installTimeout(const JSC::UString& handler, int t, bool singleShot);
- int installTimeout(JSC::ExecState*, JSC::JSValuePtr function, const JSC::ArgList& args, int t, bool singleShot);
- void removeTimeout(int timeoutId);
-
- void clear();
-
- // Set a place to put a dialog return value when the window is cleared.
- void setReturnValueSlot(JSC::JSValuePtr* slot);
+ // Called just before removing this window from the JSDOMWindowShell.
+ void willRemoveFromWindowShell();
virtual const JSC::ClassInfo* classInfo() const { return &s_info; }
static const JSC::ClassInfo s_info;
@@ -100,17 +86,12 @@ namespace WebCore {
JSDOMWindowBaseData(PassRefPtr<DOMWindow>, JSDOMWindowShell*);
RefPtr<DOMWindow> impl;
-
- JSC::JSValuePtr* returnValueSlot;
JSDOMWindowShell* shell;
};
- static JSC::JSValuePtr childFrameGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
- static JSC::JSValuePtr indexGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
- static JSC::JSValuePtr namedItemGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
-
- void clearHelperObjectProperties();
- int installTimeout(ScheduledAction*, int interval, bool singleShot);
+ static JSC::JSValue childFrameGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
+ static JSC::JSValue indexGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
+ static JSC::JSValue namedItemGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
bool allowsAccessFromPrivate(const JSC::JSGlobalObject*) const;
String crossDomainAccessErrorMessage(const JSC::JSGlobalObject*) const;
@@ -119,11 +100,11 @@ namespace WebCore {
};
// Returns a JSDOMWindow or jsNull()
- JSC::JSValuePtr toJS(JSC::ExecState*, DOMWindow*);
+ JSC::JSValue toJS(JSC::ExecState*, DOMWindow*);
// Returns JSDOMWindow or 0
JSDOMWindow* toJSDOMWindow(Frame*);
- JSDOMWindow* toJSDOMWindow(JSC::JSValuePtr);
+ JSDOMWindow* toJSDOMWindow(JSC::JSValue);
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp
index 2c5f882..b8c30c7 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -25,17 +25,39 @@
#include "DOMWindow.h"
#include "Document.h"
#include "ExceptionCode.h"
+#include "FloatRect.h"
#include "Frame.h"
+#include "FrameLoadRequest.h"
#include "FrameLoader.h"
#include "FrameTree.h"
+#include "FrameView.h"
+#include "History.h"
+#include "JSAudioConstructor.h"
#include "JSDOMWindowShell.h"
+#include "JSEvent.h"
#include "JSEventListener.h"
+#include "JSHistory.h"
+#include "JSImageConstructor.h"
+#include "JSLocation.h"
+#include "JSMessageChannelConstructor.h"
#include "JSMessagePort.h"
+#include "JSOptionConstructor.h"
+#include "JSWebKitCSSMatrixConstructor.h"
+#include "JSWebKitPointConstructor.h"
+#include "JSWorkerConstructor.h"
+#include "JSXMLHttpRequestConstructor.h"
+#include "JSXSLTProcessorConstructor.h"
+#include "Location.h"
+#include "MediaPlayer.h"
#include "MessagePort.h"
+#include "Page.h"
+#include "PlatformScreen.h"
+#include "RegisteredEventListener.h"
+#include "ScheduledAction.h"
#include "ScriptController.h"
#include "Settings.h"
+#include "WindowFeatures.h"
#include <runtime/JSObject.h>
-#include <runtime/PrototypeFunction.h>
using namespace JSC;
@@ -45,6 +67,8 @@ void JSDOMWindow::mark()
{
Base::mark();
+ markEventListeners(impl()->eventListeners());
+
JSGlobalData& globalData = *Heap::heap(this)->globalData();
markDOMObjectWrapper(globalData, impl()->optionalConsole());
@@ -97,6 +121,11 @@ void JSDOMWindow::defineGetter(ExecState* exec, const Identifier& propertyName,
// Only allow defining getters by frames in the same origin.
if (!allowsAccessFrom(exec))
return;
+
+ // Don't allow shadowing location using defineGetter.
+ if (propertyName == "location")
+ return;
+
Base::defineGetter(exec, propertyName, getterFunction);
}
@@ -108,7 +137,7 @@ void JSDOMWindow::defineSetter(ExecState* exec, const Identifier& propertyName,
Base::defineSetter(exec, propertyName, setterFunction);
}
-JSValuePtr JSDOMWindow::lookupGetter(ExecState* exec, const Identifier& propertyName)
+JSValue JSDOMWindow::lookupGetter(ExecState* exec, const Identifier& propertyName)
{
// Only allow looking-up getters by frames in the same origin.
if (!allowsAccessFrom(exec))
@@ -116,7 +145,7 @@ JSValuePtr JSDOMWindow::lookupGetter(ExecState* exec, const Identifier& property
return Base::lookupGetter(exec, propertyName);
}
-JSValuePtr JSDOMWindow::lookupSetter(ExecState* exec, const Identifier& propertyName)
+JSValue JSDOMWindow::lookupSetter(ExecState* exec, const Identifier& propertyName)
{
// Only allow looking-up setters by frames in the same origin.
if (!allowsAccessFrom(exec))
@@ -124,17 +153,41 @@ JSValuePtr JSDOMWindow::lookupSetter(ExecState* exec, const Identifier& property
return Base::lookupSetter(exec, propertyName);
}
-void JSDOMWindow::setLocation(ExecState* exec, JSValuePtr value)
+// Custom Attributes
+
+JSValue JSDOMWindow::history(ExecState* exec) const
+{
+ History* history = impl()->history();
+ if (DOMObject* wrapper = getCachedDOMObjectWrapper(exec->globalData(), history))
+ return wrapper;
+
+ JSHistory* jsHistory = new (exec) JSHistory(getDOMStructure<JSHistory>(exec, const_cast<JSDOMWindow*>(this)), history);
+ cacheDOMObjectWrapper(exec->globalData(), history, jsHistory);
+ return jsHistory;
+}
+
+JSValue JSDOMWindow::location(ExecState* exec) const
{
- Frame* activeFrame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
- if (!activeFrame)
+ Location* location = impl()->location();
+ if (DOMObject* wrapper = getCachedDOMObjectWrapper(exec->globalData(), location))
+ return wrapper;
+
+ JSLocation* jsLocation = new (exec) JSLocation(getDOMStructure<JSLocation>(exec, const_cast<JSDOMWindow*>(this)), location);
+ cacheDOMObjectWrapper(exec->globalData(), location, jsLocation);
+ return jsLocation;
+}
+
+void JSDOMWindow::setLocation(ExecState* exec, JSValue value)
+{
+ Frame* lexicalFrame = toLexicalFrame(exec);
+ if (!lexicalFrame)
return;
#if ENABLE(DASHBOARD_SUPPORT)
// To avoid breaking old widgets, make "var location =" in a top-level frame create
// a property named "location" instead of performing a navigation (<rdar://problem/5688039>).
- if (Settings* settings = activeFrame->settings()) {
- if (settings->usesDashboardBackwardCompatibilityMode() && !activeFrame->tree()->parent()) {
+ if (Settings* settings = lexicalFrame->settings()) {
+ if (settings->usesDashboardBackwardCompatibilityMode() && !lexicalFrame->tree()->parent()) {
if (allowsAccessFrom(exec))
putDirect(Identifier(exec, "location"), value);
return;
@@ -142,85 +195,345 @@ void JSDOMWindow::setLocation(ExecState* exec, JSValuePtr value)
}
#endif
- if (!activeFrame->loader()->shouldAllowNavigation(impl()->frame()))
+ Frame* frame = impl()->frame();
+ ASSERT(frame);
+
+ if (!shouldAllowNavigation(exec, frame))
return;
- String dstUrl = activeFrame->loader()->completeURL(value->toString(exec)).string();
- if (!protocolIs(dstUrl, "javascript") || allowsAccessFrom(exec)) {
- bool userGesture = activeFrame->script()->processingUserGesture();
+
+ KURL url = completeURL(exec, value.toString(exec));
+ if (url.isNull())
+ return;
+
+ if (!protocolIsJavaScript(url) || allowsAccessFrom(exec)) {
// We want a new history item if this JS was called via a user gesture
- impl()->frame()->loader()->scheduleLocationChange(dstUrl, activeFrame->loader()->outgoingReferrer(), false, userGesture);
+ frame->loader()->scheduleLocationChange(url, lexicalFrame->loader()->outgoingReferrer(), !lexicalFrame->script()->anyPageIsProcessingUserGesture(), false, processingUserGesture(exec));
}
}
-JSValuePtr JSDOMWindow::postMessage(ExecState* exec, const ArgList& args)
+JSValue JSDOMWindow::crypto(ExecState*) const
{
- DOMWindow* window = impl();
-
- DOMWindow* source = asJSDOMWindow(exec->dynamicGlobalObject())->impl();
- String message = args.at(exec, 0)->toString(exec);
+ return jsUndefined();
+}
- if (exec->hadException())
+JSValue JSDOMWindow::event(ExecState* exec) const
+{
+ Event* event = currentEvent();
+ if (!event)
return jsUndefined();
+ return toJS(exec, event);
+}
- MessagePort* messagePort = (args.size() == 2) ? 0 : toMessagePort(args.at(exec, 1));
+JSValue JSDOMWindow::image(ExecState* exec) const
+{
+ return getDOMConstructor<JSImageConstructor>(exec, this);
+}
- String targetOrigin = valueToStringWithUndefinedOrNullCheck(exec, args.at(exec, (args.size() == 2) ? 1 : 2));
- if (exec->hadException())
+JSValue JSDOMWindow::option(ExecState* exec) const
+{
+ return getDOMConstructor<JSOptionConstructor>(exec, this);
+}
+
+#if ENABLE(VIDEO)
+JSValue JSDOMWindow::audio(ExecState* exec) const
+{
+ if (!MediaPlayer::isAvailable())
return jsUndefined();
+ return getDOMConstructor<JSAudioConstructor>(exec, this);
+}
+#endif
- ExceptionCode ec = 0;
- window->postMessage(message, messagePort, targetOrigin, source, ec);
- setDOMException(exec, ec);
+JSValue JSDOMWindow::webKitPoint(ExecState* exec) const
+{
+ return getDOMConstructor<JSWebKitPointConstructor>(exec);
+}
- return jsUndefined();
+JSValue JSDOMWindow::webKitCSSMatrix(ExecState* exec) const
+{
+ return getDOMConstructor<JSWebKitCSSMatrixConstructor>(exec);
+}
+
+JSValue JSDOMWindow::xmlHttpRequest(ExecState* exec) const
+{
+ return getDOMConstructor<JSXMLHttpRequestConstructor>(exec, this);
+}
+
+#if ENABLE(XSLT)
+JSValue JSDOMWindow::xsltProcessor(ExecState* exec) const
+{
+ return getDOMConstructor<JSXSLTProcessorConstructor>(exec);
+}
+#endif
+
+#if ENABLE(CHANNEL_MESSAGING)
+JSValue JSDOMWindow::messageChannel(ExecState* exec) const
+{
+ return getDOMConstructor<JSMessageChannelConstructor>(exec, this);
+}
+#endif
+
+#if ENABLE(WORKERS)
+JSValue JSDOMWindow::worker(ExecState* exec) const
+{
+ return getDOMConstructor<JSWorkerConstructor>(exec);
+}
+#endif
+
+// Custom functions
+
+// Helper for window.open() and window.showModalDialog()
+static Frame* createWindow(ExecState* exec, Frame* lexicalFrame, Frame* dynamicFrame,
+ Frame* openerFrame, const String& url, const String& frameName,
+ const WindowFeatures& windowFeatures, JSValue dialogArgs)
+{
+ ASSERT(lexicalFrame);
+ ASSERT(dynamicFrame);
+
+ ResourceRequest request;
+
+ // For whatever reason, Firefox uses the dynamicGlobalObject to determine
+ // the outgoingReferrer. We replicate that behavior here.
+ String referrer = dynamicFrame->loader()->outgoingReferrer();
+ request.setHTTPReferrer(referrer);
+ FrameLoader::addHTTPOriginIfNeeded(request, dynamicFrame->loader()->outgoingOrigin());
+ FrameLoadRequest frameRequest(request, frameName);
+
+ // FIXME: It's much better for client API if a new window starts with a URL, here where we
+ // know what URL we are going to open. Unfortunately, this code passes the empty string
+ // for the URL, but there's a reason for that. Before loading we have to set up the opener,
+ // openedByDOM, and dialogArguments values. Also, to decide whether to use the URL we currently
+ // do an allowsAccessFrom call using the window we create, which can't be done before creating it.
+ // We'd have to resolve all those issues to pass the URL instead of "".
+
+ bool created;
+ // We pass in the opener frame here so it can be used for looking up the frame name, in case the active frame
+ // is different from the opener frame, and the name references a frame relative to the opener frame, for example
+ // "_self" or "_parent".
+ Frame* newFrame = lexicalFrame->loader()->createWindow(openerFrame->loader(), frameRequest, windowFeatures, created);
+ if (!newFrame)
+ return 0;
+
+ newFrame->loader()->setOpener(openerFrame);
+ newFrame->loader()->setOpenedByDOM();
+
+ JSDOMWindow* newWindow = toJSDOMWindow(newFrame);
+
+ if (dialogArgs)
+ newWindow->putDirect(Identifier(exec, "dialogArguments"), dialogArgs);
+
+ if (!protocolIsJavaScript(url) || newWindow->allowsAccessFrom(exec)) {
+ KURL completedURL = url.isEmpty() ? KURL("") : completeURL(exec, url);
+ bool userGesture = processingUserGesture(exec);
+
+ if (created)
+ newFrame->loader()->changeLocation(completedURL, referrer, false, false, userGesture);
+ else if (!url.isEmpty())
+ newFrame->loader()->scheduleLocationChange(completedURL.string(), referrer, !lexicalFrame->script()->anyPageIsProcessingUserGesture(), false, userGesture);
+ }
+
+ return newFrame;
}
-static JSValuePtr setTimeoutOrInterval(ExecState* exec, JSDOMWindow* window, const ArgList& args, bool timeout)
+JSValue JSDOMWindow::open(ExecState* exec, const ArgList& args)
{
- JSValuePtr v = args.at(exec, 0);
- int delay = args.at(exec, 1)->toInt32(exec);
- if (v->isString())
- return jsNumber(exec, window->installTimeout(asString(v)->value(), delay, timeout));
- CallData callData;
- if (v->getCallData(callData) == CallTypeNone)
+ Frame* frame = impl()->frame();
+ if (!frame)
return jsUndefined();
- ArgList argsTail;
- args.getSlice(2, argsTail);
- return jsNumber(exec, window->installTimeout(exec, v, argsTail, delay, timeout));
+ Frame* lexicalFrame = toLexicalFrame(exec);
+ if (!lexicalFrame)
+ return jsUndefined();
+ Frame* dynamicFrame = toDynamicFrame(exec);
+ if (!dynamicFrame)
+ return jsUndefined();
+
+ Page* page = frame->page();
+
+ String urlString = valueToStringWithUndefinedOrNullCheck(exec, args.at(0));
+ AtomicString frameName = args.at(1).isUndefinedOrNull() ? "_blank" : AtomicString(args.at(1).toString(exec));
+
+ // Because FrameTree::find() returns true for empty strings, we must check for empty framenames.
+ // Otherwise, illegitimate window.open() calls with no name will pass right through the popup blocker.
+ if (!DOMWindow::allowPopUp(dynamicFrame) && (frameName.isEmpty() || !frame->tree()->find(frameName)))
+ return jsUndefined();
+
+ // Get the target frame for the special cases of _top and _parent. In those
+ // cases, we can schedule a location change right now and return early.
+ bool topOrParent = false;
+ if (frameName == "_top") {
+ frame = frame->tree()->top();
+ topOrParent = true;
+ } else if (frameName == "_parent") {
+ if (Frame* parent = frame->tree()->parent())
+ frame = parent;
+ topOrParent = true;
+ }
+ if (topOrParent) {
+ if (!shouldAllowNavigation(exec, frame))
+ return jsUndefined();
+
+ String completedURL;
+ if (!urlString.isEmpty())
+ completedURL = completeURL(exec, urlString).string();
+
+ const JSDOMWindow* targetedWindow = toJSDOMWindow(frame);
+ if (!completedURL.isEmpty() && (!protocolIsJavaScript(completedURL) || (targetedWindow && targetedWindow->allowsAccessFrom(exec)))) {
+ bool userGesture = processingUserGesture(exec);
+
+ // For whatever reason, Firefox uses the dynamicGlobalObject to
+ // determine the outgoingReferrer. We replicate that behavior
+ // here.
+ String referrer = dynamicFrame->loader()->outgoingReferrer();
+
+ frame->loader()->scheduleLocationChange(completedURL, referrer, !lexicalFrame->script()->anyPageIsProcessingUserGesture(), false, userGesture);
+ }
+ return toJS(exec, frame->domWindow());
+ }
+
+ // In the case of a named frame or a new window, we'll use the createWindow() helper
+ WindowFeatures windowFeatures(valueToStringWithUndefinedOrNullCheck(exec, args.at(2)));
+ FloatRect windowRect(windowFeatures.xSet ? windowFeatures.x : 0, windowFeatures.ySet ? windowFeatures.y : 0,
+ windowFeatures.widthSet ? windowFeatures.width : 0, windowFeatures.heightSet ? windowFeatures.height : 0);
+ DOMWindow::adjustWindowRect(screenAvailableRect(page ? page->mainFrame()->view() : 0), windowRect, windowRect);
+
+ windowFeatures.x = windowRect.x();
+ windowFeatures.y = windowRect.y();
+ windowFeatures.height = windowRect.height();
+ windowFeatures.width = windowRect.width();
+
+ frame = createWindow(exec, lexicalFrame, dynamicFrame, frame, urlString, frameName, windowFeatures, JSValue());
+
+ if (!frame)
+ return jsUndefined();
+
+ return toJS(exec, frame->domWindow());
}
-JSValuePtr JSDOMWindow::setTimeout(ExecState* exec, const ArgList& args)
+JSValue JSDOMWindow::showModalDialog(ExecState* exec, const ArgList& args)
{
- return setTimeoutOrInterval(exec, this, args, true);
+ Frame* frame = impl()->frame();
+ if (!frame)
+ return jsUndefined();
+ Frame* lexicalFrame = toLexicalFrame(exec);
+ if (!lexicalFrame)
+ return jsUndefined();
+ Frame* dynamicFrame = toDynamicFrame(exec);
+ if (!dynamicFrame)
+ return jsUndefined();
+
+ if (!DOMWindow::canShowModalDialogNow(frame) || !DOMWindow::allowPopUp(dynamicFrame))
+ return jsUndefined();
+
+ String url = valueToStringWithUndefinedOrNullCheck(exec, args.at(0));
+ JSValue dialogArgs = args.at(1);
+ String featureArgs = valueToStringWithUndefinedOrNullCheck(exec, args.at(2));
+
+ HashMap<String, String> features;
+ DOMWindow::parseModalDialogFeatures(featureArgs, features);
+
+ const bool trusted = false;
+
+ // The following features from Microsoft's documentation are not implemented:
+ // - default font settings
+ // - width, height, left, and top specified in units other than "px"
+ // - edge (sunken or raised, default is raised)
+ // - dialogHide: trusted && boolFeature(features, "dialoghide"), makes dialog hide when you print
+ // - help: boolFeature(features, "help", true), makes help icon appear in dialog (what does it do on Windows?)
+ // - unadorned: trusted && boolFeature(features, "unadorned");
+
+ FloatRect screenRect = screenAvailableRect(frame->view());
+
+ WindowFeatures wargs;
+ wargs.width = WindowFeatures::floatFeature(features, "dialogwidth", 100, screenRect.width(), 620); // default here came from frame size of dialog in MacIE
+ wargs.widthSet = true;
+ wargs.height = WindowFeatures::floatFeature(features, "dialogheight", 100, screenRect.height(), 450); // default here came from frame size of dialog in MacIE
+ wargs.heightSet = true;
+
+ wargs.x = WindowFeatures::floatFeature(features, "dialogleft", screenRect.x(), screenRect.right() - wargs.width, -1);
+ wargs.xSet = wargs.x > 0;
+ wargs.y = WindowFeatures::floatFeature(features, "dialogtop", screenRect.y(), screenRect.bottom() - wargs.height, -1);
+ wargs.ySet = wargs.y > 0;
+
+ if (WindowFeatures::boolFeature(features, "center", true)) {
+ if (!wargs.xSet) {
+ wargs.x = screenRect.x() + (screenRect.width() - wargs.width) / 2;
+ wargs.xSet = true;
+ }
+ if (!wargs.ySet) {
+ wargs.y = screenRect.y() + (screenRect.height() - wargs.height) / 2;
+ wargs.ySet = true;
+ }
+ }
+
+ wargs.dialog = true;
+ wargs.resizable = WindowFeatures::boolFeature(features, "resizable");
+ wargs.scrollbarsVisible = WindowFeatures::boolFeature(features, "scroll", true);
+ wargs.statusBarVisible = WindowFeatures::boolFeature(features, "status", !trusted);
+ wargs.menuBarVisible = false;
+ wargs.toolBarVisible = false;
+ wargs.locationBarVisible = false;
+ wargs.fullscreen = false;
+
+ Frame* dialogFrame = createWindow(exec, lexicalFrame, dynamicFrame, frame, url, "", wargs, dialogArgs);
+ if (!dialogFrame)
+ return jsUndefined();
+
+ JSDOMWindow* dialogWindow = toJSDOMWindow(dialogFrame);
+ dialogFrame->page()->chrome()->runModal();
+
+ return dialogWindow->getDirect(Identifier(exec, "returnValue"));
}
-JSValuePtr JSDOMWindow::clearTimeout(ExecState* exec, const ArgList& args)
+JSValue JSDOMWindow::postMessage(ExecState* exec, const ArgList& args)
{
- removeTimeout(args.at(exec, 0)->toInt32(exec));
+ DOMWindow* window = impl();
+
+ DOMWindow* source = asJSDOMWindow(exec->lexicalGlobalObject())->impl();
+ String message = args.at(0).toString(exec);
+
+ if (exec->hadException())
+ return jsUndefined();
+
+ MessagePort* messagePort = (args.size() == 2) ? 0 : toMessagePort(args.at(1));
+
+ String targetOrigin = valueToStringWithUndefinedOrNullCheck(exec, args.at((args.size() == 2) ? 1 : 2));
+ if (exec->hadException())
+ return jsUndefined();
+
+ ExceptionCode ec = 0;
+ window->postMessage(message, messagePort, targetOrigin, source, ec);
+ setDOMException(exec, ec);
+
return jsUndefined();
}
-JSValuePtr JSDOMWindow::setInterval(ExecState* exec, const ArgList& args)
+JSValue JSDOMWindow::setTimeout(ExecState* exec, const ArgList& args)
{
- return setTimeoutOrInterval(exec, this, args, false);
+ ScheduledAction* action = ScheduledAction::create(exec, args);
+ if (exec->hadException())
+ return jsUndefined();
+ int delay = args.at(1).toInt32(exec);
+ return jsNumber(exec, impl()->setTimeout(action, delay));
}
-JSValuePtr JSDOMWindow::clearInterval(ExecState* exec, const ArgList& args)
+JSValue JSDOMWindow::setInterval(ExecState* exec, const ArgList& args)
{
- removeTimeout(args.at(exec, 0)->toInt32(exec));
- return jsUndefined();
+ ScheduledAction* action = ScheduledAction::create(exec, args);
+ if (exec->hadException())
+ return jsUndefined();
+ int delay = args.at(1).toInt32(exec);
+ return jsNumber(exec, impl()->setInterval(action, delay));
}
-JSValuePtr JSDOMWindow::atob(ExecState* exec, const ArgList& args)
+JSValue JSDOMWindow::atob(ExecState* exec, const ArgList& args)
{
if (args.size() < 1)
return throwError(exec, SyntaxError, "Not enough arguments");
- JSValuePtr v = args.at(exec, 0);
- if (v->isNull())
+ JSValue v = args.at(0);
+ if (v.isNull())
return jsEmptyString(exec);
- UString s = v->toString(exec);
+ UString s = v.toString(exec);
if (!s.is8Bit()) {
setDOMException(exec, INVALID_CHARACTER_ERR);
return jsUndefined();
@@ -237,16 +550,16 @@ JSValuePtr JSDOMWindow::atob(ExecState* exec, const ArgList& args)
return jsString(exec, String(out.data(), out.size()));
}
-JSValuePtr JSDOMWindow::btoa(ExecState* exec, const ArgList& args)
+JSValue JSDOMWindow::btoa(ExecState* exec, const ArgList& args)
{
if (args.size() < 1)
return throwError(exec, SyntaxError, "Not enough arguments");
- JSValuePtr v = args.at(exec, 0);
- if (v->isNull())
+ JSValue v = args.at(0);
+ if (v.isNull())
return jsEmptyString(exec);
- UString s = v->toString(exec);
+ UString s = v.toString(exec);
if (!s.is8Bit()) {
setDOMException(exec, INVALID_CHARACTER_ERR);
return jsUndefined();
@@ -262,37 +575,33 @@ JSValuePtr JSDOMWindow::btoa(ExecState* exec, const ArgList& args)
return jsString(exec, String(out.data(), out.size()));
}
-JSValuePtr JSDOMWindow::addEventListener(ExecState* exec, const ArgList& args)
+JSValue JSDOMWindow::addEventListener(ExecState* exec, const ArgList& args)
{
Frame* frame = impl()->frame();
if (!frame)
return jsUndefined();
- if (RefPtr<JSEventListener> listener = findOrCreateJSEventListener(exec, args.at(exec, 1))) {
- if (Document* doc = frame->document())
- doc->addWindowEventListener(AtomicString(args.at(exec, 0)->toString(exec)), listener.release(), args.at(exec, 2)->toBoolean(exec));
- }
+ if (RefPtr<JSEventListener> listener = findOrCreateJSEventListener(args.at(1)))
+ impl()->addEventListener(AtomicString(args.at(0).toString(exec)), listener.release(), args.at(2).toBoolean(exec));
return jsUndefined();
}
-JSValuePtr JSDOMWindow::removeEventListener(ExecState* exec, const ArgList& args)
+JSValue JSDOMWindow::removeEventListener(ExecState* exec, const ArgList& args)
{
Frame* frame = impl()->frame();
if (!frame)
return jsUndefined();
- if (JSEventListener* listener = findJSEventListener(args.at(exec, 1))) {
- if (Document* doc = frame->document())
- doc->removeWindowEventListener(AtomicString(args.at(exec, 0)->toString(exec)), listener, args.at(exec, 2)->toBoolean(exec));
- }
+ if (JSEventListener* listener = findJSEventListener(args.at(1)))
+ impl()->removeEventListener(AtomicString(args.at(0).toString(exec)), listener, args.at(2).toBoolean(exec));
return jsUndefined();
}
-DOMWindow* toDOMWindow(JSValuePtr value)
+DOMWindow* toDOMWindow(JSValue value)
{
- if (!value->isObject())
+ if (!value.isObject())
return 0;
JSObject* object = asObject(value);
if (object->inherits(&JSDOMWindow::s_info))
@@ -302,24 +611,4 @@ DOMWindow* toDOMWindow(JSValuePtr value)
return 0;
}
-JSValuePtr nonCachingStaticCloseFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
-{
- return new (exec) PrototypeFunction(exec, 0, propertyName, jsDOMWindowPrototypeFunctionClose);
-}
-
-JSValuePtr nonCachingStaticBlurFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
-{
- return new (exec) PrototypeFunction(exec, 0, propertyName, jsDOMWindowPrototypeFunctionBlur);
-}
-
-JSValuePtr nonCachingStaticFocusFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
-{
- return new (exec) PrototypeFunction(exec, 0, propertyName, jsDOMWindowPrototypeFunctionFocus);
-}
-
-JSValuePtr nonCachingStaticPostMessageFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
-{
- return new (exec) PrototypeFunction(exec, 2, propertyName, jsDOMWindowPrototypeFunctionPostMessage);
-}
-
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.h b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.h
index 838abab..52ef4a0 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All rights reseved.
+ * Copyright (C) 2008, 2009 Apple Inc. All rights reseved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -21,6 +21,7 @@
#include "JSDOMWindow.h"
#include "JSDOMWindowShell.h"
+#include <runtime/PrototypeFunction.h>
#include <wtf/AlwaysInline.h>
namespace WebCore {
@@ -35,10 +36,11 @@ inline const JSDOMWindow* asJSDOMWindow(const JSC::JSGlobalObject* globalObject)
return static_cast<const JSDOMWindow*>(globalObject);
}
-JSC::JSValuePtr nonCachingStaticCloseFunctionGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
-JSC::JSValuePtr nonCachingStaticBlurFunctionGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
-JSC::JSValuePtr nonCachingStaticFocusFunctionGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
-JSC::JSValuePtr nonCachingStaticPostMessageFunctionGetter(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
+template<JSC::NativeFunction nativeFunction, int length>
+JSC::JSValue nonCachingStaticFunctionGetter(JSC::ExecState* exec, const JSC::Identifier& propertyName, const JSC::PropertySlot&)
+{
+ return new (exec) JSC::PrototypeFunction(exec, length, propertyName, nativeFunction);
+}
ALWAYS_INLINE bool JSDOMWindow::customGetOwnPropertySlot(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::PropertySlot& slot)
{
@@ -59,7 +61,7 @@ ALWAYS_INLINE bool JSDOMWindow::customGetOwnPropertySlot(JSC::ExecState* exec, c
}
entry = JSDOMWindowPrototype::s_info.propHashTable(exec)->entry(exec, propertyName);
if (entry && (entry->attributes() & JSC::Function) && entry->function() == jsDOMWindowPrototypeFunctionClose) {
- slot.setCustom(this, nonCachingStaticCloseFunctionGetter);
+ slot.setCustom(this, nonCachingStaticFunctionGetter<jsDOMWindowPrototypeFunctionClose, 0>);
return true;
}
@@ -74,12 +76,10 @@ ALWAYS_INLINE bool JSDOMWindow::customGetOwnPropertySlot(JSC::ExecState* exec, c
// is allowed.
bool allowsAccess = allowsAccessFromNoErrorMessage(exec);
- // Look for overrides before looking at any of our own properties.
- if (JSGlobalObject::getOwnPropertySlot(exec, propertyName, slot)) {
- // But ignore overrides completely if this is cross-domain access.
- if (allowsAccess)
- return true;
- }
+ // Look for overrides before looking at any of our own properties, but ignore overrides completely
+ // if this is cross-domain access.
+ if (allowsAccess && JSGlobalObject::getOwnPropertySlot(exec, propertyName, slot))
+ return true;
// We need this code here because otherwise JSC::Window will stop the search before we even get to the
// prototype due to the blanket same origin (allowsAccessFrom) check at the end of getOwnPropertySlot.
@@ -90,22 +90,27 @@ ALWAYS_INLINE bool JSDOMWindow::customGetOwnPropertySlot(JSC::ExecState* exec, c
if (entry->attributes() & JSC::Function) {
if (entry->function() == jsDOMWindowPrototypeFunctionBlur) {
if (!allowsAccess) {
- slot.setCustom(this, nonCachingStaticBlurFunctionGetter);
+ slot.setCustom(this, nonCachingStaticFunctionGetter<jsDOMWindowPrototypeFunctionBlur, 0>);
return true;
}
} else if (entry->function() == jsDOMWindowPrototypeFunctionClose) {
if (!allowsAccess) {
- slot.setCustom(this, nonCachingStaticCloseFunctionGetter);
+ slot.setCustom(this, nonCachingStaticFunctionGetter<jsDOMWindowPrototypeFunctionClose, 0>);
return true;
}
} else if (entry->function() == jsDOMWindowPrototypeFunctionFocus) {
if (!allowsAccess) {
- slot.setCustom(this, nonCachingStaticFocusFunctionGetter);
+ slot.setCustom(this, nonCachingStaticFunctionGetter<jsDOMWindowPrototypeFunctionFocus, 0>);
return true;
}
} else if (entry->function() == jsDOMWindowPrototypeFunctionPostMessage) {
if (!allowsAccess) {
- slot.setCustom(this, nonCachingStaticPostMessageFunctionGetter);
+ slot.setCustom(this, nonCachingStaticFunctionGetter<jsDOMWindowPrototypeFunctionPostMessage, 2>);
+ return true;
+ }
+ } else if (entry->function() == jsDOMWindowPrototypeFunctionShowModalDialog) {
+ if (!DOMWindow::canShowModalDialog(impl()->frame())) {
+ slot.setUndefined();
return true;
}
}
@@ -123,12 +128,12 @@ ALWAYS_INLINE bool JSDOMWindow::customGetOwnPropertySlot(JSC::ExecState* exec, c
return false;
}
-inline bool JSDOMWindow::customPut(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::JSValuePtr value, JSC::PutPropertySlot& slot)
+inline bool JSDOMWindow::customPut(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::JSValue value, JSC::PutPropertySlot& slot)
{
if (!impl()->frame())
return true;
- // We have a local override (e.g. "var location"), save time and jump directly to JSGlobalObject.
+ // Optimization: access JavaScript global variables directly before involving the DOM.
JSC::PropertySlot getSlot;
bool slotIsWriteable;
if (JSGlobalObject::getOwnPropertySlot(exec, propertyName, getSlot, slotIsWriteable)) {
@@ -146,8 +151,6 @@ inline bool JSDOMWindow::customPut(JSC::ExecState* exec, const JSC::Identifier&
return false;
}
-
-
inline bool JSDOMWindowBase::allowsAccessFrom(const JSGlobalObject* other) const
{
if (allowsAccessFromPrivate(other))
@@ -156,7 +159,7 @@ inline bool JSDOMWindowBase::allowsAccessFrom(const JSGlobalObject* other) const
return false;
}
- inline bool JSDOMWindowBase::allowsAccessFrom(JSC::ExecState* exec) const
+inline bool JSDOMWindowBase::allowsAccessFrom(JSC::ExecState* exec) const
{
if (allowsAccessFromPrivate(exec->lexicalGlobalObject()))
return true;
@@ -185,12 +188,6 @@ ALWAYS_INLINE bool JSDOMWindowBase::allowsAccessFromPrivate(const JSGlobalObject
if (originWindow == targetWindow)
return true;
- // JS may be attempting to access the "window" object, which should be valid,
- // even if the document hasn't been constructed yet. If the document doesn't
- // exist yet allow JS to access the window object.
- if (!originWindow->impl()->document())
- return true;
-
const SecurityOrigin* originSecurityOrigin = originWindow->impl()->securityOrigin();
const SecurityOrigin* targetSecurityOrigin = targetWindow->impl()->securityOrigin();
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp
index d54611e..1bf478b 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp
@@ -39,7 +39,7 @@ using namespace JSC;
namespace WebCore {
-ASSERT_CLASS_FITS_IN_CELL(JSDOMWindowShell)
+ASSERT_CLASS_FITS_IN_CELL(JSDOMWindowShell);
const ClassInfo JSDOMWindowShell::s_info = { "JSDOMWindowShell", 0, 0, 0 };
@@ -54,11 +54,17 @@ JSDOMWindowShell::~JSDOMWindowShell()
{
}
-void JSDOMWindowShell::setWindow(PassRefPtr<DOMWindow> window)
+void JSDOMWindowShell::setWindow(PassRefPtr<DOMWindow> domWindow)
{
+ // Explicitly protect the global object's prototype so it isn't collected
+ // when we allocate the global object. (Once the global object is fully
+ // constructed, it can mark its own prototype.)
RefPtr<Structure> prototypeStructure = JSDOMWindowPrototype::createStructure(jsNull());
- RefPtr<Structure> structure = JSDOMWindow::createStructure(new JSDOMWindowPrototype(prototypeStructure.release()));
- setWindow(new (JSDOMWindow::commonJSGlobalData()) JSDOMWindow(structure.release(), window, this));
+ ProtectedPtr<JSDOMWindowPrototype> prototype = new JSDOMWindowPrototype(prototypeStructure.release());
+
+ RefPtr<Structure> structure = JSDOMWindow::createStructure(prototype);
+ JSDOMWindow* jsDOMWindow = new (JSDOMWindow::commonJSGlobalData()) JSDOMWindow(structure.release(), domWindow, this);
+ setWindow(jsDOMWindow);
}
// ----
@@ -82,12 +88,12 @@ bool JSDOMWindowShell::getOwnPropertySlot(ExecState* exec, const Identifier& pro
return m_window->getOwnPropertySlot(exec, propertyName, slot);
}
-void JSDOMWindowShell::put(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+void JSDOMWindowShell::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
m_window->put(exec, propertyName, value, slot);
}
-void JSDOMWindowShell::putWithAttributes(ExecState* exec, const Identifier& propertyName, JSValuePtr value, unsigned attributes)
+void JSDOMWindowShell::putWithAttributes(ExecState* exec, const Identifier& propertyName, JSValue value, unsigned attributes)
{
m_window->putWithAttributes(exec, propertyName, value, attributes);
}
@@ -117,12 +123,12 @@ void JSDOMWindowShell::defineSetter(ExecState* exec, const Identifier& propertyN
m_window->defineSetter(exec, propertyName, setterFunction);
}
-JSValuePtr JSDOMWindowShell::lookupGetter(ExecState* exec, const Identifier& propertyName)
+JSValue JSDOMWindowShell::lookupGetter(ExecState* exec, const Identifier& propertyName)
{
return m_window->lookupGetter(exec, propertyName);
}
-JSValuePtr JSDOMWindowShell::lookupSetter(ExecState* exec, const Identifier& propertyName)
+JSValue JSDOMWindowShell::lookupSetter(ExecState* exec, const Identifier& propertyName)
{
return m_window->lookupSetter(exec, propertyName);
}
@@ -141,16 +147,6 @@ DOMWindow* JSDOMWindowShell::impl() const
return m_window->impl();
}
-void JSDOMWindowShell::disconnectFrame()
-{
- m_window->disconnectFrame();
-}
-
-void JSDOMWindowShell::clear()
-{
- m_window->clear();
-}
-
void* JSDOMWindowShell::operator new(size_t size)
{
return JSDOMWindow::commonJSGlobalData()->heap.allocate(size);
@@ -160,7 +156,7 @@ void* JSDOMWindowShell::operator new(size_t size)
// Conversion methods
// ----
-JSValuePtr toJS(ExecState*, Frame* frame)
+JSValue toJS(ExecState*, Frame* frame)
{
if (!frame)
return jsNull();
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.h b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.h
index 931a256..6f21892 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.h
@@ -55,12 +55,10 @@ namespace WebCore {
static const JSC::ClassInfo s_info;
DOMWindow* impl() const;
- void disconnectFrame();
- void clear();
void* operator new(size_t);
- static PassRefPtr<JSC::Structure> createStructure(JSC::JSValuePtr prototype)
+ static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype)
{
return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType));
}
@@ -69,22 +67,22 @@ namespace WebCore {
virtual void mark();
virtual JSC::UString className() const;
virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&);
- virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValuePtr, JSC::PutPropertySlot&);
- virtual void putWithAttributes(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValuePtr, unsigned attributes);
+ virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&);
+ virtual void putWithAttributes(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, unsigned attributes);
virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier& propertyName);
virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&);
virtual bool getPropertyAttributes(JSC::ExecState*, const JSC::Identifier& propertyName, unsigned& attributes) const;
virtual void defineGetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* getterFunction);
virtual void defineSetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* setterFunction);
- virtual JSC::JSValuePtr lookupGetter(JSC::ExecState*, const JSC::Identifier& propertyName);
- virtual JSC::JSValuePtr lookupSetter(JSC::ExecState*, const JSC::Identifier& propertyName);
+ virtual JSC::JSValue lookupGetter(JSC::ExecState*, const JSC::Identifier& propertyName);
+ virtual JSC::JSValue lookupSetter(JSC::ExecState*, const JSC::Identifier& propertyName);
virtual JSC::JSObject* unwrappedObject();
virtual const JSC::ClassInfo* classInfo() const { return &s_info; }
JSDOMWindow* m_window;
};
- JSC::JSValuePtr toJS(JSC::ExecState*, Frame*);
+ JSC::JSValue toJS(JSC::ExecState*, Frame*);
JSDOMWindowShell* toJSDOMWindowShell(Frame*);
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDatabaseCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDatabaseCustom.cpp
index 68639d5..af3b066 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDatabaseCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDatabaseCustom.cpp
@@ -29,6 +29,8 @@
#include "config.h"
#include "JSDatabase.h"
+#if ENABLE(DATABASE)
+
#include "DOMWindow.h"
#include "Database.h"
#include "Document.h"
@@ -45,17 +47,17 @@ namespace WebCore {
using namespace JSC;
-JSValuePtr JSDatabase::changeVersion(ExecState* exec, const ArgList& args)
+JSValue JSDatabase::changeVersion(ExecState* exec, const ArgList& args)
{
- String oldVersion = args.at(exec, 0)->toString(exec);
- String newVersion = args.at(exec, 1)->toString(exec);
+ String oldVersion = args.at(0).toString(exec);
+ String newVersion = args.at(1).toString(exec);
Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
if (!frame)
return jsUndefined();
- JSObject *object;
- if (!(object = args.at(exec, 2)->getObject())) {
+ JSObject* object;
+ if (!(object = args.at(2).getObject())) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
}
@@ -63,8 +65,8 @@ JSValuePtr JSDatabase::changeVersion(ExecState* exec, const ArgList& args)
RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, frame));
RefPtr<SQLTransactionErrorCallback> errorCallback;
- if (!args.at(exec, 3)->isNull()) {
- if (!(object = args.at(exec, 3)->getObject())) {
+ if (!args.at(3).isNull()) {
+ if (!(object = args.at(3).getObject())) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
}
@@ -73,8 +75,8 @@ JSValuePtr JSDatabase::changeVersion(ExecState* exec, const ArgList& args)
}
RefPtr<VoidCallback> successCallback;
- if (!args.at(exec, 4)->isNull()) {
- successCallback = toVoidCallback(exec, args.at(exec, 4));
+ if (!args.at(4).isNull()) {
+ successCallback = toVoidCallback(exec, args.at(4));
if (!successCallback) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
@@ -86,11 +88,11 @@ JSValuePtr JSDatabase::changeVersion(ExecState* exec, const ArgList& args)
return jsUndefined();
}
-JSValuePtr JSDatabase::transaction(ExecState* exec, const ArgList& args)
+JSValue JSDatabase::transaction(ExecState* exec, const ArgList& args)
{
JSObject* object;
- if (!(object = args.at(exec, 0)->getObject())) {
+ if (!(object = args.at(0).getObject())) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
}
@@ -102,8 +104,8 @@ JSValuePtr JSDatabase::transaction(ExecState* exec, const ArgList& args)
RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, frame));
RefPtr<SQLTransactionErrorCallback> errorCallback;
- if (args.size() > 1 && !args.at(exec, 1)->isNull()) {
- if (!(object = args.at(exec, 1)->getObject())) {
+ if (args.size() > 1 && !args.at(1).isNull()) {
+ if (!(object = args.at(1).getObject())) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
}
@@ -112,8 +114,8 @@ JSValuePtr JSDatabase::transaction(ExecState* exec, const ArgList& args)
}
RefPtr<VoidCallback> successCallback;
- if (args.size() > 2 && !args.at(exec, 2)->isNull()) {
- successCallback = toVoidCallback(exec, args.at(exec, 2));
+ if (args.size() > 2 && !args.at(2).isNull()) {
+ successCallback = toVoidCallback(exec, args.at(2));
if (!successCallback) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
@@ -126,3 +128,4 @@ JSValuePtr JSDatabase::transaction(ExecState* exec, const ArgList& args)
}
}
+#endif // ENABLE(DATABASE)
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDocumentCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDocumentCustom.cpp
index f292b38..956327a 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDocumentCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDocumentCustom.cpp
@@ -20,7 +20,6 @@
#include "config.h"
#include "JSDocument.h"
-#include "DOMWindow.h"
#include "ExceptionCode.h"
#include "Frame.h"
#include "FrameLoader.h"
@@ -28,9 +27,7 @@
#include "JSDOMWindowCustom.h"
#include "JSHTMLDocument.h"
#include "JSLocation.h"
-#include "JSNodeList.h"
#include "Location.h"
-#include "NodeList.h"
#include "ScriptController.h"
#if ENABLE(SVG)
@@ -44,27 +41,34 @@ namespace WebCore {
void JSDocument::mark()
{
- JSEventTargetNode::mark();
+ JSNode::mark();
markDOMNodesForDocument(impl());
markActiveObjectsForContext(*Heap::heap(this)->globalData(), impl());
}
-JSValuePtr JSDocument::location(ExecState* exec) const
+JSValue JSDocument::location(ExecState* exec) const
{
Frame* frame = static_cast<Document*>(impl())->frame();
if (!frame)
return jsNull();
- return toJS(exec, frame->domWindow()->location());
+ Location* location = frame->domWindow()->location();
+ if (DOMObject* wrapper = getCachedDOMObjectWrapper(exec->globalData(), location))
+ return wrapper;
+
+ JSDOMWindow* window = static_cast<JSDOMWindow*>(exec->lexicalGlobalObject());
+ JSLocation* jsLocation = new (exec) JSLocation(getDOMStructure<JSLocation>(exec, window), location);
+ cacheDOMObjectWrapper(exec->globalData(), location, jsLocation);
+ return jsLocation;
}
-void JSDocument::setLocation(ExecState* exec, JSValuePtr value)
+void JSDocument::setLocation(ExecState* exec, JSValue value)
{
Frame* frame = static_cast<Document*>(impl())->frame();
if (!frame)
return;
- String str = value->toString(exec);
+ String str = value.toString(exec);
// IE and Mozilla both resolve the URL relative to the source frame,
// not the target frame.
@@ -73,10 +77,10 @@ void JSDocument::setLocation(ExecState* exec, JSValuePtr value)
str = activeFrame->document()->completeURL(str).string();
bool userGesture = activeFrame->script()->processingUserGesture();
- frame->loader()->scheduleLocationChange(str, activeFrame->loader()->outgoingReferrer(), false, userGesture);
+ frame->loader()->scheduleLocationChange(str, activeFrame->loader()->outgoingReferrer(), !activeFrame->script()->anyPageIsProcessingUserGesture(), false, userGesture);
}
-JSValuePtr toJS(ExecState* exec, Document* document)
+JSValue toJS(ExecState* exec, Document* document)
{
if (!document)
return jsNull();
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSElementCustom.cpp
index 3effe85..b12c185 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSElementCustom.cpp
@@ -53,7 +53,7 @@ using namespace HTMLNames;
static inline bool allowSettingSrcToJavascriptURL(ExecState* exec, Element* element, const String& name, const String& value)
{
- if ((element->hasTagName(iframeTag) || element->hasTagName(frameTag)) && equalIgnoringCase(name, "src") && protocolIs(parseURL(value), "javascript")) {
+ if ((element->hasTagName(iframeTag) || element->hasTagName(frameTag)) && equalIgnoringCase(name, "src") && protocolIsJavaScript(parseURL(value))) {
HTMLFrameElementBase* frame = static_cast<HTMLFrameElementBase*>(element);
if (!checkNodeSecurity(exec, frame->contentDocument()))
return false;
@@ -61,11 +61,11 @@ static inline bool allowSettingSrcToJavascriptURL(ExecState* exec, Element* elem
return true;
}
-JSValuePtr JSElement::setAttribute(ExecState* exec, const ArgList& args)
+JSValue JSElement::setAttribute(ExecState* exec, const ArgList& args)
{
ExceptionCode ec = 0;
- AtomicString name = args.at(exec, 0)->toString(exec);
- AtomicString value = args.at(exec, 1)->toString(exec);
+ AtomicString name = args.at(0).toString(exec);
+ AtomicString value = args.at(1).toString(exec);
Element* imp = impl();
if (!allowSettingSrcToJavascriptURL(exec, imp, name, value))
@@ -76,10 +76,10 @@ JSValuePtr JSElement::setAttribute(ExecState* exec, const ArgList& args)
return jsUndefined();
}
-JSValuePtr JSElement::setAttributeNode(ExecState* exec, const ArgList& args)
+JSValue JSElement::setAttributeNode(ExecState* exec, const ArgList& args)
{
ExceptionCode ec = 0;
- Attr* newAttr = toAttr(args.at(exec, 0));
+ Attr* newAttr = toAttr(args.at(0));
if (!newAttr) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
@@ -89,17 +89,17 @@ JSValuePtr JSElement::setAttributeNode(ExecState* exec, const ArgList& args)
if (!allowSettingSrcToJavascriptURL(exec, imp, newAttr->name(), newAttr->value()))
return jsUndefined();
- JSValuePtr result = toJS(exec, WTF::getPtr(imp->setAttributeNode(newAttr, ec)));
+ JSValue result = toJS(exec, WTF::getPtr(imp->setAttributeNode(newAttr, ec)));
setDOMException(exec, ec);
return result;
}
-JSValuePtr JSElement::setAttributeNS(ExecState* exec, const ArgList& args)
+JSValue JSElement::setAttributeNS(ExecState* exec, const ArgList& args)
{
ExceptionCode ec = 0;
- AtomicString namespaceURI = valueToStringWithNullCheck(exec, args.at(exec, 0));
- AtomicString qualifiedName = args.at(exec, 1)->toString(exec);
- AtomicString value = args.at(exec, 2)->toString(exec);
+ AtomicString namespaceURI = valueToStringWithNullCheck(exec, args.at(0));
+ AtomicString qualifiedName = args.at(1).toString(exec);
+ AtomicString value = args.at(2).toString(exec);
Element* imp = impl();
if (!allowSettingSrcToJavascriptURL(exec, imp, qualifiedName, value))
@@ -110,10 +110,10 @@ JSValuePtr JSElement::setAttributeNS(ExecState* exec, const ArgList& args)
return jsUndefined();
}
-JSValuePtr JSElement::setAttributeNodeNS(ExecState* exec, const ArgList& args)
+JSValue JSElement::setAttributeNodeNS(ExecState* exec, const ArgList& args)
{
ExceptionCode ec = 0;
- Attr* newAttr = toAttr(args.at(exec, 0));
+ Attr* newAttr = toAttr(args.at(0));
if (!newAttr) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
@@ -123,12 +123,12 @@ JSValuePtr JSElement::setAttributeNodeNS(ExecState* exec, const ArgList& args)
if (!allowSettingSrcToJavascriptURL(exec, imp, newAttr->name(), newAttr->value()))
return jsUndefined();
- JSValuePtr result = toJS(exec, WTF::getPtr(imp->setAttributeNodeNS(newAttr, ec)));
+ JSValue result = toJS(exec, WTF::getPtr(imp->setAttributeNodeNS(newAttr, ec)));
setDOMException(exec, ec);
return result;
}
-JSValuePtr toJSNewlyCreated(ExecState* exec, Element* element)
+JSValue toJSNewlyCreated(ExecState* exec, Element* element)
{
if (!element)
return jsNull();
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSEventCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSEventCustom.cpp
index 1c59f9d..03b97d8 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSEventCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSEventCustom.cpp
@@ -72,12 +72,12 @@ using namespace JSC;
namespace WebCore {
-JSValuePtr JSEvent::clipboardData(ExecState* exec) const
+JSValue JSEvent::clipboardData(ExecState* exec) const
{
return impl()->isClipboardEvent() ? toJS(exec, impl()->clipboardData()) : jsUndefined();
}
-JSValuePtr toJS(ExecState* exec, Event* event)
+JSValue toJS(ExecState* exec, Event* event)
{
JSLock lock(false);
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.cpp
index f84e537..b9ed685 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.cpp
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2001 Peter Kelly (pmk@post.com)
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -20,19 +20,10 @@
#include "config.h"
#include "JSEventListener.h"
-#include "CString.h"
-#include "Console.h"
-#include "DOMWindow.h"
-#include "Document.h"
#include "Event.h"
#include "Frame.h"
-#include "FrameLoader.h"
-#include "JSDOMWindow.h"
#include "JSEvent.h"
#include "JSEventTarget.h"
-#include "JSEventTargetNode.h"
-#include "ScriptController.h"
-#include <runtime/FunctionConstructor.h>
#include <runtime/JSLock.h>
#include <wtf/RefCountedLeakCounter.h>
@@ -40,17 +31,43 @@ using namespace JSC;
namespace WebCore {
-ASSERT_CLASS_FITS_IN_CELL(JSAbstractEventListener)
+JSEventListener::JSEventListener(JSObject* function, JSDOMGlobalObject* globalObject, bool isAttribute)
+ : m_jsFunction(function)
+ , m_globalObject(globalObject)
+ , m_isAttribute(isAttribute)
+{
+ if (!m_isAttribute && m_jsFunction)
+ globalObject->jsEventListeners().set(m_jsFunction, this);
+}
+
+JSEventListener::~JSEventListener()
+{
+ if (!m_isAttribute && m_jsFunction && m_globalObject)
+ m_globalObject->jsEventListeners().remove(m_jsFunction);
+}
+
+JSObject* JSEventListener::jsFunction() const
+{
+ return m_jsFunction;
+}
+
+void JSEventListener::markJSFunction()
+{
+ if (m_jsFunction && !m_jsFunction->marked())
+ m_jsFunction->mark();
+ if (m_globalObject && !m_globalObject->marked())
+ m_globalObject->mark();
+}
-void JSAbstractEventListener::handleEvent(Event* event, bool isWindowEvent)
+void JSEventListener::handleEvent(Event* event, bool isWindowEvent)
{
JSLock lock(false);
- JSObject* listener = listenerObj();
- if (!listener)
+ JSObject* jsFunction = this->jsFunction();
+ if (!jsFunction)
return;
- JSDOMGlobalObject* globalObject = this->globalObject();
+ JSDOMGlobalObject* globalObject = m_globalObject;
// Null check as clearGlobalObject() can clear this and we still get called back by
// xmlhttprequest objects. See http://bugs.webkit.org/show_bug.cgi?id=13275
// FIXME: Is this check still necessary? Requests are supposed to be stopped before clearGlobalObject() is called.
@@ -78,18 +95,18 @@ void JSAbstractEventListener::handleEvent(Event* event, bool isWindowEvent)
ExecState* exec = globalObject->globalExec();
- JSValuePtr handleEventFunction = listener->get(exec, Identifier(exec, "handleEvent"));
+ JSValue handleEventFunction = jsFunction->get(exec, Identifier(exec, "handleEvent"));
CallData callData;
- CallType callType = handleEventFunction->getCallData(callData);
+ CallType callType = handleEventFunction.getCallData(callData);
if (callType == CallTypeNone) {
- handleEventFunction = noValue();
- callType = listener->getCallData(callData);
+ handleEventFunction = JSValue();
+ callType = jsFunction->getCallData(callData);
}
if (callType != CallTypeNone) {
ref();
- ArgList args;
+ MarkedArgumentBuffer args;
args.append(toJS(exec, event));
Event* savedEvent = globalObject->currentEvent();
@@ -101,240 +118,44 @@ void JSAbstractEventListener::handleEvent(Event* event, bool isWindowEvent)
JSGlobalData* globalData = globalObject->globalData();
DynamicGlobalObjectScope globalObjectScope(exec, globalData->dynamicGlobalObject ? globalData->dynamicGlobalObject : globalObject);
- JSValuePtr retval;
+ JSValue retval;
if (handleEventFunction) {
- globalObject->startTimeoutCheck();
- retval = call(exec, handleEventFunction, callType, callData, listener, args);
+ globalObject->globalData()->timeoutChecker.start();
+ retval = call(exec, handleEventFunction, callType, callData, jsFunction, args);
} else {
- JSValuePtr thisValue;
+ JSValue thisValue;
if (isWindowEvent)
thisValue = globalObject->toThisObject(exec);
else
thisValue = toJS(exec, event->currentTarget());
- globalObject->startTimeoutCheck();
- retval = call(exec, listener, callType, callData, thisValue, args);
+ globalObject->globalData()->timeoutChecker.start();
+ retval = call(exec, jsFunction, callType, callData, thisValue, args);
}
- globalObject->stopTimeoutCheck();
+ globalObject->globalData()->timeoutChecker.stop();
globalObject->setCurrentEvent(savedEvent);
if (exec->hadException())
reportCurrentException(exec);
else {
- if (!retval->isUndefinedOrNull() && event->storesResultAsString())
- event->storeResult(retval->toString(exec));
- if (m_isInline) {
+ if (!retval.isUndefinedOrNull() && event->storesResultAsString())
+ event->storeResult(retval.toString(exec));
+ if (m_isAttribute) {
bool retvalbool;
- if (retval->getBoolean(retvalbool) && !retvalbool)
+ if (retval.getBoolean(retvalbool) && !retvalbool)
event->preventDefault();
}
}
if (scriptExecutionContext->isDocument())
- Document::updateDocumentsRendering();
+ Document::updateStyleForAllDocuments();
deref();
}
}
-bool JSAbstractEventListener::isInline() const
-{
- return m_isInline;
-}
-
-// -------------------------------------------------------------------------
-
-JSUnprotectedEventListener::JSUnprotectedEventListener(JSObject* listener, JSDOMGlobalObject* globalObject, bool isInline)
- : JSAbstractEventListener(isInline)
- , m_listener(listener)
- , m_globalObject(globalObject)
-{
- if (m_listener) {
- JSDOMWindow::UnprotectedListenersMap& listeners = isInline
- ? globalObject->jsUnprotectedInlineEventListeners() : globalObject->jsUnprotectedEventListeners();
- listeners.set(m_listener, this);
- }
-}
-
-JSUnprotectedEventListener::~JSUnprotectedEventListener()
+bool JSEventListener::virtualisAttribute() const
{
- if (m_listener && m_globalObject) {
- JSDOMWindow::UnprotectedListenersMap& listeners = isInline()
- ? m_globalObject->jsUnprotectedInlineEventListeners() : m_globalObject->jsUnprotectedEventListeners();
- listeners.remove(m_listener);
- }
-}
-
-JSObject* JSUnprotectedEventListener::listenerObj() const
-{
- return m_listener;
-}
-
-JSDOMGlobalObject* JSUnprotectedEventListener::globalObject() const
-{
- return m_globalObject;
-}
-
-void JSUnprotectedEventListener::clearGlobalObject()
-{
- m_globalObject = 0;
-}
-
-void JSUnprotectedEventListener::mark()
-{
- if (m_listener && !m_listener->marked())
- m_listener->mark();
-}
-
-#ifndef NDEBUG
-static WTF::RefCountedLeakCounter eventListenerCounter("EventListener");
-#endif
-
-// -------------------------------------------------------------------------
-
-JSEventListener::JSEventListener(JSObject* listener, JSDOMGlobalObject* globalObject, bool isInline)
- : JSAbstractEventListener(isInline)
- , m_listener(listener)
- , m_globalObject(globalObject)
-{
- if (m_listener) {
- JSDOMWindow::ListenersMap& listeners = isInline
- ? m_globalObject->jsInlineEventListeners() : m_globalObject->jsEventListeners();
- listeners.set(m_listener, this);
- }
-#ifndef NDEBUG
- eventListenerCounter.increment();
-#endif
-}
-
-JSEventListener::~JSEventListener()
-{
- if (m_listener && m_globalObject) {
- JSDOMWindow::ListenersMap& listeners = isInline()
- ? m_globalObject->jsInlineEventListeners() : m_globalObject->jsEventListeners();
- listeners.remove(m_listener);
- }
-#ifndef NDEBUG
- eventListenerCounter.decrement();
-#endif
-}
-
-JSObject* JSEventListener::listenerObj() const
-{
- return m_listener;
-}
-
-JSDOMGlobalObject* JSEventListener::globalObject() const
-{
- return m_globalObject;
-}
-
-void JSEventListener::clearGlobalObject()
-{
- m_globalObject = 0;
-}
-
-// -------------------------------------------------------------------------
-
-JSLazyEventListener::JSLazyEventListener(LazyEventListenerType type, const String& functionName, const String& code, JSDOMGlobalObject* globalObject, Node* node, int lineNumber)
- : JSEventListener(0, globalObject, true)
- , m_functionName(functionName)
- , m_code(code)
- , m_parsed(false)
- , m_lineNumber(lineNumber)
- , m_originalNode(node)
- , m_type(type)
-{
- // We don't retain the original node because we assume it
- // will stay alive as long as this handler object is around
- // and we need to avoid a reference cycle. If JS transfers
- // this handler to another node, parseCode will be called and
- // then originalNode is no longer needed.
-
- // A JSLazyEventListener can be created with a line number of zero when it is created with
- // a setAttribute call from JavaScript, so make the line number 1 in that case.
- if (m_lineNumber == 0)
- m_lineNumber = 1;
-}
-
-JSObject* JSLazyEventListener::listenerObj() const
-{
- parseCode();
- return m_listener;
-}
-
-// Helper function
-inline JSValuePtr eventParameterName(JSLazyEventListener::LazyEventListenerType type, ExecState* exec)
-{
- switch (type) {
- case JSLazyEventListener::HTMLLazyEventListener:
- return jsNontrivialString(exec, "event");
-#if ENABLE(SVG)
- case JSLazyEventListener::SVGLazyEventListener:
- return jsNontrivialString(exec, "evt");
-#endif
- default:
- ASSERT_NOT_REACHED();
- return jsUndefined();
- }
-}
-
-void JSLazyEventListener::parseCode() const
-{
- if (m_parsed)
- return;
-
- if (globalObject()->scriptExecutionContext()->isDocument()) {
- JSDOMWindow* window = static_cast<JSDOMWindow*>(globalObject());
- Frame* frame = window->impl()->frame();
- if (!frame)
- return;
- // FIXME: Is this check needed for non-Document contexts?
- ScriptController* script = frame->script();
- if (!script->isEnabled() || script->isPaused())
- return;
- }
-
- m_parsed = true;
-
- ExecState* exec = globalObject()->globalExec();
-
- ArgList args;
- UString sourceURL(globalObject()->scriptExecutionContext()->url().string());
- args.append(eventParameterName(m_type, exec));
- args.append(jsString(exec, m_code));
-
- // FIXME: Passing the document's URL to construct is not always correct, since this event listener might
- // have been added with setAttribute from a script, and we should pass String() in that case.
- m_listener = constructFunction(exec, args, Identifier(exec, m_functionName), sourceURL, m_lineNumber); // FIXME: is globalExec ok?
-
- JSFunction* listenerAsFunction = static_cast<JSFunction*>(m_listener.get());
-
- if (exec->hadException()) {
- exec->clearException();
-
- // failed to parse, so let's just make this listener a no-op
- m_listener = 0;
- } else if (m_originalNode) {
- // Add the event's home element to the scope
- // (and the document, and the form - see JSHTMLElement::eventHandlerScope)
- ScopeChain scope = listenerAsFunction->scope();
-
- JSValuePtr thisObj = toJS(exec, m_originalNode);
- if (thisObj->isObject()) {
- static_cast<JSEventTargetNode*>(asObject(thisObj))->pushEventHandlerScope(exec, scope);
- listenerAsFunction->setScope(scope);
- }
- }
-
- // no more need to keep the unparsed code around
- m_functionName = String();
- m_code = String();
-
- if (m_listener) {
- ASSERT(isInline());
- JSDOMWindow::ListenersMap& listeners = globalObject()->jsInlineEventListeners();
- listeners.set(m_listener, const_cast<JSLazyEventListener*>(this));
- }
+ return m_isAttribute;
}
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.h b/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.h
index 859d5d4..ce34832 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2001 Peter Kelly (pmk@post.com)
- * Copyright (C) 2003, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2008, 2009 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -21,103 +21,39 @@
#define JSEventListener_h
#include "EventListener.h"
-#include "PlatformString.h"
+#include "JSDOMWindow.h"
#include <runtime/Protect.h>
namespace WebCore {
- class Event;
class JSDOMGlobalObject;
- class Node;
- class JSAbstractEventListener : public EventListener {
+ class JSEventListener : public EventListener {
public:
- virtual void handleEvent(Event*, bool isWindowEvent);
- virtual bool isInline() const;
- virtual JSC::JSObject* listenerObj() const = 0;
- virtual JSDOMGlobalObject* globalObject() const = 0;
-
- protected:
- JSAbstractEventListener(bool isInline)
- : m_isInline(isInline)
- {
- }
-
- private:
- bool m_isInline;
- };
-
- class JSUnprotectedEventListener : public JSAbstractEventListener {
- public:
- static PassRefPtr<JSUnprotectedEventListener> create(JSC::JSObject* listener, JSDOMGlobalObject* globalObject, bool isInline)
- {
- return adoptRef(new JSUnprotectedEventListener(listener, globalObject, isInline));
- }
- virtual ~JSUnprotectedEventListener();
-
- virtual JSC::JSObject* listenerObj() const;
- virtual JSDOMGlobalObject* globalObject() const;
- void clearGlobalObject();
- void mark();
-
- private:
- JSUnprotectedEventListener(JSC::JSObject* listener, JSDOMGlobalObject*, bool isInline);
-
- JSC::JSObject* m_listener;
- JSDOMGlobalObject* m_globalObject;
- };
-
- class JSEventListener : public JSAbstractEventListener {
- public:
- static PassRefPtr<JSEventListener> create(JSC::JSObject* listener, JSDOMGlobalObject* globalObject, bool isInline)
+ static PassRefPtr<JSEventListener> create(JSC::JSObject* listener, JSDOMGlobalObject* globalObject, bool isAttribute)
{
- return adoptRef(new JSEventListener(listener, globalObject, isInline));
+ return adoptRef(new JSEventListener(listener, globalObject, isAttribute));
}
virtual ~JSEventListener();
+ void clearGlobalObject() { m_globalObject = 0; }
- virtual JSC::JSObject* listenerObj() const;
- virtual JSDOMGlobalObject* globalObject() const;
- void clearGlobalObject();
-
- protected:
- JSEventListener(JSC::JSObject* listener, JSDOMGlobalObject*, bool isInline);
+ // Returns true if this event listener was created for an event handler attribute, like "onload" or "onclick".
+ bool isAttribute() const { return m_isAttribute; }
- mutable JSC::ProtectedPtr<JSC::JSObject> m_listener;
+ virtual JSC::JSObject* jsFunction() const;
private:
- JSC::ProtectedPtr<JSDOMGlobalObject> m_globalObject;
- };
-
- class JSLazyEventListener : public JSEventListener {
- public:
- enum LazyEventListenerType {
- HTMLLazyEventListener
-#if ENABLE(SVG)
- , SVGLazyEventListener
-#endif
- };
-
- virtual bool wasCreatedFromMarkup() const { return true; }
-
- static PassRefPtr<JSLazyEventListener> create(LazyEventListenerType type, const String& functionName, const String& code, JSDOMGlobalObject* globalObject, Node* node, int lineNumber)
- {
- return adoptRef(new JSLazyEventListener(type, functionName, code, globalObject, node, lineNumber));
- }
- virtual JSC::JSObject* listenerObj() const;
+ virtual void markJSFunction();
+ virtual void handleEvent(Event*, bool isWindowEvent);
+ virtual bool virtualisAttribute() const;
+ void clearJSFunctionInline();
protected:
- JSLazyEventListener(LazyEventListenerType type, const String& functionName, const String& code, JSDOMGlobalObject*, Node*, int lineNumber);
+ JSEventListener(JSC::JSObject* function, JSDOMGlobalObject*, bool isAttribute);
- private:
- void parseCode() const;
-
- mutable String m_functionName;
- mutable String m_code;
- mutable bool m_parsed;
- int m_lineNumber;
- Node* m_originalNode;
-
- LazyEventListenerType m_type;
+ mutable JSC::JSObject* m_jsFunction;
+ JSDOMGlobalObject* m_globalObject;
+ bool m_isAttribute;
};
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.cpp
index 8239897..2058098 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.cpp
@@ -26,26 +26,41 @@
#include "config.h"
#include "JSEventTarget.h"
+#include "DOMWindow.h"
#include "Document.h"
+#include "JSDOMWindow.h"
+#include "JSDOMWindowShell.h"
#include "JSEventListener.h"
-#include "JSEventTargetNode.h"
#include "JSMessagePort.h"
-#include "JSWorker.h"
-#include "JSWorkerContext.h"
+#include "JSNode.h"
+#include "JSXMLHttpRequest.h"
#include "JSXMLHttpRequestUpload.h"
-#include "Worker.h"
-#include "WorkerContext.h"
+#include "MessagePort.h"
+#include "XMLHttpRequest.h"
+#include "XMLHttpRequestUpload.h"
+
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+#include "DOMApplicationCache.h"
+#include "JSDOMApplicationCache.h"
+#endif
#if ENABLE(SVG)
#include "SVGElementInstance.h"
#include "JSSVGElementInstance.h"
#endif
+#if ENABLE(WORKERS)
+#include "JSWorker.h"
+#include "JSWorkerContext.h"
+#include "Worker.h"
+#include "WorkerContext.h"
+#endif
+
using namespace JSC;
namespace WebCore {
-JSValuePtr toJS(ExecState* exec, EventTarget* target)
+JSValue toJS(ExecState* exec, EventTarget* target)
{
if (!target)
return jsNull();
@@ -59,6 +74,9 @@ JSValuePtr toJS(ExecState* exec, EventTarget* target)
if (Node* node = target->toNode())
return toJS(exec, node);
+ if (DOMWindow* domWindow = target->toDOMWindow())
+ return toJS(exec, domWindow);
+
if (XMLHttpRequest* xhr = target->toXMLHttpRequest())
// XMLHttpRequest is always created via JS, so we don't need to use cacheDOMObject() here.
return getCachedDOMObjectWrapper(exec->globalData(), xhr);
@@ -87,4 +105,34 @@ JSValuePtr toJS(ExecState* exec, EventTarget* target)
return jsNull();
}
+EventTarget* toEventTarget(JSC::JSValue value)
+{
+ #define CONVERT_TO_EVENT_TARGET(type) \
+ if (value.isObject(&JS##type::s_info)) \
+ return static_cast<JS##type*>(asObject(value))->impl();
+
+ CONVERT_TO_EVENT_TARGET(Node)
+ CONVERT_TO_EVENT_TARGET(XMLHttpRequest)
+ CONVERT_TO_EVENT_TARGET(XMLHttpRequestUpload)
+ CONVERT_TO_EVENT_TARGET(MessagePort)
+
+ if (value.isObject(&JSDOMWindowShell::s_info))
+ return static_cast<JSDOMWindowShell*>(asObject(value))->impl();
+
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ CONVERT_TO_EVENT_TARGET(DOMApplicationCache)
+#endif
+
+#if ENABLE(SVG)
+ CONVERT_TO_EVENT_TARGET(SVGElementInstance)
+#endif
+
+#if ENABLE(WORKERS)
+ CONVERT_TO_EVENT_TARGET(Worker)
+ CONVERT_TO_EVENT_TARGET(WorkerContext)
+#endif
+
+ return 0;
+}
+
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.h b/src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.h
index 00dd848..05df056 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.h
@@ -36,7 +36,8 @@ namespace WebCore {
class EventTarget;
- JSC::JSValuePtr toJS(JSC::ExecState*, EventTarget*);
+ JSC::JSValue toJS(JSC::ExecState*, EventTarget*);
+ EventTarget* toEventTarget(JSC::JSValue);
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSEventTargetBase.h b/src/3rdparty/webkit/WebCore/bindings/js/JSEventTargetBase.h
deleted file mode 100644
index 2aa2bf2..0000000
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSEventTargetBase.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * (C) 2007 Nikolas Zimmermann <zimmermann@kde.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef JSEventTargetBase_h
-#define JSEventTargetBase_h
-
-#include "Event.h"
-#include "EventNames.h"
-#include "JSEvent.h"
-
-#define JS_EVENT_LISTENER_FOR_EACH_LISTENER(specificEventTarget, macro) \
- macro(specificEventTarget, OnAbort, abortEvent) \
- macro(specificEventTarget, OnBlur, blurEvent) \
- macro(specificEventTarget, OnChange, changeEvent) \
- macro(specificEventTarget, OnClick, clickEvent) \
- macro(specificEventTarget, OnContextMenu, contextmenuEvent) \
- macro(specificEventTarget, OnDblClick, dblclickEvent) \
- macro(specificEventTarget, OnError, errorEvent) \
- macro(specificEventTarget, OnFocus, focusEvent) \
- macro(specificEventTarget, OnInput, inputEvent) \
- macro(specificEventTarget, OnKeyDown, keydownEvent) \
- macro(specificEventTarget, OnKeyPress, keypressEvent) \
- macro(specificEventTarget, OnKeyUp, keyupEvent) \
- macro(specificEventTarget, OnLoad, loadEvent) \
- macro(specificEventTarget, OnMouseDown, mousedownEvent) \
- macro(specificEventTarget, OnMouseMove, mousemoveEvent) \
- macro(specificEventTarget, OnMouseOut, mouseoutEvent) \
- macro(specificEventTarget, OnMouseOver, mouseoverEvent) \
- macro(specificEventTarget, OnMouseUp, mouseupEvent) \
- macro(specificEventTarget, OnMouseWheel, mousewheelEvent) \
- macro(specificEventTarget, OnBeforeCut, beforecutEvent) \
- macro(specificEventTarget, OnCut, cutEvent) \
- macro(specificEventTarget, OnBeforeCopy, beforecopyEvent) \
- macro(specificEventTarget, OnCopy, copyEvent) \
- macro(specificEventTarget, OnBeforePaste, beforepasteEvent) \
- macro(specificEventTarget, OnPaste, pasteEvent) \
- macro(specificEventTarget, OnDragEnter, dragenterEvent) \
- macro(specificEventTarget, OnDragOver, dragoverEvent) \
- macro(specificEventTarget, OnDragLeave, dragleaveEvent) \
- macro(specificEventTarget, OnDrop, dropEvent) \
- macro(specificEventTarget, OnDragStart, dragstartEvent) \
- macro(specificEventTarget, OnDrag, dragEvent) \
- macro(specificEventTarget, OnDragEnd, dragendEvent) \
- macro(specificEventTarget, OnReset, resetEvent) \
- macro(specificEventTarget, OnResize, resizeEvent) \
- macro(specificEventTarget, OnScroll, scrollEvent) \
- macro(specificEventTarget, OnSearch, searchEvent) \
- macro(specificEventTarget, OnSelect, selectEvent) \
- macro(specificEventTarget, OnSelectStart, selectstartEvent) \
- macro(specificEventTarget, OnSubmit, submitEvent) \
- macro(specificEventTarget, OnUnload, unloadEvent) \
-
-#define EVENT_LISTENER_GETTER(specificEventTarget, name, event) \
-JSC::JSValuePtr js##specificEventTarget##name(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot& slot) \
-{ \
- return static_cast<JS##specificEventTarget*>(slot.slotBase())->getListener(event); \
-} \
-
-#define EVENT_LISTENER_SETTER(specificEventTarget, name, event) \
-void setJS##specificEventTarget##name(JSC::ExecState* exec, JSC::JSObject* baseObject, JSC::JSValuePtr value) \
-{ \
- static_cast<JS##specificEventTarget*>(baseObject)->setListener(exec, event, value); \
-} \
-
-#define DECLARE_JS_EVENT_LISTENERS(specificEventTarget) \
- JS_EVENT_LISTENER_FOR_EACH_LISTENER(specificEventTarget, EVENT_LISTENER_GETTER) \
- JS_EVENT_LISTENER_FOR_EACH_LISTENER(specificEventTarget, EVENT_LISTENER_SETTER) \
-
-#endif // JSEventTargetBase_h
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSGeolocationCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSGeolocationCustom.cpp
index 2b6fb20..493166c 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSGeolocationCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSGeolocationCustom.cpp
@@ -39,35 +39,42 @@ using namespace JSC;
namespace WebCore {
-static PassRefPtr<PositionOptions> createPositionOptions(ExecState* exec, JSValuePtr value)
+static PassRefPtr<PositionOptions> createPositionOptions(ExecState* exec, JSValue value)
{
- if (!value->isObject())
+ if (!value.isObject())
return 0;
JSObject* object = asObject(value);
- JSValuePtr enableHighAccuracyValue = object->get(exec, Identifier(exec, "enableHighAccuracy"));
+ JSValue enableHighAccuracyValue = object->get(exec, Identifier(exec, "enableHighAccuracy"));
if (exec->hadException())
return 0;
- bool enableHighAccuracy = enableHighAccuracyValue->toBoolean(exec);
+ bool enableHighAccuracy = enableHighAccuracyValue.toBoolean(exec);
if (exec->hadException())
return 0;
- JSValuePtr timeoutValue = object->get(exec, Identifier(exec, "timeout"));
+ JSValue timeoutValue = object->get(exec, Identifier(exec, "timeout"));
if (exec->hadException())
return 0;
- unsigned timeout = timeoutValue->toUInt32(exec);
+ unsigned timeout = timeoutValue.toUInt32(exec);
if (exec->hadException())
return 0;
- return PositionOptions::create(enableHighAccuracy, timeout);
+ JSValue maximumAgeValue = object->get(exec, Identifier(exec, "maximumAge"));
+ if (exec->hadException())
+ return 0;
+ unsigned maximumAge = maximumAgeValue.toUInt32(exec);
+ if (exec->hadException())
+ return 0;
+
+ return PositionOptions::create(enableHighAccuracy, timeout, maximumAge);
}
-JSValuePtr JSGeolocation::getCurrentPosition(ExecState* exec, const ArgList& args)
+JSValue JSGeolocation::getCurrentPosition(ExecState* exec, const ArgList& args)
{
// Arguments: PositionCallback, (optional)PositionErrorCallback, (optional)PositionOptions
RefPtr<PositionCallback> positionCallback;
- JSObject* object = args.at(exec, 0)->getObject();
+ JSObject* object = args.at(0).getObject();
if (exec->hadException())
return jsUndefined();
if (!object) {
@@ -79,8 +86,8 @@ JSValuePtr JSGeolocation::getCurrentPosition(ExecState* exec, const ArgList& arg
positionCallback = JSCustomPositionCallback::create(object, frame);
RefPtr<PositionErrorCallback> positionErrorCallback;
- if (!args.at(exec, 1)->isUndefinedOrNull()) {
- JSObject* object = args.at(exec, 1)->getObject();
+ if (!args.at(1).isUndefinedOrNull()) {
+ JSObject* object = args.at(1).getObject();
if (!object) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
@@ -91,22 +98,22 @@ JSValuePtr JSGeolocation::getCurrentPosition(ExecState* exec, const ArgList& arg
}
RefPtr<PositionOptions> positionOptions;
- if (!args.at(exec, 2)->isUndefinedOrNull()) {
- positionOptions = createPositionOptions(exec, args.at(exec, 2));
+ if (!args.at(2).isUndefinedOrNull()) {
+ positionOptions = createPositionOptions(exec, args.at(2));
if (exec->hadException())
return jsUndefined();
}
- m_impl->getCurrentPosition(positionCallback.release(), positionErrorCallback.release(), positionOptions.get());
+ m_impl->getCurrentPosition(positionCallback.release(), positionErrorCallback.release(), positionOptions.release());
return jsUndefined();
}
-JSValuePtr JSGeolocation::watchPosition(ExecState* exec, const ArgList& args)
+JSValue JSGeolocation::watchPosition(ExecState* exec, const ArgList& args)
{
// Arguments: PositionCallback, (optional)PositionErrorCallback, (optional)PositionOptions
RefPtr<PositionCallback> positionCallback;
- JSObject* object = args.at(exec, 0)->getObject();
+ JSObject* object = args.at(0).getObject();
if (exec->hadException())
return jsUndefined();
if (!object) {
@@ -118,8 +125,8 @@ JSValuePtr JSGeolocation::watchPosition(ExecState* exec, const ArgList& args)
positionCallback = JSCustomPositionCallback::create(object, frame);
RefPtr<PositionErrorCallback> positionErrorCallback;
- if (!args.at(exec, 1)->isUndefinedOrNull()) {
- JSObject* object = args.at(exec, 1)->getObject();
+ if (!args.at(1).isUndefinedOrNull()) {
+ JSObject* object = args.at(1).getObject();
if (!object) {
setDOMException(exec, TYPE_MISMATCH_ERR);
return jsUndefined();
@@ -130,13 +137,13 @@ JSValuePtr JSGeolocation::watchPosition(ExecState* exec, const ArgList& args)
}
RefPtr<PositionOptions> positionOptions;
- if (!args.at(exec, 2)->isUndefinedOrNull()) {
- positionOptions = createPositionOptions(exec, args.at(exec, 2));
+ if (!args.at(2).isUndefinedOrNull()) {
+ positionOptions = createPositionOptions(exec, args.at(2));
if (exec->hadException())
return jsUndefined();
}
- int watchID = m_impl->watchPosition(positionCallback.release(), positionErrorCallback.release(), positionOptions.get());
+ int watchID = m_impl->watchPosition(positionCallback.release(), positionErrorCallback.release(), positionOptions.release());
return jsNumber(exec, watchID);
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAllCollection.h b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAllCollection.h
index 511c9d7..d559d3b 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAllCollection.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAllCollection.h
@@ -40,7 +40,7 @@ namespace WebCore {
{
}
- static PassRefPtr<JSC::Structure> createStructure(JSC::JSValuePtr proto)
+ static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue proto)
{
return JSC::Structure::create(proto, JSC::TypeInfo(JSC::ObjectType, JSC::MasqueradesAsUndefined));
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAppletElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAppletElementCustom.cpp
index a99a36d..de6565d 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAppletElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAppletElementCustom.cpp
@@ -38,7 +38,7 @@ bool JSHTMLAppletElement::customGetOwnPropertySlot(ExecState* exec, const Identi
return runtimeObjectCustomGetOwnPropertySlot(exec, propertyName, slot, this);
}
-bool JSHTMLAppletElement::customPut(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+bool JSHTMLAppletElement::customPut(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
return runtimeObjectCustomPut(exec, propertyName, value, impl(), slot);
}
@@ -53,7 +53,7 @@ bool JSHTMLAppletElement::canGetItemsForName(ExecState*, HTMLAppletElement*, con
return propertyName == "__apple_runtime_object";
}
-JSValuePtr JSHTMLAppletElement::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSHTMLAppletElement::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
return runtimeObjectGetter(exec, propertyName, slot);
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCollectionCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCollectionCustom.cpp
index 7ff5392..4100468 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCollectionCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCollectionCustom.cpp
@@ -35,7 +35,7 @@ using namespace JSC;
namespace WebCore {
-static JSValuePtr getNamedItems(ExecState* exec, HTMLCollection* impl, const Identifier& propertyName)
+static JSValue getNamedItems(ExecState* exec, HTMLCollection* impl, const Identifier& propertyName)
{
Vector<RefPtr<Node> > namedItems;
impl->namedItems(propertyName, namedItems);
@@ -51,7 +51,7 @@ static JSValuePtr getNamedItems(ExecState* exec, HTMLCollection* impl, const Ide
// HTMLCollections are strange objects, they support both get and call,
// so that document.forms.item(0) and document.forms(0) both work.
-static JSValuePtr callHTMLCollection(ExecState* exec, JSObject* function, JSValuePtr, const ArgList& args)
+static JSValue JSC_HOST_CALL callHTMLCollection(ExecState* exec, JSObject* function, JSValue, const ArgList& args)
{
if (args.size() < 1)
return jsUndefined();
@@ -64,7 +64,7 @@ static JSValuePtr callHTMLCollection(ExecState* exec, JSObject* function, JSValu
if (args.size() == 1) {
// Support for document.all(<index>) etc.
bool ok;
- UString string = args.at(exec, 0)->toString(exec);
+ UString string = args.at(0).toString(exec);
unsigned index = string.toUInt32(&ok, false);
if (ok)
return toJS(exec, collection->item(index));
@@ -75,8 +75,8 @@ static JSValuePtr callHTMLCollection(ExecState* exec, JSObject* function, JSValu
// The second arg, if set, is the index of the item we want
bool ok;
- UString string = args.at(exec, 0)->toString(exec);
- unsigned index = args.at(exec, 1)->toString(exec).toUInt32(&ok, false);
+ UString string = args.at(0).toString(exec);
+ unsigned index = args.at(1).toString(exec).toUInt32(&ok, false);
if (ok) {
String pstr = string;
Node* node = collection->namedItem(pstr);
@@ -99,30 +99,30 @@ CallType JSHTMLCollection::getCallData(CallData& callData)
bool JSHTMLCollection::canGetItemsForName(ExecState* exec, HTMLCollection* thisObj, const Identifier& propertyName)
{
- return !getNamedItems(exec, thisObj, propertyName)->isUndefined();
+ return !getNamedItems(exec, thisObj, propertyName).isUndefined();
}
-JSValuePtr JSHTMLCollection::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSHTMLCollection::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
JSHTMLCollection* thisObj = static_cast<JSHTMLCollection*>(asObject(slot.slotBase()));
return getNamedItems(exec, thisObj->impl(), propertyName);
}
-JSValuePtr JSHTMLCollection::item(ExecState* exec, const ArgList& args)
+JSValue JSHTMLCollection::item(ExecState* exec, const ArgList& args)
{
bool ok;
- uint32_t index = args.at(exec, 0)->toString(exec).toUInt32(&ok, false);
+ uint32_t index = args.at(0).toString(exec).toUInt32(&ok, false);
if (ok)
return toJS(exec, impl()->item(index));
- return getNamedItems(exec, impl(), Identifier(exec, args.at(exec, 0)->toString(exec)));
+ return getNamedItems(exec, impl(), Identifier(exec, args.at(0).toString(exec)));
}
-JSValuePtr JSHTMLCollection::namedItem(ExecState* exec, const ArgList& args)
+JSValue JSHTMLCollection::namedItem(ExecState* exec, const ArgList& args)
{
- return getNamedItems(exec, impl(), Identifier(exec, args.at(exec, 0)->toString(exec)));
+ return getNamedItems(exec, impl(), Identifier(exec, args.at(0).toString(exec)));
}
-JSValuePtr toJS(ExecState* exec, HTMLCollection* collection)
+JSValue toJS(ExecState* exec, HTMLCollection* collection)
{
if (!collection)
return jsNull();
@@ -133,10 +133,10 @@ JSValuePtr toJS(ExecState* exec, HTMLCollection* collection)
return wrapper;
switch (collection->type()) {
- case HTMLCollection::SelectOptions:
+ case SelectOptions:
wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, HTMLOptionsCollection, collection);
break;
- case HTMLCollection::DocAll:
+ case DocAll:
typedef HTMLCollection HTMLAllCollection;
wrapper = CREATE_DOM_OBJECT_WRAPPER(exec, HTMLAllCollection, collection);
break;
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLDocumentCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLDocumentCustom.cpp
index e6abd29..c113ec7 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLDocumentCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLDocumentCustom.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,6 +26,7 @@
#include "config.h"
#include "JSHTMLDocument.h"
+#include "CharacterNames.h"
#include "Frame.h"
#include "HTMLBodyElement.h"
#include "HTMLCollection.h"
@@ -37,6 +38,8 @@
#include "JSDOMWindowCustom.h"
#include "JSDOMWindowShell.h"
#include "JSHTMLCollection.h"
+#include "SegmentedString.h"
+#include "Tokenizer.h"
#include <runtime/Error.h>
using namespace JSC;
@@ -51,7 +54,7 @@ bool JSHTMLDocument::canGetItemsForName(ExecState*, HTMLDocument* document, cons
return atomicPropertyName && (document->hasNamedItem(atomicPropertyName) || document->hasExtraNamedItem(atomicPropertyName));
}
-JSValuePtr JSHTMLDocument::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSHTMLDocument::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
JSHTMLDocument* thisObj = static_cast<JSHTMLDocument*>(asObject(slot.slotBase()));
HTMLDocument* document = static_cast<HTMLDocument*>(thisObj->impl());
@@ -78,17 +81,17 @@ JSValuePtr JSHTMLDocument::nameGetter(ExecState* exec, const Identifier& propert
// Custom attributes
-JSValuePtr JSHTMLDocument::all(ExecState* exec) const
+JSValue JSHTMLDocument::all(ExecState* exec) const
{
// If "all" has been overwritten, return the overwritten value
- JSValuePtr v = getDirect(Identifier(exec, "all"));
+ JSValue v = getDirect(Identifier(exec, "all"));
if (v)
return v;
return toJS(exec, static_cast<HTMLDocument*>(impl())->all().get());
}
-void JSHTMLDocument::setAll(ExecState* exec, JSValuePtr value)
+void JSHTMLDocument::setAll(ExecState* exec, JSValue value)
{
// Add "all" to the property map.
putDirect(Identifier(exec, "all"), value);
@@ -96,7 +99,7 @@ void JSHTMLDocument::setAll(ExecState* exec, JSValuePtr value)
// Custom functions
-JSValuePtr JSHTMLDocument::open(ExecState* exec, const ArgList& args)
+JSValue JSHTMLDocument::open(ExecState* exec, const ArgList& args)
{
// For compatibility with other browsers, pass open calls with more than 2 parameters to the window.
if (args.size() > 2) {
@@ -104,9 +107,9 @@ JSValuePtr JSHTMLDocument::open(ExecState* exec, const ArgList& args)
if (frame) {
JSDOMWindowShell* wrapper = toJSDOMWindowShell(frame);
if (wrapper) {
- JSValuePtr function = wrapper->get(exec, Identifier(exec, "open"));
+ JSValue function = wrapper->get(exec, Identifier(exec, "open"));
CallData callData;
- CallType callType = function->getCallData(callData);
+ CallType callType = function.getCallData(callData);
if (callType == CallTypeNone)
return throwError(exec, TypeError);
return call(exec, function, callType, callData, wrapper, args);
@@ -124,32 +127,42 @@ JSValuePtr JSHTMLDocument::open(ExecState* exec, const ArgList& args)
return this;
}
-static String writeHelper(ExecState* exec, const ArgList& args)
-{
- // DOM only specifies single string argument, but NS & IE allow multiple
- // or no arguments.
+enum NewlineRequirement { DoNotAddNewline, DoAddNewline };
- unsigned size = args.size();
- if (size == 1)
- return args.at(exec, 0)->toString(exec);
+static inline void documentWrite(ExecState* exec, const ArgList& args, HTMLDocument* document, NewlineRequirement addNewline)
+{
+ // DOM only specifies single string argument, but browsers allow multiple or no arguments.
+
+ size_t size = args.size();
+
+ UString firstString = args.at(0).toString(exec);
+ SegmentedString segmentedString = String(firstString);
+ if (size != 1) {
+ if (!size)
+ segmentedString.clear();
+ else {
+ for (size_t i = 1; i < size; ++i) {
+ UString subsequentString = args.at(i).toString(exec);
+ segmentedString.append(SegmentedString(String(subsequentString)));
+ }
+ }
+ }
+ if (addNewline)
+ segmentedString.append(SegmentedString(&newlineCharacter, 1));
- Vector<UChar> result;
- for (unsigned i = 0; i < size; ++i)
- append(result, args.at(exec, i)->toString(exec));
- return String::adopt(result);
+ Document* activeDocument = asJSDOMWindow(exec->lexicalGlobalObject())->impl()->document();
+ document->write(segmentedString, activeDocument);
}
-JSValuePtr JSHTMLDocument::write(ExecState* exec, const ArgList& args)
+JSValue JSHTMLDocument::write(ExecState* exec, const ArgList& args)
{
- Document* activeDocument = asJSDOMWindow(exec->lexicalGlobalObject())->impl()->document();
- static_cast<HTMLDocument*>(impl())->write(writeHelper(exec, args), activeDocument);
+ documentWrite(exec, args, static_cast<HTMLDocument*>(impl()), DoNotAddNewline);
return jsUndefined();
}
-JSValuePtr JSHTMLDocument::writeln(ExecState* exec, const ArgList& args)
+JSValue JSHTMLDocument::writeln(ExecState* exec, const ArgList& args)
{
- Document* activeDocument = asJSDOMWindow(exec->lexicalGlobalObject())->impl()->document();
- static_cast<HTMLDocument*>(impl())->write(writeHelper(exec, args) + "\n", activeDocument);
+ documentWrite(exec, args, static_cast<HTMLDocument*>(impl()), DoAddNewline);
return jsUndefined();
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLEmbedElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLEmbedElementCustom.cpp
index 2856393..19aae86 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLEmbedElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLEmbedElementCustom.cpp
@@ -38,7 +38,7 @@ bool JSHTMLEmbedElement::customGetOwnPropertySlot(ExecState* exec, const Identif
return runtimeObjectCustomGetOwnPropertySlot(exec, propertyName, slot, this);
}
-bool JSHTMLEmbedElement::customPut(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+bool JSHTMLEmbedElement::customPut(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
return runtimeObjectCustomPut(exec, propertyName, value, impl(), slot);
}
@@ -53,7 +53,7 @@ bool JSHTMLEmbedElement::canGetItemsForName(ExecState*, HTMLEmbedElement*, const
return propertyName == "__apple_runtime_object";
}
-JSValuePtr JSHTMLEmbedElement::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSHTMLEmbedElement::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
return runtimeObjectGetter(exec, propertyName, slot);
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFormElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFormElementCustom.cpp
index 4e16cc5..8bf543c 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFormElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFormElementCustom.cpp
@@ -26,8 +26,10 @@
#include "config.h"
#include "JSHTMLFormElement.h"
+#include "Frame.h"
#include "HTMLCollection.h"
#include "HTMLFormElement.h"
+#include "JSDOMWindowCustom.h"
#include "JSNamedNodesCollection.h"
using namespace JSC;
@@ -41,7 +43,7 @@ bool JSHTMLFormElement::canGetItemsForName(ExecState*, HTMLFormElement* form, co
return namedItems.size();
}
-JSValuePtr JSHTMLFormElement::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSHTMLFormElement::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
HTMLFormElement* form = static_cast<HTMLFormElement*>(static_cast<JSHTMLElement*>(asObject(slot.slotBase()))->impl());
@@ -55,4 +57,13 @@ JSValuePtr JSHTMLFormElement::nameGetter(ExecState* exec, const Identifier& prop
return jsUndefined();
}
+JSValue JSHTMLFormElement::submit(ExecState* exec, const ArgList&)
+{
+ Frame* activeFrame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
+ if (!activeFrame)
+ return jsUndefined();
+ static_cast<HTMLFormElement*>(impl())->submit(0, false, !activeFrame->script()->anyPageIsProcessingUserGesture(), false);
+ return jsUndefined();
+}
+
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp
index a97a72a..0a5d1f1 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp
@@ -40,14 +40,14 @@ namespace WebCore {
static inline bool allowSettingJavascriptURL(ExecState* exec, HTMLFrameElement* imp, const String& value)
{
- if (protocolIs(parseURL(value), "javascript")) {
+ if (protocolIsJavaScript(parseURL(value))) {
if (!checkNodeSecurity(exec, imp->contentDocument()))
return false;
}
return true;
}
-void JSHTMLFrameElement::setSrc(ExecState* exec, JSValuePtr value)
+void JSHTMLFrameElement::setSrc(ExecState* exec, JSValue value)
{
HTMLFrameElement* imp = static_cast<HTMLFrameElement*>(impl());
String srcValue = valueToStringWithNullCheck(exec, value);
@@ -59,7 +59,7 @@ void JSHTMLFrameElement::setSrc(ExecState* exec, JSValuePtr value)
return;
}
-void JSHTMLFrameElement::setLocation(ExecState* exec, JSValuePtr value)
+void JSHTMLFrameElement::setLocation(ExecState* exec, JSValue value)
{
HTMLFrameElement* imp = static_cast<HTMLFrameElement*>(impl());
String locationValue = valueToStringWithNullCheck(exec, value);
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameSetElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameSetElementCustom.cpp
index f17cb89..05972e6 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameSetElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameSetElementCustom.cpp
@@ -27,6 +27,7 @@
#include "JSHTMLFrameSetElement.h"
#include "Document.h"
+#include "HTMLCollection.h"
#include "HTMLFrameElement.h"
#include "HTMLFrameSetElement.h"
#include "HTMLNames.h"
@@ -46,7 +47,7 @@ bool JSHTMLFrameSetElement::canGetItemsForName(ExecState*, HTMLFrameSetElement*
return frame && frame->hasTagName(frameTag);
}
-JSValuePtr JSHTMLFrameSetElement::nameGetter(ExecState*, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSHTMLFrameSetElement::nameGetter(ExecState*, const Identifier& propertyName, const PropertySlot& slot)
{
JSHTMLElement* thisObj = static_cast<JSHTMLElement*>(asObject(slot.slotBase()));
HTMLElement* element = static_cast<HTMLElement*>(thisObj->impl());
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLIFrameElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLIFrameElementCustom.cpp
index 1a0fc1c..afff977 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLIFrameElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLIFrameElementCustom.cpp
@@ -38,13 +38,13 @@ using namespace JSC;
namespace WebCore {
-void JSHTMLIFrameElement::setSrc(ExecState* exec, JSValuePtr value)
+void JSHTMLIFrameElement::setSrc(ExecState* exec, JSValue value)
{
HTMLIFrameElement* imp = static_cast<HTMLIFrameElement*>(impl());
String srcValue = valueToStringWithNullCheck(exec, value);
- if (protocolIs(parseURL(srcValue), "javascript")) {
+ if (protocolIsJavaScript(parseURL(srcValue))) {
if (!checkNodeSecurity(exec, imp->contentDocument()))
return;
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLInputElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLInputElementCustom.cpp
index d59ef92..6b47622 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLInputElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLInputElementCustom.cpp
@@ -26,47 +26,93 @@
#include "config.h"
#include "JSHTMLInputElement.h"
+#include "Document.h"
#include "HTMLInputElement.h"
+#include "Settings.h"
using namespace JSC;
namespace WebCore {
-bool JSHTMLInputElement::customGetOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
+static bool needsGmailQuirk(HTMLInputElement* input)
{
- HTMLInputElement* input = static_cast<HTMLInputElement*>(impl());
- if (input->canHaveSelection())
+ Document* document = input->document();
+
+ const KURL& url = document->url();
+ if (url.host() != "mail.google.com")
+ return false;
+
+ // As with other site-specific quirks, allow website developers to turn this off.
+ // In theory, this allows website developers to check if their fixes are effective.
+ Settings* settings = document->settings();
+ if (!settings)
+ return false;
+ if (!settings->needsSiteSpecificQuirks())
return false;
- const HashEntry* entry = JSHTMLInputElementPrototype::s_info.propHashTable(exec)->entry(exec, propertyName);
- if (entry) {
- if (entry->attributes() & Function) {
- if (entry->function() == jsHTMLInputElementPrototypeFunctionSetSelectionRange) {
- slot.setUndefined();
- return true;
- }
- }
- }
-
- return false;
+ return true;
}
-JSValuePtr JSHTMLInputElement::selectionStart(ExecState* exec) const
+JSValue JSHTMLInputElement::type(ExecState* exec) const
+{
+ HTMLInputElement* input = static_cast<HTMLInputElement*>(impl());
+ const AtomicString& type = input->type();
+
+ DEFINE_STATIC_LOCAL(const AtomicString, url, ("url"));
+ DEFINE_STATIC_LOCAL(const AtomicString, text, ("text"));
+
+ if (type == url && needsGmailQuirk(input))
+ return jsString(exec, text);
+ return jsString(exec, type);
+}
+
+JSValue JSHTMLInputElement::selectionStart(ExecState* exec) const
{
HTMLInputElement* input = static_cast<HTMLInputElement*>(impl());
if (!input->canHaveSelection())
- return jsUndefined();
+ return throwError(exec, TypeError);
return jsNumber(exec, input->selectionStart());
}
-JSValuePtr JSHTMLInputElement::selectionEnd(ExecState* exec) const
+void JSHTMLInputElement::setSelectionStart(ExecState* exec, JSValue value)
+{
+ HTMLInputElement* input = static_cast<HTMLInputElement*>(impl());
+ if (!input->canHaveSelection())
+ throwError(exec, TypeError);
+
+ input->setSelectionStart(value.toInt32(exec));
+}
+
+JSValue JSHTMLInputElement::selectionEnd(ExecState* exec) const
{
HTMLInputElement* input = static_cast<HTMLInputElement*>(impl());
if (!input->canHaveSelection())
- return jsUndefined();
+ return throwError(exec, TypeError);
return jsNumber(exec, input->selectionEnd());
}
+void JSHTMLInputElement::setSelectionEnd(ExecState* exec, JSValue value)
+{
+ HTMLInputElement* input = static_cast<HTMLInputElement*>(impl());
+ if (!input->canHaveSelection())
+ throwError(exec, TypeError);
+
+ input->setSelectionEnd(value.toInt32(exec));
+}
+
+JSValue JSHTMLInputElement::setSelectionRange(ExecState* exec, const ArgList& args)
+{
+ HTMLInputElement* input = static_cast<HTMLInputElement*>(impl());
+ if (!input->canHaveSelection())
+ return throwError(exec, TypeError);
+
+ int start = args.at(0).toInt32(exec);
+ int end = args.at(1).toInt32(exec);
+
+ input->setSelectionRange(start, end);
+ return jsUndefined();
+}
+
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLObjectElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLObjectElementCustom.cpp
index 5ad3454..f7f12b9 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLObjectElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLObjectElementCustom.cpp
@@ -38,7 +38,7 @@ bool JSHTMLObjectElement::customGetOwnPropertySlot(ExecState* exec, const Identi
return runtimeObjectCustomGetOwnPropertySlot(exec, propertyName, slot, this);
}
-bool JSHTMLObjectElement::customPut(ExecState* exec, const Identifier& propertyName, JSValuePtr value, PutPropertySlot& slot)
+bool JSHTMLObjectElement::customPut(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
return runtimeObjectCustomPut(exec, propertyName, value, impl(), slot);
}
@@ -53,7 +53,7 @@ bool JSHTMLObjectElement::canGetItemsForName(ExecState*, HTMLObjectElement*, con
return propertyName == "__apple_runtime_object";
}
-JSValuePtr JSHTMLObjectElement::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
+JSValue JSHTMLObjectElement::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
return runtimeObjectGetter(exec, propertyName, slot);
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp
index d60483d..460ba08 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLOptionsCollectionCustom.cpp
@@ -35,18 +35,18 @@ using namespace JSC;
namespace WebCore {
-JSValuePtr JSHTMLOptionsCollection::length(ExecState* exec) const
+JSValue JSHTMLOptionsCollection::length(ExecState* exec) const
{
HTMLOptionsCollection* imp = static_cast<HTMLOptionsCollection*>(impl());
return jsNumber(exec, imp->length());
}
-void JSHTMLOptionsCollection::setLength(ExecState* exec, JSValuePtr value)
+void JSHTMLOptionsCollection::setLength(ExecState* exec, JSValue value)
{
HTMLOptionsCollection* imp = static_cast<HTMLOptionsCollection*>(impl());
ExceptionCode ec = 0;
unsigned newLength = 0;
- double lengthValue = value->toNumber(exec);
+ double lengthValue = value.toNumber(exec);
if (!isnan(lengthValue) && !isinf(lengthValue)) {
if (lengthValue < 0.0)
ec = INDEX_SIZE_ERR;
@@ -60,23 +60,23 @@ void JSHTMLOptionsCollection::setLength(ExecState* exec, JSValuePtr value)
setDOMException(exec, ec);
}
-void JSHTMLOptionsCollection::indexSetter(ExecState* exec, unsigned index, JSValuePtr value)
+void JSHTMLOptionsCollection::indexSetter(ExecState* exec, unsigned index, JSValue value)
{
HTMLOptionsCollection* imp = static_cast<HTMLOptionsCollection*>(impl());
HTMLSelectElement* base = static_cast<HTMLSelectElement*>(imp->base());
selectIndexSetter(base, exec, index, value);
}
-JSValuePtr JSHTMLOptionsCollection::add(ExecState* exec, const ArgList& args)
+JSValue JSHTMLOptionsCollection::add(ExecState* exec, const ArgList& args)
{
HTMLOptionsCollection* imp = static_cast<HTMLOptionsCollection*>(impl());
- HTMLOptionElement* option = toHTMLOptionElement(args.at(exec, 0));
+ HTMLOptionElement* option = toHTMLOptionElement(args.at(0));
ExceptionCode ec = 0;
if (args.size() < 2)
imp->add(option, ec);
else {
bool ok;
- int index = args.at(exec, 1)->toInt32(exec, ok);
+ int index = args.at(1).toInt32(exec, ok);
if (exec->hadException())
return jsUndefined();
if (!ok)
@@ -88,7 +88,7 @@ JSValuePtr JSHTMLOptionsCollection::add(ExecState* exec, const ArgList& args)
return jsUndefined();
}
-JSValuePtr JSHTMLOptionsCollection::remove(ExecState* exec, const ArgList& args)
+JSValue JSHTMLOptionsCollection::remove(ExecState* exec, const ArgList& args)
{
HTMLOptionsCollection* imp = static_cast<HTMLOptionsCollection*>(impl());
JSHTMLSelectElement* base = static_cast<JSHTMLSelectElement*>(asObject(toJS(exec, imp->base())));
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp
index 4094418..9bb6b75 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLSelectElementCustom.cpp
@@ -32,23 +32,23 @@ namespace WebCore {
using namespace JSC;
using namespace HTMLNames;
-JSValuePtr JSHTMLSelectElement::remove(ExecState* exec, const ArgList& args)
+JSValue JSHTMLSelectElement::remove(ExecState* exec, const ArgList& args)
{
HTMLSelectElement& select = *static_cast<HTMLSelectElement*>(impl());
// we support both options index and options objects
- HTMLElement* element = toHTMLElement(args.at(exec, 0));
+ HTMLElement* element = toHTMLElement(args.at(0));
if (element && element->hasTagName(optionTag))
select.remove(static_cast<HTMLOptionElement*>(element)->index());
else
- select.remove(args.at(exec, 0)->toInt32(exec));
+ select.remove(args.at(0).toInt32(exec));
return jsUndefined();
}
-void selectIndexSetter(HTMLSelectElement* select, JSC::ExecState* exec, unsigned index, JSC::JSValuePtr value)
+void selectIndexSetter(HTMLSelectElement* select, JSC::ExecState* exec, unsigned index, JSC::JSValue value)
{
- if (value->isUndefinedOrNull())
+ if (value.isUndefinedOrNull())
select->remove(index);
else {
ExceptionCode ec = 0;
@@ -61,7 +61,7 @@ void selectIndexSetter(HTMLSelectElement* select, JSC::ExecState* exec, unsigned
}
}
-void JSHTMLSelectElement::indexSetter(JSC::ExecState* exec, unsigned index, JSC::JSValuePtr value)
+void JSHTMLSelectElement::indexSetter(JSC::ExecState* exec, unsigned index, JSC::JSValue value)
{
selectIndexSetter(static_cast<HTMLSelectElement*>(impl()), exec, index, value);
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLSelectElementCustom.h b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLSelectElementCustom.h
index 87344b5..a449038 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLSelectElementCustom.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHTMLSelectElementCustom.h
@@ -33,7 +33,7 @@
namespace WebCore {
-void selectIndexSetter(HTMLSelectElement*, JSC::ExecState*, unsigned index, JSC::JSValuePtr);
+void selectIndexSetter(HTMLSelectElement*, JSC::ExecState*, unsigned index, JSC::JSValue);
}
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSHistoryCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSHistoryCustom.cpp
index 1baa6d4..998a364 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSHistoryCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSHistoryCustom.cpp
@@ -37,17 +37,17 @@ using namespace JSC;
namespace WebCore {
-JSValuePtr nonCachingStaticBackFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
+static JSValue nonCachingStaticBackFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
{
return new (exec) PrototypeFunction(exec, 0, propertyName, jsHistoryPrototypeFunctionBack);
}
-JSValuePtr nonCachingStaticForwardFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
+static JSValue nonCachingStaticForwardFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
{
return new (exec) PrototypeFunction(exec, 0, propertyName, jsHistoryPrototypeFunctionForward);
}
-JSValuePtr nonCachingStaticGoFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
+static JSValue nonCachingStaticGoFunctionGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot&)
{
return new (exec) PrototypeFunction(exec, 1, propertyName, jsHistoryPrototypeFunctionGo);
}
@@ -92,7 +92,7 @@ bool JSHistory::customGetOwnPropertySlot(ExecState* exec, const Identifier& prop
return true;
}
-bool JSHistory::customPut(ExecState* exec, const Identifier&, JSValuePtr, PutPropertySlot&)
+bool JSHistory::customPut(ExecState* exec, const Identifier&, JSValue, PutPropertySlot&)
{
// Only allow putting by frames in the same origin.
if (!allowsAccessFromFrame(exec, impl()->frame()))
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.cpp
index 2237c7a..4a27bb4 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.cpp
@@ -22,6 +22,7 @@
#include "HTMLImageElement.h"
#include "HTMLNames.h"
+#include "JSHTMLImageElement.h"
#include "JSNode.h"
#include "ScriptExecutionContext.h"
@@ -29,15 +30,23 @@ using namespace JSC;
namespace WebCore {
-ASSERT_CLASS_FITS_IN_CELL(JSImageConstructor)
+ASSERT_CLASS_FITS_IN_CELL(JSImageConstructor);
const ClassInfo JSImageConstructor::s_info = { "ImageConstructor", 0, 0, 0 };
-JSImageConstructor::JSImageConstructor(ExecState* exec, ScriptExecutionContext* context)
+JSImageConstructor::JSImageConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
: DOMObject(JSImageConstructor::createStructure(exec->lexicalGlobalObject()->objectPrototype()))
+ , m_globalObject(globalObject)
{
- ASSERT(context->isDocument());
- m_document = static_cast<JSDocument*>(asObject(toJS(exec, static_cast<Document*>(context))));
+ ASSERT(globalObject->scriptExecutionContext());
+ ASSERT(globalObject->scriptExecutionContext()->isDocument());
+
+ putDirect(exec->propertyNames().prototype, JSHTMLImageElementPrototype::self(exec, exec->lexicalGlobalObject()), None);
+}
+
+Document* JSImageConstructor::document() const
+{
+ return static_cast<Document*>(m_globalObject->scriptExecutionContext());
}
static JSObject* constructImage(ExecState* exec, JSObject* constructor, const ArgList& args)
@@ -48,14 +57,16 @@ static JSObject* constructImage(ExecState* exec, JSObject* constructor, const Ar
int height = 0;
if (args.size() > 0) {
widthSet = true;
- width = args.at(exec, 0)->toInt32(exec);
+ width = args.at(0).toInt32(exec);
}
if (args.size() > 1) {
heightSet = true;
- height = args.at(exec, 1)->toInt32(exec);
+ height = args.at(1).toInt32(exec);
}
Document* document = static_cast<JSImageConstructor*>(constructor)->document();
+ if (!document)
+ return throwError(exec, ReferenceError, "Image constructor associated document is unavailable");
// Calling toJS on the document causes the JS document wrapper to be
// added to the window object. This is done to ensure that JSDocument::mark
@@ -79,8 +90,8 @@ ConstructType JSImageConstructor::getConstructData(ConstructData& constructData)
void JSImageConstructor::mark()
{
DOMObject::mark();
- if (!m_document->marked())
- m_document->mark();
+ if (!m_globalObject->marked())
+ m_globalObject->mark();
}
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.h b/src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.h
index 13cce26..8dc7add 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.h
@@ -27,8 +27,8 @@ namespace WebCore {
class JSImageConstructor : public DOMObject {
public:
- JSImageConstructor(JSC::ExecState*, ScriptExecutionContext*);
- Document* document() const { return m_document->impl(); }
+ JSImageConstructor(JSC::ExecState*, JSDOMGlobalObject*);
+ Document* document() const;
static const JSC::ClassInfo s_info;
@@ -37,7 +37,7 @@ namespace WebCore {
virtual JSC::ConstructType getConstructData(JSC::ConstructData&);
virtual const JSC::ClassInfo* classInfo() const { return &s_info; }
- JSDocument* m_document;
+ JSDOMGlobalObject* m_globalObject;
};
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSImageDataCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSImageDataCustom.cpp
index 920121e..32fe58b 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSImageDataCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSImageDataCustom.cpp
@@ -36,7 +36,7 @@ using namespace JSC;
namespace WebCore {
-JSValuePtr toJS(ExecState* exec, ImageData* imageData)
+JSValue toJS(ExecState* exec, ImageData* imageData)
{
if (!imageData)
return jsNull();
@@ -49,7 +49,7 @@ JSValuePtr toJS(ExecState* exec, ImageData* imageData)
Identifier dataName(exec, "data");
DEFINE_STATIC_LOCAL(RefPtr<Structure>, cpaStructure, (JSByteArray::createStructure(jsNull())));
static const ClassInfo cpaClassInfo = { "CanvasPixelArray", 0, 0, 0 };
- wrapper->putDirect(dataName, new (exec) JSByteArray(exec, cpaStructure, imageData->data(), &cpaClassInfo), DontDelete | ReadOnly);
+ wrapper->putDirect(dataName, new (exec) JSByteArray(exec, cpaStructure, imageData->data()->data(), &cpaClassInfo), DontDelete | ReadOnly);
exec->heap()->reportExtraMemoryCost(imageData->data()->length());
return wrapper;
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.cpp
index 80c35df..fff7aee 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.cpp
@@ -34,7 +34,7 @@ using namespace JSC;
namespace WebCore {
-ASSERT_CLASS_FITS_IN_CELL(JSInspectedObjectWrapper)
+ASSERT_CLASS_FITS_IN_CELL(JSInspectedObjectWrapper);
typedef HashMap<JSObject*, JSInspectedObjectWrapper*> WrapperMap;
typedef HashMap<JSGlobalObject*, WrapperMap*> GlobalObjectWrapperMap;
@@ -47,9 +47,9 @@ static GlobalObjectWrapperMap& wrappers()
const ClassInfo JSInspectedObjectWrapper::s_info = { "JSInspectedObjectWrapper", &JSQuarantinedObjectWrapper::s_info, 0, 0 };
-JSValuePtr JSInspectedObjectWrapper::wrap(ExecState* unwrappedExec, JSValuePtr unwrappedValue)
+JSValue JSInspectedObjectWrapper::wrap(ExecState* unwrappedExec, JSValue unwrappedValue)
{
- if (!unwrappedValue->isObject())
+ if (!unwrappedValue.isObject())
return unwrappedValue;
JSObject* unwrappedObject = asObject(unwrappedValue);
@@ -57,14 +57,14 @@ JSValuePtr JSInspectedObjectWrapper::wrap(ExecState* unwrappedExec, JSValuePtr u
if (unwrappedObject->inherits(&JSInspectedObjectWrapper::s_info))
return unwrappedObject;
- if (WrapperMap* wrapperMap = wrappers().get(unwrappedExec->dynamicGlobalObject()))
+ if (WrapperMap* wrapperMap = wrappers().get(unwrappedExec->lexicalGlobalObject()))
if (JSInspectedObjectWrapper* wrapper = wrapperMap->get(unwrappedObject))
return wrapper;
- JSValuePtr prototype = unwrappedObject->prototype();
- ASSERT(prototype->isNull() || prototype->isObject());
+ JSValue prototype = unwrappedObject->prototype();
+ ASSERT(prototype.isNull() || prototype.isObject());
- if (prototype->isNull())
+ if (prototype.isNull())
return new (unwrappedExec) JSInspectedObjectWrapper(unwrappedExec, unwrappedObject, JSQuarantinedObjectWrapper::createStructure(jsNull()));
return new (unwrappedExec) JSInspectedObjectWrapper(unwrappedExec, unwrappedObject, JSQuarantinedObjectWrapper::createStructure(asObject(wrap(unwrappedExec, prototype))));
}
@@ -96,11 +96,11 @@ JSInspectedObjectWrapper::~JSInspectedObjectWrapper()
}
}
-JSValuePtr JSInspectedObjectWrapper::prepareIncomingValue(ExecState*, JSValuePtr value) const
+JSValue JSInspectedObjectWrapper::prepareIncomingValue(ExecState*, JSValue value) const
{
// The Inspector is only allowed to pass primitive values and wrapped objects to objects from the inspected page.
- if (!value->isObject())
+ if (!value.isObject())
return value;
JSQuarantinedObjectWrapper* wrapper = asWrapper(value);
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.h b/src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.h
index 273c0b0..201feb6 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.h
@@ -32,7 +32,7 @@ namespace WebCore {
class JSInspectedObjectWrapper : public JSQuarantinedObjectWrapper {
public:
- static JSC::JSValuePtr wrap(JSC::ExecState* unwrappedExec, JSC::JSValuePtr unwrappedValue);
+ static JSC::JSValue wrap(JSC::ExecState* unwrappedExec, JSC::JSValue unwrappedValue);
virtual ~JSInspectedObjectWrapper();
static const JSC::ClassInfo s_info;
@@ -48,8 +48,8 @@ namespace WebCore {
virtual bool allowsCallAsFunction() const { return true; }
virtual bool allowsGetPropertyNames() const { return true; }
- virtual JSC::JSValuePtr prepareIncomingValue(JSC::ExecState* unwrappedExec, JSC::JSValuePtr unwrappedValue) const;
- virtual JSC::JSValuePtr wrapOutgoingValue(JSC::ExecState* unwrappedExec, JSC::JSValuePtr unwrappedValue) const { return wrap(unwrappedExec, unwrappedValue); }
+ virtual JSC::JSValue prepareIncomingValue(JSC::ExecState* unwrappedExec, JSC::JSValue unwrappedValue) const;
+ virtual JSC::JSValue wrapOutgoingValue(JSC::ExecState* unwrappedExec, JSC::JSValue unwrappedValue) const { return wrap(unwrappedExec, unwrappedValue); }
virtual const JSC::ClassInfo* classInfo() const { return &s_info; }
};
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.cpp
index 8e13e42..0e14109 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.cpp
@@ -33,7 +33,7 @@ using namespace JSC;
namespace WebCore {
-ASSERT_CLASS_FITS_IN_CELL(JSInspectorCallbackWrapper)
+ASSERT_CLASS_FITS_IN_CELL(JSInspectorCallbackWrapper);
typedef HashMap<JSObject*, JSInspectorCallbackWrapper*> WrapperMap;
@@ -53,9 +53,9 @@ static Structure* leakInspectorCallbackWrapperStructure()
return structure;
}
-JSValuePtr JSInspectorCallbackWrapper::wrap(ExecState* unwrappedExec, JSValuePtr unwrappedValue)
+JSValue JSInspectorCallbackWrapper::wrap(ExecState* unwrappedExec, JSValue unwrappedValue)
{
- if (!unwrappedValue->isObject())
+ if (!unwrappedValue.isObject())
return unwrappedValue;
JSObject* unwrappedObject = asObject(unwrappedValue);
@@ -66,10 +66,10 @@ JSValuePtr JSInspectorCallbackWrapper::wrap(ExecState* unwrappedExec, JSValuePtr
if (JSInspectorCallbackWrapper* wrapper = wrappers().get(unwrappedObject))
return wrapper;
- JSValuePtr prototype = unwrappedObject->prototype();
- ASSERT(prototype->isNull() || prototype->isObject());
+ JSValue prototype = unwrappedObject->prototype();
+ ASSERT(prototype.isNull() || prototype.isObject());
- if (prototype->isNull()) {
+ if (prototype.isNull()) {
static Structure* structure = leakInspectorCallbackWrapperStructure();
return new (unwrappedExec) JSInspectorCallbackWrapper(unwrappedExec, unwrappedObject, structure);
}
@@ -88,7 +88,7 @@ JSInspectorCallbackWrapper::~JSInspectorCallbackWrapper()
wrappers().remove(unwrappedObject());
}
-JSValuePtr JSInspectorCallbackWrapper::prepareIncomingValue(ExecState* unwrappedExec, JSValuePtr unwrappedValue) const
+JSValue JSInspectorCallbackWrapper::prepareIncomingValue(ExecState* unwrappedExec, JSValue unwrappedValue) const
{
if (JSQuarantinedObjectWrapper* wrapper = asWrapper(unwrappedValue)) {
// The only time a wrapper should be passed into a JSInspectorCallbackWrapper is when a client-side storage callback
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.h b/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.h
index 49157c0..cfc2fb6 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.h
@@ -32,7 +32,7 @@ namespace WebCore {
class JSInspectorCallbackWrapper : public JSQuarantinedObjectWrapper {
public:
- static JSC::JSValuePtr wrap(JSC::ExecState* unwrappedExec, JSC::JSValuePtr unwrappedValue);
+ static JSC::JSValue wrap(JSC::ExecState* unwrappedExec, JSC::JSValue unwrappedValue);
virtual ~JSInspectorCallbackWrapper();
@@ -44,8 +44,8 @@ namespace WebCore {
virtual bool allowsCallAsFunction() const { return true; }
- virtual JSC::JSValuePtr prepareIncomingValue(JSC::ExecState* unwrappedExec, JSC::JSValuePtr unwrappedValue) const;
- virtual JSC::JSValuePtr wrapOutgoingValue(JSC::ExecState* unwrappedExec, JSC::JSValuePtr unwrappedValue) const { return wrap(unwrappedExec, unwrappedValue); }
+ virtual JSC::JSValue prepareIncomingValue(JSC::ExecState* unwrappedExec, JSC::JSValue unwrappedValue) const;
+ virtual JSC::JSValue wrapOutgoingValue(JSC::ExecState* unwrappedExec, JSC::JSValue unwrappedValue) const { return wrap(unwrappedExec, unwrappedValue); }
};
} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorControllerCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorControllerCustom.cpp
new file mode 100644
index 0000000..b06c9e9
--- /dev/null
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSInspectorControllerCustom.cpp
@@ -0,0 +1,298 @@
+/*
+ * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com>
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSInspectorController.h"
+
+#include "Console.h"
+#if ENABLE(DATABASE)
+#include "Database.h"
+#include "JSDatabase.h"
+#endif
+#include "ExceptionCode.h"
+#include "Frame.h"
+#include "FrameLoader.h"
+#include "InspectorController.h"
+#include "InspectorResource.h"
+#include "JSDOMWindow.h"
+#include "JSInspectedObjectWrapper.h"
+#include "JSInspectorCallbackWrapper.h"
+#include "JSNode.h"
+#include "JSRange.h"
+#include "Node.h"
+#include "Page.h"
+#include "TextIterator.h"
+#include "VisiblePosition.h"
+#include <runtime/JSArray.h>
+#include <runtime/JSLock.h>
+#include <wtf/Vector.h>
+
+#if ENABLE(JAVASCRIPT_DEBUGGER)
+#include "JavaScriptCallFrame.h"
+#include "JavaScriptDebugServer.h"
+#include "JavaScriptProfile.h"
+#include "JSJavaScriptCallFrame.h"
+#include <profiler/Profile.h>
+#include <profiler/Profiler.h>
+#endif
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue JSInspectorController::highlightDOMNode(JSC::ExecState*, const JSC::ArgList& args)
+{
+ if (args.size() < 1)
+ return jsUndefined();
+
+ JSQuarantinedObjectWrapper* wrapper = JSQuarantinedObjectWrapper::asWrapper(args.at(0));
+ if (!wrapper)
+ return jsUndefined();
+
+ Node* node = toNode(wrapper->unwrappedObject());
+ if (!node)
+ return jsUndefined();
+
+ impl()->highlight(node);
+
+ return jsUndefined();
+}
+
+JSValue JSInspectorController::getResourceDocumentNode(ExecState* exec, const ArgList& args)
+{
+ if (args.size() < 1)
+ return jsUndefined();
+
+ bool ok = false;
+ unsigned identifier = args.at(0).toUInt32(exec, ok);
+ if (!ok)
+ return jsUndefined();
+
+ RefPtr<InspectorResource> resource = impl()->resources().get(identifier);
+ ASSERT(resource);
+ if (!resource)
+ return jsUndefined();
+
+ Frame* frame = resource->frame();
+ Document* document = frame->document();
+
+ if (document->isPluginDocument() || document->isImageDocument() || document->isMediaDocument())
+ return jsUndefined();
+
+ ExecState* resourceExec = toJSDOMWindowShell(frame)->window()->globalExec();
+
+ JSLock lock(false);
+ return JSInspectedObjectWrapper::wrap(resourceExec, toJS(resourceExec, document));
+}
+
+JSValue JSInspectorController::search(ExecState* exec, const ArgList& args)
+{
+ if (args.size() < 2)
+ return jsUndefined();
+
+ Node* node = toNode(args.at(0));
+ if (!node)
+ return jsUndefined();
+
+ String target = args.at(1).toString(exec);
+ if (exec->hadException())
+ return jsUndefined();
+
+ MarkedArgumentBuffer result;
+ RefPtr<Range> searchRange(rangeOfContents(node));
+
+ ExceptionCode ec = 0;
+ do {
+ RefPtr<Range> resultRange(findPlainText(searchRange.get(), target, true, false));
+ if (resultRange->collapsed(ec))
+ break;
+
+ // A non-collapsed result range can in some funky whitespace cases still not
+ // advance the range's start position (4509328). Break to avoid infinite loop.
+ VisiblePosition newStart = endVisiblePosition(resultRange.get(), DOWNSTREAM);
+ if (newStart == startVisiblePosition(searchRange.get(), DOWNSTREAM))
+ break;
+
+ result.append(toJS(exec, resultRange.get()));
+
+ setStart(searchRange.get(), newStart);
+ } while (true);
+
+ return constructArray(exec, result);
+}
+
+#if ENABLE(DATABASE)
+JSValue JSInspectorController::databaseTableNames(ExecState* exec, const ArgList& args)
+{
+ if (args.size() < 1)
+ return jsUndefined();
+
+ JSQuarantinedObjectWrapper* wrapper = JSQuarantinedObjectWrapper::asWrapper(args.at(0));
+ if (!wrapper)
+ return jsUndefined();
+
+ Database* database = toDatabase(wrapper->unwrappedObject());
+ if (!database)
+ return jsUndefined();
+
+ MarkedArgumentBuffer result;
+
+ Vector<String> tableNames = database->tableNames();
+ unsigned length = tableNames.size();
+ for (unsigned i = 0; i < length; ++i)
+ result.append(jsString(exec, tableNames[i]));
+
+ return constructArray(exec, result);
+}
+#endif
+
+JSValue JSInspectorController::inspectedWindow(ExecState*, const ArgList&)
+{
+ JSDOMWindow* inspectedWindow = toJSDOMWindow(impl()->inspectedPage()->mainFrame());
+ return JSInspectedObjectWrapper::wrap(inspectedWindow->globalExec(), inspectedWindow);
+}
+
+JSValue JSInspectorController::setting(ExecState* exec, const ArgList& args)
+{
+ if (args.size() < 1)
+ return jsUndefined();
+
+ String key = args.at(0).toString(exec);
+ if (exec->hadException())
+ return jsUndefined();
+
+ const InspectorController::Setting& setting = impl()->setting(key);
+
+ switch (setting.type()) {
+ default:
+ case InspectorController::Setting::NoType:
+ return jsUndefined();
+ case InspectorController::Setting::StringType:
+ return jsString(exec, setting.string());
+ case InspectorController::Setting::DoubleType:
+ return jsNumber(exec, setting.doubleValue());
+ case InspectorController::Setting::IntegerType:
+ return jsNumber(exec, setting.integerValue());
+ case InspectorController::Setting::BooleanType:
+ return jsBoolean(setting.booleanValue());
+ case InspectorController::Setting::StringVectorType: {
+ MarkedArgumentBuffer stringsArray;
+ const Vector<String>& strings = setting.stringVector();
+ const unsigned length = strings.size();
+ for (unsigned i = 0; i < length; ++i)
+ stringsArray.append(jsString(exec, strings[i]));
+ return constructArray(exec, stringsArray);
+ }
+ }
+}
+
+JSValue JSInspectorController::setSetting(ExecState* exec, const ArgList& args)
+{
+ if (args.size() < 2)
+ return jsUndefined();
+
+ String key = args.at(0).toString(exec);
+ if (exec->hadException())
+ return jsUndefined();
+
+ InspectorController::Setting setting;
+
+ JSValue value = args.at(1);
+ if (value.isUndefined() || value.isNull()) {
+ // Do nothing. The setting is already NoType.
+ ASSERT(setting.type() == InspectorController::Setting::NoType);
+ } else if (value.isString())
+ setting.set(value.toString(exec));
+ else if (value.isNumber())
+ setting.set(value.toNumber(exec));
+ else if (value.isBoolean())
+ setting.set(value.toBoolean(exec));
+ else {
+ JSArray* jsArray = asArray(value);
+ if (!jsArray)
+ return jsUndefined();
+ Vector<String> strings;
+ for (unsigned i = 0; i < jsArray->length(); ++i) {
+ String item = jsArray->get(exec, i).toString(exec);
+ if (exec->hadException())
+ return jsUndefined();
+ strings.append(item);
+ }
+ setting.set(strings);
+ }
+
+ if (exec->hadException())
+ return jsUndefined();
+
+ impl()->setSetting(key, setting);
+
+ return jsUndefined();
+}
+
+JSValue JSInspectorController::wrapCallback(ExecState* exec, const ArgList& args)
+{
+ if (args.size() < 1)
+ return jsUndefined();
+
+ return JSInspectorCallbackWrapper::wrap(exec, args.at(0));
+}
+
+#if ENABLE(JAVASCRIPT_DEBUGGER)
+
+JSValue JSInspectorController::currentCallFrame(ExecState* exec, const ArgList&)
+{
+ JavaScriptCallFrame* callFrame = impl()->currentCallFrame();
+ if (!callFrame || !callFrame->isValid())
+ return jsUndefined();
+
+ // FIXME: I am not sure if this is actually needed. Can we just use exec?
+ ExecState* globalExec = callFrame->scopeChain()->globalObject()->globalExec();
+
+ JSLock lock(false);
+ return JSInspectedObjectWrapper::wrap(globalExec, toJS(exec, callFrame));
+}
+
+JSValue JSInspectorController::profiles(JSC::ExecState* exec, const JSC::ArgList&)
+{
+ JSLock lock(false);
+ MarkedArgumentBuffer result;
+ const Vector<RefPtr<Profile> >& profiles = impl()->profiles();
+
+ for (size_t i = 0; i < profiles.size(); ++i)
+ result.append(toJS(exec, profiles[i].get()));
+
+ return constructArray(exec, result);
+}
+
+#endif
+
+} // namespace WebCore
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSJavaScriptCallFrameCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSJavaScriptCallFrameCustom.cpp
index c3f89c3..08ecf2b 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSJavaScriptCallFrameCustom.cpp
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSJavaScriptCallFrameCustom.cpp
@@ -26,6 +26,8 @@
#include "config.h"
#include "JSJavaScriptCallFrame.h"
+#if ENABLE(JAVASCRIPT_DEBUGGER)
+
#include "JavaScriptCallFrame.h"
#include <runtime/ArrayPrototype.h>
@@ -33,10 +35,10 @@ using namespace JSC;
namespace WebCore {
-JSValuePtr JSJavaScriptCallFrame::evaluate(ExecState* exec, const ArgList& args)
+JSValue JSJavaScriptCallFrame::evaluate(ExecState* exec, const ArgList& args)
{
- JSValuePtr exception = noValue();
- JSValuePtr result = impl()->evaluate(args.at(exec, 0)->toString(exec), exception);
+ JSValue exception;
+ JSValue result = impl()->evaluate(args.at(0).toString(exec), exception);
if (exception)
exec->setException(exception);
@@ -44,12 +46,12 @@ JSValuePtr JSJavaScriptCallFrame::evaluate(ExecState* exec, const ArgList& args)
return result;
}
-JSValuePtr JSJavaScriptCallFrame::thisObject(ExecState*) const
+JSValue JSJavaScriptCallFrame::thisObject(ExecState*) const
{
return impl()->thisObject() ? impl()->thisObject() : jsNull();
}
-JSValuePtr JSJavaScriptCallFrame::type(ExecState* exec) const
+JSValue JSJavaScriptCallFrame::type(ExecState* exec) const
{
switch (impl()->type()) {
case DebuggerCallFrame::FunctionType:
@@ -62,7 +64,7 @@ JSValuePtr JSJavaScriptCallFrame::type(ExecState* exec) const
return jsNull();
}
-JSValuePtr JSJavaScriptCallFrame::scopeChain(ExecState* exec) const
+JSValue JSJavaScriptCallFrame::scopeChain(ExecState* exec) const
{
if (!impl()->scopeChain())
return jsNull();
@@ -74,7 +76,7 @@ JSValuePtr JSJavaScriptCallFrame::scopeChain(ExecState* exec) const
// we must always have something in the scope chain
ASSERT(iter != end);
- ArgList list;
+ MarkedArgumentBuffer list;
do {
list.append(*iter);
++iter;
@@ -84,3 +86,5 @@ JSValuePtr JSJavaScriptCallFrame::scopeChain(ExecState* exec) const
}
} // namespace WebCore
+
+#endif // ENABLE(JAVASCRIPT_DEBUGGER)
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.cpp
new file mode 100644